[automerger skipped] Fix permission issue in legacy shortcut am: c53818a16b am: d19cb72bae am: 3c771b12fb am: d9bb5cd96f am: e2d76ce0a1 am: 0c816c738d am: 7c15fcab12 -s ours

am skip reason: Merged-In I05ccbde0a873569f24af4d3675a86830ba54c43f with SHA-1 f0261b5b38 is already in history

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/23526090

Change-Id: I5065be22916197069324b0f7a22d669fb7301f3a
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/Android.bp b/Android.bp
index 0a55675..a7edf2a 100644
--- a/Android.bp
+++ b/Android.bp
@@ -19,6 +19,54 @@
 
 min_launcher3_sdk_version = "26"
 
+// Common source files used to build launcher (java and kotlin)
+// All sources are split so they can be reused in many other libraries/apps in other folders
+filegroup {
+    name: "launcher-src",
+    srcs: [ "src/**/*.java", "src/**/*.kt" ],
+}
+
+filegroup {
+    name: "launcher-quickstep-src",
+    srcs: [ "quickstep/src/**/*.java", "quickstep/src/**/*.kt" ],
+}
+
+filegroup {
+    name: "launcher-go-src",
+    srcs: [ "go/src/**/*.java", "go/src/**/*.kt" ],
+}
+
+filegroup {
+    name: "launcher-go-quickstep-src",
+    srcs: [ "go/quickstep/src/**/*.java", "go/quickstep/src/**/*.kt" ],
+}
+
+filegroup {
+    name: "launcher-src_shortcuts_overrides",
+    srcs: [ "src_shortcuts_overrides/**/*.java", "src_shortcuts_overrides/**/*.kt" ],
+}
+
+filegroup {
+    name: "launcher-src_ui_overrides",
+    srcs: [ "src_ui_overrides/**/*.java", "src_ui_overrides/**/*.kt" ],
+}
+
+filegroup {
+    name: "launcher-ext_tests",
+    srcs: [ "ext_tests/**/*.java", "ext_tests/**/*.kt" ],
+}
+
+filegroup {
+    name: "launcher-quickstep-ext_tests",
+    srcs: [ "quickstep/ext_tests/**/*.java", "quickstep/ext_tests/**/*.kt" ],
+}
+
+// Proguard files for Launcher3
+filegroup {
+    name: "launcher-proguard-rules",
+    srcs: ["proguard.flags"],
+}
+
 android_library {
     name: "launcher-aosp-tapl",
     libs: [
@@ -31,13 +79,11 @@
         "androidx.test.uiautomator_uiautomator",
         "androidx.preference_preference",
         "SystemUISharedLib",
-        "SystemUIAnimationLib",
+        "animationlib",
+        "launcher-testing-shared",
     ],
     srcs: [
         "tests/tapl/**/*.java",
-        "src/com/android/launcher3/ResourceUtils.java",
-        "src/com/android/launcher3/testing/TestProtocol.java",
-        "src/com/android/launcher3/testing/*Request.java",
     ],
     resource_dirs: [ ],
     manifest: "tests/tapl/AndroidManifest.xml",
@@ -107,6 +153,7 @@
         "androidx.cardview_cardview",
         "com.google.android.material_material",
         "iconloader_base",
+        "view_capture"
     ],
     manifest: "AndroidManifest-common.xml",
     sdk_version: "current",
@@ -122,7 +169,10 @@
 android_library {
     name: "Launcher3CommonDepsLib",
     srcs: ["src_build_config/**/*.java"],
-    static_libs: ["Launcher3ResLib"],
+    static_libs: [
+        "Launcher3ResLib",
+        "launcher-testing-shared",
+    ],
     sdk_version: "current",
     min_sdk_version: min_launcher3_sdk_version,
     manifest: "AndroidManifest-common.xml",
@@ -141,14 +191,10 @@
         "Launcher3CommonDepsLib",
     ],
     srcs: [
-        "src/**/*.java",
-        "src/**/*.kt",
-        "src_shortcuts_overrides/**/*.java",
-        "src_shortcuts_overrides/**/*.kt",
-        "src_ui_overrides/**/*.java",
-        "src_ui_overrides/**/*.kt",
-        "ext_tests/src/**/*.java",
-        "ext_tests/src/**/*.kt",
+        ":launcher-src",
+        ":launcher-src_shortcuts_overrides",
+        ":launcher-src_ui_overrides",
+        ":launcher-ext_tests",
     ],
     resource_dirs: [
         "ext_tests/res",
@@ -197,68 +243,21 @@
         "lottie",
         "SystemUISharedLib",
         "SystemUI-statsd",
-        "SystemUIAnimationLib",
+        "animationlib",
     ],
     manifest: "quickstep/AndroidManifest.xml",
     min_sdk_version: "current",
 }
 
 
-// Source code used for test helpers
-filegroup {
-    name: "launcher-src-ext-tests",
-    srcs: [
-        "ext_tests/src/**/*.java",
-        "ext_tests/src/**/*.kt",
-        "quickstep/ext_tests/src/**/*.java",
-        "quickstep/ext_tests/src/**/*.kt",
-    ],
-}
-
-// Common source files used to build launcher
-filegroup {
-    name: "launcher-src-no-build-config",
-    srcs: [
-        "src/**/*.java",
-        "src/**/*.kt",
-        "src_shortcuts_overrides/**/*.java",
-        "src_shortcuts_overrides/**/*.kt",
-        "quickstep/src/**/*.java",
-        "quickstep/src/**/*.kt",
-    ],
-}
-
-// Common source files used to build go launcher except go/src files
-filegroup {
-    name: "launcher-go-src-no-build-config",
-    srcs: [
-        "src/**/*.java",
-        "src/**/*.kt",
-        "quickstep/src/**/*.java",
-        "quickstep/src/**/*.kt",
-        "go/quickstep/src/**/*.java",
-        "go/quickstep/src/**/*.kt",
-    ],
-}
-
-// Proguard files for Launcher3
-filegroup {
-    name: "launcher-proguard-rules",
-    srcs: ["proguard.flags"],
-}
-
 // Library with all the dependencies for building Launcher Go
 android_library {
     name: "LauncherGoResLib",
     srcs: [
-        "src/**/*.java",
-        "src/**/*.kt",
-        "quickstep/src/**/*.java",
-        "quickstep/src/**/*.kt",
-        "go/src/**/*.java",
-        "go/src/**/*.kt",
-        "go/quickstep/src/**/*.java",
-        "go/quickstep/src/**/*.kt",
+        ":launcher-src",
+        ":launcher-quickstep-src",
+        ":launcher-go-src",
+        ":launcher-go-quickstep-src",
     ],
     resource_dirs: [
         "go/res",
@@ -289,7 +288,9 @@
 android_library {
     name: "Launcher3QuickStepLib",
     srcs: [
-        ":launcher-src-no-build-config",
+        ":launcher-src",
+        ":launcher-quickstep-src",
+        ":launcher-src_shortcuts_overrides",
     ],
     resource_dirs: [],
     libs: [
@@ -304,7 +305,7 @@
         "SystemUISharedLib",
         "Launcher3CommonDepsLib",
         "QuickstepResLib",
-        "SystemUIAnimationLib",
+        "animationlib",
     ],
     manifest: "quickstep/AndroidManifest.xml",
     platform_apis: true,
@@ -313,3 +314,133 @@
         baseline_filename: "lint-baseline-launcher3.xml",
     },
 }
+
+// Build rule for Launcher3 Go app for Android Go devices.
+android_app {
+    name: "Launcher3Go",
+
+    static_libs: ["Launcher3CommonDepsLib"],
+
+    srcs: [
+        ":launcher-src",
+        ":launcher-go-src",
+        ":launcher-src_ui_overrides",
+    ],
+
+    resource_dirs: ["go/res"],
+
+    optimize: {
+        proguard_flags_files: ["proguard.flags"],
+    },
+
+    sdk_version: "current",
+    min_sdk_version: "current",
+    target_sdk_version: "current",
+    privileged: true,
+    system_ext_specific: true,
+    overrides: [
+        "Home",
+        "Launcher2",
+        "Launcher3",
+        "Launcher3QuickStep",
+    ],
+    required: ["privapp_whitelist_com.android.launcher3"],
+
+    additional_manifests: [
+        "AndroidManifest.xml",
+        "AndroidManifest-common.xml",
+    ],
+
+    manifest: "go/AndroidManifest.xml",
+    jacoco: {
+        include_filter: ["com.android.launcher3.*"],
+    }
+
+}
+
+// Build rule for Quickstep app.
+android_app {
+    name: "Launcher3QuickStep",
+
+    static_libs: ["Launcher3QuickStepLib"],
+    optimize: {
+        enabled: false,
+    },
+
+    platform_apis: true,
+    min_sdk_version: "current",
+    target_sdk_version: "current",
+
+    privileged: true,
+    system_ext_specific: true,
+    overrides: [
+        "Home",
+        "Launcher2",
+        "Launcher3",
+    ],
+    required: ["privapp_whitelist_com.android.launcher3"],
+
+    resource_dirs: ["quickstep/res"],
+
+    additional_manifests: [
+        "quickstep/AndroidManifest-launcher.xml",
+        "AndroidManifest-common.xml",
+    ],
+
+    manifest: "quickstep/AndroidManifest.xml",
+    jacoco: {
+        include_filter: ["com.android.launcher3.*"],
+    }
+
+}
+
+// Build rule for Launcher3 Go app with quickstep for Android Go devices.
+android_app {
+    name: "Launcher3QuickStepGo",
+
+    static_libs: [
+        "SystemUI-statsd",
+        "SystemUISharedLib",
+        "LauncherGoResLib",
+    ],
+
+    platform_apis: true,
+    min_sdk_version: "current",
+    target_sdk_version: "current",
+
+    srcs: [ ],
+
+    resource_dirs: [
+        "go/quickstep/res",
+        "go/res",
+        "quickstep/res",
+    ],
+
+    optimize: {
+        proguard_flags_files: ["proguard.flags"],
+        enabled: true,
+    },
+
+    privileged: true,
+    system_ext_specific: true,
+    overrides: [
+        "Home",
+        "Launcher2",
+        "Launcher3",
+        "Launcher3QuickStep",
+    ],
+    required: ["privapp_whitelist_com.android.launcher3"],
+
+    additional_manifests: [
+        "go/AndroidManifest.xml",
+        "go/AndroidManifest-launcher.xml",
+        "AndroidManifest-common.xml",
+    ],
+
+    manifest: "quickstep/AndroidManifest.xml",
+    jacoco: {
+        include_filter: ["com.android.launcher3.*"],
+    }
+
+}
+
diff --git a/Android.mk b/Android.mk
deleted file mode 100644
index 1bc8b28..0000000
--- a/Android.mk
+++ /dev/null
@@ -1,147 +0,0 @@
-#
-# Copyright (C) 2013 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.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-#
-# Build rule for Launcher3 Go app for Android Go devices.
-#
-include $(CLEAR_VARS)
-LOCAL_USE_AAPT2 := true
-LOCAL_MODULE_TAGS := optional
-LOCAL_STATIC_ANDROID_LIBRARIES := Launcher3CommonDepsLib
-
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, src) \
-    $(call all-java-files-under, src_ui_overrides) \
-    $(call all-java-files-under, go/src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/go/res
-
-LOCAL_PROGUARD_FLAG_FILES := proguard.flags
-
-LOCAL_SDK_VERSION := current
-LOCAL_MIN_SDK_VERSION := 26
-LOCAL_PACKAGE_NAME := Launcher3Go
-LOCAL_PRIVILEGED_MODULE := true
-LOCAL_SYSTEM_EXT_MODULE := true
-LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3 Launcher3QuickStep
-LOCAL_REQUIRED_MODULES := privapp_whitelist_com.android.launcher3
-
-LOCAL_FULL_LIBS_MANIFEST_FILES := \
-    $(LOCAL_PATH)/AndroidManifest.xml \
-    $(LOCAL_PATH)/AndroidManifest-common.xml
-
-LOCAL_MANIFEST_FILE := go/AndroidManifest.xml
-LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.launcher3.*
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_LICENSE_PACKAGE_NAME := Android Launcher3
-LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
-include $(BUILD_PACKAGE)
-
-#
-# Build rule for Quickstep app.
-#
-include $(CLEAR_VARS)
-LOCAL_USE_AAPT2 := true
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_STATIC_ANDROID_LIBRARIES := Launcher3QuickStepLib
-LOCAL_PROGUARD_ENABLED := disabled
-
-ifneq (,$(wildcard frameworks/base))
-  LOCAL_PRIVATE_PLATFORM_APIS := true
-else
-  LOCAL_SDK_VERSION := system_current
-  LOCAL_MIN_SDK_VERSION := 26
-endif
-LOCAL_PACKAGE_NAME := Launcher3QuickStep
-LOCAL_PRIVILEGED_MODULE := true
-LOCAL_SYSTEM_EXT_MODULE := true
-LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3
-LOCAL_REQUIRED_MODULES := privapp_whitelist_com.android.launcher3
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/quickstep/res
-
-LOCAL_FULL_LIBS_MANIFEST_FILES := \
-    $(LOCAL_PATH)/quickstep/AndroidManifest-launcher.xml \
-    $(LOCAL_PATH)/AndroidManifest-common.xml
-
-LOCAL_MANIFEST_FILE := quickstep/AndroidManifest.xml
-LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.launcher3.*
-
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_LICENSE_PACKAGE_NAME := Android Launcher3
-LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
-include $(BUILD_PACKAGE)
-
-
-#
-# Build rule for Launcher3 Go app with quickstep for Android Go devices.
-#
-include $(CLEAR_VARS)
-LOCAL_USE_AAPT2 := true
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    SystemUI-statsd \
-    SystemUISharedLib
-ifneq (,$(wildcard frameworks/base))
-  LOCAL_PRIVATE_PLATFORM_APIS := true
-else
-  LOCAL_SDK_VERSION := system_current
-  LOCAL_MIN_SDK_VERSION := 26
-endif
-LOCAL_STATIC_ANDROID_LIBRARIES := LauncherGoResLib
-
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, src) \
-    $(call all-java-files-under, quickstep/src) \
-    $(call all-java-files-under, go/src) \
-    $(call all-java-files-under, go/quickstep/src)
-
-LOCAL_RESOURCE_DIR := \
-    $(LOCAL_PATH)/go/quickstep/res \
-    $(LOCAL_PATH)/go/res \
-    $(LOCAL_PATH)/quickstep/res
-
-LOCAL_PROGUARD_FLAG_FILES := proguard.flags
-LOCAL_PROGUARD_ENABLED := full
-
-LOCAL_PACKAGE_NAME := Launcher3QuickStepGo
-LOCAL_PRIVILEGED_MODULE := true
-LOCAL_SYSTEM_EXT_MODULE := true
-LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3 Launcher3QuickStep
-LOCAL_REQUIRED_MODULES := privapp_whitelist_com.android.launcher3
-
-LOCAL_FULL_LIBS_MANIFEST_FILES := \
-    $(LOCAL_PATH)/go/AndroidManifest.xml \
-    $(LOCAL_PATH)/go/AndroidManifest-launcher.xml \
-    $(LOCAL_PATH)/AndroidManifest-common.xml
-
-LOCAL_MANIFEST_FILE := quickstep/AndroidManifest.xml
-LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.launcher3.*
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_LICENSE_PACKAGE_NAME := Android Launcher3
-LOCAL_NOTICE_FILE := build/soong/licenses/LICENSE
-include $(BUILD_PACKAGE)
-
-
-# ==================================================
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/AndroidManifest-common.xml b/AndroidManifest-common.xml
index 02b83fe..14605d8 100644
--- a/AndroidManifest-common.xml
+++ b/AndroidManifest-common.xml
@@ -40,10 +40,12 @@
     <uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
     <uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
     <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
+    <uses-permission android:name="android.permission.VIBRATE"/>
     <!-- for rotating surface by arbitrary degree -->
     <uses-permission android:name="android.permission.ROTATE_SURFACE_FLINGER" />
+    <uses-permission android:name="android.permission.WAKEUP_SURFACE_FLINGER" />
     <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
-    
+
     <!--
     Permissions required for read/write access to the workspace data. These permission name
     should not conflict with that defined in other apps, as such an app should embed its package
diff --git a/OWNERS b/OWNERS
index 7f98ea6..b684460 100644
--- a/OWNERS
+++ b/OWNERS
@@ -4,42 +4,15 @@
 # People who can approve changes for submission
 #
 
-alexchau@google.com
-andraskloczl@google.com
-patmanning@google.com
-petrcermak@google.com
-pbdr@google.com
-kideckel@google.com
-stevenckng@google.com
-ydixit@google.com
-boadway@google.com
-alinazaidi@google.com
 adamcohen@google.com
+captaincole@google.com
 hyunyoungs@google.com
-mrcasey@google.com
 sunnygoyal@google.com
-awickham@google.com
 twickham@google.com
-winsonc@google.com
-zakcohen@google.com
-santie@google.com
 vadimt@google.com
-mett@google.com
+winsonc@google.com
 jonmiranda@google.com
-pinyaoting@google.com
-sfufa@google.com
-gwasserman@google.com
-jamesoleary@google.com
-joshtrask@google.com
-mrenouf@google.com
-mkephart@google.com
-hwwang@google.com
-tracyzhou@google.com
-peanutbutter@google.com
-xuqiu@google.com
-sreyasr@google.com
-thiruram@google.com
-brianji@google.com
+alexchau@google.com
 
 per-file FeatureFlags.java, globs = set noparent
-per-file FeatureFlags.java = sunnygoyal@google.com, winsonc@google.com, zakcohen@google.com, mrcasey@google.com, adamcohen@google.com, hyunyoungs@google.com
+per-file FeatureFlags.java = sunnygoyal@google.com, winsonc@google.com, adamcohen@google.com, hyunyoungs@google.com, captaincole@google.com
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
index 9123959..a77791f 100644
--- a/PREUPLOAD.cfg
+++ b/PREUPLOAD.cfg
@@ -1,2 +1,4 @@
 [Hook Scripts]
 checkstyle_hook = ${REPO_ROOT}/prebuilts/checkstyle/checkstyle.py --config_xml tools/checkstyle.xml --sha ${PREUPLOAD_COMMIT}
+
+ktfmt_hook = ${REPO_ROOT}/external/ktfmt/ktfmt.py --check ${PREUPLOAD_FILES}
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 68ed73d..090bafe 100644
--- a/build.gradle
+++ b/build.gradle
@@ -147,6 +147,7 @@
     implementation "androidx.recyclerview:recyclerview:${ANDROID_X_VERSION}"
     implementation "androidx.preference:preference:${ANDROID_X_VERSION}"
     implementation project(':IconLoader')
+    implementation project(':UiTestsLibLauncher')
     withQuickstepImplementation project(':SharedLibWrapper')
 
     // Recents lib dependency
diff --git a/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java b/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java
index d16e12c..dc28c6a 100644
--- a/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java
+++ b/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java
@@ -17,6 +17,7 @@
 package com.android.launcher3.testing;
 
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
+import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
 
 import android.app.Activity;
 import android.app.Application;
@@ -24,7 +25,6 @@
 import android.os.Binder;
 import android.os.Bundle;
 import android.system.Os;
-import android.view.View;
 
 import androidx.annotation.Keep;
 import androidx.annotation.Nullable;
@@ -33,11 +33,11 @@
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.ShortcutAndWidgetContainer;
+import com.android.launcher3.testing.shared.TestProtocol;
 
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.LinkedList;
 import java.util.Map;
 import java.util.WeakHashMap;
 import java.util.concurrent.CountDownLatch;
@@ -47,7 +47,6 @@
  * Class to handle requests from tests, including debug ones.
  */
 public class DebugTestInformationHandler extends TestInformationHandler {
-    private static LinkedList sLeaks;
     private static Collection<String> sEvents;
     private static Application.ActivityLifecycleCallbacks sActivityLifecycleCallbacks;
     private static final Map<Activity, Boolean> sActivities =
@@ -153,13 +152,6 @@
                 return response;
             }
 
-            case TestProtocol.REQUEST_VIEW_LEAK: {
-                if (sLeaks == null) sLeaks = new LinkedList();
-                sLeaks.add(new View(mContext));
-                sLeaks.add(new View(mContext));
-                return response;
-            }
-
             case TestProtocol.REQUEST_START_EVENT_LOGGING: {
                 sEvents = new ArrayList<>();
                 TestLogging.setEventConsumer(
@@ -207,16 +199,6 @@
                 }
             }
 
-            case TestProtocol.REQUEST_USE_TEST_WORKSPACE_LAYOUT: {
-                useTestWorkspaceLayout(true);
-                return response;
-            }
-
-            case TestProtocol.REQUEST_USE_DEFAULT_WORKSPACE_LAYOUT: {
-                useTestWorkspaceLayout(false);
-                return response;
-            }
-
             case TestProtocol.REQUEST_HOTSEAT_ICON_NAMES: {
                 return getLauncherUIProperty(Bundle::putStringArrayList, l -> {
                     ShortcutAndWidgetContainer hotseatIconsContainer =
@@ -247,19 +229,11 @@
                 return response;
             }
 
+            case TestProtocol.REQUEST_MODEL_QUEUE_CLEARED:
+                return getFromExecutorSync(MODEL_EXECUTOR, Bundle::new);
+
             default:
                 return super.call(method, arg, extras);
         }
     }
-
-    private void useTestWorkspaceLayout(boolean useTestWorkspaceLayout) {
-        final long identity = Binder.clearCallingIdentity();
-        try {
-            LauncherSettings.Settings.call(mContext.getContentResolver(), useTestWorkspaceLayout
-                    ? LauncherSettings.Settings.METHOD_SET_USE_TEST_WORKSPACE_LAYOUT_FLAG
-                    : LauncherSettings.Settings.METHOD_CLEAR_USE_TEST_WORKSPACE_LAYOUT_FLAG);
-        } finally {
-            Binder.restoreCallingIdentity(identity);
-        }
-    }
 }
diff --git a/go/quickstep/res/layout/overview_actions_container.xml b/go/quickstep/res/layout/overview_actions_container.xml
index 196541f..48650aa 100644
--- a/go/quickstep/res/layout/overview_actions_container.xml
+++ b/go/quickstep/res/layout/overview_actions_container.xml
@@ -109,7 +109,7 @@
             style="@style/GoOverviewActionButton"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:drawableStart="@drawable/ic_split_screen"
+            android:drawableStart="@drawable/ic_split_vertical"
             android:text="@string/action_split"
             android:theme="@style/ThemeControlHighlightWorkspaceColor"
             android:visibility="gone" />
diff --git a/go/quickstep/res/values-am/strings.xml b/go/quickstep/res/values-am/strings.xml
index 1bfaf66..ffc59d9 100644
--- a/go/quickstep/res/values-am/strings.xml
+++ b/go/quickstep/res/values-am/strings.xml
@@ -9,12 +9,12 @@
     <string name="dialog_cancel" msgid="6464336969134856366">"ይቅር"</string>
     <string name="dialog_settings" msgid="6564397136021186148">"ቅንብሮች"</string>
     <string name="niu_actions_confirmation_title" msgid="3863451714863526143">"በማያ ገጹ ላይ ጽሑፍን ይተረጉሙ ወይም ያዳምጡ"</string>
-    <string name="niu_actions_confirmation_text" msgid="2105271481950866089">"እንደ በማያ ገጽዎ ላይ ያለ ጽሑፍ፣ የድር አድራሻዎች እና ቅጽበታዊ ገጽ እይታዎች ያሉ መረጃዎች ለGoogle ሊጋሩ ይችላሉ።\n\nምን መረጃ እንደሚያጋሩ ለመቀየር ወደ "<b>"ቅንብሮች &gt; መተግበሪያዎች &gt; ነባሪ መተግበሪያዎች &gt; ዲጂታል ረዳት መተግበሪያ"</b>" ይሂዱ።"</string>
+    <string name="niu_actions_confirmation_text" msgid="2105271481950866089">"እንደ በማያ ገፅዎ ላይ ያለ ጽሁፍ፣ የድር አድራሻዎች እና ቅጽበታዊ ገፅ እይታዎች ያሉ መረጃዎች ለGoogle ሊጋሩ ይችላሉ።\n\nምን መረጃ እንደሚያጋሩ ለመቀየር ወደ "<b>"ቅንብሮች &gt; መተግበሪያዎች &gt; ነባሪ መተግበሪያዎች &gt; ዲጂታል ረዳት መተግበሪያ"</b>" ይሂዱ።"</string>
     <string name="assistant_not_selected_title" msgid="5017072974603345228">"ይህንን ባህሪ ለመጠቀም ረዳት ይምረጡ"</string>
     <string name="assistant_not_selected_text" msgid="3244613673884359276">"በማያ ገጽዎ ላይ ጽሑፍን ለማዳመጥ ወይም ለመተርጎም በቅንብሮች ውስጥ የዲጂታል ረዳት መተግበሪያን ይምረጡ"</string>
     <string name="assistant_not_supported_title" msgid="1675788067597484142">"ይህንን ባህሪ ለመጠቀም ረዳትዎን ይቀይሩ"</string>
     <string name="assistant_not_supported_text" msgid="1708031078549268884">"በማያ ገጽዎ ላይ ጽሑፍን ለማዳመጥ ወይም ለመተርጎም በቅንብሮች ውስጥ የዲጂታል ረዳት መተግበሪያዎን ይቀይሩ"</string>
-    <string name="tooltip_listen" msgid="7634466447860989102">"በዚህ ማያ ገጽ ላይ ጽሑፍ ለማዳመጥ እዚህ መታ ያድርጉ"</string>
-    <string name="tooltip_translate" msgid="4184845868901542567">"በዚህ ማያ ገጽ ላይ ጽሑፍ ለመተርጎም እዚህ መታ ያድርጉ"</string>
+    <string name="tooltip_listen" msgid="7634466447860989102">"በዚህ ማያ ገፅ ላይ ጽሁፍ ለማዳመጥ እዚህ መታ ያድርጉ"</string>
+    <string name="tooltip_translate" msgid="4184845868901542567">"በዚህ ማያ ገፅ ላይ ጽሁፍ ለመተርጎም እዚህ መታ ያድርጉ"</string>
     <string name="toast_p2p_app_not_shareable" msgid="7229739094132131536">"ይህ መተግበሪያ ሊጋራ አይችልም"</string>
 </resources>
diff --git a/go/quickstep/res/values-ar/strings.xml b/go/quickstep/res/values-ar/strings.xml
index e05ee5e..7d98184 100644
--- a/go/quickstep/res/values-ar/strings.xml
+++ b/go/quickstep/res/values-ar/strings.xml
@@ -4,7 +4,7 @@
     <string name="app_share_drop_target_label" msgid="5804774105974539508">"مشاركة التطبيق"</string>
     <string name="action_listen" msgid="2370304050784689486">"استماع"</string>
     <string name="action_translate" msgid="8028378961867277746">"‏ترجمة Google"</string>
-    <string name="action_search" msgid="6269564710943755464">"‏عدسة Google"</string>
+    <string name="action_search" msgid="6269564710943755464">"عدسة"</string>
     <string name="dialog_acknowledge" msgid="2804025517675853172">"حسنًا"</string>
     <string name="dialog_cancel" msgid="6464336969134856366">"إلغاء"</string>
     <string name="dialog_settings" msgid="6564397136021186148">"الإعدادات"</string>
diff --git a/go/quickstep/res/values-bn/strings.xml b/go/quickstep/res/values-bn/strings.xml
index 6067191..8c27e63 100644
--- a/go/quickstep/res/values-bn/strings.xml
+++ b/go/quickstep/res/values-bn/strings.xml
@@ -4,7 +4,7 @@
     <string name="app_share_drop_target_label" msgid="5804774105974539508">"অ্যাপ শেয়ার করুন"</string>
     <string name="action_listen" msgid="2370304050784689486">"শুনুন"</string>
     <string name="action_translate" msgid="8028378961867277746">"অনুবাদ করুন"</string>
-    <string name="action_search" msgid="6269564710943755464">"লেন্স"</string>
+    <string name="action_search" msgid="6269564710943755464">"Lens"</string>
     <string name="dialog_acknowledge" msgid="2804025517675853172">"বুঝেছি"</string>
     <string name="dialog_cancel" msgid="6464336969134856366">"বাতিল করুন"</string>
     <string name="dialog_settings" msgid="6564397136021186148">"সেটিংস"</string>
diff --git a/go/quickstep/res/values-en-rCA/strings.xml b/go/quickstep/res/values-en-rCA/strings.xml
index 676ac43..664bd94 100644
--- a/go/quickstep/res/values-en-rCA/strings.xml
+++ b/go/quickstep/res/values-en-rCA/strings.xml
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_share_drop_target_label" msgid="5804774105974539508">"Share app"</string>
+    <string name="app_share_drop_target_label" msgid="5804774105974539508">"Share App"</string>
     <string name="action_listen" msgid="2370304050784689486">"Listen"</string>
     <string name="action_translate" msgid="8028378961867277746">"Translate"</string>
     <string name="action_search" msgid="6269564710943755464">"Lens"</string>
-    <string name="dialog_acknowledge" msgid="2804025517675853172">"OK"</string>
+    <string name="dialog_acknowledge" msgid="2804025517675853172">"GOT IT"</string>
     <string name="dialog_cancel" msgid="6464336969134856366">"CANCEL"</string>
     <string name="dialog_settings" msgid="6564397136021186148">"SETTINGS"</string>
     <string name="niu_actions_confirmation_title" msgid="3863451714863526143">"Translate or listen to text on screen"</string>
-    <string name="niu_actions_confirmation_text" msgid="2105271481950866089">"Information such as text on your screen, web addresses and screenshots may be shared with Google.\n\nTo change what information you share, go to "<b>"Settings &gt; Apps &gt; Default apps &gt; Digital assistant app"</b>"."</string>
+    <string name="niu_actions_confirmation_text" msgid="2105271481950866089">"Information such as text on your screen, web addresses, and screenshots may be shared with Google.\n\nTo change what information you share, go to "<b>"Settings &gt; Apps &gt; Default apps &gt; Digital assistant app"</b>"."</string>
     <string name="assistant_not_selected_title" msgid="5017072974603345228">"Choose an assistant to use this feature"</string>
-    <string name="assistant_not_selected_text" msgid="3244613673884359276">"To listen to or translate text on your screen, choose a digital assistant app in settings"</string>
+    <string name="assistant_not_selected_text" msgid="3244613673884359276">"To listen to or translate text on your screen, choose a digital assistant app in Settings"</string>
     <string name="assistant_not_supported_title" msgid="1675788067597484142">"Change your assistant to use this feature"</string>
-    <string name="assistant_not_supported_text" msgid="1708031078549268884">"To listen to or translate text on your screen, change your digital assistant app in settings"</string>
+    <string name="assistant_not_supported_text" msgid="1708031078549268884">"To listen to or translate text on your screen, change your digital assistant app in Settings"</string>
     <string name="tooltip_listen" msgid="7634466447860989102">"Tap here to listen to text on this screen"</string>
     <string name="tooltip_translate" msgid="4184845868901542567">"Tap here to translate text on this screen"</string>
     <string name="toast_p2p_app_not_shareable" msgid="7229739094132131536">"This app can’t be shared"</string>
diff --git a/go/quickstep/res/values-gu/strings.xml b/go/quickstep/res/values-gu/strings.xml
index faa66fc..80d9e2e 100644
--- a/go/quickstep/res/values-gu/strings.xml
+++ b/go/quickstep/res/values-gu/strings.xml
@@ -4,7 +4,7 @@
     <string name="app_share_drop_target_label" msgid="5804774105974539508">"ઍપ શેર કરો"</string>
     <string name="action_listen" msgid="2370304050784689486">"સાંભળો"</string>
     <string name="action_translate" msgid="8028378961867277746">"અનુવાદ કરો"</string>
-    <string name="action_search" msgid="6269564710943755464">"લેન્સ"</string>
+    <string name="action_search" msgid="6269564710943755464">"Lens"</string>
     <string name="dialog_acknowledge" msgid="2804025517675853172">"સમજાઈ ગયું"</string>
     <string name="dialog_cancel" msgid="6464336969134856366">"રદ કરો"</string>
     <string name="dialog_settings" msgid="6564397136021186148">"સેટિંગ"</string>
diff --git a/go/quickstep/res/values-kk/strings.xml b/go/quickstep/res/values-kk/strings.xml
index 2361cbb..2a2f96d 100644
--- a/go/quickstep/res/values-kk/strings.xml
+++ b/go/quickstep/res/values-kk/strings.xml
@@ -4,7 +4,7 @@
     <string name="app_share_drop_target_label" msgid="5804774105974539508">"Қолданбаны бөлісу"</string>
     <string name="action_listen" msgid="2370304050784689486">"Тыңдау"</string>
     <string name="action_translate" msgid="8028378961867277746">"Аудару"</string>
-    <string name="action_search" msgid="6269564710943755464">"Объектив"</string>
+    <string name="action_search" msgid="6269564710943755464">"Lens"</string>
     <string name="dialog_acknowledge" msgid="2804025517675853172">"ТҮСІНІКТІ"</string>
     <string name="dialog_cancel" msgid="6464336969134856366">"БАС ТАРТУ"</string>
     <string name="dialog_settings" msgid="6564397136021186148">"ПАРАМЕТРЛЕР"</string>
diff --git a/go/quickstep/res/values-ky/strings.xml b/go/quickstep/res/values-ky/strings.xml
index e4a2474..dcc1e4e 100644
--- a/go/quickstep/res/values-ky/strings.xml
+++ b/go/quickstep/res/values-ky/strings.xml
@@ -9,11 +9,11 @@
     <string name="dialog_cancel" msgid="6464336969134856366">"ЖОККО ЧЫГАРУУ"</string>
     <string name="dialog_settings" msgid="6564397136021186148">"ЖӨНДӨӨЛӨР"</string>
     <string name="niu_actions_confirmation_title" msgid="3863451714863526143">"Экрандагы текстти которуу же угуу"</string>
-    <string name="niu_actions_confirmation_text" msgid="2105271481950866089">"Экрандагы текст, веб-даректер жана скриншоттор сыяктуу маалымат Google менен бөлүшүлүшү мүмкүн.\n\nБөлүшүлгөн маалыматты өзгөртүү үчүн"<b>"Жөндөөлөр &gt; Колдонмолор &gt; Демейки колдонмолор &gt; Санариптик жардамчы колдонмосуна өтүңүз"</b>"."</string>
+    <string name="niu_actions_confirmation_text" msgid="2105271481950866089">"Экрандагы текст, веб-даректер жана скриншоттор сыяктуу маалымат Google менен бөлүшүлүшү мүмкүн.\n\nБөлүшүлгөн маалыматты өзгөртүү үчүн"<b>"Параметрлер &gt; Колдонмолор &gt; Демейки колдонмолор &gt; Санариптик жардамчы колдонмосуна өтүңүз"</b>"."</string>
     <string name="assistant_not_selected_title" msgid="5017072974603345228">"Бул функцияны колдонуу үчүн жардамчыны тандаңыз"</string>
-    <string name="assistant_not_selected_text" msgid="3244613673884359276">"Экраныңыздагы текстти угуу же которуу үчүн Жөндөөлөрдөн санариптик жардамчы колдонмосун тандаңыз"</string>
+    <string name="assistant_not_selected_text" msgid="3244613673884359276">"Экраныңыздагы текстти угуу же которуу үчүн Параметрлерден санариптик жардамчы колдонмосун тандаңыз"</string>
     <string name="assistant_not_supported_title" msgid="1675788067597484142">"Бул функцияны колдонуу үчүн жардамчыңызды өзгөртүңүз"</string>
-    <string name="assistant_not_supported_text" msgid="1708031078549268884">"Экраныңыздагы текстти угуу же которуу үчүн Жөндөөлөрдөн санариптик жардамчы колдонмосун өзгөртүңүз"</string>
+    <string name="assistant_not_supported_text" msgid="1708031078549268884">"Экраныңыздагы текстти угуу же которуу үчүн Параметрлерден санариптик жардамчы колдонмосун өзгөртүңүз"</string>
     <string name="tooltip_listen" msgid="7634466447860989102">"Бул экрандагы текстти угуу үчүн бул жерди басыңыз"</string>
     <string name="tooltip_translate" msgid="4184845868901542567">"Бул экрандагы текстти которуу үчүн бул жерди басыңыз"</string>
     <string name="toast_p2p_app_not_shareable" msgid="7229739094132131536">"Бул колдонмону бөлүшүүгө болбойт"</string>
diff --git a/go/quickstep/res/values-ml/strings.xml b/go/quickstep/res/values-ml/strings.xml
index 19d0b75..ed57395 100644
--- a/go/quickstep/res/values-ml/strings.xml
+++ b/go/quickstep/res/values-ml/strings.xml
@@ -4,7 +4,7 @@
     <string name="app_share_drop_target_label" msgid="5804774105974539508">"ആപ്പ് പങ്കിടുക"</string>
     <string name="action_listen" msgid="2370304050784689486">"കേൾക്കുക"</string>
     <string name="action_translate" msgid="8028378961867277746">"വിവർത്തനം ചെയ്യുക"</string>
-    <string name="action_search" msgid="6269564710943755464">"ലെൻസ്"</string>
+    <string name="action_search" msgid="6269564710943755464">"Lens"</string>
     <string name="dialog_acknowledge" msgid="2804025517675853172">"മനസ്സിലായി"</string>
     <string name="dialog_cancel" msgid="6464336969134856366">"റദ്ദാക്കുക"</string>
     <string name="dialog_settings" msgid="6564397136021186148">"ക്രമീകരണം"</string>
diff --git a/go/quickstep/res/values-mn/strings.xml b/go/quickstep/res/values-mn/strings.xml
index 2eb3c98..d03b2d2 100644
--- a/go/quickstep/res/values-mn/strings.xml
+++ b/go/quickstep/res/values-mn/strings.xml
@@ -4,7 +4,7 @@
     <string name="app_share_drop_target_label" msgid="5804774105974539508">"Аппыг хуваалцах"</string>
     <string name="action_listen" msgid="2370304050784689486">"Сонсох"</string>
     <string name="action_translate" msgid="8028378961867277746">"Орчуулах"</string>
-    <string name="action_search" msgid="6269564710943755464">"Дуран"</string>
+    <string name="action_search" msgid="6269564710943755464">"Lens"</string>
     <string name="dialog_acknowledge" msgid="2804025517675853172">"ОЙЛГОЛОО"</string>
     <string name="dialog_cancel" msgid="6464336969134856366">"ЦУЦЛАХ"</string>
     <string name="dialog_settings" msgid="6564397136021186148">"ТОХИРГОО"</string>
diff --git a/go/quickstep/res/values-ms/strings.xml b/go/quickstep/res/values-ms/strings.xml
index 36e1678..3b0a7fb 100644
--- a/go/quickstep/res/values-ms/strings.xml
+++ b/go/quickstep/res/values-ms/strings.xml
@@ -4,7 +4,7 @@
     <string name="app_share_drop_target_label" msgid="5804774105974539508">"Kongsi Apl"</string>
     <string name="action_listen" msgid="2370304050784689486">"Dengar"</string>
     <string name="action_translate" msgid="8028378961867277746">"Terjemah"</string>
-    <string name="action_search" msgid="6269564710943755464">"Kanta"</string>
+    <string name="action_search" msgid="6269564710943755464">"Lens"</string>
     <string name="dialog_acknowledge" msgid="2804025517675853172">"OK"</string>
     <string name="dialog_cancel" msgid="6464336969134856366">"BATAL"</string>
     <string name="dialog_settings" msgid="6564397136021186148">"TETAPAN"</string>
diff --git a/go/quickstep/res/values-my/strings.xml b/go/quickstep/res/values-my/strings.xml
index 0ca0e9c..cbb485a 100644
--- a/go/quickstep/res/values-my/strings.xml
+++ b/go/quickstep/res/values-my/strings.xml
@@ -5,7 +5,7 @@
     <string name="action_listen" msgid="2370304050784689486">"နားထောင်ရန်"</string>
     <string name="action_translate" msgid="8028378961867277746">"ဘာသာပြန်ရန်"</string>
     <string name="action_search" msgid="6269564710943755464">"Lens"</string>
-    <string name="dialog_acknowledge" msgid="2804025517675853172">"ရပြီ"</string>
+    <string name="dialog_acknowledge" msgid="2804025517675853172">"နားလည်ပြီ"</string>
     <string name="dialog_cancel" msgid="6464336969134856366">"မလုပ်တော့"</string>
     <string name="dialog_settings" msgid="6564397136021186148">"ဆက်တင်များ"</string>
     <string name="niu_actions_confirmation_title" msgid="3863451714863526143">"ဖန်သားပြင်ပေါ်ရှိ စာသားကို ဘာသာပြန်ပါ (သို့) နားထောင်ပါ"</string>
diff --git a/go/quickstep/res/values-or/strings.xml b/go/quickstep/res/values-or/strings.xml
index 36204a3..6a3c5dc 100644
--- a/go/quickstep/res/values-or/strings.xml
+++ b/go/quickstep/res/values-or/strings.xml
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_share_drop_target_label" msgid="5804774105974539508">"ଆପ୍ ସେୟାର୍ କରନ୍ତୁ"</string>
+    <string name="app_share_drop_target_label" msgid="5804774105974539508">"ଆପ ସେୟାର କରନ୍ତୁ"</string>
     <string name="action_listen" msgid="2370304050784689486">"ଶୁଣନ୍ତୁ"</string>
     <string name="action_translate" msgid="8028378961867277746">"ଅନୁବାଦ କରନ୍ତୁ"</string>
     <string name="action_search" msgid="6269564710943755464">"Lens"</string>
     <string name="dialog_acknowledge" msgid="2804025517675853172">"ବୁଝିଗଲି"</string>
-    <string name="dialog_cancel" msgid="6464336969134856366">"ବାତିଲ୍ କରନ୍ତୁ"</string>
-    <string name="dialog_settings" msgid="6564397136021186148">"ସେଟିଂସ୍"</string>
+    <string name="dialog_cancel" msgid="6464336969134856366">"ବାତିଲ କରନ୍ତୁ"</string>
+    <string name="dialog_settings" msgid="6564397136021186148">"ସେଟିଂସ"</string>
     <string name="niu_actions_confirmation_title" msgid="3863451714863526143">"ସ୍କିନରେ ଥିବା ଟେକ୍ସଟକୁ ଅନୁବାଦ କରନ୍ତୁ କିମ୍ବା ଶୁଣନ୍ତୁ"</string>
-    <string name="niu_actions_confirmation_text" msgid="2105271481950866089">"ଆପଣଙ୍କ ସ୍କ୍ରିନରେ ଟେକ୍ସଟ୍, ୱେବ୍ ଠିକଣା ଏବଂ ସ୍କ୍ରିନସଟଗୁଡ଼ିକ ପରି ସୂଚନାକୁ Google ସହ ସେୟାର୍ କରାଯାଇପାରେ।\n\nଆପଣ କେଉଁ ସୂଚନା ସେୟାର୍ କରନ୍ତି ତାହା ପରିବର୍ତ୍ତନ କରିବାକୁ, "<b>"ସେଟିଂସ୍ &gt; ଆପ୍ସ &gt; ଡିଫଲ୍ଟ ଆପ୍ସ &gt; ଡିଜିଟାଲ୍ ଆସିଷ୍ଟାଣ୍ଟ ଆପ"</b>"କୁ ଯାଆନ୍ତୁ।"</string>
+    <string name="niu_actions_confirmation_text" msgid="2105271481950866089">"ଆପଣଙ୍କ ସ୍କ୍ରିନରେ ଟେକ୍ସଟ, ୱେବ ଠିକଣା ଏବଂ ସ୍କ୍ରିନସଟଗୁଡ଼ିକ ପରି ସୂଚନାକୁ Google ସହ ସେୟାର କରାଯାଇପାରେ।\n\nଆପଣ କେଉଁ ସୂଚନାକୁ ସେୟାର କରନ୍ତି ତାହା ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ, "<b>"ସେଟିଂସ &gt; ଆପ୍ସ &gt; ଡିଫଲ୍ଟ ଆପ୍ସ &gt; Digital assistant ଆପ"</b>"କୁ ଯାଆନ୍ତୁ।"</string>
     <string name="assistant_not_selected_title" msgid="5017072974603345228">"ଏହି ଫିଚର୍ ବ୍ୟବହାର କରିବାକୁ ଏକ ଆସିଷ୍ଟାଣ୍ଟ ବାଛନ୍ତୁ"</string>
-    <string name="assistant_not_selected_text" msgid="3244613673884359276">"ଆପଣଙ୍କ ସ୍କ୍ରିନରେ ଥିବା ଟେକ୍ସଟକୁ ଶୁଣିବା ପାଇଁ କିମ୍ବା ଅନୁବାଦ କରିବାକୁ, ସେଟିଂସରେ ଏକ ଡିଜିଟାଲ୍ ଆସିଷ୍ଟାଣ୍ଟ ଆପ୍ ଚୟନ କରନ୍ତୁ"</string>
+    <string name="assistant_not_selected_text" msgid="3244613673884359276">"ଆପଣଙ୍କ ସ୍କ୍ରିନରେ ଥିବା ଟେକ୍ସଟକୁ ଶୁଣିବା କିମ୍ବା ଅନୁବାଦ କରିବା ପାଇଁ, ସେଟିଂସରେ ଏକ digital assistant ଆପ ବାଛନ୍ତୁ"</string>
     <string name="assistant_not_supported_title" msgid="1675788067597484142">"ଏହି ଫିଚର୍ ବ୍ୟବହାର କରିବା ପାଇଁ ଆପଣଙ୍କ ଆସିଷ୍ଟାଣ୍ଟକୁ ବଦଳାନ୍ତୁ"</string>
-    <string name="assistant_not_supported_text" msgid="1708031078549268884">"ଆପଣଙ୍କ ସ୍କ୍ରିନରେ ଥିବା ଟେକ୍ସଟକୁ ଶୁଣିବା ପାଇଁ କିମ୍ବା ଅନୁବାଦ କରିବାକୁ, ସେଟିଂସରେ ଆପଣଙ୍କ ଡିଜିଟାଲ୍ ଆସିଷ୍ଟାଣ୍ଟ ଆପକୁ ବଦଳାନ୍ତୁ"</string>
+    <string name="assistant_not_supported_text" msgid="1708031078549268884">"ଆପଣଙ୍କ ସ୍କ୍ରିନରେ ଥିବା ଟେକ୍ସଟକୁ ଶୁଣିବା କିମ୍ବା ଅନୁବାଦ କରିବା ପାଇଁ, ସେଟିଂସରେ ଆପଣଙ୍କ Digital assistant ଆପକୁ ବଦଳାନ୍ତୁ"</string>
     <string name="tooltip_listen" msgid="7634466447860989102">"ଏହି ସ୍କ୍ରିନରେ ଥିବା ଟେକ୍ସଟକୁ ଶୁଣିବା ପାଇଁ ଏଠାରେ ଟାପ୍ କରନ୍ତୁ"</string>
     <string name="tooltip_translate" msgid="4184845868901542567">"ଏହି ସ୍କ୍ରିନରେ ଥିବା ଟେକ୍ସଟକୁ ଅନୁବାଦ କରିବା ପାଇଁ ଏଠାରେ ଟାପ୍ କରନ୍ତୁ"</string>
     <string name="toast_p2p_app_not_shareable" msgid="7229739094132131536">"ଏହି ଆପ ସେୟାର କରାଯାଇପାରିବ ନାହିଁ"</string>
diff --git a/go/quickstep/res/values-pt-rPT/strings.xml b/go/quickstep/res/values-pt-rPT/strings.xml
index 7041f41..e64f520 100644
--- a/go/quickstep/res/values-pt-rPT/strings.xml
+++ b/go/quickstep/res/values-pt-rPT/strings.xml
@@ -10,9 +10,9 @@
     <string name="dialog_settings" msgid="6564397136021186148">"DEFINIÇÕES"</string>
     <string name="niu_actions_confirmation_title" msgid="3863451714863526143">"Traduza ou ouça o texto no ecrã"</string>
     <string name="niu_actions_confirmation_text" msgid="2105271481950866089">"Informações como o texto no ecrã, endereços Web e capturas de ecrã podem ser partilhadas com a Google.\n\nPara alterar as informações que partilha, aceda a "<b>"Definições &gt; Apps &gt; App predefinidas &gt; App de assistente digital"</b>"."</string>
-    <string name="assistant_not_selected_title" msgid="5017072974603345228">"Escolha um assistente para utilizar esta funcionalidade"</string>
+    <string name="assistant_not_selected_title" msgid="5017072974603345228">"Escolha um assistente para usar esta funcionalidade"</string>
     <string name="assistant_not_selected_text" msgid="3244613673884359276">"Para ouvir ou traduzir o texto no ecrã, escolha uma app de assistente digital nas Definições"</string>
-    <string name="assistant_not_supported_title" msgid="1675788067597484142">"Mude de assistente para utilizar esta funcionalidade"</string>
+    <string name="assistant_not_supported_title" msgid="1675788067597484142">"Mude de assistente para usar esta funcionalidade"</string>
     <string name="assistant_not_supported_text" msgid="1708031078549268884">"Para ouvir ou traduzir o texto no ecrã, mude de app de assistente digital nas Definições"</string>
     <string name="tooltip_listen" msgid="7634466447860989102">"Toque aqui para ouvir o texto neste ecrã"</string>
     <string name="tooltip_translate" msgid="4184845868901542567">"Toque aqui para traduzir o texto neste ecrã"</string>
diff --git a/go/quickstep/res/values-ro/strings.xml b/go/quickstep/res/values-ro/strings.xml
index 0be8cce..3d6f0d8 100644
--- a/go/quickstep/res/values-ro/strings.xml
+++ b/go/quickstep/res/values-ro/strings.xml
@@ -1,20 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_share_drop_target_label" msgid="5804774105974539508">"Trimiteți aplicația"</string>
-    <string name="action_listen" msgid="2370304050784689486">"Ascultați"</string>
-    <string name="action_translate" msgid="8028378961867277746">"Traduceți"</string>
+    <string name="app_share_drop_target_label" msgid="5804774105974539508">"Trimite aplicația"</string>
+    <string name="action_listen" msgid="2370304050784689486">"Ascultă"</string>
+    <string name="action_translate" msgid="8028378961867277746">"Tradu"</string>
     <string name="action_search" msgid="6269564710943755464">"Lens"</string>
     <string name="dialog_acknowledge" msgid="2804025517675853172">"OK"</string>
-    <string name="dialog_cancel" msgid="6464336969134856366">"ANULAȚI"</string>
+    <string name="dialog_cancel" msgid="6464336969134856366">"ANULEAZĂ"</string>
     <string name="dialog_settings" msgid="6564397136021186148">"SETĂRI"</string>
-    <string name="niu_actions_confirmation_title" msgid="3863451714863526143">"Traduceți sau ascultați textul de pe ecran"</string>
-    <string name="niu_actions_confirmation_text" msgid="2105271481950866089">"Informații precum textul de pe ecran, adresele web și capturile de ecran pot fi trimise la Google.\n\nCa să schimbați informațiile trimise, accesați "<b>"Setări &gt; Aplicații &gt; Aplicații prestabilite &gt; Aplicația asistent digital"</b>"."</string>
-    <string name="assistant_not_selected_title" msgid="5017072974603345228">"Alegeți un asistent pentru a folosi această funcție"</string>
-    <string name="assistant_not_selected_text" msgid="3244613673884359276">"Pentru a asculta sau a traduce text de pe ecran, alegeți o aplicație asistent digital în Setări"</string>
-    <string name="assistant_not_supported_title" msgid="1675788067597484142">"Schimbați asistentul pentru a folosi această funcție"</string>
-    <string name="assistant_not_supported_text" msgid="1708031078549268884">"Pentru a asculta sau a traduce text de pe ecran, schimbați aplicația asistent digital în Setări"</string>
-    <string name="tooltip_listen" msgid="7634466447860989102">"Atingeți aici pentru a asculta text de pe ecran"</string>
-    <string name="tooltip_translate" msgid="4184845868901542567">"Atingeți aici pentru a traduce text de pe ecran"</string>
+    <string name="niu_actions_confirmation_title" msgid="3863451714863526143">"Tradu sau ascultă textul de pe ecran"</string>
+    <string name="niu_actions_confirmation_text" msgid="2105271481950866089">"Informații precum textul de pe ecran, adresele web și capturile de ecran pot fi trimise la Google.\n\nCa să schimbi informațiile trimise, accesează "<b>"Setări &gt; Aplicații &gt; Aplicații prestabilite &gt; Aplicația asistent digital"</b>"."</string>
+    <string name="assistant_not_selected_title" msgid="5017072974603345228">"Alege un asistent pentru a folosi această funcție"</string>
+    <string name="assistant_not_selected_text" msgid="3244613673884359276">"Pentru a asculta sau a traduce text de pe ecran, alege o aplicație asistent digital în Setări"</string>
+    <string name="assistant_not_supported_title" msgid="1675788067597484142">"Schimbă asistentul pentru a folosi această funcție"</string>
+    <string name="assistant_not_supported_text" msgid="1708031078549268884">"Pentru a asculta sau a traduce text de pe ecran, schimbă aplicația asistent digital în Setări"</string>
+    <string name="tooltip_listen" msgid="7634466447860989102">"Atinge aici pentru a asculta text de pe ecran"</string>
+    <string name="tooltip_translate" msgid="4184845868901542567">"Atinge aici pentru a traduce text de pe ecran"</string>
     <string name="toast_p2p_app_not_shareable" msgid="7229739094132131536">"Aplicația nu poate fi distribuită"</string>
 </resources>
diff --git a/go/quickstep/res/values-ta/strings.xml b/go/quickstep/res/values-ta/strings.xml
index 9d04e9a..cd97aa3 100644
--- a/go/quickstep/res/values-ta/strings.xml
+++ b/go/quickstep/res/values-ta/strings.xml
@@ -4,7 +4,7 @@
     <string name="app_share_drop_target_label" msgid="5804774105974539508">"ஆப்ஸைப் பகிருங்கள்"</string>
     <string name="action_listen" msgid="2370304050784689486">"கேளுங்கள்"</string>
     <string name="action_translate" msgid="8028378961867277746">"மொழிபெயர்"</string>
-    <string name="action_search" msgid="6269564710943755464">"லென்ஸ்"</string>
+    <string name="action_search" msgid="6269564710943755464">"Lens"</string>
     <string name="dialog_acknowledge" msgid="2804025517675853172">"சரி"</string>
     <string name="dialog_cancel" msgid="6464336969134856366">"ரத்துசெய்"</string>
     <string name="dialog_settings" msgid="6564397136021186148">"அமைப்புகள்"</string>
diff --git a/go/quickstep/res/values-zu/strings.xml b/go/quickstep/res/values-zu/strings.xml
index d496b64..1be7898 100644
--- a/go/quickstep/res/values-zu/strings.xml
+++ b/go/quickstep/res/values-zu/strings.xml
@@ -4,7 +4,7 @@
     <string name="app_share_drop_target_label" msgid="5804774105974539508">"Yabelana nge-App"</string>
     <string name="action_listen" msgid="2370304050784689486">"Lalela"</string>
     <string name="action_translate" msgid="8028378961867277746">"Humusha"</string>
-    <string name="action_search" msgid="6269564710943755464">"Ilensi"</string>
+    <string name="action_search" msgid="6269564710943755464">"Lens"</string>
     <string name="dialog_acknowledge" msgid="2804025517675853172">"NGIYITHOLILE"</string>
     <string name="dialog_cancel" msgid="6464336969134856366">"KHANSELA"</string>
     <string name="dialog_settings" msgid="6564397136021186148">"AMASETHINGI"</string>
diff --git a/go/quickstep/src/com/android/quickstep/TaskOverlayFactoryGo.java b/go/quickstep/src/com/android/quickstep/TaskOverlayFactoryGo.java
index c997e52..253147d 100644
--- a/go/quickstep/src/com/android/quickstep/TaskOverlayFactoryGo.java
+++ b/go/quickstep/src/com/android/quickstep/TaskOverlayFactoryGo.java
@@ -50,8 +50,8 @@
 import androidx.annotation.VisibleForTesting;
 
 import com.android.launcher3.BaseActivity;
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.R;
-import com.android.launcher3.Utilities;
 import com.android.launcher3.views.ArrowTipView;
 import com.android.quickstep.util.AssistContentRequester;
 import com.android.quickstep.util.RecentsOrientedState;
@@ -124,7 +124,7 @@
                 AssistContentRequester assistContentRequester) {
             super(taskThumbnailView);
             mFactoryContentRequester = assistContentRequester;
-            mSharedPreferences = Utilities.getPrefs(mApplicationContext);
+            mSharedPreferences = LauncherPrefs.getPrefs(mApplicationContext);
         }
 
         /**
@@ -151,7 +151,7 @@
             boolean isAllowedByPolicy = mThumbnailView.isRealSnapshot() && !isManagedProfileTask;
             getActionsView().setCallbacks(new OverlayUICallbacksGoImpl(isAllowedByPolicy, task));
             mTaskPackageName = task.key.getPackageName();
-            mSharedPreferences = Utilities.getPrefs(mApplicationContext);
+            mSharedPreferences = LauncherPrefs.getPrefs(mApplicationContext);
             checkSettings();
 
             if (!mAssistStructurePermitted || !mAssistScreenshotPermitted
diff --git a/go/src/com/android/launcher3/model/LoaderResults.java b/go/src/com/android/launcher3/model/LauncherBinder.java
similarity index 82%
rename from go/src/com/android/launcher3/model/LoaderResults.java
rename to go/src/com/android/launcher3/model/LauncherBinder.java
index 5f71061..437d8ca 100644
--- a/go/src/com/android/launcher3/model/LoaderResults.java
+++ b/go/src/com/android/launcher3/model/LauncherBinder.java
@@ -22,11 +22,11 @@
 import com.android.launcher3.model.BgDataModel.Callbacks;
 
 /**
- * Helper class to handle results of {@link com.android.launcher3.model.LoaderTask}.
+ * Binds the results of {@link com.android.launcher3.model.LoaderTask} to the Callbacks objects.
  */
-public class LoaderResults extends BaseLoaderResults {
+public class LauncherBinder extends BaseLauncherBinder {
 
-    public LoaderResults(LauncherAppState app, BgDataModel dataModel,
+    public LauncherBinder(LauncherAppState app, BgDataModel dataModel,
             AllAppsList allAppsList, Callbacks[] callbacks) {
         super(app, dataModel, allAppsList, callbacks, MAIN_EXECUTOR);
     }
diff --git a/lint-baseline.xml b/lint-baseline.xml
new file mode 100644
index 0000000..23a22be
--- /dev/null
+++ b/lint-baseline.xml
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<issues format="6" by="lint 8.0.0-dev" type="baseline" dependencies="true" variant="all" version="8.0.0-dev">
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 28 (current min is 26): `android.app.Person#getKey`">
+        <location
+            file="packages/apps/Launcher3/src/com/android/launcher3/notification/NotificationKeyData.java"
+            line="72"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 29 (current min is 26): `android.content.res.Resources#getFloat`">
+        <location
+            file="packages/apps/Launcher3/src/com/android/launcher3/util/DynamicResource.java"
+            line="73"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 30 (current min is 26): `android.graphics.Outline#setPath`">
+        <location
+            file="packages/apps/Launcher3/src/com/android/launcher3/popup/RoundedArrowDrawable.java"
+            line="114"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 30 (current min is 26): `android.view.View#getWindowInsetsController`">
+        <location
+            file="packages/apps/Launcher3/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java"
+            line="902"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 30 (current min is 26): `android.view.WindowInsets.Type#ime`">
+        <location
+            file="packages/apps/Launcher3/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java"
+            line="902"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 30 (current min is 26): `android.view.WindowInsetsController#hide`">
+        <location
+            file="packages/apps/Launcher3/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java"
+            line="902"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 31 (current min is 26): `android.appwidget.AppWidgetHostView#resetColorResources`">
+        <location
+            file="packages/apps/Launcher3/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java"
+            line="114"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 31 (current min is 30): `android.appwidget.AppWidgetHostView#setColorResources`">
+        <location
+            file="packages/apps/Launcher3/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java"
+            line="415"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Field requires API level 28 (current min is 26): `android.appwidget.AppWidgetProviderInfo#widgetFeatures`">
+        <location
+            file="packages/apps/Launcher3/src/com/android/launcher3/widget/WidgetAddFlowHandler.java"
+            line="93"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Field requires API level 29 (current min is 26): `android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_PAGE_LEFT`">
+        <location
+            file="packages/apps/Launcher3/src/com/android/launcher3/PagedView.java"
+            line="1814"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Field requires API level 29 (current min is 26): `android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_PAGE_LEFT`">
+        <location
+            file="packages/apps/Launcher3/src/com/android/launcher3/PagedView.java"
+            line="1824"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Field requires API level 29 (current min is 26): `android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_PAGE_RIGHT`">
+        <location
+            file="packages/apps/Launcher3/src/com/android/launcher3/PagedView.java"
+            line="1815"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Field requires API level 29 (current min is 26): `android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_PAGE_RIGHT`">
+        <location
+            file="packages/apps/Launcher3/src/com/android/launcher3/PagedView.java"
+            line="1823"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Method reference requires API level 28 (current min is 26): `Person::getKey`">
+        <location
+            file="packages/apps/Launcher3/src/com/android/launcher3/model/data/WorkspaceItemInfo.java"
+            line="195"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Method reference requires API level 28 (current min is 26): `Person::getKey`">
+        <location
+            file="packages/apps/Launcher3/src/com/android/launcher3/notification/NotificationKeyData.java"
+            line="73"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="`?android:attr/dialogCornerRadius` requires API level 28 (current min is 26)">
+        <location
+            file="packages/apps/Launcher3/res/drawable/add_item_dialog_background.xml"
+            line="6"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="`?android:attr/dialogCornerRadius` requires API level 28 (current min is 26)">
+        <location
+            file="packages/apps/Launcher3/res/drawable/add_item_dialog_background.xml"
+            line="7"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="`@android:dimen/system_app_widget_background_radius` requires API level 31 (current min is 26)">
+        <location
+            file="packages/apps/Launcher3/res/drawable/widget_resize_frame.xml"
+            line="20"/>
+    </issue>
+
+</issues>
\ No newline at end of file
diff --git a/proguard.flags b/proguard.flags
index a450183..31edd8d 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -2,10 +2,6 @@
   *;
 }
 
--keep class com.android.launcher3.graphics.ShadowDrawable {
-  public <init>(...);
-}
-
 # The support library contains references to newer platform versions.
 # Don't warn about those in case this app is linking against an older
 # platform version.  We know about them, and they are safe.
@@ -54,7 +50,7 @@
 -dontwarn com.android.internal.util.**
 
 ################ Do not optimize recents lib #############
--keep class com.android.systemui.** {
+-keep class com.android.systemui.shared.** {
   *;
 }
 
diff --git a/protos/launcher_atom.proto b/protos/launcher_atom.proto
index 10eedc8..63ea20c 100644
--- a/protos/launcher_atom.proto
+++ b/protos/launcher_atom.proto
@@ -45,6 +45,9 @@
 
   // Stores the origin of the Item
   repeated Attribute item_attributes = 12;
+
+  // Stores whether the navigation bar is in kids mode.
+  optional bool is_kids_mode = 13;
 }
 
 message LauncherAttributes{
@@ -125,10 +128,17 @@
 
   // Bit encoded value to capture pinned and predicted taskbar positions.
   optional int32 cardinality = 2;
+
+  // Container where taskbar was invoked.
+  oneof ParentContainer {
+    TaskSwitcherContainer task_switcher_container = 3;
+  }
 }
 
-// Next value 40
+// Next value 51
 enum Attribute {
+  option allow_alias = true;
+
   UNKNOWN = 0;
   DEFAULT_LAYOUT = 1;       // icon automatically placed in workspace, folder, hotseat
   BACKUP_RESTORE = 2;       // icon layout restored from backup
@@ -163,14 +173,27 @@
   ALL_APPS_SEARCH_RESULT_SLICE = 19;
   ALL_APPS_SEARCH_RESULT_WIDGETS = 20;
   ALL_APPS_SEARCH_RESULT_PLAY = 21;
-  ALL_APPS_SEARCH_RESULT_SUGGEST = 22;
+  ALL_APPS_SEARCH_RESULT_PLAY_GMS = 44;
+  ALL_APPS_SEARCH_RESULT_FALLBACK = 22;
+  ALL_APPS_SEARCH_RESULT_SUGGEST = 22 [deprecated = true];
   ALL_APPS_SEARCH_RESULT_ASSISTANT = 23;
   ALL_APPS_SEARCH_RESULT_CHROMETAB = 24;
-  ALL_APPS_SEARCH_RESULT_NAVVYSITE = 25;
+  ALL_APPS_SEARCH_RESULT_NAVVYSITE = 25 [deprecated = true];
   ALL_APPS_SEARCH_RESULT_TIPS = 26;
   ALL_APPS_SEARCH_RESULT_PEOPLE_TILE = 27;
   ALL_APPS_SEARCH_RESULT_LEGACY_SHORTCUT = 30;
   ALL_APPS_SEARCH_RESULT_ASSISTANT_MEMORY = 31;
+  ALL_APPS_SEARCH_RESULT_VIDEO = 41;
+  ALL_APPS_SEARCH_RESULT_SYSTEM_POINTER = 42;
+  ALL_APPS_SEARCH_RESULT_EDUCARD = 43;
+  ALL_APPS_SEARCH_RESULT_LOCATION = 50;
+
+  // Result sources
+  DATA_SOURCE_APPSEARCH_APP_PREVIEW = 45;
+  DATA_SOURCE_APPSEARCH_APP_SRP_PREVIEW = 46;
+  DATA_SOURCE_APPSEARCH_CATEGORY_SRP_PREVIEW = 48;
+  DATA_SOURCE_APPSEARCH_ENTITY_SRP_PREVIEW = 49;
+  DATA_SOURCE_AIAI_SEARCH_ROOT = 47;
 
   // Web suggestions provided by AGA
   ALL_APPS_SEARCH_RESULT_WEB_SUGGEST = 39;
@@ -183,6 +206,7 @@
   WEB_SEARCH_RESULT_PERSONAL = 36;
   WEB_SEARCH_RESULT_CALCULATOR = 37;
   WEB_SEARCH_RESULT_URL = 38;
+  WEB_SEARCH_RESULT_RICH_ANSWER = 40;
 
   WIDGETS_BOTTOM_TRAY = 28;
   WIDGETS_TRAY_PREDICTION = 29;
diff --git a/protos/launcher_trace.proto b/protos/launcher_trace.proto
index 65fcfe5..e5a86a0 100644
--- a/protos/launcher_trace.proto
+++ b/protos/launcher_trace.proto
@@ -63,5 +63,6 @@
         RECENTS = 2;
         NEW_TASK = 3;
         LAST_TASK = 4;
+        ALL_APPS = 5;
     }
 }
diff --git a/quickstep/Android.bp b/quickstep/Android.bp
index 70b1438..f5a8253 100644
--- a/quickstep/Android.bp
+++ b/quickstep/Android.bp
@@ -18,6 +18,11 @@
 }
 
 filegroup {
+    name: "launcher3-quickstep-manifest",
+    srcs: ["AndroidManifest.xml"],
+}
+
+filegroup {
     name: "launcher3-quickstep-robolectric-src",
     path: "robolectric_tests",
     srcs: ["robolectric_tests/src/**/*.java"],
@@ -26,13 +31,14 @@
 filegroup {
     name: "launcher3-quickstep-tests-src",
     path: "tests",
-    srcs: ["tests/src/**/*.java"],
+    srcs: ["tests/src/**/*.java", "tests/src/**/*.kt"],
 }
 
 filegroup {
     name: "launcher3-quickstep-oop-tests-src",
     path: "tests",
     srcs: [
+        "tests/src/com/android/quickstep/TaskbarModeSwitchRule.java",
         "tests/src/com/android/quickstep/NavigationModeSwitchRule.java",
         "tests/src/com/android/quickstep/AbstractQuickStepTest.java",
         "tests/src/com/android/quickstep/TaplTestsQuickstep.java",
diff --git a/quickstep/AndroidManifest.xml b/quickstep/AndroidManifest.xml
index 352cd3e..8e1baba 100644
--- a/quickstep/AndroidManifest.xml
+++ b/quickstep/AndroidManifest.xml
@@ -37,6 +37,7 @@
     <uses-permission android:name="android.permission.MANAGE_ACCESSIBILITY"/>
     <uses-permission android:name="android.permission.MONITOR_INPUT"/>
     <uses-permission android:name="android.permission.ALLOW_SLIPPERY_TOUCHES"/>
+    <uses-permission android:name="android.permission.ACCESS_SHORTCUTS"/>
 
     <uses-permission android:name="android.permission.SYSTEM_APPLICATION_OVERLAY" />
 
@@ -102,6 +103,7 @@
         <activity android:name="com.android.quickstep.interaction.GestureSandboxActivity"
             android:autoRemoveFromRecents="true"
             android:excludeFromRecents="true"
+            android:theme="@style/GestureTutorialActivity"
             android:exported="true">
             <intent-filter>
                 <action android:name="com.android.quickstep.action.GESTURE_SANDBOX"/>
diff --git a/quickstep/ext_tests/src/com/android/quickstep/DebugQuickstepTestInformationHandler.java b/quickstep/ext_tests/src/com/android/quickstep/DebugQuickstepTestInformationHandler.java
index e5f0295..0b17a7b 100644
--- a/quickstep/ext_tests/src/com/android/quickstep/DebugQuickstepTestInformationHandler.java
+++ b/quickstep/ext_tests/src/com/android/quickstep/DebugQuickstepTestInformationHandler.java
@@ -15,22 +15,13 @@
  */
 package com.android.quickstep;
 
-import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
-
 import android.content.Context;
-import android.content.res.Resources;
 import android.os.Bundle;
 
 import androidx.annotation.Nullable;
 
-import com.android.launcher3.BaseQuickstepLauncher;
-import com.android.launcher3.Launcher;
-import com.android.launcher3.R;
-import com.android.launcher3.taskbar.LauncherTaskbarUIController;
 import com.android.launcher3.testing.DebugTestInformationHandler;
-import com.android.launcher3.testing.TestProtocol;
-
-import java.util.concurrent.ExecutionException;
+import com.android.launcher3.testing.shared.TestProtocol;
 
 /**
  * Class to handle requests from tests, including debug ones, to Quickstep Launcher builds.
@@ -47,74 +38,14 @@
     @Override
     public Bundle call(String method, String arg, @Nullable Bundle extras) {
         Bundle response = new Bundle();
-        switch (method) {
-            case TestProtocol.REQUEST_ENABLE_MANUAL_TASKBAR_STASHING:
-                runOnUIThread(l -> {
-                    enableManualTaskbarStashing(l, true);
-                });
-                return response;
-
-            case TestProtocol.REQUEST_DISABLE_MANUAL_TASKBAR_STASHING:
-                runOnUIThread(l -> {
-                    enableManualTaskbarStashing(l, false);
-                });
-                return response;
-
-            case TestProtocol.REQUEST_UNSTASH_TASKBAR_IF_STASHED:
-                runOnUIThread(l -> {
-                    enableManualTaskbarStashing(l, true);
-
-                    BaseQuickstepLauncher quickstepLauncher = (BaseQuickstepLauncher) l;
-                    LauncherTaskbarUIController taskbarUIController =
-                            quickstepLauncher.getTaskbarUIController();
-
-                    // Allow null-pointer to catch illegal states.
-                    taskbarUIController.unstashTaskbarIfStashed();
-
-                    enableManualTaskbarStashing(l, false);
-                });
-                return response;
-
-            case TestProtocol.REQUEST_STASHED_TASKBAR_HEIGHT: {
-                final Resources resources = mContext.getResources();
-                response.putInt(TestProtocol.TEST_INFO_RESPONSE_FIELD,
-                        resources.getDimensionPixelSize(R.dimen.taskbar_stashed_size));
-                return response;
-            }
-
-            default:
-                response = super.call(method, arg, extras);
-                if (response != null) return response;
-                return mDebugTestInformationHandler.call(method, arg, extras);
+        if (TestProtocol.REQUEST_RECREATE_TASKBAR.equals(method)) {
+            // Allow null-pointer to catch illegal states.
+            runOnTISBinder(tisBinder -> tisBinder.getTaskbarManager().recreateTaskbar());
+            return response;
         }
-    }
-
-    private void enableManualTaskbarStashing(Launcher launcher, boolean enable) {
-        BaseQuickstepLauncher quickstepLauncher = (BaseQuickstepLauncher) launcher;
-        LauncherTaskbarUIController taskbarUIController =
-                quickstepLauncher.getTaskbarUIController();
-
-        // Allow null-pointer to catch illegal states.
-        taskbarUIController.enableManualStashingForTests(enable);
-    }
-
-    /**
-     * Runs the given command on the UI thread.
-     */
-    private static void runOnUIThread(UIThreadCommand command) {
-        try {
-            MAIN_EXECUTOR.submit(() -> {
-                command.execute(Launcher.ACTIVITY_TRACKER.getCreatedActivity());
-                return null;
-            }).get();
-        } catch (ExecutionException | InterruptedException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    private interface UIThreadCommand {
-
-        void execute(Launcher launcher);
+        response = super.call(method, arg, extras);
+        if (response != null) return response;
+        return mDebugTestInformationHandler.call(method, arg, extras);
     }
 }
 
diff --git a/res/drawable/ic_block_shadow.xml b/quickstep/res/color/all_set_bg_primary.xml
similarity index 62%
copy from res/drawable/ic_block_shadow.xml
copy to quickstep/res/color/all_set_bg_primary.xml
index 045fe8d..4cf857d 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/quickstep/res/color/all_set_bg_primary.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,7 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+    <item android:color="?androidprv:attr/materialColorPrimaryContainer"/>
+</selector>
diff --git a/res/drawable/ic_block_shadow.xml b/quickstep/res/color/all_set_bg_tertiary.xml
similarity index 62%
copy from res/drawable/ic_block_shadow.xml
copy to quickstep/res/color/all_set_bg_tertiary.xml
index 045fe8d..e62b094 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/quickstep/res/color/all_set_bg_tertiary.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,7 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+    <item android:color="?androidprv:attr/materialColorTertiary"/>
+</selector>
diff --git a/quickstep/res/color/menu_item_hover_state_color.xml b/quickstep/res/color/menu_item_hover_state_color.xml
new file mode 100644
index 0000000..1dd7654
--- /dev/null
+++ b/quickstep/res/color/menu_item_hover_state_color.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<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:color="?androidprv:attr/materialColorSurfaceBright" />
+    <item android:state_hovered="true" android:color="?androidprv:attr/materialColorSurfaceVariant" />
+</selector>
\ No newline at end of file
diff --git a/res/drawable/ic_setup_shadow.xml b/quickstep/res/color/taskbar_nav_icon_dark_color.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to quickstep/res/color/taskbar_nav_icon_dark_color.xml
index 10aeee6..7951e12 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/quickstep/res/color/taskbar_nav_icon_dark_color.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,6 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="@android:color/system_neutral2_700"/>
+</selector>
diff --git a/res/drawable/ic_setup_shadow.xml b/quickstep/res/color/taskbar_nav_icon_light_color.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to quickstep/res/color/taskbar_nav_icon_light_color.xml
index 10aeee6..cc8e3b3 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/quickstep/res/color/taskbar_nav_icon_light_color.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,6 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="@android:color/system_neutral2_200"/>
+</selector>
diff --git a/quickstep/res/drawable-sw600dp-land/gesture_tutorial_back_step_shape.xml b/quickstep/res/drawable-sw600dp-land/gesture_tutorial_back_step_shape.xml
new file mode 100644
index 0000000..a07aeaa
--- /dev/null
+++ b/quickstep/res/drawable-sw600dp-land/gesture_tutorial_back_step_shape.xml
@@ -0,0 +1,23 @@
+<!-- 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="84dp"
+    android:height="208dp"
+    android:viewportWidth="84"
+    android:viewportHeight="208">
+  <path
+      android:pathData="M24.53,169.2L32.09,165.56C77.7,143.55 77.7,64.45 32.09,42.35L24.53,38.71C14.55,33.95 6.06,25.56 0,14.92V193.08C6.06,182.44 14.55,174.05 24.53,169.2Z"
+      android:fillColor="?attr/onSurfaceBack"/>
+</vector>
diff --git a/quickstep/res/drawable-sw600dp-land/gesture_tutorial_home_step_shape.xml b/quickstep/res/drawable-sw600dp-land/gesture_tutorial_home_step_shape.xml
new file mode 100644
index 0000000..6839718
--- /dev/null
+++ b/quickstep/res/drawable-sw600dp-land/gesture_tutorial_home_step_shape.xml
@@ -0,0 +1,23 @@
+<!-- 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="232dp"
+    android:height="67dp"
+    android:viewportWidth="232"
+    android:viewportHeight="67">
+  <path
+      android:pathData="M180.9,0.6H51.1C22.9,0.6 0,23.4 0,51.7V67.6H232V51.7C232,23.4 209.1,0.6 180.9,0.6Z"
+      android:fillColor="?attr/onSurfaceHome"/>
+</vector>
diff --git a/quickstep/res/drawable-sw600dp-land/gesture_tutorial_overview_step_shape.xml b/quickstep/res/drawable-sw600dp-land/gesture_tutorial_overview_step_shape.xml
new file mode 100644
index 0000000..4111718
--- /dev/null
+++ b/quickstep/res/drawable-sw600dp-land/gesture_tutorial_overview_step_shape.xml
@@ -0,0 +1,23 @@
+<!-- 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="194dp"
+    android:height="94dp"
+    android:viewportWidth="194"
+    android:viewportHeight="94">
+  <path
+      android:pathData="M185.56,76.95C184.79,75.3 184.3,73.56 184.21,71.81L182.85,55.81C182.46,51.34 180.13,47.27 176.45,44.65L163.25,35.44C161.8,34.37 160.54,33.11 159.47,31.65L150.16,18.46C147.54,14.77 143.47,12.45 139,12.06L123,10.6C121.25,10.41 119.51,10.02 117.86,9.24L103.31,2.45C101.27,1.49 99.04,1 96.91,1C94.77,1 92.54,1.49 90.5,2.45L75.95,9.24C74.31,10.02 72.56,10.51 70.81,10.6L54.81,11.96C50.35,12.35 46.27,14.68 43.65,18.36L34.44,31.56C33.37,33.01 32.11,34.27 30.66,35.34L17.27,44.65C13.58,47.27 11.26,51.34 10.87,55.81L9.41,71.81C9.22,73.56 8.83,75.3 8.05,76.95L1.26,91.5C0.78,92.67 0.39,93.83 0.1,94.99H193.52C193.32,93.83 192.94,92.57 192.35,91.5L185.56,76.95Z"
+      android:fillColor="?attr/onSurfaceOverview"/>
+</vector>
diff --git a/quickstep/res/drawable-sw720dp-land/gesture_tutorial_back_step_shape.xml b/quickstep/res/drawable-sw720dp-land/gesture_tutorial_back_step_shape.xml
new file mode 100644
index 0000000..e20458e
--- /dev/null
+++ b/quickstep/res/drawable-sw720dp-land/gesture_tutorial_back_step_shape.xml
@@ -0,0 +1,23 @@
+<!-- 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="122dp"
+    android:height="303dp"
+    android:viewportWidth="122"
+    android:viewportHeight="303">
+  <path
+      android:pathData="M35.65,245.9L46.63,240.61C112.92,208.62 112.92,93.67 46.63,61.54L35.65,56.26C21.15,49.34 8.81,37.14 0,21.69V280.6C8.81,265.15 21.15,252.95 35.65,245.9Z"
+      android:fillColor="?attr/onSurfaceBack"/>
+</vector>
diff --git a/quickstep/res/drawable-sw720dp-land/gesture_tutorial_home_step_shape.xml b/quickstep/res/drawable-sw720dp-land/gesture_tutorial_home_step_shape.xml
new file mode 100644
index 0000000..0c050ca
--- /dev/null
+++ b/quickstep/res/drawable-sw720dp-land/gesture_tutorial_home_step_shape.xml
@@ -0,0 +1,23 @@
+<!-- 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="362dp"
+    android:height="73dp"
+    android:viewportWidth="362"
+    android:viewportHeight="73">
+  <path
+      android:pathData="M282.3,0H79.7C38,0 3.7,32.1 0.3,73H361.7C358.3,32.1 324,0 282.3,0Z"
+      android:fillColor="?attr/onSurfaceHome"/>
+</vector>
diff --git a/quickstep/res/drawable-sw720dp-land/gesture_tutorial_overview_step_shape.xml b/quickstep/res/drawable-sw720dp-land/gesture_tutorial_overview_step_shape.xml
new file mode 100644
index 0000000..d012897
--- /dev/null
+++ b/quickstep/res/drawable-sw720dp-land/gesture_tutorial_overview_step_shape.xml
@@ -0,0 +1,23 @@
+<!-- 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="297dp"
+    android:height="144dp"
+    android:viewportWidth="297"
+    android:viewportHeight="144">
+  <path
+      android:pathData="M284.38,116.48C283.19,113.95 282.45,111.28 282.3,108.61L280.22,84.1C279.63,77.27 276.06,71.03 270.42,67.03L250.22,52.92C247.99,51.28 246.06,49.35 244.43,47.13L230.18,26.93C226.16,21.29 219.93,17.72 213.1,17.13L188.6,14.9C185.92,14.6 183.25,14.01 180.72,12.82L158.45,2.43C155.33,0.94 151.91,0.2 148.65,0.2C145.38,0.2 141.97,0.94 138.85,2.43L116.57,12.82C114.05,14.01 111.38,14.75 108.7,14.9L84.2,16.98C77.37,17.57 71.13,21.14 67.12,26.78L53.01,46.98C51.38,49.21 49.45,51.14 47.22,52.77L26.73,67.03C21.09,71.03 17.52,77.27 16.93,84.1L14.7,108.61C14.4,111.28 13.81,113.95 12.62,116.48L2.23,138.75C1.48,140.53 0.89,142.32 0.45,144.1H296.55C296.26,142.32 295.66,140.38 294.77,138.75L284.38,116.48Z"
+      android:fillColor="?attr/onSurfaceOverview"/>
+</vector>
diff --git a/quickstep/res/drawable-v28/gesture_tutorial_action_button_background.xml b/quickstep/res/drawable-v28/gesture_tutorial_action_button_background.xml
index 710482f..f1c6e64 100644
--- a/quickstep/res/drawable-v28/gesture_tutorial_action_button_background.xml
+++ b/quickstep/res/drawable-v28/gesture_tutorial_action_button_background.xml
@@ -16,5 +16,4 @@
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
     <corners android:radius="?android:attr/dialogCornerRadius"/>
-    <solid android:color="?android:attr/colorAccent"/>
 </shape>
\ No newline at end of file
diff --git a/quickstep/res/drawable/bg_overview_clear_all_button.xml b/quickstep/res/drawable/bg_overview_clear_all_button.xml
index fb014f7..f3ff6ce 100644
--- a/quickstep/res/drawable/bg_overview_clear_all_button.xml
+++ b/quickstep/res/drawable/bg_overview_clear_all_button.xml
@@ -21,7 +21,7 @@
         <shape android:shape="rectangle"
             android:tint="?colorButtonNormal">
             <corners android:radius="24dp" />
-            <solid android:color="?androidprv:attr/colorSurface"/>
+            <solid android:color="?androidprv:attr/materialColorSurfaceBright"/>
         </shape>
     </item>
 </ripple>
\ No newline at end of file
diff --git a/quickstep/res/drawable/bg_taskbar_edu_tooltip.xml b/quickstep/res/drawable/bg_taskbar_edu_tooltip.xml
new file mode 100644
index 0000000..20c524d
--- /dev/null
+++ b/quickstep/res/drawable/bg_taskbar_edu_tooltip.xml
@@ -0,0 +1,22 @@
+<?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.
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+    android:shape="rectangle">
+
+    <corners android:radius="@dimen/dialogCornerRadius" />
+    <solid android:color="?androidprv:attr/materialColorSurfaceBright"/>
+</shape>
\ No newline at end of file
diff --git a/quickstep/res/drawable/bg_wellbeing_toast.xml b/quickstep/res/drawable/bg_wellbeing_toast.xml
index 4dc981f..0b66849 100644
--- a/quickstep/res/drawable/bg_wellbeing_toast.xml
+++ b/quickstep/res/drawable/bg_wellbeing_toast.xml
@@ -14,8 +14,8 @@
      limitations under the License.
 -->
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:priv-android="http://schemas.android.com/apk/prv/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
     android:shape="rectangle">
-    <solid android:color="?priv-android:attr/colorAccentPrimary" />
+    <solid android:color="?androidprv:attr/materialColorSecondaryFixed" />
     <corners android:radius="?android:attr/dialogCornerRadius" />
 </shape>
\ No newline at end of file
diff --git a/quickstep/res/drawable/button_taskbar_edu_colored.xml b/quickstep/res/drawable/button_taskbar_edu_colored.xml
index 70bfc9f..a94a996 100644
--- a/quickstep/res/drawable/button_taskbar_edu_colored.xml
+++ b/quickstep/res/drawable/button_taskbar_edu_colored.xml
@@ -15,14 +15,13 @@
 -->
 
 <inset
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+    xmlns:android="http://schemas.android.com/apk/res/android">
     <ripple
         android:color="?android:attr/colorControlHighlight">
         <item>
             <shape android:shape="rectangle">
                 <corners android:radius="16dp"/>
-                <solid android:color="?androidprv:attr/colorAccentPrimary"/>
+                <solid android:color="@color/taskbar_edu_button_color"/>
             </shape>
         </item>
     </ripple>
diff --git a/quickstep/res/drawable/close_icon.xml b/quickstep/res/drawable/close_icon.xml
deleted file mode 100644
index 07f4336..0000000
--- a/quickstep/res/drawable/close_icon.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="#909090"
-      android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
-</vector>
diff --git a/quickstep/res/drawable/gesture_tutorial_action_button_background.xml b/quickstep/res/drawable/gesture_tutorial_action_button_background.xml
index 98dc1a5..0adeb1d 100644
--- a/quickstep/res/drawable/gesture_tutorial_action_button_background.xml
+++ b/quickstep/res/drawable/gesture_tutorial_action_button_background.xml
@@ -13,7 +13,8 @@
     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">
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
     <item>
         <shape
             android:id="@android:id/mask"
@@ -25,7 +26,7 @@
         <shape
             android:shape="rectangle">
             <corners android:radius="50dp"/>
-            <solid android:color="?android:attr/colorAccent"/>
+            <solid android:color="@android:color/white"/>
         </shape>
     </item>
 </layer-list>
\ No newline at end of file
diff --git a/quickstep/res/drawable/gesture_tutorial_back_step_shape.xml b/quickstep/res/drawable/gesture_tutorial_back_step_shape.xml
new file mode 100644
index 0000000..9389340
--- /dev/null
+++ b/quickstep/res/drawable/gesture_tutorial_back_step_shape.xml
@@ -0,0 +1,23 @@
+<!-- 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="83dp"
+    android:height="208dp"
+    android:viewportWidth="83"
+    android:viewportHeight="208">
+  <path
+      android:pathData="M23.53,169.2L31.09,165.56C76.7,143.55 76.7,64.45 31.09,42.35L23.53,38.71C13.55,33.95 5.06,25.56 -1,14.92V193.08C5.06,182.44 13.55,174.05 23.53,169.2Z"
+      android:fillColor="?attr/onSurfaceBack"/>
+</vector>
diff --git a/quickstep/res/drawable/gesture_tutorial_complete_checkmark.xml b/quickstep/res/drawable/gesture_tutorial_complete_checkmark.xml
new file mode 100644
index 0000000..254d6d5
--- /dev/null
+++ b/quickstep/res/drawable/gesture_tutorial_complete_checkmark.xml
@@ -0,0 +1,23 @@
+<?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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="48dp"
+    android:height="48dp"
+    android:tint="?attr/colorControlNormal"
+    android:viewportHeight="24"
+    android:viewportWidth="24">
+    <path
+        android:fillColor="@android:color/black"
+        android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41L9,16.17z" />
+</vector>
diff --git a/quickstep/res/drawable/gesture_tutorial_complete_checkmark_bg.xml b/quickstep/res/drawable/gesture_tutorial_complete_checkmark_bg.xml
new file mode 100644
index 0000000..d6a6686
--- /dev/null
+++ b/quickstep/res/drawable/gesture_tutorial_complete_checkmark_bg.xml
@@ -0,0 +1,28 @@
+<?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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="148dp"
+    android:height="148dp"
+    android:viewportHeight="148"
+    android:viewportWidth="148">
+
+    <group>
+        <clip-path android:pathData="M74 0C114.869 0 148 33.1309 148 74C148 114.869 114.869 148 74 148C33.1309 148 0 114.869 0 74C0 33.1309 33.1309 0 74 0Z" />
+
+        <path
+            android:fillColor="#E0E994"
+            android:pathData="M0 0V148H148V0" />
+    </group>
+
+</vector>
diff --git a/quickstep/res/drawable/gesture_tutorial_home_step_shape.xml b/quickstep/res/drawable/gesture_tutorial_home_step_shape.xml
new file mode 100644
index 0000000..f04a38e
--- /dev/null
+++ b/quickstep/res/drawable/gesture_tutorial_home_step_shape.xml
@@ -0,0 +1,23 @@
+<!-- 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="364dp"
+    android:height="66dp"
+    android:viewportWidth="364"
+    android:viewportHeight="66">
+  <path
+      android:pathData="M283.8,0H80.2C40.7,0 8,28.5 1.3,66H362.8C356,28.5 323.3,0 283.8,0Z"
+      android:fillColor="?attr/onSurfaceHome"/>
+</vector>
diff --git a/res/drawable/ic_block_shadow.xml b/quickstep/res/drawable/gesture_tutorial_menu_back_button_background.xml
similarity index 65%
copy from res/drawable/ic_block_shadow.xml
copy to quickstep/res/drawable/gesture_tutorial_menu_back_button_background.xml
index 045fe8d..f83ee7f 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/quickstep/res/drawable/gesture_tutorial_menu_back_button_background.xml
@@ -1,11 +1,10 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +12,9 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
+<shape
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+    android:shape="rectangle">
+    <solid android:color="?attr/surfaceBack" />
+    <corners android:radius="@dimen/gesture_tutorial_menu_button_radius" />
+</shape>
diff --git a/res/drawable/ic_block_shadow.xml b/quickstep/res/drawable/gesture_tutorial_menu_home_button_background.xml
similarity index 65%
copy from res/drawable/ic_block_shadow.xml
copy to quickstep/res/drawable/gesture_tutorial_menu_home_button_background.xml
index 045fe8d..a0833dd 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/quickstep/res/drawable/gesture_tutorial_menu_home_button_background.xml
@@ -1,11 +1,10 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +12,9 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
+<shape
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+    android:shape="rectangle">
+    <solid android:color="?attr/surfaceHome" />
+    <corners android:radius="@dimen/gesture_tutorial_menu_button_radius" />
+</shape>
diff --git a/res/drawable/ic_block_shadow.xml b/quickstep/res/drawable/gesture_tutorial_menu_overview_button_background.xml
similarity index 65%
copy from res/drawable/ic_block_shadow.xml
copy to quickstep/res/drawable/gesture_tutorial_menu_overview_button_background.xml
index 045fe8d..3d37f05 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/quickstep/res/drawable/gesture_tutorial_menu_overview_button_background.xml
@@ -1,11 +1,10 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +12,9 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
+<shape
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+    android:shape="rectangle">
+    <solid android:color="?attr/surfaceOverview" />
+    <corners android:radius="@dimen/gesture_tutorial_menu_button_radius" />
+</shape>
diff --git a/quickstep/res/drawable/gesture_tutorial_overview_step_shape.xml b/quickstep/res/drawable/gesture_tutorial_overview_step_shape.xml
new file mode 100644
index 0000000..97a129d
--- /dev/null
+++ b/quickstep/res/drawable/gesture_tutorial_overview_step_shape.xml
@@ -0,0 +1,23 @@
+<!-- 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="200dp"
+    android:height="76dp"
+    android:viewportWidth="200"
+    android:viewportHeight="76">
+  <path
+      android:pathData="M188.6,56.5C188.2,51.9 185.8,47.7 182,45L168.4,35.5C166.9,34.4 165.6,33.1 164.5,31.6L155,18C152.3,14.2 148.1,11.8 143.5,11.4L127,9.9C125.2,9.7 123.4,9.3 121.7,8.5L106.7,1.5C104.6,0.5 102.3,0 100.1,0C97.8,0 95.6,0.5 93.5,1.5L78.5,8.5C76.8,9.3 75,9.8 73.2,9.9L56.7,11.3C52.1,11.7 47.9,14.1 45.2,17.9L35.7,31.5C34.6,33 33.3,34.3 31.8,35.4L18,45C14.2,47.7 11.8,51.9 11.4,56.5L9.9,73C9.8,74 9.6,75 9.3,76H190.6C190.3,75 190.1,74 190,73L188.6,56.5Z"
+      android:fillColor="?attr/onSurfaceOverview"/>
+</vector>
diff --git a/res/drawable/ic_block_shadow.xml b/quickstep/res/drawable/hotseat_icon.xml
similarity index 67%
copy from res/drawable/ic_block_shadow.xml
copy to quickstep/res/drawable/hotseat_icon.xml
index 045fe8d..b849fe9 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/quickstep/res/drawable/hotseat_icon.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,9 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
+<shape
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+    android:shape="rectangle">
+    <solid android:color="@color/mock_app_icon" />
+    <corners android:radius="@dimen/gesture_tutorial_hotseat_icon_corner_radius" />
+</shape>
\ No newline at end of file
diff --git a/res/drawable/ic_block_shadow.xml b/quickstep/res/drawable/hotseat_search_bar.xml
similarity index 67%
copy from res/drawable/ic_block_shadow.xml
copy to quickstep/res/drawable/hotseat_search_bar.xml
index 045fe8d..ea332e9 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/quickstep/res/drawable/hotseat_search_bar.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,9 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
+<shape
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+    android:shape="rectangle">
+    <solid android:color="@color/mock_search_bar" />
+    <corners android:radius="@dimen/gesture_tutorial_hotseat_search_corner_radius" />
+</shape>
\ No newline at end of file
diff --git a/quickstep/res/drawable/ic_desktop.xml b/quickstep/res/drawable/ic_desktop.xml
new file mode 100644
index 0000000..8de275d
--- /dev/null
+++ b/quickstep/res/drawable/ic_desktop.xml
@@ -0,0 +1,31 @@
+<?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.
+  -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32.0dp"
+    android:height="32.0dp"
+    android:viewportWidth="32.0"
+    android:viewportHeight="32.0"
+    >
+    <group android:scaleX="0.5"
+        android:scaleY="0.5"
+        android:translateX="6.0"
+        android:translateY="6.0">
+        <path
+            android:fillColor="@android:color/black"
+            android:pathData="M5.958,37.708Q4.458,37.708 3.354,36.604Q2.25,35.5 2.25,34V18.292Q2.25,16.792 3.354,15.688Q4.458,14.583 5.958,14.583H9.5V5.958Q9.5,4.458 10.625,3.354Q11.75,2.25 13.208,2.25H34Q35.542,2.25 36.646,3.354Q37.75,4.458 37.75,5.958V21.667Q37.75,23.167 36.646,24.271Q35.542,25.375 34,25.375H30.5V34Q30.5,35.5 29.396,36.604Q28.292,37.708 26.792,37.708ZM5.958,34H26.792Q26.792,34 26.792,34Q26.792,34 26.792,34V21.542H5.958V34Q5.958,34 5.958,34Q5.958,34 5.958,34ZM30.5,21.667H34Q34,21.667 34,21.667Q34,21.667 34,21.667V9.208H13.208V14.583H26.833Q28.375,14.583 29.438,15.667Q30.5,16.75 30.5,18.25Z"/>
+    </group>
+</vector>
diff --git a/quickstep/res/drawable/ic_save_app_pair.xml b/quickstep/res/drawable/ic_save_app_pair.xml
new file mode 100644
index 0000000..4a7ee1a
--- /dev/null
+++ b/quickstep/res/drawable/ic_save_app_pair.xml
@@ -0,0 +1,28 @@
+<?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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:pathData="M13.329,2.305H4.242C2.751,2.305 1.542,3.514 1.542,5.005V13.005C1.542,14.496 2.751,15.705 4.242,15.705H7.875V19.011C7.875,20.502 9.084,21.711 10.575,21.711H19.662C21.153,21.711 22.362,20.502 22.362,19.011V10.011C22.362,8.52 21.153,7.311 19.662,7.311H16.029V5.005C16.029,3.514 14.821,2.305 13.329,2.305ZM14.329,7.311V5.005C14.329,4.452 13.882,4.005 13.329,4.005H4.242C3.69,4.005 3.242,4.452 3.242,5.005V13.005C3.242,13.557 3.69,14.005 4.242,14.005H7.875V10.011C7.875,8.52 9.084,7.311 10.575,7.311H14.329ZM9.575,14.005V10.011C9.575,9.611 9.81,9.266 10.15,9.106C10.285,9.037 10.438,8.999 10.6,8.999H19.687C20.239,8.999 20.687,9.447 20.687,9.999V18.999C20.687,19.399 20.452,19.744 20.113,19.904C19.977,19.972 19.824,20.011 19.662,20.011H10.575C10.023,20.011 9.575,19.563 9.575,19.011V15.705H9.6V14.005H9.575ZM15.542,11.996V14H17.588V15H15.542V16.996H14.542V15H12.464V14H14.542V11.996H15.542Z"
+      android:fillColor="#000000"
+      android:fillType="evenOdd"/>
+</vector>
diff --git a/quickstep/res/drawable/ic_sysbar_back.xml b/quickstep/res/drawable/ic_sysbar_back.xml
index 1eea677..7d2bdee 100644
--- a/quickstep/res/drawable/ic_sysbar_back.xml
+++ b/quickstep/res/drawable/ic_sysbar_back.xml
@@ -16,13 +16,13 @@
   -->
 
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="28dp"
-    android:height="28dp"
+    android:width="20dp"
+    android:height="20dp"
     android:autoMirrored="true"
-    android:viewportWidth="28"
-    android:viewportHeight="28">
+    android:viewportWidth="20"
+    android:viewportHeight="20">
 
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M6.49,14.86c-0.66-0.39-0.66-1.34,0-1.73l6.02-3.53l5.89-3.46C19.11,5.73,20,6.26,20,7.1V14v6.9 c0,0.84-0.89,1.37-1.6,0.95l-5.89-3.46L6.49,14.86z" />
+        android:pathData="M15.5417 1.66669C15.1833 1.66669 14.8417 1.76669 14.5333 1.94169L3.21667 8.74169C2.775 9.00002 2.5 9.48335 2.5 10C2.5 10.5167 2.775 11 3.21667 11.2584L14.5333 18.05C14.8417 18.2334 15.1833 18.325 15.5417 18.325C16.625 18.325 17.5 17.45 17.5 16.3667V3.62502C17.5 2.54169 16.625 1.66669 15.5417 1.66669Z" />
 </vector>
\ No newline at end of file
diff --git a/quickstep/res/drawable/ic_sysbar_back_kids.xml b/quickstep/res/drawable/ic_sysbar_back_kids.xml
index ac6d49b..e7bba67 100644
--- a/quickstep/res/drawable/ic_sysbar_back_kids.xml
+++ b/quickstep/res/drawable/ic_sysbar_back_kids.xml
@@ -1,6 +1,7 @@
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
     android:height="24dp"
+    android:autoMirrored="true"
     android:viewportWidth="24"
     android:viewportHeight="24">
   <path
diff --git a/quickstep/res/drawable/ic_sysbar_home.xml b/quickstep/res/drawable/ic_sysbar_home.xml
index b4b397b..987f2f6 100644
--- a/quickstep/res/drawable/ic_sysbar_home.xml
+++ b/quickstep/res/drawable/ic_sysbar_home.xml
@@ -16,12 +16,12 @@
   -->
 
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="28dp"
-    android:height="28dp"
-    android:viewportWidth="28"
-    android:viewportHeight="28">
+    android:width="20dp"
+    android:height="20dp"
+    android:viewportWidth="20"
+    android:viewportHeight="20">
 
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M 14 7 C 17.8659932488 7 21 10.1340067512 21 14 C 21 17.8659932488 17.8659932488 21 14 21 C 10.1340067512 21 7 17.8659932488 7 14 C 7 10.1340067512 10.1340067512 7 14 7 Z" />
+        android:pathData="M10.0001 18.3334C5.40008 18.3334 1.66675 14.6 1.66675 10C1.66675 5.40002 5.40008 1.66669 10.0001 1.66669C14.6001 1.66669 18.3334 5.40002 18.3334 10C18.3334 14.6 14.6001 18.3334 10.0001 18.3334Z" />
 </vector>
\ No newline at end of file
diff --git a/quickstep/res/drawable/ic_sysbar_recent.xml b/quickstep/res/drawable/ic_sysbar_recent.xml
index f8c4778..26c4dc8 100644
--- a/quickstep/res/drawable/ic_sysbar_recent.xml
+++ b/quickstep/res/drawable/ic_sysbar_recent.xml
@@ -16,12 +16,12 @@
   -->
 
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="28dp"
-    android:height="28dp"
-    android:viewportWidth="28"
-    android:viewportHeight="28">
+    android:width="20dp"
+    android:height="20dp"
+    android:viewportWidth="20"
+    android:viewportHeight="20">
 
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M19.9,21.5H8.1c-0.88,0-1.6-0.72-1.6-1.6V8.1c0-0.88,0.72-1.6,1.6-1.6h11.8c0.88,0,1.6,0.72,1.6,1.6v11.8 C21.5,20.78,20.78,21.5,19.9,21.5z" />
+        android:pathData="M4.47634 2.5H15.5241C16.6164 2.5 17.5002 3.38382 17.5002 4.4761V15.5239C17.5002 16.6162 16.6164 17.5 15.5241 17.5H4.47634C3.38407 17.5 2.50024 16.6162 2.50024 15.5239V4.4761C2.50024 3.38382 3.38407 2.5 4.47634 2.5Z" />
 </vector>
\ No newline at end of file
diff --git a/res/drawable/ic_block_shadow.xml b/quickstep/res/drawable/keyboard_quick_switch_overview_button_background.xml
similarity index 61%
copy from res/drawable/ic_block_shadow.xml
copy to quickstep/res/drawable/keyboard_quick_switch_overview_button_background.xml
index 045fe8d..2a4f087 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/quickstep/res/drawable/keyboard_quick_switch_overview_button_background.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,10 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
+<shape
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+    android:shape="rectangle">
+    <solid android:color="?androidprv:attr/materialColorSurfaceBright" />
+    <corners android:radius="@dimen/keyboard_quick_switch_task_view_radius" />
+</shape>
diff --git a/res/drawable/ic_block_shadow.xml b/quickstep/res/drawable/keyboard_quick_switch_task_view_background.xml
similarity index 67%
copy from res/drawable/ic_block_shadow.xml
copy to quickstep/res/drawable/keyboard_quick_switch_task_view_background.xml
index 045fe8d..d0aac8c 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/quickstep/res/drawable/keyboard_quick_switch_task_view_background.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,9 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
+<shape
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+    android:shape="rectangle">
+    <solid android:color="@android:color/transparent" />
+    <corners android:radius="@dimen/keyboard_quick_switch_task_view_radius" />
+</shape>
diff --git a/res/drawable/ic_block_shadow.xml b/quickstep/res/drawable/keyboard_quick_switch_view_background.xml
similarity index 68%
copy from res/drawable/ic_block_shadow.xml
copy to quickstep/res/drawable/keyboard_quick_switch_view_background.xml
index 045fe8d..19aaed4 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/quickstep/res/drawable/keyboard_quick_switch_view_background.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,9 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
+<shape
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+    android:shape="rectangle">
+    <solid android:color="?attr/overviewScrimColor" />
+    <corners android:radius="@dimen/keyboard_quick_switch_view_radius" />
+</shape>
diff --git a/res/drawable/ic_block_shadow.xml b/quickstep/res/drawable/mock_app_icon.xml
similarity index 67%
copy from res/drawable/ic_block_shadow.xml
copy to quickstep/res/drawable/mock_app_icon.xml
index 045fe8d..92cdea3 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/quickstep/res/drawable/mock_app_icon.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,9 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
+<shape
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+    android:shape="rectangle">
+    <solid android:color="@color/mock_app_icon" />
+    <corners android:radius="@dimen/gesture_tutorial_taskbar_icon_corner_radius" />
+</shape>
\ No newline at end of file
diff --git a/res/drawable/ic_block_shadow.xml b/quickstep/res/drawable/mock_taskbar_background.xml
similarity index 66%
copy from res/drawable/ic_block_shadow.xml
copy to quickstep/res/drawable/mock_taskbar_background.xml
index 045fe8d..8ac9080 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/quickstep/res/drawable/mock_taskbar_background.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,9 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
+<shape
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+    android:shape="rectangle">
+    <solid android:color="@color/gesture_tutorial_taskbar_color" />
+    <corners android:radius="@dimen/gesture_tutorial_taskbar_corner_radius" />
+</shape>
\ No newline at end of file
diff --git a/res/drawable/ic_setup_shadow.xml b/quickstep/res/drawable/redesigned_hotseat_icon.xml
similarity index 70%
rename from res/drawable/ic_setup_shadow.xml
rename to quickstep/res/drawable/redesigned_hotseat_icon.xml
index 10aeee6..535756d 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/quickstep/res/drawable/redesigned_hotseat_icon.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,8 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
+<shape
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+    android:shape="rectangle">
+    <corners android:radius="@dimen/gesture_tutorial_hotseat_icon_corner_radius" />
+</shape>
\ No newline at end of file
diff --git a/res/drawable/ic_block_shadow.xml b/quickstep/res/drawable/redesigned_top_task_view.xml
similarity index 67%
copy from res/drawable/ic_block_shadow.xml
copy to quickstep/res/drawable/redesigned_top_task_view.xml
index 045fe8d..2c136de 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/quickstep/res/drawable/redesigned_top_task_view.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,9 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
+<shape
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+    android:shape="rectangle">
+    <solid android:color="?attr/surfaceContainer" />
+    <corners android:radius="@dimen/gesture_tutorial_small_task_view_corner_radius" />
+</shape>
\ No newline at end of file
diff --git a/quickstep/res/drawable/split_instructions_background.xml b/quickstep/res/drawable/split_instructions_background.xml
new file mode 100644
index 0000000..6d0e7db
--- /dev/null
+++ b/quickstep/res/drawable/split_instructions_background.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<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="?androidprv:attr/colorAccentPrimary" />
+    <corners android:radius="@dimen/split_instructions_radius" />
+</shape>
\ No newline at end of file
diff --git a/quickstep/res/drawable/task_menu_item_bg.xml b/quickstep/res/drawable/task_menu_item_bg.xml
index 16c13eb..588fe9e 100644
--- a/quickstep/res/drawable/task_menu_item_bg.xml
+++ b/quickstep/res/drawable/task_menu_item_bg.xml
@@ -15,8 +15,7 @@
      limitations under the License.
 -->
 
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
-    <solid android:color="?androidprv:attr/colorSurface" />
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/menu_item_hover_state_color" />
     <corners android:radius="@dimen/task_menu_item_corner_radius" />
 </shape>
diff --git a/res/drawable/ic_setup_shadow.xml b/quickstep/res/drawable/taskbar_divider_bg.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to quickstep/res/drawable/taskbar_divider_bg.xml
index 10aeee6..52e230d 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/quickstep/res/drawable/taskbar_divider_bg.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,8 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle" >
+    <solid android:color="@color/taskbar_divider_background"/>
+    <corners android:radius="1dp" />
+</shape>
diff --git a/quickstep/res/drawable/taskbar_edu_splitscreen.png b/quickstep/res/drawable/taskbar_edu_splitscreen.png
deleted file mode 100644
index f9d2a63..0000000
--- a/quickstep/res/drawable/taskbar_edu_splitscreen.png
+++ /dev/null
Binary files differ
diff --git a/quickstep/res/drawable/taskbar_edu_stashing.png b/quickstep/res/drawable/taskbar_edu_stashing.png
deleted file mode 100644
index f9d2a63..0000000
--- a/quickstep/res/drawable/taskbar_edu_stashing.png
+++ /dev/null
Binary files differ
diff --git a/quickstep/res/drawable/taskbar_edu_switch_apps.png b/quickstep/res/drawable/taskbar_edu_switch_apps.png
deleted file mode 100644
index f9d2a63..0000000
--- a/quickstep/res/drawable/taskbar_edu_switch_apps.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_block_shadow.xml b/quickstep/res/drawable/top_task_view.xml
similarity index 65%
copy from res/drawable/ic_block_shadow.xml
copy to quickstep/res/drawable/top_task_view.xml
index 045fe8d..d2176c3 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/quickstep/res/drawable/top_task_view.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,9 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
+<shape
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+    android:shape="rectangle">
+    <solid android:color="@color/gesture_tutorial_fake_previous_task_view_color" />
+    <corners android:radius="@dimen/gesture_tutorial_small_task_view_corner_radius" />
+</shape>
\ No newline at end of file
diff --git a/quickstep/res/layout-land/gesture_tutorial_mock_hotseat.xml b/quickstep/res/layout-land/gesture_tutorial_mock_hotseat.xml
index 20d2ecc..c7e176a 100644
--- a/quickstep/res/layout-land/gesture_tutorial_mock_hotseat.xml
+++ b/quickstep/res/layout-land/gesture_tutorial_mock_hotseat.xml
@@ -24,54 +24,50 @@
     android:paddingStart="56dp"
     android:paddingEnd="56dp">
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_icon_1"
         android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/hotseat_icon"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_1"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintVertical_chainStyle="spread_inside"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintBottom_toTopOf="@id/hotseat_icon_2"
         app:layout_constraintStart_toStartOf="parent"/>
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_icon_2"
         android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/hotseat_icon"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_2"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toBottomOf="@id/hotseat_icon_1"
         app:layout_constraintBottom_toTopOf="@id/hotseat_icon_3"
         app:layout_constraintStart_toStartOf="parent"/>
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_icon_3"
         android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/hotseat_icon"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_3"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toBottomOf="@id/hotseat_icon_2"
         app:layout_constraintBottom_toTopOf="@id/hotseat_icon_4"
         app:layout_constraintStart_toStartOf="parent"/>
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_icon_4"
         android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/hotseat_icon"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_4"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toBottomOf="@id/hotseat_icon_3"
         app:layout_constraintBottom_toBottomOf="parent"
diff --git a/quickstep/res/layout-land/gesture_tutorial_tablet_mock_hotseat.xml b/quickstep/res/layout-land/gesture_tutorial_tablet_mock_hotseat.xml
index 6877b89..28d32a4 100644
--- a/quickstep/res/layout-land/gesture_tutorial_tablet_mock_hotseat.xml
+++ b/quickstep/res/layout-land/gesture_tutorial_tablet_mock_hotseat.xml
@@ -22,102 +22,81 @@
     android:paddingStart="@dimen/gesture_tutorial_hotseat_padding_start_end"
     android:paddingEnd="@dimen/gesture_tutorial_hotseat_padding_start_end">
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_search_bar"
         android:layout_width="200dp"
         android:layout_height="@dimen/gesture_tutorial_hotseat_search_height"
+        android:background="@drawable/hotseat_search_bar"
+        android:clipToOutline="true"
 
-        app:layout_constraintHorizontal_chainStyle="spread_inside"
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_search_corner_radius"
-        app:cardBackgroundColor="@color/mock_search_bar"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintEnd_toStartOf="@id/hotseat_icon_1"/>
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_icon_1"
         android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/hotseat_icon"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_1"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toEndOf="@id/hotseat_search_bar"
         app:layout_constraintEnd_toStartOf="@id/hotseat_icon_2"/>
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_icon_2"
         android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/hotseat_icon"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_2"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toEndOf="@id/hotseat_icon_1"
         app:layout_constraintEnd_toStartOf="@id/hotseat_icon_3"/>
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_icon_3"
         android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/hotseat_icon"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_3"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toEndOf="@id/hotseat_icon_2"
         app:layout_constraintEnd_toStartOf="@id/hotseat_icon_4"/>
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_icon_4"
         android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/hotseat_icon"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_1"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toEndOf="@id/hotseat_icon_3"
         app:layout_constraintEnd_toStartOf="@id/hotseat_icon_5"/>
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_icon_5"
         android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/hotseat_icon"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_4"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toEndOf="@id/hotseat_icon_4"
-        app:layout_constraintEnd_toStartOf="@id/hotseat_icon_6"/>
-
-    <androidx.cardview.widget.CardView
-        android:id="@+id/hotseat_icon_6"
-        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
-        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
-
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_2"
-        app:layout_constraintDimensionRatio="1:1"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintStart_toEndOf="@id/hotseat_icon_5"
         app:layout_constraintEnd_toEndOf="parent"/>
 
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/quickstep/res/layout-land/keyboard_quick_switch_taskview.xml b/quickstep/res/layout-land/keyboard_quick_switch_taskview.xml
new file mode 100644
index 0000000..4e67629
--- /dev/null
+++ b/quickstep/res/layout-land/keyboard_quick_switch_taskview.xml
@@ -0,0 +1,87 @@
+<?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.
+-->
+<com.android.launcher3.taskbar.KeyboardQuickSwitchTaskView
+    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"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto"
+    android:layout_width="@dimen/keyboard_quick_switch_taskview_width"
+    android:layout_height="@dimen/keyboard_quick_switch_taskview_height"
+    android:importantForAccessibility="yes"
+    android:background="@drawable/keyboard_quick_switch_task_view_background"
+    android:clipToOutline="true"
+    launcher:borderColor="?androidprv:attr/materialColorOutline">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/content"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent">
+
+        <include
+            layout="@layout/keyboard_quick_switch_thumbnail"
+            android:id="@+id/thumbnail1"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toStartOf="@id/thumbnail2"/>
+
+        <include
+            layout="@layout/keyboard_quick_switch_thumbnail"
+            android:id="@+id/thumbnail2"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:visibility="gone"
+            android:layout_marginStart="@dimen/keyboard_quick_switch_split_view_spacing"
+
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toEndOf="@id/thumbnail1"
+            app:layout_constraintEnd_toEndOf="parent"/>
+
+        <ImageView
+            android:id="@+id/icon1"
+            android:layout_width="@dimen/keyboard_quick_switch_taskview_icon_size"
+            android:layout_height="@dimen/keyboard_quick_switch_taskview_icon_size"
+            android:layout_marginTop="@dimen/keyboard_quick_switch_taskview_icon_margin"
+            android:layout_marginStart="@dimen/keyboard_quick_switch_taskview_icon_margin"
+            android:importantForAccessibility="no"
+
+            app:layout_constraintTop_toTopOf="@id/thumbnail1"
+            app:layout_constraintStart_toStartOf="@id/thumbnail1"/>
+
+        <ImageView
+            android:id="@+id/icon2"
+            android:layout_width="@dimen/keyboard_quick_switch_taskview_icon_size"
+            android:layout_height="@dimen/keyboard_quick_switch_taskview_icon_size"
+            android:layout_marginTop="@dimen/keyboard_quick_switch_taskview_icon_margin"
+            android:layout_marginStart="@dimen/keyboard_quick_switch_taskview_icon_margin"
+            android:importantForAccessibility="no"
+            android:visibility="gone"
+
+            app:layout_constraintTop_toTopOf="@id/thumbnail2"
+            app:layout_constraintStart_toStartOf="@id/thumbnail2"/>
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+</com.android.launcher3.taskbar.KeyboardQuickSwitchTaskView>
diff --git a/quickstep/res/layout-land/redesigned_gesture_tutorial_mock_hotseat.xml b/quickstep/res/layout-land/redesigned_gesture_tutorial_mock_hotseat.xml
new file mode 100644
index 0000000..3b484dc
--- /dev/null
+++ b/quickstep/res/layout-land/redesigned_gesture_tutorial_mock_hotseat.xml
@@ -0,0 +1,67 @@
+<?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.
+-->
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="wrap_content"
+    android:layout_height="match_parent"
+    android:paddingVertical="26dp"
+    android:paddingHorizontal="56dp">
+
+    <androidx.constraintlayout.helper.widget.Flow
+        android:id="@+id/hotseat_flow"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+
+        app:constraint_referenced_ids=
+            "hotseat_icon_1, hotseat_icon_2, hotseat_icon_3, hotseat_icon_4"
+        app:flow_wrapMode="aligned"
+        app:flow_maxElementsWrap="1"
+        app:flow_verticalStyle="spread_inside"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent" />
+
+    <View
+        android:id="@+id/hotseat_icon_1"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_icon_2"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_icon_3"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_icon_4"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/quickstep/res/layout-land/redesigned_gesture_tutorial_tablet_mock_hotseat.xml b/quickstep/res/layout-land/redesigned_gesture_tutorial_tablet_mock_hotseat.xml
new file mode 100644
index 0000000..850f6e3
--- /dev/null
+++ b/quickstep/res/layout-land/redesigned_gesture_tutorial_tablet_mock_hotseat.xml
@@ -0,0 +1,80 @@
+<?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.
+-->
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingBottom="32dp"
+    android:paddingStart="@dimen/gesture_tutorial_hotseat_padding_start_end"
+    android:paddingEnd="@dimen/gesture_tutorial_hotseat_padding_start_end">
+
+    <androidx.constraintlayout.helper.widget.Flow
+        android:id="@+id/hotseat_flow"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+
+        app:constraint_referenced_ids="hotseat_search_bar, hotseat_icon_1, hotseat_icon_2,
+            hotseat_icon_3, hotseat_icon_4, hotseat_icon_5"
+        app:flow_horizontalStyle="spread"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <View
+        android:id="@+id/hotseat_search_bar"
+        android:layout_width="200dp"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_search_height"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_icon_1"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_icon_2"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_icon_3"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_icon_4"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_icon_5"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/quickstep/res/layout-sw600dp-land/gesture_tutorial_step_menu.xml b/quickstep/res/layout-sw600dp-land/gesture_tutorial_step_menu.xml
new file mode 100644
index 0000000..225b4cd
--- /dev/null
+++ b/quickstep/res/layout-sw600dp-land/gesture_tutorial_step_menu.xml
@@ -0,0 +1,167 @@
+<?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.
+-->
+<androidx.constraintlayout.widget.ConstraintLayout
+    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/GestureTutorialActivity"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingTop="@dimen/gesture_tutorial_menu_padding_top"
+    android:paddingBottom="@dimen/gesture_tutorial_menu_padding_bottom"
+    android:paddingHorizontal="@dimen/gesture_tutorial_menu_padding_horizontal"
+    android:background="?androidprv:attr/materialColorSurfaceContainer">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/gesture_tutorial_menu_home_button"
+        android:layout_width="0dp"
+        android:layout_height="@dimen/gesture_tutorial_menu_button_height"
+        android:layout_marginEnd="@dimen/gesture_tutorial_menu_button_spacing"
+        android:layout_marginBottom="24dp"
+        android:background="@drawable/gesture_tutorial_menu_home_button_background"
+        android:clipToOutline="true"
+
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toTopOf="@id/guideline"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toStartOf="@id/gesture_tutorial_menu_back_button">
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/gesture_tutorial_home_step_shape"
+            android:scaleType="fitXY"
+            android:adjustViewBounds="true"
+
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
+
+        <TextView
+            style="@style/TextAppearance.GestureTutorial.MenuButton.Home"
+            android:id="@+id/gesture_tutorial_menu_home_button_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/home_gesture_tutorial_title"
+
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/gesture_tutorial_menu_back_button"
+        android:layout_width="0dp"
+        android:layout_height="@dimen/gesture_tutorial_menu_button_height"
+        android:layout_marginEnd="@dimen/gesture_tutorial_menu_button_spacing"
+        android:layout_marginBottom="24dp"
+        android:background="@drawable/gesture_tutorial_menu_back_button_background"
+        android:clipToOutline="true"
+
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toTopOf="@id/guideline"
+        app:layout_constraintStart_toEndOf="@id/gesture_tutorial_menu_home_button"
+        app:layout_constraintEnd_toStartOf="@id/gesture_tutorial_menu_overview_button">
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/gesture_tutorial_back_step_shape"
+            android:layout_marginBottom="@dimen/gesture_tutorial_menu_back_shape_bottom_margin"
+            android:scaleType="fitXY"
+            android:adjustViewBounds="true"
+
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"/>
+
+        <TextView
+            style="@style/TextAppearance.GestureTutorial.MenuButton.Back"
+            android:id="@+id/gesture_tutorial_menu_back_button_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/back_gesture_tutorial_title"
+
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/gesture_tutorial_menu_overview_button"
+        android:layout_width="0dp"
+        android:layout_height="@dimen/gesture_tutorial_menu_button_height"
+        android:layout_marginBottom="24dp"
+        android:background="@drawable/gesture_tutorial_menu_overview_button_background"
+        android:clipToOutline="true"
+
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toTopOf="@id/guideline"
+        app:layout_constraintStart_toEndOf="@id/gesture_tutorial_menu_back_button"
+        app:layout_constraintEnd_toEndOf="parent">
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/gesture_tutorial_overview_step_shape"
+            android:scaleType="fitXY"
+            android:adjustViewBounds="true"
+
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
+
+        <TextView
+            style="@style/TextAppearance.GestureTutorial.MenuButton.Overview"
+            android:id="@+id/gesture_tutorial_menu_overview_button_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/overview_gesture_tutorial_title"
+
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <androidx.constraintlayout.widget.Guideline
+        android:id="@+id/guideline"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+
+        app:layout_constraintGuide_end="@dimen/gesture_tutorial_menu_done_button_spacing"/>
+
+    <Button
+        style="@style/TextAppearance.GestureTutorial.ButtonLabel"
+        android:id="@+id/gesture_tutorial_menu_done_button"
+        android:layout_width="wrap_content"
+        android:layout_height="40dp"
+        android:layout_marginVertical="16dp"
+        android:text="@string/gesture_tutorial_action_button_label"
+        android:background="@drawable/gesture_tutorial_action_button_background"
+        android:backgroundTint="?androidprv:attr/materialColorPrimary"
+        android:stateListAnimator="@null"
+
+        app:layout_constraintTop_toBottomOf="@id/guideline"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/quickstep/res/layout-sw600dp/allset_navigation_and_hint.xml b/quickstep/res/layout-sw600dp/allset_navigation_and_hint.xml
new file mode 100644
index 0000000..44b3ecb
--- /dev/null
+++ b/quickstep/res/layout-sw600dp/allset_navigation_and_hint.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<merge xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <TextView
+        android:id="@+id/navigation_settings"
+        style="@style/TextAppearance.GestureTutorial.LinkText"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="24dp"
+        android:background="?android:attr/selectableItemBackground"
+        android:minHeight="48dp"
+        android:text="@string/allset_navigation_settings"
+        app:layout_constraintTop_toBottomOf="@id/subtitle"
+        app:layout_constraintStart_toStartOf="parent" />
+
+    <TextView
+        android:id="@+id/hint"
+        style="@style/TextAppearance.GestureTutorial.Feedback.Subtitle"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="24dp"
+        android:text="@string/allset_hint"
+        android:textSize="@dimen/allset_page_swipe_up_text_size"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent" />
+
+</merge>
\ No newline at end of file
diff --git a/quickstep/res/layout/activity_allset.xml b/quickstep/res/layout/activity_allset.xml
index 0cae733..7ea92b5 100644
--- a/quickstep/res/layout/activity_allset.xml
+++ b/quickstep/res/layout/activity_allset.xml
@@ -26,7 +26,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:id="@+id/content_view"
-        android:fitsSystemWindows="true">
+        android:fitsSystemWindows="false">
 
         <com.airbnb.lottie.LottieAnimationView
             android:id="@+id/animated_background"
@@ -34,12 +34,11 @@
             android:layout_height="match_parent"
             android:gravity="center"
             android:scaleType="centerCrop"
-
-            app:lottie_rawRes="@raw/all_set_page_bg"
             app:lottie_autoPlay="true"
             app:lottie_loop="true" />
 
         <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/text_content_view"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:layout_marginStart="@dimen/allset_page_margin_horizontal"
@@ -79,42 +78,8 @@
                 app:layout_constraintStart_toStartOf="parent"
                 android:gravity="start"/>
 
-            <androidx.constraintlayout.widget.Guideline
-                android:id="@+id/navigation_settings_guideline_bottom"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:orientation="horizontal"
-                app:layout_constraintGuide_percent="0.83" />
+            <include layout="@layout/allset_navigation_and_hint"/>
 
-            <TextView
-                android:id="@+id/navigation_settings"
-                style="@style/TextAppearance.GestureTutorial.LinkText"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintBottom_toBottomOf="@id/navigation_settings_guideline_bottom"
-                android:minHeight="48dp"
-                android:background="?android:attr/selectableItemBackground"
-                android:text="@string/allset_navigation_settings" />
-
-            <androidx.constraintlayout.widget.Guideline
-                android:id="@+id/hint_guideline_bottom"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:orientation="horizontal"
-                app:layout_constraintGuide_percent="0.94" />
-
-            <TextView
-                android:id="@+id/hint"
-                style="@style/TextAppearance.GestureTutorial.Feedback.Subtitle"
-                android:textSize="14sp"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintBottom_toBottomOf="@id/hint_guideline_bottom"
-                android:text="@string/allset_hint"/>
         </androidx.constraintlayout.widget.ConstraintLayout>
 
     </androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/quickstep/res/layout/all_apps_edu_view.xml b/quickstep/res/layout/all_apps_edu_view.xml
index e7ef6e6..0dd4df1 100644
--- a/quickstep/res/layout/all_apps_edu_view.xml
+++ b/quickstep/res/layout/all_apps_edu_view.xml
@@ -3,4 +3,5 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
     android:layout_width="@dimen/swipe_edu_width"
-    android:layout_height="@dimen/swipe_edu_max_height"/>
+    android:layout_height="@dimen/swipe_edu_max_height"
+    android:accessibilityPaneTitle="@string/taskbar_edu_a11y_title"/>
diff --git a/quickstep/res/layout/allset_navigation_and_hint.xml b/quickstep/res/layout/allset_navigation_and_hint.xml
new file mode 100644
index 0000000..4d5cf01
--- /dev/null
+++ b/quickstep/res/layout/allset_navigation_and_hint.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<merge xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <androidx.constraintlayout.widget.Guideline
+        android:id="@+id/navigation_settings_guideline_bottom"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        app:layout_constraintGuide_percent="0.83" />
+
+    <TextView
+        android:id="@+id/navigation_settings"
+        style="@style/TextAppearance.GestureTutorial.LinkText"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:background="?android:attr/selectableItemBackground"
+        android:minHeight="48dp"
+        android:text="@string/allset_navigation_settings"
+        app:layout_constraintBottom_toBottomOf="@id/navigation_settings_guideline_bottom"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent" />
+
+    <androidx.constraintlayout.widget.Guideline
+        android:id="@+id/hint_guideline_bottom"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        app:layout_constraintGuide_percent="0.94" />
+
+    <TextView
+        android:id="@+id/hint"
+        style="@style/TextAppearance.GestureTutorial.Feedback.Subtitle"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/allset_hint"
+        android:textSize="@dimen/allset_page_swipe_up_text_size"
+        app:layout_constraintBottom_toBottomOf="@id/hint_guideline_bottom"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent" />
+
+</merge>
\ No newline at end of file
diff --git a/res/drawable/ic_block_shadow.xml b/quickstep/res/layout/back_gesture_tutorial_background.xml
similarity index 69%
rename from res/drawable/ic_block_shadow.xml
rename to quickstep/res/layout/back_gesture_tutorial_background.xml
index 045fe8d..7fa2cf5 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/quickstep/res/layout/back_gesture_tutorial_background.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
-
+<!--
+     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
-
+          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.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
+<View
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+    android:id="@+id/back_gesture_tutorial_background"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" />
diff --git a/quickstep/res/layout/bubble_view.xml b/quickstep/res/layout/bubble_view.xml
new file mode 100644
index 0000000..0b1ed9f
--- /dev/null
+++ b/quickstep/res/layout/bubble_view.xml
@@ -0,0 +1,55 @@
+<?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.
+  -->
+<merge xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <ImageView
+        android:id="@+id/icon_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:contentDescription="@null" />
+
+    <!--
+        Icon badge size is defined in Launcher3 BaseIconFactory as 0.444 of icon size.
+        Constraint guide starts from left, which means for a badge positioned on the right,
+        percent has to be 1 - 0.444 to have the same effect.
+    -->
+    <androidx.constraintlayout.widget.Guideline
+        android:id="@+id/app_icon_constraint_horizontal"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        app:layout_constraintGuide_percent="0.556" />
+
+    <androidx.constraintlayout.widget.Guideline
+        android:id="@+id/app_icon_constraint_vertical"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        app:layout_constraintGuide_percent="0.556" />
+
+    <ImageView
+        android:id="@+id/app_icon_view"
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:contentDescription="@null"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toLeftOf="@id/app_icon_constraint_vertical"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="@id/app_icon_constraint_horizontal" />
+
+</merge>
\ No newline at end of file
diff --git a/quickstep/res/layout/bubblebar_item_view.xml b/quickstep/res/layout/bubblebar_item_view.xml
new file mode 100644
index 0000000..64fc4df
--- /dev/null
+++ b/quickstep/res/layout/bubblebar_item_view.xml
@@ -0,0 +1,21 @@
+<?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
+  -->
+<com.android.launcher3.taskbar.bubbles.BubbleView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/bubble_view"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"/>
diff --git a/quickstep/res/layout/digital_wellbeing_toast.xml b/quickstep/res/layout/digital_wellbeing_toast.xml
index c4642e4..42cddbf 100644
--- a/quickstep/res/layout/digital_wellbeing_toast.xml
+++ b/quickstep/res/layout/digital_wellbeing_toast.xml
@@ -16,7 +16,7 @@
 -->
 <TextView
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:priv-android="http://schemas.android.com/apk/prv/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
     style="@style/TextTitle"
     android:layout_width="match_parent"
     android:layout_height="48dp"
@@ -24,5 +24,7 @@
     android:forceHasOverlappingRendering="false"
     android:gravity="center"
     android:importantForAccessibility="noHideDescendants"
-    android:textColor="?priv-android:attr/textColorOnAccent"
-    android:textSize="14sp"/>
\ No newline at end of file
+    android:textColor="?androidprv:attr/materialColorOnSecondaryFixed"
+    android:textSize="14sp"
+    android:autoSizeTextType="uniform"
+    android:autoSizeMaxTextSize="14sp"/>
\ No newline at end of file
diff --git a/quickstep/res/layout/gesture_tutorial_foldable_mock_hotseat.xml b/quickstep/res/layout/gesture_tutorial_foldable_mock_hotseat.xml
index 027e4a0..363f14e 100644
--- a/quickstep/res/layout/gesture_tutorial_foldable_mock_hotseat.xml
+++ b/quickstep/res/layout/gesture_tutorial_foldable_mock_hotseat.xml
@@ -42,7 +42,7 @@
 
         app:cardElevation="0dp"
         app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_1"
+        app:cardBackgroundColor="@color/mock_app_icon"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintHorizontal_chainStyle="spread_inside"
         app:layout_constraintTop_toBottomOf="@id/hotseat_search_bar"
@@ -57,7 +57,7 @@
 
         app:cardElevation="0dp"
         app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_2"
+        app:cardBackgroundColor="@color/mock_app_icon"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toBottomOf="@id/hotseat_search_bar"
         app:layout_constraintStart_toEndOf="@id/hotseat_icon_1"
@@ -71,7 +71,7 @@
 
         app:cardElevation="0dp"
         app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_3"
+        app:cardBackgroundColor="@color/mock_app_icon"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toBottomOf="@id/hotseat_search_bar"
         app:layout_constraintStart_toEndOf="@id/hotseat_icon_2"
@@ -85,7 +85,7 @@
 
         app:cardElevation="0dp"
         app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_1"
+        app:cardBackgroundColor="@color/mock_app_icon"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toBottomOf="@id/hotseat_search_bar"
         app:layout_constraintStart_toEndOf="@id/hotseat_icon_3"
@@ -99,24 +99,10 @@
 
         app:cardElevation="0dp"
         app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_4"
+        app:cardBackgroundColor="@color/mock_app_icon"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toBottomOf="@id/hotseat_search_bar"
         app:layout_constraintStart_toEndOf="@id/hotseat_icon_4"
-        app:layout_constraintEnd_toStartOf="@id/hotseat_icon_6"/>
-
-    <androidx.cardview.widget.CardView
-        android:id="@+id/hotseat_icon_6"
-        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
-        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
-        android:layout_marginTop="@dimen/gesture_tutorial_hotseat_icon_search_margin"
-
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_2"
-        app:layout_constraintDimensionRatio="1:1"
-        app:layout_constraintTop_toBottomOf="@id/hotseat_search_bar"
-        app:layout_constraintStart_toEndOf="@id/hotseat_icon_5"
         app:layout_constraintEnd_toEndOf="parent"/>
 
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/quickstep/res/layout/gesture_tutorial_fragment.xml b/quickstep/res/layout/gesture_tutorial_fragment.xml
index b3ca297..64ad1f7 100644
--- a/quickstep/res/layout/gesture_tutorial_fragment.xml
+++ b/quickstep/res/layout/gesture_tutorial_fragment.xml
@@ -57,33 +57,34 @@
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintEnd_toEndOf="parent"/>
 
-        <androidx.cardview.widget.CardView
+
+        <View
             android:id="@+id/top_task_view"
             android:layout_width="match_parent"
             android:layout_height="0dp"
-            android:visibility="invisible"
             android:layout_marginBottom="@dimen/gesture_tutorial_multi_row_task_view_spacing"
+            android:background="@drawable/top_task_view"
+            android:clipToOutline="true"
+            android:visibility="invisible"
 
-            app:cardElevation="0dp"
-            app:cardCornerRadius="@dimen/gesture_tutorial_small_task_view_corner_radius"
             app:layout_constraintVertical_chainStyle="spread"
-            app:layout_constraintTop_toTopOf="@id/full_task_view"
             app:layout_constraintBottom_toTopOf="@id/bottom_task_view"
+            app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"/>
+            app:layout_constraintTop_toTopOf="@id/full_task_view" />
 
-        <androidx.cardview.widget.CardView
+        <View
             android:id="@+id/bottom_task_view"
             android:layout_width="match_parent"
             android:layout_height="0dp"
+            android:background="@drawable/top_task_view"
+            android:clipToOutline="true"
             android:visibility="invisible"
 
-            app:cardElevation="0dp"
-            app:cardCornerRadius="@dimen/gesture_tutorial_small_task_view_corner_radius"
-            app:layout_constraintTop_toBottomOf="@id/top_task_view"
             app:layout_constraintBottom_toBottomOf="@id/full_task_view"
+            app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"/>
+            app:layout_constraintTop_toBottomOf="@id/top_task_view" />
 
     </com.android.quickstep.interaction.AnimatedTaskView>
 
@@ -102,11 +103,11 @@
     <include
         layout="@layout/gesture_tutorial_tablet_mock_taskbar"
         android:id="@+id/gesture_tutorial_fake_taskbar_view"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/gesture_tutorial_mock_taskbar_height"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
         android:layout_alignParentBottom="true"
-        android:layout_alignParentStart="true"
-        android:layout_alignParentEnd="true" />
+        android:layout_centerHorizontal="true"
+        android:layout_marginBottom="@dimen/gesture_tutorial_taskbar_margin_bottom"/>
 
     <ImageView
         android:id="@+id/gesture_tutorial_edge_gesture_video"
@@ -174,6 +175,7 @@
             android:paddingEnd="26dp"
             android:text="@string/gesture_tutorial_action_button_label"
             android:background="@drawable/gesture_tutorial_action_button_background"
+            android:backgroundTint="?android:attr/colorAccent"
             android:stateListAnimator="@null"
             android:visibility="invisible"
 
diff --git a/quickstep/res/layout/gesture_tutorial_mock_hotseat.xml b/quickstep/res/layout/gesture_tutorial_mock_hotseat.xml
index b3e86cf..8ee0339 100644
--- a/quickstep/res/layout/gesture_tutorial_mock_hotseat.xml
+++ b/quickstep/res/layout/gesture_tutorial_mock_hotseat.xml
@@ -8,67 +8,62 @@
     android:paddingStart="26dp"
     android:paddingEnd="26dp">
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_icon_1"
         android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/hotseat_icon"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_1"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintHorizontal_chainStyle="spread_inside"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintEnd_toStartOf="@id/hotseat_icon_2"/>
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_icon_2"
         android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/hotseat_icon"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_2"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintStart_toEndOf="@id/hotseat_icon_1"
         app:layout_constraintEnd_toStartOf="@id/hotseat_icon_3"/>
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_icon_3"
         android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/hotseat_icon"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_3"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintStart_toEndOf="@id/hotseat_icon_2"
         app:layout_constraintEnd_toStartOf="@id/hotseat_icon_4"/>
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_icon_4"
         android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/hotseat_icon"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_4"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintStart_toEndOf="@id/hotseat_icon_3"
         app:layout_constraintEnd_toEndOf="parent"/>
 
-    <androidx.cardview.widget.CardView
+    <View
         android:layout_width="0dp"
         android:layout_height="@dimen/gesture_tutorial_hotseat_search_height"
         android:layout_marginTop="@dimen/gesture_tutorial_hotseat_icon_search_margin"
+        android:background="@drawable/hotseat_search_bar"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_search_corner_radius"
-        app:cardBackgroundColor="@color/mock_search_bar"
         app:layout_constraintTop_toBottomOf="@id/hotseat_icon_1"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintEnd_toEndOf="parent"/>
diff --git a/quickstep/res/layout/gesture_tutorial_step_menu.xml b/quickstep/res/layout/gesture_tutorial_step_menu.xml
new file mode 100644
index 0000000..cf78b1b
--- /dev/null
+++ b/quickstep/res/layout/gesture_tutorial_step_menu.xml
@@ -0,0 +1,166 @@
+<?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.
+-->
+<androidx.constraintlayout.widget.ConstraintLayout
+    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/GestureTutorialActivity"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingTop="@dimen/gesture_tutorial_menu_padding_top"
+    android:paddingBottom="@dimen/gesture_tutorial_menu_padding_bottom"
+    android:paddingHorizontal="@dimen/gesture_tutorial_menu_padding_horizontal"
+    android:background="?androidprv:attr/materialColorSurfaceContainer"
+    android:clipToPadding="false">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/gesture_tutorial_menu_home_button"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/gesture_tutorial_menu_button_height"
+        android:background="@drawable/gesture_tutorial_menu_home_button_background"
+        android:clipToOutline="true"
+        app:layout_constraintVertical_chainStyle="packed"
+
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toTopOf="@id/gesture_tutorial_menu_back_button"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent">
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/gesture_tutorial_home_step_shape"
+            android:scaleType="fitXY"
+            android:adjustViewBounds="true"
+
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
+
+        <TextView
+            style="@style/TextAppearance.GestureTutorial.MenuButton.Home"
+            android:id="@+id/gesture_tutorial_menu_home_button_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/home_gesture_tutorial_title"
+
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/gesture_tutorial_menu_back_button"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/gesture_tutorial_menu_button_height"
+        android:layout_marginTop="@dimen/gesture_tutorial_menu_button_spacing"
+        android:background="@drawable/gesture_tutorial_menu_back_button_background"
+        android:clipToOutline="true"
+
+        app:layout_constraintTop_toBottomOf="@id/gesture_tutorial_menu_home_button"
+        app:layout_constraintBottom_toTopOf="@id/gesture_tutorial_menu_overview_button"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent">
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/gesture_tutorial_back_step_shape"
+            android:scaleType="fitXY"
+            android:adjustViewBounds="true"
+
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"/>
+
+        <TextView
+            style="@style/TextAppearance.GestureTutorial.MenuButton.Back"
+            android:id="@+id/gesture_tutorial_menu_back_button_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/back_gesture_tutorial_title"
+
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/gesture_tutorial_menu_overview_button"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/gesture_tutorial_menu_button_height"
+        android:layout_marginTop="@dimen/gesture_tutorial_menu_button_spacing"
+        android:background="@drawable/gesture_tutorial_menu_overview_button_background"
+        android:clipToOutline="true"
+
+        app:layout_constraintTop_toBottomOf="@id/gesture_tutorial_menu_back_button"
+        app:layout_constraintBottom_toTopOf="@id/guideline"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent">
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/gesture_tutorial_overview_step_shape"
+            android:scaleType="fitXY"
+            android:adjustViewBounds="true"
+
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
+
+        <TextView
+            style="@style/TextAppearance.GestureTutorial.MenuButton.Overview"
+            android:id="@+id/gesture_tutorial_menu_overview_button_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/overview_gesture_tutorial_title"
+
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <androidx.constraintlayout.widget.Guideline
+        android:id="@+id/guideline"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+
+        app:layout_constraintGuide_end="@dimen/gesture_tutorial_menu_done_button_spacing"/>
+
+    <Button
+        style="@style/TextAppearance.GestureTutorial.ButtonLabel"
+        android:id="@+id/gesture_tutorial_menu_done_button"
+        android:layout_width="wrap_content"
+        android:layout_height="40dp"
+        android:layout_marginVertical="16dp"
+        android:text="@string/gesture_tutorial_action_button_label"
+        android:background="@drawable/gesture_tutorial_action_button_background"
+        android:backgroundTint="?androidprv:attr/materialColorPrimary"
+        android:stateListAnimator="@null"
+
+        app:layout_constraintTop_toBottomOf="@id/guideline"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/quickstep/res/layout/gesture_tutorial_tablet_mock_hotseat.xml b/quickstep/res/layout/gesture_tutorial_tablet_mock_hotseat.xml
index 027e4a0..63c51e8 100644
--- a/quickstep/res/layout/gesture_tutorial_tablet_mock_hotseat.xml
+++ b/quickstep/res/layout/gesture_tutorial_tablet_mock_hotseat.xml
@@ -22,101 +22,81 @@
     android:paddingStart="@dimen/gesture_tutorial_hotseat_padding_start_end"
     android:paddingEnd="@dimen/gesture_tutorial_hotseat_padding_start_end">
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_search_bar"
         android:layout_width="0dp"
         android:layout_height="@dimen/gesture_tutorial_hotseat_search_height"
+        android:background="@drawable/hotseat_search_bar"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_search_corner_radius"
-        app:cardBackgroundColor="@color/mock_search_bar"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintEnd_toEndOf="parent"/>
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_icon_1"
         android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_marginTop="@dimen/gesture_tutorial_hotseat_icon_search_margin"
+        android:background="@drawable/hotseat_icon"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_1"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintHorizontal_chainStyle="spread_inside"
         app:layout_constraintTop_toBottomOf="@id/hotseat_search_bar"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintEnd_toStartOf="@id/hotseat_icon_2"/>
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_icon_2"
         android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_marginTop="@dimen/gesture_tutorial_hotseat_icon_search_margin"
+        android:background="@drawable/hotseat_icon"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_2"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toBottomOf="@id/hotseat_search_bar"
         app:layout_constraintStart_toEndOf="@id/hotseat_icon_1"
         app:layout_constraintEnd_toStartOf="@id/hotseat_icon_3"/>
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_icon_3"
         android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_marginTop="@dimen/gesture_tutorial_hotseat_icon_search_margin"
+        android:background="@drawable/hotseat_icon"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_3"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toBottomOf="@id/hotseat_search_bar"
         app:layout_constraintStart_toEndOf="@id/hotseat_icon_2"
         app:layout_constraintEnd_toStartOf="@id/hotseat_icon_4"/>
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_icon_4"
         android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_marginTop="@dimen/gesture_tutorial_hotseat_icon_search_margin"
+        android:background="@drawable/hotseat_icon"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_1"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toBottomOf="@id/hotseat_search_bar"
         app:layout_constraintStart_toEndOf="@id/hotseat_icon_3"
         app:layout_constraintEnd_toStartOf="@id/hotseat_icon_5"/>
 
-    <androidx.cardview.widget.CardView
+    <View
         android:id="@+id/hotseat_icon_5"
         android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
         android:layout_marginTop="@dimen/gesture_tutorial_hotseat_icon_search_margin"
+        android:background="@drawable/hotseat_icon"
+        android:clipToOutline="true"
 
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_4"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toBottomOf="@id/hotseat_search_bar"
         app:layout_constraintStart_toEndOf="@id/hotseat_icon_4"
-        app:layout_constraintEnd_toStartOf="@id/hotseat_icon_6"/>
-
-    <androidx.cardview.widget.CardView
-        android:id="@+id/hotseat_icon_6"
-        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
-        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
-        android:layout_marginTop="@dimen/gesture_tutorial_hotseat_icon_search_margin"
-
-        app:cardElevation="0dp"
-        app:cardCornerRadius="@dimen/gesture_tutorial_hotseat_icon_corner_radius"
-        app:cardBackgroundColor="@color/mock_app_icon_2"
-        app:layout_constraintDimensionRatio="1:1"
-        app:layout_constraintTop_toBottomOf="@id/hotseat_search_bar"
-        app:layout_constraintStart_toEndOf="@id/hotseat_icon_5"
         app:layout_constraintEnd_toEndOf="parent"/>
 
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/quickstep/res/layout/gesture_tutorial_tablet_mock_taskbar.xml b/quickstep/res/layout/gesture_tutorial_tablet_mock_taskbar.xml
index ddfeeec..bc68928 100644
--- a/quickstep/res/layout/gesture_tutorial_tablet_mock_taskbar.xml
+++ b/quickstep/res/layout/gesture_tutorial_tablet_mock_taskbar.xml
@@ -2,115 +2,240 @@
 <com.android.quickstep.interaction.AnimatedTaskbarView
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="@dimen/gesture_tutorial_mock_taskbar_height">
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:clipChildren="false">
 
+    <!-- Pill-shaped background -->
     <View
         android:id="@+id/taskbar_background"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="@color/gesture_tutorial_taskbar_color"
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:background="@drawable/mock_taskbar_background"
+        android:clipToOutline="true"
 
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintEnd_toEndOf="parent"/>
 
+    <!-- Container for the all apps button and app icons -->
     <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/icon_container"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_margin="@dimen/gesture_tutorial_taskbar_padding"
 
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintEnd_toEndOf="parent">
 
-        <androidx.cardview.widget.CardView
+        <!-- All apps button -->
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/taskbar_all_apps"
+            android:layout_width="@dimen/gesture_tutorial_taskbar_icon_size"
+            android:layout_height="@dimen/gesture_tutorial_taskbar_icon_size"
+            android:layout_marginEnd="@dimen/taskbar_icon_spacing"
+            android:padding="@dimen/gesture_tutorial_taskbar_padding"
+
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toStartOf="@id/taskbar_icon_1"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent">
+
+            <!-- 9 mini circles representing the all apps button icon -->
+            <View
+                android:id="@+id/all_apps_mini_1"
+                android:layout_width="@dimen/gesture_tutorial_taskbar_all_apps_mini_size"
+                android:layout_height="@dimen/gesture_tutorial_taskbar_all_apps_mini_size"
+                android:background="@drawable/mock_app_icon"
+                android:clipToOutline="true"
+
+                app:layout_constraintDimensionRatio="1:1"
+                app:layout_constraintHorizontal_chainStyle="spread_inside"
+                app:layout_constraintVertical_chainStyle="spread_inside"
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_constraintBottom_toTopOf="@id/all_apps_mini_4"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintEnd_toStartOf="@id/all_apps_mini_2"/>
+
+            <View
+                android:id="@+id/all_apps_mini_2"
+                android:layout_width="@dimen/gesture_tutorial_taskbar_all_apps_mini_size"
+                android:layout_height="@dimen/gesture_tutorial_taskbar_all_apps_mini_size"
+                android:background="@drawable/mock_app_icon"
+                android:clipToOutline="true"
+
+                app:layout_constraintDimensionRatio="1:1"
+                app:layout_constraintVertical_chainStyle="spread_inside"
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_constraintBottom_toTopOf="@id/all_apps_mini_5"
+                app:layout_constraintStart_toEndOf="@id/all_apps_mini_1"
+                app:layout_constraintEnd_toStartOf="@id/all_apps_mini_3"/>
+
+            <View
+                android:id="@+id/all_apps_mini_3"
+                android:layout_width="@dimen/gesture_tutorial_taskbar_all_apps_mini_size"
+                android:layout_height="@dimen/gesture_tutorial_taskbar_all_apps_mini_size"
+                android:background="@drawable/mock_app_icon"
+                android:clipToOutline="true"
+
+                app:layout_constraintDimensionRatio="1:1"
+                app:layout_constraintVertical_chainStyle="spread_inside"
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_constraintBottom_toTopOf="@id/all_apps_mini_6"
+                app:layout_constraintStart_toEndOf="@id/all_apps_mini_2"
+                app:layout_constraintEnd_toEndOf="parent"/>
+
+            <View
+                android:id="@+id/all_apps_mini_4"
+                android:layout_width="@dimen/gesture_tutorial_taskbar_all_apps_mini_size"
+                android:layout_height="@dimen/gesture_tutorial_taskbar_all_apps_mini_size"
+                android:background="@drawable/mock_app_icon"
+                android:clipToOutline="true"
+
+                app:layout_constraintHorizontal_chainStyle="spread_inside"
+                app:layout_constraintDimensionRatio="1:1"
+                app:layout_constraintTop_toBottomOf="@id/all_apps_mini_1"
+                app:layout_constraintBottom_toTopOf="@id/all_apps_mini_7"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintEnd_toStartOf="@id/all_apps_mini_5"/>
+
+            <View
+                android:id="@+id/all_apps_mini_5"
+                android:layout_width="@dimen/gesture_tutorial_taskbar_all_apps_mini_size"
+                android:layout_height="@dimen/gesture_tutorial_taskbar_all_apps_mini_size"
+                android:background="@drawable/mock_app_icon"
+                android:clipToOutline="true"
+
+                app:layout_constraintDimensionRatio="1:1"
+                app:layout_constraintTop_toBottomOf="@id/all_apps_mini_2"
+                app:layout_constraintBottom_toTopOf="@id/all_apps_mini_8"
+                app:layout_constraintStart_toEndOf="@id/all_apps_mini_4"
+                app:layout_constraintEnd_toStartOf="@id/all_apps_mini_6"/>
+
+            <View
+                android:id="@+id/all_apps_mini_6"
+                android:layout_width="@dimen/gesture_tutorial_taskbar_all_apps_mini_size"
+                android:layout_height="@dimen/gesture_tutorial_taskbar_all_apps_mini_size"
+                android:background="@drawable/mock_app_icon"
+                android:clipToOutline="true"
+
+                app:layout_constraintDimensionRatio="1:1"
+                app:layout_constraintTop_toBottomOf="@id/all_apps_mini_3"
+                app:layout_constraintBottom_toTopOf="@id/all_apps_mini_9"
+                app:layout_constraintStart_toEndOf="@id/all_apps_mini_5"
+                app:layout_constraintEnd_toEndOf="parent"/>
+
+            <View
+                android:id="@+id/all_apps_mini_7"
+                android:layout_width="@dimen/gesture_tutorial_taskbar_all_apps_mini_size"
+                android:layout_height="@dimen/gesture_tutorial_taskbar_all_apps_mini_size"
+                android:background="@drawable/mock_app_icon"
+                android:clipToOutline="true"
+
+                app:layout_constraintHorizontal_chainStyle="spread_inside"
+                app:layout_constraintTop_toBottomOf="@id/all_apps_mini_4"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintEnd_toStartOf="@id/all_apps_mini_8"/>
+
+            <View
+                android:id="@+id/all_apps_mini_8"
+                android:layout_width="@dimen/gesture_tutorial_taskbar_all_apps_mini_size"
+                android:layout_height="@dimen/gesture_tutorial_taskbar_all_apps_mini_size"
+                android:background="@drawable/mock_app_icon"
+                android:clipToOutline="true"
+
+                app:layout_constraintTop_toBottomOf="@id/all_apps_mini_5"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintStart_toEndOf="@id/all_apps_mini_7"
+                app:layout_constraintEnd_toStartOf="@id/all_apps_mini_9"/>
+
+            <View
+                android:id="@+id/all_apps_mini_9"
+                android:layout_width="@dimen/gesture_tutorial_taskbar_all_apps_mini_size"
+                android:layout_height="@dimen/gesture_tutorial_taskbar_all_apps_mini_size"
+                android:background="@drawable/mock_app_icon"
+                android:clipToOutline="true"
+
+                app:layout_constraintTop_toBottomOf="@id/all_apps_mini_6"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintStart_toEndOf="@id/all_apps_mini_8"
+                app:layout_constraintEnd_toEndOf="parent"/>
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <!-- App icons -->
+        <View
             android:id="@+id/taskbar_icon_1"
             android:layout_width="@dimen/gesture_tutorial_taskbar_icon_size"
             android:layout_height="@dimen/gesture_tutorial_taskbar_icon_size"
-            android:layout_marginStart="@dimen/gesture_tutorial_taskbar_padding_start_end"
+            android:layout_marginStart="@dimen/taskbar_icon_spacing"
+            android:layout_marginEnd="@dimen/taskbar_icon_spacing"
+            android:background="@drawable/mock_app_icon"
+            android:clipToOutline="true"
 
-            app:cardElevation="0dp"
-            app:cardCornerRadius="@dimen/gesture_tutorial_taskbar_icon_corner_radius"
-            app:cardBackgroundColor="@color/mock_app_icon_1"
-            app:layout_constraintDimensionRatio="1:1"
             app:layout_constraintHorizontal_chainStyle="spread_inside"
             app:layout_constraintTop_toTopOf="parent"
             app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintStart_toEndOf="@id/taskbar_all_apps"
             app:layout_constraintEnd_toStartOf="@id/taskbar_icon_2"/>
 
-        <androidx.cardview.widget.CardView
+        <View
             android:id="@+id/taskbar_icon_2"
             android:layout_width="@dimen/gesture_tutorial_taskbar_icon_size"
             android:layout_height="@dimen/gesture_tutorial_taskbar_icon_size"
+            android:layout_marginStart="@dimen/taskbar_icon_spacing"
+            android:layout_marginEnd="@dimen/taskbar_icon_spacing"
+            android:background="@drawable/mock_app_icon"
+            android:clipToOutline="true"
 
-            app:cardElevation="0dp"
-            app:cardCornerRadius="@dimen/gesture_tutorial_taskbar_icon_corner_radius"
-            app:cardBackgroundColor="@color/mock_app_icon_2"
-            app:layout_constraintDimensionRatio="1:1"
             app:layout_constraintTop_toTopOf="parent"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintStart_toEndOf="@id/taskbar_icon_1"
             app:layout_constraintEnd_toStartOf="@id/taskbar_icon_3"/>
 
-        <androidx.cardview.widget.CardView
+        <View
             android:id="@+id/taskbar_icon_3"
             android:layout_width="@dimen/gesture_tutorial_taskbar_icon_size"
             android:layout_height="@dimen/gesture_tutorial_taskbar_icon_size"
+            android:layout_marginStart="@dimen/taskbar_icon_spacing"
+            android:layout_marginEnd="@dimen/taskbar_icon_spacing"
+            android:background="@drawable/mock_app_icon"
+            android:clipToOutline="true"
 
-            app:cardElevation="0dp"
-            app:cardCornerRadius="@dimen/gesture_tutorial_taskbar_icon_corner_radius"
-            app:cardBackgroundColor="@color/mock_app_icon_3"
-            app:layout_constraintDimensionRatio="1:1"
             app:layout_constraintTop_toTopOf="parent"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintStart_toEndOf="@id/taskbar_icon_2"
             app:layout_constraintEnd_toStartOf="@id/taskbar_icon_4"/>
 
-        <androidx.cardview.widget.CardView
+        <View
             android:id="@+id/taskbar_icon_4"
             android:layout_width="@dimen/gesture_tutorial_taskbar_icon_size"
             android:layout_height="@dimen/gesture_tutorial_taskbar_icon_size"
+            android:layout_marginStart="@dimen/taskbar_icon_spacing"
+            android:layout_marginEnd="@dimen/taskbar_icon_spacing"
+            android:background="@drawable/mock_app_icon"
+            android:clipToOutline="true"
 
-            app:cardElevation="0dp"
-            app:cardCornerRadius="@dimen/gesture_tutorial_taskbar_icon_corner_radius"
-            app:cardBackgroundColor="@color/mock_app_icon_1"
-            app:layout_constraintDimensionRatio="1:1"
             app:layout_constraintTop_toTopOf="parent"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintStart_toEndOf="@id/taskbar_icon_3"
             app:layout_constraintEnd_toStartOf="@id/taskbar_icon_5"/>
 
-        <androidx.cardview.widget.CardView
+        <View
             android:id="@+id/taskbar_icon_5"
             android:layout_width="@dimen/gesture_tutorial_taskbar_icon_size"
             android:layout_height="@dimen/gesture_tutorial_taskbar_icon_size"
+            android:layout_marginStart="@dimen/taskbar_icon_spacing"
+            android:background="@drawable/mock_app_icon"
+            android:clipToOutline="true"
 
-            app:cardElevation="0dp"
-            app:cardCornerRadius="@dimen/gesture_tutorial_taskbar_icon_corner_radius"
-            app:cardBackgroundColor="@color/mock_app_icon_4"
-            app:layout_constraintDimensionRatio="1:1"
             app:layout_constraintTop_toTopOf="parent"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintStart_toEndOf="@id/taskbar_icon_4"
-            app:layout_constraintEnd_toStartOf="@id/taskbar_icon_6"/>
-
-        <androidx.cardview.widget.CardView
-            android:id="@+id/taskbar_icon_6"
-            android:layout_width="@dimen/gesture_tutorial_taskbar_icon_size"
-            android:layout_height="@dimen/gesture_tutorial_taskbar_icon_size"
-            android:layout_marginEnd="@dimen/gesture_tutorial_taskbar_padding_start_end"
-
-            app:cardElevation="0dp"
-            app:cardCornerRadius="@dimen/gesture_tutorial_taskbar_icon_corner_radius"
-            app:cardBackgroundColor="@color/mock_app_icon_2"
-            app:layout_constraintDimensionRatio="1:1"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintStart_toEndOf="@id/taskbar_icon_5"
             app:layout_constraintEnd_toEndOf="parent"/>
 
     </androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/quickstep/res/layout/keyboard_quick_switch_overview.xml b/quickstep/res/layout/keyboard_quick_switch_overview.xml
new file mode 100644
index 0000000..e7b1f23
--- /dev/null
+++ b/quickstep/res/layout/keyboard_quick_switch_overview.xml
@@ -0,0 +1,66 @@
+<?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.
+-->
+<com.android.launcher3.taskbar.KeyboardQuickSwitchTaskView
+    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"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto"
+    android:layout_width="@dimen/keyboard_quick_switch_taskview_width"
+    android:layout_height="@dimen/keyboard_quick_switch_taskview_height"
+    android:clipToOutline="true"
+    android:importantForAccessibility="yes"
+    launcher:borderColor="?androidprv:attr/materialColorOutline">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/content"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@drawable/keyboard_quick_switch_overview_button_background"
+
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent">
+
+        <ImageView
+            android:id="@+id/icon"
+            android:layout_width="@dimen/keyboard_quick_switch_recents_icon_size"
+            android:layout_height="@dimen/keyboard_quick_switch_recents_icon_size"
+            android:layout_marginBottom="8dp"
+            android:src="@drawable/ic_empty_recents"
+            android:tint="?androidprv:attr/materialColorOnSurface"
+
+            app:layout_constraintVertical_chainStyle="packed"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toTopOf="@id/text"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
+
+        <TextView
+            style="@style/KeyboardQuickSwitchText"
+            android:id="@+id/text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textAlignment="center"
+
+            app:layout_constraintTop_toBottomOf="@id/icon"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+</com.android.launcher3.taskbar.KeyboardQuickSwitchTaskView>
diff --git a/quickstep/res/layout/keyboard_quick_switch_taskview.xml b/quickstep/res/layout/keyboard_quick_switch_taskview.xml
new file mode 100644
index 0000000..4d213fa
--- /dev/null
+++ b/quickstep/res/layout/keyboard_quick_switch_taskview.xml
@@ -0,0 +1,87 @@
+<?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.
+-->
+<com.android.launcher3.taskbar.KeyboardQuickSwitchTaskView
+    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"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto"
+    android:layout_width="@dimen/keyboard_quick_switch_taskview_width"
+    android:layout_height="@dimen/keyboard_quick_switch_taskview_height"
+    android:importantForAccessibility="yes"
+    android:background="@drawable/keyboard_quick_switch_task_view_background"
+    android:clipToOutline="true"
+    launcher:borderColor="?androidprv:attr/materialColorOutline">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/content"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent">
+
+        <include
+            layout="@layout/keyboard_quick_switch_thumbnail"
+            android:id="@+id/thumbnail1"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toTopOf="@id/thumbnail2"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
+
+        <include
+            layout="@layout/keyboard_quick_switch_thumbnail"
+            android:id="@+id/thumbnail2"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:visibility="gone"
+            android:layout_marginTop="@dimen/keyboard_quick_switch_split_view_spacing"
+
+            app:layout_constraintTop_toBottomOf="@id/thumbnail1"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
+
+        <ImageView
+            android:id="@+id/icon1"
+            android:layout_width="@dimen/keyboard_quick_switch_taskview_icon_size"
+            android:layout_height="@dimen/keyboard_quick_switch_taskview_icon_size"
+            android:layout_marginTop="@dimen/keyboard_quick_switch_taskview_icon_margin"
+            android:layout_marginStart="@dimen/keyboard_quick_switch_taskview_icon_margin"
+            android:importantForAccessibility="no"
+
+            app:layout_constraintTop_toTopOf="@id/thumbnail1"
+            app:layout_constraintStart_toStartOf="@id/thumbnail1"/>
+
+        <ImageView
+            android:id="@+id/icon2"
+            android:layout_width="@dimen/keyboard_quick_switch_taskview_icon_size"
+            android:layout_height="@dimen/keyboard_quick_switch_taskview_icon_size"
+            android:layout_marginTop="@dimen/keyboard_quick_switch_taskview_icon_margin"
+            android:layout_marginStart="@dimen/keyboard_quick_switch_taskview_icon_margin"
+            android:importantForAccessibility="no"
+            android:visibility="gone"
+
+            app:layout_constraintTop_toTopOf="@id/thumbnail2"
+            app:layout_constraintStart_toStartOf="@id/thumbnail2"/>
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+</com.android.launcher3.taskbar.KeyboardQuickSwitchTaskView>
diff --git a/res/drawable/ic_block_shadow.xml b/quickstep/res/layout/keyboard_quick_switch_thumbnail.xml
similarity index 60%
copy from res/drawable/ic_block_shadow.xml
copy to quickstep/res/layout/keyboard_quick_switch_thumbnail.xml
index 045fe8d..dde9cac 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/quickstep/res/layout/keyboard_quick_switch_thumbnail.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,11 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
+<ImageView
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:scaleType="centerCrop"
+    android:background="@drawable/keyboard_quick_switch_task_view_background"
+    android:clipToOutline="true"
+    android:importantForAccessibility="no"/>
diff --git a/quickstep/res/layout/keyboard_quick_switch_view.xml b/quickstep/res/layout/keyboard_quick_switch_view.xml
new file mode 100644
index 0000000..16abdee
--- /dev/null
+++ b/quickstep/res/layout/keyboard_quick_switch_view.xml
@@ -0,0 +1,90 @@
+<?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.
+-->
+<com.android.launcher3.taskbar.KeyboardQuickSwitchView
+    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:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_marginTop="@dimen/keyboard_quick_switch_margin_top"
+    android:layout_marginHorizontal="@dimen/keyboard_quick_switch_margin_ends"
+    android:background="@drawable/keyboard_quick_switch_view_background"
+    android:clipToOutline="true"
+    android:alpha="0"
+    android:visibility="invisible"
+    android:focusableInTouchMode="true"
+    app:layout_ignoreInsets="true">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/no_recent_items_pane"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/keyboard_quick_switch_taskview_height"
+        android:paddingVertical="@dimen/keyboard_quick_switch_view_spacing"
+        android:alpha="0"
+        android:visibility="gone">
+
+        <ImageView
+            android:id="@+id/no_recent_items_icon"
+            android:layout_width="@dimen/keyboard_quick_switch_no_recent_items_icon_size"
+            android:layout_height="@dimen/keyboard_quick_switch_no_recent_items_icon_size"
+            android:layout_marginBottom="@dimen/keyboard_quick_switch_no_recent_items_icon_margin"
+            android:src="@drawable/ic_empty_recents"
+            android:tint="?androidprv:attr/materialColorOnSurfaceInverse"
+            android:importantForAccessibility="no"
+
+            app:layout_constraintVertical_chainStyle="packed"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toTopOf="@id/no_recent_items_text"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
+
+        <TextView
+            style="@style/KeyboardQuickSwitchText.OnBackground"
+            android:id="@+id/no_recent_items_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/recents_empty_message"
+
+            app:layout_constraintTop_toBottomOf="@id/no_recent_items_icon"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <HorizontalScrollView
+        android:id="@+id/scroll_view"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:fillViewport="true"
+        android:scrollbars="none"
+        android:alpha="0"
+        android:visibility="gone"
+
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toStartOf="parent">
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/content"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:paddingVertical="@dimen/keyboard_quick_switch_view_spacing"
+            android:clipToPadding="false"/>
+
+    </HorizontalScrollView>
+
+</com.android.launcher3.taskbar.KeyboardQuickSwitchView>
diff --git a/quickstep/res/layout/overview_clear_all_button.xml b/quickstep/res/layout/overview_clear_all_button.xml
index 1dea57e..da94c3a 100644
--- a/quickstep/res/layout/overview_clear_all_button.xml
+++ b/quickstep/res/layout/overview_clear_all_button.xml
@@ -16,10 +16,11 @@
 -->
 <com.android.quickstep.views.ClearAllButton
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
     style="@style/OverviewClearAllButton"
     android:id="@+id/clear_all"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="@string/recents_clear_all"
-    android:textColor="?android:attr/textColorPrimary"
+    android:textColor="?androidprv:attr/materialColorOnSurface"
     android:textSize="14sp" />
\ No newline at end of file
diff --git a/quickstep/res/layout/redesigned_gesture_tutorial_foldable_mock_hotseat.xml b/quickstep/res/layout/redesigned_gesture_tutorial_foldable_mock_hotseat.xml
new file mode 100644
index 0000000..821628a
--- /dev/null
+++ b/quickstep/res/layout/redesigned_gesture_tutorial_foldable_mock_hotseat.xml
@@ -0,0 +1,84 @@
+<?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.
+-->
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingBottom="32dp"
+    android:paddingStart="@dimen/gesture_tutorial_hotseat_padding_start_end"
+    android:paddingEnd="@dimen/gesture_tutorial_hotseat_padding_start_end">
+
+    <View
+        android:id="@+id/hotseat_search_bar"
+        android:layout_width="0dp"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_search_height"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true"
+
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"/>
+
+    <androidx.constraintlayout.helper.widget.Flow
+        android:id="@+id/hotseat_flow"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/gesture_tutorial_hotseat_icon_search_margin"
+
+        app:constraint_referenced_ids=
+            "hotseat_icon_1, hotseat_icon_2, hotseat_icon_3, hotseat_icon_4, hotseat_icon_5"
+        app:flow_horizontalStyle="spread_inside"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/hotseat_search_bar" />
+
+    <View
+        android:id="@+id/hotseat_icon_1"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_icon_2"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_icon_3"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_icon_4"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_icon_5"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/quickstep/res/layout/redesigned_gesture_tutorial_fragment.xml b/quickstep/res/layout/redesigned_gesture_tutorial_fragment.xml
new file mode 100644
index 0000000..7d5505e
--- /dev/null
+++ b/quickstep/res/layout/redesigned_gesture_tutorial_fragment.xml
@@ -0,0 +1,231 @@
+<!--
+    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.
+-->
+<com.android.quickstep.interaction.RootSandboxLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:clipChildren="false">
+
+    <RelativeLayout
+        android:id="@+id/gesture_tutorial_fake_launcher_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <FrameLayout
+            android:id="@+id/gesture_tutorial_fake_hotseat_view"
+            android:layout_width="@dimen/gesture_tutorial_hotseat_width"
+            android:layout_height="@dimen/gesture_tutorial_hotseat_height" />
+
+    </RelativeLayout>
+
+    <com.android.launcher3.views.ClipIconView
+        android:id="@+id/gesture_tutorial_fake_icon_view"
+        android:layout_width="20dp"
+        android:layout_height="20dp"
+        android:visibility="invisible" />
+
+    <com.android.quickstep.interaction.AnimatedTaskView
+        android:id="@+id/gesture_tutorial_fake_previous_task_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:visibility="invisible">
+
+        <View
+            android:id="@+id/full_task_view"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:visibility="invisible"
+
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+
+        <View
+            android:id="@+id/top_task_view"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_marginBottom="@dimen/gesture_tutorial_multi_row_task_view_spacing"
+            android:background="@drawable/redesigned_top_task_view"
+            android:clipToOutline="true"
+            android:visibility="invisible"
+
+            app:layout_constraintBottom_toTopOf="@id/bottom_task_view"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="@id/full_task_view" />
+
+        <View
+            android:id="@+id/bottom_task_view"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:background="@drawable/redesigned_top_task_view"
+            android:clipToOutline="true"
+            android:visibility="invisible"
+
+            app:layout_constraintBottom_toBottomOf="@id/full_task_view"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@id/top_task_view" />
+
+    </com.android.quickstep.interaction.AnimatedTaskView>
+
+    <FrameLayout
+        android:id="@+id/gesture_tutorial_fake_task_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+    <View
+        android:id="@+id/gesture_tutorial_ripple_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@drawable/gesture_tutorial_ripple" />
+
+    <ImageView
+        android:id="@+id/gesture_tutorial_edge_gesture_video"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_alignParentBottom="true"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentStart="true"
+        android:layout_alignParentTop="true"
+        android:scaleType="fitXY"
+        android:visibility="gone" />
+
+    <View
+        android:id="@+id/exiting_app_back"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_centerVertical="true"
+        android:visibility="gone" />
+
+    <RelativeLayout
+        android:id="@+id/full_gesture_demonstration"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <com.airbnb.lottie.LottieAnimationView
+            android:id="@+id/gesture_demonstration_animations"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:gravity="center"
+            android:scaleType="centerCrop"
+            app:lottie_loop="true" />
+
+    </RelativeLayout>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/gesture_tutorial_fragment_feedback_view"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentTop="true"
+        android:layout_centerHorizontal="true"
+        android:background="@android:color/transparent"
+        android:paddingEnd="24dp"
+        android:paddingStart="24dp"
+        android:paddingTop="24dp">
+
+        <TextView
+            android:id="@+id/gesture_tutorial_fragment_feedback_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="104dp"
+            android:accessibilityHeading="true"
+            android:gravity="top"
+            android:lineSpacingExtra="-1sp"
+            android:textAppearance="@style/TextAppearance.GestureTutorial.MainTitle"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:id="@+id/gesture_tutorial_fragment_feedback_subtitle"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="1dp"
+            android:layout_marginTop="24dp"
+            android:lineSpacingExtra="4sp"
+            android:textAppearance="@style/TextAppearance.GestureTutorial.MainSubtitle"
+
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@id/gesture_tutorial_fragment_feedback_title" />
+
+        <com.android.quickstep.interaction.TutorialStepIndicator
+            android:id="@+id/gesture_tutorial_fragment_feedback_tutorial_step"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+
+            app:layout_constraintBottom_toBottomOf="@id/gesture_tutorial_fragment_action_button"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <Button
+            android:id="@+id/gesture_tutorial_fragment_close_button"
+            style="@style/TextAppearance.GestureTutorial.Feedback.Subtext"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="32dp"
+            android:background="?android:attr/selectableItemBackgroundBorderless"
+            android:paddingBottom="16dp"
+            android:paddingTop="16dp"
+            android:text="@string/gesture_tutorial_action_button_label_skip"
+            android:visibility="gone"
+
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@id/gesture_tutorial_fragment_feedback_subtitle" />
+
+        <com.airbnb.lottie.LottieAnimationView
+            android:id="@+id/checkmark_animation"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="44dp"
+            android:gravity="center"
+            android:scaleType="centerCrop"
+            app:lottie_loop="false"
+            android:visibility="gone"
+
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@id/gesture_tutorial_fragment_feedback_subtitle"
+            app:layout_constraintBottom_toBottomOf="parent" />
+
+        <Button
+            android:id="@+id/gesture_tutorial_fragment_action_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:background="@drawable/gesture_tutorial_action_button_background"
+            android:stateListAnimator="@null"
+            android:text="@string/gesture_tutorial_action_button_label"
+            android:visibility="invisible"
+            android:layout_marginBottom="60dp"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintTop_toBottomOf="@id/checkmark_animation" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <ImageView
+        android:id="@+id/gesture_tutorial_finger_dot"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
+        android:src="@drawable/gesture_tutorial_finger_dot"
+        android:visibility="gone" />
+
+</com.android.quickstep.interaction.RootSandboxLayout>
\ No newline at end of file
diff --git a/quickstep/res/layout/redesigned_gesture_tutorial_mock_hotseat.xml b/quickstep/res/layout/redesigned_gesture_tutorial_mock_hotseat.xml
new file mode 100644
index 0000000..f5145ba
--- /dev/null
+++ b/quickstep/res/layout/redesigned_gesture_tutorial_mock_hotseat.xml
@@ -0,0 +1,78 @@
+<?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.
+-->
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingBottom="70dp"
+    android:paddingStart="26dp"
+    android:paddingEnd="26dp">
+
+    <androidx.constraintlayout.helper.widget.Flow
+        android:id="@+id/hotseat_flow"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+
+        app:constraint_referenced_ids=
+            "hotseat_icon_1, hotseat_icon_2, hotseat_icon_3, hotseat_icon_4"
+        app:flow_horizontalStyle="spread_inside"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <View
+        android:id="@+id/hotseat_icon_1"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_icon_2"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_icon_3"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_icon_4"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_search_bar"
+        android:layout_width="0dp"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_search_height"
+        android:layout_marginTop="@dimen/gesture_tutorial_hotseat_icon_search_margin"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true"
+
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/hotseat_flow" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/quickstep/res/layout/redesigned_gesture_tutorial_tablet_mock_hotseat.xml b/quickstep/res/layout/redesigned_gesture_tutorial_tablet_mock_hotseat.xml
new file mode 100644
index 0000000..821628a
--- /dev/null
+++ b/quickstep/res/layout/redesigned_gesture_tutorial_tablet_mock_hotseat.xml
@@ -0,0 +1,84 @@
+<?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.
+-->
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingBottom="32dp"
+    android:paddingStart="@dimen/gesture_tutorial_hotseat_padding_start_end"
+    android:paddingEnd="@dimen/gesture_tutorial_hotseat_padding_start_end">
+
+    <View
+        android:id="@+id/hotseat_search_bar"
+        android:layout_width="0dp"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_search_height"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true"
+
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"/>
+
+    <androidx.constraintlayout.helper.widget.Flow
+        android:id="@+id/hotseat_flow"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/gesture_tutorial_hotseat_icon_search_margin"
+
+        app:constraint_referenced_ids=
+            "hotseat_icon_1, hotseat_icon_2, hotseat_icon_3, hotseat_icon_4, hotseat_icon_5"
+        app:flow_horizontalStyle="spread_inside"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/hotseat_search_bar" />
+
+    <View
+        android:id="@+id/hotseat_icon_1"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_icon_2"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_icon_3"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_icon_4"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+    <View
+        android:id="@+id/hotseat_icon_5"
+        android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
+        android:background="@drawable/redesigned_hotseat_icon"
+        android:clipToOutline="true" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/quickstep/res/layout/split_instructions_view.xml b/quickstep/res/layout/split_instructions_view.xml
new file mode 100644
index 0000000..91fb05c
--- /dev/null
+++ b/quickstep/res/layout/split_instructions_view.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<com.android.quickstep.views.SplitInstructionsView
+    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:background="@drawable/split_instructions_background"
+    android:paddingRight="@dimen/split_instructions_horizontal_padding"
+    android:paddingLeft="@dimen/split_instructions_horizontal_padding"
+    android:paddingTop="@dimen/split_instructions_vertical_padding"
+    android:paddingBottom="@dimen/split_instructions_vertical_padding"
+    android:elevation="@dimen/split_instructions_elevation"
+    android:visibility="gone">
+    <androidx.appcompat.widget.AppCompatTextView
+        android:id="@+id/split_instructions_text"
+        android:layout_height="wrap_content"
+        android:layout_width="wrap_content"
+        android:gravity="center"
+        android:textColor="?androidprv:attr/textColorOnAccent"
+        android:text="@string/toast_split_select_app" />
+</com.android.quickstep.views.SplitInstructionsView>
\ No newline at end of file
diff --git a/quickstep/res/layout/task.xml b/quickstep/res/layout/task.xml
index 7e5b85c..4865aef 100644
--- a/quickstep/res/layout/task.xml
+++ b/quickstep/res/layout/task.xml
@@ -17,17 +17,32 @@
      file, they need to be loaded at runtime. -->
 <com.android.quickstep.views.TaskView
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:clipChildren="false"
     android:defaultFocusHighlightEnabled="false"
-    android:focusable="true">
+    android:focusable="true"
+    launcher:borderColor="?androidprv:attr/materialColorOutline">
 
     <com.android.quickstep.views.TaskThumbnailView
         android:id="@+id/snapshot"
         android:layout_width="match_parent"
         android:layout_height="match_parent"/>
 
+    <!-- Filtering affects only alpha instead of the visibility since visibility can be altered
+         separately through RecentsView#resetFromSplitSelectionState() -->
+    <ImageView
+        android:id="@+id/show_windows"
+        android:layout_height="@dimen/recents_filter_icon_size"
+        android:layout_width="@dimen/recents_filter_icon_size"
+        android:layout_gravity="end"
+        android:alpha="0"
+        android:tint="@color/recents_filter_icon"
+        android:importantForAccessibility="no"
+        android:src="@drawable/ic_select_windows" />
+
     <com.android.quickstep.views.IconView
         android:id="@+id/icon"
         android:layout_width="@dimen/task_thumbnail_icon_size"
diff --git a/quickstep/res/layout/task_desktop.xml b/quickstep/res/layout/task_desktop.xml
new file mode 100644
index 0000000..fd82c66
--- /dev/null
+++ b/quickstep/res/layout/task_desktop.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     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.
+-->
+
+<com.android.quickstep.views.DesktopTaskView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:clipChildren="true"
+    android:clipToOutline="true"
+    android:defaultFocusHighlightEnabled="false"
+    android:focusable="true"
+    launcher:borderColor="?androidprv:attr/materialColorOutline">
+
+    <View
+        android:id="@+id/background"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+    <!--
+         TODO(b249371338): DesktopTaskView extends from TaskView. TaskView expects TaskThumbnailView
+         and IconView with these ids to be present. Need to refactor RecentsView to accept child
+         views that do not inherint from TaskView only or create a generic TaskView that have
+         N number of tasks.
+     -->
+    <com.android.quickstep.views.TaskThumbnailView
+        android:id="@+id/snapshot"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:visibility="gone" />
+
+    <com.android.quickstep.views.IconView
+        android:id="@+id/icon"
+        android:layout_width="@dimen/task_thumbnail_icon_size"
+        android:layout_height="@dimen/task_thumbnail_icon_size"
+        android:focusable="false"
+        android:importantForAccessibility="no" />
+
+</com.android.quickstep.views.DesktopTaskView>
diff --git a/quickstep/res/layout/task_grouped.xml b/quickstep/res/layout/task_grouped.xml
index cd5bcbd..c9fa9c0 100644
--- a/quickstep/res/layout/task_grouped.xml
+++ b/quickstep/res/layout/task_grouped.xml
@@ -22,11 +22,14 @@
 
 <com.android.quickstep.views.GroupedTaskView
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:clipChildren="false"
     android:defaultFocusHighlightEnabled="false"
-    android:focusable="true">
+    android:focusable="true"
+    launcher:borderColor="?androidprv:attr/materialColorOutline">
 
     <com.android.quickstep.views.TaskThumbnailView
         android:id="@+id/snapshot"
@@ -38,6 +41,30 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"/>
 
+    <!-- Filtering affects only alpha instead of the visibility since visibility can be altered
+         separately through RecentsView#resetFromSplitSelectionState() -->
+    <ImageView
+        android:id="@+id/show_windows"
+        android:layout_height="@dimen/recents_filter_icon_size"
+        android:layout_width="@dimen/recents_filter_icon_size"
+        android:layout_gravity="start"
+        android:alpha="0"
+        android:tint="@color/recents_filter_icon"
+        android:importantForAccessibility="no"
+        android:src="@drawable/ic_select_windows" />
+
+    <!-- Filtering affects only alpha instead of the visibility since visibility can be altered
+         separately through RecentsView#resetFromSplitSelectionState() -->
+    <ImageView
+        android:id="@+id/show_windows_right"
+        android:layout_height="@dimen/recents_filter_icon_size"
+        android:layout_width="@dimen/recents_filter_icon_size"
+        android:layout_gravity="end"
+        android:alpha="0"
+        android:tint="@color/recents_filter_icon"
+        android:importantForAccessibility="no"
+        android:src="@drawable/ic_select_windows" />
+
     <com.android.quickstep.views.IconView
         android:id="@+id/icon"
         android:layout_width="@dimen/task_thumbnail_icon_size"
diff --git a/quickstep/res/layout/task_view_menu_option.xml b/quickstep/res/layout/task_view_menu_option.xml
index 8a8fc36..c736c8c 100644
--- a/quickstep/res/layout/task_view_menu_option.xml
+++ b/quickstep/res/layout/task_view_menu_option.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"
@@ -30,7 +31,7 @@
       android:layout_height="@dimen/system_shortcut_icon_size"
       android:layout_marginStart="@dimen/task_menu_option_start_margin"
       android:layout_gravity="center_horizontal"
-      android:backgroundTint="?android:attr/textColorPrimary"/>
+      android:backgroundTint="?androidprv:attr/materialColorOnSurface"/>
 
     <TextView
         style="@style/BaseIcon"
@@ -39,7 +40,7 @@
         android:layout_height="wrap_content"
         android:layout_marginStart="@dimen/task_menu_option_start_margin"
         android:textSize="14sp"
-        android:textColor="?android:attr/textColorPrimary"
+        android:textColor="?androidprv:attr/materialColorOnSurface"
         android:focusable="false" />
 
 </LinearLayout>
diff --git a/quickstep/res/layout/taskbar.xml b/quickstep/res/layout/taskbar.xml
index 3b1d217..94388b4 100644
--- a/quickstep/res/layout/taskbar.xml
+++ b/quickstep/res/layout/taskbar.xml
@@ -45,8 +45,8 @@
             android:id="@+id/start_contextual_buttons"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
-            android:paddingLeft="@dimen/taskbar_nav_buttons_spacing"
-            android:paddingRight="@dimen/taskbar_nav_buttons_spacing"
+            android:paddingStart="@dimen/taskbar_contextual_button_padding"
+            android:paddingEnd="@dimen/taskbar_contextual_button_padding"
             android:paddingTop="@dimen/taskbar_contextual_padding_top"
             android:gravity="center_vertical"
             android:layout_gravity="start"/>
@@ -56,9 +56,6 @@
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
             android:orientation="horizontal"
-            android:paddingLeft="@dimen/taskbar_nav_buttons_spacing"
-            android:paddingRight="@dimen/taskbar_nav_buttons_spacing"
-            android:layout_marginEnd="@dimen/taskbar_contextual_button_margin"
             android:gravity="center_vertical"
             android:layout_gravity="end"/>
 
@@ -66,8 +63,6 @@
             android:id="@+id/end_contextual_buttons"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
-            android:paddingLeft="@dimen/taskbar_nav_buttons_spacing"
-            android:paddingRight="@dimen/taskbar_nav_buttons_spacing"
             android:paddingTop="@dimen/taskbar_contextual_padding_top"
             android:gravity="center_vertical"
             android:layout_gravity="end"/>
diff --git a/quickstep/res/layout/taskbar_all_apps.xml b/quickstep/res/layout/taskbar_all_apps.xml
index 34d4b23..976cd9e 100644
--- a/quickstep/res/layout/taskbar_all_apps.xml
+++ b/quickstep/res/layout/taskbar_all_apps.xml
@@ -17,7 +17,8 @@
 <com.android.launcher3.taskbar.allapps.TaskbarAllAppsSlideInView
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="match_parent"
+    android:accessibilityPaneTitle="@string/all_apps_label">
 
     <com.android.launcher3.taskbar.allapps.TaskbarAllAppsContainerView
         android:id="@+id/apps_view"
@@ -26,41 +27,5 @@
         android:clipChildren="true"
         android:clipToPadding="false"
         android:focusable="false"
-        android:saveEnabled="false"
-        android:theme="?attr/allAppsTheme">
-
-        <include
-            layout="@layout/all_apps_bottom_sheet_background"
-            android:visibility="gone" />
-
-        <include
-            layout="@layout/search_results_rv_layout"
-            android:visibility="gone" />
-
-        <include
-            layout="@layout/all_apps_rv_layout"
-            android:visibility="gone" />
-
-        <com.android.launcher3.allapps.FloatingHeaderView
-            android:id="@+id/all_apps_header"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_below="@id/search_container_all_apps"
-            android:clipToPadding="false"
-            android:paddingTop="@dimen/all_apps_header_top_padding"
-            android:orientation="vertical">
-
-            <include layout="@layout/floating_header_content" />
-
-            <include layout="@layout/all_apps_personal_work_tabs" />
-        </com.android.launcher3.allapps.FloatingHeaderView>
-
-        <com.android.launcher3.taskbar.allapps.TaskbarAllAppsFallbackSearchContainer
-            android:id="@+id/search_container_all_apps"
-            android:layout_width="0dp"
-            android:layout_height="0dp"
-            android:visibility="gone" />
-
-        <include layout="@layout/all_apps_fast_scroller" />
-    </com.android.launcher3.taskbar.allapps.TaskbarAllAppsContainerView>
+        android:saveEnabled="false" />
 </com.android.launcher3.taskbar.allapps.TaskbarAllAppsSlideInView>
diff --git a/quickstep/res/layout/taskbar_all_apps_button.xml b/quickstep/res/layout/taskbar_all_apps_button.xml
new file mode 100644
index 0000000..c50db2e
--- /dev/null
+++ b/quickstep/res/layout/taskbar_all_apps_button.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<!-- Note: The actual size will match the taskbar icon sizes in TaskbarView#onLayout(). -->
+<com.android.launcher3.views.IconButtonView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="@dimen/taskbar_icon_min_touch_size"
+    android:layout_height="@dimen/taskbar_icon_min_touch_size"
+    android:contentDescription="@string/all_apps_button_label"
+    android:backgroundTint="@android:color/transparent"
+    />
diff --git a/quickstep/res/layout/taskbar_divider.xml b/quickstep/res/layout/taskbar_divider.xml
new file mode 100644
index 0000000..73f3811
--- /dev/null
+++ b/quickstep/res/layout/taskbar_divider.xml
@@ -0,0 +1,28 @@
+<?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.
+-->
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="@dimen/taskbar_icon_min_touch_size"
+    android:layout_height="@dimen/taskbar_icon_min_touch_size"
+    android:contentDescription="@string/taskbar_divider_a11y_title"
+    android:backgroundTint="@android:color/transparent">
+
+    <View
+        android:layout_height="32dp"
+        android:layout_width="2dp"
+        android:layout_gravity="center"
+        android:background="@drawable/taskbar_divider_bg" />
+</FrameLayout>
\ No newline at end of file
diff --git a/quickstep/res/layout/taskbar_divider_popup_menu.xml b/quickstep/res/layout/taskbar_divider_popup_menu.xml
new file mode 100644
index 0000000..195443e
--- /dev/null
+++ b/quickstep/res/layout/taskbar_divider_popup_menu.xml
@@ -0,0 +1,98 @@
+<?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.
+-->
+<com.android.launcher3.taskbar.TaskbarDividerPopupView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="@dimen/taskbar_pinning_popup_menu_width"
+    android:layout_height="wrap_content"
+    android:focusable="true"
+    android:background="@drawable/popup_background_material_u"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:id="@+id/taskbar_switch_option"
+        android:layout_width="match_parent"
+        android:layout_height="52dp"
+        android:layout_gravity="center_vertical"
+        android:elevation="2dp"
+        android:focusable="true"
+        android:clickable="true"
+        android:gravity="center_vertical"
+        android:orientation="horizontal"
+        android:background="@drawable/top_rounded_popup_ripple"
+        android:paddingEnd="10dp"
+        android:paddingStart="10dp"
+        android:theme="@style/PopupItem">
+
+        <View
+            android:layout_margin="6dp"
+            android:layout_width="20dp"
+            android:layout_height="20dp"
+            android:background="@drawable/ic_visibility"
+            android:backgroundTint="?android:attr/textColorPrimary" />
+
+        <Switch
+            style="@style/BaseIcon"
+            android:id="@+id/taskbar_pinning_switch"
+            android:background="@null"
+            android:clickable="false"
+            android:gravity="start|center_vertical"
+            android:textAlignment="viewStart"
+            android:paddingStart="12dp"
+            android:singleLine="true"
+            android:ellipsize="end"
+            android:textSize="14sp"
+            android:textColor="?android:attr/textColorPrimary"
+            android:text="@string/always_show_taskbar" />
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/navigation_mode_switch_option"
+        android:layout_width="match_parent"
+        android:layout_height="52dp"
+        android:layout_gravity="center_vertical"
+        android:elevation="2dp"
+        android:clickable="true"
+        android:focusable="true"
+        android:background="@drawable/bottom_rounded_popup_ripple"
+        android:gravity="center_vertical"
+        android:orientation="horizontal"
+        android:paddingEnd="10dp"
+        android:paddingStart="10dp"
+        android:theme="@style/PopupItem">
+
+        <View
+            android:layout_width="24dp"
+            android:layout_height="24dp"
+            android:layout_margin="4dp"
+            android:background="@drawable/ic_touch"
+            android:backgroundTint="?android:attr/textColorPrimary" />
+
+        <com.android.launcher3.BubbleTextView
+            style="@style/BaseIcon"
+            android:id="@+id/change_navigation_mode_text"
+            android:gravity="start|center_vertical"
+            android:textAlignment="viewStart"
+            android:paddingStart="12dp"
+            android:singleLine="true"
+            android:ellipsize="end"
+            android:textSize="14sp"
+            android:textColor="?android:attr/textColorPrimary"
+            android:text="@string/change_navigation_mode" />
+
+    </LinearLayout>
+</com.android.launcher3.taskbar.TaskbarDividerPopupView>
\ No newline at end of file
diff --git a/quickstep/res/layout/taskbar_edu.xml b/quickstep/res/layout/taskbar_edu.xml
deleted file mode 100644
index 3796ff9..0000000
--- a/quickstep/res/layout/taskbar_edu.xml
+++ /dev/null
@@ -1,140 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<com.android.launcher3.taskbar.TaskbarEduView 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"
-    xmlns:launcher="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:layout_gravity="bottom"
-    android:gravity="bottom"
-    android:orientation="vertical"
-    android:layout_marginHorizontal="108dp">
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/edu_view"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@drawable/bg_rounded_corner_bottom_sheet"
-        android:gravity="center_horizontal"
-        android:paddingHorizontal="36dp"
-        android:paddingTop="64dp">
-
-        <com.android.launcher3.taskbar.TaskbarEduPagedView
-            android:id="@+id/content"
-            android:clipToPadding="false"
-            android:layout_width="match_parent"
-            android:layout_height="378dp"
-            app:layout_constraintTop_toTopOf="parent"
-            launcher:pageIndicator="@+id/content_page_indicator">
-
-            <LinearLayout
-                android:id="@+id/page_switch_apps"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical"
-                android:gravity="center_horizontal">
-
-                <TextView
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    style="@style/TextAppearance.TaskbarEdu.Title"
-                    android:text="@string/taskbar_edu_switch_apps"/>
-
-                <ImageView
-                    android:layout_width="322dp"
-                    android:layout_height="282dp"
-                    android:layout_marginTop="16dp"
-                    android:src="@drawable/taskbar_edu_switch_apps"/>
-            </LinearLayout>
-
-            <LinearLayout
-                android:id="@+id/page_splitscreen"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical"
-                android:gravity="center_horizontal">
-
-                <TextView
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    style="@style/TextAppearance.TaskbarEdu.Title"
-                    android:text="@string/taskbar_edu_splitscreen"/>
-
-                <ImageView
-                    android:layout_width="322dp"
-                    android:layout_height="282dp"
-                    android:layout_marginTop="16dp"
-                    android:src="@drawable/taskbar_edu_splitscreen"/>
-            </LinearLayout>
-
-            <LinearLayout
-                android:id="@+id/page_stashing"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="vertical"
-                android:gravity="center_horizontal">
-
-                <TextView
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    style="@style/TextAppearance.TaskbarEdu.Title"
-                    android:text="@string/taskbar_edu_stashing"/>
-
-                <ImageView
-                    android:layout_width="322dp"
-                    android:layout_height="282dp"
-                    android:layout_marginTop="16dp"
-                    android:src="@drawable/taskbar_edu_stashing"/>
-            </LinearLayout>
-        </com.android.launcher3.taskbar.TaskbarEduPagedView>
-
-        <Button
-            android:id="@+id/edu_start_button"
-            android:layout_width="wrap_content"
-            android:layout_height="36dp"
-            android:layout_marginBottom="92dp"
-            android:layout_marginTop="32dp"
-            app:layout_constraintTop_toBottomOf="@id/content"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            android:text="@string/taskbar_edu_close"
-            style="@style/TaskbarEdu.Button.Close"
-            android:textColor="?android:attr/textColorPrimary"/>
-
-        <com.android.launcher3.pageindicators.PageIndicatorDots
-            android:id="@+id/content_page_indicator"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            app:layout_constraintTop_toTopOf="@id/edu_start_button"
-            app:layout_constraintBottom_toBottomOf="@id/edu_start_button"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:elevation="1dp" />
-
-        <Button
-            android:id="@+id/edu_end_button"
-            android:layout_width="wrap_content"
-            android:layout_height="0dp"
-            app:layout_constraintTop_toTopOf="@id/edu_start_button"
-            app:layout_constraintBottom_toBottomOf="@id/edu_start_button"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:text="@string/taskbar_edu_next"
-            style="@style/TaskbarEdu.Button.Next"
-            android:textColor="?androidprv:attr/textColorOnAccent"/>
-    </androidx.constraintlayout.widget.ConstraintLayout>
-</com.android.launcher3.taskbar.TaskbarEduView>
\ No newline at end of file
diff --git a/quickstep/res/layout/taskbar_edu_features.xml b/quickstep/res/layout/taskbar_edu_features.xml
new file mode 100644
index 0000000..efbe7f8
--- /dev/null
+++ b/quickstep/res/layout/taskbar_edu_features.xml
@@ -0,0 +1,132 @@
+<?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.
+-->
+<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+    <TextView
+        android:id="@+id/title"
+        style="@style/TextAppearance.TaskbarEduTooltip.Title"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:paddingBottom="@dimen/taskbar_edu_tooltip_vertical_margin"
+        android:text="@string/taskbar_edu_features"
+
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toTopOf="@id/splitscreen_animation"/>
+
+    <com.airbnb.lottie.LottieAnimationView
+        android:id="@+id/splitscreen_animation"
+        android:layout_width="@dimen/taskbar_edu_features_lottie_width"
+        android:layout_height="@dimen/taskbar_edu_features_lottie_height"
+
+        app:lottie_autoPlay="true"
+        app:lottie_loop="true"
+
+        app:layout_constraintEnd_toEndOf="@id/splitscreen_text"
+        app:layout_constraintStart_toStartOf="@id/splitscreen_text"
+        app:layout_constraintTop_toBottomOf="@id/title" />
+
+    <TextView
+        android:id="@+id/splitscreen_text"
+        style="@style/TextAppearance.TaskbarEduTooltip.Subtext"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:text="@string/taskbar_edu_splitscreen"
+
+        app:layout_constraintEnd_toStartOf="@id/settings_text"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/splitscreen_animation" />
+
+    <androidx.constraintlayout.widget.Group
+        android:id="@+id/settings_edu"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        app:constraint_referenced_ids="settings_animation,settings_text" />
+
+    <com.airbnb.lottie.LottieAnimationView
+        android:id="@+id/settings_animation"
+        android:layout_width="@dimen/taskbar_edu_features_lottie_width"
+        android:layout_height="@dimen/taskbar_edu_features_lottie_height"
+
+        app:lottie_autoPlay="true"
+        app:lottie_loop="true"
+        app:lottie_rawRes="@raw/taskbar_edu_settings"
+
+        app:layout_constraintEnd_toEndOf="@id/settings_text"
+        app:layout_constraintStart_toStartOf="@id/settings_text"
+        app:layout_constraintTop_toBottomOf="@id/title" />
+
+    <TextView
+        android:id="@+id/settings_text"
+        style="@style/TextAppearance.TaskbarEduTooltip.Subtext"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:text="@string/taskbar_edu_settings_persistent"
+        android:layout_marginStart="@dimen/taskbar_edu_features_horizontal_spacing"
+
+        app:layout_constraintEnd_toStartOf="@id/suggestions_text"
+        app:layout_constraintStart_toEndOf="@id/splitscreen_text"
+        app:layout_constraintTop_toBottomOf="@id/settings_animation" />
+
+    <com.airbnb.lottie.LottieAnimationView
+        android:id="@+id/suggestions_animation"
+        android:layout_width="@dimen/taskbar_edu_features_lottie_width"
+        android:layout_height="@dimen/taskbar_edu_features_lottie_height"
+
+        app:lottie_autoPlay="true"
+        app:lottie_loop="true"
+
+        app:layout_constraintEnd_toEndOf="@id/suggestions_text"
+        app:layout_constraintStart_toStartOf="@id/suggestions_text"
+        app:layout_constraintTop_toBottomOf="@id/title" />
+
+    <TextView
+        android:id="@+id/suggestions_text"
+        style="@style/TextAppearance.TaskbarEduTooltip.Subtext"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:text="@string/taskbar_edu_suggestions"
+        android:layout_marginStart="@dimen/taskbar_edu_features_horizontal_spacing"
+
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toEndOf="@id/settings_text"
+        app:layout_constraintTop_toBottomOf="@id/suggestions_animation" />
+
+    <androidx.constraintlayout.widget.Barrier
+        android:id="@+id/edu_barrier_bottom"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        app:barrierDirection="bottom"
+        app:constraint_referenced_ids="splitscreen_text,settings_text,suggestions_text" />
+
+    <Button
+        android:id="@+id/done_button"
+        style="@style/TaskbarEdu.Button.Done"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="32dp"
+        android:text="@string/taskbar_edu_done"
+        android:textColor="?androidprv:attr/textColorOnAccent"
+
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/edu_barrier_bottom" />
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/quickstep/res/layout/taskbar_edu_swipe.xml b/quickstep/res/layout/taskbar_edu_swipe.xml
new file mode 100644
index 0000000..3f5e819
--- /dev/null
+++ b/quickstep/res/layout/taskbar_edu_swipe.xml
@@ -0,0 +1,44 @@
+<?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.
+-->
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content">
+
+    <TextView
+        android:id="@+id/title"
+        style="@style/TextAppearance.TaskbarEduTooltip.Title"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:text="@string/taskbar_edu_stashing"
+        app:layout_constraintEnd_toEndOf="@id/swipe_animation"
+        app:layout_constraintStart_toStartOf="@id/swipe_animation"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <com.airbnb.lottie.LottieAnimationView
+        android:id="@+id/swipe_animation"
+        android:layout_width="@dimen/taskbar_edu_swipe_lottie_width"
+        android:layout_height="@dimen/taskbar_edu_swipe_lottie_height"
+        android:layout_marginTop="@dimen/taskbar_edu_tooltip_vertical_margin"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/title"
+        app:lottie_autoPlay="true"
+        app:lottie_loop="true"
+        app:lottie_rawRes="@raw/taskbar_edu_stashing" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/quickstep/res/layout/taskbar_edu_tooltip.xml b/quickstep/res/layout/taskbar_edu_tooltip.xml
new file mode 100644
index 0000000..f3da8b0
--- /dev/null
+++ b/quickstep/res/layout/taskbar_edu_tooltip.xml
@@ -0,0 +1,43 @@
+<?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.
+-->
+<com.android.launcher3.taskbar.TaskbarEduTooltip xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_gravity="bottom|center"
+    android:layout_marginHorizontal="24dp"
+    android:paddingBottom="16dp"
+    android:clipChildren="false"
+    android:clipToPadding="false"
+    android:focusable="true"
+    android:importantForAccessibility="yes"
+    android:gravity="center"
+    android:orientation="vertical">
+
+    <FrameLayout
+        android:id="@+id/content"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:background="@drawable/bg_taskbar_edu_tooltip"
+        android:elevation="@dimen/taskbar_edu_tooltip_elevation"
+        android:paddingHorizontal="@dimen/taskbar_edu_tooltip_horizontal_margin"
+        android:paddingVertical="@dimen/taskbar_edu_tooltip_vertical_margin" />
+
+    <View
+        android:id="@+id/arrow"
+        android:layout_width="@dimen/popup_arrow_width"
+        android:layout_height="@dimen/popup_arrow_height"
+        android:elevation="@dimen/taskbar_edu_tooltip_elevation" />
+</com.android.launcher3.taskbar.TaskbarEduTooltip>
\ No newline at end of file
diff --git a/quickstep/res/layout/transient_taskbar.xml b/quickstep/res/layout/transient_taskbar.xml
new file mode 100644
index 0000000..bf4b811
--- /dev/null
+++ b/quickstep/res/layout/transient_taskbar.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<com.android.launcher3.taskbar.TaskbarDragLayer
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/taskbar_container"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:clipChildren="false">
+
+    <com.android.launcher3.taskbar.TaskbarView
+        android:id="@+id/taskbar_view"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:focusable="true"
+        android:importantForAccessibility="yes"
+        android:forceHasOverlappingRendering="false"
+        android:layout_gravity="bottom"
+        android:layout_marginBottom="@dimen/transient_taskbar_bottom_margin"
+        android:clipChildren="false" />
+
+    <com.android.launcher3.taskbar.TaskbarScrimView
+        android:id="@+id/taskbar_scrim"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
+
+    <com.android.launcher3.taskbar.bubbles.BubbleBarView
+        android:id="@+id/taskbar_bubbles"
+        android:layout_width="wrap_content"
+        android:layout_height="@dimen/bubblebar_size"
+        android:layout_gravity="bottom|end"
+        android:layout_marginEnd="@dimen/transient_taskbar_bottom_margin"
+        android:layout_marginBottom="@dimen/transient_taskbar_bottom_margin"
+        android:paddingEnd="@dimen/taskbar_icon_spacing"
+        android:paddingStart="@dimen/taskbar_icon_spacing"
+        android:visibility="gone"
+        android:gravity="center"
+        android:clipChildren="false"
+        />
+
+    <FrameLayout
+        android:id="@+id/navbuttons_view"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_gravity="bottom" >
+
+        <FrameLayout
+            android:id="@+id/start_contextual_buttons"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:paddingStart="@dimen/taskbar_contextual_button_padding"
+            android:paddingEnd="@dimen/taskbar_contextual_button_padding"
+            android:paddingTop="@dimen/taskbar_contextual_padding_top"
+            android:gravity="center_vertical"
+            android:layout_gravity="start"/>
+
+        <LinearLayout
+            android:id="@+id/end_nav_buttons"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:orientation="horizontal"
+            android:gravity="center_vertical"
+            android:layout_gravity="end"/>
+
+        <FrameLayout
+            android:id="@+id/end_contextual_buttons"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:paddingTop="@dimen/taskbar_contextual_padding_top"
+            android:gravity="center_vertical"
+            android:layout_gravity="end"/>
+    </FrameLayout>
+
+    <com.android.launcher3.taskbar.StashedHandleView
+        android:id="@+id/stashed_handle"
+        tools:comment1="The actual size and shape will be set as a ViewOutlineProvider at runtime"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:background="@color/taskbar_stashed_handle_dark_color"
+        android:clipToOutline="true"
+        android:layout_gravity="bottom"/>
+
+    <com.android.launcher3.taskbar.StashedHandleView
+        android:id="@+id/stashed_bubble_handle"
+        tools:comment1="The actual size and shape will be set as a ViewOutlineProvider at runtime"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:visibility="gone"
+        android:background="@color/taskbar_stashed_handle_dark_color"
+        android:clipToOutline="true"
+        android:layout_gravity="bottom"/>
+
+</com.android.launcher3.taskbar.TaskbarDragLayer>
\ No newline at end of file
diff --git a/quickstep/res/raw-land/all_set_page_bg.json b/quickstep/res/raw-land/all_set_page_bg.json
new file mode 100644
index 0000000..9e94c47
--- /dev/null
+++ b/quickstep/res/raw-land/all_set_page_bg.json
@@ -0,0 +1 @@
+{"v":"5.8.1","fr":60,"ip":0,"op":181,"w":796,"h":412,"nm":"SUW_Welcome_Handheld_Landscape_Dynamic","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-55]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.942},"o":{"x":0.167,"y":0.167},"t":0,"s":[700.266,85.857,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.043},"t":95,"s":[700.266,-103.727,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[700.266,85.857,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[-18.2,18.2,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[100.594,-128.921],[118.85,-93.491],[148.984,-67.406],[148.684,-27.55],[163.244,9.552],[144.457,44.702],[140.106,84.321],[107.136,106.715],[84.872,139.773],[45.271,144.279],[10.194,163.205],[-26.964,148.792],[-66.818,149.249],[-93.023,119.218],[-128.524,101.101],[-137.771,62.332],[-160.786,29.793],[-150.957,-8.833],[-156.215,-48.341],[-129.561,-77.974],[-115.856,-115.401],[-78.484,-129.253],[-48.956,-156.023],[-9.427,-150.921],[29.159,-160.903],[61.789,-138.015]],"o":[[-100.594,128.921],[-118.85,93.491],[-148.984,67.406],[-148.684,27.55],[-163.244,-9.552],[-144.456,-44.702],[-140.106,-84.321],[-107.136,-106.715],[-84.872,-139.773],[-45.271,-144.279],[-10.194,-163.205],[26.964,-148.792],[66.818,-149.249],[93.023,-119.218],[128.524,-101.101],[137.771,-62.332],[160.786,-29.793],[150.957,8.833],[156.215,48.341],[129.561,77.974],[115.856,115.4],[78.484,129.253],[48.956,156.023],[9.427,150.921],[-29.159,160.903],[-61.789,138.015]],"v":[[975.226,761.299],[707.165,899.424],[509.8,1127.42],[208.253,1125.148],[-72.46,1235.308],[-338.41,1093.162],[-638.164,1060.25],[-807.592,810.792],[-1057.715,642.348],[-1091.808,342.727],[-1235.002,77.338],[-1125.948,-203.807],[-1129.407,-505.342],[-902.191,-703.604],[-765.123,-972.207],[-471.796,-1042.166],[-225.603,-1216.305],[66.637,-1141.935],[365.557,-1181.715],[589.761,-980.053],[872.928,-876.361],[977.734,-593.606],[1180.277,-370.197],[1141.675,-71.124],[1217.196,220.821],[1044.029,467.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"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":"Polystar 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.713725490196,0.556862745098,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[10.989],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[10.989],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":181,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".tertiary","cl":"tertiary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.047]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-56]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.773],"y":[-0.035]},"t":95,"s":[-67]},{"t":180,"s":[-56]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.073]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[319.023]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.773],"y":[-0.054]},"t":95,"s":[388.573]},{"t":180,"s":[319.023]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[0.927]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[565.531]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.773],"y":[0.054]},"t":95,"s":[482.331]},{"t":180,"s":[565.531]}],"ix":4}},"a":{"a":0,"k":[164.438,1433.781,0],"ix":1,"l":2},"s":{"a":0,"k":[65,65,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[1193.125,1815.766],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.901960784314,0.764705882353,0.423529411765,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"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":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":181,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".black","cl":"black","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[398,206,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[2472,5352],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.125489994124,0.1294119891,0.141176006841,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":181,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw-sw600dp-land/all_set_page_bg.json b/quickstep/res/raw-sw600dp-land/all_set_page_bg.json
new file mode 100644
index 0000000..63b64da
--- /dev/null
+++ b/quickstep/res/raw-sw600dp-land/all_set_page_bg.json
@@ -0,0 +1 @@
+{"v":"5.8.1","fr":60,"ip":0,"op":181,"w":841,"h":701,"nm":"SUW_WelcomeScreen_FoldableOpen_Dynamic","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":180,"s":[55]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.939},"o":{"x":0.167,"y":0.167},"t":0,"s":[140.975,228.318,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.045},"t":95,"s":[140.975,47.65,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[140.975,228.318,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[18,18,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[100.594,-128.921],[118.85,-93.491],[148.984,-67.406],[148.684,-27.55],[163.244,9.552],[144.457,44.702],[140.106,84.321],[107.136,106.715],[84.872,139.773],[45.271,144.279],[10.194,163.205],[-26.964,148.792],[-66.818,149.249],[-93.023,119.218],[-128.524,101.101],[-137.771,62.332],[-160.786,29.793],[-150.957,-8.833],[-156.215,-48.341],[-129.561,-77.974],[-115.856,-115.401],[-78.484,-129.253],[-48.956,-156.023],[-9.427,-150.921],[29.159,-160.903],[61.789,-138.015]],"o":[[-100.594,128.921],[-118.85,93.491],[-148.984,67.406],[-148.684,27.55],[-163.244,-9.552],[-144.456,-44.702],[-140.106,-84.321],[-107.136,-106.715],[-84.872,-139.773],[-45.271,-144.279],[-10.194,-163.205],[26.964,-148.792],[66.818,-149.249],[93.023,-119.218],[128.524,-101.101],[137.771,-62.332],[160.786,-29.793],[150.957,8.833],[156.215,48.341],[129.561,77.974],[115.856,115.4],[78.484,129.253],[48.956,156.023],[9.427,150.921],[-29.159,160.903],[-61.789,138.015]],"v":[[975.226,761.299],[707.165,899.424],[509.8,1127.42],[208.253,1125.148],[-72.46,1235.308],[-338.41,1093.162],[-638.164,1060.25],[-807.592,810.792],[-1057.715,642.348],[-1091.808,342.727],[-1235.002,77.338],[-1125.948,-203.807],[-1129.407,-505.342],[-902.191,-703.604],[-765.123,-972.207],[-471.796,-1042.166],[-225.603,-1216.305],[66.637,-1141.935],[365.557,-1181.715],[589.761,-980.053],[872.928,-876.361],[977.734,-593.606],[1180.277,-370.197],[1141.675,-71.124],[1217.196,220.821],[1044.029,467.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"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":"Polystar 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.713725490196,0.556862745098,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[11.111],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[11.111],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":181,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".tertiary","cl":"tertiary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[0.619]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[67]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[-0.263]},"t":95,"s":[82]},{"t":180,"s":[67]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[0.913]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[639]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[-0.06]},"t":95,"s":[704]},{"t":180,"s":[639]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.12]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[527.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.083]},"t":95,"s":[471]},{"t":180,"s":[527.25]}],"ix":4}},"a":{"k":[{"s":[164.438,1433.781,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[164.438,1433.781,0],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[-25,25,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[2361.125,4541.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"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":"Ellipse 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.901960784314,0.764705882353,0.423529411765,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[6],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[6],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":181,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".black","cl":"black","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,350.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[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,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[420.5,-350.5],[-420.5,-350.5],[-420.5,350.5],[420.5,350.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":181,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw-sw600dp/all_set_page_bg.json b/quickstep/res/raw-sw600dp/all_set_page_bg.json
new file mode 100644
index 0000000..f2998a0
--- /dev/null
+++ b/quickstep/res/raw-sw600dp/all_set_page_bg.json
@@ -0,0 +1 @@
+{"v":"5.8.1","fr":60,"ip":0,"op":181,"w":701,"h":841,"nm":"SUW_WelcomeScreen_FoldableOpen_Portrait_Dynamic","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":180,"s":[55]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.949},"o":{"x":0.167,"y":0.167},"t":0,"s":[181.172,148.425,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.038},"t":95,"s":[181.172,-68.377,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[181.172,148.425,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[21.6,21.6,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[100.594,-128.921],[118.85,-93.491],[148.984,-67.406],[148.684,-27.55],[163.244,9.552],[144.457,44.702],[140.106,84.321],[107.136,106.715],[84.872,139.773],[45.271,144.279],[10.194,163.205],[-26.964,148.792],[-66.818,149.249],[-93.023,119.218],[-128.524,101.101],[-137.771,62.332],[-160.786,29.793],[-150.957,-8.833],[-156.215,-48.341],[-129.561,-77.974],[-115.856,-115.401],[-78.484,-129.253],[-48.956,-156.023],[-9.427,-150.921],[29.159,-160.903],[61.789,-138.015]],"o":[[-100.594,128.921],[-118.85,93.491],[-148.984,67.406],[-148.684,27.55],[-163.244,-9.552],[-144.456,-44.702],[-140.106,-84.321],[-107.136,-106.715],[-84.872,-139.773],[-45.271,-144.279],[-10.194,-163.205],[26.964,-148.792],[66.818,-149.249],[93.023,-119.218],[128.524,-101.101],[137.771,-62.332],[160.786,-29.793],[150.957,8.833],[156.215,48.341],[129.561,77.974],[115.856,115.4],[78.484,129.253],[48.956,156.023],[9.427,150.921],[-29.159,160.903],[-61.789,138.015]],"v":[[975.226,761.299],[707.165,899.424],[509.8,1127.42],[208.253,1125.148],[-72.46,1235.308],[-338.41,1093.162],[-638.164,1060.25],[-807.592,810.792],[-1057.715,642.348],[-1091.808,342.727],[-1235.002,77.338],[-1125.948,-203.807],[-1129.407,-505.342],[-902.191,-703.604],[-765.123,-972.207],[-471.796,-1042.166],[-225.603,-1216.305],[66.637,-1141.935],[365.557,-1181.715],[589.761,-980.053],[872.928,-876.361],[977.734,-593.606],[1180.277,-370.197],[1141.675,-71.124],[1217.196,220.821],[1044.029,467.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"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":"Polystar 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.713725490196,0.556862745098,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":9.3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":181,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".tertiary","cl":"tertiary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[0.619]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[67]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[-0.263]},"t":95,"s":[82]},{"t":180,"s":[67]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[0.927]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[458.803]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[-0.05]},"t":95,"s":[536.803]},{"t":180,"s":[458.803]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[707.143]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.069]},"t":95,"s":[639.643]},{"t":180,"s":[707.143]}],"ix":4}},"a":{"k":[{"s":[164.438,1433.781,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[164.438,1433.781,0],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[-30,30,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[2361.125,4541.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"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":"Ellipse 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.901960784314,0.764705882353,0.423529411765,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":181,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".black","cl":"black","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[350.5,420.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[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,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[420.5,-350.5],[-420.5,-350.5],[-420.5,350.5],[420.5,350.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":181,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw-sw720dp-land/all_set_page_bg.json b/quickstep/res/raw-sw720dp-land/all_set_page_bg.json
new file mode 100644
index 0000000..a994b0f
--- /dev/null
+++ b/quickstep/res/raw-sw720dp-land/all_set_page_bg.json
@@ -0,0 +1 @@
+{"v":"5.8.1","fr":60,"ip":0,"op":180,"w":1280,"h":800,"nm":"SUW_WelcomeScreen_Tablet_Landscape_Dynamic","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[288,540,0],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[25,25,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":180,"s":[56]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.986},"o":{"x":0.167,"y":0.167},"t":0,"s":[375.832,-1006.545,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.01},"t":95,"s":[375.832,-1811,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[375.832,-1006.545,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[110,110,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[75.615,-96.908],[89.338,-70.276],[111.99,-50.668],[111.764,-20.709],[122.709,7.18],[108.586,33.602],[105.316,63.383],[80.533,80.216],[63.797,105.066],[34.03,108.453],[7.663,122.679],[-20.269,111.845],[-50.226,112.189],[-69.924,89.614],[-96.61,75.997],[-103.56,46.854],[-120.861,22.395],[-113.472,-6.639],[-117.425,-36.337],[-97.389,-58.612],[-87.087,-86.745],[-58.996,-97.158],[-36.8,-117.281],[-7.086,-113.445],[21.918,-120.948],[46.446,-103.744]],"o":[[-75.615,96.909],[-89.338,70.276],[-111.99,50.668],[-111.764,20.709],[-122.709,-7.18],[-108.586,-33.602],[-105.316,-63.383],[-80.533,-80.216],[-63.797,-105.066],[-34.03,-108.453],[-7.663,-122.679],[20.269,-111.845],[50.226,-112.188],[69.924,-89.614],[96.61,-75.997],[103.56,-46.854],[120.861,-22.395],[113.472,6.64],[117.425,36.337],[97.389,58.612],[87.088,86.745],[58.995,97.158],[36.8,117.281],[7.087,113.445],[-21.918,120.948],[-46.446,103.744]],"v":[[733.209,572.105],[531.711,675.932],[383.354,847.313],[156.685,845.606],[-54.323,928.412],[-254.235,821.562],[-479.555,796.823],[-606.913,609.309],[-794.927,482.691],[-820.554,257.47],[-928.191,57.981],[-846.217,-153.353],[-848.817,-380.013],[-678.021,-529.044],[-574.99,-730.949],[-354.499,-783.537],[-169.439,-914.435],[50.234,-858.532],[274.928,-888.434],[443.46,-736.847],[656.313,-658.903],[735.094,-446.359],[887.344,-278.426],[858.327,-53.616],[915.095,165.835],[784.928,351.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.956862745098,0.729411764706,0.619607843137,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"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":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":720,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".tertiary","cl":"tertiary","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.248]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[57]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.172]},"t":95,"s":[75]},{"t":180,"s":[57]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.032]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[2618]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.022]},"t":95,"s":[2442]},{"t":180,"s":[2618]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.034]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[891]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.024]},"t":95,"s":[694]},{"t":180,"s":[891]}],"ix":4}},"a":{"a":0,"k":[164.438,1433.781,0],"ix":1,"l":2},"s":{"a":0,"k":[120,120,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3079.125,4685.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.752941176471,0.788235294118,0.752941176471,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"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":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw-sw720dp/all_set_page_bg.json b/quickstep/res/raw-sw720dp/all_set_page_bg.json
new file mode 100644
index 0000000..1030ffa
--- /dev/null
+++ b/quickstep/res/raw-sw720dp/all_set_page_bg.json
@@ -0,0 +1 @@
+{"v":"5.8.1","fr":60,"ip":0,"op":180,"w":800,"h":1280,"nm":"SUW_WelcomeScreen_Tablet_Portrait_Dynamic","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[288,528,0],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[25,25,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":180,"s":[56]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.986},"o":{"x":0.167,"y":0.167},"t":0,"s":[999.832,-2238.545,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.01},"t":95,"s":[999.832,-3043,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[999.832,-2238.545,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[200,200,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[75.615,-96.908],[89.338,-70.276],[111.99,-50.668],[111.764,-20.709],[122.709,7.18],[108.586,33.602],[105.316,63.383],[80.533,80.216],[63.797,105.066],[34.03,108.453],[7.663,122.679],[-20.269,111.845],[-50.226,112.189],[-69.924,89.614],[-96.61,75.997],[-103.56,46.854],[-120.861,22.395],[-113.472,-6.639],[-117.425,-36.337],[-97.389,-58.612],[-87.087,-86.745],[-58.996,-97.158],[-36.8,-117.281],[-7.086,-113.445],[21.918,-120.948],[46.446,-103.744]],"o":[[-75.615,96.909],[-89.338,70.276],[-111.99,50.668],[-111.764,20.709],[-122.709,-7.18],[-108.586,-33.602],[-105.316,-63.383],[-80.533,-80.216],[-63.797,-105.066],[-34.03,-108.453],[-7.663,-122.679],[20.269,-111.845],[50.226,-112.188],[69.924,-89.614],[96.61,-75.997],[103.56,-46.854],[120.861,-22.395],[113.472,6.64],[117.425,36.337],[97.389,58.612],[87.088,86.745],[58.995,97.158],[36.8,117.281],[7.087,113.445],[-21.918,120.948],[-46.446,103.744]],"v":[[733.209,572.105],[531.711,675.932],[383.354,847.313],[156.685,845.606],[-54.323,928.412],[-254.235,821.562],[-479.555,796.823],[-606.913,609.309],[-794.927,482.691],[-820.554,257.47],[-928.191,57.981],[-846.217,-153.353],[-848.817,-380.013],[-678.021,-529.044],[-574.99,-730.949],[-354.499,-783.537],[-169.439,-914.435],[50.234,-858.532],[274.928,-888.434],[443.46,-736.847],[656.313,-658.903],[735.094,-446.359],[887.344,-278.426],[858.327,-53.616],[915.095,165.835],[784.928,351.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.956862745098,0.729411764706,0.619607843137,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"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":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":720,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".tertiary","cl":"tertiary","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.248]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-39]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.172]},"t":95,"s":[-21]},{"t":180,"s":[-39]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.032]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[1490]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.022]},"t":95,"s":[1314]},{"t":180,"s":[1490]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.034]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[2967]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.024]},"t":95,"s":[2770]},{"t":180,"s":[2967]}],"ix":4}},"a":{"a":0,"k":[164.438,1433.781,0],"ix":1,"l":2},"s":{"a":0,"k":[168,168,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3079.125,4685.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.752941176471,0.788235294118,0.752941176471,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"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":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw/all_set_page_bg.json b/quickstep/res/raw/all_set_page_bg.json
new file mode 100644
index 0000000..4ae179d
--- /dev/null
+++ b/quickstep/res/raw/all_set_page_bg.json
@@ -0,0 +1 @@
+{"v":"5.8.1","fr":24,"ip":0,"op":72,"w":2472,"h":5352,"nm":"SUW_Welcome_Handheld_Dynamic","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 60","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1508,1364,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":72,"s":[56]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.986},"o":{"x":0.167,"y":0.167},"t":0,"s":[1505.832,1379.455,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.01},"t":38,"s":[1505.832,575,0],"to":[0,0,0],"ti":[0,0,0]},{"t":72,"s":[1505.832,1379.455,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[75.615,-96.908],[89.338,-70.276],[111.99,-50.668],[111.764,-20.709],[122.709,7.18],[108.586,33.602],[105.316,63.383],[80.533,80.216],[63.797,105.066],[34.03,108.453],[7.663,122.679],[-20.269,111.845],[-50.226,112.189],[-69.924,89.614],[-96.61,75.997],[-103.56,46.854],[-120.861,22.395],[-113.472,-6.639],[-117.425,-36.337],[-97.389,-58.612],[-87.087,-86.745],[-58.996,-97.158],[-36.8,-117.281],[-7.086,-113.445],[21.918,-120.948],[46.446,-103.744]],"o":[[-75.615,96.909],[-89.338,70.276],[-111.99,50.668],[-111.764,20.709],[-122.709,-7.18],[-108.586,-33.602],[-105.316,-63.383],[-80.533,-80.216],[-63.797,-105.066],[-34.03,-108.453],[-7.663,-122.679],[20.269,-111.845],[50.226,-112.188],[69.924,-89.614],[96.61,-75.997],[103.56,-46.854],[120.861,-22.395],[113.472,6.64],[117.425,36.337],[97.389,58.612],[87.088,86.745],[58.995,97.158],[36.8,117.281],[7.087,113.445],[-21.918,120.948],[-46.446,103.744]],"v":[[733.209,572.105],[531.711,675.932],[383.354,847.313],[156.685,845.606],[-54.323,928.412],[-254.235,821.562],[-479.555,796.823],[-606.913,609.309],[-794.927,482.691],[-820.554,257.47],[-928.191,57.981],[-846.217,-153.353],[-848.817,-380.013],[-678.021,-529.044],[-574.99,-730.949],[-354.499,-783.537],[-169.439,-914.435],[50.234,-858.532],[274.928,-888.434],[443.46,-736.847],[656.313,-658.903],[735.094,-446.359],[887.344,-278.426],[858.327,-53.616],[915.095,165.835],[784.928,351.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.839215686275,0.439215686275,0.388235294118,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"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":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":288,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".tertiary","cl":"tertiary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.248]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-56]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.172]},"t":38,"s":[-38]},{"t":72,"s":[-56]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.032]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[1720]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.022]},"t":38,"s":[1544]},{"t":72,"s":[1720]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.034]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[4069]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.024]},"t":38,"s":[3872]},{"t":72,"s":[4069]}],"ix":4}},"a":{"a":0,"k":[164.438,1433.781,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3079.125,4685.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.305882352941,0.309803921569,0.321568627451,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"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":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw/back_gesture_tutorial_animation.json b/quickstep/res/raw/back_gesture_tutorial_animation.json
new file mode 100644
index 0000000..368b4a8
--- /dev/null
+++ b/quickstep/res/raw/back_gesture_tutorial_animation.json
@@ -0,0 +1 @@
+{"v":"5.10.0","fr":60,"ip":0,"op":1695,"w":412,"h":892,"nm":"SUW_BackThumb_Combined_Preview V02","ddd":0,"assets":[{"id":"comp_0","nm":"Part02_Charade_Back_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".onSurfaceBack","cl":"onSurfaceBack","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":60,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":72,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":84,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":96,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":108,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":162,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":174,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":186,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":198,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":210,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":264,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":276,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":288,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":300,"s":[100]},{"t":312,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,446,0],"ix":2,"l":2},"a":{"a":0,"k":[206,561,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[250,892],"ix":2},"p":{"a":0,"k":[-65.5,0],"ix":3},"r":{"a":0,"k":73,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-37.5,561],"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":"Left Zone","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[250,892],"ix":2},"p":{"a":0,"k":[-65.5,0],"ix":3},"r":{"a":0,"k":73,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[449.5,561],"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":"Right Zone","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":312,"st":60,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":549,"s":[100]},{"t":555,"s":[0]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":38,"s":[215]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":44.666,"s":[273]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":78,"s":[360]},{"i":{"x":[0.76],"y":[1]},"o":{"x":[0.91],"y":[0]},"t":109,"s":[350]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":128,"s":[396]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.78],"y":[0]},"t":143,"s":[359]},{"i":{"x":[0.8],"y":[0.443]},"o":{"x":[0.3],"y":[0]},"t":145,"s":[359]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.32],"y":[0.901]},"t":155,"s":[396]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":184,"s":[300]},{"i":{"x":[0.39],"y":[1]},"o":{"x":[0.69],"y":[0]},"t":195,"s":[300]},{"i":{"x":[0.12],"y":[0.872]},"o":{"x":[0.88],"y":[0.128]},"t":231,"s":[17]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":246,"s":[52]},{"i":{"x":[0.8],"y":[0.433]},"o":{"x":[0.3],"y":[0]},"t":248,"s":[52]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.26],"y":[0.933]},"t":258,"s":[17]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":288,"s":[62]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":318,"s":[62]},{"t":379,"s":[20]}],"ix":3},"y":{"a":0,"k":561,"ix":4}},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0,"y":0.96},"o":{"x":0.61,"y":0},"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-37]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":52,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-73.75,-37]],"c":false}]},{"i":{"x":0.22,"y":1},"o":{"x":0.167,"y":0},"t":70,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.61,"y":0},"t":84,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":87,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":104,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":118,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0.8,"y":0.15},"o":{"x":0.3,"y":0},"t":119,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":129,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-43.75,-39]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.3,"y":0},"t":144,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0.95,"y":0.3},"o":{"x":0.9,"y":0},"t":146,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.05,"y":0.7},"t":156,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-43.75,-39]],"c":false}]},{"i":{"x":0.58,"y":1},"o":{"x":0.42,"y":0},"t":175,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.88,"y":0},"t":187,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.37,"y":0},"t":197,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-48.75,-39]],"c":false}]},{"i":{"x":0.37,"y":1},"o":{"x":0.33,"y":0},"t":206,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[48.25,-39]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":212,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[70.25,-25.75]],"c":false}]},{"i":{"x":0.6,"y":0.28},"o":{"x":0.26,"y":0},"t":218,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[70.25,-25.75]],"c":false}]},{"i":{"x":0.36,"y":1},"o":{"x":0.193,"y":1},"t":231,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[37.25,-34.75]],"c":false}]},{"i":{"x":0.8,"y":0.47},"o":{"x":0.3,"y":0},"t":247,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[60.25,-38.75]],"c":false}]},{"i":{"x":0.36,"y":1},"o":{"x":0.167,"y":0},"t":259,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[42.25,-37.75]],"c":false}]},{"i":{"x":0.61,"y":1},"o":{"x":0.68,"y":0},"t":274,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-35.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":284,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":298,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.75],[54.25,-37.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":318,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-21.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.44,"y":0},"t":332,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.75],[54.25,-37.75]],"c":false}]},{"t":379,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[12.25,-21.75]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0],"y":[0.96]},"o":{"x":[0.61],"y":[0]},"t":38,"s":[64]},{"t":52,"s":[58]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-37]],"c":false}],"t":38,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.882,-37]],"c":false}],"t":39,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-48.38,-37]],"c":false}],"t":40,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-49.551,-37]],"c":false}],"t":41,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.422,-37]],"c":false}],"t":42,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-60.793,-37]],"c":false}],"t":43,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-66.387,-37]],"c":false}],"t":44,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-69.039,-37]],"c":false}],"t":45,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-70.663,-37]],"c":false}],"t":46,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-71.754,-37]],"c":false}],"t":47,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-72.514,-37]],"c":false}],"t":48,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-73.043,-37]],"c":false}],"t":49,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-73.403,-37]],"c":false}],"t":50,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-73.629,-37]],"c":false}],"t":51,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-73.75,-37]],"c":false}],"t":52,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-73.718,-36.979]],"c":false}],"t":53,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-73.616,-36.911]],"c":false}],"t":54,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-73.432,-36.789]],"c":false}],"t":55,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-73.153,-36.604]],"c":false}],"t":56,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-72.76,-36.344]],"c":false}],"t":57,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-72.227,-35.99]],"c":false}],"t":58,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-71.52,-35.521]],"c":false}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-70.586,-34.902]],"c":false}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-69.35,-34.083]],"c":false}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-67.684,-32.978]],"c":false}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-65.381,-31.451]],"c":false}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-62.137,-29.3]],"c":false}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-58.031,-26.577]],"c":false}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-54.541,-24.264]],"c":false}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.478,-22.896]],"c":false}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.393,-22.177]],"c":false}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.889,-21.842]],"c":false}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.75,-21.75]],"c":false}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.939,-22.834]],"c":false}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.404,-25.508]],"c":false}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.907,-28.4]],"c":false}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.337,-30.878]],"c":false}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.686,-32.881]],"c":false}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.963,-34.478]],"c":false}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.184,-35.743]],"c":false}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.357,-36.738]],"c":false}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.491,-37.509]],"c":false}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.592,-38.091]],"c":false}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.665,-38.511]],"c":false}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.714,-38.792]],"c":false}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.741,-38.95]],"c":false}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.983]],"c":false}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.929]],"c":false}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.833]],"c":false}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.691]],"c":false}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.496]],"c":false}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.239]],"c":false}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-37.909]],"c":false}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-37.493]],"c":false}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-36.972]],"c":false}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-36.318]],"c":false}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35.491]],"c":false}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-34.426]],"c":false}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-33.011]],"c":false}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-31.018]],"c":false}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-27.941]],"c":false}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-23.806]],"c":false}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-21.75]],"c":false}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-24.609]],"c":false}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-29.442]],"c":false}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-32.383]],"c":false}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-34.249]],"c":false}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35.557]],"c":false}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-36.52]],"c":false}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-37.247]],"c":false}],"t":111,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-37.8]],"c":false}],"t":112,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.218]],"c":false}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.527]],"c":false}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.748]],"c":false}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.893]],"c":false}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.974]],"c":false}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.695,-39]],"c":false}],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.526,-39]],"c":false}],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.235,-39]],"c":false}],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.805,-39]],"c":false}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.21,-39]],"c":false}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.413,-39]],"c":false}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.353,-39]],"c":false}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-48.925,-39]],"c":false}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-46.917,-39]],"c":false}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-43.75,-39]],"c":false}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-44.32,-39]],"c":false}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-46.635,-39]],"c":false}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-48.75,-39]],"c":false}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.116,-39]],"c":false}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.069,-39]],"c":false}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.773,-39]],"c":false}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.309,-39]],"c":false}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.722,-39]],"c":false}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.041,-39]],"c":false}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.285,-39]],"c":false}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.468,-39]],"c":false}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.599,-39]],"c":false}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.686,-39]],"c":false}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.735,-39]],"c":false}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.692,-39]],"c":false}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.607,-39]],"c":false}],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.467,-39]],"c":false}],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.252,-39]],"c":false}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.927,-39]],"c":false}],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.424,-39]],"c":false}],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.593,-39]],"c":false}],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-49.964,-39]],"c":false}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-43.75,-39]],"c":false}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-46.25,-39]],"c":false}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.441,-39]],"c":false}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-48.326,-39]],"c":false}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-49.047,-39]],"c":false}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-49.662,-39]],"c":false}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.201,-39]],"c":false}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.679,-39]],"c":false}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.11,-39]],"c":false}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.5,-39]],"c":false}],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.855,-39]],"c":false}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.179,-39]],"c":false}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.475,-39]],"c":false}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.745,-39]],"c":false}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.989,-39]],"c":false}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.208,-39]],"c":false}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.4,-39]],"c":false}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.563,-39]],"c":false}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.689,-39]],"c":false}],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.946]],"c":false}],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.775]],"c":false}],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.483]],"c":false}],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.073]],"c":false}],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-37.565]],"c":false}],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-36.435]],"c":false}],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35.927]],"c":false}],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35.517]],"c":false}],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35.225]],"c":false}],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35.054]],"c":false}],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35]],"c":false}],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.731,-35.015]],"c":false}],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.669,-35.065]],"c":false}],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.553,-35.157]],"c":false}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.371,-35.303]],"c":false}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.099,-35.521]],"c":false}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.704,-35.837]],"c":false}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.121,-36.303]],"c":false}],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.225,-37.02]],"c":false}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-49.839,-38.129]],"c":false}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-48.75,-39]],"c":false}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.902,-21.75],[-45.458,-39]],"c":false}],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-9.002,-21.75],[-34.21,-39]],"c":false}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.091,-21.75],[-15.153,-39]],"c":false}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.396,-21.75],[6.137,-39]],"c":false}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5.896,-21.75],[23.596,-39]],"c":false}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.012,-21.75],[35.686,-39]],"c":false}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[10.941,-21.75],[43.172,-39]],"c":false}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[11.95,-21.75],[47.087,-39]],"c":false}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[48.25,-39]],"c":false}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[50.438,-37.682]],"c":false}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[56.89,-33.796]],"c":false}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[63.494,-29.819]],"c":false}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[67.635,-27.325]],"c":false}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[69.675,-26.096]],"c":false}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[70.25,-25.75]],"c":false}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[70.25,-25.75]],"c":false}],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[69.991,-25.821]],"c":false}],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[69.25,-26.023]],"c":false}],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[68.07,-26.344]],"c":false}],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[66.487,-26.776]],"c":false}],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[64.527,-27.311]],"c":false}],"t":223,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[62.212,-27.942]],"c":false}],"t":224,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[59.559,-28.666]],"c":false}],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[56.584,-29.477]],"c":false}],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[53.299,-30.373]],"c":false}],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[49.715,-31.35]],"c":false}],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[45.841,-32.407]],"c":false}],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[41.683,-33.541]],"c":false}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[37.25,-34.75]],"c":false}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[43.95,-35.915]],"c":false}],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[49.066,-36.805]],"c":false}],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[52.726,-37.441]],"c":false}],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[55.247,-37.88]],"c":false}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[56.958,-38.177]],"c":false}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[58.111,-38.378]],"c":false}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[58.886,-38.513]],"c":false}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[59.404,-38.603]],"c":false}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[59.744,-38.662]],"c":false}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[59.964,-38.7]],"c":false}],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[60.1,-38.724]],"c":false}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[60.18,-38.738]],"c":false}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[60.223,-38.745]],"c":false}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[60.25,-38.75]],"c":false}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[60.059,-38.739]],"c":false}],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[59.562,-38.712]],"c":false}],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[58.827,-38.671]],"c":false}],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[57.889,-38.619]],"c":false}],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[56.769,-38.557]],"c":false}],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[55.47,-38.484]],"c":false}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[53.99,-38.402]],"c":false}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[52.313,-38.309]],"c":false}],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[50.406,-38.203]],"c":false}],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[48.21,-38.081]],"c":false}],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[45.599,-37.936]],"c":false}],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[42.25,-37.75]],"c":false}],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[42.797,-37.659]],"c":false}],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[44.055,-37.449]],"c":false}],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[45.566,-37.197]],"c":false}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[47.075,-36.946]],"c":false}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[48.466,-36.714]],"c":false}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[49.697,-36.509]],"c":false}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[50.76,-36.332]],"c":false}],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[51.659,-36.182]],"c":false}],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[52.403,-36.058]],"c":false}],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[53.005,-35.957]],"c":false}],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[53.476,-35.879]],"c":false}],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[53.827,-35.821]],"c":false}],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.067,-35.78]],"c":false}],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.205,-35.757]],"c":false}],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-35.75]],"c":false}],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-35.641]],"c":false}],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-35.273]],"c":false}],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-34.565]],"c":false}],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-33.397]],"c":false}],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-31.597]],"c":false}],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-29.011]],"c":false}],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-25.923]],"c":false}],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-23.417]],"c":false}],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-22.107]],"c":false}],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-21.75]],"c":false}],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.215],[54.25,-25.469]],"c":false}],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.54],[54.25,-28.071]],"c":false}],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.795],[54.25,-30.114]],"c":false}],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.003],[54.25,-31.77]],"c":false}],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.173],[54.25,-33.132]],"c":false}],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.313],[54.25,-34.254]],"c":false}],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.428],[54.25,-35.176]],"c":false}],"t":291,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.522],[54.25,-35.926]],"c":false}],"t":292,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.597],[54.25,-36.525]],"c":false}],"t":293,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.655],[54.25,-36.991]],"c":false}],"t":294,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.698],[54.25,-37.335]],"c":false}],"t":295,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.728],[54.25,-37.571]],"c":false}],"t":296,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.745],[54.25,-37.706]],"c":false}],"t":297,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.744],[54.25,-37.703]],"c":false}],"t":300,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.736],[54.25,-37.64]],"c":false}],"t":301,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.725],[54.25,-37.548]],"c":false}],"t":302,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.709],[54.25,-37.423]],"c":false}],"t":303,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.689],[54.25,-37.261]],"c":false}],"t":304,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.663],[54.25,-37.057]],"c":false}],"t":305,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.632],[54.25,-36.805]],"c":false}],"t":306,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.593],[54.25,-36.497]],"c":false}],"t":307,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.547],[54.25,-36.124]],"c":false}],"t":308,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.49],[54.25,-35.672]],"c":false}],"t":309,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.422],[54.25,-35.123]],"c":false}],"t":310,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.338],[54.25,-34.452]],"c":false}],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.234],[54.25,-33.619]],"c":false}],"t":312,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.102],[54.25,-32.563]],"c":false}],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.928],[54.25,-31.172]],"c":false}],"t":314,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.685],[54.25,-29.229]],"c":false}],"t":315,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.325],[54.25,-26.348]],"c":false}],"t":316,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.933],[54.25,-23.212]],"c":false}],"t":317,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-21.75]],"c":false}],"t":318,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.081],[54.25,-24.402]],"c":false}],"t":319,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.642],[54.25,-28.884]],"c":false}],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.983],[54.25,-31.613]],"c":false}],"t":321,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.199],[54.25,-33.344]],"c":false}],"t":322,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.351],[54.25,-34.556]],"c":false}],"t":323,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.462],[54.25,-35.45]],"c":false}],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.547],[54.25,-36.124]],"c":false}],"t":325,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.611],[54.25,-36.637]],"c":false}],"t":326,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.659],[54.25,-37.024]],"c":false}],"t":327,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.695],[54.25,-37.311]],"c":false}],"t":328,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.721],[54.25,-37.516]],"c":false}],"t":329,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.738],[54.25,-37.651]],"c":false}],"t":330,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.747],[54.25,-37.726]],"c":false}],"t":331,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.748],[54.215,-37.737]],"c":false}],"t":333,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.743],[54.103,-37.694]],"c":false}],"t":334,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.733],[53.897,-37.616]],"c":false}],"t":335,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.718],[53.577,-37.494]],"c":false}],"t":336,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.696],[53.114,-37.317]],"c":false}],"t":337,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.665],[52.467,-37.071]],"c":false}],"t":338,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.623],[51.579,-36.732]],"c":false}],"t":339,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.565],[50.358,-36.268]],"c":false}],"t":340,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.484],[48.671,-35.624]],"c":false}],"t":341,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.372],[46.318,-34.728]],"c":false}],"t":342,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.22],[43.116,-33.508]],"c":false}],"t":343,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.035],[39.233,-32.029]],"c":false}],"t":344,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.852],[35.389,-30.565]],"c":false}],"t":345,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.696],[32.113,-29.317]],"c":false}],"t":346,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.569],[29.44,-28.299]],"c":false}],"t":347,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.464],[27.247,-27.463]],"c":false}],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.377],[25.416,-26.766]],"c":false}],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.303],[23.861,-26.173]],"c":false}],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.239],[22.522,-25.663]],"c":false}],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.184],[21.354,-25.218]],"c":false}],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.135],[20.327,-24.827]],"c":false}],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.091],[19.418,-24.481]],"c":false}],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.053],[18.608,-24.172]],"c":false}],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.018],[17.882,-23.896]],"c":false}],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.987],[17.231,-23.648]],"c":false}],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.959],[16.645,-23.424]],"c":false}],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.934],[16.117,-23.223]],"c":false}],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.911],[15.64,-23.041]],"c":false}],"t":360,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.891],[15.209,-22.877]],"c":false}],"t":361,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.872],[14.82,-22.729]],"c":false}],"t":362,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.856],[14.469,-22.595]],"c":false}],"t":363,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.841],[14.153,-22.475]],"c":false}],"t":364,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.827],[13.869,-22.367]],"c":false}],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.815],[13.615,-22.27]],"c":false}],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.804],[13.387,-22.183]],"c":false}],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.795],[13.185,-22.106]],"c":false}],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.786],[13.007,-22.038]],"c":false}],"t":369,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.779],[12.851,-21.979]],"c":false}],"t":370,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.772],[12.716,-21.927]],"c":false}],"t":371,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.767],[12.6,-21.883]],"c":false}],"t":372,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.762],[12.502,-21.846]],"c":false}],"t":373,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.758],[12.422,-21.816]],"c":false}],"t":374,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.755],[12.358,-21.791]],"c":false}],"t":375,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.753],[12.31,-21.773]],"c":false}],"t":376,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.751],[12.276,-21.76]],"c":false}],"t":377,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[12.256,-21.752]],"c":false}],"t":378,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[63.97],"t":39,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.855],"t":40,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":41,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.922],"t":42,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.99],"t":43,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.699],"t":44,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.087],"t":45,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.712],"t":46,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.461],"t":47,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.285],"t":48,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.163],"t":49,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.08],"t":50,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.028],"t":51,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","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":1,"k":[{"i":{"x":0,"y":0.96},"o":{"x":0.61,"y":0},"t":38,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-100.574],[-0.443,-79.498],[-11.742,-100.574]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":52,"s":[{"i":[[-5.169,3.179],[12.869,0],[-4.198,-2.581]],"o":[[4.685,-2.881],[-11.625,0],[5.169,3.179]],"v":[[7.5,-122.761],[-0.488,-101.685],[-8.756,-122.761]],"c":true}]},{"i":{"x":0.22,"y":1},"o":{"x":0.167,"y":0},"t":70,"s":[{"i":[[-4.397,3.179],[10.946,0],[-3.57,-2.581]],"o":[[3.985,-2.881],[-9.888,0],[4.397,3.179]],"v":[[6.349,-98.761],[-0.446,-77.685],[-7.478,-98.761]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.61,"y":0},"t":84,"s":[{"i":[[-7.314,2.551],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.314,2.551]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":87,"s":[{"i":[[-7.314,2.551],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.314,2.551]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":104,"s":[{"i":[[-4.397,3.179],[10.946,0],[-3.57,-2.581]],"o":[[3.985,-2.881],[-9.888,0],[4.397,3.179]],"v":[[6.349,-98.761],[-0.446,-77.685],[-7.478,-98.761]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":118,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0.8,"y":0.15},"o":{"x":0.3,"y":0},"t":119,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":129,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-93.574],[-0.443,-72.498],[-11.742,-93.574]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.3,"y":0},"t":144,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0.95,"y":0.3},"o":{"x":0.9,"y":0},"t":146,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.05,"y":0.7},"t":156,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-93.574],[-0.443,-72.498],[-11.742,-93.574]],"c":true}]},{"i":{"x":0.58,"y":1},"o":{"x":0.42,"y":0},"t":175,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.88,"y":0},"t":187,"s":[{"i":[[-4.761,3.179],[11.853,0],[-3.866,-2.581]],"o":[[4.316,-2.881],[-10.708,0],[4.761,3.179]],"v":[[7.005,-103.574],[-0.353,-82.498],[-7.969,-103.574]],"c":true}]},{"i":{"x":0.39,"y":1},"o":{"x":0.37,"y":0},"t":197,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.531,-98.324],[-0.385,-77.248],[-11.685,-98.324]],"c":true}]},{"i":{"x":0.37,"y":1},"o":{"x":0.33,"y":0},"t":206,"s":[{"i":[[-7.064,-3.179],[17.586,0],[-5.736,2.581]],"o":[[6.403,2.881],[-15.887,0],[7.064,-3.179]],"v":[[10.645,54.262],[-0.271,33.186],[-11.57,54.262]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":212,"s":[{"i":[[-5.201,-3.179],[12.948,0],[-4.224,2.581]],"o":[[4.714,2.881],[-11.697,0],[5.201,-3.179]],"v":[[7.839,75.262],[-0.198,54.186],[-8.518,75.262]],"c":true}]},{"i":{"x":0.6,"y":0.28},"o":{"x":0.26,"y":0},"t":218,"s":[{"i":[[-5.201,-3.179],[12.948,0],[-4.224,2.581]],"o":[[4.714,2.881],[-11.697,0],[5.201,-3.179]],"v":[[7.839,75.262],[-0.198,54.186],[-8.518,75.262]],"c":true}]},{"i":{"x":0.36,"y":1},"o":{"x":0.193,"y":1},"t":231,"s":[{"i":[[-5.201,-3.179],[12.948,0],[-4.224,2.581]],"o":[[4.714,2.881],[-11.697,0],[5.201,-3.179]],"v":[[7.839,44.262],[-0.198,23.186],[-8.518,44.262]],"c":true}]},{"i":{"x":0.8,"y":0.47},"o":{"x":0.3,"y":0},"t":247,"s":[{"i":[[-7.064,-3.179],[17.586,0],[-5.736,2.581]],"o":[[6.403,2.881],[-15.887,0],[7.064,-3.179]],"v":[[10.562,66.762],[-0.355,45.686],[-11.654,66.762]],"c":true}]},{"i":{"x":0.36,"y":1},"o":{"x":0.17,"y":0},"t":259,"s":[{"i":[[-5.201,-3.179],[12.948,0],[-4.224,2.581]],"o":[[4.714,2.881],[-11.697,0],[5.201,-3.179]],"v":[[7.821,48.012],[-0.216,26.936],[-8.536,48.012]],"c":true}]},{"i":{"x":0.61,"y":1},"o":{"x":0.68,"y":0},"t":274,"s":[{"i":[[-7.509,-1.904],[17.586,0],[-5.736,2.581]],"o":[[6.403,2.881],[-15.887,0],[7.509,-1.904]],"v":[[10.624,61.012],[-0.293,39.936],[-11.592,61.012]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":284,"s":[{"i":[[-5.201,-3.179],[12.948,0],[-4.224,2.581]],"o":[[4.714,2.881],[-11.697,0],[5.201,-3.179]],"v":[[7.821,58.887],[-0.216,37.811],[-8.536,58.887]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":298,"s":[{"i":[[-7.509,-1.904],[17.586,0],[-5.736,2.581]],"o":[[6.403,2.881],[-15.887,0],[7.509,-1.904]],"v":[[10.624,61.012],[-0.293,39.936],[-11.592,61.012]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":318,"s":[{"i":[[-5.201,-3.179],[12.948,0],[-4.224,2.581]],"o":[[4.714,2.881],[-11.697,0],[5.201,-3.179]],"v":[[7.821,58.887],[-0.216,37.811],[-8.536,58.887]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.44,"y":0},"t":332,"s":[{"i":[[-7.509,-1.904],[17.586,0],[-5.736,2.581]],"o":[[6.403,2.881],[-15.887,0],[7.509,-1.904]],"v":[[10.624,61.012],[-0.293,39.936],[-11.592,61.012]],"c":true}]},{"t":379,"s":[{"i":[[-5.755,-1.904],[13.479,0],[-4.396,2.581]],"o":[[4.907,2.881],[-12.176,0],[5.755,-1.904]],"v":[[8.138,12.762],[-0.229,-8.314],[-8.889,12.762]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.228,-164.922],"ix":2},"a":{"a":0,"k":[-0.228,-164.922],"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":3,"mn":"ADBE Vector Group","hd":false}],"ip":38,"op":380,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":549,"s":[100]},{"t":555,"s":[0]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.426],"y":[0.515]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[206]},{"i":{"x":[0.404],"y":[1]},"o":{"x":[0.654],"y":[-0.5]},"t":18,"s":[200]},{"t":38,"s":[215]}],"ix":3},"y":{"a":0,"k":561,"ix":4}},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.48,"y":0.2},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.1,"y":1},"o":{"x":0.44,"y":0},"t":18,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":24,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.643,-21.893],[-35.357,-21.893]],"c":false}]},{"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-37]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.52],"y":[0.96]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[48]},{"t":18,"s":[64]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":18,"s":[90]}],"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":"Right","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":1,"k":[{"i":{"x":0.51,"y":1},"o":{"x":0.88,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":24,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.643,-21.893],[-35.357,-21.893]],"c":false}]},{"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-7.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.52],"y":[0.96]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[48]},{"t":18,"s":[64]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":1,"k":[{"t":0,"s":[0],"h":1},{"t":12,"s":[100],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","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":1,"k":[{"i":{"x":0.51,"y":1},"o":{"x":0.88,"y":0},"t":0,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.52,-34.949],[-0.396,-13.873],[-11.695,-34.949]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":24,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.531,-85.949],[-0.385,-64.873],[-11.685,-85.949]],"c":true}]},{"t":38,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-100.574],[-0.443,-79.498],[-11.742,-100.574]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.266,-177.656],"ix":2},"a":{"a":0,"k":[-0.266,-177.656],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":0,"s":[0],"h":1},{"t":12,"s":[100],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bottom Rounding","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":38,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".surfaceBack","cl":"surfaceBack","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,446,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[412,892],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Rectangle 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.976,0.635,0.725,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.976,0.635,0.725,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":380,"st":-145,"ct":1,"bm":0}]},{"id":"comp_1","nm":"Part03_Back_Demonstration_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Pill Snap Release (RHS)","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":359,"s":[245]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":369,"s":[206]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[1],"y":[0]},"t":444,"s":[206]},{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":483,"s":[196]},{"t":543,"s":[206]}],"ix":3},"y":{"a":0,"k":561,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":496,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"Center to Right Side","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.74],"y":[0]},"t":193,"s":[-39]},{"t":254,"s":[135]}],"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":496,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Pill Snap Release (LHS)","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":99,"s":[-36]},{"t":109,"s":[0]}],"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":496,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":483,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":489,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":1177,"s":[100]},{"t":1183,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[2,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":483,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"t":533,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[68,-21.75],[-64,-21.75]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":496,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":52,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"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":"Right","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,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":496,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":64,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":0,"k":0,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":483,"op":496,"st":483,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":161,"s":[100]},{"t":172,"s":[100]}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.28,"y":1},"o":{"x":0.65,"y":0},"t":365,"s":[-8,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.12,"y":1},"o":{"x":0.44,"y":0},"t":395,"s":[100,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.809,"y":0.809},"o":{"x":0.66,"y":0.66},"t":444,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":458,"s":[0,0,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":1,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":1,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[237,561],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[235.991,561],"t":360,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[231.776,561],"t":361,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[222.675,561],"t":362,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[213.07,561],"t":363,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206.753,561],"t":364,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[202.837,561],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[200.507,561],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[199.379,561],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[199.199,561],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[199.834,561],"t":369,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[201.031,561],"t":370,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[202.64,561],"t":371,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[204.751,561],"t":372,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[207.472,561],"t":373,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[210.976,561],"t":374,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[215.498,561],"t":375,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[221.352,561],"t":376,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[228.919,561],"t":377,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[238.452,561],"t":378,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[249.568,561],"t":379,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[260.744,561],"t":380,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[270.465,561],"t":381,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[278.303,561],"t":382,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[284.493,561],"t":383,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[289.378,561],"t":384,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[293.262,561],"t":385,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[296.366,561],"t":386,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[298.846,561],"t":387,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[300.829,561],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[302.402,561],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[303.623,561],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[304.548,561],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[305.218,561],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[305.667,561],"t":393,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[305.92,561],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[305.686,561],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[305.257,561],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[304.609,561],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[303.701,561],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[302.486,561],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[300.899,561],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[298.87,561],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[296.298,561],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[293.059,561],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[289.024,561],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[284.089,561],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[278.253,561],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[271.758,561],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[265.032,561],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[258.543,561],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[252.599,561],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[247.3,561],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[242.629,561],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[238.525,561],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[234.908,561],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[231.703,561],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[228.849,561],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[226.302,561],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[224.024,561],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[221.979,561],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[220.138,561],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[218.478,561],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[216.98,561],"t":424,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[215.627,561],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[214.407,561],"t":426,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[213.304,561],"t":427,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[212.307,561],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[211.408,561],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[210.598,561],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[209.872,561],"t":431,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[209.226,561],"t":432,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[208.653,561],"t":433,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[208.147,561],"t":434,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[207.705,561],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[207.321,561],"t":436,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206.992,561],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206.715,561],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206.488,561],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206.307,561],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206.169,561],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[205.979,561],"t":447,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[205.794,561],"t":453,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[205.612,561],"t":456,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[205.449,561],"t":458,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[205.247,561],"t":460,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[205.129,561],"t":461,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[204.999,561],"t":462,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[204.856,561],"t":463,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[204.697,561],"t":464,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[204.522,561],"t":465,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[204.329,561],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[204.115,561],"t":467,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[203.877,561],"t":468,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[203.614,561],"t":469,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[203.319,561],"t":470,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[202.988,561],"t":471,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[202.614,561],"t":472,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[202.188,561],"t":473,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[201.698,561],"t":474,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[201.126,561],"t":475,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[200.45,561],"t":476,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[199.64,561],"t":477,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[198.683,561],"t":478,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[197.66,561],"t":479,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[196.814,561],"t":480,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[196.303,561],"t":481,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[196.064,561],"t":482,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[196.21,561],"t":492,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[196.404,561],"t":495,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.25,-21.75]],"c":false}],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.376,-21.75]],"c":false}],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.79,-21.75]],"c":false}],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-9.556,-21.75]],"c":false}],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-10.771,-21.75]],"c":false}],"t":369,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-12.58,-21.75]],"c":false}],"t":370,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-15.219,-21.75]],"c":false}],"t":371,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-19.13,-21.75]],"c":false}],"t":372,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-25.275,-21.75]],"c":false}],"t":373,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-36.314,-21.75]],"c":false}],"t":374,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-52.308,-21.75]],"c":false}],"t":375,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.456,-21.75]],"c":false}],"t":376,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}],"t":377,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-23.074]],"c":false}],"t":378,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-26.642]],"c":false}],"t":379,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-30.646]],"c":false}],"t":380,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-34.048]],"c":false}],"t":381,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-36.752]],"c":false}],"t":382,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.877]],"c":false}],"t":383,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.542]],"c":false}],"t":384,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.84]],"c":false}],"t":385,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.838]],"c":false}],"t":386,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.587]],"c":false}],"t":387,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.126]],"c":false}],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.485]],"c":false}],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.686]],"c":false}],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.727]],"c":false}],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.655]],"c":false}],"t":395,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.528]],"c":false}],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.338]],"c":false}],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.078]],"c":false}],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.735]],"c":false}],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.295]],"c":false}],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.741]],"c":false}],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.046]],"c":false}],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.174]],"c":false}],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.071]],"c":false}],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.652]],"c":false}],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-36.765]],"c":false}],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-34.107]],"c":false}],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-30.004]],"c":false}],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-24.491]],"c":false}],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-25.562]],"c":false}],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-32.006]],"c":false}],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-35.928]],"c":false}],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.416]],"c":false}],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.159]],"c":false}],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.444]],"c":false}],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.413]],"c":false}],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.15]],"c":false}],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.707]],"c":false}],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.12]],"c":false}],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.414]],"c":false}],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.608]],"c":false}],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.716]],"c":false}],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.727]],"c":false}],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.655]],"c":false}],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.528]],"c":false}],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.338]],"c":false}],"t":431,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.078]],"c":false}],"t":432,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.735]],"c":false}],"t":433,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.295]],"c":false}],"t":434,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.741]],"c":false}],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.046]],"c":false}],"t":436,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.174]],"c":false}],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.071]],"c":false}],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.652]],"c":false}],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-36.765]],"c":false}],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-34.107]],"c":false}],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-30.004]],"c":false}],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-24.491]],"c":false}],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-25.562]],"c":false}],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-32.006]],"c":false}],"t":446,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-35.928]],"c":false}],"t":447,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.416]],"c":false}],"t":448,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.159]],"c":false}],"t":449,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.444]],"c":false}],"t":450,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.413]],"c":false}],"t":451,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.15]],"c":false}],"t":452,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.707]],"c":false}],"t":453,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.12]],"c":false}],"t":454,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.414]],"c":false}],"t":455,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.608]],"c":false}],"t":456,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.716]],"c":false}],"t":457,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}],"t":458,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.24,-21.75],[-59.565,-44.728]],"c":false}],"t":459,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.209,-21.75],[-59.374,-44.656]],"c":false}],"t":460,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.153,-21.75],[-59.028,-44.526]],"c":false}],"t":461,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.066,-21.75],[-58.496,-44.327]],"c":false}],"t":462,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.943,-21.75],[-57.738,-44.043]],"c":false}],"t":463,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.773,-21.75],[-56.697,-43.653]],"c":false}],"t":464,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.544,-21.75],[-55.293,-43.127]],"c":false}],"t":465,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.236,-21.75],[-53.402,-42.418]],"c":false}],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.816,-21.75],[-50.823,-41.452]],"c":false}],"t":467,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.227,-21.75],[-47.209,-40.097]],"c":false}],"t":468,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-5.364,-21.75],[-41.912,-38.112]],"c":false}],"t":469,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.063,-21.75],[-33.927,-35.12]],"c":false}],"t":470,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.437,-21.75],[-23.948,-31.38]],"c":false}],"t":471,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.136,-21.75],[-15.963,-28.388]],"c":false}],"t":472,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.273,-21.75],[-10.666,-26.403]],"c":false}],"t":473,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.316,-21.75],[-7.052,-25.048]],"c":false}],"t":474,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.736,-21.75],[-4.473,-24.082]],"c":false}],"t":475,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.044,-21.75],[-2.582,-23.373]],"c":false}],"t":476,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.273,-21.75],[-1.178,-22.847]],"c":false}],"t":477,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.443,-21.75],[-0.137,-22.457]],"c":false}],"t":478,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.566,-21.75],[0.621,-22.173]],"c":false}],"t":479,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.653,-21.75],[1.153,-21.974]],"c":false}],"t":480,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.709,-21.75],[1.499,-21.844]],"c":false}],"t":481,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.74,-21.75],[1.69,-21.772]],"c":false}],"t":482,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.75,-21.75],[1.75,-21.75]],"c":false}],"t":483,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":444,"s":[100]},{"t":483,"s":[30]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":496,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[27],"t":349,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.046],"t":350,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.193],"t":351,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.452],"t":352,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.84],"t":353,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.374],"t":354,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[29.079],"t":355,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[29.984],"t":356,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[31.129],"t":357,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.563],"t":358,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[34.353],"t":359,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.587],"t":360,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[39.37],"t":361,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[42.799],"t":362,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[46.822],"t":363,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.965],"t":364,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.371],"t":365,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.571],"t":366,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.685],"t":367,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58],"t":368,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.945],"t":448,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.911],"t":449,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.867],"t":450,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.811],"t":451,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.743],"t":452,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.66],"t":453,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.56],"t":454,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.44],"t":455,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.297],"t":456,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.126],"t":457,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.923],"t":458,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.681],"t":459,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.392],"t":460,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.052],"t":461,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.66],"t":462,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.226],"t":463,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.774],"t":464,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.34],"t":465,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.948],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.608],"t":467,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.319],"t":468,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.077],"t":469,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.874],"t":470,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.703],"t":471,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.56],"t":472,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.44],"t":473,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.34],"t":474,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.257],"t":475,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.189],"t":476,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.133],"t":477,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.089],"t":478,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.055],"t":479,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.003],"t":482,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.63,"y":1},"o":{"x":1,"y":0},"t":365,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.25,-21.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.18,"y":0},"t":377,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.67,"y":0},"t":391,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":393,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":410,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":424,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":427,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":444,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}]},{"i":{"x":0.24,"y":1},"o":{"x":0.76,"y":0},"t":458,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"t":483,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.75,-21.75],[1.75,-21.75]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":444,"s":[100]},{"t":483,"s":[30]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":496,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.68],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":349,"s":[27]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.307],"y":[0]},"t":368,"s":[58]},{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":444,"s":[58]},{"t":483,"s":[52]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.63,"y":1},"o":{"x":1,"y":0},"t":365,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.895,-50.571],[0.709,-71.669],[11.321,-50.571]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.18,"y":0},"t":377,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.916,2.689],[0.688,-18.41],[11.3,2.689]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"t":391,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":393,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":410,"s":[{"i":[[6.319,0],[-13.595,0],[4.434,2.581]],"o":[[-4.95,2.881],[12.282,0],[-6.319,0]],"v":[[-8.484,18.867],[0.487,-2.232],[8.69,18.867]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":424,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":427,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":444,"s":[{"i":[[6.319,0],[-13.595,0],[4.434,2.581]],"o":[[-4.95,2.881],[12.282,0],[-6.319,0]],"v":[[-8.484,18.867],[0.487,-2.232],[8.69,18.867]],"c":true}]},{"t":458,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":496,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.49,"y":1},"o":{"x":0.76,"y":0},"t":444,"s":[0,-90],"to":[0,0],"ti":[0,0]},{"t":483,"s":[0,-24]}],"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":1,"k":[{"t":471,"s":[100],"h":1},{"t":472,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Round Bottom","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":365,"op":483,"st":161,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-385,"s":[0]},{"t":-375,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"k":[{"s":[0],"t":260,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.049],"t":261,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.217],"t":262,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.549],"t":263,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[1.125],"t":264,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.08],"t":265,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.65],"t":266,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[5.983],"t":267,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[8.42],"t":268,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[10.26],"t":269,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[11.561],"t":270,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[12.504],"t":271,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.205],"t":272,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.735],"t":273,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.136],"t":274,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.439],"t":275,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.662],"t":276,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.82],"t":277,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.924],"t":278,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.982],"t":279,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15],"t":280,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.993],"t":311,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.983],"t":312,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.969],"t":313,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.95],"t":314,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.927],"t":315,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.898],"t":316,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.864],"t":317,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.823],"t":318,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.776],"t":319,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.722],"t":320,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.66],"t":321,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.589],"t":322,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.509],"t":323,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.418],"t":324,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.315],"t":325,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.199],"t":326,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.992],"t":327,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.604],"t":328,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.014],"t":329,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[12.195],"t":330,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[11.118],"t":331,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[9.743],"t":332,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[8.024],"t":333,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[5.9],"t":334,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.298],"t":335,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.122],"t":336,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.744],"t":337,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-8.44],"t":338,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-14.148],"t":339,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.15],"t":340,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-29.91],"t":341,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-41.097],"t":342,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.23],"t":343,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-71.313],"t":344,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-86.247],"t":345,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-98.076],"t":346,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-106.999],"t":347,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-113.761],"t":348,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-118.959],"t":349,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.002],"t":350,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-126.173],"t":351,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-128.666],"t":352,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-130.616],"t":353,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-132.118],"t":354,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-133.247],"t":355,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.06],"t":356,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.601],"t":357,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.904],"t":358,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue X Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":309,"s":[0]},{"t":350,"s":[-7]}],"ix":1}}]},{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":2,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":2,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[-38.971,0],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-38.882,0],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-38.729,0],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-38.508,0],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-38.215,0],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-37.845,0],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-37.393,0],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-36.853,0],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-36.218,0],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-35.482,0],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-34.635,0],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-33.669,0],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-32.573,0],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-31.334,0],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-29.941,0],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-28.375,0],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-26.619,0],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-24.651,0],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-22.446,0],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.974,0],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.197,0],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.074,0],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.551,0],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.565,0],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.038,0],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[3.122,0],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[9.019,0],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[15.767,0],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[23.46,0],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[32.119,0],"t":223,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[41.61,0],"t":224,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[51.57,0],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[61.455,0],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[70.746,0],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[79.125,0],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[86.502,0],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[92.926,0],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[98.503,0],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[103.351,0],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[107.577,0],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[111.274,0],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[114.519,0],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[117.373,0],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[119.888,0],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[122.108,0],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[124.067,0],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[125.795,0],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[127.317,0],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[128.655,0],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[129.825,0],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[130.844,0],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[131.725,0],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[132.481,0],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[133.12,0],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[133.653,0],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[134.087,0],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[134.429,0],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[134.686,0],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[134.863,0],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[134.967,0],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[135.049,0],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[135.217,0],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[135.549,0],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[136.125,0],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[137.08,0],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[138.65,0],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[140.983,0],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[143.42,0],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[145.26,0],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[146.561,0],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[147.504,0],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[148.205,0],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[148.735,0],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.136,0],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.439,0],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.662,0],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.82,0],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.924,0],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.776,0],"t":319,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.66,0],"t":321,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.589,0],"t":322,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.509,0],"t":323,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.418,0],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.315,0],"t":325,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.199,0],"t":326,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[148.992,0],"t":327,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[148.604,0],"t":328,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[148.014,0],"t":329,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[147.195,0],"t":330,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[146.118,0],"t":331,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[144.743,0],"t":332,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[143.024,0],"t":333,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[140.9,0],"t":334,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[138.298,0],"t":335,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[135.122,0],"t":336,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[131.256,0],"t":337,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[126.56,0],"t":338,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[120.852,0],"t":339,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[113.85,0],"t":340,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[105.09,0],"t":341,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[93.903,0],"t":342,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[79.77,0],"t":343,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[63.687,0],"t":344,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[48.753,0],"t":345,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[36.924,0],"t":346,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[28.001,0],"t":347,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[21.239,0],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[16.041,0],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[11.998,0],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[8.827,0],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[6.334,0],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[4.384,0],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[2.882,0],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1.753,0],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.94,0],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.399,0],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.096,0],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":260,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.75],[21.75,-21.641],[21.75,-21.641]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":284,"s":[{"i":[[0,0],[11.75,0],[0,0]],"o":[[0,0],[-11.583,0],[0,0]],"v":[[46.75,-21.5],[21.5,-21.5],[-3.25,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":304,"s":[{"i":[[0,0],[5.127,0],[0,0]],"o":[[0,0],[-4.962,0],[0,0]],"v":[[36.75,-21.5],[21.5,-21.5],[6.75,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":309,"s":[{"i":[[0,0],[5.127,0],[0,0]],"o":[[0,0],[-4.962,0],[0,0]],"v":[[36.75,-21.5],[21.5,-21.5],[6.75,-21.5]],"c":false}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":326,"s":[{"i":[[0,0],[5.127,0],[0,0]],"o":[[0,0],[-4.962,0],[0,0]],"v":[[36.75,-23.25],[21.5,-21.25],[6.75,-23.25]],"c":false}]},{"t":350,"s":[{"i":[[0,0],[15.605,0],[9.769,4]],"o":[[-9.882,4],[-15.444,0],[0,0]],"v":[[66.75,-33],[21.5,-21],[-23.25,-33]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":496,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":165,"s":[54]},{"i":{"x":[0.149],"y":[1]},"o":{"x":[0.529],"y":[0]},"t":260,"s":[58]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":280,"s":[27]},{"i":{"x":[0.68],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":349,"s":[27]},{"t":368,"s":[58],"h":1}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":351,"s":[0]},{"t":365,"s":[49.75]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":351,"s":[100]},{"t":365,"s":[50.25]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-241,"s":[0]},{"t":-223,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":223,"op":366,"st":-386,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Right Matte","td":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":272,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":284,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":296,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":319,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":341,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":359,"s":[95]},{"t":377,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":272,"s":[541.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":1},"t":296,"s":[583.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":326,"s":[583.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":359,"s":[536.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":361,"s":[536.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"t":379,"s":[673.719,562.719,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":326,"s":[69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":359,"s":[100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":361,"s":[100,100,100]},{"t":379,"s":[69,69,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":272,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-228.768,0.408],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":296,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":326,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":359,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":361,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":367,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"t":379,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.129411771894,0.458823561668,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":272,"op":496,"st":302,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Right Pill to Arc | Elevation","parent":2,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":0,"k":15,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"k":[{"s":[0],"t":260,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.049],"t":261,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.217],"t":262,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.549],"t":263,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[1.125],"t":264,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.08],"t":265,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.65],"t":266,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[5.983],"t":267,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[8.42],"t":268,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[10.26],"t":269,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[11.561],"t":270,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[12.504],"t":271,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.205],"t":272,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.735],"t":273,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.136],"t":274,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.439],"t":275,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.662],"t":276,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.82],"t":277,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.924],"t":278,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.982],"t":279,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15],"t":280,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.993],"t":311,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.983],"t":312,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.969],"t":313,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.95],"t":314,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.927],"t":315,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.898],"t":316,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.864],"t":317,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.823],"t":318,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.776],"t":319,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.722],"t":320,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.66],"t":321,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.589],"t":322,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.509],"t":323,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.418],"t":324,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.315],"t":325,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.199],"t":326,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.992],"t":327,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.604],"t":328,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.014],"t":329,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[12.195],"t":330,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[11.118],"t":331,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[9.743],"t":332,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[8.024],"t":333,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[5.9],"t":334,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.298],"t":335,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.122],"t":336,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.744],"t":337,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-8.44],"t":338,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-14.148],"t":339,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.15],"t":340,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-29.91],"t":341,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-41.097],"t":342,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.23],"t":343,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-71.313],"t":344,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-86.247],"t":345,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-98.076],"t":346,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-106.999],"t":347,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-113.761],"t":348,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-118.959],"t":349,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.002],"t":350,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-126.173],"t":351,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-128.666],"t":352,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-130.616],"t":353,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-132.118],"t":354,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-133.247],"t":355,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.06],"t":356,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.601],"t":357,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.904],"t":358,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,-2,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue X Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":309,"s":[0]},{"t":350,"s":[-7]}],"ix":1}}]},{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":2,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":2,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[-38.971,0],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-38.882,0],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-38.729,0],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-38.508,0],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-38.215,0],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-37.845,0],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-37.393,0],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-36.853,0],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-36.218,0],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-35.482,0],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-34.635,0],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-33.669,0],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-32.573,0],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-31.334,0],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-29.941,0],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-28.375,0],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-26.619,0],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-24.651,0],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-22.446,0],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.974,0],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.197,0],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.074,0],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.551,0],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.565,0],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.038,0],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[3.122,0],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[9.019,0],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[15.767,0],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[23.46,0],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[32.119,0],"t":223,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[41.61,0],"t":224,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[51.57,0],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[61.455,0],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[70.746,0],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[79.125,0],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[86.502,0],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[92.926,0],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[98.503,0],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[103.351,0],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[107.577,0],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[111.274,0],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[114.519,0],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[117.373,0],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[119.888,0],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[122.108,0],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[124.067,0],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[125.795,0],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[127.317,0],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[128.655,0],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[129.825,0],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[130.844,0],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[131.725,0],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[132.481,0],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[133.12,0],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[133.653,0],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[134.087,0],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[134.429,0],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[134.686,0],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[134.863,0],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[134.967,0],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[135.049,0],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[135.217,0],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[135.549,0],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[136.125,0],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[137.08,0],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[138.65,0],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[140.983,0],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[143.42,0],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[145.26,0],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[146.561,0],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[147.504,0],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[148.205,0],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[148.735,0],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.136,0],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.439,0],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.662,0],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.82,0],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.924,0],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.776,0],"t":319,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.66,0],"t":321,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.589,0],"t":322,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.509,0],"t":323,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.418,0],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.315,0],"t":325,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[149.199,0],"t":326,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[148.992,0],"t":327,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[148.604,0],"t":328,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[148.014,0],"t":329,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[147.195,0],"t":330,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[146.118,0],"t":331,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[144.743,0],"t":332,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[143.024,0],"t":333,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[140.9,0],"t":334,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[138.298,0],"t":335,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[135.122,0],"t":336,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[131.256,0],"t":337,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[126.56,0],"t":338,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[120.852,0],"t":339,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[113.85,0],"t":340,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[105.09,0],"t":341,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[93.903,0],"t":342,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[79.77,0],"t":343,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[63.687,0],"t":344,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[48.753,0],"t":345,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[36.924,0],"t":346,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[28.001,0],"t":347,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[21.239,0],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[16.041,0],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[11.998,0],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[8.827,0],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[6.334,0],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[4.384,0],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[2.882,0],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1.753,0],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.94,0],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.399,0],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.096,0],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]},{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":3,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":8,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":1,"ix":3}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":260,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.75],[21.75,-21.641],[21.75,-21.641]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":284,"s":[{"i":[[0,0],[11.75,0],[0,0]],"o":[[0,0],[-11.583,0],[0,0]],"v":[[46.75,-21.5],[21.5,-21.5],[-3.25,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":304,"s":[{"i":[[0,0],[5.127,0],[0,0]],"o":[[0,0],[-4.962,0],[0,0]],"v":[[36.75,-21.5],[21.5,-21.5],[6.75,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":309,"s":[{"i":[[0,0],[5.127,0],[0,0]],"o":[[0,0],[-4.962,0],[0,0]],"v":[[36.75,-21.5],[21.5,-21.5],[6.75,-21.5]],"c":false}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":326,"s":[{"i":[[0,0],[5.127,0],[0,0]],"o":[[0,0],[-4.962,0],[0,0]],"v":[[36.75,-23.25],[21.5,-21.25],[6.75,-23.25]],"c":false}]},{"t":350,"s":[{"i":[[0,0],[15.605,0],[9.769,4]],"o":[[-9.882,4],[-15.444,0],[0,0]],"v":[[66.75,-33],[21.5,-21],[-23.25,-33]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":165,"s":[54]},{"i":{"x":[0.149],"y":[1]},"o":{"x":[0.529],"y":[0]},"t":260,"s":[58]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":280,"s":[27]},{"i":{"x":[0.68],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":349,"s":[27]},{"t":368,"s":[58],"h":1}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":351,"s":[0]},{"t":365,"s":[49.75]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":351,"s":[100]},{"t":365,"s":[50.25]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":223,"op":365,"st":-386,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-99,"s":[100]},{"t":-88,"s":[100]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.28,"y":1},"o":{"x":0.65,"y":0},"t":105,"s":[8,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.12,"y":1},"o":{"x":0.44,"y":0},"t":135,"s":[-99.42,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.12,"y":0.12},"o":{"x":0.403,"y":0.403},"t":193,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.59,"y":1},"o":{"x":0.25,"y":0},"t":198,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":223,"s":[8,0,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.25,-21.75]],"c":false}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.376,-21.75]],"c":false}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.79,-21.75]],"c":false}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-9.556,-21.75]],"c":false}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-10.771,-21.75]],"c":false}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-12.58,-21.75]],"c":false}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-15.219,-21.75]],"c":false}],"t":111,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-19.13,-21.75]],"c":false}],"t":112,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-25.275,-21.75]],"c":false}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-36.314,-21.75]],"c":false}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-52.308,-21.75]],"c":false}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.456,-21.75]],"c":false}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-23.074]],"c":false}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-26.642]],"c":false}],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-30.646]],"c":false}],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-34.048]],"c":false}],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-36.752]],"c":false}],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.877]],"c":false}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.542]],"c":false}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.84]],"c":false}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.838]],"c":false}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.587]],"c":false}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.126]],"c":false}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.485]],"c":false}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.686]],"c":false}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.727]],"c":false}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.655]],"c":false}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.528]],"c":false}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.338]],"c":false}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.078]],"c":false}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.735]],"c":false}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.295]],"c":false}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.741]],"c":false}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.046]],"c":false}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.174]],"c":false}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.071]],"c":false}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.652]],"c":false}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-36.765]],"c":false}],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-34.107]],"c":false}],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-30.004]],"c":false}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-24.491]],"c":false}],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-25.562]],"c":false}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-32.006]],"c":false}],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-35.928]],"c":false}],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.416]],"c":false}],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.159]],"c":false}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.444]],"c":false}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.413]],"c":false}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.15]],"c":false}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.707]],"c":false}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.12]],"c":false}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.414]],"c":false}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.608]],"c":false}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.716]],"c":false}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.727]],"c":false}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.655]],"c":false}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.528]],"c":false}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.338]],"c":false}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.078]],"c":false}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.735]],"c":false}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.295]],"c":false}],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.741]],"c":false}],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.046]],"c":false}],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.174]],"c":false}],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.071]],"c":false}],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.652]],"c":false}],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-36.765]],"c":false}],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-34.107]],"c":false}],"t":181,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-30.004]],"c":false}],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-24.491]],"c":false}],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-25.562]],"c":false}],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-32.006]],"c":false}],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-35.928]],"c":false}],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.416]],"c":false}],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.159]],"c":false}],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.444]],"c":false}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.413]],"c":false}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.15]],"c":false}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.707]],"c":false}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.12]],"c":false}],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.414]],"c":false}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.608]],"c":false}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.716]],"c":false}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.588,-44.734]],"c":false}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.474,-44.682]],"c":false}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.273,-44.592]],"c":false}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.976,-44.459]],"c":false}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.57,-44.278]],"c":false}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.041,-44.041]],"c":false}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.373,-43.742]],"c":false}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.541,-43.369]],"c":false}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.52,-42.912]],"c":false}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-54.271,-42.353]],"c":false}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-52.748,-41.671]],"c":false}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-50.883,-40.837]],"c":false}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-48.587,-39.808]],"c":false}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-45.725,-38.527]],"c":false}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-42.106,-36.907]],"c":false}],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-37.466,-34.83]],"c":false}],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-31.589,-32.199]],"c":false}],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-24.881,-29.196]],"c":false}],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-18.854,-26.497]],"c":false}],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-14.535,-24.564]],"c":false}],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-11.727,-23.307]],"c":false}],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-9.971,-22.52]],"c":false}],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.934,-22.056]],"c":false}],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.405,-21.819]],"c":false}],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.25,-21.75]],"c":false}],"t":223,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":496,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[27],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.046],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.193],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.452],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.84],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.374],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[29.079],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[29.984],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[31.129],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.563],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[34.353],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.587],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[39.37],"t":101,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[42.799],"t":102,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[46.822],"t":103,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.965],"t":104,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.371],"t":105,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.571],"t":106,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.685],"t":107,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58],"t":108,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","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":1,"k":[{"i":{"x":0.63,"y":1},"o":{"x":1,"y":0},"t":105,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.25,-21.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.18,"y":0},"t":117,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.67,"y":0},"t":131,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":133,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":150,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":164,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":167,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":184,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":198,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"t":223,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.25,-21.75]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":496,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.68],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":89,"s":[27]},{"t":108,"s":[58]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","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":1,"k":[{"i":{"x":0.63,"y":1},"o":{"x":1,"y":0},"t":105,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.895,-50.571],[0.709,-71.669],[11.321,-50.571]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.18,"y":0},"t":117,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.916,2.689],[0.688,-18.41],[11.3,2.689]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"t":131,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":133,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":150,"s":[{"i":[[6.319,0],[-13.595,0],[4.434,2.581]],"o":[[-4.95,2.881],[12.282,0],[-6.319,0]],"v":[[-8.484,18.867],[0.487,-2.232],[8.69,18.867]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":164,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":167,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":184,"s":[{"i":[[6.319,0],[-13.595,0],[4.434,2.581]],"o":[[-4.95,2.881],[12.282,0],[-6.319,0]],"v":[[-8.484,18.867],[0.487,-2.232],[8.69,18.867]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":198,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"t":223,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-11.142,-39.633],[0.462,-60.732],[11.073,-39.633]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":496,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-90],"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":"Round Bottom","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":105,"op":223,"st":-99,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".onSurfaceBack","cl":"onSurfaceBack","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":272,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":284,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":296,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":319,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":341,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":359,"s":[95]},{"t":377,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":272,"s":[541.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":1},"t":296,"s":[583.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":326,"s":[583.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":359,"s":[536.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":361,"s":[536.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"t":379,"s":[673.719,562.719,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":326,"s":[69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":359,"s":[100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":361,"s":[100,100,100]},{"t":379,"s":[69,69,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":272,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-228.768,0.408],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":296,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":326,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":359,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":361,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":367,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"t":379,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.129411771894,0.458823561668,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":272,"op":496,"st":302,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-609,"s":[0]},{"t":-599,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"k":[{"s":[-138.046],"t":1,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-138.202],"t":2,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-138.513],"t":3,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-139.05],"t":4,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-139.941],"t":5,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-141.406],"t":6,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-143.584],"t":7,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-145.858],"t":8,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-147.576],"t":9,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-148.791],"t":10,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-149.671],"t":11,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.325],"t":12,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.819],"t":13,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.194],"t":14,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.476],"t":15,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.684],"t":16,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.832],"t":17,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.983],"t":19,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.864],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.722],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.589],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.509],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.418],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.315],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.199],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.991],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.6],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.003],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-149.176],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-148.086],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-146.696],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-144.957],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-142.808],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-140.175],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-136.961],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-133.049],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-128.294],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-122.514],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.421],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-106.544],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.205],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-80.877],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-64.572],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.431],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-37.439],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-28.391],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.536],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-16.265],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-12.165],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-8.95],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-6.422],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-4.446],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-2.922],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-1.777],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.953],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.405],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.097],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"y":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[0]},{"t":49,"s":[-0.25]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue X Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":49,"s":[0]},{"t":90,"s":[7]}],"ix":1}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":24,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-3.25,-21.5],[22,-21.5],[46.75,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[-5.127,0],[0,0]],"o":[[0,0],[4.962,0],[0,0]],"v":[[6.75,-21.5],[22,-21.5],[36.75,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":49,"s":[{"i":[[0,0],[-5.127,0],[0,0]],"o":[[0,0],[4.962,0],[0,0]],"v":[[6.75,-21.5],[22,-21.5],[36.75,-21.5]],"c":false}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":66,"s":[{"i":[[0,0],[-5.127,0],[0,0]],"o":[[0,0],[4.962,0],[0,0]],"v":[[6.75,-19.5],[22,-21.5],[36.75,-19.5]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-15.605,0],[-9.769,-4]],"o":[[9.882,-4],[15.444,0],[0,0]],"v":[[-23.25,-9.5],[22,-21.5],[66.75,-9.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":496,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.418],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.149],"y":[1]},"o":{"x":[0.529],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.68],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":89,"s":[27]},{"t":108,"s":[58],"h":1}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":91,"s":[0]},{"t":105,"s":[49.75]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":91,"s":[100]},{"t":105,"s":[50.25]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-465,"s":[0]},{"t":-447,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":105,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Left Matte","td":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":12,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":24,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":36,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":59,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":81,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":99,"s":[95]},{"t":117,"s":[0],"h":1},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":303,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":325,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":343,"s":[95]},{"t":361,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":12,"s":[-129.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":1},"t":36,"s":[-171.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":66,"s":[-171.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":99,"s":[-124.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":101,"s":[-124.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":119,"s":[-261.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":310,"s":[-171.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":343,"s":[-124.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":345,"s":[-124.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"t":363,"s":[-261.719,562.719,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":66,"s":[-69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":99,"s":[-100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":101,"s":[-100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":119,"s":[-69,69,100]},{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":310,"s":[-69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":343,"s":[-100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":345,"s":[-100,100,100]},{"t":363,"s":[-69,69,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":12,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-228.768,0.408],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":36,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":66,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":99,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":101,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":107,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.77,"y":0},"t":119,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":310,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":343,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":345,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":351,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"t":363,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.129411771894,0.458823561668,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":399,"st":42,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Pill to Arc | Elevation","parent":3,"tt":1,"tp":12,"sr":1,"ks":{"o":{"a":0,"k":15,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"k":[{"s":[-138.046],"t":1,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-138.202],"t":2,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-138.513],"t":3,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-139.05],"t":4,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-139.941],"t":5,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-141.406],"t":6,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-143.584],"t":7,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-145.858],"t":8,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-147.576],"t":9,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-148.791],"t":10,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-149.671],"t":11,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.325],"t":12,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.819],"t":13,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.194],"t":14,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.476],"t":15,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.684],"t":16,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.832],"t":17,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.983],"t":19,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.864],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.722],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.589],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.509],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.418],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.315],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.199],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.991],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.6],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.003],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-149.176],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-148.086],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-146.696],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-144.957],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-142.808],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-140.175],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-136.961],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-133.049],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-128.294],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-122.514],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.421],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-106.544],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.205],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-80.877],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-64.572],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.431],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-37.439],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-28.391],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.536],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-16.265],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-12.165],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-8.95],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-6.422],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-4.446],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-2.922],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-1.777],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.953],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.405],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.097],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"y":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[0]},{"t":49,"s":[-0.25]}],"ix":4}},"a":{"a":0,"k":[0,-2,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue X Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":49,"s":[0]},{"t":90,"s":[7]}],"ix":1}}]},{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":2,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":8,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":1,"ix":3}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":24,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-3.25,-21.5],[22,-21.5],[46.75,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[-5.127,0],[0,0]],"o":[[0,0],[4.962,0],[0,0]],"v":[[6.75,-21.5],[22,-21.5],[36.75,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":49,"s":[{"i":[[0,0],[-5.127,0],[0,0]],"o":[[0,0],[4.962,0],[0,0]],"v":[[6.75,-21.5],[22,-21.5],[36.75,-21.5]],"c":false}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":66,"s":[{"i":[[0,0],[-5.127,0],[0,0]],"o":[[0,0],[4.962,0],[0,0]],"v":[[6.75,-19.5],[22,-21.5],[36.75,-19.5]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-15.605,0],[-9.769,-4]],"o":[[9.882,-4],[15.444,0],[0,0]],"v":[[-23.25,-9.5],[22,-21.5],[66.75,-9.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.418],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.149],"y":[1]},"o":{"x":[0.529],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.68],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":89,"s":[27]},{"t":108,"s":[58],"h":1}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":91,"s":[0]},{"t":105,"s":[49.75]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":91,"s":[100]},{"t":105,"s":[50.25]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":110,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".onSurfaceBack","cl":"onSurfaceBack","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":12,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":24,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":36,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":59,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":81,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":99,"s":[95]},{"t":117,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":12,"s":[-129.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":1},"t":36,"s":[-171.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":66,"s":[-171.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":99,"s":[-124.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":101,"s":[-124.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"t":119,"s":[-261.719,562.719,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":66,"s":[-69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":99,"s":[-100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":101,"s":[-100,100,100]},{"t":119,"s":[-69,69,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":12,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-228.768,0.408],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":36,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":66,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":99,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":101,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":107,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"t":119,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":496,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":12,"op":399,"st":42,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".surfaceBack","cl":"surfaceBack","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,446,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[412,892],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Rectangle 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.976,0.635,0.725,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.976,0.635,0.725,1],"t":496,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":496,"st":0,"ct":1,"bm":0}]},{"id":"comp_2","nm":"Part01_ThumbDemo_Back_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"HAND NULL","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[-0.364]},"t":89,"s":[62]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":140,"s":[60]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":195,"s":[67]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":224,"s":[67]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":257,"s":[47]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":272,"s":[47]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":305,"s":[67]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":322,"s":[67]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":355,"s":[47]},{"i":{"x":[0.53],"y":[1]},"o":{"x":[0.69],"y":[0]},"t":363,"s":[47]},{"t":410,"s":[62]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":89,"s":[489]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":159,"s":[385]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":195,"s":[404]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":224,"s":[404]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":257,"s":[358]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":272,"s":[358]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":305,"s":[404]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":322,"s":[404]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":355,"s":[358]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":363,"s":[358]},{"t":410,"s":[489]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.194],"y":[0]},"t":89,"s":[932.366]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":149,"s":[812.366]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":195,"s":[798.366]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":257,"s":[798.366]},{"i":{"x":[0.44],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":265,"s":[814.366]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":272,"s":[814.366]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":305,"s":[798.366]},{"i":{"x":[0.55],"y":[1]},"o":{"x":[0.86],"y":[0]},"t":355,"s":[798.366]},{"t":410,"s":[932.366]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":89,"op":410,"st":89,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"⨳ Thumb KO","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"k":[{"s":[27.686],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.665],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.634],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.59],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.53],"t":165,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.45],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.35],"t":167,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.227],"t":168,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.086],"t":169,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.935],"t":170,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.785],"t":171,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.646],"t":172,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.519],"t":173,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.408],"t":174,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.31],"t":175,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.224],"t":176,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.149],"t":177,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.083],"t":178,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.026],"t":179,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.975],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.931],"t":181,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.892],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.858],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.829],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.803],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.781],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.762],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.747],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.723],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"p":{"k":[{"s":[0,0,0],"t":224,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.006,0.001,0],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.034,0.004,0],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.087,0.012,0],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.168,0.022,0],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.28,0.037,0],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.426,0.057,0],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.61,0.081,0],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.84,0.112,0],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.122,0.15,0],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.467,0.196,0],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.891,0.252,0],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.417,0.322,0],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.074,0.41,0],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.903,0.521,0],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.968,0.663,0],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.349,0.847,0],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.113,1.082,0],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.125,1.351,0],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.009,1.602,0],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-13.512,1.802,0],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.643,1.953,0],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.498,2.067,0],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.155,2.155,0],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.664,2.223,0],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.066,2.276,0],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.383,2.319,0],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.634,2.352,0],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.83,2.378,0],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.977,2.398,0],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.083,2.412,0],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.152,2.421,0],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.188,2.426,0],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.196,2.427,0],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.154,2.421,0],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18,2.401,0],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.724,2.364,0],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.318,2.31,0],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.773,2.237,0],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.074,2.144,0],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.203,2.028,0],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.164,1.889,0],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.963,1.729,0],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-11.64,1.553,0],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.251,1.367,0],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.853,1.181,0],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-7.497,1,0],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.225,0.83,0],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.072,0.676,0],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.05,0.54,0],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.163,0.422,0],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.409,0.321,0],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.778,0.237,0],"t":291,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.262,0.168,0],"t":292,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.847,0.113,0],"t":293,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.522,0.07,0],"t":294,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.28,0.037,0],"t":295,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.115,0.015,0],"t":296,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.024,0.003,0],"t":297,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":298,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":322,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.006,0.001,0],"t":323,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.034,0.004,0],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.087,0.012,0],"t":325,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.169,0.022,0],"t":326,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.281,0.037,0],"t":327,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.428,0.057,0],"t":328,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.613,0.082,0],"t":329,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.843,0.112,0],"t":330,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.125,0.15,0],"t":331,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.47,0.196,0],"t":332,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.893,0.252,0],"t":333,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.417,0.322,0],"t":334,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.074,0.41,0],"t":335,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.902,0.52,0],"t":336,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.972,0.663,0],"t":337,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.365,0.849,0],"t":338,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.132,1.085,0],"t":339,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.144,1.353,0],"t":340,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.023,1.604,0],"t":341,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-13.514,1.803,0],"t":342,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.643,1.953,0],"t":343,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.498,2.067,0],"t":344,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.156,2.155,0],"t":345,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.668,2.223,0],"t":346,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.069,2.277,0],"t":347,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.387,2.319,0],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.637,2.352,0],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.832,2.378,0],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.978,2.398,0],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.084,2.412,0],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.152,2.421,0],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.188,2.426,0],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.196,2.427,0],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.029,2.42,0],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.353,2.39,0],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.81,2.321,0],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.704,2.183,0],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.541,1.998,0],"t":360,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.346,1.856,0],"t":361,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.22,1.761,0],"t":362,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.76,1.696,0],"t":363,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.728,1.65,0],"t":364,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.007,1.618,0],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.535,1.594,0],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.905,1.578,0],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1.145,1.567,0],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1.273,1.561,0],"t":369,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1.306,1.56,0],"t":370,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"a":{"a":0,"k":[0,49,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":25,"nm":"Elevation","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[0,0,0,0.25],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":63.75,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":180,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":4,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":8,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.248,-2.906],[27.304,14.385],[26.089,4.059],[20.871,-4.348],[30.147,15.649],[-19.422,9.854],[-43.806,10.634],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.269,2.536],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.36],[31.034,-15.736],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.277,97.813],[174.602,194.376],[32.184,139.048],[-46.229,116.512],[-118.127,117.967],[-234.631,118.82],[-235.209,50.133],[-138.859,16.657],[-91.152,5.484],[-12.612,-36.255]],"c":true}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.254,-2.906],[27.304,14.385],[26.089,4.059],[20.871,-4.349],[30.145,15.636],[-19.423,9.849],[-43.805,10.636],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.274,2.551],[-24.064,-12.677],[-29.278,-4.639],[-20.871,4.349],[-30.145,-15.346],[31.035,-15.728],[13.48,-3.273],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.44,97.788],[174.561,194.332],[32.184,139.048],[-46.201,116.515],[-118.124,117.99],[-234.541,118.786],[-235.113,50.147],[-138.862,16.634],[-91.098,5.471],[-12.612,-36.255]],"c":true}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.265,-2.907],[27.304,14.385],[26.089,4.061],[20.871,-4.351],[30.142,15.612],[-19.424,9.84],[-43.805,10.64],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.283,2.579],[-24.064,-12.677],[-29.278,-4.641],[-20.871,4.351],[-30.142,-15.322],[31.037,-15.713],[13.479,-3.274],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.739,97.741],[174.487,194.252],[32.184,139.048],[-46.15,116.52],[-118.119,118.032],[-234.376,118.725],[-234.937,50.172],[-138.867,16.593],[-91,5.449],[-12.612,-36.255]],"c":true}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.281,-2.908],[27.304,14.385],[26.09,4.063],[20.871,-4.353],[30.137,15.574],[-19.426,9.825],[-43.804,10.646],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.296,2.623],[-24.064,-12.677],[-29.278,-4.643],[-20.871,4.353],[-30.138,-15.285],[31.04,-15.69],[13.479,-3.276],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.199,97.668],[174.373,194.129],[32.184,139.048],[-46.071,116.527],[-118.111,118.096],[-234.122,118.63],[-234.666,50.21],[-138.875,16.528],[-90.848,5.413],[-12.612,-36.255]],"c":true}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.305,-2.909],[27.304,14.385],[26.09,4.066],[20.87,-4.356],[30.131,15.521],[-19.428,9.805],[-43.803,10.656],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.315,2.685],[-24.064,-12.677],[-29.279,-4.647],[-20.87,4.356],[-30.131,-15.233],[31.044,-15.657],[13.479,-3.279],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.855,97.565],[174.21,193.953],[32.184,139.048],[-45.958,116.538],[-118.1,118.187],[-233.759,118.495],[-234.28,50.264],[-138.886,16.437],[-90.631,5.363],[-12.612,-36.255]],"c":true}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.338,-2.911],[27.304,14.385],[26.091,4.071],[20.87,-4.36],[30.122,15.448],[-19.432,9.777],[-43.801,10.668],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.34,2.77],[-24.064,-12.677],[-29.279,-4.652],[-20.87,4.36],[-30.122,-15.161],[31.049,-15.612],[13.478,-3.283],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[312.749,97.424],[173.988,193.714],[32.184,139.048],[-45.804,116.554],[-118.084,118.312],[-233.265,118.311],[-233.754,50.339],[-138.902,16.312],[-90.336,5.294],[-12.612,-36.255]],"c":true}],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.381,-2.914],[27.304,14.385],[26.091,4.076],[20.869,-4.366],[30.11,15.352],[-19.436,9.74],[-43.799,10.684],[-18.621,4.302],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.374,2.881],[-24.064,-12.677],[-29.28,-4.658],[-20.869,4.366],[-30.11,-15.067],[31.056,-15.554],[13.478,-3.288],[35.364,-7.835],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[313.924,97.239],[173.696,193.399],[32.184,139.048],[-45.602,116.573],[-118.064,118.475],[-232.616,118.069],[-233.063,50.436],[-138.922,16.148],[-89.947,5.204],[-12.612,-36.255]],"c":true}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.435,-2.918],[27.304,14.385],[26.092,4.084],[20.868,-4.373],[30.095,15.23],[-19.442,9.693],[-43.797,10.705],[-18.621,4.304],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.417,3.023],[-24.064,-12.677],[-29.281,-4.667],[-20.868,4.373],[-30.095,-14.947],[31.066,-15.479],[13.477,-3.294],[35.364,-7.839],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[315.418,97.004],[173.325,192.999],[32.184,139.048],[-45.344,116.599],[-118.038,118.683],[-231.791,117.761],[-232.184,50.561],[-138.948,15.939],[-89.453,5.089],[-12.612,-36.255]],"c":true}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.502,-2.922],[27.304,14.385],[26.093,4.093],[20.867,-4.381],[30.076,15.082],[-19.45,9.636],[-43.794,10.731],[-18.62,4.307],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.469,3.195],[-24.064,-12.677],[-29.282,-4.677],[-20.867,4.381],[-30.077,-14.8],[31.077,-15.388],[13.476,-3.302],[35.363,-7.843],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[317.239,96.717],[172.873,192.511],[32.184,139.048],[-45.031,116.63],[-118.006,118.937],[-230.785,117.386],[-231.113,50.712],[-138.98,15.685],[-88.852,4.95],[-12.612,-36.255]],"c":true}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[46.578,-2.927],[27.304,14.385],[26.095,4.103],[20.866,-4.391],[30.055,14.911],[-19.458,9.57],[-43.79,10.76],[-18.62,4.309],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.529,3.394],[-24.064,-12.677],[-29.284,-4.688],[-20.866,4.391],[-30.056,-14.632],[31.09,-15.284],[13.475,-3.311],[35.363,-7.848],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[319.33,96.388],[172.353,191.951],[32.184,139.048],[-44.671,116.665],[-117.97,119.228],[-229.63,116.956],[-229.883,50.886],[-139.016,15.393],[-88.161,4.789],[-12.612,-36.255]],"c":true}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.659,-2.932],[27.304,14.385],[26.096,4.114],[20.865,-4.402],[30.032,14.729],[-19.467,9.5],[-43.786,10.791],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.593,3.605],[-24.064,-12.677],[-29.285,-4.701],[-20.865,4.402],[-30.034,-14.453],[31.104,-15.172],[13.474,-3.32],[35.362,-7.853],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[321.563,96.037],[171.798,191.352],[32.184,139.048],[-44.287,116.703],[-117.931,119.539],[-228.396,116.496],[-228.569,51.071],[-139.055,15.081],[-87.423,4.618],[-12.612,-36.255]],"c":true}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.74,-2.937],[27.304,14.385],[26.097,4.125],[20.863,-4.412],[30.01,14.548],[-19.475,9.43],[-43.782,10.822],[-18.619,4.315],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.657,3.815],[-24.064,-12.677],[-29.287,-4.713],[-20.863,4.412],[-30.012,-14.275],[31.118,-15.062],[13.472,-3.33],[35.361,-7.858],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[323.779,95.688],[171.248,190.759],[32.184,139.048],[-43.906,116.74],[-117.893,119.847],[-227.172,116.04],[-227.265,51.256],[-139.093,14.771],[-86.691,4.447],[-12.612,-36.255]],"c":true}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.816,-2.941],[27.304,14.385],[26.099,4.135],[20.862,-4.422],[29.989,14.379],[-19.484,9.365],[-43.779,10.851],[-18.619,4.318],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.717,4.012],[-24.064,-12.677],[-29.288,-4.725],[-20.862,4.422],[-29.991,-14.109],[31.13,-14.958],[13.471,-3.339],[35.361,-7.863],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[325.853,95.361],[170.733,190.203],[32.184,139.048],[-43.549,116.775],[-117.857,120.136],[-226.026,115.613],[-226.045,51.428],[-139.129,14.481],[-86.005,4.288],[-12.612,-36.255]],"c":true}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.884,-2.946],[27.304,14.385],[26.1,4.144],[20.861,-4.431],[29.97,14.227],[-19.491,9.306],[-43.776,10.877],[-18.619,4.32],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.77,4.189],[-24.064,-12.677],[-29.29,-4.735],[-20.861,4.431],[-29.973,-13.958],[31.142,-14.865],[13.47,-3.347],[35.36,-7.867],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[327.725,95.067],[170.268,189.701],[32.184,139.048],[-43.227,116.807],[-117.825,120.397],[-224.993,115.228],[-224.944,51.584],[-139.162,14.22],[-85.387,4.145],[-12.612,-36.255]],"c":true}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[46.945,-2.95],[27.304,14.385],[26.101,4.152],[20.86,-4.438],[29.953,14.092],[-19.498,9.254],[-43.773,10.9],[-18.618,4.323],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.818,4.346],[-24.064,-12.677],[-29.291,-4.744],[-20.86,4.438],[-29.956,-13.825],[31.152,-14.782],[13.469,-3.354],[35.36,-7.871],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[329.38,94.806],[169.857,189.258],[32.184,139.048],[-42.942,116.835],[-117.796,120.628],[-224.078,114.887],[-223.97,51.721],[-139.191,13.989],[-84.84,4.017],[-12.612,-36.255]],"c":true}],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.998,-2.953],[27.304,14.385],[26.102,4.159],[20.859,-4.445],[29.938,13.973],[-19.503,9.208],[-43.77,10.92],[-18.618,4.325],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.859,4.484],[-24.064,-12.677],[-29.292,-4.752],[-20.859,4.445],[-29.942,-13.709],[31.161,-14.71],[13.469,-3.36],[35.359,-7.874],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[330.832,94.577],[169.496,188.869],[32.184,139.048],[-42.692,116.859],[-117.771,120.83],[-223.276,114.588],[-223.115,51.842],[-139.216,13.786],[-84.36,3.906],[-12.612,-36.255]],"c":true}],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.044,-2.956],[27.304,14.385],[26.102,4.165],[20.858,-4.451],[29.926,13.87],[-19.508,9.169],[-43.768,10.938],[-18.618,4.326],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.896,4.604],[-24.064,-12.677],[-29.293,-4.759],[-20.858,4.451],[-29.929,-13.607],[31.169,-14.646],[13.468,-3.366],[35.359,-7.877],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[332.102,94.377],[169.18,188.529],[32.184,139.048],[-42.473,116.881],[-117.749,121.007],[-222.574,114.326],[-222.368,51.948],[-139.238,13.609],[-83.94,3.809],[-12.612,-36.255]],"c":true}],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.084,-2.958],[27.304,14.385],[26.103,4.171],[20.858,-4.456],[29.914,13.779],[-19.513,9.134],[-43.766,10.953],[-18.618,4.328],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.928,4.71],[-24.064,-12.677],[-29.293,-4.765],[-20.858,4.456],[-29.918,-13.517],[31.176,-14.591],[13.467,-3.37],[35.359,-7.879],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[333.213,94.203],[168.905,188.231],[32.184,139.048],[-42.282,116.9],[-117.73,121.161],[-221.961,114.098],[-221.715,52.04],[-139.257,13.453],[-83.573,3.723],[-12.612,-36.255]],"c":true}],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.12,-2.961],[27.304,14.385],[26.104,4.175],[20.857,-4.461],[29.904,13.7],[-19.517,9.103],[-43.764,10.967],[-18.617,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.956,4.802],[-24.064,-12.677],[-29.294,-4.771],[-20.857,4.461],[-29.908,-13.439],[31.182,-14.542],[13.467,-3.375],[35.358,-7.882],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[334.185,94.049],[168.663,187.971],[32.184,139.048],[-42.115,116.916],[-117.713,121.297],[-221.424,113.897],[-221.143,52.121],[-139.274,13.318],[-83.252,3.649],[-12.612,-36.255]],"c":true}],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.151,-2.962],[27.304,14.385],[26.104,4.18],[20.857,-4.465],[29.896,13.63],[-19.52,9.076],[-43.763,10.979],[-18.617,4.33],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.98,4.883],[-24.064,-12.677],[-29.295,-4.776],[-20.857,4.465],[-29.9,-13.371],[31.187,-14.5],[13.466,-3.378],[35.358,-7.884],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[335.037,93.915],[168.451,187.742],[32.184,139.048],[-41.968,116.931],[-117.698,121.415],[-220.953,113.722],[-220.641,52.192],[-139.289,13.199],[-82.97,3.583],[-12.612,-36.255]],"c":true}],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.178,-2.964],[27.304,14.385],[26.105,4.183],[20.856,-4.468],[29.888,13.569],[-19.523,9.053],[-43.762,10.989],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.002,4.953],[-24.064,-12.677],[-29.295,-4.78],[-20.856,4.469],[-29.892,-13.311],[31.192,-14.462],[13.466,-3.382],[35.358,-7.885],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[335.785,93.798],[168.266,187.542],[32.184,139.048],[-41.839,116.943],[-117.685,121.519],[-220.54,113.568],[-220.201,52.254],[-139.302,13.094],[-82.723,3.526],[-12.612,-36.255]],"c":true}],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.202,-2.966],[27.304,14.385],[26.105,4.186],[20.856,-4.471],[29.882,13.516],[-19.526,9.032],[-43.76,10.999],[-18.617,4.332],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.02,5.016],[-24.064,-12.677],[-29.296,-4.783],[-20.856,4.472],[-29.886,-13.258],[31.196,-14.43],[13.466,-3.384],[35.358,-7.887],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[336.44,93.694],[168.103,187.366],[32.184,139.048],[-41.727,116.954],[-117.674,121.611],[-220.178,113.433],[-219.816,52.308],[-139.313,13.003],[-82.506,3.475],[-12.612,-36.255]],"c":true}],"t":181,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.223,-2.967],[27.304,14.385],[26.105,4.189],[20.855,-4.474],[29.876,13.469],[-19.528,9.014],[-43.759,11.007],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.037,5.07],[-24.064,-12.677],[-29.296,-4.787],[-20.855,4.474],[-29.88,-13.212],[31.2,-14.401],[13.465,-3.387],[35.357,-7.888],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[337.014,93.604],[167.96,187.212],[32.184,139.048],[-41.628,116.964],[-117.664,121.691],[-219.861,113.315],[-219.478,52.356],[-139.323,12.922],[-82.317,3.431],[-12.612,-36.255]],"c":true}],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.241,-2.968],[27.304,14.385],[26.106,4.192],[20.855,-4.477],[29.871,13.428],[-19.53,8.998],[-43.759,11.014],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.051,5.117],[-24.064,-12.677],[-29.296,-4.789],[-20.855,4.477],[-29.875,-13.172],[31.203,-14.376],[13.465,-3.389],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[337.517,93.525],[167.835,187.078],[32.184,139.048],[-41.541,116.973],[-117.655,121.761],[-219.583,113.212],[-219.183,52.398],[-139.332,12.852],[-82.151,3.393],[-12.612,-36.255]],"c":true}],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.257,-2.969],[27.304,14.385],[26.106,4.194],[20.855,-4.479],[29.866,13.393],[-19.532,8.985],[-43.758,11.02],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.064,5.159],[-24.064,-12.677],[-29.297,-4.792],[-20.855,4.479],[-29.87,-13.137],[31.206,-14.354],[13.465,-3.391],[35.357,-7.89],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[337.954,93.456],[167.727,186.961],[32.184,139.048],[-41.466,116.98],[-117.648,121.821],[-219.342,113.121],[-218.925,52.434],[-139.339,12.791],[-82.006,3.359],[-12.612,-36.255]],"c":true}],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.271,-2.97],[27.304,14.385],[26.106,4.196],[20.855,-4.48],[29.862,13.362],[-19.533,8.973],[-43.757,11.025],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.075,5.195],[-24.064,-12.677],[-29.297,-4.794],[-20.855,4.48],[-29.867,-13.106],[31.208,-14.335],[13.465,-3.392],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.333,93.396],[167.633,186.859],[32.184,139.048],[-41.401,116.986],[-117.641,121.874],[-219.132,113.043],[-218.702,52.466],[-139.346,12.738],[-81.881,3.33],[-12.612,-36.255]],"c":true}],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.283,-2.971],[27.304,14.385],[26.106,4.197],[20.854,-4.482],[29.859,13.335],[-19.534,8.962],[-43.757,11.029],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.084,5.226],[-24.064,-12.677],[-29.297,-4.796],[-20.855,4.482],[-29.863,-13.08],[31.21,-14.319],[13.465,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.66,93.345],[167.551,186.772],[32.184,139.048],[-41.344,116.992],[-117.635,121.92],[-218.951,112.976],[-218.51,52.493],[-139.352,12.693],[-81.773,3.305],[-12.612,-36.255]],"c":true}],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.293,-2.971],[27.304,14.385],[26.107,4.199],[20.854,-4.483],[29.856,13.312],[-19.535,8.954],[-43.756,11.033],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.092,5.252],[-24.064,-12.677],[-29.297,-4.797],[-20.854,4.483],[-29.861,-13.057],[31.212,-14.305],[13.464,-3.395],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.94,93.301],[167.482,186.697],[32.184,139.048],[-41.296,116.997],[-117.631,121.959],[-218.797,112.919],[-218.345,52.516],[-139.357,12.654],[-81.681,3.284],[-12.612,-36.255]],"c":true}],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.302,-2.972],[27.304,14.385],[26.107,4.2],[20.854,-4.484],[29.854,13.293],[-19.536,8.946],[-43.756,11.037],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.099,5.275],[-24.064,-12.677],[-29.298,-4.799],[-20.854,4.484],[-29.858,-13.039],[31.213,-14.293],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.175,93.264],[167.423,186.634],[32.184,139.048],[-41.256,117.001],[-117.626,121.992],[-218.667,112.87],[-218.207,52.536],[-139.361,12.621],[-81.603,3.266],[-12.612,-36.255]],"c":true}],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.309,-2.972],[27.304,14.385],[26.107,4.201],[20.854,-4.485],[29.852,13.277],[-19.537,8.94],[-43.755,11.039],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.105,5.293],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.485],[-29.856,-13.023],[31.214,-14.283],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.371,93.233],[167.375,186.581],[32.184,139.048],[-41.222,117.004],[-117.623,122.019],[-218.559,112.83],[-218.091,52.552],[-139.364,12.593],[-81.538,3.25],[-12.612,-36.255]],"c":true}],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.315,-2.973],[27.304,14.385],[26.107,4.202],[20.854,-4.486],[29.85,13.264],[-19.538,8.935],[-43.755,11.042],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.109,5.308],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.855,-13.01],[31.215,-14.275],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.531,93.208],[167.335,186.538],[32.184,139.048],[-41.195,117.007],[-117.62,122.041],[-218.471,112.797],[-217.998,52.565],[-139.367,12.571],[-81.485,3.238],[-12.612,-36.255]],"c":true}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.319,-2.973],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.254],[-19.538,8.931],[-43.755,11.043],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.113,5.32],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-13],[31.216,-14.269],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.656,93.188],[167.304,186.505],[32.184,139.048],[-41.173,117.009],[-117.618,122.058],[-218.401,112.771],[-217.924,52.576],[-139.369,12.553],[-81.444,3.229],[-12.612,-36.255]],"c":true}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.323,-2.973],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.246],[-19.539,8.928],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.115,5.329],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.992],[31.217,-14.264],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.75,93.173],[167.281,186.48],[32.184,139.048],[-41.157,117.01],[-117.617,122.072],[-218.35,112.752],[-217.868,52.583],[-139.371,12.54],[-81.413,3.221],[-12.612,-36.255]],"c":true}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.325,-2.973],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.847,13.241],[-19.539,8.926],[-43.755,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.117,5.335],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.987],[31.217,-14.261],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.815,93.163],[167.265,186.462],[32.184,139.048],[-41.146,117.011],[-117.615,122.081],[-218.314,112.738],[-217.83,52.589],[-139.372,12.531],[-81.391,3.216],[-12.612,-36.255]],"c":true}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.331,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.486],[29.846,13.239],[-19.54,8.923],[-43.755,11.044],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.099,5.338],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.486],[-29.85,-12.985],[31.218,-14.257],[13.464,-3.398],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.849,93.158],[167.225,186.454],[32.184,139.048],[-41.137,117.012],[-117.618,122.088],[-218.289,112.723],[-217.8,52.588],[-139.369,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.345,-2.975],[27.304,14.385],[26.107,4.203],[20.855,-4.482],[29.843,13.244],[-19.541,8.919],[-43.757,11.035],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.037,5.33],[-24.064,-12.677],[-29.298,-4.802],[-20.855,4.482],[-29.848,-12.991],[31.221,-14.251],[13.465,-3.396],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.799,93.166],[167.137,186.468],[32.184,139.048],[-41.137,117.012],[-117.629,122.091],[-218.297,112.706],[-217.797,52.572],[-139.359,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.369,-2.976],[27.304,14.385],[26.107,4.203],[20.856,-4.475],[29.838,13.254],[-19.544,8.913],[-43.76,11.02],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.928,5.315],[-24.064,-12.677],[-29.298,-4.802],[-20.856,4.475],[-29.843,-13.001],[31.225,-14.24],[13.465,-3.391],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.711,93.179],[166.984,186.494],[32.184,139.048],[-41.137,117.012],[-117.649,122.096],[-218.311,112.676],[-217.79,52.544],[-139.341,12.523],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.404,-2.978],[27.304,14.385],[26.107,4.203],[20.857,-4.464],[29.83,13.269],[-19.548,8.902],[-43.764,10.997],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.765,5.295],[-24.064,-12.677],[-29.298,-4.802],[-20.857,4.464],[-29.835,-13.015],[31.231,-14.223],[13.467,-3.384],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.581,93.2],[166.757,186.531],[32.184,139.048],[-41.137,117.012],[-117.678,122.102],[-218.333,112.632],[-217.781,52.502],[-139.314,12.522],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.452,-2.981],[27.304,14.385],[26.107,4.203],[20.86,-4.45],[29.82,13.289],[-19.553,8.889],[-43.77,10.966],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.543,5.266],[-24.064,-12.677],[-29.298,-4.802],[-20.86,4.45],[-29.825,-13.036],[31.24,-14.201],[13.469,-3.374],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.403,93.228],[166.446,186.583],[32.184,139.048],[-41.137,117.012],[-117.718,122.112],[-218.362,112.572],[-217.769,52.444],[-139.277,12.521],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.516,-2.985],[27.304,14.385],[26.107,4.203],[20.863,-4.43],[29.806,13.316],[-19.56,8.87],[-43.777,10.926],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.252,5.228],[-24.064,-12.677],[-29.298,-4.802],[-20.863,4.431],[-29.811,-13.062],[31.251,-14.172],[13.471,-3.362],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.17,93.265],[166.038,186.651],[32.184,139.048],[-41.137,117.012],[-117.77,122.124],[-218.401,112.493],[-217.753,52.369],[-139.228,12.519],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.596,-2.99],[27.304,14.385],[26.107,4.203],[20.866,-4.406],[29.789,13.349],[-19.569,8.847],[-43.787,10.875],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-45.882,5.181],[-24.064,-12.677],[-29.298,-4.802],[-20.867,4.406],[-29.794,-13.096],[31.266,-14.135],[13.474,-3.346],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.873,93.311],[165.52,186.738],[32.184,139.048],[-41.137,117.012],[-117.836,122.139],[-218.449,112.393],[-217.732,52.273],[-139.167,12.517],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.697,-2.997],[27.304,14.385],[26.107,4.203],[20.871,-4.376],[29.767,13.391],[-19.58,8.818],[-43.8,10.811],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-45.419,5.121],[-24.064,-12.677],[-29.298,-4.802],[-20.871,4.376],[-29.773,-13.138],[31.284,-14.089],[13.478,-3.327],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.502,93.37],[164.872,186.846],[32.184,139.048],[-41.137,117.012],[-117.919,122.159],[-218.511,112.268],[-217.706,52.154],[-139.089,12.514],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.821,-3.005],[27.304,14.385],[26.107,4.203],[20.877,-4.338],[29.741,13.443],[-19.594,8.782],[-43.815,10.731],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-44.847,5.048],[-24.064,-12.677],[-29.298,-4.802],[-20.877,4.338],[-29.747,-13.19],[31.306,-14.031],[13.482,-3.302],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.044,93.442],[164.071,186.979],[32.184,139.048],[-41.137,117.012],[-118.022,122.183],[-218.586,112.113],[-217.675,52.006],[-138.994,12.51],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.974,-3.014],[27.304,14.385],[26.107,4.203],[20.884,-4.291],[29.708,13.507],[-19.612,8.738],[-43.834,10.634],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-44.143,4.957],[-24.064,-12.677],[-29.298,-4.802],[-20.884,4.292],[-29.715,-13.254],[31.333,-13.961],[13.488,-3.272],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[337.479,93.531],[163.084,187.144],[32.184,139.048],[-41.137,117.012],[-118.148,122.212],[-218.679,111.922],[-217.635,51.824],[-138.877,12.506],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[48.162,-3.026],[27.304,14.385],[26.107,4.203],[20.893,-4.234],[29.667,13.586],[-19.633,8.684],[-43.857,10.514],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-43.277,4.845],[-24.064,-12.677],[-29.298,-4.802],[-20.893,4.234],[-29.675,-13.332],[31.367,-13.874],[13.495,-3.235],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[336.785,93.64],[161.871,187.346],[32.184,139.048],[-41.137,117.012],[-118.304,122.249],[-218.793,111.688],[-217.587,51.6],[-138.732,12.5],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[48.395,-3.041],[27.304,14.385],[26.107,4.203],[20.904,-4.164],[29.617,13.683],[-19.659,8.617],[-43.885,10.365],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-42.207,4.708],[-24.064,-12.677],[-29.298,-4.802],[-20.904,4.164],[-29.626,-13.43],[31.408,-13.767],[13.504,-3.19],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[335.927,93.775],[160.372,187.596],[32.184,139.048],[-41.137,117.012],[-118.496,122.293],[-218.935,111.398],[-217.528,51.324],[-138.554,12.494],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[48.685,-3.059],[27.304,14.385],[26.107,4.203],[20.918,-4.076],[29.555,13.804],[-19.691,8.534],[-43.92,10.181],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-40.874,4.536],[-24.064,-12.677],[-29.298,-4.802],[-20.918,4.076],[-29.564,-13.551],[31.46,-13.634],[13.515,-3.133],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[334.858,93.943],[158.505,187.907],[32.184,139.048],[-41.137,117.012],[-118.735,122.349],[-219.111,111.037],[-217.453,50.98],[-138.332,12.485],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[49.051,-3.082],[27.304,14.385],[26.107,4.203],[20.935,-3.965],[29.476,13.957],[-19.732,8.428],[-43.965,9.947],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-39.19,4.319],[-24.064,-12.677],[-29.298,-4.802],[-20.935,3.965],[-29.487,-13.704],[31.526,-13.465],[13.529,-3.061],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[333.509,94.156],[156.147,188.3],[32.184,139.048],[-41.137,117.012],[-119.037,122.42],[-219.333,110.581],[-217.359,50.545],[-138.052,12.475],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[49.521,-3.111],[27.304,14.385],[26.107,4.203],[20.957,-3.822],[29.375,14.153],[-19.785,8.293],[-44.023,9.648],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-37.029,4.041],[-24.064,-12.677],[-29.298,-4.802],[-20.957,3.823],[-29.388,-13.9],[31.61,-13.249],[13.546,-2.969],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[331.776,94.429],[153.12,188.804],[32.184,139.048],[-41.137,117.012],[-119.425,122.51],[-219.618,109.996],[-217.239,49.986],[-137.691,12.462],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[50.132,-3.15],[27.304,14.385],[26.107,4.203],[20.986,-3.637],[29.244,14.408],[-19.853,8.117],[-44.097,9.258],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-34.218,3.679],[-24.064,-12.677],[-29.298,-4.802],[-20.986,3.637],[-29.259,-14.155],[31.719,-12.968],[13.569,-2.849],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[329.523,94.783],[149.182,189.461],[32.184,139.048],[-41.137,117.012],[-119.929,122.628],[-219.989,109.235],[-217.083,49.26],[-137.223,12.444],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[50.913,-3.199],[27.304,14.385],[26.107,4.203],[21.023,-3.4],[29.076,14.734],[-19.94,7.892],[-44.193,8.76],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-30.626,3.216],[-24.064,-12.677],[-29.298,-4.802],[-21.023,3.4],[-29.094,-14.482],[31.859,-12.609],[13.599,-2.696],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[326.643,95.237],[144.151,190.299],[32.184,139.048],[-41.137,117.012],[-120.574,122.779],[-220.463,108.263],[-216.882,48.332],[-136.624,12.422],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[51.807,-3.255],[27.304,14.385],[26.107,4.203],[21.065,-3.129],[28.884,15.108],[-20.04,7.634],[-44.302,8.19],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-26.514,2.687],[-24.064,-12.677],[-29.298,-4.802],[-21.065,3.129],[-28.905,-14.855],[32.018,-12.197],[13.632,-2.52],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[323.348,95.756],[138.392,191.259],[32.184,139.048],[-41.137,117.012],[-121.311,122.951],[-221.006,107.15],[-216.654,47.27],[-135.939,12.396],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[52.639,-3.307],[27.304,14.384],[26.107,4.203],[21.104,-2.877],[28.705,15.455],[-20.134,7.395],[-44.404,7.66],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-22.688,2.195],[-24.064,-12.677],[-29.298,-4.802],[-21.104,2.877],[-28.729,-15.203],[32.167,-11.814],[13.664,-2.357],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[320.28,96.239],[133.033,192.152],[32.184,139.048],[-41.137,117.012],[-121.998,123.111],[-221.511,106.114],[-216.44,46.281],[-135.302,12.372],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[53.299,-3.349],[27.304,14.385],[26.107,4.203],[21.135,-2.677],[28.564,15.731],[-20.207,7.205],[-44.484,7.239],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-19.655,1.804],[-24.064,-12.677],[-29.298,-4.802],[-21.135,2.677],[-28.59,-15.479],[32.285,-11.511],[13.689,-2.228],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[317.849,96.621],[128.785,192.86],[32.184,139.048],[-41.137,117.012],[-122.542,123.238],[-221.911,105.292],[-216.271,45.498],[-134.796,12.354],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[53.797,-3.38],[27.304,14.385],[26.107,4.203],[21.159,-2.526],[28.457,15.938],[-20.263,7.061],[-44.545,6.922],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-17.366,1.509],[-24.064,-12.677],[-29.298,-4.802],[-21.159,2.526],[-28.485,-15.687],[32.374,-11.282],[13.707,-2.13],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[316.014,96.91],[125.578,193.395],[32.184,139.048],[-41.137,117.012],[-122.953,123.334],[-222.213,104.673],[-216.144,44.906],[-134.415,12.339],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.174,-3.404],[27.304,14.385],[26.107,4.203],[21.176,-2.412],[28.375,16.096],[-20.305,6.953],[-44.591,6.681],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-15.629,1.286],[-24.064,-12.677],[-29.298,-4.802],[-21.176,2.412],[-28.405,-15.844],[32.442,-11.108],[13.721,-2.056],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[314.622,97.129],[123.146,193.8],[32.184,139.048],[-41.137,117.012],[-123.264,123.407],[-222.442,104.202],[-216.047,44.458],[-134.126,12.328],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.465,-3.422],[27.304,14.385],[26.107,4.203],[21.19,-2.324],[28.313,16.218],[-20.338,6.869],[-44.627,6.496],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-14.291,1.113],[-24.064,-12.677],[-29.298,-4.802],[-21.19,2.323],[-28.343,-15.966],[32.494,-10.974],[13.732,-1.999],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[313.55,97.298],[121.272,194.113],[32.184,139.048],[-41.137,117.012],[-123.504,123.463],[-222.619,103.84],[-215.973,44.112],[-133.903,12.32],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.692,-3.436],[27.304,14.385],[26.107,4.203],[21.201,-2.255],[28.264,16.312],[-20.363,6.803],[-44.655,6.351],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-13.248,0.979],[-24.064,-12.677],[-29.298,-4.802],[-21.201,2.255],[-28.295,-16.061],[32.534,-10.87],[13.741,-1.954],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[312.713,97.43],[119.811,194.356],[32.184,139.048],[-41.137,117.012],[-123.692,123.507],[-222.757,103.558],[-215.915,43.842],[-133.729,12.314],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.87,-3.447],[27.304,14.385],[26.107,4.203],[21.209,-2.201],[28.226,16.387],[-20.383,6.752],[-44.676,6.237],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-12.428,0.874],[-24.064,-12.677],[-29.298,-4.802],[-21.209,2.201],[-28.258,-16.135],[32.566,-10.788],[13.748,-1.919],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.166,-149.936],[312.056,97.533],[118.662,194.548],[32.184,139.048],[-41.137,117.012],[-123.839,123.541],[-222.865,103.336],[-215.869,43.63],[-133.592,12.309],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.01,-3.456],[27.304,14.385],[26.107,4.203],[21.216,-2.158],[28.196,16.445],[-20.399,6.712],[-44.694,6.148],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.783,0.791],[-24.064,-12.677],[-29.298,-4.802],[-21.216,2.158],[-28.228,-16.194],[32.591,-10.723],[13.753,-1.892],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.539,97.615],[117.759,194.698],[32.184,139.048],[-41.137,117.012],[-123.954,123.568],[-222.95,103.161],[-215.833,43.464],[-133.485,12.305],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.12,-3.463],[27.304,14.385],[26.107,4.203],[21.221,-2.125],[28.172,16.491],[-20.411,6.68],[-44.707,6.078],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.279,0.726],[-24.064,-12.677],[-29.298,-4.802],[-21.221,2.125],[-28.205,-16.24],[32.611,-10.673],[13.757,-1.87],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.135,97.678],[117.054,194.816],[32.184,139.048],[-41.137,117.012],[-124.045,123.589],[-223.017,103.025],[-215.805,43.334],[-133.401,12.301],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.205,-3.468],[27.304,14.385],[26.107,4.203],[21.225,-2.099],[28.154,16.526],[-20.421,6.656],[-44.717,6.024],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.891,0.676],[-24.064,-12.677],[-29.298,-4.802],[-21.225,2.099],[-28.187,-16.275],[32.626,-10.634],[13.76,-1.854],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.824,97.727],[116.509,194.906],[32.184,139.048],[-41.137,117.012],[-124.114,123.606],[-223.068,102.92],[-215.783,43.233],[-133.336,12.299],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.268,-3.472],[27.304,14.385],[26.107,4.203],[21.228,-2.08],[28.14,16.553],[-20.428,6.638],[-44.725,5.984],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.599,0.638],[-24.064,-12.677],[-29.298,-4.802],[-21.228,2.08],[-28.174,-16.301],[32.637,-10.605],[13.763,-1.841],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.59,97.764],[116.1,194.975],[32.184,139.048],[-41.137,117.012],[-124.167,123.618],[-223.106,102.841],[-215.767,43.158],[-133.288,12.297],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.314,-3.475],[27.304,14.385],[26.107,4.203],[21.23,-2.066],[28.131,16.572],[-20.433,6.624],[-44.731,5.955],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.389,0.611],[-24.064,-12.677],[-29.298,-4.802],[-21.23,2.066],[-28.164,-16.32],[32.645,-10.584],[13.764,-1.832],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.421,97.791],[115.806,195.024],[32.184,139.048],[-41.137,117.012],[-124.204,123.627],[-223.134,102.784],[-215.755,43.104],[-133.252,12.296],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.344,-3.477],[27.304,14.385],[26.107,4.203],[21.231,-2.057],[28.124,16.585],[-20.436,6.616],[-44.734,5.935],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.249,0.593],[-24.064,-12.677],[-29.298,-4.802],[-21.231,2.057],[-28.158,-16.333],[32.651,-10.57],[13.765,-1.826],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.166,-149.936],[310.309,97.808],[115.61,195.056],[32.184,139.048],[-41.137,117.012],[-124.23,123.633],[-223.152,102.746],[-215.748,43.068],[-133.229,12.295],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.361,-3.478],[27.304,14.385],[26.107,4.203],[21.232,-2.052],[28.12,16.592],[-20.438,6.611],[-44.736,5.924],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.171,0.583],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.052],[-28.154,-16.34],[32.654,-10.562],[13.766,-1.823],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.246,97.818],[115.5,195.075],[32.184,139.048],[-41.137,117.012],[-124.244,123.636],[-223.163,102.725],[-215.743,43.047],[-133.216,12.295],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.975,-3.454],[27.304,14.385],[26.106,4.197],[21.217,-2.149],[28.206,16.554],[-20.395,6.749],[-44.697,6.123],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.698,0.664],[-24.064,-12.677],[-29.297,-4.795],[-21.217,2.149],[-28.239,-16.3],[32.585,-10.782],[13.754,-1.884],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[118.007,195.051],[32.184,139.048],[-41.356,116.991],[-123.985,123.393],[-223.66,103.41],[-216.58,43.345],[-133.455,12.482],[-81.796,3.31],[-12.612,-36.255]],"c":true}],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[53.209,-3.343],[27.304,14.385],[26.103,4.169],[21.147,-2.594],[28.599,16.371],[-20.198,7.377],[-44.517,7.036],[-18.618,4.327],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-18.692,1.041],[-24.064,-12.677],[-29.293,-4.763],[-21.147,2.594],[-28.625,-16.111],[32.271,-11.785],[13.698,-2.165],[35.359,-7.879],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[129.46,194.917],[32.184,139.048],[-42.344,116.894],[-122.8,122.294],[-225.885,106.53],[-220.354,44.718],[-134.548,13.328],[-83.692,3.751],[-12.612,-36.255]],"c":true}],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[50.262,-3.158],[27.304,14.384],[26.097,4.122],[21.03,-3.336],[29.254,16.068],[-19.87,8.427],[-44.216,8.558],[-18.619,4.315],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-30.364,1.672],[-24.064,-12.677],[-29.287,-4.71],[-21.03,3.336],[-29.269,-15.795],[31.747,-13.458],[13.606,-2.634],[35.361,-7.857],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[148.573,194.694],[32.184,139.048],[-43.992,116.732],[-120.822,120.46],[-229.599,111.736],[-226.655,47.008],[-136.372,14.74],[-86.857,4.486],[-12.612,-36.255]],"c":true}],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[48.293,-3.034],[27.304,14.385],[26.093,4.091],[20.952,-3.832],[29.692,15.864],[-19.65,9.127],[-44.015,9.575],[-18.62,4.306],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-38.161,2.093],[-24.064,-12.677],[-29.282,-4.675],[-20.952,3.832],[-29.7,-15.583],[31.397,-14.576],[13.544,-2.946],[35.363,-7.842],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[161.339,194.545],[32.184,139.048],[-45.093,116.623],[-119.501,119.234],[-232.079,115.214],[-230.863,48.538],[-137.591,15.683],[-88.971,4.977],[-12.612,-36.255]],"c":true}],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.208,-2.966],[27.304,14.385],[26.091,4.074],[20.909,-4.106],[29.933,15.753],[-19.529,9.513],[-43.904,10.136],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-42.456,2.325],[-24.064,-12.677],[-29.28,-4.655],[-20.909,4.106],[-29.937,-15.467],[31.205,-15.192],[13.51,-3.119],[35.364,-7.834],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[168.373,194.462],[32.184,139.048],[-45.7,116.564],[-118.774,118.559],[-233.446,117.13],[-233.181,49.381],[-138.262,16.203],[-90.136,5.248],[-12.612,-36.255]],"c":true}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.617,-2.929],[27.304,14.385],[26.09,4.064],[20.886,-4.255],[30.065,15.692],[-19.463,9.724],[-43.844,10.441],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-44.8,2.451],[-24.064,-12.677],[-29.279,-4.645],[-20.886,4.255],[-30.066,-15.403],[31.099,-15.528],[13.491,-3.213],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[172.211,194.418],[32.184,139.048],[-46.031,116.531],[-118.376,118.191],[-234.192,118.175],[-234.446,49.841],[-138.629,16.487],[-90.771,5.395],[-12.612,-36.255]],"c":true}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.328,-2.911],[27.304,14.385],[26.089,4.06],[20.874,-4.327],[30.129,15.662],[-19.431,9.827],[-43.814,10.59],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-45.942,2.513],[-24.064,-12.677],[-29.278,-4.639],[-20.874,4.327],[-30.129,-15.372],[31.048,-15.692],[13.482,-3.259],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.081,194.396],[32.184,139.048],[-46.192,116.515],[-118.183,118.011],[-234.555,118.685],[-235.063,50.065],[-138.807,16.625],[-91.081,5.467],[-12.612,-36.255]],"c":true}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":294,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.25,-2.906],[27.304,14.385],[26.089,4.059],[20.871,-4.349],[30.146,15.644],[-19.422,9.852],[-43.806,10.634],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.271,2.542],[-24.064,-12.677],[-29.278,-4.639],[-20.871,4.349],[-30.146,-15.354],[31.034,-15.733],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.343,97.803],[174.585,194.358],[32.184,139.048],[-46.218,116.513],[-118.126,117.977],[-234.594,118.806],[-235.17,50.139],[-138.86,16.648],[-91.13,5.479],[-12.612,-36.255]],"c":true}],"t":295,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.265,-2.907],[27.304,14.385],[26.089,4.061],[20.871,-4.351],[30.142,15.612],[-19.424,9.84],[-43.805,10.64],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.283,2.579],[-24.064,-12.677],[-29.278,-4.641],[-20.871,4.351],[-30.142,-15.322],[31.037,-15.713],[13.479,-3.274],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.739,97.741],[174.487,194.252],[32.184,139.048],[-46.15,116.52],[-118.119,118.032],[-234.376,118.725],[-234.937,50.172],[-138.867,16.593],[-91,5.449],[-12.612,-36.255]],"c":true}],"t":296,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.292,-2.909],[27.304,14.385],[26.09,4.065],[20.87,-4.354],[30.134,15.549],[-19.427,9.816],[-43.804,10.651],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.305,2.651],[-24.064,-12.677],[-29.279,-4.645],[-20.87,4.354],[-30.135,-15.261],[31.041,-15.675],[13.479,-3.277],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.5,97.621],[174.298,194.048],[32.184,139.048],[-46.019,116.532],[-118.106,118.138],[-233.955,118.568],[-234.489,50.235],[-138.88,16.486],[-90.748,5.39],[-12.612,-36.255]],"c":true}],"t":297,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.338,-2.911],[27.304,14.385],[26.091,4.071],[20.87,-4.36],[30.122,15.448],[-19.432,9.777],[-43.801,10.668],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.34,2.77],[-24.064,-12.677],[-29.279,-4.652],[-20.87,4.36],[-30.122,-15.161],[31.049,-15.612],[13.478,-3.283],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[312.749,97.424],[173.988,193.714],[32.184,139.048],[-45.804,116.554],[-118.084,118.312],[-233.265,118.311],[-233.754,50.339],[-138.902,16.312],[-90.336,5.294],[-12.612,-36.255]],"c":true}],"t":298,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.407,-2.916],[27.304,14.385],[26.092,4.08],[20.869,-4.369],[30.103,15.294],[-19.439,9.718],[-43.798,10.694],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.394,2.948],[-24.064,-12.677],[-29.281,-4.662],[-20.869,4.369],[-30.103,-15.01],[31.061,-15.519],[13.477,-3.291],[35.364,-7.837],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[314.63,97.128],[173.521,193.21],[32.184,139.048],[-45.48,116.585],[-118.051,118.573],[-232.226,117.924],[-232.648,50.495],[-138.934,16.049],[-89.714,5.15],[-12.612,-36.255]],"c":true}],"t":299,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.502,-2.922],[27.304,14.385],[26.093,4.093],[20.867,-4.381],[30.076,15.082],[-19.45,9.636],[-43.794,10.731],[-18.62,4.307],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.469,3.195],[-24.064,-12.677],[-29.282,-4.677],[-20.867,4.381],[-30.077,-14.8],[31.077,-15.388],[13.476,-3.302],[35.363,-7.843],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[317.239,96.717],[172.873,192.511],[32.184,139.048],[-45.031,116.63],[-118.006,118.937],[-230.785,117.386],[-231.113,50.712],[-138.98,15.685],[-88.852,4.95],[-12.612,-36.255]],"c":true}],"t":300,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.619,-2.929],[27.304,14.385],[26.095,4.108],[20.865,-4.396],[30.044,14.821],[-19.462,9.535],[-43.788,10.775],[-18.62,4.311],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.561,3.499],[-24.064,-12.677],[-29.285,-4.695],[-20.865,4.396],[-30.045,-14.543],[31.097,-15.229],[13.474,-3.316],[35.362,-7.85],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[320.439,96.214],[172.078,191.654],[32.184,139.048],[-44.48,116.684],[-117.951,119.382],[-229.017,116.728],[-229.23,50.978],[-139.035,15.238],[-87.794,4.704],[-12.612,-36.255]],"c":true}],"t":301,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.74,-2.937],[27.304,14.385],[26.097,4.125],[20.863,-4.412],[30.01,14.548],[-19.475,9.43],[-43.782,10.822],[-18.619,4.315],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.657,3.815],[-24.064,-12.677],[-29.287,-4.713],[-20.863,4.412],[-30.012,-14.275],[31.118,-15.062],[13.472,-3.33],[35.361,-7.858],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[323.779,95.688],[171.248,190.759],[32.184,139.048],[-43.906,116.74],[-117.893,119.847],[-227.172,116.04],[-227.265,51.256],[-139.093,14.771],[-86.691,4.447],[-12.612,-36.255]],"c":true}],"t":302,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.851,-2.944],[27.304,14.385],[26.099,4.139],[20.861,-4.426],[29.979,14.301],[-19.487,9.335],[-43.777,10.864],[-18.619,4.319],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.744,4.103],[-24.064,-12.677],[-29.289,-4.73],[-20.861,4.426],[-29.982,-14.031],[31.136,-14.91],[13.471,-3.343],[35.36,-7.865],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[326.816,95.21],[170.494,189.945],[32.184,139.048],[-43.383,116.792],[-117.84,120.27],[-225.494,115.415],[-225.478,51.508],[-139.146,14.347],[-85.687,4.214],[-12.612,-36.255]],"c":true}],"t":303,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[46.945,-2.95],[27.304,14.385],[26.101,4.152],[20.86,-4.438],[29.953,14.092],[-19.498,9.254],[-43.773,10.9],[-18.618,4.323],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.818,4.346],[-24.064,-12.677],[-29.291,-4.744],[-20.86,4.438],[-29.956,-13.825],[31.152,-14.782],[13.469,-3.354],[35.36,-7.871],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[329.38,94.806],[169.857,189.258],[32.184,139.048],[-42.942,116.835],[-117.796,120.628],[-224.078,114.887],[-223.97,51.721],[-139.191,13.989],[-84.84,4.017],[-12.612,-36.255]],"c":true}],"t":304,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.021,-2.954],[27.304,14.385],[26.102,4.162],[20.859,-4.448],[29.932,13.92],[-19.506,9.188],[-43.769,10.929],[-18.618,4.325],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.878,4.546],[-24.064,-12.677],[-29.292,-4.756],[-20.859,4.448],[-29.935,-13.656],[31.165,-14.677],[13.468,-3.363],[35.359,-7.875],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[331.488,94.474],[169.333,188.693],[32.184,139.048],[-42.579,116.871],[-117.76,120.921],[-222.913,114.453],[-222.729,51.897],[-139.227,13.694],[-84.143,3.856],[-12.612,-36.255]],"c":true}],"t":305,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.084,-2.958],[27.304,14.385],[26.103,4.171],[20.858,-4.456],[29.914,13.779],[-19.513,9.134],[-43.766,10.953],[-18.618,4.328],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.928,4.71],[-24.064,-12.677],[-29.293,-4.765],[-20.858,4.456],[-29.918,-13.517],[31.176,-14.591],[13.467,-3.37],[35.359,-7.879],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[333.213,94.203],[168.905,188.231],[32.184,139.048],[-42.282,116.9],[-117.73,121.161],[-221.961,114.098],[-221.715,52.04],[-139.257,13.453],[-83.573,3.723],[-12.612,-36.255]],"c":true}],"t":306,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.136,-2.962],[27.304,14.385],[26.104,4.178],[20.857,-4.463],[29.9,13.664],[-19.518,9.089],[-43.764,10.973],[-18.617,4.33],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.968,4.844],[-24.064,-12.677],[-29.294,-4.773],[-20.857,4.463],[-29.904,-13.404],[31.185,-14.52],[13.467,-3.377],[35.358,-7.883],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[334.625,93.98],[168.554,187.853],[32.184,139.048],[-42.039,116.924],[-117.705,121.358],[-221.18,113.807],[-220.884,52.157],[-139.282,13.256],[-83.106,3.615],[-12.612,-36.255]],"c":true}],"t":307,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.178,-2.964],[27.304,14.385],[26.105,4.183],[20.856,-4.468],[29.888,13.569],[-19.523,9.053],[-43.762,10.989],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.002,4.953],[-24.064,-12.677],[-29.295,-4.78],[-20.856,4.469],[-29.892,-13.311],[31.192,-14.462],[13.466,-3.382],[35.358,-7.885],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[335.785,93.798],[168.266,187.542],[32.184,139.048],[-41.839,116.943],[-117.685,121.519],[-220.54,113.568],[-220.201,52.254],[-139.302,13.094],[-82.723,3.526],[-12.612,-36.255]],"c":true}],"t":308,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.213,-2.966],[27.304,14.385],[26.105,4.188],[20.856,-4.473],[29.879,13.492],[-19.527,9.023],[-43.76,11.003],[-18.617,4.332],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.029,5.044],[-24.064,-12.677],[-29.296,-4.785],[-20.856,4.473],[-29.883,-13.234],[31.198,-14.415],[13.466,-3.386],[35.358,-7.888],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[336.737,93.648],[168.029,187.287],[32.184,139.048],[-41.675,116.959],[-117.669,121.652],[-220.014,113.372],[-219.641,52.333],[-139.318,12.961],[-82.408,3.453],[-12.612,-36.255]],"c":true}],"t":309,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.241,-2.968],[27.304,14.385],[26.106,4.192],[20.855,-4.477],[29.871,13.428],[-19.53,8.998],[-43.759,11.014],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.051,5.117],[-24.064,-12.677],[-29.296,-4.789],[-20.855,4.477],[-29.875,-13.172],[31.203,-14.376],[13.465,-3.389],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[337.517,93.525],[167.835,187.078],[32.184,139.048],[-41.541,116.973],[-117.655,121.761],[-219.583,113.212],[-219.183,52.398],[-139.332,12.852],[-82.151,3.393],[-12.612,-36.255]],"c":true}],"t":310,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.265,-2.97],[27.304,14.385],[26.106,4.195],[20.855,-4.48],[29.864,13.377],[-19.532,8.979],[-43.757,11.022],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.069,5.178],[-24.064,-12.677],[-29.297,-4.793],[-20.855,4.48],[-29.868,-13.121],[31.207,-14.344],[13.465,-3.392],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.151,93.425],[167.678,186.908],[32.184,139.048],[-41.432,116.983],[-117.644,121.849],[-219.233,113.081],[-218.81,52.451],[-139.343,12.764],[-81.941,3.344],[-12.612,-36.255]],"c":true}],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.283,-2.971],[27.304,14.385],[26.106,4.197],[20.854,-4.482],[29.859,13.335],[-19.534,8.962],[-43.757,11.029],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.084,5.226],[-24.064,-12.677],[-29.297,-4.796],[-20.855,4.482],[-29.863,-13.08],[31.21,-14.319],[13.465,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.66,93.345],[167.551,186.772],[32.184,139.048],[-41.344,116.992],[-117.635,121.92],[-218.951,112.976],[-218.51,52.493],[-139.352,12.693],[-81.773,3.305],[-12.612,-36.255]],"c":true}],"t":312,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.298,-2.972],[27.304,14.385],[26.107,4.199],[20.854,-4.484],[29.855,13.302],[-19.536,8.95],[-43.756,11.035],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.096,5.264],[-24.064,-12.677],[-29.298,-4.798],[-20.854,4.484],[-29.859,-13.048],[31.212,-14.299],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.063,93.282],[167.451,186.664],[32.184,139.048],[-41.275,116.999],[-117.628,121.976],[-218.729,112.893],[-218.273,52.526],[-139.359,12.636],[-81.64,3.274],[-12.612,-36.255]],"c":true}],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.309,-2.972],[27.304,14.385],[26.107,4.201],[20.854,-4.485],[29.852,13.277],[-19.537,8.94],[-43.755,11.039],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.105,5.293],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.485],[-29.856,-13.023],[31.214,-14.283],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.371,93.233],[167.375,186.581],[32.184,139.048],[-41.222,117.004],[-117.623,122.019],[-218.559,112.83],[-218.091,52.552],[-139.364,12.593],[-81.538,3.25],[-12.612,-36.255]],"c":true}],"t":314,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.317,-2.973],[27.304,14.385],[26.107,4.202],[20.854,-4.486],[29.85,13.259],[-19.538,8.933],[-43.755,11.043],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.111,5.315],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.486],[-29.854,-13.005],[31.216,-14.272],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.597,93.197],[167.319,186.521],[32.184,139.048],[-41.183,117.008],[-117.619,122.05],[-218.434,112.783],[-217.958,52.571],[-139.368,12.562],[-81.463,3.233],[-12.612,-36.255]],"c":true}],"t":315,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.323,-2.973],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.246],[-19.539,8.928],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.115,5.329],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.992],[31.217,-14.264],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.75,93.173],[167.281,186.48],[32.184,139.048],[-41.157,117.01],[-117.617,122.072],[-218.35,112.752],[-217.868,52.583],[-139.371,12.54],[-81.413,3.221],[-12.612,-36.255]],"c":true}],"t":316,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.326,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.847,13.239],[-19.539,8.925],[-43.755,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.118,5.337],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.852,-12.985],[31.217,-14.26],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.837,93.16],[167.259,186.456],[32.184,139.048],[-41.142,117.012],[-117.615,122.084],[-218.302,112.734],[-217.817,52.591],[-139.372,12.528],[-81.384,3.215],[-12.612,-36.255]],"c":true}],"t":317,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.331,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.486],[29.846,13.239],[-19.54,8.923],[-43.755,11.044],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.099,5.338],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.486],[-29.85,-12.985],[31.218,-14.257],[13.464,-3.398],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.849,93.158],[167.225,186.454],[32.184,139.048],[-41.137,117.012],[-117.618,122.088],[-218.289,112.723],[-217.8,52.588],[-139.369,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":323,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.345,-2.975],[27.304,14.385],[26.107,4.203],[20.855,-4.482],[29.843,13.244],[-19.541,8.919],[-43.757,11.035],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.037,5.33],[-24.064,-12.677],[-29.298,-4.802],[-20.855,4.482],[-29.848,-12.991],[31.221,-14.251],[13.465,-3.396],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.799,93.166],[167.137,186.468],[32.184,139.048],[-41.137,117.012],[-117.629,122.091],[-218.297,112.706],[-217.797,52.572],[-139.359,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.369,-2.976],[27.304,14.385],[26.107,4.203],[20.856,-4.475],[29.838,13.254],[-19.544,8.913],[-43.76,11.02],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.928,5.315],[-24.064,-12.677],[-29.298,-4.802],[-20.856,4.475],[-29.843,-13.001],[31.225,-14.24],[13.465,-3.391],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.711,93.179],[166.984,186.494],[32.184,139.048],[-41.137,117.012],[-117.649,122.096],[-218.311,112.676],[-217.79,52.544],[-139.341,12.523],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":325,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.404,-2.978],[27.304,14.385],[26.107,4.203],[20.857,-4.464],[29.83,13.269],[-19.548,8.902],[-43.764,10.997],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.765,5.295],[-24.064,-12.677],[-29.298,-4.802],[-20.857,4.464],[-29.835,-13.015],[31.231,-14.223],[13.467,-3.384],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.581,93.2],[166.757,186.531],[32.184,139.048],[-41.137,117.012],[-117.678,122.102],[-218.333,112.632],[-217.781,52.502],[-139.314,12.522],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":326,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.452,-2.981],[27.304,14.385],[26.107,4.203],[20.86,-4.45],[29.82,13.289],[-19.553,8.889],[-43.77,10.966],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.543,5.266],[-24.064,-12.677],[-29.298,-4.802],[-20.86,4.45],[-29.825,-13.036],[31.24,-14.201],[13.469,-3.374],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.403,93.228],[166.446,186.583],[32.184,139.048],[-41.137,117.012],[-117.718,122.112],[-218.362,112.572],[-217.769,52.444],[-139.277,12.521],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":327,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.516,-2.985],[27.304,14.385],[26.107,4.203],[20.863,-4.43],[29.806,13.316],[-19.56,8.87],[-43.777,10.926],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.252,5.228],[-24.064,-12.677],[-29.298,-4.802],[-20.863,4.431],[-29.811,-13.062],[31.251,-14.172],[13.471,-3.362],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.17,93.265],[166.038,186.651],[32.184,139.048],[-41.137,117.012],[-117.77,122.124],[-218.401,112.493],[-217.753,52.369],[-139.228,12.519],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":328,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.596,-2.99],[27.304,14.385],[26.107,4.203],[20.866,-4.406],[29.789,13.349],[-19.569,8.847],[-43.787,10.875],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-45.882,5.181],[-24.064,-12.677],[-29.298,-4.802],[-20.867,4.406],[-29.794,-13.096],[31.266,-14.135],[13.474,-3.346],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.873,93.311],[165.52,186.738],[32.184,139.048],[-41.137,117.012],[-117.836,122.139],[-218.449,112.393],[-217.732,52.273],[-139.167,12.517],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":329,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.697,-2.997],[27.304,14.385],[26.107,4.203],[20.871,-4.376],[29.767,13.391],[-19.58,8.818],[-43.8,10.811],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-45.419,5.121],[-24.064,-12.677],[-29.298,-4.802],[-20.871,4.376],[-29.773,-13.138],[31.284,-14.089],[13.478,-3.327],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.502,93.37],[164.872,186.846],[32.184,139.048],[-41.137,117.012],[-117.919,122.159],[-218.511,112.268],[-217.706,52.154],[-139.089,12.514],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":330,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.821,-3.005],[27.304,14.385],[26.107,4.203],[20.877,-4.338],[29.741,13.443],[-19.594,8.782],[-43.815,10.731],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-44.847,5.048],[-24.064,-12.677],[-29.298,-4.802],[-20.877,4.338],[-29.747,-13.19],[31.306,-14.031],[13.482,-3.302],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.044,93.442],[164.071,186.979],[32.184,139.048],[-41.137,117.012],[-118.022,122.183],[-218.586,112.113],[-217.675,52.006],[-138.994,12.51],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":331,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.974,-3.014],[27.304,14.385],[26.107,4.203],[20.884,-4.291],[29.708,13.507],[-19.612,8.738],[-43.834,10.634],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-44.143,4.957],[-24.064,-12.677],[-29.298,-4.802],[-20.884,4.292],[-29.715,-13.254],[31.333,-13.961],[13.488,-3.272],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[337.479,93.531],[163.084,187.144],[32.184,139.048],[-41.137,117.012],[-118.148,122.212],[-218.679,111.922],[-217.635,51.824],[-138.877,12.506],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":332,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[48.162,-3.026],[27.304,14.385],[26.107,4.203],[20.893,-4.234],[29.667,13.586],[-19.633,8.684],[-43.857,10.514],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-43.277,4.845],[-24.064,-12.677],[-29.298,-4.802],[-20.893,4.234],[-29.675,-13.332],[31.367,-13.874],[13.495,-3.235],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[336.785,93.64],[161.871,187.346],[32.184,139.048],[-41.137,117.012],[-118.304,122.249],[-218.793,111.688],[-217.587,51.6],[-138.732,12.5],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":333,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[48.395,-3.041],[27.304,14.385],[26.107,4.203],[20.904,-4.164],[29.617,13.683],[-19.659,8.617],[-43.885,10.365],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-42.207,4.708],[-24.064,-12.677],[-29.298,-4.802],[-20.904,4.164],[-29.626,-13.43],[31.408,-13.767],[13.504,-3.19],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[335.927,93.775],[160.372,187.596],[32.184,139.048],[-41.137,117.012],[-118.496,122.293],[-218.935,111.398],[-217.528,51.324],[-138.554,12.494],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":334,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[48.685,-3.059],[27.304,14.385],[26.107,4.203],[20.918,-4.076],[29.555,13.804],[-19.691,8.534],[-43.92,10.181],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-40.874,4.536],[-24.064,-12.677],[-29.298,-4.802],[-20.918,4.076],[-29.564,-13.551],[31.46,-13.634],[13.515,-3.133],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[334.858,93.943],[158.505,187.907],[32.184,139.048],[-41.137,117.012],[-118.735,122.349],[-219.111,111.037],[-217.453,50.98],[-138.332,12.485],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":335,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[49.051,-3.082],[27.304,14.385],[26.107,4.203],[20.935,-3.965],[29.476,13.957],[-19.732,8.428],[-43.965,9.947],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-39.19,4.319],[-24.064,-12.677],[-29.298,-4.802],[-20.935,3.965],[-29.487,-13.704],[31.526,-13.465],[13.529,-3.061],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[333.509,94.156],[156.147,188.3],[32.184,139.048],[-41.137,117.012],[-119.037,122.42],[-219.333,110.581],[-217.359,50.545],[-138.052,12.475],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":336,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[49.521,-3.111],[27.304,14.385],[26.107,4.203],[20.957,-3.822],[29.375,14.153],[-19.785,8.293],[-44.023,9.648],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-37.029,4.041],[-24.064,-12.677],[-29.298,-4.802],[-20.957,3.823],[-29.388,-13.9],[31.61,-13.249],[13.546,-2.969],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[331.776,94.429],[153.12,188.804],[32.184,139.048],[-41.137,117.012],[-119.425,122.51],[-219.618,109.996],[-217.239,49.986],[-137.691,12.462],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":337,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[50.132,-3.15],[27.304,14.385],[26.107,4.203],[20.986,-3.637],[29.244,14.408],[-19.853,8.117],[-44.097,9.258],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-34.218,3.679],[-24.064,-12.677],[-29.298,-4.802],[-20.986,3.637],[-29.259,-14.155],[31.719,-12.968],[13.569,-2.849],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[329.523,94.783],[149.182,189.461],[32.184,139.048],[-41.137,117.012],[-119.929,122.628],[-219.989,109.235],[-217.083,49.26],[-137.223,12.444],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":338,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[50.913,-3.199],[27.304,14.385],[26.107,4.203],[21.023,-3.4],[29.076,14.734],[-19.94,7.892],[-44.193,8.76],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-30.626,3.216],[-24.064,-12.677],[-29.298,-4.802],[-21.023,3.4],[-29.094,-14.482],[31.859,-12.609],[13.599,-2.696],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[326.643,95.237],[144.151,190.299],[32.184,139.048],[-41.137,117.012],[-120.574,122.779],[-220.463,108.263],[-216.882,48.332],[-136.624,12.422],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":339,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[51.807,-3.255],[27.304,14.385],[26.107,4.203],[21.065,-3.129],[28.884,15.108],[-20.04,7.634],[-44.302,8.19],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-26.514,2.687],[-24.064,-12.677],[-29.298,-4.802],[-21.065,3.129],[-28.905,-14.855],[32.018,-12.197],[13.632,-2.52],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[323.348,95.756],[138.392,191.259],[32.184,139.048],[-41.137,117.012],[-121.311,122.951],[-221.006,107.15],[-216.654,47.27],[-135.939,12.396],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":340,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[52.639,-3.307],[27.304,14.384],[26.107,4.203],[21.104,-2.877],[28.705,15.455],[-20.134,7.395],[-44.404,7.66],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-22.688,2.195],[-24.064,-12.677],[-29.298,-4.802],[-21.104,2.877],[-28.729,-15.203],[32.167,-11.814],[13.664,-2.357],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[320.28,96.239],[133.033,192.152],[32.184,139.048],[-41.137,117.012],[-121.998,123.111],[-221.511,106.114],[-216.44,46.281],[-135.302,12.372],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":341,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[53.299,-3.349],[27.304,14.385],[26.107,4.203],[21.135,-2.677],[28.564,15.731],[-20.207,7.205],[-44.484,7.239],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-19.655,1.804],[-24.064,-12.677],[-29.298,-4.802],[-21.135,2.677],[-28.59,-15.479],[32.285,-11.511],[13.689,-2.228],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[317.849,96.621],[128.785,192.86],[32.184,139.048],[-41.137,117.012],[-122.542,123.238],[-221.911,105.292],[-216.271,45.498],[-134.796,12.354],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":342,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[53.797,-3.38],[27.304,14.385],[26.107,4.203],[21.159,-2.526],[28.457,15.938],[-20.263,7.061],[-44.545,6.922],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-17.366,1.509],[-24.064,-12.677],[-29.298,-4.802],[-21.159,2.526],[-28.485,-15.687],[32.374,-11.282],[13.707,-2.13],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[316.014,96.91],[125.578,193.395],[32.184,139.048],[-41.137,117.012],[-122.953,123.334],[-222.213,104.673],[-216.144,44.906],[-134.415,12.339],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":343,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.174,-3.404],[27.304,14.385],[26.107,4.203],[21.176,-2.412],[28.375,16.096],[-20.305,6.953],[-44.591,6.681],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-15.629,1.286],[-24.064,-12.677],[-29.298,-4.802],[-21.176,2.412],[-28.405,-15.844],[32.442,-11.108],[13.721,-2.056],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[314.622,97.129],[123.146,193.8],[32.184,139.048],[-41.137,117.012],[-123.264,123.407],[-222.442,104.202],[-216.047,44.458],[-134.126,12.328],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":344,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.465,-3.422],[27.304,14.385],[26.107,4.203],[21.19,-2.324],[28.313,16.218],[-20.338,6.869],[-44.627,6.496],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-14.291,1.113],[-24.064,-12.677],[-29.298,-4.802],[-21.19,2.323],[-28.343,-15.966],[32.494,-10.974],[13.732,-1.999],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[313.55,97.298],[121.272,194.113],[32.184,139.048],[-41.137,117.012],[-123.504,123.463],[-222.619,103.84],[-215.973,44.112],[-133.903,12.32],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":345,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.692,-3.436],[27.304,14.385],[26.107,4.203],[21.201,-2.255],[28.264,16.312],[-20.363,6.803],[-44.655,6.351],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-13.248,0.979],[-24.064,-12.677],[-29.298,-4.802],[-21.201,2.255],[-28.295,-16.061],[32.534,-10.87],[13.741,-1.954],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[312.713,97.43],[119.811,194.356],[32.184,139.048],[-41.137,117.012],[-123.692,123.507],[-222.757,103.558],[-215.915,43.842],[-133.729,12.314],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":346,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.87,-3.447],[27.304,14.385],[26.107,4.203],[21.209,-2.201],[28.226,16.387],[-20.383,6.752],[-44.676,6.237],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-12.428,0.874],[-24.064,-12.677],[-29.298,-4.802],[-21.209,2.201],[-28.258,-16.135],[32.566,-10.788],[13.748,-1.919],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.166,-149.936],[312.056,97.533],[118.662,194.548],[32.184,139.048],[-41.137,117.012],[-123.839,123.541],[-222.865,103.336],[-215.869,43.63],[-133.592,12.309],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":347,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.01,-3.456],[27.304,14.385],[26.107,4.203],[21.216,-2.158],[28.196,16.445],[-20.399,6.712],[-44.694,6.148],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.783,0.791],[-24.064,-12.677],[-29.298,-4.802],[-21.216,2.158],[-28.228,-16.194],[32.591,-10.723],[13.753,-1.892],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.539,97.615],[117.759,194.698],[32.184,139.048],[-41.137,117.012],[-123.954,123.568],[-222.95,103.161],[-215.833,43.464],[-133.485,12.305],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.12,-3.463],[27.304,14.385],[26.107,4.203],[21.221,-2.125],[28.172,16.491],[-20.411,6.68],[-44.707,6.078],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.279,0.726],[-24.064,-12.677],[-29.298,-4.802],[-21.221,2.125],[-28.205,-16.24],[32.611,-10.673],[13.757,-1.87],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.135,97.678],[117.054,194.816],[32.184,139.048],[-41.137,117.012],[-124.045,123.589],[-223.017,103.025],[-215.805,43.334],[-133.401,12.301],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.205,-3.468],[27.304,14.385],[26.107,4.203],[21.225,-2.099],[28.154,16.526],[-20.421,6.656],[-44.717,6.024],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.891,0.676],[-24.064,-12.677],[-29.298,-4.802],[-21.225,2.099],[-28.187,-16.275],[32.626,-10.634],[13.76,-1.854],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.824,97.727],[116.509,194.906],[32.184,139.048],[-41.137,117.012],[-124.114,123.606],[-223.068,102.92],[-215.783,43.233],[-133.336,12.299],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.268,-3.472],[27.304,14.385],[26.107,4.203],[21.228,-2.08],[28.14,16.553],[-20.428,6.638],[-44.725,5.984],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.599,0.638],[-24.064,-12.677],[-29.298,-4.802],[-21.228,2.08],[-28.174,-16.301],[32.637,-10.605],[13.763,-1.841],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.59,97.764],[116.1,194.975],[32.184,139.048],[-41.137,117.012],[-124.167,123.618],[-223.106,102.841],[-215.767,43.158],[-133.288,12.297],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.314,-3.475],[27.304,14.385],[26.107,4.203],[21.23,-2.066],[28.131,16.572],[-20.433,6.624],[-44.731,5.955],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.389,0.611],[-24.064,-12.677],[-29.298,-4.802],[-21.23,2.066],[-28.164,-16.32],[32.645,-10.584],[13.764,-1.832],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.421,97.791],[115.806,195.024],[32.184,139.048],[-41.137,117.012],[-124.204,123.627],[-223.134,102.784],[-215.755,43.104],[-133.252,12.296],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.344,-3.477],[27.304,14.385],[26.107,4.203],[21.231,-2.057],[28.124,16.585],[-20.436,6.616],[-44.734,5.935],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.249,0.593],[-24.064,-12.677],[-29.298,-4.802],[-21.231,2.057],[-28.158,-16.333],[32.651,-10.57],[13.765,-1.826],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.166,-149.936],[310.309,97.808],[115.61,195.056],[32.184,139.048],[-41.137,117.012],[-124.23,123.633],[-223.152,102.746],[-215.748,43.068],[-133.229,12.295],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.361,-3.478],[27.304,14.385],[26.107,4.203],[21.232,-2.052],[28.12,16.592],[-20.438,6.611],[-44.736,5.924],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.171,0.583],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.052],[-28.154,-16.34],[32.654,-10.562],[13.766,-1.823],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.246,97.818],[115.5,195.075],[32.184,139.048],[-41.137,117.012],[-124.244,123.636],[-223.163,102.725],[-215.743,43.047],[-133.216,12.295],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.209,-3.469],[27.304,14.385],[26.107,4.201],[21.226,-2.09],[28.154,16.578],[-20.421,6.665],[-44.721,6.002],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.77,0.613],[-24.064,-12.677],[-29.298,-4.799],[-21.226,2.09],[-28.187,-16.326],[32.627,-10.649],[13.761,-1.847],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[116.487,195.068],[32.184,139.048],[-41.225,117.004],[-124.142,123.539],[-223.365,102.996],[-216.079,43.163],[-133.31,12.37],[-81.544,3.252],[-12.612,-36.255]],"c":true}],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.59,-3.43],[27.304,14.385],[26.106,4.191],[21.202,-2.246],[28.292,16.514],[-20.352,6.886],[-44.658,6.322],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-13.22,0.746],[-24.064,-12.677],[-29.296,-4.788],[-21.202,2.246],[-28.323,-16.259],[32.517,-11],[13.742,-1.945],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[120.5,195.022],[32.184,139.048],[-41.571,116.97],[-123.727,123.154],[-224.144,104.089],[-217.401,43.644],[-133.693,12.666],[-82.208,3.406],[-12.612,-36.255]],"c":true}],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[53.209,-3.343],[27.304,14.385],[26.103,4.169],[21.147,-2.594],[28.599,16.371],[-20.198,7.377],[-44.517,7.036],[-18.618,4.327],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-18.692,1.041],[-24.064,-12.677],[-29.293,-4.763],[-21.147,2.594],[-28.625,-16.111],[32.271,-11.785],[13.698,-2.165],[35.359,-7.879],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[129.46,194.917],[32.184,139.048],[-42.344,116.894],[-122.8,122.294],[-225.885,106.53],[-220.354,44.718],[-134.548,13.328],[-83.692,3.751],[-12.612,-36.255]],"c":true}],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[51.196,-3.217],[27.304,14.385],[26.099,4.137],[21.067,-3.101],[29.047,16.164],[-19.974,8.094],[-44.311,8.076],[-18.619,4.319],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-26.663,1.472],[-24.064,-12.677],[-29.289,-4.727],[-21.067,3.101],[-29.065,-15.895],[31.913,-12.928],[13.635,-2.485],[35.361,-7.864],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[142.512,194.764],[32.184,139.048],[-43.47,116.783],[-121.45,121.041],[-228.421,110.085],[-224.657,46.282],[-135.794,14.292],[-85.853,4.253],[-12.612,-36.255]],"c":true}],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[49.472,-3.108],[27.304,14.385],[26.095,4.11],[20.999,-3.535],[29.43,15.986],[-19.782,8.707],[-44.135,8.966],[-18.62,4.311],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-33.49,1.841],[-24.064,-12.677],[-29.285,-4.696],[-20.999,3.535],[-29.442,-15.71],[31.607,-13.906],[13.581,-2.759],[35.362,-7.851],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[153.69,194.634],[32.184,139.048],[-44.434,116.688],[-120.293,119.968],[-230.593,113.13],[-228.341,47.622],[-136.861,15.118],[-87.704,4.683],[-12.612,-36.255]],"c":true}],"t":360,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[48.293,-3.034],[27.304,14.385],[26.093,4.091],[20.952,-3.832],[29.692,15.864],[-19.65,9.127],[-44.015,9.575],[-18.62,4.306],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-38.161,2.093],[-24.064,-12.677],[-29.282,-4.675],[-20.952,3.832],[-29.7,-15.583],[31.397,-14.576],[13.544,-2.946],[35.363,-7.842],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[161.339,194.545],[32.184,139.048],[-45.093,116.623],[-119.501,119.234],[-232.079,115.214],[-230.863,48.538],[-137.591,15.683],[-88.971,4.977],[-12.612,-36.255]],"c":true}],"t":361,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.501,-2.984],[27.304,14.385],[26.092,4.078],[20.921,-4.032],[29.868,15.783],[-19.562,9.409],[-43.934,9.984],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-41.296,2.262],[-24.064,-12.677],[-29.28,-4.661],[-20.921,4.032],[-29.873,-15.498],[31.257,-15.026],[13.519,-3.072],[35.364,-7.836],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[166.473,194.485],[32.184,139.048],[-45.536,116.58],[-118.97,118.742],[-233.077,116.612],[-232.555,49.153],[-138.081,16.063],[-89.821,5.175],[-12.612,-36.255]],"c":true}],"t":362,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.969,-2.951],[27.304,14.385],[26.09,4.07],[20.9,-4.166],[29.987,15.728],[-19.502,9.599],[-43.88,10.26],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-43.406,2.376],[-24.064,-12.677],[-29.279,-4.651],[-20.9,4.166],[-29.989,-15.441],[31.162,-15.328],[13.502,-3.157],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[169.928,194.444],[32.184,139.048],[-45.834,116.551],[-118.613,118.41],[-233.748,117.554],[-233.694,49.567],[-138.411,16.318],[-90.393,5.308],[-12.612,-36.255]],"c":true}],"t":363,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.617,-2.929],[27.304,14.385],[26.09,4.064],[20.886,-4.255],[30.065,15.692],[-19.463,9.724],[-43.844,10.441],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-44.8,2.451],[-24.064,-12.677],[-29.279,-4.645],[-20.886,4.255],[-30.066,-15.403],[31.099,-15.528],[13.491,-3.213],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[172.211,194.418],[32.184,139.048],[-46.031,116.531],[-118.376,118.191],[-234.192,118.175],[-234.446,49.841],[-138.629,16.487],[-90.771,5.395],[-12.612,-36.255]],"c":true}],"t":364,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.398,-2.915],[27.304,14.385],[26.089,4.061],[20.877,-4.31],[30.114,15.669],[-19.439,9.802],[-43.821,10.554],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-45.667,2.498],[-24.064,-12.677],[-29.278,-4.641],[-20.877,4.31],[-30.114,-15.38],[31.06,-15.652],[13.484,-3.248],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[173.63,194.401],[32.184,139.048],[-46.153,116.519],[-118.23,118.055],[-234.467,118.562],[-234.914,50.011],[-138.764,16.591],[-91.006,5.45],[-12.612,-36.255]],"c":true}],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.281,-2.908],[27.304,14.385],[26.089,4.059],[20.873,-4.339],[30.139,15.657],[-19.426,9.843],[-43.809,10.615],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.128,2.523],[-24.064,-12.677],[-29.278,-4.639],[-20.873,4.339],[-30.14,-15.367],[31.04,-15.718],[13.481,-3.266],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.386,194.392],[32.184,139.048],[-46.218,116.513],[-118.151,117.982],[-234.614,118.768],[-235.163,50.102],[-138.836,16.647],[-91.131,5.479],[-12.612,-36.255]],"c":true}],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.694117665291,0.435294121504,0.345098048449,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Thumb","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":89,"op":411,"st":49,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Nail - PATH","parent":4,"tt":1,"tp":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":224,"s":[-215.854,53.1,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":257,"s":[-215.854,56.9,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":294,"s":[-215.854,53.1,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":322,"s":[-215.854,53.1,0],"to":[0,0,0],"ti":[0,0,0]},{"t":355,"s":[-215.854,56.9,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":159,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.6,"y":0},"t":195,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":224,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":257,"s":[{"i":[[0,0],[5.977,-11.693],[12.492,0.343],[0,0],[-11.927,9.366],[0,0],[-7.435,-11.514]],"o":[[6.885,11.15],[-5.977,11.693],[0,0],[-14.573,-15.516],[0,0],[12.995,-2.066],[0,0]],"v":[[41.831,-31.462],[43.556,5.299],[13.369,24.072],[-23.361,15.588],[-18.585,-35.795],[8.315,-47.769],[41.596,-32.101]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":265,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":294,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":318,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":322,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":355,"s":[{"i":[[0,0],[5.977,-11.693],[12.492,0.343],[0,0],[-11.927,9.366],[0,0],[-7.435,-11.514]],"o":[[6.885,11.15],[-5.977,11.693],[0,0],[-14.573,-15.516],[0,0],[12.995,-2.066],[0,0]],"v":[[41.831,-31.462],[43.556,5.299],[13.369,24.072],[-23.361,15.588],[-18.585,-35.795],[8.315,-47.769],[41.596,-32.101]],"c":true}]},{"t":367,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.75686275959,0.549019634724,0.474509805441,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Nail","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":89,"op":411,"st":49,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Thumb - PATH","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":159,"s":[27.7]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":195,"s":[25.7]},{"t":249,"s":[25.7]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":224,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.4,"y":0},"t":257,"s":[-18.196,2.427,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.44,"y":1},"o":{"x":0.44,"y":0},"t":272,"s":[-18.196,2.427,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":0.2},"o":{"x":0.167,"y":0.167},"t":298,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":322,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.12,"y":1},"o":{"x":0.44,"y":0},"t":355,"s":[-18.196,2.427,0],"to":[0,0,0],"ti":[0,0,0]},{"t":370,"s":[1.306,1.56,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,49,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":25,"nm":"Elevation","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[0,0,0,0.25],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":63.75,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":180,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":4,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":8,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":159,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.6,"y":0},"t":195,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.327,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.119,5.34],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.865,93.155],[167.252,186.449],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":224,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.327,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.119,5.34],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.865,93.155],[167.252,186.449],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":257,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":265,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":294,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":318,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.327,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.119,5.34],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.865,93.155],[167.252,186.449],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":322,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.327,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.119,5.34],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.865,93.155],[167.252,186.449],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":355,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"t":367,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.694117665291,0.435294121504,0.345098048449,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Thumb","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":89,"op":411,"st":49,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".onSurfaceBack","cl":"onSurfaceBack","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":173,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":185,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":197,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":217,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":239,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":257,"s":[95]},{"t":275,"s":[0],"h":1},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":315,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":337,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":355,"s":[95]},{"t":373,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":173,"s":[541.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":1},"t":197,"s":[583.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":224,"s":[583.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":257,"s":[536.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":259,"s":[536.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":277,"s":[673.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":322,"s":[583.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":355,"s":[536.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":357,"s":[536.719,562.719,0],"to":[0,0,0],"ti":[0,0,0]},{"t":375,"s":[673.719,562.719,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":224,"s":[69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":257,"s":[100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":259,"s":[100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":277,"s":[69,69,100]},{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":322,"s":[69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":355,"s":[100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":357,"s":[100,100,100]},{"t":375,"s":[69,69,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":173,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-228.768,0.408],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":197,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":224,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":257,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":259,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":265,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.77,"y":0},"t":277,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":322,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":355,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":357,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":363,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"t":375,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":1694,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":161,"op":411,"st":54,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".onSurfaceBack","cl":"onSurfaceBack","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":12,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":24,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":36,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":48,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":100,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":112,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":124,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":136,"s":[100]},{"t":148,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,446,0],"ix":2,"l":2},"a":{"a":0,"k":[206,561,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[250,892],"ix":2},"p":{"a":0,"k":[-65.5,0],"ix":3},"r":{"a":0,"k":73,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":1694,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-37.5,561],"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":"Left Zone","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[250,892],"ix":2},"p":{"a":0,"k":[-65.5,0],"ix":3},"r":{"a":0,"k":73,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":1694,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[449.5,561],"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":"Right Zone","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".surfaceBack","cl":"surfaceBack","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,446,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[412,892],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Rectangle 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.976,0.635,0.725,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.976,0.635,0.725,1],"t":1694,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":600,"st":0,"ct":1,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Part02_Charade_Back_V02","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,446,0],"ix":2,"l":2},"a":{"a":0,"k":[206,446,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":412,"h":892,"ip":820,"op":1199,"st":820,"bm":0},{"ddd":0,"ind":2,"ty":0,"nm":"Part03_Back_Demonstration_V02","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,446,0],"ix":2,"l":2},"a":{"a":0,"k":[206,446,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":412,"h":892,"ip":1199,"op":1695,"st":1199,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"Part01_ThumbDemo_Back_V02","refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,446,0],"ix":2,"l":2},"a":{"a":0,"k":[206,446,0],"ix":1,"l":2},"s":{"a":0,"k":[-100,100,100],"ix":6,"l":2}},"ao":0,"w":412,"h":892,"ip":410,"op":821,"st":410,"bm":0},{"ddd":0,"ind":4,"ty":0,"nm":"Part01_ThumbDemo_Back_V02","refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,446,0],"ix":2,"l":2},"a":{"a":0,"k":[206,446,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":412,"h":892,"ip":0,"op":411,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw/back_gesture_tutorial_open_foldable_animation.json b/quickstep/res/raw/back_gesture_tutorial_open_foldable_animation.json
new file mode 100644
index 0000000..d9bf82d
--- /dev/null
+++ b/quickstep/res/raw/back_gesture_tutorial_open_foldable_animation.json
@@ -0,0 +1 @@
+{"v":"5.10.0","fr":60,"ip":0,"op":1690,"w":841,"h":701,"nm":"SUW_FO_Back_Combined_Preview V02","ddd":0,"assets":[{"id":"comp_0","nm":"Part01_Thumb_Back_FO_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"THUMB REPO","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":818,"ix":3},"y":{"a":0,"k":608,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":89,"op":409,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"HAND NULL","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[-0.364]},"t":89,"s":[62]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":140,"s":[60]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":195,"s":[67]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":224,"s":[67]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":257,"s":[47]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":272,"s":[47]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":305,"s":[67]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":322,"s":[67]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":355,"s":[47]},{"i":{"x":[0.53],"y":[1]},"o":{"x":[0.69],"y":[0]},"t":363,"s":[47]},{"t":410,"s":[62]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":89,"s":[103.885]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":159,"s":[-0.115]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":195,"s":[18.885]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":224,"s":[18.885]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":257,"s":[-27.115]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":272,"s":[-27.115]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":305,"s":[18.885]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":322,"s":[18.885]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":355,"s":[-27.115]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":363,"s":[-27.115]},{"t":410,"s":[103.885]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.194],"y":[0]},"t":89,"s":[128.591]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":149,"s":[8.591]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":195,"s":[-5.409]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":257,"s":[-5.409]},{"i":{"x":[0.44],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":265,"s":[10.591]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":272,"s":[10.591]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":305,"s":[-5.409]},{"i":{"x":[0.55],"y":[1]},"o":{"x":[0.86],"y":[0]},"t":355,"s":[-5.409]},{"t":410,"s":[128.591]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":89,"op":409,"st":89,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"⨳ Thumb KO","parent":2,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"k":[{"s":[27.686],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.665],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.634],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.59],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.53],"t":165,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.45],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.35],"t":167,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.227],"t":168,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.086],"t":169,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.935],"t":170,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.785],"t":171,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.646],"t":172,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.519],"t":173,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.408],"t":174,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.31],"t":175,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.224],"t":176,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.149],"t":177,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.083],"t":178,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.026],"t":179,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.975],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.931],"t":181,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.892],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.858],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.829],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.803],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.781],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.762],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.747],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.723],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"p":{"k":[{"s":[0,0,0],"t":224,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.006,0.001,0],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.034,0.004,0],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.087,0.012,0],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.168,0.022,0],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.28,0.037,0],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.426,0.057,0],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.61,0.081,0],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.84,0.112,0],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.122,0.15,0],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.467,0.196,0],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.891,0.252,0],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.417,0.322,0],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.074,0.41,0],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.903,0.521,0],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.968,0.663,0],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.349,0.847,0],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.113,1.082,0],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.125,1.351,0],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.009,1.602,0],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-13.512,1.802,0],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.643,1.953,0],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.498,2.067,0],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.155,2.155,0],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.664,2.223,0],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.066,2.276,0],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.383,2.319,0],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.634,2.352,0],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.83,2.378,0],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.977,2.398,0],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.083,2.412,0],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.152,2.421,0],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.188,2.426,0],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.196,2.427,0],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.154,2.421,0],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18,2.401,0],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.724,2.364,0],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.318,2.31,0],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.773,2.237,0],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.074,2.144,0],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.203,2.028,0],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.164,1.889,0],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.963,1.729,0],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-11.64,1.553,0],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.251,1.367,0],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.853,1.181,0],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-7.497,1,0],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.225,0.83,0],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.072,0.676,0],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.05,0.54,0],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.163,0.422,0],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.409,0.321,0],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.778,0.237,0],"t":291,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.262,0.168,0],"t":292,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.847,0.113,0],"t":293,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.522,0.07,0],"t":294,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.28,0.037,0],"t":295,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.115,0.015,0],"t":296,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.024,0.003,0],"t":297,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":298,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":322,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.006,0.001,0],"t":323,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.034,0.004,0],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.087,0.012,0],"t":325,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.169,0.022,0],"t":326,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.281,0.037,0],"t":327,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.428,0.057,0],"t":328,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.613,0.082,0],"t":329,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.843,0.112,0],"t":330,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.125,0.15,0],"t":331,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.47,0.196,0],"t":332,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.893,0.252,0],"t":333,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.417,0.322,0],"t":334,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.074,0.41,0],"t":335,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.902,0.52,0],"t":336,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.972,0.663,0],"t":337,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.365,0.849,0],"t":338,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.132,1.085,0],"t":339,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.144,1.353,0],"t":340,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.023,1.604,0],"t":341,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-13.514,1.803,0],"t":342,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.643,1.953,0],"t":343,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.498,2.067,0],"t":344,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.156,2.155,0],"t":345,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.668,2.223,0],"t":346,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.069,2.277,0],"t":347,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.387,2.319,0],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.637,2.352,0],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.832,2.378,0],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.978,2.398,0],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.084,2.412,0],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.152,2.421,0],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.188,2.426,0],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.196,2.427,0],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.029,2.42,0],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.353,2.39,0],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.81,2.321,0],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.704,2.183,0],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.541,1.998,0],"t":360,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.346,1.856,0],"t":361,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.22,1.761,0],"t":362,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.76,1.696,0],"t":363,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.728,1.65,0],"t":364,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.007,1.618,0],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.535,1.594,0],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.905,1.578,0],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1.145,1.567,0],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1.273,1.561,0],"t":369,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1.306,1.56,0],"t":370,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"a":{"a":0,"k":[0,49,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":25,"nm":"Elevation","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[0,0,0,0.25],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":63.75,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":180,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":4,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":8,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.248,-2.906],[27.304,14.385],[26.089,4.059],[20.871,-4.348],[30.147,15.649],[-19.422,9.854],[-43.806,10.634],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.269,2.536],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.36],[31.034,-15.736],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.277,97.813],[174.602,194.376],[32.184,139.048],[-46.229,116.512],[-118.127,117.967],[-234.631,118.82],[-235.209,50.133],[-138.859,16.657],[-91.152,5.484],[-12.612,-36.255]],"c":true}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.254,-2.906],[27.304,14.385],[26.089,4.059],[20.871,-4.349],[30.145,15.636],[-19.423,9.849],[-43.805,10.636],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.274,2.551],[-24.064,-12.677],[-29.278,-4.639],[-20.871,4.349],[-30.145,-15.346],[31.035,-15.728],[13.48,-3.273],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.44,97.788],[174.561,194.332],[32.184,139.048],[-46.201,116.515],[-118.124,117.99],[-234.541,118.786],[-235.113,50.147],[-138.862,16.634],[-91.098,5.471],[-12.612,-36.255]],"c":true}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.265,-2.907],[27.304,14.385],[26.089,4.061],[20.871,-4.351],[30.142,15.612],[-19.424,9.84],[-43.805,10.64],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.283,2.579],[-24.064,-12.677],[-29.278,-4.641],[-20.871,4.351],[-30.142,-15.322],[31.037,-15.713],[13.479,-3.274],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.739,97.741],[174.487,194.252],[32.184,139.048],[-46.15,116.52],[-118.119,118.032],[-234.376,118.725],[-234.937,50.172],[-138.867,16.593],[-91,5.449],[-12.612,-36.255]],"c":true}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.281,-2.908],[27.304,14.385],[26.09,4.063],[20.871,-4.353],[30.137,15.574],[-19.426,9.825],[-43.804,10.646],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.296,2.623],[-24.064,-12.677],[-29.278,-4.643],[-20.871,4.353],[-30.138,-15.285],[31.04,-15.69],[13.479,-3.276],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.199,97.668],[174.373,194.129],[32.184,139.048],[-46.071,116.527],[-118.111,118.096],[-234.122,118.63],[-234.666,50.21],[-138.875,16.528],[-90.848,5.413],[-12.612,-36.255]],"c":true}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.305,-2.909],[27.304,14.385],[26.09,4.066],[20.87,-4.356],[30.131,15.521],[-19.428,9.805],[-43.803,10.656],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.315,2.685],[-24.064,-12.677],[-29.279,-4.647],[-20.87,4.356],[-30.131,-15.233],[31.044,-15.657],[13.479,-3.279],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.855,97.565],[174.21,193.953],[32.184,139.048],[-45.958,116.538],[-118.1,118.187],[-233.759,118.495],[-234.28,50.264],[-138.886,16.437],[-90.631,5.363],[-12.612,-36.255]],"c":true}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.338,-2.911],[27.304,14.385],[26.091,4.071],[20.87,-4.36],[30.122,15.448],[-19.432,9.777],[-43.801,10.668],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.34,2.77],[-24.064,-12.677],[-29.279,-4.652],[-20.87,4.36],[-30.122,-15.161],[31.049,-15.612],[13.478,-3.283],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[312.749,97.424],[173.988,193.714],[32.184,139.048],[-45.804,116.554],[-118.084,118.312],[-233.265,118.311],[-233.754,50.339],[-138.902,16.312],[-90.336,5.294],[-12.612,-36.255]],"c":true}],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.381,-2.914],[27.304,14.385],[26.091,4.076],[20.869,-4.366],[30.11,15.352],[-19.436,9.74],[-43.799,10.684],[-18.621,4.302],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.374,2.881],[-24.064,-12.677],[-29.28,-4.658],[-20.869,4.366],[-30.11,-15.067],[31.056,-15.554],[13.478,-3.288],[35.364,-7.835],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[313.924,97.239],[173.696,193.399],[32.184,139.048],[-45.602,116.573],[-118.064,118.475],[-232.616,118.069],[-233.063,50.436],[-138.922,16.148],[-89.947,5.204],[-12.612,-36.255]],"c":true}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.435,-2.918],[27.304,14.385],[26.092,4.084],[20.868,-4.373],[30.095,15.23],[-19.442,9.693],[-43.797,10.705],[-18.621,4.304],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.417,3.023],[-24.064,-12.677],[-29.281,-4.667],[-20.868,4.373],[-30.095,-14.947],[31.066,-15.479],[13.477,-3.294],[35.364,-7.839],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[315.418,97.004],[173.325,192.999],[32.184,139.048],[-45.344,116.599],[-118.038,118.683],[-231.791,117.761],[-232.184,50.561],[-138.948,15.939],[-89.453,5.089],[-12.612,-36.255]],"c":true}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.502,-2.922],[27.304,14.385],[26.093,4.093],[20.867,-4.381],[30.076,15.082],[-19.45,9.636],[-43.794,10.731],[-18.62,4.307],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.469,3.195],[-24.064,-12.677],[-29.282,-4.677],[-20.867,4.381],[-30.077,-14.8],[31.077,-15.388],[13.476,-3.302],[35.363,-7.843],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[317.239,96.717],[172.873,192.511],[32.184,139.048],[-45.031,116.63],[-118.006,118.937],[-230.785,117.386],[-231.113,50.712],[-138.98,15.685],[-88.852,4.95],[-12.612,-36.255]],"c":true}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[46.578,-2.927],[27.304,14.385],[26.095,4.103],[20.866,-4.391],[30.055,14.911],[-19.458,9.57],[-43.79,10.76],[-18.62,4.309],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.529,3.394],[-24.064,-12.677],[-29.284,-4.688],[-20.866,4.391],[-30.056,-14.632],[31.09,-15.284],[13.475,-3.311],[35.363,-7.848],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[319.33,96.388],[172.353,191.951],[32.184,139.048],[-44.671,116.665],[-117.97,119.228],[-229.63,116.956],[-229.883,50.886],[-139.016,15.393],[-88.161,4.789],[-12.612,-36.255]],"c":true}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.659,-2.932],[27.304,14.385],[26.096,4.114],[20.865,-4.402],[30.032,14.729],[-19.467,9.5],[-43.786,10.791],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.593,3.605],[-24.064,-12.677],[-29.285,-4.701],[-20.865,4.402],[-30.034,-14.453],[31.104,-15.172],[13.474,-3.32],[35.362,-7.853],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[321.563,96.037],[171.798,191.352],[32.184,139.048],[-44.287,116.703],[-117.931,119.539],[-228.396,116.496],[-228.569,51.071],[-139.055,15.081],[-87.423,4.618],[-12.612,-36.255]],"c":true}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.74,-2.937],[27.304,14.385],[26.097,4.125],[20.863,-4.412],[30.01,14.548],[-19.475,9.43],[-43.782,10.822],[-18.619,4.315],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.657,3.815],[-24.064,-12.677],[-29.287,-4.713],[-20.863,4.412],[-30.012,-14.275],[31.118,-15.062],[13.472,-3.33],[35.361,-7.858],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[323.779,95.688],[171.248,190.759],[32.184,139.048],[-43.906,116.74],[-117.893,119.847],[-227.172,116.04],[-227.265,51.256],[-139.093,14.771],[-86.691,4.447],[-12.612,-36.255]],"c":true}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.816,-2.941],[27.304,14.385],[26.099,4.135],[20.862,-4.422],[29.989,14.379],[-19.484,9.365],[-43.779,10.851],[-18.619,4.318],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.717,4.012],[-24.064,-12.677],[-29.288,-4.725],[-20.862,4.422],[-29.991,-14.109],[31.13,-14.958],[13.471,-3.339],[35.361,-7.863],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[325.853,95.361],[170.733,190.203],[32.184,139.048],[-43.549,116.775],[-117.857,120.136],[-226.026,115.613],[-226.045,51.428],[-139.129,14.481],[-86.005,4.288],[-12.612,-36.255]],"c":true}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.884,-2.946],[27.304,14.385],[26.1,4.144],[20.861,-4.431],[29.97,14.227],[-19.491,9.306],[-43.776,10.877],[-18.619,4.32],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.77,4.189],[-24.064,-12.677],[-29.29,-4.735],[-20.861,4.431],[-29.973,-13.958],[31.142,-14.865],[13.47,-3.347],[35.36,-7.867],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[327.725,95.067],[170.268,189.701],[32.184,139.048],[-43.227,116.807],[-117.825,120.397],[-224.993,115.228],[-224.944,51.584],[-139.162,14.22],[-85.387,4.145],[-12.612,-36.255]],"c":true}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[46.945,-2.95],[27.304,14.385],[26.101,4.152],[20.86,-4.438],[29.953,14.092],[-19.498,9.254],[-43.773,10.9],[-18.618,4.323],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.818,4.346],[-24.064,-12.677],[-29.291,-4.744],[-20.86,4.438],[-29.956,-13.825],[31.152,-14.782],[13.469,-3.354],[35.36,-7.871],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[329.38,94.806],[169.857,189.258],[32.184,139.048],[-42.942,116.835],[-117.796,120.628],[-224.078,114.887],[-223.97,51.721],[-139.191,13.989],[-84.84,4.017],[-12.612,-36.255]],"c":true}],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.998,-2.953],[27.304,14.385],[26.102,4.159],[20.859,-4.445],[29.938,13.973],[-19.503,9.208],[-43.77,10.92],[-18.618,4.325],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.859,4.484],[-24.064,-12.677],[-29.292,-4.752],[-20.859,4.445],[-29.942,-13.709],[31.161,-14.71],[13.469,-3.36],[35.359,-7.874],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[330.832,94.577],[169.496,188.869],[32.184,139.048],[-42.692,116.859],[-117.771,120.83],[-223.276,114.588],[-223.115,51.842],[-139.216,13.786],[-84.36,3.906],[-12.612,-36.255]],"c":true}],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.044,-2.956],[27.304,14.385],[26.102,4.165],[20.858,-4.451],[29.926,13.87],[-19.508,9.169],[-43.768,10.938],[-18.618,4.326],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.896,4.604],[-24.064,-12.677],[-29.293,-4.759],[-20.858,4.451],[-29.929,-13.607],[31.169,-14.646],[13.468,-3.366],[35.359,-7.877],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[332.102,94.377],[169.18,188.529],[32.184,139.048],[-42.473,116.881],[-117.749,121.007],[-222.574,114.326],[-222.368,51.948],[-139.238,13.609],[-83.94,3.809],[-12.612,-36.255]],"c":true}],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.084,-2.958],[27.304,14.385],[26.103,4.171],[20.858,-4.456],[29.914,13.779],[-19.513,9.134],[-43.766,10.953],[-18.618,4.328],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.928,4.71],[-24.064,-12.677],[-29.293,-4.765],[-20.858,4.456],[-29.918,-13.517],[31.176,-14.591],[13.467,-3.37],[35.359,-7.879],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[333.213,94.203],[168.905,188.231],[32.184,139.048],[-42.282,116.9],[-117.73,121.161],[-221.961,114.098],[-221.715,52.04],[-139.257,13.453],[-83.573,3.723],[-12.612,-36.255]],"c":true}],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.12,-2.961],[27.304,14.385],[26.104,4.175],[20.857,-4.461],[29.904,13.7],[-19.517,9.103],[-43.764,10.967],[-18.617,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.956,4.802],[-24.064,-12.677],[-29.294,-4.771],[-20.857,4.461],[-29.908,-13.439],[31.182,-14.542],[13.467,-3.375],[35.358,-7.882],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[334.185,94.049],[168.663,187.971],[32.184,139.048],[-42.115,116.916],[-117.713,121.297],[-221.424,113.897],[-221.143,52.121],[-139.274,13.318],[-83.252,3.649],[-12.612,-36.255]],"c":true}],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.151,-2.962],[27.304,14.385],[26.104,4.18],[20.857,-4.465],[29.896,13.63],[-19.52,9.076],[-43.763,10.979],[-18.617,4.33],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.98,4.883],[-24.064,-12.677],[-29.295,-4.776],[-20.857,4.465],[-29.9,-13.371],[31.187,-14.5],[13.466,-3.378],[35.358,-7.884],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[335.037,93.915],[168.451,187.742],[32.184,139.048],[-41.968,116.931],[-117.698,121.415],[-220.953,113.722],[-220.641,52.192],[-139.289,13.199],[-82.97,3.583],[-12.612,-36.255]],"c":true}],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.178,-2.964],[27.304,14.385],[26.105,4.183],[20.856,-4.468],[29.888,13.569],[-19.523,9.053],[-43.762,10.989],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.002,4.953],[-24.064,-12.677],[-29.295,-4.78],[-20.856,4.469],[-29.892,-13.311],[31.192,-14.462],[13.466,-3.382],[35.358,-7.885],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[335.785,93.798],[168.266,187.542],[32.184,139.048],[-41.839,116.943],[-117.685,121.519],[-220.54,113.568],[-220.201,52.254],[-139.302,13.094],[-82.723,3.526],[-12.612,-36.255]],"c":true}],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.202,-2.966],[27.304,14.385],[26.105,4.186],[20.856,-4.471],[29.882,13.516],[-19.526,9.032],[-43.76,10.999],[-18.617,4.332],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.02,5.016],[-24.064,-12.677],[-29.296,-4.783],[-20.856,4.472],[-29.886,-13.258],[31.196,-14.43],[13.466,-3.384],[35.358,-7.887],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[336.44,93.694],[168.103,187.366],[32.184,139.048],[-41.727,116.954],[-117.674,121.611],[-220.178,113.433],[-219.816,52.308],[-139.313,13.003],[-82.506,3.475],[-12.612,-36.255]],"c":true}],"t":181,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.223,-2.967],[27.304,14.385],[26.105,4.189],[20.855,-4.474],[29.876,13.469],[-19.528,9.014],[-43.759,11.007],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.037,5.07],[-24.064,-12.677],[-29.296,-4.787],[-20.855,4.474],[-29.88,-13.212],[31.2,-14.401],[13.465,-3.387],[35.357,-7.888],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[337.014,93.604],[167.96,187.212],[32.184,139.048],[-41.628,116.964],[-117.664,121.691],[-219.861,113.315],[-219.478,52.356],[-139.323,12.922],[-82.317,3.431],[-12.612,-36.255]],"c":true}],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.241,-2.968],[27.304,14.385],[26.106,4.192],[20.855,-4.477],[29.871,13.428],[-19.53,8.998],[-43.759,11.014],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.051,5.117],[-24.064,-12.677],[-29.296,-4.789],[-20.855,4.477],[-29.875,-13.172],[31.203,-14.376],[13.465,-3.389],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[337.517,93.525],[167.835,187.078],[32.184,139.048],[-41.541,116.973],[-117.655,121.761],[-219.583,113.212],[-219.183,52.398],[-139.332,12.852],[-82.151,3.393],[-12.612,-36.255]],"c":true}],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.257,-2.969],[27.304,14.385],[26.106,4.194],[20.855,-4.479],[29.866,13.393],[-19.532,8.985],[-43.758,11.02],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.064,5.159],[-24.064,-12.677],[-29.297,-4.792],[-20.855,4.479],[-29.87,-13.137],[31.206,-14.354],[13.465,-3.391],[35.357,-7.89],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[337.954,93.456],[167.727,186.961],[32.184,139.048],[-41.466,116.98],[-117.648,121.821],[-219.342,113.121],[-218.925,52.434],[-139.339,12.791],[-82.006,3.359],[-12.612,-36.255]],"c":true}],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.271,-2.97],[27.304,14.385],[26.106,4.196],[20.855,-4.48],[29.862,13.362],[-19.533,8.973],[-43.757,11.025],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.075,5.195],[-24.064,-12.677],[-29.297,-4.794],[-20.855,4.48],[-29.867,-13.106],[31.208,-14.335],[13.465,-3.392],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.333,93.396],[167.633,186.859],[32.184,139.048],[-41.401,116.986],[-117.641,121.874],[-219.132,113.043],[-218.702,52.466],[-139.346,12.738],[-81.881,3.33],[-12.612,-36.255]],"c":true}],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.283,-2.971],[27.304,14.385],[26.106,4.197],[20.854,-4.482],[29.859,13.335],[-19.534,8.962],[-43.757,11.029],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.084,5.226],[-24.064,-12.677],[-29.297,-4.796],[-20.855,4.482],[-29.863,-13.08],[31.21,-14.319],[13.465,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.66,93.345],[167.551,186.772],[32.184,139.048],[-41.344,116.992],[-117.635,121.92],[-218.951,112.976],[-218.51,52.493],[-139.352,12.693],[-81.773,3.305],[-12.612,-36.255]],"c":true}],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.293,-2.971],[27.304,14.385],[26.107,4.199],[20.854,-4.483],[29.856,13.312],[-19.535,8.954],[-43.756,11.033],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.092,5.252],[-24.064,-12.677],[-29.297,-4.797],[-20.854,4.483],[-29.861,-13.057],[31.212,-14.305],[13.464,-3.395],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.94,93.301],[167.482,186.697],[32.184,139.048],[-41.296,116.997],[-117.631,121.959],[-218.797,112.919],[-218.345,52.516],[-139.357,12.654],[-81.681,3.284],[-12.612,-36.255]],"c":true}],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.302,-2.972],[27.304,14.385],[26.107,4.2],[20.854,-4.484],[29.854,13.293],[-19.536,8.946],[-43.756,11.037],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.099,5.275],[-24.064,-12.677],[-29.298,-4.799],[-20.854,4.484],[-29.858,-13.039],[31.213,-14.293],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.175,93.264],[167.423,186.634],[32.184,139.048],[-41.256,117.001],[-117.626,121.992],[-218.667,112.87],[-218.207,52.536],[-139.361,12.621],[-81.603,3.266],[-12.612,-36.255]],"c":true}],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.309,-2.972],[27.304,14.385],[26.107,4.201],[20.854,-4.485],[29.852,13.277],[-19.537,8.94],[-43.755,11.039],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.105,5.293],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.485],[-29.856,-13.023],[31.214,-14.283],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.371,93.233],[167.375,186.581],[32.184,139.048],[-41.222,117.004],[-117.623,122.019],[-218.559,112.83],[-218.091,52.552],[-139.364,12.593],[-81.538,3.25],[-12.612,-36.255]],"c":true}],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.315,-2.973],[27.304,14.385],[26.107,4.202],[20.854,-4.486],[29.85,13.264],[-19.538,8.935],[-43.755,11.042],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.109,5.308],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.855,-13.01],[31.215,-14.275],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.531,93.208],[167.335,186.538],[32.184,139.048],[-41.195,117.007],[-117.62,122.041],[-218.471,112.797],[-217.998,52.565],[-139.367,12.571],[-81.485,3.238],[-12.612,-36.255]],"c":true}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.319,-2.973],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.254],[-19.538,8.931],[-43.755,11.043],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.113,5.32],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-13],[31.216,-14.269],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.656,93.188],[167.304,186.505],[32.184,139.048],[-41.173,117.009],[-117.618,122.058],[-218.401,112.771],[-217.924,52.576],[-139.369,12.553],[-81.444,3.229],[-12.612,-36.255]],"c":true}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.323,-2.973],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.246],[-19.539,8.928],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.115,5.329],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.992],[31.217,-14.264],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.75,93.173],[167.281,186.48],[32.184,139.048],[-41.157,117.01],[-117.617,122.072],[-218.35,112.752],[-217.868,52.583],[-139.371,12.54],[-81.413,3.221],[-12.612,-36.255]],"c":true}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.325,-2.973],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.847,13.241],[-19.539,8.926],[-43.755,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.117,5.335],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.987],[31.217,-14.261],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.815,93.163],[167.265,186.462],[32.184,139.048],[-41.146,117.011],[-117.615,122.081],[-218.314,112.738],[-217.83,52.589],[-139.372,12.531],[-81.391,3.216],[-12.612,-36.255]],"c":true}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.331,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.486],[29.846,13.239],[-19.54,8.923],[-43.755,11.044],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.099,5.338],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.486],[-29.85,-12.985],[31.218,-14.257],[13.464,-3.398],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.849,93.158],[167.225,186.454],[32.184,139.048],[-41.137,117.012],[-117.618,122.088],[-218.289,112.723],[-217.8,52.588],[-139.369,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.345,-2.975],[27.304,14.385],[26.107,4.203],[20.855,-4.482],[29.843,13.244],[-19.541,8.919],[-43.757,11.035],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.037,5.33],[-24.064,-12.677],[-29.298,-4.802],[-20.855,4.482],[-29.848,-12.991],[31.221,-14.251],[13.465,-3.396],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.799,93.166],[167.137,186.468],[32.184,139.048],[-41.137,117.012],[-117.629,122.091],[-218.297,112.706],[-217.797,52.572],[-139.359,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.369,-2.976],[27.304,14.385],[26.107,4.203],[20.856,-4.475],[29.838,13.254],[-19.544,8.913],[-43.76,11.02],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.928,5.315],[-24.064,-12.677],[-29.298,-4.802],[-20.856,4.475],[-29.843,-13.001],[31.225,-14.24],[13.465,-3.391],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.711,93.179],[166.984,186.494],[32.184,139.048],[-41.137,117.012],[-117.649,122.096],[-218.311,112.676],[-217.79,52.544],[-139.341,12.523],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.404,-2.978],[27.304,14.385],[26.107,4.203],[20.857,-4.464],[29.83,13.269],[-19.548,8.902],[-43.764,10.997],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.765,5.295],[-24.064,-12.677],[-29.298,-4.802],[-20.857,4.464],[-29.835,-13.015],[31.231,-14.223],[13.467,-3.384],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.581,93.2],[166.757,186.531],[32.184,139.048],[-41.137,117.012],[-117.678,122.102],[-218.333,112.632],[-217.781,52.502],[-139.314,12.522],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.452,-2.981],[27.304,14.385],[26.107,4.203],[20.86,-4.45],[29.82,13.289],[-19.553,8.889],[-43.77,10.966],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.543,5.266],[-24.064,-12.677],[-29.298,-4.802],[-20.86,4.45],[-29.825,-13.036],[31.24,-14.201],[13.469,-3.374],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.403,93.228],[166.446,186.583],[32.184,139.048],[-41.137,117.012],[-117.718,122.112],[-218.362,112.572],[-217.769,52.444],[-139.277,12.521],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.516,-2.985],[27.304,14.385],[26.107,4.203],[20.863,-4.43],[29.806,13.316],[-19.56,8.87],[-43.777,10.926],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.252,5.228],[-24.064,-12.677],[-29.298,-4.802],[-20.863,4.431],[-29.811,-13.062],[31.251,-14.172],[13.471,-3.362],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.17,93.265],[166.038,186.651],[32.184,139.048],[-41.137,117.012],[-117.77,122.124],[-218.401,112.493],[-217.753,52.369],[-139.228,12.519],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.596,-2.99],[27.304,14.385],[26.107,4.203],[20.866,-4.406],[29.789,13.349],[-19.569,8.847],[-43.787,10.875],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-45.882,5.181],[-24.064,-12.677],[-29.298,-4.802],[-20.867,4.406],[-29.794,-13.096],[31.266,-14.135],[13.474,-3.346],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.873,93.311],[165.52,186.738],[32.184,139.048],[-41.137,117.012],[-117.836,122.139],[-218.449,112.393],[-217.732,52.273],[-139.167,12.517],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.697,-2.997],[27.304,14.385],[26.107,4.203],[20.871,-4.376],[29.767,13.391],[-19.58,8.818],[-43.8,10.811],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-45.419,5.121],[-24.064,-12.677],[-29.298,-4.802],[-20.871,4.376],[-29.773,-13.138],[31.284,-14.089],[13.478,-3.327],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.502,93.37],[164.872,186.846],[32.184,139.048],[-41.137,117.012],[-117.919,122.159],[-218.511,112.268],[-217.706,52.154],[-139.089,12.514],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.821,-3.005],[27.304,14.385],[26.107,4.203],[20.877,-4.338],[29.741,13.443],[-19.594,8.782],[-43.815,10.731],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-44.847,5.048],[-24.064,-12.677],[-29.298,-4.802],[-20.877,4.338],[-29.747,-13.19],[31.306,-14.031],[13.482,-3.302],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.044,93.442],[164.071,186.979],[32.184,139.048],[-41.137,117.012],[-118.022,122.183],[-218.586,112.113],[-217.675,52.006],[-138.994,12.51],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.974,-3.014],[27.304,14.385],[26.107,4.203],[20.884,-4.291],[29.708,13.507],[-19.612,8.738],[-43.834,10.634],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-44.143,4.957],[-24.064,-12.677],[-29.298,-4.802],[-20.884,4.292],[-29.715,-13.254],[31.333,-13.961],[13.488,-3.272],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[337.479,93.531],[163.084,187.144],[32.184,139.048],[-41.137,117.012],[-118.148,122.212],[-218.679,111.922],[-217.635,51.824],[-138.877,12.506],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[48.162,-3.026],[27.304,14.385],[26.107,4.203],[20.893,-4.234],[29.667,13.586],[-19.633,8.684],[-43.857,10.514],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-43.277,4.845],[-24.064,-12.677],[-29.298,-4.802],[-20.893,4.234],[-29.675,-13.332],[31.367,-13.874],[13.495,-3.235],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[336.785,93.64],[161.871,187.346],[32.184,139.048],[-41.137,117.012],[-118.304,122.249],[-218.793,111.688],[-217.587,51.6],[-138.732,12.5],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[48.395,-3.041],[27.304,14.385],[26.107,4.203],[20.904,-4.164],[29.617,13.683],[-19.659,8.617],[-43.885,10.365],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-42.207,4.708],[-24.064,-12.677],[-29.298,-4.802],[-20.904,4.164],[-29.626,-13.43],[31.408,-13.767],[13.504,-3.19],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[335.927,93.775],[160.372,187.596],[32.184,139.048],[-41.137,117.012],[-118.496,122.293],[-218.935,111.398],[-217.528,51.324],[-138.554,12.494],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[48.685,-3.059],[27.304,14.385],[26.107,4.203],[20.918,-4.076],[29.555,13.804],[-19.691,8.534],[-43.92,10.181],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-40.874,4.536],[-24.064,-12.677],[-29.298,-4.802],[-20.918,4.076],[-29.564,-13.551],[31.46,-13.634],[13.515,-3.133],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[334.858,93.943],[158.505,187.907],[32.184,139.048],[-41.137,117.012],[-118.735,122.349],[-219.111,111.037],[-217.453,50.98],[-138.332,12.485],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[49.051,-3.082],[27.304,14.385],[26.107,4.203],[20.935,-3.965],[29.476,13.957],[-19.732,8.428],[-43.965,9.947],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-39.19,4.319],[-24.064,-12.677],[-29.298,-4.802],[-20.935,3.965],[-29.487,-13.704],[31.526,-13.465],[13.529,-3.061],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[333.509,94.156],[156.147,188.3],[32.184,139.048],[-41.137,117.012],[-119.037,122.42],[-219.333,110.581],[-217.359,50.545],[-138.052,12.475],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[49.521,-3.111],[27.304,14.385],[26.107,4.203],[20.957,-3.822],[29.375,14.153],[-19.785,8.293],[-44.023,9.648],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-37.029,4.041],[-24.064,-12.677],[-29.298,-4.802],[-20.957,3.823],[-29.388,-13.9],[31.61,-13.249],[13.546,-2.969],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[331.776,94.429],[153.12,188.804],[32.184,139.048],[-41.137,117.012],[-119.425,122.51],[-219.618,109.996],[-217.239,49.986],[-137.691,12.462],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[50.132,-3.15],[27.304,14.385],[26.107,4.203],[20.986,-3.637],[29.244,14.408],[-19.853,8.117],[-44.097,9.258],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-34.218,3.679],[-24.064,-12.677],[-29.298,-4.802],[-20.986,3.637],[-29.259,-14.155],[31.719,-12.968],[13.569,-2.849],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[329.523,94.783],[149.182,189.461],[32.184,139.048],[-41.137,117.012],[-119.929,122.628],[-219.989,109.235],[-217.083,49.26],[-137.223,12.444],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[50.913,-3.199],[27.304,14.385],[26.107,4.203],[21.023,-3.4],[29.076,14.734],[-19.94,7.892],[-44.193,8.76],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-30.626,3.216],[-24.064,-12.677],[-29.298,-4.802],[-21.023,3.4],[-29.094,-14.482],[31.859,-12.609],[13.599,-2.696],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[326.643,95.237],[144.151,190.299],[32.184,139.048],[-41.137,117.012],[-120.574,122.779],[-220.463,108.263],[-216.882,48.332],[-136.624,12.422],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[51.807,-3.255],[27.304,14.385],[26.107,4.203],[21.065,-3.129],[28.884,15.108],[-20.04,7.634],[-44.302,8.19],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-26.514,2.687],[-24.064,-12.677],[-29.298,-4.802],[-21.065,3.129],[-28.905,-14.855],[32.018,-12.197],[13.632,-2.52],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[323.348,95.756],[138.392,191.259],[32.184,139.048],[-41.137,117.012],[-121.311,122.951],[-221.006,107.15],[-216.654,47.27],[-135.939,12.396],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[52.639,-3.307],[27.304,14.384],[26.107,4.203],[21.104,-2.877],[28.705,15.455],[-20.134,7.395],[-44.404,7.66],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-22.688,2.195],[-24.064,-12.677],[-29.298,-4.802],[-21.104,2.877],[-28.729,-15.203],[32.167,-11.814],[13.664,-2.357],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[320.28,96.239],[133.033,192.152],[32.184,139.048],[-41.137,117.012],[-121.998,123.111],[-221.511,106.114],[-216.44,46.281],[-135.302,12.372],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[53.299,-3.349],[27.304,14.385],[26.107,4.203],[21.135,-2.677],[28.564,15.731],[-20.207,7.205],[-44.484,7.239],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-19.655,1.804],[-24.064,-12.677],[-29.298,-4.802],[-21.135,2.677],[-28.59,-15.479],[32.285,-11.511],[13.689,-2.228],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[317.849,96.621],[128.785,192.86],[32.184,139.048],[-41.137,117.012],[-122.542,123.238],[-221.911,105.292],[-216.271,45.498],[-134.796,12.354],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[53.797,-3.38],[27.304,14.385],[26.107,4.203],[21.159,-2.526],[28.457,15.938],[-20.263,7.061],[-44.545,6.922],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-17.366,1.509],[-24.064,-12.677],[-29.298,-4.802],[-21.159,2.526],[-28.485,-15.687],[32.374,-11.282],[13.707,-2.13],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[316.014,96.91],[125.578,193.395],[32.184,139.048],[-41.137,117.012],[-122.953,123.334],[-222.213,104.673],[-216.144,44.906],[-134.415,12.339],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.174,-3.404],[27.304,14.385],[26.107,4.203],[21.176,-2.412],[28.375,16.096],[-20.305,6.953],[-44.591,6.681],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-15.629,1.286],[-24.064,-12.677],[-29.298,-4.802],[-21.176,2.412],[-28.405,-15.844],[32.442,-11.108],[13.721,-2.056],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[314.622,97.129],[123.146,193.8],[32.184,139.048],[-41.137,117.012],[-123.264,123.407],[-222.442,104.202],[-216.047,44.458],[-134.126,12.328],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.465,-3.422],[27.304,14.385],[26.107,4.203],[21.19,-2.324],[28.313,16.218],[-20.338,6.869],[-44.627,6.496],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-14.291,1.113],[-24.064,-12.677],[-29.298,-4.802],[-21.19,2.323],[-28.343,-15.966],[32.494,-10.974],[13.732,-1.999],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[313.55,97.298],[121.272,194.113],[32.184,139.048],[-41.137,117.012],[-123.504,123.463],[-222.619,103.84],[-215.973,44.112],[-133.903,12.32],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.692,-3.436],[27.304,14.385],[26.107,4.203],[21.201,-2.255],[28.264,16.312],[-20.363,6.803],[-44.655,6.351],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-13.248,0.979],[-24.064,-12.677],[-29.298,-4.802],[-21.201,2.255],[-28.295,-16.061],[32.534,-10.87],[13.741,-1.954],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[312.713,97.43],[119.811,194.356],[32.184,139.048],[-41.137,117.012],[-123.692,123.507],[-222.757,103.558],[-215.915,43.842],[-133.729,12.314],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.87,-3.447],[27.304,14.385],[26.107,4.203],[21.209,-2.201],[28.226,16.387],[-20.383,6.752],[-44.676,6.237],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-12.428,0.874],[-24.064,-12.677],[-29.298,-4.802],[-21.209,2.201],[-28.258,-16.135],[32.566,-10.788],[13.748,-1.919],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.166,-149.936],[312.056,97.533],[118.662,194.548],[32.184,139.048],[-41.137,117.012],[-123.839,123.541],[-222.865,103.336],[-215.869,43.63],[-133.592,12.309],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.01,-3.456],[27.304,14.385],[26.107,4.203],[21.216,-2.158],[28.196,16.445],[-20.399,6.712],[-44.694,6.148],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.783,0.791],[-24.064,-12.677],[-29.298,-4.802],[-21.216,2.158],[-28.228,-16.194],[32.591,-10.723],[13.753,-1.892],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.539,97.615],[117.759,194.698],[32.184,139.048],[-41.137,117.012],[-123.954,123.568],[-222.95,103.161],[-215.833,43.464],[-133.485,12.305],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.12,-3.463],[27.304,14.385],[26.107,4.203],[21.221,-2.125],[28.172,16.491],[-20.411,6.68],[-44.707,6.078],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.279,0.726],[-24.064,-12.677],[-29.298,-4.802],[-21.221,2.125],[-28.205,-16.24],[32.611,-10.673],[13.757,-1.87],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.135,97.678],[117.054,194.816],[32.184,139.048],[-41.137,117.012],[-124.045,123.589],[-223.017,103.025],[-215.805,43.334],[-133.401,12.301],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.205,-3.468],[27.304,14.385],[26.107,4.203],[21.225,-2.099],[28.154,16.526],[-20.421,6.656],[-44.717,6.024],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.891,0.676],[-24.064,-12.677],[-29.298,-4.802],[-21.225,2.099],[-28.187,-16.275],[32.626,-10.634],[13.76,-1.854],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.824,97.727],[116.509,194.906],[32.184,139.048],[-41.137,117.012],[-124.114,123.606],[-223.068,102.92],[-215.783,43.233],[-133.336,12.299],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.268,-3.472],[27.304,14.385],[26.107,4.203],[21.228,-2.08],[28.14,16.553],[-20.428,6.638],[-44.725,5.984],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.599,0.638],[-24.064,-12.677],[-29.298,-4.802],[-21.228,2.08],[-28.174,-16.301],[32.637,-10.605],[13.763,-1.841],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.59,97.764],[116.1,194.975],[32.184,139.048],[-41.137,117.012],[-124.167,123.618],[-223.106,102.841],[-215.767,43.158],[-133.288,12.297],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.314,-3.475],[27.304,14.385],[26.107,4.203],[21.23,-2.066],[28.131,16.572],[-20.433,6.624],[-44.731,5.955],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.389,0.611],[-24.064,-12.677],[-29.298,-4.802],[-21.23,2.066],[-28.164,-16.32],[32.645,-10.584],[13.764,-1.832],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.421,97.791],[115.806,195.024],[32.184,139.048],[-41.137,117.012],[-124.204,123.627],[-223.134,102.784],[-215.755,43.104],[-133.252,12.296],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.344,-3.477],[27.304,14.385],[26.107,4.203],[21.231,-2.057],[28.124,16.585],[-20.436,6.616],[-44.734,5.935],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.249,0.593],[-24.064,-12.677],[-29.298,-4.802],[-21.231,2.057],[-28.158,-16.333],[32.651,-10.57],[13.765,-1.826],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.166,-149.936],[310.309,97.808],[115.61,195.056],[32.184,139.048],[-41.137,117.012],[-124.23,123.633],[-223.152,102.746],[-215.748,43.068],[-133.229,12.295],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.361,-3.478],[27.304,14.385],[26.107,4.203],[21.232,-2.052],[28.12,16.592],[-20.438,6.611],[-44.736,5.924],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.171,0.583],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.052],[-28.154,-16.34],[32.654,-10.562],[13.766,-1.823],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.246,97.818],[115.5,195.075],[32.184,139.048],[-41.137,117.012],[-124.244,123.636],[-223.163,102.725],[-215.743,43.047],[-133.216,12.295],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.975,-3.454],[27.304,14.385],[26.106,4.197],[21.217,-2.149],[28.206,16.554],[-20.395,6.749],[-44.697,6.123],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.698,0.664],[-24.064,-12.677],[-29.297,-4.795],[-21.217,2.149],[-28.239,-16.3],[32.585,-10.782],[13.754,-1.884],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[118.007,195.051],[32.184,139.048],[-41.356,116.991],[-123.985,123.393],[-223.66,103.41],[-216.58,43.345],[-133.455,12.482],[-81.796,3.31],[-12.612,-36.255]],"c":true}],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[53.209,-3.343],[27.304,14.385],[26.103,4.169],[21.147,-2.594],[28.599,16.371],[-20.198,7.377],[-44.517,7.036],[-18.618,4.327],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-18.692,1.041],[-24.064,-12.677],[-29.293,-4.763],[-21.147,2.594],[-28.625,-16.111],[32.271,-11.785],[13.698,-2.165],[35.359,-7.879],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[129.46,194.917],[32.184,139.048],[-42.344,116.894],[-122.8,122.294],[-225.885,106.53],[-220.354,44.718],[-134.548,13.328],[-83.692,3.751],[-12.612,-36.255]],"c":true}],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[50.262,-3.158],[27.304,14.384],[26.097,4.122],[21.03,-3.336],[29.254,16.068],[-19.87,8.427],[-44.216,8.558],[-18.619,4.315],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-30.364,1.672],[-24.064,-12.677],[-29.287,-4.71],[-21.03,3.336],[-29.269,-15.795],[31.747,-13.458],[13.606,-2.634],[35.361,-7.857],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[148.573,194.694],[32.184,139.048],[-43.992,116.732],[-120.822,120.46],[-229.599,111.736],[-226.655,47.008],[-136.372,14.74],[-86.857,4.486],[-12.612,-36.255]],"c":true}],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[48.293,-3.034],[27.304,14.385],[26.093,4.091],[20.952,-3.832],[29.692,15.864],[-19.65,9.127],[-44.015,9.575],[-18.62,4.306],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-38.161,2.093],[-24.064,-12.677],[-29.282,-4.675],[-20.952,3.832],[-29.7,-15.583],[31.397,-14.576],[13.544,-2.946],[35.363,-7.842],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[161.339,194.545],[32.184,139.048],[-45.093,116.623],[-119.501,119.234],[-232.079,115.214],[-230.863,48.538],[-137.591,15.683],[-88.971,4.977],[-12.612,-36.255]],"c":true}],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.208,-2.966],[27.304,14.385],[26.091,4.074],[20.909,-4.106],[29.933,15.753],[-19.529,9.513],[-43.904,10.136],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-42.456,2.325],[-24.064,-12.677],[-29.28,-4.655],[-20.909,4.106],[-29.937,-15.467],[31.205,-15.192],[13.51,-3.119],[35.364,-7.834],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[168.373,194.462],[32.184,139.048],[-45.7,116.564],[-118.774,118.559],[-233.446,117.13],[-233.181,49.381],[-138.262,16.203],[-90.136,5.248],[-12.612,-36.255]],"c":true}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.617,-2.929],[27.304,14.385],[26.09,4.064],[20.886,-4.255],[30.065,15.692],[-19.463,9.724],[-43.844,10.441],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-44.8,2.451],[-24.064,-12.677],[-29.279,-4.645],[-20.886,4.255],[-30.066,-15.403],[31.099,-15.528],[13.491,-3.213],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[172.211,194.418],[32.184,139.048],[-46.031,116.531],[-118.376,118.191],[-234.192,118.175],[-234.446,49.841],[-138.629,16.487],[-90.771,5.395],[-12.612,-36.255]],"c":true}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.328,-2.911],[27.304,14.385],[26.089,4.06],[20.874,-4.327],[30.129,15.662],[-19.431,9.827],[-43.814,10.59],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-45.942,2.513],[-24.064,-12.677],[-29.278,-4.639],[-20.874,4.327],[-30.129,-15.372],[31.048,-15.692],[13.482,-3.259],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.081,194.396],[32.184,139.048],[-46.192,116.515],[-118.183,118.011],[-234.555,118.685],[-235.063,50.065],[-138.807,16.625],[-91.081,5.467],[-12.612,-36.255]],"c":true}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":294,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.25,-2.906],[27.304,14.385],[26.089,4.059],[20.871,-4.349],[30.146,15.644],[-19.422,9.852],[-43.806,10.634],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.271,2.542],[-24.064,-12.677],[-29.278,-4.639],[-20.871,4.349],[-30.146,-15.354],[31.034,-15.733],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.343,97.803],[174.585,194.358],[32.184,139.048],[-46.218,116.513],[-118.126,117.977],[-234.594,118.806],[-235.17,50.139],[-138.86,16.648],[-91.13,5.479],[-12.612,-36.255]],"c":true}],"t":295,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.265,-2.907],[27.304,14.385],[26.089,4.061],[20.871,-4.351],[30.142,15.612],[-19.424,9.84],[-43.805,10.64],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.283,2.579],[-24.064,-12.677],[-29.278,-4.641],[-20.871,4.351],[-30.142,-15.322],[31.037,-15.713],[13.479,-3.274],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.739,97.741],[174.487,194.252],[32.184,139.048],[-46.15,116.52],[-118.119,118.032],[-234.376,118.725],[-234.937,50.172],[-138.867,16.593],[-91,5.449],[-12.612,-36.255]],"c":true}],"t":296,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.292,-2.909],[27.304,14.385],[26.09,4.065],[20.87,-4.354],[30.134,15.549],[-19.427,9.816],[-43.804,10.651],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.305,2.651],[-24.064,-12.677],[-29.279,-4.645],[-20.87,4.354],[-30.135,-15.261],[31.041,-15.675],[13.479,-3.277],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.5,97.621],[174.298,194.048],[32.184,139.048],[-46.019,116.532],[-118.106,118.138],[-233.955,118.568],[-234.489,50.235],[-138.88,16.486],[-90.748,5.39],[-12.612,-36.255]],"c":true}],"t":297,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.338,-2.911],[27.304,14.385],[26.091,4.071],[20.87,-4.36],[30.122,15.448],[-19.432,9.777],[-43.801,10.668],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.34,2.77],[-24.064,-12.677],[-29.279,-4.652],[-20.87,4.36],[-30.122,-15.161],[31.049,-15.612],[13.478,-3.283],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[312.749,97.424],[173.988,193.714],[32.184,139.048],[-45.804,116.554],[-118.084,118.312],[-233.265,118.311],[-233.754,50.339],[-138.902,16.312],[-90.336,5.294],[-12.612,-36.255]],"c":true}],"t":298,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.407,-2.916],[27.304,14.385],[26.092,4.08],[20.869,-4.369],[30.103,15.294],[-19.439,9.718],[-43.798,10.694],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.394,2.948],[-24.064,-12.677],[-29.281,-4.662],[-20.869,4.369],[-30.103,-15.01],[31.061,-15.519],[13.477,-3.291],[35.364,-7.837],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[314.63,97.128],[173.521,193.21],[32.184,139.048],[-45.48,116.585],[-118.051,118.573],[-232.226,117.924],[-232.648,50.495],[-138.934,16.049],[-89.714,5.15],[-12.612,-36.255]],"c":true}],"t":299,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.502,-2.922],[27.304,14.385],[26.093,4.093],[20.867,-4.381],[30.076,15.082],[-19.45,9.636],[-43.794,10.731],[-18.62,4.307],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.469,3.195],[-24.064,-12.677],[-29.282,-4.677],[-20.867,4.381],[-30.077,-14.8],[31.077,-15.388],[13.476,-3.302],[35.363,-7.843],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[317.239,96.717],[172.873,192.511],[32.184,139.048],[-45.031,116.63],[-118.006,118.937],[-230.785,117.386],[-231.113,50.712],[-138.98,15.685],[-88.852,4.95],[-12.612,-36.255]],"c":true}],"t":300,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.619,-2.929],[27.304,14.385],[26.095,4.108],[20.865,-4.396],[30.044,14.821],[-19.462,9.535],[-43.788,10.775],[-18.62,4.311],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.561,3.499],[-24.064,-12.677],[-29.285,-4.695],[-20.865,4.396],[-30.045,-14.543],[31.097,-15.229],[13.474,-3.316],[35.362,-7.85],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[320.439,96.214],[172.078,191.654],[32.184,139.048],[-44.48,116.684],[-117.951,119.382],[-229.017,116.728],[-229.23,50.978],[-139.035,15.238],[-87.794,4.704],[-12.612,-36.255]],"c":true}],"t":301,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.74,-2.937],[27.304,14.385],[26.097,4.125],[20.863,-4.412],[30.01,14.548],[-19.475,9.43],[-43.782,10.822],[-18.619,4.315],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.657,3.815],[-24.064,-12.677],[-29.287,-4.713],[-20.863,4.412],[-30.012,-14.275],[31.118,-15.062],[13.472,-3.33],[35.361,-7.858],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[323.779,95.688],[171.248,190.759],[32.184,139.048],[-43.906,116.74],[-117.893,119.847],[-227.172,116.04],[-227.265,51.256],[-139.093,14.771],[-86.691,4.447],[-12.612,-36.255]],"c":true}],"t":302,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.851,-2.944],[27.304,14.385],[26.099,4.139],[20.861,-4.426],[29.979,14.301],[-19.487,9.335],[-43.777,10.864],[-18.619,4.319],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.744,4.103],[-24.064,-12.677],[-29.289,-4.73],[-20.861,4.426],[-29.982,-14.031],[31.136,-14.91],[13.471,-3.343],[35.36,-7.865],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[326.816,95.21],[170.494,189.945],[32.184,139.048],[-43.383,116.792],[-117.84,120.27],[-225.494,115.415],[-225.478,51.508],[-139.146,14.347],[-85.687,4.214],[-12.612,-36.255]],"c":true}],"t":303,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[46.945,-2.95],[27.304,14.385],[26.101,4.152],[20.86,-4.438],[29.953,14.092],[-19.498,9.254],[-43.773,10.9],[-18.618,4.323],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.818,4.346],[-24.064,-12.677],[-29.291,-4.744],[-20.86,4.438],[-29.956,-13.825],[31.152,-14.782],[13.469,-3.354],[35.36,-7.871],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[329.38,94.806],[169.857,189.258],[32.184,139.048],[-42.942,116.835],[-117.796,120.628],[-224.078,114.887],[-223.97,51.721],[-139.191,13.989],[-84.84,4.017],[-12.612,-36.255]],"c":true}],"t":304,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.021,-2.954],[27.304,14.385],[26.102,4.162],[20.859,-4.448],[29.932,13.92],[-19.506,9.188],[-43.769,10.929],[-18.618,4.325],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.878,4.546],[-24.064,-12.677],[-29.292,-4.756],[-20.859,4.448],[-29.935,-13.656],[31.165,-14.677],[13.468,-3.363],[35.359,-7.875],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[331.488,94.474],[169.333,188.693],[32.184,139.048],[-42.579,116.871],[-117.76,120.921],[-222.913,114.453],[-222.729,51.897],[-139.227,13.694],[-84.143,3.856],[-12.612,-36.255]],"c":true}],"t":305,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.084,-2.958],[27.304,14.385],[26.103,4.171],[20.858,-4.456],[29.914,13.779],[-19.513,9.134],[-43.766,10.953],[-18.618,4.328],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.928,4.71],[-24.064,-12.677],[-29.293,-4.765],[-20.858,4.456],[-29.918,-13.517],[31.176,-14.591],[13.467,-3.37],[35.359,-7.879],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[333.213,94.203],[168.905,188.231],[32.184,139.048],[-42.282,116.9],[-117.73,121.161],[-221.961,114.098],[-221.715,52.04],[-139.257,13.453],[-83.573,3.723],[-12.612,-36.255]],"c":true}],"t":306,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.136,-2.962],[27.304,14.385],[26.104,4.178],[20.857,-4.463],[29.9,13.664],[-19.518,9.089],[-43.764,10.973],[-18.617,4.33],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.968,4.844],[-24.064,-12.677],[-29.294,-4.773],[-20.857,4.463],[-29.904,-13.404],[31.185,-14.52],[13.467,-3.377],[35.358,-7.883],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[334.625,93.98],[168.554,187.853],[32.184,139.048],[-42.039,116.924],[-117.705,121.358],[-221.18,113.807],[-220.884,52.157],[-139.282,13.256],[-83.106,3.615],[-12.612,-36.255]],"c":true}],"t":307,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.178,-2.964],[27.304,14.385],[26.105,4.183],[20.856,-4.468],[29.888,13.569],[-19.523,9.053],[-43.762,10.989],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.002,4.953],[-24.064,-12.677],[-29.295,-4.78],[-20.856,4.469],[-29.892,-13.311],[31.192,-14.462],[13.466,-3.382],[35.358,-7.885],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[335.785,93.798],[168.266,187.542],[32.184,139.048],[-41.839,116.943],[-117.685,121.519],[-220.54,113.568],[-220.201,52.254],[-139.302,13.094],[-82.723,3.526],[-12.612,-36.255]],"c":true}],"t":308,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.213,-2.966],[27.304,14.385],[26.105,4.188],[20.856,-4.473],[29.879,13.492],[-19.527,9.023],[-43.76,11.003],[-18.617,4.332],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.029,5.044],[-24.064,-12.677],[-29.296,-4.785],[-20.856,4.473],[-29.883,-13.234],[31.198,-14.415],[13.466,-3.386],[35.358,-7.888],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[336.737,93.648],[168.029,187.287],[32.184,139.048],[-41.675,116.959],[-117.669,121.652],[-220.014,113.372],[-219.641,52.333],[-139.318,12.961],[-82.408,3.453],[-12.612,-36.255]],"c":true}],"t":309,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.241,-2.968],[27.304,14.385],[26.106,4.192],[20.855,-4.477],[29.871,13.428],[-19.53,8.998],[-43.759,11.014],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.051,5.117],[-24.064,-12.677],[-29.296,-4.789],[-20.855,4.477],[-29.875,-13.172],[31.203,-14.376],[13.465,-3.389],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[337.517,93.525],[167.835,187.078],[32.184,139.048],[-41.541,116.973],[-117.655,121.761],[-219.583,113.212],[-219.183,52.398],[-139.332,12.852],[-82.151,3.393],[-12.612,-36.255]],"c":true}],"t":310,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.265,-2.97],[27.304,14.385],[26.106,4.195],[20.855,-4.48],[29.864,13.377],[-19.532,8.979],[-43.757,11.022],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.069,5.178],[-24.064,-12.677],[-29.297,-4.793],[-20.855,4.48],[-29.868,-13.121],[31.207,-14.344],[13.465,-3.392],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.151,93.425],[167.678,186.908],[32.184,139.048],[-41.432,116.983],[-117.644,121.849],[-219.233,113.081],[-218.81,52.451],[-139.343,12.764],[-81.941,3.344],[-12.612,-36.255]],"c":true}],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.283,-2.971],[27.304,14.385],[26.106,4.197],[20.854,-4.482],[29.859,13.335],[-19.534,8.962],[-43.757,11.029],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.084,5.226],[-24.064,-12.677],[-29.297,-4.796],[-20.855,4.482],[-29.863,-13.08],[31.21,-14.319],[13.465,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.66,93.345],[167.551,186.772],[32.184,139.048],[-41.344,116.992],[-117.635,121.92],[-218.951,112.976],[-218.51,52.493],[-139.352,12.693],[-81.773,3.305],[-12.612,-36.255]],"c":true}],"t":312,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.298,-2.972],[27.304,14.385],[26.107,4.199],[20.854,-4.484],[29.855,13.302],[-19.536,8.95],[-43.756,11.035],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.096,5.264],[-24.064,-12.677],[-29.298,-4.798],[-20.854,4.484],[-29.859,-13.048],[31.212,-14.299],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.063,93.282],[167.451,186.664],[32.184,139.048],[-41.275,116.999],[-117.628,121.976],[-218.729,112.893],[-218.273,52.526],[-139.359,12.636],[-81.64,3.274],[-12.612,-36.255]],"c":true}],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.309,-2.972],[27.304,14.385],[26.107,4.201],[20.854,-4.485],[29.852,13.277],[-19.537,8.94],[-43.755,11.039],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.105,5.293],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.485],[-29.856,-13.023],[31.214,-14.283],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.371,93.233],[167.375,186.581],[32.184,139.048],[-41.222,117.004],[-117.623,122.019],[-218.559,112.83],[-218.091,52.552],[-139.364,12.593],[-81.538,3.25],[-12.612,-36.255]],"c":true}],"t":314,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.317,-2.973],[27.304,14.385],[26.107,4.202],[20.854,-4.486],[29.85,13.259],[-19.538,8.933],[-43.755,11.043],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.111,5.315],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.486],[-29.854,-13.005],[31.216,-14.272],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.597,93.197],[167.319,186.521],[32.184,139.048],[-41.183,117.008],[-117.619,122.05],[-218.434,112.783],[-217.958,52.571],[-139.368,12.562],[-81.463,3.233],[-12.612,-36.255]],"c":true}],"t":315,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.323,-2.973],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.246],[-19.539,8.928],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.115,5.329],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.992],[31.217,-14.264],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.75,93.173],[167.281,186.48],[32.184,139.048],[-41.157,117.01],[-117.617,122.072],[-218.35,112.752],[-217.868,52.583],[-139.371,12.54],[-81.413,3.221],[-12.612,-36.255]],"c":true}],"t":316,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.326,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.847,13.239],[-19.539,8.925],[-43.755,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.118,5.337],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.852,-12.985],[31.217,-14.26],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.837,93.16],[167.259,186.456],[32.184,139.048],[-41.142,117.012],[-117.615,122.084],[-218.302,112.734],[-217.817,52.591],[-139.372,12.528],[-81.384,3.215],[-12.612,-36.255]],"c":true}],"t":317,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.331,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.486],[29.846,13.239],[-19.54,8.923],[-43.755,11.044],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.099,5.338],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.486],[-29.85,-12.985],[31.218,-14.257],[13.464,-3.398],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.849,93.158],[167.225,186.454],[32.184,139.048],[-41.137,117.012],[-117.618,122.088],[-218.289,112.723],[-217.8,52.588],[-139.369,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":323,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.345,-2.975],[27.304,14.385],[26.107,4.203],[20.855,-4.482],[29.843,13.244],[-19.541,8.919],[-43.757,11.035],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.037,5.33],[-24.064,-12.677],[-29.298,-4.802],[-20.855,4.482],[-29.848,-12.991],[31.221,-14.251],[13.465,-3.396],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.799,93.166],[167.137,186.468],[32.184,139.048],[-41.137,117.012],[-117.629,122.091],[-218.297,112.706],[-217.797,52.572],[-139.359,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.369,-2.976],[27.304,14.385],[26.107,4.203],[20.856,-4.475],[29.838,13.254],[-19.544,8.913],[-43.76,11.02],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.928,5.315],[-24.064,-12.677],[-29.298,-4.802],[-20.856,4.475],[-29.843,-13.001],[31.225,-14.24],[13.465,-3.391],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.711,93.179],[166.984,186.494],[32.184,139.048],[-41.137,117.012],[-117.649,122.096],[-218.311,112.676],[-217.79,52.544],[-139.341,12.523],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":325,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.404,-2.978],[27.304,14.385],[26.107,4.203],[20.857,-4.464],[29.83,13.269],[-19.548,8.902],[-43.764,10.997],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.765,5.295],[-24.064,-12.677],[-29.298,-4.802],[-20.857,4.464],[-29.835,-13.015],[31.231,-14.223],[13.467,-3.384],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.581,93.2],[166.757,186.531],[32.184,139.048],[-41.137,117.012],[-117.678,122.102],[-218.333,112.632],[-217.781,52.502],[-139.314,12.522],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":326,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.452,-2.981],[27.304,14.385],[26.107,4.203],[20.86,-4.45],[29.82,13.289],[-19.553,8.889],[-43.77,10.966],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.543,5.266],[-24.064,-12.677],[-29.298,-4.802],[-20.86,4.45],[-29.825,-13.036],[31.24,-14.201],[13.469,-3.374],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.403,93.228],[166.446,186.583],[32.184,139.048],[-41.137,117.012],[-117.718,122.112],[-218.362,112.572],[-217.769,52.444],[-139.277,12.521],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":327,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.516,-2.985],[27.304,14.385],[26.107,4.203],[20.863,-4.43],[29.806,13.316],[-19.56,8.87],[-43.777,10.926],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.252,5.228],[-24.064,-12.677],[-29.298,-4.802],[-20.863,4.431],[-29.811,-13.062],[31.251,-14.172],[13.471,-3.362],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.17,93.265],[166.038,186.651],[32.184,139.048],[-41.137,117.012],[-117.77,122.124],[-218.401,112.493],[-217.753,52.369],[-139.228,12.519],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":328,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.596,-2.99],[27.304,14.385],[26.107,4.203],[20.866,-4.406],[29.789,13.349],[-19.569,8.847],[-43.787,10.875],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-45.882,5.181],[-24.064,-12.677],[-29.298,-4.802],[-20.867,4.406],[-29.794,-13.096],[31.266,-14.135],[13.474,-3.346],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.873,93.311],[165.52,186.738],[32.184,139.048],[-41.137,117.012],[-117.836,122.139],[-218.449,112.393],[-217.732,52.273],[-139.167,12.517],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":329,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.697,-2.997],[27.304,14.385],[26.107,4.203],[20.871,-4.376],[29.767,13.391],[-19.58,8.818],[-43.8,10.811],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-45.419,5.121],[-24.064,-12.677],[-29.298,-4.802],[-20.871,4.376],[-29.773,-13.138],[31.284,-14.089],[13.478,-3.327],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.502,93.37],[164.872,186.846],[32.184,139.048],[-41.137,117.012],[-117.919,122.159],[-218.511,112.268],[-217.706,52.154],[-139.089,12.514],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":330,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.821,-3.005],[27.304,14.385],[26.107,4.203],[20.877,-4.338],[29.741,13.443],[-19.594,8.782],[-43.815,10.731],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-44.847,5.048],[-24.064,-12.677],[-29.298,-4.802],[-20.877,4.338],[-29.747,-13.19],[31.306,-14.031],[13.482,-3.302],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.044,93.442],[164.071,186.979],[32.184,139.048],[-41.137,117.012],[-118.022,122.183],[-218.586,112.113],[-217.675,52.006],[-138.994,12.51],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":331,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.974,-3.014],[27.304,14.385],[26.107,4.203],[20.884,-4.291],[29.708,13.507],[-19.612,8.738],[-43.834,10.634],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-44.143,4.957],[-24.064,-12.677],[-29.298,-4.802],[-20.884,4.292],[-29.715,-13.254],[31.333,-13.961],[13.488,-3.272],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[337.479,93.531],[163.084,187.144],[32.184,139.048],[-41.137,117.012],[-118.148,122.212],[-218.679,111.922],[-217.635,51.824],[-138.877,12.506],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":332,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[48.162,-3.026],[27.304,14.385],[26.107,4.203],[20.893,-4.234],[29.667,13.586],[-19.633,8.684],[-43.857,10.514],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-43.277,4.845],[-24.064,-12.677],[-29.298,-4.802],[-20.893,4.234],[-29.675,-13.332],[31.367,-13.874],[13.495,-3.235],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[336.785,93.64],[161.871,187.346],[32.184,139.048],[-41.137,117.012],[-118.304,122.249],[-218.793,111.688],[-217.587,51.6],[-138.732,12.5],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":333,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[48.395,-3.041],[27.304,14.385],[26.107,4.203],[20.904,-4.164],[29.617,13.683],[-19.659,8.617],[-43.885,10.365],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-42.207,4.708],[-24.064,-12.677],[-29.298,-4.802],[-20.904,4.164],[-29.626,-13.43],[31.408,-13.767],[13.504,-3.19],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[335.927,93.775],[160.372,187.596],[32.184,139.048],[-41.137,117.012],[-118.496,122.293],[-218.935,111.398],[-217.528,51.324],[-138.554,12.494],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":334,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[48.685,-3.059],[27.304,14.385],[26.107,4.203],[20.918,-4.076],[29.555,13.804],[-19.691,8.534],[-43.92,10.181],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-40.874,4.536],[-24.064,-12.677],[-29.298,-4.802],[-20.918,4.076],[-29.564,-13.551],[31.46,-13.634],[13.515,-3.133],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[334.858,93.943],[158.505,187.907],[32.184,139.048],[-41.137,117.012],[-118.735,122.349],[-219.111,111.037],[-217.453,50.98],[-138.332,12.485],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":335,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[49.051,-3.082],[27.304,14.385],[26.107,4.203],[20.935,-3.965],[29.476,13.957],[-19.732,8.428],[-43.965,9.947],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-39.19,4.319],[-24.064,-12.677],[-29.298,-4.802],[-20.935,3.965],[-29.487,-13.704],[31.526,-13.465],[13.529,-3.061],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[333.509,94.156],[156.147,188.3],[32.184,139.048],[-41.137,117.012],[-119.037,122.42],[-219.333,110.581],[-217.359,50.545],[-138.052,12.475],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":336,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[49.521,-3.111],[27.304,14.385],[26.107,4.203],[20.957,-3.822],[29.375,14.153],[-19.785,8.293],[-44.023,9.648],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-37.029,4.041],[-24.064,-12.677],[-29.298,-4.802],[-20.957,3.823],[-29.388,-13.9],[31.61,-13.249],[13.546,-2.969],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[331.776,94.429],[153.12,188.804],[32.184,139.048],[-41.137,117.012],[-119.425,122.51],[-219.618,109.996],[-217.239,49.986],[-137.691,12.462],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":337,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[50.132,-3.15],[27.304,14.385],[26.107,4.203],[20.986,-3.637],[29.244,14.408],[-19.853,8.117],[-44.097,9.258],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-34.218,3.679],[-24.064,-12.677],[-29.298,-4.802],[-20.986,3.637],[-29.259,-14.155],[31.719,-12.968],[13.569,-2.849],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[329.523,94.783],[149.182,189.461],[32.184,139.048],[-41.137,117.012],[-119.929,122.628],[-219.989,109.235],[-217.083,49.26],[-137.223,12.444],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":338,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[50.913,-3.199],[27.304,14.385],[26.107,4.203],[21.023,-3.4],[29.076,14.734],[-19.94,7.892],[-44.193,8.76],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-30.626,3.216],[-24.064,-12.677],[-29.298,-4.802],[-21.023,3.4],[-29.094,-14.482],[31.859,-12.609],[13.599,-2.696],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[326.643,95.237],[144.151,190.299],[32.184,139.048],[-41.137,117.012],[-120.574,122.779],[-220.463,108.263],[-216.882,48.332],[-136.624,12.422],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":339,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[51.807,-3.255],[27.304,14.385],[26.107,4.203],[21.065,-3.129],[28.884,15.108],[-20.04,7.634],[-44.302,8.19],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-26.514,2.687],[-24.064,-12.677],[-29.298,-4.802],[-21.065,3.129],[-28.905,-14.855],[32.018,-12.197],[13.632,-2.52],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[323.348,95.756],[138.392,191.259],[32.184,139.048],[-41.137,117.012],[-121.311,122.951],[-221.006,107.15],[-216.654,47.27],[-135.939,12.396],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":340,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[52.639,-3.307],[27.304,14.384],[26.107,4.203],[21.104,-2.877],[28.705,15.455],[-20.134,7.395],[-44.404,7.66],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-22.688,2.195],[-24.064,-12.677],[-29.298,-4.802],[-21.104,2.877],[-28.729,-15.203],[32.167,-11.814],[13.664,-2.357],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[320.28,96.239],[133.033,192.152],[32.184,139.048],[-41.137,117.012],[-121.998,123.111],[-221.511,106.114],[-216.44,46.281],[-135.302,12.372],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":341,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[53.299,-3.349],[27.304,14.385],[26.107,4.203],[21.135,-2.677],[28.564,15.731],[-20.207,7.205],[-44.484,7.239],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-19.655,1.804],[-24.064,-12.677],[-29.298,-4.802],[-21.135,2.677],[-28.59,-15.479],[32.285,-11.511],[13.689,-2.228],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[317.849,96.621],[128.785,192.86],[32.184,139.048],[-41.137,117.012],[-122.542,123.238],[-221.911,105.292],[-216.271,45.498],[-134.796,12.354],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":342,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[53.797,-3.38],[27.304,14.385],[26.107,4.203],[21.159,-2.526],[28.457,15.938],[-20.263,7.061],[-44.545,6.922],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-17.366,1.509],[-24.064,-12.677],[-29.298,-4.802],[-21.159,2.526],[-28.485,-15.687],[32.374,-11.282],[13.707,-2.13],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[316.014,96.91],[125.578,193.395],[32.184,139.048],[-41.137,117.012],[-122.953,123.334],[-222.213,104.673],[-216.144,44.906],[-134.415,12.339],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":343,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.174,-3.404],[27.304,14.385],[26.107,4.203],[21.176,-2.412],[28.375,16.096],[-20.305,6.953],[-44.591,6.681],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-15.629,1.286],[-24.064,-12.677],[-29.298,-4.802],[-21.176,2.412],[-28.405,-15.844],[32.442,-11.108],[13.721,-2.056],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[314.622,97.129],[123.146,193.8],[32.184,139.048],[-41.137,117.012],[-123.264,123.407],[-222.442,104.202],[-216.047,44.458],[-134.126,12.328],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":344,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.465,-3.422],[27.304,14.385],[26.107,4.203],[21.19,-2.324],[28.313,16.218],[-20.338,6.869],[-44.627,6.496],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-14.291,1.113],[-24.064,-12.677],[-29.298,-4.802],[-21.19,2.323],[-28.343,-15.966],[32.494,-10.974],[13.732,-1.999],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[313.55,97.298],[121.272,194.113],[32.184,139.048],[-41.137,117.012],[-123.504,123.463],[-222.619,103.84],[-215.973,44.112],[-133.903,12.32],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":345,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.692,-3.436],[27.304,14.385],[26.107,4.203],[21.201,-2.255],[28.264,16.312],[-20.363,6.803],[-44.655,6.351],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-13.248,0.979],[-24.064,-12.677],[-29.298,-4.802],[-21.201,2.255],[-28.295,-16.061],[32.534,-10.87],[13.741,-1.954],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[312.713,97.43],[119.811,194.356],[32.184,139.048],[-41.137,117.012],[-123.692,123.507],[-222.757,103.558],[-215.915,43.842],[-133.729,12.314],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":346,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.87,-3.447],[27.304,14.385],[26.107,4.203],[21.209,-2.201],[28.226,16.387],[-20.383,6.752],[-44.676,6.237],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-12.428,0.874],[-24.064,-12.677],[-29.298,-4.802],[-21.209,2.201],[-28.258,-16.135],[32.566,-10.788],[13.748,-1.919],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.166,-149.936],[312.056,97.533],[118.662,194.548],[32.184,139.048],[-41.137,117.012],[-123.839,123.541],[-222.865,103.336],[-215.869,43.63],[-133.592,12.309],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":347,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.01,-3.456],[27.304,14.385],[26.107,4.203],[21.216,-2.158],[28.196,16.445],[-20.399,6.712],[-44.694,6.148],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.783,0.791],[-24.064,-12.677],[-29.298,-4.802],[-21.216,2.158],[-28.228,-16.194],[32.591,-10.723],[13.753,-1.892],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.539,97.615],[117.759,194.698],[32.184,139.048],[-41.137,117.012],[-123.954,123.568],[-222.95,103.161],[-215.833,43.464],[-133.485,12.305],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.12,-3.463],[27.304,14.385],[26.107,4.203],[21.221,-2.125],[28.172,16.491],[-20.411,6.68],[-44.707,6.078],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.279,0.726],[-24.064,-12.677],[-29.298,-4.802],[-21.221,2.125],[-28.205,-16.24],[32.611,-10.673],[13.757,-1.87],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.135,97.678],[117.054,194.816],[32.184,139.048],[-41.137,117.012],[-124.045,123.589],[-223.017,103.025],[-215.805,43.334],[-133.401,12.301],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.205,-3.468],[27.304,14.385],[26.107,4.203],[21.225,-2.099],[28.154,16.526],[-20.421,6.656],[-44.717,6.024],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.891,0.676],[-24.064,-12.677],[-29.298,-4.802],[-21.225,2.099],[-28.187,-16.275],[32.626,-10.634],[13.76,-1.854],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.824,97.727],[116.509,194.906],[32.184,139.048],[-41.137,117.012],[-124.114,123.606],[-223.068,102.92],[-215.783,43.233],[-133.336,12.299],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.268,-3.472],[27.304,14.385],[26.107,4.203],[21.228,-2.08],[28.14,16.553],[-20.428,6.638],[-44.725,5.984],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.599,0.638],[-24.064,-12.677],[-29.298,-4.802],[-21.228,2.08],[-28.174,-16.301],[32.637,-10.605],[13.763,-1.841],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.59,97.764],[116.1,194.975],[32.184,139.048],[-41.137,117.012],[-124.167,123.618],[-223.106,102.841],[-215.767,43.158],[-133.288,12.297],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.314,-3.475],[27.304,14.385],[26.107,4.203],[21.23,-2.066],[28.131,16.572],[-20.433,6.624],[-44.731,5.955],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.389,0.611],[-24.064,-12.677],[-29.298,-4.802],[-21.23,2.066],[-28.164,-16.32],[32.645,-10.584],[13.764,-1.832],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.421,97.791],[115.806,195.024],[32.184,139.048],[-41.137,117.012],[-124.204,123.627],[-223.134,102.784],[-215.755,43.104],[-133.252,12.296],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.344,-3.477],[27.304,14.385],[26.107,4.203],[21.231,-2.057],[28.124,16.585],[-20.436,6.616],[-44.734,5.935],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.249,0.593],[-24.064,-12.677],[-29.298,-4.802],[-21.231,2.057],[-28.158,-16.333],[32.651,-10.57],[13.765,-1.826],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.166,-149.936],[310.309,97.808],[115.61,195.056],[32.184,139.048],[-41.137,117.012],[-124.23,123.633],[-223.152,102.746],[-215.748,43.068],[-133.229,12.295],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.361,-3.478],[27.304,14.385],[26.107,4.203],[21.232,-2.052],[28.12,16.592],[-20.438,6.611],[-44.736,5.924],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.171,0.583],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.052],[-28.154,-16.34],[32.654,-10.562],[13.766,-1.823],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.246,97.818],[115.5,195.075],[32.184,139.048],[-41.137,117.012],[-124.244,123.636],[-223.163,102.725],[-215.743,43.047],[-133.216,12.295],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.209,-3.469],[27.304,14.385],[26.107,4.201],[21.226,-2.09],[28.154,16.578],[-20.421,6.665],[-44.721,6.002],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.77,0.613],[-24.064,-12.677],[-29.298,-4.799],[-21.226,2.09],[-28.187,-16.326],[32.627,-10.649],[13.761,-1.847],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[116.487,195.068],[32.184,139.048],[-41.225,117.004],[-124.142,123.539],[-223.365,102.996],[-216.079,43.163],[-133.31,12.37],[-81.544,3.252],[-12.612,-36.255]],"c":true}],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.59,-3.43],[27.304,14.385],[26.106,4.191],[21.202,-2.246],[28.292,16.514],[-20.352,6.886],[-44.658,6.322],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-13.22,0.746],[-24.064,-12.677],[-29.296,-4.788],[-21.202,2.246],[-28.323,-16.259],[32.517,-11],[13.742,-1.945],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[120.5,195.022],[32.184,139.048],[-41.571,116.97],[-123.727,123.154],[-224.144,104.089],[-217.401,43.644],[-133.693,12.666],[-82.208,3.406],[-12.612,-36.255]],"c":true}],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[53.209,-3.343],[27.304,14.385],[26.103,4.169],[21.147,-2.594],[28.599,16.371],[-20.198,7.377],[-44.517,7.036],[-18.618,4.327],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-18.692,1.041],[-24.064,-12.677],[-29.293,-4.763],[-21.147,2.594],[-28.625,-16.111],[32.271,-11.785],[13.698,-2.165],[35.359,-7.879],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[129.46,194.917],[32.184,139.048],[-42.344,116.894],[-122.8,122.294],[-225.885,106.53],[-220.354,44.718],[-134.548,13.328],[-83.692,3.751],[-12.612,-36.255]],"c":true}],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[51.196,-3.217],[27.304,14.385],[26.099,4.137],[21.067,-3.101],[29.047,16.164],[-19.974,8.094],[-44.311,8.076],[-18.619,4.319],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-26.663,1.472],[-24.064,-12.677],[-29.289,-4.727],[-21.067,3.101],[-29.065,-15.895],[31.913,-12.928],[13.635,-2.485],[35.361,-7.864],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[142.512,194.764],[32.184,139.048],[-43.47,116.783],[-121.45,121.041],[-228.421,110.085],[-224.657,46.282],[-135.794,14.292],[-85.853,4.253],[-12.612,-36.255]],"c":true}],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[49.472,-3.108],[27.304,14.385],[26.095,4.11],[20.999,-3.535],[29.43,15.986],[-19.782,8.707],[-44.135,8.966],[-18.62,4.311],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-33.49,1.841],[-24.064,-12.677],[-29.285,-4.696],[-20.999,3.535],[-29.442,-15.71],[31.607,-13.906],[13.581,-2.759],[35.362,-7.851],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[153.69,194.634],[32.184,139.048],[-44.434,116.688],[-120.293,119.968],[-230.593,113.13],[-228.341,47.622],[-136.861,15.118],[-87.704,4.683],[-12.612,-36.255]],"c":true}],"t":360,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[48.293,-3.034],[27.304,14.385],[26.093,4.091],[20.952,-3.832],[29.692,15.864],[-19.65,9.127],[-44.015,9.575],[-18.62,4.306],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-38.161,2.093],[-24.064,-12.677],[-29.282,-4.675],[-20.952,3.832],[-29.7,-15.583],[31.397,-14.576],[13.544,-2.946],[35.363,-7.842],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[161.339,194.545],[32.184,139.048],[-45.093,116.623],[-119.501,119.234],[-232.079,115.214],[-230.863,48.538],[-137.591,15.683],[-88.971,4.977],[-12.612,-36.255]],"c":true}],"t":361,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.501,-2.984],[27.304,14.385],[26.092,4.078],[20.921,-4.032],[29.868,15.783],[-19.562,9.409],[-43.934,9.984],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-41.296,2.262],[-24.064,-12.677],[-29.28,-4.661],[-20.921,4.032],[-29.873,-15.498],[31.257,-15.026],[13.519,-3.072],[35.364,-7.836],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[166.473,194.485],[32.184,139.048],[-45.536,116.58],[-118.97,118.742],[-233.077,116.612],[-232.555,49.153],[-138.081,16.063],[-89.821,5.175],[-12.612,-36.255]],"c":true}],"t":362,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.969,-2.951],[27.304,14.385],[26.09,4.07],[20.9,-4.166],[29.987,15.728],[-19.502,9.599],[-43.88,10.26],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-43.406,2.376],[-24.064,-12.677],[-29.279,-4.651],[-20.9,4.166],[-29.989,-15.441],[31.162,-15.328],[13.502,-3.157],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[169.928,194.444],[32.184,139.048],[-45.834,116.551],[-118.613,118.41],[-233.748,117.554],[-233.694,49.567],[-138.411,16.318],[-90.393,5.308],[-12.612,-36.255]],"c":true}],"t":363,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.617,-2.929],[27.304,14.385],[26.09,4.064],[20.886,-4.255],[30.065,15.692],[-19.463,9.724],[-43.844,10.441],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-44.8,2.451],[-24.064,-12.677],[-29.279,-4.645],[-20.886,4.255],[-30.066,-15.403],[31.099,-15.528],[13.491,-3.213],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[172.211,194.418],[32.184,139.048],[-46.031,116.531],[-118.376,118.191],[-234.192,118.175],[-234.446,49.841],[-138.629,16.487],[-90.771,5.395],[-12.612,-36.255]],"c":true}],"t":364,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.398,-2.915],[27.304,14.385],[26.089,4.061],[20.877,-4.31],[30.114,15.669],[-19.439,9.802],[-43.821,10.554],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-45.667,2.498],[-24.064,-12.677],[-29.278,-4.641],[-20.877,4.31],[-30.114,-15.38],[31.06,-15.652],[13.484,-3.248],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[173.63,194.401],[32.184,139.048],[-46.153,116.519],[-118.23,118.055],[-234.467,118.562],[-234.914,50.011],[-138.764,16.591],[-91.006,5.45],[-12.612,-36.255]],"c":true}],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.281,-2.908],[27.304,14.385],[26.089,4.059],[20.873,-4.339],[30.139,15.657],[-19.426,9.843],[-43.809,10.615],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.128,2.523],[-24.064,-12.677],[-29.278,-4.639],[-20.873,4.339],[-30.14,-15.367],[31.04,-15.718],[13.481,-3.266],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.386,194.392],[32.184,139.048],[-46.218,116.513],[-118.151,117.982],[-234.614,118.768],[-235.163,50.102],[-138.836,16.647],[-91.131,5.479],[-12.612,-36.255]],"c":true}],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.694117665291,0.435294121504,0.345098048449,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Thumb","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":89,"op":409,"st":49,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Nail - PATH","parent":5,"tt":1,"tp":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":224,"s":[-215.854,53.1,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":257,"s":[-215.854,56.9,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":294,"s":[-215.854,53.1,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":322,"s":[-215.854,53.1,0],"to":[0,0,0],"ti":[0,0,0]},{"t":355,"s":[-215.854,56.9,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":159,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.6,"y":0},"t":195,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":224,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":257,"s":[{"i":[[0,0],[5.977,-11.693],[12.492,0.343],[0,0],[-11.927,9.366],[0,0],[-7.435,-11.514]],"o":[[6.885,11.15],[-5.977,11.693],[0,0],[-14.573,-15.516],[0,0],[12.995,-2.066],[0,0]],"v":[[41.831,-31.462],[43.556,5.299],[13.369,24.072],[-23.361,15.588],[-18.585,-35.795],[8.315,-47.769],[41.596,-32.101]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":265,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":294,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":318,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":322,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":355,"s":[{"i":[[0,0],[5.977,-11.693],[12.492,0.343],[0,0],[-11.927,9.366],[0,0],[-7.435,-11.514]],"o":[[6.885,11.15],[-5.977,11.693],[0,0],[-14.573,-15.516],[0,0],[12.995,-2.066],[0,0]],"v":[[41.831,-31.462],[43.556,5.299],[13.369,24.072],[-23.361,15.588],[-18.585,-35.795],[8.315,-47.769],[41.596,-32.101]],"c":true}]},{"t":367,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.75686275959,0.549019634724,0.474509805441,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Nail","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":89,"op":409,"st":49,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Thumb - PATH","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":159,"s":[27.7]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":195,"s":[25.7]},{"t":249,"s":[25.7]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":224,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.4,"y":0},"t":257,"s":[-18.196,2.427,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.44,"y":1},"o":{"x":0.44,"y":0},"t":272,"s":[-18.196,2.427,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":0.2},"o":{"x":0.167,"y":0.167},"t":298,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":322,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.12,"y":1},"o":{"x":0.44,"y":0},"t":355,"s":[-18.196,2.427,0],"to":[0,0,0],"ti":[0,0,0]},{"t":370,"s":[1.306,1.56,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,49,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":25,"nm":"Elevation","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[0,0,0,0.25],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":63.75,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":180,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":4,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":8,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":159,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.6,"y":0},"t":195,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.327,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.119,5.34],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.865,93.155],[167.252,186.449],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":224,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.327,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.119,5.34],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.865,93.155],[167.252,186.449],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":257,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":265,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":294,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":318,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.327,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.119,5.34],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.865,93.155],[167.252,186.449],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":322,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.327,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.119,5.34],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.865,93.155],[167.252,186.449],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":355,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"t":367,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.694117665291,0.435294121504,0.345098048449,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Thumb","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":89,"op":409,"st":49,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".onSurfaceBack","cl":"onSurfaceBack","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":173,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":185,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":197,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":217,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":239,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":257,"s":[95]},{"t":275,"s":[0],"h":1},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":315,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":337,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":355,"s":[95]},{"t":373,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":173,"s":[970.719,370,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":1},"t":197,"s":[1012.719,370,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":224,"s":[1012.719,370,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":257,"s":[965.719,370,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":259,"s":[965.719,370,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":277,"s":[1102.719,370,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":322,"s":[1012.719,370,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":355,"s":[965.719,370,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":357,"s":[965.719,370,0],"to":[0,0,0],"ti":[0,0,0]},{"t":375,"s":[1102.719,370,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":224,"s":[69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":257,"s":[100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":259,"s":[100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":277,"s":[69,69,100]},{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":322,"s":[69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":355,"s":[100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":357,"s":[100,100,100]},{"t":375,"s":[69,69,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":173,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-228.768,0.408],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":197,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":224,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":257,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":259,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":265,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.77,"y":0},"t":277,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":322,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":355,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":357,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":363,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"t":375,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":1689,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":161,"op":409,"st":54,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".onSurfaceBack","cl":"onSurfaceBack","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":12,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":24,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":36,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":48,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":100,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":112,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":124,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":136,"s":[100]},{"t":148,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":420.5,"ix":3},"y":{"a":0,"k":350.5,"ix":4}},"a":{"a":0,"k":[206,561,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[262,701],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":73,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"mm","mm":3,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":1689,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Subtract","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-317.5,561],"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":"Left Zone","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[262,701],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":73,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"mm","mm":3,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":1689,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Subtract","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[729.5,561],"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":"Right Zone","np":1,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".surfaceBack","cl":"surfaceBack","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,350.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[841,701],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Rectangle 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.976,0.635,0.725,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.976,0.635,0.725,1],"t":1689,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":409,"st":0,"ct":1,"bm":0}]},{"id":"comp_1","nm":"Part02_Charade_Back_FO_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".onSurfaceBack","cl":"onSurfaceBack","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":60,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":72,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":84,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":96,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":108,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":162,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":174,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":186,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":198,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":210,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":264,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":276,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":288,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":300,"s":[100]},{"t":312,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":420.5,"ix":3},"y":{"a":0,"k":350.5,"ix":4}},"a":{"a":0,"k":[206,561,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[262,701],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":73,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"mm","mm":3,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Subtract","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-317.5,561],"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":"Left Zone","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[262,701],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":73,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"mm","mm":3,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Subtract","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[729.5,561],"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":"Right Zone","np":1,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":312,"st":60,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"DISTANCE COVERAGE","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":38,"s":[420.5]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":44.666,"s":[506.1]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":78,"s":[634.5]},{"i":{"x":[0.39],"y":[1]},"o":{"x":[0.69],"y":[0]},"t":195,"s":[634.5]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.162],"y":[0]},"t":231,"s":[206.5]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":318,"s":[206.5]},{"t":379,"s":[206]}],"ix":3},"y":{"a":0,"k":370.5,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":380,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":38,"s":[9]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":44.666,"s":[67]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":78,"s":[154]},{"i":{"x":[0.76],"y":[1]},"o":{"x":[0.91],"y":[0]},"t":109,"s":[144]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":128,"s":[190]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.78],"y":[0]},"t":143,"s":[153]},{"i":{"x":[0.8],"y":[0.443]},"o":{"x":[0.3],"y":[0]},"t":145,"s":[153]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.32],"y":[0.901]},"t":155,"s":[190]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":184,"s":[94]},{"i":{"x":[0.39],"y":[1]},"o":{"x":[0.69],"y":[0]},"t":195,"s":[94]},{"i":{"x":[0.12],"y":[0.876]},"o":{"x":[0.88],"y":[0.124]},"t":231,"s":[-190]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":246,"s":[-154]},{"i":{"x":[0.8],"y":[0.449]},"o":{"x":[0.3],"y":[0]},"t":248,"s":[-154]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.26],"y":[0.913]},"t":258,"s":[-190]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":288,"s":[-144]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":318,"s":[-144]},{"t":379,"s":[-186]}],"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0,"y":0.96},"o":{"x":0.61,"y":0},"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-37]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":52,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-84.75,-37]],"c":false}]},{"i":{"x":0.22,"y":1},"o":{"x":0.167,"y":0},"t":70,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.61,"y":0},"t":84,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":87,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":104,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":118,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0.8,"y":0.15},"o":{"x":0.3,"y":0},"t":119,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":129,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-43.75,-39]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.3,"y":0},"t":144,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0.95,"y":0.3},"o":{"x":0.9,"y":0},"t":146,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.05,"y":0.7},"t":156,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-43.75,-39]],"c":false}]},{"i":{"x":0.58,"y":1},"o":{"x":0.42,"y":0},"t":175,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.88,"y":0},"t":187,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.37,"y":0},"t":197,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-48.75,-39]],"c":false}]},{"i":{"x":0.37,"y":1},"o":{"x":0.33,"y":0},"t":206,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[48.25,-39]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":212,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[70.25,-25.75]],"c":false}]},{"i":{"x":0.6,"y":0.28},"o":{"x":0.26,"y":0},"t":218,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[70.25,-25.75]],"c":false}]},{"i":{"x":0.36,"y":1},"o":{"x":0.193,"y":1},"t":231,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[37.25,-34.75]],"c":false}]},{"i":{"x":0.8,"y":0.47},"o":{"x":0.3,"y":0},"t":247,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[60.25,-38.75]],"c":false}]},{"i":{"x":0.36,"y":1},"o":{"x":0.167,"y":0},"t":259,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[42.25,-37.75]],"c":false}]},{"i":{"x":0.61,"y":1},"o":{"x":0.68,"y":0},"t":274,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-35.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":284,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":298,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.75],[54.25,-37.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":318,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-21.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.44,"y":0},"t":332,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.75],[54.25,-37.75]],"c":false}]},{"t":379,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[12.25,-21.75]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0],"y":[0.96]},"o":{"x":[0.61],"y":[0]},"t":38,"s":[64]},{"t":52,"s":[58]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-37]],"c":false}],"t":38,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.937,-37]],"c":false}],"t":39,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-48.646,-37]],"c":false}],"t":40,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.313,-37]],"c":false}],"t":41,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-54.399,-37]],"c":false}],"t":42,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-66.311,-37]],"c":false}],"t":43,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-74.272,-37]],"c":false}],"t":44,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-78.046,-37]],"c":false}],"t":45,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-80.356,-37]],"c":false}],"t":46,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-81.91,-37]],"c":false}],"t":47,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-82.991,-37]],"c":false}],"t":48,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-83.745,-37]],"c":false}],"t":49,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-84.256,-37]],"c":false}],"t":50,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-84.578,-37]],"c":false}],"t":51,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-84.75,-37]],"c":false}],"t":52,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-84.703,-36.979]],"c":false}],"t":53,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-84.552,-36.911]],"c":false}],"t":54,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-84.281,-36.789]],"c":false}],"t":55,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-83.868,-36.604]],"c":false}],"t":56,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-83.287,-36.344]],"c":false}],"t":57,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-82.499,-35.99]],"c":false}],"t":58,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-81.453,-35.521]],"c":false}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-80.073,-34.902]],"c":false}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-78.245,-34.083]],"c":false}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-75.784,-32.978]],"c":false}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-72.379,-31.451]],"c":false}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-67.583,-29.3]],"c":false}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-61.513,-26.577]],"c":false}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-56.355,-24.264]],"c":false}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.305,-22.896]],"c":false}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.701,-22.177]],"c":false}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.955,-21.842]],"c":false}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.75,-21.75]],"c":false}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.939,-22.834]],"c":false}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.404,-25.508]],"c":false}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.907,-28.4]],"c":false}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.337,-30.878]],"c":false}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.686,-32.881]],"c":false}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.963,-34.478]],"c":false}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.184,-35.743]],"c":false}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.357,-36.738]],"c":false}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.491,-37.509]],"c":false}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.592,-38.091]],"c":false}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.665,-38.511]],"c":false}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.714,-38.792]],"c":false}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.741,-38.95]],"c":false}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.983]],"c":false}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.929]],"c":false}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.833]],"c":false}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.691]],"c":false}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.496]],"c":false}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.239]],"c":false}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-37.909]],"c":false}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-37.493]],"c":false}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-36.972]],"c":false}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-36.318]],"c":false}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35.491]],"c":false}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-34.426]],"c":false}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-33.011]],"c":false}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-31.018]],"c":false}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-27.941]],"c":false}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-23.806]],"c":false}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-21.75]],"c":false}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-24.609]],"c":false}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-29.442]],"c":false}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-32.383]],"c":false}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-34.249]],"c":false}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35.557]],"c":false}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-36.52]],"c":false}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-37.247]],"c":false}],"t":111,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-37.8]],"c":false}],"t":112,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.218]],"c":false}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.527]],"c":false}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.748]],"c":false}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.893]],"c":false}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.974]],"c":false}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.695,-39]],"c":false}],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.526,-39]],"c":false}],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.235,-39]],"c":false}],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.805,-39]],"c":false}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.21,-39]],"c":false}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.413,-39]],"c":false}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.353,-39]],"c":false}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-48.925,-39]],"c":false}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-46.917,-39]],"c":false}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-43.75,-39]],"c":false}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-44.32,-39]],"c":false}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-46.635,-39]],"c":false}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-48.75,-39]],"c":false}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.116,-39]],"c":false}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.069,-39]],"c":false}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.773,-39]],"c":false}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.309,-39]],"c":false}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.722,-39]],"c":false}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.041,-39]],"c":false}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.285,-39]],"c":false}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.468,-39]],"c":false}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.599,-39]],"c":false}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.686,-39]],"c":false}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.735,-39]],"c":false}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.692,-39]],"c":false}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.607,-39]],"c":false}],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.467,-39]],"c":false}],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.252,-39]],"c":false}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.927,-39]],"c":false}],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.424,-39]],"c":false}],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.593,-39]],"c":false}],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-49.964,-39]],"c":false}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-43.75,-39]],"c":false}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-46.25,-39]],"c":false}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.441,-39]],"c":false}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-48.326,-39]],"c":false}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-49.047,-39]],"c":false}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-49.662,-39]],"c":false}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.201,-39]],"c":false}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.679,-39]],"c":false}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.11,-39]],"c":false}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.5,-39]],"c":false}],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.855,-39]],"c":false}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.179,-39]],"c":false}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.475,-39]],"c":false}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.745,-39]],"c":false}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.989,-39]],"c":false}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.208,-39]],"c":false}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.4,-39]],"c":false}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.563,-39]],"c":false}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.689,-39]],"c":false}],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.946]],"c":false}],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.775]],"c":false}],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.483]],"c":false}],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.073]],"c":false}],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-37.565]],"c":false}],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-36.435]],"c":false}],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35.927]],"c":false}],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35.517]],"c":false}],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35.225]],"c":false}],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35.054]],"c":false}],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35]],"c":false}],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.731,-35.015]],"c":false}],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.669,-35.065]],"c":false}],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.553,-35.157]],"c":false}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.371,-35.303]],"c":false}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.099,-35.521]],"c":false}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.704,-35.837]],"c":false}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.121,-36.303]],"c":false}],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.225,-37.02]],"c":false}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-49.839,-38.129]],"c":false}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-48.75,-39]],"c":false}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.902,-21.75],[-45.458,-39]],"c":false}],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-9.002,-21.75],[-34.21,-39]],"c":false}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.091,-21.75],[-15.153,-39]],"c":false}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.396,-21.75],[6.137,-39]],"c":false}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5.896,-21.75],[23.596,-39]],"c":false}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.012,-21.75],[35.686,-39]],"c":false}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[10.941,-21.75],[43.172,-39]],"c":false}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[11.95,-21.75],[47.087,-39]],"c":false}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[48.25,-39]],"c":false}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[50.438,-37.682]],"c":false}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[56.89,-33.796]],"c":false}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[63.494,-29.819]],"c":false}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[67.635,-27.325]],"c":false}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[69.675,-26.096]],"c":false}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[70.25,-25.75]],"c":false}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[70.25,-25.75]],"c":false}],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[69.991,-25.821]],"c":false}],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[69.25,-26.023]],"c":false}],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[68.07,-26.344]],"c":false}],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[66.487,-26.776]],"c":false}],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[64.527,-27.311]],"c":false}],"t":223,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[62.212,-27.942]],"c":false}],"t":224,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[59.559,-28.666]],"c":false}],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[56.584,-29.477]],"c":false}],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[53.299,-30.373]],"c":false}],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[49.715,-31.35]],"c":false}],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[45.841,-32.407]],"c":false}],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[41.683,-33.541]],"c":false}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[37.25,-34.75]],"c":false}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[43.95,-35.915]],"c":false}],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[49.066,-36.805]],"c":false}],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[52.726,-37.441]],"c":false}],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[55.247,-37.88]],"c":false}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[56.958,-38.177]],"c":false}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[58.111,-38.378]],"c":false}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[58.886,-38.513]],"c":false}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[59.404,-38.603]],"c":false}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[59.744,-38.662]],"c":false}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[59.964,-38.7]],"c":false}],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[60.1,-38.724]],"c":false}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[60.18,-38.738]],"c":false}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[60.223,-38.745]],"c":false}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[60.25,-38.75]],"c":false}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[60.059,-38.739]],"c":false}],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[59.562,-38.712]],"c":false}],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[58.827,-38.671]],"c":false}],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[57.889,-38.619]],"c":false}],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[56.769,-38.557]],"c":false}],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[55.47,-38.484]],"c":false}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[53.99,-38.402]],"c":false}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[52.313,-38.309]],"c":false}],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[50.406,-38.203]],"c":false}],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[48.21,-38.081]],"c":false}],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[45.599,-37.936]],"c":false}],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[42.25,-37.75]],"c":false}],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[42.797,-37.659]],"c":false}],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[44.055,-37.449]],"c":false}],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[45.566,-37.197]],"c":false}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[47.075,-36.946]],"c":false}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[48.466,-36.714]],"c":false}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[49.697,-36.509]],"c":false}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[50.76,-36.332]],"c":false}],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[51.659,-36.182]],"c":false}],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[52.403,-36.058]],"c":false}],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[53.005,-35.957]],"c":false}],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[53.476,-35.879]],"c":false}],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[53.827,-35.821]],"c":false}],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.067,-35.78]],"c":false}],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.205,-35.757]],"c":false}],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-35.75]],"c":false}],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-35.641]],"c":false}],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-35.273]],"c":false}],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-34.565]],"c":false}],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-33.397]],"c":false}],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-31.597]],"c":false}],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-29.011]],"c":false}],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-25.923]],"c":false}],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-23.417]],"c":false}],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-22.107]],"c":false}],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-21.75]],"c":false}],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.215],[54.25,-25.469]],"c":false}],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.54],[54.25,-28.071]],"c":false}],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.795],[54.25,-30.114]],"c":false}],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.003],[54.25,-31.77]],"c":false}],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.173],[54.25,-33.132]],"c":false}],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.313],[54.25,-34.254]],"c":false}],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.428],[54.25,-35.176]],"c":false}],"t":291,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.522],[54.25,-35.926]],"c":false}],"t":292,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.597],[54.25,-36.525]],"c":false}],"t":293,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.655],[54.25,-36.991]],"c":false}],"t":294,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.698],[54.25,-37.335]],"c":false}],"t":295,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.728],[54.25,-37.571]],"c":false}],"t":296,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.745],[54.25,-37.706]],"c":false}],"t":297,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.744],[54.25,-37.703]],"c":false}],"t":300,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.736],[54.25,-37.64]],"c":false}],"t":301,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.725],[54.25,-37.548]],"c":false}],"t":302,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.709],[54.25,-37.423]],"c":false}],"t":303,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.689],[54.25,-37.261]],"c":false}],"t":304,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.663],[54.25,-37.057]],"c":false}],"t":305,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.632],[54.25,-36.805]],"c":false}],"t":306,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.593],[54.25,-36.497]],"c":false}],"t":307,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.547],[54.25,-36.124]],"c":false}],"t":308,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.49],[54.25,-35.672]],"c":false}],"t":309,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.422],[54.25,-35.123]],"c":false}],"t":310,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.338],[54.25,-34.452]],"c":false}],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.234],[54.25,-33.619]],"c":false}],"t":312,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.102],[54.25,-32.563]],"c":false}],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.928],[54.25,-31.172]],"c":false}],"t":314,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.685],[54.25,-29.229]],"c":false}],"t":315,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.325],[54.25,-26.348]],"c":false}],"t":316,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.933],[54.25,-23.212]],"c":false}],"t":317,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-21.75]],"c":false}],"t":318,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.081],[54.25,-24.402]],"c":false}],"t":319,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.642],[54.25,-28.884]],"c":false}],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.983],[54.25,-31.613]],"c":false}],"t":321,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.199],[54.25,-33.344]],"c":false}],"t":322,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.351],[54.25,-34.556]],"c":false}],"t":323,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.462],[54.25,-35.45]],"c":false}],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.547],[54.25,-36.124]],"c":false}],"t":325,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.611],[54.25,-36.637]],"c":false}],"t":326,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.659],[54.25,-37.024]],"c":false}],"t":327,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.695],[54.25,-37.311]],"c":false}],"t":328,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.721],[54.25,-37.516]],"c":false}],"t":329,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.738],[54.25,-37.651]],"c":false}],"t":330,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.747],[54.25,-37.726]],"c":false}],"t":331,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.748],[54.215,-37.737]],"c":false}],"t":333,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.743],[54.103,-37.694]],"c":false}],"t":334,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.733],[53.897,-37.616]],"c":false}],"t":335,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.718],[53.577,-37.494]],"c":false}],"t":336,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.696],[53.114,-37.317]],"c":false}],"t":337,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.665],[52.467,-37.071]],"c":false}],"t":338,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.623],[51.579,-36.732]],"c":false}],"t":339,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.565],[50.358,-36.268]],"c":false}],"t":340,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.484],[48.671,-35.624]],"c":false}],"t":341,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.372],[46.318,-34.728]],"c":false}],"t":342,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.22],[43.116,-33.508]],"c":false}],"t":343,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.035],[39.233,-32.029]],"c":false}],"t":344,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.852],[35.389,-30.565]],"c":false}],"t":345,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.696],[32.113,-29.317]],"c":false}],"t":346,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.569],[29.44,-28.299]],"c":false}],"t":347,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.464],[27.247,-27.463]],"c":false}],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.377],[25.416,-26.766]],"c":false}],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.303],[23.861,-26.173]],"c":false}],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.239],[22.522,-25.663]],"c":false}],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.184],[21.354,-25.218]],"c":false}],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.135],[20.327,-24.827]],"c":false}],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.091],[19.418,-24.481]],"c":false}],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.053],[18.608,-24.172]],"c":false}],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.018],[17.882,-23.896]],"c":false}],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.987],[17.231,-23.648]],"c":false}],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.959],[16.645,-23.424]],"c":false}],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.934],[16.117,-23.223]],"c":false}],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.911],[15.64,-23.041]],"c":false}],"t":360,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.891],[15.209,-22.877]],"c":false}],"t":361,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.872],[14.82,-22.729]],"c":false}],"t":362,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.856],[14.469,-22.595]],"c":false}],"t":363,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.841],[14.153,-22.475]],"c":false}],"t":364,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.827],[13.869,-22.367]],"c":false}],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.815],[13.615,-22.27]],"c":false}],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.804],[13.387,-22.183]],"c":false}],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.795],[13.185,-22.106]],"c":false}],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.786],[13.007,-22.038]],"c":false}],"t":369,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.779],[12.851,-21.979]],"c":false}],"t":370,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.772],[12.716,-21.927]],"c":false}],"t":371,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.767],[12.6,-21.883]],"c":false}],"t":372,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.762],[12.502,-21.846]],"c":false}],"t":373,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.758],[12.422,-21.816]],"c":false}],"t":374,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.755],[12.358,-21.791]],"c":false}],"t":375,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.753],[12.31,-21.773]],"c":false}],"t":376,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.751],[12.276,-21.76]],"c":false}],"t":377,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[12.256,-21.752]],"c":false}],"t":378,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[63.97],"t":39,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.855],"t":40,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":41,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.922],"t":42,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.99],"t":43,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.699],"t":44,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.087],"t":45,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.712],"t":46,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.461],"t":47,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.285],"t":48,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.163],"t":49,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.08],"t":50,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.028],"t":51,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","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":1,"k":[{"i":{"x":0,"y":0.96},"o":{"x":0.61,"y":0},"t":38,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-100.574],[-0.443,-79.498],[-11.742,-100.574]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":52,"s":[{"i":[[-5.169,3.179],[12.869,0],[-4.198,-2.581]],"o":[[4.685,-2.881],[-11.625,0],[5.169,3.179]],"v":[[7.5,-133.761],[-0.488,-112.685],[-8.756,-133.761]],"c":true}]},{"i":{"x":0.22,"y":1},"o":{"x":0.167,"y":0},"t":70,"s":[{"i":[[-4.397,3.179],[10.946,0],[-3.57,-2.581]],"o":[[3.985,-2.881],[-9.888,0],[4.397,3.179]],"v":[[6.349,-98.761],[-0.446,-77.685],[-7.478,-98.761]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.61,"y":0},"t":84,"s":[{"i":[[-7.314,2.551],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.314,2.551]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":87,"s":[{"i":[[-7.314,2.551],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.314,2.551]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":104,"s":[{"i":[[-4.397,3.179],[10.946,0],[-3.57,-2.581]],"o":[[3.985,-2.881],[-9.888,0],[4.397,3.179]],"v":[[6.349,-98.761],[-0.446,-77.685],[-7.478,-98.761]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":118,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0.8,"y":0.15},"o":{"x":0.3,"y":0},"t":119,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":129,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-93.574],[-0.443,-72.498],[-11.742,-93.574]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.3,"y":0},"t":144,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0.95,"y":0.3},"o":{"x":0.9,"y":0},"t":146,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.05,"y":0.7},"t":156,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-93.574],[-0.443,-72.498],[-11.742,-93.574]],"c":true}]},{"i":{"x":0.58,"y":1},"o":{"x":0.42,"y":0},"t":175,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.88,"y":0},"t":187,"s":[{"i":[[-4.761,3.179],[11.853,0],[-3.866,-2.581]],"o":[[4.316,-2.881],[-10.708,0],[4.761,3.179]],"v":[[7.005,-103.574],[-0.353,-82.498],[-7.969,-103.574]],"c":true}]},{"i":{"x":0.39,"y":1},"o":{"x":0.37,"y":0},"t":197,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.531,-98.324],[-0.385,-77.248],[-11.685,-98.324]],"c":true}]},{"i":{"x":0.37,"y":1},"o":{"x":0.33,"y":0},"t":206,"s":[{"i":[[-7.064,-3.179],[17.586,0],[-5.736,2.581]],"o":[[6.403,2.881],[-15.887,0],[7.064,-3.179]],"v":[[10.645,54.262],[-0.271,33.186],[-11.57,54.262]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":212,"s":[{"i":[[-5.201,-3.179],[12.948,0],[-4.224,2.581]],"o":[[4.714,2.881],[-11.697,0],[5.201,-3.179]],"v":[[7.839,75.262],[-0.198,54.186],[-8.518,75.262]],"c":true}]},{"i":{"x":0.6,"y":0.28},"o":{"x":0.26,"y":0},"t":218,"s":[{"i":[[-5.201,-3.179],[12.948,0],[-4.224,2.581]],"o":[[4.714,2.881],[-11.697,0],[5.201,-3.179]],"v":[[7.839,75.262],[-0.198,54.186],[-8.518,75.262]],"c":true}]},{"i":{"x":0.36,"y":1},"o":{"x":0.193,"y":1},"t":231,"s":[{"i":[[-5.201,-3.179],[12.948,0],[-4.224,2.581]],"o":[[4.714,2.881],[-11.697,0],[5.201,-3.179]],"v":[[7.839,44.262],[-0.198,23.186],[-8.518,44.262]],"c":true}]},{"i":{"x":0.8,"y":0.47},"o":{"x":0.3,"y":0},"t":247,"s":[{"i":[[-7.064,-3.179],[17.586,0],[-5.736,2.581]],"o":[[6.403,2.881],[-15.887,0],[7.064,-3.179]],"v":[[10.562,66.762],[-0.355,45.686],[-11.654,66.762]],"c":true}]},{"i":{"x":0.36,"y":1},"o":{"x":0.17,"y":0},"t":259,"s":[{"i":[[-5.201,-3.179],[12.948,0],[-4.224,2.581]],"o":[[4.714,2.881],[-11.697,0],[5.201,-3.179]],"v":[[7.821,48.012],[-0.216,26.936],[-8.536,48.012]],"c":true}]},{"i":{"x":0.61,"y":1},"o":{"x":0.68,"y":0},"t":274,"s":[{"i":[[-7.509,-1.904],[17.586,0],[-5.736,2.581]],"o":[[6.403,2.881],[-15.887,0],[7.509,-1.904]],"v":[[10.624,61.012],[-0.293,39.936],[-11.592,61.012]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":284,"s":[{"i":[[-5.201,-3.179],[12.948,0],[-4.224,2.581]],"o":[[4.714,2.881],[-11.697,0],[5.201,-3.179]],"v":[[7.821,58.887],[-0.216,37.811],[-8.536,58.887]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":298,"s":[{"i":[[-7.509,-1.904],[17.586,0],[-5.736,2.581]],"o":[[6.403,2.881],[-15.887,0],[7.509,-1.904]],"v":[[10.624,61.012],[-0.293,39.936],[-11.592,61.012]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":318,"s":[{"i":[[-5.201,-3.179],[12.948,0],[-4.224,2.581]],"o":[[4.714,2.881],[-11.697,0],[5.201,-3.179]],"v":[[7.821,58.887],[-0.216,37.811],[-8.536,58.887]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.44,"y":0},"t":332,"s":[{"i":[[-7.509,-1.904],[17.586,0],[-5.736,2.581]],"o":[[6.403,2.881],[-15.887,0],[7.509,-1.904]],"v":[[10.624,61.012],[-0.293,39.936],[-11.592,61.012]],"c":true}]},{"t":379,"s":[{"i":[[-5.755,-1.904],[13.479,0],[-4.396,2.581]],"o":[[4.907,2.881],[-12.176,0],[5.755,-1.904]],"v":[[8.138,12.762],[-0.229,-8.314],[-8.889,12.762]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.228,-164.922],"ix":2},"a":{"a":0,"k":[-0.228,-164.922],"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":3,"mn":"ADBE Vector Group","hd":false}],"ip":38,"op":380,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":549,"s":[100]},{"t":555,"s":[0]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.426],"y":[0.515]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[420.5]},{"i":{"x":[0.404],"y":[1]},"o":{"x":[0.654],"y":[-0.5]},"t":18,"s":[414.5]},{"t":38,"s":[429.5]}],"ix":3},"y":{"a":0,"k":370.5,"ix":4}},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.48,"y":0.2},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.1,"y":1},"o":{"x":0.44,"y":0},"t":18,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":24,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.643,-21.893],[-35.357,-21.893]],"c":false}]},{"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-37]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.52],"y":[0.96]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[48]},{"t":18,"s":[64]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","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":1,"k":[{"i":{"x":0.51,"y":1},"o":{"x":0.88,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":24,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.643,-21.893],[-35.357,-21.893]],"c":false}]},{"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-7.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.52],"y":[0.96]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[48]},{"t":18,"s":[64]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":1,"k":[{"t":0,"s":[0],"h":1},{"t":12,"s":[100],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","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":1,"k":[{"i":{"x":0.51,"y":1},"o":{"x":0.88,"y":0},"t":0,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.52,-34.949],[-0.396,-13.873],[-11.695,-34.949]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":24,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.531,-85.949],[-0.385,-64.873],[-11.685,-85.949]],"c":true}]},{"t":38,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-100.574],[-0.443,-79.498],[-11.742,-100.574]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.266,-177.656],"ix":2},"a":{"a":0,"k":[-0.266,-177.656],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":0,"s":[0],"h":1},{"t":12,"s":[100],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bottom Rounding","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":38,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".surfaceBack","cl":"surfaceBack","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,350.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[841,701],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Rectangle 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.976,0.635,0.725,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.976,0.635,0.725,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":380,"st":-145,"ct":1,"bm":0}]},{"id":"comp_2","nm":"Part03_Demonstration_Back_FO_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Pill Snap Release (RHS)","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":359,"s":[245]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":369,"s":[206]},{"i":{"x":[0.74],"y":[0.978]},"o":{"x":[1],"y":[0]},"t":434,"s":[206]},{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.686],"y":[-2.138]},"t":483,"s":[-14]},{"t":543,"s":[-7.7]}],"ix":3},"y":{"a":0,"k":370.5,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":637,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"Center to Right Side","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.74],"y":[0]},"t":193,"s":[-39]},{"t":254,"s":[564]}],"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":637,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Pill Snap Release (LHS)","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":99,"s":[-36]},{"t":109,"s":[0]}],"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":637,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","parent":5,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":483,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":489,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":1177,"s":[100]},{"t":1183,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.166,0,0],"ix":2,"l":2},"a":{"a":0,"k":[2,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":1,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":1,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[673.166,370.5],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[672.158,370.5],"t":360,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[667.942,370.5],"t":361,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[658.842,370.5],"t":362,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[649.236,370.5],"t":363,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[642.919,370.5],"t":364,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[639.004,370.5],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[636.575,370.5],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[635.131,370.5],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[634.387,370.5],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[633.887,370.5],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[633.368,370.5],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[633.001,370.5],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[632.557,370.5],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[632.033,370.5],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[631.425,370.5],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[630.73,370.5],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[629.942,370.5],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[629.057,370.5],"t":446,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[628.07,370.5],"t":447,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[626.974,370.5],"t":448,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[625.765,370.5],"t":449,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[624.434,370.5],"t":450,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[622.974,370.5],"t":451,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[621.377,370.5],"t":452,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[619.633,370.5],"t":453,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[617.733,370.5],"t":454,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[615.665,370.5],"t":455,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[613.415,370.5],"t":456,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[610.969,370.5],"t":457,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[608.31,370.5],"t":458,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[605.419,370.5],"t":459,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[602.274,370.5],"t":460,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[598.849,370.5],"t":461,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[595.114,370.5],"t":462,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[591.034,370.5],"t":463,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[586.567,370.5],"t":464,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[581.661,370.5],"t":465,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[576.254,370.5],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[570.269,370.5],"t":467,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[563.609,370.5],"t":468,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[556.15,370.5],"t":469,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[547.734,370.5],"t":470,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[538.155,370.5],"t":471,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[527.145,370.5],"t":472,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[514.384,370.5],"t":473,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[499.564,370.5],"t":474,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[482.7,370.5],"t":475,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[464.852,370.5],"t":476,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[448.475,370.5],"t":477,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[435.682,370.5],"t":478,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[426.717,370.5],"t":479,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.802,370.5],"t":480,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[417.114,370.5],"t":481,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[415.041,370.5],"t":482,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[414.166,370.5],"t":483,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[413.842,370.5],"t":484,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[413.523,370.5],"t":485,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[413.21,370.5],"t":486,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[412.903,370.5],"t":487,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[412.603,370.5],"t":488,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[412.31,370.5],"t":489,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[412.025,370.5],"t":490,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[411.748,370.5],"t":491,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[411.481,370.5],"t":492,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[411.223,370.5],"t":493,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[410.977,370.5],"t":494,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[410.743,370.5],"t":495,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[410.522,370.5],"t":496,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[410.126,370.5],"t":498,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[409.805,370.5],"t":500,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[410.043,370.5],"t":509,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[410.367,370.5],"t":510,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[410.781,370.5],"t":511,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[411.288,370.5],"t":512,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[411.88,370.5],"t":513,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[412.539,370.5],"t":514,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[413.235,370.5],"t":515,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[413.936,370.5],"t":516,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[414.614,370.5],"t":517,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[415.253,370.5],"t":518,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[415.842,370.5],"t":519,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[416.379,370.5],"t":520,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[416.865,370.5],"t":521,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[417.304,370.5],"t":522,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[417.698,370.5],"t":523,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[418.052,370.5],"t":524,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[418.37,370.5],"t":525,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[418.655,370.5],"t":526,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[418.91,370.5],"t":527,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[419.138,370.5],"t":528,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[419.522,370.5],"t":530,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[419.824,370.5],"t":532,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.23,370.5],"t":536,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":483,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"t":533,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[68,-21.75],[-64,-21.75]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":52,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"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":"Right","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,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":64,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":0,"k":0,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":483,"op":607,"st":483,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":3,"nm":"REPOSITION","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":422,"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":365,"op":484,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","parent":5,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":161,"s":[100]},{"t":172,"s":[100]}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.28,"y":1},"o":{"x":0.65,"y":0},"t":365,"s":[-1.834,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.12,"y":1},"o":{"x":0.44,"y":0},"t":395,"s":[106.166,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.809,"y":0.809},"o":{"x":0.66,"y":0.66},"t":444,"s":[6.166,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":458,"s":[6.166,0,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":1,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[-1.834,0],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.735,0],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.419,0],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.855,0],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":369,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1.197,0],"t":370,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[2.806,0],"t":371,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[4.917,0],"t":372,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[7.638,0],"t":373,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[11.142,0],"t":374,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[15.664,0],"t":375,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[21.518,0],"t":376,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[29.086,0],"t":377,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[38.618,0],"t":378,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[49.734,0],"t":379,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[60.911,0],"t":380,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[70.632,0],"t":381,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[78.47,0],"t":382,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[84.66,0],"t":383,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[89.544,0],"t":384,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[93.428,0],"t":385,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[96.532,0],"t":386,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[99.012,0],"t":387,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[100.995,0],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[102.568,0],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[103.79,0],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[104.715,0],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[105.385,0],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[105.833,0],"t":393,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[106.086,0],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[106.091,0],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[105.852,0],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[105.424,0],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[104.775,0],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[103.868,0],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[102.653,0],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[101.065,0],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[99.033,0],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[96.463,0],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[93.225,0],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[89.19,0],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[84.252,0],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[78.418,0],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[71.927,0],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[65.197,0],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[58.708,0],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[52.764,0],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[47.466,0],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[42.796,0],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[38.694,0],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[35.074,0],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[31.866,0],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[29.012,0],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[26.467,0],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[24.19,0],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[22.145,0],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[20.305,0],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[18.645,0],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[17.146,0],"t":424,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[15.792,0],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.569,0],"t":426,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.467,0],"t":427,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[12.471,0],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[11.573,0],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[10.765,0],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[10.04,0],"t":431,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[9.393,0],"t":432,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[8.819,0],"t":433,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[8.314,0],"t":434,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[7.871,0],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[7.487,0],"t":436,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[7.158,0],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[6.882,0],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[6.654,0],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[6.473,0],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[6.336,0],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[6.24,0],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[6.185,0],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[6.166,0],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.25,-21.75]],"c":false}],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.376,-21.75]],"c":false}],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.79,-21.75]],"c":false}],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-9.556,-21.75]],"c":false}],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-10.771,-21.75]],"c":false}],"t":369,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-12.58,-21.75]],"c":false}],"t":370,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-15.219,-21.75]],"c":false}],"t":371,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-19.13,-21.75]],"c":false}],"t":372,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-25.275,-21.75]],"c":false}],"t":373,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-36.314,-21.75]],"c":false}],"t":374,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-52.308,-21.75]],"c":false}],"t":375,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.456,-21.75]],"c":false}],"t":376,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}],"t":377,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-23.074]],"c":false}],"t":378,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-26.642]],"c":false}],"t":379,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-30.646]],"c":false}],"t":380,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-34.048]],"c":false}],"t":381,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-36.752]],"c":false}],"t":382,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.877]],"c":false}],"t":383,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.542]],"c":false}],"t":384,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.84]],"c":false}],"t":385,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.838]],"c":false}],"t":386,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.587]],"c":false}],"t":387,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.126]],"c":false}],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.485]],"c":false}],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.686]],"c":false}],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.727]],"c":false}],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.655]],"c":false}],"t":395,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.528]],"c":false}],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.338]],"c":false}],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.078]],"c":false}],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.735]],"c":false}],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.295]],"c":false}],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.741]],"c":false}],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.046]],"c":false}],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.174]],"c":false}],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.071]],"c":false}],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.652]],"c":false}],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-36.765]],"c":false}],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-34.107]],"c":false}],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-30.004]],"c":false}],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-24.491]],"c":false}],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-25.562]],"c":false}],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-32.006]],"c":false}],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-35.928]],"c":false}],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.416]],"c":false}],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.159]],"c":false}],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.444]],"c":false}],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.413]],"c":false}],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.15]],"c":false}],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.707]],"c":false}],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.12]],"c":false}],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.414]],"c":false}],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.608]],"c":false}],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.716]],"c":false}],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.727]],"c":false}],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.655]],"c":false}],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.528]],"c":false}],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.338]],"c":false}],"t":431,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.078]],"c":false}],"t":432,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.735]],"c":false}],"t":433,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.295]],"c":false}],"t":434,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.741]],"c":false}],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.046]],"c":false}],"t":436,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.174]],"c":false}],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.071]],"c":false}],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.652]],"c":false}],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-36.765]],"c":false}],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-34.107]],"c":false}],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-30.004]],"c":false}],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-24.491]],"c":false}],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-25.562]],"c":false}],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-32.006]],"c":false}],"t":446,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-35.928]],"c":false}],"t":447,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.416]],"c":false}],"t":448,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.159]],"c":false}],"t":449,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.444]],"c":false}],"t":450,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.413]],"c":false}],"t":451,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.15]],"c":false}],"t":452,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.707]],"c":false}],"t":453,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.12]],"c":false}],"t":454,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.414]],"c":false}],"t":455,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.608]],"c":false}],"t":456,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.716]],"c":false}],"t":457,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}],"t":458,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.24,-21.75],[-59.565,-44.728]],"c":false}],"t":459,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.209,-21.75],[-59.374,-44.656]],"c":false}],"t":460,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.153,-21.75],[-59.028,-44.526]],"c":false}],"t":461,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.066,-21.75],[-58.496,-44.327]],"c":false}],"t":462,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.943,-21.75],[-57.738,-44.043]],"c":false}],"t":463,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.773,-21.75],[-56.697,-43.653]],"c":false}],"t":464,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.544,-21.75],[-55.293,-43.127]],"c":false}],"t":465,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.236,-21.75],[-53.402,-42.418]],"c":false}],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.816,-21.75],[-50.823,-41.452]],"c":false}],"t":467,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.227,-21.75],[-47.209,-40.097]],"c":false}],"t":468,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-5.364,-21.75],[-41.912,-38.112]],"c":false}],"t":469,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.063,-21.75],[-33.927,-35.12]],"c":false}],"t":470,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.437,-21.75],[-23.948,-31.38]],"c":false}],"t":471,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.136,-21.75],[-15.963,-28.388]],"c":false}],"t":472,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.273,-21.75],[-10.666,-26.403]],"c":false}],"t":473,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.316,-21.75],[-7.052,-25.048]],"c":false}],"t":474,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.736,-21.75],[-4.473,-24.082]],"c":false}],"t":475,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.044,-21.75],[-2.582,-23.373]],"c":false}],"t":476,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.273,-21.75],[-1.178,-22.847]],"c":false}],"t":477,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.443,-21.75],[-0.137,-22.457]],"c":false}],"t":478,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.566,-21.75],[0.621,-22.173]],"c":false}],"t":479,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.653,-21.75],[1.153,-21.974]],"c":false}],"t":480,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.709,-21.75],[1.499,-21.844]],"c":false}],"t":481,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.74,-21.75],[1.69,-21.772]],"c":false}],"t":482,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.75,-21.75],[1.75,-21.75]],"c":false}],"t":483,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":444,"s":[100]},{"t":483,"s":[30]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[27],"t":349,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.046],"t":350,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.193],"t":351,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.452],"t":352,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.84],"t":353,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.374],"t":354,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[29.079],"t":355,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[29.984],"t":356,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[31.129],"t":357,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.563],"t":358,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[34.353],"t":359,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.587],"t":360,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[39.37],"t":361,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[42.799],"t":362,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[46.822],"t":363,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.965],"t":364,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.371],"t":365,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.571],"t":366,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.685],"t":367,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58],"t":368,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.945],"t":448,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.911],"t":449,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.867],"t":450,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.811],"t":451,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.743],"t":452,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.66],"t":453,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.56],"t":454,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.44],"t":455,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.297],"t":456,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.126],"t":457,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.923],"t":458,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.681],"t":459,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.392],"t":460,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.052],"t":461,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.66],"t":462,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.226],"t":463,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.774],"t":464,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.34],"t":465,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.948],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.608],"t":467,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.319],"t":468,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.077],"t":469,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.874],"t":470,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.703],"t":471,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.56],"t":472,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.44],"t":473,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.34],"t":474,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.257],"t":475,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.189],"t":476,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.133],"t":477,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.089],"t":478,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.055],"t":479,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.003],"t":482,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.63,"y":1},"o":{"x":1,"y":0},"t":365,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.25,-21.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.18,"y":0},"t":377,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.67,"y":0},"t":391,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":393,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":410,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":424,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":427,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":444,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}]},{"i":{"x":0.24,"y":1},"o":{"x":0.76,"y":0},"t":458,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"t":483,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.75,-21.75],[1.75,-21.75]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":444,"s":[100]},{"t":483,"s":[30]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.68],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":349,"s":[27]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.307],"y":[0]},"t":368,"s":[58]},{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":444,"s":[58]},{"t":483,"s":[52]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.63,"y":1},"o":{"x":1,"y":0},"t":365,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.895,-50.571],[0.709,-71.669],[11.321,-50.571]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.18,"y":0},"t":377,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.916,2.689],[0.688,-18.41],[11.3,2.689]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"t":391,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":393,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":410,"s":[{"i":[[6.319,0],[-13.595,0],[4.434,2.581]],"o":[[-4.95,2.881],[12.282,0],[-6.319,0]],"v":[[-8.484,18.867],[0.487,-2.232],[8.69,18.867]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":424,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":427,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":444,"s":[{"i":[[6.319,0],[-13.595,0],[4.434,2.581]],"o":[[-4.95,2.881],[12.282,0],[-6.319,0]],"v":[[-8.484,18.867],[0.487,-2.232],[8.69,18.867]],"c":true}]},{"t":458,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.49,"y":1},"o":{"x":0.76,"y":0},"t":444,"s":[0,-90],"to":[0,0],"ti":[0,0]},{"t":483,"s":[0,-24]}],"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":1,"k":[{"t":471,"s":[100],"h":1},{"t":472,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Round Bottom","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":365,"op":484,"st":161,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-385,"s":[0]},{"t":-375,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"k":[{"s":[0],"t":260,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.049],"t":261,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.217],"t":262,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.549],"t":263,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[1.125],"t":264,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.08],"t":265,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.65],"t":266,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[5.983],"t":267,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[8.42],"t":268,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[10.26],"t":269,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[11.561],"t":270,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[12.504],"t":271,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.205],"t":272,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.735],"t":273,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.136],"t":274,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.439],"t":275,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.662],"t":276,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.82],"t":277,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.924],"t":278,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.982],"t":279,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15],"t":280,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.993],"t":311,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.983],"t":312,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.969],"t":313,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.95],"t":314,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.927],"t":315,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.898],"t":316,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.864],"t":317,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.823],"t":318,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.776],"t":319,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.722],"t":320,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.66],"t":321,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.589],"t":322,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.509],"t":323,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.418],"t":324,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.315],"t":325,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.199],"t":326,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.992],"t":327,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.604],"t":328,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.014],"t":329,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[12.195],"t":330,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[11.118],"t":331,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[9.743],"t":332,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[8.024],"t":333,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[5.9],"t":334,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.298],"t":335,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.122],"t":336,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.744],"t":337,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-8.44],"t":338,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-14.148],"t":339,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.15],"t":340,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-29.91],"t":341,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-41.097],"t":342,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.23],"t":343,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-71.313],"t":344,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-86.247],"t":345,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-98.076],"t":346,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-106.999],"t":347,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-113.761],"t":348,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-118.959],"t":349,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.002],"t":350,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-126.173],"t":351,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-128.666],"t":352,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-130.616],"t":353,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-132.118],"t":354,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-133.247],"t":355,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.06],"t":356,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.601],"t":357,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.904],"t":358,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue X Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":309,"s":[0]},{"t":350,"s":[-7]}],"ix":1}}]},{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":2,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":7,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[0,0],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.049,0],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.217,0],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.549,0],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1.125,0],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[2.08,0],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[3.65,0],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[5.983,0],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[8.42,0],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[10.26,0],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[11.561,0],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[12.504,0],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.205,0],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.735,0],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.136,0],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.439,0],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.662,0],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.82,0],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.924,0],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.982,0],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[15,0],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.993,0],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.983,0],"t":312,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.969,0],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.95,0],"t":314,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.927,0],"t":315,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.898,0],"t":316,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.864,0],"t":317,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.823,0],"t":318,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.776,0],"t":319,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.722,0],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.66,0],"t":321,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.589,0],"t":322,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.509,0],"t":323,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.418,0],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.315,0],"t":325,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.199,0],"t":326,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.992,0],"t":327,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.604,0],"t":328,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.014,0],"t":329,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[12.195,0],"t":330,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[11.118,0],"t":331,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[9.743,0],"t":332,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[8.024,0],"t":333,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[5.9,0],"t":334,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[3.298,0],"t":335,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.122,0],"t":336,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.744,0],"t":337,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.44,0],"t":338,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.148,0],"t":339,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-21.15,0],"t":340,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-29.91,0],"t":341,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-41.097,0],"t":342,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-55.23,0],"t":343,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-71.313,0],"t":344,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-86.247,0],"t":345,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-98.076,0],"t":346,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-106.999,0],"t":347,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-113.761,0],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-118.959,0],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-123.002,0],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-126.173,0],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-128.666,0],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-130.616,0],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-132.118,0],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-133.247,0],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-134.06,0],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-134.601,0],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-134.904,0],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":260,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.75],[21.75,-21.641],[21.75,-21.641]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":284,"s":[{"i":[[0,0],[11.75,0],[0,0]],"o":[[0,0],[-11.583,0],[0,0]],"v":[[46.75,-21.5],[21.5,-21.5],[-3.25,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":304,"s":[{"i":[[0,0],[5.127,0],[0,0]],"o":[[0,0],[-4.962,0],[0,0]],"v":[[36.75,-21.5],[21.5,-21.5],[6.75,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":309,"s":[{"i":[[0,0],[5.127,0],[0,0]],"o":[[0,0],[-4.962,0],[0,0]],"v":[[36.75,-21.5],[21.5,-21.5],[6.75,-21.5]],"c":false}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":326,"s":[{"i":[[0,0],[5.127,0],[0,0]],"o":[[0,0],[-4.962,0],[0,0]],"v":[[36.75,-23.25],[21.5,-21.25],[6.75,-23.25]],"c":false}]},{"t":350,"s":[{"i":[[0,0],[15.605,0],[9.769,4]],"o":[[-9.882,4],[-15.444,0],[0,0]],"v":[[66.75,-33],[21.5,-21],[-23.25,-33]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":165,"s":[54]},{"i":{"x":[0.149],"y":[1]},"o":{"x":[0.529],"y":[0]},"t":260,"s":[58]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":280,"s":[27]},{"i":{"x":[0.68],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":349,"s":[27]},{"t":368,"s":[58],"h":1}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":351,"s":[0]},{"t":365,"s":[49.75]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":351,"s":[100]},{"t":365,"s":[50.25]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-241,"s":[0]},{"t":-223,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":254,"op":367,"st":-386,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Right Matte","td":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":272,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":284,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":296,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":319,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":341,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":359,"s":[95]},{"t":377,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":272,"s":[970.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":1},"t":296,"s":[1012.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":326,"s":[1012.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":359,"s":[965.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":361,"s":[965.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":379,"s":[1102.719,370.5,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":326,"s":[69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":359,"s":[100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":361,"s":[100,100,100]},{"t":379,"s":[69,69,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":272,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-228.768,0.408],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":296,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":326,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":359,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":361,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":367,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"t":379,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.129411771894,0.458823561668,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":272,"op":637,"st":302,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Right Pill to Arc | Elevation","parent":2,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":15,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"k":[{"s":[0],"t":260,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.049],"t":261,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.217],"t":262,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.549],"t":263,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[1.125],"t":264,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.08],"t":265,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.65],"t":266,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[5.983],"t":267,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[8.42],"t":268,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[10.26],"t":269,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[11.561],"t":270,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[12.504],"t":271,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.205],"t":272,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.735],"t":273,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.136],"t":274,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.439],"t":275,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.662],"t":276,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.82],"t":277,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.924],"t":278,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.982],"t":279,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15],"t":280,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.993],"t":311,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.983],"t":312,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.969],"t":313,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.95],"t":314,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.927],"t":315,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.898],"t":316,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.864],"t":317,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.823],"t":318,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.776],"t":319,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.722],"t":320,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.66],"t":321,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.589],"t":322,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.509],"t":323,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.418],"t":324,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.315],"t":325,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.199],"t":326,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.992],"t":327,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.604],"t":328,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.014],"t":329,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[12.195],"t":330,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[11.118],"t":331,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[9.743],"t":332,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[8.024],"t":333,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[5.9],"t":334,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.298],"t":335,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.122],"t":336,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.744],"t":337,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-8.44],"t":338,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-14.148],"t":339,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.15],"t":340,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-29.91],"t":341,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-41.097],"t":342,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.23],"t":343,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-71.313],"t":344,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-86.247],"t":345,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-98.076],"t":346,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-106.999],"t":347,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-113.761],"t":348,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-118.959],"t":349,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.002],"t":350,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-126.173],"t":351,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-128.666],"t":352,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-130.616],"t":353,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-132.118],"t":354,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-133.247],"t":355,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.06],"t":356,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.601],"t":357,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.904],"t":358,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,-2,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue X Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":309,"s":[0]},{"t":350,"s":[-7]}],"ix":1}}]},{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":2,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":9,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[0,0],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.049,0],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.217,0],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.549,0],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1.125,0],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[2.08,0],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[3.65,0],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[5.983,0],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[8.42,0],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[10.26,0],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[11.561,0],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[12.504,0],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.205,0],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.735,0],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.136,0],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.439,0],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.662,0],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.82,0],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.924,0],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.982,0],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[15,0],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.993,0],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.983,0],"t":312,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.969,0],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.95,0],"t":314,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.927,0],"t":315,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.898,0],"t":316,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.864,0],"t":317,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.823,0],"t":318,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.776,0],"t":319,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.722,0],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.66,0],"t":321,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.589,0],"t":322,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.509,0],"t":323,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.418,0],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.315,0],"t":325,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.199,0],"t":326,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.992,0],"t":327,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.604,0],"t":328,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.014,0],"t":329,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[12.195,0],"t":330,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[11.118,0],"t":331,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[9.743,0],"t":332,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[8.024,0],"t":333,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[5.9,0],"t":334,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[3.298,0],"t":335,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.122,0],"t":336,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.744,0],"t":337,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.44,0],"t":338,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.148,0],"t":339,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-21.15,0],"t":340,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-29.91,0],"t":341,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-41.097,0],"t":342,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-55.23,0],"t":343,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-71.313,0],"t":344,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-86.247,0],"t":345,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-98.076,0],"t":346,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-106.999,0],"t":347,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-113.761,0],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-118.959,0],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-123.002,0],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-126.173,0],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-128.666,0],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-130.616,0],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-132.118,0],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-133.247,0],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-134.06,0],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-134.601,0],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-134.904,0],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]},{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":3,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":8,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":1,"ix":3}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":260,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.75],[21.75,-21.641],[21.75,-21.641]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":284,"s":[{"i":[[0,0],[11.75,0],[0,0]],"o":[[0,0],[-11.583,0],[0,0]],"v":[[46.75,-21.5],[21.5,-21.5],[-3.25,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":304,"s":[{"i":[[0,0],[5.127,0],[0,0]],"o":[[0,0],[-4.962,0],[0,0]],"v":[[36.75,-21.5],[21.5,-21.5],[6.75,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":309,"s":[{"i":[[0,0],[5.127,0],[0,0]],"o":[[0,0],[-4.962,0],[0,0]],"v":[[36.75,-21.5],[21.5,-21.5],[6.75,-21.5]],"c":false}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":326,"s":[{"i":[[0,0],[5.127,0],[0,0]],"o":[[0,0],[-4.962,0],[0,0]],"v":[[36.75,-23.25],[21.5,-21.25],[6.75,-23.25]],"c":false}]},{"t":350,"s":[{"i":[[0,0],[15.605,0],[9.769,4]],"o":[[-9.882,4],[-15.444,0],[0,0]],"v":[[66.75,-33],[21.5,-21],[-23.25,-33]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":165,"s":[54]},{"i":{"x":[0.149],"y":[1]},"o":{"x":[0.529],"y":[0]},"t":260,"s":[58]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":280,"s":[27]},{"i":{"x":[0.68],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":349,"s":[27]},{"t":368,"s":[58],"h":1}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":351,"s":[0]},{"t":365,"s":[49.75]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":351,"s":[100]},{"t":365,"s":[50.25]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":254,"op":367,"st":-386,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-99,"s":[100]},{"t":-88,"s":[100]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.28,"y":1},"o":{"x":0.65,"y":0},"t":105,"s":[8,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.12,"y":1},"o":{"x":0.44,"y":0},"t":135,"s":[-99.42,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.12,"y":0.12},"o":{"x":0.403,"y":0.403},"t":193,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.59,"y":1},"o":{"x":0.25,"y":0},"t":198,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":223,"s":[8,0,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.25,-21.75]],"c":false}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.376,-21.75]],"c":false}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.79,-21.75]],"c":false}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-9.556,-21.75]],"c":false}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-10.771,-21.75]],"c":false}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-12.58,-21.75]],"c":false}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-15.219,-21.75]],"c":false}],"t":111,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-19.13,-21.75]],"c":false}],"t":112,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-25.275,-21.75]],"c":false}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-36.314,-21.75]],"c":false}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-52.308,-21.75]],"c":false}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.456,-21.75]],"c":false}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-23.074]],"c":false}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-26.642]],"c":false}],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-30.646]],"c":false}],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-34.048]],"c":false}],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-36.752]],"c":false}],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.877]],"c":false}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.542]],"c":false}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.84]],"c":false}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.838]],"c":false}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.587]],"c":false}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.126]],"c":false}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.485]],"c":false}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.686]],"c":false}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.727]],"c":false}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.655]],"c":false}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.528]],"c":false}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.338]],"c":false}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.078]],"c":false}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.735]],"c":false}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.295]],"c":false}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.741]],"c":false}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.046]],"c":false}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.174]],"c":false}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.071]],"c":false}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.652]],"c":false}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-36.765]],"c":false}],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-34.107]],"c":false}],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-30.004]],"c":false}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-24.491]],"c":false}],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-25.562]],"c":false}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-32.006]],"c":false}],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-35.928]],"c":false}],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.416]],"c":false}],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.159]],"c":false}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.444]],"c":false}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.413]],"c":false}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.15]],"c":false}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.707]],"c":false}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.12]],"c":false}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.414]],"c":false}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.608]],"c":false}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.716]],"c":false}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.727]],"c":false}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.655]],"c":false}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.528]],"c":false}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.338]],"c":false}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.078]],"c":false}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.735]],"c":false}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.295]],"c":false}],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.741]],"c":false}],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.046]],"c":false}],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.174]],"c":false}],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.071]],"c":false}],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.652]],"c":false}],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-36.765]],"c":false}],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-34.107]],"c":false}],"t":181,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-30.004]],"c":false}],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-24.491]],"c":false}],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-25.562]],"c":false}],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-32.006]],"c":false}],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-35.928]],"c":false}],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.416]],"c":false}],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.159]],"c":false}],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.444]],"c":false}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.413]],"c":false}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.15]],"c":false}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.707]],"c":false}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.12]],"c":false}],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.414]],"c":false}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.608]],"c":false}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.716]],"c":false}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.734]],"c":false}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.682]],"c":false}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.592]],"c":false}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.459]],"c":false}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.278]],"c":false}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.041]],"c":false}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.742]],"c":false}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.369]],"c":false}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.912]],"c":false}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.353]],"c":false}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.671]],"c":false}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.837]],"c":false}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-39.808]],"c":false}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.527]],"c":false}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-36.907]],"c":false}],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-34.83]],"c":false}],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-32.199]],"c":false}],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-29.196]],"c":false}],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-26.497]],"c":false}],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-24.564]],"c":false}],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-23.307]],"c":false}],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-22.52]],"c":false}],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-22.056]],"c":false}],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.819]],"c":false}],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}],"t":223,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.596,-21.75]],"c":false}],"t":224,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.505,-21.75]],"c":false}],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.344,-21.75]],"c":false}],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.104,-21.75]],"c":false}],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.774,-21.75]],"c":false}],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.34,-21.75]],"c":false}],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.783,-21.75]],"c":false}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.082,-21.75]],"c":false}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.205,-21.75]],"c":false}],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.113,-21.75]],"c":false}],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-53.746,-21.75]],"c":false}],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-52.019,-21.75]],"c":false}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-49.803,-21.75]],"c":false}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-46.886,-21.75]],"c":false}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-42.931,-21.75]],"c":false}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-37.508,-21.75]],"c":false}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-30.863,-21.75]],"c":false}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-24.808,-21.75]],"c":false}],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-20.358,-21.75]],"c":false}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-17.189,-21.75]],"c":false}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-14.87,-21.75]],"c":false}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-13.128,-21.75]],"c":false}],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-11.796,-21.75]],"c":false}],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-10.771,-21.75]],"c":false}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-9.982,-21.75]],"c":false}],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-9.381,-21.75]],"c":false}],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.934,-21.75]],"c":false}],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.615,-21.75]],"c":false}],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.405,-21.75]],"c":false}],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.287,-21.75]],"c":false}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.25,-21.75]],"c":false}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[27],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.046],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.193],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.452],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.84],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.374],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[29.079],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[29.984],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[31.129],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.563],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[34.353],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.587],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[39.37],"t":101,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[42.799],"t":102,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[46.822],"t":103,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.965],"t":104,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.371],"t":105,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.571],"t":106,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.685],"t":107,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58],"t":108,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","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":1,"k":[{"i":{"x":0.63,"y":1},"o":{"x":1,"y":0},"t":105,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.25,-21.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.18,"y":0},"t":117,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.67,"y":0},"t":131,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":133,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":150,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":164,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":167,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":184,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":198,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0.29,"y":1},"o":{"x":0.8,"y":0},"t":223,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}]},{"t":254,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.25,-21.75]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.68],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":89,"s":[27]},{"t":108,"s":[58]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","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":1,"k":[{"i":{"x":0.63,"y":1},"o":{"x":1,"y":0},"t":105,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.895,-50.571],[0.709,-71.669],[11.321,-50.571]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.18,"y":0},"t":117,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.916,2.689],[0.688,-18.41],[11.3,2.689]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"t":131,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":133,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":150,"s":[{"i":[[6.319,0],[-13.595,0],[4.434,2.581]],"o":[[-4.95,2.881],[12.282,0],[-6.319,0]],"v":[[-8.484,18.867],[0.487,-2.232],[8.69,18.867]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":164,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":167,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":184,"s":[{"i":[[6.319,0],[-13.595,0],[4.434,2.581]],"o":[[-4.95,2.881],[12.282,0],[-6.319,0]],"v":[[-8.484,18.867],[0.487,-2.232],[8.69,18.867]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":198,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"t":223,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-11.142,-39.633],[0.462,-60.732],[11.073,-39.633]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-90],"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":"Round Bottom","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":105,"op":254,"st":-99,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".onSurfaceBack","cl":"onSurfaceBack","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":272,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":284,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":296,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":319,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":341,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":359,"s":[95]},{"t":377,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":272,"s":[970.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":1},"t":296,"s":[1012.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":326,"s":[1012.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":359,"s":[965.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":361,"s":[965.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":379,"s":[1102.719,370.5,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":326,"s":[69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":359,"s":[100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":361,"s":[100,100,100]},{"t":379,"s":[69,69,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":272,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-228.768,0.408],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":296,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":326,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":359,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":361,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":367,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"t":379,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":272,"op":637,"st":302,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-609,"s":[0]},{"t":-599,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"k":[{"s":[-138.046],"t":1,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-138.202],"t":2,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-138.513],"t":3,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-139.05],"t":4,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-139.941],"t":5,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-141.406],"t":6,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-143.584],"t":7,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-145.858],"t":8,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-147.576],"t":9,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-148.791],"t":10,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-149.671],"t":11,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.325],"t":12,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.819],"t":13,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.194],"t":14,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.476],"t":15,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.684],"t":16,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.832],"t":17,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.983],"t":19,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.864],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.722],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.589],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.509],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.418],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.315],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.199],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.991],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.6],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.003],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-149.176],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-148.086],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-146.696],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-144.957],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-142.808],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-140.175],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-136.961],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-133.049],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-128.294],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-122.514],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.421],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-106.544],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.205],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-80.877],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-64.572],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.431],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-37.439],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-28.391],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.536],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-16.265],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-12.165],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-8.95],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-6.422],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-4.446],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-2.922],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-1.777],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.953],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.405],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.097],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue X Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":49,"s":[0]},{"t":90,"s":[7]}],"ix":1}}]},{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":2,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":12,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[-138.046,0],"t":1,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-138.202,0],"t":2,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-138.513,0],"t":3,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-139.05,0],"t":4,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-139.941,0],"t":5,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-141.406,0],"t":6,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-143.584,0],"t":7,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-145.858,0],"t":8,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-147.576,0],"t":9,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-148.791,0],"t":10,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-149.671,0],"t":11,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-150.325,0],"t":12,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-150.819,0],"t":13,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.194,0],"t":14,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.476,0],"t":15,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.684,0],"t":16,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.832,0],"t":17,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.983,0],"t":19,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.864,0],"t":57,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.722,0],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.589,0],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.509,0],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.418,0],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.315,0],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.199,0],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-150.991,0],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-150.6,0],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-150.003,0],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-149.176,0],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-148.086,0],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-146.696,0],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-144.957,0],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-142.808,0],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-140.175,0],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-136.961,0],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-133.049,0],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-128.294,0],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-122.514,0],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-115.421,0],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-106.544,0],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-95.205,0],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-80.877,0],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-64.572,0],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-49.431,0],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-37.439,0],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-28.391,0],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-21.536,0],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.265,0],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.165,0],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.95,0],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.422,0],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.446,0],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.922,0],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.777,0],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.953,0],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.405,0],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.097,0],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":24,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-3.25,-21.5],[22,-21.5],[46.75,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[-5.127,0],[0,0]],"o":[[0,0],[4.962,0],[0,0]],"v":[[6.75,-21.5],[22,-21.5],[36.75,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":49,"s":[{"i":[[0,0],[-5.127,0],[0,0]],"o":[[0,0],[4.962,0],[0,0]],"v":[[6.75,-21.5],[22,-21.5],[36.75,-21.5]],"c":false}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":66,"s":[{"i":[[0,0],[-5.127,0],[0,0]],"o":[[0,0],[4.962,0],[0,0]],"v":[[6.75,-19.5],[22,-21.5],[36.75,-19.5]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-15.605,0],[-9.769,-4]],"o":[[9.882,-4],[15.444,0],[0,0]],"v":[[-23.25,-9.5],[22,-21.5],[66.75,-9.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.418],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.149],"y":[1]},"o":{"x":[0.529],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.68],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":89,"s":[27]},{"t":108,"s":[58],"h":1}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":91,"s":[0]},{"t":105,"s":[49.75]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":91,"s":[100]},{"t":105,"s":[50.25]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":105,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Left Matte","td":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":12,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":24,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":36,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":59,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":81,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":99,"s":[95]},{"t":117,"s":[0],"h":1},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":303,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":325,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":343,"s":[95]},{"t":361,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":12,"s":[-129.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":1},"t":36,"s":[-171.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":66,"s":[-171.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":99,"s":[-124.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":101,"s":[-124.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":119,"s":[-261.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":310,"s":[-171.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":343,"s":[-124.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":345,"s":[-124.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":363,"s":[-261.719,370.5,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":66,"s":[-69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":99,"s":[-100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":101,"s":[-100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":119,"s":[-69,69,100]},{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":310,"s":[-69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":343,"s":[-100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":345,"s":[-100,100,100]},{"t":363,"s":[-69,69,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":12,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-228.768,0.408],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":36,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":66,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":99,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":101,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":107,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.77,"y":0},"t":119,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":310,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":343,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":345,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":351,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"t":363,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.129411771894,0.458823561668,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":399,"st":42,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Pill to Arc | Elevation","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":0,"k":15,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"k":[{"s":[-138.046],"t":1,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-138.202],"t":2,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-138.513],"t":3,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-139.05],"t":4,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-139.941],"t":5,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-141.406],"t":6,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-143.584],"t":7,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-145.858],"t":8,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-147.576],"t":9,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-148.791],"t":10,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-149.671],"t":11,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.325],"t":12,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.819],"t":13,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.194],"t":14,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.476],"t":15,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.684],"t":16,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.832],"t":17,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.983],"t":19,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.864],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.722],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.589],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.509],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.418],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.315],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.199],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.991],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.6],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.003],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-149.176],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-148.086],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-146.696],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-144.957],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-142.808],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-140.175],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-136.961],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-133.049],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-128.294],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-122.514],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.421],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-106.544],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.205],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-80.877],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-64.572],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.431],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-37.439],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-28.391],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.536],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-16.265],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-12.165],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-8.95],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-6.422],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-4.446],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-2.922],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-1.777],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.953],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.405],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.097],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,-2,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue X Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":49,"s":[0]},{"t":90,"s":[7]}],"ix":1}}]},{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":2,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":8,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":1,"ix":3}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":24,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-3.25,-21.5],[22,-21.5],[46.75,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[-5.127,0],[0,0]],"o":[[0,0],[4.962,0],[0,0]],"v":[[6.75,-21.5],[22,-21.5],[36.75,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":49,"s":[{"i":[[0,0],[-5.127,0],[0,0]],"o":[[0,0],[4.962,0],[0,0]],"v":[[6.75,-21.5],[22,-21.5],[36.75,-21.5]],"c":false}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":66,"s":[{"i":[[0,0],[-5.127,0],[0,0]],"o":[[0,0],[4.962,0],[0,0]],"v":[[6.75,-19.5],[22,-21.5],[36.75,-19.5]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-15.605,0],[-9.769,-4]],"o":[[9.882,-4],[15.444,0],[0,0]],"v":[[-23.25,-9.5],[22,-21.5],[66.75,-9.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.418],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.149],"y":[1]},"o":{"x":[0.529],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.68],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":89,"s":[27]},{"t":108,"s":[58],"h":1}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":91,"s":[0]},{"t":105,"s":[49.75]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":91,"s":[100]},{"t":105,"s":[50.25]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":110,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".onSurfaceBack","cl":"onSurfaceBack","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":12,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":24,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":36,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":59,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":81,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":99,"s":[95]},{"t":117,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":12,"s":[-129.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":1},"t":36,"s":[-171.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":66,"s":[-171.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":99,"s":[-124.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":101,"s":[-124.719,370.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":119,"s":[-261.719,370.5,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":66,"s":[-69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":99,"s":[-100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":101,"s":[-100,100,100]},{"t":119,"s":[-69,69,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":12,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-228.768,0.408],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":36,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":66,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":99,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":101,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":107,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"t":119,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":12,"op":399,"st":42,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".surfaceBack","cl":"surfaceBack","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,350.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[841,701],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Rectangle 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.976,0.635,0.725,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.976,0.635,0.725,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":637,"st":0,"ct":1,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Part01_Thumb_Back_FO_V02","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,350.5,0],"ix":2,"l":2},"a":{"a":0,"k":[420.5,350.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":841,"h":701,"ip":0,"op":409,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":0,"nm":"Part01_Thumb_Back_FO_V02","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,350.5,0],"ix":2,"l":2},"a":{"a":0,"k":[420.5,350.5,0],"ix":1,"l":2},"s":{"a":0,"k":[-100,100,100],"ix":6,"l":2}},"ao":0,"w":841,"h":701,"ip":409,"op":818,"st":409,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"Part02_Charade_Back_FO_V02","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,350.5,0],"ix":2,"l":2},"a":{"a":0,"k":[420.5,350.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":841,"h":701,"ip":817,"op":1196,"st":817,"bm":0},{"ddd":0,"ind":4,"ty":0,"nm":"Part03_Demonstration_Back_FO_V02","refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,350.5,0],"ix":2,"l":2},"a":{"a":0,"k":[420.5,350.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":841,"h":701,"ip":1195,"op":1690,"st":1195,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw/back_gesture_tutorial_tablet_animation.json b/quickstep/res/raw/back_gesture_tutorial_tablet_animation.json
new file mode 100644
index 0000000..de7a96c
--- /dev/null
+++ b/quickstep/res/raw/back_gesture_tutorial_tablet_animation.json
@@ -0,0 +1 @@
+{"v":"5.10.0","fr":60,"ip":0,"op":1692,"w":1280,"h":800,"nm":"SUW_Tablet_Back_Combined_Preview V02","ddd":0,"assets":[{"id":"comp_0","nm":"Part03_Demonstration_Back_Tablet_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Pill Snap Release (RHS)","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":359,"s":[245]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":369,"s":[206]},{"i":{"x":[0.634],"y":[0.945]},"o":{"x":[1],"y":[0]},"t":434,"s":[206]},{"i":{"x":[0.27],"y":[1]},"o":{"x":[0.386],"y":[-23.642]},"t":485,"s":[-227.2]},{"t":545,"s":[-227.2]}],"ix":3},"y":{"a":0,"k":469,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":637,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"Center to Right Side","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.74],"y":[0]},"t":193,"s":[-39]},{"t":254,"s":[1003]}],"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":637,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Pill Snap Release (LHS)","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":99,"s":[-36]},{"t":109,"s":[0]}],"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":637,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","parent":5,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":483,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":489,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":1177,"s":[100]},{"t":1183,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[6.166,0,0],"ix":2,"l":2},"a":{"a":0,"k":[2,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":1,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":1,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[1111.158,469],"t":360,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1106.942,469],"t":361,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1097.842,469],"t":362,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1088.236,469],"t":363,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1081.919,469],"t":364,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1078.004,469],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1075.575,469],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1074.131,469],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1073.113,469],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1072.277,469],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1071.757,469],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1071.105,469],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1070.316,469],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1069.384,469],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1068.3,469],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1067.057,469],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1065.646,469],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1064.057,469],"t":446,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1062.279,469],"t":447,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1060.302,469],"t":448,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1058.112,469],"t":449,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1055.696,469],"t":450,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1053.036,469],"t":451,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1050.118,469],"t":452,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1046.919,469],"t":453,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1043.419,469],"t":454,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1039.593,469],"t":455,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1035.412,469],"t":456,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1030.843,469],"t":457,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1025.85,469],"t":458,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1020.388,469],"t":459,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1014.406,469],"t":460,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1007.844,469],"t":461,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1000.629,469],"t":462,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[992.673,469],"t":463,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[983.871,469],"t":464,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[974.088,469],"t":465,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[963.157,469],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[950.864,469],"t":467,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[936.927,469],"t":468,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[920.976,469],"t":469,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[902.519,469],"t":470,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[880.907,469],"t":471,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[855.365,469],"t":472,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[825.28,469],"t":473,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[791.239,469],"t":474,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[756.595,469],"t":475,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[726.206,469],"t":476,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[702.351,469],"t":477,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[684.444,469],"t":478,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[671.11,469],"t":479,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[661.168,469],"t":480,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[653.767,469],"t":481,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[648.31,469],"t":482,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[644.38,469],"t":483,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[641.673,469],"t":484,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[639.966,469],"t":485,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[638.957,469],"t":486,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[637.97,469],"t":487,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[637.01,469],"t":488,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[636.08,469],"t":489,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[635.184,469],"t":490,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[634.328,469],"t":491,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[633.515,469],"t":492,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[632.754,469],"t":493,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[632.051,469],"t":494,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[631.414,469],"t":495,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[630.852,469],"t":496,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[630.374,469],"t":497,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[629.989,469],"t":498,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[630.564,469],"t":506,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[630.984,469],"t":507,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[631.435,469],"t":508,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[631.905,469],"t":509,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[632.383,469],"t":510,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[632.86,469],"t":511,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[633.33,469],"t":512,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[633.788,469],"t":513,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[634.232,469],"t":514,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[634.66,469],"t":515,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[635.069,469],"t":516,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[635.459,469],"t":517,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[635.829,469],"t":518,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[636.181,469],"t":519,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[636.513,469],"t":520,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[637.12,469],"t":522,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[637.656,469],"t":524,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[638.123,469],"t":526,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[638.708,469],"t":529,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[639.292,469],"t":533,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[639.928,469],"t":542,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":483,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"t":533,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[68,-21.75],[-64,-21.75]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":52,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"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":"Right","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,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":64,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":0,"k":0,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":483,"op":607,"st":483,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":3,"nm":"REPOSITION","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":861,"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":365,"op":484,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","parent":5,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":161,"s":[100]},{"t":172,"s":[100]}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.28,"y":1},"o":{"x":0.65,"y":0},"t":365,"s":[-1.834,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.12,"y":1},"o":{"x":0.44,"y":0},"t":395,"s":[106.166,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.809,"y":0.809},"o":{"x":0.66,"y":0.66},"t":444,"s":[6.166,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":458,"s":[6.166,0,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":1,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[-1.834,0],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.735,0],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.419,0],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.855,0],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":369,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1.197,0],"t":370,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[2.806,0],"t":371,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[4.917,0],"t":372,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[7.638,0],"t":373,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[11.142,0],"t":374,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[15.664,0],"t":375,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[21.518,0],"t":376,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[29.086,0],"t":377,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[38.618,0],"t":378,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[49.734,0],"t":379,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[60.911,0],"t":380,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[70.632,0],"t":381,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[78.47,0],"t":382,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[84.66,0],"t":383,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[89.544,0],"t":384,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[93.428,0],"t":385,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[96.532,0],"t":386,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[99.012,0],"t":387,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[100.995,0],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[102.568,0],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[103.79,0],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[104.715,0],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[105.385,0],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[105.833,0],"t":393,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[106.086,0],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[106.091,0],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[105.852,0],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[105.424,0],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[104.775,0],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[103.868,0],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[102.653,0],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[101.065,0],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[99.033,0],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[96.463,0],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[93.225,0],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[89.19,0],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[84.252,0],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[78.418,0],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[71.927,0],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[65.197,0],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[58.708,0],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[52.764,0],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[47.466,0],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[42.796,0],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[38.694,0],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[35.074,0],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[31.866,0],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[29.012,0],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[26.467,0],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[24.19,0],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[22.145,0],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[20.305,0],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[18.645,0],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[17.146,0],"t":424,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[15.792,0],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.569,0],"t":426,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.467,0],"t":427,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[12.471,0],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[11.573,0],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[10.765,0],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[10.04,0],"t":431,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[9.393,0],"t":432,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[8.819,0],"t":433,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[8.314,0],"t":434,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[7.871,0],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[7.487,0],"t":436,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[7.158,0],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[6.882,0],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[6.654,0],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[6.473,0],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[6.336,0],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[6.24,0],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[6.185,0],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[6.166,0],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.25,-21.75]],"c":false}],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.376,-21.75]],"c":false}],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.79,-21.75]],"c":false}],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-9.556,-21.75]],"c":false}],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-10.771,-21.75]],"c":false}],"t":369,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-12.58,-21.75]],"c":false}],"t":370,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-15.219,-21.75]],"c":false}],"t":371,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-19.13,-21.75]],"c":false}],"t":372,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-25.275,-21.75]],"c":false}],"t":373,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-36.314,-21.75]],"c":false}],"t":374,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-52.308,-21.75]],"c":false}],"t":375,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.456,-21.75]],"c":false}],"t":376,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}],"t":377,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-23.074]],"c":false}],"t":378,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-26.642]],"c":false}],"t":379,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-30.646]],"c":false}],"t":380,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-34.048]],"c":false}],"t":381,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-36.752]],"c":false}],"t":382,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.877]],"c":false}],"t":383,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.542]],"c":false}],"t":384,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.84]],"c":false}],"t":385,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.838]],"c":false}],"t":386,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.587]],"c":false}],"t":387,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.126]],"c":false}],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.485]],"c":false}],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.686]],"c":false}],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.727]],"c":false}],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.655]],"c":false}],"t":395,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.528]],"c":false}],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.338]],"c":false}],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.078]],"c":false}],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.735]],"c":false}],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.295]],"c":false}],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.741]],"c":false}],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.046]],"c":false}],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.174]],"c":false}],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.071]],"c":false}],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.652]],"c":false}],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-36.765]],"c":false}],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-34.107]],"c":false}],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-30.004]],"c":false}],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-24.491]],"c":false}],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-25.562]],"c":false}],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-32.006]],"c":false}],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-35.928]],"c":false}],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.416]],"c":false}],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.159]],"c":false}],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.444]],"c":false}],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.413]],"c":false}],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.15]],"c":false}],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.707]],"c":false}],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.12]],"c":false}],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.414]],"c":false}],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.608]],"c":false}],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.716]],"c":false}],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.727]],"c":false}],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.655]],"c":false}],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.528]],"c":false}],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.338]],"c":false}],"t":431,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.078]],"c":false}],"t":432,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.735]],"c":false}],"t":433,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.295]],"c":false}],"t":434,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.741]],"c":false}],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.046]],"c":false}],"t":436,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.174]],"c":false}],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.071]],"c":false}],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.652]],"c":false}],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-36.765]],"c":false}],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-34.107]],"c":false}],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-30.004]],"c":false}],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-24.491]],"c":false}],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-25.562]],"c":false}],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-32.006]],"c":false}],"t":446,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-35.928]],"c":false}],"t":447,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.416]],"c":false}],"t":448,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.159]],"c":false}],"t":449,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.444]],"c":false}],"t":450,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.413]],"c":false}],"t":451,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.15]],"c":false}],"t":452,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.707]],"c":false}],"t":453,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.12]],"c":false}],"t":454,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.414]],"c":false}],"t":455,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.608]],"c":false}],"t":456,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.716]],"c":false}],"t":457,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}],"t":458,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-60.123,-44.587]],"c":false}],"t":459,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-61.764,-44.047]],"c":false}],"t":460,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-64.821,-43.043]],"c":false}],"t":461,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-69.643,-41.458]],"c":false}],"t":462,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-76.623,-39.165]],"c":false}],"t":463,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-86.018,-36.078]],"c":false}],"t":464,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-97.414,-32.333]],"c":false}],"t":465,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-109.091,-28.497]],"c":false}],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-118.733,-25.329]],"c":false}],"t":467,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-125.188,-23.208]],"c":false}],"t":468,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-128.616,-22.081]],"c":false}],"t":469,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-129.625,-21.75]],"c":false}],"t":470,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.138,-21.75],[-128.157,-21.75]],"c":false}],"t":471,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.84,-21.75],[-124.235,-21.75]],"c":false}],"t":472,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.394,-21.75],[-118.381,-21.75]],"c":false}],"t":473,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.828,-21.75],[-110.946,-21.75]],"c":false}],"t":474,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.161,-21.75],[-102.179,-21.75]],"c":false}],"t":475,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-5.406,-21.75],[-92.261,-21.75]],"c":false}],"t":476,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.574,-21.75],[-81.328,-21.75]],"c":false}],"t":477,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.672,-21.75],[-69.483,-21.75]],"c":false}],"t":478,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.707,-21.75],[-56.801,-21.75]],"c":false}],"t":479,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.682,-21.75],[-43.333,-21.75]],"c":false}],"t":480,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.599,-21.75],[-29.107,-21.75]],"c":false}],"t":481,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.543,-21.75],[-14.112,-21.75]],"c":false}],"t":482,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.75,-21.75],[1.75,-21.75]],"c":false}],"t":483,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":444,"s":[100]},{"t":483,"s":[60]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[27],"t":349,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.046],"t":350,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.193],"t":351,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.452],"t":352,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.84],"t":353,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.374],"t":354,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[29.079],"t":355,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[29.984],"t":356,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[31.129],"t":357,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.563],"t":358,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[34.353],"t":359,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.587],"t":360,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[39.37],"t":361,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[42.799],"t":362,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[46.822],"t":363,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.965],"t":364,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.371],"t":365,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.571],"t":366,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.685],"t":367,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58],"t":368,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.945],"t":448,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.911],"t":449,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.867],"t":450,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.811],"t":451,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.743],"t":452,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.66],"t":453,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.56],"t":454,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.44],"t":455,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.297],"t":456,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.126],"t":457,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.923],"t":458,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.681],"t":459,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.392],"t":460,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.052],"t":461,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.66],"t":462,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.226],"t":463,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.774],"t":464,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.34],"t":465,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.948],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.608],"t":467,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.319],"t":468,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.077],"t":469,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.874],"t":470,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.703],"t":471,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.56],"t":472,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.44],"t":473,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.34],"t":474,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.257],"t":475,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.189],"t":476,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.133],"t":477,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.089],"t":478,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.055],"t":479,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.003],"t":482,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.63,"y":1},"o":{"x":1,"y":0},"t":365,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.25,-21.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.18,"y":0},"t":377,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.67,"y":0},"t":391,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":393,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":410,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":424,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":427,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":444,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}]},{"i":{"x":0.58,"y":1},"o":{"x":0.59,"y":0},"t":458,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.4,"y":0},"t":470,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-129.625,-21.75]],"c":false}]},{"t":483,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.75,-21.75],[1.75,-21.75]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":444,"s":[100]},{"t":483,"s":[60]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.68],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":349,"s":[27]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.307],"y":[0]},"t":368,"s":[58]},{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":444,"s":[58]},{"t":483,"s":[52]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.63,"y":1},"o":{"x":1,"y":0},"t":365,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.895,-50.571],[0.709,-71.669],[11.321,-50.571]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.18,"y":0},"t":377,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.916,2.689],[0.688,-18.41],[11.3,2.689]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"t":391,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":393,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":410,"s":[{"i":[[6.319,0],[-13.595,0],[4.434,2.581]],"o":[[-4.95,2.881],[12.282,0],[-6.319,0]],"v":[[-8.484,18.867],[0.487,-2.232],[8.69,18.867]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":424,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":427,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":444,"s":[{"i":[[6.319,0],[-13.595,0],[4.434,2.581]],"o":[[-4.95,2.881],[12.282,0],[-6.319,0]],"v":[[-8.484,18.867],[0.487,-2.232],[8.69,18.867]],"c":true}]},{"t":458,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.49,"y":1},"o":{"x":0.76,"y":0},"t":444,"s":[0,-90],"to":[0,0],"ti":[0,0]},{"t":483,"s":[0,-24]}],"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":1,"k":[{"t":471,"s":[100],"h":1},{"t":472,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Round Bottom","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":365,"op":484,"st":161,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-385,"s":[0]},{"t":-375,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"k":[{"s":[0],"t":260,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.049],"t":261,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.217],"t":262,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.549],"t":263,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[1.125],"t":264,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.08],"t":265,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.65],"t":266,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[5.983],"t":267,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[8.42],"t":268,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[10.26],"t":269,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[11.561],"t":270,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[12.504],"t":271,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.205],"t":272,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.735],"t":273,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.136],"t":274,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.439],"t":275,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.662],"t":276,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.82],"t":277,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.924],"t":278,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.982],"t":279,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15],"t":280,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.993],"t":311,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.983],"t":312,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.969],"t":313,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.95],"t":314,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.927],"t":315,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.898],"t":316,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.864],"t":317,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.823],"t":318,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.776],"t":319,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.722],"t":320,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.66],"t":321,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.589],"t":322,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.509],"t":323,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.418],"t":324,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.315],"t":325,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.199],"t":326,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.992],"t":327,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.604],"t":328,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.014],"t":329,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[12.195],"t":330,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[11.118],"t":331,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[9.743],"t":332,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[8.024],"t":333,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[5.9],"t":334,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.298],"t":335,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.122],"t":336,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.744],"t":337,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-8.44],"t":338,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-14.148],"t":339,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.15],"t":340,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-29.91],"t":341,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-41.097],"t":342,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.23],"t":343,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-71.313],"t":344,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-86.247],"t":345,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-98.076],"t":346,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-106.999],"t":347,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-113.761],"t":348,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-118.959],"t":349,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.002],"t":350,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-126.173],"t":351,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-128.666],"t":352,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-130.616],"t":353,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-132.118],"t":354,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-133.247],"t":355,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.06],"t":356,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.601],"t":357,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.904],"t":358,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue X Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":309,"s":[0]},{"t":350,"s":[-7]}],"ix":1}}]},{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":2,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":7,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[0,0],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.049,0],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.217,0],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.549,0],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1.125,0],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[2.08,0],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[3.65,0],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[5.983,0],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[8.42,0],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[10.26,0],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[11.561,0],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[12.504,0],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.205,0],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.735,0],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.136,0],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.439,0],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.662,0],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.82,0],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.924,0],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.982,0],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[15,0],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.993,0],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.983,0],"t":312,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.969,0],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.95,0],"t":314,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.927,0],"t":315,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.898,0],"t":316,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.864,0],"t":317,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.823,0],"t":318,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.776,0],"t":319,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.722,0],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.66,0],"t":321,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.589,0],"t":322,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.509,0],"t":323,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.418,0],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.315,0],"t":325,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.199,0],"t":326,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.992,0],"t":327,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.604,0],"t":328,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.014,0],"t":329,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[12.195,0],"t":330,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[11.118,0],"t":331,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[9.743,0],"t":332,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[8.024,0],"t":333,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[5.9,0],"t":334,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[3.298,0],"t":335,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.122,0],"t":336,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.744,0],"t":337,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.44,0],"t":338,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.148,0],"t":339,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-21.15,0],"t":340,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-29.91,0],"t":341,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-41.097,0],"t":342,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-55.23,0],"t":343,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-71.313,0],"t":344,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-86.247,0],"t":345,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-98.076,0],"t":346,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-106.999,0],"t":347,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-113.761,0],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-118.959,0],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-123.002,0],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-126.173,0],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-128.666,0],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-130.616,0],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-132.118,0],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-133.247,0],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-134.06,0],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-134.601,0],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-134.904,0],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":260,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.75],[21.75,-21.641],[21.75,-21.641]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":284,"s":[{"i":[[0,0],[11.75,0],[0,0]],"o":[[0,0],[-11.583,0],[0,0]],"v":[[46.75,-21.5],[21.5,-21.5],[-3.25,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":304,"s":[{"i":[[0,0],[5.127,0],[0,0]],"o":[[0,0],[-4.962,0],[0,0]],"v":[[36.75,-21.5],[21.5,-21.5],[6.75,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":309,"s":[{"i":[[0,0],[5.127,0],[0,0]],"o":[[0,0],[-4.962,0],[0,0]],"v":[[36.75,-21.5],[21.5,-21.5],[6.75,-21.5]],"c":false}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":326,"s":[{"i":[[0,0],[5.127,0],[0,0]],"o":[[0,0],[-4.962,0],[0,0]],"v":[[36.75,-23.25],[21.5,-21.25],[6.75,-23.25]],"c":false}]},{"t":350,"s":[{"i":[[0,0],[15.605,0],[9.769,4]],"o":[[-9.882,4],[-15.444,0],[0,0]],"v":[[66.75,-33],[21.5,-21],[-23.25,-33]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":165,"s":[54]},{"i":{"x":[0.149],"y":[1]},"o":{"x":[0.529],"y":[0]},"t":260,"s":[58]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":280,"s":[27]},{"i":{"x":[0.68],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":349,"s":[27]},{"t":368,"s":[58],"h":1}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":351,"s":[0]},{"t":365,"s":[49.75]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":351,"s":[100]},{"t":365,"s":[50.25]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-241,"s":[0]},{"t":-223,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":254,"op":367,"st":-386,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Right Matte","td":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":272,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":284,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":296,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":319,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":341,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":359,"s":[95]},{"t":377,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":272,"s":[1409.819,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":1},"t":296,"s":[1451.819,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":326,"s":[1451.819,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":359,"s":[1404.819,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":361,"s":[1404.819,469,0],"to":[0,0,0],"ti":[0,0,0]},{"t":379,"s":[1541.819,469,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":326,"s":[69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":359,"s":[100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":361,"s":[100,100,100]},{"t":379,"s":[69,69,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":272,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-228.768,0.408],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":296,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":326,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":359,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":361,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":367,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"t":379,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.129411771894,0.458823561668,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":272,"op":637,"st":302,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Right Pill to Arc | Elevation","parent":2,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":15,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"k":[{"s":[0],"t":260,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.049],"t":261,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.217],"t":262,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.549],"t":263,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[1.125],"t":264,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.08],"t":265,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.65],"t":266,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[5.983],"t":267,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[8.42],"t":268,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[10.26],"t":269,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[11.561],"t":270,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[12.504],"t":271,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.205],"t":272,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.735],"t":273,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.136],"t":274,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.439],"t":275,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.662],"t":276,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.82],"t":277,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.924],"t":278,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.982],"t":279,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15],"t":280,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.993],"t":311,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.983],"t":312,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.969],"t":313,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.95],"t":314,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.927],"t":315,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.898],"t":316,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.864],"t":317,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.823],"t":318,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.776],"t":319,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.722],"t":320,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.66],"t":321,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.589],"t":322,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.509],"t":323,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.418],"t":324,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.315],"t":325,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.199],"t":326,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.992],"t":327,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.604],"t":328,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.014],"t":329,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[12.195],"t":330,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[11.118],"t":331,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[9.743],"t":332,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[8.024],"t":333,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[5.9],"t":334,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.298],"t":335,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.122],"t":336,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.744],"t":337,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-8.44],"t":338,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-14.148],"t":339,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.15],"t":340,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-29.91],"t":341,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-41.097],"t":342,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.23],"t":343,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-71.313],"t":344,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-86.247],"t":345,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-98.076],"t":346,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-106.999],"t":347,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-113.761],"t":348,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-118.959],"t":349,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.002],"t":350,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-126.173],"t":351,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-128.666],"t":352,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-130.616],"t":353,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-132.118],"t":354,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-133.247],"t":355,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.06],"t":356,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.601],"t":357,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.904],"t":358,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,-2,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue X Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":309,"s":[0]},{"t":350,"s":[-7]}],"ix":1}}]},{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":2,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":9,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[0,0],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.049,0],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.217,0],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.549,0],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1.125,0],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[2.08,0],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[3.65,0],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[5.983,0],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[8.42,0],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[10.26,0],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[11.561,0],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[12.504,0],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.205,0],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.735,0],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.136,0],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.439,0],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.662,0],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.82,0],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.924,0],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.982,0],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[15,0],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.993,0],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.983,0],"t":312,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.969,0],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.95,0],"t":314,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.927,0],"t":315,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.898,0],"t":316,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.864,0],"t":317,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.823,0],"t":318,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.776,0],"t":319,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.722,0],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.66,0],"t":321,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.589,0],"t":322,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.509,0],"t":323,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.418,0],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.315,0],"t":325,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[14.199,0],"t":326,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.992,0],"t":327,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.604,0],"t":328,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[13.014,0],"t":329,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[12.195,0],"t":330,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[11.118,0],"t":331,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[9.743,0],"t":332,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[8.024,0],"t":333,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[5.9,0],"t":334,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[3.298,0],"t":335,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.122,0],"t":336,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.744,0],"t":337,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.44,0],"t":338,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.148,0],"t":339,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-21.15,0],"t":340,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-29.91,0],"t":341,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-41.097,0],"t":342,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-55.23,0],"t":343,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-71.313,0],"t":344,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-86.247,0],"t":345,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-98.076,0],"t":346,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-106.999,0],"t":347,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-113.761,0],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-118.959,0],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-123.002,0],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-126.173,0],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-128.666,0],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-130.616,0],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-132.118,0],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-133.247,0],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-134.06,0],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-134.601,0],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-134.904,0],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]},{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":3,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":8,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":1,"ix":3}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":260,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.75],[21.75,-21.641],[21.75,-21.641]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":284,"s":[{"i":[[0,0],[11.75,0],[0,0]],"o":[[0,0],[-11.583,0],[0,0]],"v":[[46.75,-21.5],[21.5,-21.5],[-3.25,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":304,"s":[{"i":[[0,0],[5.127,0],[0,0]],"o":[[0,0],[-4.962,0],[0,0]],"v":[[36.75,-21.5],[21.5,-21.5],[6.75,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":309,"s":[{"i":[[0,0],[5.127,0],[0,0]],"o":[[0,0],[-4.962,0],[0,0]],"v":[[36.75,-21.5],[21.5,-21.5],[6.75,-21.5]],"c":false}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":326,"s":[{"i":[[0,0],[5.127,0],[0,0]],"o":[[0,0],[-4.962,0],[0,0]],"v":[[36.75,-23.25],[21.5,-21.25],[6.75,-23.25]],"c":false}]},{"t":350,"s":[{"i":[[0,0],[15.605,0],[9.769,4]],"o":[[-9.882,4],[-15.444,0],[0,0]],"v":[[66.75,-33],[21.5,-21],[-23.25,-33]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":165,"s":[54]},{"i":{"x":[0.149],"y":[1]},"o":{"x":[0.529],"y":[0]},"t":260,"s":[58]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":280,"s":[27]},{"i":{"x":[0.68],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":349,"s":[27]},{"t":368,"s":[58],"h":1}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":351,"s":[0]},{"t":365,"s":[49.75]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":351,"s":[100]},{"t":365,"s":[50.25]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":254,"op":367,"st":-386,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-99,"s":[100]},{"t":-88,"s":[100]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.28,"y":1},"o":{"x":0.65,"y":0},"t":105,"s":[8,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.12,"y":1},"o":{"x":0.44,"y":0},"t":135,"s":[-99.42,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.12,"y":0.12},"o":{"x":0.403,"y":0.403},"t":193,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.59,"y":1},"o":{"x":0.25,"y":0},"t":198,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":223,"s":[8,0,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.25,-21.75]],"c":false}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.376,-21.75]],"c":false}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.79,-21.75]],"c":false}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-9.556,-21.75]],"c":false}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-10.771,-21.75]],"c":false}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-12.58,-21.75]],"c":false}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-15.219,-21.75]],"c":false}],"t":111,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-19.13,-21.75]],"c":false}],"t":112,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-25.275,-21.75]],"c":false}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-36.314,-21.75]],"c":false}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-52.308,-21.75]],"c":false}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.456,-21.75]],"c":false}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-23.074]],"c":false}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-26.642]],"c":false}],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-30.646]],"c":false}],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-34.048]],"c":false}],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-36.752]],"c":false}],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.877]],"c":false}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.542]],"c":false}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.84]],"c":false}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.838]],"c":false}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.587]],"c":false}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.126]],"c":false}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.485]],"c":false}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.686]],"c":false}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.727]],"c":false}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.655]],"c":false}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.528]],"c":false}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.338]],"c":false}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.078]],"c":false}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.735]],"c":false}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.295]],"c":false}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.741]],"c":false}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.046]],"c":false}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.174]],"c":false}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.071]],"c":false}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.652]],"c":false}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-36.765]],"c":false}],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-34.107]],"c":false}],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-30.004]],"c":false}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-24.491]],"c":false}],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-25.562]],"c":false}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-32.006]],"c":false}],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-35.928]],"c":false}],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.416]],"c":false}],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.159]],"c":false}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.444]],"c":false}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.413]],"c":false}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.15]],"c":false}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.707]],"c":false}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.12]],"c":false}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.414]],"c":false}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.608]],"c":false}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.716]],"c":false}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.727]],"c":false}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.655]],"c":false}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.528]],"c":false}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.338]],"c":false}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.078]],"c":false}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.735]],"c":false}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.295]],"c":false}],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.741]],"c":false}],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.046]],"c":false}],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.174]],"c":false}],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.071]],"c":false}],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.652]],"c":false}],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-36.765]],"c":false}],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-34.107]],"c":false}],"t":181,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-30.004]],"c":false}],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-24.491]],"c":false}],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-25.562]],"c":false}],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-32.006]],"c":false}],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-35.928]],"c":false}],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-38.416]],"c":false}],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-40.159]],"c":false}],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-41.444]],"c":false}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-42.413]],"c":false}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.15]],"c":false}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-43.707]],"c":false}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.12]],"c":false}],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.414]],"c":false}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.608]],"c":false}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.716]],"c":false}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.675,-44.734]],"c":false}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.831,-44.682]],"c":false}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-60.105,-44.592]],"c":false}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-60.51,-44.459]],"c":false}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-61.063,-44.278]],"c":false}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-61.783,-44.041]],"c":false}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-62.694,-43.742]],"c":false}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-63.827,-43.369]],"c":false}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-65.219,-42.912]],"c":false}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-66.92,-42.353]],"c":false}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-68.996,-41.671]],"c":false}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-71.536,-40.837]],"c":false}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-74.665,-39.808]],"c":false}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-78.564,-38.527]],"c":false}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-83.496,-36.907]],"c":false}],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-89.817,-34.83]],"c":false}],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-97.824,-32.199]],"c":false}],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-106.964,-29.196]],"c":false}],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-115.176,-26.497]],"c":false}],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-121.061,-24.564]],"c":false}],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-124.888,-23.307]],"c":false}],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-127.281,-22.52]],"c":false}],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-128.694,-22.056]],"c":false}],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-129.414,-21.819]],"c":false}],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-129.625,-21.75]],"c":false}],"t":223,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-129.557,-21.75]],"c":false}],"t":224,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-129.342,-21.75]],"c":false}],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-128.962,-21.75]],"c":false}],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-128.395,-21.75]],"c":false}],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-127.615,-21.75]],"c":false}],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-126.589,-21.75]],"c":false}],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-125.274,-21.75]],"c":false}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-123.617,-21.75]],"c":false}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-121.546,-21.75]],"c":false}],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-118.964,-21.75]],"c":false}],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-115.735,-21.75]],"c":false}],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-111.656,-21.75]],"c":false}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-106.42,-21.75]],"c":false}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-99.53,-21.75]],"c":false}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-90.184,-21.75]],"c":false}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-77.373,-21.75]],"c":false}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-61.675,-21.75]],"c":false}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-47.368,-21.75]],"c":false}],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-36.856,-21.75]],"c":false}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-29.368,-21.75]],"c":false}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-23.889,-21.75]],"c":false}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-19.774,-21.75]],"c":false}],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-16.628,-21.75]],"c":false}],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-14.205,-21.75]],"c":false}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-12.341,-21.75]],"c":false}],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-10.922,-21.75]],"c":false}],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-9.866,-21.75]],"c":false}],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-9.113,-21.75]],"c":false}],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.615,-21.75]],"c":false}],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.337,-21.75]],"c":false}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.25,-21.75]],"c":false}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[27],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.046],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.193],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.452],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.84],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.374],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[29.079],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[29.984],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[31.129],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.563],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[34.353],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.587],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[39.37],"t":101,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[42.799],"t":102,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[46.822],"t":103,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.965],"t":104,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.371],"t":105,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.571],"t":106,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.685],"t":107,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58],"t":108,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","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":1,"k":[{"i":{"x":0.63,"y":1},"o":{"x":1,"y":0},"t":105,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.25,-21.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.18,"y":0},"t":117,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.67,"y":0},"t":131,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":133,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":150,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":164,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":167,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":184,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-21.75]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":198,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-59.625,-44.75]],"c":false}]},{"i":{"x":0.29,"y":1},"o":{"x":0.8,"y":0},"t":223,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-129.625,-21.75]],"c":false}]},{"t":254,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-8.25,-21.75]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.68],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":89,"s":[27]},{"t":108,"s":[58]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","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":1,"k":[{"i":{"x":0.63,"y":1},"o":{"x":1,"y":0},"t":105,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.895,-50.571],[0.709,-71.669],[11.321,-50.571]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.18,"y":0},"t":117,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.916,2.689],[0.688,-18.41],[11.3,2.689]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0},"t":131,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":133,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":150,"s":[{"i":[[6.319,0],[-13.595,0],[4.434,2.581]],"o":[[-4.95,2.881],[12.282,0],[-6.319,0]],"v":[[-8.484,18.867],[0.487,-2.232],[8.69,18.867]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":164,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":167,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":184,"s":[{"i":[[6.319,0],[-13.595,0],[4.434,2.581]],"o":[[-4.95,2.881],[12.282,0],[-6.319,0]],"v":[[-8.484,18.867],[0.487,-2.232],[8.69,18.867]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":198,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.929,17.367],[0.675,-3.732],[11.287,17.367]],"c":true}]},{"t":223,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-11.142,-39.633],[0.462,-60.732],[11.073,-39.633]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-90],"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":"Round Bottom","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":105,"op":254,"st":-99,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".onSurfaceBack","cl":"onSurfaceBack","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":272,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":284,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":296,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":319,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":341,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":359,"s":[95]},{"t":377,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":272,"s":[1409.819,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":1},"t":296,"s":[1451.819,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":326,"s":[1451.819,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":359,"s":[1404.819,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":361,"s":[1404.819,469,0],"to":[0,0,0],"ti":[0,0,0]},{"t":379,"s":[1541.819,469,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":326,"s":[69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":359,"s":[100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":361,"s":[100,100,100]},{"t":379,"s":[69,69,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":272,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-228.768,0.408],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":296,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":326,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":359,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":361,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":367,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"t":379,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":272,"op":637,"st":302,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-609,"s":[0]},{"t":-599,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"k":[{"s":[-138.046],"t":1,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-138.202],"t":2,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-138.513],"t":3,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-139.05],"t":4,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-139.941],"t":5,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-141.406],"t":6,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-143.584],"t":7,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-145.858],"t":8,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-147.576],"t":9,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-148.791],"t":10,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-149.671],"t":11,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.325],"t":12,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.819],"t":13,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.194],"t":14,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.476],"t":15,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.684],"t":16,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.832],"t":17,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.983],"t":19,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.864],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.722],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.589],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.509],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.418],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.315],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.199],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.991],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.6],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.003],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-149.176],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-148.086],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-146.696],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-144.957],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-142.808],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-140.175],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-136.961],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-133.049],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-128.294],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-122.514],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.421],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-106.544],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.205],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-80.877],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-64.572],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.431],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-37.439],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-28.391],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.536],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-16.265],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-12.165],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-8.95],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-6.422],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-4.446],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-2.922],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-1.777],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.953],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.405],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.097],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"y":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[0]},{"t":49,"s":[-0.25]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue X Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":49,"s":[0]},{"t":90,"s":[7]}],"ix":1}}]},{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":2,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":12,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[-138,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-138.046,-0.001],"t":1,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-138.202,-0.003],"t":2,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-138.513,-0.007],"t":3,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-139.05,-0.01],"t":4,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-139.941,-0.014],"t":5,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-141.406,-0.019],"t":6,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-143.584,-0.024],"t":7,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-145.858,-0.029],"t":8,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-147.576,-0.034],"t":9,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-148.791,-0.039],"t":10,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-149.671,-0.045],"t":11,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-150.325,-0.05],"t":12,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-150.819,-0.056],"t":13,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.194,-0.062],"t":14,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.476,-0.068],"t":15,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.684,-0.074],"t":16,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.832,-0.079],"t":17,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.929,-0.085],"t":18,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.983,-0.091],"t":19,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.098],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.104],"t":21,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.11],"t":22,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.14],"t":27,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.146],"t":28,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.152],"t":29,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.159],"t":30,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.165],"t":31,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.171],"t":32,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.176],"t":33,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.182],"t":34,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.188],"t":35,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.194],"t":36,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.2],"t":37,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.205],"t":38,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.211],"t":39,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.216],"t":40,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.221],"t":41,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.226],"t":42,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.231],"t":43,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.236],"t":44,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.24],"t":45,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.243],"t":46,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.247],"t":47,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.249],"t":48,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-152,-0.25],"t":49,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.864,-0.25],"t":57,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.722,-0.25],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.589,-0.25],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.509,-0.25],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.418,-0.25],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.315,-0.25],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-151.199,-0.25],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-150.991,-0.25],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-150.6,-0.25],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-150.003,-0.25],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-149.176,-0.25],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-148.086,-0.25],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-146.696,-0.25],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-144.957,-0.25],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-142.808,-0.25],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-140.175,-0.25],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-136.961,-0.25],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-133.049,-0.25],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-128.294,-0.25],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-122.514,-0.25],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-115.421,-0.25],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-106.544,-0.25],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-95.205,-0.25],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-80.877,-0.25],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-64.572,-0.25],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-49.431,-0.25],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-37.439,-0.25],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-28.391,-0.25],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-21.536,-0.25],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.265,-0.25],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.165,-0.25],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.95,-0.25],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.422,-0.25],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.446,-0.25],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.922,-0.25],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.777,-0.25],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.953,-0.25],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.405,-0.25],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.097,-0.25],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-0.25],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":24,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-3.25,-21.5],[22,-21.5],[46.75,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[-5.127,0],[0,0]],"o":[[0,0],[4.962,0],[0,0]],"v":[[6.75,-21.5],[22,-21.5],[36.75,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":49,"s":[{"i":[[0,0],[-5.127,0],[0,0]],"o":[[0,0],[4.962,0],[0,0]],"v":[[6.75,-21.5],[22,-21.5],[36.75,-21.5]],"c":false}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":66,"s":[{"i":[[0,0],[-5.127,0],[0,0]],"o":[[0,0],[4.962,0],[0,0]],"v":[[6.75,-19.5],[22,-21.5],[36.75,-19.5]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-15.605,0],[-9.769,-4]],"o":[[9.882,-4],[15.444,0],[0,0]],"v":[[-23.25,-9.5],[22,-21.5],[66.75,-9.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.418],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.149],"y":[1]},"o":{"x":[0.529],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.68],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":89,"s":[27]},{"t":108,"s":[58],"h":1}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":91,"s":[0]},{"t":105,"s":[49.75]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":91,"s":[100]},{"t":105,"s":[50.25]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-465,"s":[0]},{"t":-447,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":105,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Left Matte","td":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":12,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":24,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":36,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":59,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":81,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":99,"s":[95]},{"t":117,"s":[0],"h":1},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":303,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":325,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":343,"s":[95]},{"t":361,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":12,"s":[-129.719,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":1},"t":36,"s":[-171.719,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":66,"s":[-171.719,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":99,"s":[-124.719,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":101,"s":[-124.719,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":119,"s":[-261.719,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":310,"s":[-171.719,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":343,"s":[-124.719,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":345,"s":[-124.719,469,0],"to":[0,0,0],"ti":[0,0,0]},{"t":363,"s":[-261.719,469,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":66,"s":[-69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":99,"s":[-100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":101,"s":[-100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":119,"s":[-69,69,100]},{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":310,"s":[-69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":343,"s":[-100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":345,"s":[-100,100,100]},{"t":363,"s":[-69,69,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":12,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-228.768,0.408],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":36,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":66,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":99,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":101,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":107,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.77,"y":0},"t":119,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":310,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":343,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":345,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":351,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"t":363,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.129411771894,0.458823561668,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":399,"st":42,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Pill to Arc | Elevation","parent":3,"tt":1,"tp":13,"sr":1,"ks":{"o":{"a":0,"k":15,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"k":[{"s":[-138.046],"t":1,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-138.202],"t":2,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-138.513],"t":3,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-139.05],"t":4,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-139.941],"t":5,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-141.406],"t":6,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-143.584],"t":7,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-145.858],"t":8,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-147.576],"t":9,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-148.791],"t":10,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-149.671],"t":11,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.325],"t":12,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.819],"t":13,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.194],"t":14,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.476],"t":15,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.684],"t":16,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.832],"t":17,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.983],"t":19,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.864],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.722],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.589],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.509],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.418],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.315],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-151.199],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.991],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.6],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-150.003],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-149.176],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-148.086],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-146.696],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-144.957],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-142.808],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-140.175],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-136.961],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-133.049],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-128.294],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-122.514],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.421],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-106.544],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.205],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-80.877],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-64.572],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.431],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-37.439],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-28.391],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.536],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-16.265],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-12.165],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-8.95],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-6.422],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-4.446],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-2.922],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-1.777],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.953],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.405],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.097],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"y":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[0]},{"t":49,"s":[-0.25]}],"ix":4}},"a":{"a":0,"k":[0,-2,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue X Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":49,"s":[0]},{"t":90,"s":[7]}],"ix":1}}]},{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":2,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":8,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":1,"ix":3}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":24,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-3.25,-21.5],[22,-21.5],[46.75,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[-5.127,0],[0,0]],"o":[[0,0],[4.962,0],[0,0]],"v":[[6.75,-21.5],[22,-21.5],[36.75,-21.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":49,"s":[{"i":[[0,0],[-5.127,0],[0,0]],"o":[[0,0],[4.962,0],[0,0]],"v":[[6.75,-21.5],[22,-21.5],[36.75,-21.5]],"c":false}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":66,"s":[{"i":[[0,0],[-5.127,0],[0,0]],"o":[[0,0],[4.962,0],[0,0]],"v":[[6.75,-19.5],[22,-21.5],[36.75,-19.5]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[-15.605,0],[-9.769,-4]],"o":[[9.882,-4],[15.444,0],[0,0]],"v":[[-23.25,-9.5],[22,-21.5],[66.75,-9.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.418],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.149],"y":[1]},"o":{"x":[0.529],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.68],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":89,"s":[27]},{"t":108,"s":[58],"h":1}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":91,"s":[0]},{"t":105,"s":[49.75]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.771]},"o":{"x":[0.87],"y":[0.119]},"t":91,"s":[100]},{"t":105,"s":[50.25]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":110,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".onSurfaceBack","cl":"onSurfaceBack","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":12,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":24,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":36,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":59,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":81,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":99,"s":[95]},{"t":117,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":12,"s":[-129.719,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":1},"t":36,"s":[-171.719,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":66,"s":[-171.719,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":99,"s":[-124.719,469,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":101,"s":[-124.719,469,0],"to":[0,0,0],"ti":[0,0,0]},{"t":119,"s":[-261.719,469,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":66,"s":[-69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":99,"s":[-100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":101,"s":[-100,100,100]},{"t":119,"s":[-69,69,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":12,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-228.768,0.408],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":36,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":66,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":99,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":101,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":107,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"t":119,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":12,"op":399,"st":42,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".surfaceBack","cl":"surfaceBack","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,400,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[1280,800],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Rectangle 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.976,0.635,0.725,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.976,0.635,0.725,1],"t":636,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":637,"st":0,"ct":1,"bm":0}]},{"id":"comp_1","nm":"Part02_Charade_Back_Tablet_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".onSurfaceBack","cl":"onSurfaceBack","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":60,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":72,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":84,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":96,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":108,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":162,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":174,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":186,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":198,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":210,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":264,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":276,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":288,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":300,"s":[100]},{"t":312,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":640,"ix":3},"y":{"a":0,"k":400,"ix":4}},"a":{"a":0,"k":[206,561,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[262,800],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":73,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"mm","mm":3,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Subtract","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-537,561],"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":"Left Zone","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[262,800],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":73,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"mm","mm":3,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Subtract","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[949,561],"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":"Right Zone","np":1,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":312,"st":60,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"DISTANCE COVERAGE","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":38,"s":[640]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.699]},"t":44.666,"s":[813.2]},{"t":78,"s":[1073.5],"h":1},{"i":{"x":[0.39],"y":[1]},"o":{"x":[0.69],"y":[0]},"t":195,"s":[1073.5]},{"t":231,"s":[207],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":318,"s":[207]},{"t":379,"s":[206]}],"ix":3},"y":{"a":0,"k":469,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":380,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":38,"s":[9]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":44.666,"s":[67]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":78,"s":[154]},{"i":{"x":[0.76],"y":[1]},"o":{"x":[0.91],"y":[0]},"t":109,"s":[144]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":128,"s":[190]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.78],"y":[0]},"t":143,"s":[153]},{"i":{"x":[0.8],"y":[0.443]},"o":{"x":[0.3],"y":[0]},"t":145,"s":[153]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.32],"y":[0.901]},"t":155,"s":[190]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":184,"s":[94]},{"i":{"x":[0.39],"y":[1]},"o":{"x":[0.69],"y":[0]},"t":195,"s":[94]},{"i":{"x":[0.12],"y":[0.876]},"o":{"x":[0.88],"y":[0.124]},"t":231,"s":[-190]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":246,"s":[-154]},{"i":{"x":[0.8],"y":[0.449]},"o":{"x":[0.3],"y":[0]},"t":248,"s":[-154]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.26],"y":[0.913]},"t":258,"s":[-190]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":288,"s":[-144]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":318,"s":[-144]},{"t":379,"s":[-186]}],"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0,"y":0.96},"o":{"x":0.61,"y":0},"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-37]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":52,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-84.75,-37]],"c":false}]},{"i":{"x":0.22,"y":1},"o":{"x":0.167,"y":0},"t":70,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.61,"y":0},"t":84,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":87,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":104,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":118,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0.8,"y":0.15},"o":{"x":0.3,"y":0},"t":119,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":129,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-43.75,-39]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.3,"y":0},"t":144,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0.95,"y":0.3},"o":{"x":0.9,"y":0},"t":146,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.05,"y":0.7},"t":156,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-43.75,-39]],"c":false}]},{"i":{"x":0.58,"y":1},"o":{"x":0.42,"y":0},"t":175,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.88,"y":0},"t":187,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.37,"y":0},"t":197,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-48.75,-39]],"c":false}]},{"i":{"x":0.37,"y":1},"o":{"x":0.33,"y":0},"t":206,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[48.25,-39]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":212,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[70.25,-25.75]],"c":false}]},{"i":{"x":0.6,"y":0.28},"o":{"x":0.26,"y":0},"t":218,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[110.25,-25.75]],"c":false}]},{"i":{"x":0.36,"y":1},"o":{"x":0.193,"y":1},"t":233,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[37.25,-34.75]],"c":false}]},{"i":{"x":0.8,"y":0.47},"o":{"x":0.3,"y":0},"t":247,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[60.25,-38.75]],"c":false}]},{"i":{"x":0.36,"y":1},"o":{"x":0.167,"y":0},"t":259,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[42.25,-37.75]],"c":false}]},{"i":{"x":0.61,"y":1},"o":{"x":0.68,"y":0},"t":274,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-35.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":284,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":298,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.75],[54.25,-37.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":318,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-21.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.44,"y":0},"t":332,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.75],[54.25,-37.75]],"c":false}]},{"t":379,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[12.25,-21.75]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0],"y":[0.96]},"o":{"x":[0.61],"y":[0]},"t":38,"s":[64]},{"t":52,"s":[58]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-37]],"c":false}],"t":38,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.937,-37]],"c":false}],"t":39,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-48.646,-37]],"c":false}],"t":40,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.313,-37]],"c":false}],"t":41,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-54.399,-37]],"c":false}],"t":42,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-66.311,-37]],"c":false}],"t":43,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-74.272,-37]],"c":false}],"t":44,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-78.046,-37]],"c":false}],"t":45,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-80.356,-37]],"c":false}],"t":46,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-81.91,-37]],"c":false}],"t":47,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-82.991,-37]],"c":false}],"t":48,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-83.745,-37]],"c":false}],"t":49,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-84.256,-37]],"c":false}],"t":50,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-84.578,-37]],"c":false}],"t":51,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-84.75,-37]],"c":false}],"t":52,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-84.703,-36.979]],"c":false}],"t":53,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-84.552,-36.911]],"c":false}],"t":54,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-84.281,-36.789]],"c":false}],"t":55,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-83.868,-36.604]],"c":false}],"t":56,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-83.287,-36.344]],"c":false}],"t":57,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-82.499,-35.99]],"c":false}],"t":58,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-81.453,-35.521]],"c":false}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-80.073,-34.902]],"c":false}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-78.245,-34.083]],"c":false}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-75.784,-32.978]],"c":false}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-72.379,-31.451]],"c":false}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-67.583,-29.3]],"c":false}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-61.513,-26.577]],"c":false}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-56.355,-24.264]],"c":false}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.305,-22.896]],"c":false}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.701,-22.177]],"c":false}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.955,-21.842]],"c":false}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.75,-21.75]],"c":false}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.939,-22.834]],"c":false}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.404,-25.508]],"c":false}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.907,-28.4]],"c":false}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.337,-30.878]],"c":false}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.686,-32.881]],"c":false}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.963,-34.478]],"c":false}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.184,-35.743]],"c":false}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.357,-36.738]],"c":false}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.491,-37.509]],"c":false}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.592,-38.091]],"c":false}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.665,-38.511]],"c":false}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.714,-38.792]],"c":false}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.741,-38.95]],"c":false}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.983]],"c":false}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.929]],"c":false}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.833]],"c":false}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.691]],"c":false}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.496]],"c":false}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.239]],"c":false}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-37.909]],"c":false}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-37.493]],"c":false}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-36.972]],"c":false}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-36.318]],"c":false}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35.491]],"c":false}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-34.426]],"c":false}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-33.011]],"c":false}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-31.018]],"c":false}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-27.941]],"c":false}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-23.806]],"c":false}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-21.75]],"c":false}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-24.609]],"c":false}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-29.442]],"c":false}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-32.383]],"c":false}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-34.249]],"c":false}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35.557]],"c":false}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-36.52]],"c":false}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-37.247]],"c":false}],"t":111,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-37.8]],"c":false}],"t":112,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.218]],"c":false}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.527]],"c":false}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.748]],"c":false}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.893]],"c":false}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.974]],"c":false}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.695,-39]],"c":false}],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.526,-39]],"c":false}],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.235,-39]],"c":false}],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.805,-39]],"c":false}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.21,-39]],"c":false}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.413,-39]],"c":false}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.353,-39]],"c":false}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-48.925,-39]],"c":false}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-46.917,-39]],"c":false}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-43.75,-39]],"c":false}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-44.32,-39]],"c":false}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-46.635,-39]],"c":false}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-48.75,-39]],"c":false}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.116,-39]],"c":false}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.069,-39]],"c":false}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.773,-39]],"c":false}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.309,-39]],"c":false}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.722,-39]],"c":false}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.041,-39]],"c":false}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.285,-39]],"c":false}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.468,-39]],"c":false}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.599,-39]],"c":false}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.686,-39]],"c":false}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.735,-39]],"c":false}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.692,-39]],"c":false}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.607,-39]],"c":false}],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.467,-39]],"c":false}],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.252,-39]],"c":false}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.927,-39]],"c":false}],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.424,-39]],"c":false}],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.593,-39]],"c":false}],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-49.964,-39]],"c":false}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-43.75,-39]],"c":false}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-46.25,-39]],"c":false}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.441,-39]],"c":false}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-48.326,-39]],"c":false}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-49.047,-39]],"c":false}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-49.662,-39]],"c":false}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.201,-39]],"c":false}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-50.679,-39]],"c":false}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.11,-39]],"c":false}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.5,-39]],"c":false}],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.855,-39]],"c":false}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.179,-39]],"c":false}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.475,-39]],"c":false}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.745,-39]],"c":false}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.989,-39]],"c":false}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.208,-39]],"c":false}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.4,-39]],"c":false}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.563,-39]],"c":false}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.689,-39]],"c":false}],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-39]],"c":false}],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.946]],"c":false}],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.775]],"c":false}],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.483]],"c":false}],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-38.073]],"c":false}],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-37.565]],"c":false}],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-36.435]],"c":false}],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35.927]],"c":false}],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35.517]],"c":false}],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35.225]],"c":false}],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35.054]],"c":false}],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.75,-35]],"c":false}],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.731,-35.015]],"c":false}],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.669,-35.065]],"c":false}],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.553,-35.157]],"c":false}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.371,-35.303]],"c":false}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-53.099,-35.521]],"c":false}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.704,-35.837]],"c":false}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-52.121,-36.303]],"c":false}],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-51.225,-37.02]],"c":false}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-49.839,-38.129]],"c":false}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-48.75,-39]],"c":false}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.902,-21.75],[-45.458,-39]],"c":false}],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-9.002,-21.75],[-34.21,-39]],"c":false}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.091,-21.75],[-15.153,-39]],"c":false}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1.396,-21.75],[6.137,-39]],"c":false}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5.896,-21.75],[23.596,-39]],"c":false}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.012,-21.75],[35.686,-39]],"c":false}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[10.941,-21.75],[43.172,-39]],"c":false}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[11.95,-21.75],[47.087,-39]],"c":false}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[48.25,-39]],"c":false}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[50.438,-37.682]],"c":false}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[56.89,-33.796]],"c":false}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[63.494,-29.819]],"c":false}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[67.635,-27.325]],"c":false}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[69.675,-26.096]],"c":false}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[70.25,-25.75]],"c":false}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[74.993,-25.75]],"c":false}],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[82.329,-25.75]],"c":false}],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[98.171,-25.75]],"c":false}],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[105.507,-25.75]],"c":false}],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[110.25,-25.75]],"c":false}],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[109.817,-25.803]],"c":false}],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[108.573,-25.957]],"c":false}],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[106.583,-26.202]],"c":false}],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[103.901,-26.533]],"c":false}],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[100.571,-26.943]],"c":false}],"t":223,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[96.627,-27.43]],"c":false}],"t":224,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[92.1,-27.988]],"c":false}],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[87.015,-28.615]],"c":false}],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[81.392,-29.308]],"c":false}],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[75.25,-30.065]],"c":false}],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[68.606,-30.884]],"c":false}],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[61.472,-31.764]],"c":false}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[53.861,-32.702]],"c":false}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[45.784,-33.698]],"c":false}],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[37.25,-34.75]],"c":false}],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[44.779,-36.059]],"c":false}],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[50.248,-37.011]],"c":false}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[53.926,-37.65]],"c":false}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[56.306,-38.064]],"c":false}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[57.827,-38.329]],"c":false}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[58.794,-38.497]],"c":false}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[59.404,-38.603]],"c":false}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[59.782,-38.669]],"c":false}],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[60.01,-38.708]],"c":false}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[60.14,-38.731]],"c":false}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[60.208,-38.743]],"c":false}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[60.25,-38.75]],"c":false}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[60.059,-38.739]],"c":false}],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[59.562,-38.712]],"c":false}],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[58.827,-38.671]],"c":false}],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[57.889,-38.619]],"c":false}],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[56.769,-38.557]],"c":false}],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[55.47,-38.484]],"c":false}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[53.99,-38.402]],"c":false}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[52.313,-38.309]],"c":false}],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[50.406,-38.203]],"c":false}],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[48.21,-38.081]],"c":false}],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[45.599,-37.936]],"c":false}],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[42.25,-37.75]],"c":false}],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[42.797,-37.659]],"c":false}],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[44.055,-37.449]],"c":false}],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[45.566,-37.197]],"c":false}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[47.075,-36.946]],"c":false}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[48.466,-36.714]],"c":false}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[49.697,-36.509]],"c":false}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[50.76,-36.332]],"c":false}],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[51.659,-36.182]],"c":false}],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[52.403,-36.058]],"c":false}],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[53.005,-35.957]],"c":false}],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[53.476,-35.879]],"c":false}],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[53.827,-35.821]],"c":false}],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.067,-35.78]],"c":false}],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.205,-35.757]],"c":false}],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-35.75]],"c":false}],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-35.641]],"c":false}],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-35.273]],"c":false}],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-34.565]],"c":false}],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-33.397]],"c":false}],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-31.597]],"c":false}],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-29.011]],"c":false}],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-25.923]],"c":false}],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-23.417]],"c":false}],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-22.107]],"c":false}],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-21.75]],"c":false}],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.215],[54.25,-25.469]],"c":false}],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.54],[54.25,-28.071]],"c":false}],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.795],[54.25,-30.114]],"c":false}],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.003],[54.25,-31.77]],"c":false}],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.173],[54.25,-33.132]],"c":false}],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.313],[54.25,-34.254]],"c":false}],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.428],[54.25,-35.176]],"c":false}],"t":291,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.522],[54.25,-35.926]],"c":false}],"t":292,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.597],[54.25,-36.525]],"c":false}],"t":293,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.655],[54.25,-36.991]],"c":false}],"t":294,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.698],[54.25,-37.335]],"c":false}],"t":295,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.728],[54.25,-37.571]],"c":false}],"t":296,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.745],[54.25,-37.706]],"c":false}],"t":297,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.744],[54.25,-37.703]],"c":false}],"t":300,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.736],[54.25,-37.64]],"c":false}],"t":301,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.725],[54.25,-37.548]],"c":false}],"t":302,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.709],[54.25,-37.423]],"c":false}],"t":303,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.689],[54.25,-37.261]],"c":false}],"t":304,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.663],[54.25,-37.057]],"c":false}],"t":305,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.632],[54.25,-36.805]],"c":false}],"t":306,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.593],[54.25,-36.497]],"c":false}],"t":307,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.547],[54.25,-36.124]],"c":false}],"t":308,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.49],[54.25,-35.672]],"c":false}],"t":309,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.422],[54.25,-35.123]],"c":false}],"t":310,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.338],[54.25,-34.452]],"c":false}],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.234],[54.25,-33.619]],"c":false}],"t":312,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.102],[54.25,-32.563]],"c":false}],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.928],[54.25,-31.172]],"c":false}],"t":314,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.685],[54.25,-29.229]],"c":false}],"t":315,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.325],[54.25,-26.348]],"c":false}],"t":316,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.933],[54.25,-23.212]],"c":false}],"t":317,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[54.25,-21.75]],"c":false}],"t":318,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.081],[54.25,-24.402]],"c":false}],"t":319,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.642],[54.25,-28.884]],"c":false}],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.983],[54.25,-31.613]],"c":false}],"t":321,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.199],[54.25,-33.344]],"c":false}],"t":322,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.351],[54.25,-34.556]],"c":false}],"t":323,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.462],[54.25,-35.45]],"c":false}],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.547],[54.25,-36.124]],"c":false}],"t":325,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.611],[54.25,-36.637]],"c":false}],"t":326,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.659],[54.25,-37.024]],"c":false}],"t":327,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.695],[54.25,-37.311]],"c":false}],"t":328,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.721],[54.25,-37.516]],"c":false}],"t":329,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.738],[54.25,-37.651]],"c":false}],"t":330,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.747],[54.25,-37.726]],"c":false}],"t":331,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.748],[54.215,-37.737]],"c":false}],"t":333,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.743],[54.103,-37.694]],"c":false}],"t":334,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.733],[53.897,-37.616]],"c":false}],"t":335,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.718],[53.577,-37.494]],"c":false}],"t":336,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.696],[53.114,-37.317]],"c":false}],"t":337,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.665],[52.467,-37.071]],"c":false}],"t":338,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.623],[51.579,-36.732]],"c":false}],"t":339,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.565],[50.358,-36.268]],"c":false}],"t":340,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.484],[48.671,-35.624]],"c":false}],"t":341,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.372],[46.318,-34.728]],"c":false}],"t":342,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.22],[43.116,-33.508]],"c":false}],"t":343,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-23.035],[39.233,-32.029]],"c":false}],"t":344,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.852],[35.389,-30.565]],"c":false}],"t":345,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.696],[32.113,-29.317]],"c":false}],"t":346,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.569],[29.44,-28.299]],"c":false}],"t":347,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.464],[27.247,-27.463]],"c":false}],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.377],[25.416,-26.766]],"c":false}],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.303],[23.861,-26.173]],"c":false}],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.239],[22.522,-25.663]],"c":false}],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.184],[21.354,-25.218]],"c":false}],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.135],[20.327,-24.827]],"c":false}],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.091],[19.418,-24.481]],"c":false}],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.053],[18.608,-24.172]],"c":false}],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-22.018],[17.882,-23.896]],"c":false}],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.987],[17.231,-23.648]],"c":false}],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.959],[16.645,-23.424]],"c":false}],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.934],[16.117,-23.223]],"c":false}],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.911],[15.64,-23.041]],"c":false}],"t":360,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.891],[15.209,-22.877]],"c":false}],"t":361,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.872],[14.82,-22.729]],"c":false}],"t":362,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.856],[14.469,-22.595]],"c":false}],"t":363,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.841],[14.153,-22.475]],"c":false}],"t":364,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.827],[13.869,-22.367]],"c":false}],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.815],[13.615,-22.27]],"c":false}],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.804],[13.387,-22.183]],"c":false}],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.795],[13.185,-22.106]],"c":false}],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.786],[13.007,-22.038]],"c":false}],"t":369,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.779],[12.851,-21.979]],"c":false}],"t":370,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.772],[12.716,-21.927]],"c":false}],"t":371,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.767],[12.6,-21.883]],"c":false}],"t":372,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.762],[12.502,-21.846]],"c":false}],"t":373,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.758],[12.422,-21.816]],"c":false}],"t":374,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.755],[12.358,-21.791]],"c":false}],"t":375,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.753],[12.31,-21.773]],"c":false}],"t":376,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.751],[12.276,-21.76]],"c":false}],"t":377,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[12.25,-21.75],[12.256,-21.752]],"c":false}],"t":378,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[63.97],"t":39,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.855],"t":40,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":41,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.922],"t":42,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.99],"t":43,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.699],"t":44,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.087],"t":45,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.712],"t":46,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.461],"t":47,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.285],"t":48,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.163],"t":49,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.08],"t":50,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.028],"t":51,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","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":1,"k":[{"i":{"x":0,"y":0.96},"o":{"x":0.61,"y":0},"t":38,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-100.574],[-0.443,-79.498],[-11.742,-100.574]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":52,"s":[{"i":[[-5.169,3.179],[12.869,0],[-4.198,-2.581]],"o":[[4.685,-2.881],[-11.625,0],[5.169,3.179]],"v":[[7.5,-133.761],[-0.488,-112.685],[-8.756,-133.761]],"c":true}]},{"i":{"x":0.22,"y":1},"o":{"x":0.167,"y":0},"t":70,"s":[{"i":[[-4.397,3.179],[10.946,0],[-3.57,-2.581]],"o":[[3.985,-2.881],[-9.888,0],[4.397,3.179]],"v":[[6.349,-98.761],[-0.446,-77.685],[-7.478,-98.761]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.61,"y":0},"t":84,"s":[{"i":[[-7.314,2.551],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.314,2.551]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":87,"s":[{"i":[[-7.314,2.551],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.314,2.551]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":104,"s":[{"i":[[-4.397,3.179],[10.946,0],[-3.57,-2.581]],"o":[[3.985,-2.881],[-9.888,0],[4.397,3.179]],"v":[[6.349,-98.761],[-0.446,-77.685],[-7.478,-98.761]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":118,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0.8,"y":0.15},"o":{"x":0.3,"y":0},"t":119,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":129,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-93.574],[-0.443,-72.498],[-11.742,-93.574]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.3,"y":0},"t":144,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0.95,"y":0.3},"o":{"x":0.9,"y":0},"t":146,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.05,"y":0.7},"t":156,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-93.574],[-0.443,-72.498],[-11.742,-93.574]],"c":true}]},{"i":{"x":0.58,"y":1},"o":{"x":0.42,"y":0},"t":175,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-103.574],[-0.443,-82.498],[-11.742,-103.574]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.88,"y":0},"t":187,"s":[{"i":[[-4.761,3.179],[11.853,0],[-3.866,-2.581]],"o":[[4.316,-2.881],[-10.708,0],[4.761,3.179]],"v":[[7.005,-103.574],[-0.353,-82.498],[-7.969,-103.574]],"c":true}]},{"i":{"x":0.39,"y":1},"o":{"x":0.37,"y":0},"t":197,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.531,-98.324],[-0.385,-77.248],[-11.685,-98.324]],"c":true}]},{"i":{"x":0.37,"y":1},"o":{"x":0.33,"y":0},"t":206,"s":[{"i":[[-7.064,-3.179],[17.586,0],[-5.736,2.581]],"o":[[6.403,2.881],[-15.887,0],[7.064,-3.179]],"v":[[10.645,54.262],[-0.271,33.186],[-11.57,54.262]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":212,"s":[{"i":[[-5.201,-3.179],[12.948,0],[-4.224,2.581]],"o":[[4.714,2.881],[-11.697,0],[5.201,-3.179]],"v":[[7.839,75.262],[-0.198,54.186],[-8.518,75.262]],"c":true}]},{"i":{"x":0.6,"y":0.28},"o":{"x":0.26,"y":0},"t":218,"s":[{"i":[[-5.201,-3.179],[12.948,0],[-4.224,2.581]],"o":[[4.714,2.881],[-11.697,0],[5.201,-3.179]],"v":[[7.839,75.262],[-0.198,54.186],[-8.518,75.262]],"c":true}]},{"i":{"x":0.36,"y":1},"o":{"x":0.193,"y":1},"t":233,"s":[{"i":[[-5.201,-3.179],[12.948,0],[-4.224,2.581]],"o":[[4.714,2.881],[-11.697,0],[5.201,-3.179]],"v":[[7.839,44.262],[-0.198,23.186],[-8.518,44.262]],"c":true}]},{"i":{"x":0.8,"y":0.47},"o":{"x":0.3,"y":0},"t":247,"s":[{"i":[[-7.064,-3.179],[17.586,0],[-5.736,2.581]],"o":[[6.403,2.881],[-15.887,0],[7.064,-3.179]],"v":[[10.562,66.762],[-0.355,45.686],[-11.654,66.762]],"c":true}]},{"i":{"x":0.36,"y":1},"o":{"x":0.17,"y":0},"t":259,"s":[{"i":[[-5.201,-3.179],[12.948,0],[-4.224,2.581]],"o":[[4.714,2.881],[-11.697,0],[5.201,-3.179]],"v":[[7.821,48.012],[-0.216,26.936],[-8.536,48.012]],"c":true}]},{"i":{"x":0.61,"y":1},"o":{"x":0.68,"y":0},"t":274,"s":[{"i":[[-7.509,-1.904],[17.586,0],[-5.736,2.581]],"o":[[6.403,2.881],[-15.887,0],[7.509,-1.904]],"v":[[10.624,61.012],[-0.293,39.936],[-11.592,61.012]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":284,"s":[{"i":[[-5.201,-3.179],[12.948,0],[-4.224,2.581]],"o":[[4.714,2.881],[-11.697,0],[5.201,-3.179]],"v":[[7.821,58.887],[-0.216,37.811],[-8.536,58.887]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":298,"s":[{"i":[[-7.509,-1.904],[17.586,0],[-5.736,2.581]],"o":[[6.403,2.881],[-15.887,0],[7.509,-1.904]],"v":[[10.624,61.012],[-0.293,39.936],[-11.592,61.012]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":318,"s":[{"i":[[-5.201,-3.179],[12.948,0],[-4.224,2.581]],"o":[[4.714,2.881],[-11.697,0],[5.201,-3.179]],"v":[[7.821,58.887],[-0.216,37.811],[-8.536,58.887]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.44,"y":0},"t":332,"s":[{"i":[[-7.509,-1.904],[17.586,0],[-5.736,2.581]],"o":[[6.403,2.881],[-15.887,0],[7.509,-1.904]],"v":[[10.624,61.012],[-0.293,39.936],[-11.592,61.012]],"c":true}]},{"t":379,"s":[{"i":[[-5.755,-1.904],[13.479,0],[-4.396,2.581]],"o":[[4.907,2.881],[-12.176,0],[5.755,-1.904]],"v":[[8.138,12.762],[-0.229,-8.314],[-8.889,12.762]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.228,-164.922],"ix":2},"a":{"a":0,"k":[-0.228,-164.922],"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":3,"mn":"ADBE Vector Group","hd":false}],"ip":38,"op":380,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":549,"s":[100]},{"t":555,"s":[0]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.426],"y":[0.515]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[640]},{"i":{"x":[0.404],"y":[1]},"o":{"x":[0.654],"y":[-0.5]},"t":18,"s":[634]},{"t":38,"s":[649]}],"ix":3},"y":{"a":0,"k":469,"ix":4}},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.48,"y":0.2},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.1,"y":1},"o":{"x":0.44,"y":0},"t":18,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":24,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.643,-21.893],[-35.357,-21.893]],"c":false}]},{"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-37]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.52],"y":[0.96]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[48]},{"t":18,"s":[64]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","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":1,"k":[{"i":{"x":0.51,"y":1},"o":{"x":0.88,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":24,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.643,-21.893],[-35.357,-21.893]],"c":false}]},{"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-7.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.52],"y":[0.96]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[48]},{"t":18,"s":[64]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":1,"k":[{"t":0,"s":[0],"h":1},{"t":12,"s":[100],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","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":1,"k":[{"i":{"x":0.51,"y":1},"o":{"x":0.88,"y":0},"t":0,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.52,-34.949],[-0.396,-13.873],[-11.695,-34.949]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":24,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.531,-85.949],[-0.385,-64.873],[-11.685,-85.949]],"c":true}]},{"t":38,"s":[{"i":[[-7.064,3.179],[17.586,0],[-5.736,-2.581]],"o":[[6.403,-2.881],[-15.887,0],[7.064,3.179]],"v":[[10.474,-100.574],[-0.443,-79.498],[-11.742,-100.574]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.859,0.961,0.62,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.859,0.961,0.62,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.266,-177.656],"ix":2},"a":{"a":0,"k":[-0.266,-177.656],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":0,"s":[0],"h":1},{"t":12,"s":[100],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Bottom Rounding","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":38,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".surfaceBack","cl":"surfaceBack","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,400,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[1280,800],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Rectangle 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.952941179276,0.647058844566,0.72549021244,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":380,"st":-145,"ct":1,"bm":0}]},{"id":"comp_2","nm":"Part01_Thumb_Back_Tablet_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"THUMB REPO","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":1360,"ix":3},"y":{"a":0,"k":835,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":89,"op":410,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"HAND NULL","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[-0.364]},"t":89,"s":[62]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":140,"s":[60]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":195,"s":[67]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":224,"s":[67]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":257,"s":[47]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":272,"s":[47]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":305,"s":[67]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":322,"s":[67]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":355,"s":[47]},{"i":{"x":[0.53],"y":[1]},"o":{"x":[0.69],"y":[0]},"t":363,"s":[47]},{"t":410,"s":[62]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":89,"s":[0]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":159,"s":[-104]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":195,"s":[-85]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":224,"s":[-85]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":257,"s":[-131]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":272,"s":[-131]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":305,"s":[-85]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":322,"s":[-85]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":355,"s":[-131]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":363,"s":[-131]},{"t":410,"s":[0]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.194],"y":[0]},"t":89,"s":[0]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":149,"s":[-120]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":195,"s":[-134]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":257,"s":[-134]},{"i":{"x":[0.44],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":265,"s":[-118]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":272,"s":[-118]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":305,"s":[-134]},{"i":{"x":[0.55],"y":[1]},"o":{"x":[0.86],"y":[0]},"t":355,"s":[-134]},{"t":410,"s":[0]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":89,"op":410,"st":89,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"⨳ Thumb KO","parent":2,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"k":[{"s":[27.686],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.665],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.634],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.59],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.53],"t":165,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.45],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.35],"t":167,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.227],"t":168,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.086],"t":169,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.935],"t":170,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.785],"t":171,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.646],"t":172,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.519],"t":173,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.408],"t":174,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.31],"t":175,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.224],"t":176,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.149],"t":177,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.083],"t":178,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.026],"t":179,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.975],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.931],"t":181,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.892],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.858],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.829],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.803],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.781],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.762],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.747],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.723],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"p":{"k":[{"s":[0,0,0],"t":224,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.006,0.001,0],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.034,0.004,0],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.087,0.012,0],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.168,0.022,0],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.28,0.037,0],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.426,0.057,0],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.61,0.081,0],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.84,0.112,0],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.122,0.15,0],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.467,0.196,0],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.891,0.252,0],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.417,0.322,0],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.074,0.41,0],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.903,0.521,0],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.968,0.663,0],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.349,0.847,0],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.113,1.082,0],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.125,1.351,0],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.009,1.602,0],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-13.512,1.802,0],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.643,1.953,0],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.498,2.067,0],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.155,2.155,0],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.664,2.223,0],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.066,2.276,0],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.383,2.319,0],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.634,2.352,0],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.83,2.378,0],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.977,2.398,0],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.083,2.412,0],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.152,2.421,0],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.188,2.426,0],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.196,2.427,0],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.154,2.421,0],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18,2.401,0],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.724,2.364,0],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.318,2.31,0],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.773,2.237,0],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.074,2.144,0],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.203,2.028,0],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.164,1.889,0],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.963,1.729,0],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-11.64,1.553,0],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.251,1.367,0],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.853,1.181,0],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-7.497,1,0],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.225,0.83,0],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.072,0.676,0],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.05,0.54,0],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.163,0.422,0],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.409,0.321,0],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.778,0.237,0],"t":291,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.262,0.168,0],"t":292,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.847,0.113,0],"t":293,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.522,0.07,0],"t":294,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.28,0.037,0],"t":295,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.115,0.015,0],"t":296,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.024,0.003,0],"t":297,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":298,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":322,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.006,0.001,0],"t":323,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.034,0.004,0],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.087,0.012,0],"t":325,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.169,0.022,0],"t":326,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.281,0.037,0],"t":327,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.428,0.057,0],"t":328,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.613,0.082,0],"t":329,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.843,0.112,0],"t":330,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.125,0.15,0],"t":331,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.47,0.196,0],"t":332,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.893,0.252,0],"t":333,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.417,0.322,0],"t":334,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.074,0.41,0],"t":335,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.902,0.52,0],"t":336,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.972,0.663,0],"t":337,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.365,0.849,0],"t":338,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.132,1.085,0],"t":339,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.144,1.353,0],"t":340,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.023,1.604,0],"t":341,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-13.514,1.803,0],"t":342,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.643,1.953,0],"t":343,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.498,2.067,0],"t":344,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.156,2.155,0],"t":345,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.668,2.223,0],"t":346,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.069,2.277,0],"t":347,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.387,2.319,0],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.637,2.352,0],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.832,2.378,0],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.978,2.398,0],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.084,2.412,0],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.152,2.421,0],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.188,2.426,0],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.196,2.427,0],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.029,2.42,0],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.353,2.39,0],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.81,2.321,0],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.704,2.183,0],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.541,1.998,0],"t":360,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.346,1.856,0],"t":361,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.22,1.761,0],"t":362,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.76,1.696,0],"t":363,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.728,1.65,0],"t":364,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.007,1.618,0],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.535,1.594,0],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0.905,1.578,0],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1.145,1.567,0],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1.273,1.561,0],"t":369,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1.306,1.56,0],"t":370,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"a":{"a":0,"k":[0,49,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":25,"nm":"Elevation","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[0,0,0,0.25],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":63.75,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":180,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":4,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":8,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.248,-2.906],[27.304,14.385],[26.089,4.059],[20.871,-4.348],[30.147,15.649],[-19.422,9.854],[-43.806,10.634],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.269,2.536],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.36],[31.034,-15.736],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.277,97.813],[174.602,194.376],[32.184,139.048],[-46.229,116.512],[-118.127,117.967],[-234.631,118.82],[-235.209,50.133],[-138.859,16.657],[-91.152,5.484],[-12.612,-36.255]],"c":true}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.254,-2.906],[27.304,14.385],[26.089,4.059],[20.871,-4.349],[30.145,15.636],[-19.423,9.849],[-43.805,10.636],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.274,2.551],[-24.064,-12.677],[-29.278,-4.639],[-20.871,4.349],[-30.145,-15.346],[31.035,-15.728],[13.48,-3.273],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.44,97.788],[174.561,194.332],[32.184,139.048],[-46.201,116.515],[-118.124,117.99],[-234.541,118.786],[-235.113,50.147],[-138.862,16.634],[-91.098,5.471],[-12.612,-36.255]],"c":true}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.265,-2.907],[27.304,14.385],[26.089,4.061],[20.871,-4.351],[30.142,15.612],[-19.424,9.84],[-43.805,10.64],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.283,2.579],[-24.064,-12.677],[-29.278,-4.641],[-20.871,4.351],[-30.142,-15.322],[31.037,-15.713],[13.479,-3.274],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.739,97.741],[174.487,194.252],[32.184,139.048],[-46.15,116.52],[-118.119,118.032],[-234.376,118.725],[-234.937,50.172],[-138.867,16.593],[-91,5.449],[-12.612,-36.255]],"c":true}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.281,-2.908],[27.304,14.385],[26.09,4.063],[20.871,-4.353],[30.137,15.574],[-19.426,9.825],[-43.804,10.646],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.296,2.623],[-24.064,-12.677],[-29.278,-4.643],[-20.871,4.353],[-30.138,-15.285],[31.04,-15.69],[13.479,-3.276],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.199,97.668],[174.373,194.129],[32.184,139.048],[-46.071,116.527],[-118.111,118.096],[-234.122,118.63],[-234.666,50.21],[-138.875,16.528],[-90.848,5.413],[-12.612,-36.255]],"c":true}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.305,-2.909],[27.304,14.385],[26.09,4.066],[20.87,-4.356],[30.131,15.521],[-19.428,9.805],[-43.803,10.656],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.315,2.685],[-24.064,-12.677],[-29.279,-4.647],[-20.87,4.356],[-30.131,-15.233],[31.044,-15.657],[13.479,-3.279],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.855,97.565],[174.21,193.953],[32.184,139.048],[-45.958,116.538],[-118.1,118.187],[-233.759,118.495],[-234.28,50.264],[-138.886,16.437],[-90.631,5.363],[-12.612,-36.255]],"c":true}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.338,-2.911],[27.304,14.385],[26.091,4.071],[20.87,-4.36],[30.122,15.448],[-19.432,9.777],[-43.801,10.668],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.34,2.77],[-24.064,-12.677],[-29.279,-4.652],[-20.87,4.36],[-30.122,-15.161],[31.049,-15.612],[13.478,-3.283],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[312.749,97.424],[173.988,193.714],[32.184,139.048],[-45.804,116.554],[-118.084,118.312],[-233.265,118.311],[-233.754,50.339],[-138.902,16.312],[-90.336,5.294],[-12.612,-36.255]],"c":true}],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.381,-2.914],[27.304,14.385],[26.091,4.076],[20.869,-4.366],[30.11,15.352],[-19.436,9.74],[-43.799,10.684],[-18.621,4.302],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.374,2.881],[-24.064,-12.677],[-29.28,-4.658],[-20.869,4.366],[-30.11,-15.067],[31.056,-15.554],[13.478,-3.288],[35.364,-7.835],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[313.924,97.239],[173.696,193.399],[32.184,139.048],[-45.602,116.573],[-118.064,118.475],[-232.616,118.069],[-233.063,50.436],[-138.922,16.148],[-89.947,5.204],[-12.612,-36.255]],"c":true}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.435,-2.918],[27.304,14.385],[26.092,4.084],[20.868,-4.373],[30.095,15.23],[-19.442,9.693],[-43.797,10.705],[-18.621,4.304],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.417,3.023],[-24.064,-12.677],[-29.281,-4.667],[-20.868,4.373],[-30.095,-14.947],[31.066,-15.479],[13.477,-3.294],[35.364,-7.839],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[315.418,97.004],[173.325,192.999],[32.184,139.048],[-45.344,116.599],[-118.038,118.683],[-231.791,117.761],[-232.184,50.561],[-138.948,15.939],[-89.453,5.089],[-12.612,-36.255]],"c":true}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.502,-2.922],[27.304,14.385],[26.093,4.093],[20.867,-4.381],[30.076,15.082],[-19.45,9.636],[-43.794,10.731],[-18.62,4.307],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.469,3.195],[-24.064,-12.677],[-29.282,-4.677],[-20.867,4.381],[-30.077,-14.8],[31.077,-15.388],[13.476,-3.302],[35.363,-7.843],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[317.239,96.717],[172.873,192.511],[32.184,139.048],[-45.031,116.63],[-118.006,118.937],[-230.785,117.386],[-231.113,50.712],[-138.98,15.685],[-88.852,4.95],[-12.612,-36.255]],"c":true}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[46.578,-2.927],[27.304,14.385],[26.095,4.103],[20.866,-4.391],[30.055,14.911],[-19.458,9.57],[-43.79,10.76],[-18.62,4.309],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.529,3.394],[-24.064,-12.677],[-29.284,-4.688],[-20.866,4.391],[-30.056,-14.632],[31.09,-15.284],[13.475,-3.311],[35.363,-7.848],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[319.33,96.388],[172.353,191.951],[32.184,139.048],[-44.671,116.665],[-117.97,119.228],[-229.63,116.956],[-229.883,50.886],[-139.016,15.393],[-88.161,4.789],[-12.612,-36.255]],"c":true}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.659,-2.932],[27.304,14.385],[26.096,4.114],[20.865,-4.402],[30.032,14.729],[-19.467,9.5],[-43.786,10.791],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.593,3.605],[-24.064,-12.677],[-29.285,-4.701],[-20.865,4.402],[-30.034,-14.453],[31.104,-15.172],[13.474,-3.32],[35.362,-7.853],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[321.563,96.037],[171.798,191.352],[32.184,139.048],[-44.287,116.703],[-117.931,119.539],[-228.396,116.496],[-228.569,51.071],[-139.055,15.081],[-87.423,4.618],[-12.612,-36.255]],"c":true}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.74,-2.937],[27.304,14.385],[26.097,4.125],[20.863,-4.412],[30.01,14.548],[-19.475,9.43],[-43.782,10.822],[-18.619,4.315],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.657,3.815],[-24.064,-12.677],[-29.287,-4.713],[-20.863,4.412],[-30.012,-14.275],[31.118,-15.062],[13.472,-3.33],[35.361,-7.858],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[323.779,95.688],[171.248,190.759],[32.184,139.048],[-43.906,116.74],[-117.893,119.847],[-227.172,116.04],[-227.265,51.256],[-139.093,14.771],[-86.691,4.447],[-12.612,-36.255]],"c":true}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.816,-2.941],[27.304,14.385],[26.099,4.135],[20.862,-4.422],[29.989,14.379],[-19.484,9.365],[-43.779,10.851],[-18.619,4.318],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.717,4.012],[-24.064,-12.677],[-29.288,-4.725],[-20.862,4.422],[-29.991,-14.109],[31.13,-14.958],[13.471,-3.339],[35.361,-7.863],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[325.853,95.361],[170.733,190.203],[32.184,139.048],[-43.549,116.775],[-117.857,120.136],[-226.026,115.613],[-226.045,51.428],[-139.129,14.481],[-86.005,4.288],[-12.612,-36.255]],"c":true}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.884,-2.946],[27.304,14.385],[26.1,4.144],[20.861,-4.431],[29.97,14.227],[-19.491,9.306],[-43.776,10.877],[-18.619,4.32],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.77,4.189],[-24.064,-12.677],[-29.29,-4.735],[-20.861,4.431],[-29.973,-13.958],[31.142,-14.865],[13.47,-3.347],[35.36,-7.867],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[327.725,95.067],[170.268,189.701],[32.184,139.048],[-43.227,116.807],[-117.825,120.397],[-224.993,115.228],[-224.944,51.584],[-139.162,14.22],[-85.387,4.145],[-12.612,-36.255]],"c":true}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[46.945,-2.95],[27.304,14.385],[26.101,4.152],[20.86,-4.438],[29.953,14.092],[-19.498,9.254],[-43.773,10.9],[-18.618,4.323],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.818,4.346],[-24.064,-12.677],[-29.291,-4.744],[-20.86,4.438],[-29.956,-13.825],[31.152,-14.782],[13.469,-3.354],[35.36,-7.871],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[329.38,94.806],[169.857,189.258],[32.184,139.048],[-42.942,116.835],[-117.796,120.628],[-224.078,114.887],[-223.97,51.721],[-139.191,13.989],[-84.84,4.017],[-12.612,-36.255]],"c":true}],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.998,-2.953],[27.304,14.385],[26.102,4.159],[20.859,-4.445],[29.938,13.973],[-19.503,9.208],[-43.77,10.92],[-18.618,4.325],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.859,4.484],[-24.064,-12.677],[-29.292,-4.752],[-20.859,4.445],[-29.942,-13.709],[31.161,-14.71],[13.469,-3.36],[35.359,-7.874],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[330.832,94.577],[169.496,188.869],[32.184,139.048],[-42.692,116.859],[-117.771,120.83],[-223.276,114.588],[-223.115,51.842],[-139.216,13.786],[-84.36,3.906],[-12.612,-36.255]],"c":true}],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.044,-2.956],[27.304,14.385],[26.102,4.165],[20.858,-4.451],[29.926,13.87],[-19.508,9.169],[-43.768,10.938],[-18.618,4.326],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.896,4.604],[-24.064,-12.677],[-29.293,-4.759],[-20.858,4.451],[-29.929,-13.607],[31.169,-14.646],[13.468,-3.366],[35.359,-7.877],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[332.102,94.377],[169.18,188.529],[32.184,139.048],[-42.473,116.881],[-117.749,121.007],[-222.574,114.326],[-222.368,51.948],[-139.238,13.609],[-83.94,3.809],[-12.612,-36.255]],"c":true}],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.084,-2.958],[27.304,14.385],[26.103,4.171],[20.858,-4.456],[29.914,13.779],[-19.513,9.134],[-43.766,10.953],[-18.618,4.328],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.928,4.71],[-24.064,-12.677],[-29.293,-4.765],[-20.858,4.456],[-29.918,-13.517],[31.176,-14.591],[13.467,-3.37],[35.359,-7.879],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[333.213,94.203],[168.905,188.231],[32.184,139.048],[-42.282,116.9],[-117.73,121.161],[-221.961,114.098],[-221.715,52.04],[-139.257,13.453],[-83.573,3.723],[-12.612,-36.255]],"c":true}],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.12,-2.961],[27.304,14.385],[26.104,4.175],[20.857,-4.461],[29.904,13.7],[-19.517,9.103],[-43.764,10.967],[-18.617,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.956,4.802],[-24.064,-12.677],[-29.294,-4.771],[-20.857,4.461],[-29.908,-13.439],[31.182,-14.542],[13.467,-3.375],[35.358,-7.882],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[334.185,94.049],[168.663,187.971],[32.184,139.048],[-42.115,116.916],[-117.713,121.297],[-221.424,113.897],[-221.143,52.121],[-139.274,13.318],[-83.252,3.649],[-12.612,-36.255]],"c":true}],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.151,-2.962],[27.304,14.385],[26.104,4.18],[20.857,-4.465],[29.896,13.63],[-19.52,9.076],[-43.763,10.979],[-18.617,4.33],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.98,4.883],[-24.064,-12.677],[-29.295,-4.776],[-20.857,4.465],[-29.9,-13.371],[31.187,-14.5],[13.466,-3.378],[35.358,-7.884],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[335.037,93.915],[168.451,187.742],[32.184,139.048],[-41.968,116.931],[-117.698,121.415],[-220.953,113.722],[-220.641,52.192],[-139.289,13.199],[-82.97,3.583],[-12.612,-36.255]],"c":true}],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.178,-2.964],[27.304,14.385],[26.105,4.183],[20.856,-4.468],[29.888,13.569],[-19.523,9.053],[-43.762,10.989],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.002,4.953],[-24.064,-12.677],[-29.295,-4.78],[-20.856,4.469],[-29.892,-13.311],[31.192,-14.462],[13.466,-3.382],[35.358,-7.885],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[335.785,93.798],[168.266,187.542],[32.184,139.048],[-41.839,116.943],[-117.685,121.519],[-220.54,113.568],[-220.201,52.254],[-139.302,13.094],[-82.723,3.526],[-12.612,-36.255]],"c":true}],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.202,-2.966],[27.304,14.385],[26.105,4.186],[20.856,-4.471],[29.882,13.516],[-19.526,9.032],[-43.76,10.999],[-18.617,4.332],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.02,5.016],[-24.064,-12.677],[-29.296,-4.783],[-20.856,4.472],[-29.886,-13.258],[31.196,-14.43],[13.466,-3.384],[35.358,-7.887],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[336.44,93.694],[168.103,187.366],[32.184,139.048],[-41.727,116.954],[-117.674,121.611],[-220.178,113.433],[-219.816,52.308],[-139.313,13.003],[-82.506,3.475],[-12.612,-36.255]],"c":true}],"t":181,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.223,-2.967],[27.304,14.385],[26.105,4.189],[20.855,-4.474],[29.876,13.469],[-19.528,9.014],[-43.759,11.007],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.037,5.07],[-24.064,-12.677],[-29.296,-4.787],[-20.855,4.474],[-29.88,-13.212],[31.2,-14.401],[13.465,-3.387],[35.357,-7.888],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[337.014,93.604],[167.96,187.212],[32.184,139.048],[-41.628,116.964],[-117.664,121.691],[-219.861,113.315],[-219.478,52.356],[-139.323,12.922],[-82.317,3.431],[-12.612,-36.255]],"c":true}],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.241,-2.968],[27.304,14.385],[26.106,4.192],[20.855,-4.477],[29.871,13.428],[-19.53,8.998],[-43.759,11.014],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.051,5.117],[-24.064,-12.677],[-29.296,-4.789],[-20.855,4.477],[-29.875,-13.172],[31.203,-14.376],[13.465,-3.389],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[337.517,93.525],[167.835,187.078],[32.184,139.048],[-41.541,116.973],[-117.655,121.761],[-219.583,113.212],[-219.183,52.398],[-139.332,12.852],[-82.151,3.393],[-12.612,-36.255]],"c":true}],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.257,-2.969],[27.304,14.385],[26.106,4.194],[20.855,-4.479],[29.866,13.393],[-19.532,8.985],[-43.758,11.02],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.064,5.159],[-24.064,-12.677],[-29.297,-4.792],[-20.855,4.479],[-29.87,-13.137],[31.206,-14.354],[13.465,-3.391],[35.357,-7.89],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[337.954,93.456],[167.727,186.961],[32.184,139.048],[-41.466,116.98],[-117.648,121.821],[-219.342,113.121],[-218.925,52.434],[-139.339,12.791],[-82.006,3.359],[-12.612,-36.255]],"c":true}],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.271,-2.97],[27.304,14.385],[26.106,4.196],[20.855,-4.48],[29.862,13.362],[-19.533,8.973],[-43.757,11.025],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.075,5.195],[-24.064,-12.677],[-29.297,-4.794],[-20.855,4.48],[-29.867,-13.106],[31.208,-14.335],[13.465,-3.392],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.333,93.396],[167.633,186.859],[32.184,139.048],[-41.401,116.986],[-117.641,121.874],[-219.132,113.043],[-218.702,52.466],[-139.346,12.738],[-81.881,3.33],[-12.612,-36.255]],"c":true}],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.283,-2.971],[27.304,14.385],[26.106,4.197],[20.854,-4.482],[29.859,13.335],[-19.534,8.962],[-43.757,11.029],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.084,5.226],[-24.064,-12.677],[-29.297,-4.796],[-20.855,4.482],[-29.863,-13.08],[31.21,-14.319],[13.465,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.66,93.345],[167.551,186.772],[32.184,139.048],[-41.344,116.992],[-117.635,121.92],[-218.951,112.976],[-218.51,52.493],[-139.352,12.693],[-81.773,3.305],[-12.612,-36.255]],"c":true}],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.293,-2.971],[27.304,14.385],[26.107,4.199],[20.854,-4.483],[29.856,13.312],[-19.535,8.954],[-43.756,11.033],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.092,5.252],[-24.064,-12.677],[-29.297,-4.797],[-20.854,4.483],[-29.861,-13.057],[31.212,-14.305],[13.464,-3.395],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.94,93.301],[167.482,186.697],[32.184,139.048],[-41.296,116.997],[-117.631,121.959],[-218.797,112.919],[-218.345,52.516],[-139.357,12.654],[-81.681,3.284],[-12.612,-36.255]],"c":true}],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.302,-2.972],[27.304,14.385],[26.107,4.2],[20.854,-4.484],[29.854,13.293],[-19.536,8.946],[-43.756,11.037],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.099,5.275],[-24.064,-12.677],[-29.298,-4.799],[-20.854,4.484],[-29.858,-13.039],[31.213,-14.293],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.175,93.264],[167.423,186.634],[32.184,139.048],[-41.256,117.001],[-117.626,121.992],[-218.667,112.87],[-218.207,52.536],[-139.361,12.621],[-81.603,3.266],[-12.612,-36.255]],"c":true}],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.309,-2.972],[27.304,14.385],[26.107,4.201],[20.854,-4.485],[29.852,13.277],[-19.537,8.94],[-43.755,11.039],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.105,5.293],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.485],[-29.856,-13.023],[31.214,-14.283],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.371,93.233],[167.375,186.581],[32.184,139.048],[-41.222,117.004],[-117.623,122.019],[-218.559,112.83],[-218.091,52.552],[-139.364,12.593],[-81.538,3.25],[-12.612,-36.255]],"c":true}],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.315,-2.973],[27.304,14.385],[26.107,4.202],[20.854,-4.486],[29.85,13.264],[-19.538,8.935],[-43.755,11.042],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.109,5.308],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.855,-13.01],[31.215,-14.275],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.531,93.208],[167.335,186.538],[32.184,139.048],[-41.195,117.007],[-117.62,122.041],[-218.471,112.797],[-217.998,52.565],[-139.367,12.571],[-81.485,3.238],[-12.612,-36.255]],"c":true}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.319,-2.973],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.254],[-19.538,8.931],[-43.755,11.043],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.113,5.32],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-13],[31.216,-14.269],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.656,93.188],[167.304,186.505],[32.184,139.048],[-41.173,117.009],[-117.618,122.058],[-218.401,112.771],[-217.924,52.576],[-139.369,12.553],[-81.444,3.229],[-12.612,-36.255]],"c":true}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.323,-2.973],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.246],[-19.539,8.928],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.115,5.329],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.992],[31.217,-14.264],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.75,93.173],[167.281,186.48],[32.184,139.048],[-41.157,117.01],[-117.617,122.072],[-218.35,112.752],[-217.868,52.583],[-139.371,12.54],[-81.413,3.221],[-12.612,-36.255]],"c":true}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.325,-2.973],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.847,13.241],[-19.539,8.926],[-43.755,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.117,5.335],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.987],[31.217,-14.261],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.815,93.163],[167.265,186.462],[32.184,139.048],[-41.146,117.011],[-117.615,122.081],[-218.314,112.738],[-217.83,52.589],[-139.372,12.531],[-81.391,3.216],[-12.612,-36.255]],"c":true}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.331,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.486],[29.846,13.239],[-19.54,8.923],[-43.755,11.044],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.099,5.338],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.486],[-29.85,-12.985],[31.218,-14.257],[13.464,-3.398],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.849,93.158],[167.225,186.454],[32.184,139.048],[-41.137,117.012],[-117.618,122.088],[-218.289,112.723],[-217.8,52.588],[-139.369,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.345,-2.975],[27.304,14.385],[26.107,4.203],[20.855,-4.482],[29.843,13.244],[-19.541,8.919],[-43.757,11.035],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.037,5.33],[-24.064,-12.677],[-29.298,-4.802],[-20.855,4.482],[-29.848,-12.991],[31.221,-14.251],[13.465,-3.396],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.799,93.166],[167.137,186.468],[32.184,139.048],[-41.137,117.012],[-117.629,122.091],[-218.297,112.706],[-217.797,52.572],[-139.359,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.369,-2.976],[27.304,14.385],[26.107,4.203],[20.856,-4.475],[29.838,13.254],[-19.544,8.913],[-43.76,11.02],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.928,5.315],[-24.064,-12.677],[-29.298,-4.802],[-20.856,4.475],[-29.843,-13.001],[31.225,-14.24],[13.465,-3.391],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.711,93.179],[166.984,186.494],[32.184,139.048],[-41.137,117.012],[-117.649,122.096],[-218.311,112.676],[-217.79,52.544],[-139.341,12.523],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.404,-2.978],[27.304,14.385],[26.107,4.203],[20.857,-4.464],[29.83,13.269],[-19.548,8.902],[-43.764,10.997],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.765,5.295],[-24.064,-12.677],[-29.298,-4.802],[-20.857,4.464],[-29.835,-13.015],[31.231,-14.223],[13.467,-3.384],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.581,93.2],[166.757,186.531],[32.184,139.048],[-41.137,117.012],[-117.678,122.102],[-218.333,112.632],[-217.781,52.502],[-139.314,12.522],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.452,-2.981],[27.304,14.385],[26.107,4.203],[20.86,-4.45],[29.82,13.289],[-19.553,8.889],[-43.77,10.966],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.543,5.266],[-24.064,-12.677],[-29.298,-4.802],[-20.86,4.45],[-29.825,-13.036],[31.24,-14.201],[13.469,-3.374],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.403,93.228],[166.446,186.583],[32.184,139.048],[-41.137,117.012],[-117.718,122.112],[-218.362,112.572],[-217.769,52.444],[-139.277,12.521],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.516,-2.985],[27.304,14.385],[26.107,4.203],[20.863,-4.43],[29.806,13.316],[-19.56,8.87],[-43.777,10.926],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.252,5.228],[-24.064,-12.677],[-29.298,-4.802],[-20.863,4.431],[-29.811,-13.062],[31.251,-14.172],[13.471,-3.362],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.17,93.265],[166.038,186.651],[32.184,139.048],[-41.137,117.012],[-117.77,122.124],[-218.401,112.493],[-217.753,52.369],[-139.228,12.519],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.596,-2.99],[27.304,14.385],[26.107,4.203],[20.866,-4.406],[29.789,13.349],[-19.569,8.847],[-43.787,10.875],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-45.882,5.181],[-24.064,-12.677],[-29.298,-4.802],[-20.867,4.406],[-29.794,-13.096],[31.266,-14.135],[13.474,-3.346],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.873,93.311],[165.52,186.738],[32.184,139.048],[-41.137,117.012],[-117.836,122.139],[-218.449,112.393],[-217.732,52.273],[-139.167,12.517],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.697,-2.997],[27.304,14.385],[26.107,4.203],[20.871,-4.376],[29.767,13.391],[-19.58,8.818],[-43.8,10.811],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-45.419,5.121],[-24.064,-12.677],[-29.298,-4.802],[-20.871,4.376],[-29.773,-13.138],[31.284,-14.089],[13.478,-3.327],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.502,93.37],[164.872,186.846],[32.184,139.048],[-41.137,117.012],[-117.919,122.159],[-218.511,112.268],[-217.706,52.154],[-139.089,12.514],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.821,-3.005],[27.304,14.385],[26.107,4.203],[20.877,-4.338],[29.741,13.443],[-19.594,8.782],[-43.815,10.731],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-44.847,5.048],[-24.064,-12.677],[-29.298,-4.802],[-20.877,4.338],[-29.747,-13.19],[31.306,-14.031],[13.482,-3.302],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.044,93.442],[164.071,186.979],[32.184,139.048],[-41.137,117.012],[-118.022,122.183],[-218.586,112.113],[-217.675,52.006],[-138.994,12.51],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.974,-3.014],[27.304,14.385],[26.107,4.203],[20.884,-4.291],[29.708,13.507],[-19.612,8.738],[-43.834,10.634],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-44.143,4.957],[-24.064,-12.677],[-29.298,-4.802],[-20.884,4.292],[-29.715,-13.254],[31.333,-13.961],[13.488,-3.272],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[337.479,93.531],[163.084,187.144],[32.184,139.048],[-41.137,117.012],[-118.148,122.212],[-218.679,111.922],[-217.635,51.824],[-138.877,12.506],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[48.162,-3.026],[27.304,14.385],[26.107,4.203],[20.893,-4.234],[29.667,13.586],[-19.633,8.684],[-43.857,10.514],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-43.277,4.845],[-24.064,-12.677],[-29.298,-4.802],[-20.893,4.234],[-29.675,-13.332],[31.367,-13.874],[13.495,-3.235],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[336.785,93.64],[161.871,187.346],[32.184,139.048],[-41.137,117.012],[-118.304,122.249],[-218.793,111.688],[-217.587,51.6],[-138.732,12.5],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[48.395,-3.041],[27.304,14.385],[26.107,4.203],[20.904,-4.164],[29.617,13.683],[-19.659,8.617],[-43.885,10.365],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-42.207,4.708],[-24.064,-12.677],[-29.298,-4.802],[-20.904,4.164],[-29.626,-13.43],[31.408,-13.767],[13.504,-3.19],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[335.927,93.775],[160.372,187.596],[32.184,139.048],[-41.137,117.012],[-118.496,122.293],[-218.935,111.398],[-217.528,51.324],[-138.554,12.494],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[48.685,-3.059],[27.304,14.385],[26.107,4.203],[20.918,-4.076],[29.555,13.804],[-19.691,8.534],[-43.92,10.181],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-40.874,4.536],[-24.064,-12.677],[-29.298,-4.802],[-20.918,4.076],[-29.564,-13.551],[31.46,-13.634],[13.515,-3.133],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[334.858,93.943],[158.505,187.907],[32.184,139.048],[-41.137,117.012],[-118.735,122.349],[-219.111,111.037],[-217.453,50.98],[-138.332,12.485],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[49.051,-3.082],[27.304,14.385],[26.107,4.203],[20.935,-3.965],[29.476,13.957],[-19.732,8.428],[-43.965,9.947],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-39.19,4.319],[-24.064,-12.677],[-29.298,-4.802],[-20.935,3.965],[-29.487,-13.704],[31.526,-13.465],[13.529,-3.061],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[333.509,94.156],[156.147,188.3],[32.184,139.048],[-41.137,117.012],[-119.037,122.42],[-219.333,110.581],[-217.359,50.545],[-138.052,12.475],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[49.521,-3.111],[27.304,14.385],[26.107,4.203],[20.957,-3.822],[29.375,14.153],[-19.785,8.293],[-44.023,9.648],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-37.029,4.041],[-24.064,-12.677],[-29.298,-4.802],[-20.957,3.823],[-29.388,-13.9],[31.61,-13.249],[13.546,-2.969],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[331.776,94.429],[153.12,188.804],[32.184,139.048],[-41.137,117.012],[-119.425,122.51],[-219.618,109.996],[-217.239,49.986],[-137.691,12.462],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[50.132,-3.15],[27.304,14.385],[26.107,4.203],[20.986,-3.637],[29.244,14.408],[-19.853,8.117],[-44.097,9.258],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-34.218,3.679],[-24.064,-12.677],[-29.298,-4.802],[-20.986,3.637],[-29.259,-14.155],[31.719,-12.968],[13.569,-2.849],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[329.523,94.783],[149.182,189.461],[32.184,139.048],[-41.137,117.012],[-119.929,122.628],[-219.989,109.235],[-217.083,49.26],[-137.223,12.444],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[50.913,-3.199],[27.304,14.385],[26.107,4.203],[21.023,-3.4],[29.076,14.734],[-19.94,7.892],[-44.193,8.76],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-30.626,3.216],[-24.064,-12.677],[-29.298,-4.802],[-21.023,3.4],[-29.094,-14.482],[31.859,-12.609],[13.599,-2.696],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[326.643,95.237],[144.151,190.299],[32.184,139.048],[-41.137,117.012],[-120.574,122.779],[-220.463,108.263],[-216.882,48.332],[-136.624,12.422],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[51.807,-3.255],[27.304,14.385],[26.107,4.203],[21.065,-3.129],[28.884,15.108],[-20.04,7.634],[-44.302,8.19],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-26.514,2.687],[-24.064,-12.677],[-29.298,-4.802],[-21.065,3.129],[-28.905,-14.855],[32.018,-12.197],[13.632,-2.52],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[323.348,95.756],[138.392,191.259],[32.184,139.048],[-41.137,117.012],[-121.311,122.951],[-221.006,107.15],[-216.654,47.27],[-135.939,12.396],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[52.639,-3.307],[27.304,14.384],[26.107,4.203],[21.104,-2.877],[28.705,15.455],[-20.134,7.395],[-44.404,7.66],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-22.688,2.195],[-24.064,-12.677],[-29.298,-4.802],[-21.104,2.877],[-28.729,-15.203],[32.167,-11.814],[13.664,-2.357],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[320.28,96.239],[133.033,192.152],[32.184,139.048],[-41.137,117.012],[-121.998,123.111],[-221.511,106.114],[-216.44,46.281],[-135.302,12.372],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[53.299,-3.349],[27.304,14.385],[26.107,4.203],[21.135,-2.677],[28.564,15.731],[-20.207,7.205],[-44.484,7.239],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-19.655,1.804],[-24.064,-12.677],[-29.298,-4.802],[-21.135,2.677],[-28.59,-15.479],[32.285,-11.511],[13.689,-2.228],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[317.849,96.621],[128.785,192.86],[32.184,139.048],[-41.137,117.012],[-122.542,123.238],[-221.911,105.292],[-216.271,45.498],[-134.796,12.354],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[53.797,-3.38],[27.304,14.385],[26.107,4.203],[21.159,-2.526],[28.457,15.938],[-20.263,7.061],[-44.545,6.922],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-17.366,1.509],[-24.064,-12.677],[-29.298,-4.802],[-21.159,2.526],[-28.485,-15.687],[32.374,-11.282],[13.707,-2.13],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[316.014,96.91],[125.578,193.395],[32.184,139.048],[-41.137,117.012],[-122.953,123.334],[-222.213,104.673],[-216.144,44.906],[-134.415,12.339],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.174,-3.404],[27.304,14.385],[26.107,4.203],[21.176,-2.412],[28.375,16.096],[-20.305,6.953],[-44.591,6.681],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-15.629,1.286],[-24.064,-12.677],[-29.298,-4.802],[-21.176,2.412],[-28.405,-15.844],[32.442,-11.108],[13.721,-2.056],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[314.622,97.129],[123.146,193.8],[32.184,139.048],[-41.137,117.012],[-123.264,123.407],[-222.442,104.202],[-216.047,44.458],[-134.126,12.328],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.465,-3.422],[27.304,14.385],[26.107,4.203],[21.19,-2.324],[28.313,16.218],[-20.338,6.869],[-44.627,6.496],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-14.291,1.113],[-24.064,-12.677],[-29.298,-4.802],[-21.19,2.323],[-28.343,-15.966],[32.494,-10.974],[13.732,-1.999],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[313.55,97.298],[121.272,194.113],[32.184,139.048],[-41.137,117.012],[-123.504,123.463],[-222.619,103.84],[-215.973,44.112],[-133.903,12.32],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.692,-3.436],[27.304,14.385],[26.107,4.203],[21.201,-2.255],[28.264,16.312],[-20.363,6.803],[-44.655,6.351],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-13.248,0.979],[-24.064,-12.677],[-29.298,-4.802],[-21.201,2.255],[-28.295,-16.061],[32.534,-10.87],[13.741,-1.954],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[312.713,97.43],[119.811,194.356],[32.184,139.048],[-41.137,117.012],[-123.692,123.507],[-222.757,103.558],[-215.915,43.842],[-133.729,12.314],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.87,-3.447],[27.304,14.385],[26.107,4.203],[21.209,-2.201],[28.226,16.387],[-20.383,6.752],[-44.676,6.237],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-12.428,0.874],[-24.064,-12.677],[-29.298,-4.802],[-21.209,2.201],[-28.258,-16.135],[32.566,-10.788],[13.748,-1.919],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.166,-149.936],[312.056,97.533],[118.662,194.548],[32.184,139.048],[-41.137,117.012],[-123.839,123.541],[-222.865,103.336],[-215.869,43.63],[-133.592,12.309],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.01,-3.456],[27.304,14.385],[26.107,4.203],[21.216,-2.158],[28.196,16.445],[-20.399,6.712],[-44.694,6.148],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.783,0.791],[-24.064,-12.677],[-29.298,-4.802],[-21.216,2.158],[-28.228,-16.194],[32.591,-10.723],[13.753,-1.892],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.539,97.615],[117.759,194.698],[32.184,139.048],[-41.137,117.012],[-123.954,123.568],[-222.95,103.161],[-215.833,43.464],[-133.485,12.305],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.12,-3.463],[27.304,14.385],[26.107,4.203],[21.221,-2.125],[28.172,16.491],[-20.411,6.68],[-44.707,6.078],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.279,0.726],[-24.064,-12.677],[-29.298,-4.802],[-21.221,2.125],[-28.205,-16.24],[32.611,-10.673],[13.757,-1.87],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.135,97.678],[117.054,194.816],[32.184,139.048],[-41.137,117.012],[-124.045,123.589],[-223.017,103.025],[-215.805,43.334],[-133.401,12.301],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.205,-3.468],[27.304,14.385],[26.107,4.203],[21.225,-2.099],[28.154,16.526],[-20.421,6.656],[-44.717,6.024],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.891,0.676],[-24.064,-12.677],[-29.298,-4.802],[-21.225,2.099],[-28.187,-16.275],[32.626,-10.634],[13.76,-1.854],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.824,97.727],[116.509,194.906],[32.184,139.048],[-41.137,117.012],[-124.114,123.606],[-223.068,102.92],[-215.783,43.233],[-133.336,12.299],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.268,-3.472],[27.304,14.385],[26.107,4.203],[21.228,-2.08],[28.14,16.553],[-20.428,6.638],[-44.725,5.984],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.599,0.638],[-24.064,-12.677],[-29.298,-4.802],[-21.228,2.08],[-28.174,-16.301],[32.637,-10.605],[13.763,-1.841],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.59,97.764],[116.1,194.975],[32.184,139.048],[-41.137,117.012],[-124.167,123.618],[-223.106,102.841],[-215.767,43.158],[-133.288,12.297],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.314,-3.475],[27.304,14.385],[26.107,4.203],[21.23,-2.066],[28.131,16.572],[-20.433,6.624],[-44.731,5.955],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.389,0.611],[-24.064,-12.677],[-29.298,-4.802],[-21.23,2.066],[-28.164,-16.32],[32.645,-10.584],[13.764,-1.832],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.421,97.791],[115.806,195.024],[32.184,139.048],[-41.137,117.012],[-124.204,123.627],[-223.134,102.784],[-215.755,43.104],[-133.252,12.296],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.344,-3.477],[27.304,14.385],[26.107,4.203],[21.231,-2.057],[28.124,16.585],[-20.436,6.616],[-44.734,5.935],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.249,0.593],[-24.064,-12.677],[-29.298,-4.802],[-21.231,2.057],[-28.158,-16.333],[32.651,-10.57],[13.765,-1.826],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.166,-149.936],[310.309,97.808],[115.61,195.056],[32.184,139.048],[-41.137,117.012],[-124.23,123.633],[-223.152,102.746],[-215.748,43.068],[-133.229,12.295],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.361,-3.478],[27.304,14.385],[26.107,4.203],[21.232,-2.052],[28.12,16.592],[-20.438,6.611],[-44.736,5.924],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.171,0.583],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.052],[-28.154,-16.34],[32.654,-10.562],[13.766,-1.823],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.246,97.818],[115.5,195.075],[32.184,139.048],[-41.137,117.012],[-124.244,123.636],[-223.163,102.725],[-215.743,43.047],[-133.216,12.295],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.975,-3.454],[27.304,14.385],[26.106,4.197],[21.217,-2.149],[28.206,16.554],[-20.395,6.749],[-44.697,6.123],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.698,0.664],[-24.064,-12.677],[-29.297,-4.795],[-21.217,2.149],[-28.239,-16.3],[32.585,-10.782],[13.754,-1.884],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[118.007,195.051],[32.184,139.048],[-41.356,116.991],[-123.985,123.393],[-223.66,103.41],[-216.58,43.345],[-133.455,12.482],[-81.796,3.31],[-12.612,-36.255]],"c":true}],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[53.209,-3.343],[27.304,14.385],[26.103,4.169],[21.147,-2.594],[28.599,16.371],[-20.198,7.377],[-44.517,7.036],[-18.618,4.327],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-18.692,1.041],[-24.064,-12.677],[-29.293,-4.763],[-21.147,2.594],[-28.625,-16.111],[32.271,-11.785],[13.698,-2.165],[35.359,-7.879],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[129.46,194.917],[32.184,139.048],[-42.344,116.894],[-122.8,122.294],[-225.885,106.53],[-220.354,44.718],[-134.548,13.328],[-83.692,3.751],[-12.612,-36.255]],"c":true}],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[50.262,-3.158],[27.304,14.384],[26.097,4.122],[21.03,-3.336],[29.254,16.068],[-19.87,8.427],[-44.216,8.558],[-18.619,4.315],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-30.364,1.672],[-24.064,-12.677],[-29.287,-4.71],[-21.03,3.336],[-29.269,-15.795],[31.747,-13.458],[13.606,-2.634],[35.361,-7.857],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[148.573,194.694],[32.184,139.048],[-43.992,116.732],[-120.822,120.46],[-229.599,111.736],[-226.655,47.008],[-136.372,14.74],[-86.857,4.486],[-12.612,-36.255]],"c":true}],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[48.293,-3.034],[27.304,14.385],[26.093,4.091],[20.952,-3.832],[29.692,15.864],[-19.65,9.127],[-44.015,9.575],[-18.62,4.306],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-38.161,2.093],[-24.064,-12.677],[-29.282,-4.675],[-20.952,3.832],[-29.7,-15.583],[31.397,-14.576],[13.544,-2.946],[35.363,-7.842],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[161.339,194.545],[32.184,139.048],[-45.093,116.623],[-119.501,119.234],[-232.079,115.214],[-230.863,48.538],[-137.591,15.683],[-88.971,4.977],[-12.612,-36.255]],"c":true}],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.208,-2.966],[27.304,14.385],[26.091,4.074],[20.909,-4.106],[29.933,15.753],[-19.529,9.513],[-43.904,10.136],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-42.456,2.325],[-24.064,-12.677],[-29.28,-4.655],[-20.909,4.106],[-29.937,-15.467],[31.205,-15.192],[13.51,-3.119],[35.364,-7.834],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[168.373,194.462],[32.184,139.048],[-45.7,116.564],[-118.774,118.559],[-233.446,117.13],[-233.181,49.381],[-138.262,16.203],[-90.136,5.248],[-12.612,-36.255]],"c":true}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.617,-2.929],[27.304,14.385],[26.09,4.064],[20.886,-4.255],[30.065,15.692],[-19.463,9.724],[-43.844,10.441],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-44.8,2.451],[-24.064,-12.677],[-29.279,-4.645],[-20.886,4.255],[-30.066,-15.403],[31.099,-15.528],[13.491,-3.213],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[172.211,194.418],[32.184,139.048],[-46.031,116.531],[-118.376,118.191],[-234.192,118.175],[-234.446,49.841],[-138.629,16.487],[-90.771,5.395],[-12.612,-36.255]],"c":true}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.328,-2.911],[27.304,14.385],[26.089,4.06],[20.874,-4.327],[30.129,15.662],[-19.431,9.827],[-43.814,10.59],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-45.942,2.513],[-24.064,-12.677],[-29.278,-4.639],[-20.874,4.327],[-30.129,-15.372],[31.048,-15.692],[13.482,-3.259],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.081,194.396],[32.184,139.048],[-46.192,116.515],[-118.183,118.011],[-234.555,118.685],[-235.063,50.065],[-138.807,16.625],[-91.081,5.467],[-12.612,-36.255]],"c":true}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":294,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.25,-2.906],[27.304,14.385],[26.089,4.059],[20.871,-4.349],[30.146,15.644],[-19.422,9.852],[-43.806,10.634],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.271,2.542],[-24.064,-12.677],[-29.278,-4.639],[-20.871,4.349],[-30.146,-15.354],[31.034,-15.733],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.343,97.803],[174.585,194.358],[32.184,139.048],[-46.218,116.513],[-118.126,117.977],[-234.594,118.806],[-235.17,50.139],[-138.86,16.648],[-91.13,5.479],[-12.612,-36.255]],"c":true}],"t":295,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.265,-2.907],[27.304,14.385],[26.089,4.061],[20.871,-4.351],[30.142,15.612],[-19.424,9.84],[-43.805,10.64],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.283,2.579],[-24.064,-12.677],[-29.278,-4.641],[-20.871,4.351],[-30.142,-15.322],[31.037,-15.713],[13.479,-3.274],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.739,97.741],[174.487,194.252],[32.184,139.048],[-46.15,116.52],[-118.119,118.032],[-234.376,118.725],[-234.937,50.172],[-138.867,16.593],[-91,5.449],[-12.612,-36.255]],"c":true}],"t":296,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.292,-2.909],[27.304,14.385],[26.09,4.065],[20.87,-4.354],[30.134,15.549],[-19.427,9.816],[-43.804,10.651],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.305,2.651],[-24.064,-12.677],[-29.279,-4.645],[-20.87,4.354],[-30.135,-15.261],[31.041,-15.675],[13.479,-3.277],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.5,97.621],[174.298,194.048],[32.184,139.048],[-46.019,116.532],[-118.106,118.138],[-233.955,118.568],[-234.489,50.235],[-138.88,16.486],[-90.748,5.39],[-12.612,-36.255]],"c":true}],"t":297,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.338,-2.911],[27.304,14.385],[26.091,4.071],[20.87,-4.36],[30.122,15.448],[-19.432,9.777],[-43.801,10.668],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.34,2.77],[-24.064,-12.677],[-29.279,-4.652],[-20.87,4.36],[-30.122,-15.161],[31.049,-15.612],[13.478,-3.283],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[312.749,97.424],[173.988,193.714],[32.184,139.048],[-45.804,116.554],[-118.084,118.312],[-233.265,118.311],[-233.754,50.339],[-138.902,16.312],[-90.336,5.294],[-12.612,-36.255]],"c":true}],"t":298,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.407,-2.916],[27.304,14.385],[26.092,4.08],[20.869,-4.369],[30.103,15.294],[-19.439,9.718],[-43.798,10.694],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.394,2.948],[-24.064,-12.677],[-29.281,-4.662],[-20.869,4.369],[-30.103,-15.01],[31.061,-15.519],[13.477,-3.291],[35.364,-7.837],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[314.63,97.128],[173.521,193.21],[32.184,139.048],[-45.48,116.585],[-118.051,118.573],[-232.226,117.924],[-232.648,50.495],[-138.934,16.049],[-89.714,5.15],[-12.612,-36.255]],"c":true}],"t":299,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.502,-2.922],[27.304,14.385],[26.093,4.093],[20.867,-4.381],[30.076,15.082],[-19.45,9.636],[-43.794,10.731],[-18.62,4.307],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.469,3.195],[-24.064,-12.677],[-29.282,-4.677],[-20.867,4.381],[-30.077,-14.8],[31.077,-15.388],[13.476,-3.302],[35.363,-7.843],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[317.239,96.717],[172.873,192.511],[32.184,139.048],[-45.031,116.63],[-118.006,118.937],[-230.785,117.386],[-231.113,50.712],[-138.98,15.685],[-88.852,4.95],[-12.612,-36.255]],"c":true}],"t":300,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.619,-2.929],[27.304,14.385],[26.095,4.108],[20.865,-4.396],[30.044,14.821],[-19.462,9.535],[-43.788,10.775],[-18.62,4.311],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.561,3.499],[-24.064,-12.677],[-29.285,-4.695],[-20.865,4.396],[-30.045,-14.543],[31.097,-15.229],[13.474,-3.316],[35.362,-7.85],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[320.439,96.214],[172.078,191.654],[32.184,139.048],[-44.48,116.684],[-117.951,119.382],[-229.017,116.728],[-229.23,50.978],[-139.035,15.238],[-87.794,4.704],[-12.612,-36.255]],"c":true}],"t":301,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.74,-2.937],[27.304,14.385],[26.097,4.125],[20.863,-4.412],[30.01,14.548],[-19.475,9.43],[-43.782,10.822],[-18.619,4.315],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.657,3.815],[-24.064,-12.677],[-29.287,-4.713],[-20.863,4.412],[-30.012,-14.275],[31.118,-15.062],[13.472,-3.33],[35.361,-7.858],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[323.779,95.688],[171.248,190.759],[32.184,139.048],[-43.906,116.74],[-117.893,119.847],[-227.172,116.04],[-227.265,51.256],[-139.093,14.771],[-86.691,4.447],[-12.612,-36.255]],"c":true}],"t":302,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.851,-2.944],[27.304,14.385],[26.099,4.139],[20.861,-4.426],[29.979,14.301],[-19.487,9.335],[-43.777,10.864],[-18.619,4.319],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.744,4.103],[-24.064,-12.677],[-29.289,-4.73],[-20.861,4.426],[-29.982,-14.031],[31.136,-14.91],[13.471,-3.343],[35.36,-7.865],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[326.816,95.21],[170.494,189.945],[32.184,139.048],[-43.383,116.792],[-117.84,120.27],[-225.494,115.415],[-225.478,51.508],[-139.146,14.347],[-85.687,4.214],[-12.612,-36.255]],"c":true}],"t":303,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[46.945,-2.95],[27.304,14.385],[26.101,4.152],[20.86,-4.438],[29.953,14.092],[-19.498,9.254],[-43.773,10.9],[-18.618,4.323],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.818,4.346],[-24.064,-12.677],[-29.291,-4.744],[-20.86,4.438],[-29.956,-13.825],[31.152,-14.782],[13.469,-3.354],[35.36,-7.871],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[329.38,94.806],[169.857,189.258],[32.184,139.048],[-42.942,116.835],[-117.796,120.628],[-224.078,114.887],[-223.97,51.721],[-139.191,13.989],[-84.84,4.017],[-12.612,-36.255]],"c":true}],"t":304,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.021,-2.954],[27.304,14.385],[26.102,4.162],[20.859,-4.448],[29.932,13.92],[-19.506,9.188],[-43.769,10.929],[-18.618,4.325],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.878,4.546],[-24.064,-12.677],[-29.292,-4.756],[-20.859,4.448],[-29.935,-13.656],[31.165,-14.677],[13.468,-3.363],[35.359,-7.875],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[331.488,94.474],[169.333,188.693],[32.184,139.048],[-42.579,116.871],[-117.76,120.921],[-222.913,114.453],[-222.729,51.897],[-139.227,13.694],[-84.143,3.856],[-12.612,-36.255]],"c":true}],"t":305,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.084,-2.958],[27.304,14.385],[26.103,4.171],[20.858,-4.456],[29.914,13.779],[-19.513,9.134],[-43.766,10.953],[-18.618,4.328],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.928,4.71],[-24.064,-12.677],[-29.293,-4.765],[-20.858,4.456],[-29.918,-13.517],[31.176,-14.591],[13.467,-3.37],[35.359,-7.879],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[333.213,94.203],[168.905,188.231],[32.184,139.048],[-42.282,116.9],[-117.73,121.161],[-221.961,114.098],[-221.715,52.04],[-139.257,13.453],[-83.573,3.723],[-12.612,-36.255]],"c":true}],"t":306,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.136,-2.962],[27.304,14.385],[26.104,4.178],[20.857,-4.463],[29.9,13.664],[-19.518,9.089],[-43.764,10.973],[-18.617,4.33],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.968,4.844],[-24.064,-12.677],[-29.294,-4.773],[-20.857,4.463],[-29.904,-13.404],[31.185,-14.52],[13.467,-3.377],[35.358,-7.883],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[334.625,93.98],[168.554,187.853],[32.184,139.048],[-42.039,116.924],[-117.705,121.358],[-221.18,113.807],[-220.884,52.157],[-139.282,13.256],[-83.106,3.615],[-12.612,-36.255]],"c":true}],"t":307,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.178,-2.964],[27.304,14.385],[26.105,4.183],[20.856,-4.468],[29.888,13.569],[-19.523,9.053],[-43.762,10.989],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.002,4.953],[-24.064,-12.677],[-29.295,-4.78],[-20.856,4.469],[-29.892,-13.311],[31.192,-14.462],[13.466,-3.382],[35.358,-7.885],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[335.785,93.798],[168.266,187.542],[32.184,139.048],[-41.839,116.943],[-117.685,121.519],[-220.54,113.568],[-220.201,52.254],[-139.302,13.094],[-82.723,3.526],[-12.612,-36.255]],"c":true}],"t":308,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.213,-2.966],[27.304,14.385],[26.105,4.188],[20.856,-4.473],[29.879,13.492],[-19.527,9.023],[-43.76,11.003],[-18.617,4.332],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.029,5.044],[-24.064,-12.677],[-29.296,-4.785],[-20.856,4.473],[-29.883,-13.234],[31.198,-14.415],[13.466,-3.386],[35.358,-7.888],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[336.737,93.648],[168.029,187.287],[32.184,139.048],[-41.675,116.959],[-117.669,121.652],[-220.014,113.372],[-219.641,52.333],[-139.318,12.961],[-82.408,3.453],[-12.612,-36.255]],"c":true}],"t":309,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.241,-2.968],[27.304,14.385],[26.106,4.192],[20.855,-4.477],[29.871,13.428],[-19.53,8.998],[-43.759,11.014],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.051,5.117],[-24.064,-12.677],[-29.296,-4.789],[-20.855,4.477],[-29.875,-13.172],[31.203,-14.376],[13.465,-3.389],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[337.517,93.525],[167.835,187.078],[32.184,139.048],[-41.541,116.973],[-117.655,121.761],[-219.583,113.212],[-219.183,52.398],[-139.332,12.852],[-82.151,3.393],[-12.612,-36.255]],"c":true}],"t":310,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.265,-2.97],[27.304,14.385],[26.106,4.195],[20.855,-4.48],[29.864,13.377],[-19.532,8.979],[-43.757,11.022],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.069,5.178],[-24.064,-12.677],[-29.297,-4.793],[-20.855,4.48],[-29.868,-13.121],[31.207,-14.344],[13.465,-3.392],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.151,93.425],[167.678,186.908],[32.184,139.048],[-41.432,116.983],[-117.644,121.849],[-219.233,113.081],[-218.81,52.451],[-139.343,12.764],[-81.941,3.344],[-12.612,-36.255]],"c":true}],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.283,-2.971],[27.304,14.385],[26.106,4.197],[20.854,-4.482],[29.859,13.335],[-19.534,8.962],[-43.757,11.029],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.084,5.226],[-24.064,-12.677],[-29.297,-4.796],[-20.855,4.482],[-29.863,-13.08],[31.21,-14.319],[13.465,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.66,93.345],[167.551,186.772],[32.184,139.048],[-41.344,116.992],[-117.635,121.92],[-218.951,112.976],[-218.51,52.493],[-139.352,12.693],[-81.773,3.305],[-12.612,-36.255]],"c":true}],"t":312,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.298,-2.972],[27.304,14.385],[26.107,4.199],[20.854,-4.484],[29.855,13.302],[-19.536,8.95],[-43.756,11.035],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.096,5.264],[-24.064,-12.677],[-29.298,-4.798],[-20.854,4.484],[-29.859,-13.048],[31.212,-14.299],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.063,93.282],[167.451,186.664],[32.184,139.048],[-41.275,116.999],[-117.628,121.976],[-218.729,112.893],[-218.273,52.526],[-139.359,12.636],[-81.64,3.274],[-12.612,-36.255]],"c":true}],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.309,-2.972],[27.304,14.385],[26.107,4.201],[20.854,-4.485],[29.852,13.277],[-19.537,8.94],[-43.755,11.039],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.105,5.293],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.485],[-29.856,-13.023],[31.214,-14.283],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.371,93.233],[167.375,186.581],[32.184,139.048],[-41.222,117.004],[-117.623,122.019],[-218.559,112.83],[-218.091,52.552],[-139.364,12.593],[-81.538,3.25],[-12.612,-36.255]],"c":true}],"t":314,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.317,-2.973],[27.304,14.385],[26.107,4.202],[20.854,-4.486],[29.85,13.259],[-19.538,8.933],[-43.755,11.043],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.111,5.315],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.486],[-29.854,-13.005],[31.216,-14.272],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.597,93.197],[167.319,186.521],[32.184,139.048],[-41.183,117.008],[-117.619,122.05],[-218.434,112.783],[-217.958,52.571],[-139.368,12.562],[-81.463,3.233],[-12.612,-36.255]],"c":true}],"t":315,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.323,-2.973],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.246],[-19.539,8.928],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.115,5.329],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.992],[31.217,-14.264],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.75,93.173],[167.281,186.48],[32.184,139.048],[-41.157,117.01],[-117.617,122.072],[-218.35,112.752],[-217.868,52.583],[-139.371,12.54],[-81.413,3.221],[-12.612,-36.255]],"c":true}],"t":316,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.326,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.847,13.239],[-19.539,8.925],[-43.755,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.118,5.337],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.852,-12.985],[31.217,-14.26],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.837,93.16],[167.259,186.456],[32.184,139.048],[-41.142,117.012],[-117.615,122.084],[-218.302,112.734],[-217.817,52.591],[-139.372,12.528],[-81.384,3.215],[-12.612,-36.255]],"c":true}],"t":317,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.331,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.486],[29.846,13.239],[-19.54,8.923],[-43.755,11.044],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.099,5.338],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.486],[-29.85,-12.985],[31.218,-14.257],[13.464,-3.398],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.849,93.158],[167.225,186.454],[32.184,139.048],[-41.137,117.012],[-117.618,122.088],[-218.289,112.723],[-217.8,52.588],[-139.369,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":323,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.345,-2.975],[27.304,14.385],[26.107,4.203],[20.855,-4.482],[29.843,13.244],[-19.541,8.919],[-43.757,11.035],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.037,5.33],[-24.064,-12.677],[-29.298,-4.802],[-20.855,4.482],[-29.848,-12.991],[31.221,-14.251],[13.465,-3.396],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.799,93.166],[167.137,186.468],[32.184,139.048],[-41.137,117.012],[-117.629,122.091],[-218.297,112.706],[-217.797,52.572],[-139.359,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.369,-2.976],[27.304,14.385],[26.107,4.203],[20.856,-4.475],[29.838,13.254],[-19.544,8.913],[-43.76,11.02],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.928,5.315],[-24.064,-12.677],[-29.298,-4.802],[-20.856,4.475],[-29.843,-13.001],[31.225,-14.24],[13.465,-3.391],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.711,93.179],[166.984,186.494],[32.184,139.048],[-41.137,117.012],[-117.649,122.096],[-218.311,112.676],[-217.79,52.544],[-139.341,12.523],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":325,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.404,-2.978],[27.304,14.385],[26.107,4.203],[20.857,-4.464],[29.83,13.269],[-19.548,8.902],[-43.764,10.997],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.765,5.295],[-24.064,-12.677],[-29.298,-4.802],[-20.857,4.464],[-29.835,-13.015],[31.231,-14.223],[13.467,-3.384],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.581,93.2],[166.757,186.531],[32.184,139.048],[-41.137,117.012],[-117.678,122.102],[-218.333,112.632],[-217.781,52.502],[-139.314,12.522],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":326,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.452,-2.981],[27.304,14.385],[26.107,4.203],[20.86,-4.45],[29.82,13.289],[-19.553,8.889],[-43.77,10.966],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.543,5.266],[-24.064,-12.677],[-29.298,-4.802],[-20.86,4.45],[-29.825,-13.036],[31.24,-14.201],[13.469,-3.374],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.403,93.228],[166.446,186.583],[32.184,139.048],[-41.137,117.012],[-117.718,122.112],[-218.362,112.572],[-217.769,52.444],[-139.277,12.521],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":327,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.516,-2.985],[27.304,14.385],[26.107,4.203],[20.863,-4.43],[29.806,13.316],[-19.56,8.87],[-43.777,10.926],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.252,5.228],[-24.064,-12.677],[-29.298,-4.802],[-20.863,4.431],[-29.811,-13.062],[31.251,-14.172],[13.471,-3.362],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.17,93.265],[166.038,186.651],[32.184,139.048],[-41.137,117.012],[-117.77,122.124],[-218.401,112.493],[-217.753,52.369],[-139.228,12.519],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":328,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.596,-2.99],[27.304,14.385],[26.107,4.203],[20.866,-4.406],[29.789,13.349],[-19.569,8.847],[-43.787,10.875],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-45.882,5.181],[-24.064,-12.677],[-29.298,-4.802],[-20.867,4.406],[-29.794,-13.096],[31.266,-14.135],[13.474,-3.346],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.873,93.311],[165.52,186.738],[32.184,139.048],[-41.137,117.012],[-117.836,122.139],[-218.449,112.393],[-217.732,52.273],[-139.167,12.517],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":329,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.697,-2.997],[27.304,14.385],[26.107,4.203],[20.871,-4.376],[29.767,13.391],[-19.58,8.818],[-43.8,10.811],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-45.419,5.121],[-24.064,-12.677],[-29.298,-4.802],[-20.871,4.376],[-29.773,-13.138],[31.284,-14.089],[13.478,-3.327],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.502,93.37],[164.872,186.846],[32.184,139.048],[-41.137,117.012],[-117.919,122.159],[-218.511,112.268],[-217.706,52.154],[-139.089,12.514],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":330,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.821,-3.005],[27.304,14.385],[26.107,4.203],[20.877,-4.338],[29.741,13.443],[-19.594,8.782],[-43.815,10.731],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-44.847,5.048],[-24.064,-12.677],[-29.298,-4.802],[-20.877,4.338],[-29.747,-13.19],[31.306,-14.031],[13.482,-3.302],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[338.044,93.442],[164.071,186.979],[32.184,139.048],[-41.137,117.012],[-118.022,122.183],[-218.586,112.113],[-217.675,52.006],[-138.994,12.51],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":331,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.974,-3.014],[27.304,14.385],[26.107,4.203],[20.884,-4.291],[29.708,13.507],[-19.612,8.738],[-43.834,10.634],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-44.143,4.957],[-24.064,-12.677],[-29.298,-4.802],[-20.884,4.292],[-29.715,-13.254],[31.333,-13.961],[13.488,-3.272],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[337.479,93.531],[163.084,187.144],[32.184,139.048],[-41.137,117.012],[-118.148,122.212],[-218.679,111.922],[-217.635,51.824],[-138.877,12.506],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":332,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[48.162,-3.026],[27.304,14.385],[26.107,4.203],[20.893,-4.234],[29.667,13.586],[-19.633,8.684],[-43.857,10.514],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-43.277,4.845],[-24.064,-12.677],[-29.298,-4.802],[-20.893,4.234],[-29.675,-13.332],[31.367,-13.874],[13.495,-3.235],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[336.785,93.64],[161.871,187.346],[32.184,139.048],[-41.137,117.012],[-118.304,122.249],[-218.793,111.688],[-217.587,51.6],[-138.732,12.5],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":333,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[48.395,-3.041],[27.304,14.385],[26.107,4.203],[20.904,-4.164],[29.617,13.683],[-19.659,8.617],[-43.885,10.365],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-42.207,4.708],[-24.064,-12.677],[-29.298,-4.802],[-20.904,4.164],[-29.626,-13.43],[31.408,-13.767],[13.504,-3.19],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[335.927,93.775],[160.372,187.596],[32.184,139.048],[-41.137,117.012],[-118.496,122.293],[-218.935,111.398],[-217.528,51.324],[-138.554,12.494],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":334,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[48.685,-3.059],[27.304,14.385],[26.107,4.203],[20.918,-4.076],[29.555,13.804],[-19.691,8.534],[-43.92,10.181],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-40.874,4.536],[-24.064,-12.677],[-29.298,-4.802],[-20.918,4.076],[-29.564,-13.551],[31.46,-13.634],[13.515,-3.133],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[334.858,93.943],[158.505,187.907],[32.184,139.048],[-41.137,117.012],[-118.735,122.349],[-219.111,111.037],[-217.453,50.98],[-138.332,12.485],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":335,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[49.051,-3.082],[27.304,14.385],[26.107,4.203],[20.935,-3.965],[29.476,13.957],[-19.732,8.428],[-43.965,9.947],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-39.19,4.319],[-24.064,-12.677],[-29.298,-4.802],[-20.935,3.965],[-29.487,-13.704],[31.526,-13.465],[13.529,-3.061],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[333.509,94.156],[156.147,188.3],[32.184,139.048],[-41.137,117.012],[-119.037,122.42],[-219.333,110.581],[-217.359,50.545],[-138.052,12.475],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":336,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[49.521,-3.111],[27.304,14.385],[26.107,4.203],[20.957,-3.822],[29.375,14.153],[-19.785,8.293],[-44.023,9.648],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-37.029,4.041],[-24.064,-12.677],[-29.298,-4.802],[-20.957,3.823],[-29.388,-13.9],[31.61,-13.249],[13.546,-2.969],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[331.776,94.429],[153.12,188.804],[32.184,139.048],[-41.137,117.012],[-119.425,122.51],[-219.618,109.996],[-217.239,49.986],[-137.691,12.462],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":337,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[50.132,-3.15],[27.304,14.385],[26.107,4.203],[20.986,-3.637],[29.244,14.408],[-19.853,8.117],[-44.097,9.258],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-34.218,3.679],[-24.064,-12.677],[-29.298,-4.802],[-20.986,3.637],[-29.259,-14.155],[31.719,-12.968],[13.569,-2.849],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[329.523,94.783],[149.182,189.461],[32.184,139.048],[-41.137,117.012],[-119.929,122.628],[-219.989,109.235],[-217.083,49.26],[-137.223,12.444],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":338,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[50.913,-3.199],[27.304,14.385],[26.107,4.203],[21.023,-3.4],[29.076,14.734],[-19.94,7.892],[-44.193,8.76],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-30.626,3.216],[-24.064,-12.677],[-29.298,-4.802],[-21.023,3.4],[-29.094,-14.482],[31.859,-12.609],[13.599,-2.696],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[326.643,95.237],[144.151,190.299],[32.184,139.048],[-41.137,117.012],[-120.574,122.779],[-220.463,108.263],[-216.882,48.332],[-136.624,12.422],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":339,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[51.807,-3.255],[27.304,14.385],[26.107,4.203],[21.065,-3.129],[28.884,15.108],[-20.04,7.634],[-44.302,8.19],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-26.514,2.687],[-24.064,-12.677],[-29.298,-4.802],[-21.065,3.129],[-28.905,-14.855],[32.018,-12.197],[13.632,-2.52],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[323.348,95.756],[138.392,191.259],[32.184,139.048],[-41.137,117.012],[-121.311,122.951],[-221.006,107.15],[-216.654,47.27],[-135.939,12.396],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":340,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[52.639,-3.307],[27.304,14.384],[26.107,4.203],[21.104,-2.877],[28.705,15.455],[-20.134,7.395],[-44.404,7.66],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-22.688,2.195],[-24.064,-12.677],[-29.298,-4.802],[-21.104,2.877],[-28.729,-15.203],[32.167,-11.814],[13.664,-2.357],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[320.28,96.239],[133.033,192.152],[32.184,139.048],[-41.137,117.012],[-121.998,123.111],[-221.511,106.114],[-216.44,46.281],[-135.302,12.372],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":341,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[53.299,-3.349],[27.304,14.385],[26.107,4.203],[21.135,-2.677],[28.564,15.731],[-20.207,7.205],[-44.484,7.239],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-19.655,1.804],[-24.064,-12.677],[-29.298,-4.802],[-21.135,2.677],[-28.59,-15.479],[32.285,-11.511],[13.689,-2.228],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[317.849,96.621],[128.785,192.86],[32.184,139.048],[-41.137,117.012],[-122.542,123.238],[-221.911,105.292],[-216.271,45.498],[-134.796,12.354],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":342,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[53.797,-3.38],[27.304,14.385],[26.107,4.203],[21.159,-2.526],[28.457,15.938],[-20.263,7.061],[-44.545,6.922],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-17.366,1.509],[-24.064,-12.677],[-29.298,-4.802],[-21.159,2.526],[-28.485,-15.687],[32.374,-11.282],[13.707,-2.13],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[316.014,96.91],[125.578,193.395],[32.184,139.048],[-41.137,117.012],[-122.953,123.334],[-222.213,104.673],[-216.144,44.906],[-134.415,12.339],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":343,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.174,-3.404],[27.304,14.385],[26.107,4.203],[21.176,-2.412],[28.375,16.096],[-20.305,6.953],[-44.591,6.681],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-15.629,1.286],[-24.064,-12.677],[-29.298,-4.802],[-21.176,2.412],[-28.405,-15.844],[32.442,-11.108],[13.721,-2.056],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[314.622,97.129],[123.146,193.8],[32.184,139.048],[-41.137,117.012],[-123.264,123.407],[-222.442,104.202],[-216.047,44.458],[-134.126,12.328],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":344,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.465,-3.422],[27.304,14.385],[26.107,4.203],[21.19,-2.324],[28.313,16.218],[-20.338,6.869],[-44.627,6.496],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-14.291,1.113],[-24.064,-12.677],[-29.298,-4.802],[-21.19,2.323],[-28.343,-15.966],[32.494,-10.974],[13.732,-1.999],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[313.55,97.298],[121.272,194.113],[32.184,139.048],[-41.137,117.012],[-123.504,123.463],[-222.619,103.84],[-215.973,44.112],[-133.903,12.32],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":345,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.692,-3.436],[27.304,14.385],[26.107,4.203],[21.201,-2.255],[28.264,16.312],[-20.363,6.803],[-44.655,6.351],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-13.248,0.979],[-24.064,-12.677],[-29.298,-4.802],[-21.201,2.255],[-28.295,-16.061],[32.534,-10.87],[13.741,-1.954],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[312.713,97.43],[119.811,194.356],[32.184,139.048],[-41.137,117.012],[-123.692,123.507],[-222.757,103.558],[-215.915,43.842],[-133.729,12.314],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":346,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.87,-3.447],[27.304,14.385],[26.107,4.203],[21.209,-2.201],[28.226,16.387],[-20.383,6.752],[-44.676,6.237],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-12.428,0.874],[-24.064,-12.677],[-29.298,-4.802],[-21.209,2.201],[-28.258,-16.135],[32.566,-10.788],[13.748,-1.919],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.166,-149.936],[312.056,97.533],[118.662,194.548],[32.184,139.048],[-41.137,117.012],[-123.839,123.541],[-222.865,103.336],[-215.869,43.63],[-133.592,12.309],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":347,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.01,-3.456],[27.304,14.385],[26.107,4.203],[21.216,-2.158],[28.196,16.445],[-20.399,6.712],[-44.694,6.148],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.783,0.791],[-24.064,-12.677],[-29.298,-4.802],[-21.216,2.158],[-28.228,-16.194],[32.591,-10.723],[13.753,-1.892],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.539,97.615],[117.759,194.698],[32.184,139.048],[-41.137,117.012],[-123.954,123.568],[-222.95,103.161],[-215.833,43.464],[-133.485,12.305],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.12,-3.463],[27.304,14.385],[26.107,4.203],[21.221,-2.125],[28.172,16.491],[-20.411,6.68],[-44.707,6.078],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.279,0.726],[-24.064,-12.677],[-29.298,-4.802],[-21.221,2.125],[-28.205,-16.24],[32.611,-10.673],[13.757,-1.87],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[311.135,97.678],[117.054,194.816],[32.184,139.048],[-41.137,117.012],[-124.045,123.589],[-223.017,103.025],[-215.805,43.334],[-133.401,12.301],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.205,-3.468],[27.304,14.385],[26.107,4.203],[21.225,-2.099],[28.154,16.526],[-20.421,6.656],[-44.717,6.024],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.891,0.676],[-24.064,-12.677],[-29.298,-4.802],[-21.225,2.099],[-28.187,-16.275],[32.626,-10.634],[13.76,-1.854],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.824,97.727],[116.509,194.906],[32.184,139.048],[-41.137,117.012],[-124.114,123.606],[-223.068,102.92],[-215.783,43.233],[-133.336,12.299],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.268,-3.472],[27.304,14.385],[26.107,4.203],[21.228,-2.08],[28.14,16.553],[-20.428,6.638],[-44.725,5.984],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.599,0.638],[-24.064,-12.677],[-29.298,-4.802],[-21.228,2.08],[-28.174,-16.301],[32.637,-10.605],[13.763,-1.841],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.59,97.764],[116.1,194.975],[32.184,139.048],[-41.137,117.012],[-124.167,123.618],[-223.106,102.841],[-215.767,43.158],[-133.288,12.297],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.314,-3.475],[27.304,14.385],[26.107,4.203],[21.23,-2.066],[28.131,16.572],[-20.433,6.624],[-44.731,5.955],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.389,0.611],[-24.064,-12.677],[-29.298,-4.802],[-21.23,2.066],[-28.164,-16.32],[32.645,-10.584],[13.764,-1.832],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.421,97.791],[115.806,195.024],[32.184,139.048],[-41.137,117.012],[-124.204,123.627],[-223.134,102.784],[-215.755,43.104],[-133.252,12.296],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.344,-3.477],[27.304,14.385],[26.107,4.203],[21.231,-2.057],[28.124,16.585],[-20.436,6.616],[-44.734,5.935],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.249,0.593],[-24.064,-12.677],[-29.298,-4.802],[-21.231,2.057],[-28.158,-16.333],[32.651,-10.57],[13.765,-1.826],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.166,-149.936],[310.309,97.808],[115.61,195.056],[32.184,139.048],[-41.137,117.012],[-124.23,123.633],[-223.152,102.746],[-215.748,43.068],[-133.229,12.295],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.361,-3.478],[27.304,14.385],[26.107,4.203],[21.232,-2.052],[28.12,16.592],[-20.438,6.611],[-44.736,5.924],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.171,0.583],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.052],[-28.154,-16.34],[32.654,-10.562],[13.766,-1.823],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.246,97.818],[115.5,195.075],[32.184,139.048],[-41.137,117.012],[-124.244,123.636],[-223.163,102.725],[-215.743,43.047],[-133.216,12.295],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.209,-3.469],[27.304,14.385],[26.107,4.201],[21.226,-2.09],[28.154,16.578],[-20.421,6.665],[-44.721,6.002],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.77,0.613],[-24.064,-12.677],[-29.298,-4.799],[-21.226,2.09],[-28.187,-16.326],[32.627,-10.649],[13.761,-1.847],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[116.487,195.068],[32.184,139.048],[-41.225,117.004],[-124.142,123.539],[-223.365,102.996],[-216.079,43.163],[-133.31,12.37],[-81.544,3.252],[-12.612,-36.255]],"c":true}],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.59,-3.43],[27.304,14.385],[26.106,4.191],[21.202,-2.246],[28.292,16.514],[-20.352,6.886],[-44.658,6.322],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-13.22,0.746],[-24.064,-12.677],[-29.296,-4.788],[-21.202,2.246],[-28.323,-16.259],[32.517,-11],[13.742,-1.945],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[120.5,195.022],[32.184,139.048],[-41.571,116.97],[-123.727,123.154],[-224.144,104.089],[-217.401,43.644],[-133.693,12.666],[-82.208,3.406],[-12.612,-36.255]],"c":true}],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[53.209,-3.343],[27.304,14.385],[26.103,4.169],[21.147,-2.594],[28.599,16.371],[-20.198,7.377],[-44.517,7.036],[-18.618,4.327],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-18.692,1.041],[-24.064,-12.677],[-29.293,-4.763],[-21.147,2.594],[-28.625,-16.111],[32.271,-11.785],[13.698,-2.165],[35.359,-7.879],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[129.46,194.917],[32.184,139.048],[-42.344,116.894],[-122.8,122.294],[-225.885,106.53],[-220.354,44.718],[-134.548,13.328],[-83.692,3.751],[-12.612,-36.255]],"c":true}],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[51.196,-3.217],[27.304,14.385],[26.099,4.137],[21.067,-3.101],[29.047,16.164],[-19.974,8.094],[-44.311,8.076],[-18.619,4.319],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-26.663,1.472],[-24.064,-12.677],[-29.289,-4.727],[-21.067,3.101],[-29.065,-15.895],[31.913,-12.928],[13.635,-2.485],[35.361,-7.864],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[142.512,194.764],[32.184,139.048],[-43.47,116.783],[-121.45,121.041],[-228.421,110.085],[-224.657,46.282],[-135.794,14.292],[-85.853,4.253],[-12.612,-36.255]],"c":true}],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[49.472,-3.108],[27.304,14.385],[26.095,4.11],[20.999,-3.535],[29.43,15.986],[-19.782,8.707],[-44.135,8.966],[-18.62,4.311],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-33.49,1.841],[-24.064,-12.677],[-29.285,-4.696],[-20.999,3.535],[-29.442,-15.71],[31.607,-13.906],[13.581,-2.759],[35.362,-7.851],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[153.69,194.634],[32.184,139.048],[-44.434,116.688],[-120.293,119.968],[-230.593,113.13],[-228.341,47.622],[-136.861,15.118],[-87.704,4.683],[-12.612,-36.255]],"c":true}],"t":360,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[48.293,-3.034],[27.304,14.385],[26.093,4.091],[20.952,-3.832],[29.692,15.864],[-19.65,9.127],[-44.015,9.575],[-18.62,4.306],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-38.161,2.093],[-24.064,-12.677],[-29.282,-4.675],[-20.952,3.832],[-29.7,-15.583],[31.397,-14.576],[13.544,-2.946],[35.363,-7.842],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[161.339,194.545],[32.184,139.048],[-45.093,116.623],[-119.501,119.234],[-232.079,115.214],[-230.863,48.538],[-137.591,15.683],[-88.971,4.977],[-12.612,-36.255]],"c":true}],"t":361,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[47.501,-2.984],[27.304,14.385],[26.092,4.078],[20.921,-4.032],[29.868,15.783],[-19.562,9.409],[-43.934,9.984],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-41.296,2.262],[-24.064,-12.677],[-29.28,-4.661],[-20.921,4.032],[-29.873,-15.498],[31.257,-15.026],[13.519,-3.072],[35.364,-7.836],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[166.473,194.485],[32.184,139.048],[-45.536,116.58],[-118.97,118.742],[-233.077,116.612],[-232.555,49.153],[-138.081,16.063],[-89.821,5.175],[-12.612,-36.255]],"c":true}],"t":362,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.969,-2.951],[27.304,14.385],[26.09,4.07],[20.9,-4.166],[29.987,15.728],[-19.502,9.599],[-43.88,10.26],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-43.406,2.376],[-24.064,-12.677],[-29.279,-4.651],[-20.9,4.166],[-29.989,-15.441],[31.162,-15.328],[13.502,-3.157],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[169.928,194.444],[32.184,139.048],[-45.834,116.551],[-118.613,118.41],[-233.748,117.554],[-233.694,49.567],[-138.411,16.318],[-90.393,5.308],[-12.612,-36.255]],"c":true}],"t":363,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.617,-2.929],[27.304,14.385],[26.09,4.064],[20.886,-4.255],[30.065,15.692],[-19.463,9.724],[-43.844,10.441],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-44.8,2.451],[-24.064,-12.677],[-29.279,-4.645],[-20.886,4.255],[-30.066,-15.403],[31.099,-15.528],[13.491,-3.213],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[172.211,194.418],[32.184,139.048],[-46.031,116.531],[-118.376,118.191],[-234.192,118.175],[-234.446,49.841],[-138.629,16.487],[-90.771,5.395],[-12.612,-36.255]],"c":true}],"t":364,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.398,-2.915],[27.304,14.385],[26.089,4.061],[20.877,-4.31],[30.114,15.669],[-19.439,9.802],[-43.821,10.554],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-45.667,2.498],[-24.064,-12.677],[-29.278,-4.641],[-20.877,4.31],[-30.114,-15.38],[31.06,-15.652],[13.484,-3.248],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[173.63,194.401],[32.184,139.048],[-46.153,116.519],[-118.23,118.055],[-234.467,118.562],[-234.914,50.011],[-138.764,16.591],[-91.006,5.45],[-12.612,-36.255]],"c":true}],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.281,-2.908],[27.304,14.385],[26.089,4.059],[20.873,-4.339],[30.139,15.657],[-19.426,9.843],[-43.809,10.615],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.128,2.523],[-24.064,-12.677],[-29.278,-4.639],[-20.873,4.339],[-30.14,-15.367],[31.04,-15.718],[13.481,-3.266],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.386,194.392],[32.184,139.048],[-46.218,116.513],[-118.151,117.982],[-234.614,118.768],[-235.163,50.102],[-138.836,16.647],[-91.131,5.479],[-12.612,-36.255]],"c":true}],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.694117665291,0.435294121504,0.345098048449,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Thumb","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":89,"op":411,"st":49,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Nail - PATH","parent":5,"tt":1,"tp":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":224,"s":[-215.854,53.1,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":257,"s":[-215.854,56.9,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":294,"s":[-215.854,53.1,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":322,"s":[-215.854,53.1,0],"to":[0,0,0],"ti":[0,0,0]},{"t":355,"s":[-215.854,56.9,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":159,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.6,"y":0},"t":195,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":224,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":257,"s":[{"i":[[0,0],[5.977,-11.693],[12.492,0.343],[0,0],[-11.927,9.366],[0,0],[-7.435,-11.514]],"o":[[6.885,11.15],[-5.977,11.693],[0,0],[-14.573,-15.516],[0,0],[12.995,-2.066],[0,0]],"v":[[41.831,-31.462],[43.556,5.299],[13.369,24.072],[-23.361,15.588],[-18.585,-35.795],[8.315,-47.769],[41.596,-32.101]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":265,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":294,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":318,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":322,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":355,"s":[{"i":[[0,0],[5.977,-11.693],[12.492,0.343],[0,0],[-11.927,9.366],[0,0],[-7.435,-11.514]],"o":[[6.885,11.15],[-5.977,11.693],[0,0],[-14.573,-15.516],[0,0],[12.995,-2.066],[0,0]],"v":[[41.831,-31.462],[43.556,5.299],[13.369,24.072],[-23.361,15.588],[-18.585,-35.795],[8.315,-47.769],[41.596,-32.101]],"c":true}]},{"t":367,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.75686275959,0.549019634724,0.474509805441,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Nail","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":89,"op":411,"st":49,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Thumb - PATH","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":159,"s":[27.7]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":195,"s":[25.7]},{"t":249,"s":[25.7]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":224,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.4,"y":0},"t":257,"s":[-18.196,2.427,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.44,"y":1},"o":{"x":0.44,"y":0},"t":272,"s":[-18.196,2.427,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":0.2},"o":{"x":0.167,"y":0.167},"t":298,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":322,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.12,"y":1},"o":{"x":0.44,"y":0},"t":355,"s":[-18.196,2.427,0],"to":[0,0,0],"ti":[0,0,0]},{"t":370,"s":[1.306,1.56,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,49,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":25,"nm":"Elevation","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[0,0,0,0.25],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":63.75,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":180,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":4,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":8,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":159,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.6,"y":0},"t":195,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.327,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.119,5.34],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.865,93.155],[167.252,186.449],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":224,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.327,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.119,5.34],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.865,93.155],[167.252,186.449],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":257,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":265,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":294,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":318,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.327,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.119,5.34],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.865,93.155],[167.252,186.449],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":322,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.327,-2.974],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-47.119,5.34],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[339.865,93.155],[167.252,186.449],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":355,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"t":367,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[46.246,-2.906],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-46.268,2.531],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[174.614,194.389],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.694117665291,0.435294121504,0.345098048449,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Thumb","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":89,"op":411,"st":49,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":3,"nm":"RHS DRAG REPO","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":1410,"ix":3},"y":{"a":0,"k":469,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":161,"op":411,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".onSurfaceBack","cl":"onSurfaceBack","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":173,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":185,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":197,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":217,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":239,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":257,"s":[95]},{"t":275,"s":[0],"h":1},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":315,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.4],"y":[0]},"t":337,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":355,"s":[95]},{"t":373,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":173,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":1},"t":197,"s":[42,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":224,"s":[42,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":257,"s":[-5,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":259,"s":[-5,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":277,"s":[132,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":322,"s":[42,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":355,"s":[-5,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":357,"s":[-5,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":375,"s":[132,0,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":224,"s":[69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":257,"s":[100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":259,"s":[100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":277,"s":[69,69,100]},{"i":{"x":[0.31,0.31,0.31],"y":[1,1,1]},"o":{"x":[0.77,0.77,0.77],"y":[0,0,0]},"t":322,"s":[69,69,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[1,1,1],"y":[0,0,0]},"t":355,"s":[100,100,100]},{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":357,"s":[100,100,100]},{"t":375,"s":[69,69,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":173,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-228.768,0.408],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":197,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":224,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":257,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":259,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":265,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.77,"y":0},"t":277,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.77,"y":0},"t":322,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.167,"y":0.167},"t":355,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":357,"s":[{"i":[[-124.577,0],[-45.425,-70.444],[0,-193.189],[45.426,-70.444],[124.577,0],[20.451,92.885],[0,71.359],[-24.549,91.505]],"o":[[124.577,0],[45.426,70.444],[0,193.189],[-45.425,70.444],[-124.577,0],[-16.338,-74.205],[0,-71.359],[19.688,-73.388]],"v":[[-64,-449.406],[117.17,-257.251],[269,0.438],[117.17,258.127],[-64,450.031],[-194.17,222.396],[-290,0],[-194.17,-223.224]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":363,"s":[{"i":[[-124.577,0],[-45.425,-68.783],[0,-188.634],[45.426,-68.783],[124.577,0],[22.109,89.735],[0,74.892],[-25.934,88.446]],"o":[[124.577,0],[45.426,68.783],[0,188.634],[-45.425,68.783],[-124.577,0],[-18.269,-72.295],[0,-74.892],[21.397,-71.531]],"v":[[-45.747,-438.708],[120.422,-251.205],[270.394,0.408],[120.422,252.022],[-45.747,439.525],[-202.311,218.664],[-277,0],[-202.311,-219.437]],"c":true}]},{"t":375,"s":[{"i":[[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425],[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425]],"o":[[124.577,0],[45.425,45.425],[0,124.577],[-45.425,45.425],[-124.577,0],[-45.425,-45.425],[0,-124.577],[45.425,-45.425]],"v":[[0,-290],[166.17,-166.17],[290,0],[166.17,166.17],[0,290],[-166.17,166.17],[-290,0],[-166.17,-166.17]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":2010,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":161,"op":411,"st":54,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".onSurfaceBack","cl":"onSurfaceBack","parent":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":12,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":24,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":36,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":48,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":100,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":112,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":124,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":136,"s":[100]},{"t":148,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":206,"ix":3},"y":{"a":0,"k":561,"ix":4}},"a":{"a":0,"k":[206,561,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[262,800],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":73,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"mm","mm":3,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":2010,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Subtract","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-537,561],"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":"Left Zone","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[262,800],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":73,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"mm","mm":3,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"k":[{"s":[0.129,0.459,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.129,0.459,0,1],"t":2010,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Subtract","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[949,561],"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":"Right Zone","np":1,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":150,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".surfaceBack","cl":"surfaceBack","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,400,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[1280,800],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Rectangle 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.976,0.635,0.725,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.976,0.635,0.725,1],"t":2010,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":440,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":3,"nm":"Gesture Flash 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":12,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":24,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":36,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":48,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":100,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":112,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":124,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":136,"s":[100]},{"t":148,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":640,"ix":3},"y":{"a":0,"k":469,"ix":4}},"a":{"a":0,"k":[206,561,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":150,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":3,"nm":"Gesture Flash 3","parent":10,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":12,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":24,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":36,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":48,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":100,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":112,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":124,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":136,"s":[100]},{"t":148,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":206,"ix":3},"y":{"a":0,"k":490,"ix":4}},"a":{"a":0,"k":[206,561,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":150,"st":0,"ct":1,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Part03_Demonstration_Back_Tablet_V02","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,400,0],"ix":2,"l":2},"a":{"a":0,"k":[640,400,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":1280,"h":800,"ip":1197,"op":1692,"st":1197,"bm":0},{"ddd":0,"ind":2,"ty":0,"nm":"Part02_Charade_Back_Tablet_V02","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,400,0],"ix":2,"l":2},"a":{"a":0,"k":[640,400,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":1280,"h":800,"ip":818,"op":1197,"st":818,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"Part01_Thumb_Back_Tablet_V02","refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,400,0],"ix":2,"l":2},"a":{"a":0,"k":[640,400,0],"ix":1,"l":2},"s":{"a":0,"k":[-100,100,100],"ix":6,"l":2}},"ao":0,"w":1280,"h":800,"ip":409,"op":818,"st":409,"bm":0},{"ddd":0,"ind":4,"ty":0,"nm":"Part01_Thumb_Back_Tablet_V02","refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,400,0],"ix":2,"l":2},"a":{"a":0,"k":[640,400,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":1280,"h":800,"ip":0,"op":409,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw/checkmark_animation_end.json b/quickstep/res/raw/checkmark_animation_end.json
new file mode 100644
index 0000000..b198345
--- /dev/null
+++ b/quickstep/res/raw/checkmark_animation_end.json
@@ -0,0 +1 @@
+{"v":"5.10.0","fr":60,"ip":0,"op":76,"w":280,"h":280,"nm":"03_Overview_BigCelebration_Checkmark","ddd":0,"assets":[{"id":"comp_0","nm":"Explosion.pre","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".checkmarkBackground","cl":"checkmarkBackground","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":1,"s":[0]},{"t":51,"s":[45]}],"ix":10},"p":{"s":true,"x":{"a":0,"k":0,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[0.857]},"t":0,"s":[-29]},{"t":44,"s":[-120]}],"ix":4}},"a":{"a":0,"k":[70.773,-46.256,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.73,0.73],"y":[0.04,0.04]},"o":{"x":[0.6,0.6],"y":[-0.28,-0.28]},"t":18,"s":[12,12]},{"t":46,"s":[0,0]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":2,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.875,0.953,0.686,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.875,0.953,0.686,1],"t":50,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[70.773,-46.256],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":45,"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}],"ip":1,"op":51,"st":-73,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".checkmarkBackground","cl":"checkmarkBackground","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":200,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[1]},"t":0,"s":[171]},{"t":44,"s":[93]}],"ix":4}},"a":{"a":0,"k":[70.773,-46.256,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.72,0.72],"y":[0.8,0.8]},"o":{"x":[0.9,0.9],"y":[0,0]},"t":21,"s":[12,12]},{"t":45,"s":[0,0]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"k":[{"s":[0.875,0.953,0.686,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.875,0.953,0.686,1],"t":50,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[70.773,-46.256],"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}],"ip":1,"op":45,"st":-73,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Explosion 2 ROTATE","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":1,"s":[10]},{"t":21,"s":[15]}],"ix":10},"p":{"a":0,"k":[200,200,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Size","np":3,"mn":"ADBE Point Control","ix":1,"en":1,"ef":[{"ty":3,"nm":"Point","mn":"ADBE Point Control-0001","ix":1,"v":{"a":0,"k":[97.087,44.843],"ix":1}}]}],"ip":0,"op":21,"st":-73,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":0,"nm":"Explosion 2","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":60,"ix":10},"p":{"a":0,"k":[200,200,0],"ix":2,"l":2},"a":{"a":0,"k":[200,200,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":400,"h":400,"ip":1,"op":50,"st":1,"bm":0},{"ddd":0,"ind":5,"ty":0,"nm":"Explosion 2","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":240,"ix":10},"p":{"a":0,"k":[200,200,0],"ix":2,"l":2},"a":{"a":0,"k":[200,200,0],"ix":1,"l":2},"s":{"a":0,"k":[-100,100,100],"ix":6,"l":2}},"ao":0,"w":400,"h":400,"ip":0,"op":50,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":0,"nm":"Explosion 3","refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-60,"ix":10},"p":{"a":0,"k":[200,200,0],"ix":2,"l":2},"a":{"a":0,"k":[200,200,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":400,"h":400,"ip":1,"op":50,"st":1,"bm":0},{"ddd":0,"ind":7,"ty":0,"nm":"Explosion 3","refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":120,"ix":10},"p":{"a":0,"k":[200,200,0],"ix":2,"l":2},"a":{"a":0,"k":[200,200,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":400,"h":400,"ip":2,"op":50,"st":2,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".checkmarkBackground","cl":"checkmarkBackground","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":1,"s":[0]},{"t":51,"s":[45]}],"ix":10},"p":{"s":true,"x":{"a":0,"k":0,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[0.857]},"t":0,"s":[-29]},{"t":44,"s":[-120]}],"ix":4}},"a":{"a":0,"k":[70.773,-46.256,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.73,0.73],"y":[0.04,0.04]},"o":{"x":[0.6,0.6],"y":[-0.28,-0.28]},"t":17,"s":[12,12]},{"t":45,"s":[0,0]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":2,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.875,0.953,0.686,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.875,0.953,0.686,1],"t":50,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[70.773,-46.256],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":45,"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}],"ip":1,"op":51,"st":-73,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".checkmarkBackground","cl":"checkmarkBackground","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-175.265,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.52],"y":[0.96]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[9.145]},{"t":27,"s":[-14.855]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.32],"y":[0.94]},"t":1,"s":[-9.099]},{"t":27,"s":[-95.099]}],"ix":4}},"a":{"a":0,"k":[70.773,-46.256,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.72,0.72],"y":[0.8,0.8]},"o":{"x":[0.9,0.9],"y":[0,0]},"t":18,"s":[12,12]},{"t":42,"s":[0,0]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"k":[{"s":[0.875,0.953,0.686,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.875,0.953,0.686,1],"t":50,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[70.773,-46.256],"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}],"ip":1,"op":42,"st":-73,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":3,"nm":"Explosion 2 ROTATE 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":1,"s":[-19]},{"t":21,"s":[-2]}],"ix":10},"p":{"a":0,"k":[200,200,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[-100,-100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Size","np":3,"mn":"ADBE Point Control","ix":1,"en":1,"ef":[{"ty":3,"nm":"Point","mn":"ADBE Point Control-0001","ix":1,"v":{"a":0,"k":[97.087,44.843],"ix":1}}]}],"ip":0,"op":21,"st":-73,"ct":1,"bm":0}]},{"id":"comp_1","nm":"Explosion 2","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".checkmarkBackground","cl":"checkmarkBackground","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-1,"s":[14.938]},{"t":50,"s":[59.938]}],"ix":10},"p":{"s":true,"x":{"a":0,"k":228.122,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[1.166]},"t":0,"s":[171.98]},{"t":46,"s":[102.055]}],"ix":4}},"a":{"a":0,"k":[70.773,-46.256,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.73,0.73],"y":[0.143,0.143]},"o":{"x":[0.6,0.6],"y":[-0.25,-0.25]},"t":17,"s":[12,12]},{"t":42,"s":[0,0]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":2,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.875,0.953,0.686,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.875,0.953,0.686,1],"t":50,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[70.773,-46.256],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":45,"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}],"ip":0,"op":50,"st":-74,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".checkmarkBackground","cl":"checkmarkBackground","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":0,"s":[200]},{"t":46,"s":[183]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[0.877]},"t":0,"s":[186]},{"t":46,"s":[93]}],"ix":4}},"a":{"a":0,"k":[70.773,-46.256,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.73,0.73],"y":[0.04,0.04]},"o":{"x":[0.6,0.6],"y":[-0.28,-0.28]},"t":14,"s":[12,12]},{"t":46,"s":[0,0]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"k":[{"s":[0.875,0.953,0.686,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.875,0.953,0.686,1],"t":50,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[70.773,-46.256],"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}],"ip":0,"op":46,"st":-74,"ct":1,"bm":0}]},{"id":"comp_2","nm":"Explosion 3","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".checkmarkBackground","cl":"checkmarkBackground","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-1,"s":[14.938]},{"t":50,"s":[59.938]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[213.122]},{"t":41,"s":[228.122]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[1.192]},"t":-1,"s":[171.98]},{"t":46,"s":[102.055]}],"ix":4}},"a":{"a":0,"k":[70.773,-46.256,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.73,0.73],"y":[0.143,0.143]},"o":{"x":[0.6,0.6],"y":[-0.25,-0.25]},"t":17,"s":[12,12]},{"t":42,"s":[0,0]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":2,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.875,0.953,0.686,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.875,0.953,0.686,1],"t":50,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[70.773,-46.256],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":45,"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}],"ip":0,"op":50,"st":-74,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".checkmarkBackground","cl":"checkmarkBackground","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":50,"s":[-59]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":0,"s":[200]},{"t":46,"s":[183]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[1.068]},"t":-1,"s":[171]},{"t":46,"s":[93]}],"ix":4}},"a":{"a":0,"k":[70.773,-46.256,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"sr","sy":2,"d":1,"pt":{"a":0,"k":3,"ix":3},"p":{"a":0,"k":[0,0],"ix":4},"r":{"a":0,"k":0,"ix":5},"or":{"a":1,"k":[{"i":{"x":[0.73],"y":[-0.08]},"o":{"x":[0.6],"y":[-0.315]},"t":10,"s":[12]},{"t":46,"s":[0]}],"ix":7},"os":{"a":0,"k":0,"ix":9},"ix":1,"nm":"Polystar Path 1","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":6,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"fl","c":{"k":[{"s":[0.875,0.953,0.686,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.875,0.953,0.686,1],"t":50,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[70.773,-46.256],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":50,"st":-74,"ct":1,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Top Matte","parent":6,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0.001,"ix":10},"p":{"a":0,"k":[14.451,-31.977,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[105.208,105.208,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[115,100],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":1,"k":[{"i":{"x":0.22,"y":1},"o":{"x":0.18,"y":1},"t":7,"s":[-67,-83],"to":[0,0],"ti":[0,0]},{"t":27,"s":[-67,-2]}],"ix":1},"s":{"a":0,"k":[10,100],"ix":3},"r":{"a":0,"k":45,"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":"POST 2","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"icon 2","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":8,"op":523,"st":-77,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".checkmark","cl":"checkmark","parent":6,"tt":1,"tp":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[14.451,-31.977,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[105.208,105.208,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-21.367,24.466],[34.156,-31.011],[40.677,-24.489],[-14.823,31.011]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":299,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"icon 2","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":8,"op":523,"st":-77,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Bottom Matte","parent":6,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0.001,"ix":10},"p":{"a":0,"k":[14.451,-31.977,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[105.208,105.208,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[115,100],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[0.25,0],"ix":2},"a":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":3,"s":[278,77],"to":[0,0],"ti":[0,0]},{"t":10,"s":[278,39]}],"ix":1},"s":{"a":0,"k":[10,100],"ix":3},"r":{"a":0,"k":-45,"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":"POST 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Matte","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":5,"op":523,"st":-77,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".checkmark","cl":"checkmark","parent":6,"tt":1,"tp":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[14.451,-31.977,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[105.208,105.208,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-34.109,-1.364],[-8.279,24.466],[-14.823,31.011],[-40.677,5.157]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":299,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"icon","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":5,"op":523,"st":-77,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":3,"nm":"Bounce","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":12,"s":[0]},{"t":36,"s":[-6]}],"ix":10},"p":{"a":0,"k":[126,172,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.263,0.263,0.833],"y":[1.126,1.126,-8.048]},"o":{"x":[0.05,0.05,0.05],"y":[0.958,0.958,0]},"t":1,"s":[80,80,100]},{"i":{"x":[0.1,0.1,0.1],"y":[1,1,1]},"o":{"x":[0.45,0.45,0.167],"y":[0.325,0.325,7.619]},"t":20,"s":[105,105,100]},{"t":36,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Size","np":3,"mn":"ADBE Point Control","ix":1,"en":1,"ef":[{"ty":3,"nm":"Point","mn":"ADBE Point Control-0001","ix":1,"v":{"a":0,"k":[67.961,31.39],"ix":1}}]}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":3,"nm":"Check Rotate","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":2,"s":[-16]},{"t":20,"s":[6]}],"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[95.049,95.049,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Size","np":3,"mn":"ADBE Point Control","ix":1,"en":1,"ef":[{"ty":3,"nm":"Point","mn":"ADBE Point Control-0001","ix":1,"v":{"a":0,"k":[67.961,31.39],"ix":1}}]}],"ip":0,"op":228,"st":-72,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".checkmarkBackground","cl":"checkmarkBackground","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[140,140,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.275,0.275,0.21],"y":[1.102,1.102,1]},"o":{"x":[0.037,0.037,0.05],"y":[0.476,0.476,0]},"t":0,"s":[0,0,100]},{"i":{"x":[0.1,0.1,0.1],"y":[1,1,1]},"o":{"x":[0.252,0.252,0.47],"y":[0.159,0.159,0]},"t":16,"s":[120,120,100]},{"t":28,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[148,148],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":88,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.875,0.953,0.686,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.875,0.953,0.686,1],"t":299,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Checkbox - Widget","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".checkmarkBackground","cl":"checkmarkBackground","sr":1,"ks":{"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"s":true,"x":{"a":0,"k":140,"ix":3},"y":{"a":0,"k":140,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.22,0.22],"y":[1,1]},"o":{"x":[0.18,0.18],"y":[1,1]},"t":22,"s":[140,140]},{"t":52,"s":[266,266]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":360,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"k":[{"s":[0.875,0.953,0.686,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.875,0.953,0.686,1],"t":299,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[0.938]},"t":22,"s":[16]},{"t":52,"s":[0]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Checkbox - Widget","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":22,"op":52,"st":21,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":0,"nm":"Explosion.pre","cl":"pre","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[140,140,0],"ix":2,"l":2},"a":{"a":0,"k":[200,200,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.68,0.68,0.68],"y":[0.06,0.06,1]},"o":{"x":[0.4,0.4,0.4],"y":[0,0,0]},"t":35,"s":[100,100,100]},{"t":61,"s":[90,90,100]}],"ix":6,"l":2}},"ao":0,"w":400,"h":400,"ip":18,"op":67,"st":16,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw/checkmark_animation_in_progress.json b/quickstep/res/raw/checkmark_animation_in_progress.json
new file mode 100644
index 0000000..690c018
--- /dev/null
+++ b/quickstep/res/raw/checkmark_animation_in_progress.json
@@ -0,0 +1 @@
+{"v":"5.10.0","fr":60,"ip":0,"op":44,"w":190,"h":190,"nm":"01_Home_Checkmark","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Check Rotate","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":2,"s":[-16]},{"t":20,"s":[6]}],"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[95.049,95.049,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Size","np":3,"mn":"ADBE Point Control","ix":1,"en":1,"ef":[{"ty":3,"nm":"Point","mn":"ADBE Point Control-0001","ix":1,"v":{"a":0,"k":[46.117,21.3],"ix":1}}]}],"ip":0,"op":228,"st":-72,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"Bounce","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":12,"s":[0]},{"t":36,"s":[-6]}],"ix":10},"p":{"a":0,"k":[81,127,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.263,0.263,0.833],"y":[1.126,1.126,-8.048]},"o":{"x":[0.05,0.05,0.05],"y":[0.958,0.958,0]},"t":1,"s":[80,80,100]},{"i":{"x":[0.1,0.1,0.1],"y":[1,1,1]},"o":{"x":[0.45,0.45,0.167],"y":[0.325,0.325,7.619]},"t":20,"s":[105,105,100]},{"t":36,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Size","np":3,"mn":"ADBE Point Control","ix":1,"en":1,"ef":[{"ty":3,"nm":"Point","mn":"ADBE Point Control-0001","ix":1,"v":{"a":0,"k":[46.117,21.3],"ix":1}}]}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Top Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0.001,"ix":10},"p":{"a":0,"k":[14.451,-31.977,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[105.208,105.208,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[115,100],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":1,"k":[{"i":{"x":0.22,"y":1},"o":{"x":0.18,"y":1},"t":7,"s":[-67,-83],"to":[0,0],"ti":[0,0]},{"t":27,"s":[-67,-2]}],"ix":1},"s":{"a":0,"k":[10,100],"ix":3},"r":{"a":0,"k":45,"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":"POST 2","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"TOP MATTE","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":8,"op":523,"st":-77,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".checkmark","cl":"checkmark","parent":1,"tt":1,"tp":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[14.451,-31.977,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[105.208,105.208,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-21.368,24.466],[34.156,-31.011],[40.677,-24.489],[-14.823,31.011]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.294,0.392,0.682,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.294,0.392,0.682,1],"t":299,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"icon 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":8,"op":523,"st":-77,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Bottom Matte","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0.001,"ix":10},"p":{"a":0,"k":[14.451,-31.977,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[105.208,105.208,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[115,100],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"tr","p":{"a":0,"k":[0.25,0],"ix":2},"a":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":3,"s":[278,77],"to":[0,0],"ti":[0,0]},{"t":10,"s":[278,39]}],"ix":1},"s":{"a":0,"k":[10,100],"ix":3},"r":{"a":0,"k":-45,"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":"POST 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"MATTE","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":5,"op":523,"st":-77,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".checkmark","cl":"checkmark","parent":1,"tt":1,"tp":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[14.451,-31.977,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[105.208,105.208,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-34.109,-1.364],[-8.503,24.692],[-14.823,31.011],[-40.677,5.157]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.294,0.392,0.682,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.294,0.392,0.682,1],"t":299,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"icon","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":5,"op":523,"st":-77,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".checkmarkBackground","cl":"checkmarkBackground","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[95,95,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.275,0.275,0.21],"y":[1.102,1.102,1]},"o":{"x":[0.037,0.037,0.05],"y":[0.476,0.476,0]},"t":0,"s":[0,0,100]},{"i":{"x":[0.1,0.1,0.1],"y":[1,1,1]},"o":{"x":[0.252,0.252,0.47],"y":[0.159,0.159,0]},"t":16,"s":[120,120,100]},{"t":28,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[148,148],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":88,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[1,0.678,0.569,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[1,0.678,0.569,1],"t":299,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Checkbox - Widget","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"ct":1,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw/home_gesture_tutorial_animation.json b/quickstep/res/raw/home_gesture_tutorial_animation.json
new file mode 100644
index 0000000..952b7d2
--- /dev/null
+++ b/quickstep/res/raw/home_gesture_tutorial_animation.json
@@ -0,0 +1 @@
+{"v":"5.10.0","fr":60,"ip":0,"op":1040,"w":412,"h":892,"nm":"SUW_Home_V03","ddd":0,"assets":[{"id":"comp_0","nm":"Part03_Demonstration_Loop_V02","fr":60,"pfr":1,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Y Movement","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":206,"ix":3},"y":{"k":[{"s":[869.65],"t":54,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[868.552],"t":55,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[866.62],"t":56,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[863.754],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[859.83],"t":58,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[854.697],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[848.161],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[839.974],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[829.807],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[817.208],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[801.528],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[781.789],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[756.397],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[722.519],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[674.682],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[606.651],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[553.048],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[541],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[484.717],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[453.506],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[434.136],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[420.535],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[410.249],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[402.1],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[395.436],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[389.862],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[385.123],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[381.042],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[377.493],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[374.382],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[371.638],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[369.207],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[367.043],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[365.113],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[363.386],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[361.84],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[360.453],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[359.209],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[358.094],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[357.096],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[356.202],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[355.404],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[354.694],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[354.065],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[353.51],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[353.022],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[352.599],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[352.233],"t":101,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[351.923],"t":102,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[351.663],"t":103,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[351.45],"t":104,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[351.155],"t":106,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[351.246],"t":111,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[351.562],"t":112,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[352.016],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[352.613],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[353.36],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[354.264],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[355.332],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[356.57],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[357.985],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[359.582],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[361.367],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[363.343],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[365.514],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[367.88],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[370.439],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[373.185],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[376.111],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[379.204],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[382.447],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[385.817],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[389.289],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[392.833],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[396.416],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[400.002],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[403.557],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[407.045],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[410.436],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[413.7],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[416.814],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[419.758],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[422.518],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[425.083],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[427.447],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[429.606],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[431.561],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[433.314],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[434.869],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[436.232],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[437.407],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[438.403],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[439.225],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[439.883],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[440.382],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[440.73],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[441.105],"t":178,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[441.434],"t":179,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[442.009],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[442.856],"t":181,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[444.004],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[445.489],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[447.353],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[449.647],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[452.433],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[455.788],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[459.807],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[464.614],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[470.368],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[477.283],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[485.646],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[495.857],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[508.473],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[524.252],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[544.08],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[568.422],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[595.903],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[622.885],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[646.387],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[665.81],"t":201,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[681.749],"t":202,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[694.958],"t":203,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[706.05],"t":204,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[715.481],"t":205,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[723.582],"t":206,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[730.598],"t":207,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[736.714],"t":208,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[742.07],"t":209,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[746.778],"t":210,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[750.924],"t":211,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[754.579],"t":212,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[757.802],"t":213,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[760.641],"t":214,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[763.135],"t":215,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[765.318],"t":216,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[767.221],"t":217,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[768.867],"t":218,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[770.279],"t":219,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[771.475],"t":220,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[772.472],"t":221,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[773.285],"t":222,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[773.927],"t":223,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[774.41],"t":224,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[774.021],"t":232,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[773.506],"t":233,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[772.832],"t":234,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[771.963],"t":235,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[770.847],"t":236,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[769.411],"t":237,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[767.551],"t":238,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[765.132],"t":239,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[762.034],"t":240,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[758.373],"t":241,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[754.748],"t":242,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[751.783],"t":243,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[749.59],"t":244,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[748.016],"t":245,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[746.895],"t":246,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[746.109],"t":247,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[745.576],"t":248,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[746.056],"t":257,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[746.466],"t":258,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[746.943],"t":259,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[747.474],"t":260,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[748.047],"t":261,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[748.643],"t":262,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[749.247],"t":263,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[749.84],"t":264,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[750.412],"t":265,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[750.952],"t":266,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[751.455],"t":267,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[751.918],"t":268,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[752.342],"t":269,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[753.071],"t":271,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[753.655],"t":273,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[754.299],"t":276,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue Y Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":71,"s":[0]},{"i":{"x":[0.544],"y":[1]},"o":{"x":[0.477],"y":[0]},"t":109,"s":[-190]},{"i":{"x":[0.671],"y":[1]},"o":{"x":[0.309],"y":[0]},"t":156,"s":[-100]},{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":177,"s":[-100]},{"i":{"x":[0.424],"y":[1]},"o":{"x":[0.75],"y":[0]},"t":227,"s":[20]},{"i":{"x":[0.363],"y":[1]},"o":{"x":[0.345],"y":[0]},"t":251,"s":[-10]},{"t":285,"s":[0]}],"ix":1}}]}],"ip":0,"op":395,"st":-110,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-609,"s":[0]},{"t":-599,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":206,"ix":3},"y":{"k":[{"s":[869.65],"t":54,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[868.552],"t":55,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[866.62],"t":56,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[863.754],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[859.83],"t":58,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[854.697],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[848.161],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[839.974],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[829.807],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[817.208],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[801.528],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[781.789],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[756.397],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[722.519],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[674.682],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[606.651],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[553.048],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[541],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[484.717],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[453.506],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[434.136],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[420.535],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[410.249],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[402.1],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[395.436],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[389.862],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[385.123],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[381.042],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[377.493],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[374.382],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[371.638],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[369.207],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[367.043],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[365.113],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[363.386],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[361.84],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[360.453],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[359.209],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[358.094],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[357.096],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[356.202],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[355.404],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[354.694],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[354.065],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[353.51],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[353.022],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[352.599],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[352.233],"t":101,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[351.923],"t":102,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[351.663],"t":103,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[351.45],"t":104,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[351.155],"t":106,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue Y Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":71,"s":[0]},{"t":109,"s":[-190]}],"ix":1}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":24,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,23.5],[21.75,-21.75],[21.75,-66.5]],"c":false}]},{"i":{"x":0.65,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.35,"y":0},"t":49,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.35,"y":0},"t":66,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"t":71,"s":[{"i":[[0,0],[0,26.75],[0,0]],"o":[[0,0],[0,-26.583],[0,0]],"v":[[29.75,31.5],[21.75,-21.75],[29.75,-74.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.418],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.149],"y":[1]},"o":{"x":[0.529],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":67,"s":[27]},{"t":86,"s":[58],"h":1}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.77]},"o":{"x":[0.87],"y":[0.12]},"t":69,"s":[0]},{"t":83,"s":[49.5]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.77]},"o":{"x":[0.87],"y":[0.12]},"t":69,"s":[100]},{"t":83,"s":[50.5]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-465,"s":[0]},{"t":-447,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":82,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Gesture KO","td":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":19,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":31,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":49,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":71,"s":[100]},{"t":80,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,1429,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":414,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[1]},"o":{"x":[1],"y":[0]},"t":53,"s":[581]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.312],"y":[4.051]},"t":71,"s":[910]},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":80,"s":[910]},{"t":110,"s":[581]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":53,"s":[90]},{"t":71,"s":[200],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":80,"s":[200]},{"t":110,"s":[90]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":1,"k":[{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":53,"s":[90]},{"t":71,"s":[200],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":80,"s":[200]},{"t":110,"s":[90]}],"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491],[-117,-581],[117,-581],[207,-491],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":53,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.772,0],[0,0],[0,-49.772],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-49.772],[0,0],[49.772,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491.167],[-116.817,-581.35],[116.817,-581.35],[207,-491.167],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":54,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.09,0],[0,0],[0,-50.09],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-50.09],[0,0],[50.09,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491.689],[-116.241,-582.448],[116.241,-582.448],[207,-491.689],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":55,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.651,0],[0,0],[0,-50.651],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-50.651],[0,0],[50.651,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-492.605],[-115.225,-584.38],[115.225,-584.38],[207,-492.605],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":56,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.485,0],[0,0],[0,-51.485],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-51.485],[0,0],[51.485,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-493.959],[-113.713,-587.246],[113.713,-587.246],[207,-493.959],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":57,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-52.63,0],[0,0],[0,-52.63],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-52.63],[0,0],[52.63,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-495.808],[-111.638,-591.17],[111.638,-591.17],[207,-495.808],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":58,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-54.132,0],[0,0],[0,-54.133],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-54.133],[0,0],[54.133,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-498.219],[-108.916,-596.303],[108.916,-596.303],[207,-498.219],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-56.05,0],[0,0],[0,-56.05],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-56.05],[0,0],[56.05,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-501.281],[-105.442,-602.839],[105.442,-602.839],[207,-501.281],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-58.455,0],[0,0],[0,-58.455],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-58.455],[0,0],[58.455,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-505.109],[-101.083,-611.026],[101.083,-611.026],[207,-505.109],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-61.443,0],[0,0],[0,-61.443],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-61.443],[0,0],[61.443,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-509.862],[-95.67,-621.193],[95.669,-621.193],[207,-509.862],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-65.136,0],[0,0],[0,-65.136],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-65.136],[0,0],[65.136,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-515.772],[-88.979,-633.792],[88.979,-633.792],[207,-515.772],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-69.689,0],[0,0],[0,-69.689],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-69.689],[0,0],[69.689,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-523.201],[-80.73,-649.472],[80.73,-649.472],[207,-523.201],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-75.292,0],[0,0],[0,-75.292],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-75.292],[0,0],[75.292,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-532.789],[-70.578,-669.211],[70.578,-669.211],[207,-532.789],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-82.119,0],[0,0],[0,-82.119],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-82.119],[0,0],[82.119,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-545.809],[-58.206,-694.603],[58.206,-694.603],[207,-545.809],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-90.124,0],[0,0],[0,-90.124],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-90.124],[0,0],[90.124,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-565.184],[-43.703,-728.481],[43.703,-728.481],[207,-565.184],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-98.484,0],[0,0],[0,-98.484],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-98.484],[0,0],[98.484,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-597.873],[-28.555,-776.318],[28.555,-776.318],[207,-597.873],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-105.33,0],[0,0],[0,-105.33],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-105.33],[0,0],[105.33,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-653.5],[-16.151,-844.349],[16.151,-844.349],[207,-653.5],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.245,0],[0,0],[0,-109.245],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-109.245],[0,0],[109.245,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-700.008],[-9.056,-897.952],[9.056,-897.952],[207,-700.008],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-710],[-7,-910],[7,-910],[207,-710],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-711.387],[-7,-911.387],[7,-911.387],[207,-711.387],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-711.036],[-7,-911.036],[7,-911.036],[207,-711.036],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-710.362],[-7,-910.362],[7,-910.362],[207,-710.362],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-710],[-7,-910],[7,-910],[207,-710],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.251,0],[0,0],[0,-110.251],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.251],[0,0],[110.251,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-709.533],[-7.234,-909.299],[7.234,-909.299],[207,-709.533],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.855,0],[0,0],[0,-109.855],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-109.855],[0,0],[109.855,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-708.106],[-7.951,-907.155],[7.951,-907.155],[207,-708.106],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.183,0],[0,0],[0,-109.183],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-109.183],[0,0],[109.183,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-705.681],[-9.169,-903.511],[9.169,-903.511],[207,-705.681],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-108.224,0],[0,0],[0,-108.224],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-108.224],[0,0],[108.224,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-702.223],[-10.906,-898.317],[10.906,-898.317],[207,-702.223],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-106.972,0],[0,0],[0,-106.972],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-106.972],[0,0],[106.972,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-697.707],[-13.174,-891.533],[13.174,-891.533],[207,-697.707],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-105.423,0],[0,0],[0,-105.422],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-105.422],[0,0],[105.423,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-692.117],[-15.983,-883.134],[15.983,-883.134],[207,-692.117],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-103.574,0],[0,0],[0,-103.574],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-103.574],[0,0],[103.574,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-685.448],[-19.332,-873.116],[19.332,-873.116],[207,-685.448],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-101.431,0],[0,0],[0,-101.431],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-101.431],[0,0],[101.431,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-677.717],[-23.215,-861.502],[23.215,-861.502],[207,-677.717],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-99.003,0],[0,0],[0,-99.003],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-99.003],[0,0],[99.003,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-668.96],[-27.614,-848.347],[27.614,-848.347],[207,-668.96],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-96.309,0],[0,0],[0,-96.309],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-96.309],[0,0],[96.309,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-659.241],[-32.495,-833.746],[32.495,-833.746],[207,-659.241],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-93.374,0],[0,0],[0,-93.374],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-93.374],[0,0],[93.374,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-648.653],[-37.814,-817.839],[37.814,-817.839],[207,-648.653],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-90.232,0],[0,0],[0,-90.232],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-90.232],[0,0],[90.232,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-637.317],[-43.507,-800.81],[43.507,-800.81],[207,-637.317],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-86.925,0],[0,0],[0,-86.925],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-86.925],[0,0],[86.925,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-625.39],[-49.498,-782.892],[49.498,-782.892],[207,-625.39],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-83.505,0],[0,0],[0,-83.505],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-83.505],[0,0],[83.505,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-613.051],[-55.696,-764.355],[55.696,-764.355],[207,-613.051],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-76.546,0],[0,0],[0,-76.546],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-76.546],[0,0],[76.546,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-587.949],[-68.304,-726.645],[68.304,-726.645],[207,-587.949],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-73.126,0],[0,0],[0,-73.126],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-73.126],[0,0],[73.126,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-575.61],[-74.502,-708.108],[74.502,-708.108],[207,-575.61],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-69.819,0],[0,0],[0,-69.819],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-69.819],[0,0],[69.819,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-563.683],[-80.493,-690.19],[80.493,-690.19],[207,-563.683],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-66.677,0],[0,0],[0,-66.677],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-66.677],[0,0],[66.677,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-552.347],[-86.186,-673.161],[86.186,-673.161],[207,-552.347],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-63.742,0],[0,0],[0,-63.742],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-63.742],[0,0],[63.742,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-541.759],[-91.505,-657.254],[91.505,-657.254],[207,-541.759],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-61.048,0],[0,0],[0,-61.048],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-61.048],[0,0],[61.048,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-532.04],[-96.386,-642.653],[96.386,-642.653],[207,-532.04],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-58.62,0],[0,0],[0,-58.62],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-58.62],[0,0],[58.62,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-523.283],[-100.785,-629.498],[100.785,-629.498],[207,-523.283],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-56.477,0],[0,0],[0,-56.477],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-56.477],[0,0],[56.477,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-515.552],[-104.668,-617.884],[104.668,-617.884],[207,-515.552],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-54.628,0],[0,0],[0,-54.629],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-54.629],[0,0],[54.628,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-508.884],[-108.017,-607.866],[108.017,-607.866],[207,-508.884],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-53.079,0],[0,0],[0,-53.079],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-53.079],[0,0],[53.079,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-503.293],[-110.826,-599.467],[110.826,-599.467],[207,-503.293],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.827,0],[0,0],[0,-51.827],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-51.827],[0,0],[51.827,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-498.777],[-113.094,-592.683],[113.094,-592.683],[207,-498.777],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.868,0],[0,0],[0,-50.868],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-50.868],[0,0],[50.868,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-495.319],[-114.831,-587.489],[114.831,-587.489],[207,-495.319],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.196,0],[0,0],[0,-50.196],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-50.196],[0,0],[50.196,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-492.894],[-116.049,-583.845],[116.049,-583.845],[207,-492.894],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.8,0],[0,0],[0,-49.8],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-49.8],[0,0],[49.8,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491.467],[-116.766,-581.701],[116.766,-581.701],[207,-491.467],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491],[-117,-581],[117,-581],[207,-491],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.341176470588,0.780392156863,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":7,"op":82,"st":-110,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Pill to Arc Shadow","tt":1,"tp":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-609,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-599,"s":[100]},{"t":0,"s":[15]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":206,"ix":3},"y":{"k":[{"s":[869.65],"t":54,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[868.552],"t":55,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[866.62],"t":56,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[863.754],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[859.83],"t":58,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[854.697],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[848.161],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[839.974],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[829.807],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[817.208],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[801.528],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[781.789],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[756.397],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[722.519],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[674.682],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[606.651],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[553.048],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[541],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[484.717],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[453.506],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[434.136],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[420.535],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[410.249],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[402.1],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[395.436],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[389.862],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[385.123],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[381.042],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[377.493],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[374.382],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[371.638],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[369.207],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[367.043],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[365.113],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[363.386],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[361.84],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[360.453],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[359.209],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[358.094],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[357.096],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[356.202],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[355.404],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[354.694],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[354.065],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[353.51],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[353.022],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[352.599],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[352.233],"t":101,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[351.923],"t":102,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[351.663],"t":103,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[351.45],"t":104,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[351.155],"t":106,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},"a":{"a":0,"k":[0,-2,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue Y Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":71,"s":[0]},{"t":109,"s":[-190]}],"ix":1}}]},{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":2,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":8,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":1,"ix":3}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":24,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,23.5],[21.75,-21.75],[21.75,-66.5]],"c":false}]},{"i":{"x":0.65,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.35,"y":0},"t":49,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.35,"y":0},"t":66,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"t":71,"s":[{"i":[[0,0],[0,23.75],[0,0]],"o":[[0,0],[0,-23.583],[0,0]],"v":[[29.75,31.5],[21.75,-21.75],[29.75,-74.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.418],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.149],"y":[1]},"o":{"x":[0.529],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":67,"s":[27]},{"t":86,"s":[58],"h":1}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.77]},"o":{"x":[0.87],"y":[0.12]},"t":69,"s":[0]},{"t":83,"s":[49.5]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.77]},"o":{"x":[0.87],"y":[0.12]},"t":69,"s":[100]},{"t":83,"s":[50.5]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-465,"s":[0]},{"t":-447,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":82,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-466,"s":[0]},{"t":-456,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":0,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[1]},"t":82,"s":[162]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.18],"y":[0]},"t":120,"s":[190]},{"i":{"x":[0.7],"y":[1.01]},"o":{"x":[1],"y":[0]},"t":201,"s":[190]},{"t":221,"s":[200]}],"ix":4}},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.22,"y":1},"o":{"x":0.18,"y":1},"t":82,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-162.25,-21],[-162.25,-21]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.48,"y":0},"t":110,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.437]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":120,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.437]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":137,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.25]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":151,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.437]],"c":false}]},{"i":{"x":0.33,"y":1},"o":{"x":1,"y":0},"t":154,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.437]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.55,"y":0},"t":171,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.25]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":1,"y":0},"t":185,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-257.375,-41.562]],"c":false}]},{"i":{"x":0.47,"y":1},"o":{"x":0.34,"y":0},"t":201,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-272.375,-37.562]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":241,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.25]],"c":false}]},{"t":291,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-67.25]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[0.9]},"t":82,"s":[54]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":106,"s":[64]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":136,"s":[52]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":221,"s":[52]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":241,"s":[50]},{"t":291,"s":[52]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-322,"s":[0]},{"t":-304,"s":[90]}],"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":"Right","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-162.25,-21],[-162.25,-21]],"c":false}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-171.218,-21.242],[-162.226,-24.963]],"c":false}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-179.437,-21.465],[-162.204,-28.595]],"c":false}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-186.429,-21.654],[-162.185,-31.685]],"c":false}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-191.962,-21.803],[-162.17,-34.13]],"c":false}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-196.133,-21.916],[-162.158,-35.972]],"c":false}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-199.213,-21.999],[-162.15,-37.334]],"c":false}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-201.485,-22.06],[-162.144,-38.338]],"c":false}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-203.175,-22.106],[-162.139,-39.084]],"c":false}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-204.445,-22.14],[-162.136,-39.645]],"c":false}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-205.408,-22.166],[-162.133,-40.071]],"c":false}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-206.145,-22.186],[-162.131,-40.397]],"c":false}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-206.712,-22.202],[-162.13,-40.647]],"c":false}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.15,-22.214],[-162.129,-40.841]],"c":false}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.489,-22.223],[-162.128,-40.991]],"c":false}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.75,-22.23],[-162.127,-41.106]],"c":false}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.952,-22.235],[-162.127,-41.195]],"c":false}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.106,-22.239],[-162.126,-41.263]],"c":false}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.223,-22.243],[-162.126,-41.315]],"c":false}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.31,-22.245],[-162.126,-41.354]],"c":false}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.374,-22.247],[-162.125,-41.382]],"c":false}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.453,-22.249],[-162.125,-41.417]],"c":false}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.418]],"c":false}],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.358]],"c":false}],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.252]],"c":false}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.094]],"c":false}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-40.877]],"c":false}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-40.59]],"c":false}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-40.224]],"c":false}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-39.761]],"c":false}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-39.181]],"c":false}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-38.454]],"c":false}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-37.534]],"c":false}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-36.35]],"c":false}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-34.776]],"c":false}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-32.559]],"c":false}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-29.136]],"c":false}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-24.536]],"c":false}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.25]],"c":false}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.437]],"c":false}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.414]],"c":false}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.338]],"c":false}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.199]],"c":false}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-40.983]],"c":false}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-40.668]],"c":false}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-40.224]],"c":false}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-39.598]],"c":false}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-38.698]],"c":false}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-37.322]],"c":false}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-34.857]],"c":false}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-28.947]],"c":false}],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-25.094]],"c":false}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-23.637]],"c":false}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.895]],"c":false}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.497]],"c":false}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.305]],"c":false}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.25]],"c":false}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.753,-22.377]],"c":false}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-165.208,-22.875]],"c":false}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-171.361,-24.123]],"c":false}],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-188.488,-27.595]],"c":false}],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-219.099,-33.802]],"c":false}],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-234.244,-36.873]],"c":false}],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-242.564,-38.559]],"c":false}],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-247.877,-39.637]],"c":false}],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-251.472,-40.366]],"c":false}],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-253.937,-40.865]],"c":false}],"t":181,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-255.594,-41.201]],"c":false}],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-256.64,-41.413]],"c":false}],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-257.203,-41.528]],"c":false}],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.455,-22.25],[-257.459,-41.54]],"c":false}],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.395,-22.25],[-257.572,-41.51]],"c":false}],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.305,-22.25],[-257.74,-41.465]],"c":false}],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.181,-22.25],[-257.973,-41.403]],"c":false}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.018,-22.25],[-258.279,-41.321]],"c":false}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.808,-22.25],[-258.673,-41.216]],"c":false}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.541,-22.25],[-259.174,-41.083]],"c":false}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.203,-22.25],[-259.806,-40.914]],"c":false}],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-206.776,-22.25],[-260.608,-40.7]],"c":false}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-206.227,-22.25],[-261.637,-40.426]],"c":false}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-205.502,-22.25],[-262.996,-40.064]],"c":false}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-204.5,-22.25],[-264.875,-39.562]],"c":false}],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-203.002,-22.25],[-267.683,-38.814]],"c":false}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-201.093,-22.25],[-271.264,-37.859]],"c":false}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-272.375,-37.562]],"c":false}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-272.244,-37.534]],"c":false}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-271.843,-37.449]],"c":false}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-271.165,-37.305]],"c":false}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-270.202,-37.1]],"c":false}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-268.952,-36.833]],"c":false}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-267.415,-36.506]],"c":false}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-265.596,-36.118]],"c":false}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-263.505,-35.673]],"c":false}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-261.16,-35.173]],"c":false}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-258.583,-34.624]],"c":false}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-255.802,-34.032]],"c":false}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-252.851,-33.403]],"c":false}],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-249.768,-32.746]],"c":false}],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-246.593,-32.07]],"c":false}],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-243.367,-31.382]],"c":false}],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-240.129,-30.693]],"c":false}],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-236.915,-30.008]],"c":false}],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-233.76,-29.336]],"c":false}],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-230.692,-28.682]],"c":false}],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-227.734,-28.052]],"c":false}],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-224.906,-27.449]],"c":false}],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-222.222,-26.878]],"c":false}],"t":223,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-219.692,-26.339]],"c":false}],"t":224,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-217.325,-25.834]],"c":false}],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-215.123,-25.365]],"c":false}],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-213.089,-24.932]],"c":false}],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-211.222,-24.534]],"c":false}],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-209.521,-24.172]],"c":false}],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-207.982,-23.844]],"c":false}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-206.602,-23.55]],"c":false}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-205.377,-23.289]],"c":false}],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-204.302,-23.06]],"c":false}],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-203.371,-22.862]],"c":false}],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-202.581,-22.693]],"c":false}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-201.926,-22.554]],"c":false}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-201.4,-22.442]],"c":false}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.999,-22.356]],"c":false}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.719,-22.297]],"c":false}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.554,-22.262]],"c":false}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.258]],"c":false}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.282]],"c":false}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.323]],"c":false}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.382]],"c":false}],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.46]],"c":false}],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.558]],"c":false}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.677]],"c":false}],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.819]],"c":false}],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.984]],"c":false}],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-23.174]],"c":false}],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-23.391]],"c":false}],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-23.637]],"c":false}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-23.913]],"c":false}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-24.223]],"c":false}],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-24.568]],"c":false}],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-24.951]],"c":false}],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-25.376]],"c":false}],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-25.846]],"c":false}],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-26.366]],"c":false}],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-26.94]],"c":false}],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-27.574]],"c":false}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-28.274]],"c":false}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-29.049]],"c":false}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-29.907]],"c":false}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-30.859]],"c":false}],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-31.918]],"c":false}],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-33.101]],"c":false}],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-34.425]],"c":false}],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-35.914]],"c":false}],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-37.595]],"c":false}],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-39.5]],"c":false}],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-41.659]],"c":false}],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-44.097]],"c":false}],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-46.807]],"c":false}],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-49.72]],"c":false}],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-52.682]],"c":false}],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-55.485]],"c":false}],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-57.961]],"c":false}],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-60.044]],"c":false}],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-61.745]],"c":false}],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-63.113]],"c":false}],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-64.205]],"c":false}],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-65.068]],"c":false}],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-65.743]],"c":false}],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-66.262]],"c":false}],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-66.651]],"c":false}],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-66.93]],"c":false}],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-67.114]],"c":false}],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-67.218]],"c":false}],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[54],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.043],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.904],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.441],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.61],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.465],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.085],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.541],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.882],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.14],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.338],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.492],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.612],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.706],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.78],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.838],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.883],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.945],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.932],"t":109,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.876],"t":110,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.8],"t":111,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.703],"t":112,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.582],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.435],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.259],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.049],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.802],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.512],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.171],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.773],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.307],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.76],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.117],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.363],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.485],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.487],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.408],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.337],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.382],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.607],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.021],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.599],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.31],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.128],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.03],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52],"t":221,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.963],"t":222,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.888],"t":223,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.796],"t":224,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.694],"t":225,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.586],"t":226,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.473],"t":227,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.357],"t":228,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.239],"t":229,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.12],"t":230,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.88],"t":232,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.761],"t":233,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.643],"t":234,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.527],"t":235,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.414],"t":236,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.306],"t":237,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.204],"t":238,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.112],"t":239,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.037],"t":240,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.074],"t":254,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.12],"t":257,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.16],"t":259,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.208],"t":261,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.237],"t":262,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.268],"t":263,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.302],"t":264,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.34],"t":265,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.383],"t":266,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.43],"t":267,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.482],"t":268,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.541],"t":269,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.607],"t":270,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.682],"t":271,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.767],"t":272,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.863],"t":273,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.971],"t":274,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.091],"t":275,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.221],"t":276,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.353],"t":277,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.477],"t":278,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.587],"t":279,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.68],"t":280,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.755],"t":281,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.816],"t":282,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.865],"t":283,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.903],"t":284,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.933],"t":285,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.973],"t":287,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":1,"k":[{"t":-467,"s":[0],"h":1},{"t":-304,"s":[100],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","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":1,"k":[{"i":{"x":0.22,"y":1},"o":{"x":0.18,"y":1},"t":82,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.862,-261.879],[0.055,-282.955],[11.354,-261.879]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.18,"y":0},"t":110,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.915,-246.504],[0.001,-267.58],[11.3,-246.504]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":120,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.915,-246.504],[0.001,-267.58],[11.3,-246.504]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":137,"s":[{"i":[[4.907,-3.179],[-12.215,0],[3.984,2.581]],"o":[[-4.447,2.881],[11.035,0],[-4.907,-3.179]],"v":[[-7.665,-246.504],[-0.083,-267.58],[7.766,-246.504]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":151,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.915,-246.504],[0.001,-267.58],[11.3,-246.504]],"c":true}]},{"i":{"x":0.33,"y":1},"o":{"x":1,"y":0},"t":154,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.915,-246.504],[0.001,-267.58],[11.3,-246.504]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.55,"y":0},"t":171,"s":[{"i":[[4.907,-3.179],[-12.215,0],[3.984,2.581]],"o":[[-4.447,2.881],[11.035,0],[-4.907,-3.179]],"v":[[-7.665,-246.504],[-0.083,-267.58],[7.766,-246.504]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":1,"y":0},"t":185,"s":[{"i":[[7.064,3.179],[-17.586,0],[5.736,-2.581]],"o":[[-6.403,-2.881],[15.887,0],[-7.064,3.179]],"v":[[-10.865,-389.406],[0.052,-368.33],[11.351,-389.406]],"c":true}]},{"i":{"x":0.47,"y":1},"o":{"x":0.34,"y":0},"t":201,"s":[{"i":[[5.881,3.179],[-14.64,0],[4.775,-2.581]],"o":[[-5.33,-2.881],[13.225,0],[-5.881,3.179]],"v":[[-9.107,-406.156],[-0.02,-385.08],[9.387,-406.156]],"c":true}]},{"t":241,"s":[{"i":[[4.598,3.179],[-11.448,0],[3.734,-2.581]],"o":[[-4.168,-2.881],[10.342,0],[-4.598,3.179]],"v":[[-7.195,-320.656],[-0.089,-299.58],[7.266,-320.656]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.66,"y":1},"o":{"x":0.64,"y":0},"t":120,"s":[0,92],"to":[0,0],"ti":[0,0]},{"i":{"x":0.48,"y":1},"o":{"x":0.55,"y":0},"t":137,"s":[0,82],"to":[0,0],"ti":[0,0]},{"i":{"x":0.48,"y":0.48},"o":{"x":0.167,"y":0.167},"t":151,"s":[0,87],"to":[0,0],"ti":[0,0]},{"i":{"x":0.66,"y":1},"o":{"x":0.167,"y":0.167},"t":154,"s":[0,87],"to":[0,0],"ti":[0,0]},{"i":{"x":0.48,"y":1},"o":{"x":0.55,"y":0},"t":171,"s":[0,85],"to":[0,0],"ti":[0,0]},{"t":185,"s":[0,87]}],"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":"Bottom Rounding","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":82,"op":241,"st":-467,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":241,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":247,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":935,"s":[100]},{"t":941,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":241,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"t":291,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[45,-21.75],[-45,-21.75]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":52,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"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":"Right","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,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":64,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":0,"k":0,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":241,"op":254,"st":241,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".onSurfaceHome","cl":"onSurfaceHome","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":19,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":31,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":49,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":71,"s":[100]},{"t":80,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,1429,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":414,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[1]},"o":{"x":[1],"y":[0]},"t":53,"s":[581]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.312],"y":[4.051]},"t":71,"s":[910]},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":80,"s":[910]},{"t":110,"s":[581]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":53,"s":[90]},{"t":71,"s":[200],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":80,"s":[200]},{"t":110,"s":[90]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":1,"k":[{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":53,"s":[90]},{"t":71,"s":[200],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":80,"s":[200]},{"t":110,"s":[90]}],"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491],[-117,-581],[117,-581],[207,-491],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":53,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.772,0],[0,0],[0,-49.772],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-49.772],[0,0],[49.772,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491.167],[-116.817,-581.35],[116.817,-581.35],[207,-491.167],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":54,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.09,0],[0,0],[0,-50.09],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-50.09],[0,0],[50.09,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491.689],[-116.241,-582.448],[116.241,-582.448],[207,-491.689],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":55,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.651,0],[0,0],[0,-50.651],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-50.651],[0,0],[50.651,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-492.605],[-115.225,-584.38],[115.225,-584.38],[207,-492.605],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":56,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.485,0],[0,0],[0,-51.485],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-51.485],[0,0],[51.485,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-493.959],[-113.713,-587.246],[113.713,-587.246],[207,-493.959],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":57,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-52.63,0],[0,0],[0,-52.63],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-52.63],[0,0],[52.63,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-495.808],[-111.638,-591.17],[111.638,-591.17],[207,-495.808],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":58,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-54.132,0],[0,0],[0,-54.133],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-54.133],[0,0],[54.133,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-498.219],[-108.916,-596.303],[108.916,-596.303],[207,-498.219],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-56.05,0],[0,0],[0,-56.05],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-56.05],[0,0],[56.05,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-501.281],[-105.442,-602.839],[105.442,-602.839],[207,-501.281],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-58.455,0],[0,0],[0,-58.455],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-58.455],[0,0],[58.455,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-505.109],[-101.083,-611.026],[101.083,-611.026],[207,-505.109],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-61.443,0],[0,0],[0,-61.443],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-61.443],[0,0],[61.443,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-509.862],[-95.67,-621.193],[95.669,-621.193],[207,-509.862],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-65.136,0],[0,0],[0,-65.136],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-65.136],[0,0],[65.136,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-515.772],[-88.979,-633.792],[88.979,-633.792],[207,-515.772],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-69.689,0],[0,0],[0,-69.689],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-69.689],[0,0],[69.689,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-523.201],[-80.73,-649.472],[80.73,-649.472],[207,-523.201],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-75.292,0],[0,0],[0,-75.292],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-75.292],[0,0],[75.292,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-532.789],[-70.578,-669.211],[70.578,-669.211],[207,-532.789],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-82.119,0],[0,0],[0,-82.119],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-82.119],[0,0],[82.119,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-545.809],[-58.206,-694.603],[58.206,-694.603],[207,-545.809],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-90.124,0],[0,0],[0,-90.124],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-90.124],[0,0],[90.124,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-565.184],[-43.703,-728.481],[43.703,-728.481],[207,-565.184],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-98.484,0],[0,0],[0,-98.484],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-98.484],[0,0],[98.484,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-597.873],[-28.555,-776.318],[28.555,-776.318],[207,-597.873],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-105.33,0],[0,0],[0,-105.33],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-105.33],[0,0],[105.33,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-653.5],[-16.151,-844.349],[16.151,-844.349],[207,-653.5],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.245,0],[0,0],[0,-109.245],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-109.245],[0,0],[109.245,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-700.008],[-9.056,-897.952],[9.056,-897.952],[207,-700.008],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-710],[-7,-910],[7,-910],[207,-710],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-711.387],[-7,-911.387],[7,-911.387],[207,-711.387],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-711.036],[-7,-911.036],[7,-911.036],[207,-711.036],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-710.362],[-7,-910.362],[7,-910.362],[207,-710.362],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-710],[-7,-910],[7,-910],[207,-710],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.251,0],[0,0],[0,-110.251],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.251],[0,0],[110.251,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-709.533],[-7.234,-909.299],[7.234,-909.299],[207,-709.533],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.855,0],[0,0],[0,-109.855],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-109.855],[0,0],[109.855,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-708.106],[-7.951,-907.155],[7.951,-907.155],[207,-708.106],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.183,0],[0,0],[0,-109.183],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-109.183],[0,0],[109.183,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-705.681],[-9.169,-903.511],[9.169,-903.511],[207,-705.681],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-108.224,0],[0,0],[0,-108.224],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-108.224],[0,0],[108.224,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-702.223],[-10.906,-898.317],[10.906,-898.317],[207,-702.223],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-106.972,0],[0,0],[0,-106.972],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-106.972],[0,0],[106.972,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-697.707],[-13.174,-891.533],[13.174,-891.533],[207,-697.707],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-105.423,0],[0,0],[0,-105.422],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-105.422],[0,0],[105.423,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-692.117],[-15.983,-883.134],[15.983,-883.134],[207,-692.117],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-103.574,0],[0,0],[0,-103.574],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-103.574],[0,0],[103.574,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-685.448],[-19.332,-873.116],[19.332,-873.116],[207,-685.448],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-101.431,0],[0,0],[0,-101.431],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-101.431],[0,0],[101.431,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-677.717],[-23.215,-861.502],[23.215,-861.502],[207,-677.717],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-99.003,0],[0,0],[0,-99.003],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-99.003],[0,0],[99.003,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-668.96],[-27.614,-848.347],[27.614,-848.347],[207,-668.96],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-96.309,0],[0,0],[0,-96.309],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-96.309],[0,0],[96.309,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-659.241],[-32.495,-833.746],[32.495,-833.746],[207,-659.241],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-93.374,0],[0,0],[0,-93.374],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-93.374],[0,0],[93.374,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-648.653],[-37.814,-817.839],[37.814,-817.839],[207,-648.653],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-90.232,0],[0,0],[0,-90.232],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-90.232],[0,0],[90.232,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-637.317],[-43.507,-800.81],[43.507,-800.81],[207,-637.317],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-86.925,0],[0,0],[0,-86.925],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-86.925],[0,0],[86.925,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-625.39],[-49.498,-782.892],[49.498,-782.892],[207,-625.39],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-83.505,0],[0,0],[0,-83.505],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-83.505],[0,0],[83.505,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-613.051],[-55.696,-764.355],[55.696,-764.355],[207,-613.051],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-76.546,0],[0,0],[0,-76.546],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-76.546],[0,0],[76.546,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-587.949],[-68.304,-726.645],[68.304,-726.645],[207,-587.949],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-73.126,0],[0,0],[0,-73.126],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-73.126],[0,0],[73.126,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-575.61],[-74.502,-708.108],[74.502,-708.108],[207,-575.61],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-69.819,0],[0,0],[0,-69.819],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-69.819],[0,0],[69.819,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-563.683],[-80.493,-690.19],[80.493,-690.19],[207,-563.683],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-66.677,0],[0,0],[0,-66.677],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-66.677],[0,0],[66.677,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-552.347],[-86.186,-673.161],[86.186,-673.161],[207,-552.347],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-63.742,0],[0,0],[0,-63.742],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-63.742],[0,0],[63.742,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-541.759],[-91.505,-657.254],[91.505,-657.254],[207,-541.759],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-61.048,0],[0,0],[0,-61.048],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-61.048],[0,0],[61.048,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-532.04],[-96.386,-642.653],[96.386,-642.653],[207,-532.04],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-58.62,0],[0,0],[0,-58.62],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-58.62],[0,0],[58.62,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-523.283],[-100.785,-629.498],[100.785,-629.498],[207,-523.283],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-56.477,0],[0,0],[0,-56.477],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-56.477],[0,0],[56.477,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-515.552],[-104.668,-617.884],[104.668,-617.884],[207,-515.552],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-54.628,0],[0,0],[0,-54.629],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-54.629],[0,0],[54.628,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-508.884],[-108.017,-607.866],[108.017,-607.866],[207,-508.884],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-53.079,0],[0,0],[0,-53.079],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-53.079],[0,0],[53.079,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-503.293],[-110.826,-599.467],[110.826,-599.467],[207,-503.293],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.827,0],[0,0],[0,-51.827],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-51.827],[0,0],[51.827,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-498.777],[-113.094,-592.683],[113.094,-592.683],[207,-498.777],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.868,0],[0,0],[0,-50.868],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-50.868],[0,0],[50.868,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-495.319],[-114.831,-587.489],[114.831,-587.489],[207,-495.319],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.196,0],[0,0],[0,-50.196],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-50.196],[0,0],[50.196,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-492.894],[-116.049,-583.845],[116.049,-583.845],[207,-492.894],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.8,0],[0,0],[0,-49.8],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-49.8],[0,0],[49.8,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491.467],[-116.766,-581.701],[116.766,-581.701],[207,-491.467],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491],[-117,-581],[117,-581],[207,-491],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.925,0.753,0.424,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.925,0.753,0.424,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":7,"op":110,"st":-110,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".onSurfaceHome","cl":"onSurfaceHome","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":70,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":71,"s":[95]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,1376,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":414,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.268]},"t":71,"s":[857]},{"t":109,"s":[1204]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":0,"k":200,"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":0,"k":200,"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]},{"ty":5,"nm":"Transform","np":14,"mn":"ADBE Geometry2","ix":2,"en":1,"ef":[{"ty":3,"nm":"Anchor Point","mn":"ADBE Geometry2-0001","ix":1,"v":{"a":0,"k":[206,446],"ix":1}},{"ty":3,"nm":"Position","mn":"ADBE Geometry2-0002","ix":2,"v":{"a":0,"k":[206,446],"ix":2}},{"ty":7,"nm":"Uniform Scale","mn":"ADBE Geometry2-0011","ix":3,"v":{"a":0,"k":1,"ix":3}},{"ty":0,"nm":"Scale Height","mn":"ADBE Geometry2-0003","ix":4,"v":{"a":0,"k":100,"ix":4}},{"ty":0,"nm":"Scale Width","mn":"ADBE Geometry2-0004","ix":5,"v":{"a":0,"k":100,"ix":5}},{"ty":0,"nm":"Skew","mn":"ADBE Geometry2-0005","ix":6,"v":{"a":0,"k":0,"ix":6}},{"ty":0,"nm":"Skew Axis","mn":"ADBE Geometry2-0006","ix":7,"v":{"a":0,"k":0,"ix":7}},{"ty":0,"nm":"Rotation","mn":"ADBE Geometry2-0007","ix":8,"v":{"a":0,"k":0,"ix":8}},{"ty":0,"nm":"Opacity","mn":"ADBE Geometry2-0008","ix":9,"v":{"a":0,"k":50,"ix":9}},{"ty":7,"nm":"Use Composition’s Shutter Angle","mn":"ADBE Geometry2-0009","ix":10,"v":{"a":0,"k":1,"ix":10}},{"ty":0,"nm":"Shutter Angle","mn":"ADBE Geometry2-0010","ix":11,"v":{"a":0,"k":0,"ix":11}},{"ty":7,"nm":"Sampling","mn":"ADBE Geometry2-0012","ix":12,"v":{"a":0,"k":1,"ix":12}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-657],[-7,-857],[7,-857],[207,-657],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-710.063],[-7,-910.063],[7,-910.063],[207,-710.063],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-753.007],[-7,-953.007],[7,-953.007],[207,-753.007],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-785.49],[-7,-985.49],[7,-985.49],[207,-785.49],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-811.374],[-7,-1011.374],[7,-1011.374],[207,-811.374],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-832.839],[-7,-1032.839],[7,-1032.839],[207,-832.839],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-851.125],[-7,-1051.125],[7,-1051.125],[207,-851.125],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-866.998],[-7,-1066.998],[7,-1066.998],[207,-866.998],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-880.965],[-7,-1080.965],[7,-1080.965],[207,-880.965],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-893.379],[-7,-1093.379],[7,-1093.379],[207,-893.379],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-904.497],[-7,-1104.497],[7,-1104.497],[207,-904.497],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-914.513],[-7,-1114.513],[7,-1114.513],[207,-914.513],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-923.578],[-7,-1123.578],[7,-1123.578],[207,-923.578],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-931.81],[-7,-1131.81],[7,-1131.81],[207,-931.81],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-939.307],[-7,-1139.307],[7,-1139.307],[207,-939.307],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-946.146],[-7,-1146.146],[7,-1146.146],[207,-946.146],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-952.394],[-7,-1152.394],[7,-1152.394],[207,-952.394],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-958.107],[-7,-1158.106],[7,-1158.106],[207,-958.107],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-963.331],[-7,-1163.331],[7,-1163.331],[207,-963.331],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-968.107],[-7,-1168.107],[7,-1168.107],[207,-968.107],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-972.472],[-7,-1172.472],[7,-1172.472],[207,-972.472],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-976.455],[-7,-1176.455],[7,-1176.455],[207,-976.455],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-980.085],[-7,-1180.085],[7,-1180.085],[207,-980.085],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-983.384],[-7,-1183.384],[7,-1183.384],[207,-983.384],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-986.375],[-7,-1186.375],[7,-1186.375],[207,-986.375],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-989.077],[-7,-1189.078],[7,-1189.078],[207,-989.077],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-991.508],[-7,-1191.508],[7,-1191.508],[207,-991.508],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-993.682],[-7,-1193.682],[7,-1193.682],[207,-993.682],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-995.614],[-7,-1195.614],[7,-1195.614],[207,-995.614],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-997.317],[-7,-1197.317],[7,-1197.317],[207,-997.317],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-998.803],[-7,-1198.803],[7,-1198.803],[207,-998.803],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-1000.082],[-7,-1200.082],[7,-1200.082],[207,-1000.082],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-1001.164],[-7,-1201.165],[7,-1201.165],[207,-1001.164],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-1002.06],[-7,-1202.06],[7,-1202.06],[207,-1002.06],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-1002.776],[-7,-1202.776],[7,-1202.776],[207,-1002.776],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-1003.702],[-7,-1203.702],[7,-1203.702],[207,-1003.702],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.925,0.753,0.424,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.925,0.753,0.424,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":70,"op":109,"st":-110,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".surfaceHome","cl":"surfaceHome","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":206,"ix":3},"y":{"a":0,"k":446,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[412,892],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.365,0.259,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.365,0.259,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Volume","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1500,"st":0,"ct":1,"bm":0}]},{"id":"comp_1","nm":"Part02_Charade_Loop_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Secondary Y Movement","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":206,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":38,"s":[807.709]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":40.334,"s":[814.909]},{"t":52,"s":[807.709]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":467,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"MASTER Y POSITION","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":0,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.426],"y":[0.38]},"o":{"x":[0.48],"y":[0.051]},"t":0,"s":[-97.709]},{"i":{"x":[0.633],"y":[1]},"o":{"x":[0.654],"y":[-0.375]},"t":23,"s":[-103.709]},{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":38,"s":[-92.709]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":44.666,"s":[-50.709]},{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.52],"y":[0]},"t":78,"s":[12.291]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":109,"s":[-7.709]},{"i":{"x":[0.8],"y":[0.764]},"o":{"x":[0.3],"y":[0]},"t":118,"s":[-7.709]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":128,"s":[64.291]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.78],"y":[0]},"t":143,"s":[46.291]},{"i":{"x":[0.8],"y":[0.528]},"o":{"x":[0.3],"y":[0]},"t":145,"s":[46.291]},{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[1]},"t":155,"s":[64.291]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":184,"s":[-7.709]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.52],"y":[0]},"t":195,"s":[-7.709]},{"i":{"x":[0.428],"y":[1]},"o":{"x":[0.681],"y":[0]},"t":235,"s":[-261.709]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":290,"s":[-71.709]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.52],"y":[0]},"t":294,"s":[-71.709]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":334,"s":[-261.709]},{"i":{"x":[0.473],"y":[1.533]},"o":{"x":[0.63],"y":[0]},"t":343,"s":[-261.709]},{"i":{"x":[0.105],"y":[1]},"o":{"x":[0.497],"y":[-0.207]},"t":406,"s":[-157.709]},{"t":466,"s":[62.291]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":467,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".onSurfaceHome","cl":"onSurfaceHome","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":60,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":72,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":84,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":96,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":108,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":162,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":174,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":186,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":198,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":210,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":264,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":276,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":288,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":300,"s":[100]},{"t":312,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,1429,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":414,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":0,"k":581,"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":0,"k":90,"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":0,"k":90,"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491],[-117,-581],[117,-581],[207,-491],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491],[-117,-581],[117,-581],[207,-491],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.925,0.753,0.424,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.925,0.753,0.424,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":312,"st":-205,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-144,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-134,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":549,"s":[100]},{"t":555,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.108},"t":426,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":465,"s":[0,-10.9,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":406,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[55.625,-40.25]],"c":false}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":426,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-36.75]],"c":false}]},{"t":465,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.83],"y":[0.83]},"o":{"x":[0.44],"y":[0]},"t":406,"s":[54]},{"t":426,"s":[58]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":18,"s":[90]}],"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":"Right","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[55.625,-40.25]],"c":false}],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[55.461,-40.238]],"c":false}],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[54.979,-40.201]],"c":false}],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[54.191,-40.142]],"c":false}],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[53.112,-40.06]],"c":false}],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[51.754,-39.958]],"c":false}],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[50.13,-39.835]],"c":false}],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[48.251,-39.693]],"c":false}],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[46.13,-39.533]],"c":false}],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[43.779,-39.356]],"c":false}],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[41.212,-39.162]],"c":false}],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[38.443,-38.953]],"c":false}],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[35.488,-38.73]],"c":false}],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[32.365,-38.494]],"c":false}],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[29.095,-38.248]],"c":false}],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[25.705,-37.992]],"c":false}],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[22.232,-37.73]],"c":false}],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[18.728,-37.465]],"c":false}],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[15.275,-37.205]],"c":false}],"t":424,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[12.014,-36.959]],"c":false}],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-36.75]],"c":false}],"t":426,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-36.245]],"c":false}],"t":427,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-35.487]],"c":false}],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-34.479]],"c":false}],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-33.307]],"c":false}],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-32.102]],"c":false}],"t":431,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-30.966]],"c":false}],"t":432,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-29.94]],"c":false}],"t":433,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-29.029]],"c":false}],"t":434,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-28.223]],"c":false}],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-27.508]],"c":false}],"t":436,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-26.872]],"c":false}],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-26.304]],"c":false}],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-25.794]],"c":false}],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-25.335]],"c":false}],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-24.92]],"c":false}],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-24.545]],"c":false}],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-24.205]],"c":false}],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.896]],"c":false}],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.615]],"c":false}],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.36]],"c":false}],"t":446,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.129]],"c":false}],"t":447,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.918]],"c":false}],"t":448,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.728]],"c":false}],"t":449,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.555]],"c":false}],"t":450,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.4]],"c":false}],"t":451,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.26]],"c":false}],"t":452,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.135]],"c":false}],"t":453,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.023]],"c":false}],"t":454,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.924]],"c":false}],"t":455,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.837]],"c":false}],"t":456,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.762]],"c":false}],"t":457,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.697]],"c":false}],"t":458,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.642]],"c":false}],"t":459,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.597]],"c":false}],"t":460,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.561]],"c":false}],"t":461,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.534]],"c":false}],"t":462,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.515]],"c":false}],"t":463,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[54.014],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.056],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.123],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.216],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.333],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.474],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.636],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.819],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.022],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.244],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.483],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.738],"t":418,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.008],"t":419,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.291],"t":420,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.584],"t":421,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.883],"t":422,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.185],"t":423,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.482],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.763],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58],"t":426,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":1,"k":[{"t":-145,"s":[0],"h":1},{"t":18,"s":[100],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","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":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":406,"s":[{"i":[[6.167,-3.179],[-15.352,0],[5.008,2.581]],"o":[[-5.59,2.881],[13.869,0],[-6.167,-3.179]],"v":[[-9.526,-79.571],[0.604,-100.669],[9.867,-79.571]],"c":true}]},{"t":426,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.895,-79.571],[0.709,-100.669],[11.321,-79.571]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.765,"y":0.675},"o":{"x":0.399,"y":0},"t":406,"s":[0,139],"to":[0,0],"ti":[0,0]},{"i":{"x":0.24,"y":1},"o":{"x":0.4,"y":0.441},"t":424,"s":[0,101],"to":[0,0],"ti":[0,0]},{"t":427,"s":[0,93]}],"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":3,"mn":"ADBE Vector Group","hd":false}],"ip":406,"op":466,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-6,"s":[100]},{"t":5,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.033,-21.75],[-55.984,-40.016]],"c":false}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.198,-21.75],[-50.169,-39.599]],"c":false}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-5.356,-21.75],[-37.325,-38.678]],"c":false}],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.425,-21.75],[-16.892,-37.213]],"c":false}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.467,-21.75],[3.272,-35.766]],"c":false}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[2.584,-21.75],[18.031,-34.708]],"c":false}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.048,-21.75],[28.237,-33.976]],"c":false}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5.064,-21.75],[35.32,-33.468]],"c":false}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5.767,-21.75],[40.22,-33.116]],"c":false}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.241,-21.75],[43.523,-32.88]],"c":false}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.54,-21.75],[45.607,-32.73]],"c":false}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.701,-21.75],[46.73,-32.65]],"c":false}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[47.072,-32.625]],"c":false}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[49.587,-33.707]],"c":false}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[54.144,-35.668]],"c":false}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[57.197,-36.982]],"c":false}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[59.162,-37.828]],"c":false}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[60.549,-38.425]],"c":false}],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[61.581,-38.869]],"c":false}],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[62.369,-39.208]],"c":false}],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[62.978,-39.47]],"c":false}],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[63.45,-39.673]],"c":false}],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[63.811,-39.829]],"c":false}],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.082,-39.945]],"c":false}],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.276,-40.028]],"c":false}],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.405,-40.084]],"c":false}],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.477,-40.115]],"c":false}],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","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":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":195,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}]},{"i":{"x":0.01,"y":1},"o":{"x":0.167,"y":0.167},"t":208,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[47.072,-32.625]],"c":false}]},{"t":223,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.5,-40.125]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":200,"op":221,"st":-6,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-145,"s":[100]},{"t":-134,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.625,-45.75]],"c":false}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.725,-44.786]],"c":false}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.906,-43.051]],"c":false}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.119,-41.012]],"c":false}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.349,-38.801]],"c":false}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.591,-36.476]],"c":false}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.841,-34.073]],"c":false}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.097,-31.615]],"c":false}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.357,-29.121]],"c":false}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.618,-26.612]],"c":false}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.878,-24.121]],"c":false}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.125,-21.75]],"c":false}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.021,-24.795]],"c":false}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.846,-29.943]],"c":false}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.74,-33.077]],"c":false}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.672,-35.065]],"c":false}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.625,-36.457]],"c":false}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.59,-37.483]],"c":false}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.564,-38.258]],"c":false}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.543,-38.847]],"c":false}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.528,-39.292]],"c":false}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.517,-39.621]],"c":false}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.509,-39.856]],"c":false}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.504,-40.011]],"c":false}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.501,-40.098]],"c":false}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.048]],"c":false}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-39.825]],"c":false}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-39.469]],"c":false}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-38.991]],"c":false}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-38.401]],"c":false}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-37.708]],"c":false}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-36.919]],"c":false}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-36.042]],"c":false}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-35.084]],"c":false}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-34.051]],"c":false}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-32.951]],"c":false}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-31.79]],"c":false}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-30.576]],"c":false}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-29.316]],"c":false}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-28.021]],"c":false}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-26.701]],"c":false}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-25.375]],"c":false}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-24.067]],"c":false}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-22.825]],"c":false}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-21.75]],"c":false}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.38,-24.323]],"c":false}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.199,-28.188]],"c":false}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.031,-31.777]],"c":false}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.898,-34.618]],"c":false}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.795,-36.811]],"c":false}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.716,-38.509]],"c":false}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.654,-39.829]],"c":false}],"t":111,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.606,-40.851]],"c":false}],"t":112,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.57,-41.634]],"c":false}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.542,-42.22]],"c":false}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.523,-42.64]],"c":false}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.51,-42.919]],"c":false}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.502,-43.076]],"c":false}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.5,-43.125]],"c":false}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","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":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.17,"y":0},"t":59,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.625,-45.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":70,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.125,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":84,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0.167},"t":104,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-21.75]],"c":false}]},{"t":118,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.5,-43.125]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","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":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.17,"y":0},"t":59,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.895,10.429],[0.709,-10.669],[11.321,10.429]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":70,"s":[{"i":[[4.884,-3.179],[-12.16,0],[3.966,2.581]],"o":[[-4.427,2.881],[10.985,0],[-4.884,-3.179]],"v":[[-7.577,14.554],[0.447,-6.544],[7.784,14.554]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":84,"s":[{"i":[[5.367,-3.179],[-13.36,0],[4.358,2.581]],"o":[[-4.864,2.881],[12.069,0],[-5.367,-3.179]],"v":[[-8.36,13.429],[0.455,-7.669],[8.517,13.429]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":104,"s":[{"i":[[6.067,-3.179],[-15.103,0],[4.926,2.581]],"o":[[-5.499,2.881],[13.644,0],[-6.067,-3.179]],"v":[[-9.38,13.554],[0.585,-7.544],[9.699,13.554]],"c":true}]},{"t":112,"s":[{"i":[[6.067,-3.179],[-15.103,0],[4.926,2.581]],"o":[[-5.499,2.881],[13.644,0],[-6.067,-3.179]],"v":[[-9.38,13.554],[0.585,-7.544],[9.699,13.554]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-90],"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":"Round Bottom","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":59,"op":112,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":549,"s":[100]},{"t":555,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":16,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.22,"y":1},"o":{"x":0.18,"y":1},"t":23,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.643,-21.893],[-35.357,-21.893]],"c":false}]},{"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-37]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.52],"y":[0.96]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[48]},{"t":18,"s":[64]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","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":1,"k":[{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.22,"y":1},"o":{"x":0.18,"y":1},"t":23,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.643,-21.893],[-35.357,-21.893]],"c":false}]},{"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-7.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[48],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[48.143],"t":1,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[48.435],"t":2,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[48.9],"t":3,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[49.559],"t":4,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.434],"t":5,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.537],"t":6,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.865],"t":7,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.378],"t":8,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.622],"t":10,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.135],"t":11,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.463],"t":12,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.566],"t":13,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.441],"t":14,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.1],"t":15,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.565],"t":16,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.857],"t":17,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":18,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Left","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":28,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"t":52,"s":[100],"h":1},{"t":62,"s":[0],"h":1},{"t":112,"s":[100],"h":1},{"t":200,"s":[0],"h":1},{"t":221,"s":[100],"h":1},{"t":408,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,-259.147,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":27,"s":[{"i":[[4.22,-5.198],[6.889,-2.445],[6.141,2.195],[4.414,5.745],[2.09,6.003],[1.842,5.673],[0,0],[-4.629,7.032],[-3.668,2.338],[-9.176,-4.129],[0,0],[-2.537,1.423],[0,0],[-5.764,-2.348],[-3.35,-5.761],[3.559,-9.527],[0,0],[2.211,-5.388]],"o":[[-4.607,5.675],[-6.146,2.181],[-6.823,-2.438],[-3.873,-5.041],[-1.961,-5.633],[-0.673,-2.074],[-3.418,-8.054],[2.391,-3.632],[7.091,-4.519],[0,0],[2.053,0.611],[0,0],[6.766,-3.045],[6.042,2.461],[4.226,7.269],[0,0],[0,0],[-2.542,6.194]],"v":[[26.625,263.759],[9.088,276.927],[-10.477,276.927],[-27.766,263.755],[-34.35,245.857],[-39.92,228.853],[-41.895,222.617],[-38.621,196.593],[-29.625,187.329],[-2.764,182.988],[-0.678,184.077],[3.537,183.327],[5.123,182.613],[23.746,183.97],[38.891,196.367],[42.816,222.402],[40.88,229.024],[34.705,245.369]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":38,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":40,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":49,"s":[{"i":[[0,0],[5.924,-2.615],[6.267,2.766],[3.263,7.561],[2.981,6.909],[0,0],[0,0],[-4.825,8.784],[-3.668,2.709],[-9.176,-4.785],[0,0],[-7.064,3.683],[0,0],[-5.942,-2.295],[-3.35,-6.676],[4.5,-10.429],[0,0],[2.725,-6.315]],"o":[[-3.262,7.56],[-6.266,2.766],[-5.925,-2.615],[0,0],[-2.981,-6.909],[0,0],[-3.988,-9.246],[2.335,-4.251],[7.091,-5.237],[0,0],[7.064,3.683],[0,0],[6.766,-3.528],[6.387,2.466],[4.226,8.423],[0,0],[0,0],[-3.063,7.1]],"v":[[23.515,261.285],[9.088,276.548],[-10.477,276.549],[-24.906,261.285],[-33.85,240.557],[-42.795,219.829],[-48.707,206.127],[-47.871,176.22],[-38.875,165.486],[-13.389,163.498],[-11.803,164.325],[10.412,164.325],[11.998,163.498],[31.496,162.173],[46.641,176.538],[47.316,206.126],[40.88,221.041],[32.705,239.986]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.61,"y":0},"t":57,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":61,"s":[{"i":[[0,0],[5.829,-2.275],[6.166,2.405],[3.21,6.575],[2.933,6.009],[0,0],[0,0],[-4.747,7.639],[-3.609,2.356],[-9.028,-5.782],[0,0],[-6.95,4.451],[0,0],[-5.847,-1.996],[-3.296,-5.806],[4.428,-9.07],[0,0],[2.681,-5.492]],"o":[[-3.21,6.575],[-6.165,2.406],[-5.83,-2.274],[0,0],[-2.933,-6.009],[0,0],[-3.924,-8.041],[2.297,-3.697],[6.977,-4.554],[0,0],[6.95,4.451],[0,0],[6.657,-4.263],[6.284,2.145],[4.158,7.326],[0,0],[0,0],[-3.014,6.174]],"v":[[23.147,263.139],[8.953,276.413],[-10.297,276.414],[-24.493,263.14],[-31.981,245.113],[-39.468,227.086],[-43.871,215.169],[-44.463,189.161],[-35.612,179.825],[-10.537,178.375],[-8.977,179.374],[7.631,179.374],[9.191,178.375],[28.374,176.944],[43.275,189.437],[42.525,215.169],[37.607,228.14],[30.877,244.617]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":67,"s":[{"i":[[0,0],[5.782,-2.283],[6.116,2.414],[3.184,6.6],[2.91,6.031],[0,0],[0,0],[-4.709,7.668],[-3.58,2.365],[-8.956,-2.881],[0,0],[-6.894,2.218],[0,0],[-5.8,-2.003],[-3.269,-5.828],[4.392,-9.104],[0,0],[2.66,-5.513]],"o":[[-3.184,6.599],[-6.116,2.415],[-5.783,-2.283],[0,0],[-2.91,-6.031],[0,0],[-3.893,-8.071],[2.279,-3.711],[6.921,-4.571],[0,0],[6.894,2.218],[0,0],[6.604,-2.124],[6.234,2.153],[4.125,7.353],[0,0],[0,0],[-2.99,6.198]],"v":[[22.966,262.838],[8.886,276.162],[-10.209,276.162],[-24.29,262.838],[-31.064,244.743],[-37.837,226.649],[-41.5,214.688],[-42.792,188.581],[-34.012,179.21],[-9.139,174.179],[-7.591,174.677],[6.267,174.677],[7.814,174.179],[26.844,176.318],[41.625,188.859],[40.176,214.688],[36.003,227.707],[29.98,244.245]],"c":true}]},{"i":{"x":0.48,"y":1},"o":{"x":0.26,"y":1},"t":111,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,1.445],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,1.445],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[22.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-30.85,245.866],[-37.795,227.978],[-42.707,216.152],[-41.871,190.343],[-32.875,181.079],[-7.389,179.363],[-5.803,180.077],[5.412,180.077],[6.998,179.363],[26.496,178.22],[41.641,190.617],[42.316,216.152],[38.88,229.024],[31.705,245.374]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"t":118,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.902,"y":0},"o":{"x":0.3,"y":0},"t":119,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":129,"s":[{"i":[[0,0],[6.002,-2.085],[6.349,2.205],[3.305,6.027],[3.02,5.508],[0,0],[0,0],[-4.888,7.002],[-3.716,2.159],[-9.296,-3.814],[0,0],[-7.157,2.936],[0,0],[-6.02,-1.829],[-3.393,-5.322],[4.559,-8.314],[0,0],[2.761,-5.034]],"o":[[-3.305,6.027],[-6.349,2.205],[-6.003,-2.085],[0,0],[-3.02,-5.508],[0,0],[-4.041,-7.37],[2.366,-3.389],[7.184,-4.175],[0,0],[7.157,2.936],[0,0],[6.855,-2.813],[6.471,1.966],[4.282,6.715],[0,0],[0,0],[-3.104,5.66]],"v":[[23.828,264.941],[9.213,277.109],[-10.609,277.11],[-25.226,264.942],[-34.288,248.418],[-43.349,231.894],[-49.339,220.97],[-48.492,197.13],[-39.379,188.572],[-13.559,186.988],[-11.952,187.647],[10.554,187.647],[12.161,186.988],[31.914,185.931],[47.257,197.383],[47.941,220.97],[41.421,232.86],[33.139,247.963]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.78,"y":0},"t":144,"s":[{"i":[[0,0],[5.924,-2.439],[6.267,2.579],[3.263,7.051],[2.981,6.443],[0,0],[0,0],[-4.825,8.191],[-3.668,2.526],[-9.176,-4.462],[0,0],[-7.064,3.435],[0,0],[-5.942,-2.14],[-3.35,-6.225],[4.5,-9.725],[0,0],[2.725,-5.889]],"o":[[-3.262,7.05],[-6.266,2.58],[-5.925,-2.439],[0,0],[-2.981,-6.443],[0,0],[-3.988,-8.622],[2.335,-3.964],[7.091,-4.884],[0,0],[7.064,3.435],[0,0],[6.766,-3.29],[6.387,2.3],[4.226,7.855],[0,0],[0,0],[-3.063,6.621]],"v":[[23.515,262.501],[9.088,276.734],[-10.477,276.735],[-24.906,262.501],[-33.85,243.171],[-42.795,223.841],[-48.707,211.063],[-47.871,183.174],[-38.875,173.164],[-13.389,171.31],[-11.803,172.081],[10.412,172.081],[11.998,171.31],[31.496,170.074],[46.641,183.471],[47.316,211.063],[40.88,224.972],[32.705,242.639]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.4,"y":0},"t":146,"s":[{"i":[[0,0],[5.924,-2.439],[6.267,2.579],[3.263,7.051],[2.981,6.443],[0,0],[0,0],[-4.825,8.191],[-3.668,2.526],[-9.176,-4.462],[0,0],[-7.064,3.435],[0,0],[-5.942,-2.14],[-3.35,-6.225],[4.5,-9.725],[0,0],[2.725,-5.889]],"o":[[-3.262,7.05],[-6.266,2.58],[-5.925,-2.439],[0,0],[-2.981,-6.443],[0,0],[-3.988,-8.622],[2.335,-3.964],[7.091,-4.884],[0,0],[7.064,3.435],[0,0],[6.766,-3.29],[6.387,2.3],[4.226,7.855],[0,0],[0,0],[-3.063,6.621]],"v":[[23.515,262.501],[9.088,276.734],[-10.477,276.735],[-24.906,262.501],[-33.85,243.171],[-42.795,223.841],[-48.707,211.063],[-47.871,183.174],[-38.875,173.164],[-13.389,171.31],[-11.803,172.081],[10.412,172.081],[11.998,171.31],[31.496,170.074],[46.641,183.471],[47.316,211.063],[40.88,224.972],[32.705,242.639]],"c":true}]},{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.884},"t":156,"s":[{"i":[[0,0],[6.002,-2.085],[6.349,2.205],[3.305,6.027],[3.02,5.508],[0,0],[0,0],[-4.888,7.002],[-3.716,2.159],[-9.296,-3.814],[0,0],[-7.157,2.936],[0,0],[-6.02,-1.829],[-3.393,-5.322],[4.559,-8.314],[0,0],[2.761,-5.034]],"o":[[-3.305,6.027],[-6.349,2.205],[-6.003,-2.085],[0,0],[-3.02,-5.508],[0,0],[-4.041,-7.37],[2.366,-3.389],[7.184,-4.175],[0,0],[7.157,2.936],[0,0],[6.855,-2.813],[6.471,1.966],[4.282,6.715],[0,0],[0,0],[-3.104,5.66]],"v":[[23.828,264.941],[9.213,277.109],[-10.609,277.11],[-25.226,264.942],[-34.288,248.418],[-43.349,231.894],[-49.339,220.97],[-48.492,197.13],[-39.379,188.572],[-13.559,186.988],[-11.952,187.647],[10.554,187.647],[12.161,186.988],[31.914,185.931],[47.257,197.383],[47.941,220.97],[41.421,232.86],[33.139,247.963]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":175,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":195,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"t":200,"s":[{"i":[[0,0],[4.982,-1.843],[5.269,1.949],[2.743,5.327],[2.507,4.868],[0,0],[0,0],[-4.057,6.188],[-3.084,1.909],[-7.716,-3.371],[0,0],[-5.94,2.595],[0,0],[-4.997,-1.617],[-2.817,-4.703],[3.784,-7.348],[0,0],[2.291,-4.449]],"o":[[-2.743,5.326],[-5.269,1.949],[-4.982,-1.842],[0,0],[-2.507,-4.868],[0,0],[-3.354,-6.514],[1.963,-2.995],[5.963,-3.69],[0,0],[5.94,2.595],[0,0],[5.69,-2.486],[5.371,1.738],[3.554,5.935],[0,0],[0,0],[-2.576,5.002]],"v":[[21.328,266.623],[7.572,277.365],[-8.88,277.366],[-21.013,266.612],[-30.158,252.046],[-38.929,237.463],[-42.276,232.155],[-38.901,208.3],[-31.337,200.737],[-7.657,199.329],[-6.324,199.912],[6.078,199.877],[7.412,199.294],[26.437,198.157],[39.172,208.278],[42.466,230.78],[38.179,240.068],[31.18,251.666]],"c":true}],"h":1},{"i":{"x":0.8,"y":1},"o":{"x":0.167,"y":0.167},"t":221,"s":[{"i":[[0,0],[-6.469,2.54],[-6.843,-2.686],[-3.562,-7.344],[-2.238,-6.985],[0,0],[0,0],[6.26,-8],[4.298,-2.248],[9.409,5.544],[0,0],[2.81,-1.732],[0,0],[6.751,1.517],[4.533,6.044],[-3.466,10.58],[0,0],[-1.94,6.445]],"o":[[3.562,-7.343],[6.843,-2.687],[6.47,2.54],[0,0],[2.25,7.021],[0,0],[3.257,9.331],[-3.029,3.872],[-8.309,4.346],[0,0],[-2.38,-1.461],[0,0],[-6.856,4.193],[-7.256,-1.631],[-5.72,-7.626],[0,0],[0,0],[2.154,-7.155]],"v":[[-25.972,255.773],[-10.844,240.983],[10.52,240.983],[26.276,255.808],[31.363,274.998],[37.793,295.9],[41.622,309.746],[42.615,338.568],[31.6,348.034],[3.818,347.339],[2.192,346.381],[-2.497,346.652],[-4.104,347.635],[-23.931,350.481],[-42.288,338.404],[-42.272,310.024],[-38.575,296.317],[-32.279,277.471]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":225,"s":[{"i":[[0,0],[-6.469,2.54],[-6.843,-2.686],[-3.562,-7.344],[-2.238,-6.985],[0,0],[0,0],[6.26,-8],[4.298,-2.248],[9.409,5.544],[0,0],[2.81,-1.732],[0,0],[6.751,1.517],[4.533,6.044],[-3.466,10.58],[0,0],[-1.94,6.445]],"o":[[3.562,-7.343],[6.843,-2.687],[6.47,2.54],[0,0],[2.25,7.021],[0,0],[3.257,9.331],[-3.029,3.872],[-8.309,4.346],[0,0],[-2.38,-1.461],[0,0],[-6.856,4.193],[-7.256,-1.631],[-5.72,-7.626],[0,0],[0,0],[2.154,-7.155]],"v":[[-25.972,255.773],[-10.844,240.983],[10.52,240.983],[26.276,255.808],[31.363,274.998],[37.793,295.9],[41.622,309.746],[42.615,338.568],[31.6,348.034],[3.818,347.339],[2.192,346.381],[-2.497,346.652],[-4.104,347.635],[-23.931,350.481],[-42.288,338.404],[-42.272,310.024],[-38.575,296.317],[-32.279,277.471]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":230,"s":[{"i":[[0,0],[-6.469,2.537],[-6.843,-2.683],[-3.562,-7.334],[-3.256,-6.702],[0,0],[0,0],[5.268,-8.52],[4.005,-2.628],[10.02,4.641],[0,0],[7.713,-3.573],[0,0],[6.489,2.226],[3.658,6.475],[-4.914,10.116],[0,0],[-2.976,6.126]],"o":[[3.562,-7.333],[6.843,-2.683],[6.47,2.537],[0,0],[3.256,6.702],[0,0],[4.355,8.968],[-2.55,4.123],[-7.743,5.08],[0,0],[-7.714,-3.573],[0,0],[-7.388,3.422],[-6.974,-2.392],[-4.615,-8.17],[0,0],[0,0],[3.345,-6.886]],"v":[[-26.597,256.303],[-10.844,241.499],[10.52,241.498],[26.276,256.303],[36.042,276.409],[45.809,296.515],[52.265,309.806],[51.352,338.814],[41.529,349.227],[13.7,351.155],[11.968,350.353],[-12.29,350.353],[-14.021,351.155],[-35.312,352.44],[-51.849,338.506],[-52.586,309.806],[-45.559,295.339],[-36.632,276.963]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":235,"s":[{"i":[[0,0],[-6.469,2.527],[-6.843,-2.672],[-3.562,-7.305],[-2.238,-6.948],[0,0],[0,0],[6.26,-7.958],[4.298,-2.236],[9.409,5.515],[0,0],[2.81,-1.723],[0,0],[6.751,1.509],[4.533,6.012],[-3.466,10.525],[0,0],[-1.94,6.411]],"o":[[3.562,-7.305],[6.843,-2.673],[6.47,2.527],[0,0],[2.25,6.984],[0,0],[3.257,9.283],[-3.029,3.851],[-8.309,4.323],[0,0],[-2.38,-1.454],[0,0],[-6.856,4.171],[-7.256,-1.622],[-5.72,-7.586],[0,0],[0,0],[2.154,-7.118]],"v":[[-25.972,256.282],[-10.844,241.57],[10.52,241.569],[26.276,256.317],[31.363,275.406],[37.793,296.199],[41.622,309.972],[42.615,338.644],[31.6,348.06],[3.818,347.368],[2.192,346.415],[-2.497,346.685],[-4.104,347.662],[-23.931,350.493],[-42.288,338.48],[-42.272,310.249],[-38.575,296.613],[-32.279,277.866]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":240,"s":[{"i":[[0,0],[-6.469,2.537],[-6.843,-2.683],[-3.562,-7.334],[-3.256,-6.702],[0,0],[0,0],[5.268,-8.52],[4.005,-2.628],[10.02,4.641],[0,0],[7.713,-3.573],[0,0],[6.489,2.226],[3.658,6.475],[-4.914,10.116],[0,0],[-2.976,6.126]],"o":[[3.562,-7.333],[6.843,-2.683],[6.47,2.537],[0,0],[3.256,6.702],[0,0],[4.355,8.968],[-2.55,4.123],[-7.743,5.08],[0,0],[-7.714,-3.573],[0,0],[-7.388,3.422],[-6.974,-2.392],[-4.615,-8.17],[0,0],[0,0],[3.345,-6.886]],"v":[[-26.597,256.303],[-10.844,241.499],[10.52,241.498],[26.276,256.303],[36.042,276.409],[45.809,296.515],[52.265,309.806],[51.352,338.814],[41.529,349.227],[13.7,351.155],[11.968,350.353],[-12.29,350.353],[-14.021,351.155],[-35.312,352.44],[-51.849,338.506],[-52.586,309.806],[-45.559,295.339],[-36.632,276.963]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.17,"y":0},"t":250,"s":[{"i":[[0,0],[-6.469,2.528],[-6.843,-2.674],[-3.562,-7.309],[-2.238,-6.951],[0,0],[0,0],[6.26,-7.962],[4.298,-2.237],[9.409,5.517],[0,0],[2.81,-1.724],[0,0],[6.751,1.51],[4.533,6.015],[-3.466,10.53],[0,0],[-1.94,6.414]],"o":[[3.562,-7.308],[6.843,-2.674],[6.47,2.528],[0,0],[2.25,6.988],[0,0],[3.257,9.287],[-3.029,3.853],[-8.309,4.325],[0,0],[-2.38,-1.454],[0,0],[-6.856,4.173],[-7.256,-1.623],[-5.72,-7.59],[0,0],[0,0],[2.154,-7.121]],"v":[[-25.972,256.238],[-10.844,241.519],[10.52,241.518],[26.276,256.273],[31.363,275.37],[37.793,296.172],[41.622,309.952],[42.615,338.637],[31.6,348.057],[3.818,347.366],[2.192,346.412],[-2.497,346.682],[-4.104,347.66],[-23.931,350.492],[-42.288,338.473],[-42.272,310.229],[-38.575,296.587],[-32.279,277.831]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.5,"y":0},"t":296,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[32.971,273.182],[41.915,291.071],[47.827,302.896],[46.991,328.705],[37.996,337.969],[12.509,339.685],[10.924,338.971],[-11.292,338.971],[-12.878,339.685],[-32.376,340.828],[-47.521,328.431],[-48.196,302.896],[-41.76,290.025],[-33.585,273.675]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.167,"y":0},"t":313,"s":[{"i":[[0,0],[-5.924,2.568],[-6.267,-2.716],[-3.263,-7.424],[-2.981,-6.785],[0,0],[0,0],[4.825,-8.625],[3.668,-2.66],[9.176,4.699],[0,0],[7.064,-3.617],[0,0],[5.942,2.253],[3.35,6.555],[-4.5,10.241],[0,0],[-2.725,6.201]],"o":[[3.262,-7.424],[6.266,-2.716],[5.925,2.568],[0,0],[2.981,6.785],[0,0],[3.988,9.079],[-2.335,4.174],[-7.091,5.142],[0,0],[-7.064,-3.617],[0,0],[-6.766,3.465],[-6.387,-2.422],[-4.226,-8.271],[0,0],[0,0],[3.063,-6.972]],"v":[[-24.394,257.438],[-9.968,242.451],[9.597,242.45],[24.026,257.438],[32.971,277.793],[41.915,298.147],[47.827,311.602],[46.991,340.969],[37.996,351.51],[12.509,353.462],[10.924,352.65],[-11.292,352.65],[-12.878,353.462],[-32.376,354.763],[-47.521,340.657],[-48.196,311.602],[-41.76,296.957],[-33.585,278.353]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":318,"s":[{"i":[[0,0],[-6.469,2.54],[-6.843,-2.686],[-3.562,-7.344],[-2.238,-6.985],[0,0],[0,0],[6.26,-8],[4.298,-2.248],[9.409,5.544],[0,0],[2.81,-1.732],[0,0],[6.751,1.517],[4.533,6.044],[-3.466,10.58],[0,0],[-1.94,6.445]],"o":[[3.562,-7.343],[6.843,-2.687],[6.47,2.54],[0,0],[2.25,7.021],[0,0],[3.257,9.331],[-3.029,3.872],[-8.309,4.346],[0,0],[-2.38,-1.461],[0,0],[-6.856,4.193],[-7.256,-1.631],[-5.72,-7.626],[0,0],[0,0],[2.154,-7.155]],"v":[[-25.972,255.773],[-10.844,240.983],[10.52,240.983],[26.276,255.808],[31.363,274.998],[37.793,295.9],[41.622,309.746],[42.615,338.568],[31.6,348.034],[3.818,347.339],[2.192,346.381],[-2.497,346.652],[-4.104,347.635],[-23.931,350.481],[-42.288,338.404],[-42.272,310.024],[-38.575,296.317],[-32.279,277.471]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":323,"s":[{"i":[[0,0],[-6.469,2.434],[-6.843,-2.574],[-3.562,-7.037],[-3.256,-6.431],[0,0],[0,0],[5.268,-8.175],[4.005,-2.521],[10.02,4.453],[0,0],[7.713,-3.428],[0,0],[6.489,2.136],[3.658,6.213],[-4.914,9.707],[0,0],[-2.976,5.878]],"o":[[3.562,-7.036],[6.843,-2.575],[6.47,2.434],[0,0],[3.256,6.431],[0,0],[4.355,8.605],[-2.55,3.956],[-7.743,4.874],[0,0],[-7.714,-3.428],[0,0],[-7.388,3.284],[-6.974,-2.296],[-4.615,-7.84],[0,0],[0,0],[3.345,-6.608]],"v":[[-26.597,255.596],[-10.844,241.39],[10.52,241.389],[26.276,255.596],[36.042,274.888],[45.809,294.181],[52.265,306.934],[51.352,334.769],[41.529,344.76],[13.7,346.61],[11.968,345.84],[-12.29,345.84],[-14.021,346.61],[-35.312,347.843],[-51.849,334.473],[-52.586,306.934],[-45.559,293.052],[-36.632,275.419]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":328,"s":[{"i":[[0,0],[-6.469,2.527],[-6.843,-2.672],[-3.562,-7.305],[-2.238,-6.948],[0,0],[0,0],[6.26,-7.958],[4.298,-2.236],[9.409,5.515],[0,0],[2.81,-1.723],[0,0],[6.751,1.509],[4.533,6.012],[-3.466,10.525],[0,0],[-1.94,6.411]],"o":[[3.562,-7.305],[6.843,-2.673],[6.47,2.527],[0,0],[2.25,6.984],[0,0],[3.257,9.283],[-3.029,3.851],[-8.309,4.323],[0,0],[-2.38,-1.454],[0,0],[-6.856,4.171],[-7.256,-1.622],[-5.72,-7.586],[0,0],[0,0],[2.154,-7.118]],"v":[[-25.972,256.282],[-10.844,241.57],[10.52,241.569],[26.276,256.317],[31.363,275.406],[37.793,296.199],[41.622,309.972],[42.615,338.644],[31.6,348.06],[3.818,347.368],[2.192,346.415],[-2.497,346.685],[-4.104,347.662],[-23.931,350.493],[-42.288,338.48],[-42.272,310.249],[-38.575,296.613],[-32.279,277.866]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":333,"s":[{"i":[[0,0],[-6.469,2.537],[-6.843,-2.683],[-3.562,-7.334],[-3.256,-6.702],[0,0],[0,0],[5.268,-8.52],[4.005,-2.628],[10.02,4.641],[0,0],[7.713,-3.573],[0,0],[6.489,2.226],[3.658,6.475],[-4.914,10.116],[0,0],[-2.976,6.126]],"o":[[3.562,-7.333],[6.843,-2.683],[6.47,2.537],[0,0],[3.256,6.702],[0,0],[4.355,8.968],[-2.55,4.123],[-7.743,5.08],[0,0],[-7.714,-3.573],[0,0],[-7.388,3.422],[-6.974,-2.392],[-4.615,-8.17],[0,0],[0,0],[3.345,-6.886]],"v":[[-26.597,256.303],[-10.844,241.499],[10.52,241.498],[26.276,256.303],[36.042,276.409],[45.809,296.515],[52.265,309.806],[51.352,338.814],[41.529,349.227],[13.7,351.155],[11.968,350.353],[-12.29,350.353],[-14.021,351.155],[-35.312,352.44],[-51.849,338.506],[-52.586,309.806],[-45.559,295.339],[-36.632,276.963]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.17,"y":0},"t":343,"s":[{"i":[[0,0],[-6.469,2.528],[-6.843,-2.674],[-3.562,-7.309],[-2.238,-6.951],[0,0],[0,0],[6.26,-7.962],[4.298,-2.237],[9.409,5.517],[0,0],[2.81,-1.724],[0,0],[6.751,1.51],[4.533,6.015],[-3.466,10.53],[0,0],[-1.94,6.414]],"o":[[3.562,-7.308],[6.843,-2.674],[6.47,2.528],[0,0],[2.25,6.988],[0,0],[3.257,9.287],[-3.029,3.853],[-8.309,4.325],[0,0],[-2.38,-1.454],[0,0],[-6.856,4.173],[-7.256,-1.623],[-5.72,-7.59],[0,0],[0,0],[2.154,-7.121]],"v":[[-25.972,256.238],[-10.844,241.519],[10.52,241.518],[26.276,256.273],[31.363,275.37],[37.793,296.172],[41.622,309.952],[42.615,338.637],[31.6,348.057],[3.818,347.366],[2.192,346.412],[-2.497,346.682],[-4.104,347.66],[-23.931,350.492],[-42.288,338.473],[-42.272,310.229],[-38.575,296.587],[-32.279,277.831]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.5,"y":0},"t":389,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[32.971,273.182],[41.915,291.071],[47.827,302.896],[46.991,328.705],[37.996,337.969],[12.509,339.685],[10.924,338.971],[-11.292,338.971],[-12.878,339.685],[-32.376,340.828],[-47.521,328.431],[-48.196,302.896],[-41.76,290.025],[-33.585,273.675]],"c":true}]},{"t":406,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[30.971,273.182],[38.915,291.071],[43.202,302.895],[42.366,328.704],[33.371,337.968],[7.884,339.684],[6.299,338.97],[-6.167,338.97],[-7.753,339.684],[-27.251,340.827],[-42.396,328.43],[-43.071,302.895],[-38.76,290.025],[-31.585,273.675]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"animated arrow","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":27,"op":408,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".surfaceHome","cl":"surfaceHome","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":206,"ix":3},"y":{"a":0,"k":446,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[412,892],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.365,0.259,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.365,0.259,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Volume","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":467,"st":-145,"ct":1,"bm":0}]},{"id":"comp_2","nm":"Part01_ThumbDemo_V02","fr":60,"pfr":1,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"HAND NULL","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.39],"y":[1]},"o":{"x":[0.59],"y":[0]},"t":3,"s":[10]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.15],"y":[0]},"t":59,"s":[0]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":95,"s":[-3]},{"i":{"x":[0.44],"y":[1]},"o":{"x":[0.84],"y":[0]},"t":122,"s":[-4]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.56],"y":[0]},"t":150,"s":[15]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":175,"s":[-4]},{"i":{"x":[0.44],"y":[1]},"o":{"x":[0.84],"y":[0]},"t":234,"s":[-4]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":262,"s":[15]},{"t":323,"s":[-5]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.06],"y":[0.36]},"t":0,"s":[549]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":73,"s":[412]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":262,"s":[412]},{"t":343,"s":[549]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.194],"y":[0]},"t":0,"s":[1031.366]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":63,"s":[920]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":122,"s":[920]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.259],"y":[0]},"t":145,"s":[727]},{"i":{"x":[0.45],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":147,"s":[727]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":208,"s":[920]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":234,"s":[920]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.259],"y":[0]},"t":257,"s":[727]},{"i":{"x":[0.47],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":259,"s":[727]},{"t":336,"s":[1014.366]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":321,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"⨳ Thumb KO","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"k":[{"s":[17.7],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.084],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.752],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.548],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.405],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.298],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.213],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.144],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.086],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.037],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.995],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.958],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.926],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.898],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.874],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.852],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.832],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.815],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.8],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.786],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.773],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.763],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.753],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.744],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.73],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.715],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.706],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.723],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.753],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.794],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.845],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.906],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.974],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.048],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.126],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.206],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.286],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.366],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.445],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.522],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.596],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.667],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.736],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.801],"t":165,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.864],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.923],"t":167,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.979],"t":168,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.033],"t":169,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.083],"t":170,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.131],"t":171,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.176],"t":172,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.219],"t":173,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.259],"t":174,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.297],"t":175,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.333],"t":176,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.366],"t":177,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.397],"t":178,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.427],"t":179,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.454],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.48],"t":181,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.504],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.526],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.547],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.566],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.584],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.6],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.615],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.628],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.64],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.651],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.661],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.677],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.693],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.682],"t":203,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.664],"t":204,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.642],"t":205,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.617],"t":206,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.589],"t":207,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.559],"t":208,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.528],"t":209,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.496],"t":210,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.462],"t":211,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.427],"t":212,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.391],"t":213,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.355],"t":214,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.318],"t":215,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.28],"t":216,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.241],"t":217,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.202],"t":218,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.163],"t":219,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.123],"t":220,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.083],"t":221,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.043],"t":222,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.002],"t":223,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.961],"t":224,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.92],"t":225,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.878],"t":226,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.837],"t":227,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.795],"t":228,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.754],"t":229,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.587],"t":233,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.545],"t":234,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.504],"t":235,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.462],"t":236,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.421],"t":237,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.38],"t":238,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.339],"t":239,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.298],"t":240,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.258],"t":241,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.218],"t":242,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.178],"t":243,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.139],"t":244,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.1],"t":245,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.062],"t":246,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.025],"t":247,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.988],"t":248,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.952],"t":249,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.917],"t":250,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.883],"t":251,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.85],"t":252,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.819],"t":253,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.79],"t":254,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.764],"t":255,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.74],"t":256,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.72],"t":257,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.706],"t":258,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.706],"t":260,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.723],"t":261,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.753],"t":262,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.794],"t":263,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.845],"t":264,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.906],"t":265,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.974],"t":266,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.048],"t":267,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.126],"t":268,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.206],"t":269,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.286],"t":270,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.366],"t":271,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.445],"t":272,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.522],"t":273,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.596],"t":274,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.667],"t":275,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.736],"t":276,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.801],"t":277,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.864],"t":278,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.923],"t":279,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.979],"t":280,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.033],"t":281,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.083],"t":282,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.131],"t":283,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.176],"t":284,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.219],"t":285,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.259],"t":286,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.297],"t":287,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.333],"t":288,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.366],"t":289,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.397],"t":290,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.427],"t":291,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.454],"t":292,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.48],"t":293,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.504],"t":294,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.526],"t":295,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.547],"t":296,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.566],"t":297,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.584],"t":298,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.6],"t":299,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.615],"t":300,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.628],"t":301,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.64],"t":302,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.651],"t":303,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.661],"t":304,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.677],"t":306,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.693],"t":309,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"p":{"k":[{"s":[0,0,0],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.015,0,0],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.077,0,0],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.192,0,0],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.364,0,0],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.598,0,0],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.902,0,0],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.285,0,0],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.76,0,0],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.347,0,0],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.074,0,0],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.968,0,0],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.068,0,0],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.423,0,0],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.089,0,0],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.109,0,0],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.416,0,0],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.732,0,0],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.688,0,0],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.11,0,0],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.047,0,0],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.624,0,0],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.922,0,0],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-20,0,0],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-20,0,0],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.949,0,0],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.77,0,0],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.468,0,0],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.054,0,0],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.54,0,0],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.938,0,0],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.258,0,0],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.519,0,0],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.742,0,0],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.942,0,0],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.136,0,0],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-13.336,0,0],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.55,0,0],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-11.783,0,0],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-11.04,0,0],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.326,0,0],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-9.641,0,0],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.987,0,0],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.363,0,0],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-7.77,0,0],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-7.207,0,0],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.673,0,0],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.169,0,0],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.691,0,0],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.24,0,0],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.813,0,0],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.411,0,0],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.031,0,0],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.675,0,0],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.34,0,0],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.026,0,0],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.732,0,0],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.457,0,0],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.2,0,0],"t":181,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.961,0,0],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.739,0,0],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.533,0,0],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.343,0,0],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.168,0,0],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.006,0,0],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.857,0,0],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.722,0,0],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.598,0,0],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.488,0,0],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.389,0,0],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.302,0,0],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.226,0,0],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.161,0,0],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.108,0,0],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.066,0,0],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.034,0,0],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.013,0,0],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.002,0,0],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.015,0,0],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.077,0,0],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.192,0,0],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.364,0,0],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.598,0,0],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.902,0,0],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.285,0,0],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.76,0,0],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.347,0,0],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.074,0,0],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.968,0,0],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.068,0,0],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.423,0,0],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.089,0,0],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.109,0,0],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.416,0,0],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.732,0,0],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.688,0,0],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.11,0,0],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.047,0,0],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.624,0,0],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.922,0,0],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-20,0,0],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-20,0,0],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.949,0,0],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.77,0,0],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.468,0,0],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.054,0,0],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.54,0,0],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.938,0,0],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.258,0,0],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.519,0,0],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.742,0,0],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.942,0,0],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.136,0,0],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-13.336,0,0],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.55,0,0],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-11.783,0,0],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-11.04,0,0],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.326,0,0],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-9.641,0,0],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.987,0,0],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.363,0,0],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-7.77,0,0],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-7.207,0,0],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.673,0,0],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.169,0,0],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.691,0,0],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.24,0,0],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.813,0,0],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.411,0,0],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.031,0,0],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.675,0,0],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.34,0,0],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.026,0,0],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.732,0,0],"t":291,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.457,0,0],"t":292,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.2,0,0],"t":293,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.961,0,0],"t":294,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.739,0,0],"t":295,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.533,0,0],"t":296,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.343,0,0],"t":297,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.168,0,0],"t":298,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.006,0,0],"t":299,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.857,0,0],"t":300,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.722,0,0],"t":301,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.598,0,0],"t":302,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.488,0,0],"t":303,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.389,0,0],"t":304,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.302,0,0],"t":305,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.226,0,0],"t":306,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.161,0,0],"t":307,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.108,0,0],"t":308,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.066,0,0],"t":309,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.034,0,0],"t":310,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.013,0,0],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.002,0,0],"t":312,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"a":{"a":0,"k":[0,49,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.095,4.103],[20.866,-4.391],[30.055,14.909],[-19.458,9.569],[-43.79,10.76],[-18.62,4.309],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.284,-4.689],[-20.866,4.391],[-30.056,-14.63],[31.09,-15.283],[13.475,-3.311],[35.363,-7.848],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.667,116.665],[-117.97,119.232],[-229.615,116.95],[-229.867,50.888],[-139.016,15.389],[-88.152,4.787],[-12.612,-36.255]],"c":true}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.098,4.127],[20.863,-4.414],[30.005,14.508],[-19.477,9.414],[-43.782,10.829],[-18.619,4.316],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.287,-4.716],[-20.863,4.414],[-30.007,-14.235],[31.121,-15.037],[13.472,-3.332],[35.361,-7.859],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.82,116.749],[-117.884,119.917],[-226.898,115.937],[-226.972,51.297],[-139.102,14.702],[-86.526,4.409],[-12.612,-36.255]],"c":true}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.099,4.142],[20.861,-4.429],[29.974,14.261],[-19.489,9.319],[-43.776,10.871],[-18.619,4.32],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.289,-4.733],[-20.861,4.429],[-29.977,-13.992],[31.139,-14.886],[13.471,-3.345],[35.36,-7.866],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.3,116.8],[-117.832,120.338],[-225.228,115.315],[-225.194,51.548],[-139.154,14.28],[-85.528,4.177],[-12.612,-36.255]],"c":true}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.101,4.152],[20.86,-4.438],[29.953,14.089],[-19.498,9.253],[-43.773,10.9],[-18.618,4.323],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.291,-4.744],[-20.86,4.438],[-29.956,-13.823],[31.153,-14.781],[13.469,-3.354],[35.36,-7.871],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.936,116.835],[-117.796,120.632],[-224.061,114.88],[-223.952,51.724],[-139.191,13.985],[-84.829,4.015],[-12.612,-36.255]],"c":true}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.16],[20.859,-4.446],[29.937,13.959],[-19.504,9.203],[-43.77,10.923],[-18.618,4.325],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.292,-4.753],[-20.859,4.446],[-29.94,-13.695],[31.162,-14.701],[13.469,-3.361],[35.359,-7.874],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.662,116.862],[-117.768,120.854],[-223.181,114.552],[-223.014,51.856],[-139.219,13.762],[-84.303,3.893],[-12.612,-36.255]],"c":true}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.166],[20.858,-4.452],[29.924,13.857],[-19.509,9.163],[-43.768,10.94],[-18.618,4.326],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.293,-4.76],[-20.858,4.452],[-29.927,-13.594],[31.17,-14.638],[13.468,-3.366],[35.359,-7.877],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.446,116.884],[-117.746,121.029],[-222.486,114.293],[-222.274,51.961],[-139.241,13.586],[-83.887,3.796],[-12.612,-36.255]],"c":true}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.103,4.171],[20.858,-4.457],[29.914,13.773],[-19.513,9.131],[-43.766,10.954],[-18.618,4.328],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.766],[-20.858,4.457],[-29.917,-13.511],[31.177,-14.587],[13.467,-3.371],[35.359,-7.88],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.269,116.901],[-117.728,121.172],[-221.919,114.082],[-221.67,52.046],[-139.258,13.443],[-83.548,3.717],[-12.612,-36.255]],"c":true}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.175],[20.857,-4.461],[29.905,13.703],[-19.516,9.104],[-43.764,10.966],[-18.617,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.771],[-20.857,4.461],[-29.908,-13.443],[31.182,-14.544],[13.467,-3.375],[35.358,-7.882],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.121,116.915],[-117.714,121.291],[-221.446,113.906],[-221.166,52.118],[-139.273,13.323],[-83.265,3.652],[-12.612,-36.255]],"c":true}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.179],[20.857,-4.464],[29.897,13.644],[-19.519,9.081],[-43.763,10.977],[-18.617,4.33],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.775],[-20.857,4.464],[-29.901,-13.384],[31.186,-14.508],[13.467,-3.378],[35.358,-7.883],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.997,116.928],[-117.701,121.392],[-221.044,113.756],[-220.739,52.178],[-139.286,13.222],[-83.025,3.596],[-12.612,-36.255]],"c":true}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.182],[20.856,-4.467],[29.891,13.593],[-19.522,9.062],[-43.762,10.985],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.778],[-20.856,4.467],[-29.895,-13.334],[31.19,-14.477],[13.466,-3.38],[35.358,-7.885],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.889,116.938],[-117.69,121.479],[-220.7,113.628],[-220.372,52.23],[-139.297,13.135],[-82.819,3.548],[-12.612,-36.255]],"c":true}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.184],[20.856,-4.47],[29.886,13.549],[-19.524,9.045],[-43.761,10.993],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.781],[-20.856,4.47],[-29.89,-13.291],[31.194,-14.45],[13.466,-3.383],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.796,116.947],[-117.681,121.554],[-220.401,113.516],[-220.054,52.275],[-139.306,13.059],[-82.64,3.507],[-12.612,-36.255]],"c":true}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.187],[20.856,-4.472],[29.881,13.51],[-19.526,9.03],[-43.76,10.999],[-18.617,4.332],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.784],[-20.856,4.472],[-29.885,-13.253],[31.197,-14.426],[13.466,-3.385],[35.358,-7.887],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.715,116.955],[-117.673,121.62],[-220.14,113.419],[-219.776,52.314],[-139.314,12.993],[-82.484,3.47],[-12.612,-36.255]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.189],[20.856,-4.474],[29.877,13.477],[-19.527,9.017],[-43.76,11.005],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.786],[-20.856,4.474],[-29.881,-13.219],[31.199,-14.406],[13.465,-3.386],[35.357,-7.888],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.643,116.962],[-117.665,121.678],[-219.911,113.334],[-219.531,52.349],[-139.322,12.935],[-82.347,3.438],[-12.612,-36.255]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.191],[20.855,-4.476],[29.873,13.447],[-19.529,9.005],[-43.759,11.01],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.788],[-20.855,4.476],[-29.877,-13.19],[31.201,-14.387],[13.465,-3.388],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.58,116.969],[-117.659,121.729],[-219.708,113.258],[-219.316,52.379],[-139.328,12.884],[-82.226,3.41],[-12.612,-36.255]],"c":true}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.192],[20.855,-4.477],[29.87,13.42],[-19.53,8.995],[-43.758,11.015],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.79],[-20.855,4.477],[-29.874,-13.164],[31.203,-14.371],[13.465,-3.389],[35.357,-7.89],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.524,116.974],[-117.654,121.774],[-219.529,113.191],[-219.124,52.406],[-139.334,12.839],[-82.118,3.385],[-12.612,-36.255]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.194],[20.855,-4.478],[29.867,13.397],[-19.531,8.986],[-43.758,11.019],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.791],[-20.855,4.478],[-29.871,-13.141],[31.205,-14.357],[13.465,-3.391],[35.357,-7.89],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.475,116.979],[-117.649,121.815],[-219.369,113.132],[-218.955,52.43],[-139.339,12.798],[-82.023,3.363],[-12.612,-36.255]],"c":true}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.195],[20.855,-4.48],[29.864,13.376],[-19.532,8.978],[-43.757,11.022],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.793],[-20.855,4.48],[-29.868,-13.12],[31.207,-14.344],[13.465,-3.392],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.43,116.983],[-117.644,121.85],[-219.227,113.079],[-218.803,52.451],[-139.343,12.762],[-81.938,3.343],[-12.612,-36.255]],"c":true}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.196],[20.855,-4.481],[29.862,13.357],[-19.533,8.971],[-43.757,11.026],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.794],[-20.855,4.481],[-29.866,-13.102],[31.208,-14.332],[13.465,-3.393],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.391,116.987],[-117.64,121.882],[-219.101,113.032],[-218.669,52.47],[-139.347,12.73],[-81.862,3.326],[-12.612,-36.255]],"c":true}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.197],[20.855,-4.482],[29.86,13.34],[-19.534,8.965],[-43.757,11.028],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.795],[-20.855,4.482],[-29.864,-13.085],[31.21,-14.322],[13.465,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.356,116.991],[-117.637,121.911],[-218.988,112.99],[-218.549,52.487],[-139.351,12.702],[-81.795,3.31],[-12.612,-36.255]],"c":true}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.198],[20.854,-4.483],[29.858,13.326],[-19.535,8.959],[-43.756,11.031],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.796],[-20.854,4.483],[-29.862,-13.071],[31.211,-14.313],[13.464,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.324,116.994],[-117.633,121.936],[-218.888,112.952],[-218.441,52.503],[-139.354,12.676],[-81.735,3.296],[-12.612,-36.255]],"c":true}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.199],[20.854,-4.483],[29.856,13.312],[-19.535,8.954],[-43.756,11.033],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.797],[-20.854,4.483],[-29.861,-13.058],[31.212,-14.305],[13.464,-3.395],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.297,116.997],[-117.631,121.959],[-218.798,112.919],[-218.346,52.516],[-139.357,12.654],[-81.681,3.284],[-12.612,-36.255]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.199],[20.854,-4.484],[29.855,13.301],[-19.536,8.949],[-43.756,11.035],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.798],[-20.854,4.484],[-29.859,-13.046],[31.213,-14.298],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.272,116.999],[-117.628,121.979],[-218.719,112.889],[-218.261,52.528],[-139.359,12.634],[-81.633,3.273],[-12.612,-36.255]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.2],[20.854,-4.485],[29.854,13.29],[-19.537,8.945],[-43.756,11.037],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.799],[-20.854,4.485],[-29.858,-13.036],[31.213,-14.291],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.25,117.001],[-117.626,121.996],[-218.648,112.863],[-218.186,52.539],[-139.361,12.616],[-81.591,3.263],[-12.612,-36.255]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.485],[29.852,13.281],[-19.537,8.942],[-43.755,11.039],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.799],[-20.854,4.485],[-29.857,-13.027],[31.214,-14.286],[13.464,-3.397],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.23,117.003],[-117.624,122.012],[-218.586,112.84],[-218.12,52.548],[-139.363,12.6],[-81.554,3.254],[-12.612,-36.255]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.486],[29.851,13.273],[-19.537,8.939],[-43.755,11.04],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.856,-13.019],[31.215,-14.281],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.213,117.005],[-117.622,122.026],[-218.531,112.819],[-218.062,52.556],[-139.365,12.586],[-81.521,3.247],[-12.612,-36.255]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.486],[29.85,13.266],[-19.538,8.936],[-43.755,11.041],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.855,-13.012],[31.215,-14.277],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.199,117.006],[-117.621,122.038],[-218.483,112.801],[-218.011,52.563],[-139.366,12.574],[-81.493,3.24],[-12.612,-36.255]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.486],[29.85,13.26],[-19.538,8.933],[-43.755,11.042],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.486],[-29.854,-13.006],[31.216,-14.273],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.186,117.007],[-117.619,122.048],[-218.442,112.786],[-217.967,52.57],[-139.368,12.564],[-81.468,3.234],[-12.612,-36.255]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.255],[-19.538,8.931],[-43.755,11.043],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-13.001],[31.216,-14.27],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.174,117.009],[-117.618,122.057],[-218.406,112.773],[-217.929,52.575],[-139.369,12.555],[-81.446,3.229],[-12.612,-36.255]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.25],[-19.538,8.93],[-43.755,11.044],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-12.996],[31.216,-14.267],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.165,117.009],[-117.617,122.065],[-218.376,112.761],[-217.896,52.58],[-139.37,12.547],[-81.428,3.225],[-12.612,-36.255]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.246],[-19.539,8.928],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.992],[31.217,-14.265],[13.464,-3.399],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.157,117.01],[-117.617,122.071],[-218.35,112.752],[-217.869,52.583],[-139.371,12.541],[-81.413,3.221],[-12.612,-36.255]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.243],[-19.539,8.927],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.99],[31.217,-14.263],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.151,117.011],[-117.616,122.077],[-218.33,112.744],[-217.847,52.586],[-139.371,12.535],[-81.401,3.219],[-12.612,-36.255]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.847,13.241],[-19.539,8.926],[-43.755,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.987],[31.217,-14.261],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.146,117.011],[-117.615,122.081],[-218.313,112.738],[-217.83,52.589],[-139.372,12.531],[-81.391,3.216],[-12.612,-36.255]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.853,-4.49],[29.848,13.234],[-19.538,8.926],[-43.753,11.05],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.853,4.49],[-29.852,-12.98],[31.216,-14.262],[13.464,-3.4],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.609,122.089],[-218.282,112.739],[-217.802,52.604],[-139.378,12.528],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.852,-4.496],[29.852,13.224],[-19.535,8.933],[-43.749,11.064],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.852,4.496],[-29.856,-12.971],[31.211,-14.271],[13.462,-3.405],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.592,122.092],[-218.266,112.774],[-217.805,52.64],[-139.395,12.539],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.849,-4.509],[29.859,13.206],[-19.529,8.944],[-43.742,11.09],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.849,4.509],[-29.863,-12.952],[31.202,-14.29],[13.46,-3.413],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.558,122.098],[-218.236,112.841],[-217.812,52.707],[-139.427,12.561],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.843,-4.529],[29.871,13.176],[-19.52,8.963],[-43.729,11.133],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.843,4.529],[-29.875,-12.923],[31.187,-14.32],[13.456,-3.426],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.504,122.108],[-218.187,112.95],[-217.822,52.818],[-139.479,12.596],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.835,-4.56],[29.89,13.13],[-19.505,8.992],[-43.71,11.199],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.835,4.56],[-29.893,-12.877],[31.163,-14.367],[13.45,-3.446],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.42,122.123],[-218.112,113.119],[-217.838,52.99],[-139.56,12.65],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.823,-4.609],[29.918,13.059],[-19.483,9.037],[-43.681,11.3],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.823,4.609],[-29.921,-12.806],[31.128,-14.438],[13.441,-3.477],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.29,122.147],[-217.996,113.379],[-217.863,53.253],[-139.685,12.734],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.804,-4.686],[29.964,12.946],[-19.447,9.109],[-43.634,11.462],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.804,4.686],[-29.966,-12.693],[31.07,-14.553],[13.427,-3.527],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.083,122.185],[-217.811,113.794],[-217.902,53.674],[-139.884,12.867],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.77,-4.822],[30.044,12.747],[-19.384,9.235],[-43.551,11.747],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.77,4.822],[-30.044,-12.494],[30.969,-14.755],[13.401,-3.615],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.718,122.253],[-217.485,114.525],[-217.971,54.416],[-140.234,13.103],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.705,-5.078],[30.195,12.372],[-19.265,9.473],[-43.396,12.284],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.705,5.078],[-30.192,-12.118],[30.779,-15.136],[13.353,-3.78],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.032,122.379],[-216.87,115.902],[-218.102,55.813],[-140.895,13.546],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.64,-5.337],[30.347,11.993],[-19.145,9.713],[-43.239,12.825],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.64,5.337],[-30.341,-11.74],[30.588,-15.519],[13.305,-3.947],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.339,122.506],[-216.251,117.29],[-218.233,57.222],[-141.561,13.993],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.601,-5.492],[30.439,11.766],[-19.073,9.857],[-43.144,13.15],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.601,5.492],[-30.431,-11.513],[30.473,-15.749],[13.276,-4.047],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.924,122.583],[-215.879,118.123],[-218.312,58.067],[-141.96,14.261],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.575,-5.593],[30.498,11.617],[-19.026,9.952],[-43.083,13.363],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.575,5.593],[-30.489,-11.364],[30.397,-15.9],[13.257,-4.112],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.651,122.633],[-215.635,118.67],[-218.364,58.621],[-142.223,14.437],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.557,-5.667],[30.542,11.51],[-18.992,10.02],[-43.038,13.517],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.557,5.667],[-30.532,-11.257],[30.343,-16.009],[13.243,-4.159],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.455,122.669],[-215.459,119.064],[-218.401,59.021],[-142.412,14.564],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.543,-5.723],[30.575,11.428],[-18.966,10.072],[-43.004,13.634],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.543,5.723],[-30.564,-11.175],[30.301,-16.092],[13.233,-4.195],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.305,122.697],[-215.325,119.365],[-218.43,59.326],[-142.556,14.661],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.531,-5.767],[30.601,11.363],[-18.945,10.113],[-42.977,13.727],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.531,5.767],[-30.589,-11.11],[30.269,-16.158],[13.225,-4.224],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.186,122.719],[-215.219,119.602],[-218.452,59.567],[-142.67,14.737],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.523,-5.802],[30.622,11.312],[-18.929,10.146],[-42.956,13.801],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.523,5.802],[-30.61,-11.058],[30.242,-16.21],[13.218,-4.247],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.092,122.736],[-215.134,119.792],[-218.47,59.76],[-142.761,14.798],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":111,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.515,-5.831],[30.638,11.269],[-18.916,10.173],[-42.938,13.861],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.515,5.831],[-30.626,-11.016],[30.221,-16.253],[13.213,-4.265],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.014,122.75],[-215.066,119.947],[-218.485,59.916],[-142.835,14.848],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":112,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.509,-5.855],[30.652,11.235],[-18.905,10.194],[-42.924,13.91],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.509,5.855],[-30.64,-10.982],[30.204,-16.288],[13.208,-4.28],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.952,122.762],[-215.009,120.073],[-218.497,60.044],[-142.896,14.888],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.505,-5.874],[30.664,11.207],[-18.896,10.212],[-42.912,13.951],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.505,5.874],[-30.651,-10.954],[30.19,-16.316],[13.205,-4.293],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.9,122.771],[-214.963,120.176],[-218.507,60.149],[-142.945,14.922],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.501,-5.889],[30.673,11.184],[-18.889,10.227],[-42.903,13.983],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.501,5.889],[-30.66,-10.931],[30.178,-16.339],[13.202,-4.303],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.858,122.779],[-214.926,120.259],[-218.514,60.234],[-142.985,14.948],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.497,-5.902],[30.68,11.166],[-18.883,10.238],[-42.895,14.009],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.497,5.902],[-30.667,-10.913],[30.169,-16.358],[13.2,-4.311],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.825,122.785],[-214.896,120.327],[-218.521,60.302],[-143.017,14.97],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.495,-5.912],[30.686,11.151],[-18.878,10.248],[-42.889,14.03],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.495,5.912],[-30.673,-10.898],[30.161,-16.372],[13.198,-4.317],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.799,122.79],[-214.872,120.38],[-218.526,60.356],[-143.043,14.987],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.493,-5.919],[30.69,11.14],[-18.875,10.255],[-42.885,14.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.493,5.919],[-30.677,-10.887],[30.156,-16.384],[13.196,-4.322],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.778,122.794],[-214.854,120.42],[-218.53,60.397],[-143.062,15],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.492,-5.925],[30.694,11.132],[-18.872,10.26],[-42.881,14.058],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.492,5.925],[-30.68,-10.879],[30.152,-16.392],[13.195,-4.326],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.763,122.797],[-214.841,120.45],[-218.533,60.427],[-143.077,15.01],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.491,-5.929],[30.696,11.127],[-18.87,10.263],[-42.879,14.065],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.491,5.929],[-30.683,-10.873],[30.149,-16.397],[13.195,-4.328],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.753,122.798],[-214.832,120.47],[-218.534,60.448],[-143.086,15.016],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.491,-5.926],[30.694,11.13],[-18.871,10.261],[-42.88,14.06],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.491,5.926],[-30.681,-10.877],[30.15,-16.393],[13.195,-4.327],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.76,122.801],[-214.837,120.461],[-218.532,60.439],[-143.08,15.017],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.494,-5.909],[30.683,11.154],[-18.878,10.245],[-42.888,14.024],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.494,5.909],[-30.67,-10.901],[30.161,-16.368],[13.197,-4.315],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.807,122.805],[-214.874,120.382],[-218.52,60.362],[-143.036,15.005],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.5,-5.878],[30.662,11.198],[-18.891,10.215],[-42.903,13.959],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.5,5.878],[-30.649,-10.945],[30.181,-16.321],[13.202,-4.295],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.891,122.811],[-214.94,120.24],[-218.497,60.223],[-142.957,14.984],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.509,-5.831],[30.631,11.264],[-18.91,10.171],[-42.926,13.86],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.509,5.831],[-30.619,-11.011],[30.212,-16.25],[13.209,-4.265],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.018,122.822],[-215.041,120.025],[-218.463,60.011],[-142.837,14.951],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.522,-5.764],[30.587,11.358],[-18.937,10.109],[-42.957,13.721],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.522,5.764],[-30.575,-11.105],[30.255,-16.15],[13.219,-4.222],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.198,122.836],[-215.184,119.721],[-218.416,59.713],[-142.668,14.904],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.539,-5.674],[30.527,11.485],[-18.973,10.024],[-43.001,13.532],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.539,5.674],[-30.517,-11.232],[30.313,-16.015],[13.232,-4.164],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.441,122.855],[-215.377,119.309],[-218.351,59.31],[-142.439,14.841],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.562,-5.555],[30.448,11.653],[-19.021,9.911],[-43.058,13.281],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.562,5.555],[-30.439,-11.4],[30.39,-15.835],[13.249,-4.087],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.764,122.881],[-215.634,118.763],[-218.265,58.774],[-142.135,14.757],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.592,-5.398],[30.343,11.875],[-19.085,9.763],[-43.133,12.95],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.592,5.398],[-30.336,-11.622],[30.492,-15.598],[13.273,-3.985],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.19,122.915],[-215.972,118.042],[-218.152,58.067],[-141.734,14.646],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.632,-5.189],[30.204,12.169],[-19.169,9.566],[-43.233,12.512],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.632,5.189],[-30.2,-11.916],[30.627,-15.284],[13.303,-3.85],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.755,122.96],[-216.421,117.086],[-218.001,57.13],[-141.203,14.5],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.686,-4.908],[30.018,12.566],[-19.283,9.302],[-43.368,11.922],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.686,4.908],[-30.017,-12.313],[30.808,-14.861],[13.345,-3.669],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.515,123.021],[-217.025,115.8],[-217.799,55.869],[-140.488,14.302],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.76,-4.519],[29.759,13.113],[-19.44,8.935],[-43.554,11.106],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.76,4.519],[-29.763,-12.861],[31.059,-14.276],[13.402,-3.417],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.567,123.104],[-217.86,114.021],[-217.519,54.124],[-139.498,14.029],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.865,-3.972],[29.396,13.885],[-19.662,8.42],[-43.816,9.956],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.865,3.972],[-29.406,-13.633],[31.413,-13.452],[13.483,-3.064],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-119.049,123.222],[-219.037,111.514],[-217.125,51.666],[-138.104,13.644],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.997,-3.279],[28.935,14.862],[-19.942,7.767],[-44.148,8.501],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.997,3.279],[-28.954,-14.61],[31.861,-12.409],[13.585,-2.616],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-120.924,123.372],[-220.526,108.342],[-216.626,48.556],[-136.34,13.158],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.11,-2.69],[28.544,15.692],[-20.18,7.212],[-44.431,7.265],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.11,2.69],[-28.57,-15.44],[32.241,-11.522],[13.672,-2.235],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-122.517,123.499],[-221.791,105.647],[-216.202,45.913],[-134.841,12.744],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.177,-2.342],[28.313,16.183],[-20.321,6.884],[-44.597,6.533],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.177,2.342],[-28.343,-15.931],[32.466,-10.998],[13.723,-2.01],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-123.459,123.574],[-222.539,104.053],[-215.952,44.35],[-133.955,12.499],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.212,-2.159],[28.191,16.441],[-20.395,6.711],[-44.685,6.149],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.212,2.159],[-28.224,-16.189],[32.585,-10.723],[13.75,-1.892],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-123.954,123.613],[-222.933,103.215],[-215.82,43.528],[-133.488,12.371],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.228,-2.074],[28.135,16.561],[-20.429,6.631],[-44.726,5.97],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.228,2.074],[-28.168,-16.31],[32.64,-10.595],[13.763,-1.837],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.185,123.632],[-223.116,102.825],[-215.759,43.146],[-133.272,12.311],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.054],[28.123,16.592],[-20.437,6.615],[-44.735,5.929],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.054],[-28.156,-16.341],[32.652,-10.569],[13.766,-1.825],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.146,117.011],[-124.237,123.627],[-223.187,102.747],[-215.777,43.054],[-133.222,12.302],[-81.393,3.217],[-12.612,-36.255]],"c":true}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[21.23,-2.068],[28.135,16.587],[-20.431,6.634],[-44.73,5.957],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-21.23,2.068],[-28.168,-16.335],[32.642,-10.599],[13.764,-1.833],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.176,117.008],[-124.201,123.593],[-223.254,102.841],[-215.891,43.095],[-133.255,12.328],[-81.45,3.23],[-12.612,-36.255]],"c":true}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[21.226,-2.092],[28.156,16.577],[-20.42,6.669],[-44.72,6.008],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.799],[-21.226,2.092],[-28.189,-16.325],[32.625,-10.655],[13.761,-1.849],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.231,117.003],[-124.136,123.533],[-223.377,103.014],[-216.1,43.171],[-133.316,12.375],[-81.555,3.254],[-12.612,-36.255]],"c":true}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.198],[21.22,-2.131],[28.19,16.561],[-20.403,6.723],[-44.705,6.086],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.797],[-21.22,2.131],[-28.223,-16.308],[32.598,-10.741],[13.756,-1.873],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.316,116.995],[-124.034,123.438],[-223.568,103.281],[-216.424,43.289],[-133.409,12.447],[-81.717,3.292],[-12.612,-36.255]],"c":true}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.195],[21.211,-2.185],[28.238,16.539],[-20.379,6.8],[-44.682,6.198],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.793],[-21.211,2.185],[-28.27,-16.285],[32.56,-10.864],[13.749,-1.907],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.437,116.983],[-123.889,123.303],[-223.841,103.664],[-216.887,43.457],[-133.544,12.551],[-81.95,3.346],[-12.612,-36.255]],"c":true}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.19],[21.2,-2.26],[28.304,16.508],[-20.346,6.905],[-44.652,6.351],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.787],[-21.2,2.26],[-28.335,-16.253],[32.507,-11.032],[13.74,-1.954],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.602,116.966],[-123.69,123.119],[-224.214,104.187],[-217.52,43.687],[-133.727,12.693],[-82.268,3.42],[-12.612,-36.255]],"c":true}],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.184],[21.184,-2.358],[28.391,16.468],[-20.303,7.044],[-44.612,6.552],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.78],[-21.184,2.358],[-28.42,-16.211],[32.438,-11.253],[13.728,-2.016],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.82,116.945],[-123.428,122.877],[-224.705,104.876],[-218.353,43.99],[-133.968,12.88],[-82.687,3.517],[-12.612,-36.255]],"c":true}],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.176],[21.164,-2.483],[28.501,16.417],[-20.247,7.22],[-44.562,6.808],[-18.617,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.771],[-21.164,2.483],[-28.528,-16.158],[32.35,-11.534],[13.712,-2.095],[35.358,-7.882],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.097,116.918],[-123.096,122.568],[-225.33,105.751],[-219.412,44.375],[-134.275,13.117],[-83.219,3.641],[-12.612,-36.255]],"c":true}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.166],[21.141,-2.634],[28.634,16.355],[-20.18,7.434],[-44.501,7.118],[-18.618,4.327],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.293,-4.761],[-21.141,2.634],[-28.659,-16.094],[32.243,-11.875],[13.693,-2.19],[35.359,-7.877],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.433,116.885],[-122.694,122.195],[-226.085,106.81],[-220.694,44.841],[-134.646,13.404],[-83.863,3.79],[-12.612,-36.255]],"c":true}],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.101,4.156],[21.114,-2.805],[28.785,16.285],[-20.105,7.675],[-44.431,7.468],[-18.618,4.324],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.291,-4.748],[-21.114,2.805],[-28.808,-16.021],[32.122,-12.26],[13.672,-2.298],[35.359,-7.872],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.812,116.848],[-122.238,121.773],[-226.94,108.009],[-222.145,45.369],[-135.066,13.729],[-84.591,3.96],[-12.612,-36.255]],"c":true}],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.1,4.144],[21.086,-2.984],[28.943,16.212],[-20.026,7.928],[-44.359,7.835],[-18.619,4.321],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.29,-4.736],[-21.086,2.984],[-28.963,-15.945],[31.996,-12.664],[13.65,-2.411],[35.36,-7.867],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.21,116.809],[-121.761,121.331],[-227.835,109.264],[-223.663,45.921],[-135.506,14.07],[-85.354,4.137],[-12.612,-36.255]],"c":true}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.098,4.133],[21.058,-3.158],[29.097,16.141],[-19.949,8.174],[-44.288,8.192],[-18.619,4.318],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.288,-4.723],[-21.058,3.158],[-29.114,-15.871],[31.873,-13.055],[13.628,-2.521],[35.361,-7.862],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.595,116.771],[-121.298,120.901],[-228.705,110.483],[-225.138,46.457],[-135.933,14.4],[-86.095,4.309],[-12.612,-36.255]],"c":true}],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.097,4.123],[21.033,-3.318],[29.238,16.075],[-19.878,8.4],[-44.224,8.52],[-18.619,4.315],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.287,-4.712],[-21.033,3.318],[-29.253,-15.803],[31.761,-13.416],[13.608,-2.622],[35.361,-7.857],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.951,116.736],[-120.872,120.506],[-229.505,111.605],[-226.495,46.95],[-136.326,14.705],[-86.777,4.468],[-12.612,-36.255]],"c":true}],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.096,4.114],[21.011,-3.46],[29.364,16.017],[-19.815,8.601],[-44.166,8.812],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.286,-4.701],[-21.011,3.46],[-29.377,-15.742],[31.66,-13.737],[13.59,-2.712],[35.362,-7.853],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.267,116.705],[-120.493,120.154],[-230.218,112.604],[-227.705,47.39],[-136.676,14.976],[-87.385,4.609],[-12.612,-36.255]],"c":true}],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.095,4.106],[20.991,-3.585],[29.474,15.966],[-19.759,8.778],[-44.115,9.069],[-18.62,4.31],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.284,-4.693],[-20.991,3.585],[-29.485,-15.689],[31.572,-14.019],[13.575,-2.791],[35.362,-7.849],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.545,116.677],[-120.159,119.845],[-230.844,113.481],[-228.766,47.776],[-136.984,15.214],[-87.918,4.733],[-12.612,-36.255]],"c":true}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.094,4.1],[20.974,-3.694],[29.57,15.921],[-19.711,8.932],[-44.071,9.293],[-18.62,4.308],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.283,-4.685],[-20.974,3.694],[-29.58,-15.642],[31.495,-14.265],[13.561,-2.86],[35.363,-7.846],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.787,116.654],[-119.869,119.575],[-231.389,114.247],[-229.692,48.113],[-137.252,15.421],[-88.383,4.841],[-12.612,-36.255]],"c":true}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.094],[20.959,-3.79],[29.654,15.882],[-19.669,9.067],[-44.032,9.488],[-18.62,4.307],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.283,-4.678],[-20.959,3.79],[-29.662,-15.602],[31.428,-14.479],[13.549,-2.92],[35.363,-7.843],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.998,116.633],[-119.615,119.34],[-231.865,114.913],[-230.499,48.406],[-137.485,15.602],[-88.788,4.935],[-12.612,-36.255]],"c":true}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.088],[20.946,-3.872],[29.727,15.848],[-19.632,9.184],[-43.999,9.658],[-18.62,4.305],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.282,-4.672],[-20.946,3.872],[-29.734,-15.566],[31.369,-14.666],[13.539,-2.972],[35.363,-7.841],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.182,116.615],[-119.395,119.135],[-232.279,115.494],[-231.202,48.662],[-137.689,15.76],[-89.141,5.017],[-12.612,-36.255]],"c":true}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.084],[20.935,-3.945],[29.791,15.819],[-19.6,9.286],[-43.969,9.806],[-18.621,4.304],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.667],[-20.935,3.945],[-29.797,-15.535],[31.318,-14.829],[13.53,-3.017],[35.364,-7.839],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.343,116.599],[-119.202,118.957],[-232.641,116.002],[-231.816,48.885],[-137.867,15.897],[-89.45,5.088],[-12.612,-36.255]],"c":true}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.08],[20.925,-4.008],[29.847,15.793],[-19.572,9.375],[-43.944,9.935],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.662],[-20.925,4.008],[-29.852,-15.509],[31.274,-14.972],[13.522,-3.057],[35.364,-7.837],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.483,116.585],[-119.034,118.801],[-232.957,116.445],[-232.352,49.08],[-138.022,16.017],[-89.719,5.151],[-12.612,-36.255]],"c":true}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.076],[20.916,-4.063],[29.896,15.77],[-19.548,9.453],[-43.921,10.049],[-18.621,4.302],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.658],[-20.916,4.063],[-29.9,-15.485],[31.235,-15.096],[13.515,-3.092],[35.364,-7.835],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.605,116.573],[-118.887,118.664],[-233.233,116.832],[-232.82,49.25],[-138.158,16.122],[-89.954,5.206],[-12.612,-36.255]],"c":true}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.073],[20.908,-4.111],[29.938,15.75],[-19.527,9.521],[-43.902,10.147],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.655],[-20.908,4.111],[-29.942,-15.464],[31.201,-15.205],[13.509,-3.123],[35.364,-7.834],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.712,116.563],[-118.758,118.545],[-233.474,117.169],[-233.229,49.399],[-138.276,16.214],[-90.16,5.253],[-12.612,-36.255]],"c":true}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.071],[20.902,-4.153],[29.975,15.733],[-19.508,9.581],[-43.885,10.234],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.652],[-20.902,4.153],[-29.978,-15.447],[31.171,-15.299],[13.504,-3.149],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.806,116.553],[-118.647,118.441],[-233.684,117.464],[-233.586,49.528],[-138.379,16.294],[-90.339,5.295],[-12.612,-36.255]],"c":true}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.068],[20.896,-4.19],[30.008,15.718],[-19.492,9.632],[-43.87,10.308],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.649],[-20.896,4.19],[-30.01,-15.431],[31.145,-15.382],[13.499,-3.172],[35.365,-7.831],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.887,116.545],[-118.549,118.351],[-233.867,117.72],[-233.895,49.641],[-138.469,16.363],[-90.494,5.331],[-12.612,-36.255]],"c":true}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.066],[20.891,-4.221],[30.035,15.705],[-19.478,9.677],[-43.857,10.373],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.647],[-20.891,4.221],[-30.037,-15.418],[31.123,-15.453],[13.495,-3.192],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.957,116.539],[-118.465,118.273],[-234.025,117.942],[-234.163,49.738],[-138.547,16.423],[-90.629,5.362],[-12.612,-36.255]],"c":true}],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.065],[20.887,-4.249],[30.059,15.694],[-19.466,9.715],[-43.846,10.429],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.645],[-20.887,4.249],[-30.061,-15.406],[31.104,-15.514],[13.492,-3.209],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.017,116.533],[-118.393,118.206],[-234.161,118.132],[-234.394,49.822],[-138.613,16.475],[-90.745,5.389],[-12.612,-36.255]],"c":true}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.063],[20.883,-4.272],[30.08,15.685],[-19.456,9.748],[-43.837,10.476],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.643],[-20.883,4.272],[-30.081,-15.396],[31.087,-15.566],[13.489,-3.224],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.069,116.528],[-118.331,118.149],[-234.277,118.295],[-234.59,49.893],[-138.67,16.519],[-90.844,5.412],[-12.612,-36.255]],"c":true}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.062],[20.88,-4.291],[30.097,15.677],[-19.447,9.776],[-43.829,10.516],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.642],[-20.88,4.291],[-30.098,-15.388],[31.074,-15.61],[13.487,-3.236],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.112,116.523],[-118.279,118.101],[-234.374,118.431],[-234.756,49.954],[-138.718,16.556],[-90.927,5.432],[-12.612,-36.255]],"c":true}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.061],[20.878,-4.307],[30.111,15.67],[-19.44,9.798],[-43.822,10.55],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.641],[-20.878,4.307],[-30.112,-15.381],[31.062,-15.647],[13.485,-3.246],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.148,116.52],[-118.236,118.061],[-234.455,118.545],[-234.894,50.004],[-138.758,16.587],[-90.996,5.448],[-12.612,-36.255]],"c":true}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.06],[20.876,-4.321],[30.123,15.665],[-19.434,9.817],[-43.817,10.577],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.64],[-20.875,4.321],[-30.123,-15.375],[31.053,-15.676],[13.483,-3.255],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.177,116.517],[-118.201,118.028],[-234.521,118.637],[-235.005,50.044],[-138.79,16.612],[-91.052,5.461],[-12.612,-36.255]],"c":true}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.874,-4.331],[30.132,15.66],[-19.429,9.832],[-43.813,10.598],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.639],[-20.874,4.331],[-30.132,-15.371],[31.046,-15.7],[13.482,-3.261],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.2,116.515],[-118.173,118.003],[-234.573,118.71],[-235.093,50.076],[-138.816,16.632],[-91.096,5.471],[-12.612,-36.255]],"c":true}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.873,-4.339],[30.139,15.657],[-19.426,9.843],[-43.81,10.614],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.639],[-20.873,4.339],[-30.139,-15.368],[31.04,-15.717],[13.481,-3.266],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.217,116.513],[-118.153,117.984],[-234.611,118.764],[-235.158,50.1],[-138.835,16.646],[-91.129,5.479],[-12.612,-36.255]],"c":true}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.872,-4.344],[30.144,15.655],[-19.424,9.85],[-43.808,10.625],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.872,4.344],[-30.144,-15.365],[31.036,-15.729],[13.48,-3.269],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.229,116.512],[-118.139,117.97],[-234.638,118.801],[-235.204,50.116],[-138.848,16.656],[-91.152,5.484],[-12.612,-36.255]],"c":true}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.871,-4.348],[30.147,15.648],[-19.422,9.854],[-43.806,10.634],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.358],[31.034,-15.735],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.226,116.512],[-118.126,117.97],[-234.619,118.815],[-235.196,50.135],[-138.859,16.654],[-91.145,5.482],[-12.612,-36.255]],"c":true}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.871,-4.349],[30.146,15.64],[-19.422,9.851],[-43.806,10.635],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.639],[-20.871,4.349],[-30.146,-15.35],[31.035,-15.73],[13.48,-3.273],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.209,116.514],[-118.125,117.984],[-234.566,118.796],[-235.14,50.143],[-138.861,16.641],[-91.114,5.475],[-12.612,-36.255]],"c":true}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.06],[20.871,-4.35],[30.144,15.628],[-19.423,9.846],[-43.805,10.637],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.64],[-20.871,4.35],[-30.144,-15.339],[31.035,-15.723],[13.48,-3.273],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.185,116.516],[-118.122,118.003],[-234.489,118.767],[-235.058,50.155],[-138.863,16.621],[-91.068,5.464],[-12.612,-36.255]],"c":true}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.061],[20.871,-4.35],[30.142,15.613],[-19.424,9.84],[-43.805,10.64],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.641],[-20.871,4.35],[-30.142,-15.324],[31.037,-15.714],[13.479,-3.274],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.153,116.519],[-118.119,118.029],[-234.386,118.728],[-234.948,50.17],[-138.866,16.595],[-91.006,5.45],[-12.612,-36.255]],"c":true}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.062],[20.871,-4.352],[30.14,15.594],[-19.425,9.833],[-43.805,10.643],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.642],[-20.871,4.352],[-30.14,-15.305],[31.038,-15.702],[13.479,-3.275],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.112,116.523],[-118.115,118.062],[-234.254,118.679],[-234.807,50.19],[-138.871,16.562],[-90.927,5.432],[-12.612,-36.255]],"c":true}],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.063],[20.871,-4.353],[30.137,15.569],[-19.426,9.824],[-43.804,10.647],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.644],[-20.871,4.353],[-30.137,-15.281],[31.04,-15.687],[13.479,-3.276],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.061,116.528],[-118.11,118.104],[-234.089,118.618],[-234.632,50.215],[-138.876,16.52],[-90.828,5.409],[-12.612,-36.255]],"c":true}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.065],[20.87,-4.355],[30.133,15.54],[-19.427,9.812],[-43.803,10.652],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.646],[-20.87,4.355],[-30.133,-15.252],[31.042,-15.669],[13.479,-3.278],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.998,116.534],[-118.104,118.154],[-233.888,118.543],[-234.418,50.245],[-138.882,16.469],[-90.708,5.381],[-12.612,-36.255]],"c":true}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.067],[20.87,-4.357],[30.129,15.504],[-19.429,9.798],[-43.803,10.659],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.648],[-20.87,4.357],[-30.129,-15.217],[31.045,-15.647],[13.479,-3.28],[35.365,-7.831],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.923,116.542],[-118.096,118.215],[-233.647,118.453],[-234.162,50.281],[-138.89,16.409],[-90.564,5.347],[-12.612,-36.255]],"c":true}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.07],[20.87,-4.359],[30.123,15.462],[-19.431,9.782],[-43.802,10.666],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.651],[-20.87,4.359],[-30.124,-15.175],[31.048,-15.621],[13.478,-3.282],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.834,116.551],[-118.087,118.287],[-233.361,118.347],[-233.857,50.324],[-138.899,16.336],[-90.393,5.308],[-12.612,-36.255]],"c":true}],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.073],[20.869,-4.362],[30.117,15.412],[-19.434,9.763],[-43.801,10.674],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.654],[-20.869,4.362],[-30.118,-15.126],[31.052,-15.591],[13.478,-3.285],[35.364,-7.833],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.729,116.561],[-118.076,118.372],[-233.024,118.221],[-233.498,50.375],[-138.909,16.251],[-90.191,5.261],[-12.612,-36.255]],"c":true}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.076],[20.869,-4.365],[30.11,15.354],[-19.436,9.74],[-43.799,10.684],[-18.621,4.302],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.658],[-20.869,4.365],[-30.111,-15.068],[31.056,-15.555],[13.478,-3.288],[35.364,-7.835],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.605,116.573],[-118.064,118.472],[-232.628,118.073],[-233.076,50.435],[-138.922,16.151],[-89.954,5.206],[-12.612,-36.255]],"c":true}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.08],[20.869,-4.369],[30.102,15.285],[-19.44,9.714],[-43.798,10.696],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.663],[-20.869,4.369],[-30.102,-15.001],[31.062,-15.513],[13.477,-3.291],[35.364,-7.837],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.461,116.587],[-118.049,118.589],[-232.164,117.9],[-232.581,50.504],[-138.936,16.033],[-89.677,5.141],[-12.612,-36.255]],"c":true}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.085],[20.868,-4.374],[30.092,15.205],[-19.444,9.683],[-43.796,10.71],[-18.62,4.305],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.668],[-20.868,4.374],[-30.092,-14.922],[31.068,-15.464],[13.477,-3.296],[35.364,-7.839],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.291,116.604],[-118.032,118.726],[-231.62,117.698],[-232.003,50.586],[-138.953,15.896],[-89.352,5.066],[-12.612,-36.255]],"c":true}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.091],[20.867,-4.379],[30.08,15.111],[-19.448,9.647],[-43.794,10.726],[-18.62,4.306],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.282,-4.675],[-20.867,4.379],[-30.081,-14.829],[31.075,-15.406],[13.476,-3.301],[35.363,-7.842],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.093,116.623],[-118.013,118.887],[-230.984,117.46],[-231.325,50.682],[-138.973,15.735],[-88.971,4.977],[-12.612,-36.255]],"c":true}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.094,4.097],[20.867,-4.386],[30.066,15.001],[-19.453,9.604],[-43.792,10.745],[-18.62,4.308],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.283,-4.682],[-20.866,4.386],[-30.067,-14.721],[31.083,-15.339],[13.475,-3.306],[35.363,-7.845],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.861,116.646],[-117.989,119.075],[-230.237,117.182],[-230.53,50.794],[-138.997,15.546],[-88.524,4.873],[-12.612,-36.255]],"c":true}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.095,4.105],[20.866,-4.393],[30.05,14.871],[-19.46,9.555],[-43.789,10.767],[-18.62,4.31],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.284,-4.691],[-20.866,4.393],[-30.052,-14.593],[31.093,-15.26],[13.475,-3.313],[35.362,-7.849],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.587,116.673],[-117.962,119.296],[-229.361,116.856],[-229.596,50.926],[-139.024,15.325],[-88,4.752],[-12.612,-36.255]],"c":true}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.096,4.114],[20.864,-4.402],[30.031,14.72],[-19.467,9.496],[-43.786,10.793],[-18.619,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.286,-4.701],[-20.864,4.402],[-30.033,-14.444],[31.105,-15.167],[13.474,-3.321],[35.362,-7.853],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.267,116.705],[-117.929,119.555],[-228.332,116.472],[-228.5,51.081],[-139.057,15.065],[-87.385,4.609],[-12.612,-36.255]],"c":true}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.097,4.125],[20.863,-4.412],[30.009,14.543],[-19.476,9.428],[-43.782,10.823],[-18.619,4.315],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.287,-4.714],[-20.863,4.412],[-30.011,-14.27],[31.118,-15.058],[13.472,-3.33],[35.361,-7.858],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.894,116.741],[-117.892,119.857],[-227.135,116.026],[-227.225,51.261],[-139.094,14.762],[-86.668,4.442],[-12.612,-36.255]],"c":true}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.099,4.137],[20.862,-4.424],[29.984,14.342],[-19.485,9.35],[-43.778,10.857],[-18.619,4.319],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.289,-4.727],[-20.862,4.424],[-29.987,-14.072],[31.133,-14.935],[13.471,-3.341],[35.36,-7.864],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.47,116.783],[-117.849,120.2],[-225.773,115.518],[-225.774,51.466],[-139.137,14.417],[-85.853,4.253],[-12.612,-36.255]],"c":true}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.1,4.15],[20.86,-4.436],[29.957,14.124],[-19.496,9.267],[-43.773,10.894],[-18.618,4.322],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.291,-4.742],[-20.86,4.436],[-29.96,-13.857],[31.15,-14.802],[13.47,-3.352],[35.36,-7.87],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.011,116.828],[-117.803,120.572],[-224.3,114.969],[-224.206,51.688],[-139.184,14.045],[-84.972,4.048],[-12.612,-36.255]],"c":true}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.163],[20.859,-4.449],[29.93,13.909],[-19.507,9.184],[-43.769,10.931],[-18.618,4.326],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.292,-4.757],[-20.859,4.449],[-29.934,-13.645],[31.166,-14.67],[13.468,-3.364],[35.359,-7.876],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.555,116.873],[-117.757,120.94],[-222.839,114.425],[-222.65,51.908],[-139.23,13.675],[-84.098,3.845],[-12.612,-36.255]],"c":true}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.103,4.174],[20.857,-4.46],[29.906,13.716],[-19.516,9.109],[-43.765,10.964],[-18.618,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.77],[-20.857,4.46],[-29.91,-13.456],[31.181,-14.552],[13.467,-3.374],[35.358,-7.881],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.149,116.913],[-117.716,121.268],[-221.536,113.939],[-221.262,52.104],[-139.27,13.346],[-83.319,3.664],[-12.612,-36.255]],"c":true}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.184],[20.856,-4.469],[29.887,13.561],[-19.523,9.049],[-43.761,10.991],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.78],[-20.856,4.469],[-29.891,-13.302],[31.193,-14.457],[13.466,-3.382],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.82,116.945],[-117.683,121.535],[-220.479,113.545],[-220.137,52.263],[-139.304,13.079],[-82.687,3.517],[-12.612,-36.255]],"c":true}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.191],[20.855,-4.476],[29.872,13.443],[-19.529,9.004],[-43.759,11.011],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.788],[-20.855,4.476],[-29.876,-13.186],[31.202,-14.385],[13.465,-3.388],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.571,116.97],[-117.658,121.736],[-219.68,113.247],[-219.285,52.383],[-139.329,12.877],[-82.208,3.406],[-12.612,-36.255]],"c":true}],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.196],[20.855,-4.481],[29.862,13.358],[-19.533,8.971],[-43.757,11.026],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.794],[-20.855,4.481],[-29.866,-13.102],[31.208,-14.333],[13.465,-3.393],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.392,116.987],[-117.64,121.881],[-219.104,113.033],[-218.672,52.47],[-139.347,12.731],[-81.864,3.326],[-12.612,-36.255]],"c":true}],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.199],[20.854,-4.484],[29.855,13.299],[-19.536,8.949],[-43.756,11.035],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.798],[-20.854,4.484],[-29.859,-13.045],[31.213,-14.297],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.269,116.999],[-117.628,121.981],[-218.71,112.886],[-218.252,52.529],[-139.359,12.631],[-81.628,3.271],[-12.612,-36.255]],"c":true}],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.486],[29.85,13.263],[-19.538,8.935],[-43.755,11.042],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.486],[-29.854,-13.008],[31.215,-14.274],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.191,117.007],[-117.62,122.044],[-218.46,112.793],[-217.987,52.567],[-139.367,12.568],[-81.479,3.237],[-12.612,-36.255]],"c":true}],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.243],[-19.539,8.927],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.989],[31.217,-14.262],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.15,117.011],[-117.616,122.077],[-218.327,112.743],[-217.844,52.587],[-139.371,12.535],[-81.399,3.218],[-12.612,-36.255]],"c":true}],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.848,-4.513],[29.862,13.2],[-19.528,8.948],[-43.739,11.098],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.848,4.513],[-29.866,-12.947],[31.199,-14.296],[13.459,-3.415],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.548,122.1],[-218.226,112.862],[-217.814,52.729],[-139.437,12.567],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":223,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.823,-4.611],[29.919,13.057],[-19.482,9.039],[-43.68,11.304],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.823,4.611],[-29.922,-12.803],[31.126,-14.441],[13.441,-3.478],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.285,122.148],[-217.992,113.388],[-217.864,53.263],[-139.689,12.737],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":224,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.768,-4.829],[30.048,12.737],[-19.381,9.242],[-43.547,11.762],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.768,4.829],[-30.048,-12.483],[30.964,-14.766],[13.4,-3.619],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.699,122.256],[-217.467,114.563],[-217.975,54.455],[-140.253,13.115],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.687,-5.148],[30.236,12.27],[-19.233,9.538],[-43.353,12.429],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.687,5.148],[-30.232,-12.017],[30.728,-15.239],[13.34,-3.825],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.846,122.413],[-216.704,116.275],[-218.137,56.192],[-141.074,13.666],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.619,-5.421],[30.397,11.871],[-19.106,9.791],[-43.188,13.001],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.619,5.421],[-30.39,-11.617],[30.526,-15.644],[13.289,-4.001],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.114,122.548],[-216.049,117.741],[-218.276,57.679],[-141.777,14.138],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.572,-5.607],[30.507,11.597],[-19.019,9.965],[-43.074,13.392],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.572,5.607],[-30.497,-11.344],[30.387,-15.921],[13.255,-4.121],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.614,122.64],[-215.602,118.745],[-218.371,58.697],[-142.258,14.461],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.54,-5.733],[30.58,11.414],[-18.961,10.081],[-42.998,13.655],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.54,5.733],[-30.57,-11.16],[30.294,-16.107],[13.231,-4.202],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.278,122.702],[-215.301,119.418],[-218.435,59.38],[-142.581,14.678],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.519,-5.817],[30.63,11.29],[-18.922,10.16],[-42.947,13.832],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.519,5.817],[-30.618,-11.037],[30.232,-16.232],[13.215,-4.256],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.052,122.743],[-215.099,119.871],[-218.478,59.84],[-142.799,14.823],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.505,-5.873],[30.663,11.208],[-18.896,10.211],[-42.913,13.948],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.505,5.873],[-30.65,-10.955],[30.19,-16.315],[13.205,-4.292],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.166,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.903,122.771],[-214.966,120.17],[-218.506,60.143],[-142.942,14.92],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.496,-5.907],[30.683,11.158],[-18.88,10.244],[-42.892,14.021],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.496,5.907],[-30.67,-10.904],[30.165,-16.366],[13.198,-4.314],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.81,122.788],[-214.883,120.357],[-218.524,60.332],[-143.032,14.98],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.491,-5.926],[30.694,11.131],[-18.872,10.261],[-42.881,14.06],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.491,5.926],[-30.681,-10.877],[30.151,-16.393],[13.195,-4.326],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.761,122.797],[-214.838,120.456],[-218.533,60.433],[-143.079,15.012],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.491,-5.926],[30.694,11.13],[-18.871,10.261],[-42.88,14.06],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.491,5.926],[-30.681,-10.877],[30.15,-16.393],[13.195,-4.327],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.76,122.801],[-214.837,120.461],[-218.532,60.439],[-143.08,15.017],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.494,-5.909],[30.683,11.154],[-18.878,10.245],[-42.888,14.024],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.494,5.909],[-30.67,-10.901],[30.161,-16.368],[13.197,-4.315],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.807,122.805],[-214.874,120.382],[-218.52,60.362],[-143.036,15.005],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.5,-5.878],[30.662,11.198],[-18.891,10.215],[-42.903,13.959],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.5,5.878],[-30.649,-10.945],[30.181,-16.321],[13.202,-4.295],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.891,122.811],[-214.94,120.24],[-218.497,60.223],[-142.957,14.984],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.509,-5.831],[30.631,11.264],[-18.91,10.171],[-42.926,13.86],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.509,5.831],[-30.619,-11.011],[30.212,-16.25],[13.209,-4.265],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.018,122.822],[-215.041,120.025],[-218.463,60.011],[-142.837,14.951],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.522,-5.764],[30.587,11.358],[-18.937,10.109],[-42.957,13.721],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.522,5.764],[-30.575,-11.105],[30.255,-16.15],[13.219,-4.222],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.198,122.836],[-215.184,119.721],[-218.416,59.713],[-142.668,14.904],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.539,-5.674],[30.527,11.485],[-18.973,10.024],[-43.001,13.532],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.539,5.674],[-30.517,-11.232],[30.313,-16.015],[13.232,-4.164],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.441,122.855],[-215.377,119.309],[-218.351,59.31],[-142.439,14.841],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.562,-5.555],[30.448,11.653],[-19.021,9.911],[-43.058,13.281],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.562,5.555],[-30.439,-11.4],[30.39,-15.835],[13.249,-4.087],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.764,122.881],[-215.634,118.763],[-218.265,58.774],[-142.135,14.757],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.592,-5.398],[30.343,11.875],[-19.085,9.763],[-43.133,12.95],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.592,5.398],[-30.336,-11.622],[30.492,-15.598],[13.273,-3.985],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.19,122.915],[-215.972,118.042],[-218.152,58.067],[-141.734,14.646],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.632,-5.189],[30.204,12.169],[-19.169,9.566],[-43.233,12.512],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.632,5.189],[-30.2,-11.916],[30.627,-15.284],[13.303,-3.85],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.755,122.96],[-216.421,117.086],[-218.001,57.13],[-141.203,14.5],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.686,-4.908],[30.018,12.566],[-19.283,9.302],[-43.368,11.922],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.686,4.908],[-30.017,-12.313],[30.808,-14.861],[13.345,-3.669],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.515,123.021],[-217.025,115.8],[-217.799,55.869],[-140.488,14.302],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.76,-4.519],[29.759,13.113],[-19.44,8.935],[-43.554,11.106],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.76,4.519],[-29.763,-12.861],[31.059,-14.276],[13.402,-3.417],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.567,123.104],[-217.86,114.021],[-217.519,54.124],[-139.498,14.029],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.865,-3.972],[29.396,13.885],[-19.662,8.42],[-43.816,9.956],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.865,3.972],[-29.406,-13.633],[31.413,-13.452],[13.483,-3.064],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-119.049,123.222],[-219.037,111.514],[-217.125,51.666],[-138.104,13.644],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.997,-3.279],[28.935,14.862],[-19.942,7.767],[-44.148,8.501],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.997,3.279],[-28.954,-14.61],[31.861,-12.409],[13.585,-2.616],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-120.924,123.372],[-220.526,108.342],[-216.626,48.556],[-136.34,13.158],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.11,-2.69],[28.544,15.692],[-20.18,7.212],[-44.431,7.265],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.11,2.69],[-28.57,-15.44],[32.241,-11.522],[13.672,-2.235],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-122.517,123.499],[-221.791,105.647],[-216.202,45.913],[-134.841,12.744],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.177,-2.342],[28.313,16.183],[-20.321,6.884],[-44.597,6.533],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.177,2.342],[-28.343,-15.931],[32.466,-10.998],[13.723,-2.01],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-123.459,123.574],[-222.539,104.053],[-215.952,44.35],[-133.955,12.499],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.212,-2.159],[28.191,16.441],[-20.395,6.711],[-44.685,6.149],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.212,2.159],[-28.224,-16.189],[32.585,-10.723],[13.75,-1.892],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-123.954,123.613],[-222.933,103.215],[-215.82,43.528],[-133.488,12.371],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.228,-2.074],[28.135,16.561],[-20.429,6.631],[-44.726,5.97],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.228,2.074],[-28.168,-16.31],[32.64,-10.595],[13.763,-1.837],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.185,123.632],[-223.116,102.825],[-215.759,43.146],[-133.272,12.311],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.054],[28.123,16.592],[-20.437,6.615],[-44.735,5.929],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.054],[-28.156,-16.341],[32.652,-10.569],[13.766,-1.825],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.146,117.011],[-124.237,123.627],[-223.187,102.747],[-215.777,43.054],[-133.222,12.302],[-81.393,3.217],[-12.612,-36.255]],"c":true}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[21.23,-2.068],[28.135,16.587],[-20.431,6.634],[-44.73,5.957],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-21.23,2.068],[-28.168,-16.335],[32.642,-10.599],[13.764,-1.833],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.176,117.008],[-124.201,123.593],[-223.254,102.841],[-215.891,43.095],[-133.255,12.328],[-81.45,3.23],[-12.612,-36.255]],"c":true}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[21.226,-2.092],[28.156,16.577],[-20.42,6.669],[-44.72,6.008],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.799],[-21.226,2.092],[-28.189,-16.325],[32.625,-10.655],[13.761,-1.849],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.231,117.003],[-124.136,123.533],[-223.377,103.014],[-216.1,43.171],[-133.316,12.375],[-81.555,3.254],[-12.612,-36.255]],"c":true}],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.198],[21.22,-2.131],[28.19,16.561],[-20.403,6.723],[-44.705,6.086],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.797],[-21.22,2.131],[-28.223,-16.308],[32.598,-10.741],[13.756,-1.873],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.316,116.995],[-124.034,123.438],[-223.568,103.281],[-216.424,43.289],[-133.409,12.447],[-81.717,3.292],[-12.612,-36.255]],"c":true}],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.195],[21.211,-2.185],[28.238,16.539],[-20.379,6.8],[-44.682,6.198],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.793],[-21.211,2.185],[-28.27,-16.285],[32.56,-10.864],[13.749,-1.907],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.437,116.983],[-123.889,123.303],[-223.841,103.664],[-216.887,43.457],[-133.544,12.551],[-81.95,3.346],[-12.612,-36.255]],"c":true}],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.19],[21.2,-2.26],[28.304,16.508],[-20.346,6.905],[-44.652,6.351],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.787],[-21.2,2.26],[-28.335,-16.253],[32.507,-11.032],[13.74,-1.954],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.602,116.966],[-123.69,123.119],[-224.214,104.187],[-217.52,43.687],[-133.727,12.693],[-82.268,3.42],[-12.612,-36.255]],"c":true}],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.184],[21.184,-2.358],[28.391,16.468],[-20.303,7.044],[-44.612,6.552],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.78],[-21.184,2.358],[-28.42,-16.211],[32.438,-11.253],[13.728,-2.016],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.82,116.945],[-123.428,122.877],[-224.705,104.876],[-218.353,43.99],[-133.968,12.88],[-82.687,3.517],[-12.612,-36.255]],"c":true}],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.176],[21.164,-2.483],[28.501,16.417],[-20.247,7.22],[-44.562,6.808],[-18.617,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.771],[-21.164,2.483],[-28.528,-16.158],[32.35,-11.534],[13.712,-2.095],[35.358,-7.882],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.097,116.918],[-123.096,122.568],[-225.33,105.751],[-219.412,44.375],[-134.275,13.117],[-83.219,3.641],[-12.612,-36.255]],"c":true}],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.166],[21.141,-2.634],[28.634,16.355],[-20.18,7.434],[-44.501,7.118],[-18.618,4.327],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.293,-4.761],[-21.141,2.634],[-28.659,-16.094],[32.243,-11.875],[13.693,-2.19],[35.359,-7.877],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.433,116.885],[-122.694,122.195],[-226.085,106.81],[-220.694,44.841],[-134.646,13.404],[-83.863,3.79],[-12.612,-36.255]],"c":true}],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.101,4.156],[21.114,-2.805],[28.785,16.285],[-20.105,7.675],[-44.431,7.468],[-18.618,4.324],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.291,-4.748],[-21.114,2.805],[-28.808,-16.021],[32.122,-12.26],[13.672,-2.298],[35.359,-7.872],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.812,116.848],[-122.238,121.773],[-226.94,108.009],[-222.145,45.369],[-135.066,13.729],[-84.591,3.96],[-12.612,-36.255]],"c":true}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.1,4.144],[21.086,-2.984],[28.943,16.212],[-20.026,7.928],[-44.359,7.835],[-18.619,4.321],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.29,-4.736],[-21.086,2.984],[-28.963,-15.945],[31.996,-12.664],[13.65,-2.411],[35.36,-7.867],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.21,116.809],[-121.761,121.331],[-227.835,109.264],[-223.663,45.921],[-135.506,14.07],[-85.354,4.137],[-12.612,-36.255]],"c":true}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.098,4.133],[21.058,-3.158],[29.097,16.141],[-19.949,8.174],[-44.288,8.192],[-18.619,4.318],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.288,-4.723],[-21.058,3.158],[-29.114,-15.871],[31.873,-13.055],[13.628,-2.521],[35.361,-7.862],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.595,116.771],[-121.298,120.901],[-228.705,110.483],[-225.138,46.457],[-135.933,14.4],[-86.095,4.309],[-12.612,-36.255]],"c":true}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.097,4.123],[21.033,-3.318],[29.238,16.075],[-19.878,8.4],[-44.224,8.52],[-18.619,4.315],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.287,-4.712],[-21.033,3.318],[-29.253,-15.803],[31.761,-13.416],[13.608,-2.622],[35.361,-7.857],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.951,116.736],[-120.872,120.506],[-229.505,111.605],[-226.495,46.95],[-136.326,14.705],[-86.777,4.468],[-12.612,-36.255]],"c":true}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.096,4.114],[21.011,-3.46],[29.364,16.017],[-19.815,8.601],[-44.166,8.812],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.286,-4.701],[-21.011,3.46],[-29.377,-15.742],[31.66,-13.737],[13.59,-2.712],[35.362,-7.853],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.267,116.705],[-120.493,120.154],[-230.218,112.604],[-227.705,47.39],[-136.676,14.976],[-87.385,4.609],[-12.612,-36.255]],"c":true}],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.095,4.106],[20.991,-3.585],[29.474,15.966],[-19.759,8.778],[-44.115,9.069],[-18.62,4.31],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.284,-4.693],[-20.991,3.585],[-29.485,-15.689],[31.572,-14.019],[13.575,-2.791],[35.362,-7.849],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.545,116.677],[-120.159,119.845],[-230.844,113.481],[-228.766,47.776],[-136.984,15.214],[-87.918,4.733],[-12.612,-36.255]],"c":true}],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.094,4.1],[20.974,-3.694],[29.57,15.921],[-19.711,8.932],[-44.071,9.293],[-18.62,4.308],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.283,-4.685],[-20.974,3.694],[-29.58,-15.642],[31.495,-14.265],[13.561,-2.86],[35.363,-7.846],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.787,116.654],[-119.869,119.575],[-231.389,114.247],[-229.692,48.113],[-137.252,15.421],[-88.383,4.841],[-12.612,-36.255]],"c":true}],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.094],[20.959,-3.79],[29.654,15.882],[-19.669,9.067],[-44.032,9.488],[-18.62,4.307],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.283,-4.678],[-20.959,3.79],[-29.662,-15.602],[31.428,-14.479],[13.549,-2.92],[35.363,-7.843],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.998,116.633],[-119.615,119.34],[-231.865,114.913],[-230.499,48.406],[-137.485,15.602],[-88.788,4.935],[-12.612,-36.255]],"c":true}],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.088],[20.946,-3.872],[29.727,15.848],[-19.632,9.184],[-43.999,9.658],[-18.62,4.305],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.282,-4.672],[-20.946,3.872],[-29.734,-15.566],[31.369,-14.666],[13.539,-2.972],[35.363,-7.841],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.182,116.615],[-119.395,119.135],[-232.279,115.494],[-231.202,48.662],[-137.689,15.76],[-89.141,5.017],[-12.612,-36.255]],"c":true}],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.084],[20.935,-3.945],[29.791,15.819],[-19.6,9.286],[-43.969,9.806],[-18.621,4.304],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.667],[-20.935,3.945],[-29.797,-15.535],[31.318,-14.829],[13.53,-3.017],[35.364,-7.839],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.343,116.599],[-119.202,118.957],[-232.641,116.002],[-231.816,48.885],[-137.867,15.897],[-89.45,5.088],[-12.612,-36.255]],"c":true}],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.08],[20.925,-4.008],[29.847,15.793],[-19.572,9.375],[-43.944,9.935],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.662],[-20.925,4.008],[-29.852,-15.509],[31.274,-14.972],[13.522,-3.057],[35.364,-7.837],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.483,116.585],[-119.034,118.801],[-232.957,116.445],[-232.352,49.08],[-138.022,16.017],[-89.719,5.151],[-12.612,-36.255]],"c":true}],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.076],[20.916,-4.063],[29.896,15.77],[-19.548,9.453],[-43.921,10.049],[-18.621,4.302],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.658],[-20.916,4.063],[-29.9,-15.485],[31.235,-15.096],[13.515,-3.092],[35.364,-7.835],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.605,116.573],[-118.887,118.664],[-233.233,116.832],[-232.82,49.25],[-138.158,16.122],[-89.954,5.206],[-12.612,-36.255]],"c":true}],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.073],[20.908,-4.111],[29.938,15.75],[-19.527,9.521],[-43.902,10.147],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.655],[-20.908,4.111],[-29.942,-15.464],[31.201,-15.205],[13.509,-3.123],[35.364,-7.834],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.712,116.563],[-118.758,118.545],[-233.474,117.169],[-233.229,49.399],[-138.276,16.214],[-90.16,5.253],[-12.612,-36.255]],"c":true}],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.071],[20.902,-4.153],[29.975,15.733],[-19.508,9.581],[-43.885,10.234],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.652],[-20.902,4.153],[-29.978,-15.447],[31.171,-15.299],[13.504,-3.149],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.806,116.553],[-118.647,118.441],[-233.684,117.464],[-233.586,49.528],[-138.379,16.294],[-90.339,5.295],[-12.612,-36.255]],"c":true}],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.068],[20.896,-4.19],[30.008,15.718],[-19.492,9.632],[-43.87,10.308],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.649],[-20.896,4.19],[-30.01,-15.431],[31.145,-15.382],[13.499,-3.172],[35.365,-7.831],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.887,116.545],[-118.549,118.351],[-233.867,117.72],[-233.895,49.641],[-138.469,16.363],[-90.494,5.331],[-12.612,-36.255]],"c":true}],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.066],[20.891,-4.221],[30.035,15.705],[-19.478,9.677],[-43.857,10.373],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.647],[-20.891,4.221],[-30.037,-15.418],[31.123,-15.453],[13.495,-3.192],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.957,116.539],[-118.465,118.273],[-234.025,117.942],[-234.163,49.738],[-138.547,16.423],[-90.629,5.362],[-12.612,-36.255]],"c":true}],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.065],[20.887,-4.249],[30.059,15.694],[-19.466,9.715],[-43.846,10.429],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.645],[-20.887,4.249],[-30.061,-15.406],[31.104,-15.514],[13.492,-3.209],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.017,116.533],[-118.393,118.206],[-234.161,118.132],[-234.394,49.822],[-138.613,16.475],[-90.745,5.389],[-12.612,-36.255]],"c":true}],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.063],[20.883,-4.272],[30.08,15.685],[-19.456,9.748],[-43.837,10.476],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.643],[-20.883,4.272],[-30.081,-15.396],[31.087,-15.566],[13.489,-3.224],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.069,116.528],[-118.331,118.149],[-234.277,118.295],[-234.59,49.893],[-138.67,16.519],[-90.844,5.412],[-12.612,-36.255]],"c":true}],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.062],[20.88,-4.291],[30.097,15.677],[-19.447,9.776],[-43.829,10.516],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.642],[-20.88,4.291],[-30.098,-15.388],[31.074,-15.61],[13.487,-3.236],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.112,116.523],[-118.279,118.101],[-234.374,118.431],[-234.756,49.954],[-138.718,16.556],[-90.927,5.432],[-12.612,-36.255]],"c":true}],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.061],[20.878,-4.307],[30.111,15.67],[-19.44,9.798],[-43.822,10.55],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.641],[-20.878,4.307],[-30.112,-15.381],[31.062,-15.647],[13.485,-3.246],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.148,116.52],[-118.236,118.061],[-234.455,118.545],[-234.894,50.004],[-138.758,16.587],[-90.996,5.448],[-12.612,-36.255]],"c":true}],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.06],[20.876,-4.321],[30.123,15.665],[-19.434,9.817],[-43.817,10.577],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.64],[-20.875,4.321],[-30.123,-15.375],[31.053,-15.676],[13.483,-3.255],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.177,116.517],[-118.201,118.028],[-234.521,118.637],[-235.005,50.044],[-138.79,16.612],[-91.052,5.461],[-12.612,-36.255]],"c":true}],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.874,-4.331],[30.132,15.66],[-19.429,9.832],[-43.813,10.598],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.639],[-20.874,4.331],[-30.132,-15.371],[31.046,-15.7],[13.482,-3.261],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.2,116.515],[-118.173,118.003],[-234.573,118.71],[-235.093,50.076],[-138.816,16.632],[-91.096,5.471],[-12.612,-36.255]],"c":true}],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.873,-4.339],[30.139,15.657],[-19.426,9.843],[-43.81,10.614],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.639],[-20.873,4.339],[-30.139,-15.368],[31.04,-15.717],[13.481,-3.266],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.217,116.513],[-118.153,117.984],[-234.611,118.764],[-235.158,50.1],[-138.835,16.646],[-91.129,5.479],[-12.612,-36.255]],"c":true}],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.872,-4.344],[30.144,15.655],[-19.424,9.85],[-43.808,10.625],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.872,4.344],[-30.144,-15.365],[31.036,-15.729],[13.48,-3.269],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.229,116.512],[-118.139,117.97],[-234.638,118.801],[-235.204,50.116],[-138.848,16.656],[-91.152,5.484],[-12.612,-36.255]],"c":true}],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.694117665291,0.435294121504,0.345098048449,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Thumb","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":321,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Nail - PATH","parent":4,"tt":1,"tp":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-215.854,53.1,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.7},"t":59,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.6,"y":0},"t":95,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":122,"s":[{"i":[[0,0],[4.232,-12.502],[12.921,-1.766],[0,0],[-10.742,11.216],[0,0],[-9.55,-10.068]],"o":[[8.923,9.803],[-4.232,12.502],[0,0],[-17.559,-12.801],[0,0],[13.042,-4.219],[0,0]],"v":[[43.524,-16.699],[51.346,19.151],[23.347,42.689],[-15.873,40.533],[-19.404,-10.788],[6.329,-27.088],[43.177,-17.287]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":140,"s":[{"i":[[0,0],[5.977,-11.693],[12.492,0.343],[0,0],[-11.927,9.366],[0,0],[-7.435,-11.514]],"o":[[6.885,11.15],[-5.977,11.693],[0,0],[-14.573,-15.516],[0,0],[12.995,-2.066],[0,0]],"v":[[41.831,-31.462],[43.556,5.299],[13.369,24.072],[-23.361,15.588],[-18.585,-35.795],[8.315,-47.769],[41.596,-32.101]],"c":true}]},{"t":175,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}],"h":1},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":188,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.154,"y":1},"t":218,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":222,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":234,"s":[{"i":[[0,0],[4.232,-12.502],[12.921,-1.766],[0,0],[-10.742,11.216],[0,0],[-9.55,-10.068]],"o":[[8.923,9.803],[-4.232,12.502],[0,0],[-17.559,-12.801],[0,0],[13.042,-4.219],[0,0]],"v":[[43.524,-16.699],[51.346,19.151],[23.347,42.689],[-15.873,40.533],[-19.404,-10.788],[6.329,-27.088],[43.177,-17.287]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":252,"s":[{"i":[[0,0],[5.977,-11.693],[12.492,0.343],[0,0],[-11.927,9.366],[0,0],[-7.435,-11.514]],"o":[[6.885,11.15],[-5.977,11.693],[0,0],[-14.573,-15.516],[0,0],[12.995,-2.066],[0,0]],"v":[[41.831,-31.462],[43.556,5.299],[13.369,24.072],[-23.361,15.588],[-18.585,-35.795],[8.315,-47.769],[41.596,-32.101]],"c":true}]},{"t":287,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.75686275959,0.549019634724,0.474509805441,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Nail","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":321,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Thumb - PATH","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":59,"s":[17.7]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":95,"s":[15.7]},{"i":{"x":[0.28],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":147,"s":[15.7]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.18],"y":[0]},"t":201,"s":[17.7]},{"i":{"x":[0.28],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":259,"s":[15.7]},{"t":313,"s":[17.7]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":122,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.6,"y":0.6},"o":{"x":0.604,"y":0.604},"t":145,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.28,"y":1},"o":{"x":0.2,"y":0},"t":147,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.8,"y":0.8},"t":201,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":234,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.6,"y":0.6},"o":{"x":0.604,"y":0.604},"t":257,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.28,"y":1},"o":{"x":0.2,"y":0},"t":259,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":313,"s":[0,0,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,49,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":25,"nm":"Elevation","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[0,0,0,0.25],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":63.75,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":180,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":4,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":8,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.7},"t":59,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.6,"y":0},"t":95,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":122,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.49,-5.931],[30.698,11.123],[-18.869,10.266],[-42.877,14.071],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.49,5.931],[-30.684,-10.869],[30.147,-16.402],[13.194,-4.33],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.746,122.8],[-214.825,120.486],[-218.536,60.463],[-143.094,15.021],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":140,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"t":175,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"h":1},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":188,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.154,"y":1},"t":218,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":222,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":234,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.49,-5.931],[30.698,11.123],[-18.869,10.266],[-42.877,14.071],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.49,5.931],[-30.684,-10.869],[30.147,-16.402],[13.194,-4.33],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.746,122.8],[-214.825,120.486],[-218.536,60.463],[-143.094,15.021],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":252,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"t":287,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.694117665291,0.435294121504,0.345098048449,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Thumb","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":321,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".onSurfaceHome","cl":"onSurfaceHome","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":65,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":77,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":89,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":119,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":141,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":150,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":231,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":253,"s":[100]},{"t":262,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,1429,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":414,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[1]},"o":{"x":[1],"y":[0]},"t":123,"s":[581]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.312],"y":[4.051]},"t":141,"s":[910]},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":150,"s":[910]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":180,"s":[581]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[1],"y":[0]},"t":235,"s":[581]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.312],"y":[4.051]},"t":253,"s":[910]},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":262,"s":[910]},{"t":292,"s":[581]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":123,"s":[90]},{"t":141,"s":[200],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":150,"s":[200]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":180,"s":[90]},{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":235,"s":[90]},{"t":253,"s":[200],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":262,"s":[200]},{"t":292,"s":[90]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":1,"k":[{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":123,"s":[90]},{"t":141,"s":[200],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":150,"s":[200]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":180,"s":[90]},{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":235,"s":[90]},{"t":253,"s":[200],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":262,"s":[200]},{"t":292,"s":[90]}],"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491],[-117,-581],[117,-581],[207,-491],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.772,0],[0,0],[0,-49.772],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-49.772],[0,0],[49.772,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491.167],[-116.817,-581.35],[116.817,-581.35],[207,-491.167],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.09,0],[0,0],[0,-50.09],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-50.09],[0,0],[50.09,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491.689],[-116.241,-582.448],[116.241,-582.448],[207,-491.689],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.651,0],[0,0],[0,-50.651],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-50.651],[0,0],[50.651,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-492.605],[-115.225,-584.38],[115.225,-584.38],[207,-492.605],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.485,0],[0,0],[0,-51.485],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-51.485],[0,0],[51.485,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-493.959],[-113.713,-587.246],[113.713,-587.246],[207,-493.959],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-52.63,0],[0,0],[0,-52.63],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-52.63],[0,0],[52.63,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-495.808],[-111.638,-591.17],[111.638,-591.17],[207,-495.808],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-54.132,0],[0,0],[0,-54.133],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-54.133],[0,0],[54.133,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-498.219],[-108.916,-596.303],[108.916,-596.303],[207,-498.219],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-56.05,0],[0,0],[0,-56.05],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-56.05],[0,0],[56.05,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-501.281],[-105.442,-602.839],[105.442,-602.839],[207,-501.281],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-58.455,0],[0,0],[0,-58.455],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-58.455],[0,0],[58.455,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-505.109],[-101.083,-611.026],[101.083,-611.026],[207,-505.109],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-61.443,0],[0,0],[0,-61.443],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-61.443],[0,0],[61.443,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-509.862],[-95.67,-621.193],[95.669,-621.193],[207,-509.862],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-65.136,0],[0,0],[0,-65.136],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-65.136],[0,0],[65.136,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-515.772],[-88.979,-633.792],[88.979,-633.792],[207,-515.772],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-69.689,0],[0,0],[0,-69.689],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-69.689],[0,0],[69.689,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-523.201],[-80.73,-649.472],[80.73,-649.472],[207,-523.201],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-75.292,0],[0,0],[0,-75.292],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-75.292],[0,0],[75.292,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-532.789],[-70.578,-669.211],[70.578,-669.211],[207,-532.789],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-82.119,0],[0,0],[0,-82.119],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-82.119],[0,0],[82.119,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-545.809],[-58.206,-694.603],[58.206,-694.603],[207,-545.809],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-90.124,0],[0,0],[0,-90.124],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-90.124],[0,0],[90.124,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-565.184],[-43.703,-728.481],[43.703,-728.481],[207,-565.184],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-98.484,0],[0,0],[0,-98.484],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-98.484],[0,0],[98.484,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-597.873],[-28.555,-776.318],[28.555,-776.318],[207,-597.873],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-105.33,0],[0,0],[0,-105.33],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-105.33],[0,0],[105.33,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-653.5],[-16.151,-844.349],[16.151,-844.349],[207,-653.5],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.245,0],[0,0],[0,-109.245],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-109.245],[0,0],[109.245,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-700.008],[-9.056,-897.952],[9.056,-897.952],[207,-700.008],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-710],[-7,-910],[7,-910],[207,-710],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-711.387],[-7,-911.387],[7,-911.387],[207,-711.387],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-711.036],[-7,-911.036],[7,-911.036],[207,-711.036],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-710.362],[-7,-910.362],[7,-910.362],[207,-710.362],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-710],[-7,-910],[7,-910],[207,-710],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.251,0],[0,0],[0,-110.251],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.251],[0,0],[110.251,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-709.533],[-7.234,-909.299],[7.234,-909.299],[207,-709.533],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.855,0],[0,0],[0,-109.855],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-109.855],[0,0],[109.855,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-708.106],[-7.951,-907.155],[7.951,-907.155],[207,-708.106],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.183,0],[0,0],[0,-109.183],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-109.183],[0,0],[109.183,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-705.681],[-9.169,-903.511],[9.169,-903.511],[207,-705.681],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-108.224,0],[0,0],[0,-108.224],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-108.224],[0,0],[108.224,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-702.223],[-10.906,-898.317],[10.906,-898.317],[207,-702.223],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-106.972,0],[0,0],[0,-106.972],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-106.972],[0,0],[106.972,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-697.707],[-13.174,-891.533],[13.174,-891.533],[207,-697.707],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-105.423,0],[0,0],[0,-105.422],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-105.422],[0,0],[105.423,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-692.117],[-15.983,-883.134],[15.983,-883.134],[207,-692.117],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-103.574,0],[0,0],[0,-103.574],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-103.574],[0,0],[103.574,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-685.448],[-19.332,-873.116],[19.332,-873.116],[207,-685.448],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-101.431,0],[0,0],[0,-101.431],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-101.431],[0,0],[101.431,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-677.717],[-23.215,-861.502],[23.215,-861.502],[207,-677.717],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-99.003,0],[0,0],[0,-99.003],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-99.003],[0,0],[99.003,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-668.96],[-27.614,-848.347],[27.614,-848.347],[207,-668.96],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-96.309,0],[0,0],[0,-96.309],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-96.309],[0,0],[96.309,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-659.241],[-32.495,-833.746],[32.495,-833.746],[207,-659.241],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-93.374,0],[0,0],[0,-93.374],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-93.374],[0,0],[93.374,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-648.653],[-37.814,-817.839],[37.814,-817.839],[207,-648.653],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-90.232,0],[0,0],[0,-90.232],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-90.232],[0,0],[90.232,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-637.317],[-43.507,-800.81],[43.507,-800.81],[207,-637.317],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-86.925,0],[0,0],[0,-86.925],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-86.925],[0,0],[86.925,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-625.39],[-49.498,-782.892],[49.498,-782.892],[207,-625.39],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-83.505,0],[0,0],[0,-83.505],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-83.505],[0,0],[83.505,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-613.051],[-55.696,-764.355],[55.696,-764.355],[207,-613.051],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-76.546,0],[0,0],[0,-76.546],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-76.546],[0,0],[76.546,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-587.949],[-68.304,-726.645],[68.304,-726.645],[207,-587.949],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-73.126,0],[0,0],[0,-73.126],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-73.126],[0,0],[73.126,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-575.61],[-74.502,-708.108],[74.502,-708.108],[207,-575.61],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-69.819,0],[0,0],[0,-69.819],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-69.819],[0,0],[69.819,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-563.683],[-80.493,-690.19],[80.493,-690.19],[207,-563.683],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-66.677,0],[0,0],[0,-66.677],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-66.677],[0,0],[66.677,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-552.347],[-86.186,-673.161],[86.186,-673.161],[207,-552.347],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-63.742,0],[0,0],[0,-63.742],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-63.742],[0,0],[63.742,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-541.759],[-91.505,-657.254],[91.505,-657.254],[207,-541.759],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-61.048,0],[0,0],[0,-61.048],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-61.048],[0,0],[61.048,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-532.04],[-96.386,-642.653],[96.386,-642.653],[207,-532.04],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-58.62,0],[0,0],[0,-58.62],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-58.62],[0,0],[58.62,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-523.283],[-100.785,-629.498],[100.785,-629.498],[207,-523.283],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-56.477,0],[0,0],[0,-56.477],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-56.477],[0,0],[56.477,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-515.552],[-104.668,-617.884],[104.668,-617.884],[207,-515.552],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-54.628,0],[0,0],[0,-54.629],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-54.629],[0,0],[54.628,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-508.884],[-108.017,-607.866],[108.017,-607.866],[207,-508.884],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-53.079,0],[0,0],[0,-53.079],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-53.079],[0,0],[53.079,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-503.293],[-110.826,-599.467],[110.826,-599.467],[207,-503.293],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.827,0],[0,0],[0,-51.827],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-51.827],[0,0],[51.827,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-498.777],[-113.094,-592.683],[113.094,-592.683],[207,-498.777],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.868,0],[0,0],[0,-50.868],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-50.868],[0,0],[50.868,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-495.319],[-114.831,-587.489],[114.831,-587.489],[207,-495.319],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.196,0],[0,0],[0,-50.196],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-50.196],[0,0],[50.196,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-492.894],[-116.049,-583.845],[116.049,-583.845],[207,-492.894],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.8,0],[0,0],[0,-49.8],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-49.8],[0,0],[49.8,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491.467],[-116.766,-581.701],[116.766,-581.701],[207,-491.467],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491],[-117,-581],[117,-581],[207,-491],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491],[-117,-581],[117,-581],[207,-491],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.772,0],[0,0],[0,-49.772],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-49.772],[0,0],[49.772,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491.167],[-116.817,-581.35],[116.817,-581.35],[207,-491.167],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.09,0],[0,0],[0,-50.09],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-50.09],[0,0],[50.09,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491.689],[-116.241,-582.448],[116.241,-582.448],[207,-491.689],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.651,0],[0,0],[0,-50.651],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-50.651],[0,0],[50.651,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-492.605],[-115.225,-584.38],[115.225,-584.38],[207,-492.605],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.485,0],[0,0],[0,-51.485],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-51.485],[0,0],[51.485,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-493.959],[-113.713,-587.246],[113.713,-587.246],[207,-493.959],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-52.63,0],[0,0],[0,-52.63],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-52.63],[0,0],[52.63,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-495.808],[-111.638,-591.17],[111.638,-591.17],[207,-495.808],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-54.132,0],[0,0],[0,-54.133],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-54.133],[0,0],[54.133,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-498.219],[-108.916,-596.303],[108.916,-596.303],[207,-498.219],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-56.05,0],[0,0],[0,-56.05],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-56.05],[0,0],[56.05,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-501.281],[-105.442,-602.839],[105.442,-602.839],[207,-501.281],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-58.455,0],[0,0],[0,-58.455],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-58.455],[0,0],[58.455,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-505.109],[-101.083,-611.026],[101.083,-611.026],[207,-505.109],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-61.443,0],[0,0],[0,-61.443],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-61.443],[0,0],[61.443,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-509.862],[-95.67,-621.193],[95.669,-621.193],[207,-509.862],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-65.136,0],[0,0],[0,-65.136],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-65.136],[0,0],[65.136,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-515.772],[-88.979,-633.792],[88.979,-633.792],[207,-515.772],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-69.689,0],[0,0],[0,-69.689],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-69.689],[0,0],[69.689,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-523.201],[-80.73,-649.472],[80.73,-649.472],[207,-523.201],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-75.292,0],[0,0],[0,-75.292],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-75.292],[0,0],[75.292,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-532.789],[-70.578,-669.211],[70.578,-669.211],[207,-532.789],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-82.119,0],[0,0],[0,-82.119],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-82.119],[0,0],[82.119,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-545.809],[-58.206,-694.603],[58.206,-694.603],[207,-545.809],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-90.124,0],[0,0],[0,-90.124],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-90.124],[0,0],[90.124,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-565.184],[-43.703,-728.481],[43.703,-728.481],[207,-565.184],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-98.484,0],[0,0],[0,-98.484],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-98.484],[0,0],[98.484,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-597.873],[-28.555,-776.318],[28.555,-776.318],[207,-597.873],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-105.33,0],[0,0],[0,-105.33],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-105.33],[0,0],[105.33,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-653.5],[-16.151,-844.349],[16.151,-844.349],[207,-653.5],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.245,0],[0,0],[0,-109.245],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-109.245],[0,0],[109.245,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-700.008],[-9.056,-897.952],[9.056,-897.952],[207,-700.008],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-710],[-7,-910],[7,-910],[207,-710],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-711.387],[-7,-911.387],[7,-911.387],[207,-711.387],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-711.036],[-7,-911.036],[7,-911.036],[207,-711.036],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-710.362],[-7,-910.362],[7,-910.362],[207,-710.362],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-710],[-7,-910],[7,-910],[207,-710],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.251,0],[0,0],[0,-110.251],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.251],[0,0],[110.251,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-709.533],[-7.234,-909.299],[7.234,-909.299],[207,-709.533],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.855,0],[0,0],[0,-109.855],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-109.855],[0,0],[109.855,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-708.106],[-7.951,-907.155],[7.951,-907.155],[207,-708.106],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.183,0],[0,0],[0,-109.183],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-109.183],[0,0],[109.183,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-705.681],[-9.169,-903.511],[9.169,-903.511],[207,-705.681],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-108.224,0],[0,0],[0,-108.224],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-108.224],[0,0],[108.224,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-702.223],[-10.906,-898.317],[10.906,-898.317],[207,-702.223],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-106.972,0],[0,0],[0,-106.972],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-106.972],[0,0],[106.972,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-697.707],[-13.174,-891.533],[13.174,-891.533],[207,-697.707],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-105.423,0],[0,0],[0,-105.422],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-105.422],[0,0],[105.423,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-692.117],[-15.983,-883.134],[15.983,-883.134],[207,-692.117],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-103.574,0],[0,0],[0,-103.574],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-103.574],[0,0],[103.574,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-685.448],[-19.332,-873.116],[19.332,-873.116],[207,-685.448],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-101.431,0],[0,0],[0,-101.431],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-101.431],[0,0],[101.431,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-677.717],[-23.215,-861.502],[23.215,-861.502],[207,-677.717],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-99.003,0],[0,0],[0,-99.003],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-99.003],[0,0],[99.003,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-668.96],[-27.614,-848.347],[27.614,-848.347],[207,-668.96],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-96.309,0],[0,0],[0,-96.309],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-96.309],[0,0],[96.309,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-659.241],[-32.495,-833.746],[32.495,-833.746],[207,-659.241],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-93.374,0],[0,0],[0,-93.374],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-93.374],[0,0],[93.374,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-648.653],[-37.814,-817.839],[37.814,-817.839],[207,-648.653],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-90.232,0],[0,0],[0,-90.232],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-90.232],[0,0],[90.232,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-637.317],[-43.507,-800.81],[43.507,-800.81],[207,-637.317],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-86.925,0],[0,0],[0,-86.925],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-86.925],[0,0],[86.925,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-625.39],[-49.498,-782.892],[49.498,-782.892],[207,-625.39],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-83.505,0],[0,0],[0,-83.505],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-83.505],[0,0],[83.505,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-613.051],[-55.696,-764.355],[55.696,-764.355],[207,-613.051],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-76.546,0],[0,0],[0,-76.546],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-76.546],[0,0],[76.546,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-587.949],[-68.304,-726.645],[68.304,-726.645],[207,-587.949],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-73.126,0],[0,0],[0,-73.126],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-73.126],[0,0],[73.126,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-575.61],[-74.502,-708.108],[74.502,-708.108],[207,-575.61],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-69.819,0],[0,0],[0,-69.819],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-69.819],[0,0],[69.819,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-563.683],[-80.493,-690.19],[80.493,-690.19],[207,-563.683],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-66.677,0],[0,0],[0,-66.677],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-66.677],[0,0],[66.677,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-552.347],[-86.186,-673.161],[86.186,-673.161],[207,-552.347],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-63.742,0],[0,0],[0,-63.742],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-63.742],[0,0],[63.742,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-541.759],[-91.505,-657.254],[91.505,-657.254],[207,-541.759],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-61.048,0],[0,0],[0,-61.048],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-61.048],[0,0],[61.048,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-532.04],[-96.386,-642.653],[96.386,-642.653],[207,-532.04],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-58.62,0],[0,0],[0,-58.62],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-58.62],[0,0],[58.62,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-523.283],[-100.785,-629.498],[100.785,-629.498],[207,-523.283],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-56.477,0],[0,0],[0,-56.477],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-56.477],[0,0],[56.477,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-515.552],[-104.668,-617.884],[104.668,-617.884],[207,-515.552],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-54.628,0],[0,0],[0,-54.629],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-54.629],[0,0],[54.628,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-508.884],[-108.017,-607.866],[108.017,-607.866],[207,-508.884],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-53.079,0],[0,0],[0,-53.079],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-53.079],[0,0],[53.079,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-503.293],[-110.826,-599.467],[110.826,-599.467],[207,-503.293],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.827,0],[0,0],[0,-51.827],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-51.827],[0,0],[51.827,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-498.777],[-113.094,-592.683],[113.094,-592.683],[207,-498.777],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.868,0],[0,0],[0,-50.868],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-50.868],[0,0],[50.868,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-495.319],[-114.831,-587.489],[114.831,-587.489],[207,-495.319],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.196,0],[0,0],[0,-50.196],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-50.196],[0,0],[50.196,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-492.894],[-116.049,-583.845],[116.049,-583.845],[207,-492.894],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.8,0],[0,0],[0,-49.8],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-49.8],[0,0],[49.8,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491.467],[-116.766,-581.701],[116.766,-581.701],[207,-491.467],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":291,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491],[-117,-581],[117,-581],[207,-491],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":292,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.925,0.753,0.424,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.925,0.753,0.424,1],"t":320,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":321,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".onSurfaceHome","cl":"onSurfaceHome","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":140,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":141,"s":[95]},{"t":170,"s":[0],"h":1},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":252,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":253,"s":[95]},{"t":282,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,1376,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":414,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.268]},"t":141,"s":[857]},{"t":179,"s":[1204],"h":1},{"t":231,"s":[857],"h":1},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.268]},"t":253,"s":[857]},{"t":291,"s":[1204],"h":1}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":141,"s":[200]},{"t":253,"s":[200]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":141,"s":[200]},{"t":253,"s":[200]}],"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-657],[-7,-857],[7,-857],[207,-657],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-710.063],[-7,-910.063],[7,-910.063],[207,-710.063],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-753.007],[-7,-953.007],[7,-953.007],[207,-753.007],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-785.49],[-7,-985.49],[7,-985.49],[207,-785.49],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-811.374],[-7,-1011.374],[7,-1011.374],[207,-811.374],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-832.839],[-7,-1032.839],[7,-1032.839],[207,-832.839],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-851.125],[-7,-1051.125],[7,-1051.125],[207,-851.125],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-866.998],[-7,-1066.998],[7,-1066.998],[207,-866.998],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-880.965],[-7,-1080.965],[7,-1080.965],[207,-880.965],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-893.379],[-7,-1093.379],[7,-1093.379],[207,-893.379],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-904.497],[-7,-1104.497],[7,-1104.497],[207,-904.497],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-914.513],[-7,-1114.513],[7,-1114.513],[207,-914.513],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-923.578],[-7,-1123.578],[7,-1123.578],[207,-923.578],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-931.81],[-7,-1131.81],[7,-1131.81],[207,-931.81],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-939.307],[-7,-1139.307],[7,-1139.307],[207,-939.307],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-946.146],[-7,-1146.146],[7,-1146.146],[207,-946.146],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-952.394],[-7,-1152.394],[7,-1152.394],[207,-952.394],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-958.107],[-7,-1158.106],[7,-1158.106],[207,-958.107],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-963.331],[-7,-1163.331],[7,-1163.331],[207,-963.331],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-968.107],[-7,-1168.107],[7,-1168.107],[207,-968.107],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-972.472],[-7,-1172.472],[7,-1172.472],[207,-972.472],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-976.455],[-7,-1176.455],[7,-1176.455],[207,-976.455],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-980.085],[-7,-1180.085],[7,-1180.085],[207,-980.085],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-983.384],[-7,-1183.384],[7,-1183.384],[207,-983.384],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-986.375],[-7,-1186.375],[7,-1186.375],[207,-986.375],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-989.077],[-7,-1189.078],[7,-1189.078],[207,-989.077],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-991.508],[-7,-1191.508],[7,-1191.508],[207,-991.508],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-993.682],[-7,-1193.682],[7,-1193.682],[207,-993.682],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-995.614],[-7,-1195.614],[7,-1195.614],[207,-995.614],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-997.317],[-7,-1197.317],[7,-1197.317],[207,-997.317],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-998.803],[-7,-1198.803],[7,-1198.803],[207,-998.803],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-1000.082],[-7,-1200.082],[7,-1200.082],[207,-1000.082],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-1001.164],[-7,-1201.165],[7,-1201.165],[207,-1001.164],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-1002.06],[-7,-1202.06],[7,-1202.06],[207,-1002.06],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-1002.776],[-7,-1202.776],[7,-1202.776],[207,-1002.776],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-1003.702],[-7,-1203.702],[7,-1203.702],[207,-1003.702],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-1004],[-7,-1204],[7,-1204],[207,-1004],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-657],[-7,-857],[7,-857],[207,-657],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-657],[-7,-857],[7,-857],[207,-657],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-710.063],[-7,-910.063],[7,-910.063],[207,-710.063],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-753.007],[-7,-953.007],[7,-953.007],[207,-753.007],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-785.49],[-7,-985.49],[7,-985.49],[207,-785.49],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-811.374],[-7,-1011.374],[7,-1011.374],[207,-811.374],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-832.839],[-7,-1032.839],[7,-1032.839],[207,-832.839],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-851.125],[-7,-1051.125],[7,-1051.125],[207,-851.125],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-866.998],[-7,-1066.998],[7,-1066.998],[207,-866.998],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-880.965],[-7,-1080.965],[7,-1080.965],[207,-880.965],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-893.379],[-7,-1093.379],[7,-1093.379],[207,-893.379],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-904.497],[-7,-1104.497],[7,-1104.497],[207,-904.497],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-914.513],[-7,-1114.513],[7,-1114.513],[207,-914.513],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-923.578],[-7,-1123.578],[7,-1123.578],[207,-923.578],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.507]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-207,-931.81],[-7,-1131.81],[7,-1131.81],[207,-931.81],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-939.307],[-7,-1139.307],[7,-1139.307],[207,-939.307],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-946.146],[-7,-1146.146],[7,-1146.146],[207,-946.146],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-952.394],[-7,-1152.394],[7,-1152.394],[207,-952.394],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-958.107],[-7,-1158.106],[7,-1158.106],[207,-958.107],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-963.331],[-7,-1163.331],[7,-1163.331],[207,-963.331],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-968.107],[-7,-1168.107],[7,-1168.107],[207,-968.107],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-972.472],[-7,-1172.472],[7,-1172.472],[207,-972.472],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-976.455],[-7,-1176.455],[7,-1176.455],[207,-976.455],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-980.085],[-7,-1180.085],[7,-1180.085],[207,-980.085],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-983.384],[-7,-1183.384],[7,-1183.384],[207,-983.384],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-986.375],[-7,-1186.375],[7,-1186.375],[207,-986.375],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-989.077],[-7,-1189.078],[7,-1189.078],[207,-989.077],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-991.508],[-7,-1191.508],[7,-1191.508],[207,-991.508],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-993.682],[-7,-1193.682],[7,-1193.682],[207,-993.682],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-995.614],[-7,-1195.614],[7,-1195.614],[207,-995.614],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-997.317],[-7,-1197.317],[7,-1197.317],[207,-997.317],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-998.803],[-7,-1198.803],[7,-1198.803],[207,-998.803],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-1000.082],[-7,-1200.082],[7,-1200.082],[207,-1000.082],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-1001.164],[-7,-1201.165],[7,-1201.165],[207,-1001.164],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-1002.06],[-7,-1202.06],[7,-1202.06],[207,-1002.06],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-1002.776],[-7,-1202.776],[7,-1202.776],[207,-1002.776],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-1003.702],[-7,-1203.702],[7,-1203.702],[207,-1003.702],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.925,0.753,0.424,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.925,0.753,0.424,1],"t":320,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":140,"op":321,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".surfaceHome","cl":"surfaceHome","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":206,"ix":3},"y":{"a":0,"k":446,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[412,892],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.365,0.259,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.365,0.259,0,1],"t":320,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Volume","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":321,"st":-40,"ct":1,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Part03_Demonstration_Loop_V02","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,446,0],"ix":2,"l":2},"a":{"a":0,"k":[206,446,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":412,"h":892,"ip":786,"op":1040,"st":786,"bm":0},{"ddd":0,"ind":2,"ty":0,"nm":"Part02_Charade_Loop_V02","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,446,0],"ix":2,"l":2},"a":{"a":0,"k":[206,446,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":412,"h":892,"ip":320,"op":786,"st":320,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"Part01_ThumbDemo_V02","refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,446,0],"ix":2,"l":2},"a":{"a":0,"k":[206,446,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":412,"h":892,"ip":0,"op":321,"st":0,"bm":0}],"markers":[{"tm":141,"cm":"","dr":0},{"tm":641,"cm":"","dr":0},{"tm":1002,"cm":"","dr":0}]}
\ No newline at end of file
diff --git a/quickstep/res/raw/home_gesture_tutorial_open_foldable_animation.json b/quickstep/res/raw/home_gesture_tutorial_open_foldable_animation.json
new file mode 100644
index 0000000..c8aca6b
--- /dev/null
+++ b/quickstep/res/raw/home_gesture_tutorial_open_foldable_animation.json
@@ -0,0 +1 @@
+{"v":"5.10.0","fr":60,"ip":0,"op":1034,"w":841,"h":701,"nm":"SUW_Home_FO V03","ddd":0,"assets":[{"id":"comp_0","nm":"Part03_Demonstration_Home_FO_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"CHARACTER REPO","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":420.5,"ix":3},"y":{"a":0,"k":677,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":82,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"Y Movement","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":0,"ix":3},"y":{"k":[{"s":[0],"t":53,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.35],"t":54,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-1.448],"t":55,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.38],"t":56,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-6.246],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-10.17],"t":58,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-15.303],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.839],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-30.026],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-40.193],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.792],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-68.472],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-88.211],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-113.603],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-147.481],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-195.318],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-263.349],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-316.952],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-329],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-385.283],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-416.494],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-435.864],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-449.465],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-459.751],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-467.9],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-474.564],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-480.138],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-484.877],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-488.958],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-492.507],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-495.618],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-498.362],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-500.793],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-502.957],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-504.887],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-506.614],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-508.16],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-509.547],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-510.791],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-511.906],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-512.904],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-513.798],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-514.596],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-515.306],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-515.935],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-516.49],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-516.978],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-517.401],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-517.767],"t":101,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-518.077],"t":102,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-518.55],"t":104,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-518.438],"t":112,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-517.984],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-517.387],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-516.64],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-515.736],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-514.668],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-513.43],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-512.015],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-510.418],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-508.633],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-506.657],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-504.486],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-502.12],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-499.561],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-496.815],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-493.889],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-490.796],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-487.553],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-484.183],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-480.711],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-477.167],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-473.584],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-469.998],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-466.443],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-462.955],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-459.564],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-456.3],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-453.186],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-450.242],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-447.482],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-444.917],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-442.553],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-440.394],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-438.439],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-436.686],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-435.131],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-433.768],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-432.593],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-431.597],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-430.775],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-430.117],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-429.618],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-429.27],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-428.895],"t":178,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-428.566],"t":179,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-427.991],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-427.144],"t":181,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-425.996],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-424.511],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-422.647],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-420.353],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-417.567],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-414.212],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-410.193],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-405.386],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-399.632],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-392.717],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-384.354],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-374.143],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-361.527],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-345.748],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-325.92],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-301.578],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-274.097],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-247.115],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-223.613],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-204.19],"t":201,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-188.251],"t":202,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-175.042],"t":203,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-163.95],"t":204,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-154.519],"t":205,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-146.418],"t":206,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-139.402],"t":207,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-133.286],"t":208,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-127.93],"t":209,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.222],"t":210,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-119.076],"t":211,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.421],"t":212,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-112.198],"t":213,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-109.359],"t":214,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-106.865],"t":215,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-104.682],"t":216,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-102.779],"t":217,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-101.133],"t":218,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-99.721],"t":219,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-98.525],"t":220,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-97.528],"t":221,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-96.715],"t":222,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-96.073],"t":223,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.59],"t":224,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.257],"t":225,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.063],"t":226,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.032],"t":228,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.134],"t":229,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.317],"t":230,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.593],"t":231,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.979],"t":232,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-96.494],"t":233,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-97.168],"t":234,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-98.037],"t":235,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-99.153],"t":236,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-100.589],"t":237,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-102.449],"t":238,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-104.868],"t":239,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-107.966],"t":240,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-111.627],"t":241,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.252],"t":242,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-118.217],"t":243,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-120.41],"t":244,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-121.984],"t":245,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.105],"t":246,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.891],"t":247,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-124.424],"t":248,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-124.762],"t":249,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-124.944],"t":250,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-124.896],"t":253,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-124.758],"t":254,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-124.556],"t":255,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-124.286],"t":256,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.944],"t":257,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.534],"t":258,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.057],"t":259,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-122.526],"t":260,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-121.953],"t":261,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-121.357],"t":262,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-120.753],"t":263,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-120.16],"t":264,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-119.588],"t":265,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-119.048],"t":266,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-118.545],"t":267,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-118.082],"t":268,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-117.658],"t":269,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-117.275],"t":270,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-116.929],"t":271,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-116.62],"t":272,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-116.345],"t":273,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-116.101],"t":274,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.887],"t":275,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.701],"t":276,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.541],"t":277,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.404],"t":278,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.29],"t":279,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.197],"t":280,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.123],"t":281,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.03],"t":283,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue Y Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":71,"s":[0]},{"i":{"x":[0.544],"y":[1]},"o":{"x":[0.477],"y":[0]},"t":109,"s":[-190]},{"i":{"x":[0.671],"y":[1]},"o":{"x":[0.309],"y":[0]},"t":156,"s":[-100]},{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":177,"s":[-100]},{"i":{"x":[0.424],"y":[1]},"o":{"x":[0.75],"y":[0]},"t":227,"s":[20]},{"i":{"x":[0.363],"y":[1]},"o":{"x":[0.345],"y":[0]},"t":251,"s":[-10]},{"t":285,"s":[0]}],"ix":1}}]}],"ip":0,"op":395,"st":-110,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-609,"s":[0]},{"t":-599,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":0,"ix":3},"y":{"k":[{"s":[0],"t":53,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.35],"t":54,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-1.448],"t":55,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.38],"t":56,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-6.246],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-10.17],"t":58,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-15.303],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.839],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-30.026],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-40.193],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.792],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-68.472],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-88.211],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-113.603],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-147.481],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-195.318],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-263.349],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-316.952],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-329],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-385.283],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-416.494],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-435.864],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-449.465],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-459.751],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-467.9],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-474.564],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-480.138],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-484.877],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-488.958],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-492.507],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-495.618],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-498.362],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-500.793],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-502.957],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-504.887],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-506.614],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-508.16],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-509.547],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-510.791],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-511.906],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-512.904],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-513.798],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-514.596],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-515.306],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-515.935],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-516.49],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-516.978],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-517.401],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-517.767],"t":101,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-518.077],"t":102,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-518.55],"t":104,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue Y Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":71,"s":[0]},{"t":109,"s":[-190]}],"ix":1}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":24,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,23.5],[21.75,-21.75],[21.75,-66.5]],"c":false}]},{"i":{"x":0.65,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.35,"y":0},"t":49,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.35,"y":0},"t":66,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"t":75,"s":[{"i":[[0,0],[0,44.562],[0,0]],"o":[[0,0],[0,-44.396],[0,0]],"v":[[29.75,51.5],[21.75,-21.75],[29.75,-94.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.418],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.149],"y":[1]},"o":{"x":[0.529],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":67,"s":[27]},{"t":86,"s":[58],"h":1}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.77]},"o":{"x":[0.87],"y":[0.12]},"t":69,"s":[0]},{"t":83,"s":[49.5]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.77]},"o":{"x":[0.87],"y":[0.12]},"t":69,"s":[100]},{"t":83,"s":[50.5]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-465,"s":[0]},{"t":-447,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":82,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Gesture KO","td":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":19,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":31,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":49,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":71,"s":[100]},{"t":80,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,1238,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":843,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[1]},"o":{"x":[1],"y":[0]},"t":53,"s":[581]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.312],"y":[4.051]},"t":71,"s":[910]},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":80,"s":[910]},{"t":110,"s":[581]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":53,"s":[90]},{"t":71,"s":[420],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":80,"s":[420]},{"t":110,"s":[90]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":1,"k":[{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":53,"s":[90]},{"t":71,"s":[420],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":80,"s":[420]},{"t":110,"s":[90]}],"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491],[-331.5,-581],[331.5,-581],[421.5,-491],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":53,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.974,0],[0,0],[0,-49.974],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-49.974],[0,0],[49.974,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.801],[-330.951,-581.35],[330.951,-581.35],[421.5,-490.801],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":54,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.928,0],[0,0],[0,-50.928],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-50.928],[0,0],[50.928,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.171],[-329.222,-582.448],[329.222,-582.448],[421.5,-490.171],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":55,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-52.61,0],[0,0],[0,-52.61],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-52.61],[0,0],[52.61,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-489.054],[-326.174,-584.38],[326.174,-584.38],[421.5,-489.054],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":56,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-55.113,0],[0,0],[0,-55.113],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-55.113],[0,0],[55.113,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-487.386],[-321.64,-587.246],[321.64,-587.246],[421.5,-487.386],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":57,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-58.548,0],[0,0],[0,-58.548],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-58.548],[0,0],[58.548,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-485.085],[-315.415,-591.17],[315.415,-591.17],[421.5,-485.085],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":58,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-63.055,0],[0,0],[0,-63.055],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-63.055],[0,0],[63.055,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-482.052],[-307.248,-596.303],[307.248,-596.303],[421.5,-482.052],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-68.807,0],[0,0],[0,-68.807],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-68.807],[0,0],[68.807,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-478.165],[-296.826,-602.839],[296.826,-602.839],[421.5,-478.165],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-76.024,0],[0,0],[0,-76.024],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-76.024],[0,0],[76.024,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-473.276],[-283.75,-611.026],[283.75,-611.026],[421.5,-473.276],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-84.988,0],[0,0],[0,-84.988],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-84.988],[0,0],[84.988,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-467.201],[-267.508,-621.193],[267.508,-621.193],[421.5,-467.201],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-96.065,0],[0,0],[0,-96.065],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-96.065],[0,0],[96.065,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-459.73],[-247.438,-633.792],[247.438,-633.792],[421.5,-459.73],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.724,0],[0,0],[0,-109.724],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-109.724],[0,0],[109.724,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-450.661],[-222.689,-649.472],[222.689,-649.472],[421.5,-450.661],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-126.533,0],[0,0],[0,-126.533],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-126.533],[0,0],[126.533,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-439.944],[-192.233,-669.211],[192.233,-669.211],[421.5,-439.944],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-147.016,0],[0,0],[0,-147.016],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-147.016],[0,0],[147.016,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-428.221],[-155.118,-694.603],[155.118,-694.603],[421.5,-428.221],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-171.03,0],[0,0],[0,-171.03],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-171.03],[0,0],[171.03,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-418.589],[-111.608,-728.481],[111.608,-728.481],[421.5,-418.589],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-196.109,0],[0,0],[0,-196.109],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-196.109],[0,0],[196.109,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-420.983],[-66.165,-776.318],[66.165,-776.318],[421.5,-420.983],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-216.647,0],[0,0],[0,-216.647],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-216.647],[0,0],[216.647,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-451.801],[-28.952,-844.349],[28.952,-844.349],[421.5,-451.801],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-228.394,0],[0,0],[0,-228.394],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-228.394],[0,0],[228.394,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-484.12],[-7.668,-897.952],[7.668,-897.952],[421.5,-484.12],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490],[-1.5,-910],[1.5,-910],[421.5,-490],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491.387],[-1.5,-911.387],[1.5,-911.387],[421.5,-491.387],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491.633],[-1.5,-911.633],[1.5,-911.633],[421.5,-491.633],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491.036],[-1.5,-911.036],[1.5,-911.036],[421.5,-491.036],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.63],[-1.5,-910.63],[1.5,-910.63],[421.5,-490.63],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.186],[-1.5,-910.186],[1.5,-910.186],[421.5,-490.186],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490],[-1.5,-910],[1.5,-910],[421.5,-490],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.41,0],[0,0],[0,-231.41],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.41],[0,0],[231.41,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.002],[-2.203,-909.299],[2.203,-909.299],[421.5,-490.002],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-230.223,0],[0,0],[0,-230.223],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-230.223],[0,0],[230.223,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.009],[-4.354,-907.155],[4.354,-907.155],[421.5,-490.009],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-228.206,0],[0,0],[0,-228.206],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-228.206],[0,0],[228.206,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.02],[-8.008,-903.511],[8.008,-903.511],[421.5,-490.02],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-225.331,0],[0,0],[0,-225.331],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-225.331],[0,0],[225.331,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.036],[-13.218,-898.317],[13.218,-898.317],[421.5,-490.036],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-221.575,0],[0,0],[0,-221.575],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-221.575],[0,0],[221.575,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.056],[-20.023,-891.533],[20.023,-891.533],[421.5,-490.056],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-216.926,0],[0,0],[0,-216.926],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-216.926],[0,0],[216.926,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.082],[-28.448,-883.134],[28.448,-883.134],[421.5,-490.082],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-211.38,0],[0,0],[0,-211.38],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-211.38],[0,0],[211.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.112],[-38.496,-873.116],[38.496,-873.116],[421.5,-490.112],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-204.95,0],[0,0],[0,-204.95],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-204.95],[0,0],[204.95,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.147],[-50.146,-861.502],[50.146,-861.502],[421.5,-490.147],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-197.668,0],[0,0],[0,-197.668],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-197.668],[0,0],[197.668,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.187],[-63.341,-848.347],[63.341,-848.347],[421.5,-490.187],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-189.586,0],[0,0],[0,-189.586],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-189.586],[0,0],[189.586,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.232],[-77.986,-833.746],[77.986,-833.746],[421.5,-490.232],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-180.78,0],[0,0],[0,-180.78],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-180.78],[0,0],[180.78,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.28],[-93.941,-817.839],[93.941,-817.839],[421.5,-490.28],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-171.353,0],[0,0],[0,-171.353],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-171.353],[0,0],[171.353,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.332],[-111.022,-800.81],[111.022,-800.81],[421.5,-490.332],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-161.434,0],[0,0],[0,-161.434],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-161.434],[0,0],[161.434,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.386],[-128.995,-782.892],[128.995,-782.892],[421.5,-490.386],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-151.172,0],[0,0],[0,-151.172],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-151.172],[0,0],[151.172,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.443],[-147.588,-764.355],[147.588,-764.355],[421.5,-490.443],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-130.297,0],[0,0],[0,-130.297],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-130.297],[0,0],[130.297,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.557],[-185.412,-726.645],[185.412,-726.645],[421.5,-490.557],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-120.035,0],[0,0],[0,-120.035],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-120.035],[0,0],[120.035,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.614],[-204.005,-708.108],[204.005,-708.108],[421.5,-490.614],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.116,0],[0,0],[0,-110.116],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-110.116],[0,0],[110.116,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.668],[-221.978,-690.19],[221.978,-690.19],[421.5,-490.668],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-100.689,0],[0,0],[0,-100.689],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-100.689],[0,0],[100.689,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.72],[-239.059,-673.161],[239.059,-673.161],[421.5,-490.72],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-91.883,0],[0,0],[0,-91.883],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-91.883],[0,0],[91.883,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.768],[-255.014,-657.254],[255.014,-657.254],[421.5,-490.768],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-83.801,0],[0,0],[0,-83.801],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-83.801],[0,0],[83.801,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.813],[-269.659,-642.653],[269.659,-642.653],[421.5,-490.813],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-76.519,0],[0,0],[0,-76.519],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-76.519],[0,0],[76.519,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.853],[-282.854,-629.498],[282.854,-629.498],[421.5,-490.853],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-70.089,0],[0,0],[0,-70.089],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-70.089],[0,0],[70.089,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.888],[-294.504,-617.884],[294.504,-617.884],[421.5,-490.888],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-64.543,0],[0,0],[0,-64.543],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-64.543],[0,0],[64.543,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.918],[-304.552,-607.866],[304.552,-607.866],[421.5,-490.918],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-59.894,0],[0,0],[0,-59.894],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-59.894],[0,0],[59.894,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.944],[-312.977,-599.467],[312.977,-599.467],[421.5,-490.944],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-56.138,0],[0,0],[0,-56.138],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-56.138],[0,0],[56.138,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.964],[-319.782,-592.683],[319.782,-592.683],[421.5,-490.964],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-53.263,0],[0,0],[0,-53.263],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-53.263],[0,0],[53.263,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.98],[-324.992,-587.489],[324.992,-587.489],[421.5,-490.98],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.246,0],[0,0],[0,-51.246],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-51.246],[0,0],[51.246,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.991],[-328.646,-583.845],[328.646,-583.845],[421.5,-490.991],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.059,0],[0,0],[0,-50.059],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-50.059],[0,0],[50.059,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.998],[-330.797,-581.701],[330.797,-581.701],[421.5,-490.998],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491],[-331.5,-581],[331.5,-581],[421.5,-491],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.341176470588,0.780392156863,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":7,"op":82,"st":-110,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Pill to Arch | Elevation","parent":1,"tt":1,"tp":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-609,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-599,"s":[100]},{"t":0,"s":[15]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":0,"ix":3},"y":{"k":[{"s":[0],"t":53,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.35],"t":54,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-1.448],"t":55,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.38],"t":56,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-6.246],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-10.17],"t":58,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-15.303],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.839],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-30.026],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-40.193],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.792],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-68.472],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-88.211],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-113.603],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-147.481],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-195.318],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-263.349],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-316.952],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-329],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-385.283],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-416.494],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-435.864],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-449.465],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-459.751],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-467.9],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-474.564],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-480.138],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-484.877],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-488.958],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-492.507],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-495.618],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-498.362],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-500.793],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-502.957],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-504.887],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-506.614],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-508.16],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-509.547],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-510.791],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-511.906],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-512.904],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-513.798],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-514.596],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-515.306],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-515.935],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-516.49],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-516.978],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-517.401],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-517.767],"t":101,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-518.077],"t":102,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-518.55],"t":104,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},"a":{"a":0,"k":[0,-2,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue Y Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":71,"s":[0]},{"t":109,"s":[-190]}],"ix":1}}]},{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":2,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":8,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":1,"ix":3}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":24,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,23.5],[21.75,-21.75],[21.75,-66.5]],"c":false}]},{"i":{"x":0.65,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.35,"y":0},"t":49,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.35,"y":0},"t":66,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"t":75,"s":[{"i":[[0,0],[0,44.562],[0,0]],"o":[[0,0],[0,-44.396],[0,0]],"v":[[29.75,51.5],[21.75,-21.75],[29.75,-94.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.418],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.149],"y":[1]},"o":{"x":[0.529],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":67,"s":[27]},{"t":86,"s":[58],"h":1}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.77]},"o":{"x":[0.87],"y":[0.12]},"t":69,"s":[0]},{"t":83,"s":[49.5]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.77]},"o":{"x":[0.87],"y":[0.12]},"t":69,"s":[100]},{"t":83,"s":[50.5]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-465,"s":[0]},{"t":-447,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":82,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-466,"s":[0]},{"t":-456,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":0,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[1]},"t":82,"s":[162]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.18],"y":[0]},"t":120,"s":[190]},{"i":{"x":[0.7],"y":[1.01]},"o":{"x":[1],"y":[0]},"t":201,"s":[190]},{"t":221,"s":[200]}],"ix":4}},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.22,"y":1},"o":{"x":0.18,"y":1},"t":82,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-162.25,-21],[-162.25,-21]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.48,"y":0},"t":110,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.437]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":120,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.437]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":137,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.25]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":151,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.437]],"c":false}]},{"i":{"x":0.33,"y":1},"o":{"x":1,"y":0},"t":154,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.437]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.55,"y":0},"t":171,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.25]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":1,"y":0},"t":185,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-257.375,-41.562]],"c":false}]},{"i":{"x":0.47,"y":1},"o":{"x":0.34,"y":0},"t":201,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-272.375,-37.562]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":241,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.25]],"c":false}]},{"t":291,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-67.25]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[0.9]},"t":82,"s":[54]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":106,"s":[64]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":136,"s":[52]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":221,"s":[52]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":241,"s":[50]},{"t":291,"s":[52]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-322,"s":[0]},{"t":-304,"s":[90]}],"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":"Right","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-162.25,-21],[-162.25,-21]],"c":false}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-171.218,-21.242],[-162.226,-24.963]],"c":false}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-179.437,-21.465],[-162.204,-28.595]],"c":false}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-186.429,-21.654],[-162.185,-31.685]],"c":false}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-191.962,-21.803],[-162.17,-34.13]],"c":false}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-196.133,-21.916],[-162.158,-35.972]],"c":false}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-199.213,-21.999],[-162.15,-37.334]],"c":false}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-201.485,-22.06],[-162.144,-38.338]],"c":false}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-203.175,-22.106],[-162.139,-39.084]],"c":false}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-204.445,-22.14],[-162.136,-39.645]],"c":false}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-205.408,-22.166],[-162.133,-40.071]],"c":false}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-206.145,-22.186],[-162.131,-40.397]],"c":false}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-206.712,-22.202],[-162.13,-40.647]],"c":false}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.15,-22.214],[-162.129,-40.841]],"c":false}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.489,-22.223],[-162.128,-40.991]],"c":false}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.75,-22.23],[-162.127,-41.106]],"c":false}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.952,-22.235],[-162.127,-41.195]],"c":false}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.106,-22.239],[-162.126,-41.263]],"c":false}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.223,-22.243],[-162.126,-41.315]],"c":false}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.31,-22.245],[-162.126,-41.354]],"c":false}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.374,-22.247],[-162.125,-41.382]],"c":false}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.453,-22.249],[-162.125,-41.417]],"c":false}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.418]],"c":false}],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.358]],"c":false}],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.252]],"c":false}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.094]],"c":false}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-40.877]],"c":false}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-40.59]],"c":false}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-40.224]],"c":false}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-39.761]],"c":false}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-39.181]],"c":false}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-38.454]],"c":false}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-37.534]],"c":false}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-36.35]],"c":false}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-34.776]],"c":false}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-32.559]],"c":false}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-29.136]],"c":false}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-24.536]],"c":false}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.25]],"c":false}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.437]],"c":false}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.414]],"c":false}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.338]],"c":false}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.199]],"c":false}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-40.983]],"c":false}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-40.668]],"c":false}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-40.224]],"c":false}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-39.598]],"c":false}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-38.698]],"c":false}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-37.322]],"c":false}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-34.857]],"c":false}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-28.947]],"c":false}],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-25.094]],"c":false}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-23.637]],"c":false}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.895]],"c":false}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.497]],"c":false}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.305]],"c":false}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.25]],"c":false}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.753,-22.377]],"c":false}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-165.208,-22.875]],"c":false}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-171.361,-24.123]],"c":false}],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-188.488,-27.595]],"c":false}],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-219.099,-33.802]],"c":false}],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-234.244,-36.873]],"c":false}],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-242.564,-38.559]],"c":false}],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-247.877,-39.637]],"c":false}],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-251.472,-40.366]],"c":false}],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-253.937,-40.865]],"c":false}],"t":181,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-255.594,-41.201]],"c":false}],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-256.64,-41.413]],"c":false}],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-257.203,-41.528]],"c":false}],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.455,-22.25],[-257.459,-41.54]],"c":false}],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.395,-22.25],[-257.572,-41.51]],"c":false}],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.305,-22.25],[-257.74,-41.465]],"c":false}],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.181,-22.25],[-257.973,-41.403]],"c":false}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.018,-22.25],[-258.279,-41.321]],"c":false}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.808,-22.25],[-258.673,-41.216]],"c":false}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.541,-22.25],[-259.174,-41.083]],"c":false}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.203,-22.25],[-259.806,-40.914]],"c":false}],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-206.776,-22.25],[-260.608,-40.7]],"c":false}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-206.227,-22.25],[-261.637,-40.426]],"c":false}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-205.502,-22.25],[-262.996,-40.064]],"c":false}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-204.5,-22.25],[-264.875,-39.562]],"c":false}],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-203.002,-22.25],[-267.683,-38.814]],"c":false}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-201.093,-22.25],[-271.264,-37.859]],"c":false}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-272.375,-37.562]],"c":false}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-272.244,-37.534]],"c":false}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-271.843,-37.449]],"c":false}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-271.165,-37.305]],"c":false}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-270.202,-37.1]],"c":false}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-268.952,-36.833]],"c":false}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-267.415,-36.506]],"c":false}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-265.596,-36.118]],"c":false}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-263.505,-35.673]],"c":false}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-261.16,-35.173]],"c":false}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-258.583,-34.624]],"c":false}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-255.802,-34.032]],"c":false}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-252.851,-33.403]],"c":false}],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-249.768,-32.746]],"c":false}],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-246.593,-32.07]],"c":false}],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-243.367,-31.382]],"c":false}],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-240.129,-30.693]],"c":false}],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-236.915,-30.008]],"c":false}],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-233.76,-29.336]],"c":false}],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-230.692,-28.682]],"c":false}],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-227.734,-28.052]],"c":false}],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-224.906,-27.449]],"c":false}],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-222.222,-26.878]],"c":false}],"t":223,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-219.692,-26.339]],"c":false}],"t":224,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-217.325,-25.834]],"c":false}],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-215.123,-25.365]],"c":false}],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-213.089,-24.932]],"c":false}],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-211.222,-24.534]],"c":false}],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-209.521,-24.172]],"c":false}],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-207.982,-23.844]],"c":false}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-206.602,-23.55]],"c":false}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-205.377,-23.289]],"c":false}],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-204.302,-23.06]],"c":false}],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-203.371,-22.862]],"c":false}],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-202.581,-22.693]],"c":false}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-201.926,-22.554]],"c":false}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-201.4,-22.442]],"c":false}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.999,-22.356]],"c":false}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.719,-22.297]],"c":false}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.554,-22.262]],"c":false}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.258]],"c":false}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.282]],"c":false}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.323]],"c":false}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.382]],"c":false}],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.46]],"c":false}],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.558]],"c":false}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.677]],"c":false}],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.819]],"c":false}],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.984]],"c":false}],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-23.174]],"c":false}],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-23.391]],"c":false}],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-23.637]],"c":false}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-23.913]],"c":false}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-24.223]],"c":false}],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-24.568]],"c":false}],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-24.951]],"c":false}],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-25.376]],"c":false}],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-25.846]],"c":false}],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-26.366]],"c":false}],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-26.94]],"c":false}],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-27.574]],"c":false}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-28.274]],"c":false}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-29.049]],"c":false}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-29.907]],"c":false}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-30.859]],"c":false}],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-31.918]],"c":false}],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-33.101]],"c":false}],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-34.425]],"c":false}],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-35.914]],"c":false}],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-37.595]],"c":false}],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-39.5]],"c":false}],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-41.659]],"c":false}],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-44.097]],"c":false}],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-46.807]],"c":false}],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-49.72]],"c":false}],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-52.682]],"c":false}],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-55.485]],"c":false}],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-57.961]],"c":false}],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-60.044]],"c":false}],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-61.745]],"c":false}],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-63.113]],"c":false}],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-64.205]],"c":false}],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-65.068]],"c":false}],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-65.743]],"c":false}],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-66.262]],"c":false}],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-66.651]],"c":false}],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-66.93]],"c":false}],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-67.114]],"c":false}],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-67.218]],"c":false}],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[54],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.043],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.904],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.441],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.61],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.465],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.085],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.541],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.882],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.14],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.338],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.492],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.612],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.706],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.78],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.838],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.883],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.945],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.932],"t":109,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.876],"t":110,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.8],"t":111,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.703],"t":112,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.582],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.435],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.259],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.049],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.802],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.512],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.171],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.773],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.307],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.76],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.117],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.363],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.485],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.487],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.408],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.337],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.382],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.607],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.021],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.599],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.31],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.128],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.03],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52],"t":221,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.963],"t":222,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.888],"t":223,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.796],"t":224,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.694],"t":225,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.586],"t":226,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.473],"t":227,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.357],"t":228,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.239],"t":229,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.12],"t":230,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.88],"t":232,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.761],"t":233,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.643],"t":234,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.527],"t":235,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.414],"t":236,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.306],"t":237,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.204],"t":238,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.112],"t":239,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.037],"t":240,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.074],"t":254,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.12],"t":257,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.16],"t":259,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.208],"t":261,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.237],"t":262,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.268],"t":263,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.302],"t":264,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.34],"t":265,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.383],"t":266,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.43],"t":267,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.482],"t":268,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.541],"t":269,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.607],"t":270,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.682],"t":271,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.767],"t":272,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.863],"t":273,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.971],"t":274,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.091],"t":275,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.221],"t":276,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.353],"t":277,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.477],"t":278,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.587],"t":279,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.68],"t":280,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.755],"t":281,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.816],"t":282,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.865],"t":283,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.903],"t":284,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.933],"t":285,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.973],"t":287,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":1,"k":[{"t":-467,"s":[0],"h":1},{"t":-304,"s":[100],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","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":1,"k":[{"i":{"x":0.22,"y":1},"o":{"x":0.001,"y":0.98},"t":82,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.862,-261.879],[0.055,-282.955],[11.354,-261.879]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.18,"y":0},"t":110,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.915,-246.504],[0.001,-267.58],[11.3,-246.504]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":120,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.915,-246.504],[0.001,-267.58],[11.3,-246.504]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":137,"s":[{"i":[[4.907,-3.179],[-12.215,0],[3.984,2.581]],"o":[[-4.447,2.881],[11.035,0],[-4.907,-3.179]],"v":[[-7.665,-246.504],[-0.083,-267.58],[7.766,-246.504]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":151,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.915,-246.504],[0.001,-267.58],[11.3,-246.504]],"c":true}]},{"i":{"x":0.33,"y":1},"o":{"x":1,"y":0},"t":154,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.915,-246.504],[0.001,-267.58],[11.3,-246.504]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.55,"y":0},"t":171,"s":[{"i":[[4.907,-3.179],[-12.215,0],[3.984,2.581]],"o":[[-4.447,2.881],[11.035,0],[-4.907,-3.179]],"v":[[-7.665,-246.504],[-0.083,-267.58],[7.766,-246.504]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":1,"y":0},"t":185,"s":[{"i":[[7.064,3.179],[-17.586,0],[5.736,-2.581]],"o":[[-6.403,-2.881],[15.887,0],[-7.064,3.179]],"v":[[-10.865,-389.406],[0.052,-368.33],[11.351,-389.406]],"c":true}]},{"i":{"x":0.47,"y":1},"o":{"x":0.34,"y":0},"t":201,"s":[{"i":[[5.881,3.179],[-14.64,0],[4.775,-2.581]],"o":[[-5.33,-2.881],[13.225,0],[-5.881,3.179]],"v":[[-9.107,-406.156],[-0.02,-385.08],[9.387,-406.156]],"c":true}]},{"t":241,"s":[{"i":[[4.598,3.179],[-11.448,0],[3.734,-2.581]],"o":[[-4.168,-2.881],[10.342,0],[-4.598,3.179]],"v":[[-7.195,-320.656],[-0.089,-299.58],[7.266,-320.656]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.66,"y":1},"o":{"x":0.64,"y":0},"t":120,"s":[0,92],"to":[0,0],"ti":[0,0]},{"i":{"x":0.48,"y":1},"o":{"x":0.55,"y":0},"t":137,"s":[0,82],"to":[0,0],"ti":[0,0]},{"i":{"x":0.48,"y":0.48},"o":{"x":0.167,"y":0.167},"t":151,"s":[0,87],"to":[0,0],"ti":[0,0]},{"i":{"x":0.66,"y":1},"o":{"x":0.167,"y":0.167},"t":154,"s":[0,87],"to":[0,0],"ti":[0,0]},{"i":{"x":0.48,"y":1},"o":{"x":0.55,"y":0},"t":171,"s":[0,85],"to":[0,0],"ti":[0,0]},{"t":185,"s":[0,87]}],"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":"Bottom Rounding","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":82,"op":241,"st":-467,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":241,"s":[100]},{"t":247,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":241,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"t":291,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[45,-21.75],[-45,-21.75]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":52,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"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":"Right","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,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":64,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":0,"k":0,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":241,"op":365,"st":241,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".onSurfaceHome","cl":"onSurfaceHome","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":19,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":31,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":49,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":71,"s":[100]},{"t":80,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,1238,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":843,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[1]},"o":{"x":[1],"y":[0]},"t":53,"s":[581]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.312],"y":[4.051]},"t":71,"s":[910]},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":80,"s":[910]},{"t":110,"s":[581]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":53,"s":[90]},{"t":71,"s":[420],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":80,"s":[420]},{"t":110,"s":[90]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":1,"k":[{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":53,"s":[90]},{"t":71,"s":[420],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":80,"s":[420]},{"t":110,"s":[90]}],"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491],[-331.5,-581],[331.5,-581],[421.5,-491],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":53,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.974,0],[0,0],[0,-49.974],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-49.974],[0,0],[49.974,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.801],[-330.951,-581.35],[330.951,-581.35],[421.5,-490.801],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":54,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.928,0],[0,0],[0,-50.928],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-50.928],[0,0],[50.928,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.171],[-329.222,-582.448],[329.222,-582.448],[421.5,-490.171],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":55,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-52.61,0],[0,0],[0,-52.61],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-52.61],[0,0],[52.61,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-489.054],[-326.174,-584.38],[326.174,-584.38],[421.5,-489.054],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":56,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-55.113,0],[0,0],[0,-55.113],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-55.113],[0,0],[55.113,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-487.386],[-321.64,-587.246],[321.64,-587.246],[421.5,-487.386],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":57,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-58.548,0],[0,0],[0,-58.548],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-58.548],[0,0],[58.548,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-485.085],[-315.415,-591.17],[315.415,-591.17],[421.5,-485.085],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":58,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-63.055,0],[0,0],[0,-63.055],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-63.055],[0,0],[63.055,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-482.052],[-307.248,-596.303],[307.248,-596.303],[421.5,-482.052],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-68.807,0],[0,0],[0,-68.807],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-68.807],[0,0],[68.807,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-478.165],[-296.826,-602.839],[296.826,-602.839],[421.5,-478.165],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-76.024,0],[0,0],[0,-76.024],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-76.024],[0,0],[76.024,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-473.276],[-283.75,-611.026],[283.75,-611.026],[421.5,-473.276],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-84.988,0],[0,0],[0,-84.988],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-84.988],[0,0],[84.988,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-467.201],[-267.508,-621.193],[267.508,-621.193],[421.5,-467.201],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-96.065,0],[0,0],[0,-96.065],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-96.065],[0,0],[96.065,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-459.73],[-247.438,-633.792],[247.438,-633.792],[421.5,-459.73],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.724,0],[0,0],[0,-109.724],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-109.724],[0,0],[109.724,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-450.661],[-222.689,-649.472],[222.689,-649.472],[421.5,-450.661],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-126.533,0],[0,0],[0,-126.533],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-126.533],[0,0],[126.533,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-439.944],[-192.233,-669.211],[192.233,-669.211],[421.5,-439.944],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-147.016,0],[0,0],[0,-147.016],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-147.016],[0,0],[147.016,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-428.221],[-155.118,-694.603],[155.118,-694.603],[421.5,-428.221],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-171.03,0],[0,0],[0,-171.03],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-171.03],[0,0],[171.03,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-418.589],[-111.608,-728.481],[111.608,-728.481],[421.5,-418.589],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-196.109,0],[0,0],[0,-196.109],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-196.109],[0,0],[196.109,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-420.983],[-66.165,-776.318],[66.165,-776.318],[421.5,-420.983],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-216.647,0],[0,0],[0,-216.647],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-216.647],[0,0],[216.647,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-451.801],[-28.952,-844.349],[28.952,-844.349],[421.5,-451.801],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-228.394,0],[0,0],[0,-228.394],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-228.394],[0,0],[228.394,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-484.12],[-7.668,-897.952],[7.668,-897.952],[421.5,-484.12],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490],[-1.5,-910],[1.5,-910],[421.5,-490],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491.387],[-1.5,-911.387],[1.5,-911.387],[421.5,-491.387],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491.633],[-1.5,-911.633],[1.5,-911.633],[421.5,-491.633],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491.036],[-1.5,-911.036],[1.5,-911.036],[421.5,-491.036],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.63],[-1.5,-910.63],[1.5,-910.63],[421.5,-490.63],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.186],[-1.5,-910.186],[1.5,-910.186],[421.5,-490.186],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490],[-1.5,-910],[1.5,-910],[421.5,-490],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.41,0],[0,0],[0,-231.41],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.41],[0,0],[231.41,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.002],[-2.203,-909.299],[2.203,-909.299],[421.5,-490.002],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-230.223,0],[0,0],[0,-230.223],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-230.223],[0,0],[230.223,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.009],[-4.354,-907.155],[4.354,-907.155],[421.5,-490.009],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-228.206,0],[0,0],[0,-228.206],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-228.206],[0,0],[228.206,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.02],[-8.008,-903.511],[8.008,-903.511],[421.5,-490.02],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-225.331,0],[0,0],[0,-225.331],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-225.331],[0,0],[225.331,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.036],[-13.218,-898.317],[13.218,-898.317],[421.5,-490.036],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-221.575,0],[0,0],[0,-221.575],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-221.575],[0,0],[221.575,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.056],[-20.023,-891.533],[20.023,-891.533],[421.5,-490.056],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-216.926,0],[0,0],[0,-216.926],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-216.926],[0,0],[216.926,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.082],[-28.448,-883.134],[28.448,-883.134],[421.5,-490.082],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-211.38,0],[0,0],[0,-211.38],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-211.38],[0,0],[211.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.112],[-38.496,-873.116],[38.496,-873.116],[421.5,-490.112],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-204.95,0],[0,0],[0,-204.95],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-204.95],[0,0],[204.95,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.147],[-50.146,-861.502],[50.146,-861.502],[421.5,-490.147],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-197.668,0],[0,0],[0,-197.668],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-197.668],[0,0],[197.668,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.187],[-63.341,-848.347],[63.341,-848.347],[421.5,-490.187],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-189.586,0],[0,0],[0,-189.586],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-189.586],[0,0],[189.586,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.232],[-77.986,-833.746],[77.986,-833.746],[421.5,-490.232],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-180.78,0],[0,0],[0,-180.78],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-180.78],[0,0],[180.78,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.28],[-93.941,-817.839],[93.941,-817.839],[421.5,-490.28],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-171.353,0],[0,0],[0,-171.353],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-171.353],[0,0],[171.353,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.332],[-111.022,-800.81],[111.022,-800.81],[421.5,-490.332],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-161.434,0],[0,0],[0,-161.434],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-161.434],[0,0],[161.434,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.386],[-128.995,-782.892],[128.995,-782.892],[421.5,-490.386],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-151.172,0],[0,0],[0,-151.172],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-151.172],[0,0],[151.172,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.443],[-147.588,-764.355],[147.588,-764.355],[421.5,-490.443],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-130.297,0],[0,0],[0,-130.297],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-130.297],[0,0],[130.297,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.557],[-185.412,-726.645],[185.412,-726.645],[421.5,-490.557],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-120.035,0],[0,0],[0,-120.035],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-120.035],[0,0],[120.035,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.614],[-204.005,-708.108],[204.005,-708.108],[421.5,-490.614],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.116,0],[0,0],[0,-110.116],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-110.116],[0,0],[110.116,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.668],[-221.978,-690.19],[221.978,-690.19],[421.5,-490.668],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-100.689,0],[0,0],[0,-100.689],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-100.689],[0,0],[100.689,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.72],[-239.059,-673.161],[239.059,-673.161],[421.5,-490.72],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-91.883,0],[0,0],[0,-91.883],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-91.883],[0,0],[91.883,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.768],[-255.014,-657.254],[255.014,-657.254],[421.5,-490.768],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-83.801,0],[0,0],[0,-83.801],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-83.801],[0,0],[83.801,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.813],[-269.659,-642.653],[269.659,-642.653],[421.5,-490.813],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-76.519,0],[0,0],[0,-76.519],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-76.519],[0,0],[76.519,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.853],[-282.854,-629.498],[282.854,-629.498],[421.5,-490.853],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-70.089,0],[0,0],[0,-70.089],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-70.089],[0,0],[70.089,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.888],[-294.504,-617.884],[294.504,-617.884],[421.5,-490.888],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-64.543,0],[0,0],[0,-64.543],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-64.543],[0,0],[64.543,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.918],[-304.552,-607.866],[304.552,-607.866],[421.5,-490.918],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-59.894,0],[0,0],[0,-59.894],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-59.894],[0,0],[59.894,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.944],[-312.977,-599.467],[312.977,-599.467],[421.5,-490.944],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-56.138,0],[0,0],[0,-56.138],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-56.138],[0,0],[56.138,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.964],[-319.782,-592.683],[319.782,-592.683],[421.5,-490.964],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-53.263,0],[0,0],[0,-53.263],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-53.263],[0,0],[53.263,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.98],[-324.992,-587.489],[324.992,-587.489],[421.5,-490.98],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.246,0],[0,0],[0,-51.246],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-51.246],[0,0],[51.246,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.991],[-328.646,-583.845],[328.646,-583.845],[421.5,-490.991],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.059,0],[0,0],[0,-50.059],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-50.059],[0,0],[50.059,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.998],[-330.797,-581.701],[330.797,-581.701],[421.5,-490.998],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491],[-331.5,-581],[331.5,-581],[421.5,-491],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.925,0.753,0.424,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.925,0.753,0.424,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":7,"op":110,"st":-110,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".onSurfaceHome","cl":"onSurfaceHome","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":70,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":71,"s":[95]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,1185,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":843,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.323]},"t":71,"s":[857]},{"t":109,"s":[1144]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":0,"k":420,"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":0,"k":420,"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]},{"ty":5,"nm":"Transform","np":14,"mn":"ADBE Geometry2","ix":2,"en":1,"ef":[{"ty":3,"nm":"Anchor Point","mn":"ADBE Geometry2-0001","ix":1,"v":{"a":0,"k":[420.5,350.5],"ix":1}},{"ty":3,"nm":"Position","mn":"ADBE Geometry2-0002","ix":2,"v":{"a":0,"k":[420.5,350.5],"ix":2}},{"ty":7,"nm":"Uniform Scale","mn":"ADBE Geometry2-0011","ix":3,"v":{"a":0,"k":1,"ix":3}},{"ty":0,"nm":"Scale Height","mn":"ADBE Geometry2-0003","ix":4,"v":{"a":0,"k":100,"ix":4}},{"ty":0,"nm":"Scale Width","mn":"ADBE Geometry2-0004","ix":5,"v":{"a":0,"k":100,"ix":5}},{"ty":0,"nm":"Skew","mn":"ADBE Geometry2-0005","ix":6,"v":{"a":0,"k":0,"ix":6}},{"ty":0,"nm":"Skew Axis","mn":"ADBE Geometry2-0006","ix":7,"v":{"a":0,"k":0,"ix":7}},{"ty":0,"nm":"Rotation","mn":"ADBE Geometry2-0007","ix":8,"v":{"a":0,"k":0,"ix":8}},{"ty":0,"nm":"Opacity","mn":"ADBE Geometry2-0008","ix":9,"v":{"a":0,"k":50,"ix":9}},{"ty":7,"nm":"Use Composition’s Shutter Angle","mn":"ADBE Geometry2-0009","ix":10,"v":{"a":0,"k":1,"ix":10}},{"ty":0,"nm":"Shutter Angle","mn":"ADBE Geometry2-0010","ix":11,"v":{"a":0,"k":0,"ix":11}},{"ty":7,"nm":"Sampling","mn":"ADBE Geometry2-0012","ix":12,"v":{"a":0,"k":1,"ix":12}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-437],[-1.5,-857],[1.5,-857],[421.5,-437],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-486.207],[-1.5,-906.207],[1.5,-906.207],[421.5,-486.207],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-523.23],[-1.5,-943.23],[1.5,-943.23],[421.5,-523.23],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-550.406],[-1.5,-970.406],[1.5,-970.406],[421.5,-550.406],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-571.703],[-1.5,-991.703],[1.5,-991.703],[421.5,-571.703],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-589.169],[-1.5,-1009.169],[1.5,-1009.169],[421.5,-589.169],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-603.929],[-1.5,-1023.929],[1.5,-1023.929],[421.5,-603.929],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-616.661],[-1.5,-1036.661],[1.5,-1036.661],[421.5,-616.661],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-627.808],[-1.5,-1047.808],[1.5,-1047.808],[421.5,-627.808],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-637.673],[-1.5,-1057.673],[1.5,-1057.673],[421.5,-637.673],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-646.477],[-1.5,-1066.477],[1.5,-1066.477],[421.5,-646.477],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-654.383],[-1.5,-1074.383],[1.5,-1074.383],[421.5,-654.383],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-661.519],[-1.5,-1081.519],[1.5,-1081.519],[421.5,-661.519],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-667.983],[-1.5,-1087.983],[1.5,-1087.983],[421.5,-667.983],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-673.857],[-1.5,-1093.857],[1.5,-1093.857],[421.5,-673.857],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-679.204],[-1.5,-1099.204],[1.5,-1099.204],[421.5,-679.204],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-684.081],[-1.5,-1104.081],[1.5,-1104.081],[421.5,-684.081],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-688.532],[-1.5,-1108.532],[1.5,-1108.532],[421.5,-688.532],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-692.596],[-1.5,-1112.596],[1.5,-1112.596],[421.5,-692.596],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-696.306],[-1.5,-1116.306],[1.5,-1116.306],[421.5,-696.306],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-699.692],[-1.5,-1119.692],[1.5,-1119.692],[421.5,-699.692],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-702.779],[-1.5,-1122.779],[1.5,-1122.779],[421.5,-702.779],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-705.587],[-1.5,-1125.587],[1.5,-1125.587],[421.5,-705.587],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-708.138],[-1.5,-1128.138],[1.5,-1128.138],[421.5,-708.138],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-710.448],[-1.5,-1130.448],[1.5,-1130.448],[421.5,-710.448],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-712.532],[-1.5,-1132.532],[1.5,-1132.532],[421.5,-712.532],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-714.405],[-1.5,-1134.405],[1.5,-1134.405],[421.5,-714.405],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-716.079],[-1.5,-1136.079],[1.5,-1136.079],[421.5,-716.079],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-717.566],[-1.5,-1137.566],[1.5,-1137.566],[421.5,-717.566],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-718.875],[-1.5,-1138.875],[1.5,-1138.875],[421.5,-718.875],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-720.016],[-1.5,-1140.016],[1.5,-1140.016],[421.5,-720.016],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-720.998],[-1.5,-1140.998],[1.5,-1140.998],[421.5,-720.998],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-721.829],[-1.5,-1141.829],[1.5,-1141.829],[421.5,-721.829],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-722.515],[-1.5,-1142.515],[1.5,-1142.515],[421.5,-722.515],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-723.063],[-1.5,-1143.063],[1.5,-1143.063],[421.5,-723.063],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-723.773],[-1.5,-1143.772],[1.5,-1143.772],[421.5,-723.773],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.925,0.753,0.424,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.925,0.753,0.424,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":70,"op":109,"st":-110,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".surfaceHome","cl":"surfaceHome","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":420.5,"ix":3},"y":{"a":0,"k":350.5,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[841,701],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.365,0.259,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.365,0.259,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Volume","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":395,"st":0,"ct":1,"bm":0}]},{"id":"comp_1","nm":"Part02_Charade_Home_FO_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Secondary Y Movement","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":420.5,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":38,"s":[616.709]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":40.334,"s":[623.909]},{"t":52,"s":[616.709]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":467,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"MASTER Y POSITION","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":0,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":-34,"s":[-52.709]},{"i":{"x":[0.426],"y":[0.38]},"o":{"x":[0.48],"y":[0.051]},"t":0,"s":[-97.709]},{"i":{"x":[0.633],"y":[1]},"o":{"x":[0.654],"y":[-0.375]},"t":23,"s":[-103.709]},{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":38,"s":[-92.709]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":44.666,"s":[-50.709]},{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.52],"y":[0]},"t":78,"s":[12.291]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":109,"s":[-7.709]},{"i":{"x":[0.8],"y":[0.764]},"o":{"x":[0.3],"y":[0]},"t":118,"s":[-7.709]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":128,"s":[64.291]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.78],"y":[0]},"t":143,"s":[46.291]},{"i":{"x":[0.8],"y":[0.528]},"o":{"x":[0.3],"y":[0]},"t":145,"s":[46.291]},{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[1]},"t":155,"s":[64.291]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":184,"s":[-7.709]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.52],"y":[0]},"t":195,"s":[-7.709]},{"i":{"x":[0.428],"y":[1]},"o":{"x":[0.681],"y":[0]},"t":235,"s":[-261.709]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":290,"s":[-71.709]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.52],"y":[0]},"t":294,"s":[-71.709]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":334,"s":[-261.709]},{"i":{"x":[0.473],"y":[1.533]},"o":{"x":[0.63],"y":[0]},"t":343,"s":[-261.709]},{"i":{"x":[0.105],"y":[1]},"o":{"x":[0.497],"y":[-0.207]},"t":406,"s":[-157.709]},{"t":466,"s":[62.291]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":467,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".onSurfaceHome","cl":"onSurfaceHome","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":60,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":72,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":84,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":96,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":108,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":162,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":174,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":186,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":198,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":210,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":264,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":276,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":288,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":300,"s":[100]},{"t":312,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,1238,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":843,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":0,"k":581,"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":0,"k":90,"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":0,"k":90,"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491],[-331.5,-581],[331.5,-581],[421.5,-491],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491],[-331.5,-581],[331.5,-581],[421.5,-491],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.925,0.753,0.424,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.925,0.753,0.424,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":312,"st":-205,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-144,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-134,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":549,"s":[100]},{"t":555,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.108},"t":426,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":465,"s":[0,-10.9,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":406,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[55.625,-40.25]],"c":false}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":426,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-36.75]],"c":false}]},{"t":465,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.83],"y":[0.83]},"o":{"x":[0.44],"y":[0]},"t":406,"s":[54]},{"t":426,"s":[58]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":18,"s":[90]}],"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":"Right","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[55.625,-40.25]],"c":false}],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[55.461,-40.238]],"c":false}],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[54.979,-40.201]],"c":false}],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[54.191,-40.142]],"c":false}],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[53.112,-40.06]],"c":false}],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[51.754,-39.958]],"c":false}],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[50.13,-39.835]],"c":false}],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[48.251,-39.693]],"c":false}],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[46.13,-39.533]],"c":false}],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[43.779,-39.356]],"c":false}],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[41.212,-39.162]],"c":false}],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[38.443,-38.953]],"c":false}],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[35.488,-38.73]],"c":false}],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[32.365,-38.494]],"c":false}],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[29.095,-38.248]],"c":false}],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[25.705,-37.992]],"c":false}],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[22.232,-37.73]],"c":false}],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[18.728,-37.465]],"c":false}],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[15.275,-37.205]],"c":false}],"t":424,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[12.014,-36.959]],"c":false}],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-36.75]],"c":false}],"t":426,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-36.245]],"c":false}],"t":427,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-35.487]],"c":false}],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-34.479]],"c":false}],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-33.307]],"c":false}],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-32.102]],"c":false}],"t":431,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-30.966]],"c":false}],"t":432,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-29.94]],"c":false}],"t":433,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-29.029]],"c":false}],"t":434,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-28.223]],"c":false}],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-27.508]],"c":false}],"t":436,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-26.872]],"c":false}],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-26.304]],"c":false}],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-25.794]],"c":false}],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-25.335]],"c":false}],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-24.92]],"c":false}],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-24.545]],"c":false}],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-24.205]],"c":false}],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.896]],"c":false}],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.615]],"c":false}],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.36]],"c":false}],"t":446,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.129]],"c":false}],"t":447,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.918]],"c":false}],"t":448,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.728]],"c":false}],"t":449,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.555]],"c":false}],"t":450,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.4]],"c":false}],"t":451,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.26]],"c":false}],"t":452,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.135]],"c":false}],"t":453,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.023]],"c":false}],"t":454,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.924]],"c":false}],"t":455,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.837]],"c":false}],"t":456,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.762]],"c":false}],"t":457,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.697]],"c":false}],"t":458,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.642]],"c":false}],"t":459,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.597]],"c":false}],"t":460,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.561]],"c":false}],"t":461,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.534]],"c":false}],"t":462,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.515]],"c":false}],"t":463,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[54.014],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.056],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.123],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.216],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.333],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.474],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.636],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.819],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.022],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.244],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.483],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.738],"t":418,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.008],"t":419,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.291],"t":420,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.584],"t":421,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.883],"t":422,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.185],"t":423,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.482],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.763],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58],"t":426,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":1,"k":[{"t":-145,"s":[0],"h":1},{"t":18,"s":[100],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","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":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":406,"s":[{"i":[[6.167,-3.179],[-15.352,0],[5.008,2.581]],"o":[[-5.59,2.881],[13.869,0],[-6.167,-3.179]],"v":[[-9.526,-79.571],[0.604,-100.669],[9.867,-79.571]],"c":true}]},{"t":426,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.895,-79.571],[0.709,-100.669],[11.321,-79.571]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.765,"y":0.675},"o":{"x":0.399,"y":0},"t":406,"s":[0,139],"to":[0,0],"ti":[0,0]},{"i":{"x":0.24,"y":1},"o":{"x":0.4,"y":0.441},"t":424,"s":[0,101],"to":[0,0],"ti":[0,0]},{"t":427,"s":[0,93]}],"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":3,"mn":"ADBE Vector Group","hd":false}],"ip":406,"op":466,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-6,"s":[100]},{"t":5,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.033,-21.75],[-55.984,-40.016]],"c":false}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.198,-21.75],[-50.169,-39.599]],"c":false}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-5.356,-21.75],[-37.325,-38.678]],"c":false}],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.425,-21.75],[-16.892,-37.213]],"c":false}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.467,-21.75],[3.272,-35.766]],"c":false}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[2.584,-21.75],[18.031,-34.708]],"c":false}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.048,-21.75],[28.237,-33.976]],"c":false}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5.064,-21.75],[35.32,-33.468]],"c":false}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5.767,-21.75],[40.22,-33.116]],"c":false}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.241,-21.75],[43.523,-32.88]],"c":false}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.54,-21.75],[45.607,-32.73]],"c":false}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.701,-21.75],[46.73,-32.65]],"c":false}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[47.072,-32.625]],"c":false}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[49.587,-33.707]],"c":false}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[54.144,-35.668]],"c":false}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[57.197,-36.982]],"c":false}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[59.162,-37.828]],"c":false}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[60.549,-38.425]],"c":false}],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[61.581,-38.869]],"c":false}],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[62.369,-39.208]],"c":false}],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[62.978,-39.47]],"c":false}],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[63.45,-39.673]],"c":false}],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[63.811,-39.829]],"c":false}],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.082,-39.945]],"c":false}],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.276,-40.028]],"c":false}],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.405,-40.084]],"c":false}],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.477,-40.115]],"c":false}],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","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":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":195,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}]},{"i":{"x":0.01,"y":1},"o":{"x":0.167,"y":0.167},"t":208,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[47.072,-32.625]],"c":false}]},{"t":223,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.5,-40.125]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":200,"op":221,"st":-6,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-145,"s":[100]},{"t":-134,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.625,-45.75]],"c":false}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.725,-44.786]],"c":false}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.906,-43.051]],"c":false}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.119,-41.012]],"c":false}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.349,-38.801]],"c":false}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.591,-36.476]],"c":false}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.841,-34.073]],"c":false}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.097,-31.615]],"c":false}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.357,-29.121]],"c":false}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.618,-26.612]],"c":false}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.878,-24.121]],"c":false}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.125,-21.75]],"c":false}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.021,-24.795]],"c":false}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.846,-29.943]],"c":false}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.74,-33.077]],"c":false}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.672,-35.065]],"c":false}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.625,-36.457]],"c":false}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.59,-37.483]],"c":false}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.564,-38.258]],"c":false}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.543,-38.847]],"c":false}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.528,-39.292]],"c":false}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.517,-39.621]],"c":false}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.509,-39.856]],"c":false}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.504,-40.011]],"c":false}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.501,-40.098]],"c":false}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.048]],"c":false}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-39.825]],"c":false}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-39.469]],"c":false}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-38.991]],"c":false}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-38.401]],"c":false}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-37.708]],"c":false}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-36.919]],"c":false}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-36.042]],"c":false}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-35.084]],"c":false}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-34.051]],"c":false}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-32.951]],"c":false}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-31.79]],"c":false}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-30.576]],"c":false}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-29.316]],"c":false}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-28.021]],"c":false}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-26.701]],"c":false}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-25.375]],"c":false}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-24.067]],"c":false}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-22.825]],"c":false}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-21.75]],"c":false}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.38,-24.323]],"c":false}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.199,-28.188]],"c":false}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.031,-31.777]],"c":false}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.898,-34.618]],"c":false}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.795,-36.811]],"c":false}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.716,-38.509]],"c":false}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.654,-39.829]],"c":false}],"t":111,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.606,-40.851]],"c":false}],"t":112,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.57,-41.634]],"c":false}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.542,-42.22]],"c":false}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.523,-42.64]],"c":false}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.51,-42.919]],"c":false}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.502,-43.076]],"c":false}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.5,-43.125]],"c":false}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","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":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.17,"y":0},"t":59,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.625,-45.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":70,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.125,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":84,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0.167},"t":104,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-21.75]],"c":false}]},{"t":118,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.5,-43.125]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","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":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.17,"y":0},"t":59,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.895,10.429],[0.709,-10.669],[11.321,10.429]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":70,"s":[{"i":[[4.884,-3.179],[-12.16,0],[3.966,2.581]],"o":[[-4.427,2.881],[10.985,0],[-4.884,-3.179]],"v":[[-7.577,14.554],[0.447,-6.544],[7.784,14.554]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":84,"s":[{"i":[[5.367,-3.179],[-13.36,0],[4.358,2.581]],"o":[[-4.864,2.881],[12.069,0],[-5.367,-3.179]],"v":[[-8.36,13.429],[0.455,-7.669],[8.517,13.429]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":104,"s":[{"i":[[6.067,-3.179],[-15.103,0],[4.926,2.581]],"o":[[-5.499,2.881],[13.644,0],[-6.067,-3.179]],"v":[[-9.38,13.554],[0.585,-7.544],[9.699,13.554]],"c":true}]},{"t":112,"s":[{"i":[[6.067,-3.179],[-15.103,0],[4.926,2.581]],"o":[[-5.499,2.881],[13.644,0],[-6.067,-3.179]],"v":[[-9.38,13.554],[0.585,-7.544],[9.699,13.554]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-90],"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":"Round Bottom","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":59,"op":112,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":693,"s":[100]},{"t":699,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":16,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.22,"y":1},"o":{"x":0.18,"y":1},"t":23,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.643,-21.893],[-35.357,-21.893]],"c":false}]},{"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-37]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":-30,"s":[52]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":-25,"s":[50.4]},{"i":{"x":[0.52],"y":[0.96]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[48]},{"t":18,"s":[64]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":18,"s":[90]}],"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":"Right","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":1,"k":[{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.22,"y":1},"o":{"x":0.18,"y":1},"t":23,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.643,-21.893],[-35.357,-21.893]],"c":false}]},{"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-7.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.52],"y":[0.96]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[48]},{"t":18,"s":[64]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":1,"k":[{"t":-145,"s":[0],"h":1},{"t":0,"s":[100],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":28,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"t":52,"s":[100],"h":1},{"t":62,"s":[0],"h":1},{"t":112,"s":[100],"h":1},{"t":200,"s":[0],"h":1},{"t":221,"s":[100],"h":1},{"t":408,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,-259.147,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":27,"s":[{"i":[[4.22,-5.198],[6.889,-2.445],[6.141,2.195],[4.414,5.745],[2.09,6.003],[1.842,5.673],[0,0],[-4.629,7.032],[-3.668,2.338],[-9.176,-4.129],[0,0],[-2.537,1.423],[0,0],[-5.764,-2.348],[-3.35,-5.761],[3.559,-9.527],[0,0],[2.211,-5.388]],"o":[[-4.607,5.675],[-6.146,2.181],[-6.823,-2.438],[-3.873,-5.041],[-1.961,-5.633],[-0.673,-2.074],[-3.418,-8.054],[2.391,-3.632],[7.091,-4.519],[0,0],[2.053,0.611],[0,0],[6.766,-3.045],[6.042,2.461],[4.226,7.269],[0,0],[0,0],[-2.542,6.194]],"v":[[26.625,263.759],[9.088,276.927],[-10.477,276.927],[-27.766,263.755],[-34.35,245.857],[-39.92,228.853],[-41.895,222.617],[-38.621,196.593],[-29.625,187.329],[-2.764,182.988],[-0.678,184.077],[3.537,183.327],[5.123,182.613],[23.746,183.97],[38.891,196.367],[42.816,222.402],[40.88,229.024],[34.705,245.369]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":38,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":40,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":49,"s":[{"i":[[0,0],[5.924,-2.615],[6.267,2.766],[3.263,7.561],[2.981,6.909],[0,0],[0,0],[-4.825,8.784],[-3.668,2.709],[-9.176,-4.785],[0,0],[-7.064,3.683],[0,0],[-5.942,-2.295],[-3.35,-6.676],[4.5,-10.429],[0,0],[2.725,-6.315]],"o":[[-3.262,7.56],[-6.266,2.766],[-5.925,-2.615],[0,0],[-2.981,-6.909],[0,0],[-3.988,-9.246],[2.335,-4.251],[7.091,-5.237],[0,0],[7.064,3.683],[0,0],[6.766,-3.528],[6.387,2.466],[4.226,8.423],[0,0],[0,0],[-3.063,7.1]],"v":[[23.515,261.285],[9.088,276.548],[-10.477,276.549],[-24.906,261.285],[-33.85,240.557],[-42.795,219.829],[-48.707,206.127],[-47.871,176.22],[-38.875,165.486],[-13.389,163.498],[-11.803,164.325],[10.412,164.325],[11.998,163.498],[31.496,162.173],[46.641,176.538],[47.316,206.126],[40.88,221.041],[32.705,239.986]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.61,"y":0},"t":57,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":61,"s":[{"i":[[0,0],[5.829,-2.275],[6.166,2.405],[3.21,6.575],[2.933,6.009],[0,0],[0,0],[-4.747,7.639],[-3.609,2.356],[-9.028,-5.782],[0,0],[-6.95,4.451],[0,0],[-5.847,-1.996],[-3.296,-5.806],[4.428,-9.07],[0,0],[2.681,-5.492]],"o":[[-3.21,6.575],[-6.165,2.406],[-5.83,-2.274],[0,0],[-2.933,-6.009],[0,0],[-3.924,-8.041],[2.297,-3.697],[6.977,-4.554],[0,0],[6.95,4.451],[0,0],[6.657,-4.263],[6.284,2.145],[4.158,7.326],[0,0],[0,0],[-3.014,6.174]],"v":[[23.147,263.139],[8.953,276.413],[-10.297,276.414],[-24.493,263.14],[-31.981,245.113],[-39.468,227.086],[-43.871,215.169],[-44.463,189.161],[-35.612,179.825],[-10.537,178.375],[-8.977,179.374],[7.631,179.374],[9.191,178.375],[28.374,176.944],[43.275,189.437],[42.525,215.169],[37.607,228.14],[30.877,244.617]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":67,"s":[{"i":[[0,0],[5.782,-2.283],[6.116,2.414],[3.184,6.6],[2.91,6.031],[0,0],[0,0],[-4.709,7.668],[-3.58,2.365],[-8.956,-2.881],[0,0],[-6.894,2.218],[0,0],[-5.8,-2.003],[-3.269,-5.828],[4.392,-9.104],[0,0],[2.66,-5.513]],"o":[[-3.184,6.599],[-6.116,2.415],[-5.783,-2.283],[0,0],[-2.91,-6.031],[0,0],[-3.893,-8.071],[2.279,-3.711],[6.921,-4.571],[0,0],[6.894,2.218],[0,0],[6.604,-2.124],[6.234,2.153],[4.125,7.353],[0,0],[0,0],[-2.99,6.198]],"v":[[22.966,262.838],[8.886,276.162],[-10.209,276.162],[-24.29,262.838],[-31.064,244.743],[-37.837,226.649],[-41.5,214.688],[-42.792,188.581],[-34.012,179.21],[-9.139,174.179],[-7.591,174.677],[6.267,174.677],[7.814,174.179],[26.844,176.318],[41.625,188.859],[40.176,214.688],[36.003,227.707],[29.98,244.245]],"c":true}]},{"i":{"x":0.48,"y":1},"o":{"x":0.26,"y":1},"t":111,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,1.445],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,1.445],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[22.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-30.85,245.866],[-37.795,227.978],[-42.707,216.152],[-41.871,190.343],[-32.875,181.079],[-7.389,179.363],[-5.803,180.077],[5.412,180.077],[6.998,179.363],[26.496,178.22],[41.641,190.617],[42.316,216.152],[38.88,229.024],[31.705,245.374]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"t":118,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.902,"y":0},"o":{"x":0.3,"y":0},"t":119,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":129,"s":[{"i":[[0,0],[6.002,-2.085],[6.349,2.205],[3.305,6.027],[3.02,5.508],[0,0],[0,0],[-4.888,7.002],[-3.716,2.159],[-9.296,-3.814],[0,0],[-7.157,2.936],[0,0],[-6.02,-1.829],[-3.393,-5.322],[4.559,-8.314],[0,0],[2.761,-5.034]],"o":[[-3.305,6.027],[-6.349,2.205],[-6.003,-2.085],[0,0],[-3.02,-5.508],[0,0],[-4.041,-7.37],[2.366,-3.389],[7.184,-4.175],[0,0],[7.157,2.936],[0,0],[6.855,-2.813],[6.471,1.966],[4.282,6.715],[0,0],[0,0],[-3.104,5.66]],"v":[[23.828,264.941],[9.213,277.109],[-10.609,277.11],[-25.226,264.942],[-34.288,248.418],[-43.349,231.894],[-49.339,220.97],[-48.492,197.13],[-39.379,188.572],[-13.559,186.988],[-11.952,187.647],[10.554,187.647],[12.161,186.988],[31.914,185.931],[47.257,197.383],[47.941,220.97],[41.421,232.86],[33.139,247.963]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.78,"y":0},"t":144,"s":[{"i":[[0,0],[5.924,-2.439],[6.267,2.579],[3.263,7.051],[2.981,6.443],[0,0],[0,0],[-4.825,8.191],[-3.668,2.526],[-9.176,-4.462],[0,0],[-7.064,3.435],[0,0],[-5.942,-2.14],[-3.35,-6.225],[4.5,-9.725],[0,0],[2.725,-5.889]],"o":[[-3.262,7.05],[-6.266,2.58],[-5.925,-2.439],[0,0],[-2.981,-6.443],[0,0],[-3.988,-8.622],[2.335,-3.964],[7.091,-4.884],[0,0],[7.064,3.435],[0,0],[6.766,-3.29],[6.387,2.3],[4.226,7.855],[0,0],[0,0],[-3.063,6.621]],"v":[[23.515,262.501],[9.088,276.734],[-10.477,276.735],[-24.906,262.501],[-33.85,243.171],[-42.795,223.841],[-48.707,211.063],[-47.871,183.174],[-38.875,173.164],[-13.389,171.31],[-11.803,172.081],[10.412,172.081],[11.998,171.31],[31.496,170.074],[46.641,183.471],[47.316,211.063],[40.88,224.972],[32.705,242.639]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.4,"y":0},"t":146,"s":[{"i":[[0,0],[5.924,-2.439],[6.267,2.579],[3.263,7.051],[2.981,6.443],[0,0],[0,0],[-4.825,8.191],[-3.668,2.526],[-9.176,-4.462],[0,0],[-7.064,3.435],[0,0],[-5.942,-2.14],[-3.35,-6.225],[4.5,-9.725],[0,0],[2.725,-5.889]],"o":[[-3.262,7.05],[-6.266,2.58],[-5.925,-2.439],[0,0],[-2.981,-6.443],[0,0],[-3.988,-8.622],[2.335,-3.964],[7.091,-4.884],[0,0],[7.064,3.435],[0,0],[6.766,-3.29],[6.387,2.3],[4.226,7.855],[0,0],[0,0],[-3.063,6.621]],"v":[[23.515,262.501],[9.088,276.734],[-10.477,276.735],[-24.906,262.501],[-33.85,243.171],[-42.795,223.841],[-48.707,211.063],[-47.871,183.174],[-38.875,173.164],[-13.389,171.31],[-11.803,172.081],[10.412,172.081],[11.998,171.31],[31.496,170.074],[46.641,183.471],[47.316,211.063],[40.88,224.972],[32.705,242.639]],"c":true}]},{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.884},"t":156,"s":[{"i":[[0,0],[6.002,-2.085],[6.349,2.205],[3.305,6.027],[3.02,5.508],[0,0],[0,0],[-4.888,7.002],[-3.716,2.159],[-9.296,-3.814],[0,0],[-7.157,2.936],[0,0],[-6.02,-1.829],[-3.393,-5.322],[4.559,-8.314],[0,0],[2.761,-5.034]],"o":[[-3.305,6.027],[-6.349,2.205],[-6.003,-2.085],[0,0],[-3.02,-5.508],[0,0],[-4.041,-7.37],[2.366,-3.389],[7.184,-4.175],[0,0],[7.157,2.936],[0,0],[6.855,-2.813],[6.471,1.966],[4.282,6.715],[0,0],[0,0],[-3.104,5.66]],"v":[[23.828,264.941],[9.213,277.109],[-10.609,277.11],[-25.226,264.942],[-34.288,248.418],[-43.349,231.894],[-49.339,220.97],[-48.492,197.13],[-39.379,188.572],[-13.559,186.988],[-11.952,187.647],[10.554,187.647],[12.161,186.988],[31.914,185.931],[47.257,197.383],[47.941,220.97],[41.421,232.86],[33.139,247.963]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":175,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":195,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"t":200,"s":[{"i":[[0,0],[4.982,-1.843],[5.269,1.949],[2.743,5.327],[2.507,4.868],[0,0],[0,0],[-4.057,6.188],[-3.084,1.909],[-7.716,-3.371],[0,0],[-5.94,2.595],[0,0],[-4.997,-1.617],[-2.817,-4.703],[3.784,-7.348],[0,0],[2.291,-4.449]],"o":[[-2.743,5.326],[-5.269,1.949],[-4.982,-1.842],[0,0],[-2.507,-4.868],[0,0],[-3.354,-6.514],[1.963,-2.995],[5.963,-3.69],[0,0],[5.94,2.595],[0,0],[5.69,-2.486],[5.371,1.738],[3.554,5.935],[0,0],[0,0],[-2.576,5.002]],"v":[[21.328,266.623],[7.572,277.365],[-8.88,277.366],[-21.013,266.612],[-30.158,252.046],[-38.929,237.463],[-42.276,232.155],[-38.901,208.3],[-31.337,200.737],[-7.657,199.329],[-6.324,199.912],[6.078,199.877],[7.412,199.294],[26.437,198.157],[39.172,208.278],[42.466,230.78],[38.179,240.068],[31.18,251.666]],"c":true}],"h":1},{"i":{"x":0.8,"y":1},"o":{"x":0.167,"y":0.167},"t":221,"s":[{"i":[[0,0],[-6.469,2.54],[-6.843,-2.686],[-3.562,-7.344],[-2.238,-6.985],[0,0],[0,0],[6.26,-8],[4.298,-2.248],[9.409,5.544],[0,0],[2.81,-1.732],[0,0],[6.751,1.517],[4.533,6.044],[-3.466,10.58],[0,0],[-1.94,6.445]],"o":[[3.562,-7.343],[6.843,-2.687],[6.47,2.54],[0,0],[2.25,7.021],[0,0],[3.257,9.331],[-3.029,3.872],[-8.309,4.346],[0,0],[-2.38,-1.461],[0,0],[-6.856,4.193],[-7.256,-1.631],[-5.72,-7.626],[0,0],[0,0],[2.154,-7.155]],"v":[[-25.972,255.773],[-10.844,240.983],[10.52,240.983],[26.276,255.808],[31.363,274.998],[37.793,295.9],[41.622,309.746],[42.615,338.568],[31.6,348.034],[3.818,347.339],[2.192,346.381],[-2.497,346.652],[-4.104,347.635],[-23.931,350.481],[-42.288,338.404],[-42.272,310.024],[-38.575,296.317],[-32.279,277.471]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":225,"s":[{"i":[[0,0],[-6.469,2.54],[-6.843,-2.686],[-3.562,-7.344],[-2.238,-6.985],[0,0],[0,0],[6.26,-8],[4.298,-2.248],[9.409,5.544],[0,0],[2.81,-1.732],[0,0],[6.751,1.517],[4.533,6.044],[-3.466,10.58],[0,0],[-1.94,6.445]],"o":[[3.562,-7.343],[6.843,-2.687],[6.47,2.54],[0,0],[2.25,7.021],[0,0],[3.257,9.331],[-3.029,3.872],[-8.309,4.346],[0,0],[-2.38,-1.461],[0,0],[-6.856,4.193],[-7.256,-1.631],[-5.72,-7.626],[0,0],[0,0],[2.154,-7.155]],"v":[[-25.972,255.773],[-10.844,240.983],[10.52,240.983],[26.276,255.808],[31.363,274.998],[37.793,295.9],[41.622,309.746],[42.615,338.568],[31.6,348.034],[3.818,347.339],[2.192,346.381],[-2.497,346.652],[-4.104,347.635],[-23.931,350.481],[-42.288,338.404],[-42.272,310.024],[-38.575,296.317],[-32.279,277.471]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":230,"s":[{"i":[[0,0],[-6.469,2.537],[-6.843,-2.683],[-3.562,-7.334],[-3.256,-6.702],[0,0],[0,0],[5.268,-8.52],[4.005,-2.628],[10.02,4.641],[0,0],[7.713,-3.573],[0,0],[6.489,2.226],[3.658,6.475],[-4.914,10.116],[0,0],[-2.976,6.126]],"o":[[3.562,-7.333],[6.843,-2.683],[6.47,2.537],[0,0],[3.256,6.702],[0,0],[4.355,8.968],[-2.55,4.123],[-7.743,5.08],[0,0],[-7.714,-3.573],[0,0],[-7.388,3.422],[-6.974,-2.392],[-4.615,-8.17],[0,0],[0,0],[3.345,-6.886]],"v":[[-26.597,256.303],[-10.844,241.499],[10.52,241.498],[26.276,256.303],[36.042,276.409],[45.809,296.515],[52.265,309.806],[51.352,338.814],[41.529,349.227],[13.7,351.155],[11.968,350.353],[-12.29,350.353],[-14.021,351.155],[-35.312,352.44],[-51.849,338.506],[-52.586,309.806],[-45.559,295.339],[-36.632,276.963]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":235,"s":[{"i":[[0,0],[-6.469,2.527],[-6.843,-2.672],[-3.562,-7.305],[-2.238,-6.948],[0,0],[0,0],[6.26,-7.958],[4.298,-2.236],[9.409,5.515],[0,0],[2.81,-1.723],[0,0],[6.751,1.509],[4.533,6.012],[-3.466,10.525],[0,0],[-1.94,6.411]],"o":[[3.562,-7.305],[6.843,-2.673],[6.47,2.527],[0,0],[2.25,6.984],[0,0],[3.257,9.283],[-3.029,3.851],[-8.309,4.323],[0,0],[-2.38,-1.454],[0,0],[-6.856,4.171],[-7.256,-1.622],[-5.72,-7.586],[0,0],[0,0],[2.154,-7.118]],"v":[[-25.972,256.282],[-10.844,241.57],[10.52,241.569],[26.276,256.317],[31.363,275.406],[37.793,296.199],[41.622,309.972],[42.615,338.644],[31.6,348.06],[3.818,347.368],[2.192,346.415],[-2.497,346.685],[-4.104,347.662],[-23.931,350.493],[-42.288,338.48],[-42.272,310.249],[-38.575,296.613],[-32.279,277.866]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":240,"s":[{"i":[[0,0],[-6.469,2.537],[-6.843,-2.683],[-3.562,-7.334],[-3.256,-6.702],[0,0],[0,0],[5.268,-8.52],[4.005,-2.628],[10.02,4.641],[0,0],[7.713,-3.573],[0,0],[6.489,2.226],[3.658,6.475],[-4.914,10.116],[0,0],[-2.976,6.126]],"o":[[3.562,-7.333],[6.843,-2.683],[6.47,2.537],[0,0],[3.256,6.702],[0,0],[4.355,8.968],[-2.55,4.123],[-7.743,5.08],[0,0],[-7.714,-3.573],[0,0],[-7.388,3.422],[-6.974,-2.392],[-4.615,-8.17],[0,0],[0,0],[3.345,-6.886]],"v":[[-26.597,256.303],[-10.844,241.499],[10.52,241.498],[26.276,256.303],[36.042,276.409],[45.809,296.515],[52.265,309.806],[51.352,338.814],[41.529,349.227],[13.7,351.155],[11.968,350.353],[-12.29,350.353],[-14.021,351.155],[-35.312,352.44],[-51.849,338.506],[-52.586,309.806],[-45.559,295.339],[-36.632,276.963]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.17,"y":0},"t":250,"s":[{"i":[[0,0],[-6.469,2.528],[-6.843,-2.674],[-3.562,-7.309],[-2.238,-6.951],[0,0],[0,0],[6.26,-7.962],[4.298,-2.237],[9.409,5.517],[0,0],[2.81,-1.724],[0,0],[6.751,1.51],[4.533,6.015],[-3.466,10.53],[0,0],[-1.94,6.414]],"o":[[3.562,-7.308],[6.843,-2.674],[6.47,2.528],[0,0],[2.25,6.988],[0,0],[3.257,9.287],[-3.029,3.853],[-8.309,4.325],[0,0],[-2.38,-1.454],[0,0],[-6.856,4.173],[-7.256,-1.623],[-5.72,-7.59],[0,0],[0,0],[2.154,-7.121]],"v":[[-25.972,256.238],[-10.844,241.519],[10.52,241.518],[26.276,256.273],[31.363,275.37],[37.793,296.172],[41.622,309.952],[42.615,338.637],[31.6,348.057],[3.818,347.366],[2.192,346.412],[-2.497,346.682],[-4.104,347.66],[-23.931,350.492],[-42.288,338.473],[-42.272,310.229],[-38.575,296.587],[-32.279,277.831]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.5,"y":0},"t":296,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[32.971,273.182],[41.915,291.071],[47.827,302.896],[46.991,328.705],[37.996,337.969],[12.509,339.685],[10.924,338.971],[-11.292,338.971],[-12.878,339.685],[-32.376,340.828],[-47.521,328.431],[-48.196,302.896],[-41.76,290.025],[-33.585,273.675]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.167,"y":0},"t":313,"s":[{"i":[[0,0],[-5.924,2.568],[-6.267,-2.716],[-3.263,-7.424],[-2.981,-6.785],[0,0],[0,0],[4.825,-8.625],[3.668,-2.66],[9.176,4.699],[0,0],[7.064,-3.617],[0,0],[5.942,2.253],[3.35,6.555],[-4.5,10.241],[0,0],[-2.725,6.201]],"o":[[3.262,-7.424],[6.266,-2.716],[5.925,2.568],[0,0],[2.981,6.785],[0,0],[3.988,9.079],[-2.335,4.174],[-7.091,5.142],[0,0],[-7.064,-3.617],[0,0],[-6.766,3.465],[-6.387,-2.422],[-4.226,-8.271],[0,0],[0,0],[3.063,-6.972]],"v":[[-24.394,257.438],[-9.968,242.451],[9.597,242.45],[24.026,257.438],[32.971,277.793],[41.915,298.147],[47.827,311.602],[46.991,340.969],[37.996,351.51],[12.509,353.462],[10.924,352.65],[-11.292,352.65],[-12.878,353.462],[-32.376,354.763],[-47.521,340.657],[-48.196,311.602],[-41.76,296.957],[-33.585,278.353]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":318,"s":[{"i":[[0,0],[-6.469,2.54],[-6.843,-2.686],[-3.562,-7.344],[-2.238,-6.985],[0,0],[0,0],[6.26,-8],[4.298,-2.248],[9.409,5.544],[0,0],[2.81,-1.732],[0,0],[6.751,1.517],[4.533,6.044],[-3.466,10.58],[0,0],[-1.94,6.445]],"o":[[3.562,-7.343],[6.843,-2.687],[6.47,2.54],[0,0],[2.25,7.021],[0,0],[3.257,9.331],[-3.029,3.872],[-8.309,4.346],[0,0],[-2.38,-1.461],[0,0],[-6.856,4.193],[-7.256,-1.631],[-5.72,-7.626],[0,0],[0,0],[2.154,-7.155]],"v":[[-25.972,255.773],[-10.844,240.983],[10.52,240.983],[26.276,255.808],[31.363,274.998],[37.793,295.9],[41.622,309.746],[42.615,338.568],[31.6,348.034],[3.818,347.339],[2.192,346.381],[-2.497,346.652],[-4.104,347.635],[-23.931,350.481],[-42.288,338.404],[-42.272,310.024],[-38.575,296.317],[-32.279,277.471]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":323,"s":[{"i":[[0,0],[-6.469,2.434],[-6.843,-2.574],[-3.562,-7.037],[-3.256,-6.431],[0,0],[0,0],[5.268,-8.175],[4.005,-2.521],[10.02,4.453],[0,0],[7.713,-3.428],[0,0],[6.489,2.136],[3.658,6.213],[-4.914,9.707],[0,0],[-2.976,5.878]],"o":[[3.562,-7.036],[6.843,-2.575],[6.47,2.434],[0,0],[3.256,6.431],[0,0],[4.355,8.605],[-2.55,3.956],[-7.743,4.874],[0,0],[-7.714,-3.428],[0,0],[-7.388,3.284],[-6.974,-2.296],[-4.615,-7.84],[0,0],[0,0],[3.345,-6.608]],"v":[[-26.597,255.596],[-10.844,241.39],[10.52,241.389],[26.276,255.596],[36.042,274.888],[45.809,294.181],[52.265,306.934],[51.352,334.769],[41.529,344.76],[13.7,346.61],[11.968,345.84],[-12.29,345.84],[-14.021,346.61],[-35.312,347.843],[-51.849,334.473],[-52.586,306.934],[-45.559,293.052],[-36.632,275.419]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":328,"s":[{"i":[[0,0],[-6.469,2.527],[-6.843,-2.672],[-3.562,-7.305],[-2.238,-6.948],[0,0],[0,0],[6.26,-7.958],[4.298,-2.236],[9.409,5.515],[0,0],[2.81,-1.723],[0,0],[6.751,1.509],[4.533,6.012],[-3.466,10.525],[0,0],[-1.94,6.411]],"o":[[3.562,-7.305],[6.843,-2.673],[6.47,2.527],[0,0],[2.25,6.984],[0,0],[3.257,9.283],[-3.029,3.851],[-8.309,4.323],[0,0],[-2.38,-1.454],[0,0],[-6.856,4.171],[-7.256,-1.622],[-5.72,-7.586],[0,0],[0,0],[2.154,-7.118]],"v":[[-25.972,256.282],[-10.844,241.57],[10.52,241.569],[26.276,256.317],[31.363,275.406],[37.793,296.199],[41.622,309.972],[42.615,338.644],[31.6,348.06],[3.818,347.368],[2.192,346.415],[-2.497,346.685],[-4.104,347.662],[-23.931,350.493],[-42.288,338.48],[-42.272,310.249],[-38.575,296.613],[-32.279,277.866]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":333,"s":[{"i":[[0,0],[-6.469,2.537],[-6.843,-2.683],[-3.562,-7.334],[-3.256,-6.702],[0,0],[0,0],[5.268,-8.52],[4.005,-2.628],[10.02,4.641],[0,0],[7.713,-3.573],[0,0],[6.489,2.226],[3.658,6.475],[-4.914,10.116],[0,0],[-2.976,6.126]],"o":[[3.562,-7.333],[6.843,-2.683],[6.47,2.537],[0,0],[3.256,6.702],[0,0],[4.355,8.968],[-2.55,4.123],[-7.743,5.08],[0,0],[-7.714,-3.573],[0,0],[-7.388,3.422],[-6.974,-2.392],[-4.615,-8.17],[0,0],[0,0],[3.345,-6.886]],"v":[[-26.597,256.303],[-10.844,241.499],[10.52,241.498],[26.276,256.303],[36.042,276.409],[45.809,296.515],[52.265,309.806],[51.352,338.814],[41.529,349.227],[13.7,351.155],[11.968,350.353],[-12.29,350.353],[-14.021,351.155],[-35.312,352.44],[-51.849,338.506],[-52.586,309.806],[-45.559,295.339],[-36.632,276.963]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.17,"y":0},"t":343,"s":[{"i":[[0,0],[-6.469,2.528],[-6.843,-2.674],[-3.562,-7.309],[-2.238,-6.951],[0,0],[0,0],[6.26,-7.962],[4.298,-2.237],[9.409,5.517],[0,0],[2.81,-1.724],[0,0],[6.751,1.51],[4.533,6.015],[-3.466,10.53],[0,0],[-1.94,6.414]],"o":[[3.562,-7.308],[6.843,-2.674],[6.47,2.528],[0,0],[2.25,6.988],[0,0],[3.257,9.287],[-3.029,3.853],[-8.309,4.325],[0,0],[-2.38,-1.454],[0,0],[-6.856,4.173],[-7.256,-1.623],[-5.72,-7.59],[0,0],[0,0],[2.154,-7.121]],"v":[[-25.972,256.238],[-10.844,241.519],[10.52,241.518],[26.276,256.273],[31.363,275.37],[37.793,296.172],[41.622,309.952],[42.615,338.637],[31.6,348.057],[3.818,347.366],[2.192,346.412],[-2.497,346.682],[-4.104,347.66],[-23.931,350.492],[-42.288,338.473],[-42.272,310.229],[-38.575,296.587],[-32.279,277.831]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.5,"y":0},"t":389,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[32.971,273.182],[41.915,291.071],[47.827,302.896],[46.991,328.705],[37.996,337.969],[12.509,339.685],[10.924,338.971],[-11.292,338.971],[-12.878,339.685],[-32.376,340.828],[-47.521,328.431],[-48.196,302.896],[-41.76,290.025],[-33.585,273.675]],"c":true}]},{"t":406,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[30.971,273.182],[38.915,291.071],[43.202,302.895],[42.366,328.704],[33.371,337.968],[7.884,339.684],[6.299,338.97],[-6.167,338.97],[-7.753,339.684],[-27.251,340.827],[-42.396,328.43],[-43.071,302.895],[-38.76,290.025],[-31.585,273.675]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"animated arrow","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":27,"op":408,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".surfaceHome","cl":"surfaceHome","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":420.5,"ix":3},"y":{"a":0,"k":350.5,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[841,701],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.365,0.259,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.365,0.259,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Volume","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":467,"st":-185,"ct":1,"bm":0}]},{"id":"comp_2","nm":"Part01_Home_Thumb_FO_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"HAND REPOSITION","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":900,"ix":3},"y":{"a":0,"k":838,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":321,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"HAND NULL","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.39],"y":[1]},"o":{"x":[0.59],"y":[0]},"t":3,"s":[10]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.15],"y":[0]},"t":59,"s":[0]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":95,"s":[-3]},{"i":{"x":[0.44],"y":[1]},"o":{"x":[0.84],"y":[0]},"t":122,"s":[-4]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.56],"y":[0]},"t":150,"s":[15]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":175,"s":[-4]},{"i":{"x":[0.44],"y":[1]},"o":{"x":[0.84],"y":[0]},"t":234,"s":[-4]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":262,"s":[15]},{"t":323,"s":[-5]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.06],"y":[0.36]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":73,"s":[-137]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":262,"s":[-137]},{"t":343,"s":[0]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.194],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":63,"s":[-111.366]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":122,"s":[-111.366]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.259],"y":[0]},"t":145,"s":[-304.366]},{"i":{"x":[0.45],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":147,"s":[-304.366]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":208,"s":[-111.366]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":234,"s":[-111.366]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.259],"y":[0]},"t":257,"s":[-304.366]},{"i":{"x":[0.47],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":259,"s":[-304.366]},{"t":336,"s":[-17]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":321,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"⨳ Thumb KO","parent":2,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"k":[{"s":[17.7],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.084],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.752],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.548],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.405],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.298],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.213],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.144],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.086],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.037],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.995],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.958],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.926],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.898],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.874],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.852],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.832],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.815],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.8],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.786],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.773],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.763],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.753],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.744],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.73],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.715],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.706],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.723],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.753],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.794],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.845],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.906],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.974],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.048],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.126],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.206],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.286],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.366],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.445],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.522],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.596],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.667],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.736],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.801],"t":165,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.864],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.923],"t":167,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.979],"t":168,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.033],"t":169,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.083],"t":170,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.131],"t":171,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.176],"t":172,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.219],"t":173,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.259],"t":174,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.297],"t":175,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.333],"t":176,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.366],"t":177,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.397],"t":178,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.427],"t":179,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.454],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.48],"t":181,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.504],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.526],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.547],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.566],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.584],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.6],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.615],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.628],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.64],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.651],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.661],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.677],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.693],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.682],"t":203,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.664],"t":204,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.642],"t":205,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.617],"t":206,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.589],"t":207,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.559],"t":208,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.528],"t":209,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.496],"t":210,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.462],"t":211,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.427],"t":212,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.391],"t":213,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.355],"t":214,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.318],"t":215,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.28],"t":216,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.241],"t":217,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.202],"t":218,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.163],"t":219,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.123],"t":220,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.083],"t":221,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.043],"t":222,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.002],"t":223,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.961],"t":224,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.92],"t":225,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.878],"t":226,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.837],"t":227,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.795],"t":228,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.754],"t":229,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.587],"t":233,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.545],"t":234,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.504],"t":235,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.462],"t":236,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.421],"t":237,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.38],"t":238,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.339],"t":239,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.298],"t":240,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.258],"t":241,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.218],"t":242,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.178],"t":243,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.139],"t":244,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.1],"t":245,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.062],"t":246,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.025],"t":247,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.988],"t":248,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.952],"t":249,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.917],"t":250,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.883],"t":251,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.85],"t":252,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.819],"t":253,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.79],"t":254,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.764],"t":255,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.74],"t":256,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.72],"t":257,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.706],"t":258,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.706],"t":260,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.723],"t":261,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.753],"t":262,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.794],"t":263,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.845],"t":264,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.906],"t":265,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.974],"t":266,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.048],"t":267,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.126],"t":268,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.206],"t":269,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.286],"t":270,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.366],"t":271,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.445],"t":272,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.522],"t":273,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.596],"t":274,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.667],"t":275,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.736],"t":276,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.801],"t":277,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.864],"t":278,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.923],"t":279,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.979],"t":280,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.033],"t":281,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.083],"t":282,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.131],"t":283,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.176],"t":284,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.219],"t":285,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.259],"t":286,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.297],"t":287,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.333],"t":288,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.366],"t":289,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.397],"t":290,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.427],"t":291,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.454],"t":292,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.48],"t":293,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.504],"t":294,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.526],"t":295,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.547],"t":296,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.566],"t":297,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.584],"t":298,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.6],"t":299,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.615],"t":300,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.628],"t":301,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.64],"t":302,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.651],"t":303,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.661],"t":304,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.677],"t":306,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.693],"t":309,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"p":{"k":[{"s":[0,0,0],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.015,0,0],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.077,0,0],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.192,0,0],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.364,0,0],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.598,0,0],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.902,0,0],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.285,0,0],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.76,0,0],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.347,0,0],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.074,0,0],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.968,0,0],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.068,0,0],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.423,0,0],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.089,0,0],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.109,0,0],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.416,0,0],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.732,0,0],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.688,0,0],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.11,0,0],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.047,0,0],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.624,0,0],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.922,0,0],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-20,0,0],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-20,0,0],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.949,0,0],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.77,0,0],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.468,0,0],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.054,0,0],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.54,0,0],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.938,0,0],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.258,0,0],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.519,0,0],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.742,0,0],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.942,0,0],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.136,0,0],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-13.336,0,0],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.55,0,0],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-11.783,0,0],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-11.04,0,0],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.326,0,0],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-9.641,0,0],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.987,0,0],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.363,0,0],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-7.77,0,0],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-7.207,0,0],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.673,0,0],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.169,0,0],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.691,0,0],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.24,0,0],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.813,0,0],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.411,0,0],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.031,0,0],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.675,0,0],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.34,0,0],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.026,0,0],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.732,0,0],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.457,0,0],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.2,0,0],"t":181,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.961,0,0],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.739,0,0],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.533,0,0],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.343,0,0],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.168,0,0],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.006,0,0],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.857,0,0],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.722,0,0],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.598,0,0],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.488,0,0],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.389,0,0],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.302,0,0],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.226,0,0],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.161,0,0],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.108,0,0],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.066,0,0],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.034,0,0],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.013,0,0],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.002,0,0],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.015,0,0],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.077,0,0],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.192,0,0],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.364,0,0],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.598,0,0],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.902,0,0],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.285,0,0],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.76,0,0],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.347,0,0],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.074,0,0],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.968,0,0],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.068,0,0],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.423,0,0],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.089,0,0],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.109,0,0],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.416,0,0],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.732,0,0],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.688,0,0],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.11,0,0],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.047,0,0],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.624,0,0],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.922,0,0],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-20,0,0],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-20,0,0],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.949,0,0],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.77,0,0],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.468,0,0],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.054,0,0],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.54,0,0],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.938,0,0],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.258,0,0],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.519,0,0],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.742,0,0],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.942,0,0],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.136,0,0],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-13.336,0,0],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.55,0,0],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-11.783,0,0],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-11.04,0,0],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.326,0,0],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-9.641,0,0],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.987,0,0],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.363,0,0],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-7.77,0,0],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-7.207,0,0],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.673,0,0],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.169,0,0],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.691,0,0],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.24,0,0],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.813,0,0],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.411,0,0],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.031,0,0],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.675,0,0],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.34,0,0],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.026,0,0],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.732,0,0],"t":291,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.457,0,0],"t":292,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.2,0,0],"t":293,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.961,0,0],"t":294,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.739,0,0],"t":295,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.533,0,0],"t":296,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.343,0,0],"t":297,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.168,0,0],"t":298,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.006,0,0],"t":299,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.857,0,0],"t":300,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.722,0,0],"t":301,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.598,0,0],"t":302,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.488,0,0],"t":303,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.389,0,0],"t":304,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.302,0,0],"t":305,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.226,0,0],"t":306,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.161,0,0],"t":307,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.108,0,0],"t":308,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.066,0,0],"t":309,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.034,0,0],"t":310,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.013,0,0],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.002,0,0],"t":312,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"a":{"a":0,"k":[0,49,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.095,4.103],[20.866,-4.391],[30.055,14.909],[-19.458,9.569],[-43.79,10.76],[-18.62,4.309],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.284,-4.689],[-20.866,4.391],[-30.056,-14.63],[31.09,-15.283],[13.475,-3.311],[35.363,-7.848],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.667,116.665],[-117.97,119.232],[-229.615,116.95],[-229.867,50.888],[-139.016,15.389],[-88.152,4.787],[-12.612,-36.255]],"c":true}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.098,4.127],[20.863,-4.414],[30.005,14.508],[-19.477,9.414],[-43.782,10.829],[-18.619,4.316],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.287,-4.716],[-20.863,4.414],[-30.007,-14.235],[31.121,-15.037],[13.472,-3.332],[35.361,-7.859],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.82,116.749],[-117.884,119.917],[-226.898,115.937],[-226.972,51.297],[-139.102,14.702],[-86.526,4.409],[-12.612,-36.255]],"c":true}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.099,4.142],[20.861,-4.429],[29.974,14.261],[-19.489,9.319],[-43.776,10.871],[-18.619,4.32],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.289,-4.733],[-20.861,4.429],[-29.977,-13.992],[31.139,-14.886],[13.471,-3.345],[35.36,-7.866],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.3,116.8],[-117.832,120.338],[-225.228,115.315],[-225.194,51.548],[-139.154,14.28],[-85.528,4.177],[-12.612,-36.255]],"c":true}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.101,4.152],[20.86,-4.438],[29.953,14.089],[-19.498,9.253],[-43.773,10.9],[-18.618,4.323],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.291,-4.744],[-20.86,4.438],[-29.956,-13.823],[31.153,-14.781],[13.469,-3.354],[35.36,-7.871],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.936,116.835],[-117.796,120.632],[-224.061,114.88],[-223.952,51.724],[-139.191,13.985],[-84.829,4.015],[-12.612,-36.255]],"c":true}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.16],[20.859,-4.446],[29.937,13.959],[-19.504,9.203],[-43.77,10.923],[-18.618,4.325],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.292,-4.753],[-20.859,4.446],[-29.94,-13.695],[31.162,-14.701],[13.469,-3.361],[35.359,-7.874],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.662,116.862],[-117.768,120.854],[-223.181,114.552],[-223.014,51.856],[-139.219,13.762],[-84.303,3.893],[-12.612,-36.255]],"c":true}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.166],[20.858,-4.452],[29.924,13.857],[-19.509,9.163],[-43.768,10.94],[-18.618,4.326],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.293,-4.76],[-20.858,4.452],[-29.927,-13.594],[31.17,-14.638],[13.468,-3.366],[35.359,-7.877],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.446,116.884],[-117.746,121.029],[-222.486,114.293],[-222.274,51.961],[-139.241,13.586],[-83.887,3.796],[-12.612,-36.255]],"c":true}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.103,4.171],[20.858,-4.457],[29.914,13.773],[-19.513,9.131],[-43.766,10.954],[-18.618,4.328],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.766],[-20.858,4.457],[-29.917,-13.511],[31.177,-14.587],[13.467,-3.371],[35.359,-7.88],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.269,116.901],[-117.728,121.172],[-221.919,114.082],[-221.67,52.046],[-139.258,13.443],[-83.548,3.717],[-12.612,-36.255]],"c":true}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.175],[20.857,-4.461],[29.905,13.703],[-19.516,9.104],[-43.764,10.966],[-18.617,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.771],[-20.857,4.461],[-29.908,-13.443],[31.182,-14.544],[13.467,-3.375],[35.358,-7.882],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.121,116.915],[-117.714,121.291],[-221.446,113.906],[-221.166,52.118],[-139.273,13.323],[-83.265,3.652],[-12.612,-36.255]],"c":true}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.179],[20.857,-4.464],[29.897,13.644],[-19.519,9.081],[-43.763,10.977],[-18.617,4.33],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.775],[-20.857,4.464],[-29.901,-13.384],[31.186,-14.508],[13.467,-3.378],[35.358,-7.883],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.997,116.928],[-117.701,121.392],[-221.044,113.756],[-220.739,52.178],[-139.286,13.222],[-83.025,3.596],[-12.612,-36.255]],"c":true}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.182],[20.856,-4.467],[29.891,13.593],[-19.522,9.062],[-43.762,10.985],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.778],[-20.856,4.467],[-29.895,-13.334],[31.19,-14.477],[13.466,-3.38],[35.358,-7.885],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.889,116.938],[-117.69,121.479],[-220.7,113.628],[-220.372,52.23],[-139.297,13.135],[-82.819,3.548],[-12.612,-36.255]],"c":true}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.184],[20.856,-4.47],[29.886,13.549],[-19.524,9.045],[-43.761,10.993],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.781],[-20.856,4.47],[-29.89,-13.291],[31.194,-14.45],[13.466,-3.383],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.796,116.947],[-117.681,121.554],[-220.401,113.516],[-220.054,52.275],[-139.306,13.059],[-82.64,3.507],[-12.612,-36.255]],"c":true}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.187],[20.856,-4.472],[29.881,13.51],[-19.526,9.03],[-43.76,10.999],[-18.617,4.332],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.784],[-20.856,4.472],[-29.885,-13.253],[31.197,-14.426],[13.466,-3.385],[35.358,-7.887],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.715,116.955],[-117.673,121.62],[-220.14,113.419],[-219.776,52.314],[-139.314,12.993],[-82.484,3.47],[-12.612,-36.255]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.189],[20.856,-4.474],[29.877,13.477],[-19.527,9.017],[-43.76,11.005],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.786],[-20.856,4.474],[-29.881,-13.219],[31.199,-14.406],[13.465,-3.386],[35.357,-7.888],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.643,116.962],[-117.665,121.678],[-219.911,113.334],[-219.531,52.349],[-139.322,12.935],[-82.347,3.438],[-12.612,-36.255]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.191],[20.855,-4.476],[29.873,13.447],[-19.529,9.005],[-43.759,11.01],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.788],[-20.855,4.476],[-29.877,-13.19],[31.201,-14.387],[13.465,-3.388],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.58,116.969],[-117.659,121.729],[-219.708,113.258],[-219.316,52.379],[-139.328,12.884],[-82.226,3.41],[-12.612,-36.255]],"c":true}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.192],[20.855,-4.477],[29.87,13.42],[-19.53,8.995],[-43.758,11.015],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.79],[-20.855,4.477],[-29.874,-13.164],[31.203,-14.371],[13.465,-3.389],[35.357,-7.89],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.524,116.974],[-117.654,121.774],[-219.529,113.191],[-219.124,52.406],[-139.334,12.839],[-82.118,3.385],[-12.612,-36.255]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.194],[20.855,-4.478],[29.867,13.397],[-19.531,8.986],[-43.758,11.019],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.791],[-20.855,4.478],[-29.871,-13.141],[31.205,-14.357],[13.465,-3.391],[35.357,-7.89],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.475,116.979],[-117.649,121.815],[-219.369,113.132],[-218.955,52.43],[-139.339,12.798],[-82.023,3.363],[-12.612,-36.255]],"c":true}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.195],[20.855,-4.48],[29.864,13.376],[-19.532,8.978],[-43.757,11.022],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.793],[-20.855,4.48],[-29.868,-13.12],[31.207,-14.344],[13.465,-3.392],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.43,116.983],[-117.644,121.85],[-219.227,113.079],[-218.803,52.451],[-139.343,12.762],[-81.938,3.343],[-12.612,-36.255]],"c":true}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.196],[20.855,-4.481],[29.862,13.357],[-19.533,8.971],[-43.757,11.026],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.794],[-20.855,4.481],[-29.866,-13.102],[31.208,-14.332],[13.465,-3.393],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.391,116.987],[-117.64,121.882],[-219.101,113.032],[-218.669,52.47],[-139.347,12.73],[-81.862,3.326],[-12.612,-36.255]],"c":true}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.197],[20.855,-4.482],[29.86,13.34],[-19.534,8.965],[-43.757,11.028],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.795],[-20.855,4.482],[-29.864,-13.085],[31.21,-14.322],[13.465,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.356,116.991],[-117.637,121.911],[-218.988,112.99],[-218.549,52.487],[-139.351,12.702],[-81.795,3.31],[-12.612,-36.255]],"c":true}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.198],[20.854,-4.483],[29.858,13.326],[-19.535,8.959],[-43.756,11.031],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.796],[-20.854,4.483],[-29.862,-13.071],[31.211,-14.313],[13.464,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.324,116.994],[-117.633,121.936],[-218.888,112.952],[-218.441,52.503],[-139.354,12.676],[-81.735,3.296],[-12.612,-36.255]],"c":true}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.199],[20.854,-4.483],[29.856,13.312],[-19.535,8.954],[-43.756,11.033],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.797],[-20.854,4.483],[-29.861,-13.058],[31.212,-14.305],[13.464,-3.395],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.297,116.997],[-117.631,121.959],[-218.798,112.919],[-218.346,52.516],[-139.357,12.654],[-81.681,3.284],[-12.612,-36.255]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.199],[20.854,-4.484],[29.855,13.301],[-19.536,8.949],[-43.756,11.035],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.798],[-20.854,4.484],[-29.859,-13.046],[31.213,-14.298],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.272,116.999],[-117.628,121.979],[-218.719,112.889],[-218.261,52.528],[-139.359,12.634],[-81.633,3.273],[-12.612,-36.255]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.2],[20.854,-4.485],[29.854,13.29],[-19.537,8.945],[-43.756,11.037],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.799],[-20.854,4.485],[-29.858,-13.036],[31.213,-14.291],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.25,117.001],[-117.626,121.996],[-218.648,112.863],[-218.186,52.539],[-139.361,12.616],[-81.591,3.263],[-12.612,-36.255]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.485],[29.852,13.281],[-19.537,8.942],[-43.755,11.039],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.799],[-20.854,4.485],[-29.857,-13.027],[31.214,-14.286],[13.464,-3.397],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.23,117.003],[-117.624,122.012],[-218.586,112.84],[-218.12,52.548],[-139.363,12.6],[-81.554,3.254],[-12.612,-36.255]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.486],[29.851,13.273],[-19.537,8.939],[-43.755,11.04],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.856,-13.019],[31.215,-14.281],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.213,117.005],[-117.622,122.026],[-218.531,112.819],[-218.062,52.556],[-139.365,12.586],[-81.521,3.247],[-12.612,-36.255]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.486],[29.85,13.266],[-19.538,8.936],[-43.755,11.041],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.855,-13.012],[31.215,-14.277],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.199,117.006],[-117.621,122.038],[-218.483,112.801],[-218.011,52.563],[-139.366,12.574],[-81.493,3.24],[-12.612,-36.255]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.486],[29.85,13.26],[-19.538,8.933],[-43.755,11.042],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.486],[-29.854,-13.006],[31.216,-14.273],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.186,117.007],[-117.619,122.048],[-218.442,112.786],[-217.967,52.57],[-139.368,12.564],[-81.468,3.234],[-12.612,-36.255]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.255],[-19.538,8.931],[-43.755,11.043],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-13.001],[31.216,-14.27],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.174,117.009],[-117.618,122.057],[-218.406,112.773],[-217.929,52.575],[-139.369,12.555],[-81.446,3.229],[-12.612,-36.255]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.25],[-19.538,8.93],[-43.755,11.044],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-12.996],[31.216,-14.267],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.165,117.009],[-117.617,122.065],[-218.376,112.761],[-217.896,52.58],[-139.37,12.547],[-81.428,3.225],[-12.612,-36.255]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.246],[-19.539,8.928],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.992],[31.217,-14.265],[13.464,-3.399],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.157,117.01],[-117.617,122.071],[-218.35,112.752],[-217.869,52.583],[-139.371,12.541],[-81.413,3.221],[-12.612,-36.255]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.243],[-19.539,8.927],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.99],[31.217,-14.263],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.151,117.011],[-117.616,122.077],[-218.33,112.744],[-217.847,52.586],[-139.371,12.535],[-81.401,3.219],[-12.612,-36.255]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.847,13.241],[-19.539,8.926],[-43.755,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.987],[31.217,-14.261],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.146,117.011],[-117.615,122.081],[-218.313,112.738],[-217.83,52.589],[-139.372,12.531],[-81.391,3.216],[-12.612,-36.255]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.853,-4.49],[29.848,13.234],[-19.538,8.926],[-43.753,11.05],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.853,4.49],[-29.852,-12.98],[31.216,-14.262],[13.464,-3.4],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.609,122.089],[-218.282,112.739],[-217.802,52.604],[-139.378,12.528],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.852,-4.496],[29.852,13.224],[-19.535,8.933],[-43.749,11.064],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.852,4.496],[-29.856,-12.971],[31.211,-14.271],[13.462,-3.405],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.592,122.092],[-218.266,112.774],[-217.805,52.64],[-139.395,12.539],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.849,-4.509],[29.859,13.206],[-19.529,8.944],[-43.742,11.09],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.849,4.509],[-29.863,-12.952],[31.202,-14.29],[13.46,-3.413],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.558,122.098],[-218.236,112.841],[-217.812,52.707],[-139.427,12.561],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.843,-4.529],[29.871,13.176],[-19.52,8.963],[-43.729,11.133],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.843,4.529],[-29.875,-12.923],[31.187,-14.32],[13.456,-3.426],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.504,122.108],[-218.187,112.95],[-217.822,52.818],[-139.479,12.596],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.835,-4.56],[29.89,13.13],[-19.505,8.992],[-43.71,11.199],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.835,4.56],[-29.893,-12.877],[31.163,-14.367],[13.45,-3.446],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.42,122.123],[-218.112,113.119],[-217.838,52.99],[-139.56,12.65],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.823,-4.609],[29.918,13.059],[-19.483,9.037],[-43.681,11.3],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.823,4.609],[-29.921,-12.806],[31.128,-14.438],[13.441,-3.477],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.29,122.147],[-217.996,113.379],[-217.863,53.253],[-139.685,12.734],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.804,-4.686],[29.964,12.946],[-19.447,9.109],[-43.634,11.462],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.804,4.686],[-29.966,-12.693],[31.07,-14.553],[13.427,-3.527],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.083,122.185],[-217.811,113.794],[-217.902,53.674],[-139.884,12.867],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.77,-4.822],[30.044,12.747],[-19.384,9.235],[-43.551,11.747],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.77,4.822],[-30.044,-12.494],[30.969,-14.755],[13.401,-3.615],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.718,122.253],[-217.485,114.525],[-217.971,54.416],[-140.234,13.103],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.705,-5.078],[30.195,12.372],[-19.265,9.473],[-43.396,12.284],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.705,5.078],[-30.192,-12.118],[30.779,-15.136],[13.353,-3.78],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.032,122.379],[-216.87,115.902],[-218.102,55.813],[-140.895,13.546],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.64,-5.337],[30.347,11.993],[-19.145,9.713],[-43.239,12.825],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.64,5.337],[-30.341,-11.74],[30.588,-15.519],[13.305,-3.947],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.339,122.506],[-216.251,117.29],[-218.233,57.222],[-141.561,13.993],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.601,-5.492],[30.439,11.766],[-19.073,9.857],[-43.144,13.15],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.601,5.492],[-30.431,-11.513],[30.473,-15.749],[13.276,-4.047],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.924,122.583],[-215.879,118.123],[-218.312,58.067],[-141.96,14.261],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.575,-5.593],[30.498,11.617],[-19.026,9.952],[-43.083,13.363],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.575,5.593],[-30.489,-11.364],[30.397,-15.9],[13.257,-4.112],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.651,122.633],[-215.635,118.67],[-218.364,58.621],[-142.223,14.437],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.557,-5.667],[30.542,11.51],[-18.992,10.02],[-43.038,13.517],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.557,5.667],[-30.532,-11.257],[30.343,-16.009],[13.243,-4.159],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.455,122.669],[-215.459,119.064],[-218.401,59.021],[-142.412,14.564],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.543,-5.723],[30.575,11.428],[-18.966,10.072],[-43.004,13.634],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.543,5.723],[-30.564,-11.175],[30.301,-16.092],[13.233,-4.195],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.305,122.697],[-215.325,119.365],[-218.43,59.326],[-142.556,14.661],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.531,-5.767],[30.601,11.363],[-18.945,10.113],[-42.977,13.727],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.531,5.767],[-30.589,-11.11],[30.269,-16.158],[13.225,-4.224],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.186,122.719],[-215.219,119.602],[-218.452,59.567],[-142.67,14.737],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.523,-5.802],[30.622,11.312],[-18.929,10.146],[-42.956,13.801],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.523,5.802],[-30.61,-11.058],[30.242,-16.21],[13.218,-4.247],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.092,122.736],[-215.134,119.792],[-218.47,59.76],[-142.761,14.798],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":111,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.515,-5.831],[30.638,11.269],[-18.916,10.173],[-42.938,13.861],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.515,5.831],[-30.626,-11.016],[30.221,-16.253],[13.213,-4.265],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.014,122.75],[-215.066,119.947],[-218.485,59.916],[-142.835,14.848],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":112,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.509,-5.855],[30.652,11.235],[-18.905,10.194],[-42.924,13.91],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.509,5.855],[-30.64,-10.982],[30.204,-16.288],[13.208,-4.28],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.952,122.762],[-215.009,120.073],[-218.497,60.044],[-142.896,14.888],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.505,-5.874],[30.664,11.207],[-18.896,10.212],[-42.912,13.951],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.505,5.874],[-30.651,-10.954],[30.19,-16.316],[13.205,-4.293],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.9,122.771],[-214.963,120.176],[-218.507,60.149],[-142.945,14.922],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.501,-5.889],[30.673,11.184],[-18.889,10.227],[-42.903,13.983],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.501,5.889],[-30.66,-10.931],[30.178,-16.339],[13.202,-4.303],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.858,122.779],[-214.926,120.259],[-218.514,60.234],[-142.985,14.948],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.497,-5.902],[30.68,11.166],[-18.883,10.238],[-42.895,14.009],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.497,5.902],[-30.667,-10.913],[30.169,-16.358],[13.2,-4.311],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.825,122.785],[-214.896,120.327],[-218.521,60.302],[-143.017,14.97],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.495,-5.912],[30.686,11.151],[-18.878,10.248],[-42.889,14.03],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.495,5.912],[-30.673,-10.898],[30.161,-16.372],[13.198,-4.317],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.799,122.79],[-214.872,120.38],[-218.526,60.356],[-143.043,14.987],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.493,-5.919],[30.69,11.14],[-18.875,10.255],[-42.885,14.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.493,5.919],[-30.677,-10.887],[30.156,-16.384],[13.196,-4.322],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.778,122.794],[-214.854,120.42],[-218.53,60.397],[-143.062,15],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.492,-5.925],[30.694,11.132],[-18.872,10.26],[-42.881,14.058],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.492,5.925],[-30.68,-10.879],[30.152,-16.392],[13.195,-4.326],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.763,122.797],[-214.841,120.45],[-218.533,60.427],[-143.077,15.01],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.491,-5.929],[30.696,11.127],[-18.87,10.263],[-42.879,14.065],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.491,5.929],[-30.683,-10.873],[30.149,-16.397],[13.195,-4.328],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.753,122.798],[-214.832,120.47],[-218.534,60.448],[-143.086,15.016],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.491,-5.926],[30.694,11.13],[-18.871,10.261],[-42.88,14.06],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.491,5.926],[-30.681,-10.877],[30.15,-16.393],[13.195,-4.327],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.76,122.801],[-214.837,120.461],[-218.532,60.439],[-143.08,15.017],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.494,-5.909],[30.683,11.154],[-18.878,10.245],[-42.888,14.024],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.494,5.909],[-30.67,-10.901],[30.161,-16.368],[13.197,-4.315],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.807,122.805],[-214.874,120.382],[-218.52,60.362],[-143.036,15.005],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.5,-5.878],[30.662,11.198],[-18.891,10.215],[-42.903,13.959],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.5,5.878],[-30.649,-10.945],[30.181,-16.321],[13.202,-4.295],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.891,122.811],[-214.94,120.24],[-218.497,60.223],[-142.957,14.984],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.509,-5.831],[30.631,11.264],[-18.91,10.171],[-42.926,13.86],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.509,5.831],[-30.619,-11.011],[30.212,-16.25],[13.209,-4.265],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.018,122.822],[-215.041,120.025],[-218.463,60.011],[-142.837,14.951],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.522,-5.764],[30.587,11.358],[-18.937,10.109],[-42.957,13.721],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.522,5.764],[-30.575,-11.105],[30.255,-16.15],[13.219,-4.222],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.198,122.836],[-215.184,119.721],[-218.416,59.713],[-142.668,14.904],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.539,-5.674],[30.527,11.485],[-18.973,10.024],[-43.001,13.532],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.539,5.674],[-30.517,-11.232],[30.313,-16.015],[13.232,-4.164],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.441,122.855],[-215.377,119.309],[-218.351,59.31],[-142.439,14.841],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.562,-5.555],[30.448,11.653],[-19.021,9.911],[-43.058,13.281],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.562,5.555],[-30.439,-11.4],[30.39,-15.835],[13.249,-4.087],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.764,122.881],[-215.634,118.763],[-218.265,58.774],[-142.135,14.757],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.592,-5.398],[30.343,11.875],[-19.085,9.763],[-43.133,12.95],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.592,5.398],[-30.336,-11.622],[30.492,-15.598],[13.273,-3.985],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.19,122.915],[-215.972,118.042],[-218.152,58.067],[-141.734,14.646],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.632,-5.189],[30.204,12.169],[-19.169,9.566],[-43.233,12.512],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.632,5.189],[-30.2,-11.916],[30.627,-15.284],[13.303,-3.85],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.755,122.96],[-216.421,117.086],[-218.001,57.13],[-141.203,14.5],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.686,-4.908],[30.018,12.566],[-19.283,9.302],[-43.368,11.922],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.686,4.908],[-30.017,-12.313],[30.808,-14.861],[13.345,-3.669],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.515,123.021],[-217.025,115.8],[-217.799,55.869],[-140.488,14.302],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.76,-4.519],[29.759,13.113],[-19.44,8.935],[-43.554,11.106],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.76,4.519],[-29.763,-12.861],[31.059,-14.276],[13.402,-3.417],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.567,123.104],[-217.86,114.021],[-217.519,54.124],[-139.498,14.029],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.865,-3.972],[29.396,13.885],[-19.662,8.42],[-43.816,9.956],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.865,3.972],[-29.406,-13.633],[31.413,-13.452],[13.483,-3.064],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-119.049,123.222],[-219.037,111.514],[-217.125,51.666],[-138.104,13.644],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.997,-3.279],[28.935,14.862],[-19.942,7.767],[-44.148,8.501],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.997,3.279],[-28.954,-14.61],[31.861,-12.409],[13.585,-2.616],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-120.924,123.372],[-220.526,108.342],[-216.626,48.556],[-136.34,13.158],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.11,-2.69],[28.544,15.692],[-20.18,7.212],[-44.431,7.265],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.11,2.69],[-28.57,-15.44],[32.241,-11.522],[13.672,-2.235],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-122.517,123.499],[-221.791,105.647],[-216.202,45.913],[-134.841,12.744],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.177,-2.342],[28.313,16.183],[-20.321,6.884],[-44.597,6.533],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.177,2.342],[-28.343,-15.931],[32.466,-10.998],[13.723,-2.01],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-123.459,123.574],[-222.539,104.053],[-215.952,44.35],[-133.955,12.499],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.212,-2.159],[28.191,16.441],[-20.395,6.711],[-44.685,6.149],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.212,2.159],[-28.224,-16.189],[32.585,-10.723],[13.75,-1.892],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-123.954,123.613],[-222.933,103.215],[-215.82,43.528],[-133.488,12.371],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.228,-2.074],[28.135,16.561],[-20.429,6.631],[-44.726,5.97],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.228,2.074],[-28.168,-16.31],[32.64,-10.595],[13.763,-1.837],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.185,123.632],[-223.116,102.825],[-215.759,43.146],[-133.272,12.311],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.054],[28.123,16.592],[-20.437,6.615],[-44.735,5.929],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.054],[-28.156,-16.341],[32.652,-10.569],[13.766,-1.825],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.146,117.011],[-124.237,123.627],[-223.187,102.747],[-215.777,43.054],[-133.222,12.302],[-81.393,3.217],[-12.612,-36.255]],"c":true}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[21.23,-2.068],[28.135,16.587],[-20.431,6.634],[-44.73,5.957],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-21.23,2.068],[-28.168,-16.335],[32.642,-10.599],[13.764,-1.833],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.176,117.008],[-124.201,123.593],[-223.254,102.841],[-215.891,43.095],[-133.255,12.328],[-81.45,3.23],[-12.612,-36.255]],"c":true}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[21.226,-2.092],[28.156,16.577],[-20.42,6.669],[-44.72,6.008],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.799],[-21.226,2.092],[-28.189,-16.325],[32.625,-10.655],[13.761,-1.849],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.231,117.003],[-124.136,123.533],[-223.377,103.014],[-216.1,43.171],[-133.316,12.375],[-81.555,3.254],[-12.612,-36.255]],"c":true}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.198],[21.22,-2.131],[28.19,16.561],[-20.403,6.723],[-44.705,6.086],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.797],[-21.22,2.131],[-28.223,-16.308],[32.598,-10.741],[13.756,-1.873],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.316,116.995],[-124.034,123.438],[-223.568,103.281],[-216.424,43.289],[-133.409,12.447],[-81.717,3.292],[-12.612,-36.255]],"c":true}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.195],[21.211,-2.185],[28.238,16.539],[-20.379,6.8],[-44.682,6.198],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.793],[-21.211,2.185],[-28.27,-16.285],[32.56,-10.864],[13.749,-1.907],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.437,116.983],[-123.889,123.303],[-223.841,103.664],[-216.887,43.457],[-133.544,12.551],[-81.95,3.346],[-12.612,-36.255]],"c":true}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.19],[21.2,-2.26],[28.304,16.508],[-20.346,6.905],[-44.652,6.351],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.787],[-21.2,2.26],[-28.335,-16.253],[32.507,-11.032],[13.74,-1.954],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.602,116.966],[-123.69,123.119],[-224.214,104.187],[-217.52,43.687],[-133.727,12.693],[-82.268,3.42],[-12.612,-36.255]],"c":true}],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.184],[21.184,-2.358],[28.391,16.468],[-20.303,7.044],[-44.612,6.552],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.78],[-21.184,2.358],[-28.42,-16.211],[32.438,-11.253],[13.728,-2.016],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.82,116.945],[-123.428,122.877],[-224.705,104.876],[-218.353,43.99],[-133.968,12.88],[-82.687,3.517],[-12.612,-36.255]],"c":true}],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.176],[21.164,-2.483],[28.501,16.417],[-20.247,7.22],[-44.562,6.808],[-18.617,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.771],[-21.164,2.483],[-28.528,-16.158],[32.35,-11.534],[13.712,-2.095],[35.358,-7.882],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.097,116.918],[-123.096,122.568],[-225.33,105.751],[-219.412,44.375],[-134.275,13.117],[-83.219,3.641],[-12.612,-36.255]],"c":true}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.166],[21.141,-2.634],[28.634,16.355],[-20.18,7.434],[-44.501,7.118],[-18.618,4.327],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.293,-4.761],[-21.141,2.634],[-28.659,-16.094],[32.243,-11.875],[13.693,-2.19],[35.359,-7.877],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.433,116.885],[-122.694,122.195],[-226.085,106.81],[-220.694,44.841],[-134.646,13.404],[-83.863,3.79],[-12.612,-36.255]],"c":true}],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.101,4.156],[21.114,-2.805],[28.785,16.285],[-20.105,7.675],[-44.431,7.468],[-18.618,4.324],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.291,-4.748],[-21.114,2.805],[-28.808,-16.021],[32.122,-12.26],[13.672,-2.298],[35.359,-7.872],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.812,116.848],[-122.238,121.773],[-226.94,108.009],[-222.145,45.369],[-135.066,13.729],[-84.591,3.96],[-12.612,-36.255]],"c":true}],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.1,4.144],[21.086,-2.984],[28.943,16.212],[-20.026,7.928],[-44.359,7.835],[-18.619,4.321],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.29,-4.736],[-21.086,2.984],[-28.963,-15.945],[31.996,-12.664],[13.65,-2.411],[35.36,-7.867],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.21,116.809],[-121.761,121.331],[-227.835,109.264],[-223.663,45.921],[-135.506,14.07],[-85.354,4.137],[-12.612,-36.255]],"c":true}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.098,4.133],[21.058,-3.158],[29.097,16.141],[-19.949,8.174],[-44.288,8.192],[-18.619,4.318],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.288,-4.723],[-21.058,3.158],[-29.114,-15.871],[31.873,-13.055],[13.628,-2.521],[35.361,-7.862],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.595,116.771],[-121.298,120.901],[-228.705,110.483],[-225.138,46.457],[-135.933,14.4],[-86.095,4.309],[-12.612,-36.255]],"c":true}],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.097,4.123],[21.033,-3.318],[29.238,16.075],[-19.878,8.4],[-44.224,8.52],[-18.619,4.315],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.287,-4.712],[-21.033,3.318],[-29.253,-15.803],[31.761,-13.416],[13.608,-2.622],[35.361,-7.857],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.951,116.736],[-120.872,120.506],[-229.505,111.605],[-226.495,46.95],[-136.326,14.705],[-86.777,4.468],[-12.612,-36.255]],"c":true}],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.096,4.114],[21.011,-3.46],[29.364,16.017],[-19.815,8.601],[-44.166,8.812],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.286,-4.701],[-21.011,3.46],[-29.377,-15.742],[31.66,-13.737],[13.59,-2.712],[35.362,-7.853],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.267,116.705],[-120.493,120.154],[-230.218,112.604],[-227.705,47.39],[-136.676,14.976],[-87.385,4.609],[-12.612,-36.255]],"c":true}],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.095,4.106],[20.991,-3.585],[29.474,15.966],[-19.759,8.778],[-44.115,9.069],[-18.62,4.31],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.284,-4.693],[-20.991,3.585],[-29.485,-15.689],[31.572,-14.019],[13.575,-2.791],[35.362,-7.849],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.545,116.677],[-120.159,119.845],[-230.844,113.481],[-228.766,47.776],[-136.984,15.214],[-87.918,4.733],[-12.612,-36.255]],"c":true}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.094,4.1],[20.974,-3.694],[29.57,15.921],[-19.711,8.932],[-44.071,9.293],[-18.62,4.308],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.283,-4.685],[-20.974,3.694],[-29.58,-15.642],[31.495,-14.265],[13.561,-2.86],[35.363,-7.846],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.787,116.654],[-119.869,119.575],[-231.389,114.247],[-229.692,48.113],[-137.252,15.421],[-88.383,4.841],[-12.612,-36.255]],"c":true}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.094],[20.959,-3.79],[29.654,15.882],[-19.669,9.067],[-44.032,9.488],[-18.62,4.307],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.283,-4.678],[-20.959,3.79],[-29.662,-15.602],[31.428,-14.479],[13.549,-2.92],[35.363,-7.843],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.998,116.633],[-119.615,119.34],[-231.865,114.913],[-230.499,48.406],[-137.485,15.602],[-88.788,4.935],[-12.612,-36.255]],"c":true}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.088],[20.946,-3.872],[29.727,15.848],[-19.632,9.184],[-43.999,9.658],[-18.62,4.305],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.282,-4.672],[-20.946,3.872],[-29.734,-15.566],[31.369,-14.666],[13.539,-2.972],[35.363,-7.841],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.182,116.615],[-119.395,119.135],[-232.279,115.494],[-231.202,48.662],[-137.689,15.76],[-89.141,5.017],[-12.612,-36.255]],"c":true}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.084],[20.935,-3.945],[29.791,15.819],[-19.6,9.286],[-43.969,9.806],[-18.621,4.304],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.667],[-20.935,3.945],[-29.797,-15.535],[31.318,-14.829],[13.53,-3.017],[35.364,-7.839],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.343,116.599],[-119.202,118.957],[-232.641,116.002],[-231.816,48.885],[-137.867,15.897],[-89.45,5.088],[-12.612,-36.255]],"c":true}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.08],[20.925,-4.008],[29.847,15.793],[-19.572,9.375],[-43.944,9.935],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.662],[-20.925,4.008],[-29.852,-15.509],[31.274,-14.972],[13.522,-3.057],[35.364,-7.837],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.483,116.585],[-119.034,118.801],[-232.957,116.445],[-232.352,49.08],[-138.022,16.017],[-89.719,5.151],[-12.612,-36.255]],"c":true}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.076],[20.916,-4.063],[29.896,15.77],[-19.548,9.453],[-43.921,10.049],[-18.621,4.302],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.658],[-20.916,4.063],[-29.9,-15.485],[31.235,-15.096],[13.515,-3.092],[35.364,-7.835],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.605,116.573],[-118.887,118.664],[-233.233,116.832],[-232.82,49.25],[-138.158,16.122],[-89.954,5.206],[-12.612,-36.255]],"c":true}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.073],[20.908,-4.111],[29.938,15.75],[-19.527,9.521],[-43.902,10.147],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.655],[-20.908,4.111],[-29.942,-15.464],[31.201,-15.205],[13.509,-3.123],[35.364,-7.834],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.712,116.563],[-118.758,118.545],[-233.474,117.169],[-233.229,49.399],[-138.276,16.214],[-90.16,5.253],[-12.612,-36.255]],"c":true}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.071],[20.902,-4.153],[29.975,15.733],[-19.508,9.581],[-43.885,10.234],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.652],[-20.902,4.153],[-29.978,-15.447],[31.171,-15.299],[13.504,-3.149],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.806,116.553],[-118.647,118.441],[-233.684,117.464],[-233.586,49.528],[-138.379,16.294],[-90.339,5.295],[-12.612,-36.255]],"c":true}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.068],[20.896,-4.19],[30.008,15.718],[-19.492,9.632],[-43.87,10.308],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.649],[-20.896,4.19],[-30.01,-15.431],[31.145,-15.382],[13.499,-3.172],[35.365,-7.831],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.887,116.545],[-118.549,118.351],[-233.867,117.72],[-233.895,49.641],[-138.469,16.363],[-90.494,5.331],[-12.612,-36.255]],"c":true}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.066],[20.891,-4.221],[30.035,15.705],[-19.478,9.677],[-43.857,10.373],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.647],[-20.891,4.221],[-30.037,-15.418],[31.123,-15.453],[13.495,-3.192],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.957,116.539],[-118.465,118.273],[-234.025,117.942],[-234.163,49.738],[-138.547,16.423],[-90.629,5.362],[-12.612,-36.255]],"c":true}],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.065],[20.887,-4.249],[30.059,15.694],[-19.466,9.715],[-43.846,10.429],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.645],[-20.887,4.249],[-30.061,-15.406],[31.104,-15.514],[13.492,-3.209],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.017,116.533],[-118.393,118.206],[-234.161,118.132],[-234.394,49.822],[-138.613,16.475],[-90.745,5.389],[-12.612,-36.255]],"c":true}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.063],[20.883,-4.272],[30.08,15.685],[-19.456,9.748],[-43.837,10.476],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.643],[-20.883,4.272],[-30.081,-15.396],[31.087,-15.566],[13.489,-3.224],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.069,116.528],[-118.331,118.149],[-234.277,118.295],[-234.59,49.893],[-138.67,16.519],[-90.844,5.412],[-12.612,-36.255]],"c":true}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.062],[20.88,-4.291],[30.097,15.677],[-19.447,9.776],[-43.829,10.516],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.642],[-20.88,4.291],[-30.098,-15.388],[31.074,-15.61],[13.487,-3.236],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.112,116.523],[-118.279,118.101],[-234.374,118.431],[-234.756,49.954],[-138.718,16.556],[-90.927,5.432],[-12.612,-36.255]],"c":true}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.061],[20.878,-4.307],[30.111,15.67],[-19.44,9.798],[-43.822,10.55],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.641],[-20.878,4.307],[-30.112,-15.381],[31.062,-15.647],[13.485,-3.246],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.148,116.52],[-118.236,118.061],[-234.455,118.545],[-234.894,50.004],[-138.758,16.587],[-90.996,5.448],[-12.612,-36.255]],"c":true}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.06],[20.876,-4.321],[30.123,15.665],[-19.434,9.817],[-43.817,10.577],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.64],[-20.875,4.321],[-30.123,-15.375],[31.053,-15.676],[13.483,-3.255],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.177,116.517],[-118.201,118.028],[-234.521,118.637],[-235.005,50.044],[-138.79,16.612],[-91.052,5.461],[-12.612,-36.255]],"c":true}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.874,-4.331],[30.132,15.66],[-19.429,9.832],[-43.813,10.598],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.639],[-20.874,4.331],[-30.132,-15.371],[31.046,-15.7],[13.482,-3.261],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.2,116.515],[-118.173,118.003],[-234.573,118.71],[-235.093,50.076],[-138.816,16.632],[-91.096,5.471],[-12.612,-36.255]],"c":true}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.873,-4.339],[30.139,15.657],[-19.426,9.843],[-43.81,10.614],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.639],[-20.873,4.339],[-30.139,-15.368],[31.04,-15.717],[13.481,-3.266],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.217,116.513],[-118.153,117.984],[-234.611,118.764],[-235.158,50.1],[-138.835,16.646],[-91.129,5.479],[-12.612,-36.255]],"c":true}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.872,-4.344],[30.144,15.655],[-19.424,9.85],[-43.808,10.625],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.872,4.344],[-30.144,-15.365],[31.036,-15.729],[13.48,-3.269],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.229,116.512],[-118.139,117.97],[-234.638,118.801],[-235.204,50.116],[-138.848,16.656],[-91.152,5.484],[-12.612,-36.255]],"c":true}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.871,-4.348],[30.147,15.648],[-19.422,9.854],[-43.806,10.634],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.358],[31.034,-15.735],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.226,116.512],[-118.126,117.97],[-234.619,118.815],[-235.196,50.135],[-138.859,16.654],[-91.145,5.482],[-12.612,-36.255]],"c":true}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.871,-4.349],[30.146,15.64],[-19.422,9.851],[-43.806,10.635],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.639],[-20.871,4.349],[-30.146,-15.35],[31.035,-15.73],[13.48,-3.273],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.209,116.514],[-118.125,117.984],[-234.566,118.796],[-235.14,50.143],[-138.861,16.641],[-91.114,5.475],[-12.612,-36.255]],"c":true}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.06],[20.871,-4.35],[30.144,15.628],[-19.423,9.846],[-43.805,10.637],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.64],[-20.871,4.35],[-30.144,-15.339],[31.035,-15.723],[13.48,-3.273],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.185,116.516],[-118.122,118.003],[-234.489,118.767],[-235.058,50.155],[-138.863,16.621],[-91.068,5.464],[-12.612,-36.255]],"c":true}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.061],[20.871,-4.35],[30.142,15.613],[-19.424,9.84],[-43.805,10.64],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.641],[-20.871,4.35],[-30.142,-15.324],[31.037,-15.714],[13.479,-3.274],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.153,116.519],[-118.119,118.029],[-234.386,118.728],[-234.948,50.17],[-138.866,16.595],[-91.006,5.45],[-12.612,-36.255]],"c":true}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.062],[20.871,-4.352],[30.14,15.594],[-19.425,9.833],[-43.805,10.643],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.642],[-20.871,4.352],[-30.14,-15.305],[31.038,-15.702],[13.479,-3.275],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.112,116.523],[-118.115,118.062],[-234.254,118.679],[-234.807,50.19],[-138.871,16.562],[-90.927,5.432],[-12.612,-36.255]],"c":true}],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.063],[20.871,-4.353],[30.137,15.569],[-19.426,9.824],[-43.804,10.647],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.644],[-20.871,4.353],[-30.137,-15.281],[31.04,-15.687],[13.479,-3.276],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.061,116.528],[-118.11,118.104],[-234.089,118.618],[-234.632,50.215],[-138.876,16.52],[-90.828,5.409],[-12.612,-36.255]],"c":true}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.065],[20.87,-4.355],[30.133,15.54],[-19.427,9.812],[-43.803,10.652],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.646],[-20.87,4.355],[-30.133,-15.252],[31.042,-15.669],[13.479,-3.278],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.998,116.534],[-118.104,118.154],[-233.888,118.543],[-234.418,50.245],[-138.882,16.469],[-90.708,5.381],[-12.612,-36.255]],"c":true}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.067],[20.87,-4.357],[30.129,15.504],[-19.429,9.798],[-43.803,10.659],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.648],[-20.87,4.357],[-30.129,-15.217],[31.045,-15.647],[13.479,-3.28],[35.365,-7.831],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.923,116.542],[-118.096,118.215],[-233.647,118.453],[-234.162,50.281],[-138.89,16.409],[-90.564,5.347],[-12.612,-36.255]],"c":true}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.07],[20.87,-4.359],[30.123,15.462],[-19.431,9.782],[-43.802,10.666],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.651],[-20.87,4.359],[-30.124,-15.175],[31.048,-15.621],[13.478,-3.282],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.834,116.551],[-118.087,118.287],[-233.361,118.347],[-233.857,50.324],[-138.899,16.336],[-90.393,5.308],[-12.612,-36.255]],"c":true}],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.073],[20.869,-4.362],[30.117,15.412],[-19.434,9.763],[-43.801,10.674],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.654],[-20.869,4.362],[-30.118,-15.126],[31.052,-15.591],[13.478,-3.285],[35.364,-7.833],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.729,116.561],[-118.076,118.372],[-233.024,118.221],[-233.498,50.375],[-138.909,16.251],[-90.191,5.261],[-12.612,-36.255]],"c":true}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.076],[20.869,-4.365],[30.11,15.354],[-19.436,9.74],[-43.799,10.684],[-18.621,4.302],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.658],[-20.869,4.365],[-30.111,-15.068],[31.056,-15.555],[13.478,-3.288],[35.364,-7.835],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.605,116.573],[-118.064,118.472],[-232.628,118.073],[-233.076,50.435],[-138.922,16.151],[-89.954,5.206],[-12.612,-36.255]],"c":true}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.08],[20.869,-4.369],[30.102,15.285],[-19.44,9.714],[-43.798,10.696],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.663],[-20.869,4.369],[-30.102,-15.001],[31.062,-15.513],[13.477,-3.291],[35.364,-7.837],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.461,116.587],[-118.049,118.589],[-232.164,117.9],[-232.581,50.504],[-138.936,16.033],[-89.677,5.141],[-12.612,-36.255]],"c":true}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.085],[20.868,-4.374],[30.092,15.205],[-19.444,9.683],[-43.796,10.71],[-18.62,4.305],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.668],[-20.868,4.374],[-30.092,-14.922],[31.068,-15.464],[13.477,-3.296],[35.364,-7.839],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.291,116.604],[-118.032,118.726],[-231.62,117.698],[-232.003,50.586],[-138.953,15.896],[-89.352,5.066],[-12.612,-36.255]],"c":true}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.091],[20.867,-4.379],[30.08,15.111],[-19.448,9.647],[-43.794,10.726],[-18.62,4.306],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.282,-4.675],[-20.867,4.379],[-30.081,-14.829],[31.075,-15.406],[13.476,-3.301],[35.363,-7.842],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.093,116.623],[-118.013,118.887],[-230.984,117.46],[-231.325,50.682],[-138.973,15.735],[-88.971,4.977],[-12.612,-36.255]],"c":true}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.094,4.097],[20.867,-4.386],[30.066,15.001],[-19.453,9.604],[-43.792,10.745],[-18.62,4.308],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.283,-4.682],[-20.866,4.386],[-30.067,-14.721],[31.083,-15.339],[13.475,-3.306],[35.363,-7.845],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.861,116.646],[-117.989,119.075],[-230.237,117.182],[-230.53,50.794],[-138.997,15.546],[-88.524,4.873],[-12.612,-36.255]],"c":true}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.095,4.105],[20.866,-4.393],[30.05,14.871],[-19.46,9.555],[-43.789,10.767],[-18.62,4.31],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.284,-4.691],[-20.866,4.393],[-30.052,-14.593],[31.093,-15.26],[13.475,-3.313],[35.362,-7.849],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.587,116.673],[-117.962,119.296],[-229.361,116.856],[-229.596,50.926],[-139.024,15.325],[-88,4.752],[-12.612,-36.255]],"c":true}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.096,4.114],[20.864,-4.402],[30.031,14.72],[-19.467,9.496],[-43.786,10.793],[-18.619,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.286,-4.701],[-20.864,4.402],[-30.033,-14.444],[31.105,-15.167],[13.474,-3.321],[35.362,-7.853],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.267,116.705],[-117.929,119.555],[-228.332,116.472],[-228.5,51.081],[-139.057,15.065],[-87.385,4.609],[-12.612,-36.255]],"c":true}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.097,4.125],[20.863,-4.412],[30.009,14.543],[-19.476,9.428],[-43.782,10.823],[-18.619,4.315],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.287,-4.714],[-20.863,4.412],[-30.011,-14.27],[31.118,-15.058],[13.472,-3.33],[35.361,-7.858],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.894,116.741],[-117.892,119.857],[-227.135,116.026],[-227.225,51.261],[-139.094,14.762],[-86.668,4.442],[-12.612,-36.255]],"c":true}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.099,4.137],[20.862,-4.424],[29.984,14.342],[-19.485,9.35],[-43.778,10.857],[-18.619,4.319],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.289,-4.727],[-20.862,4.424],[-29.987,-14.072],[31.133,-14.935],[13.471,-3.341],[35.36,-7.864],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.47,116.783],[-117.849,120.2],[-225.773,115.518],[-225.774,51.466],[-139.137,14.417],[-85.853,4.253],[-12.612,-36.255]],"c":true}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.1,4.15],[20.86,-4.436],[29.957,14.124],[-19.496,9.267],[-43.773,10.894],[-18.618,4.322],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.291,-4.742],[-20.86,4.436],[-29.96,-13.857],[31.15,-14.802],[13.47,-3.352],[35.36,-7.87],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.011,116.828],[-117.803,120.572],[-224.3,114.969],[-224.206,51.688],[-139.184,14.045],[-84.972,4.048],[-12.612,-36.255]],"c":true}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.163],[20.859,-4.449],[29.93,13.909],[-19.507,9.184],[-43.769,10.931],[-18.618,4.326],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.292,-4.757],[-20.859,4.449],[-29.934,-13.645],[31.166,-14.67],[13.468,-3.364],[35.359,-7.876],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.555,116.873],[-117.757,120.94],[-222.839,114.425],[-222.65,51.908],[-139.23,13.675],[-84.098,3.845],[-12.612,-36.255]],"c":true}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.103,4.174],[20.857,-4.46],[29.906,13.716],[-19.516,9.109],[-43.765,10.964],[-18.618,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.77],[-20.857,4.46],[-29.91,-13.456],[31.181,-14.552],[13.467,-3.374],[35.358,-7.881],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.149,116.913],[-117.716,121.268],[-221.536,113.939],[-221.262,52.104],[-139.27,13.346],[-83.319,3.664],[-12.612,-36.255]],"c":true}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.184],[20.856,-4.469],[29.887,13.561],[-19.523,9.049],[-43.761,10.991],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.78],[-20.856,4.469],[-29.891,-13.302],[31.193,-14.457],[13.466,-3.382],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.82,116.945],[-117.683,121.535],[-220.479,113.545],[-220.137,52.263],[-139.304,13.079],[-82.687,3.517],[-12.612,-36.255]],"c":true}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.191],[20.855,-4.476],[29.872,13.443],[-19.529,9.004],[-43.759,11.011],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.788],[-20.855,4.476],[-29.876,-13.186],[31.202,-14.385],[13.465,-3.388],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.571,116.97],[-117.658,121.736],[-219.68,113.247],[-219.285,52.383],[-139.329,12.877],[-82.208,3.406],[-12.612,-36.255]],"c":true}],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.196],[20.855,-4.481],[29.862,13.358],[-19.533,8.971],[-43.757,11.026],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.794],[-20.855,4.481],[-29.866,-13.102],[31.208,-14.333],[13.465,-3.393],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.392,116.987],[-117.64,121.881],[-219.104,113.033],[-218.672,52.47],[-139.347,12.731],[-81.864,3.326],[-12.612,-36.255]],"c":true}],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.199],[20.854,-4.484],[29.855,13.299],[-19.536,8.949],[-43.756,11.035],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.798],[-20.854,4.484],[-29.859,-13.045],[31.213,-14.297],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.269,116.999],[-117.628,121.981],[-218.71,112.886],[-218.252,52.529],[-139.359,12.631],[-81.628,3.271],[-12.612,-36.255]],"c":true}],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.486],[29.85,13.263],[-19.538,8.935],[-43.755,11.042],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.486],[-29.854,-13.008],[31.215,-14.274],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.191,117.007],[-117.62,122.044],[-218.46,112.793],[-217.987,52.567],[-139.367,12.568],[-81.479,3.237],[-12.612,-36.255]],"c":true}],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.243],[-19.539,8.927],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.989],[31.217,-14.262],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.15,117.011],[-117.616,122.077],[-218.327,112.743],[-217.844,52.587],[-139.371,12.535],[-81.399,3.218],[-12.612,-36.255]],"c":true}],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.848,-4.513],[29.862,13.2],[-19.528,8.948],[-43.739,11.098],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.848,4.513],[-29.866,-12.947],[31.199,-14.296],[13.459,-3.415],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.548,122.1],[-218.226,112.862],[-217.814,52.729],[-139.437,12.567],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":223,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.823,-4.611],[29.919,13.057],[-19.482,9.039],[-43.68,11.304],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.823,4.611],[-29.922,-12.803],[31.126,-14.441],[13.441,-3.478],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.285,122.148],[-217.992,113.388],[-217.864,53.263],[-139.689,12.737],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":224,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.768,-4.829],[30.048,12.737],[-19.381,9.242],[-43.547,11.762],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.768,4.829],[-30.048,-12.483],[30.964,-14.766],[13.4,-3.619],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.699,122.256],[-217.467,114.563],[-217.975,54.455],[-140.253,13.115],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.687,-5.148],[30.236,12.27],[-19.233,9.538],[-43.353,12.429],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.687,5.148],[-30.232,-12.017],[30.728,-15.239],[13.34,-3.825],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.846,122.413],[-216.704,116.275],[-218.137,56.192],[-141.074,13.666],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.619,-5.421],[30.397,11.871],[-19.106,9.791],[-43.188,13.001],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.619,5.421],[-30.39,-11.617],[30.526,-15.644],[13.289,-4.001],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.114,122.548],[-216.049,117.741],[-218.276,57.679],[-141.777,14.138],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.572,-5.607],[30.507,11.597],[-19.019,9.965],[-43.074,13.392],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.572,5.607],[-30.497,-11.344],[30.387,-15.921],[13.255,-4.121],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.614,122.64],[-215.602,118.745],[-218.371,58.697],[-142.258,14.461],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.54,-5.733],[30.58,11.414],[-18.961,10.081],[-42.998,13.655],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.54,5.733],[-30.57,-11.16],[30.294,-16.107],[13.231,-4.202],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.278,122.702],[-215.301,119.418],[-218.435,59.38],[-142.581,14.678],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.519,-5.817],[30.63,11.29],[-18.922,10.16],[-42.947,13.832],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.519,5.817],[-30.618,-11.037],[30.232,-16.232],[13.215,-4.256],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.052,122.743],[-215.099,119.871],[-218.478,59.84],[-142.799,14.823],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.505,-5.873],[30.663,11.208],[-18.896,10.211],[-42.913,13.948],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.505,5.873],[-30.65,-10.955],[30.19,-16.315],[13.205,-4.292],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.166,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.903,122.771],[-214.966,120.17],[-218.506,60.143],[-142.942,14.92],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.496,-5.907],[30.683,11.158],[-18.88,10.244],[-42.892,14.021],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.496,5.907],[-30.67,-10.904],[30.165,-16.366],[13.198,-4.314],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.81,122.788],[-214.883,120.357],[-218.524,60.332],[-143.032,14.98],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.491,-5.926],[30.694,11.131],[-18.872,10.261],[-42.881,14.06],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.491,5.926],[-30.681,-10.877],[30.151,-16.393],[13.195,-4.326],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.761,122.797],[-214.838,120.456],[-218.533,60.433],[-143.079,15.012],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.491,-5.926],[30.694,11.13],[-18.871,10.261],[-42.88,14.06],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.491,5.926],[-30.681,-10.877],[30.15,-16.393],[13.195,-4.327],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.76,122.801],[-214.837,120.461],[-218.532,60.439],[-143.08,15.017],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.494,-5.909],[30.683,11.154],[-18.878,10.245],[-42.888,14.024],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.494,5.909],[-30.67,-10.901],[30.161,-16.368],[13.197,-4.315],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.807,122.805],[-214.874,120.382],[-218.52,60.362],[-143.036,15.005],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.5,-5.878],[30.662,11.198],[-18.891,10.215],[-42.903,13.959],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.5,5.878],[-30.649,-10.945],[30.181,-16.321],[13.202,-4.295],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.891,122.811],[-214.94,120.24],[-218.497,60.223],[-142.957,14.984],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.509,-5.831],[30.631,11.264],[-18.91,10.171],[-42.926,13.86],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.509,5.831],[-30.619,-11.011],[30.212,-16.25],[13.209,-4.265],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.018,122.822],[-215.041,120.025],[-218.463,60.011],[-142.837,14.951],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.522,-5.764],[30.587,11.358],[-18.937,10.109],[-42.957,13.721],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.522,5.764],[-30.575,-11.105],[30.255,-16.15],[13.219,-4.222],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.198,122.836],[-215.184,119.721],[-218.416,59.713],[-142.668,14.904],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.539,-5.674],[30.527,11.485],[-18.973,10.024],[-43.001,13.532],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.539,5.674],[-30.517,-11.232],[30.313,-16.015],[13.232,-4.164],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.441,122.855],[-215.377,119.309],[-218.351,59.31],[-142.439,14.841],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.562,-5.555],[30.448,11.653],[-19.021,9.911],[-43.058,13.281],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.562,5.555],[-30.439,-11.4],[30.39,-15.835],[13.249,-4.087],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.764,122.881],[-215.634,118.763],[-218.265,58.774],[-142.135,14.757],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.592,-5.398],[30.343,11.875],[-19.085,9.763],[-43.133,12.95],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.592,5.398],[-30.336,-11.622],[30.492,-15.598],[13.273,-3.985],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.19,122.915],[-215.972,118.042],[-218.152,58.067],[-141.734,14.646],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.632,-5.189],[30.204,12.169],[-19.169,9.566],[-43.233,12.512],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.632,5.189],[-30.2,-11.916],[30.627,-15.284],[13.303,-3.85],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.755,122.96],[-216.421,117.086],[-218.001,57.13],[-141.203,14.5],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.686,-4.908],[30.018,12.566],[-19.283,9.302],[-43.368,11.922],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.686,4.908],[-30.017,-12.313],[30.808,-14.861],[13.345,-3.669],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.515,123.021],[-217.025,115.8],[-217.799,55.869],[-140.488,14.302],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.76,-4.519],[29.759,13.113],[-19.44,8.935],[-43.554,11.106],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.76,4.519],[-29.763,-12.861],[31.059,-14.276],[13.402,-3.417],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.567,123.104],[-217.86,114.021],[-217.519,54.124],[-139.498,14.029],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.865,-3.972],[29.396,13.885],[-19.662,8.42],[-43.816,9.956],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.865,3.972],[-29.406,-13.633],[31.413,-13.452],[13.483,-3.064],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-119.049,123.222],[-219.037,111.514],[-217.125,51.666],[-138.104,13.644],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.997,-3.279],[28.935,14.862],[-19.942,7.767],[-44.148,8.501],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.997,3.279],[-28.954,-14.61],[31.861,-12.409],[13.585,-2.616],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-120.924,123.372],[-220.526,108.342],[-216.626,48.556],[-136.34,13.158],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.11,-2.69],[28.544,15.692],[-20.18,7.212],[-44.431,7.265],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.11,2.69],[-28.57,-15.44],[32.241,-11.522],[13.672,-2.235],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-122.517,123.499],[-221.791,105.647],[-216.202,45.913],[-134.841,12.744],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.177,-2.342],[28.313,16.183],[-20.321,6.884],[-44.597,6.533],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.177,2.342],[-28.343,-15.931],[32.466,-10.998],[13.723,-2.01],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-123.459,123.574],[-222.539,104.053],[-215.952,44.35],[-133.955,12.499],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.212,-2.159],[28.191,16.441],[-20.395,6.711],[-44.685,6.149],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.212,2.159],[-28.224,-16.189],[32.585,-10.723],[13.75,-1.892],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-123.954,123.613],[-222.933,103.215],[-215.82,43.528],[-133.488,12.371],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.228,-2.074],[28.135,16.561],[-20.429,6.631],[-44.726,5.97],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.228,2.074],[-28.168,-16.31],[32.64,-10.595],[13.763,-1.837],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.185,123.632],[-223.116,102.825],[-215.759,43.146],[-133.272,12.311],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.054],[28.123,16.592],[-20.437,6.615],[-44.735,5.929],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.054],[-28.156,-16.341],[32.652,-10.569],[13.766,-1.825],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.146,117.011],[-124.237,123.627],[-223.187,102.747],[-215.777,43.054],[-133.222,12.302],[-81.393,3.217],[-12.612,-36.255]],"c":true}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[21.23,-2.068],[28.135,16.587],[-20.431,6.634],[-44.73,5.957],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-21.23,2.068],[-28.168,-16.335],[32.642,-10.599],[13.764,-1.833],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.176,117.008],[-124.201,123.593],[-223.254,102.841],[-215.891,43.095],[-133.255,12.328],[-81.45,3.23],[-12.612,-36.255]],"c":true}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[21.226,-2.092],[28.156,16.577],[-20.42,6.669],[-44.72,6.008],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.799],[-21.226,2.092],[-28.189,-16.325],[32.625,-10.655],[13.761,-1.849],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.231,117.003],[-124.136,123.533],[-223.377,103.014],[-216.1,43.171],[-133.316,12.375],[-81.555,3.254],[-12.612,-36.255]],"c":true}],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.198],[21.22,-2.131],[28.19,16.561],[-20.403,6.723],[-44.705,6.086],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.797],[-21.22,2.131],[-28.223,-16.308],[32.598,-10.741],[13.756,-1.873],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.316,116.995],[-124.034,123.438],[-223.568,103.281],[-216.424,43.289],[-133.409,12.447],[-81.717,3.292],[-12.612,-36.255]],"c":true}],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.195],[21.211,-2.185],[28.238,16.539],[-20.379,6.8],[-44.682,6.198],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.793],[-21.211,2.185],[-28.27,-16.285],[32.56,-10.864],[13.749,-1.907],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.437,116.983],[-123.889,123.303],[-223.841,103.664],[-216.887,43.457],[-133.544,12.551],[-81.95,3.346],[-12.612,-36.255]],"c":true}],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.19],[21.2,-2.26],[28.304,16.508],[-20.346,6.905],[-44.652,6.351],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.787],[-21.2,2.26],[-28.335,-16.253],[32.507,-11.032],[13.74,-1.954],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.602,116.966],[-123.69,123.119],[-224.214,104.187],[-217.52,43.687],[-133.727,12.693],[-82.268,3.42],[-12.612,-36.255]],"c":true}],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.184],[21.184,-2.358],[28.391,16.468],[-20.303,7.044],[-44.612,6.552],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.78],[-21.184,2.358],[-28.42,-16.211],[32.438,-11.253],[13.728,-2.016],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.82,116.945],[-123.428,122.877],[-224.705,104.876],[-218.353,43.99],[-133.968,12.88],[-82.687,3.517],[-12.612,-36.255]],"c":true}],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.176],[21.164,-2.483],[28.501,16.417],[-20.247,7.22],[-44.562,6.808],[-18.617,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.771],[-21.164,2.483],[-28.528,-16.158],[32.35,-11.534],[13.712,-2.095],[35.358,-7.882],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.097,116.918],[-123.096,122.568],[-225.33,105.751],[-219.412,44.375],[-134.275,13.117],[-83.219,3.641],[-12.612,-36.255]],"c":true}],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.166],[21.141,-2.634],[28.634,16.355],[-20.18,7.434],[-44.501,7.118],[-18.618,4.327],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.293,-4.761],[-21.141,2.634],[-28.659,-16.094],[32.243,-11.875],[13.693,-2.19],[35.359,-7.877],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.433,116.885],[-122.694,122.195],[-226.085,106.81],[-220.694,44.841],[-134.646,13.404],[-83.863,3.79],[-12.612,-36.255]],"c":true}],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.101,4.156],[21.114,-2.805],[28.785,16.285],[-20.105,7.675],[-44.431,7.468],[-18.618,4.324],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.291,-4.748],[-21.114,2.805],[-28.808,-16.021],[32.122,-12.26],[13.672,-2.298],[35.359,-7.872],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.812,116.848],[-122.238,121.773],[-226.94,108.009],[-222.145,45.369],[-135.066,13.729],[-84.591,3.96],[-12.612,-36.255]],"c":true}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.1,4.144],[21.086,-2.984],[28.943,16.212],[-20.026,7.928],[-44.359,7.835],[-18.619,4.321],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.29,-4.736],[-21.086,2.984],[-28.963,-15.945],[31.996,-12.664],[13.65,-2.411],[35.36,-7.867],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.21,116.809],[-121.761,121.331],[-227.835,109.264],[-223.663,45.921],[-135.506,14.07],[-85.354,4.137],[-12.612,-36.255]],"c":true}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.098,4.133],[21.058,-3.158],[29.097,16.141],[-19.949,8.174],[-44.288,8.192],[-18.619,4.318],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.288,-4.723],[-21.058,3.158],[-29.114,-15.871],[31.873,-13.055],[13.628,-2.521],[35.361,-7.862],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.595,116.771],[-121.298,120.901],[-228.705,110.483],[-225.138,46.457],[-135.933,14.4],[-86.095,4.309],[-12.612,-36.255]],"c":true}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.097,4.123],[21.033,-3.318],[29.238,16.075],[-19.878,8.4],[-44.224,8.52],[-18.619,4.315],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.287,-4.712],[-21.033,3.318],[-29.253,-15.803],[31.761,-13.416],[13.608,-2.622],[35.361,-7.857],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.951,116.736],[-120.872,120.506],[-229.505,111.605],[-226.495,46.95],[-136.326,14.705],[-86.777,4.468],[-12.612,-36.255]],"c":true}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.096,4.114],[21.011,-3.46],[29.364,16.017],[-19.815,8.601],[-44.166,8.812],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.286,-4.701],[-21.011,3.46],[-29.377,-15.742],[31.66,-13.737],[13.59,-2.712],[35.362,-7.853],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.267,116.705],[-120.493,120.154],[-230.218,112.604],[-227.705,47.39],[-136.676,14.976],[-87.385,4.609],[-12.612,-36.255]],"c":true}],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.095,4.106],[20.991,-3.585],[29.474,15.966],[-19.759,8.778],[-44.115,9.069],[-18.62,4.31],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.284,-4.693],[-20.991,3.585],[-29.485,-15.689],[31.572,-14.019],[13.575,-2.791],[35.362,-7.849],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.545,116.677],[-120.159,119.845],[-230.844,113.481],[-228.766,47.776],[-136.984,15.214],[-87.918,4.733],[-12.612,-36.255]],"c":true}],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.094,4.1],[20.974,-3.694],[29.57,15.921],[-19.711,8.932],[-44.071,9.293],[-18.62,4.308],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.283,-4.685],[-20.974,3.694],[-29.58,-15.642],[31.495,-14.265],[13.561,-2.86],[35.363,-7.846],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.787,116.654],[-119.869,119.575],[-231.389,114.247],[-229.692,48.113],[-137.252,15.421],[-88.383,4.841],[-12.612,-36.255]],"c":true}],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.094],[20.959,-3.79],[29.654,15.882],[-19.669,9.067],[-44.032,9.488],[-18.62,4.307],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.283,-4.678],[-20.959,3.79],[-29.662,-15.602],[31.428,-14.479],[13.549,-2.92],[35.363,-7.843],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.998,116.633],[-119.615,119.34],[-231.865,114.913],[-230.499,48.406],[-137.485,15.602],[-88.788,4.935],[-12.612,-36.255]],"c":true}],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.088],[20.946,-3.872],[29.727,15.848],[-19.632,9.184],[-43.999,9.658],[-18.62,4.305],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.282,-4.672],[-20.946,3.872],[-29.734,-15.566],[31.369,-14.666],[13.539,-2.972],[35.363,-7.841],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.182,116.615],[-119.395,119.135],[-232.279,115.494],[-231.202,48.662],[-137.689,15.76],[-89.141,5.017],[-12.612,-36.255]],"c":true}],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.084],[20.935,-3.945],[29.791,15.819],[-19.6,9.286],[-43.969,9.806],[-18.621,4.304],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.667],[-20.935,3.945],[-29.797,-15.535],[31.318,-14.829],[13.53,-3.017],[35.364,-7.839],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.343,116.599],[-119.202,118.957],[-232.641,116.002],[-231.816,48.885],[-137.867,15.897],[-89.45,5.088],[-12.612,-36.255]],"c":true}],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.08],[20.925,-4.008],[29.847,15.793],[-19.572,9.375],[-43.944,9.935],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.662],[-20.925,4.008],[-29.852,-15.509],[31.274,-14.972],[13.522,-3.057],[35.364,-7.837],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.483,116.585],[-119.034,118.801],[-232.957,116.445],[-232.352,49.08],[-138.022,16.017],[-89.719,5.151],[-12.612,-36.255]],"c":true}],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.076],[20.916,-4.063],[29.896,15.77],[-19.548,9.453],[-43.921,10.049],[-18.621,4.302],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.658],[-20.916,4.063],[-29.9,-15.485],[31.235,-15.096],[13.515,-3.092],[35.364,-7.835],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.605,116.573],[-118.887,118.664],[-233.233,116.832],[-232.82,49.25],[-138.158,16.122],[-89.954,5.206],[-12.612,-36.255]],"c":true}],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.073],[20.908,-4.111],[29.938,15.75],[-19.527,9.521],[-43.902,10.147],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.655],[-20.908,4.111],[-29.942,-15.464],[31.201,-15.205],[13.509,-3.123],[35.364,-7.834],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.712,116.563],[-118.758,118.545],[-233.474,117.169],[-233.229,49.399],[-138.276,16.214],[-90.16,5.253],[-12.612,-36.255]],"c":true}],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.071],[20.902,-4.153],[29.975,15.733],[-19.508,9.581],[-43.885,10.234],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.652],[-20.902,4.153],[-29.978,-15.447],[31.171,-15.299],[13.504,-3.149],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.806,116.553],[-118.647,118.441],[-233.684,117.464],[-233.586,49.528],[-138.379,16.294],[-90.339,5.295],[-12.612,-36.255]],"c":true}],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.068],[20.896,-4.19],[30.008,15.718],[-19.492,9.632],[-43.87,10.308],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.649],[-20.896,4.19],[-30.01,-15.431],[31.145,-15.382],[13.499,-3.172],[35.365,-7.831],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.887,116.545],[-118.549,118.351],[-233.867,117.72],[-233.895,49.641],[-138.469,16.363],[-90.494,5.331],[-12.612,-36.255]],"c":true}],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.066],[20.891,-4.221],[30.035,15.705],[-19.478,9.677],[-43.857,10.373],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.647],[-20.891,4.221],[-30.037,-15.418],[31.123,-15.453],[13.495,-3.192],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.957,116.539],[-118.465,118.273],[-234.025,117.942],[-234.163,49.738],[-138.547,16.423],[-90.629,5.362],[-12.612,-36.255]],"c":true}],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.065],[20.887,-4.249],[30.059,15.694],[-19.466,9.715],[-43.846,10.429],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.645],[-20.887,4.249],[-30.061,-15.406],[31.104,-15.514],[13.492,-3.209],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.017,116.533],[-118.393,118.206],[-234.161,118.132],[-234.394,49.822],[-138.613,16.475],[-90.745,5.389],[-12.612,-36.255]],"c":true}],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.063],[20.883,-4.272],[30.08,15.685],[-19.456,9.748],[-43.837,10.476],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.643],[-20.883,4.272],[-30.081,-15.396],[31.087,-15.566],[13.489,-3.224],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.069,116.528],[-118.331,118.149],[-234.277,118.295],[-234.59,49.893],[-138.67,16.519],[-90.844,5.412],[-12.612,-36.255]],"c":true}],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.062],[20.88,-4.291],[30.097,15.677],[-19.447,9.776],[-43.829,10.516],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.642],[-20.88,4.291],[-30.098,-15.388],[31.074,-15.61],[13.487,-3.236],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.112,116.523],[-118.279,118.101],[-234.374,118.431],[-234.756,49.954],[-138.718,16.556],[-90.927,5.432],[-12.612,-36.255]],"c":true}],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.061],[20.878,-4.307],[30.111,15.67],[-19.44,9.798],[-43.822,10.55],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.641],[-20.878,4.307],[-30.112,-15.381],[31.062,-15.647],[13.485,-3.246],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.148,116.52],[-118.236,118.061],[-234.455,118.545],[-234.894,50.004],[-138.758,16.587],[-90.996,5.448],[-12.612,-36.255]],"c":true}],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.06],[20.876,-4.321],[30.123,15.665],[-19.434,9.817],[-43.817,10.577],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.64],[-20.875,4.321],[-30.123,-15.375],[31.053,-15.676],[13.483,-3.255],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.177,116.517],[-118.201,118.028],[-234.521,118.637],[-235.005,50.044],[-138.79,16.612],[-91.052,5.461],[-12.612,-36.255]],"c":true}],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.874,-4.331],[30.132,15.66],[-19.429,9.832],[-43.813,10.598],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.639],[-20.874,4.331],[-30.132,-15.371],[31.046,-15.7],[13.482,-3.261],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.2,116.515],[-118.173,118.003],[-234.573,118.71],[-235.093,50.076],[-138.816,16.632],[-91.096,5.471],[-12.612,-36.255]],"c":true}],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.873,-4.339],[30.139,15.657],[-19.426,9.843],[-43.81,10.614],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.639],[-20.873,4.339],[-30.139,-15.368],[31.04,-15.717],[13.481,-3.266],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.217,116.513],[-118.153,117.984],[-234.611,118.764],[-235.158,50.1],[-138.835,16.646],[-91.129,5.479],[-12.612,-36.255]],"c":true}],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.872,-4.344],[30.144,15.655],[-19.424,9.85],[-43.808,10.625],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.872,4.344],[-30.144,-15.365],[31.036,-15.729],[13.48,-3.269],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.229,116.512],[-118.139,117.97],[-234.638,118.801],[-235.204,50.116],[-138.848,16.656],[-91.152,5.484],[-12.612,-36.255]],"c":true}],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.694117665291,0.435294121504,0.345098048449,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Thumb","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":321,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Nail - PATH","parent":5,"tt":1,"tp":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-215.854,53.1,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.7},"t":59,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.6,"y":0},"t":95,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":122,"s":[{"i":[[0,0],[4.232,-12.502],[12.921,-1.766],[0,0],[-10.742,11.216],[0,0],[-9.55,-10.068]],"o":[[8.923,9.803],[-4.232,12.502],[0,0],[-17.559,-12.801],[0,0],[13.042,-4.219],[0,0]],"v":[[43.524,-16.699],[51.346,19.151],[23.347,42.689],[-15.873,40.533],[-19.404,-10.788],[6.329,-27.088],[43.177,-17.287]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":140,"s":[{"i":[[0,0],[5.977,-11.693],[12.492,0.343],[0,0],[-11.927,9.366],[0,0],[-7.435,-11.514]],"o":[[6.885,11.15],[-5.977,11.693],[0,0],[-14.573,-15.516],[0,0],[12.995,-2.066],[0,0]],"v":[[41.831,-31.462],[43.556,5.299],[13.369,24.072],[-23.361,15.588],[-18.585,-35.795],[8.315,-47.769],[41.596,-32.101]],"c":true}]},{"t":175,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}],"h":1},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":188,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.154,"y":1},"t":218,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":222,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":234,"s":[{"i":[[0,0],[4.232,-12.502],[12.921,-1.766],[0,0],[-10.742,11.216],[0,0],[-9.55,-10.068]],"o":[[8.923,9.803],[-4.232,12.502],[0,0],[-17.559,-12.801],[0,0],[13.042,-4.219],[0,0]],"v":[[43.524,-16.699],[51.346,19.151],[23.347,42.689],[-15.873,40.533],[-19.404,-10.788],[6.329,-27.088],[43.177,-17.287]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":252,"s":[{"i":[[0,0],[5.977,-11.693],[12.492,0.343],[0,0],[-11.927,9.366],[0,0],[-7.435,-11.514]],"o":[[6.885,11.15],[-5.977,11.693],[0,0],[-14.573,-15.516],[0,0],[12.995,-2.066],[0,0]],"v":[[41.831,-31.462],[43.556,5.299],[13.369,24.072],[-23.361,15.588],[-18.585,-35.795],[8.315,-47.769],[41.596,-32.101]],"c":true}]},{"t":287,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.75686275959,0.549019634724,0.474509805441,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Nail","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":321,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Thumb - PATH","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":59,"s":[17.7]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":95,"s":[15.7]},{"i":{"x":[0.28],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":147,"s":[15.7]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.18],"y":[0]},"t":201,"s":[17.7]},{"i":{"x":[0.28],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":259,"s":[15.7]},{"t":313,"s":[17.7]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":122,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.6,"y":0.6},"o":{"x":0.604,"y":0.604},"t":145,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.28,"y":1},"o":{"x":0.2,"y":0},"t":147,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.8,"y":0.8},"t":201,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":234,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.6,"y":0.6},"o":{"x":0.604,"y":0.604},"t":257,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.28,"y":1},"o":{"x":0.2,"y":0},"t":259,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":313,"s":[0,0,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,49,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":25,"nm":"Elevation","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[0,0,0,0.25],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":63.75,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":180,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":4,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":8,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.7},"t":59,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.6,"y":0},"t":95,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":122,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.49,-5.931],[30.698,11.123],[-18.869,10.266],[-42.877,14.071],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.49,5.931],[-30.684,-10.869],[30.147,-16.402],[13.194,-4.33],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.746,122.8],[-214.825,120.486],[-218.536,60.463],[-143.094,15.021],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":140,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"t":175,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"h":1},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":188,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.154,"y":1},"t":218,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":222,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":234,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.49,-5.931],[30.698,11.123],[-18.869,10.266],[-42.877,14.071],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.49,5.931],[-30.684,-10.869],[30.147,-16.402],[13.194,-4.33],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.746,122.8],[-214.825,120.486],[-218.536,60.463],[-143.094,15.021],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":252,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"t":287,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.694117665291,0.435294121504,0.345098048449,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Thumb","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":321,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".onSurfaceHome","cl":"onSurfaceHome","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":65,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":77,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":89,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":119,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":141,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":150,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":231,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":253,"s":[100]},{"t":262,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,1238,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":843,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[1]},"o":{"x":[1],"y":[0]},"t":123,"s":[581]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.312],"y":[4.051]},"t":141,"s":[910]},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":150,"s":[910]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":180,"s":[581]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[1],"y":[0]},"t":235,"s":[581]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.312],"y":[4.051]},"t":253,"s":[910]},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":262,"s":[910]},{"t":292,"s":[581]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":123,"s":[90]},{"t":141,"s":[420],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":150,"s":[200]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":180,"s":[90]},{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":235,"s":[90]},{"t":253,"s":[420],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":262,"s":[420]},{"t":292,"s":[90]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":1,"k":[{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":123,"s":[90]},{"t":141,"s":[420],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":150,"s":[200]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":180,"s":[90]},{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":235,"s":[90]},{"t":253,"s":[420],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":262,"s":[420]},{"t":292,"s":[90]}],"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491],[-331.5,-581],[331.5,-581],[421.5,-491],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.974,0],[0,0],[0,-49.974],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-49.974],[0,0],[49.974,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.801],[-330.951,-581.35],[330.951,-581.35],[421.5,-490.801],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.928,0],[0,0],[0,-50.928],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-50.928],[0,0],[50.928,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.171],[-329.222,-582.448],[329.222,-582.448],[421.5,-490.171],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-52.61,0],[0,0],[0,-52.61],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-52.61],[0,0],[52.61,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-489.054],[-326.174,-584.38],[326.174,-584.38],[421.5,-489.054],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-55.113,0],[0,0],[0,-55.113],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-55.113],[0,0],[55.113,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-487.386],[-321.64,-587.246],[321.64,-587.246],[421.5,-487.386],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-58.548,0],[0,0],[0,-58.548],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-58.548],[0,0],[58.548,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-485.085],[-315.415,-591.17],[315.415,-591.17],[421.5,-485.085],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-63.055,0],[0,0],[0,-63.055],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-63.055],[0,0],[63.055,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-482.052],[-307.248,-596.303],[307.248,-596.303],[421.5,-482.052],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-68.807,0],[0,0],[0,-68.807],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-68.807],[0,0],[68.807,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-478.165],[-296.826,-602.839],[296.826,-602.839],[421.5,-478.165],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-76.024,0],[0,0],[0,-76.024],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-76.024],[0,0],[76.024,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-473.276],[-283.75,-611.026],[283.75,-611.026],[421.5,-473.276],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-84.988,0],[0,0],[0,-84.988],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-84.988],[0,0],[84.988,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-467.201],[-267.508,-621.193],[267.508,-621.193],[421.5,-467.201],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-96.065,0],[0,0],[0,-96.065],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-96.065],[0,0],[96.065,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-459.73],[-247.438,-633.792],[247.438,-633.792],[421.5,-459.73],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.724,0],[0,0],[0,-109.724],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-109.724],[0,0],[109.724,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-450.661],[-222.689,-649.472],[222.689,-649.472],[421.5,-450.661],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-126.533,0],[0,0],[0,-126.533],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-126.533],[0,0],[126.533,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-439.944],[-192.233,-669.211],[192.233,-669.211],[421.5,-439.944],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-147.016,0],[0,0],[0,-147.016],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-147.016],[0,0],[147.016,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-428.221],[-155.118,-694.603],[155.118,-694.603],[421.5,-428.221],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-171.03,0],[0,0],[0,-171.03],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-171.03],[0,0],[171.03,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-418.589],[-111.608,-728.481],[111.608,-728.481],[421.5,-418.589],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-196.109,0],[0,0],[0,-196.109],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-196.109],[0,0],[196.109,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-420.983],[-66.165,-776.318],[66.165,-776.318],[421.5,-420.983],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-216.647,0],[0,0],[0,-216.647],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-216.647],[0,0],[216.647,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-451.801],[-28.952,-844.349],[28.952,-844.349],[421.5,-451.801],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-228.394,0],[0,0],[0,-228.394],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-228.394],[0,0],[228.394,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-484.12],[-7.668,-897.952],[7.668,-897.952],[421.5,-484.12],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490],[-1.5,-910],[1.5,-910],[421.5,-490],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491.387],[-1.5,-911.387],[1.5,-911.387],[421.5,-491.387],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491.633],[-1.5,-911.633],[1.5,-911.633],[421.5,-491.633],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491.036],[-1.5,-911.036],[1.5,-911.036],[421.5,-491.036],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.63],[-1.5,-910.63],[1.5,-910.63],[421.5,-490.63],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.186],[-1.5,-910.186],[1.5,-910.186],[421.5,-490.186],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.018],[-1.5,-910.018],[1.5,-910.018],[421.5,-490.018],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-710],[-221.5,-910],[221.5,-910],[421.5,-710],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.251,0],[0,0],[0,-110.251],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-110.251],[0,0],[110.251,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-709.533],[-221.734,-909.299],[221.734,-909.299],[421.5,-709.533],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.855,0],[0,0],[0,-109.855],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-109.855],[0,0],[109.855,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-708.106],[-222.451,-907.155],[222.451,-907.155],[421.5,-708.106],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.183,0],[0,0],[0,-109.183],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-109.183],[0,0],[109.183,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-705.681],[-223.669,-903.511],[223.669,-903.511],[421.5,-705.681],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-108.224,0],[0,0],[0,-108.224],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-108.224],[0,0],[108.224,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-702.223],[-225.406,-898.317],[225.406,-898.317],[421.5,-702.223],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-106.972,0],[0,0],[0,-106.972],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-106.972],[0,0],[106.972,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-697.707],[-227.674,-891.533],[227.674,-891.533],[421.5,-697.707],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-105.423,0],[0,0],[0,-105.422],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-105.422],[0,0],[105.422,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-692.117],[-230.483,-883.134],[230.483,-883.134],[421.5,-692.117],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-103.574,0],[0,0],[0,-103.574],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-103.574],[0,0],[103.574,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-685.448],[-233.832,-873.116],[233.832,-873.116],[421.5,-685.448],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-101.431,0],[0,0],[0,-101.431],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-101.431],[0,0],[101.431,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-677.717],[-237.715,-861.502],[237.715,-861.502],[421.5,-677.717],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-99.003,0],[0,0],[0,-99.003],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-99.003],[0,0],[99.003,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-668.96],[-242.114,-848.347],[242.114,-848.347],[421.5,-668.96],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-96.309,0],[0,0],[0,-96.309],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-96.309],[0,0],[96.309,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-659.241],[-246.995,-833.746],[246.995,-833.746],[421.5,-659.241],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-93.374,0],[0,0],[0,-93.374],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-93.374],[0,0],[93.374,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-648.653],[-252.314,-817.839],[252.314,-817.839],[421.5,-648.653],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-90.232,0],[0,0],[0,-90.232],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-90.232],[0,0],[90.232,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-637.317],[-258.007,-800.81],[258.007,-800.81],[421.5,-637.317],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-86.925,0],[0,0],[0,-86.925],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-86.925],[0,0],[86.925,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-625.39],[-263.998,-782.892],[263.998,-782.892],[421.5,-625.39],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-83.505,0],[0,0],[0,-83.505],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-83.505],[0,0],[83.505,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-613.051],[-270.196,-764.355],[270.196,-764.355],[421.5,-613.051],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-76.546,0],[0,0],[0,-76.546],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-76.546],[0,0],[76.546,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-587.949],[-282.804,-726.645],[282.804,-726.645],[421.5,-587.949],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-73.126,0],[0,0],[0,-73.126],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-73.126],[0,0],[73.126,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-575.61],[-289.002,-708.108],[289.002,-708.108],[421.5,-575.61],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-69.819,0],[0,0],[0,-69.819],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-69.819],[0,0],[69.819,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-563.683],[-294.993,-690.19],[294.993,-690.19],[421.5,-563.683],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-66.677,0],[0,0],[0,-66.677],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-66.677],[0,0],[66.677,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-552.347],[-300.686,-673.161],[300.686,-673.161],[421.5,-552.347],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-63.742,0],[0,0],[0,-63.742],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-63.742],[0,0],[63.742,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-541.759],[-306.005,-657.254],[306.005,-657.254],[421.5,-541.759],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-61.048,0],[0,0],[0,-61.048],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-61.048],[0,0],[61.048,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-532.04],[-310.886,-642.653],[310.886,-642.653],[421.5,-532.04],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-58.62,0],[0,0],[0,-58.62],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-58.62],[0,0],[58.62,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-523.283],[-315.285,-629.498],[315.285,-629.498],[421.5,-523.283],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-56.477,0],[0,0],[0,-56.477],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-56.477],[0,0],[56.477,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-515.552],[-319.168,-617.884],[319.168,-617.884],[421.5,-515.552],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-54.628,0],[0,0],[0,-54.629],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-54.629],[0,0],[54.628,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-508.884],[-322.517,-607.866],[322.517,-607.866],[421.5,-508.884],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-53.079,0],[0,0],[0,-53.079],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-53.079],[0,0],[53.079,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-503.293],[-325.326,-599.467],[325.326,-599.467],[421.5,-503.293],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.827,0],[0,0],[0,-51.827],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-51.827],[0,0],[51.827,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-498.777],[-327.594,-592.683],[327.594,-592.683],[421.5,-498.777],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.868,0],[0,0],[0,-50.868],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-50.868],[0,0],[50.868,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-495.319],[-329.331,-587.489],[329.331,-587.489],[421.5,-495.319],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.196,0],[0,0],[0,-50.196],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-50.196],[0,0],[50.196,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-492.894],[-330.549,-583.845],[330.549,-583.845],[421.5,-492.894],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.8,0],[0,0],[0,-49.8],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-49.8],[0,0],[49.8,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491.467],[-331.266,-581.701],[331.266,-581.701],[421.5,-491.467],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491],[-331.5,-581],[331.5,-581],[421.5,-491],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491],[-331.5,-581],[331.5,-581],[421.5,-491],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.974,0],[0,0],[0,-49.974],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-49.974],[0,0],[49.974,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.801],[-330.951,-581.35],[330.951,-581.35],[421.5,-490.801],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.928,0],[0,0],[0,-50.928],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-50.928],[0,0],[50.928,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.171],[-329.222,-582.448],[329.222,-582.448],[421.5,-490.171],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-52.61,0],[0,0],[0,-52.61],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-52.61],[0,0],[52.61,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-489.054],[-326.174,-584.38],[326.174,-584.38],[421.5,-489.054],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-55.113,0],[0,0],[0,-55.113],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-55.113],[0,0],[55.113,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-487.386],[-321.64,-587.246],[321.64,-587.246],[421.5,-487.386],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-58.548,0],[0,0],[0,-58.548],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-58.548],[0,0],[58.548,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-485.085],[-315.415,-591.17],[315.415,-591.17],[421.5,-485.085],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-63.055,0],[0,0],[0,-63.055],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-63.055],[0,0],[63.055,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-482.052],[-307.248,-596.303],[307.248,-596.303],[421.5,-482.052],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-68.807,0],[0,0],[0,-68.807],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-68.807],[0,0],[68.807,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-478.165],[-296.826,-602.839],[296.826,-602.839],[421.5,-478.165],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-76.024,0],[0,0],[0,-76.024],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-76.024],[0,0],[76.024,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-473.276],[-283.75,-611.026],[283.75,-611.026],[421.5,-473.276],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-84.988,0],[0,0],[0,-84.988],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-84.988],[0,0],[84.988,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-467.201],[-267.508,-621.193],[267.508,-621.193],[421.5,-467.201],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-96.065,0],[0,0],[0,-96.065],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-96.065],[0,0],[96.065,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-459.73],[-247.438,-633.792],[247.438,-633.792],[421.5,-459.73],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.724,0],[0,0],[0,-109.724],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-109.724],[0,0],[109.724,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-450.661],[-222.689,-649.472],[222.689,-649.472],[421.5,-450.661],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-126.533,0],[0,0],[0,-126.533],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-126.533],[0,0],[126.533,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-439.944],[-192.233,-669.211],[192.233,-669.211],[421.5,-439.944],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-147.016,0],[0,0],[0,-147.016],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-147.016],[0,0],[147.016,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-428.221],[-155.118,-694.603],[155.118,-694.603],[421.5,-428.221],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-171.03,0],[0,0],[0,-171.03],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-171.03],[0,0],[171.03,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-418.589],[-111.608,-728.481],[111.608,-728.481],[421.5,-418.589],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-196.109,0],[0,0],[0,-196.109],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-196.109],[0,0],[196.109,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-420.983],[-66.165,-776.318],[66.165,-776.318],[421.5,-420.983],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-216.647,0],[0,0],[0,-216.647],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-216.647],[0,0],[216.647,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-451.801],[-28.952,-844.349],[28.952,-844.349],[421.5,-451.801],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-228.394,0],[0,0],[0,-228.394],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-228.394],[0,0],[228.394,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-484.12],[-7.668,-897.952],[7.668,-897.952],[421.5,-484.12],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490],[-1.5,-910],[1.5,-910],[421.5,-490],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491.387],[-1.5,-911.387],[1.5,-911.387],[421.5,-491.387],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491.633],[-1.5,-911.633],[1.5,-911.633],[421.5,-491.633],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491.036],[-1.5,-911.036],[1.5,-911.036],[421.5,-491.036],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.63],[-1.5,-910.63],[1.5,-910.63],[421.5,-490.63],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.186],[-1.5,-910.186],[1.5,-910.186],[421.5,-490.186],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490],[-1.5,-910],[1.5,-910],[421.5,-490],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.41,0],[0,0],[0,-231.41],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.41],[0,0],[231.41,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.002],[-2.203,-909.299],[2.203,-909.299],[421.5,-490.002],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-230.223,0],[0,0],[0,-230.223],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-230.223],[0,0],[230.223,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.009],[-4.354,-907.155],[4.354,-907.155],[421.5,-490.009],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-228.206,0],[0,0],[0,-228.206],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-228.206],[0,0],[228.206,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.02],[-8.008,-903.511],[8.008,-903.511],[421.5,-490.02],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-225.331,0],[0,0],[0,-225.331],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-225.331],[0,0],[225.331,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.036],[-13.218,-898.317],[13.218,-898.317],[421.5,-490.036],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-221.575,0],[0,0],[0,-221.575],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-221.575],[0,0],[221.575,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.056],[-20.023,-891.533],[20.023,-891.533],[421.5,-490.056],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-216.926,0],[0,0],[0,-216.926],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-216.926],[0,0],[216.926,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.082],[-28.448,-883.134],[28.448,-883.134],[421.5,-490.082],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-211.38,0],[0,0],[0,-211.38],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-211.38],[0,0],[211.38,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.112],[-38.496,-873.116],[38.496,-873.116],[421.5,-490.112],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-204.95,0],[0,0],[0,-204.95],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-204.95],[0,0],[204.95,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.147],[-50.146,-861.502],[50.146,-861.502],[421.5,-490.147],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-197.668,0],[0,0],[0,-197.668],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-197.668],[0,0],[197.668,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.187],[-63.341,-848.347],[63.341,-848.347],[421.5,-490.187],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-189.586,0],[0,0],[0,-189.586],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-189.586],[0,0],[189.586,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.232],[-77.986,-833.746],[77.986,-833.746],[421.5,-490.232],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-180.78,0],[0,0],[0,-180.78],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-180.78],[0,0],[180.78,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.28],[-93.941,-817.839],[93.941,-817.839],[421.5,-490.28],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-171.353,0],[0,0],[0,-171.353],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-171.353],[0,0],[171.353,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.332],[-111.022,-800.81],[111.022,-800.81],[421.5,-490.332],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-161.434,0],[0,0],[0,-161.434],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-161.434],[0,0],[161.434,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.386],[-128.995,-782.892],[128.995,-782.892],[421.5,-490.386],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-151.172,0],[0,0],[0,-151.172],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-151.172],[0,0],[151.172,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.443],[-147.588,-764.355],[147.588,-764.355],[421.5,-490.443],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-130.297,0],[0,0],[0,-130.297],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-130.297],[0,0],[130.297,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.557],[-185.412,-726.645],[185.412,-726.645],[421.5,-490.557],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-120.035,0],[0,0],[0,-120.035],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-120.035],[0,0],[120.035,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.614],[-204.005,-708.108],[204.005,-708.108],[421.5,-490.614],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.116,0],[0,0],[0,-110.116],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-110.116],[0,0],[110.116,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.668],[-221.978,-690.19],[221.978,-690.19],[421.5,-490.668],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-100.689,0],[0,0],[0,-100.689],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-100.689],[0,0],[100.689,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.72],[-239.059,-673.161],[239.059,-673.161],[421.5,-490.72],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-91.883,0],[0,0],[0,-91.883],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-91.883],[0,0],[91.883,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.768],[-255.014,-657.254],[255.014,-657.254],[421.5,-490.768],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-83.801,0],[0,0],[0,-83.801],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-83.801],[0,0],[83.801,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.813],[-269.659,-642.653],[269.659,-642.653],[421.5,-490.813],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-76.519,0],[0,0],[0,-76.519],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-76.519],[0,0],[76.519,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.853],[-282.854,-629.498],[282.854,-629.498],[421.5,-490.853],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-70.089,0],[0,0],[0,-70.089],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-70.089],[0,0],[70.089,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.888],[-294.504,-617.884],[294.504,-617.884],[421.5,-490.888],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-64.543,0],[0,0],[0,-64.543],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-64.543],[0,0],[64.543,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.918],[-304.552,-607.866],[304.552,-607.866],[421.5,-490.918],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-59.894,0],[0,0],[0,-59.894],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-59.894],[0,0],[59.894,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.944],[-312.977,-599.467],[312.977,-599.467],[421.5,-490.944],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-56.138,0],[0,0],[0,-56.138],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-56.138],[0,0],[56.138,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.964],[-319.782,-592.683],[319.782,-592.683],[421.5,-490.964],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-53.263,0],[0,0],[0,-53.263],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-53.263],[0,0],[53.263,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.98],[-324.992,-587.489],[324.992,-587.489],[421.5,-490.98],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.246,0],[0,0],[0,-51.246],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-51.246],[0,0],[51.246,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.991],[-328.646,-583.845],[328.646,-583.845],[421.5,-490.991],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.059,0],[0,0],[0,-50.059],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-50.059],[0,0],[50.059,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-490.998],[-330.797,-581.701],[330.797,-581.701],[421.5,-490.998],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":291,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491],[-331.5,-581],[331.5,-581],[421.5,-491],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":292,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.925,0.753,0.424,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.925,0.753,0.424,1],"t":320,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":321,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".onSurfaceHome","cl":"onSurfaceHome","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":140,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":141,"s":[95]},{"t":170,"s":[0],"h":1},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":252,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":253,"s":[95]},{"t":282,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,1185,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":843,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.323]},"t":141,"s":[857]},{"t":179,"s":[1144],"h":1},{"t":231,"s":[857],"h":1},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.323]},"t":253,"s":[857]},{"t":291,"s":[1144],"h":1}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":0,"k":420,"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":0,"k":420,"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-437],[-1.5,-857],[1.5,-857],[421.5,-437],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-486.207],[-1.5,-906.207],[1.5,-906.207],[421.5,-486.207],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-523.23],[-1.5,-943.23],[1.5,-943.23],[421.5,-523.23],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-550.406],[-1.5,-970.406],[1.5,-970.406],[421.5,-550.406],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-571.703],[-1.5,-991.703],[1.5,-991.703],[421.5,-571.703],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-589.169],[-1.5,-1009.169],[1.5,-1009.169],[421.5,-589.169],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-603.929],[-1.5,-1023.929],[1.5,-1023.929],[421.5,-603.929],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-616.661],[-1.5,-1036.661],[1.5,-1036.661],[421.5,-616.661],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-627.808],[-1.5,-1047.808],[1.5,-1047.808],[421.5,-627.808],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-637.673],[-1.5,-1057.673],[1.5,-1057.673],[421.5,-637.673],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-646.477],[-1.5,-1066.477],[1.5,-1066.477],[421.5,-646.477],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-654.383],[-1.5,-1074.383],[1.5,-1074.383],[421.5,-654.383],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-661.519],[-1.5,-1081.519],[1.5,-1081.519],[421.5,-661.519],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-667.983],[-1.5,-1087.983],[1.5,-1087.983],[421.5,-667.983],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-673.857],[-1.5,-1093.857],[1.5,-1093.857],[421.5,-673.857],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-679.204],[-1.5,-1099.204],[1.5,-1099.204],[421.5,-679.204],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-684.081],[-1.5,-1104.081],[1.5,-1104.081],[421.5,-684.081],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-688.532],[-1.5,-1108.532],[1.5,-1108.532],[421.5,-688.532],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-692.596],[-1.5,-1112.596],[1.5,-1112.596],[421.5,-692.596],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-696.306],[-1.5,-1116.306],[1.5,-1116.306],[421.5,-696.306],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-699.692],[-1.5,-1119.692],[1.5,-1119.692],[421.5,-699.692],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-702.779],[-1.5,-1122.779],[1.5,-1122.779],[421.5,-702.779],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-705.587],[-1.5,-1125.587],[1.5,-1125.587],[421.5,-705.587],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-708.138],[-1.5,-1128.138],[1.5,-1128.138],[421.5,-708.138],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-710.448],[-1.5,-1130.448],[1.5,-1130.448],[421.5,-710.448],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-712.532],[-1.5,-1132.532],[1.5,-1132.532],[421.5,-712.532],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-714.405],[-1.5,-1134.405],[1.5,-1134.405],[421.5,-714.405],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-716.079],[-1.5,-1136.079],[1.5,-1136.079],[421.5,-716.079],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-717.566],[-1.5,-1137.566],[1.5,-1137.566],[421.5,-717.566],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-718.875],[-1.5,-1138.875],[1.5,-1138.875],[421.5,-718.875],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-720.016],[-1.5,-1140.016],[1.5,-1140.016],[421.5,-720.016],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-720.998],[-1.5,-1140.998],[1.5,-1140.998],[421.5,-720.998],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-721.829],[-1.5,-1141.829],[1.5,-1141.829],[421.5,-721.829],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-722.515],[-1.5,-1142.515],[1.5,-1142.515],[421.5,-722.515],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-723.063],[-1.5,-1143.063],[1.5,-1143.063],[421.5,-723.063],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-723.773],[-1.5,-1143.772],[1.5,-1143.772],[421.5,-723.773],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-724],[-1.5,-1144],[1.5,-1144],[421.5,-724],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-437],[-1.5,-857],[1.5,-857],[421.5,-437],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-437],[-1.5,-857],[1.5,-857],[421.5,-437],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-486.207],[-1.5,-906.207],[1.5,-906.207],[421.5,-486.207],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-523.23],[-1.5,-943.23],[1.5,-943.23],[421.5,-523.23],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-550.406],[-1.5,-970.406],[1.5,-970.406],[421.5,-550.406],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-571.703],[-1.5,-991.703],[1.5,-991.703],[421.5,-571.703],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-589.169],[-1.5,-1009.169],[1.5,-1009.169],[421.5,-589.169],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-603.929],[-1.5,-1023.929],[1.5,-1023.929],[421.5,-603.929],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-616.661],[-1.5,-1036.661],[1.5,-1036.661],[421.5,-616.661],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-627.808],[-1.5,-1047.808],[1.5,-1047.808],[421.5,-627.808],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-637.673],[-1.5,-1057.673],[1.5,-1057.673],[421.5,-637.673],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-646.477],[-1.5,-1066.477],[1.5,-1066.477],[421.5,-646.477],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-654.383],[-1.5,-1074.383],[1.5,-1074.383],[421.5,-654.383],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-661.519],[-1.5,-1081.519],[1.5,-1081.519],[421.5,-661.519],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-667.983],[-1.5,-1087.983],[1.5,-1087.983],[421.5,-667.983],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-673.857],[-1.5,-1093.857],[1.5,-1093.857],[421.5,-673.857],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-679.204],[-1.5,-1099.204],[1.5,-1099.204],[421.5,-679.204],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-684.081],[-1.5,-1104.081],[1.5,-1104.081],[421.5,-684.081],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-688.532],[-1.5,-1108.532],[1.5,-1108.532],[421.5,-688.532],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-692.596],[-1.5,-1112.596],[1.5,-1112.596],[421.5,-692.596],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-696.306],[-1.5,-1116.306],[1.5,-1116.306],[421.5,-696.306],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.507],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-699.692],[-1.5,-1119.692],[1.5,-1119.692],[421.5,-699.692],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-702.779],[-1.5,-1122.779],[1.5,-1122.779],[421.5,-702.779],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-705.587],[-1.5,-1125.587],[1.5,-1125.587],[421.5,-705.587],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-708.138],[-1.5,-1128.138],[1.5,-1128.138],[421.5,-708.138],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-710.448],[-1.5,-1130.448],[1.5,-1130.448],[421.5,-710.448],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-712.532],[-1.5,-1132.532],[1.5,-1132.532],[421.5,-712.532],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-714.405],[-1.5,-1134.405],[1.5,-1134.405],[421.5,-714.405],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-716.079],[-1.5,-1136.079],[1.5,-1136.079],[421.5,-716.079],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-717.566],[-1.5,-1137.566],[1.5,-1137.566],[421.5,-717.566],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-718.875],[-1.5,-1138.875],[1.5,-1138.875],[421.5,-718.875],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-720.016],[-1.5,-1140.016],[1.5,-1140.016],[421.5,-720.016],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-720.998],[-1.5,-1140.998],[1.5,-1140.998],[421.5,-720.998],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-721.829],[-1.5,-1141.829],[1.5,-1141.829],[421.5,-721.829],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-722.515],[-1.5,-1142.515],[1.5,-1142.515],[421.5,-722.515],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-723.063],[-1.5,-1143.063],[1.5,-1143.063],[421.5,-723.063],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-231.798,0],[0,0],[0,-231.798],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-231.798],[0,0],[231.798,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-723.773],[-1.5,-1143.772],[1.5,-1143.772],[421.5,-723.773],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.925,0.753,0.424,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.925,0.753,0.424,1],"t":320,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":140,"op":321,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".surfaceHome","cl":"surfaceHome","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":420.5,"ix":3},"y":{"a":0,"k":350.5,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[841,701],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.365,0.259,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.365,0.259,0,1],"t":320,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Volume","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":321,"st":-40,"ct":1,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Part03_Demonstration_Home_FO_V02","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,350.5,0],"ix":2,"l":2},"a":{"a":0,"k":[420.5,350.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":841,"h":701,"ip":786,"op":1034,"st":786,"bm":0},{"ddd":0,"ind":2,"ty":0,"nm":"Part02_Charade_Home_FO_V02","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,350.5,0],"ix":2,"l":2},"a":{"a":0,"k":[420.5,350.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":841,"h":701,"ip":321,"op":786,"st":321,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"Part01_Home_Thumb_FO_V02","refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,350.5,0],"ix":2,"l":2},"a":{"a":0,"k":[420.5,350.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":841,"h":701,"ip":0,"op":321,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw/home_gesture_tutorial_tablet_animation.json b/quickstep/res/raw/home_gesture_tutorial_tablet_animation.json
new file mode 100644
index 0000000..53ccbcf
--- /dev/null
+++ b/quickstep/res/raw/home_gesture_tutorial_tablet_animation.json
@@ -0,0 +1 @@
+{"v":"5.10.0","fr":60,"ip":0,"op":1041,"w":1280,"h":800,"nm":"SUW_Home_Tablet_V03","ddd":0,"assets":[{"id":"comp_0","nm":"Part03_Demonstration_Tablet_Home_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"CHARACTER REPO","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":640,"ix":3},"y":{"a":0,"k":779,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":82,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"Y Movement","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":0,"ix":3},"y":{"k":[{"s":[0],"t":53,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.35],"t":54,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-1.448],"t":55,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.38],"t":56,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-6.246],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-10.17],"t":58,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-15.303],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.839],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-30.026],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-40.193],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.792],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-68.472],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-88.211],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-113.603],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-147.481],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-195.318],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-263.349],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-316.952],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-329],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-385.283],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-416.494],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-435.864],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-449.465],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-459.751],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-467.9],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-474.564],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-480.138],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-484.877],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-488.958],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-492.507],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-495.618],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-498.362],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-500.793],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-502.957],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-504.887],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-506.614],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-508.16],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-509.547],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-510.791],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-511.906],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-512.904],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-513.798],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-514.596],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-515.306],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-515.935],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-516.49],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-516.978],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-517.401],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-517.767],"t":101,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-518.077],"t":102,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-518.55],"t":104,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-518.438],"t":112,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-517.984],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-517.387],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-516.64],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-515.736],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-514.668],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-513.43],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-512.015],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-510.418],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-508.633],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-506.657],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-504.486],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-502.12],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-499.561],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-496.815],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-493.889],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-490.796],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-487.553],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-484.183],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-480.711],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-477.167],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-473.584],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-469.998],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-466.443],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-462.955],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-459.564],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-456.3],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-453.186],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-450.242],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-447.482],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-444.917],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-442.553],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-440.394],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-438.439],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-436.686],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-435.131],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-433.768],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-432.593],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-431.597],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-430.775],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-430.117],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-429.618],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-429.27],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-428.895],"t":178,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-428.566],"t":179,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-427.991],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-427.144],"t":181,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-425.996],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-424.511],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-422.647],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-420.353],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-417.567],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-414.212],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-410.193],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-405.386],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-399.632],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-392.717],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-384.354],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-374.143],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-361.527],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-345.748],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-325.92],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-301.578],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-274.097],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-247.115],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-223.613],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-204.19],"t":201,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-188.251],"t":202,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-175.042],"t":203,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-163.95],"t":204,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-154.519],"t":205,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-146.418],"t":206,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-139.402],"t":207,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-133.286],"t":208,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-127.93],"t":209,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.222],"t":210,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-119.076],"t":211,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.421],"t":212,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-112.198],"t":213,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-109.359],"t":214,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-106.865],"t":215,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-104.682],"t":216,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-102.779],"t":217,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-101.133],"t":218,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-99.721],"t":219,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-98.525],"t":220,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-97.528],"t":221,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-96.715],"t":222,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-96.073],"t":223,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.59],"t":224,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.257],"t":225,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.063],"t":226,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.032],"t":228,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.134],"t":229,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.317],"t":230,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.593],"t":231,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-95.979],"t":232,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-96.494],"t":233,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-97.168],"t":234,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-98.037],"t":235,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-99.153],"t":236,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-100.589],"t":237,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-102.449],"t":238,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-104.868],"t":239,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-107.966],"t":240,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-111.627],"t":241,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.252],"t":242,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-118.217],"t":243,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-120.41],"t":244,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-121.984],"t":245,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.105],"t":246,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.891],"t":247,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-124.424],"t":248,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-124.762],"t":249,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-124.944],"t":250,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-124.896],"t":253,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-124.758],"t":254,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-124.556],"t":255,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-124.286],"t":256,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.944],"t":257,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.534],"t":258,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.057],"t":259,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-122.526],"t":260,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-121.953],"t":261,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-121.357],"t":262,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-120.753],"t":263,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-120.16],"t":264,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-119.588],"t":265,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-119.048],"t":266,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-118.545],"t":267,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-118.082],"t":268,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-117.658],"t":269,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-117.275],"t":270,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-116.929],"t":271,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-116.62],"t":272,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-116.345],"t":273,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-116.101],"t":274,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.887],"t":275,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.701],"t":276,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.541],"t":277,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.404],"t":278,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.29],"t":279,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.197],"t":280,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.123],"t":281,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-115.03],"t":283,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue Y Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":71,"s":[0]},{"i":{"x":[0.544],"y":[1]},"o":{"x":[0.477],"y":[0]},"t":109,"s":[-190]},{"i":{"x":[0.671],"y":[1]},"o":{"x":[0.309],"y":[0]},"t":156,"s":[-100]},{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":177,"s":[-100]},{"i":{"x":[0.424],"y":[1]},"o":{"x":[0.75],"y":[0]},"t":227,"s":[20]},{"i":{"x":[0.363],"y":[1]},"o":{"x":[0.345],"y":[0]},"t":251,"s":[-10]},{"t":285,"s":[0]}],"ix":1}}]}],"ip":0,"op":395,"st":-110,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-609,"s":[0]},{"t":-599,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":0,"ix":3},"y":{"k":[{"s":[0],"t":53,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.35],"t":54,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-1.448],"t":55,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.38],"t":56,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-6.246],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-10.17],"t":58,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-15.303],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.839],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-30.026],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-40.193],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.792],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-68.472],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-88.211],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-113.603],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-147.481],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-195.318],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-263.349],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-316.952],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-329],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-385.283],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-416.494],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-435.864],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-449.465],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-459.751],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-467.9],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-474.564],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-480.138],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-484.877],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-488.958],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-492.507],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-495.618],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-498.362],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-500.793],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-502.957],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-504.887],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-506.614],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-508.16],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-509.547],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-510.791],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-511.906],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-512.904],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-513.798],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-514.596],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-515.306],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-515.935],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-516.49],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-516.978],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-517.401],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-517.767],"t":101,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-518.077],"t":102,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-518.55],"t":104,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue Y Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":71,"s":[0]},{"t":109,"s":[-190]}],"ix":1}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":24,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,23.5],[21.75,-21.75],[21.75,-66.5]],"c":false}]},{"i":{"x":0.65,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.34,"y":1},"o":{"x":0.66,"y":0},"t":49,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":60,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"t":71,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,91.5],[21.75,-21.75],[21.75,-134.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.418],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.149],"y":[1]},"o":{"x":[0.529],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":67,"s":[27]},{"t":86,"s":[58],"h":1}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.77]},"o":{"x":[0.87],"y":[0.12]},"t":69,"s":[0]},{"t":83,"s":[49.5]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.77]},"o":{"x":[0.87],"y":[0.12]},"t":69,"s":[100]},{"t":83,"s":[50.5]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-465,"s":[0]},{"t":-447,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":82,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Gesture KO","td":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":19,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":31,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":49,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":71,"s":[100]},{"t":80,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,1337,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":1282,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[1]},"o":{"x":[1],"y":[0]},"t":53,"s":[581]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.312],"y":[4.051]},"t":71,"s":[910]},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":80,"s":[910]},{"t":110,"s":[581]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":53,"s":[90]},{"t":71,"s":[200],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":80,"s":[200]},{"t":110,"s":[90]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":1,"k":[{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":53,"s":[90]},{"t":71,"s":[200],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":80,"s":[200]},{"t":110,"s":[90]}],"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491],[-551,-581],[551,-581],[641,-491],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":53,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.772,0],[0,0],[0,-49.772],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-49.772],[0,0],[49.772,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491.167],[-550.817,-581.35],[550.817,-581.35],[641,-491.167],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":54,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.09,0],[0,0],[0,-50.09],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-50.09],[0,0],[50.09,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491.689],[-550.241,-582.448],[550.241,-582.448],[641,-491.689],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":55,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.651,0],[0,0],[0,-50.651],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-50.651],[0,0],[50.651,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-492.605],[-549.225,-584.38],[549.225,-584.38],[641,-492.605],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":56,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.485,0],[0,0],[0,-51.485],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-51.485],[0,0],[51.485,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-493.959],[-547.713,-587.246],[547.713,-587.246],[641,-493.959],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":57,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-52.63,0],[0,0],[0,-52.63],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-52.63],[0,0],[52.63,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-495.808],[-545.638,-591.17],[545.638,-591.17],[641,-495.808],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":58,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-54.132,0],[0,0],[0,-54.133],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-54.133],[0,0],[54.132,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-498.219],[-542.916,-596.303],[542.916,-596.303],[641,-498.219],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-56.05,0],[0,0],[0,-56.05],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-56.05],[0,0],[56.05,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-501.281],[-539.442,-602.839],[539.442,-602.839],[641,-501.281],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-58.455,0],[0,0],[0,-58.455],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-58.455],[0,0],[58.455,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-505.109],[-535.083,-611.026],[535.083,-611.026],[641,-505.109],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-61.443,0],[0,0],[0,-61.443],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-61.443],[0,0],[61.443,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-509.862],[-529.669,-621.193],[529.669,-621.193],[641,-509.862],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-65.136,0],[0,0],[0,-65.136],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-65.136],[0,0],[65.135,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-515.772],[-522.979,-633.792],[522.979,-633.792],[641,-515.772],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-69.689,0],[0,0],[0,-69.689],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-69.689],[0,0],[69.689,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-523.201],[-514.73,-649.472],[514.73,-649.472],[641,-523.201],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-75.292,0],[0,0],[0,-75.292],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-75.292],[0,0],[75.292,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-532.789],[-504.578,-669.211],[504.578,-669.211],[641,-532.789],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-82.119,0],[0,0],[0,-82.119],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-82.119],[0,0],[82.12,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-545.809],[-492.206,-694.603],[492.206,-694.603],[641,-545.809],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-90.124,0],[0,0],[0,-90.124],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-90.124],[0,0],[90.124,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-565.184],[-477.703,-728.481],[477.703,-728.481],[641,-565.184],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-98.484,0],[0,0],[0,-98.484],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-98.484],[0,0],[98.484,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-597.873],[-462.555,-776.318],[462.555,-776.318],[641,-597.873],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-105.33,0],[0,0],[0,-105.33],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-105.33],[0,0],[105.33,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-653.5],[-450.151,-844.349],[450.151,-844.349],[641,-653.5],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.245,0],[0,0],[0,-109.245],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-109.245],[0,0],[109.245,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-700.008],[-443.056,-897.952],[443.056,-897.952],[641,-700.008],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-710],[-441,-910],[441,-910],[641,-710],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-711.387],[-441,-911.387],[441,-911.387],[641,-711.387],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-711.036],[-441,-911.036],[441,-911.036],[641,-711.036],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-710.362],[-441,-910.362],[441,-910.362],[641,-710.362],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.38,0],[0,0],[0,-110.38],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-110.38],[0,0],[110.38,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-710],[-441,-910],[441,-910],[641,-710],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-110.251,0],[0,0],[0,-110.251],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-110.251],[0,0],[110.251,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-709.533],[-441.234,-909.299],[441.234,-909.299],[641,-709.533],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.855,0],[0,0],[0,-109.855],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-109.855],[0,0],[109.855,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-708.106],[-441.951,-907.155],[441.951,-907.155],[641,-708.106],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-109.183,0],[0,0],[0,-109.183],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-109.183],[0,0],[109.183,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-705.681],[-443.169,-903.511],[443.169,-903.511],[641,-705.681],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-108.224,0],[0,0],[0,-108.224],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-108.224],[0,0],[108.224,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-702.223],[-444.906,-898.317],[444.906,-898.317],[641,-702.223],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-106.972,0],[0,0],[0,-106.972],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-106.972],[0,0],[106.972,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-697.707],[-447.174,-891.533],[447.174,-891.533],[641,-697.707],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-105.423,0],[0,0],[0,-105.422],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-105.422],[0,0],[105.422,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-692.117],[-449.983,-883.134],[449.983,-883.134],[641,-692.117],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-103.574,0],[0,0],[0,-103.574],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-103.574],[0,0],[103.574,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-685.448],[-453.332,-873.116],[453.332,-873.116],[641,-685.448],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-101.431,0],[0,0],[0,-101.431],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-101.431],[0,0],[101.431,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-677.717],[-457.215,-861.502],[457.215,-861.502],[641,-677.717],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-99.003,0],[0,0],[0,-99.003],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-99.003],[0,0],[99.003,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-668.96],[-461.614,-848.347],[461.614,-848.347],[641,-668.96],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-96.309,0],[0,0],[0,-96.309],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-96.309],[0,0],[96.309,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-659.241],[-466.495,-833.746],[466.495,-833.746],[641,-659.241],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-93.374,0],[0,0],[0,-93.374],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-93.374],[0,0],[93.374,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-648.653],[-471.814,-817.839],[471.814,-817.839],[641,-648.653],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-90.232,0],[0,0],[0,-90.232],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-90.232],[0,0],[90.232,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-637.317],[-477.507,-800.81],[477.507,-800.81],[641,-637.317],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-86.925,0],[0,0],[0,-86.925],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-86.925],[0,0],[86.925,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-625.39],[-483.498,-782.892],[483.498,-782.892],[641,-625.39],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-83.505,0],[0,0],[0,-83.505],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-83.505],[0,0],[83.505,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-613.051],[-489.696,-764.355],[489.696,-764.355],[641,-613.051],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-76.546,0],[0,0],[0,-76.546],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-76.546],[0,0],[76.546,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-587.949],[-502.304,-726.645],[502.304,-726.645],[641,-587.949],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-73.126,0],[0,0],[0,-73.126],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-73.126],[0,0],[73.126,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-575.61],[-508.502,-708.108],[508.502,-708.108],[641,-575.61],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-69.819,0],[0,0],[0,-69.819],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-69.819],[0,0],[69.819,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-563.683],[-514.493,-690.19],[514.493,-690.19],[641,-563.683],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-66.677,0],[0,0],[0,-66.677],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-66.677],[0,0],[66.677,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-552.347],[-520.186,-673.161],[520.186,-673.161],[641,-552.347],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-63.742,0],[0,0],[0,-63.742],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-63.742],[0,0],[63.742,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-541.759],[-525.505,-657.254],[525.505,-657.254],[641,-541.759],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-61.048,0],[0,0],[0,-61.048],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-61.048],[0,0],[61.048,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-532.04],[-530.386,-642.653],[530.386,-642.653],[641,-532.04],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-58.62,0],[0,0],[0,-58.62],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-58.62],[0,0],[58.62,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-523.283],[-534.785,-629.498],[534.785,-629.498],[641,-523.283],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-56.477,0],[0,0],[0,-56.477],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-56.477],[0,0],[56.477,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-515.552],[-538.668,-617.884],[538.668,-617.884],[641,-515.552],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-54.628,0],[0,0],[0,-54.629],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-54.629],[0,0],[54.629,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-508.884],[-542.017,-607.866],[542.017,-607.866],[641,-508.884],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-53.079,0],[0,0],[0,-53.079],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-53.079],[0,0],[53.079,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-503.293],[-544.826,-599.467],[544.826,-599.467],[641,-503.293],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.827,0],[0,0],[0,-51.827],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-51.827],[0,0],[51.827,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-498.777],[-547.094,-592.683],[547.094,-592.683],[641,-498.777],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.868,0],[0,0],[0,-50.868],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-50.868],[0,0],[50.868,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-495.319],[-548.831,-587.489],[548.831,-587.489],[641,-495.319],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.196,0],[0,0],[0,-50.196],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-50.196],[0,0],[50.196,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-492.894],[-550.049,-583.845],[550.049,-583.845],[641,-492.894],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.8,0],[0,0],[0,-49.8],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-49.8],[0,0],[49.8,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491.467],[-550.766,-581.701],[550.766,-581.701],[641,-491.467],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491],[-551,-581],[551,-581],[641,-491],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.219607843137,0.341176470588,0.780392156863,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":7,"op":82,"st":-110,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Pill to Arch | Elevation","parent":1,"tt":1,"tp":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-609,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-599,"s":[100]},{"t":0,"s":[15]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":0,"ix":3},"y":{"k":[{"s":[0],"t":53,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.35],"t":54,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-1.448],"t":55,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.38],"t":56,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-6.246],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-10.17],"t":58,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-15.303],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.839],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-30.026],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-40.193],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.792],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-68.472],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-88.211],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-113.603],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-147.481],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-195.318],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-263.349],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-316.952],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-329],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-385.283],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-416.494],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-435.864],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-449.465],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-459.751],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-467.9],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-474.564],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-480.138],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-484.877],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-488.958],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-492.507],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-495.618],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-498.362],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-500.793],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-502.957],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-504.887],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-506.614],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-508.16],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-509.547],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-510.791],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-511.906],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-512.904],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-513.798],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-514.596],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-515.306],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-515.935],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-516.49],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-516.978],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-517.401],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-517.767],"t":101,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-518.077],"t":102,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-518.55],"t":104,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},"a":{"a":0,"k":[0,-2,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue Y Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":71,"s":[0]},{"t":109,"s":[-190]}],"ix":1}}]},{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":2,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":8,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":1,"ix":3}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.4,"y":0},"t":24,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,23.5],[21.75,-21.75],[21.75,-66.5]],"c":false}]},{"i":{"x":0.65,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.34,"y":1},"o":{"x":0.66,"y":0},"t":49,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":60,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"t":71,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,91.5],[21.75,-21.75],[21.75,-134.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.418],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.149],"y":[1]},"o":{"x":[0.529],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":67,"s":[27]},{"t":86,"s":[58],"h":1}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.77]},"o":{"x":[0.87],"y":[0.12]},"t":69,"s":[0]},{"t":83,"s":[49.5]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.28],"y":[0.77]},"o":{"x":[0.87],"y":[0.12]},"t":69,"s":[100]},{"t":83,"s":[50.5]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-465,"s":[0]},{"t":-447,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":82,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-466,"s":[0]},{"t":-456,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":0,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[1]},"t":82,"s":[162]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.18],"y":[0]},"t":120,"s":[190]},{"i":{"x":[0.7],"y":[1.01]},"o":{"x":[1],"y":[0]},"t":201,"s":[190]},{"t":221,"s":[200]}],"ix":4}},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.22,"y":1},"o":{"x":0.18,"y":1},"t":82,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-162.25,-21],[-162.25,-21]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.48,"y":0},"t":110,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.437]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":120,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.437]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":137,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.25]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":151,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.437]],"c":false}]},{"i":{"x":0.33,"y":1},"o":{"x":1,"y":0},"t":154,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.437]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.55,"y":0},"t":171,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.25]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":1,"y":0},"t":185,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-257.375,-41.562]],"c":false}]},{"i":{"x":0.47,"y":1},"o":{"x":0.34,"y":0},"t":201,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-272.375,-37.562]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":241,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.25]],"c":false}]},{"t":291,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-67.25]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[0.9]},"t":82,"s":[54]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":106,"s":[64]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":136,"s":[52]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":221,"s":[52]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":241,"s":[50]},{"t":291,"s":[52]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-322,"s":[0]},{"t":-304,"s":[90]}],"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":"Right","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-162.25,-21],[-162.25,-21]],"c":false}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-171.218,-21.242],[-162.226,-24.963]],"c":false}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-179.437,-21.465],[-162.204,-28.595]],"c":false}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-186.429,-21.654],[-162.185,-31.685]],"c":false}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-191.962,-21.803],[-162.17,-34.13]],"c":false}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-196.133,-21.916],[-162.158,-35.972]],"c":false}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-199.213,-21.999],[-162.15,-37.334]],"c":false}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-201.485,-22.06],[-162.144,-38.338]],"c":false}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-203.175,-22.106],[-162.139,-39.084]],"c":false}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-204.445,-22.14],[-162.136,-39.645]],"c":false}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-205.408,-22.166],[-162.133,-40.071]],"c":false}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-206.145,-22.186],[-162.131,-40.397]],"c":false}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-206.712,-22.202],[-162.13,-40.647]],"c":false}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.15,-22.214],[-162.129,-40.841]],"c":false}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.489,-22.223],[-162.128,-40.991]],"c":false}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.75,-22.23],[-162.127,-41.106]],"c":false}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.952,-22.235],[-162.127,-41.195]],"c":false}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.106,-22.239],[-162.126,-41.263]],"c":false}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.223,-22.243],[-162.126,-41.315]],"c":false}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.31,-22.245],[-162.126,-41.354]],"c":false}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.374,-22.247],[-162.125,-41.382]],"c":false}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.453,-22.249],[-162.125,-41.417]],"c":false}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.418]],"c":false}],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.358]],"c":false}],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.252]],"c":false}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.094]],"c":false}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-40.877]],"c":false}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-40.59]],"c":false}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-40.224]],"c":false}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-39.761]],"c":false}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-39.181]],"c":false}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-38.454]],"c":false}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-37.534]],"c":false}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-36.35]],"c":false}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-34.776]],"c":false}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-32.559]],"c":false}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-29.136]],"c":false}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-24.536]],"c":false}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.25]],"c":false}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.437]],"c":false}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.414]],"c":false}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.338]],"c":false}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-41.199]],"c":false}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-40.983]],"c":false}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-40.668]],"c":false}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-40.224]],"c":false}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-39.598]],"c":false}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-38.698]],"c":false}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-37.322]],"c":false}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-34.857]],"c":false}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-28.947]],"c":false}],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-25.094]],"c":false}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-23.637]],"c":false}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.895]],"c":false}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.497]],"c":false}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.305]],"c":false}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.125,-22.25]],"c":false}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-162.753,-22.377]],"c":false}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-165.208,-22.875]],"c":false}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-171.361,-24.123]],"c":false}],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-188.488,-27.595]],"c":false}],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-219.099,-33.802]],"c":false}],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-234.244,-36.873]],"c":false}],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-242.564,-38.559]],"c":false}],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-247.877,-39.637]],"c":false}],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-251.472,-40.366]],"c":false}],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-253.937,-40.865]],"c":false}],"t":181,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-255.594,-41.201]],"c":false}],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-256.64,-41.413]],"c":false}],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.5,-22.25],[-257.203,-41.528]],"c":false}],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.455,-22.25],[-257.459,-41.54]],"c":false}],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.395,-22.25],[-257.572,-41.51]],"c":false}],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.305,-22.25],[-257.74,-41.465]],"c":false}],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.181,-22.25],[-257.973,-41.403]],"c":false}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-208.018,-22.25],[-258.279,-41.321]],"c":false}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.808,-22.25],[-258.673,-41.216]],"c":false}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.541,-22.25],[-259.174,-41.083]],"c":false}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-207.203,-22.25],[-259.806,-40.914]],"c":false}],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-206.776,-22.25],[-260.608,-40.7]],"c":false}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-206.227,-22.25],[-261.637,-40.426]],"c":false}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-205.502,-22.25],[-262.996,-40.064]],"c":false}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-204.5,-22.25],[-264.875,-39.562]],"c":false}],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-203.002,-22.25],[-267.683,-38.814]],"c":false}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-201.093,-22.25],[-271.264,-37.859]],"c":false}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-272.375,-37.562]],"c":false}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-272.244,-37.534]],"c":false}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-271.843,-37.449]],"c":false}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-271.165,-37.305]],"c":false}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-270.202,-37.1]],"c":false}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-268.952,-36.833]],"c":false}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-267.415,-36.506]],"c":false}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-265.596,-36.118]],"c":false}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-263.505,-35.673]],"c":false}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-261.16,-35.173]],"c":false}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-258.583,-34.624]],"c":false}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-255.802,-34.032]],"c":false}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-252.851,-33.403]],"c":false}],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-249.768,-32.746]],"c":false}],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-246.593,-32.07]],"c":false}],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-243.367,-31.382]],"c":false}],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-240.129,-30.693]],"c":false}],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-236.915,-30.008]],"c":false}],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-233.76,-29.336]],"c":false}],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-230.692,-28.682]],"c":false}],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-227.734,-28.052]],"c":false}],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-224.906,-27.449]],"c":false}],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-222.222,-26.878]],"c":false}],"t":223,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-219.692,-26.339]],"c":false}],"t":224,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-217.325,-25.834]],"c":false}],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-215.123,-25.365]],"c":false}],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-213.089,-24.932]],"c":false}],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-211.222,-24.534]],"c":false}],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-209.521,-24.172]],"c":false}],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-207.982,-23.844]],"c":false}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-206.602,-23.55]],"c":false}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-205.377,-23.289]],"c":false}],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-204.302,-23.06]],"c":false}],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-203.371,-22.862]],"c":false}],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-202.581,-22.693]],"c":false}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-201.926,-22.554]],"c":false}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-201.4,-22.442]],"c":false}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.999,-22.356]],"c":false}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.719,-22.297]],"c":false}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.554,-22.262]],"c":false}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.258]],"c":false}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.282]],"c":false}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.323]],"c":false}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.382]],"c":false}],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.46]],"c":false}],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.558]],"c":false}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.677]],"c":false}],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.819]],"c":false}],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-22.984]],"c":false}],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-23.174]],"c":false}],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-23.391]],"c":false}],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-23.637]],"c":false}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-23.913]],"c":false}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-24.223]],"c":false}],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-24.568]],"c":false}],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-24.951]],"c":false}],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-25.376]],"c":false}],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-25.846]],"c":false}],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-26.366]],"c":false}],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-26.94]],"c":false}],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-27.574]],"c":false}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-28.274]],"c":false}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-29.049]],"c":false}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-29.907]],"c":false}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-30.859]],"c":false}],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-31.918]],"c":false}],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-33.101]],"c":false}],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-34.425]],"c":false}],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-35.914]],"c":false}],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-37.595]],"c":false}],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-39.5]],"c":false}],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-41.659]],"c":false}],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-44.097]],"c":false}],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-46.807]],"c":false}],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-49.72]],"c":false}],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-52.682]],"c":false}],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-55.485]],"c":false}],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-57.961]],"c":false}],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-60.044]],"c":false}],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-61.745]],"c":false}],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-63.113]],"c":false}],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-64.205]],"c":false}],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-65.068]],"c":false}],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-65.743]],"c":false}],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-66.262]],"c":false}],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-66.651]],"c":false}],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-66.93]],"c":false}],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-67.114]],"c":false}],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-200.5,-22.25],[-200.5,-67.218]],"c":false}],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[54],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.043],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.904],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.441],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.61],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.465],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.085],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.541],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.882],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.14],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.338],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.492],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.612],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.706],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.78],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.838],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.883],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.945],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.932],"t":109,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.876],"t":110,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.8],"t":111,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.703],"t":112,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.582],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.435],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.259],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.049],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.802],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.512],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.171],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.773],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.307],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.76],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.117],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.363],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.485],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.487],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.408],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.337],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.382],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.607],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.021],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.599],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.31],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.128],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.03],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52],"t":221,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.963],"t":222,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.888],"t":223,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.796],"t":224,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.694],"t":225,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.586],"t":226,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.473],"t":227,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.357],"t":228,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.239],"t":229,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.12],"t":230,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.88],"t":232,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.761],"t":233,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.643],"t":234,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.527],"t":235,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.414],"t":236,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.306],"t":237,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.204],"t":238,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.112],"t":239,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.037],"t":240,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.074],"t":254,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.12],"t":257,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.16],"t":259,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.208],"t":261,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.237],"t":262,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.268],"t":263,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.302],"t":264,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.34],"t":265,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.383],"t":266,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.43],"t":267,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.482],"t":268,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.541],"t":269,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.607],"t":270,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.682],"t":271,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.767],"t":272,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.863],"t":273,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.971],"t":274,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.091],"t":275,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.221],"t":276,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.353],"t":277,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.477],"t":278,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.587],"t":279,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.68],"t":280,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.755],"t":281,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.816],"t":282,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.865],"t":283,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.903],"t":284,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.933],"t":285,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.973],"t":287,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":1,"k":[{"t":-467,"s":[0],"h":1},{"t":-304,"s":[100],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","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":1,"k":[{"i":{"x":0.22,"y":1},"o":{"x":0.18,"y":1},"t":82,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.862,-261.879],[0.055,-282.955],[11.354,-261.879]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.18,"y":0},"t":110,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.915,-246.504],[0.001,-267.58],[11.3,-246.504]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":1,"y":0},"t":120,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.915,-246.504],[0.001,-267.58],[11.3,-246.504]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":137,"s":[{"i":[[4.907,-3.179],[-12.215,0],[3.984,2.581]],"o":[[-4.447,2.881],[11.035,0],[-4.907,-3.179]],"v":[[-7.665,-246.504],[-0.083,-267.58],[7.766,-246.504]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":151,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.915,-246.504],[0.001,-267.58],[11.3,-246.504]],"c":true}]},{"i":{"x":0.33,"y":1},"o":{"x":1,"y":0},"t":154,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.915,-246.504],[0.001,-267.58],[11.3,-246.504]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.55,"y":0},"t":171,"s":[{"i":[[4.907,-3.179],[-12.215,0],[3.984,2.581]],"o":[[-4.447,2.881],[11.035,0],[-4.907,-3.179]],"v":[[-7.665,-246.504],[-0.083,-267.58],[7.766,-246.504]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":1,"y":0},"t":185,"s":[{"i":[[7.064,3.179],[-17.586,0],[5.736,-2.581]],"o":[[-6.403,-2.881],[15.887,0],[-7.064,3.179]],"v":[[-10.865,-389.406],[0.052,-368.33],[11.351,-389.406]],"c":true}]},{"i":{"x":0.47,"y":1},"o":{"x":0.34,"y":0},"t":201,"s":[{"i":[[5.881,3.179],[-14.64,0],[4.775,-2.581]],"o":[[-5.33,-2.881],[13.225,0],[-5.881,3.179]],"v":[[-9.107,-406.156],[-0.02,-385.08],[9.387,-406.156]],"c":true}]},{"t":241,"s":[{"i":[[4.598,3.179],[-11.448,0],[3.734,-2.581]],"o":[[-4.168,-2.881],[10.342,0],[-4.598,3.179]],"v":[[-7.195,-320.656],[-0.089,-299.58],[7.266,-320.656]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.66,"y":1},"o":{"x":0.64,"y":0},"t":120,"s":[0,92],"to":[0,0],"ti":[0,0]},{"i":{"x":0.48,"y":1},"o":{"x":0.55,"y":0},"t":137,"s":[0,82],"to":[0,0],"ti":[0,0]},{"i":{"x":0.48,"y":0.48},"o":{"x":0.167,"y":0.167},"t":151,"s":[0,87],"to":[0,0],"ti":[0,0]},{"i":{"x":0.66,"y":1},"o":{"x":0.167,"y":0.167},"t":154,"s":[0,87],"to":[0,0],"ti":[0,0]},{"i":{"x":0.48,"y":1},"o":{"x":0.55,"y":0},"t":171,"s":[0,85],"to":[0,0],"ti":[0,0]},{"t":185,"s":[0,87]}],"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":"Bottom Rounding","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":82,"op":241,"st":-467,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":241,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":247,"s":[0]},{"t":941,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":241,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"t":291,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[45,-21.75],[-45,-21.75]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":52,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"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":"Right","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,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":64,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":0,"k":0,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":241,"op":365,"st":241,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".onSurfaceHome","cl":"onSurfaceHome","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":19,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":31,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":49,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":71,"s":[100]},{"t":80,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,1337,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":1282,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[1]},"o":{"x":[1],"y":[0]},"t":53,"s":[581]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.312],"y":[4.051]},"t":71,"s":[910]},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":80,"s":[910]},{"t":110,"s":[581]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":53,"s":[90]},{"t":71,"s":[300],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":80,"s":[300]},{"t":110,"s":[90]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":1,"k":[{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":53,"s":[90]},{"t":71,"s":[300],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":80,"s":[300]},{"t":110,"s":[90]}],"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491],[-551,-581],[551,-581],[641,-491],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":53,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.864,0],[0,0],[0,-49.864],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-49.864],[0,0],[49.864,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491],[-550.651,-581.35],[550.651,-581.35],[641,-491],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":54,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.471,0],[0,0],[0,-50.471],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-50.471],[0,0],[50.471,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.999],[-549.55,-582.448],[549.55,-582.448],[641,-490.999],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":55,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.541,0],[0,0],[0,-51.541],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-51.541],[0,0],[51.542,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.991],[-547.611,-584.38],[547.611,-584.38],[641,-490.991],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":56,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-53.134,0],[0,0],[0,-53.134],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-53.134],[0,0],[53.134,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.972],[-544.725,-587.246],[544.725,-587.246],[641,-490.972],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":57,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-55.32,0],[0,0],[0,-55.32],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-55.32],[0,0],[55.32,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.934],[-540.764,-591.17],[540.764,-591.17],[641,-490.934],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":58,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-58.188,0],[0,0],[0,-58.188],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-58.188],[0,0],[58.188,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.87],[-535.567,-596.303],[535.567,-596.303],[641,-490.87],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-61.849,0],[0,0],[0,-61.849],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-61.849],[0,0],[61.849,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.774],[-528.935,-602.839],[528.935,-602.839],[641,-490.774],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-66.441,0],[0,0],[0,-66.441],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-66.441],[0,0],[66.441,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.64],[-520.614,-611.026],[520.614,-611.026],[641,-490.64],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-72.145,0],[0,0],[0,-72.145],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-72.145],[0,0],[72.146,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.471],[-510.278,-621.193],[510.278,-621.193],[641,-490.471],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-79.194,0],[0,0],[0,-79.194],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-79.194],[0,0],[79.194,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.298],[-497.506,-633.792],[497.506,-633.792],[641,-490.298],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-87.886,0],[0,0],[0,-87.886],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-87.886],[0,0],[87.886,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.228],[-481.757,-649.472],[481.757,-649.472],[641,-490.228],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-98.583,0],[0,0],[0,-98.583],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-98.583],[0,0],[98.583,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.587],[-462.375,-669.211],[462.375,-669.211],[641,-490.587],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-111.618,0],[0,0],[0,-111.618],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-111.618],[0,0],[111.618,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-492.36],[-438.757,-694.603],[438.757,-694.603],[641,-492.36],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-126.899,0],[0,0],[0,-126.899],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-126.899],[0,0],[126.899,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-498.55],[-411.068,-728.481],[411.068,-728.481],[641,-498.55],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-142.859,0],[0,0],[0,-142.859],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-142.859],[0,0],[142.859,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-517.469],[-382.15,-776.318],[382.15,-776.318],[641,-517.469],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-155.928,0],[0,0],[0,-155.929],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-155.929],[0,0],[155.929,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-561.819],[-358.47,-844.349],[358.47,-844.349],[641,-561.819],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-163.404,0],[0,0],[0,-163.404],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-163.404],[0,0],[163.404,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-601.877],[-344.925,-897.952],[344.925,-897.952],[641,-601.877],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-610],[-341,-910],[341,-910],[641,-610],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-611.387],[-341,-911.387],[341,-911.387],[641,-611.387],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-611.036],[-341,-911.036],[341,-911.036],[641,-611.036],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-610.63],[-341,-910.63],[341,-910.63],[641,-610.63],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-610.076],[-341,-910.076],[341,-910.076],[641,-610.076],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-610],[-341,-910],[341,-910],[641,-610],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.323,0],[0,0],[0,-165.323],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-165.323],[0,0],[165.323,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-609.746],[-341.448,-909.299],[341.448,-909.299],[641,-609.746],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-164.568,0],[0,0],[0,-164.568],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-164.568],[0,0],[164.568,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-608.971],[-342.816,-907.155],[342.816,-907.155],[641,-608.971],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-163.284,0],[0,0],[0,-163.284],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-163.284],[0,0],[163.284,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-607.653],[-345.142,-903.511],[345.142,-903.511],[641,-607.653],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-161.454,0],[0,0],[0,-161.454],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-161.454],[0,0],[161.454,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-605.774],[-348.457,-898.317],[348.457,-898.317],[641,-605.774],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-159.065,0],[0,0],[0,-159.065],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-159.065],[0,0],[159.065,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-603.32],[-352.787,-891.533],[352.787,-891.533],[641,-603.32],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-156.106,0],[0,0],[0,-156.106],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-156.106],[0,0],[156.106,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-600.282],[-358.149,-883.134],[358.149,-883.134],[641,-600.282],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-152.577,0],[0,0],[0,-152.577],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-152.577],[0,0],[152.577,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-596.659],[-364.543,-873.116],[364.543,-873.116],[641,-596.659],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-148.485,0],[0,0],[0,-148.485],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-148.485],[0,0],[148.485,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-592.458],[-371.956,-861.502],[371.956,-861.502],[641,-592.458],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-143.851,0],[0,0],[0,-143.851],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-143.851],[0,0],[143.851,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-587.7],[-380.353,-848.347],[380.353,-848.347],[641,-587.7],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-138.708,0],[0,0],[0,-138.708],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-138.708],[0,0],[138.708,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-582.419],[-389.673,-833.746],[389.673,-833.746],[641,-582.419],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-133.104,0],[0,0],[0,-133.104],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-133.104],[0,0],[133.104,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-576.665],[-399.826,-817.839],[399.826,-817.839],[641,-576.665],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-127.105,0],[0,0],[0,-127.105],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-127.105],[0,0],[127.105,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-570.506],[-410.696,-800.81],[410.696,-800.81],[641,-570.506],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-120.793,0],[0,0],[0,-120.793],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-120.793],[0,0],[120.793,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-564.025],[-422.133,-782.892],[422.133,-782.892],[641,-564.025],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-114.263,0],[0,0],[0,-114.263],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-114.263],[0,0],[114.263,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-557.32],[-433.965,-764.355],[433.965,-764.355],[641,-557.32],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-100.978,0],[0,0],[0,-100.978],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-100.978],[0,0],[100.978,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-543.68],[-458.035,-726.645],[458.035,-726.645],[641,-543.68],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-94.448,0],[0,0],[0,-94.448],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-94.448],[0,0],[94.448,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-536.975],[-469.867,-708.108],[469.867,-708.108],[641,-536.975],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-88.136,0],[0,0],[0,-88.136],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-88.136],[0,0],[88.136,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-530.494],[-481.304,-690.19],[481.304,-690.19],[641,-530.494],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-82.137,0],[0,0],[0,-82.137],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-82.137],[0,0],[82.137,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-524.335],[-492.174,-673.161],[492.174,-673.161],[641,-524.335],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-76.533,0],[0,0],[0,-76.533],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-76.533],[0,0],[76.534,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-518.581],[-502.327,-657.254],[502.327,-657.254],[641,-518.581],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-71.39,0],[0,0],[0,-71.39],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-71.39],[0,0],[71.39,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-513.3],[-511.647,-642.653],[511.647,-642.653],[641,-513.3],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-66.756,0],[0,0],[0,-66.756],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-66.756],[0,0],[66.756,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-508.542],[-520.044,-629.498],[520.044,-629.498],[641,-508.542],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-62.664,0],[0,0],[0,-62.664],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-62.664],[0,0],[62.664,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-504.341],[-527.457,-617.884],[527.457,-617.884],[641,-504.341],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-59.135,0],[0,0],[0,-59.135],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-59.135],[0,0],[59.135,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-500.718],[-533.851,-607.866],[533.851,-607.866],[641,-500.718],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-56.177,0],[0,0],[0,-56.177],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-56.177],[0,0],[56.177,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-497.68],[-539.213,-599.467],[539.213,-599.467],[641,-497.68],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-53.787,0],[0,0],[0,-53.787],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-53.787],[0,0],[53.786,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-495.226],[-543.543,-592.683],[543.543,-592.683],[641,-495.226],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.957,0],[0,0],[0,-51.957],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-51.957],[0,0],[51.957,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-493.347],[-546.858,-587.489],[546.858,-587.489],[641,-493.347],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.673,0],[0,0],[0,-50.673],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-50.673],[0,0],[50.673,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-492.029],[-549.184,-583.845],[549.184,-583.845],[641,-492.029],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.918,0],[0,0],[0,-49.918],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-49.918],[0,0],[49.918,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491.254],[-550.552,-581.701],[550.552,-581.701],[641,-491.254],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491],[-551,-581],[551,-581],[641,-491],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.925,0.753,0.424,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.925,0.753,0.424,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":7,"op":110,"st":-110,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".onSurfaceHome","cl":"onSurfaceHome","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":70,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":71,"s":[95]},{"t":100,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,1284,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":1282,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.268]},"t":71,"s":[857]},{"t":109,"s":[1204]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":0,"k":300,"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":0,"k":300,"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]},{"ty":5,"nm":"Transform","np":14,"mn":"ADBE Geometry2","ix":2,"en":1,"ef":[{"ty":3,"nm":"Anchor Point","mn":"ADBE Geometry2-0001","ix":1,"v":{"a":0,"k":[640,400],"ix":1}},{"ty":3,"nm":"Position","mn":"ADBE Geometry2-0002","ix":2,"v":{"a":0,"k":[640,400],"ix":2}},{"ty":7,"nm":"Uniform Scale","mn":"ADBE Geometry2-0011","ix":3,"v":{"a":0,"k":1,"ix":3}},{"ty":0,"nm":"Scale Height","mn":"ADBE Geometry2-0003","ix":4,"v":{"a":0,"k":100,"ix":4}},{"ty":0,"nm":"Scale Width","mn":"ADBE Geometry2-0004","ix":5,"v":{"a":0,"k":100,"ix":5}},{"ty":0,"nm":"Skew","mn":"ADBE Geometry2-0005","ix":6,"v":{"a":0,"k":0,"ix":6}},{"ty":0,"nm":"Skew Axis","mn":"ADBE Geometry2-0006","ix":7,"v":{"a":0,"k":0,"ix":7}},{"ty":0,"nm":"Rotation","mn":"ADBE Geometry2-0007","ix":8,"v":{"a":0,"k":0,"ix":8}},{"ty":0,"nm":"Opacity","mn":"ADBE Geometry2-0008","ix":9,"v":{"a":0,"k":50,"ix":9}},{"ty":7,"nm":"Use Composition’s Shutter Angle","mn":"ADBE Geometry2-0009","ix":10,"v":{"a":0,"k":1,"ix":10}},{"ty":0,"nm":"Shutter Angle","mn":"ADBE Geometry2-0010","ix":11,"v":{"a":0,"k":0,"ix":11}},{"ty":7,"nm":"Sampling","mn":"ADBE Geometry2-0012","ix":12,"v":{"a":0,"k":1,"ix":12}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-557],[-341,-857],[341,-857],[641,-557],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-610.063],[-341,-910.063],[341,-910.063],[641,-610.063],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-653.007],[-341,-953.007],[341,-953.007],[641,-653.007],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-685.49],[-341,-985.49],[341,-985.49],[641,-685.49],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-711.374],[-341,-1011.374],[341,-1011.374],[641,-711.374],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-732.839],[-341,-1032.839],[341,-1032.839],[641,-732.839],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-751.125],[-341,-1051.125],[341,-1051.125],[641,-751.125],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-766.998],[-341,-1066.998],[341,-1066.998],[641,-766.998],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-780.965],[-341,-1080.965],[341,-1080.965],[641,-780.965],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-793.379],[-341,-1093.379],[341,-1093.379],[641,-793.379],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-804.497],[-341,-1104.497],[341,-1104.497],[641,-804.497],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-814.513],[-341,-1114.513],[341,-1114.513],[641,-814.513],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-823.578],[-341,-1123.578],[341,-1123.578],[641,-823.578],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-831.81],[-341,-1131.81],[341,-1131.81],[641,-831.81],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-839.307],[-341,-1139.307],[341,-1139.307],[641,-839.307],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-846.146],[-341,-1146.146],[341,-1146.146],[641,-846.146],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-852.394],[-341,-1152.394],[341,-1152.394],[641,-852.394],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-858.107],[-341,-1158.106],[341,-1158.106],[641,-858.107],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-863.331],[-341,-1163.331],[341,-1163.331],[641,-863.331],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-868.107],[-341,-1168.107],[341,-1168.107],[641,-868.107],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-872.472],[-341,-1172.472],[341,-1172.472],[641,-872.472],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-876.455],[-341,-1176.455],[341,-1176.455],[641,-876.455],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-880.085],[-341,-1180.085],[341,-1180.085],[641,-880.085],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-883.384],[-341,-1183.384],[341,-1183.384],[641,-883.384],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-886.375],[-341,-1186.375],[341,-1186.375],[641,-886.375],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-889.077],[-341,-1189.078],[341,-1189.078],[641,-889.077],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-891.508],[-341,-1191.508],[341,-1191.508],[641,-891.508],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-893.682],[-341,-1193.682],[341,-1193.682],[641,-893.682],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-895.614],[-341,-1195.614],[341,-1195.614],[641,-895.614],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-897.317],[-341,-1197.317],[341,-1197.317],[641,-897.317],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-898.803],[-341,-1198.803],[341,-1198.803],[641,-898.803],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-900.082],[-341,-1200.082],[341,-1200.082],[641,-900.082],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-901.164],[-341,-1201.165],[341,-1201.165],[641,-901.164],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-902.06],[-341,-1202.06],[341,-1202.06],[641,-902.06],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-902.776],[-341,-1202.776],[341,-1202.776],[641,-902.776],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-903.321],[-341,-1203.321],[341,-1203.321],[641,-903.321],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.925,0.753,0.424,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.925,0.753,0.424,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":70,"op":109,"st":-110,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".surfaceHome","cl":"surfaceHome","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":636,"ix":3},"y":{"a":0,"k":400,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[1280,800],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.365,0.259,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.365,0.259,0,1],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Volume","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":395,"st":0,"ct":1,"bm":0}]},{"id":"comp_1","nm":"Part02_Charade_Tablet_Home_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Secondary Y Movement","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":640,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":38,"s":[715.7]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":40.334,"s":[722.9]},{"t":52,"s":[715.7]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":467,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"MASTER Y POSITION","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":0,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":-34,"s":[-52.709]},{"i":{"x":[0.426],"y":[0.38]},"o":{"x":[0.48],"y":[0.051]},"t":0,"s":[-97.709]},{"i":{"x":[0.633],"y":[1]},"o":{"x":[0.654],"y":[-0.375]},"t":23,"s":[-103.709]},{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":38,"s":[-92.709]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":44.666,"s":[-50.709]},{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.52],"y":[0]},"t":78,"s":[12.291]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":109,"s":[-7.709]},{"i":{"x":[0.8],"y":[0.764]},"o":{"x":[0.3],"y":[0]},"t":118,"s":[-7.709]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":128,"s":[64.291]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.78],"y":[0]},"t":143,"s":[46.291]},{"i":{"x":[0.8],"y":[0.528]},"o":{"x":[0.3],"y":[0]},"t":145,"s":[46.291]},{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[1]},"t":155,"s":[64.291]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":184,"s":[-7.709]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.52],"y":[0]},"t":195,"s":[-7.709]},{"i":{"x":[0.428],"y":[1]},"o":{"x":[0.681],"y":[0]},"t":235,"s":[-261.709]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":290,"s":[-71.709]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.52],"y":[0]},"t":294,"s":[-71.709]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":334,"s":[-261.709]},{"i":{"x":[0.473],"y":[1.533]},"o":{"x":[0.63],"y":[0]},"t":343,"s":[-261.709]},{"i":{"x":[0.105],"y":[1]},"o":{"x":[0.497],"y":[-0.207]},"t":406,"s":[-157.709]},{"t":466,"s":[62.291]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":467,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".onSurfaceHome","cl":"onSurfaceHome","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":60,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":72,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":84,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":96,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":108,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":162,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":174,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":186,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":198,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":210,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":264,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":276,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":288,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":300,"s":[100]},{"t":312,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,1337,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":1282,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":0,"k":581,"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":0,"k":90,"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":0,"k":90,"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491],[-551,-581],[551,-581],[641,-491],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491],[-551,-581],[551,-581],[641,-491],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.925,0.753,0.424,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.925,0.753,0.424,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":312,"st":-205,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":549,"s":[100]},{"t":555,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.108},"t":426,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":465,"s":[0,-10.9,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":406,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[55.625,-40.25]],"c":false}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":426,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-36.75]],"c":false}]},{"t":465,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.83],"y":[0.83]},"o":{"x":[0.44],"y":[0]},"t":406,"s":[54]},{"t":426,"s":[58]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[55.625,-40.25]],"c":false}],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[55.461,-40.238]],"c":false}],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[54.979,-40.201]],"c":false}],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[54.191,-40.142]],"c":false}],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[53.112,-40.06]],"c":false}],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[51.754,-39.958]],"c":false}],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[50.13,-39.835]],"c":false}],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[48.251,-39.693]],"c":false}],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[46.13,-39.533]],"c":false}],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[43.779,-39.356]],"c":false}],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[41.212,-39.162]],"c":false}],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[38.443,-38.953]],"c":false}],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[35.488,-38.73]],"c":false}],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[32.365,-38.494]],"c":false}],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[29.095,-38.248]],"c":false}],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[25.705,-37.992]],"c":false}],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[22.232,-37.73]],"c":false}],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[18.728,-37.465]],"c":false}],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[15.275,-37.205]],"c":false}],"t":424,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[12.014,-36.959]],"c":false}],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-36.75]],"c":false}],"t":426,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-36.245]],"c":false}],"t":427,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-35.487]],"c":false}],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-34.479]],"c":false}],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-33.307]],"c":false}],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-32.102]],"c":false}],"t":431,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-30.966]],"c":false}],"t":432,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-29.94]],"c":false}],"t":433,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-29.029]],"c":false}],"t":434,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-28.223]],"c":false}],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-27.508]],"c":false}],"t":436,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-26.872]],"c":false}],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-26.304]],"c":false}],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-25.794]],"c":false}],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-25.335]],"c":false}],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-24.92]],"c":false}],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-24.545]],"c":false}],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-24.205]],"c":false}],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.896]],"c":false}],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.615]],"c":false}],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.36]],"c":false}],"t":446,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.129]],"c":false}],"t":447,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.918]],"c":false}],"t":448,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.728]],"c":false}],"t":449,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.555]],"c":false}],"t":450,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.4]],"c":false}],"t":451,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.26]],"c":false}],"t":452,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.135]],"c":false}],"t":453,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.023]],"c":false}],"t":454,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.924]],"c":false}],"t":455,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.837]],"c":false}],"t":456,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.762]],"c":false}],"t":457,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.697]],"c":false}],"t":458,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.642]],"c":false}],"t":459,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.597]],"c":false}],"t":460,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.561]],"c":false}],"t":461,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.534]],"c":false}],"t":462,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.515]],"c":false}],"t":463,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[54.014],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.056],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.123],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.216],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.333],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.474],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.636],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.819],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.022],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.244],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.483],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.738],"t":418,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.008],"t":419,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.291],"t":420,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.584],"t":421,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.883],"t":422,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.185],"t":423,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.482],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.763],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58],"t":426,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","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":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":406,"s":[{"i":[[6.167,-3.179],[-15.352,0],[5.008,2.581]],"o":[[-5.59,2.881],[13.869,0],[-6.167,-3.179]],"v":[[-9.526,-79.571],[0.604,-100.669],[9.867,-79.571]],"c":true}]},{"t":426,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.895,-79.571],[0.709,-100.669],[11.321,-79.571]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.765,"y":0.675},"o":{"x":0.399,"y":0},"t":406,"s":[0,139],"to":[0,0],"ti":[0,0]},{"i":{"x":0.24,"y":1},"o":{"x":0.4,"y":0.441},"t":424,"s":[0,101],"to":[0,0],"ti":[0,0]},{"t":427,"s":[0,93]}],"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":3,"mn":"ADBE Vector Group","hd":false}],"ip":406,"op":466,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-6,"s":[100]},{"t":5,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.033,-21.75],[-55.984,-40.016]],"c":false}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.198,-21.75],[-50.169,-39.599]],"c":false}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-5.356,-21.75],[-37.325,-38.678]],"c":false}],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.425,-21.75],[-16.892,-37.213]],"c":false}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.467,-21.75],[3.272,-35.766]],"c":false}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[2.584,-21.75],[18.031,-34.708]],"c":false}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.048,-21.75],[28.237,-33.976]],"c":false}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5.064,-21.75],[35.32,-33.468]],"c":false}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5.767,-21.75],[40.22,-33.116]],"c":false}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.241,-21.75],[43.523,-32.88]],"c":false}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.54,-21.75],[45.607,-32.73]],"c":false}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.701,-21.75],[46.73,-32.65]],"c":false}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[47.072,-32.625]],"c":false}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[49.587,-33.707]],"c":false}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[54.144,-35.668]],"c":false}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[57.197,-36.982]],"c":false}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[59.162,-37.828]],"c":false}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[60.549,-38.425]],"c":false}],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[61.581,-38.869]],"c":false}],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[62.369,-39.208]],"c":false}],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[62.978,-39.47]],"c":false}],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[63.45,-39.673]],"c":false}],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[63.811,-39.829]],"c":false}],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.082,-39.945]],"c":false}],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.276,-40.028]],"c":false}],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.405,-40.084]],"c":false}],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.477,-40.115]],"c":false}],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","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":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":195,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}]},{"i":{"x":0.01,"y":1},"o":{"x":0.167,"y":0.167},"t":208,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[47.072,-32.625]],"c":false}]},{"t":223,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.5,-40.125]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":200,"op":221,"st":-6,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-145,"s":[100]},{"t":-134,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.625,-45.75]],"c":false}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.725,-44.786]],"c":false}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.906,-43.051]],"c":false}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.119,-41.012]],"c":false}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.349,-38.801]],"c":false}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.591,-36.476]],"c":false}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.841,-34.073]],"c":false}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.097,-31.615]],"c":false}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.357,-29.121]],"c":false}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.618,-26.612]],"c":false}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.878,-24.121]],"c":false}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.125,-21.75]],"c":false}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.021,-24.795]],"c":false}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.846,-29.943]],"c":false}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.74,-33.077]],"c":false}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.672,-35.065]],"c":false}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.625,-36.457]],"c":false}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.59,-37.483]],"c":false}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.564,-38.258]],"c":false}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.543,-38.847]],"c":false}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.528,-39.292]],"c":false}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.517,-39.621]],"c":false}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.509,-39.856]],"c":false}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.504,-40.011]],"c":false}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.501,-40.098]],"c":false}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.048]],"c":false}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-39.825]],"c":false}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-39.469]],"c":false}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-38.991]],"c":false}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-38.401]],"c":false}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-37.708]],"c":false}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-36.919]],"c":false}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-36.042]],"c":false}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-35.084]],"c":false}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-34.051]],"c":false}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-32.951]],"c":false}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-31.79]],"c":false}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-30.576]],"c":false}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-29.316]],"c":false}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-28.021]],"c":false}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-26.701]],"c":false}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-25.375]],"c":false}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-24.067]],"c":false}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-22.825]],"c":false}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-21.75]],"c":false}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.38,-24.323]],"c":false}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.199,-28.188]],"c":false}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.031,-31.777]],"c":false}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.898,-34.618]],"c":false}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.795,-36.811]],"c":false}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.716,-38.509]],"c":false}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.654,-39.829]],"c":false}],"t":111,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.606,-40.851]],"c":false}],"t":112,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.57,-41.634]],"c":false}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.542,-42.22]],"c":false}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.523,-42.64]],"c":false}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.51,-42.919]],"c":false}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.502,-43.076]],"c":false}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.5,-43.125]],"c":false}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","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":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.17,"y":0},"t":59,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.625,-45.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":70,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.125,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":84,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0.167},"t":104,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-21.75]],"c":false}]},{"t":118,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.5,-43.125]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","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":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.17,"y":0},"t":59,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.895,10.429],[0.709,-10.669],[11.321,10.429]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":70,"s":[{"i":[[4.884,-3.179],[-12.16,0],[3.966,2.581]],"o":[[-4.427,2.881],[10.985,0],[-4.884,-3.179]],"v":[[-7.577,14.554],[0.447,-6.544],[7.784,14.554]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":84,"s":[{"i":[[5.367,-3.179],[-13.36,0],[4.358,2.581]],"o":[[-4.864,2.881],[12.069,0],[-5.367,-3.179]],"v":[[-8.36,13.429],[0.455,-7.669],[8.517,13.429]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":104,"s":[{"i":[[6.067,-3.179],[-15.103,0],[4.926,2.581]],"o":[[-5.499,2.881],[13.644,0],[-6.067,-3.179]],"v":[[-9.38,13.554],[0.585,-7.544],[9.699,13.554]],"c":true}]},{"t":112,"s":[{"i":[[6.067,-3.179],[-15.103,0],[4.926,2.581]],"o":[[-5.499,2.881],[13.644,0],[-6.067,-3.179]],"v":[[-9.38,13.554],[0.585,-7.544],[9.699,13.554]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-90],"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":"Round Bottom","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":59,"op":112,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":549,"s":[100]},{"t":555,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":16,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.22,"y":1},"o":{"x":0.18,"y":1},"t":23,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.643,-21.893],[-35.357,-21.893]],"c":false}]},{"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-37]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.52],"y":[0.96]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[48]},{"t":18,"s":[64]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":18,"s":[90]}],"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":"Right","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":1,"k":[{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.22,"y":1},"o":{"x":0.18,"y":1},"t":23,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.643,-21.893],[-35.357,-21.893]],"c":false}]},{"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-7.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.52],"y":[0.96]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[48]},{"t":18,"s":[64]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":1,"k":[{"t":-145,"s":[0],"h":1},{"t":0,"s":[100],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":28,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".secondaryHome","cl":"secondaryHome","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"t":52,"s":[100],"h":1},{"t":62,"s":[0],"h":1},{"t":112,"s":[100],"h":1},{"t":200,"s":[0],"h":1},{"t":221,"s":[100],"h":1},{"t":408,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,-259.147,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":27,"s":[{"i":[[4.22,-5.198],[6.889,-2.445],[6.141,2.195],[4.414,5.745],[2.09,6.003],[1.842,5.673],[0,0],[-4.629,7.032],[-3.668,2.338],[-9.176,-4.129],[0,0],[-2.537,1.423],[0,0],[-5.764,-2.348],[-3.35,-5.761],[3.559,-9.527],[0,0],[2.211,-5.388]],"o":[[-4.607,5.675],[-6.146,2.181],[-6.823,-2.438],[-3.873,-5.041],[-1.961,-5.633],[-0.673,-2.074],[-3.418,-8.054],[2.391,-3.632],[7.091,-4.519],[0,0],[2.053,0.611],[0,0],[6.766,-3.045],[6.042,2.461],[4.226,7.269],[0,0],[0,0],[-2.542,6.194]],"v":[[26.625,263.759],[9.088,276.927],[-10.477,276.927],[-27.766,263.755],[-34.35,245.857],[-39.92,228.853],[-41.895,222.617],[-38.621,196.593],[-29.625,187.329],[-2.764,182.988],[-0.678,184.077],[3.537,183.327],[5.123,182.613],[23.746,183.97],[38.891,196.367],[42.816,222.402],[40.88,229.024],[34.705,245.369]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":38,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":40,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":49,"s":[{"i":[[0,0],[5.924,-2.615],[6.267,2.766],[3.263,7.561],[2.981,6.909],[0,0],[0,0],[-4.825,8.784],[-3.668,2.709],[-9.176,-4.785],[0,0],[-7.064,3.683],[0,0],[-5.942,-2.295],[-3.35,-6.676],[4.5,-10.429],[0,0],[2.725,-6.315]],"o":[[-3.262,7.56],[-6.266,2.766],[-5.925,-2.615],[0,0],[-2.981,-6.909],[0,0],[-3.988,-9.246],[2.335,-4.251],[7.091,-5.237],[0,0],[7.064,3.683],[0,0],[6.766,-3.528],[6.387,2.466],[4.226,8.423],[0,0],[0,0],[-3.063,7.1]],"v":[[23.515,261.285],[9.088,276.548],[-10.477,276.549],[-24.906,261.285],[-33.85,240.557],[-42.795,219.829],[-48.707,206.127],[-47.871,176.22],[-38.875,165.486],[-13.389,163.498],[-11.803,164.325],[10.412,164.325],[11.998,163.498],[31.496,162.173],[46.641,176.538],[47.316,206.126],[40.88,221.041],[32.705,239.986]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.61,"y":0},"t":57,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":61,"s":[{"i":[[0,0],[5.829,-2.275],[6.166,2.405],[3.21,6.575],[2.933,6.009],[0,0],[0,0],[-4.747,7.639],[-3.609,2.356],[-9.028,-5.782],[0,0],[-6.95,4.451],[0,0],[-5.847,-1.996],[-3.296,-5.806],[4.428,-9.07],[0,0],[2.681,-5.492]],"o":[[-3.21,6.575],[-6.165,2.406],[-5.83,-2.274],[0,0],[-2.933,-6.009],[0,0],[-3.924,-8.041],[2.297,-3.697],[6.977,-4.554],[0,0],[6.95,4.451],[0,0],[6.657,-4.263],[6.284,2.145],[4.158,7.326],[0,0],[0,0],[-3.014,6.174]],"v":[[23.147,263.139],[8.953,276.413],[-10.297,276.414],[-24.493,263.14],[-31.981,245.113],[-39.468,227.086],[-43.871,215.169],[-44.463,189.161],[-35.612,179.825],[-10.537,178.375],[-8.977,179.374],[7.631,179.374],[9.191,178.375],[28.374,176.944],[43.275,189.437],[42.525,215.169],[37.607,228.14],[30.877,244.617]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":67,"s":[{"i":[[0,0],[5.782,-2.283],[6.116,2.414],[3.184,6.6],[2.91,6.031],[0,0],[0,0],[-4.709,7.668],[-3.58,2.365],[-8.956,-2.881],[0,0],[-6.894,2.218],[0,0],[-5.8,-2.003],[-3.269,-5.828],[4.392,-9.104],[0,0],[2.66,-5.513]],"o":[[-3.184,6.599],[-6.116,2.415],[-5.783,-2.283],[0,0],[-2.91,-6.031],[0,0],[-3.893,-8.071],[2.279,-3.711],[6.921,-4.571],[0,0],[6.894,2.218],[0,0],[6.604,-2.124],[6.234,2.153],[4.125,7.353],[0,0],[0,0],[-2.99,6.198]],"v":[[22.966,262.838],[8.886,276.162],[-10.209,276.162],[-24.29,262.838],[-31.064,244.743],[-37.837,226.649],[-41.5,214.688],[-42.792,188.581],[-34.012,179.21],[-9.139,174.179],[-7.591,174.677],[6.267,174.677],[7.814,174.179],[26.844,176.318],[41.625,188.859],[40.176,214.688],[36.003,227.707],[29.98,244.245]],"c":true}]},{"i":{"x":0.48,"y":1},"o":{"x":0.26,"y":1},"t":111,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,1.445],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,1.445],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[22.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-30.85,245.866],[-37.795,227.978],[-42.707,216.152],[-41.871,190.343],[-32.875,181.079],[-7.389,179.363],[-5.803,180.077],[5.412,180.077],[6.998,179.363],[26.496,178.22],[41.641,190.617],[42.316,216.152],[38.88,229.024],[31.705,245.374]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"t":118,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.902,"y":0},"o":{"x":0.3,"y":0},"t":119,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":129,"s":[{"i":[[0,0],[6.002,-2.085],[6.349,2.205],[3.305,6.027],[3.02,5.508],[0,0],[0,0],[-4.888,7.002],[-3.716,2.159],[-9.296,-3.814],[0,0],[-7.157,2.936],[0,0],[-6.02,-1.829],[-3.393,-5.322],[4.559,-8.314],[0,0],[2.761,-5.034]],"o":[[-3.305,6.027],[-6.349,2.205],[-6.003,-2.085],[0,0],[-3.02,-5.508],[0,0],[-4.041,-7.37],[2.366,-3.389],[7.184,-4.175],[0,0],[7.157,2.936],[0,0],[6.855,-2.813],[6.471,1.966],[4.282,6.715],[0,0],[0,0],[-3.104,5.66]],"v":[[23.828,264.941],[9.213,277.109],[-10.609,277.11],[-25.226,264.942],[-34.288,248.418],[-43.349,231.894],[-49.339,220.97],[-48.492,197.13],[-39.379,188.572],[-13.559,186.988],[-11.952,187.647],[10.554,187.647],[12.161,186.988],[31.914,185.931],[47.257,197.383],[47.941,220.97],[41.421,232.86],[33.139,247.963]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.78,"y":0},"t":144,"s":[{"i":[[0,0],[5.924,-2.439],[6.267,2.579],[3.263,7.051],[2.981,6.443],[0,0],[0,0],[-4.825,8.191],[-3.668,2.526],[-9.176,-4.462],[0,0],[-7.064,3.435],[0,0],[-5.942,-2.14],[-3.35,-6.225],[4.5,-9.725],[0,0],[2.725,-5.889]],"o":[[-3.262,7.05],[-6.266,2.58],[-5.925,-2.439],[0,0],[-2.981,-6.443],[0,0],[-3.988,-8.622],[2.335,-3.964],[7.091,-4.884],[0,0],[7.064,3.435],[0,0],[6.766,-3.29],[6.387,2.3],[4.226,7.855],[0,0],[0,0],[-3.063,6.621]],"v":[[23.515,262.501],[9.088,276.734],[-10.477,276.735],[-24.906,262.501],[-33.85,243.171],[-42.795,223.841],[-48.707,211.063],[-47.871,183.174],[-38.875,173.164],[-13.389,171.31],[-11.803,172.081],[10.412,172.081],[11.998,171.31],[31.496,170.074],[46.641,183.471],[47.316,211.063],[40.88,224.972],[32.705,242.639]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.4,"y":0},"t":146,"s":[{"i":[[0,0],[5.924,-2.439],[6.267,2.579],[3.263,7.051],[2.981,6.443],[0,0],[0,0],[-4.825,8.191],[-3.668,2.526],[-9.176,-4.462],[0,0],[-7.064,3.435],[0,0],[-5.942,-2.14],[-3.35,-6.225],[4.5,-9.725],[0,0],[2.725,-5.889]],"o":[[-3.262,7.05],[-6.266,2.58],[-5.925,-2.439],[0,0],[-2.981,-6.443],[0,0],[-3.988,-8.622],[2.335,-3.964],[7.091,-4.884],[0,0],[7.064,3.435],[0,0],[6.766,-3.29],[6.387,2.3],[4.226,7.855],[0,0],[0,0],[-3.063,6.621]],"v":[[23.515,262.501],[9.088,276.734],[-10.477,276.735],[-24.906,262.501],[-33.85,243.171],[-42.795,223.841],[-48.707,211.063],[-47.871,183.174],[-38.875,173.164],[-13.389,171.31],[-11.803,172.081],[10.412,172.081],[11.998,171.31],[31.496,170.074],[46.641,183.471],[47.316,211.063],[40.88,224.972],[32.705,242.639]],"c":true}]},{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.884},"t":156,"s":[{"i":[[0,0],[6.002,-2.085],[6.349,2.205],[3.305,6.027],[3.02,5.508],[0,0],[0,0],[-4.888,7.002],[-3.716,2.159],[-9.296,-3.814],[0,0],[-7.157,2.936],[0,0],[-6.02,-1.829],[-3.393,-5.322],[4.559,-8.314],[0,0],[2.761,-5.034]],"o":[[-3.305,6.027],[-6.349,2.205],[-6.003,-2.085],[0,0],[-3.02,-5.508],[0,0],[-4.041,-7.37],[2.366,-3.389],[7.184,-4.175],[0,0],[7.157,2.936],[0,0],[6.855,-2.813],[6.471,1.966],[4.282,6.715],[0,0],[0,0],[-3.104,5.66]],"v":[[23.828,264.941],[9.213,277.109],[-10.609,277.11],[-25.226,264.942],[-34.288,248.418],[-43.349,231.894],[-49.339,220.97],[-48.492,197.13],[-39.379,188.572],[-13.559,186.988],[-11.952,187.647],[10.554,187.647],[12.161,186.988],[31.914,185.931],[47.257,197.383],[47.941,220.97],[41.421,232.86],[33.139,247.963]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":175,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":195,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"t":200,"s":[{"i":[[0,0],[4.982,-1.843],[5.269,1.949],[2.743,5.327],[2.507,4.868],[0,0],[0,0],[-4.057,6.188],[-3.084,1.909],[-7.716,-3.371],[0,0],[-5.94,2.595],[0,0],[-4.997,-1.617],[-2.817,-4.703],[3.784,-7.348],[0,0],[2.291,-4.449]],"o":[[-2.743,5.326],[-5.269,1.949],[-4.982,-1.842],[0,0],[-2.507,-4.868],[0,0],[-3.354,-6.514],[1.963,-2.995],[5.963,-3.69],[0,0],[5.94,2.595],[0,0],[5.69,-2.486],[5.371,1.738],[3.554,5.935],[0,0],[0,0],[-2.576,5.002]],"v":[[21.328,266.623],[7.572,277.365],[-8.88,277.366],[-21.013,266.612],[-30.158,252.046],[-38.929,237.463],[-42.276,232.155],[-38.901,208.3],[-31.337,200.737],[-7.657,199.329],[-6.324,199.912],[6.078,199.877],[7.412,199.294],[26.437,198.157],[39.172,208.278],[42.466,230.78],[38.179,240.068],[31.18,251.666]],"c":true}],"h":1},{"i":{"x":0.8,"y":1},"o":{"x":0.167,"y":0.167},"t":221,"s":[{"i":[[0,0],[-6.469,2.54],[-6.843,-2.686],[-3.562,-7.344],[-2.238,-6.985],[0,0],[0,0],[6.26,-8],[4.298,-2.248],[9.409,5.544],[0,0],[2.81,-1.732],[0,0],[6.751,1.517],[4.533,6.044],[-3.466,10.58],[0,0],[-1.94,6.445]],"o":[[3.562,-7.343],[6.843,-2.687],[6.47,2.54],[0,0],[2.25,7.021],[0,0],[3.257,9.331],[-3.029,3.872],[-8.309,4.346],[0,0],[-2.38,-1.461],[0,0],[-6.856,4.193],[-7.256,-1.631],[-5.72,-7.626],[0,0],[0,0],[2.154,-7.155]],"v":[[-25.972,255.773],[-10.844,240.983],[10.52,240.983],[26.276,255.808],[31.363,274.998],[37.793,295.9],[41.622,309.746],[42.615,338.568],[31.6,348.034],[3.818,347.339],[2.192,346.381],[-2.497,346.652],[-4.104,347.635],[-23.931,350.481],[-42.288,338.404],[-42.272,310.024],[-38.575,296.317],[-32.279,277.471]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":225,"s":[{"i":[[0,0],[-6.469,2.54],[-6.843,-2.686],[-3.562,-7.344],[-2.238,-6.985],[0,0],[0,0],[6.26,-8],[4.298,-2.248],[9.409,5.544],[0,0],[2.81,-1.732],[0,0],[6.751,1.517],[4.533,6.044],[-3.466,10.58],[0,0],[-1.94,6.445]],"o":[[3.562,-7.343],[6.843,-2.687],[6.47,2.54],[0,0],[2.25,7.021],[0,0],[3.257,9.331],[-3.029,3.872],[-8.309,4.346],[0,0],[-2.38,-1.461],[0,0],[-6.856,4.193],[-7.256,-1.631],[-5.72,-7.626],[0,0],[0,0],[2.154,-7.155]],"v":[[-25.972,255.773],[-10.844,240.983],[10.52,240.983],[26.276,255.808],[31.363,274.998],[37.793,295.9],[41.622,309.746],[42.615,338.568],[31.6,348.034],[3.818,347.339],[2.192,346.381],[-2.497,346.652],[-4.104,347.635],[-23.931,350.481],[-42.288,338.404],[-42.272,310.024],[-38.575,296.317],[-32.279,277.471]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":230,"s":[{"i":[[0,0],[-6.469,2.537],[-6.843,-2.683],[-3.562,-7.334],[-3.256,-6.702],[0,0],[0,0],[5.268,-8.52],[4.005,-2.628],[10.02,4.641],[0,0],[7.713,-3.573],[0,0],[6.489,2.226],[3.658,6.475],[-4.914,10.116],[0,0],[-2.976,6.126]],"o":[[3.562,-7.333],[6.843,-2.683],[6.47,2.537],[0,0],[3.256,6.702],[0,0],[4.355,8.968],[-2.55,4.123],[-7.743,5.08],[0,0],[-7.714,-3.573],[0,0],[-7.388,3.422],[-6.974,-2.392],[-4.615,-8.17],[0,0],[0,0],[3.345,-6.886]],"v":[[-26.597,256.303],[-10.844,241.499],[10.52,241.498],[26.276,256.303],[36.042,276.409],[45.809,296.515],[52.265,309.806],[51.352,338.814],[41.529,349.227],[13.7,351.155],[11.968,350.353],[-12.29,350.353],[-14.021,351.155],[-35.312,352.44],[-51.849,338.506],[-52.586,309.806],[-45.559,295.339],[-36.632,276.963]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":235,"s":[{"i":[[0,0],[-6.469,2.527],[-6.843,-2.672],[-3.562,-7.305],[-2.238,-6.948],[0,0],[0,0],[6.26,-7.958],[4.298,-2.236],[9.409,5.515],[0,0],[2.81,-1.723],[0,0],[6.751,1.509],[4.533,6.012],[-3.466,10.525],[0,0],[-1.94,6.411]],"o":[[3.562,-7.305],[6.843,-2.673],[6.47,2.527],[0,0],[2.25,6.984],[0,0],[3.257,9.283],[-3.029,3.851],[-8.309,4.323],[0,0],[-2.38,-1.454],[0,0],[-6.856,4.171],[-7.256,-1.622],[-5.72,-7.586],[0,0],[0,0],[2.154,-7.118]],"v":[[-25.972,256.282],[-10.844,241.57],[10.52,241.569],[26.276,256.317],[31.363,275.406],[37.793,296.199],[41.622,309.972],[42.615,338.644],[31.6,348.06],[3.818,347.368],[2.192,346.415],[-2.497,346.685],[-4.104,347.662],[-23.931,350.493],[-42.288,338.48],[-42.272,310.249],[-38.575,296.613],[-32.279,277.866]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":240,"s":[{"i":[[0,0],[-6.469,2.537],[-6.843,-2.683],[-3.562,-7.334],[-3.256,-6.702],[0,0],[0,0],[5.268,-8.52],[4.005,-2.628],[10.02,4.641],[0,0],[7.713,-3.573],[0,0],[6.489,2.226],[3.658,6.475],[-4.914,10.116],[0,0],[-2.976,6.126]],"o":[[3.562,-7.333],[6.843,-2.683],[6.47,2.537],[0,0],[3.256,6.702],[0,0],[4.355,8.968],[-2.55,4.123],[-7.743,5.08],[0,0],[-7.714,-3.573],[0,0],[-7.388,3.422],[-6.974,-2.392],[-4.615,-8.17],[0,0],[0,0],[3.345,-6.886]],"v":[[-26.597,256.303],[-10.844,241.499],[10.52,241.498],[26.276,256.303],[36.042,276.409],[45.809,296.515],[52.265,309.806],[51.352,338.814],[41.529,349.227],[13.7,351.155],[11.968,350.353],[-12.29,350.353],[-14.021,351.155],[-35.312,352.44],[-51.849,338.506],[-52.586,309.806],[-45.559,295.339],[-36.632,276.963]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.17,"y":0},"t":250,"s":[{"i":[[0,0],[-6.469,2.528],[-6.843,-2.674],[-3.562,-7.309],[-2.238,-6.951],[0,0],[0,0],[6.26,-7.962],[4.298,-2.237],[9.409,5.517],[0,0],[2.81,-1.724],[0,0],[6.751,1.51],[4.533,6.015],[-3.466,10.53],[0,0],[-1.94,6.414]],"o":[[3.562,-7.308],[6.843,-2.674],[6.47,2.528],[0,0],[2.25,6.988],[0,0],[3.257,9.287],[-3.029,3.853],[-8.309,4.325],[0,0],[-2.38,-1.454],[0,0],[-6.856,4.173],[-7.256,-1.623],[-5.72,-7.59],[0,0],[0,0],[2.154,-7.121]],"v":[[-25.972,256.238],[-10.844,241.519],[10.52,241.518],[26.276,256.273],[31.363,275.37],[37.793,296.172],[41.622,309.952],[42.615,338.637],[31.6,348.057],[3.818,347.366],[2.192,346.412],[-2.497,346.682],[-4.104,347.66],[-23.931,350.492],[-42.288,338.473],[-42.272,310.229],[-38.575,296.587],[-32.279,277.831]],"c":true}]},{"i":{"x":0.31,"y":1},"o":{"x":0.5,"y":0},"t":296,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[32.971,273.182],[41.915,291.071],[47.827,302.896],[46.991,328.705],[37.996,337.969],[12.509,339.685],[10.924,338.971],[-11.292,338.971],[-12.878,339.685],[-32.376,340.828],[-47.521,328.431],[-48.196,302.896],[-41.76,290.025],[-33.585,273.675]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.167,"y":0},"t":313,"s":[{"i":[[0,0],[-5.924,2.568],[-6.267,-2.716],[-3.263,-7.424],[-2.981,-6.785],[0,0],[0,0],[4.825,-8.625],[3.668,-2.66],[9.176,4.699],[0,0],[7.064,-3.617],[0,0],[5.942,2.253],[3.35,6.555],[-4.5,10.241],[0,0],[-2.725,6.201]],"o":[[3.262,-7.424],[6.266,-2.716],[5.925,2.568],[0,0],[2.981,6.785],[0,0],[3.988,9.079],[-2.335,4.174],[-7.091,5.142],[0,0],[-7.064,-3.617],[0,0],[-6.766,3.465],[-6.387,-2.422],[-4.226,-8.271],[0,0],[0,0],[3.063,-6.972]],"v":[[-24.394,257.438],[-9.968,242.451],[9.597,242.45],[24.026,257.438],[32.971,277.793],[41.915,298.147],[47.827,311.602],[46.991,340.969],[37.996,351.51],[12.509,353.462],[10.924,352.65],[-11.292,352.65],[-12.878,353.462],[-32.376,354.763],[-47.521,340.657],[-48.196,311.602],[-41.76,296.957],[-33.585,278.353]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":318,"s":[{"i":[[0,0],[-6.469,2.54],[-6.843,-2.686],[-3.562,-7.344],[-2.238,-6.985],[0,0],[0,0],[6.26,-8],[4.298,-2.248],[9.409,5.544],[0,0],[2.81,-1.732],[0,0],[6.751,1.517],[4.533,6.044],[-3.466,10.58],[0,0],[-1.94,6.445]],"o":[[3.562,-7.343],[6.843,-2.687],[6.47,2.54],[0,0],[2.25,7.021],[0,0],[3.257,9.331],[-3.029,3.872],[-8.309,4.346],[0,0],[-2.38,-1.461],[0,0],[-6.856,4.193],[-7.256,-1.631],[-5.72,-7.626],[0,0],[0,0],[2.154,-7.155]],"v":[[-25.972,255.773],[-10.844,240.983],[10.52,240.983],[26.276,255.808],[31.363,274.998],[37.793,295.9],[41.622,309.746],[42.615,338.568],[31.6,348.034],[3.818,347.339],[2.192,346.381],[-2.497,346.652],[-4.104,347.635],[-23.931,350.481],[-42.288,338.404],[-42.272,310.024],[-38.575,296.317],[-32.279,277.471]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":323,"s":[{"i":[[0,0],[-6.469,2.434],[-6.843,-2.574],[-3.562,-7.037],[-3.256,-6.431],[0,0],[0,0],[5.268,-8.175],[4.005,-2.521],[10.02,4.453],[0,0],[7.713,-3.428],[0,0],[6.489,2.136],[3.658,6.213],[-4.914,9.707],[0,0],[-2.976,5.878]],"o":[[3.562,-7.036],[6.843,-2.575],[6.47,2.434],[0,0],[3.256,6.431],[0,0],[4.355,8.605],[-2.55,3.956],[-7.743,4.874],[0,0],[-7.714,-3.428],[0,0],[-7.388,3.284],[-6.974,-2.296],[-4.615,-7.84],[0,0],[0,0],[3.345,-6.608]],"v":[[-26.597,255.596],[-10.844,241.39],[10.52,241.389],[26.276,255.596],[36.042,274.888],[45.809,294.181],[52.265,306.934],[51.352,334.769],[41.529,344.76],[13.7,346.61],[11.968,345.84],[-12.29,345.84],[-14.021,346.61],[-35.312,347.843],[-51.849,334.473],[-52.586,306.934],[-45.559,293.052],[-36.632,275.419]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":328,"s":[{"i":[[0,0],[-6.469,2.527],[-6.843,-2.672],[-3.562,-7.305],[-2.238,-6.948],[0,0],[0,0],[6.26,-7.958],[4.298,-2.236],[9.409,5.515],[0,0],[2.81,-1.723],[0,0],[6.751,1.509],[4.533,6.012],[-3.466,10.525],[0,0],[-1.94,6.411]],"o":[[3.562,-7.305],[6.843,-2.673],[6.47,2.527],[0,0],[2.25,6.984],[0,0],[3.257,9.283],[-3.029,3.851],[-8.309,4.323],[0,0],[-2.38,-1.454],[0,0],[-6.856,4.171],[-7.256,-1.622],[-5.72,-7.586],[0,0],[0,0],[2.154,-7.118]],"v":[[-25.972,256.282],[-10.844,241.57],[10.52,241.569],[26.276,256.317],[31.363,275.406],[37.793,296.199],[41.622,309.972],[42.615,338.644],[31.6,348.06],[3.818,347.368],[2.192,346.415],[-2.497,346.685],[-4.104,347.662],[-23.931,350.493],[-42.288,338.48],[-42.272,310.249],[-38.575,296.613],[-32.279,277.866]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":333,"s":[{"i":[[0,0],[-6.469,2.537],[-6.843,-2.683],[-3.562,-7.334],[-3.256,-6.702],[0,0],[0,0],[5.268,-8.52],[4.005,-2.628],[10.02,4.641],[0,0],[7.713,-3.573],[0,0],[6.489,2.226],[3.658,6.475],[-4.914,10.116],[0,0],[-2.976,6.126]],"o":[[3.562,-7.333],[6.843,-2.683],[6.47,2.537],[0,0],[3.256,6.702],[0,0],[4.355,8.968],[-2.55,4.123],[-7.743,5.08],[0,0],[-7.714,-3.573],[0,0],[-7.388,3.422],[-6.974,-2.392],[-4.615,-8.17],[0,0],[0,0],[3.345,-6.886]],"v":[[-26.597,256.303],[-10.844,241.499],[10.52,241.498],[26.276,256.303],[36.042,276.409],[45.809,296.515],[52.265,309.806],[51.352,338.814],[41.529,349.227],[13.7,351.155],[11.968,350.353],[-12.29,350.353],[-14.021,351.155],[-35.312,352.44],[-51.849,338.506],[-52.586,309.806],[-45.559,295.339],[-36.632,276.963]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.17,"y":0},"t":343,"s":[{"i":[[0,0],[-6.469,2.528],[-6.843,-2.674],[-3.562,-7.309],[-2.238,-6.951],[0,0],[0,0],[6.26,-7.962],[4.298,-2.237],[9.409,5.517],[0,0],[2.81,-1.724],[0,0],[6.751,1.51],[4.533,6.015],[-3.466,10.53],[0,0],[-1.94,6.414]],"o":[[3.562,-7.308],[6.843,-2.674],[6.47,2.528],[0,0],[2.25,6.988],[0,0],[3.257,9.287],[-3.029,3.853],[-8.309,4.325],[0,0],[-2.38,-1.454],[0,0],[-6.856,4.173],[-7.256,-1.623],[-5.72,-7.59],[0,0],[0,0],[2.154,-7.121]],"v":[[-25.972,256.238],[-10.844,241.519],[10.52,241.518],[26.276,256.273],[31.363,275.37],[37.793,296.172],[41.622,309.952],[42.615,338.637],[31.6,348.057],[3.818,347.366],[2.192,346.412],[-2.497,346.682],[-4.104,347.66],[-23.931,350.492],[-42.288,338.473],[-42.272,310.229],[-38.575,296.587],[-32.279,277.831]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.5,"y":0},"t":389,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[32.971,273.182],[41.915,291.071],[47.827,302.896],[46.991,328.705],[37.996,337.969],[12.509,339.685],[10.924,338.971],[-11.292,338.971],[-12.878,339.685],[-32.376,340.828],[-47.521,328.431],[-48.196,302.896],[-41.76,290.025],[-33.585,273.675]],"c":true}]},{"t":406,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[30.971,273.182],[38.915,291.071],[43.202,302.895],[42.366,328.704],[33.371,337.968],[7.884,339.684],[6.299,338.97],[-6.167,338.97],[-7.753,339.684],[-27.251,340.827],[-42.396,328.43],[-43.071,302.895],[-38.76,290.025],[-31.585,273.675]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.149,0.098,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.149,0.098,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"animated arrow","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":27,"op":408,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".surfaceHome","cl":"surfaceHome","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":640,"ix":3},"y":{"a":0,"k":400,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[1280,800],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.365,0.259,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.365,0.259,0,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Volume","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":467,"st":-145,"ct":1,"bm":0}]},{"id":"comp_2","nm":"Part01_Thumb_Tablet_Home_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"HAND REPOSITION","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":1289,"ix":3},"y":{"a":0,"k":942,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":321,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"HAND NULL","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.39],"y":[1]},"o":{"x":[0.59],"y":[0]},"t":3,"s":[10]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.15],"y":[0]},"t":59,"s":[0]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":95,"s":[-3]},{"i":{"x":[0.44],"y":[1]},"o":{"x":[0.84],"y":[0]},"t":122,"s":[-4]},{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.56],"y":[0]},"t":150,"s":[15]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":175,"s":[-4]},{"i":{"x":[0.44],"y":[1]},"o":{"x":[0.84],"y":[0]},"t":234,"s":[-4]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":262,"s":[15]},{"t":323,"s":[-5]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.06],"y":[0.36]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":73,"s":[-137]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":262,"s":[-137]},{"t":343,"s":[0]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.194],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":63,"s":[-111.366]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":122,"s":[-111.366]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.259],"y":[0]},"t":145,"s":[-304.366]},{"i":{"x":[0.45],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":147,"s":[-304.366]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":208,"s":[-111.366]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":234,"s":[-111.366]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.259],"y":[0]},"t":257,"s":[-304.366]},{"i":{"x":[0.47],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":259,"s":[-304.366]},{"t":336,"s":[-17]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":321,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"⨳ Thumb KO","parent":2,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"k":[{"s":[17.7],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.084],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.752],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.548],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.405],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.298],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.213],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.144],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.086],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.037],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.995],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.958],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.926],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.898],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.874],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.852],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.832],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.815],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.8],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.786],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.773],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.763],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.753],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.744],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.73],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.715],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.706],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.723],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.753],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.794],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.845],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.906],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.974],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.048],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.126],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.206],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.286],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.366],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.445],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.522],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.596],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.667],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.736],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.801],"t":165,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.864],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.923],"t":167,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.979],"t":168,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.033],"t":169,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.083],"t":170,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.131],"t":171,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.176],"t":172,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.219],"t":173,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.259],"t":174,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.297],"t":175,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.333],"t":176,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.366],"t":177,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.397],"t":178,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.427],"t":179,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.454],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.48],"t":181,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.504],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.526],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.547],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.566],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.584],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.6],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.615],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.628],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.64],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.651],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.661],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.677],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.693],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.682],"t":203,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.664],"t":204,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.642],"t":205,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.617],"t":206,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.589],"t":207,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.559],"t":208,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.528],"t":209,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.496],"t":210,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.462],"t":211,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.427],"t":212,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.391],"t":213,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.355],"t":214,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.318],"t":215,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.28],"t":216,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.241],"t":217,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.202],"t":218,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.163],"t":219,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.123],"t":220,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.083],"t":221,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.043],"t":222,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.002],"t":223,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.961],"t":224,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.92],"t":225,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.878],"t":226,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.837],"t":227,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.795],"t":228,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.754],"t":229,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.587],"t":233,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.545],"t":234,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.504],"t":235,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.462],"t":236,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.421],"t":237,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.38],"t":238,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.339],"t":239,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.298],"t":240,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.258],"t":241,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.218],"t":242,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.178],"t":243,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.139],"t":244,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.1],"t":245,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.062],"t":246,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.025],"t":247,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.988],"t":248,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.952],"t":249,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.917],"t":250,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.883],"t":251,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.85],"t":252,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.819],"t":253,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.79],"t":254,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.764],"t":255,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.74],"t":256,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.72],"t":257,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.706],"t":258,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.706],"t":260,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.723],"t":261,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.753],"t":262,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.794],"t":263,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.845],"t":264,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.906],"t":265,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.974],"t":266,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.048],"t":267,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.126],"t":268,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.206],"t":269,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.286],"t":270,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.366],"t":271,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.445],"t":272,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.522],"t":273,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.596],"t":274,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.667],"t":275,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.736],"t":276,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.801],"t":277,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.864],"t":278,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.923],"t":279,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.979],"t":280,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.033],"t":281,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.083],"t":282,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.131],"t":283,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.176],"t":284,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.219],"t":285,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.259],"t":286,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.297],"t":287,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.333],"t":288,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.366],"t":289,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.397],"t":290,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.427],"t":291,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.454],"t":292,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.48],"t":293,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.504],"t":294,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.526],"t":295,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.547],"t":296,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.566],"t":297,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.584],"t":298,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.6],"t":299,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.615],"t":300,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.628],"t":301,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.64],"t":302,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.651],"t":303,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.661],"t":304,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.677],"t":306,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.693],"t":309,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"p":{"k":[{"s":[0,0,0],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.015,0,0],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.077,0,0],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.192,0,0],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.364,0,0],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.598,0,0],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.902,0,0],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.285,0,0],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.76,0,0],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.347,0,0],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.074,0,0],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.968,0,0],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.068,0,0],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.423,0,0],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.089,0,0],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.109,0,0],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.416,0,0],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.732,0,0],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.688,0,0],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.11,0,0],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.047,0,0],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.624,0,0],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.922,0,0],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-20,0,0],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-20,0,0],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.949,0,0],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.77,0,0],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.468,0,0],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.054,0,0],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.54,0,0],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.938,0,0],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.258,0,0],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.519,0,0],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.742,0,0],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.942,0,0],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.136,0,0],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-13.336,0,0],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.55,0,0],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-11.783,0,0],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-11.04,0,0],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.326,0,0],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-9.641,0,0],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.987,0,0],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.363,0,0],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-7.77,0,0],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-7.207,0,0],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.673,0,0],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.169,0,0],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.691,0,0],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.24,0,0],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.813,0,0],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.411,0,0],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.031,0,0],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.675,0,0],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.34,0,0],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.026,0,0],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.732,0,0],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.457,0,0],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.2,0,0],"t":181,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.961,0,0],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.739,0,0],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.533,0,0],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.343,0,0],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.168,0,0],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.006,0,0],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.857,0,0],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.722,0,0],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.598,0,0],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.488,0,0],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.389,0,0],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.302,0,0],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.226,0,0],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.161,0,0],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.108,0,0],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.066,0,0],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.034,0,0],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.013,0,0],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.002,0,0],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.015,0,0],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.077,0,0],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.192,0,0],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.364,0,0],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.598,0,0],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.902,0,0],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.285,0,0],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.76,0,0],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.347,0,0],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.074,0,0],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.968,0,0],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.068,0,0],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.423,0,0],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.089,0,0],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.109,0,0],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.416,0,0],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.732,0,0],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.688,0,0],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.11,0,0],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.047,0,0],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.624,0,0],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.922,0,0],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-20,0,0],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-20,0,0],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.949,0,0],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.77,0,0],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.468,0,0],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.054,0,0],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.54,0,0],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.938,0,0],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.258,0,0],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.519,0,0],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.742,0,0],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.942,0,0],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.136,0,0],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-13.336,0,0],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.55,0,0],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-11.783,0,0],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-11.04,0,0],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.326,0,0],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-9.641,0,0],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.987,0,0],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.363,0,0],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-7.77,0,0],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-7.207,0,0],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.673,0,0],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.169,0,0],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.691,0,0],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.24,0,0],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.813,0,0],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.411,0,0],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.031,0,0],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.675,0,0],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.34,0,0],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.026,0,0],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.732,0,0],"t":291,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.457,0,0],"t":292,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.2,0,0],"t":293,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.961,0,0],"t":294,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.739,0,0],"t":295,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.533,0,0],"t":296,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.343,0,0],"t":297,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.168,0,0],"t":298,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.006,0,0],"t":299,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.857,0,0],"t":300,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.722,0,0],"t":301,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.598,0,0],"t":302,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.488,0,0],"t":303,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.389,0,0],"t":304,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.302,0,0],"t":305,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.226,0,0],"t":306,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.161,0,0],"t":307,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.108,0,0],"t":308,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.066,0,0],"t":309,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.034,0,0],"t":310,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.013,0,0],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.002,0,0],"t":312,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"a":{"a":0,"k":[0,49,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.095,4.103],[20.866,-4.391],[30.055,14.909],[-19.458,9.569],[-43.79,10.76],[-18.62,4.309],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.284,-4.689],[-20.866,4.391],[-30.056,-14.63],[31.09,-15.283],[13.475,-3.311],[35.363,-7.848],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.667,116.665],[-117.97,119.232],[-229.615,116.95],[-229.867,50.888],[-139.016,15.389],[-88.152,4.787],[-12.612,-36.255]],"c":true}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.098,4.127],[20.863,-4.414],[30.005,14.508],[-19.477,9.414],[-43.782,10.829],[-18.619,4.316],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.287,-4.716],[-20.863,4.414],[-30.007,-14.235],[31.121,-15.037],[13.472,-3.332],[35.361,-7.859],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.82,116.749],[-117.884,119.917],[-226.898,115.937],[-226.972,51.297],[-139.102,14.702],[-86.526,4.409],[-12.612,-36.255]],"c":true}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.099,4.142],[20.861,-4.429],[29.974,14.261],[-19.489,9.319],[-43.776,10.871],[-18.619,4.32],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.289,-4.733],[-20.861,4.429],[-29.977,-13.992],[31.139,-14.886],[13.471,-3.345],[35.36,-7.866],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.3,116.8],[-117.832,120.338],[-225.228,115.315],[-225.194,51.548],[-139.154,14.28],[-85.528,4.177],[-12.612,-36.255]],"c":true}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.101,4.152],[20.86,-4.438],[29.953,14.089],[-19.498,9.253],[-43.773,10.9],[-18.618,4.323],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.291,-4.744],[-20.86,4.438],[-29.956,-13.823],[31.153,-14.781],[13.469,-3.354],[35.36,-7.871],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.936,116.835],[-117.796,120.632],[-224.061,114.88],[-223.952,51.724],[-139.191,13.985],[-84.829,4.015],[-12.612,-36.255]],"c":true}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.16],[20.859,-4.446],[29.937,13.959],[-19.504,9.203],[-43.77,10.923],[-18.618,4.325],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.292,-4.753],[-20.859,4.446],[-29.94,-13.695],[31.162,-14.701],[13.469,-3.361],[35.359,-7.874],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.662,116.862],[-117.768,120.854],[-223.181,114.552],[-223.014,51.856],[-139.219,13.762],[-84.303,3.893],[-12.612,-36.255]],"c":true}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.166],[20.858,-4.452],[29.924,13.857],[-19.509,9.163],[-43.768,10.94],[-18.618,4.326],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.293,-4.76],[-20.858,4.452],[-29.927,-13.594],[31.17,-14.638],[13.468,-3.366],[35.359,-7.877],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.446,116.884],[-117.746,121.029],[-222.486,114.293],[-222.274,51.961],[-139.241,13.586],[-83.887,3.796],[-12.612,-36.255]],"c":true}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.103,4.171],[20.858,-4.457],[29.914,13.773],[-19.513,9.131],[-43.766,10.954],[-18.618,4.328],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.766],[-20.858,4.457],[-29.917,-13.511],[31.177,-14.587],[13.467,-3.371],[35.359,-7.88],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.269,116.901],[-117.728,121.172],[-221.919,114.082],[-221.67,52.046],[-139.258,13.443],[-83.548,3.717],[-12.612,-36.255]],"c":true}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.175],[20.857,-4.461],[29.905,13.703],[-19.516,9.104],[-43.764,10.966],[-18.617,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.771],[-20.857,4.461],[-29.908,-13.443],[31.182,-14.544],[13.467,-3.375],[35.358,-7.882],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.121,116.915],[-117.714,121.291],[-221.446,113.906],[-221.166,52.118],[-139.273,13.323],[-83.265,3.652],[-12.612,-36.255]],"c":true}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.179],[20.857,-4.464],[29.897,13.644],[-19.519,9.081],[-43.763,10.977],[-18.617,4.33],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.775],[-20.857,4.464],[-29.901,-13.384],[31.186,-14.508],[13.467,-3.378],[35.358,-7.883],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.997,116.928],[-117.701,121.392],[-221.044,113.756],[-220.739,52.178],[-139.286,13.222],[-83.025,3.596],[-12.612,-36.255]],"c":true}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.182],[20.856,-4.467],[29.891,13.593],[-19.522,9.062],[-43.762,10.985],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.778],[-20.856,4.467],[-29.895,-13.334],[31.19,-14.477],[13.466,-3.38],[35.358,-7.885],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.889,116.938],[-117.69,121.479],[-220.7,113.628],[-220.372,52.23],[-139.297,13.135],[-82.819,3.548],[-12.612,-36.255]],"c":true}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.184],[20.856,-4.47],[29.886,13.549],[-19.524,9.045],[-43.761,10.993],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.781],[-20.856,4.47],[-29.89,-13.291],[31.194,-14.45],[13.466,-3.383],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.796,116.947],[-117.681,121.554],[-220.401,113.516],[-220.054,52.275],[-139.306,13.059],[-82.64,3.507],[-12.612,-36.255]],"c":true}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.187],[20.856,-4.472],[29.881,13.51],[-19.526,9.03],[-43.76,10.999],[-18.617,4.332],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.784],[-20.856,4.472],[-29.885,-13.253],[31.197,-14.426],[13.466,-3.385],[35.358,-7.887],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.715,116.955],[-117.673,121.62],[-220.14,113.419],[-219.776,52.314],[-139.314,12.993],[-82.484,3.47],[-12.612,-36.255]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.189],[20.856,-4.474],[29.877,13.477],[-19.527,9.017],[-43.76,11.005],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.786],[-20.856,4.474],[-29.881,-13.219],[31.199,-14.406],[13.465,-3.386],[35.357,-7.888],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.643,116.962],[-117.665,121.678],[-219.911,113.334],[-219.531,52.349],[-139.322,12.935],[-82.347,3.438],[-12.612,-36.255]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.191],[20.855,-4.476],[29.873,13.447],[-19.529,9.005],[-43.759,11.01],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.788],[-20.855,4.476],[-29.877,-13.19],[31.201,-14.387],[13.465,-3.388],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.58,116.969],[-117.659,121.729],[-219.708,113.258],[-219.316,52.379],[-139.328,12.884],[-82.226,3.41],[-12.612,-36.255]],"c":true}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.192],[20.855,-4.477],[29.87,13.42],[-19.53,8.995],[-43.758,11.015],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.79],[-20.855,4.477],[-29.874,-13.164],[31.203,-14.371],[13.465,-3.389],[35.357,-7.89],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.524,116.974],[-117.654,121.774],[-219.529,113.191],[-219.124,52.406],[-139.334,12.839],[-82.118,3.385],[-12.612,-36.255]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.194],[20.855,-4.478],[29.867,13.397],[-19.531,8.986],[-43.758,11.019],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.791],[-20.855,4.478],[-29.871,-13.141],[31.205,-14.357],[13.465,-3.391],[35.357,-7.89],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.475,116.979],[-117.649,121.815],[-219.369,113.132],[-218.955,52.43],[-139.339,12.798],[-82.023,3.363],[-12.612,-36.255]],"c":true}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.195],[20.855,-4.48],[29.864,13.376],[-19.532,8.978],[-43.757,11.022],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.793],[-20.855,4.48],[-29.868,-13.12],[31.207,-14.344],[13.465,-3.392],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.43,116.983],[-117.644,121.85],[-219.227,113.079],[-218.803,52.451],[-139.343,12.762],[-81.938,3.343],[-12.612,-36.255]],"c":true}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.196],[20.855,-4.481],[29.862,13.357],[-19.533,8.971],[-43.757,11.026],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.794],[-20.855,4.481],[-29.866,-13.102],[31.208,-14.332],[13.465,-3.393],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.391,116.987],[-117.64,121.882],[-219.101,113.032],[-218.669,52.47],[-139.347,12.73],[-81.862,3.326],[-12.612,-36.255]],"c":true}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.197],[20.855,-4.482],[29.86,13.34],[-19.534,8.965],[-43.757,11.028],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.795],[-20.855,4.482],[-29.864,-13.085],[31.21,-14.322],[13.465,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.356,116.991],[-117.637,121.911],[-218.988,112.99],[-218.549,52.487],[-139.351,12.702],[-81.795,3.31],[-12.612,-36.255]],"c":true}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.198],[20.854,-4.483],[29.858,13.326],[-19.535,8.959],[-43.756,11.031],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.796],[-20.854,4.483],[-29.862,-13.071],[31.211,-14.313],[13.464,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.324,116.994],[-117.633,121.936],[-218.888,112.952],[-218.441,52.503],[-139.354,12.676],[-81.735,3.296],[-12.612,-36.255]],"c":true}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.199],[20.854,-4.483],[29.856,13.312],[-19.535,8.954],[-43.756,11.033],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.797],[-20.854,4.483],[-29.861,-13.058],[31.212,-14.305],[13.464,-3.395],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.297,116.997],[-117.631,121.959],[-218.798,112.919],[-218.346,52.516],[-139.357,12.654],[-81.681,3.284],[-12.612,-36.255]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.199],[20.854,-4.484],[29.855,13.301],[-19.536,8.949],[-43.756,11.035],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.798],[-20.854,4.484],[-29.859,-13.046],[31.213,-14.298],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.272,116.999],[-117.628,121.979],[-218.719,112.889],[-218.261,52.528],[-139.359,12.634],[-81.633,3.273],[-12.612,-36.255]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.2],[20.854,-4.485],[29.854,13.29],[-19.537,8.945],[-43.756,11.037],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.799],[-20.854,4.485],[-29.858,-13.036],[31.213,-14.291],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.25,117.001],[-117.626,121.996],[-218.648,112.863],[-218.186,52.539],[-139.361,12.616],[-81.591,3.263],[-12.612,-36.255]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.485],[29.852,13.281],[-19.537,8.942],[-43.755,11.039],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.799],[-20.854,4.485],[-29.857,-13.027],[31.214,-14.286],[13.464,-3.397],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.23,117.003],[-117.624,122.012],[-218.586,112.84],[-218.12,52.548],[-139.363,12.6],[-81.554,3.254],[-12.612,-36.255]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.486],[29.851,13.273],[-19.537,8.939],[-43.755,11.04],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.856,-13.019],[31.215,-14.281],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.213,117.005],[-117.622,122.026],[-218.531,112.819],[-218.062,52.556],[-139.365,12.586],[-81.521,3.247],[-12.612,-36.255]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.486],[29.85,13.266],[-19.538,8.936],[-43.755,11.041],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.855,-13.012],[31.215,-14.277],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.199,117.006],[-117.621,122.038],[-218.483,112.801],[-218.011,52.563],[-139.366,12.574],[-81.493,3.24],[-12.612,-36.255]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.486],[29.85,13.26],[-19.538,8.933],[-43.755,11.042],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.486],[-29.854,-13.006],[31.216,-14.273],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.186,117.007],[-117.619,122.048],[-218.442,112.786],[-217.967,52.57],[-139.368,12.564],[-81.468,3.234],[-12.612,-36.255]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.255],[-19.538,8.931],[-43.755,11.043],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-13.001],[31.216,-14.27],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.174,117.009],[-117.618,122.057],[-218.406,112.773],[-217.929,52.575],[-139.369,12.555],[-81.446,3.229],[-12.612,-36.255]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.25],[-19.538,8.93],[-43.755,11.044],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-12.996],[31.216,-14.267],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.165,117.009],[-117.617,122.065],[-218.376,112.761],[-217.896,52.58],[-139.37,12.547],[-81.428,3.225],[-12.612,-36.255]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.246],[-19.539,8.928],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.992],[31.217,-14.265],[13.464,-3.399],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.157,117.01],[-117.617,122.071],[-218.35,112.752],[-217.869,52.583],[-139.371,12.541],[-81.413,3.221],[-12.612,-36.255]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.243],[-19.539,8.927],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.99],[31.217,-14.263],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.151,117.011],[-117.616,122.077],[-218.33,112.744],[-217.847,52.586],[-139.371,12.535],[-81.401,3.219],[-12.612,-36.255]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.847,13.241],[-19.539,8.926],[-43.755,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.987],[31.217,-14.261],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.146,117.011],[-117.615,122.081],[-218.313,112.738],[-217.83,52.589],[-139.372,12.531],[-81.391,3.216],[-12.612,-36.255]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.853,-4.49],[29.848,13.234],[-19.538,8.926],[-43.753,11.05],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.853,4.49],[-29.852,-12.98],[31.216,-14.262],[13.464,-3.4],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.609,122.089],[-218.282,112.739],[-217.802,52.604],[-139.378,12.528],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.852,-4.496],[29.852,13.224],[-19.535,8.933],[-43.749,11.064],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.852,4.496],[-29.856,-12.971],[31.211,-14.271],[13.462,-3.405],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.592,122.092],[-218.266,112.774],[-217.805,52.64],[-139.395,12.539],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.849,-4.509],[29.859,13.206],[-19.529,8.944],[-43.742,11.09],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.849,4.509],[-29.863,-12.952],[31.202,-14.29],[13.46,-3.413],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.558,122.098],[-218.236,112.841],[-217.812,52.707],[-139.427,12.561],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.843,-4.529],[29.871,13.176],[-19.52,8.963],[-43.729,11.133],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.843,4.529],[-29.875,-12.923],[31.187,-14.32],[13.456,-3.426],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.504,122.108],[-218.187,112.95],[-217.822,52.818],[-139.479,12.596],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.835,-4.56],[29.89,13.13],[-19.505,8.992],[-43.71,11.199],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.835,4.56],[-29.893,-12.877],[31.163,-14.367],[13.45,-3.446],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.42,122.123],[-218.112,113.119],[-217.838,52.99],[-139.56,12.65],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.823,-4.609],[29.918,13.059],[-19.483,9.037],[-43.681,11.3],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.823,4.609],[-29.921,-12.806],[31.128,-14.438],[13.441,-3.477],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.29,122.147],[-217.996,113.379],[-217.863,53.253],[-139.685,12.734],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.804,-4.686],[29.964,12.946],[-19.447,9.109],[-43.634,11.462],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.804,4.686],[-29.966,-12.693],[31.07,-14.553],[13.427,-3.527],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.083,122.185],[-217.811,113.794],[-217.902,53.674],[-139.884,12.867],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.77,-4.822],[30.044,12.747],[-19.384,9.235],[-43.551,11.747],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.77,4.822],[-30.044,-12.494],[30.969,-14.755],[13.401,-3.615],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.718,122.253],[-217.485,114.525],[-217.971,54.416],[-140.234,13.103],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.705,-5.078],[30.195,12.372],[-19.265,9.473],[-43.396,12.284],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.705,5.078],[-30.192,-12.118],[30.779,-15.136],[13.353,-3.78],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.032,122.379],[-216.87,115.902],[-218.102,55.813],[-140.895,13.546],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.64,-5.337],[30.347,11.993],[-19.145,9.713],[-43.239,12.825],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.64,5.337],[-30.341,-11.74],[30.588,-15.519],[13.305,-3.947],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.339,122.506],[-216.251,117.29],[-218.233,57.222],[-141.561,13.993],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.601,-5.492],[30.439,11.766],[-19.073,9.857],[-43.144,13.15],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.601,5.492],[-30.431,-11.513],[30.473,-15.749],[13.276,-4.047],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.924,122.583],[-215.879,118.123],[-218.312,58.067],[-141.96,14.261],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.575,-5.593],[30.498,11.617],[-19.026,9.952],[-43.083,13.363],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.575,5.593],[-30.489,-11.364],[30.397,-15.9],[13.257,-4.112],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.651,122.633],[-215.635,118.67],[-218.364,58.621],[-142.223,14.437],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.557,-5.667],[30.542,11.51],[-18.992,10.02],[-43.038,13.517],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.557,5.667],[-30.532,-11.257],[30.343,-16.009],[13.243,-4.159],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.455,122.669],[-215.459,119.064],[-218.401,59.021],[-142.412,14.564],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.543,-5.723],[30.575,11.428],[-18.966,10.072],[-43.004,13.634],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.543,5.723],[-30.564,-11.175],[30.301,-16.092],[13.233,-4.195],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.305,122.697],[-215.325,119.365],[-218.43,59.326],[-142.556,14.661],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.531,-5.767],[30.601,11.363],[-18.945,10.113],[-42.977,13.727],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.531,5.767],[-30.589,-11.11],[30.269,-16.158],[13.225,-4.224],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.186,122.719],[-215.219,119.602],[-218.452,59.567],[-142.67,14.737],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.523,-5.802],[30.622,11.312],[-18.929,10.146],[-42.956,13.801],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.523,5.802],[-30.61,-11.058],[30.242,-16.21],[13.218,-4.247],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.092,122.736],[-215.134,119.792],[-218.47,59.76],[-142.761,14.798],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":111,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.515,-5.831],[30.638,11.269],[-18.916,10.173],[-42.938,13.861],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.515,5.831],[-30.626,-11.016],[30.221,-16.253],[13.213,-4.265],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.014,122.75],[-215.066,119.947],[-218.485,59.916],[-142.835,14.848],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":112,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.509,-5.855],[30.652,11.235],[-18.905,10.194],[-42.924,13.91],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.509,5.855],[-30.64,-10.982],[30.204,-16.288],[13.208,-4.28],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.952,122.762],[-215.009,120.073],[-218.497,60.044],[-142.896,14.888],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.505,-5.874],[30.664,11.207],[-18.896,10.212],[-42.912,13.951],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.505,5.874],[-30.651,-10.954],[30.19,-16.316],[13.205,-4.293],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.9,122.771],[-214.963,120.176],[-218.507,60.149],[-142.945,14.922],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.501,-5.889],[30.673,11.184],[-18.889,10.227],[-42.903,13.983],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.501,5.889],[-30.66,-10.931],[30.178,-16.339],[13.202,-4.303],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.858,122.779],[-214.926,120.259],[-218.514,60.234],[-142.985,14.948],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.497,-5.902],[30.68,11.166],[-18.883,10.238],[-42.895,14.009],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.497,5.902],[-30.667,-10.913],[30.169,-16.358],[13.2,-4.311],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.825,122.785],[-214.896,120.327],[-218.521,60.302],[-143.017,14.97],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.495,-5.912],[30.686,11.151],[-18.878,10.248],[-42.889,14.03],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.495,5.912],[-30.673,-10.898],[30.161,-16.372],[13.198,-4.317],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.799,122.79],[-214.872,120.38],[-218.526,60.356],[-143.043,14.987],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.493,-5.919],[30.69,11.14],[-18.875,10.255],[-42.885,14.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.493,5.919],[-30.677,-10.887],[30.156,-16.384],[13.196,-4.322],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.778,122.794],[-214.854,120.42],[-218.53,60.397],[-143.062,15],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.492,-5.925],[30.694,11.132],[-18.872,10.26],[-42.881,14.058],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.492,5.925],[-30.68,-10.879],[30.152,-16.392],[13.195,-4.326],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.763,122.797],[-214.841,120.45],[-218.533,60.427],[-143.077,15.01],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.491,-5.929],[30.696,11.127],[-18.87,10.263],[-42.879,14.065],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.491,5.929],[-30.683,-10.873],[30.149,-16.397],[13.195,-4.328],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.753,122.798],[-214.832,120.47],[-218.534,60.448],[-143.086,15.016],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.491,-5.926],[30.694,11.13],[-18.871,10.261],[-42.88,14.06],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.491,5.926],[-30.681,-10.877],[30.15,-16.393],[13.195,-4.327],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.76,122.801],[-214.837,120.461],[-218.532,60.439],[-143.08,15.017],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.494,-5.909],[30.683,11.154],[-18.878,10.245],[-42.888,14.024],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.494,5.909],[-30.67,-10.901],[30.161,-16.368],[13.197,-4.315],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.807,122.805],[-214.874,120.382],[-218.52,60.362],[-143.036,15.005],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.5,-5.878],[30.662,11.198],[-18.891,10.215],[-42.903,13.959],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.5,5.878],[-30.649,-10.945],[30.181,-16.321],[13.202,-4.295],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.891,122.811],[-214.94,120.24],[-218.497,60.223],[-142.957,14.984],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.509,-5.831],[30.631,11.264],[-18.91,10.171],[-42.926,13.86],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.509,5.831],[-30.619,-11.011],[30.212,-16.25],[13.209,-4.265],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.018,122.822],[-215.041,120.025],[-218.463,60.011],[-142.837,14.951],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.522,-5.764],[30.587,11.358],[-18.937,10.109],[-42.957,13.721],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.522,5.764],[-30.575,-11.105],[30.255,-16.15],[13.219,-4.222],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.198,122.836],[-215.184,119.721],[-218.416,59.713],[-142.668,14.904],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.539,-5.674],[30.527,11.485],[-18.973,10.024],[-43.001,13.532],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.539,5.674],[-30.517,-11.232],[30.313,-16.015],[13.232,-4.164],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.441,122.855],[-215.377,119.309],[-218.351,59.31],[-142.439,14.841],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.562,-5.555],[30.448,11.653],[-19.021,9.911],[-43.058,13.281],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.562,5.555],[-30.439,-11.4],[30.39,-15.835],[13.249,-4.087],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.764,122.881],[-215.634,118.763],[-218.265,58.774],[-142.135,14.757],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.592,-5.398],[30.343,11.875],[-19.085,9.763],[-43.133,12.95],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.592,5.398],[-30.336,-11.622],[30.492,-15.598],[13.273,-3.985],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.19,122.915],[-215.972,118.042],[-218.152,58.067],[-141.734,14.646],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.632,-5.189],[30.204,12.169],[-19.169,9.566],[-43.233,12.512],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.632,5.189],[-30.2,-11.916],[30.627,-15.284],[13.303,-3.85],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.755,122.96],[-216.421,117.086],[-218.001,57.13],[-141.203,14.5],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.686,-4.908],[30.018,12.566],[-19.283,9.302],[-43.368,11.922],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.686,4.908],[-30.017,-12.313],[30.808,-14.861],[13.345,-3.669],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.515,123.021],[-217.025,115.8],[-217.799,55.869],[-140.488,14.302],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.76,-4.519],[29.759,13.113],[-19.44,8.935],[-43.554,11.106],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.76,4.519],[-29.763,-12.861],[31.059,-14.276],[13.402,-3.417],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.567,123.104],[-217.86,114.021],[-217.519,54.124],[-139.498,14.029],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.865,-3.972],[29.396,13.885],[-19.662,8.42],[-43.816,9.956],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.865,3.972],[-29.406,-13.633],[31.413,-13.452],[13.483,-3.064],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-119.049,123.222],[-219.037,111.514],[-217.125,51.666],[-138.104,13.644],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.997,-3.279],[28.935,14.862],[-19.942,7.767],[-44.148,8.501],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.997,3.279],[-28.954,-14.61],[31.861,-12.409],[13.585,-2.616],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-120.924,123.372],[-220.526,108.342],[-216.626,48.556],[-136.34,13.158],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.11,-2.69],[28.544,15.692],[-20.18,7.212],[-44.431,7.265],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.11,2.69],[-28.57,-15.44],[32.241,-11.522],[13.672,-2.235],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-122.517,123.499],[-221.791,105.647],[-216.202,45.913],[-134.841,12.744],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.177,-2.342],[28.313,16.183],[-20.321,6.884],[-44.597,6.533],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.177,2.342],[-28.343,-15.931],[32.466,-10.998],[13.723,-2.01],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-123.459,123.574],[-222.539,104.053],[-215.952,44.35],[-133.955,12.499],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.212,-2.159],[28.191,16.441],[-20.395,6.711],[-44.685,6.149],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.212,2.159],[-28.224,-16.189],[32.585,-10.723],[13.75,-1.892],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-123.954,123.613],[-222.933,103.215],[-215.82,43.528],[-133.488,12.371],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.228,-2.074],[28.135,16.561],[-20.429,6.631],[-44.726,5.97],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.228,2.074],[-28.168,-16.31],[32.64,-10.595],[13.763,-1.837],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.185,123.632],[-223.116,102.825],[-215.759,43.146],[-133.272,12.311],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.054],[28.123,16.592],[-20.437,6.615],[-44.735,5.929],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.054],[-28.156,-16.341],[32.652,-10.569],[13.766,-1.825],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.146,117.011],[-124.237,123.627],[-223.187,102.747],[-215.777,43.054],[-133.222,12.302],[-81.393,3.217],[-12.612,-36.255]],"c":true}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[21.23,-2.068],[28.135,16.587],[-20.431,6.634],[-44.73,5.957],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-21.23,2.068],[-28.168,-16.335],[32.642,-10.599],[13.764,-1.833],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.176,117.008],[-124.201,123.593],[-223.254,102.841],[-215.891,43.095],[-133.255,12.328],[-81.45,3.23],[-12.612,-36.255]],"c":true}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[21.226,-2.092],[28.156,16.577],[-20.42,6.669],[-44.72,6.008],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.799],[-21.226,2.092],[-28.189,-16.325],[32.625,-10.655],[13.761,-1.849],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.231,117.003],[-124.136,123.533],[-223.377,103.014],[-216.1,43.171],[-133.316,12.375],[-81.555,3.254],[-12.612,-36.255]],"c":true}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.198],[21.22,-2.131],[28.19,16.561],[-20.403,6.723],[-44.705,6.086],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.797],[-21.22,2.131],[-28.223,-16.308],[32.598,-10.741],[13.756,-1.873],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.316,116.995],[-124.034,123.438],[-223.568,103.281],[-216.424,43.289],[-133.409,12.447],[-81.717,3.292],[-12.612,-36.255]],"c":true}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.195],[21.211,-2.185],[28.238,16.539],[-20.379,6.8],[-44.682,6.198],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.793],[-21.211,2.185],[-28.27,-16.285],[32.56,-10.864],[13.749,-1.907],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.437,116.983],[-123.889,123.303],[-223.841,103.664],[-216.887,43.457],[-133.544,12.551],[-81.95,3.346],[-12.612,-36.255]],"c":true}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.19],[21.2,-2.26],[28.304,16.508],[-20.346,6.905],[-44.652,6.351],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.787],[-21.2,2.26],[-28.335,-16.253],[32.507,-11.032],[13.74,-1.954],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.602,116.966],[-123.69,123.119],[-224.214,104.187],[-217.52,43.687],[-133.727,12.693],[-82.268,3.42],[-12.612,-36.255]],"c":true}],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.184],[21.184,-2.358],[28.391,16.468],[-20.303,7.044],[-44.612,6.552],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.78],[-21.184,2.358],[-28.42,-16.211],[32.438,-11.253],[13.728,-2.016],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.82,116.945],[-123.428,122.877],[-224.705,104.876],[-218.353,43.99],[-133.968,12.88],[-82.687,3.517],[-12.612,-36.255]],"c":true}],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.176],[21.164,-2.483],[28.501,16.417],[-20.247,7.22],[-44.562,6.808],[-18.617,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.771],[-21.164,2.483],[-28.528,-16.158],[32.35,-11.534],[13.712,-2.095],[35.358,-7.882],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.097,116.918],[-123.096,122.568],[-225.33,105.751],[-219.412,44.375],[-134.275,13.117],[-83.219,3.641],[-12.612,-36.255]],"c":true}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.166],[21.141,-2.634],[28.634,16.355],[-20.18,7.434],[-44.501,7.118],[-18.618,4.327],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.293,-4.761],[-21.141,2.634],[-28.659,-16.094],[32.243,-11.875],[13.693,-2.19],[35.359,-7.877],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.433,116.885],[-122.694,122.195],[-226.085,106.81],[-220.694,44.841],[-134.646,13.404],[-83.863,3.79],[-12.612,-36.255]],"c":true}],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.101,4.156],[21.114,-2.805],[28.785,16.285],[-20.105,7.675],[-44.431,7.468],[-18.618,4.324],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.291,-4.748],[-21.114,2.805],[-28.808,-16.021],[32.122,-12.26],[13.672,-2.298],[35.359,-7.872],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.812,116.848],[-122.238,121.773],[-226.94,108.009],[-222.145,45.369],[-135.066,13.729],[-84.591,3.96],[-12.612,-36.255]],"c":true}],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.1,4.144],[21.086,-2.984],[28.943,16.212],[-20.026,7.928],[-44.359,7.835],[-18.619,4.321],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.29,-4.736],[-21.086,2.984],[-28.963,-15.945],[31.996,-12.664],[13.65,-2.411],[35.36,-7.867],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.21,116.809],[-121.761,121.331],[-227.835,109.264],[-223.663,45.921],[-135.506,14.07],[-85.354,4.137],[-12.612,-36.255]],"c":true}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.098,4.133],[21.058,-3.158],[29.097,16.141],[-19.949,8.174],[-44.288,8.192],[-18.619,4.318],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.288,-4.723],[-21.058,3.158],[-29.114,-15.871],[31.873,-13.055],[13.628,-2.521],[35.361,-7.862],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.595,116.771],[-121.298,120.901],[-228.705,110.483],[-225.138,46.457],[-135.933,14.4],[-86.095,4.309],[-12.612,-36.255]],"c":true}],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.097,4.123],[21.033,-3.318],[29.238,16.075],[-19.878,8.4],[-44.224,8.52],[-18.619,4.315],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.287,-4.712],[-21.033,3.318],[-29.253,-15.803],[31.761,-13.416],[13.608,-2.622],[35.361,-7.857],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.951,116.736],[-120.872,120.506],[-229.505,111.605],[-226.495,46.95],[-136.326,14.705],[-86.777,4.468],[-12.612,-36.255]],"c":true}],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.096,4.114],[21.011,-3.46],[29.364,16.017],[-19.815,8.601],[-44.166,8.812],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.286,-4.701],[-21.011,3.46],[-29.377,-15.742],[31.66,-13.737],[13.59,-2.712],[35.362,-7.853],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.267,116.705],[-120.493,120.154],[-230.218,112.604],[-227.705,47.39],[-136.676,14.976],[-87.385,4.609],[-12.612,-36.255]],"c":true}],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.095,4.106],[20.991,-3.585],[29.474,15.966],[-19.759,8.778],[-44.115,9.069],[-18.62,4.31],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.284,-4.693],[-20.991,3.585],[-29.485,-15.689],[31.572,-14.019],[13.575,-2.791],[35.362,-7.849],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.545,116.677],[-120.159,119.845],[-230.844,113.481],[-228.766,47.776],[-136.984,15.214],[-87.918,4.733],[-12.612,-36.255]],"c":true}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.094,4.1],[20.974,-3.694],[29.57,15.921],[-19.711,8.932],[-44.071,9.293],[-18.62,4.308],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.283,-4.685],[-20.974,3.694],[-29.58,-15.642],[31.495,-14.265],[13.561,-2.86],[35.363,-7.846],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.787,116.654],[-119.869,119.575],[-231.389,114.247],[-229.692,48.113],[-137.252,15.421],[-88.383,4.841],[-12.612,-36.255]],"c":true}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.094],[20.959,-3.79],[29.654,15.882],[-19.669,9.067],[-44.032,9.488],[-18.62,4.307],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.283,-4.678],[-20.959,3.79],[-29.662,-15.602],[31.428,-14.479],[13.549,-2.92],[35.363,-7.843],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.998,116.633],[-119.615,119.34],[-231.865,114.913],[-230.499,48.406],[-137.485,15.602],[-88.788,4.935],[-12.612,-36.255]],"c":true}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.088],[20.946,-3.872],[29.727,15.848],[-19.632,9.184],[-43.999,9.658],[-18.62,4.305],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.282,-4.672],[-20.946,3.872],[-29.734,-15.566],[31.369,-14.666],[13.539,-2.972],[35.363,-7.841],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.182,116.615],[-119.395,119.135],[-232.279,115.494],[-231.202,48.662],[-137.689,15.76],[-89.141,5.017],[-12.612,-36.255]],"c":true}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.084],[20.935,-3.945],[29.791,15.819],[-19.6,9.286],[-43.969,9.806],[-18.621,4.304],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.667],[-20.935,3.945],[-29.797,-15.535],[31.318,-14.829],[13.53,-3.017],[35.364,-7.839],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.343,116.599],[-119.202,118.957],[-232.641,116.002],[-231.816,48.885],[-137.867,15.897],[-89.45,5.088],[-12.612,-36.255]],"c":true}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.08],[20.925,-4.008],[29.847,15.793],[-19.572,9.375],[-43.944,9.935],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.662],[-20.925,4.008],[-29.852,-15.509],[31.274,-14.972],[13.522,-3.057],[35.364,-7.837],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.483,116.585],[-119.034,118.801],[-232.957,116.445],[-232.352,49.08],[-138.022,16.017],[-89.719,5.151],[-12.612,-36.255]],"c":true}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.076],[20.916,-4.063],[29.896,15.77],[-19.548,9.453],[-43.921,10.049],[-18.621,4.302],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.658],[-20.916,4.063],[-29.9,-15.485],[31.235,-15.096],[13.515,-3.092],[35.364,-7.835],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.605,116.573],[-118.887,118.664],[-233.233,116.832],[-232.82,49.25],[-138.158,16.122],[-89.954,5.206],[-12.612,-36.255]],"c":true}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.073],[20.908,-4.111],[29.938,15.75],[-19.527,9.521],[-43.902,10.147],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.655],[-20.908,4.111],[-29.942,-15.464],[31.201,-15.205],[13.509,-3.123],[35.364,-7.834],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.712,116.563],[-118.758,118.545],[-233.474,117.169],[-233.229,49.399],[-138.276,16.214],[-90.16,5.253],[-12.612,-36.255]],"c":true}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.071],[20.902,-4.153],[29.975,15.733],[-19.508,9.581],[-43.885,10.234],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.652],[-20.902,4.153],[-29.978,-15.447],[31.171,-15.299],[13.504,-3.149],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.806,116.553],[-118.647,118.441],[-233.684,117.464],[-233.586,49.528],[-138.379,16.294],[-90.339,5.295],[-12.612,-36.255]],"c":true}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.068],[20.896,-4.19],[30.008,15.718],[-19.492,9.632],[-43.87,10.308],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.649],[-20.896,4.19],[-30.01,-15.431],[31.145,-15.382],[13.499,-3.172],[35.365,-7.831],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.887,116.545],[-118.549,118.351],[-233.867,117.72],[-233.895,49.641],[-138.469,16.363],[-90.494,5.331],[-12.612,-36.255]],"c":true}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.066],[20.891,-4.221],[30.035,15.705],[-19.478,9.677],[-43.857,10.373],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.647],[-20.891,4.221],[-30.037,-15.418],[31.123,-15.453],[13.495,-3.192],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.957,116.539],[-118.465,118.273],[-234.025,117.942],[-234.163,49.738],[-138.547,16.423],[-90.629,5.362],[-12.612,-36.255]],"c":true}],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.065],[20.887,-4.249],[30.059,15.694],[-19.466,9.715],[-43.846,10.429],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.645],[-20.887,4.249],[-30.061,-15.406],[31.104,-15.514],[13.492,-3.209],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.017,116.533],[-118.393,118.206],[-234.161,118.132],[-234.394,49.822],[-138.613,16.475],[-90.745,5.389],[-12.612,-36.255]],"c":true}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.063],[20.883,-4.272],[30.08,15.685],[-19.456,9.748],[-43.837,10.476],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.643],[-20.883,4.272],[-30.081,-15.396],[31.087,-15.566],[13.489,-3.224],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.069,116.528],[-118.331,118.149],[-234.277,118.295],[-234.59,49.893],[-138.67,16.519],[-90.844,5.412],[-12.612,-36.255]],"c":true}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.062],[20.88,-4.291],[30.097,15.677],[-19.447,9.776],[-43.829,10.516],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.642],[-20.88,4.291],[-30.098,-15.388],[31.074,-15.61],[13.487,-3.236],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.112,116.523],[-118.279,118.101],[-234.374,118.431],[-234.756,49.954],[-138.718,16.556],[-90.927,5.432],[-12.612,-36.255]],"c":true}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.061],[20.878,-4.307],[30.111,15.67],[-19.44,9.798],[-43.822,10.55],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.641],[-20.878,4.307],[-30.112,-15.381],[31.062,-15.647],[13.485,-3.246],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.148,116.52],[-118.236,118.061],[-234.455,118.545],[-234.894,50.004],[-138.758,16.587],[-90.996,5.448],[-12.612,-36.255]],"c":true}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.06],[20.876,-4.321],[30.123,15.665],[-19.434,9.817],[-43.817,10.577],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.64],[-20.875,4.321],[-30.123,-15.375],[31.053,-15.676],[13.483,-3.255],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.177,116.517],[-118.201,118.028],[-234.521,118.637],[-235.005,50.044],[-138.79,16.612],[-91.052,5.461],[-12.612,-36.255]],"c":true}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.874,-4.331],[30.132,15.66],[-19.429,9.832],[-43.813,10.598],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.639],[-20.874,4.331],[-30.132,-15.371],[31.046,-15.7],[13.482,-3.261],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.2,116.515],[-118.173,118.003],[-234.573,118.71],[-235.093,50.076],[-138.816,16.632],[-91.096,5.471],[-12.612,-36.255]],"c":true}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.873,-4.339],[30.139,15.657],[-19.426,9.843],[-43.81,10.614],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.639],[-20.873,4.339],[-30.139,-15.368],[31.04,-15.717],[13.481,-3.266],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.217,116.513],[-118.153,117.984],[-234.611,118.764],[-235.158,50.1],[-138.835,16.646],[-91.129,5.479],[-12.612,-36.255]],"c":true}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.872,-4.344],[30.144,15.655],[-19.424,9.85],[-43.808,10.625],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.872,4.344],[-30.144,-15.365],[31.036,-15.729],[13.48,-3.269],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.229,116.512],[-118.139,117.97],[-234.638,118.801],[-235.204,50.116],[-138.848,16.656],[-91.152,5.484],[-12.612,-36.255]],"c":true}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.871,-4.348],[30.147,15.648],[-19.422,9.854],[-43.806,10.634],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.358],[31.034,-15.735],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.226,116.512],[-118.126,117.97],[-234.619,118.815],[-235.196,50.135],[-138.859,16.654],[-91.145,5.482],[-12.612,-36.255]],"c":true}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.871,-4.349],[30.146,15.64],[-19.422,9.851],[-43.806,10.635],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.639],[-20.871,4.349],[-30.146,-15.35],[31.035,-15.73],[13.48,-3.273],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.209,116.514],[-118.125,117.984],[-234.566,118.796],[-235.14,50.143],[-138.861,16.641],[-91.114,5.475],[-12.612,-36.255]],"c":true}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.06],[20.871,-4.35],[30.144,15.628],[-19.423,9.846],[-43.805,10.637],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.64],[-20.871,4.35],[-30.144,-15.339],[31.035,-15.723],[13.48,-3.273],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.185,116.516],[-118.122,118.003],[-234.489,118.767],[-235.058,50.155],[-138.863,16.621],[-91.068,5.464],[-12.612,-36.255]],"c":true}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.061],[20.871,-4.35],[30.142,15.613],[-19.424,9.84],[-43.805,10.64],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.641],[-20.871,4.35],[-30.142,-15.324],[31.037,-15.714],[13.479,-3.274],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.153,116.519],[-118.119,118.029],[-234.386,118.728],[-234.948,50.17],[-138.866,16.595],[-91.006,5.45],[-12.612,-36.255]],"c":true}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.062],[20.871,-4.352],[30.14,15.594],[-19.425,9.833],[-43.805,10.643],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.642],[-20.871,4.352],[-30.14,-15.305],[31.038,-15.702],[13.479,-3.275],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.112,116.523],[-118.115,118.062],[-234.254,118.679],[-234.807,50.19],[-138.871,16.562],[-90.927,5.432],[-12.612,-36.255]],"c":true}],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.063],[20.871,-4.353],[30.137,15.569],[-19.426,9.824],[-43.804,10.647],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.644],[-20.871,4.353],[-30.137,-15.281],[31.04,-15.687],[13.479,-3.276],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.061,116.528],[-118.11,118.104],[-234.089,118.618],[-234.632,50.215],[-138.876,16.52],[-90.828,5.409],[-12.612,-36.255]],"c":true}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.065],[20.87,-4.355],[30.133,15.54],[-19.427,9.812],[-43.803,10.652],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.646],[-20.87,4.355],[-30.133,-15.252],[31.042,-15.669],[13.479,-3.278],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.998,116.534],[-118.104,118.154],[-233.888,118.543],[-234.418,50.245],[-138.882,16.469],[-90.708,5.381],[-12.612,-36.255]],"c":true}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.067],[20.87,-4.357],[30.129,15.504],[-19.429,9.798],[-43.803,10.659],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.648],[-20.87,4.357],[-30.129,-15.217],[31.045,-15.647],[13.479,-3.28],[35.365,-7.831],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.923,116.542],[-118.096,118.215],[-233.647,118.453],[-234.162,50.281],[-138.89,16.409],[-90.564,5.347],[-12.612,-36.255]],"c":true}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.07],[20.87,-4.359],[30.123,15.462],[-19.431,9.782],[-43.802,10.666],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.651],[-20.87,4.359],[-30.124,-15.175],[31.048,-15.621],[13.478,-3.282],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.834,116.551],[-118.087,118.287],[-233.361,118.347],[-233.857,50.324],[-138.899,16.336],[-90.393,5.308],[-12.612,-36.255]],"c":true}],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.073],[20.869,-4.362],[30.117,15.412],[-19.434,9.763],[-43.801,10.674],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.654],[-20.869,4.362],[-30.118,-15.126],[31.052,-15.591],[13.478,-3.285],[35.364,-7.833],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.729,116.561],[-118.076,118.372],[-233.024,118.221],[-233.498,50.375],[-138.909,16.251],[-90.191,5.261],[-12.612,-36.255]],"c":true}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.076],[20.869,-4.365],[30.11,15.354],[-19.436,9.74],[-43.799,10.684],[-18.621,4.302],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.658],[-20.869,4.365],[-30.111,-15.068],[31.056,-15.555],[13.478,-3.288],[35.364,-7.835],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.605,116.573],[-118.064,118.472],[-232.628,118.073],[-233.076,50.435],[-138.922,16.151],[-89.954,5.206],[-12.612,-36.255]],"c":true}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.08],[20.869,-4.369],[30.102,15.285],[-19.44,9.714],[-43.798,10.696],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.663],[-20.869,4.369],[-30.102,-15.001],[31.062,-15.513],[13.477,-3.291],[35.364,-7.837],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.461,116.587],[-118.049,118.589],[-232.164,117.9],[-232.581,50.504],[-138.936,16.033],[-89.677,5.141],[-12.612,-36.255]],"c":true}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.085],[20.868,-4.374],[30.092,15.205],[-19.444,9.683],[-43.796,10.71],[-18.62,4.305],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.668],[-20.868,4.374],[-30.092,-14.922],[31.068,-15.464],[13.477,-3.296],[35.364,-7.839],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.291,116.604],[-118.032,118.726],[-231.62,117.698],[-232.003,50.586],[-138.953,15.896],[-89.352,5.066],[-12.612,-36.255]],"c":true}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.091],[20.867,-4.379],[30.08,15.111],[-19.448,9.647],[-43.794,10.726],[-18.62,4.306],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.282,-4.675],[-20.867,4.379],[-30.081,-14.829],[31.075,-15.406],[13.476,-3.301],[35.363,-7.842],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.093,116.623],[-118.013,118.887],[-230.984,117.46],[-231.325,50.682],[-138.973,15.735],[-88.971,4.977],[-12.612,-36.255]],"c":true}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.094,4.097],[20.867,-4.386],[30.066,15.001],[-19.453,9.604],[-43.792,10.745],[-18.62,4.308],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.283,-4.682],[-20.866,4.386],[-30.067,-14.721],[31.083,-15.339],[13.475,-3.306],[35.363,-7.845],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.861,116.646],[-117.989,119.075],[-230.237,117.182],[-230.53,50.794],[-138.997,15.546],[-88.524,4.873],[-12.612,-36.255]],"c":true}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.095,4.105],[20.866,-4.393],[30.05,14.871],[-19.46,9.555],[-43.789,10.767],[-18.62,4.31],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.284,-4.691],[-20.866,4.393],[-30.052,-14.593],[31.093,-15.26],[13.475,-3.313],[35.362,-7.849],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.587,116.673],[-117.962,119.296],[-229.361,116.856],[-229.596,50.926],[-139.024,15.325],[-88,4.752],[-12.612,-36.255]],"c":true}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.096,4.114],[20.864,-4.402],[30.031,14.72],[-19.467,9.496],[-43.786,10.793],[-18.619,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.286,-4.701],[-20.864,4.402],[-30.033,-14.444],[31.105,-15.167],[13.474,-3.321],[35.362,-7.853],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.267,116.705],[-117.929,119.555],[-228.332,116.472],[-228.5,51.081],[-139.057,15.065],[-87.385,4.609],[-12.612,-36.255]],"c":true}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.097,4.125],[20.863,-4.412],[30.009,14.543],[-19.476,9.428],[-43.782,10.823],[-18.619,4.315],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.287,-4.714],[-20.863,4.412],[-30.011,-14.27],[31.118,-15.058],[13.472,-3.33],[35.361,-7.858],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.894,116.741],[-117.892,119.857],[-227.135,116.026],[-227.225,51.261],[-139.094,14.762],[-86.668,4.442],[-12.612,-36.255]],"c":true}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.099,4.137],[20.862,-4.424],[29.984,14.342],[-19.485,9.35],[-43.778,10.857],[-18.619,4.319],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.289,-4.727],[-20.862,4.424],[-29.987,-14.072],[31.133,-14.935],[13.471,-3.341],[35.36,-7.864],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.47,116.783],[-117.849,120.2],[-225.773,115.518],[-225.774,51.466],[-139.137,14.417],[-85.853,4.253],[-12.612,-36.255]],"c":true}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.1,4.15],[20.86,-4.436],[29.957,14.124],[-19.496,9.267],[-43.773,10.894],[-18.618,4.322],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.291,-4.742],[-20.86,4.436],[-29.96,-13.857],[31.15,-14.802],[13.47,-3.352],[35.36,-7.87],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.011,116.828],[-117.803,120.572],[-224.3,114.969],[-224.206,51.688],[-139.184,14.045],[-84.972,4.048],[-12.612,-36.255]],"c":true}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.163],[20.859,-4.449],[29.93,13.909],[-19.507,9.184],[-43.769,10.931],[-18.618,4.326],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.292,-4.757],[-20.859,4.449],[-29.934,-13.645],[31.166,-14.67],[13.468,-3.364],[35.359,-7.876],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.555,116.873],[-117.757,120.94],[-222.839,114.425],[-222.65,51.908],[-139.23,13.675],[-84.098,3.845],[-12.612,-36.255]],"c":true}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.103,4.174],[20.857,-4.46],[29.906,13.716],[-19.516,9.109],[-43.765,10.964],[-18.618,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.77],[-20.857,4.46],[-29.91,-13.456],[31.181,-14.552],[13.467,-3.374],[35.358,-7.881],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.149,116.913],[-117.716,121.268],[-221.536,113.939],[-221.262,52.104],[-139.27,13.346],[-83.319,3.664],[-12.612,-36.255]],"c":true}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.184],[20.856,-4.469],[29.887,13.561],[-19.523,9.049],[-43.761,10.991],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.78],[-20.856,4.469],[-29.891,-13.302],[31.193,-14.457],[13.466,-3.382],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.82,116.945],[-117.683,121.535],[-220.479,113.545],[-220.137,52.263],[-139.304,13.079],[-82.687,3.517],[-12.612,-36.255]],"c":true}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.191],[20.855,-4.476],[29.872,13.443],[-19.529,9.004],[-43.759,11.011],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.788],[-20.855,4.476],[-29.876,-13.186],[31.202,-14.385],[13.465,-3.388],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.571,116.97],[-117.658,121.736],[-219.68,113.247],[-219.285,52.383],[-139.329,12.877],[-82.208,3.406],[-12.612,-36.255]],"c":true}],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.196],[20.855,-4.481],[29.862,13.358],[-19.533,8.971],[-43.757,11.026],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.794],[-20.855,4.481],[-29.866,-13.102],[31.208,-14.333],[13.465,-3.393],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.392,116.987],[-117.64,121.881],[-219.104,113.033],[-218.672,52.47],[-139.347,12.731],[-81.864,3.326],[-12.612,-36.255]],"c":true}],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.199],[20.854,-4.484],[29.855,13.299],[-19.536,8.949],[-43.756,11.035],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.798],[-20.854,4.484],[-29.859,-13.045],[31.213,-14.297],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.269,116.999],[-117.628,121.981],[-218.71,112.886],[-218.252,52.529],[-139.359,12.631],[-81.628,3.271],[-12.612,-36.255]],"c":true}],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.486],[29.85,13.263],[-19.538,8.935],[-43.755,11.042],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.486],[-29.854,-13.008],[31.215,-14.274],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.191,117.007],[-117.62,122.044],[-218.46,112.793],[-217.987,52.567],[-139.367,12.568],[-81.479,3.237],[-12.612,-36.255]],"c":true}],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.243],[-19.539,8.927],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.989],[31.217,-14.262],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.15,117.011],[-117.616,122.077],[-218.327,112.743],[-217.844,52.587],[-139.371,12.535],[-81.399,3.218],[-12.612,-36.255]],"c":true}],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.848,-4.513],[29.862,13.2],[-19.528,8.948],[-43.739,11.098],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.848,4.513],[-29.866,-12.947],[31.199,-14.296],[13.459,-3.415],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.548,122.1],[-218.226,112.862],[-217.814,52.729],[-139.437,12.567],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":223,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.823,-4.611],[29.919,13.057],[-19.482,9.039],[-43.68,11.304],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.823,4.611],[-29.922,-12.803],[31.126,-14.441],[13.441,-3.478],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.285,122.148],[-217.992,113.388],[-217.864,53.263],[-139.689,12.737],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":224,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.768,-4.829],[30.048,12.737],[-19.381,9.242],[-43.547,11.762],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.768,4.829],[-30.048,-12.483],[30.964,-14.766],[13.4,-3.619],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.699,122.256],[-217.467,114.563],[-217.975,54.455],[-140.253,13.115],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.687,-5.148],[30.236,12.27],[-19.233,9.538],[-43.353,12.429],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.687,5.148],[-30.232,-12.017],[30.728,-15.239],[13.34,-3.825],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.846,122.413],[-216.704,116.275],[-218.137,56.192],[-141.074,13.666],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.619,-5.421],[30.397,11.871],[-19.106,9.791],[-43.188,13.001],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.619,5.421],[-30.39,-11.617],[30.526,-15.644],[13.289,-4.001],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.114,122.548],[-216.049,117.741],[-218.276,57.679],[-141.777,14.138],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.572,-5.607],[30.507,11.597],[-19.019,9.965],[-43.074,13.392],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.572,5.607],[-30.497,-11.344],[30.387,-15.921],[13.255,-4.121],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.614,122.64],[-215.602,118.745],[-218.371,58.697],[-142.258,14.461],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.54,-5.733],[30.58,11.414],[-18.961,10.081],[-42.998,13.655],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.54,5.733],[-30.57,-11.16],[30.294,-16.107],[13.231,-4.202],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.278,122.702],[-215.301,119.418],[-218.435,59.38],[-142.581,14.678],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.519,-5.817],[30.63,11.29],[-18.922,10.16],[-42.947,13.832],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.519,5.817],[-30.618,-11.037],[30.232,-16.232],[13.215,-4.256],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.052,122.743],[-215.099,119.871],[-218.478,59.84],[-142.799,14.823],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.505,-5.873],[30.663,11.208],[-18.896,10.211],[-42.913,13.948],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.505,5.873],[-30.65,-10.955],[30.19,-16.315],[13.205,-4.292],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.166,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.903,122.771],[-214.966,120.17],[-218.506,60.143],[-142.942,14.92],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.496,-5.907],[30.683,11.158],[-18.88,10.244],[-42.892,14.021],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.496,5.907],[-30.67,-10.904],[30.165,-16.366],[13.198,-4.314],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.81,122.788],[-214.883,120.357],[-218.524,60.332],[-143.032,14.98],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.491,-5.926],[30.694,11.131],[-18.872,10.261],[-42.881,14.06],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.491,5.926],[-30.681,-10.877],[30.151,-16.393],[13.195,-4.326],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.761,122.797],[-214.838,120.456],[-218.533,60.433],[-143.079,15.012],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.491,-5.926],[30.694,11.13],[-18.871,10.261],[-42.88,14.06],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.491,5.926],[-30.681,-10.877],[30.15,-16.393],[13.195,-4.327],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.76,122.801],[-214.837,120.461],[-218.532,60.439],[-143.08,15.017],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.494,-5.909],[30.683,11.154],[-18.878,10.245],[-42.888,14.024],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.494,5.909],[-30.67,-10.901],[30.161,-16.368],[13.197,-4.315],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.807,122.805],[-214.874,120.382],[-218.52,60.362],[-143.036,15.005],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.5,-5.878],[30.662,11.198],[-18.891,10.215],[-42.903,13.959],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.5,5.878],[-30.649,-10.945],[30.181,-16.321],[13.202,-4.295],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.891,122.811],[-214.94,120.24],[-218.497,60.223],[-142.957,14.984],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.509,-5.831],[30.631,11.264],[-18.91,10.171],[-42.926,13.86],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.509,5.831],[-30.619,-11.011],[30.212,-16.25],[13.209,-4.265],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.018,122.822],[-215.041,120.025],[-218.463,60.011],[-142.837,14.951],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.522,-5.764],[30.587,11.358],[-18.937,10.109],[-42.957,13.721],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.522,5.764],[-30.575,-11.105],[30.255,-16.15],[13.219,-4.222],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.198,122.836],[-215.184,119.721],[-218.416,59.713],[-142.668,14.904],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.539,-5.674],[30.527,11.485],[-18.973,10.024],[-43.001,13.532],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.539,5.674],[-30.517,-11.232],[30.313,-16.015],[13.232,-4.164],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.441,122.855],[-215.377,119.309],[-218.351,59.31],[-142.439,14.841],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.562,-5.555],[30.448,11.653],[-19.021,9.911],[-43.058,13.281],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.562,5.555],[-30.439,-11.4],[30.39,-15.835],[13.249,-4.087],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.764,122.881],[-215.634,118.763],[-218.265,58.774],[-142.135,14.757],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.592,-5.398],[30.343,11.875],[-19.085,9.763],[-43.133,12.95],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.592,5.398],[-30.336,-11.622],[30.492,-15.598],[13.273,-3.985],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.19,122.915],[-215.972,118.042],[-218.152,58.067],[-141.734,14.646],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.632,-5.189],[30.204,12.169],[-19.169,9.566],[-43.233,12.512],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.632,5.189],[-30.2,-11.916],[30.627,-15.284],[13.303,-3.85],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.755,122.96],[-216.421,117.086],[-218.001,57.13],[-141.203,14.5],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.686,-4.908],[30.018,12.566],[-19.283,9.302],[-43.368,11.922],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.686,4.908],[-30.017,-12.313],[30.808,-14.861],[13.345,-3.669],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.515,123.021],[-217.025,115.8],[-217.799,55.869],[-140.488,14.302],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.76,-4.519],[29.759,13.113],[-19.44,8.935],[-43.554,11.106],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.76,4.519],[-29.763,-12.861],[31.059,-14.276],[13.402,-3.417],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.567,123.104],[-217.86,114.021],[-217.519,54.124],[-139.498,14.029],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.865,-3.972],[29.396,13.885],[-19.662,8.42],[-43.816,9.956],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.865,3.972],[-29.406,-13.633],[31.413,-13.452],[13.483,-3.064],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-119.049,123.222],[-219.037,111.514],[-217.125,51.666],[-138.104,13.644],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.997,-3.279],[28.935,14.862],[-19.942,7.767],[-44.148,8.501],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.997,3.279],[-28.954,-14.61],[31.861,-12.409],[13.585,-2.616],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-120.924,123.372],[-220.526,108.342],[-216.626,48.556],[-136.34,13.158],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.11,-2.69],[28.544,15.692],[-20.18,7.212],[-44.431,7.265],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.11,2.69],[-28.57,-15.44],[32.241,-11.522],[13.672,-2.235],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-122.517,123.499],[-221.791,105.647],[-216.202,45.913],[-134.841,12.744],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.177,-2.342],[28.313,16.183],[-20.321,6.884],[-44.597,6.533],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.177,2.342],[-28.343,-15.931],[32.466,-10.998],[13.723,-2.01],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-123.459,123.574],[-222.539,104.053],[-215.952,44.35],[-133.955,12.499],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.212,-2.159],[28.191,16.441],[-20.395,6.711],[-44.685,6.149],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.212,2.159],[-28.224,-16.189],[32.585,-10.723],[13.75,-1.892],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-123.954,123.613],[-222.933,103.215],[-215.82,43.528],[-133.488,12.371],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.228,-2.074],[28.135,16.561],[-20.429,6.631],[-44.726,5.97],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.228,2.074],[-28.168,-16.31],[32.64,-10.595],[13.763,-1.837],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.185,123.632],[-223.116,102.825],[-215.759,43.146],[-133.272,12.311],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.054],[28.123,16.592],[-20.437,6.615],[-44.735,5.929],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.054],[-28.156,-16.341],[32.652,-10.569],[13.766,-1.825],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.146,117.011],[-124.237,123.627],[-223.187,102.747],[-215.777,43.054],[-133.222,12.302],[-81.393,3.217],[-12.612,-36.255]],"c":true}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[21.23,-2.068],[28.135,16.587],[-20.431,6.634],[-44.73,5.957],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-21.23,2.068],[-28.168,-16.335],[32.642,-10.599],[13.764,-1.833],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.176,117.008],[-124.201,123.593],[-223.254,102.841],[-215.891,43.095],[-133.255,12.328],[-81.45,3.23],[-12.612,-36.255]],"c":true}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[21.226,-2.092],[28.156,16.577],[-20.42,6.669],[-44.72,6.008],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.799],[-21.226,2.092],[-28.189,-16.325],[32.625,-10.655],[13.761,-1.849],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.231,117.003],[-124.136,123.533],[-223.377,103.014],[-216.1,43.171],[-133.316,12.375],[-81.555,3.254],[-12.612,-36.255]],"c":true}],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.198],[21.22,-2.131],[28.19,16.561],[-20.403,6.723],[-44.705,6.086],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.797],[-21.22,2.131],[-28.223,-16.308],[32.598,-10.741],[13.756,-1.873],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.316,116.995],[-124.034,123.438],[-223.568,103.281],[-216.424,43.289],[-133.409,12.447],[-81.717,3.292],[-12.612,-36.255]],"c":true}],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.195],[21.211,-2.185],[28.238,16.539],[-20.379,6.8],[-44.682,6.198],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.793],[-21.211,2.185],[-28.27,-16.285],[32.56,-10.864],[13.749,-1.907],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.437,116.983],[-123.889,123.303],[-223.841,103.664],[-216.887,43.457],[-133.544,12.551],[-81.95,3.346],[-12.612,-36.255]],"c":true}],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.19],[21.2,-2.26],[28.304,16.508],[-20.346,6.905],[-44.652,6.351],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.787],[-21.2,2.26],[-28.335,-16.253],[32.507,-11.032],[13.74,-1.954],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.602,116.966],[-123.69,123.119],[-224.214,104.187],[-217.52,43.687],[-133.727,12.693],[-82.268,3.42],[-12.612,-36.255]],"c":true}],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.184],[21.184,-2.358],[28.391,16.468],[-20.303,7.044],[-44.612,6.552],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.78],[-21.184,2.358],[-28.42,-16.211],[32.438,-11.253],[13.728,-2.016],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.82,116.945],[-123.428,122.877],[-224.705,104.876],[-218.353,43.99],[-133.968,12.88],[-82.687,3.517],[-12.612,-36.255]],"c":true}],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.176],[21.164,-2.483],[28.501,16.417],[-20.247,7.22],[-44.562,6.808],[-18.617,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.771],[-21.164,2.483],[-28.528,-16.158],[32.35,-11.534],[13.712,-2.095],[35.358,-7.882],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.097,116.918],[-123.096,122.568],[-225.33,105.751],[-219.412,44.375],[-134.275,13.117],[-83.219,3.641],[-12.612,-36.255]],"c":true}],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.166],[21.141,-2.634],[28.634,16.355],[-20.18,7.434],[-44.501,7.118],[-18.618,4.327],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.293,-4.761],[-21.141,2.634],[-28.659,-16.094],[32.243,-11.875],[13.693,-2.19],[35.359,-7.877],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.433,116.885],[-122.694,122.195],[-226.085,106.81],[-220.694,44.841],[-134.646,13.404],[-83.863,3.79],[-12.612,-36.255]],"c":true}],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.101,4.156],[21.114,-2.805],[28.785,16.285],[-20.105,7.675],[-44.431,7.468],[-18.618,4.324],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.291,-4.748],[-21.114,2.805],[-28.808,-16.021],[32.122,-12.26],[13.672,-2.298],[35.359,-7.872],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.812,116.848],[-122.238,121.773],[-226.94,108.009],[-222.145,45.369],[-135.066,13.729],[-84.591,3.96],[-12.612,-36.255]],"c":true}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.1,4.144],[21.086,-2.984],[28.943,16.212],[-20.026,7.928],[-44.359,7.835],[-18.619,4.321],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.29,-4.736],[-21.086,2.984],[-28.963,-15.945],[31.996,-12.664],[13.65,-2.411],[35.36,-7.867],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.21,116.809],[-121.761,121.331],[-227.835,109.264],[-223.663,45.921],[-135.506,14.07],[-85.354,4.137],[-12.612,-36.255]],"c":true}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.098,4.133],[21.058,-3.158],[29.097,16.141],[-19.949,8.174],[-44.288,8.192],[-18.619,4.318],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.288,-4.723],[-21.058,3.158],[-29.114,-15.871],[31.873,-13.055],[13.628,-2.521],[35.361,-7.862],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.595,116.771],[-121.298,120.901],[-228.705,110.483],[-225.138,46.457],[-135.933,14.4],[-86.095,4.309],[-12.612,-36.255]],"c":true}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.097,4.123],[21.033,-3.318],[29.238,16.075],[-19.878,8.4],[-44.224,8.52],[-18.619,4.315],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.287,-4.712],[-21.033,3.318],[-29.253,-15.803],[31.761,-13.416],[13.608,-2.622],[35.361,-7.857],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.951,116.736],[-120.872,120.506],[-229.505,111.605],[-226.495,46.95],[-136.326,14.705],[-86.777,4.468],[-12.612,-36.255]],"c":true}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.096,4.114],[21.011,-3.46],[29.364,16.017],[-19.815,8.601],[-44.166,8.812],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.286,-4.701],[-21.011,3.46],[-29.377,-15.742],[31.66,-13.737],[13.59,-2.712],[35.362,-7.853],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.267,116.705],[-120.493,120.154],[-230.218,112.604],[-227.705,47.39],[-136.676,14.976],[-87.385,4.609],[-12.612,-36.255]],"c":true}],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.095,4.106],[20.991,-3.585],[29.474,15.966],[-19.759,8.778],[-44.115,9.069],[-18.62,4.31],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.284,-4.693],[-20.991,3.585],[-29.485,-15.689],[31.572,-14.019],[13.575,-2.791],[35.362,-7.849],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.545,116.677],[-120.159,119.845],[-230.844,113.481],[-228.766,47.776],[-136.984,15.214],[-87.918,4.733],[-12.612,-36.255]],"c":true}],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.094,4.1],[20.974,-3.694],[29.57,15.921],[-19.711,8.932],[-44.071,9.293],[-18.62,4.308],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.283,-4.685],[-20.974,3.694],[-29.58,-15.642],[31.495,-14.265],[13.561,-2.86],[35.363,-7.846],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.787,116.654],[-119.869,119.575],[-231.389,114.247],[-229.692,48.113],[-137.252,15.421],[-88.383,4.841],[-12.612,-36.255]],"c":true}],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.094],[20.959,-3.79],[29.654,15.882],[-19.669,9.067],[-44.032,9.488],[-18.62,4.307],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.283,-4.678],[-20.959,3.79],[-29.662,-15.602],[31.428,-14.479],[13.549,-2.92],[35.363,-7.843],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.998,116.633],[-119.615,119.34],[-231.865,114.913],[-230.499,48.406],[-137.485,15.602],[-88.788,4.935],[-12.612,-36.255]],"c":true}],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.088],[20.946,-3.872],[29.727,15.848],[-19.632,9.184],[-43.999,9.658],[-18.62,4.305],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.282,-4.672],[-20.946,3.872],[-29.734,-15.566],[31.369,-14.666],[13.539,-2.972],[35.363,-7.841],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.182,116.615],[-119.395,119.135],[-232.279,115.494],[-231.202,48.662],[-137.689,15.76],[-89.141,5.017],[-12.612,-36.255]],"c":true}],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.084],[20.935,-3.945],[29.791,15.819],[-19.6,9.286],[-43.969,9.806],[-18.621,4.304],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.667],[-20.935,3.945],[-29.797,-15.535],[31.318,-14.829],[13.53,-3.017],[35.364,-7.839],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.343,116.599],[-119.202,118.957],[-232.641,116.002],[-231.816,48.885],[-137.867,15.897],[-89.45,5.088],[-12.612,-36.255]],"c":true}],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.08],[20.925,-4.008],[29.847,15.793],[-19.572,9.375],[-43.944,9.935],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.662],[-20.925,4.008],[-29.852,-15.509],[31.274,-14.972],[13.522,-3.057],[35.364,-7.837],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.483,116.585],[-119.034,118.801],[-232.957,116.445],[-232.352,49.08],[-138.022,16.017],[-89.719,5.151],[-12.612,-36.255]],"c":true}],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.076],[20.916,-4.063],[29.896,15.77],[-19.548,9.453],[-43.921,10.049],[-18.621,4.302],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.658],[-20.916,4.063],[-29.9,-15.485],[31.235,-15.096],[13.515,-3.092],[35.364,-7.835],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.605,116.573],[-118.887,118.664],[-233.233,116.832],[-232.82,49.25],[-138.158,16.122],[-89.954,5.206],[-12.612,-36.255]],"c":true}],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.073],[20.908,-4.111],[29.938,15.75],[-19.527,9.521],[-43.902,10.147],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.655],[-20.908,4.111],[-29.942,-15.464],[31.201,-15.205],[13.509,-3.123],[35.364,-7.834],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.712,116.563],[-118.758,118.545],[-233.474,117.169],[-233.229,49.399],[-138.276,16.214],[-90.16,5.253],[-12.612,-36.255]],"c":true}],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.071],[20.902,-4.153],[29.975,15.733],[-19.508,9.581],[-43.885,10.234],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.652],[-20.902,4.153],[-29.978,-15.447],[31.171,-15.299],[13.504,-3.149],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.806,116.553],[-118.647,118.441],[-233.684,117.464],[-233.586,49.528],[-138.379,16.294],[-90.339,5.295],[-12.612,-36.255]],"c":true}],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.068],[20.896,-4.19],[30.008,15.718],[-19.492,9.632],[-43.87,10.308],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.649],[-20.896,4.19],[-30.01,-15.431],[31.145,-15.382],[13.499,-3.172],[35.365,-7.831],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.887,116.545],[-118.549,118.351],[-233.867,117.72],[-233.895,49.641],[-138.469,16.363],[-90.494,5.331],[-12.612,-36.255]],"c":true}],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.066],[20.891,-4.221],[30.035,15.705],[-19.478,9.677],[-43.857,10.373],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.647],[-20.891,4.221],[-30.037,-15.418],[31.123,-15.453],[13.495,-3.192],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.957,116.539],[-118.465,118.273],[-234.025,117.942],[-234.163,49.738],[-138.547,16.423],[-90.629,5.362],[-12.612,-36.255]],"c":true}],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.065],[20.887,-4.249],[30.059,15.694],[-19.466,9.715],[-43.846,10.429],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.645],[-20.887,4.249],[-30.061,-15.406],[31.104,-15.514],[13.492,-3.209],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.017,116.533],[-118.393,118.206],[-234.161,118.132],[-234.394,49.822],[-138.613,16.475],[-90.745,5.389],[-12.612,-36.255]],"c":true}],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.063],[20.883,-4.272],[30.08,15.685],[-19.456,9.748],[-43.837,10.476],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.643],[-20.883,4.272],[-30.081,-15.396],[31.087,-15.566],[13.489,-3.224],[35.365,-7.829],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.069,116.528],[-118.331,118.149],[-234.277,118.295],[-234.59,49.893],[-138.67,16.519],[-90.844,5.412],[-12.612,-36.255]],"c":true}],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.062],[20.88,-4.291],[30.097,15.677],[-19.447,9.776],[-43.829,10.516],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.642],[-20.88,4.291],[-30.098,-15.388],[31.074,-15.61],[13.487,-3.236],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.112,116.523],[-118.279,118.101],[-234.374,118.431],[-234.756,49.954],[-138.718,16.556],[-90.927,5.432],[-12.612,-36.255]],"c":true}],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.061],[20.878,-4.307],[30.111,15.67],[-19.44,9.798],[-43.822,10.55],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.641],[-20.878,4.307],[-30.112,-15.381],[31.062,-15.647],[13.485,-3.246],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.148,116.52],[-118.236,118.061],[-234.455,118.545],[-234.894,50.004],[-138.758,16.587],[-90.996,5.448],[-12.612,-36.255]],"c":true}],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.06],[20.876,-4.321],[30.123,15.665],[-19.434,9.817],[-43.817,10.577],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.64],[-20.875,4.321],[-30.123,-15.375],[31.053,-15.676],[13.483,-3.255],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.177,116.517],[-118.201,118.028],[-234.521,118.637],[-235.005,50.044],[-138.79,16.612],[-91.052,5.461],[-12.612,-36.255]],"c":true}],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.874,-4.331],[30.132,15.66],[-19.429,9.832],[-43.813,10.598],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.639],[-20.874,4.331],[-30.132,-15.371],[31.046,-15.7],[13.482,-3.261],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.2,116.515],[-118.173,118.003],[-234.573,118.71],[-235.093,50.076],[-138.816,16.632],[-91.096,5.471],[-12.612,-36.255]],"c":true}],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.873,-4.339],[30.139,15.657],[-19.426,9.843],[-43.81,10.614],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.639],[-20.873,4.339],[-30.139,-15.368],[31.04,-15.717],[13.481,-3.266],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.217,116.513],[-118.153,117.984],[-234.611,118.764],[-235.158,50.1],[-138.835,16.646],[-91.129,5.479],[-12.612,-36.255]],"c":true}],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.872,-4.344],[30.144,15.655],[-19.424,9.85],[-43.808,10.625],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.872,4.344],[-30.144,-15.365],[31.036,-15.729],[13.48,-3.269],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.229,116.512],[-118.139,117.97],[-234.638,118.801],[-235.204,50.116],[-138.848,16.656],[-91.152,5.484],[-12.612,-36.255]],"c":true}],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.694117665291,0.435294121504,0.345098048449,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Thumb","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":321,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Nail - PATH","parent":5,"tt":1,"tp":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-215.854,53.1,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.7},"t":59,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.6,"y":0},"t":95,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":122,"s":[{"i":[[0,0],[4.232,-12.502],[12.921,-1.766],[0,0],[-10.742,11.216],[0,0],[-9.55,-10.068]],"o":[[8.923,9.803],[-4.232,12.502],[0,0],[-17.559,-12.801],[0,0],[13.042,-4.219],[0,0]],"v":[[43.524,-16.699],[51.346,19.151],[23.347,42.689],[-15.873,40.533],[-19.404,-10.788],[6.329,-27.088],[43.177,-17.287]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":140,"s":[{"i":[[0,0],[5.977,-11.693],[12.492,0.343],[0,0],[-11.927,9.366],[0,0],[-7.435,-11.514]],"o":[[6.885,11.15],[-5.977,11.693],[0,0],[-14.573,-15.516],[0,0],[12.995,-2.066],[0,0]],"v":[[41.831,-31.462],[43.556,5.299],[13.369,24.072],[-23.361,15.588],[-18.585,-35.795],[8.315,-47.769],[41.596,-32.101]],"c":true}]},{"t":175,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}],"h":1},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":188,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.154,"y":1},"t":218,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":222,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":234,"s":[{"i":[[0,0],[4.232,-12.502],[12.921,-1.766],[0,0],[-10.742,11.216],[0,0],[-9.55,-10.068]],"o":[[8.923,9.803],[-4.232,12.502],[0,0],[-17.559,-12.801],[0,0],[13.042,-4.219],[0,0]],"v":[[43.524,-16.699],[51.346,19.151],[23.347,42.689],[-15.873,40.533],[-19.404,-10.788],[6.329,-27.088],[43.177,-17.287]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":252,"s":[{"i":[[0,0],[5.977,-11.693],[12.492,0.343],[0,0],[-11.927,9.366],[0,0],[-7.435,-11.514]],"o":[[6.885,11.15],[-5.977,11.693],[0,0],[-14.573,-15.516],[0,0],[12.995,-2.066],[0,0]],"v":[[41.831,-31.462],[43.556,5.299],[13.369,24.072],[-23.361,15.588],[-18.585,-35.795],[8.315,-47.769],[41.596,-32.101]],"c":true}]},{"t":287,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.75686275959,0.549019634724,0.474509805441,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Nail","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":321,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Thumb - PATH","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":59,"s":[17.7]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":95,"s":[15.7]},{"i":{"x":[0.28],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":147,"s":[15.7]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.18],"y":[0]},"t":201,"s":[17.7]},{"i":{"x":[0.28],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":259,"s":[15.7]},{"t":313,"s":[17.7]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":122,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.6,"y":0.6},"o":{"x":0.604,"y":0.604},"t":145,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.28,"y":1},"o":{"x":0.2,"y":0},"t":147,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.8,"y":0.8},"t":201,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":234,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.6,"y":0.6},"o":{"x":0.604,"y":0.604},"t":257,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.28,"y":1},"o":{"x":0.2,"y":0},"t":259,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":313,"s":[0,0,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,49,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":25,"nm":"Elevation","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[0,0,0,0.25],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":63.75,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":180,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":4,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":8,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.7},"t":59,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.6,"y":0},"t":95,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":122,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.49,-5.931],[30.698,11.123],[-18.869,10.266],[-42.877,14.071],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.49,5.931],[-30.684,-10.869],[30.147,-16.402],[13.194,-4.33],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.746,122.8],[-214.825,120.486],[-218.536,60.463],[-143.094,15.021],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":140,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"t":175,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"h":1},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":188,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.12,"y":1},"o":{"x":0.154,"y":1},"t":218,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":222,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":234,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.49,-5.931],[30.698,11.123],[-18.869,10.266],[-42.877,14.071],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.49,5.931],[-30.684,-10.869],[30.147,-16.402],[13.194,-4.33],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.746,122.8],[-214.825,120.486],[-218.536,60.463],[-143.094,15.021],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":252,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"t":287,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.694117665291,0.435294121504,0.345098048449,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Thumb","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":321,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".onSurfaceHome","cl":"onSurfaceHome","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":65,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":77,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":89,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":119,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":141,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":150,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":231,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":253,"s":[100]},{"t":262,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,1337,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":1282,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[1]},"o":{"x":[1],"y":[0]},"t":123,"s":[581]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.312],"y":[4.051]},"t":141,"s":[910]},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":150,"s":[910]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":180,"s":[581]},{"i":{"x":[0.8],"y":[1]},"o":{"x":[1],"y":[0]},"t":235,"s":[581]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.312],"y":[4.051]},"t":253,"s":[910]},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":262,"s":[910]},{"t":292,"s":[581]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":123,"s":[90]},{"t":141,"s":[300],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":150,"s":[300]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":180,"s":[90]},{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":235,"s":[90]},{"t":253,"s":[300],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":262,"s":[300]},{"t":292,"s":[90]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":1,"k":[{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":123,"s":[90]},{"t":141,"s":[300],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":150,"s":[300]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":180,"s":[90]},{"i":{"x":[0.75],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":235,"s":[90]},{"t":253,"s":[300],"h":1},{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":262,"s":[300]},{"t":292,"s":[90]}],"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491],[-551,-581],[551,-581],[641,-491],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.864,0],[0,0],[0,-49.864],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-49.864],[0,0],[49.864,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491],[-550.651,-581.35],[550.651,-581.35],[641,-491],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.471,0],[0,0],[0,-50.471],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-50.471],[0,0],[50.471,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.999],[-549.55,-582.448],[549.55,-582.448],[641,-490.999],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.541,0],[0,0],[0,-51.541],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-51.541],[0,0],[51.542,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.991],[-547.611,-584.38],[547.611,-584.38],[641,-490.991],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-53.134,0],[0,0],[0,-53.134],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-53.134],[0,0],[53.134,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.972],[-544.725,-587.246],[544.725,-587.246],[641,-490.972],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-55.32,0],[0,0],[0,-55.32],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-55.32],[0,0],[55.32,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.934],[-540.764,-591.17],[540.764,-591.17],[641,-490.934],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-58.188,0],[0,0],[0,-58.188],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-58.188],[0,0],[58.188,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.87],[-535.567,-596.303],[535.567,-596.303],[641,-490.87],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-61.849,0],[0,0],[0,-61.849],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-61.849],[0,0],[61.849,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.774],[-528.935,-602.839],[528.935,-602.839],[641,-490.774],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-66.441,0],[0,0],[0,-66.441],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-66.441],[0,0],[66.441,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.64],[-520.614,-611.026],[520.614,-611.026],[641,-490.64],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-72.145,0],[0,0],[0,-72.145],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-72.145],[0,0],[72.146,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.471],[-510.278,-621.193],[510.278,-621.193],[641,-490.471],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-79.194,0],[0,0],[0,-79.194],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-79.194],[0,0],[79.194,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.298],[-497.506,-633.792],[497.506,-633.792],[641,-490.298],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-87.886,0],[0,0],[0,-87.886],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-87.886],[0,0],[87.886,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.228],[-481.757,-649.472],[481.757,-649.472],[641,-490.228],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-98.583,0],[0,0],[0,-98.583],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-98.583],[0,0],[98.583,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.587],[-462.375,-669.211],[462.375,-669.211],[641,-490.587],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-111.618,0],[0,0],[0,-111.618],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-111.618],[0,0],[111.618,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-492.36],[-438.757,-694.603],[438.757,-694.603],[641,-492.36],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-126.899,0],[0,0],[0,-126.899],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-126.899],[0,0],[126.899,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-498.55],[-411.068,-728.481],[411.068,-728.481],[641,-498.55],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-142.859,0],[0,0],[0,-142.859],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-142.859],[0,0],[142.859,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-517.469],[-382.15,-776.318],[382.15,-776.318],[641,-517.469],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-155.928,0],[0,0],[0,-155.929],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-155.929],[0,0],[155.929,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-561.819],[-358.47,-844.349],[358.47,-844.349],[641,-561.819],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-163.404,0],[0,0],[0,-163.404],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-163.404],[0,0],[163.404,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-601.877],[-344.925,-897.952],[344.925,-897.952],[641,-601.877],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-610],[-341,-910],[341,-910],[641,-610],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-611.387],[-341,-911.387],[341,-911.387],[641,-611.387],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-611.036],[-341,-911.036],[341,-911.036],[641,-611.036],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-610.63],[-341,-910.63],[341,-910.63],[641,-610.63],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-610.076],[-341,-910.076],[341,-910.076],[641,-610.076],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-610],[-341,-910],[341,-910],[641,-610],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.323,0],[0,0],[0,-165.323],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-165.323],[0,0],[165.323,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-609.746],[-341.448,-909.299],[341.448,-909.299],[641,-609.746],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-164.568,0],[0,0],[0,-164.568],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-164.568],[0,0],[164.568,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-608.971],[-342.816,-907.155],[342.816,-907.155],[641,-608.971],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-163.284,0],[0,0],[0,-163.284],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-163.284],[0,0],[163.284,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-607.653],[-345.142,-903.511],[345.142,-903.511],[641,-607.653],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-161.454,0],[0,0],[0,-161.454],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-161.454],[0,0],[161.454,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-605.774],[-348.457,-898.317],[348.457,-898.317],[641,-605.774],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-159.065,0],[0,0],[0,-159.065],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-159.065],[0,0],[159.065,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-603.32],[-352.787,-891.533],[352.787,-891.533],[641,-603.32],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-156.106,0],[0,0],[0,-156.106],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-156.106],[0,0],[156.106,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-600.282],[-358.149,-883.134],[358.149,-883.134],[641,-600.282],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-152.577,0],[0,0],[0,-152.577],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-152.577],[0,0],[152.577,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-596.659],[-364.543,-873.116],[364.543,-873.116],[641,-596.659],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-148.485,0],[0,0],[0,-148.485],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-148.485],[0,0],[148.485,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-592.458],[-371.956,-861.502],[371.956,-861.502],[641,-592.458],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-143.851,0],[0,0],[0,-143.851],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-143.851],[0,0],[143.851,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-587.7],[-380.353,-848.347],[380.353,-848.347],[641,-587.7],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-138.708,0],[0,0],[0,-138.708],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-138.708],[0,0],[138.708,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-582.419],[-389.673,-833.746],[389.673,-833.746],[641,-582.419],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-133.104,0],[0,0],[0,-133.104],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-133.104],[0,0],[133.104,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-576.665],[-399.826,-817.839],[399.826,-817.839],[641,-576.665],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-127.105,0],[0,0],[0,-127.105],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-127.105],[0,0],[127.105,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-570.506],[-410.696,-800.81],[410.696,-800.81],[641,-570.506],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-120.793,0],[0,0],[0,-120.793],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-120.793],[0,0],[120.793,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-564.025],[-422.133,-782.892],[422.133,-782.892],[641,-564.025],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-114.263,0],[0,0],[0,-114.263],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-114.263],[0,0],[114.263,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-557.32],[-433.965,-764.355],[433.965,-764.355],[641,-557.32],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-100.978,0],[0,0],[0,-100.978],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-100.978],[0,0],[100.978,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-543.68],[-458.035,-726.645],[458.035,-726.645],[641,-543.68],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-94.448,0],[0,0],[0,-94.448],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-94.448],[0,0],[94.448,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-536.975],[-469.867,-708.108],[469.867,-708.108],[641,-536.975],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-88.136,0],[0,0],[0,-88.136],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-88.136],[0,0],[88.136,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-530.494],[-481.304,-690.19],[481.304,-690.19],[641,-530.494],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-82.137,0],[0,0],[0,-82.137],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-82.137],[0,0],[82.137,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-524.335],[-492.174,-673.161],[492.174,-673.161],[641,-524.335],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-76.533,0],[0,0],[0,-76.533],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-76.533],[0,0],[76.534,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-518.581],[-502.327,-657.254],[502.327,-657.254],[641,-518.581],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-71.39,0],[0,0],[0,-71.39],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-71.39],[0,0],[71.39,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-513.3],[-511.647,-642.653],[511.647,-642.653],[641,-513.3],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-66.756,0],[0,0],[0,-66.756],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-66.756],[0,0],[66.756,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-508.542],[-520.044,-629.498],[520.044,-629.498],[641,-508.542],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-62.664,0],[0,0],[0,-62.664],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-62.664],[0,0],[62.664,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-504.341],[-527.457,-617.884],[527.457,-617.884],[641,-504.341],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-59.135,0],[0,0],[0,-59.135],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-59.135],[0,0],[59.135,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-500.718],[-533.851,-607.866],[533.851,-607.866],[641,-500.718],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-56.177,0],[0,0],[0,-56.177],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-56.177],[0,0],[56.177,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-497.68],[-539.213,-599.467],[539.213,-599.467],[641,-497.68],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-53.787,0],[0,0],[0,-53.787],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-53.787],[0,0],[53.786,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-495.226],[-543.543,-592.683],[543.543,-592.683],[641,-495.226],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.957,0],[0,0],[0,-51.957],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-51.957],[0,0],[51.957,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-493.347],[-546.858,-587.489],[546.858,-587.489],[641,-493.347],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.673,0],[0,0],[0,-50.673],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-50.673],[0,0],[50.673,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-492.029],[-549.184,-583.845],[549.184,-583.845],[641,-492.029],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.918,0],[0,0],[0,-49.918],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-49.918],[0,0],[49.918,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491.254],[-550.552,-581.701],[550.552,-581.701],[641,-491.254],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491],[-551,-581],[551,-581],[641,-491],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491],[-551,-581],[551,-581],[641,-491],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.864,0],[0,0],[0,-49.864],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-49.864],[0,0],[49.864,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491],[-550.651,-581.35],[550.651,-581.35],[641,-491],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.471,0],[0,0],[0,-50.471],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-50.471],[0,0],[50.471,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.999],[-549.55,-582.448],[549.55,-582.448],[641,-490.999],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.541,0],[0,0],[0,-51.541],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-51.541],[0,0],[51.542,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.991],[-547.611,-584.38],[547.611,-584.38],[641,-490.991],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-53.134,0],[0,0],[0,-53.134],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-53.134],[0,0],[53.134,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.972],[-544.725,-587.246],[544.725,-587.246],[641,-490.972],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-55.32,0],[0,0],[0,-55.32],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-55.32],[0,0],[55.32,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.934],[-540.764,-591.17],[540.764,-591.17],[641,-490.934],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-58.188,0],[0,0],[0,-58.188],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-58.188],[0,0],[58.188,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.87],[-535.567,-596.303],[535.567,-596.303],[641,-490.87],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-61.849,0],[0,0],[0,-61.849],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-61.849],[0,0],[61.849,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.774],[-528.935,-602.839],[528.935,-602.839],[641,-490.774],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-66.441,0],[0,0],[0,-66.441],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-66.441],[0,0],[66.441,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.64],[-520.614,-611.026],[520.614,-611.026],[641,-490.64],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-72.145,0],[0,0],[0,-72.145],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-72.145],[0,0],[72.146,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.471],[-510.278,-621.193],[510.278,-621.193],[641,-490.471],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-79.194,0],[0,0],[0,-79.194],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-79.194],[0,0],[79.194,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.298],[-497.506,-633.792],[497.506,-633.792],[641,-490.298],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-87.886,0],[0,0],[0,-87.886],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-87.886],[0,0],[87.886,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.228],[-481.757,-649.472],[481.757,-649.472],[641,-490.228],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-98.583,0],[0,0],[0,-98.583],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-98.583],[0,0],[98.583,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-490.587],[-462.375,-669.211],[462.375,-669.211],[641,-490.587],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-111.618,0],[0,0],[0,-111.618],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-111.618],[0,0],[111.618,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-492.36],[-438.757,-694.603],[438.757,-694.603],[641,-492.36],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-126.899,0],[0,0],[0,-126.899],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-126.899],[0,0],[126.899,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-498.55],[-411.068,-728.481],[411.068,-728.481],[641,-498.55],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-142.859,0],[0,0],[0,-142.859],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-142.859],[0,0],[142.859,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-517.469],[-382.15,-776.318],[382.15,-776.318],[641,-517.469],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-155.928,0],[0,0],[0,-155.929],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-155.929],[0,0],[155.929,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-561.819],[-358.47,-844.349],[358.47,-844.349],[641,-561.819],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-163.404,0],[0,0],[0,-163.404],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-163.404],[0,0],[163.404,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-601.877],[-344.925,-897.952],[344.925,-897.952],[641,-601.877],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-610],[-341,-910],[341,-910],[641,-610],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-611.387],[-341,-911.387],[341,-911.387],[641,-611.387],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-611.036],[-341,-911.036],[341,-911.036],[641,-611.036],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-610.63],[-341,-910.63],[341,-910.63],[641,-610.63],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-610.076],[-341,-910.076],[341,-910.076],[641,-610.076],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-610],[-341,-910],[341,-910],[641,-610],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.323,0],[0,0],[0,-165.323],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-165.323],[0,0],[165.323,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-609.746],[-341.448,-909.299],[341.448,-909.299],[641,-609.746],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-164.568,0],[0,0],[0,-164.568],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-164.568],[0,0],[164.568,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-608.971],[-342.816,-907.155],[342.816,-907.155],[641,-608.971],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-163.284,0],[0,0],[0,-163.284],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-163.284],[0,0],[163.284,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-607.653],[-345.142,-903.511],[345.142,-903.511],[641,-607.653],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-161.454,0],[0,0],[0,-161.454],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-161.454],[0,0],[161.454,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-605.774],[-348.457,-898.317],[348.457,-898.317],[641,-605.774],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-159.065,0],[0,0],[0,-159.065],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-159.065],[0,0],[159.065,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-603.32],[-352.787,-891.533],[352.787,-891.533],[641,-603.32],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-156.106,0],[0,0],[0,-156.106],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-156.106],[0,0],[156.106,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-600.282],[-358.149,-883.134],[358.149,-883.134],[641,-600.282],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-152.577,0],[0,0],[0,-152.577],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-152.577],[0,0],[152.577,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-596.659],[-364.543,-873.116],[364.543,-873.116],[641,-596.659],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-148.485,0],[0,0],[0,-148.485],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-148.485],[0,0],[148.485,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-592.458],[-371.956,-861.502],[371.956,-861.502],[641,-592.458],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-143.851,0],[0,0],[0,-143.851],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-143.851],[0,0],[143.851,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-587.7],[-380.353,-848.347],[380.353,-848.347],[641,-587.7],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-138.708,0],[0,0],[0,-138.708],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-138.708],[0,0],[138.708,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-582.419],[-389.673,-833.746],[389.673,-833.746],[641,-582.419],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-133.104,0],[0,0],[0,-133.104],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-133.104],[0,0],[133.104,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-576.665],[-399.826,-817.839],[399.826,-817.839],[641,-576.665],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-127.105,0],[0,0],[0,-127.105],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-127.105],[0,0],[127.105,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-570.506],[-410.696,-800.81],[410.696,-800.81],[641,-570.506],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-120.793,0],[0,0],[0,-120.793],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-120.793],[0,0],[120.793,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-564.025],[-422.133,-782.892],[422.133,-782.892],[641,-564.025],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-114.263,0],[0,0],[0,-114.263],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-114.263],[0,0],[114.263,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-557.32],[-433.965,-764.355],[433.965,-764.355],[641,-557.32],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-100.978,0],[0,0],[0,-100.978],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-100.978],[0,0],[100.978,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-543.68],[-458.035,-726.645],[458.035,-726.645],[641,-543.68],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-94.448,0],[0,0],[0,-94.448],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-94.448],[0,0],[94.448,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-536.975],[-469.867,-708.108],[469.867,-708.108],[641,-536.975],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-88.136,0],[0,0],[0,-88.136],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-88.136],[0,0],[88.136,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-530.494],[-481.304,-690.19],[481.304,-690.19],[641,-530.494],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-82.137,0],[0,0],[0,-82.137],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-82.137],[0,0],[82.137,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-524.335],[-492.174,-673.161],[492.174,-673.161],[641,-524.335],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-76.533,0],[0,0],[0,-76.533],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-76.533],[0,0],[76.534,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-518.581],[-502.327,-657.254],[502.327,-657.254],[641,-518.581],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-71.39,0],[0,0],[0,-71.39],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-71.39],[0,0],[71.39,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-513.3],[-511.647,-642.653],[511.647,-642.653],[641,-513.3],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-66.756,0],[0,0],[0,-66.756],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-66.756],[0,0],[66.756,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-508.542],[-520.044,-629.498],[520.044,-629.498],[641,-508.542],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-62.664,0],[0,0],[0,-62.664],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-62.664],[0,0],[62.664,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-504.341],[-527.457,-617.884],[527.457,-617.884],[641,-504.341],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-59.135,0],[0,0],[0,-59.135],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-59.135],[0,0],[59.135,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-500.718],[-533.851,-607.866],[533.851,-607.866],[641,-500.718],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-56.177,0],[0,0],[0,-56.177],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-56.177],[0,0],[56.177,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-497.68],[-539.213,-599.467],[539.213,-599.467],[641,-497.68],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-53.787,0],[0,0],[0,-53.787],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-53.787],[0,0],[53.786,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-495.226],[-543.543,-592.683],[543.543,-592.683],[641,-495.226],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-51.957,0],[0,0],[0,-51.957],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-51.957],[0,0],[51.957,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-493.347],[-546.858,-587.489],[546.858,-587.489],[641,-493.347],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-50.673,0],[0,0],[0,-50.673],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-50.673],[0,0],[50.673,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-492.029],[-549.184,-583.845],[549.184,-583.845],[641,-492.029],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.918,0],[0,0],[0,-49.918],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-49.918],[0,0],[49.918,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491.254],[-550.552,-581.701],[550.552,-581.701],[641,-491.254],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":291,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491],[-551,-581],[551,-581],[641,-491],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":292,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.925,0.753,0.424,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.925,0.753,0.424,1],"t":320,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":321,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".onSurfaceHome","cl":"onSurfaceHome","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":140,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":141,"s":[95]},{"t":170,"s":[0],"h":1},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":252,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":253,"s":[95]},{"t":282,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,1284,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":1282,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.268]},"t":141,"s":[857]},{"t":179,"s":[1204],"h":1},{"t":231,"s":[857],"h":1},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.268]},"t":253,"s":[857]},{"t":291,"s":[1204],"h":1}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":0,"k":300,"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":0,"k":300,"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-557],[-341,-857],[341,-857],[641,-557],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-610.063],[-341,-910.063],[341,-910.063],[641,-610.063],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-653.007],[-341,-953.007],[341,-953.007],[641,-653.007],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-685.49],[-341,-985.49],[341,-985.49],[641,-685.49],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-711.374],[-341,-1011.374],[341,-1011.374],[641,-711.374],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-732.839],[-341,-1032.839],[341,-1032.839],[641,-732.839],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-751.125],[-341,-1051.125],[341,-1051.125],[641,-751.125],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-766.998],[-341,-1066.998],[341,-1066.998],[641,-766.998],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-780.965],[-341,-1080.965],[341,-1080.965],[641,-780.965],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-793.379],[-341,-1093.379],[341,-1093.379],[641,-793.379],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-804.497],[-341,-1104.497],[341,-1104.497],[641,-804.497],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-814.513],[-341,-1114.513],[341,-1114.513],[641,-814.513],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-823.578],[-341,-1123.578],[341,-1123.578],[641,-823.578],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-831.81],[-341,-1131.81],[341,-1131.81],[641,-831.81],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-839.307],[-341,-1139.307],[341,-1139.307],[641,-839.307],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-846.146],[-341,-1146.146],[341,-1146.146],[641,-846.146],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-852.394],[-341,-1152.394],[341,-1152.394],[641,-852.394],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-858.107],[-341,-1158.106],[341,-1158.106],[641,-858.107],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-863.331],[-341,-1163.331],[341,-1163.331],[641,-863.331],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-868.107],[-341,-1168.107],[341,-1168.107],[641,-868.107],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-872.472],[-341,-1172.472],[341,-1172.472],[641,-872.472],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-876.455],[-341,-1176.455],[341,-1176.455],[641,-876.455],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-880.085],[-341,-1180.085],[341,-1180.085],[641,-880.085],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-883.384],[-341,-1183.384],[341,-1183.384],[641,-883.384],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-886.375],[-341,-1186.375],[341,-1186.375],[641,-886.375],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-889.077],[-341,-1189.078],[341,-1189.078],[641,-889.077],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-891.508],[-341,-1191.508],[341,-1191.508],[641,-891.508],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-893.682],[-341,-1193.682],[341,-1193.682],[641,-893.682],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-895.614],[-341,-1195.614],[341,-1195.614],[641,-895.614],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-897.317],[-341,-1197.317],[341,-1197.317],[641,-897.317],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-898.803],[-341,-1198.803],[341,-1198.803],[641,-898.803],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-900.082],[-341,-1200.082],[341,-1200.082],[641,-900.082],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-901.164],[-341,-1201.165],[341,-1201.165],[641,-901.164],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-902.06],[-341,-1202.06],[341,-1202.06],[641,-902.06],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-902.776],[-341,-1202.776],[341,-1202.776],[641,-902.776],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-903.321],[-341,-1203.321],[341,-1203.321],[641,-903.321],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-904],[-341,-1204],[341,-1204],[641,-904],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-557],[-341,-857],[341,-857],[641,-557],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-557],[-341,-857],[341,-857],[641,-557],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-610.063],[-341,-910.063],[341,-910.063],[641,-610.063],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-653.007],[-341,-953.007],[341,-953.007],[641,-653.007],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-685.49],[-341,-985.49],[341,-985.49],[641,-685.49],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-711.374],[-341,-1011.374],[341,-1011.374],[641,-711.374],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-732.839],[-341,-1032.839],[341,-1032.839],[641,-732.839],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-751.125],[-341,-1051.125],[341,-1051.125],[641,-751.125],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-766.998],[-341,-1066.998],[341,-1066.998],[641,-766.998],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-780.965],[-341,-1080.965],[341,-1080.965],[641,-780.965],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-793.379],[-341,-1093.379],[341,-1093.379],[641,-793.379],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-804.497],[-341,-1104.497],[341,-1104.497],[641,-804.497],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-814.513],[-341,-1114.513],[341,-1114.513],[641,-814.513],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-823.578],[-341,-1123.578],[341,-1123.578],[641,-823.578],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.507]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.507],[0,0],[-74.506,0],[0,0]],"v":[[-641,-831.81],[-341,-1131.81],[341,-1131.81],[641,-831.81],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-839.307],[-341,-1139.307],[341,-1139.307],[641,-839.307],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-846.146],[-341,-1146.146],[341,-1146.146],[641,-846.146],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-852.394],[-341,-1152.394],[341,-1152.394],[641,-852.394],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-858.107],[-341,-1158.106],[341,-1158.106],[641,-858.107],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-863.331],[-341,-1163.331],[341,-1163.331],[641,-863.331],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-868.107],[-341,-1168.107],[341,-1168.107],[641,-868.107],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-872.472],[-341,-1172.472],[341,-1172.472],[641,-872.472],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-876.455],[-341,-1176.455],[341,-1176.455],[641,-876.455],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-880.085],[-341,-1180.085],[341,-1180.085],[641,-880.085],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-883.384],[-341,-1183.384],[341,-1183.384],[641,-883.384],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-886.375],[-341,-1186.375],[341,-1186.375],[641,-886.375],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-889.077],[-341,-1189.078],[341,-1189.078],[641,-889.077],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-891.508],[-341,-1191.508],[341,-1191.508],[641,-891.508],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-893.682],[-341,-1193.682],[341,-1193.682],[641,-893.682],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-895.614],[-341,-1195.614],[341,-1195.614],[641,-895.614],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-897.317],[-341,-1197.317],[341,-1197.317],[641,-897.317],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-898.803],[-341,-1198.803],[341,-1198.803],[641,-898.803],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-900.082],[-341,-1200.082],[341,-1200.082],[641,-900.082],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-901.164],[-341,-1201.165],[341,-1201.165],[641,-901.164],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-902.06],[-341,-1202.06],[341,-1202.06],[641,-902.06],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-902.776],[-341,-1202.776],[341,-1202.776],[641,-902.776],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-165.57,0],[0,0],[0,-165.57],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-165.57],[0,0],[165.57,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-903.321],[-341,-1203.321],[341,-1203.321],[641,-903.321],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.925,0.753,0.424,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.925,0.753,0.424,1],"t":320,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":140,"op":321,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".surfaceHome","cl":"surfaceHome","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":640,"ix":3},"y":{"a":0,"k":400,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[1280,800],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.365,0.259,0,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.365,0.259,0,1],"t":320,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Volume","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":321,"st":-40,"ct":1,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Part03_Demonstration_Tablet_Home_V02","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,400,0],"ix":2,"l":2},"a":{"a":0,"k":[640,400,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":1280,"h":800,"ip":787,"op":1182,"st":787,"bm":0},{"ddd":0,"ind":2,"ty":0,"nm":"Part02_Charade_Tablet_Home_V02","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,400,0],"ix":2,"l":2},"a":{"a":0,"k":[640,400,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":1280,"h":800,"ip":321,"op":787,"st":321,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"Part01_Thumb_Tablet_Home_V02","refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,400,0],"ix":2,"l":2},"a":{"a":0,"k":[640,400,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":1280,"h":800,"ip":0,"op":321,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw/overview_gesture_tutorial_animation.json b/quickstep/res/raw/overview_gesture_tutorial_animation.json
new file mode 100644
index 0000000..b2dafee
--- /dev/null
+++ b/quickstep/res/raw/overview_gesture_tutorial_animation.json
@@ -0,0 +1 @@
+{"v":"5.10.0","fr":60,"ip":0,"op":1337,"w":412,"h":892,"nm":"SUW_Overview V02","ddd":0,"assets":[{"id":"comp_0","nm":"Part03_Demonstration_Overview_V02","fr":60,"pfr":1,"layers":[{"ddd":0,"ind":2,"ty":3,"nm":"Reset to Center","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":292,"s":[321.599]},{"t":362,"s":[155.599]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":292,"s":[758]},{"t":372,"s":[649]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":426,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"OVERSHOOT CHARACTER","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":227,"s":[-32.599]},{"t":329,"s":[7.401]}],"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":426,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".secondaryOverview","cl":"secondaryOverview","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-609,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-599,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":405,"s":[100]},{"t":411,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":130,"s":[-83]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":197,"s":[-238]},{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":227,"s":[-238]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":237.666,"s":[-125.6]},{"t":291,"s":[43]}],"ix":3},"y":{"k":[{"s":[110.1],"t":53,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[109.629],"t":54,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[108.115],"t":55,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[105.387],"t":56,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[101.233],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[95.393],"t":58,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.556],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[77.356],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.399],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[48.322],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.939],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[6.457],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-18.352],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.227],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-69.819],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-94.1],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-116.516],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-136.892],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-155.275],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-171.817],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-186.701],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-200.108],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-212.206],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-223.143],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-233.047],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-242.028],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-250.181],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-257.587],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-264.318],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-270.434],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-275.988],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-281.028],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-285.594],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-289.722],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-293.445],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-296.791],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-299.786],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-302.453],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-304.812],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-306.882],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-308.681],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-310.224],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-311.524],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-312.595],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.449],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.097],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.549],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.814],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.663],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.356],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.911],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.321],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-312.575],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-311.661],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-310.567],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-309.279],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-307.781],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-306.056],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-304.083],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-301.841],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-299.303],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-296.441],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-293.22],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-289.602],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-285.543],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-280.992],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-275.89],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-270.171],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-263.759],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-256.573],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-248.528],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-239.543],"t":165,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-229.563],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-218.577],"t":167,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-206.661],"t":168,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-194.011],"t":169,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-167.889],"t":171,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-155.239],"t":172,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-143.323],"t":173,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-132.337],"t":174,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-122.357],"t":175,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-113.372],"t":176,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-105.327],"t":177,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-98.141],"t":178,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-91.729],"t":179,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-86.01],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-80.908],"t":181,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.357],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-72.298],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-68.68],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-65.459],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-62.597],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-60.059],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-57.817],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.844],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-54.119],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.621],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.333],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-50.239],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.325],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.579],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.989],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.544],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.237],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.058],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.984],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.933],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.849],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.728],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.57],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.373],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.136],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.858],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.536],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.17],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.756],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.294],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-43.782],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-43.216],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-42.595],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-41.916],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-41.177],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-40.374],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-39.504],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-38.565],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-37.552],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-36.461],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-35.288],"t":418,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-34.03],"t":419,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-32.679],"t":420,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-31.232],"t":421,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-29.682],"t":422,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-28.023],"t":423,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-26.248],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-24.348],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-22.316],"t":426,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-20.141],"t":427,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-17.815],"t":428,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-15.326],"t":429,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-12.661],"t":430,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-9.808],"t":431,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-6.751],"t":432,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.477],"t":433,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.031],"t":434,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.789],"t":435,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[7.814],"t":436,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[12.12],"t":437,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.718],"t":438,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.613],"t":439,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.801],"t":440,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.264],"t":441,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[37.963],"t":442,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.839],"t":443,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[49.804],"t":444,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.753],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue Y Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":0,"k":0,"ix":1}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.42,"y":0},"t":24,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,23.5],[21.75,-21.75],[21.75,-66.5]],"c":false}]},{"i":{"x":0.65,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.35,"y":0},"t":53,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.35,"y":0},"t":70,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":140,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":197,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":227,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":244,"s":[{"i":[[0,0],[-20.373,0],[-4.174,-10]],"o":[[4.292,-10],[20.228,0],[0,0]],"v":[[-11.25,18.5],[22,-21.5],[54.75,18.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.42,"y":0},"t":291,"s":[{"i":[[0,0],[-17.75,0],[-10.841,0]],"o":[[11.833,0],[17.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":432,"s":[{"i":[[0,0],[0,17.75],[0,10.841]],"o":[[0,-11.833],[0,-17.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"t":482,"s":[{"i":[[0,0],[0,17.75],[0,10.841]],"o":[[0,-11.833],[0,-17.583],[0,0]],"v":[[21.75,44.5],[21.75,-21.75],[21.75,-88.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":111,"s":[27]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":130,"s":[58]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":197,"s":[58]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":218,"s":[40]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":247,"s":[40]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[54]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":368,"s":[54]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":388,"s":[40]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":390,"s":[40]},{"t":405,"s":[52]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":127,"s":[49.5]},{"i":{"x":[0.32],"y":[1]},"o":{"x":[0.82],"y":[0]},"t":197,"s":[49.5]},{"t":222,"s":[30],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":247,"s":[30]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[49.75]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":432,"s":[49.75]},{"t":482,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":127,"s":[50.5]},{"i":{"x":[0.32],"y":[1]},"o":{"x":[0.82],"y":[0]},"t":197,"s":[50.5]},{"t":222,"s":[70],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":247,"s":[70]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[50.25]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":432,"s":[50.25]},{"t":482,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-465,"s":[0]},{"t":-447,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":222,"s":[{"i":[[3.179,6.167],[0,-15.352],[-2.581,5.008]],"o":[[-2.881,-5.59],[0,13.869],[3.179,-6.167]],"v":[[-10.45,-10.166],[10.648,-0.036],[-10.45,9.228]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":237,"s":[{"i":[[3.179,8.221],[0,-20.465],[-2.581,6.675]],"o":[[-2.881,-7.451],[0,18.488],[3.179,-8.221]],"v":[[-25.45,-13.344],[-4.352,0.16],[-25.45,12.509]],"c":true}]},{"t":263,"s":[{"i":[[3.179,6.167],[0,-15.352],[-2.581,5.008]],"o":[[-2.881,-5.59],[0,13.869],[3.179,-6.167]],"v":[[-11.7,-10.166],[9.398,-0.036],[-11.7,9.228]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":1,"k":[{"t":212,"s":[0],"h":1},{"t":222,"s":[100],"h":1},{"t":247,"s":[0],"h":1}],"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":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":446,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"App 3 Matte","parent":12,"td":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":245,"s":[50]},{"i":{"x":[0.833],"y":[0.619]},"o":{"x":[0.167],"y":[0]},"t":329,"s":[100]},{"i":{"x":[0.82],"y":[0]},"o":{"x":[0.78],"y":[0]},"t":409,"s":[95]},{"t":434,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":9,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[220]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":393,"s":[296.8]},{"t":418,"s":[412]}],"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[220]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":393,"s":[488.8]},{"t":418,"s":[892]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[60]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":393,"s":[43.2]},{"t":418,"s":[18]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"k":[{"s":[60],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"k":[{"s":[60],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"k":[{"s":[60],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-33.114,0],[0,0],[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114]],"o":[[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114],[0,0],[-33.114,0],[0,0]],"v":[[-110,-50],[-50,-110],[50,-110],[110,-50],[110,50],[50,110],[-50,110],[-110,50]],"c":true}],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-32.906,0],[0,0],[0,-32.906],[0,0],[32.906,0],[0,0],[0,32.906]],"o":[[0,-32.906],[0,0],[32.906,0],[0,0],[0,32.906],[0,0],[-32.906,0],[0,0]],"v":[[-110.86,-53.387],[-51.236,-113.011],[51.236,-113.011],[110.86,-53.387],[110.86,53.387],[51.236,113.011],[-51.236,113.011],[-110.86,53.387]],"c":true}],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-32.237,0],[0,0],[0,-32.237],[0,0],[32.237,0],[0,0],[0,32.237]],"o":[[0,-32.237],[0,0],[32.237,0],[0,0],[0,32.237],[0,0],[-32.237,0],[0,0]],"v":[[-113.631,-64.296],[-55.219,-122.707],[55.219,-122.707],[113.631,-64.296],[113.631,64.296],[55.219,122.707],[-55.219,122.707],[-113.631,64.296]],"c":true}],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-30.947,0],[0,0],[0,-30.947],[0,0],[30.947,0],[0,0],[0,30.947]],"o":[[0,-30.947],[0,0],[30.947,0],[0,0],[0,30.947],[0,0],[-30.947,0],[0,0]],"v":[[-118.974,-85.335],[-62.9,-141.409],[62.9,-141.409],[118.974,-85.335],[118.974,85.335],[62.9,141.409],[-62.9,141.409],[-118.974,85.335]],"c":true}],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-28.64,0],[0,0],[0,-28.64],[0,0],[28.64,0],[0,0],[0,28.64]],"o":[[0,-28.64],[0,0],[28.64,0],[0,0],[0,28.64],[0,0],[-28.64,0],[0,0]],"v":[[-128.53,-122.961],[-76.636,-174.854],[76.636,-174.854],[128.53,-122.961],[128.53,122.961],[76.636,174.854],[-76.636,174.854],[-128.53,122.961]],"c":true}],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-23.842,0],[0,0],[0,-23.842],[0,0],[23.842,0],[0,0],[0,23.842]],"o":[[0,-23.842],[0,0],[23.842,0],[0,0],[0,23.842],[0,0],[-23.842,0],[0,0]],"v":[[-148.4,-201.2],[-105.2,-244.4],[105.2,-244.4],[148.4,-201.2],[148.4,201.2],[105.2,244.4],[-105.2,244.4],[-148.4,201.2]],"c":true}],"t":393,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-18.379,0],[0,0],[0,-18.379],[0,0],[18.379,0],[0,0],[0,18.379]],"o":[[0,-18.379],[0,0],[18.379,0],[0,0],[0,18.379],[0,0],[-18.379,0],[0,0]],"v":[[-171.027,-290.294],[-137.727,-323.595],[137.727,-323.595],[171.027,-290.294],[171.027,290.294],[137.727,323.595],[-137.727,323.595],[-171.027,290.294]],"c":true}],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-15.973,0],[0,0],[0,-15.973],[0,0],[15.973,0],[0,0],[0,15.973]],"o":[[0,-15.973],[0,0],[15.973,0],[0,0],[0,15.973],[0,0],[-15.973,0],[0,0]],"v":[[-180.988,-329.516],[-152.046,-358.459],[152.046,-358.459],[180.988,-329.516],[180.988,329.516],[152.046,358.459],[-152.046,358.459],[-180.988,329.516]],"c":true}],"t":395,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-14.579,0],[0,0],[0,-14.579],[0,0],[14.579,0],[0,0],[0,14.579]],"o":[[0,-14.579],[0,0],[14.579,0],[0,0],[0,14.579],[0,0],[-14.579,0],[0,0]],"v":[[-186.762,-352.25],[-160.345,-378.667],[160.345,-378.667],[186.762,-352.25],[186.762,352.25],[160.345,378.667],[-160.345,378.667],[-186.762,352.25]],"c":true}],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-13.632,0],[0,0],[0,-13.632],[0,0],[13.632,0],[0,0],[0,13.632]],"o":[[0,-13.632],[0,0],[13.632,0],[0,0],[0,13.632],[0,0],[-13.632,0],[0,0]],"v":[[-190.685,-367.697],[-165.985,-392.397],[165.985,-392.397],[190.685,-367.697],[190.685,367.697],[165.985,392.397],[-165.985,392.397],[-190.685,367.697]],"c":true}],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-12.934,0],[0,0],[0,-12.934],[0,0],[12.934,0],[0,0],[0,12.934]],"o":[[0,-12.934],[0,0],[12.934,0],[0,0],[0,12.934],[0,0],[-12.934,0],[0,0]],"v":[[-193.577,-379.084],[-170.142,-402.519],[170.142,-402.519],[193.577,-379.084],[193.577,379.084],[170.142,402.519],[-170.142,402.519],[-193.577,379.084]],"c":true}],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-12.394,0],[0,0],[0,-12.394],[0,0],[12.394,0],[0,0],[0,12.394]],"o":[[0,-12.394],[0,0],[12.394,0],[0,0],[0,12.394],[0,0],[-12.394,0],[0,0]],"v":[[-195.813,-387.89],[-173.357,-410.347],[173.357,-410.347],[195.813,-387.89],[195.813,387.89],[173.357,410.347],[-173.357,410.347],[-195.813,387.89]],"c":true}],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.963,0],[0,0],[0,-11.963],[0,0],[11.963,0],[0,0],[0,11.963]],"o":[[0,-11.963],[0,0],[11.963,0],[0,0],[0,11.963],[0,0],[-11.963,0],[0,0]],"v":[[-197.598,-394.916],[-175.922,-416.592],[175.922,-416.592],[197.598,-394.916],[197.598,394.916],[175.922,416.592],[-175.922,416.592],[-197.598,394.916]],"c":true}],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.612,0],[0,0],[0,-11.612],[0,0],[11.612,0],[0,0],[0,11.612]],"o":[[0,-11.612],[0,0],[11.612,0],[0,0],[0,11.612],[0,0],[-11.612,0],[0,0]],"v":[[-199.052,-400.641],[-178.012,-421.681],[178.012,-421.681],[199.052,-400.641],[199.052,400.641],[178.012,421.681],[-178.012,421.681],[-199.052,400.641]],"c":true}],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.322,0],[0,0],[0,-11.322],[0,0],[11.322,0],[0,0],[0,11.322]],"o":[[0,-11.322],[0,0],[11.322,0],[0,0],[0,11.322],[0,0],[-11.322,0],[0,0]],"v":[[-200.254,-405.375],[-179.74,-425.889],[179.74,-425.889],[200.254,-405.375],[200.254,405.375],[179.74,425.889],[-179.74,425.889],[-200.254,405.375]],"c":true}],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.079,0],[0,0],[0,-11.079],[0,0],[11.079,0],[0,0],[0,11.079]],"o":[[0,-11.079],[0,0],[11.079,0],[0,0],[0,11.079],[0,0],[-11.079,0],[0,0]],"v":[[-201.259,-409.332],[-181.185,-429.406],[181.185,-429.406],[201.259,-409.332],[201.259,409.332],[181.185,429.406],[-181.185,429.406],[-201.259,409.332]],"c":true}],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.875,0],[0,0],[0,-10.875],[0,0],[10.875,0],[0,0],[0,10.875]],"o":[[0,-10.875],[0,0],[10.875,0],[0,0],[0,10.875],[0,0],[-10.875,0],[0,0]],"v":[[-202.104,-412.661],[-182.4,-432.365],[182.4,-432.365],[202.104,-412.661],[202.104,412.661],[182.4,432.365],[-182.4,432.365],[-202.104,412.661]],"c":true}],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.702,0],[0,0],[0,-10.702],[0,0],[10.702,0],[0,0],[0,10.702]],"o":[[0,-10.702],[0,0],[10.702,0],[0,0],[0,10.702],[0,0],[-10.702,0],[0,0]],"v":[[-202.819,-415.475],[-183.427,-434.867],[183.427,-434.867],[202.819,-415.475],[202.819,415.475],[183.427,434.867],[-183.427,434.867],[-202.819,415.475]],"c":true}],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.556,0],[0,0],[0,-10.556],[0,0],[10.556,0],[0,0],[0,10.556]],"o":[[0,-10.556],[0,0],[10.556,0],[0,0],[0,10.556],[0,0],[-10.556,0],[0,0]],"v":[[-203.424,-417.859],[-184.298,-436.986],[184.298,-436.986],[203.424,-417.859],[203.424,417.859],[184.298,436.986],[-184.298,436.986],[-203.424,417.859]],"c":true}],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.432,0],[0,0],[0,-10.432],[0,0],[10.432,0],[0,0],[0,10.432]],"o":[[0,-10.432],[0,0],[10.432,0],[0,0],[0,10.432],[0,0],[-10.432,0],[0,0]],"v":[[-203.937,-419.879],[-185.035,-438.781],[185.035,-438.781],[203.937,-419.879],[203.937,419.879],[185.035,438.781],[-185.035,438.781],[-203.937,419.879]],"c":true}],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.327,0],[0,0],[0,-10.327],[0,0],[10.328,0],[0,0],[0,10.328]],"o":[[0,-10.327],[0,0],[10.328,0],[0,0],[0,10.328],[0,0],[-10.327,0],[0,0]],"v":[[-204.371,-421.587],[-185.659,-440.299],[185.659,-440.299],[204.371,-421.587],[204.371,421.587],[185.659,440.299],[-185.659,440.299],[-204.371,421.587]],"c":true}],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.239,0],[0,0],[0,-10.239],[0,0],[10.239,0],[0,0],[0,10.239]],"o":[[0,-10.239],[0,0],[10.239,0],[0,0],[0,10.239],[0,0],[-10.239,0],[0,0]],"v":[[-204.736,-423.025],[-186.184,-441.578],[186.184,-441.578],[204.736,-423.025],[204.736,423.025],[186.184,441.578],[-186.184,441.578],[-204.736,423.025]],"c":true}],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.166,0],[0,0],[0,-10.166],[0,0],[10.166,0],[0,0],[0,10.166]],"o":[[0,-10.166],[0,0],[10.166,0],[0,0],[0,10.166],[0,0],[-10.166,0],[0,0]],"v":[[-205.042,-424.227],[-186.623,-442.647],[186.623,-442.647],[205.042,-424.227],[205.042,424.227],[186.623,442.647],[-186.623,442.647],[-205.042,424.227]],"c":true}],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.105,0],[0,0],[0,-10.104],[0,0],[10.105,0],[0,0],[0,10.104]],"o":[[0,-10.104],[0,0],[10.105,0],[0,0],[0,10.104],[0,0],[-10.105,0],[0,0]],"v":[[-205.295,-425.223],[-186.986,-443.531],[186.986,-443.531],[205.295,-425.223],[205.295,425.223],[186.986,443.531],[-186.986,443.531],[-205.295,425.223]],"c":true}],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.055,0],[0,0],[0,-10.055],[0,0],[10.055,0],[0,0],[0,10.055]],"o":[[0,-10.055],[0,0],[10.055,0],[0,0],[0,10.055],[0,0],[-10.055,0],[0,0]],"v":[[-205.501,-426.035],[-187.283,-444.253],[187.283,-444.253],[205.501,-426.035],[205.501,426.035],[187.283,444.253],[-187.283,444.253],[-205.501,426.035]],"c":true}],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.015,0],[0,0],[0,-10.015],[0,0],[10.015,0],[0,0],[0,10.015]],"o":[[0,-10.015],[0,0],[10.015,0],[0,0],[0,10.015],[0,0],[-10.015,0],[0,0]],"v":[[-205.666,-426.684],[-187.519,-444.83],[187.519,-444.83],[205.666,-426.684],[205.666,426.684],[187.519,444.83],[-187.519,444.83],[-205.666,426.684]],"c":true}],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.984,0],[0,0],[0,-9.984],[0,0],[9.984,0],[0,0],[0,9.984]],"o":[[0,-9.984],[0,0],[9.984,0],[0,0],[0,9.984],[0,0],[-9.984,0],[0,0]],"v":[[-205.793,-427.186],[-187.703,-445.277],[187.703,-445.277],[205.793,-427.186],[205.793,427.186],[187.703,445.277],[-187.703,445.277],[-205.793,427.186]],"c":true}],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.961,0],[0,0],[0,-9.961],[0,0],[9.961,0],[0,0],[0,9.961]],"o":[[0,-9.961],[0,0],[9.961,0],[0,0],[0,9.961],[0,0],[-9.961,0],[0,0]],"v":[[-205.888,-427.557],[-187.838,-445.607],[187.838,-445.607],[205.888,-427.557],[205.888,427.557],[187.838,445.607],[-187.838,445.607],[-205.888,427.557]],"c":true}],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.946,0],[0,0],[0,-9.946],[0,0],[9.946,0],[0,0],[0,9.946]],"o":[[0,-9.946],[0,0],[9.946,0],[0,0],[0,9.946],[0,0],[-9.946,0],[0,0]],"v":[[-205.952,-427.809],[-187.93,-445.831],[187.93,-445.831],[205.952,-427.809],[205.952,427.809],[187.93,445.831],[-187.93,445.831],[-205.952,427.809]],"c":true}],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.937,0],[0,0],[0,-9.937],[0,0],[9.937,0],[0,0],[0,9.937]],"o":[[0,-9.937],[0,0],[9.937,0],[0,0],[0,9.937],[0,0],[-9.937,0],[0,0]],"v":[[-205.988,-427.954],[-187.983,-445.959],[187.983,-445.959],[205.988,-427.954],[205.988,427.954],[187.983,445.959],[-187.983,445.959],[-205.988,427.954]],"c":true}],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.494117647059,0.266666666667,0.678431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":245,"op":435,"st":-37,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Pill to Arc | Elevation 2","parent":3,"tt":1,"tp":5,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":405,"s":[15]},{"t":411,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":130,"s":[-83]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":197,"s":[-238]},{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":227,"s":[-238]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":237.666,"s":[-125.6]},{"t":291,"s":[43]}],"ix":3},"y":{"k":[{"s":[110.1],"t":53,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[109.629],"t":54,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[108.115],"t":55,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[105.387],"t":56,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[101.233],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[95.393],"t":58,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.556],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[77.356],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.399],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[48.322],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.939],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[6.457],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-18.352],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.227],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-69.819],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-94.1],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-116.516],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-136.892],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-155.275],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-171.817],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-186.701],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-200.108],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-212.206],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-223.143],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-233.047],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-242.028],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-250.181],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-257.587],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-264.318],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-270.434],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-275.988],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-281.028],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-285.594],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-289.722],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-293.445],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-296.791],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-299.786],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-302.453],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-304.812],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-306.882],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-308.681],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-310.224],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-311.524],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-312.595],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.449],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.097],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.549],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.814],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.663],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.356],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.911],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.321],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-312.575],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-311.661],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-310.567],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-309.279],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-307.781],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-306.056],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-304.083],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-301.841],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-299.303],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-296.441],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-293.22],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-289.602],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-285.543],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-280.992],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-275.89],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-270.171],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-263.759],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-256.573],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-248.528],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-239.543],"t":165,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-229.563],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-218.577],"t":167,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-206.661],"t":168,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-194.011],"t":169,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-167.889],"t":171,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-155.239],"t":172,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-143.323],"t":173,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-132.337],"t":174,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-122.357],"t":175,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-113.372],"t":176,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-105.327],"t":177,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-98.141],"t":178,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-91.729],"t":179,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-86.01],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-80.908],"t":181,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.357],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-72.298],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-68.68],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-65.459],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-62.597],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-60.059],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-57.817],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.844],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-54.119],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.621],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.333],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-50.239],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.325],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.579],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.989],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.544],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.237],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.058],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.984],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.933],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.849],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.728],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.57],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.373],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.136],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.858],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.536],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.17],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.756],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.294],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-43.782],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-43.216],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-42.595],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-41.916],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-41.177],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-40.374],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-39.504],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-38.565],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-37.552],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-36.461],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-35.288],"t":418,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-34.03],"t":419,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-32.679],"t":420,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-31.232],"t":421,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-29.682],"t":422,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-28.023],"t":423,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-26.248],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-24.348],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-22.316],"t":426,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-20.141],"t":427,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-17.815],"t":428,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-15.326],"t":429,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-12.661],"t":430,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-9.808],"t":431,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-6.751],"t":432,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.477],"t":433,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.031],"t":434,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.789],"t":435,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[7.814],"t":436,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[12.12],"t":437,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.718],"t":438,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.613],"t":439,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.801],"t":440,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.264],"t":441,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[37.963],"t":442,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.839],"t":443,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[49.804],"t":444,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.753],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},"a":{"a":0,"k":[0,-2,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue Y Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":0,"k":0,"ix":1}}]},{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":2,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":8,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":1,"ix":3}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.42,"y":0},"t":24,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,23.5],[21.75,-21.75],[21.75,-66.5]],"c":false}]},{"i":{"x":0.65,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.35,"y":0},"t":53,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.35,"y":0},"t":70,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":140,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":197,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":227,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":244,"s":[{"i":[[0,0],[-20.373,0],[-4.174,-10]],"o":[[4.292,-10],[20.228,0],[0,0]],"v":[[-11.25,18.5],[22,-21.5],[54.75,18.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.42,"y":0},"t":291,"s":[{"i":[[0,0],[-17.75,0],[-10.841,0]],"o":[[11.833,0],[17.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":432,"s":[{"i":[[0,0],[0,17.75],[0,10.841]],"o":[[0,-11.833],[0,-17.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"t":482,"s":[{"i":[[0,0],[0,17.75],[0,10.841]],"o":[[0,-11.833],[0,-17.583],[0,0]],"v":[[21.75,44.5],[21.75,-21.75],[21.75,-88.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":111,"s":[27]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":130,"s":[58]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":197,"s":[58]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":218,"s":[40]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":247,"s":[40]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[54]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":368,"s":[54]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":388,"s":[40]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":390,"s":[40]},{"t":405,"s":[52]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":127,"s":[49.5]},{"i":{"x":[0.32],"y":[1]},"o":{"x":[0.82],"y":[0]},"t":197,"s":[49.5]},{"t":222,"s":[30],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":247,"s":[30]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[49.5]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":432,"s":[49.5]},{"t":482,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":127,"s":[50.5]},{"i":{"x":[0.32],"y":[1]},"o":{"x":[0.82],"y":[0]},"t":197,"s":[50.5]},{"t":222,"s":[70],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":247,"s":[70]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[50.5]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":432,"s":[50.5]},{"t":482,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-465,"s":[0]},{"t":-447,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":222,"s":[{"i":[[3.179,6.167],[0,-15.352],[-2.581,5.008]],"o":[[-2.881,-5.59],[0,13.869],[3.179,-6.167]],"v":[[-10.45,-10.166],[10.648,-0.036],[-10.45,9.228]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":237,"s":[{"i":[[3.179,8.221],[0,-20.465],[-2.581,6.675]],"o":[[-2.881,-7.451],[0,18.488],[3.179,-8.221]],"v":[[-25.45,-13.344],[-4.352,0.16],[-25.45,12.509]],"c":true}]},{"t":263,"s":[{"i":[[3.179,6.167],[0,-15.352],[-2.581,5.008]],"o":[[-2.881,-5.59],[0,13.869],[3.179,-6.167]],"v":[[-11.7,-10.166],[9.398,-0.036],[-11.7,9.228]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":1,"k":[{"t":212,"s":[0],"h":1},{"t":222,"s":[100],"h":1},{"t":247,"s":[0],"h":1}],"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":2,"mn":"ADBE Vector Group","hd":false}],"ip":245,"op":435,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"App 1 Matte","parent":10,"td":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":19,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":31,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":49,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":71,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.52],"y":[0]},"t":227,"s":[100]},{"t":245,"s":[50]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.15,"y":1},"o":{"x":0.37,"y":0},"t":53,"s":[206,848,0],"to":[0,0,0],"ti":[0,0,0]},{"t":101,"s":[206,421,0]}],"ix":2,"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":2,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":63,"s":[412]},{"t":101,"s":[352],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":113,"s":[352]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[216]},{"t":148,"s":[220]}],"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":63,"s":[582]},{"t":101,"s":[442],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":113,"s":[442]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[216]},{"t":148,"s":[220]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":63,"s":[90]},{"t":101,"s":[80],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":113,"s":[80]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[64]},{"t":148,"s":[60]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"k":[{"s":[89.923],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"k":[{"s":[89.923],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"k":[{"s":[89.923],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.661,0],[0,0],[0,-49.661],[0,0],[49.661,0],[0,0],[0,49.661]],"o":[[0,-49.661],[0,0],[49.661,0],[0,0],[0,49.661],[0,0],[-49.661,0],[0,0]],"v":[[-205.946,89.982],[-115.964,0],[115.964,0],[205.946,89.982],[205.946,491.767],[115.964,581.749],[-115.964,581.749],[-205.946,491.767]],"c":true}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.629,0],[0,0],[0,-49.629],[0,0],[49.629,0],[0,0],[0,49.629]],"o":[[0,-49.629],[0,0],[49.629,0],[0,0],[0,49.629],[0,0],[-49.629,0],[0,0]],"v":[[-205.77,89.923],[-115.847,0],[115.847,0],[205.77,89.923],[205.77,491.004],[115.847,580.927],[-115.847,580.927],[-205.77,491.004]],"c":true}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.569,0],[0,0],[0,-49.569],[0,0],[49.569,0],[0,0],[0,49.569]],"o":[[0,-49.569],[0,0],[49.569,0],[0,0],[0,49.569],[0,0],[-49.569,0],[0,0]],"v":[[-205.445,89.815],[-115.63,0],[115.63,0],[205.445,89.815],[205.445,489.595],[115.63,579.41],[-115.63,579.41],[-205.445,489.595]],"c":true}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.475,0],[0,0],[0,-49.475],[0,0],[49.475,0],[0,0],[0,49.475]],"o":[[0,-49.475],[0,0],[49.475,0],[0,0],[0,49.475],[0,0],[-49.475,0],[0,0]],"v":[[-204.936,89.645],[-115.291,0],[115.291,0],[204.936,89.645],[204.936,487.391],[115.291,577.037],[-115.291,577.037],[-204.936,487.391]],"c":true}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.34,0],[0,0],[0,-49.34],[0,0],[49.34,0],[0,0],[0,49.34]],"o":[[0,-49.34],[0,0],[49.34,0],[0,0],[0,49.34],[0,0],[-49.34,0],[0,0]],"v":[[-204.201,89.4],[-114.8,0],[114.8,0],[204.201,89.4],[204.201,484.203],[114.8,573.603],[-114.8,573.603],[-204.201,484.203]],"c":true}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.153,0],[0,0],[0,-49.153],[0,0],[49.153,0],[0,0],[0,49.153]],"o":[[0,-49.153],[0,0],[49.153,0],[0,0],[0,49.153],[0,0],[-49.153,0],[0,0]],"v":[[-203.185,89.062],[-114.123,0],[114.123,0],[203.185,89.062],[203.185,479.8],[114.123,568.862],[-114.123,568.862],[-203.185,479.8]],"c":true}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.905,0],[0,0],[0,-48.905],[0,0],[48.905,0],[0,0],[0,48.905]],"o":[[0,-48.905],[0,0],[48.905,0],[0,0],[0,48.905],[0,0],[-48.905,0],[0,0]],"v":[[-201.834,88.611],[-113.223,0],[113.223,0],[201.834,88.611],[201.834,473.946],[113.223,562.558],[-113.223,562.558],[-201.834,473.946]],"c":true}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.588,0],[0,0],[0,-48.588],[0,0],[48.588,0],[0,0],[0,48.588]],"o":[[0,-48.588],[0,0],[48.588,0],[0,0],[0,48.588],[0,0],[-48.588,0],[0,0]],"v":[[-200.114,88.038],[-112.076,0],[112.076,0],[200.114,88.038],[200.114,466.493],[112.076,554.531],[-112.076,554.531],[-200.114,466.493]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.209,0],[0,0],[0,-48.209],[0,0],[48.209,0],[0,0],[0,48.209]],"o":[[0,-48.209],[0,0],[48.209,0],[0,0],[0,48.209],[0,0],[-48.209,0],[0,0]],"v":[[-198.054,87.351],[-110.703,0],[110.703,0],[198.054,87.351],[198.054,457.566],[110.703,544.918],[-110.703,544.918],[-198.054,457.566]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-47.791,0],[0,0],[0,-47.791],[0,0],[47.791,0],[0,0],[0,47.791]],"o":[[0,-47.791],[0,0],[47.791,0],[0,0],[0,47.791],[0,0],[-47.791,0],[0,0]],"v":[[-195.782,86.594],[-109.188,0],[109.188,0],[195.782,86.594],[195.782,447.721],[109.188,534.315],[-109.188,534.315],[-195.782,447.721]],"c":true}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-47.369,0],[0,0],[0,-47.369],[0,0],[47.369,0],[0,0],[0,47.369]],"o":[[0,-47.369],[0,0],[47.369,0],[0,0],[0,47.369],[0,0],[-47.369,0],[0,0]],"v":[[-193.487,85.829],[-107.658,0],[107.658,0],[193.487,85.829],[193.487,437.775],[107.658,523.604],[-107.658,523.604],[-193.487,437.775]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.972,0],[0,0],[0,-46.972],[0,0],[46.972,0],[0,0],[0,46.972]],"o":[[0,-46.972],[0,0],[46.972,0],[0,0],[0,46.972],[0,0],[-46.972,0],[0,0]],"v":[[-191.327,85.109],[-106.218,0],[106.218,0],[191.327,85.109],[191.327,428.416],[106.218,513.525],[-106.218,513.525],[-191.327,428.416]],"c":true}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.614,0],[0,0],[0,-46.614],[0,0],[46.614,0],[0,0],[0,46.614]],"o":[[0,-46.614],[0,0],[46.614,0],[0,0],[0,46.614],[0,0],[-46.614,0],[0,0]],"v":[[-189.38,84.46],[-104.92,0],[104.92,0],[189.38,84.46],[189.38,419.982],[104.92,504.442],[-104.92,504.442],[-189.38,419.982]],"c":true}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.298,0],[0,0],[0,-46.298],[0,0],[46.298,0],[0,0],[0,46.298]],"o":[[0,-46.298],[0,0],[46.298,0],[0,0],[0,46.298],[0,0],[-46.298,0],[0,0]],"v":[[-187.663,83.888],[-103.775,0],[103.775,0],[187.663,83.888],[187.663,412.539],[103.775,496.426],[-103.775,496.426],[-187.663,412.539]],"c":true}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.021,0],[0,0],[0,-46.021],[0,0],[46.021,0],[0,0],[0,46.021]],"o":[[0,-46.021],[0,0],[46.021,0],[0,0],[0,46.021],[0,0],[-46.021,0],[0,0]],"v":[[-186.158,83.386],[-102.772,0],[102.772,0],[186.158,83.386],[186.158,406.02],[102.772,489.406],[-102.772,489.406],[-186.158,406.02]],"c":true}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.779,0],[0,0],[0,-45.779],[0,0],[45.779,0],[0,0],[0,45.779]],"o":[[0,-45.779],[0,0],[45.779,0],[0,0],[0,45.779],[0,0],[-45.779,0],[0,0]],"v":[[-184.842,82.947],[-101.895,0],[101.895,0],[184.842,82.947],[184.842,400.315],[101.895,483.262],[-101.895,483.262],[-184.842,400.315]],"c":true}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.566,0],[0,0],[0,-45.566],[0,0],[45.566,0],[0,0],[0,45.566]],"o":[[0,-45.566],[0,0],[45.566,0],[0,0],[0,45.566],[0,0],[-45.566,0],[0,0]],"v":[[-183.688,82.563],[-101.125,0],[101.125,0],[183.688,82.563],[183.688,395.313],[101.125,477.875],[-101.125,477.875],[-183.688,395.313]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.38,0],[0,0],[0,-45.38],[0,0],[45.38,0],[0,0],[0,45.38]],"o":[[0,-45.38],[0,0],[45.38,0],[0,0],[0,45.38],[0,0],[-45.38,0],[0,0]],"v":[[-182.673,82.224],[-100.448,0],[100.448,0],[182.673,82.224],[182.673,390.915],[100.448,473.139],[-100.448,473.139],[-182.673,390.915]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.215,0],[0,0],[0,-45.215],[0,0],[45.215,0],[0,0],[0,45.215]],"o":[[0,-45.215],[0,0],[45.215,0],[0,0],[0,45.215],[0,0],[-45.215,0],[0,0]],"v":[[-181.778,81.926],[-99.852,0],[99.852,0],[181.778,81.926],[181.778,387.037],[99.852,468.963],[-99.852,468.963],[-181.778,387.037]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.069,0],[0,0],[0,-45.069],[0,0],[45.069,0],[0,0],[0,45.069]],"o":[[0,-45.069],[0,0],[45.069,0],[0,0],[0,45.069],[0,0],[-45.069,0],[0,0]],"v":[[-180.987,81.662],[-99.325,0],[99.325,0],[180.987,81.662],[180.987,383.61],[99.325,465.273],[-99.325,465.273],[-180.987,383.61]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.941,0],[0,0],[0,-44.941],[0,0],[44.941,0],[0,0],[0,44.941]],"o":[[0,-44.941],[0,0],[44.941,0],[0,0],[0,44.941],[0,0],[-44.941,0],[0,0]],"v":[[-180.287,81.429],[-98.858,0],[98.858,0],[180.287,81.429],[180.287,380.577],[98.858,462.006],[-98.858,462.006],[-180.287,380.577]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.827,0],[0,0],[0,-44.827],[0,0],[44.827,0],[0,0],[0,44.827]],"o":[[0,-44.827],[0,0],[44.827,0],[0,0],[0,44.827],[0,0],[-44.827,0],[0,0]],"v":[[-179.667,81.222],[-98.445,0],[98.445,0],[179.667,81.222],[179.667,377.889],[98.445,459.112],[-98.445,459.112],[-179.667,377.889]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.725,0],[0,0],[0,-44.725],[0,0],[44.725,0],[0,0],[0,44.725]],"o":[[0,-44.725],[0,0],[44.725,0],[0,0],[0,44.725],[0,0],[-44.725,0],[0,0]],"v":[[-179.117,81.039],[-98.078,0],[98.078,0],[179.117,81.039],[179.117,375.508],[98.078,456.547],[-98.078,456.547],[-179.117,375.508]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.636,0],[0,0],[0,-44.636],[0,0],[44.636,0],[0,0],[0,44.636]],"o":[[0,-44.636],[0,0],[44.636,0],[0,0],[0,44.636],[0,0],[-44.636,0],[0,0]],"v":[[-178.631,80.877],[-97.754,0],[97.754,0],[178.631,80.877],[178.631,373.399],[97.754,454.276],[-97.754,454.276],[-178.631,373.399]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.557,0],[0,0],[0,-44.557],[0,0],[44.557,0],[0,0],[0,44.557]],"o":[[0,-44.557],[0,0],[44.557,0],[0,0],[0,44.557],[0,0],[-44.557,0],[0,0]],"v":[[-178.2,80.733],[-97.467,0],[97.467,0],[178.2,80.733],[178.2,371.535],[97.467,452.269],[-97.467,452.269],[-178.2,371.535]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.487,0],[0,0],[0,-44.487],[0,0],[44.487,0],[0,0],[0,44.487]],"o":[[0,-44.487],[0,0],[44.487,0],[0,0],[0,44.487],[0,0],[-44.487,0],[0,0]],"v":[[-177.821,80.607],[-97.214,0],[97.214,0],[177.821,80.607],[177.821,369.892],[97.214,450.499],[-97.214,450.499],[-177.821,369.892]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.426,0],[0,0],[0,-44.426],[0,0],[44.426,0],[0,0],[0,44.426]],"o":[[0,-44.426],[0,0],[44.426,0],[0,0],[0,44.426],[0,0],[-44.426,0],[0,0]],"v":[[-177.488,80.496],[-96.992,0],[96.992,0],[177.488,80.496],[177.488,368.45],[96.992,448.946],[-96.992,448.946],[-177.488,368.45]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.372,0],[0,0],[0,-44.372],[0,0],[44.372,0],[0,0],[0,44.372]],"o":[[0,-44.372],[0,0],[44.372,0],[0,0],[0,44.372],[0,0],[-44.372,0],[0,0]],"v":[[-177.198,80.399],[-96.798,0],[96.798,0],[177.198,80.399],[177.198,367.19],[96.798,447.589],[-96.798,447.589],[-177.198,367.19]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.326,0],[0,0],[0,-44.326],[0,0],[44.326,0],[0,0],[0,44.326]],"o":[[0,-44.326],[0,0],[44.326,0],[0,0],[0,44.326],[0,0],[-44.326,0],[0,0]],"v":[[-176.945,80.315],[-96.63,0],[96.63,0],[176.945,80.315],[176.945,366.097],[96.63,446.412],[-96.63,446.412],[-176.945,366.097]],"c":true}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.286,0],[0,0],[0,-44.286],[0,0],[44.286,0],[0,0],[0,44.286]],"o":[[0,-44.286],[0,0],[44.286,0],[0,0],[0,44.286],[0,0],[-44.286,0],[0,0]],"v":[[-176.729,80.243],[-96.486,0],[96.486,0],[176.729,80.243],[176.729,365.158],[96.486,445.4],[-96.486,445.4],[-176.729,365.158]],"c":true}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.252,0],[0,0],[0,-44.252],[0,0],[44.252,0],[0,0],[0,44.252]],"o":[[0,-44.252],[0,0],[44.252,0],[0,0],[0,44.252],[0,0],[-44.252,0],[0,0]],"v":[[-176.545,80.182],[-96.363,0],[96.363,0],[176.545,80.182],[176.545,364.36],[96.363,444.542],[-96.363,444.542],[-176.545,364.36]],"c":true}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.224,0],[0,0],[0,-44.224],[0,0],[44.224,0],[0,0],[0,44.224]],"o":[[0,-44.224],[0,0],[44.224,0],[0,0],[0,44.224],[0,0],[-44.224,0],[0,0]],"v":[[-176.391,80.13],[-96.261,0],[96.261,0],[176.391,80.13],[176.391,363.694],[96.261,443.825],[-96.261,443.825],[-176.391,363.694]],"c":true}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.201,0],[0,0],[0,-44.201],[0,0],[44.201,0],[0,0],[0,44.201]],"o":[[0,-44.201],[0,0],[44.201,0],[0,0],[0,44.201],[0,0],[-44.201,0],[0,0]],"v":[[-176.266,80.089],[-96.177,0],[96.177,0],[176.266,80.089],[176.266,363.151],[96.177,443.239],[-96.177,443.239],[-176.266,363.151]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.183,0],[0,0],[0,-44.183],[0,0],[44.183,0],[0,0],[0,44.183]],"o":[[0,-44.183],[0,0],[44.183,0],[0,0],[0,44.183],[0,0],[-44.183,0],[0,0]],"v":[[-176.166,80.055],[-96.111,0],[96.111,0],[176.166,80.055],[176.166,362.721],[96.111,442.776],[-96.111,442.776],[-176.166,362.721]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.169,0],[0,0],[0,-44.169],[0,0],[44.169,0],[0,0],[0,44.169]],"o":[[0,-44.169],[0,0],[44.169,0],[0,0],[0,44.169],[0,0],[-44.169,0],[0,0]],"v":[[-176.092,80.031],[-96.061,0],[96.061,0],[176.092,80.031],[176.092,362.397],[96.061,442.427],[-96.061,442.427],[-176.092,362.397]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.154,0],[0,0],[0,-44.154],[0,0],[44.154,0],[0,0],[0,44.154]],"o":[[0,-44.154],[0,0],[44.154,0],[0,0],[0,44.154],[0,0],[-44.154,0],[0,0]],"v":[[-176.01,80.003],[-96.007,0],[96.007,0],[176.01,80.003],[176.01,362.042],[96.007,442.046],[-96.007,442.046],[-176.01,362.042]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.152,0],[0,0],[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152]],"o":[[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152],[0,0],[-44.152,0],[0,0]],"v":[[-176,80],[-96,0],[96,0],[176,80],[176,362],[96,442],[-96,442],[-176,362]],"c":true}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.127,0],[0,0],[0,-44.127],[0,0],[44.127,0],[0,0],[0,44.127]],"o":[[0,-44.127],[0,0],[44.127,0],[0,0],[0,44.127],[0,0],[-44.127,0],[0,0]],"v":[[-175.806,79.954],[-95.852,0],[95.852,0],[175.806,79.954],[175.806,361.402],[95.852,441.356],[-95.852,441.356],[-175.806,361.402]],"c":true}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.042,0],[0,0],[0,-44.042],[0,0],[44.042,0],[0,0],[0,44.042]],"o":[[0,-44.042],[0,0],[44.042,0],[0,0],[0,44.042],[0,0],[-44.042,0],[0,0]],"v":[[-175.151,79.8],[-95.351,0],[95.351,0],[175.151,79.8],[175.151,359.379],[95.351,439.179],[-95.351,439.179],[-175.151,359.379]],"c":true}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.877,0],[0,0],[0,-43.877],[0,0],[43.877,0],[0,0],[0,43.877]],"o":[[0,-43.877],[0,0],[43.877,0],[0,0],[0,43.877],[0,0],[-43.877,0],[0,0]],"v":[[-173.883,79.502],[-94.381,0],[94.381,0],[173.883,79.502],[173.883,355.463],[94.381,434.965],[-94.381,434.965],[-173.883,355.463]],"c":true}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.602,0],[0,0],[0,-43.602],[0,0],[43.602,0],[0,0],[0,43.602]],"o":[[0,-43.602],[0,0],[43.602,0],[0,0],[0,43.602],[0,0],[-43.602,0],[0,0]],"v":[[-171.765,79.003],[-92.761,0],[92.761,0],[171.765,79.003],[171.765,348.92],[92.761,427.924],[-92.761,427.924],[-171.765,348.92]],"c":true}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.166,0],[0,0],[0,-43.166],[0,0],[43.166,0],[0,0],[0,43.166]],"o":[[0,-43.166],[0,0],[43.166,0],[0,0],[0,43.166],[0,0],[-43.166,0],[0,0]],"v":[[-168.404,78.213],[-90.191,0],[90.191,0],[168.404,78.213],[168.404,338.542],[90.191,416.754],[-90.191,416.754],[-168.404,338.542]],"c":true}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-42.482,0],[0,0],[0,-42.482],[0,0],[42.482,0],[0,0],[0,42.482]],"o":[[0,-42.482],[0,0],[42.482,0],[0,0],[0,42.482],[0,0],[-42.482,0],[0,0]],"v":[[-163.142,76.975],[-86.168,0],[86.168,0],[163.142,76.975],[163.142,322.292],[86.168,399.267],[-86.168,399.267],[-163.142,322.292]],"c":true}],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-41.435,0],[0,0],[0,-41.435],[0,0],[41.435,0],[0,0],[0,41.435]],"o":[[0,-41.435],[0,0],[41.435,0],[0,0],[0,41.435],[0,0],[-41.435,0],[0,0]],"v":[[-155.078,75.077],[-80.001,0],[80.001,0],[155.078,75.077],[155.078,297.387],[80.001,372.464],[-80.001,372.464],[-155.078,297.387]],"c":true}],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-40.054,0],[0,0],[0,-40.054],[0,0],[40.054,0],[0,0],[0,40.054]],"o":[[0,-40.054],[0,0],[40.054,0],[0,0],[0,40.054],[0,0],[-40.054,0],[0,0]],"v":[[-144.442,72.575],[-71.868,0],[71.868,0],[144.442,72.575],[144.442,264.543],[71.868,337.118],[-71.868,337.118],[-144.442,264.543]],"c":true}],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-38.75,0],[0,0],[0,-38.75],[0,0],[38.75,0],[0,0],[0,38.75]],"o":[[0,-38.75],[0,0],[38.75,0],[0,0],[0,38.75],[0,0],[-38.75,0],[0,0]],"v":[[-134.399,70.212],[-64.188,0],[64.188,0],[134.399,70.212],[134.399,233.528],[64.188,303.739],[-64.188,303.739],[-134.399,233.528]],"c":true}],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-37.775,0],[0,0],[0,-37.775],[0,0],[37.775,0],[0,0],[0,37.775]],"o":[[0,-37.775],[0,0],[37.775,0],[0,0],[0,37.775],[0,0],[-37.775,0],[0,0]],"v":[[-126.895,68.446],[-58.449,0],[58.449,0],[126.895,68.446],[126.895,210.354],[58.449,278.8],[-58.449,278.8],[-126.895,210.354]],"c":true}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-37.077,0],[0,0],[0,-37.077],[0,0],[37.077,0],[0,0],[0,37.077]],"o":[[0,-37.077],[0,0],[37.077,0],[0,0],[0,37.077],[0,0],[-37.077,0],[0,0]],"v":[[-121.522,67.182],[-54.34,0],[54.34,0],[121.522,67.182],[121.522,193.758],[54.34,260.939],[-54.34,260.939],[-121.522,193.758]],"c":true}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-36.569,0],[0,0],[0,-36.569],[0,0],[36.569,0],[0,0],[0,36.569]],"o":[[0,-36.569],[0,0],[36.569,0],[0,0],[0,36.569],[0,0],[-36.569,0],[0,0]],"v":[[-117.609,66.261],[-51.348,0],[51.348,0],[117.609,66.261],[117.609,181.674],[51.348,247.935],[-51.348,247.935],[-117.609,181.674]],"c":true}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-36.193,0],[0,0],[0,-36.193],[0,0],[36.193,0],[0,0],[0,36.193]],"o":[[0,-36.193],[0,0],[36.193,0],[0,0],[0,36.193],[0,0],[-36.193,0],[0,0]],"v":[[-114.709,65.579],[-49.131,0],[49.131,0],[114.709,65.579],[114.709,172.72],[49.131,238.299],[-49.131,238.299],[-114.709,172.72]],"c":true}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.912,0],[0,0],[0,-35.912],[0,0],[35.912,0],[0,0],[0,35.912]],"o":[[0,-35.912],[0,0],[35.912,0],[0,0],[0,35.912],[0,0],[-35.912,0],[0,0]],"v":[[-112.544,65.069],[-47.475,0],[47.475,0],[112.544,65.069],[112.544,166.034],[47.475,231.104],[-47.475,231.104],[-112.544,166.034]],"c":true}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.703,0],[0,0],[0,-35.703],[0,0],[35.703,0],[0,0],[0,35.703]],"o":[[0,-35.703],[0,0],[35.703,0],[0,0],[0,35.703],[0,0],[-35.703,0],[0,0]],"v":[[-110.934,64.69],[-46.244,0],[46.244,0],[110.934,64.69],[110.934,161.062],[46.244,225.752],[-46.244,225.752],[-110.934,161.062]],"c":true}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.55,0],[0,0],[0,-35.55],[0,0],[35.55,0],[0,0],[0,35.55]],"o":[[0,-35.55],[0,0],[35.55,0],[0,0],[0,35.55],[0,0],[-35.55,0],[0,0]],"v":[[-109.758,64.414],[-45.344,0],[45.344,0],[109.758,64.414],[109.758,157.429],[45.344,221.843],[-45.344,221.843],[-109.758,157.429]],"c":true}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.443,0],[0,0],[0,-35.443],[0,0],[35.443,0],[0,0],[0,35.443]],"o":[[0,-35.443],[0,0],[35.443,0],[0,0],[0,35.443],[0,0],[-35.443,0],[0,0]],"v":[[-108.931,64.219],[-44.712,0],[44.712,0],[108.931,64.219],[108.931,154.875],[44.712,219.094],[-44.712,219.094],[-108.931,154.875]],"c":true}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.372,0],[0,0],[0,-35.372],[0,0],[35.372,0],[0,0],[0,35.372]],"o":[[0,-35.372],[0,0],[35.372,0],[0,0],[0,35.372],[0,0],[-35.372,0],[0,0]],"v":[[-108.391,64.092],[-44.299,0],[44.299,0],[108.391,64.092],[108.391,153.209],[44.299,217.301],[-44.299,217.301],[-108.391,153.209]],"c":true}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.334,0],[0,0],[0,-35.334],[0,0],[35.334,0],[0,0],[0,35.334]],"o":[[0,-35.334],[0,0],[35.334,0],[0,0],[0,35.334],[0,0],[-35.334,0],[0,0]],"v":[[-108.093,64.022],[-44.071,0],[44.071,0],[108.093,64.022],[108.093,152.287],[44.071,216.309],[-44.071,216.309],[-108.093,152.287]],"c":true}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.322,0],[0,0],[0,-35.322],[0,0],[35.322,0],[0,0],[0,35.322]],"o":[[0,-35.322],[0,0],[35.322,0],[0,0],[0,35.322],[0,0],[-35.322,0],[0,0]],"v":[[-108,64],[-44,0],[44,0],[108,64],[108,152],[44,216],[-44,216],[-108,152]],"c":true}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.293,0],[0,0],[0,-35.293],[0,0],[35.293,0],[0,0],[0,35.293]],"o":[[0,-35.293],[0,0],[35.293,0],[0,0],[0,35.293],[0,0],[-35.293,0],[0,0]],"v":[[-108.025,63.949],[-44.076,0],[44.076,0],[108.025,63.949],[108.025,152.102],[44.076,216.051],[-44.076,216.051],[-108.025,152.102]],"c":true}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.214,0],[0,0],[0,-35.214],[0,0],[35.214,0],[0,0],[0,35.214]],"o":[[0,-35.214],[0,0],[35.214,0],[0,0],[0,35.214],[0,0],[-35.214,0],[0,0]],"v":[[-108.097,63.806],[-44.292,0],[44.292,0],[108.097,63.806],[108.097,152.389],[44.292,216.194],[-44.292,216.194],[-108.097,152.389]],"c":true}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.092,0],[0,0],[0,-35.092],[0,0],[35.092,0],[0,0],[0,35.092]],"o":[[0,-35.092],[0,0],[35.092,0],[0,0],[0,35.092],[0,0],[-35.092,0],[0,0]],"v":[[-108.208,63.584],[-44.624,0],[44.624,0],[108.208,63.584],[108.208,152.832],[44.624,216.416],[-44.624,216.416],[-108.208,152.832]],"c":true}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.934,0],[0,0],[0,-34.934],[0,0],[34.934,0],[0,0],[0,34.934]],"o":[[0,-34.934],[0,0],[34.934,0],[0,0],[0,34.934],[0,0],[-34.934,0],[0,0]],"v":[[-108.351,63.298],[-45.052,0],[45.052,0],[108.351,63.298],[108.351,153.403],[45.052,216.702],[-45.052,216.702],[-108.351,153.403]],"c":true}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.749,0],[0,0],[0,-34.749],[0,0],[34.749,0],[0,0],[0,34.749]],"o":[[0,-34.749],[0,0],[34.749,0],[0,0],[0,34.749],[0,0],[-34.749,0],[0,0]],"v":[[-108.519,62.963],[-45.556,0],[45.556,0],[108.519,62.963],[108.519,154.074],[45.556,217.037],[-45.556,217.037],[-108.519,154.074]],"c":true}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.545,0],[0,0],[0,-34.545],[0,0],[34.545,0],[0,0],[0,34.545]],"o":[[0,-34.545],[0,0],[34.545,0],[0,0],[0,34.545],[0,0],[-34.545,0],[0,0]],"v":[[-108.704,62.592],[-46.112,0],[46.112,0],[108.704,62.592],[108.704,154.816],[46.112,217.408],[-46.112,217.408],[-108.704,154.816]],"c":true}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.328,0],[0,0],[0,-34.328],[0,0],[34.328,0],[0,0],[0,34.328]],"o":[[0,-34.328],[0,0],[34.328,0],[0,0],[0,34.328],[0,0],[-34.328,0],[0,0]],"v":[[-108.9,62.2],[-46.7,0],[46.7,0],[108.9,62.2],[108.9,155.601],[46.7,217.8],[-46.7,217.8],[-108.9,155.601]],"c":true}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.108,0],[0,0],[0,-34.108],[0,0],[34.108,0],[0,0],[0,34.108]],"o":[[0,-34.108],[0,0],[34.108,0],[0,0],[0,34.108],[0,0],[-34.108,0],[0,0]],"v":[[-109.1,61.8],[-47.3,0],[47.3,0],[109.1,61.8],[109.1,156.399],[47.3,218.2],[-47.3,218.2],[-109.1,156.399]],"c":true}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.891,0],[0,0],[0,-33.891],[0,0],[33.891,0],[0,0],[0,33.891]],"o":[[0,-33.891],[0,0],[33.891,0],[0,0],[0,33.891],[0,0],[-33.891,0],[0,0]],"v":[[-109.296,61.408],[-47.888,0],[47.888,0],[109.296,61.408],[109.296,157.184],[47.888,218.592],[-47.888,218.592],[-109.296,157.184]],"c":true}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.686,0],[0,0],[0,-33.686],[0,0],[33.686,0],[0,0],[0,33.686]],"o":[[0,-33.686],[0,0],[33.686,0],[0,0],[0,33.686],[0,0],[-33.686,0],[0,0]],"v":[[-109.481,61.037],[-48.444,0],[48.444,0],[109.481,61.037],[109.481,157.926],[48.444,218.963],[-48.444,218.963],[-109.481,157.926]],"c":true}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.501,0],[0,0],[0,-33.501],[0,0],[33.501,0],[0,0],[0,33.501]],"o":[[0,-33.501],[0,0],[33.501,0],[0,0],[0,33.501],[0,0],[-33.501,0],[0,0]],"v":[[-109.649,60.702],[-48.948,0],[48.948,0],[109.649,60.702],[109.649,158.597],[48.948,219.298],[-48.948,219.298],[-109.649,158.597]],"c":true}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.344,0],[0,0],[0,-33.344],[0,0],[33.344,0],[0,0],[0,33.344]],"o":[[0,-33.344],[0,0],[33.344,0],[0,0],[0,33.344],[0,0],[-33.344,0],[0,0]],"v":[[-109.792,60.416],[-49.376,0],[49.376,0],[109.792,60.416],[109.792,159.168],[49.376,219.584],[-49.376,219.584],[-109.792,159.168]],"c":true}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.221,0],[0,0],[0,-33.221],[0,0],[33.221,0],[0,0],[0,33.221]],"o":[[0,-33.221],[0,0],[33.221,0],[0,0],[0,33.221],[0,0],[-33.221,0],[0,0]],"v":[[-109.903,60.194],[-49.708,0],[49.708,0],[109.903,60.194],[109.903,159.611],[49.708,219.806],[-49.708,219.806],[-109.903,159.611]],"c":true}],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.142,0],[0,0],[0,-33.142],[0,0],[33.142,0],[0,0],[0,33.142]],"o":[[0,-33.142],[0,0],[33.142,0],[0,0],[0,33.142],[0,0],[-33.142,0],[0,0]],"v":[[-109.975,60.051],[-49.924,0],[49.924,0],[109.975,60.051],[109.975,159.898],[49.924,219.949],[-49.924,219.949],[-109.975,159.898]],"c":true}],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.114,0],[0,0],[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114]],"o":[[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114],[0,0],[-33.114,0],[0,0]],"v":[[-110,60],[-50,0],[50,0],[110,60],[110,160],[50,220],[-50,220],[-110,160]],"c":true}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.494117647059,0.266666666667,0.678431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":198,"st":-57,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Pill to Arc | Elevation 1","parent":3,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":0,"k":15,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":130,"s":[-83]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":197,"s":[-238]},{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":227,"s":[-238]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":237.666,"s":[-125.6]},{"t":291,"s":[43]}],"ix":3},"y":{"k":[{"s":[110.1],"t":53,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[109.629],"t":54,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[108.115],"t":55,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[105.387],"t":56,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[101.233],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[95.393],"t":58,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.556],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[77.356],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.399],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[48.322],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.939],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[6.457],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-18.352],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.227],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-69.819],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-94.1],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-116.516],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-136.892],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-155.275],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-171.817],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-186.701],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-200.108],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-212.206],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-223.143],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-233.047],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-242.028],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-250.181],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-257.587],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-264.318],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-270.434],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-275.988],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-281.028],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-285.594],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-289.722],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-293.445],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-296.791],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-299.786],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-302.453],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-304.812],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-306.882],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-308.681],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-310.224],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-311.524],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-312.595],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.449],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.097],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.549],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.814],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.663],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.356],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.911],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.321],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-312.575],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-311.661],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-310.567],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-309.279],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-307.781],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-306.056],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-304.083],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-301.841],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-299.303],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-296.441],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-293.22],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-289.602],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-285.543],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-280.992],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-275.89],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-270.171],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-263.759],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-256.573],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-248.528],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-239.543],"t":165,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-229.563],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-218.577],"t":167,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-206.661],"t":168,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-194.011],"t":169,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-167.889],"t":171,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-155.239],"t":172,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-143.323],"t":173,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-132.337],"t":174,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-122.357],"t":175,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-113.372],"t":176,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-105.327],"t":177,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-98.141],"t":178,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-91.729],"t":179,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-86.01],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-80.908],"t":181,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.357],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-72.298],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-68.68],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-65.459],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-62.597],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-60.059],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-57.817],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.844],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-54.119],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.621],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.333],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-50.239],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.325],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.579],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.989],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.544],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.237],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.058],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.984],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.933],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.849],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.728],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.57],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.373],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.136],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.858],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.536],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.17],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.756],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.294],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-43.782],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-43.216],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-42.595],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-41.916],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-41.177],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-40.374],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-39.504],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-38.565],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-37.552],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-36.461],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-35.288],"t":418,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-34.03],"t":419,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-32.679],"t":420,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-31.232],"t":421,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-29.682],"t":422,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-28.023],"t":423,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-26.248],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-24.348],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-22.316],"t":426,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-20.141],"t":427,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-17.815],"t":428,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-15.326],"t":429,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-12.661],"t":430,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-9.808],"t":431,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-6.751],"t":432,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.477],"t":433,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.031],"t":434,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.789],"t":435,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[7.814],"t":436,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[12.12],"t":437,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.718],"t":438,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.613],"t":439,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.801],"t":440,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.264],"t":441,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[37.963],"t":442,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.839],"t":443,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[49.804],"t":444,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.753],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},"a":{"a":0,"k":[0,-2,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue Y Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":0,"k":0,"ix":1}}]},{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":2,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":8,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":1,"ix":3}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.42,"y":0},"t":24,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,23.5],[21.75,-21.75],[21.75,-66.5]],"c":false}]},{"i":{"x":0.65,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.35,"y":0},"t":53,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.35,"y":0},"t":70,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":140,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":197,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":227,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":244,"s":[{"i":[[0,0],[-20.373,0],[-4.174,-10]],"o":[[4.292,-10],[20.228,0],[0,0]],"v":[[-11.25,18.5],[22,-21.5],[54.75,18.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.42,"y":0},"t":291,"s":[{"i":[[0,0],[-17.75,0],[-10.841,0]],"o":[[11.833,0],[17.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":432,"s":[{"i":[[0,0],[0,17.75],[0,10.841]],"o":[[0,-11.833],[0,-17.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"t":482,"s":[{"i":[[0,0],[0,17.75],[0,10.841]],"o":[[0,-11.833],[0,-17.583],[0,0]],"v":[[21.75,44.5],[21.75,-21.75],[21.75,-88.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":111,"s":[27]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":130,"s":[58]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":197,"s":[58]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":218,"s":[40]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":247,"s":[40]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[54]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":368,"s":[54]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":388,"s":[40]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":390,"s":[40]},{"t":405,"s":[52]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":127,"s":[49.5]},{"i":{"x":[0.32],"y":[1]},"o":{"x":[0.82],"y":[0]},"t":197,"s":[49.5]},{"t":222,"s":[30],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":247,"s":[30]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[49.5]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":432,"s":[49.5]},{"t":482,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":127,"s":[50.5]},{"i":{"x":[0.32],"y":[1]},"o":{"x":[0.82],"y":[0]},"t":197,"s":[50.5]},{"t":222,"s":[70],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":247,"s":[70]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[50.5]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":432,"s":[50.5]},{"t":482,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-465,"s":[0]},{"t":-447,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":222,"s":[{"i":[[3.179,6.167],[0,-15.352],[-2.581,5.008]],"o":[[-2.881,-5.59],[0,13.869],[3.179,-6.167]],"v":[[-10.45,-10.166],[10.648,-0.036],[-10.45,9.228]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":237,"s":[{"i":[[3.179,8.221],[0,-20.465],[-2.581,6.675]],"o":[[-2.881,-7.451],[0,18.488],[3.179,-8.221]],"v":[[-25.45,-13.344],[-4.352,0.16],[-25.45,12.509]],"c":true}]},{"t":263,"s":[{"i":[[3.179,6.167],[0,-15.352],[-2.581,5.008]],"o":[[-2.881,-5.59],[0,13.869],[3.179,-6.167]],"v":[[-11.7,-10.166],[9.398,-0.036],[-11.7,9.228]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":1,"k":[{"t":212,"s":[0],"h":1},{"t":222,"s":[100],"h":1},{"t":247,"s":[0],"h":1}],"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":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":198,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":3,"nm":"All Overview Scroll","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":227,"s":[0]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":244,"s":[204.8]},{"t":329,"s":[512]}],"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":22,"mn":"Pseudo/494931","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/494931-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/494931-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/494931-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/494931-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/494931-0005","ix":5,"v":0},{"ty":6,"nm":"Nulls are useless.","mn":"Pseudo/494931-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0007","ix":7,"v":0},{"ty":6,"nm":"They live in the Solids folder,","mn":"Pseudo/494931-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0009","ix":9,"v":0},{"ty":6,"nm":"must travel with projects, and","mn":"Pseudo/494931-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0011","ix":11,"v":0},{"ty":6,"nm":"may be deleted like footage.","mn":"Pseudo/494931-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0013","ix":13,"v":0},{"ty":6,"nm":"Don't use them anymore.","mn":"Pseudo/494931-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0015","ix":15,"v":0},{"ty":6,"nm":"Void - 0.7.1","mn":"Pseudo/494931-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0017","ix":17,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/494931-0018","ix":18,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0019","ix":19,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0020","ix":20,"v":0}]}],"ip":2,"op":446,"st":-37,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":3,"nm":"Initial Overview In","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[-156]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[209]},{"t":148,"s":[206]}],"ix":3},"y":{"a":0,"k":532,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":22,"mn":"Pseudo/494931","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/494931-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/494931-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/494931-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/494931-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/494931-0005","ix":5,"v":0},{"ty":6,"nm":"Nulls are useless.","mn":"Pseudo/494931-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0007","ix":7,"v":0},{"ty":6,"nm":"They live in the Solids folder,","mn":"Pseudo/494931-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0009","ix":9,"v":0},{"ty":6,"nm":"must travel with projects, and","mn":"Pseudo/494931-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0011","ix":11,"v":0},{"ty":6,"nm":"may be deleted like footage.","mn":"Pseudo/494931-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0013","ix":13,"v":0},{"ty":6,"nm":"Don't use them anymore.","mn":"Pseudo/494931-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0015","ix":15,"v":0},{"ty":6,"nm":"Void - 0.7.1","mn":"Pseudo/494931-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0017","ix":17,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/494931-0018","ix":18,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0019","ix":19,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0020","ix":20,"v":0}]}],"ip":2,"op":446,"st":-37,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":3,"nm":"Loop App to Center","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":-306,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[532]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":394.666,"s":[497.6]},{"t":428,"s":[446]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":2,"op":446,"st":-57,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":11,"sr":1,"ks":{"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":388,"s":[-768]},{"t":418,"s":[-858]}],"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[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,0],[8.421,-4.724],[0,0],[4.631,-0.057],[0,0],[4.931,-8.301],[0,0],[3.982,-2.365],[0,0],[0.12,-9.654],[0,0],[2.266,-4.039],[0,0],[-4.724,-8.421],[0,0],[-0.057,-4.631],[0,0],[-8.301,-4.931],[0,0],[-2.365,-3.982],[0,0],[-9.654,-0.119],[0,0],[-4.039,-2.266],[0,0],[-8.421,4.724],[0,0],[-4.631,0.057],[0,0],[-4.931,8.301],[0,0],[-3.982,2.365],[0,0],[-0.119,9.654],[0,0],[-2.266,4.039],[0,0],[4.724,8.421],[0,0],[0.057,4.631],[0,0],[8.301,4.931],[0,0],[2.365,3.982],[0,0],[9.654,0.12],[0,0],[4.039,2.266]],"o":[[-8.421,-4.724],[0,0],[-4.039,2.266],[0,0],[-9.654,0.12],[0,0],[-2.365,3.982],[0,0],[-8.301,4.931],[0,0],[-0.057,4.631],[0,0],[-4.724,8.421],[0,0],[2.266,4.039],[0,0],[0.12,9.655],[0,0],[3.982,2.365],[0,0],[4.931,8.301],[0,0],[4.631,0.057],[0,0],[8.421,4.724],[0,0],[4.039,-2.266],[0,0],[9.654,-0.119],[0,0],[2.365,-3.982],[0,0],[8.301,-4.931],[0,0],[0.057,-4.631],[0,0],[4.724,-8.421],[0,0],[-2.266,-4.039],[0,0],[-0.119,-9.654],[0,0],[-3.982,-2.365],[0,0],[-4.931,-8.301],[0,0],[-4.631,-0.057],[0,0]],"v":[[13.557,-175.395],[-13.557,-175.395],[-36.472,-162.541],[-49.685,-159.001],[-75.957,-158.675],[-99.438,-145.118],[-112.856,-122.529],[-122.529,-112.856],[-145.118,-99.438],[-158.675,-75.957],[-159.001,-49.685],[-162.541,-36.472],[-175.395,-13.557],[-175.395,13.557],[-162.541,36.472],[-159.001,49.685],[-158.675,75.957],[-145.118,99.438],[-122.529,112.856],[-112.856,122.529],[-99.438,145.119],[-75.957,158.675],[-49.685,159.001],[-36.472,162.541],[-13.557,175.395],[13.557,175.395],[36.472,162.541],[49.685,159.001],[75.957,158.675],[99.438,145.119],[112.856,122.529],[122.529,112.856],[145.119,99.438],[158.675,75.957],[159.001,49.685],[162.541,36.472],[175.395,13.557],[175.395,-13.557],[162.541,-36.472],[159.001,-49.685],[158.675,-75.957],[145.119,-99.438],[122.529,-112.856],[112.856,-122.529],[99.438,-145.118],[75.957,-158.675],[49.685,-159.001],[36.472,-162.541]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":28,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[70,70],"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":"Star 9","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":53,"op":446,"st":-37,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":245,"s":[50]},{"i":{"x":[0.833],"y":[0.619]},"o":{"x":[0.167],"y":[0]},"t":329,"s":[100]},{"i":{"x":[0.82],"y":[0]},"o":{"x":[0.78],"y":[0]},"t":409,"s":[95]},{"t":434,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":9,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[220]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":393,"s":[296.8]},{"t":418,"s":[412]}],"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[220]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":393,"s":[488.8]},{"t":418,"s":[892]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[60]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":393,"s":[43.2]},{"t":418,"s":[18]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"k":[{"s":[60],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"k":[{"s":[60],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"k":[{"s":[60],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-33.114,0],[0,0],[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114]],"o":[[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114],[0,0],[-33.114,0],[0,0]],"v":[[-110,-50],[-50,-110],[50,-110],[110,-50],[110,50],[50,110],[-50,110],[-110,50]],"c":true}],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-32.906,0],[0,0],[0,-32.906],[0,0],[32.906,0],[0,0],[0,32.906]],"o":[[0,-32.906],[0,0],[32.906,0],[0,0],[0,32.906],[0,0],[-32.906,0],[0,0]],"v":[[-110.86,-53.387],[-51.236,-113.011],[51.236,-113.011],[110.86,-53.387],[110.86,53.387],[51.236,113.011],[-51.236,113.011],[-110.86,53.387]],"c":true}],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-32.237,0],[0,0],[0,-32.237],[0,0],[32.237,0],[0,0],[0,32.237]],"o":[[0,-32.237],[0,0],[32.237,0],[0,0],[0,32.237],[0,0],[-32.237,0],[0,0]],"v":[[-113.631,-64.296],[-55.219,-122.707],[55.219,-122.707],[113.631,-64.296],[113.631,64.296],[55.219,122.707],[-55.219,122.707],[-113.631,64.296]],"c":true}],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-30.947,0],[0,0],[0,-30.947],[0,0],[30.947,0],[0,0],[0,30.947]],"o":[[0,-30.947],[0,0],[30.947,0],[0,0],[0,30.947],[0,0],[-30.947,0],[0,0]],"v":[[-118.974,-85.335],[-62.9,-141.409],[62.9,-141.409],[118.974,-85.335],[118.974,85.335],[62.9,141.409],[-62.9,141.409],[-118.974,85.335]],"c":true}],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-28.64,0],[0,0],[0,-28.64],[0,0],[28.64,0],[0,0],[0,28.64]],"o":[[0,-28.64],[0,0],[28.64,0],[0,0],[0,28.64],[0,0],[-28.64,0],[0,0]],"v":[[-128.53,-122.961],[-76.636,-174.854],[76.636,-174.854],[128.53,-122.961],[128.53,122.961],[76.636,174.854],[-76.636,174.854],[-128.53,122.961]],"c":true}],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-23.842,0],[0,0],[0,-23.842],[0,0],[23.842,0],[0,0],[0,23.842]],"o":[[0,-23.842],[0,0],[23.842,0],[0,0],[0,23.842],[0,0],[-23.842,0],[0,0]],"v":[[-148.4,-201.2],[-105.2,-244.4],[105.2,-244.4],[148.4,-201.2],[148.4,201.2],[105.2,244.4],[-105.2,244.4],[-148.4,201.2]],"c":true}],"t":393,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-18.379,0],[0,0],[0,-18.379],[0,0],[18.379,0],[0,0],[0,18.379]],"o":[[0,-18.379],[0,0],[18.379,0],[0,0],[0,18.379],[0,0],[-18.379,0],[0,0]],"v":[[-171.027,-290.294],[-137.727,-323.595],[137.727,-323.595],[171.027,-290.294],[171.027,290.294],[137.727,323.595],[-137.727,323.595],[-171.027,290.294]],"c":true}],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-15.973,0],[0,0],[0,-15.973],[0,0],[15.973,0],[0,0],[0,15.973]],"o":[[0,-15.973],[0,0],[15.973,0],[0,0],[0,15.973],[0,0],[-15.973,0],[0,0]],"v":[[-180.988,-329.516],[-152.046,-358.459],[152.046,-358.459],[180.988,-329.516],[180.988,329.516],[152.046,358.459],[-152.046,358.459],[-180.988,329.516]],"c":true}],"t":395,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-14.579,0],[0,0],[0,-14.579],[0,0],[14.579,0],[0,0],[0,14.579]],"o":[[0,-14.579],[0,0],[14.579,0],[0,0],[0,14.579],[0,0],[-14.579,0],[0,0]],"v":[[-186.762,-352.25],[-160.345,-378.667],[160.345,-378.667],[186.762,-352.25],[186.762,352.25],[160.345,378.667],[-160.345,378.667],[-186.762,352.25]],"c":true}],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-13.632,0],[0,0],[0,-13.632],[0,0],[13.632,0],[0,0],[0,13.632]],"o":[[0,-13.632],[0,0],[13.632,0],[0,0],[0,13.632],[0,0],[-13.632,0],[0,0]],"v":[[-190.685,-367.697],[-165.985,-392.397],[165.985,-392.397],[190.685,-367.697],[190.685,367.697],[165.985,392.397],[-165.985,392.397],[-190.685,367.697]],"c":true}],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-12.934,0],[0,0],[0,-12.934],[0,0],[12.934,0],[0,0],[0,12.934]],"o":[[0,-12.934],[0,0],[12.934,0],[0,0],[0,12.934],[0,0],[-12.934,0],[0,0]],"v":[[-193.577,-379.084],[-170.142,-402.519],[170.142,-402.519],[193.577,-379.084],[193.577,379.084],[170.142,402.519],[-170.142,402.519],[-193.577,379.084]],"c":true}],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-12.394,0],[0,0],[0,-12.394],[0,0],[12.394,0],[0,0],[0,12.394]],"o":[[0,-12.394],[0,0],[12.394,0],[0,0],[0,12.394],[0,0],[-12.394,0],[0,0]],"v":[[-195.813,-387.89],[-173.357,-410.347],[173.357,-410.347],[195.813,-387.89],[195.813,387.89],[173.357,410.347],[-173.357,410.347],[-195.813,387.89]],"c":true}],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.963,0],[0,0],[0,-11.963],[0,0],[11.963,0],[0,0],[0,11.963]],"o":[[0,-11.963],[0,0],[11.963,0],[0,0],[0,11.963],[0,0],[-11.963,0],[0,0]],"v":[[-197.598,-394.916],[-175.922,-416.592],[175.922,-416.592],[197.598,-394.916],[197.598,394.916],[175.922,416.592],[-175.922,416.592],[-197.598,394.916]],"c":true}],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.612,0],[0,0],[0,-11.612],[0,0],[11.612,0],[0,0],[0,11.612]],"o":[[0,-11.612],[0,0],[11.612,0],[0,0],[0,11.612],[0,0],[-11.612,0],[0,0]],"v":[[-199.052,-400.641],[-178.012,-421.681],[178.012,-421.681],[199.052,-400.641],[199.052,400.641],[178.012,421.681],[-178.012,421.681],[-199.052,400.641]],"c":true}],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.322,0],[0,0],[0,-11.322],[0,0],[11.322,0],[0,0],[0,11.322]],"o":[[0,-11.322],[0,0],[11.322,0],[0,0],[0,11.322],[0,0],[-11.322,0],[0,0]],"v":[[-200.254,-405.375],[-179.74,-425.889],[179.74,-425.889],[200.254,-405.375],[200.254,405.375],[179.74,425.889],[-179.74,425.889],[-200.254,405.375]],"c":true}],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.079,0],[0,0],[0,-11.079],[0,0],[11.079,0],[0,0],[0,11.079]],"o":[[0,-11.079],[0,0],[11.079,0],[0,0],[0,11.079],[0,0],[-11.079,0],[0,0]],"v":[[-201.259,-409.332],[-181.185,-429.406],[181.185,-429.406],[201.259,-409.332],[201.259,409.332],[181.185,429.406],[-181.185,429.406],[-201.259,409.332]],"c":true}],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.875,0],[0,0],[0,-10.875],[0,0],[10.875,0],[0,0],[0,10.875]],"o":[[0,-10.875],[0,0],[10.875,0],[0,0],[0,10.875],[0,0],[-10.875,0],[0,0]],"v":[[-202.104,-412.661],[-182.4,-432.365],[182.4,-432.365],[202.104,-412.661],[202.104,412.661],[182.4,432.365],[-182.4,432.365],[-202.104,412.661]],"c":true}],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.702,0],[0,0],[0,-10.702],[0,0],[10.702,0],[0,0],[0,10.702]],"o":[[0,-10.702],[0,0],[10.702,0],[0,0],[0,10.702],[0,0],[-10.702,0],[0,0]],"v":[[-202.819,-415.475],[-183.427,-434.867],[183.427,-434.867],[202.819,-415.475],[202.819,415.475],[183.427,434.867],[-183.427,434.867],[-202.819,415.475]],"c":true}],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.556,0],[0,0],[0,-10.556],[0,0],[10.556,0],[0,0],[0,10.556]],"o":[[0,-10.556],[0,0],[10.556,0],[0,0],[0,10.556],[0,0],[-10.556,0],[0,0]],"v":[[-203.424,-417.859],[-184.298,-436.986],[184.298,-436.986],[203.424,-417.859],[203.424,417.859],[184.298,436.986],[-184.298,436.986],[-203.424,417.859]],"c":true}],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.432,0],[0,0],[0,-10.432],[0,0],[10.432,0],[0,0],[0,10.432]],"o":[[0,-10.432],[0,0],[10.432,0],[0,0],[0,10.432],[0,0],[-10.432,0],[0,0]],"v":[[-203.937,-419.879],[-185.035,-438.781],[185.035,-438.781],[203.937,-419.879],[203.937,419.879],[185.035,438.781],[-185.035,438.781],[-203.937,419.879]],"c":true}],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.327,0],[0,0],[0,-10.327],[0,0],[10.328,0],[0,0],[0,10.328]],"o":[[0,-10.327],[0,0],[10.328,0],[0,0],[0,10.328],[0,0],[-10.327,0],[0,0]],"v":[[-204.371,-421.587],[-185.659,-440.299],[185.659,-440.299],[204.371,-421.587],[204.371,421.587],[185.659,440.299],[-185.659,440.299],[-204.371,421.587]],"c":true}],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.239,0],[0,0],[0,-10.239],[0,0],[10.239,0],[0,0],[0,10.239]],"o":[[0,-10.239],[0,0],[10.239,0],[0,0],[0,10.239],[0,0],[-10.239,0],[0,0]],"v":[[-204.736,-423.025],[-186.184,-441.578],[186.184,-441.578],[204.736,-423.025],[204.736,423.025],[186.184,441.578],[-186.184,441.578],[-204.736,423.025]],"c":true}],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.166,0],[0,0],[0,-10.166],[0,0],[10.166,0],[0,0],[0,10.166]],"o":[[0,-10.166],[0,0],[10.166,0],[0,0],[0,10.166],[0,0],[-10.166,0],[0,0]],"v":[[-205.042,-424.227],[-186.623,-442.647],[186.623,-442.647],[205.042,-424.227],[205.042,424.227],[186.623,442.647],[-186.623,442.647],[-205.042,424.227]],"c":true}],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.105,0],[0,0],[0,-10.104],[0,0],[10.105,0],[0,0],[0,10.104]],"o":[[0,-10.104],[0,0],[10.105,0],[0,0],[0,10.104],[0,0],[-10.105,0],[0,0]],"v":[[-205.295,-425.223],[-186.986,-443.531],[186.986,-443.531],[205.295,-425.223],[205.295,425.223],[186.986,443.531],[-186.986,443.531],[-205.295,425.223]],"c":true}],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.055,0],[0,0],[0,-10.055],[0,0],[10.055,0],[0,0],[0,10.055]],"o":[[0,-10.055],[0,0],[10.055,0],[0,0],[0,10.055],[0,0],[-10.055,0],[0,0]],"v":[[-205.501,-426.035],[-187.283,-444.253],[187.283,-444.253],[205.501,-426.035],[205.501,426.035],[187.283,444.253],[-187.283,444.253],[-205.501,426.035]],"c":true}],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.015,0],[0,0],[0,-10.015],[0,0],[10.015,0],[0,0],[0,10.015]],"o":[[0,-10.015],[0,0],[10.015,0],[0,0],[0,10.015],[0,0],[-10.015,0],[0,0]],"v":[[-205.666,-426.684],[-187.519,-444.83],[187.519,-444.83],[205.666,-426.684],[205.666,426.684],[187.519,444.83],[-187.519,444.83],[-205.666,426.684]],"c":true}],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.984,0],[0,0],[0,-9.984],[0,0],[9.984,0],[0,0],[0,9.984]],"o":[[0,-9.984],[0,0],[9.984,0],[0,0],[0,9.984],[0,0],[-9.984,0],[0,0]],"v":[[-205.793,-427.186],[-187.703,-445.277],[187.703,-445.277],[205.793,-427.186],[205.793,427.186],[187.703,445.277],[-187.703,445.277],[-205.793,427.186]],"c":true}],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.961,0],[0,0],[0,-9.961],[0,0],[9.961,0],[0,0],[0,9.961]],"o":[[0,-9.961],[0,0],[9.961,0],[0,0],[0,9.961],[0,0],[-9.961,0],[0,0]],"v":[[-205.888,-427.557],[-187.838,-445.607],[187.838,-445.607],[205.888,-427.557],[205.888,427.557],[187.838,445.607],[-187.838,445.607],[-205.888,427.557]],"c":true}],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.946,0],[0,0],[0,-9.946],[0,0],[9.946,0],[0,0],[0,9.946]],"o":[[0,-9.946],[0,0],[9.946,0],[0,0],[0,9.946],[0,0],[-9.946,0],[0,0]],"v":[[-205.952,-427.809],[-187.93,-445.831],[187.93,-445.831],[205.952,-427.809],[205.952,427.809],[187.93,445.831],[-187.93,445.831],[-205.952,427.809]],"c":true}],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.937,0],[0,0],[0,-9.937],[0,0],[9.937,0],[0,0],[0,9.937]],"o":[[0,-9.937],[0,0],[9.937,0],[0,0],[0,9.937],[0,0],[-9.937,0],[0,0]],"v":[[-205.988,-427.954],[-187.983,-445.959],[187.983,-445.959],[205.988,-427.954],[205.988,427.954],[187.983,445.959],[-187.983,445.959],[-205.988,427.954]],"c":true}],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":53,"op":446,"st":-37,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.83],"y":[0.83]},"o":{"x":[0.52],"y":[0]},"t":227,"s":[50]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.17],"y":[0.17]},"t":245,"s":[100]},{"t":262,"s":[50]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":388,"s":[-256,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":418,"s":[-176,0,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[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,0],[18.976,-48.115],[0,0],[14.69,-5.794],[0,0],[-48.115,-18.977],[0,0],[-5.794,-14.69],[0,0],[-18.977,48.115],[0,0],[-14.69,5.794],[0,0],[48.115,18.976],[0,0],[5.794,14.69]],"o":[[-18.977,-48.115],[0,0],[-5.794,14.69],[0,0],[-48.115,18.976],[0,0],[14.69,5.794],[0,0],[18.976,48.115],[0,0],[5.794,-14.69],[0,0],[48.115,-18.977],[0,0],[-14.69,-5.794],[0,0]],"v":[[53.024,-96.229],[-53.024,-96.229],[-56.162,-88.274],[-88.274,-56.162],[-96.229,-53.024],[-96.229,53.024],[-88.274,56.161],[-56.162,88.273],[-53.024,96.228],[53.024,96.228],[56.161,88.273],[88.273,56.161],[96.228,53.024],[96.228,-53.024],[88.273,-56.162],[56.161,-88.274]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":57,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-45,"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":"Star 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":110,"op":446,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":10,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":19,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":31,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":49,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":71,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.52],"y":[0]},"t":227,"s":[100]},{"t":245,"s":[50]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.15,"y":1},"o":{"x":0.37,"y":0},"t":53,"s":[206,848,0],"to":[0,0,0],"ti":[0,0,0]},{"t":101,"s":[206,421,0]}],"ix":2,"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":2,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":63,"s":[412]},{"t":101,"s":[352],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":113,"s":[352]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[216]},{"t":148,"s":[220]}],"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":63,"s":[582]},{"t":101,"s":[442],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":113,"s":[442]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[216]},{"t":148,"s":[220]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":63,"s":[90]},{"t":101,"s":[80],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":113,"s":[80]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[64]},{"t":148,"s":[60]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"k":[{"s":[89.923],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"k":[{"s":[89.923],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"k":[{"s":[89.923],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.661,0],[0,0],[0,-49.661],[0,0],[49.661,0],[0,0],[0,49.661]],"o":[[0,-49.661],[0,0],[49.661,0],[0,0],[0,49.661],[0,0],[-49.661,0],[0,0]],"v":[[-205.946,89.982],[-115.964,0],[115.964,0],[205.946,89.982],[205.946,491.767],[115.964,581.749],[-115.964,581.749],[-205.946,491.767]],"c":true}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.629,0],[0,0],[0,-49.629],[0,0],[49.629,0],[0,0],[0,49.629]],"o":[[0,-49.629],[0,0],[49.629,0],[0,0],[0,49.629],[0,0],[-49.629,0],[0,0]],"v":[[-205.77,89.923],[-115.847,0],[115.847,0],[205.77,89.923],[205.77,491.004],[115.847,580.927],[-115.847,580.927],[-205.77,491.004]],"c":true}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.569,0],[0,0],[0,-49.569],[0,0],[49.569,0],[0,0],[0,49.569]],"o":[[0,-49.569],[0,0],[49.569,0],[0,0],[0,49.569],[0,0],[-49.569,0],[0,0]],"v":[[-205.445,89.815],[-115.63,0],[115.63,0],[205.445,89.815],[205.445,489.595],[115.63,579.41],[-115.63,579.41],[-205.445,489.595]],"c":true}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.475,0],[0,0],[0,-49.475],[0,0],[49.475,0],[0,0],[0,49.475]],"o":[[0,-49.475],[0,0],[49.475,0],[0,0],[0,49.475],[0,0],[-49.475,0],[0,0]],"v":[[-204.936,89.645],[-115.291,0],[115.291,0],[204.936,89.645],[204.936,487.391],[115.291,577.037],[-115.291,577.037],[-204.936,487.391]],"c":true}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.34,0],[0,0],[0,-49.34],[0,0],[49.34,0],[0,0],[0,49.34]],"o":[[0,-49.34],[0,0],[49.34,0],[0,0],[0,49.34],[0,0],[-49.34,0],[0,0]],"v":[[-204.201,89.4],[-114.8,0],[114.8,0],[204.201,89.4],[204.201,484.203],[114.8,573.603],[-114.8,573.603],[-204.201,484.203]],"c":true}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.153,0],[0,0],[0,-49.153],[0,0],[49.153,0],[0,0],[0,49.153]],"o":[[0,-49.153],[0,0],[49.153,0],[0,0],[0,49.153],[0,0],[-49.153,0],[0,0]],"v":[[-203.185,89.062],[-114.123,0],[114.123,0],[203.185,89.062],[203.185,479.8],[114.123,568.862],[-114.123,568.862],[-203.185,479.8]],"c":true}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.905,0],[0,0],[0,-48.905],[0,0],[48.905,0],[0,0],[0,48.905]],"o":[[0,-48.905],[0,0],[48.905,0],[0,0],[0,48.905],[0,0],[-48.905,0],[0,0]],"v":[[-201.834,88.611],[-113.223,0],[113.223,0],[201.834,88.611],[201.834,473.946],[113.223,562.558],[-113.223,562.558],[-201.834,473.946]],"c":true}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.588,0],[0,0],[0,-48.588],[0,0],[48.588,0],[0,0],[0,48.588]],"o":[[0,-48.588],[0,0],[48.588,0],[0,0],[0,48.588],[0,0],[-48.588,0],[0,0]],"v":[[-200.114,88.038],[-112.076,0],[112.076,0],[200.114,88.038],[200.114,466.493],[112.076,554.531],[-112.076,554.531],[-200.114,466.493]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.209,0],[0,0],[0,-48.209],[0,0],[48.209,0],[0,0],[0,48.209]],"o":[[0,-48.209],[0,0],[48.209,0],[0,0],[0,48.209],[0,0],[-48.209,0],[0,0]],"v":[[-198.054,87.351],[-110.703,0],[110.703,0],[198.054,87.351],[198.054,457.566],[110.703,544.918],[-110.703,544.918],[-198.054,457.566]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-47.791,0],[0,0],[0,-47.791],[0,0],[47.791,0],[0,0],[0,47.791]],"o":[[0,-47.791],[0,0],[47.791,0],[0,0],[0,47.791],[0,0],[-47.791,0],[0,0]],"v":[[-195.782,86.594],[-109.188,0],[109.188,0],[195.782,86.594],[195.782,447.721],[109.188,534.315],[-109.188,534.315],[-195.782,447.721]],"c":true}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-47.369,0],[0,0],[0,-47.369],[0,0],[47.369,0],[0,0],[0,47.369]],"o":[[0,-47.369],[0,0],[47.369,0],[0,0],[0,47.369],[0,0],[-47.369,0],[0,0]],"v":[[-193.487,85.829],[-107.658,0],[107.658,0],[193.487,85.829],[193.487,437.775],[107.658,523.604],[-107.658,523.604],[-193.487,437.775]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.972,0],[0,0],[0,-46.972],[0,0],[46.972,0],[0,0],[0,46.972]],"o":[[0,-46.972],[0,0],[46.972,0],[0,0],[0,46.972],[0,0],[-46.972,0],[0,0]],"v":[[-191.327,85.109],[-106.218,0],[106.218,0],[191.327,85.109],[191.327,428.416],[106.218,513.525],[-106.218,513.525],[-191.327,428.416]],"c":true}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.614,0],[0,0],[0,-46.614],[0,0],[46.614,0],[0,0],[0,46.614]],"o":[[0,-46.614],[0,0],[46.614,0],[0,0],[0,46.614],[0,0],[-46.614,0],[0,0]],"v":[[-189.38,84.46],[-104.92,0],[104.92,0],[189.38,84.46],[189.38,419.982],[104.92,504.442],[-104.92,504.442],[-189.38,419.982]],"c":true}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.298,0],[0,0],[0,-46.298],[0,0],[46.298,0],[0,0],[0,46.298]],"o":[[0,-46.298],[0,0],[46.298,0],[0,0],[0,46.298],[0,0],[-46.298,0],[0,0]],"v":[[-187.663,83.888],[-103.775,0],[103.775,0],[187.663,83.888],[187.663,412.539],[103.775,496.426],[-103.775,496.426],[-187.663,412.539]],"c":true}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.021,0],[0,0],[0,-46.021],[0,0],[46.021,0],[0,0],[0,46.021]],"o":[[0,-46.021],[0,0],[46.021,0],[0,0],[0,46.021],[0,0],[-46.021,0],[0,0]],"v":[[-186.158,83.386],[-102.772,0],[102.772,0],[186.158,83.386],[186.158,406.02],[102.772,489.406],[-102.772,489.406],[-186.158,406.02]],"c":true}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.779,0],[0,0],[0,-45.779],[0,0],[45.779,0],[0,0],[0,45.779]],"o":[[0,-45.779],[0,0],[45.779,0],[0,0],[0,45.779],[0,0],[-45.779,0],[0,0]],"v":[[-184.842,82.947],[-101.895,0],[101.895,0],[184.842,82.947],[184.842,400.315],[101.895,483.262],[-101.895,483.262],[-184.842,400.315]],"c":true}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.566,0],[0,0],[0,-45.566],[0,0],[45.566,0],[0,0],[0,45.566]],"o":[[0,-45.566],[0,0],[45.566,0],[0,0],[0,45.566],[0,0],[-45.566,0],[0,0]],"v":[[-183.688,82.563],[-101.125,0],[101.125,0],[183.688,82.563],[183.688,395.313],[101.125,477.875],[-101.125,477.875],[-183.688,395.313]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.38,0],[0,0],[0,-45.38],[0,0],[45.38,0],[0,0],[0,45.38]],"o":[[0,-45.38],[0,0],[45.38,0],[0,0],[0,45.38],[0,0],[-45.38,0],[0,0]],"v":[[-182.673,82.224],[-100.448,0],[100.448,0],[182.673,82.224],[182.673,390.915],[100.448,473.139],[-100.448,473.139],[-182.673,390.915]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.215,0],[0,0],[0,-45.215],[0,0],[45.215,0],[0,0],[0,45.215]],"o":[[0,-45.215],[0,0],[45.215,0],[0,0],[0,45.215],[0,0],[-45.215,0],[0,0]],"v":[[-181.778,81.926],[-99.852,0],[99.852,0],[181.778,81.926],[181.778,387.037],[99.852,468.963],[-99.852,468.963],[-181.778,387.037]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.069,0],[0,0],[0,-45.069],[0,0],[45.069,0],[0,0],[0,45.069]],"o":[[0,-45.069],[0,0],[45.069,0],[0,0],[0,45.069],[0,0],[-45.069,0],[0,0]],"v":[[-180.987,81.662],[-99.325,0],[99.325,0],[180.987,81.662],[180.987,383.61],[99.325,465.273],[-99.325,465.273],[-180.987,383.61]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.941,0],[0,0],[0,-44.941],[0,0],[44.941,0],[0,0],[0,44.941]],"o":[[0,-44.941],[0,0],[44.941,0],[0,0],[0,44.941],[0,0],[-44.941,0],[0,0]],"v":[[-180.287,81.429],[-98.858,0],[98.858,0],[180.287,81.429],[180.287,380.577],[98.858,462.006],[-98.858,462.006],[-180.287,380.577]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.827,0],[0,0],[0,-44.827],[0,0],[44.827,0],[0,0],[0,44.827]],"o":[[0,-44.827],[0,0],[44.827,0],[0,0],[0,44.827],[0,0],[-44.827,0],[0,0]],"v":[[-179.667,81.222],[-98.445,0],[98.445,0],[179.667,81.222],[179.667,377.889],[98.445,459.112],[-98.445,459.112],[-179.667,377.889]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.725,0],[0,0],[0,-44.725],[0,0],[44.725,0],[0,0],[0,44.725]],"o":[[0,-44.725],[0,0],[44.725,0],[0,0],[0,44.725],[0,0],[-44.725,0],[0,0]],"v":[[-179.117,81.039],[-98.078,0],[98.078,0],[179.117,81.039],[179.117,375.508],[98.078,456.547],[-98.078,456.547],[-179.117,375.508]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.636,0],[0,0],[0,-44.636],[0,0],[44.636,0],[0,0],[0,44.636]],"o":[[0,-44.636],[0,0],[44.636,0],[0,0],[0,44.636],[0,0],[-44.636,0],[0,0]],"v":[[-178.631,80.877],[-97.754,0],[97.754,0],[178.631,80.877],[178.631,373.399],[97.754,454.276],[-97.754,454.276],[-178.631,373.399]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.557,0],[0,0],[0,-44.557],[0,0],[44.557,0],[0,0],[0,44.557]],"o":[[0,-44.557],[0,0],[44.557,0],[0,0],[0,44.557],[0,0],[-44.557,0],[0,0]],"v":[[-178.2,80.733],[-97.467,0],[97.467,0],[178.2,80.733],[178.2,371.535],[97.467,452.269],[-97.467,452.269],[-178.2,371.535]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.487,0],[0,0],[0,-44.487],[0,0],[44.487,0],[0,0],[0,44.487]],"o":[[0,-44.487],[0,0],[44.487,0],[0,0],[0,44.487],[0,0],[-44.487,0],[0,0]],"v":[[-177.821,80.607],[-97.214,0],[97.214,0],[177.821,80.607],[177.821,369.892],[97.214,450.499],[-97.214,450.499],[-177.821,369.892]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.426,0],[0,0],[0,-44.426],[0,0],[44.426,0],[0,0],[0,44.426]],"o":[[0,-44.426],[0,0],[44.426,0],[0,0],[0,44.426],[0,0],[-44.426,0],[0,0]],"v":[[-177.488,80.496],[-96.992,0],[96.992,0],[177.488,80.496],[177.488,368.45],[96.992,448.946],[-96.992,448.946],[-177.488,368.45]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.372,0],[0,0],[0,-44.372],[0,0],[44.372,0],[0,0],[0,44.372]],"o":[[0,-44.372],[0,0],[44.372,0],[0,0],[0,44.372],[0,0],[-44.372,0],[0,0]],"v":[[-177.198,80.399],[-96.798,0],[96.798,0],[177.198,80.399],[177.198,367.19],[96.798,447.589],[-96.798,447.589],[-177.198,367.19]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.326,0],[0,0],[0,-44.326],[0,0],[44.326,0],[0,0],[0,44.326]],"o":[[0,-44.326],[0,0],[44.326,0],[0,0],[0,44.326],[0,0],[-44.326,0],[0,0]],"v":[[-176.945,80.315],[-96.63,0],[96.63,0],[176.945,80.315],[176.945,366.097],[96.63,446.412],[-96.63,446.412],[-176.945,366.097]],"c":true}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.286,0],[0,0],[0,-44.286],[0,0],[44.286,0],[0,0],[0,44.286]],"o":[[0,-44.286],[0,0],[44.286,0],[0,0],[0,44.286],[0,0],[-44.286,0],[0,0]],"v":[[-176.729,80.243],[-96.486,0],[96.486,0],[176.729,80.243],[176.729,365.158],[96.486,445.4],[-96.486,445.4],[-176.729,365.158]],"c":true}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.252,0],[0,0],[0,-44.252],[0,0],[44.252,0],[0,0],[0,44.252]],"o":[[0,-44.252],[0,0],[44.252,0],[0,0],[0,44.252],[0,0],[-44.252,0],[0,0]],"v":[[-176.545,80.182],[-96.363,0],[96.363,0],[176.545,80.182],[176.545,364.36],[96.363,444.542],[-96.363,444.542],[-176.545,364.36]],"c":true}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.224,0],[0,0],[0,-44.224],[0,0],[44.224,0],[0,0],[0,44.224]],"o":[[0,-44.224],[0,0],[44.224,0],[0,0],[0,44.224],[0,0],[-44.224,0],[0,0]],"v":[[-176.391,80.13],[-96.261,0],[96.261,0],[176.391,80.13],[176.391,363.694],[96.261,443.825],[-96.261,443.825],[-176.391,363.694]],"c":true}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.201,0],[0,0],[0,-44.201],[0,0],[44.201,0],[0,0],[0,44.201]],"o":[[0,-44.201],[0,0],[44.201,0],[0,0],[0,44.201],[0,0],[-44.201,0],[0,0]],"v":[[-176.266,80.089],[-96.177,0],[96.177,0],[176.266,80.089],[176.266,363.151],[96.177,443.239],[-96.177,443.239],[-176.266,363.151]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.183,0],[0,0],[0,-44.183],[0,0],[44.183,0],[0,0],[0,44.183]],"o":[[0,-44.183],[0,0],[44.183,0],[0,0],[0,44.183],[0,0],[-44.183,0],[0,0]],"v":[[-176.166,80.055],[-96.111,0],[96.111,0],[176.166,80.055],[176.166,362.721],[96.111,442.776],[-96.111,442.776],[-176.166,362.721]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.169,0],[0,0],[0,-44.169],[0,0],[44.169,0],[0,0],[0,44.169]],"o":[[0,-44.169],[0,0],[44.169,0],[0,0],[0,44.169],[0,0],[-44.169,0],[0,0]],"v":[[-176.092,80.031],[-96.061,0],[96.061,0],[176.092,80.031],[176.092,362.397],[96.061,442.427],[-96.061,442.427],[-176.092,362.397]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.154,0],[0,0],[0,-44.154],[0,0],[44.154,0],[0,0],[0,44.154]],"o":[[0,-44.154],[0,0],[44.154,0],[0,0],[0,44.154],[0,0],[-44.154,0],[0,0]],"v":[[-176.01,80.003],[-96.007,0],[96.007,0],[176.01,80.003],[176.01,362.042],[96.007,442.046],[-96.007,442.046],[-176.01,362.042]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.152,0],[0,0],[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152]],"o":[[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152],[0,0],[-44.152,0],[0,0]],"v":[[-176,80],[-96,0],[96,0],[176,80],[176,362],[96,442],[-96,442],[-176,362]],"c":true}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.127,0],[0,0],[0,-44.127],[0,0],[44.127,0],[0,0],[0,44.127]],"o":[[0,-44.127],[0,0],[44.127,0],[0,0],[0,44.127],[0,0],[-44.127,0],[0,0]],"v":[[-175.806,79.954],[-95.852,0],[95.852,0],[175.806,79.954],[175.806,361.402],[95.852,441.356],[-95.852,441.356],[-175.806,361.402]],"c":true}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.042,0],[0,0],[0,-44.042],[0,0],[44.042,0],[0,0],[0,44.042]],"o":[[0,-44.042],[0,0],[44.042,0],[0,0],[0,44.042],[0,0],[-44.042,0],[0,0]],"v":[[-175.151,79.8],[-95.351,0],[95.351,0],[175.151,79.8],[175.151,359.379],[95.351,439.179],[-95.351,439.179],[-175.151,359.379]],"c":true}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.877,0],[0,0],[0,-43.877],[0,0],[43.877,0],[0,0],[0,43.877]],"o":[[0,-43.877],[0,0],[43.877,0],[0,0],[0,43.877],[0,0],[-43.877,0],[0,0]],"v":[[-173.883,79.502],[-94.381,0],[94.381,0],[173.883,79.502],[173.883,355.463],[94.381,434.965],[-94.381,434.965],[-173.883,355.463]],"c":true}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.602,0],[0,0],[0,-43.602],[0,0],[43.602,0],[0,0],[0,43.602]],"o":[[0,-43.602],[0,0],[43.602,0],[0,0],[0,43.602],[0,0],[-43.602,0],[0,0]],"v":[[-171.765,79.003],[-92.761,0],[92.761,0],[171.765,79.003],[171.765,348.92],[92.761,427.924],[-92.761,427.924],[-171.765,348.92]],"c":true}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.166,0],[0,0],[0,-43.166],[0,0],[43.166,0],[0,0],[0,43.166]],"o":[[0,-43.166],[0,0],[43.166,0],[0,0],[0,43.166],[0,0],[-43.166,0],[0,0]],"v":[[-168.404,78.213],[-90.191,0],[90.191,0],[168.404,78.213],[168.404,338.542],[90.191,416.754],[-90.191,416.754],[-168.404,338.542]],"c":true}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-42.482,0],[0,0],[0,-42.482],[0,0],[42.482,0],[0,0],[0,42.482]],"o":[[0,-42.482],[0,0],[42.482,0],[0,0],[0,42.482],[0,0],[-42.482,0],[0,0]],"v":[[-163.142,76.975],[-86.168,0],[86.168,0],[163.142,76.975],[163.142,322.292],[86.168,399.267],[-86.168,399.267],[-163.142,322.292]],"c":true}],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-41.435,0],[0,0],[0,-41.435],[0,0],[41.435,0],[0,0],[0,41.435]],"o":[[0,-41.435],[0,0],[41.435,0],[0,0],[0,41.435],[0,0],[-41.435,0],[0,0]],"v":[[-155.078,75.077],[-80.001,0],[80.001,0],[155.078,75.077],[155.078,297.387],[80.001,372.464],[-80.001,372.464],[-155.078,297.387]],"c":true}],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-40.054,0],[0,0],[0,-40.054],[0,0],[40.054,0],[0,0],[0,40.054]],"o":[[0,-40.054],[0,0],[40.054,0],[0,0],[0,40.054],[0,0],[-40.054,0],[0,0]],"v":[[-144.442,72.575],[-71.868,0],[71.868,0],[144.442,72.575],[144.442,264.543],[71.868,337.118],[-71.868,337.118],[-144.442,264.543]],"c":true}],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-38.75,0],[0,0],[0,-38.75],[0,0],[38.75,0],[0,0],[0,38.75]],"o":[[0,-38.75],[0,0],[38.75,0],[0,0],[0,38.75],[0,0],[-38.75,0],[0,0]],"v":[[-134.399,70.212],[-64.188,0],[64.188,0],[134.399,70.212],[134.399,233.528],[64.188,303.739],[-64.188,303.739],[-134.399,233.528]],"c":true}],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-37.775,0],[0,0],[0,-37.775],[0,0],[37.775,0],[0,0],[0,37.775]],"o":[[0,-37.775],[0,0],[37.775,0],[0,0],[0,37.775],[0,0],[-37.775,0],[0,0]],"v":[[-126.895,68.446],[-58.449,0],[58.449,0],[126.895,68.446],[126.895,210.354],[58.449,278.8],[-58.449,278.8],[-126.895,210.354]],"c":true}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-37.077,0],[0,0],[0,-37.077],[0,0],[37.077,0],[0,0],[0,37.077]],"o":[[0,-37.077],[0,0],[37.077,0],[0,0],[0,37.077],[0,0],[-37.077,0],[0,0]],"v":[[-121.522,67.182],[-54.34,0],[54.34,0],[121.522,67.182],[121.522,193.758],[54.34,260.939],[-54.34,260.939],[-121.522,193.758]],"c":true}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-36.569,0],[0,0],[0,-36.569],[0,0],[36.569,0],[0,0],[0,36.569]],"o":[[0,-36.569],[0,0],[36.569,0],[0,0],[0,36.569],[0,0],[-36.569,0],[0,0]],"v":[[-117.609,66.261],[-51.348,0],[51.348,0],[117.609,66.261],[117.609,181.674],[51.348,247.935],[-51.348,247.935],[-117.609,181.674]],"c":true}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-36.193,0],[0,0],[0,-36.193],[0,0],[36.193,0],[0,0],[0,36.193]],"o":[[0,-36.193],[0,0],[36.193,0],[0,0],[0,36.193],[0,0],[-36.193,0],[0,0]],"v":[[-114.709,65.579],[-49.131,0],[49.131,0],[114.709,65.579],[114.709,172.72],[49.131,238.299],[-49.131,238.299],[-114.709,172.72]],"c":true}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.912,0],[0,0],[0,-35.912],[0,0],[35.912,0],[0,0],[0,35.912]],"o":[[0,-35.912],[0,0],[35.912,0],[0,0],[0,35.912],[0,0],[-35.912,0],[0,0]],"v":[[-112.544,65.069],[-47.475,0],[47.475,0],[112.544,65.069],[112.544,166.034],[47.475,231.104],[-47.475,231.104],[-112.544,166.034]],"c":true}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.703,0],[0,0],[0,-35.703],[0,0],[35.703,0],[0,0],[0,35.703]],"o":[[0,-35.703],[0,0],[35.703,0],[0,0],[0,35.703],[0,0],[-35.703,0],[0,0]],"v":[[-110.934,64.69],[-46.244,0],[46.244,0],[110.934,64.69],[110.934,161.062],[46.244,225.752],[-46.244,225.752],[-110.934,161.062]],"c":true}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.55,0],[0,0],[0,-35.55],[0,0],[35.55,0],[0,0],[0,35.55]],"o":[[0,-35.55],[0,0],[35.55,0],[0,0],[0,35.55],[0,0],[-35.55,0],[0,0]],"v":[[-109.758,64.414],[-45.344,0],[45.344,0],[109.758,64.414],[109.758,157.429],[45.344,221.843],[-45.344,221.843],[-109.758,157.429]],"c":true}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.443,0],[0,0],[0,-35.443],[0,0],[35.443,0],[0,0],[0,35.443]],"o":[[0,-35.443],[0,0],[35.443,0],[0,0],[0,35.443],[0,0],[-35.443,0],[0,0]],"v":[[-108.931,64.219],[-44.712,0],[44.712,0],[108.931,64.219],[108.931,154.875],[44.712,219.094],[-44.712,219.094],[-108.931,154.875]],"c":true}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.372,0],[0,0],[0,-35.372],[0,0],[35.372,0],[0,0],[0,35.372]],"o":[[0,-35.372],[0,0],[35.372,0],[0,0],[0,35.372],[0,0],[-35.372,0],[0,0]],"v":[[-108.391,64.092],[-44.299,0],[44.299,0],[108.391,64.092],[108.391,153.209],[44.299,217.301],[-44.299,217.301],[-108.391,153.209]],"c":true}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.334,0],[0,0],[0,-35.334],[0,0],[35.334,0],[0,0],[0,35.334]],"o":[[0,-35.334],[0,0],[35.334,0],[0,0],[0,35.334],[0,0],[-35.334,0],[0,0]],"v":[[-108.093,64.022],[-44.071,0],[44.071,0],[108.093,64.022],[108.093,152.287],[44.071,216.309],[-44.071,216.309],[-108.093,152.287]],"c":true}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.322,0],[0,0],[0,-35.322],[0,0],[35.322,0],[0,0],[0,35.322]],"o":[[0,-35.322],[0,0],[35.322,0],[0,0],[0,35.322],[0,0],[-35.322,0],[0,0]],"v":[[-108,64],[-44,0],[44,0],[108,64],[108,152],[44,216],[-44,216],[-108,152]],"c":true}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.293,0],[0,0],[0,-35.293],[0,0],[35.293,0],[0,0],[0,35.293]],"o":[[0,-35.293],[0,0],[35.293,0],[0,0],[0,35.293],[0,0],[-35.293,0],[0,0]],"v":[[-108.025,63.949],[-44.076,0],[44.076,0],[108.025,63.949],[108.025,152.102],[44.076,216.051],[-44.076,216.051],[-108.025,152.102]],"c":true}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.214,0],[0,0],[0,-35.214],[0,0],[35.214,0],[0,0],[0,35.214]],"o":[[0,-35.214],[0,0],[35.214,0],[0,0],[0,35.214],[0,0],[-35.214,0],[0,0]],"v":[[-108.097,63.806],[-44.292,0],[44.292,0],[108.097,63.806],[108.097,152.389],[44.292,216.194],[-44.292,216.194],[-108.097,152.389]],"c":true}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.092,0],[0,0],[0,-35.092],[0,0],[35.092,0],[0,0],[0,35.092]],"o":[[0,-35.092],[0,0],[35.092,0],[0,0],[0,35.092],[0,0],[-35.092,0],[0,0]],"v":[[-108.208,63.584],[-44.624,0],[44.624,0],[108.208,63.584],[108.208,152.832],[44.624,216.416],[-44.624,216.416],[-108.208,152.832]],"c":true}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.934,0],[0,0],[0,-34.934],[0,0],[34.934,0],[0,0],[0,34.934]],"o":[[0,-34.934],[0,0],[34.934,0],[0,0],[0,34.934],[0,0],[-34.934,0],[0,0]],"v":[[-108.351,63.298],[-45.052,0],[45.052,0],[108.351,63.298],[108.351,153.403],[45.052,216.702],[-45.052,216.702],[-108.351,153.403]],"c":true}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.749,0],[0,0],[0,-34.749],[0,0],[34.749,0],[0,0],[0,34.749]],"o":[[0,-34.749],[0,0],[34.749,0],[0,0],[0,34.749],[0,0],[-34.749,0],[0,0]],"v":[[-108.519,62.963],[-45.556,0],[45.556,0],[108.519,62.963],[108.519,154.074],[45.556,217.037],[-45.556,217.037],[-108.519,154.074]],"c":true}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.545,0],[0,0],[0,-34.545],[0,0],[34.545,0],[0,0],[0,34.545]],"o":[[0,-34.545],[0,0],[34.545,0],[0,0],[0,34.545],[0,0],[-34.545,0],[0,0]],"v":[[-108.704,62.592],[-46.112,0],[46.112,0],[108.704,62.592],[108.704,154.816],[46.112,217.408],[-46.112,217.408],[-108.704,154.816]],"c":true}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.328,0],[0,0],[0,-34.328],[0,0],[34.328,0],[0,0],[0,34.328]],"o":[[0,-34.328],[0,0],[34.328,0],[0,0],[0,34.328],[0,0],[-34.328,0],[0,0]],"v":[[-108.9,62.2],[-46.7,0],[46.7,0],[108.9,62.2],[108.9,155.601],[46.7,217.8],[-46.7,217.8],[-108.9,155.601]],"c":true}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.108,0],[0,0],[0,-34.108],[0,0],[34.108,0],[0,0],[0,34.108]],"o":[[0,-34.108],[0,0],[34.108,0],[0,0],[0,34.108],[0,0],[-34.108,0],[0,0]],"v":[[-109.1,61.8],[-47.3,0],[47.3,0],[109.1,61.8],[109.1,156.399],[47.3,218.2],[-47.3,218.2],[-109.1,156.399]],"c":true}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.891,0],[0,0],[0,-33.891],[0,0],[33.891,0],[0,0],[0,33.891]],"o":[[0,-33.891],[0,0],[33.891,0],[0,0],[0,33.891],[0,0],[-33.891,0],[0,0]],"v":[[-109.296,61.408],[-47.888,0],[47.888,0],[109.296,61.408],[109.296,157.184],[47.888,218.592],[-47.888,218.592],[-109.296,157.184]],"c":true}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.686,0],[0,0],[0,-33.686],[0,0],[33.686,0],[0,0],[0,33.686]],"o":[[0,-33.686],[0,0],[33.686,0],[0,0],[0,33.686],[0,0],[-33.686,0],[0,0]],"v":[[-109.481,61.037],[-48.444,0],[48.444,0],[109.481,61.037],[109.481,157.926],[48.444,218.963],[-48.444,218.963],[-109.481,157.926]],"c":true}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.501,0],[0,0],[0,-33.501],[0,0],[33.501,0],[0,0],[0,33.501]],"o":[[0,-33.501],[0,0],[33.501,0],[0,0],[0,33.501],[0,0],[-33.501,0],[0,0]],"v":[[-109.649,60.702],[-48.948,0],[48.948,0],[109.649,60.702],[109.649,158.597],[48.948,219.298],[-48.948,219.298],[-109.649,158.597]],"c":true}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.344,0],[0,0],[0,-33.344],[0,0],[33.344,0],[0,0],[0,33.344]],"o":[[0,-33.344],[0,0],[33.344,0],[0,0],[0,33.344],[0,0],[-33.344,0],[0,0]],"v":[[-109.792,60.416],[-49.376,0],[49.376,0],[109.792,60.416],[109.792,159.168],[49.376,219.584],[-49.376,219.584],[-109.792,159.168]],"c":true}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.221,0],[0,0],[0,-33.221],[0,0],[33.221,0],[0,0],[0,33.221]],"o":[[0,-33.221],[0,0],[33.221,0],[0,0],[0,33.221],[0,0],[-33.221,0],[0,0]],"v":[[-109.903,60.194],[-49.708,0],[49.708,0],[109.903,60.194],[109.903,159.611],[49.708,219.806],[-49.708,219.806],[-109.903,159.611]],"c":true}],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.142,0],[0,0],[0,-33.142],[0,0],[33.142,0],[0,0],[0,33.142]],"o":[[0,-33.142],[0,0],[33.142,0],[0,0],[0,33.142],[0,0],[-33.142,0],[0,0]],"v":[[-109.975,60.051],[-49.924,0],[49.924,0],[109.975,60.051],[109.975,159.898],[49.924,219.949],[-49.924,219.949],[-109.975,159.898]],"c":true}],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.114,0],[0,0],[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114]],"o":[[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114],[0,0],[-33.114,0],[0,0]],"v":[[-110,60],[-50,0],[50,0],[110,60],[110,160],[50,220],[-50,220],[-110,160]],"c":true}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":2,"op":446,"st":-57,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".surfaceOverview","cl":"surfaceOverview","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,446,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[412,892],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.875,0.953,0.686,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.875,0.953,0.686,1],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":446,"st":0,"ct":1,"bm":0}]},{"id":"comp_1","nm":"Part02_Charade_Overview_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Secondary Y Movement","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":206,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":38,"s":[807.709]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":40.334,"s":[814.909]},{"t":52,"s":[807.709]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":467,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"MASTER Y POSITION","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":0,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.426],"y":[0.38]},"o":{"x":[0.48],"y":[0.051]},"t":0,"s":[-97.709]},{"i":{"x":[0.633],"y":[1]},"o":{"x":[0.654],"y":[-0.375]},"t":23,"s":[-103.709]},{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":38,"s":[-92.709]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":44.666,"s":[-50.709]},{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.52],"y":[0]},"t":78,"s":[12.291]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":109,"s":[-7.709]},{"i":{"x":[0.8],"y":[0.764]},"o":{"x":[0.3],"y":[0]},"t":118,"s":[-7.709]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":128,"s":[64.291]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.78],"y":[0]},"t":143,"s":[46.291]},{"i":{"x":[0.8],"y":[0.528]},"o":{"x":[0.3],"y":[0]},"t":145,"s":[46.291]},{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[1]},"t":155,"s":[64.291]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":184,"s":[-7.709]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.52],"y":[0]},"t":195,"s":[-7.709]},{"i":{"x":[0.428],"y":[1]},"o":{"x":[0.681],"y":[0]},"t":235,"s":[-261.709]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":290,"s":[-239.709]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.52],"y":[0]},"t":294,"s":[-239.709]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":334,"s":[-261.709]},{"i":{"x":[0.473],"y":[1.533]},"o":{"x":[0.63],"y":[0]},"t":343,"s":[-261.709]},{"i":{"x":[0.105],"y":[1]},"o":{"x":[0.497],"y":[-0.207]},"t":406,"s":[-157.709]},{"t":466,"s":[62.291]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":467,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":60,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":72,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":84,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":96,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":108,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":162,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":174,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":186,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":198,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":210,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":264,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":276,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":288,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":300,"s":[100]},{"t":312,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,1429,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":414,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":0,"k":581,"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":0,"k":90,"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":0,"k":90,"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491],[-117,-581],[117,-581],[207,-491],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.507,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-207,-491],[-117,-581],[117,-581],[207,-491],[207,-135],[72,0],[-72,0],[-207,-135]],"c":true}],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":312,"st":-205,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".secondaryOverview","cl":"secondaryOverview","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-144,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-134,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":549,"s":[100]},{"t":555,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.108},"t":426,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":465,"s":[0,-10.9,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":1,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":1,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[206,709.342],"t":7,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,708.844],"t":9,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,708.163],"t":11,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,707.778],"t":12,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,707.383],"t":13,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,706.991],"t":14,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,706.607],"t":15,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,706.236],"t":16,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,705.536],"t":18,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,704.888],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,704.286],"t":22,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,703.634],"t":24,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,704.162],"t":29,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,704.995],"t":30,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,706.186],"t":31,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,707.757],"t":32,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,709.623],"t":33,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,711.521],"t":34,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,713.117],"t":35,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,714.218],"t":36,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,714.82],"t":37,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,715],"t":38,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,718.61],"t":39,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,723.334],"t":40,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,727.28],"t":41,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,731.651],"t":42,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,737.952],"t":43,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,747.768],"t":44,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,767.765],"t":45,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,783.252],"t":46,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,791.43],"t":47,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,796.66],"t":48,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,800.434],"t":49,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,803.356],"t":50,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,805.726],"t":51,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,807.709],"t":52,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,809.387],"t":53,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,810.811],"t":54,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,812.032],"t":55,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,813.088],"t":56,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,814.009],"t":57,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,814.815],"t":58,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,815.523],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,816.146],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,816.697],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,817.183],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,817.991],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,818.618],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,819.289],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,818.559],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,817.822],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,816.803],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,815.403],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,813.559],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,811.411],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,809.329],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,807.568],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,806.151],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,805.013],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,804.089],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,803.33],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,802.701],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,802.177],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,801.737],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,801.06],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,800.28],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,800],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,801.695],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,805.856],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,811.656],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,818.633],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,826.494],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,835.028],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,844.063],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,853.43],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,862.906],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,872],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,870.974],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,866.807],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,863],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,860.542],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,858.826],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,857.559],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,856.595],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,855.851],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,855.277],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,854.508],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,855.056],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,856.15],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,857.521],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,859.142],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,861.007],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,863.131],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,865.561],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,868.408],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,872],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,858.505],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,846.072],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,835.381],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,826.799],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,820.238],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,815.333],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,811.679],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,808.94],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,806.868],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,805.285],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,804.066],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,803.121],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,802.386],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,801.812],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,801.016],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,800.261],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,799.796],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,799.146],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,797.987],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,796.238],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,793.802],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,790.556],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,786.342],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,780.962],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,774.161],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,765.62],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,754.959],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,741.8],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,725.947],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,707.739],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,688.322],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,669.296],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,651.898],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,636.626],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,623.459],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,612.161],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,602.455],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,594.089],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,586.851],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,580.57],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,575.108],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,570.351],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,566.208],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,562.606],"t":223,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,559.48],"t":224,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,556.781],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,554.462],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,552.488],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,550.826],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,549.449],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,548.332],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,547.454],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,546.798],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,546.346],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,546.8],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,547.177],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,547.656],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,547.94],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,548.258],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,548.613],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,549.008],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,549.448],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,549.938],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,550.483],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,551.089],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,551.76],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,552.504],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,553.322],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,554.216],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,555.181],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,556.206],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,557.271],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,558.349],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,559.409],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,560.422],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,561.368],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,562.234],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,563.016],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,563.716],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,564.338],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,564.888],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,565.372],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,565.798],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,566.171],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,566.496],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,567.025],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,567.564],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,567.182],"t":300,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,566.817],"t":301,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,566.351],"t":302,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,565.762],"t":303,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,565.022],"t":304,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,564.099],"t":305,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,562.959],"t":306,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,561.586],"t":307,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,560.009],"t":308,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,558.327],"t":309,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,556.679],"t":310,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,555.172],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,553.85],"t":312,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,552.709],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,551.73],"t":314,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,550.89],"t":315,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,550.165],"t":316,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,549.538],"t":317,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,548.994],"t":318,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,548.521],"t":319,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,548.109],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,547.75],"t":321,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,547.438],"t":322,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,546.934],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,546.418],"t":327,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,546.909],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,547.33],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,547.84],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,548.444],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,549.146],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,549.951],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,550.867],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,551.897],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,553.05],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,554.331],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,555.75],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,557.313],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,559.03],"t":360,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,560.909],"t":361,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,562.961],"t":362,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,565.196],"t":363,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,567.625],"t":364,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,570.259],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,573.108],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,576.182],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,579.492],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,583.045],"t":369,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,586.844],"t":370,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,590.888],"t":371,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,595.171],"t":372,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,599.675],"t":373,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,604.372],"t":374,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,609.22],"t":375,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,614.165],"t":376,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,619.139],"t":377,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,624.062],"t":378,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,628.854],"t":379,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,633.436],"t":380,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,637.74],"t":381,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,641.713],"t":382,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,645.319],"t":383,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,648.538],"t":384,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,651.365],"t":385,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,653.807],"t":386,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,655.876],"t":387,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,657.593],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,658.978],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,660.055],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,660.846],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,661.373],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,660.714],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,660.036],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,659.208],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,658.241],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,657.143],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,655.925],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,654.595],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,653.159],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,651.626],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,650],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,648.564],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,647.319],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,646.287],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,645.494],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,644.972],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,645.439],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,646.461],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,648.043],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,650.295],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,653.352],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,657.389],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,662.625],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,669.323],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,677.764],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,688.164],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,700.486],"t":424,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,714.241],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,728.508],"t":426,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,742.068],"t":427,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,754.388],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,765.254],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,774.723],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,783.006],"t":431,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,790.334],"t":432,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,796.881],"t":433,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,802.769],"t":434,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,808.088],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,812.91],"t":436,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,817.296],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,821.294],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,824.947],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,828.291],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,831.357],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,834.17],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,836.755],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,839.128],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,841.307],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,843.308],"t":446,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,845.143],"t":447,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,846.825],"t":448,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,848.365],"t":449,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,849.769],"t":450,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,851.048],"t":451,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,852.209],"t":452,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,853.259],"t":453,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,854.203],"t":454,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,855.049],"t":455,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,855.801],"t":456,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,856.465],"t":457,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,857.044],"t":458,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,857.544],"t":459,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,858.32],"t":461,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":406,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[55.625,-40.25]],"c":false}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":426,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-36.75]],"c":false}]},{"t":465,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.83],"y":[0.83]},"o":{"x":[0.44],"y":[0]},"t":406,"s":[54]},{"t":426,"s":[58]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":18,"s":[90]}],"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":"Right","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[55.625,-40.25]],"c":false}],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[55.461,-40.238]],"c":false}],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[54.979,-40.201]],"c":false}],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[54.191,-40.142]],"c":false}],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[53.112,-40.06]],"c":false}],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[51.754,-39.958]],"c":false}],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[50.13,-39.835]],"c":false}],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[48.251,-39.693]],"c":false}],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[46.13,-39.533]],"c":false}],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[43.779,-39.356]],"c":false}],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[41.212,-39.162]],"c":false}],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[38.443,-38.953]],"c":false}],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[35.488,-38.73]],"c":false}],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[32.365,-38.494]],"c":false}],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[29.095,-38.248]],"c":false}],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[25.705,-37.992]],"c":false}],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[22.232,-37.73]],"c":false}],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[18.728,-37.465]],"c":false}],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[15.275,-37.205]],"c":false}],"t":424,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[12.014,-36.959]],"c":false}],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-36.75]],"c":false}],"t":426,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-36.245]],"c":false}],"t":427,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-35.487]],"c":false}],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-34.479]],"c":false}],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-33.307]],"c":false}],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-32.102]],"c":false}],"t":431,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-30.966]],"c":false}],"t":432,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-29.94]],"c":false}],"t":433,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-29.029]],"c":false}],"t":434,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-28.223]],"c":false}],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-27.508]],"c":false}],"t":436,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-26.872]],"c":false}],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-26.304]],"c":false}],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-25.794]],"c":false}],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-25.335]],"c":false}],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-24.92]],"c":false}],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-24.545]],"c":false}],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-24.205]],"c":false}],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.896]],"c":false}],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.615]],"c":false}],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.36]],"c":false}],"t":446,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.129]],"c":false}],"t":447,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.918]],"c":false}],"t":448,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.728]],"c":false}],"t":449,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.555]],"c":false}],"t":450,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.4]],"c":false}],"t":451,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.26]],"c":false}],"t":452,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.135]],"c":false}],"t":453,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.023]],"c":false}],"t":454,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.924]],"c":false}],"t":455,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.837]],"c":false}],"t":456,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.762]],"c":false}],"t":457,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.697]],"c":false}],"t":458,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.642]],"c":false}],"t":459,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.597]],"c":false}],"t":460,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.561]],"c":false}],"t":461,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.534]],"c":false}],"t":462,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.515]],"c":false}],"t":463,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[54.014],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.056],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.123],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.216],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.333],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.474],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.636],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.819],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.022],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.244],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.483],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.738],"t":418,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.008],"t":419,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.291],"t":420,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.584],"t":421,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.883],"t":422,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.185],"t":423,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.482],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.763],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58],"t":426,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":1,"k":[{"t":-145,"s":[0],"h":1},{"t":18,"s":[100],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","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":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":406,"s":[{"i":[[6.167,-3.179],[-15.352,0],[5.008,2.581]],"o":[[-5.59,2.881],[13.869,0],[-6.167,-3.179]],"v":[[-9.526,-79.571],[0.604,-100.669],[9.867,-79.571]],"c":true}]},{"t":426,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.895,-79.571],[0.709,-100.669],[11.321,-79.571]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.765,"y":0.675},"o":{"x":0.399,"y":0},"t":406,"s":[0,139],"to":[0,0],"ti":[0,0]},{"i":{"x":0.24,"y":1},"o":{"x":0.4,"y":0.441},"t":424,"s":[0,101],"to":[0,0],"ti":[0,0]},{"t":427,"s":[0,93]}],"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":3,"mn":"ADBE Vector Group","hd":false}],"ip":406,"op":467,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".secondaryOverview","cl":"secondaryOverview","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-6,"s":[100]},{"t":5,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.033,-21.75],[-55.984,-40.016]],"c":false}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.198,-21.75],[-50.169,-39.599]],"c":false}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-5.356,-21.75],[-37.325,-38.678]],"c":false}],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.425,-21.75],[-16.892,-37.213]],"c":false}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.467,-21.75],[3.272,-35.766]],"c":false}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[2.584,-21.75],[18.031,-34.708]],"c":false}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.048,-21.75],[28.237,-33.976]],"c":false}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5.064,-21.75],[35.32,-33.468]],"c":false}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5.767,-21.75],[40.22,-33.116]],"c":false}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.241,-21.75],[43.523,-32.88]],"c":false}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.54,-21.75],[45.607,-32.73]],"c":false}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.701,-21.75],[46.73,-32.65]],"c":false}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[47.072,-32.625]],"c":false}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[49.587,-33.707]],"c":false}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[54.144,-35.668]],"c":false}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[57.197,-36.982]],"c":false}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[59.162,-37.828]],"c":false}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[60.549,-38.425]],"c":false}],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[61.581,-38.869]],"c":false}],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[62.369,-39.208]],"c":false}],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[62.978,-39.47]],"c":false}],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[63.45,-39.673]],"c":false}],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[63.811,-39.829]],"c":false}],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.082,-39.945]],"c":false}],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.276,-40.028]],"c":false}],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.405,-40.084]],"c":false}],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.477,-40.115]],"c":false}],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","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":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":195,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}]},{"i":{"x":0.01,"y":1},"o":{"x":0.167,"y":0.167},"t":208,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[47.072,-32.625]],"c":false}]},{"t":223,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.5,-40.125]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":200,"op":221,"st":-6,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".secondaryOverview","cl":"secondaryOverview","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-145,"s":[100]},{"t":-134,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.625,-45.75]],"c":false}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.725,-44.786]],"c":false}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.906,-43.051]],"c":false}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.119,-41.012]],"c":false}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.349,-38.801]],"c":false}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.591,-36.476]],"c":false}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.841,-34.073]],"c":false}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.097,-31.615]],"c":false}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.357,-29.121]],"c":false}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.618,-26.612]],"c":false}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.878,-24.121]],"c":false}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.125,-21.75]],"c":false}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.021,-24.795]],"c":false}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.846,-29.943]],"c":false}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.74,-33.077]],"c":false}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.672,-35.065]],"c":false}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.625,-36.457]],"c":false}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.59,-37.483]],"c":false}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.564,-38.258]],"c":false}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.543,-38.847]],"c":false}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.528,-39.292]],"c":false}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.517,-39.621]],"c":false}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.509,-39.856]],"c":false}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.504,-40.011]],"c":false}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.501,-40.098]],"c":false}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.048]],"c":false}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-39.825]],"c":false}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-39.469]],"c":false}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-38.991]],"c":false}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-38.401]],"c":false}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-37.708]],"c":false}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-36.919]],"c":false}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-36.042]],"c":false}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-35.084]],"c":false}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-34.051]],"c":false}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-32.951]],"c":false}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-31.79]],"c":false}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-30.576]],"c":false}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-29.316]],"c":false}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-28.021]],"c":false}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-26.701]],"c":false}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-25.375]],"c":false}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-24.067]],"c":false}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-22.825]],"c":false}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-21.75]],"c":false}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.38,-24.323]],"c":false}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.199,-28.188]],"c":false}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.031,-31.777]],"c":false}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.898,-34.618]],"c":false}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.795,-36.811]],"c":false}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.716,-38.509]],"c":false}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.654,-39.829]],"c":false}],"t":111,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.606,-40.851]],"c":false}],"t":112,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.57,-41.634]],"c":false}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.542,-42.22]],"c":false}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.523,-42.64]],"c":false}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.51,-42.919]],"c":false}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.502,-43.076]],"c":false}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.5,-43.125]],"c":false}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","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":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.17,"y":0},"t":59,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.625,-45.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":70,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.125,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":84,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0.167},"t":104,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-21.75]],"c":false}]},{"t":118,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.5,-43.125]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","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":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.17,"y":0},"t":59,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.895,10.429],[0.709,-10.669],[11.321,10.429]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":70,"s":[{"i":[[4.884,-3.179],[-12.16,0],[3.966,2.581]],"o":[[-4.427,2.881],[10.985,0],[-4.884,-3.179]],"v":[[-7.577,14.554],[0.447,-6.544],[7.784,14.554]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":84,"s":[{"i":[[5.367,-3.179],[-13.36,0],[4.358,2.581]],"o":[[-4.864,2.881],[12.069,0],[-5.367,-3.179]],"v":[[-8.36,13.429],[0.455,-7.669],[8.517,13.429]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":104,"s":[{"i":[[6.067,-3.179],[-15.103,0],[4.926,2.581]],"o":[[-5.499,2.881],[13.644,0],[-6.067,-3.179]],"v":[[-9.38,13.554],[0.585,-7.544],[9.699,13.554]],"c":true}]},{"t":112,"s":[{"i":[[6.067,-3.179],[-15.103,0],[4.926,2.581]],"o":[[-5.499,2.881],[13.644,0],[-6.067,-3.179]],"v":[[-9.38,13.554],[0.585,-7.544],[9.699,13.554]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-90],"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":"Round Bottom","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":59,"op":112,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".secondaryOverview","cl":"secondaryOverview","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":549,"s":[100]},{"t":555,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":1,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":1,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[206,709.342],"t":7,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,708.844],"t":9,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,708.163],"t":11,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,707.778],"t":12,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,707.383],"t":13,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,706.991],"t":14,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,706.607],"t":15,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,706.236],"t":16,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,705.536],"t":18,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,704.888],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,704.286],"t":22,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,703.634],"t":24,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,704.162],"t":29,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,704.995],"t":30,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,706.186],"t":31,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,707.757],"t":32,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,709.623],"t":33,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,711.521],"t":34,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,713.117],"t":35,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,714.218],"t":36,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,714.82],"t":37,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,715],"t":38,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,718.61],"t":39,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,723.334],"t":40,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,727.28],"t":41,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,731.651],"t":42,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,737.952],"t":43,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,747.768],"t":44,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,767.765],"t":45,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,783.252],"t":46,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,791.43],"t":47,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,796.66],"t":48,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,800.434],"t":49,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,803.356],"t":50,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,805.726],"t":51,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,807.709],"t":52,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,809.387],"t":53,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,810.811],"t":54,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,812.032],"t":55,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,813.088],"t":56,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,814.009],"t":57,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,814.815],"t":58,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,815.523],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,816.146],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,816.697],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,817.183],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,817.991],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,818.618],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,819.289],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,818.559],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,817.822],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,816.803],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,815.403],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,813.559],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,811.411],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,809.329],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,807.568],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,806.151],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,805.013],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,804.089],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,803.33],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,802.701],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,802.177],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,801.737],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,801.06],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,800.28],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,800],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,801.695],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,805.856],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,811.656],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,818.633],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,826.494],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,835.028],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,844.063],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,853.43],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,862.906],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,872],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,870.974],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,866.807],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,863],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,860.542],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,858.826],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,857.559],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,856.595],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,855.851],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,855.277],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,854.508],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,855.056],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,856.15],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,857.521],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,859.142],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,861.007],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,863.131],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,865.561],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,868.408],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,872],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,858.505],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,846.072],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,835.381],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,826.799],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,820.238],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,815.333],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,811.679],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,808.94],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,806.868],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,805.285],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,804.066],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,803.121],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,802.386],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,801.812],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,801.016],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,800.261],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,799.796],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,799.146],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,797.987],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,796.238],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,793.802],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,790.556],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,786.342],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,780.962],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,774.161],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,765.62],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,754.959],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,741.8],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,725.947],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,707.739],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,688.322],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,669.296],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,651.898],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,636.626],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,623.459],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,612.161],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,602.455],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,594.089],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,586.851],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,580.57],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,575.108],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,570.351],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,566.208],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,562.606],"t":223,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,559.48],"t":224,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,556.781],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,554.462],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,552.488],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,550.826],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,549.449],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,548.332],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,547.454],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,546.798],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,546.346],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,546.8],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,547.177],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,547.656],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,547.94],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,548.258],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,548.613],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,549.008],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,549.448],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,549.938],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,550.483],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,551.089],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,551.76],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,552.504],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,553.322],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,554.216],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,555.181],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,556.206],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,557.271],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,558.349],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,559.409],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,560.422],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,561.368],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,562.234],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,563.016],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,563.716],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,564.338],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,564.888],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,565.372],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,565.798],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,566.171],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,566.496],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,567.025],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,567.564],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,567.182],"t":300,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,566.817],"t":301,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,566.351],"t":302,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,565.762],"t":303,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,565.022],"t":304,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,564.099],"t":305,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,562.959],"t":306,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,561.586],"t":307,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,560.009],"t":308,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,558.327],"t":309,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,556.679],"t":310,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,555.172],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,553.85],"t":312,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,552.709],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,551.73],"t":314,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,550.89],"t":315,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,550.165],"t":316,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,549.538],"t":317,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,548.994],"t":318,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,548.521],"t":319,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,548.109],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,547.75],"t":321,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,547.438],"t":322,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,546.934],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,546.418],"t":327,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,546.909],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,547.33],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,547.84],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,548.444],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,549.146],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,549.951],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,550.867],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,551.897],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,553.05],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,554.331],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,555.75],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,557.313],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,559.03],"t":360,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,560.909],"t":361,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,562.961],"t":362,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,565.196],"t":363,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,567.625],"t":364,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,570.259],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,573.108],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,576.182],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,579.492],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,583.045],"t":369,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,586.844],"t":370,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,590.888],"t":371,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,595.171],"t":372,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,599.675],"t":373,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,604.372],"t":374,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,609.22],"t":375,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,614.165],"t":376,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,619.139],"t":377,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,624.062],"t":378,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,628.854],"t":379,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,633.436],"t":380,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,637.74],"t":381,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,641.713],"t":382,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,645.319],"t":383,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,648.538],"t":384,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,651.365],"t":385,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,653.807],"t":386,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,655.876],"t":387,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,657.593],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,658.978],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,660.055],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,660.846],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,661.373],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,660.714],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,660.036],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,659.208],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,658.241],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,657.143],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,655.925],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,654.595],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,653.159],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,651.626],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,650],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,648.564],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,647.319],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,646.287],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,645.494],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,644.972],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,645.439],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,646.461],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,648.043],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,650.295],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,653.352],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,657.389],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,662.625],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,669.323],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,677.764],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,688.164],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,700.486],"t":424,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,714.241],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,728.508],"t":426,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,742.339],"t":427,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,755.125],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,766.645],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,776.916],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,786.055],"t":431,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,794.201],"t":432,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,801.49],"t":433,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,808.038],"t":434,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,813.944],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,819.291],"t":436,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,824.146],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,828.567],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,832.601],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,836.291],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,839.669],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,842.765],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,845.605],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,848.211],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,850.603],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,852.796],"t":446,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,854.806],"t":447,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,856.646],"t":448,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,858.328],"t":449,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,859.862],"t":450,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,861.259],"t":451,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,862.526],"t":452,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,863.671],"t":453,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,864.701],"t":454,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,865.624],"t":455,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,866.443],"t":456,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,867.166],"t":457,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,867.796],"t":458,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,868.339],"t":459,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,869.178],"t":461,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":16,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.22,"y":1},"o":{"x":0.18,"y":1},"t":23,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.643,-21.893],[-35.357,-21.893]],"c":false}]},{"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-37]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.52],"y":[0.96]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[48]},{"t":18,"s":[64]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","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":1,"k":[{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.22,"y":1},"o":{"x":0.18,"y":1},"t":23,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.643,-21.893],[-35.357,-21.893]],"c":false}]},{"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-7.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.52],"y":[0.96]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[48]},{"t":18,"s":[64]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Left","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":28,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".secondaryOverview","cl":"secondaryOverview","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"t":52,"s":[100],"h":1},{"t":62,"s":[0],"h":1},{"t":112,"s":[100],"h":1},{"t":200,"s":[0],"h":1},{"t":221,"s":[100],"h":1},{"t":408,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,-259.147,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":27,"s":[{"i":[[4.22,-5.198],[6.889,-2.445],[6.141,2.195],[4.414,5.745],[2.09,6.003],[1.842,5.673],[0,0],[-4.629,7.032],[-3.668,2.338],[-9.176,-4.129],[0,0],[-2.537,1.423],[0,0],[-5.764,-2.348],[-3.35,-5.761],[3.559,-9.527],[0,0],[2.211,-5.388]],"o":[[-4.607,5.675],[-6.146,2.181],[-6.823,-2.438],[-3.873,-5.041],[-1.961,-5.633],[-0.673,-2.074],[-3.418,-8.054],[2.391,-3.632],[7.091,-4.519],[0,0],[2.053,0.611],[0,0],[6.766,-3.045],[6.042,2.461],[4.226,7.269],[0,0],[0,0],[-2.542,6.194]],"v":[[26.625,263.759],[9.088,276.927],[-10.477,276.927],[-27.766,263.755],[-34.35,245.857],[-39.92,228.853],[-41.895,222.617],[-38.621,196.593],[-29.625,187.329],[-2.764,182.988],[-0.678,184.077],[3.537,183.327],[5.123,182.613],[23.746,183.97],[38.891,196.367],[42.816,222.402],[40.88,229.024],[34.705,245.369]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":38,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":40,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":49,"s":[{"i":[[0,0],[5.924,-2.615],[6.267,2.766],[3.263,7.561],[2.981,6.909],[0,0],[0,0],[-4.825,8.784],[-3.668,2.709],[-9.176,-4.785],[0,0],[-7.064,3.683],[0,0],[-5.942,-2.295],[-3.35,-6.676],[4.5,-10.429],[0,0],[2.725,-6.315]],"o":[[-3.262,7.56],[-6.266,2.766],[-5.925,-2.615],[0,0],[-2.981,-6.909],[0,0],[-3.988,-9.246],[2.335,-4.251],[7.091,-5.237],[0,0],[7.064,3.683],[0,0],[6.766,-3.528],[6.387,2.466],[4.226,8.423],[0,0],[0,0],[-3.063,7.1]],"v":[[23.515,261.285],[9.088,276.548],[-10.477,276.549],[-24.906,261.285],[-33.85,240.557],[-42.795,219.829],[-48.707,206.127],[-47.871,176.22],[-38.875,165.486],[-13.389,163.498],[-11.803,164.325],[10.412,164.325],[11.998,163.498],[31.496,162.173],[46.641,176.538],[47.316,206.126],[40.88,221.041],[32.705,239.986]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.61,"y":0},"t":57,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":61,"s":[{"i":[[0,0],[5.829,-2.275],[6.166,2.405],[3.21,6.575],[2.933,6.009],[0,0],[0,0],[-4.747,7.639],[-3.609,2.356],[-9.028,-5.782],[0,0],[-6.95,4.451],[0,0],[-5.847,-1.996],[-3.296,-5.806],[4.428,-9.07],[0,0],[2.681,-5.492]],"o":[[-3.21,6.575],[-6.165,2.406],[-5.83,-2.274],[0,0],[-2.933,-6.009],[0,0],[-3.924,-8.041],[2.297,-3.697],[6.977,-4.554],[0,0],[6.95,4.451],[0,0],[6.657,-4.263],[6.284,2.145],[4.158,7.326],[0,0],[0,0],[-3.014,6.174]],"v":[[23.147,263.139],[8.953,276.413],[-10.297,276.414],[-24.493,263.14],[-31.981,245.113],[-39.468,227.086],[-43.871,215.169],[-44.463,189.161],[-35.612,179.825],[-10.537,178.375],[-8.977,179.374],[7.631,179.374],[9.191,178.375],[28.374,176.944],[43.275,189.437],[42.525,215.169],[37.607,228.14],[30.877,244.617]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":67,"s":[{"i":[[0,0],[5.782,-2.283],[6.116,2.414],[3.184,6.6],[2.91,6.031],[0,0],[0,0],[-4.709,7.668],[-3.58,2.365],[-8.956,-2.881],[0,0],[-6.894,2.218],[0,0],[-5.8,-2.003],[-3.269,-5.828],[4.392,-9.104],[0,0],[2.66,-5.513]],"o":[[-3.184,6.599],[-6.116,2.415],[-5.783,-2.283],[0,0],[-2.91,-6.031],[0,0],[-3.893,-8.071],[2.279,-3.711],[6.921,-4.571],[0,0],[6.894,2.218],[0,0],[6.604,-2.124],[6.234,2.153],[4.125,7.353],[0,0],[0,0],[-2.99,6.198]],"v":[[22.966,262.838],[8.886,276.162],[-10.209,276.162],[-24.29,262.838],[-31.064,244.743],[-37.837,226.649],[-41.5,214.688],[-42.792,188.581],[-34.012,179.21],[-9.139,174.179],[-7.591,174.677],[6.267,174.677],[7.814,174.179],[26.844,176.318],[41.625,188.859],[40.176,214.688],[36.003,227.707],[29.98,244.245]],"c":true}]},{"i":{"x":0.48,"y":1},"o":{"x":0.26,"y":1},"t":111,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,1.445],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,1.445],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[22.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-30.85,245.866],[-37.795,227.978],[-42.707,216.152],[-41.871,190.343],[-32.875,181.079],[-7.389,179.363],[-5.803,180.077],[5.412,180.077],[6.998,179.363],[26.496,178.22],[41.641,190.617],[42.316,216.152],[38.88,229.024],[31.705,245.374]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"t":118,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.902,"y":0},"o":{"x":0.3,"y":0},"t":119,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":129,"s":[{"i":[[0,0],[6.002,-2.085],[6.349,2.205],[3.305,6.027],[3.02,5.508],[0,0],[0,0],[-4.888,7.002],[-3.716,2.159],[-9.296,-3.814],[0,0],[-7.157,2.936],[0,0],[-6.02,-1.829],[-3.393,-5.322],[4.559,-8.314],[0,0],[2.761,-5.034]],"o":[[-3.305,6.027],[-6.349,2.205],[-6.003,-2.085],[0,0],[-3.02,-5.508],[0,0],[-4.041,-7.37],[2.366,-3.389],[7.184,-4.175],[0,0],[7.157,2.936],[0,0],[6.855,-2.813],[6.471,1.966],[4.282,6.715],[0,0],[0,0],[-3.104,5.66]],"v":[[23.828,264.941],[9.213,277.109],[-10.609,277.11],[-25.226,264.942],[-34.288,248.418],[-43.349,231.894],[-49.339,220.97],[-48.492,197.13],[-39.379,188.572],[-13.559,186.988],[-11.952,187.647],[10.554,187.647],[12.161,186.988],[31.914,185.931],[47.257,197.383],[47.941,220.97],[41.421,232.86],[33.139,247.963]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.78,"y":0},"t":144,"s":[{"i":[[0,0],[5.924,-2.439],[6.267,2.579],[3.263,7.051],[2.981,6.443],[0,0],[0,0],[-4.825,8.191],[-3.668,2.526],[-9.176,-4.462],[0,0],[-7.064,3.435],[0,0],[-5.942,-2.14],[-3.35,-6.225],[4.5,-9.725],[0,0],[2.725,-5.889]],"o":[[-3.262,7.05],[-6.266,2.58],[-5.925,-2.439],[0,0],[-2.981,-6.443],[0,0],[-3.988,-8.622],[2.335,-3.964],[7.091,-4.884],[0,0],[7.064,3.435],[0,0],[6.766,-3.29],[6.387,2.3],[4.226,7.855],[0,0],[0,0],[-3.063,6.621]],"v":[[23.515,262.501],[9.088,276.734],[-10.477,276.735],[-24.906,262.501],[-33.85,243.171],[-42.795,223.841],[-48.707,211.063],[-47.871,183.174],[-38.875,173.164],[-13.389,171.31],[-11.803,172.081],[10.412,172.081],[11.998,171.31],[31.496,170.074],[46.641,183.471],[47.316,211.063],[40.88,224.972],[32.705,242.639]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.4,"y":0},"t":146,"s":[{"i":[[0,0],[5.924,-2.439],[6.267,2.579],[3.263,7.051],[2.981,6.443],[0,0],[0,0],[-4.825,8.191],[-3.668,2.526],[-9.176,-4.462],[0,0],[-7.064,3.435],[0,0],[-5.942,-2.14],[-3.35,-6.225],[4.5,-9.725],[0,0],[2.725,-5.889]],"o":[[-3.262,7.05],[-6.266,2.58],[-5.925,-2.439],[0,0],[-2.981,-6.443],[0,0],[-3.988,-8.622],[2.335,-3.964],[7.091,-4.884],[0,0],[7.064,3.435],[0,0],[6.766,-3.29],[6.387,2.3],[4.226,7.855],[0,0],[0,0],[-3.063,6.621]],"v":[[23.515,262.501],[9.088,276.734],[-10.477,276.735],[-24.906,262.501],[-33.85,243.171],[-42.795,223.841],[-48.707,211.063],[-47.871,183.174],[-38.875,173.164],[-13.389,171.31],[-11.803,172.081],[10.412,172.081],[11.998,171.31],[31.496,170.074],[46.641,183.471],[47.316,211.063],[40.88,224.972],[32.705,242.639]],"c":true}]},{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.884},"t":156,"s":[{"i":[[0,0],[6.002,-2.085],[6.349,2.205],[3.305,6.027],[3.02,5.508],[0,0],[0,0],[-4.888,7.002],[-3.716,2.159],[-9.296,-3.814],[0,0],[-7.157,2.936],[0,0],[-6.02,-1.829],[-3.393,-5.322],[4.559,-8.314],[0,0],[2.761,-5.034]],"o":[[-3.305,6.027],[-6.349,2.205],[-6.003,-2.085],[0,0],[-3.02,-5.508],[0,0],[-4.041,-7.37],[2.366,-3.389],[7.184,-4.175],[0,0],[7.157,2.936],[0,0],[6.855,-2.813],[6.471,1.966],[4.282,6.715],[0,0],[0,0],[-3.104,5.66]],"v":[[23.828,264.941],[9.213,277.109],[-10.609,277.11],[-25.226,264.942],[-34.288,248.418],[-43.349,231.894],[-49.339,220.97],[-48.492,197.13],[-39.379,188.572],[-13.559,186.988],[-11.952,187.647],[10.554,187.647],[12.161,186.988],[31.914,185.931],[47.257,197.383],[47.941,220.97],[41.421,232.86],[33.139,247.963]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":175,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":195,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"t":200,"s":[{"i":[[0,0],[4.982,-1.843],[5.269,1.949],[2.743,5.327],[2.507,4.868],[0,0],[0,0],[-4.057,6.188],[-3.084,1.909],[-7.716,-3.371],[0,0],[-5.94,2.595],[0,0],[-4.997,-1.617],[-2.817,-4.703],[3.784,-7.348],[0,0],[2.291,-4.449]],"o":[[-2.743,5.326],[-5.269,1.949],[-4.982,-1.842],[0,0],[-2.507,-4.868],[0,0],[-3.354,-6.514],[1.963,-2.995],[5.963,-3.69],[0,0],[5.94,2.595],[0,0],[5.69,-2.486],[5.371,1.738],[3.554,5.935],[0,0],[0,0],[-2.576,5.002]],"v":[[21.328,266.623],[7.572,277.365],[-8.88,277.366],[-21.013,266.612],[-30.158,252.046],[-38.929,237.463],[-42.276,232.155],[-38.901,208.3],[-31.337,200.737],[-7.657,199.329],[-6.324,199.912],[6.078,199.877],[7.412,199.294],[26.437,198.157],[39.172,208.278],[42.466,230.78],[38.179,240.068],[31.18,251.666]],"c":true}],"h":1},{"i":{"x":0.8,"y":1},"o":{"x":0.167,"y":0.167},"t":221,"s":[{"i":[[0,0],[-6.469,2.54],[-6.843,-2.686],[-3.562,-7.344],[-2.238,-6.985],[0,0],[0,0],[6.26,-8],[4.298,-2.248],[9.409,5.544],[0,0],[2.81,-1.732],[0,0],[6.751,1.517],[4.533,6.044],[-3.466,10.58],[0,0],[-1.94,6.445]],"o":[[3.562,-7.343],[6.843,-2.687],[6.47,2.54],[0,0],[2.25,7.021],[0,0],[3.257,9.331],[-3.029,3.872],[-8.309,4.346],[0,0],[-2.38,-1.461],[0,0],[-6.856,4.193],[-7.256,-1.631],[-5.72,-7.626],[0,0],[0,0],[2.154,-7.155]],"v":[[-25.972,255.773],[-10.844,240.983],[10.52,240.983],[26.276,255.808],[31.363,274.998],[37.793,295.9],[41.622,309.746],[42.615,338.568],[31.6,348.034],[3.818,347.339],[2.192,346.381],[-2.497,346.652],[-4.104,347.635],[-23.931,350.481],[-42.288,338.404],[-42.272,310.024],[-38.575,296.317],[-32.279,277.471]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":225,"s":[{"i":[[0,0],[-6.469,2.54],[-6.843,-2.686],[-3.562,-7.344],[-2.238,-6.985],[0,0],[0,0],[6.26,-8],[4.298,-2.248],[9.409,5.544],[0,0],[2.81,-1.732],[0,0],[6.751,1.517],[4.533,6.044],[-3.466,10.58],[0,0],[-1.94,6.445]],"o":[[3.562,-7.343],[6.843,-2.687],[6.47,2.54],[0,0],[2.25,7.021],[0,0],[3.257,9.331],[-3.029,3.872],[-8.309,4.346],[0,0],[-2.38,-1.461],[0,0],[-6.856,4.193],[-7.256,-1.631],[-5.72,-7.626],[0,0],[0,0],[2.154,-7.155]],"v":[[-25.972,255.773],[-10.844,240.983],[10.52,240.983],[26.276,255.808],[31.363,274.998],[37.793,295.9],[41.622,309.746],[42.615,338.568],[31.6,348.034],[3.818,347.339],[2.192,346.381],[-2.497,346.652],[-4.104,347.635],[-23.931,350.481],[-42.288,338.404],[-42.272,310.024],[-38.575,296.317],[-32.279,277.471]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":230,"s":[{"i":[[0,0],[-6.469,2.537],[-6.843,-2.683],[-3.562,-7.334],[-3.256,-6.702],[0,0],[0,0],[5.268,-8.52],[4.005,-2.628],[10.02,4.641],[0,0],[7.713,-3.573],[0,0],[6.489,2.226],[3.658,6.475],[-4.914,10.116],[0,0],[-2.976,6.126]],"o":[[3.562,-7.333],[6.843,-2.683],[6.47,2.537],[0,0],[3.256,6.702],[0,0],[4.355,8.968],[-2.55,4.123],[-7.743,5.08],[0,0],[-7.714,-3.573],[0,0],[-7.388,3.422],[-6.974,-2.392],[-4.615,-8.17],[0,0],[0,0],[3.345,-6.886]],"v":[[-26.597,256.303],[-10.844,241.499],[10.52,241.498],[26.276,256.303],[36.042,276.409],[45.809,296.515],[52.265,309.806],[51.352,338.814],[41.529,349.227],[13.7,351.155],[11.968,350.353],[-12.29,350.353],[-14.021,351.155],[-35.312,352.44],[-51.849,338.506],[-52.586,309.806],[-45.559,295.339],[-36.632,276.963]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":235,"s":[{"i":[[0,0],[-6.469,2.527],[-6.843,-2.672],[-3.562,-7.305],[-2.238,-6.948],[0,0],[0,0],[6.26,-7.958],[4.298,-2.236],[9.409,5.515],[0,0],[2.81,-1.723],[0,0],[6.751,1.509],[4.533,6.012],[-3.466,10.525],[0,0],[-1.94,6.411]],"o":[[3.562,-7.305],[6.843,-2.673],[6.47,2.527],[0,0],[2.25,6.984],[0,0],[3.257,9.283],[-3.029,3.851],[-8.309,4.323],[0,0],[-2.38,-1.454],[0,0],[-6.856,4.171],[-7.256,-1.622],[-5.72,-7.586],[0,0],[0,0],[2.154,-7.118]],"v":[[-25.972,256.282],[-10.844,241.57],[10.52,241.569],[26.276,256.317],[31.363,275.406],[37.793,296.199],[41.622,309.972],[42.615,338.644],[31.6,348.06],[3.818,347.368],[2.192,346.415],[-2.497,346.685],[-4.104,347.662],[-23.931,350.493],[-42.288,338.48],[-42.272,310.249],[-38.575,296.613],[-32.279,277.866]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":240,"s":[{"i":[[0,0],[-6.469,2.537],[-6.843,-2.683],[-3.562,-7.334],[-3.256,-6.702],[0,0],[0,0],[5.268,-8.52],[4.005,-2.628],[10.02,4.641],[0,0],[7.713,-3.573],[0,0],[6.489,2.226],[3.658,6.475],[-4.914,10.116],[0,0],[-2.976,6.126]],"o":[[3.562,-7.333],[6.843,-2.683],[6.47,2.537],[0,0],[3.256,6.702],[0,0],[4.355,8.968],[-2.55,4.123],[-7.743,5.08],[0,0],[-7.714,-3.573],[0,0],[-7.388,3.422],[-6.974,-2.392],[-4.615,-8.17],[0,0],[0,0],[3.345,-6.886]],"v":[[-26.597,256.303],[-10.844,241.499],[10.52,241.498],[26.276,256.303],[36.042,276.409],[45.809,296.515],[52.265,309.806],[51.352,338.814],[41.529,349.227],[13.7,351.155],[11.968,350.353],[-12.29,350.353],[-14.021,351.155],[-35.312,352.44],[-51.849,338.506],[-52.586,309.806],[-45.559,295.339],[-36.632,276.963]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.17,"y":0},"t":250,"s":[{"i":[[0,0],[-6.469,2.528],[-6.843,-2.674],[-3.562,-7.309],[-2.238,-6.951],[0,0],[0,0],[6.26,-7.962],[4.298,-2.237],[9.409,5.517],[0,0],[2.81,-1.724],[0,0],[6.751,1.51],[4.533,6.015],[-3.466,10.53],[0,0],[-1.94,6.414]],"o":[[3.562,-7.308],[6.843,-2.674],[6.47,2.528],[0,0],[2.25,6.988],[0,0],[3.257,9.287],[-3.029,3.853],[-8.309,4.325],[0,0],[-2.38,-1.454],[0,0],[-6.856,4.173],[-7.256,-1.623],[-5.72,-7.59],[0,0],[0,0],[2.154,-7.121]],"v":[[-25.972,256.238],[-10.844,241.519],[10.52,241.518],[26.276,256.273],[31.363,275.37],[37.793,296.172],[41.622,309.952],[42.615,338.637],[31.6,348.057],[3.818,347.366],[2.192,346.412],[-2.497,346.682],[-4.104,347.66],[-23.931,350.492],[-42.288,338.473],[-42.272,310.229],[-38.575,296.587],[-32.279,277.831]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.5,"y":0},"t":296,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[32.971,273.182],[41.915,291.071],[47.827,302.896],[46.991,328.705],[37.996,337.969],[12.509,339.685],[10.924,338.971],[-11.292,338.971],[-12.878,339.685],[-32.376,340.828],[-47.521,328.431],[-48.196,302.896],[-41.76,290.025],[-33.585,273.675]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.5,"y":0},"t":313,"s":[{"i":[[0,0],[-5.924,2.351],[-6.267,-2.486],[-3.263,-6.797],[-2.981,-6.211],[0,0],[0,0],[4.825,-7.896],[3.668,-2.435],[9.176,4.301],[0,0],[7.064,-3.311],[0,0],[5.942,2.063],[3.35,6.001],[-4.5,9.375],[0,0],[-2.725,5.677]],"o":[[3.262,-6.796],[6.266,-2.487],[5.925,2.351],[0,0],[2.981,6.211],[0,0],[3.988,8.311],[-2.335,3.821],[-7.091,4.707],[0,0],[-7.064,-3.311],[0,0],[-6.766,3.172],[-6.387,-2.217],[-4.226,-7.572],[0,0],[0,0],[3.063,-6.382]],"v":[[-24.394,255.941],[-9.968,242.221],[9.597,242.22],[24.026,255.941],[32.971,274.574],[41.915,294.249],[47.827,306.566],[46.991,333.45],[37.996,343.1],[12.509,344.887],[10.924,344.143],[-11.292,344.143],[-12.878,344.887],[-32.376,346.078],[-47.521,333.164],[-48.196,306.566],[-41.76,293.159],[-33.585,275.087]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.5,"y":0},"t":318,"s":[{"i":[[0,0],[-5.924,2.351],[-6.267,-2.486],[-3.263,-6.797],[-2.981,-6.211],[0,0],[0,0],[4.825,-7.896],[3.668,-2.435],[9.176,4.301],[0,0],[7.064,-3.311],[0,0],[5.942,2.063],[3.35,6.001],[-4.5,9.375],[0,0],[-2.725,5.677]],"o":[[3.262,-6.796],[6.266,-2.487],[5.925,2.351],[0,0],[2.981,6.211],[0,0],[3.988,8.311],[-2.335,3.821],[-7.091,4.707],[0,0],[-7.064,-3.311],[0,0],[-6.766,3.172],[-6.387,-2.217],[-4.226,-7.572],[0,0],[0,0],[3.063,-6.382]],"v":[[-24.394,255.941],[-9.968,242.221],[9.597,242.22],[24.026,255.941],[30.971,274.574],[38.915,294.249],[43.827,306.566],[42.991,333.45],[33.996,343.1],[8.509,344.887],[6.924,344.143],[-7.292,344.143],[-8.878,344.887],[-28.376,346.078],[-43.521,333.164],[-44.196,306.566],[-38.76,293.159],[-31.585,275.087]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.5,"y":0},"t":323,"s":[{"i":[[0,0],[-6.37,2.351],[-6.738,-2.486],[-3.508,-6.797],[-3.206,-6.211],[0,0],[0,0],[5.188,-7.896],[3.944,-2.435],[9.867,4.301],[0,0],[7.596,-3.311],[0,0],[6.39,2.063],[3.602,6.001],[-4.839,9.375],[0,0],[-2.93,5.677]],"o":[[3.508,-6.796],[6.738,-2.487],[6.371,2.351],[0,0],[3.206,6.211],[0,0],[4.289,8.311],[-2.511,3.821],[-7.625,4.707],[0,0],[-7.596,-3.311],[0,0],[-7.276,3.172],[-6.868,-2.217],[-4.545,-7.572],[0,0],[0,0],[3.294,-6.382]],"v":[[-26.198,255.941],[-10.685,242.221],[10.353,242.22],[25.868,255.941],[35.486,274.574],[45.103,294.249],[51.461,306.566],[50.562,333.45],[40.889,343.1],[13.484,344.887],[11.779,344.143],[-12.109,344.143],[-13.814,344.887],[-34.78,346.078],[-51.065,333.164],[-51.791,306.566],[-44.871,293.159],[-36.08,275.087]],"c":true}]},{"i":{"x":0.58,"y":1},"o":{"x":0.42,"y":0},"t":328,"s":[{"i":[[0,0],[-5.924,2.351],[-6.267,-2.486],[-3.263,-6.797],[-2.981,-6.211],[0,0],[0,0],[4.825,-7.896],[3.668,-2.435],[9.176,4.301],[0,0],[7.064,-3.311],[0,0],[5.942,2.063],[3.35,6.001],[-4.5,9.375],[0,0],[-2.725,5.677]],"o":[[3.262,-6.796],[6.266,-2.487],[5.925,2.351],[0,0],[2.981,6.211],[0,0],[3.988,8.311],[-2.335,3.821],[-7.091,4.707],[0,0],[-7.064,-3.311],[0,0],[-6.766,3.172],[-6.387,-2.217],[-4.226,-7.572],[0,0],[0,0],[3.063,-6.382]],"v":[[-24.394,255.941],[-9.968,242.221],[9.597,242.22],[24.026,255.941],[30.971,274.574],[38.915,294.249],[43.827,306.566],[42.991,333.45],[33.996,343.1],[8.509,344.887],[6.924,344.143],[-7.292,344.143],[-8.878,344.887],[-28.376,346.078],[-43.521,333.164],[-44.196,306.566],[-38.76,293.159],[-31.585,275.087]],"c":true}]},{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":343,"s":[{"i":[[0,0],[-5.924,2.351],[-6.267,-2.486],[-3.263,-6.797],[-2.981,-6.211],[0,0],[0,0],[4.825,-7.896],[3.668,-2.435],[9.176,4.301],[0,0],[7.064,-3.311],[0,0],[5.942,2.063],[3.35,6.001],[-4.5,9.375],[0,0],[-2.725,5.677]],"o":[[3.262,-6.796],[6.266,-2.487],[5.925,2.351],[0,0],[2.981,6.211],[0,0],[3.988,8.311],[-2.335,3.821],[-7.091,4.707],[0,0],[-7.064,-3.311],[0,0],[-6.766,3.172],[-6.387,-2.217],[-4.226,-7.572],[0,0],[0,0],[3.063,-6.382]],"v":[[-24.394,255.941],[-9.968,242.221],[9.597,242.22],[24.026,255.941],[32.971,274.574],[41.915,294.249],[47.827,306.566],[46.991,333.45],[37.996,343.1],[12.509,344.887],[10.924,344.143],[-11.292,344.143],[-12.878,344.887],[-32.376,346.078],[-47.521,333.164],[-48.196,306.566],[-41.76,293.159],[-33.585,275.087]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.5,"y":0},"t":370,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[32.971,273.182],[41.915,291.071],[47.827,302.896],[46.991,328.705],[37.996,337.969],[12.509,339.685],[10.924,338.971],[-11.292,338.971],[-12.878,339.685],[-32.376,340.828],[-47.521,328.431],[-48.196,302.896],[-41.76,290.025],[-33.585,273.675]],"c":true}]},{"i":{"x":0.59,"y":1},"o":{"x":0.5,"y":0},"t":389,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[32.971,273.182],[41.915,291.071],[47.827,302.896],[46.991,328.705],[37.996,337.969],[12.509,339.685],[10.924,338.971],[-11.292,338.971],[-12.878,339.685],[-32.376,340.828],[-47.521,328.431],[-48.196,302.896],[-41.76,290.025],[-33.585,273.675]],"c":true}]},{"t":406,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[30.971,273.182],[38.915,291.071],[43.202,302.895],[42.366,328.704],[33.371,337.968],[7.884,339.684],[6.299,338.97],[-6.167,338.97],[-7.753,339.684],[-27.251,340.827],[-42.396,328.43],[-43.071,302.895],[-38.76,290.025],[-31.585,273.675]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"animated arrow","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":27,"op":408,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".surfaceOverview","cl":"surfaceOverview","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,446,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[412,892],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.886274509804,0.952941176471,0.686274509804,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":467,"st":-145,"ct":1,"bm":0}]},{"id":"comp_2","nm":"Part01_ThumbDemo_Overview_V02","fr":60,"pfr":1,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"OVERSHOOT THUMB","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":246,"s":[289]},{"t":331,"s":[329]}],"ix":3},"y":{"a":0,"k":758,"ix":4}},"a":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":321,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":371,"s":[40,0,0]}],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":425,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"HAND NULL","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.39],"y":[1]},"o":{"x":[0.59],"y":[0]},"t":3,"s":[10]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.15],"y":[0]},"t":59,"s":[0]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":95,"s":[-3]},{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":122,"s":[-4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.166],"y":[0]},"t":170,"s":[15]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.5],"y":[0]},"t":201,"s":[15]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":231,"s":[12]},{"i":{"x":[0.22],"y":[0.993]},"o":{"x":[0.41],"y":[0]},"t":246,"s":[15.59]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":290,"s":[40]},{"i":{"x":[0.44],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":321,"s":[40]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":381,"s":[15]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":385,"s":[15]},{"t":425,"s":[52]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.06],"y":[0.36]},"t":0,"s":[260]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":73,"s":[123]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.5],"y":[0]},"t":201,"s":[123]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":231,"s":[0]},{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":246,"s":[0]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":256.666,"s":[60.8]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":310,"s":[152]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":331,"s":[152]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":371,"s":[134]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":385,"s":[134]},{"t":425,"s":[264]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.194],"y":[0]},"t":0,"s":[273.366]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":63,"s":[162]},{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":122,"s":[162]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.259],"y":[0]},"t":170,"s":[0]},{"i":{"x":[0.33],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":246,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":310,"s":[13]},{"i":{"x":[0.44],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":321,"s":[13]},{"i":{"x":[0.44],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":381,"s":[-109]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":385,"s":[-109]},{"t":425,"s":[67]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":425,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Thumb - KO","parent":2,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"k":[{"s":[17.7],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.084],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.752],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.548],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.405],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.298],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.213],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.144],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.086],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.037],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.995],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.958],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.926],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.898],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.874],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.852],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.832],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.815],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.8],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.786],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.773],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.763],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.753],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.744],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.73],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.715],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"p":{"k":[{"s":[0,0,0],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.015,0,0],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.077,0,0],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.192,0,0],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.364,0,0],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.598,0,0],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.902,0,0],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.285,0,0],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.76,0,0],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.347,0,0],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.074,0,0],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.968,0,0],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.068,0,0],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.423,0,0],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.089,0,0],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.109,0,0],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.416,0,0],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.732,0,0],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.688,0,0],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.11,0,0],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.047,0,0],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.624,0,0],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.922,0,0],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-20,0,0],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-20,0,0],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.792,0,0],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.993,0,0],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.321,0,0],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.437,0,0],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.855,0,0],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-7.728,0,0],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.403,0,0],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.711,0,0],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.481,0,0],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.587,0,0],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.945,0,0],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.494,0,0],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.2,0,0],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.041,0,0],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"a":{"a":0,"k":[0,49,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":25,"nm":"Elevation","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[0,0,0,0.25],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":63.75,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":180,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":4,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":8,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.095,4.103],[20.866,-4.391],[30.055,14.909],[-19.458,9.569],[-43.79,10.76],[-18.62,4.309],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.284,-4.689],[-20.866,4.391],[-30.056,-14.63],[31.09,-15.283],[13.475,-3.311],[35.363,-7.848],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.667,116.665],[-117.97,119.232],[-229.615,116.95],[-229.867,50.888],[-139.016,15.389],[-88.152,4.787],[-12.612,-36.255]],"c":true}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.098,4.127],[20.863,-4.414],[30.005,14.508],[-19.477,9.414],[-43.782,10.829],[-18.619,4.316],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.287,-4.716],[-20.863,4.414],[-30.007,-14.235],[31.121,-15.037],[13.472,-3.332],[35.361,-7.859],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.82,116.749],[-117.884,119.917],[-226.898,115.937],[-226.972,51.297],[-139.102,14.702],[-86.526,4.409],[-12.612,-36.255]],"c":true}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.099,4.142],[20.861,-4.429],[29.974,14.261],[-19.489,9.319],[-43.776,10.871],[-18.619,4.32],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.289,-4.733],[-20.861,4.429],[-29.977,-13.992],[31.139,-14.886],[13.471,-3.345],[35.36,-7.866],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.3,116.8],[-117.832,120.338],[-225.228,115.315],[-225.194,51.548],[-139.154,14.28],[-85.528,4.177],[-12.612,-36.255]],"c":true}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.101,4.152],[20.86,-4.438],[29.953,14.089],[-19.498,9.253],[-43.773,10.9],[-18.618,4.323],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.291,-4.744],[-20.86,4.438],[-29.956,-13.823],[31.153,-14.781],[13.469,-3.354],[35.36,-7.871],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.936,116.835],[-117.796,120.632],[-224.061,114.88],[-223.952,51.724],[-139.191,13.985],[-84.829,4.015],[-12.612,-36.255]],"c":true}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.16],[20.859,-4.446],[29.937,13.959],[-19.504,9.203],[-43.77,10.923],[-18.618,4.325],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.292,-4.753],[-20.859,4.446],[-29.94,-13.695],[31.162,-14.701],[13.469,-3.361],[35.359,-7.874],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.662,116.862],[-117.768,120.854],[-223.181,114.552],[-223.014,51.856],[-139.219,13.762],[-84.303,3.893],[-12.612,-36.255]],"c":true}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.166],[20.858,-4.452],[29.924,13.857],[-19.509,9.163],[-43.768,10.94],[-18.618,4.326],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.293,-4.76],[-20.858,4.452],[-29.927,-13.594],[31.17,-14.638],[13.468,-3.366],[35.359,-7.877],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.446,116.884],[-117.746,121.029],[-222.486,114.293],[-222.274,51.961],[-139.241,13.586],[-83.887,3.796],[-12.612,-36.255]],"c":true}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.103,4.171],[20.858,-4.457],[29.914,13.773],[-19.513,9.131],[-43.766,10.954],[-18.618,4.328],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.766],[-20.858,4.457],[-29.917,-13.511],[31.177,-14.587],[13.467,-3.371],[35.359,-7.88],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.269,116.901],[-117.728,121.172],[-221.919,114.082],[-221.67,52.046],[-139.258,13.443],[-83.548,3.717],[-12.612,-36.255]],"c":true}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.175],[20.857,-4.461],[29.905,13.703],[-19.516,9.104],[-43.764,10.966],[-18.617,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.771],[-20.857,4.461],[-29.908,-13.443],[31.182,-14.544],[13.467,-3.375],[35.358,-7.882],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.121,116.915],[-117.714,121.291],[-221.446,113.906],[-221.166,52.118],[-139.273,13.323],[-83.265,3.652],[-12.612,-36.255]],"c":true}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.179],[20.857,-4.464],[29.897,13.644],[-19.519,9.081],[-43.763,10.977],[-18.617,4.33],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.775],[-20.857,4.464],[-29.901,-13.384],[31.186,-14.508],[13.467,-3.378],[35.358,-7.883],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.997,116.928],[-117.701,121.392],[-221.044,113.756],[-220.739,52.178],[-139.286,13.222],[-83.025,3.596],[-12.612,-36.255]],"c":true}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.182],[20.856,-4.467],[29.891,13.593],[-19.522,9.062],[-43.762,10.985],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.778],[-20.856,4.467],[-29.895,-13.334],[31.19,-14.477],[13.466,-3.38],[35.358,-7.885],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.889,116.938],[-117.69,121.479],[-220.7,113.628],[-220.372,52.23],[-139.297,13.135],[-82.819,3.548],[-12.612,-36.255]],"c":true}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.184],[20.856,-4.47],[29.886,13.549],[-19.524,9.045],[-43.761,10.993],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.781],[-20.856,4.47],[-29.89,-13.291],[31.194,-14.45],[13.466,-3.383],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.796,116.947],[-117.681,121.554],[-220.401,113.516],[-220.054,52.275],[-139.306,13.059],[-82.64,3.507],[-12.612,-36.255]],"c":true}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.187],[20.856,-4.472],[29.881,13.51],[-19.526,9.03],[-43.76,10.999],[-18.617,4.332],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.784],[-20.856,4.472],[-29.885,-13.253],[31.197,-14.426],[13.466,-3.385],[35.358,-7.887],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.715,116.955],[-117.673,121.62],[-220.14,113.419],[-219.776,52.314],[-139.314,12.993],[-82.484,3.47],[-12.612,-36.255]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.189],[20.856,-4.474],[29.877,13.477],[-19.527,9.017],[-43.76,11.005],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.786],[-20.856,4.474],[-29.881,-13.219],[31.199,-14.406],[13.465,-3.386],[35.357,-7.888],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.643,116.962],[-117.665,121.678],[-219.911,113.334],[-219.531,52.349],[-139.322,12.935],[-82.347,3.438],[-12.612,-36.255]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.191],[20.855,-4.476],[29.873,13.447],[-19.529,9.005],[-43.759,11.01],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.788],[-20.855,4.476],[-29.877,-13.19],[31.201,-14.387],[13.465,-3.388],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.58,116.969],[-117.659,121.729],[-219.708,113.258],[-219.316,52.379],[-139.328,12.884],[-82.226,3.41],[-12.612,-36.255]],"c":true}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.192],[20.855,-4.477],[29.87,13.42],[-19.53,8.995],[-43.758,11.015],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.79],[-20.855,4.477],[-29.874,-13.164],[31.203,-14.371],[13.465,-3.389],[35.357,-7.89],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.524,116.974],[-117.654,121.774],[-219.529,113.191],[-219.124,52.406],[-139.334,12.839],[-82.118,3.385],[-12.612,-36.255]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.194],[20.855,-4.478],[29.867,13.397],[-19.531,8.986],[-43.758,11.019],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.791],[-20.855,4.478],[-29.871,-13.141],[31.205,-14.357],[13.465,-3.391],[35.357,-7.89],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.475,116.979],[-117.649,121.815],[-219.369,113.132],[-218.955,52.43],[-139.339,12.798],[-82.023,3.363],[-12.612,-36.255]],"c":true}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.195],[20.855,-4.48],[29.864,13.376],[-19.532,8.978],[-43.757,11.022],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.793],[-20.855,4.48],[-29.868,-13.12],[31.207,-14.344],[13.465,-3.392],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.43,116.983],[-117.644,121.85],[-219.227,113.079],[-218.803,52.451],[-139.343,12.762],[-81.938,3.343],[-12.612,-36.255]],"c":true}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.196],[20.855,-4.481],[29.862,13.357],[-19.533,8.971],[-43.757,11.026],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.794],[-20.855,4.481],[-29.866,-13.102],[31.208,-14.332],[13.465,-3.393],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.391,116.987],[-117.64,121.882],[-219.101,113.032],[-218.669,52.47],[-139.347,12.73],[-81.862,3.326],[-12.612,-36.255]],"c":true}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.197],[20.855,-4.482],[29.86,13.34],[-19.534,8.965],[-43.757,11.028],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.795],[-20.855,4.482],[-29.864,-13.085],[31.21,-14.322],[13.465,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.356,116.991],[-117.637,121.911],[-218.988,112.99],[-218.549,52.487],[-139.351,12.702],[-81.795,3.31],[-12.612,-36.255]],"c":true}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.198],[20.854,-4.483],[29.858,13.326],[-19.535,8.959],[-43.756,11.031],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.796],[-20.854,4.483],[-29.862,-13.071],[31.211,-14.313],[13.464,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.324,116.994],[-117.633,121.936],[-218.888,112.952],[-218.441,52.503],[-139.354,12.676],[-81.735,3.296],[-12.612,-36.255]],"c":true}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.199],[20.854,-4.483],[29.856,13.312],[-19.535,8.954],[-43.756,11.033],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.797],[-20.854,4.483],[-29.861,-13.058],[31.212,-14.305],[13.464,-3.395],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.297,116.997],[-117.631,121.959],[-218.798,112.919],[-218.346,52.516],[-139.357,12.654],[-81.681,3.284],[-12.612,-36.255]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.199],[20.854,-4.484],[29.855,13.301],[-19.536,8.949],[-43.756,11.035],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.798],[-20.854,4.484],[-29.859,-13.046],[31.213,-14.298],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.272,116.999],[-117.628,121.979],[-218.719,112.889],[-218.261,52.528],[-139.359,12.634],[-81.633,3.273],[-12.612,-36.255]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.2],[20.854,-4.485],[29.854,13.29],[-19.537,8.945],[-43.756,11.037],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.799],[-20.854,4.485],[-29.858,-13.036],[31.213,-14.291],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.25,117.001],[-117.626,121.996],[-218.648,112.863],[-218.186,52.539],[-139.361,12.616],[-81.591,3.263],[-12.612,-36.255]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.485],[29.852,13.281],[-19.537,8.942],[-43.755,11.039],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.799],[-20.854,4.485],[-29.857,-13.027],[31.214,-14.286],[13.464,-3.397],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.23,117.003],[-117.624,122.012],[-218.586,112.84],[-218.12,52.548],[-139.363,12.6],[-81.554,3.254],[-12.612,-36.255]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.486],[29.851,13.273],[-19.537,8.939],[-43.755,11.04],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.856,-13.019],[31.215,-14.281],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.213,117.005],[-117.622,122.026],[-218.531,112.819],[-218.062,52.556],[-139.365,12.586],[-81.521,3.247],[-12.612,-36.255]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.486],[29.85,13.266],[-19.538,8.936],[-43.755,11.041],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.855,-13.012],[31.215,-14.277],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.199,117.006],[-117.621,122.038],[-218.483,112.801],[-218.011,52.563],[-139.366,12.574],[-81.493,3.24],[-12.612,-36.255]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.486],[29.85,13.26],[-19.538,8.933],[-43.755,11.042],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.486],[-29.854,-13.006],[31.216,-14.273],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.186,117.007],[-117.619,122.048],[-218.442,112.786],[-217.967,52.57],[-139.368,12.564],[-81.468,3.234],[-12.612,-36.255]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.255],[-19.538,8.931],[-43.755,11.043],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-13.001],[31.216,-14.27],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.174,117.009],[-117.618,122.057],[-218.406,112.773],[-217.929,52.575],[-139.369,12.555],[-81.446,3.229],[-12.612,-36.255]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.25],[-19.538,8.93],[-43.755,11.044],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-12.996],[31.216,-14.267],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.165,117.009],[-117.617,122.065],[-218.376,112.761],[-217.896,52.58],[-139.37,12.547],[-81.428,3.225],[-12.612,-36.255]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.246],[-19.539,8.928],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.992],[31.217,-14.265],[13.464,-3.399],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.157,117.01],[-117.617,122.071],[-218.35,112.752],[-217.869,52.583],[-139.371,12.541],[-81.413,3.221],[-12.612,-36.255]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.243],[-19.539,8.927],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.99],[31.217,-14.263],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.151,117.011],[-117.616,122.077],[-218.33,112.744],[-217.847,52.586],[-139.371,12.535],[-81.401,3.219],[-12.612,-36.255]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.847,13.241],[-19.539,8.926],[-43.755,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.987],[31.217,-14.261],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.146,117.011],[-117.615,122.081],[-218.313,112.738],[-217.83,52.589],[-139.372,12.531],[-81.391,3.216],[-12.612,-36.255]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.853,-4.49],[29.848,13.234],[-19.538,8.926],[-43.753,11.05],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.853,4.49],[-29.852,-12.98],[31.216,-14.262],[13.464,-3.4],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.609,122.089],[-218.282,112.739],[-217.802,52.604],[-139.378,12.528],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.852,-4.496],[29.852,13.224],[-19.535,8.933],[-43.749,11.064],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.852,4.496],[-29.856,-12.971],[31.211,-14.271],[13.462,-3.405],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.592,122.092],[-218.266,112.774],[-217.805,52.64],[-139.395,12.539],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.849,-4.509],[29.859,13.206],[-19.529,8.944],[-43.742,11.09],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.849,4.509],[-29.863,-12.952],[31.202,-14.29],[13.46,-3.413],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.558,122.098],[-218.236,112.841],[-217.812,52.707],[-139.427,12.561],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.843,-4.529],[29.871,13.176],[-19.52,8.963],[-43.729,11.133],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.843,4.529],[-29.875,-12.923],[31.187,-14.32],[13.456,-3.426],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.504,122.108],[-218.187,112.95],[-217.822,52.818],[-139.479,12.596],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.835,-4.56],[29.89,13.13],[-19.505,8.992],[-43.71,11.199],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.835,4.56],[-29.893,-12.877],[31.163,-14.367],[13.45,-3.446],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.42,122.123],[-218.112,113.119],[-217.838,52.99],[-139.56,12.65],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.823,-4.609],[29.918,13.059],[-19.483,9.037],[-43.681,11.3],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.823,4.609],[-29.921,-12.806],[31.128,-14.438],[13.441,-3.477],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.29,122.147],[-217.996,113.379],[-217.863,53.253],[-139.685,12.734],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.804,-4.686],[29.964,12.946],[-19.447,9.109],[-43.634,11.462],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.804,4.686],[-29.966,-12.693],[31.07,-14.553],[13.427,-3.527],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.083,122.185],[-217.811,113.794],[-217.902,53.674],[-139.884,12.867],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.77,-4.822],[30.044,12.747],[-19.384,9.235],[-43.551,11.747],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.77,4.822],[-30.044,-12.494],[30.969,-14.755],[13.401,-3.615],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.718,122.253],[-217.485,114.525],[-217.971,54.416],[-140.234,13.103],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.705,-5.078],[30.195,12.372],[-19.265,9.473],[-43.396,12.284],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.705,5.078],[-30.192,-12.118],[30.779,-15.136],[13.353,-3.78],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.032,122.379],[-216.87,115.902],[-218.102,55.813],[-140.895,13.546],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.64,-5.337],[30.347,11.993],[-19.145,9.713],[-43.239,12.825],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.64,5.337],[-30.341,-11.74],[30.588,-15.519],[13.305,-3.947],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.339,122.506],[-216.251,117.29],[-218.233,57.222],[-141.561,13.993],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.601,-5.492],[30.439,11.766],[-19.073,9.857],[-43.144,13.15],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.601,5.492],[-30.431,-11.513],[30.473,-15.749],[13.276,-4.047],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.924,122.583],[-215.879,118.123],[-218.312,58.067],[-141.96,14.261],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.575,-5.593],[30.498,11.617],[-19.026,9.952],[-43.083,13.363],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.575,5.593],[-30.489,-11.364],[30.397,-15.9],[13.257,-4.112],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.651,122.633],[-215.635,118.67],[-218.364,58.621],[-142.223,14.437],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.557,-5.667],[30.542,11.51],[-18.992,10.02],[-43.038,13.517],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.557,5.667],[-30.532,-11.257],[30.343,-16.009],[13.243,-4.159],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.455,122.669],[-215.459,119.064],[-218.401,59.021],[-142.412,14.564],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.543,-5.723],[30.575,11.428],[-18.966,10.072],[-43.004,13.634],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.543,5.723],[-30.564,-11.175],[30.301,-16.092],[13.233,-4.195],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.305,122.697],[-215.325,119.365],[-218.43,59.326],[-142.556,14.661],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.531,-5.767],[30.601,11.363],[-18.945,10.113],[-42.977,13.727],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.531,5.767],[-30.589,-11.11],[30.269,-16.158],[13.225,-4.224],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.186,122.719],[-215.219,119.602],[-218.452,59.567],[-142.67,14.737],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.523,-5.802],[30.622,11.312],[-18.929,10.146],[-42.956,13.801],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.523,5.802],[-30.61,-11.058],[30.242,-16.21],[13.218,-4.247],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.092,122.736],[-215.134,119.792],[-218.47,59.76],[-142.761,14.798],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":111,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.515,-5.831],[30.638,11.269],[-18.916,10.173],[-42.938,13.861],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.515,5.831],[-30.626,-11.016],[30.221,-16.253],[13.213,-4.265],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.014,122.75],[-215.066,119.947],[-218.485,59.916],[-142.835,14.848],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":112,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.509,-5.855],[30.652,11.235],[-18.905,10.194],[-42.924,13.91],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.509,5.855],[-30.64,-10.982],[30.204,-16.288],[13.208,-4.28],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.952,122.762],[-215.009,120.073],[-218.497,60.044],[-142.896,14.888],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.505,-5.874],[30.664,11.207],[-18.896,10.212],[-42.912,13.951],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.505,5.874],[-30.651,-10.954],[30.19,-16.316],[13.205,-4.293],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.9,122.771],[-214.963,120.176],[-218.507,60.149],[-142.945,14.922],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.501,-5.889],[30.673,11.184],[-18.889,10.227],[-42.903,13.983],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.501,5.889],[-30.66,-10.931],[30.178,-16.339],[13.202,-4.303],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.858,122.779],[-214.926,120.259],[-218.514,60.234],[-142.985,14.948],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.497,-5.902],[30.68,11.166],[-18.883,10.238],[-42.895,14.009],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.497,5.902],[-30.667,-10.913],[30.169,-16.358],[13.2,-4.311],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.825,122.785],[-214.896,120.327],[-218.521,60.302],[-143.017,14.97],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.495,-5.912],[30.686,11.151],[-18.878,10.248],[-42.889,14.03],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.495,5.912],[-30.673,-10.898],[30.161,-16.372],[13.198,-4.317],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.799,122.79],[-214.872,120.38],[-218.526,60.356],[-143.043,14.987],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.493,-5.919],[30.69,11.14],[-18.875,10.255],[-42.885,14.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.493,5.919],[-30.677,-10.887],[30.156,-16.384],[13.196,-4.322],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.778,122.794],[-214.854,120.42],[-218.53,60.397],[-143.062,15],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.492,-5.925],[30.694,11.132],[-18.872,10.26],[-42.881,14.058],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.492,5.925],[-30.68,-10.879],[30.152,-16.392],[13.195,-4.326],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.763,122.797],[-214.841,120.45],[-218.533,60.427],[-143.077,15.01],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.491,-5.929],[30.696,11.127],[-18.87,10.263],[-42.879,14.065],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.491,5.929],[-30.683,-10.873],[30.149,-16.397],[13.195,-4.328],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.753,122.798],[-214.832,120.47],[-218.534,60.448],[-143.086,15.016],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.491,-5.926],[30.694,11.13],[-18.871,10.261],[-42.88,14.06],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.491,5.926],[-30.681,-10.877],[30.15,-16.393],[13.195,-4.327],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.76,122.801],[-214.837,120.461],[-218.532,60.439],[-143.08,15.017],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.494,-5.909],[30.683,11.154],[-18.878,10.245],[-42.888,14.024],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.494,5.909],[-30.67,-10.901],[30.161,-16.368],[13.197,-4.315],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.807,122.805],[-214.874,120.382],[-218.52,60.362],[-143.036,15.005],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.5,-5.878],[30.662,11.198],[-18.891,10.215],[-42.903,13.959],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.5,5.878],[-30.649,-10.945],[30.181,-16.321],[13.202,-4.295],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.891,122.811],[-214.94,120.24],[-218.497,60.223],[-142.957,14.984],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.509,-5.831],[30.631,11.264],[-18.91,10.171],[-42.926,13.86],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.509,5.831],[-30.619,-11.011],[30.212,-16.25],[13.209,-4.265],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.018,122.822],[-215.041,120.025],[-218.463,60.011],[-142.837,14.951],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.522,-5.764],[30.587,11.358],[-18.937,10.109],[-42.957,13.721],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.522,5.764],[-30.575,-11.105],[30.255,-16.15],[13.219,-4.222],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.198,122.836],[-215.184,119.721],[-218.416,59.713],[-142.668,14.904],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.539,-5.674],[30.527,11.485],[-18.973,10.024],[-43.001,13.532],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.539,5.674],[-30.517,-11.232],[30.313,-16.015],[13.232,-4.164],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.441,122.855],[-215.377,119.309],[-218.351,59.31],[-142.439,14.841],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.562,-5.555],[30.448,11.653],[-19.021,9.911],[-43.058,13.281],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.562,5.555],[-30.439,-11.4],[30.39,-15.835],[13.249,-4.087],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.764,122.881],[-215.634,118.763],[-218.265,58.774],[-142.135,14.757],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.592,-5.398],[30.343,11.875],[-19.085,9.763],[-43.133,12.95],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.592,5.398],[-30.336,-11.622],[30.492,-15.598],[13.273,-3.985],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.19,122.915],[-215.972,118.042],[-218.152,58.067],[-141.734,14.646],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.632,-5.189],[30.204,12.169],[-19.169,9.566],[-43.233,12.512],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.632,5.189],[-30.2,-11.916],[30.627,-15.284],[13.303,-3.85],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.755,122.96],[-216.421,117.086],[-218.001,57.13],[-141.203,14.5],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.686,-4.908],[30.018,12.566],[-19.283,9.302],[-43.368,11.922],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.686,4.908],[-30.017,-12.313],[30.808,-14.861],[13.345,-3.669],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.515,123.021],[-217.025,115.8],[-217.799,55.869],[-140.488,14.302],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.76,-4.519],[29.759,13.113],[-19.44,8.935],[-43.554,11.106],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.76,4.519],[-29.763,-12.861],[31.059,-14.276],[13.402,-3.417],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.567,123.104],[-217.86,114.021],[-217.519,54.124],[-139.498,14.029],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.865,-3.972],[29.396,13.885],[-19.662,8.42],[-43.816,9.956],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.865,3.972],[-29.406,-13.633],[31.413,-13.452],[13.483,-3.064],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-119.049,123.222],[-219.037,111.514],[-217.125,51.666],[-138.104,13.644],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.997,-3.279],[28.935,14.862],[-19.942,7.767],[-44.148,8.501],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.997,3.279],[-28.954,-14.61],[31.861,-12.409],[13.585,-2.616],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-120.924,123.372],[-220.526,108.342],[-216.626,48.556],[-136.34,13.158],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.11,-2.69],[28.544,15.692],[-20.18,7.212],[-44.431,7.265],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.11,2.69],[-28.57,-15.44],[32.241,-11.522],[13.672,-2.235],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-122.517,123.499],[-221.791,105.647],[-216.202,45.913],[-134.841,12.744],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.177,-2.342],[28.313,16.183],[-20.321,6.884],[-44.597,6.533],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.177,2.342],[-28.343,-15.931],[32.466,-10.998],[13.723,-2.01],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-123.459,123.574],[-222.539,104.053],[-215.952,44.35],[-133.955,12.499],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.212,-2.159],[28.191,16.441],[-20.395,6.711],[-44.685,6.149],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.212,2.159],[-28.224,-16.189],[32.585,-10.723],[13.75,-1.892],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-123.954,123.613],[-222.933,103.215],[-215.82,43.528],[-133.488,12.371],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.228,-2.074],[28.135,16.561],[-20.429,6.631],[-44.726,5.97],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.228,2.074],[-28.168,-16.31],[32.64,-10.595],[13.763,-1.837],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.185,123.632],[-223.116,102.825],[-215.759,43.146],[-133.272,12.311],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[21.229,-2.075],[28.141,16.584],[-20.428,6.644],[-44.727,5.971],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-21.229,2.075],[-28.174,-16.332],[32.638,-10.615],[13.763,-1.837],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.191,117.007],[-124.183,123.577],[-223.288,102.889],[-215.949,43.116],[-133.272,12.341],[-81.479,3.237],[-12.612,-36.255]],"c":true}],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.196],[21.214,-2.165],[28.22,16.547],[-20.388,6.771],[-44.691,6.156],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.794],[-21.214,2.165],[-28.252,-16.294],[32.574,-10.818],[13.752,-1.894],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.392,116.987],[-123.942,123.353],[-223.74,103.522],[-216.715,43.395],[-133.494,12.513],[-81.864,3.326],[-12.612,-36.255]],"c":true}],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.184],[21.184,-2.358],[28.391,16.468],[-20.303,7.044],[-44.612,6.552],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.78],[-21.184,2.358],[-28.42,-16.211],[32.438,-11.253],[13.728,-2.016],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.82,116.945],[-123.428,122.877],[-224.705,104.876],[-218.353,43.99],[-133.968,12.88],[-82.687,3.517],[-12.612,-36.255]],"c":true}],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.163],[21.132,-2.689],[28.683,16.333],[-20.156,7.512],[-44.478,7.231],[-18.618,4.326],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.292,-4.757],[-21.132,2.689],[-28.707,-16.07],[32.204,-11.999],[13.687,-2.225],[35.359,-7.876],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.555,116.873],[-122.546,122.059],[-226.362,107.198],[-221.163,45.012],[-134.782,13.509],[-84.098,3.845],[-12.612,-36.255]],"c":true}],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.099,4.137],[21.067,-3.101],[29.047,16.164],[-19.974,8.094],[-44.311,8.076],[-18.619,4.319],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.289,-4.727],[-21.067,3.101],[-29.065,-15.895],[31.913,-12.928],[13.635,-2.485],[35.361,-7.864],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.47,116.783],[-121.45,121.041],[-228.421,110.085],[-224.657,46.282],[-135.794,14.292],[-85.853,4.253],[-12.612,-36.255]],"c":true}],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.096,4.114],[21.011,-3.46],[29.364,16.017],[-19.815,8.601],[-44.166,8.812],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.286,-4.701],[-21.011,3.46],[-29.377,-15.742],[31.66,-13.737],[13.59,-2.712],[35.362,-7.853],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.267,116.705],[-120.493,120.154],[-230.218,112.604],[-227.705,47.39],[-136.676,14.976],[-87.385,4.609],[-12.612,-36.255]],"c":true}],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.094,4.097],[20.969,-3.728],[29.6,15.907],[-19.696,8.979],[-44.057,9.361],[-18.62,4.308],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.283,-4.682],[-20.969,3.728],[-29.609,-15.628],[31.471,-14.34],[13.557,-2.88],[35.363,-7.845],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.861,116.646],[-119.78,119.493],[-231.555,114.479],[-229.974,48.215],[-137.333,15.484],[-88.524,4.873],[-12.612,-36.255]],"c":true}],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.085],[20.938,-3.922],[29.771,15.828],[-19.611,9.253],[-43.979,9.759],[-18.62,4.305],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.668],[-20.938,3.922],[-29.777,-15.545],[31.334,-14.777],[13.533,-3.003],[35.364,-7.839],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.291,116.604],[-119.263,119.014],[-232.526,115.84],[-231.62,48.814],[-137.81,15.853],[-89.352,5.066],[-12.612,-36.255]],"c":true}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.076],[20.916,-4.063],[29.896,15.77],[-19.548,9.453],[-43.921,10.049],[-18.621,4.302],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.658],[-20.916,4.063],[-29.9,-15.485],[31.235,-15.096],[13.515,-3.092],[35.364,-7.835],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.605,116.573],[-118.887,118.664],[-233.233,116.832],[-232.82,49.25],[-138.158,16.122],[-89.954,5.206],[-12.612,-36.255]],"c":true}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.07],[20.9,-4.166],[29.987,15.728],[-19.502,9.599],[-43.88,10.26],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.651],[-20.9,4.166],[-29.989,-15.441],[31.162,-15.328],[13.502,-3.157],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.834,116.551],[-118.613,118.41],[-233.748,117.554],[-233.694,49.567],[-138.411,16.318],[-90.393,5.308],[-12.612,-36.255]],"c":true}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.065],[20.888,-4.24],[30.052,15.698],[-19.47,9.703],[-43.85,10.411],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.646],[-20.888,4.24],[-30.053,-15.41],[31.11,-15.495],[13.493,-3.204],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.998,116.534],[-118.416,118.227],[-234.118,118.072],[-234.321,49.796],[-138.592,16.459],[-90.708,5.381],[-12.612,-36.255]],"c":true}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.062],[20.88,-4.291],[30.097,15.677],[-19.447,9.776],[-43.829,10.516],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.642],[-20.88,4.291],[-30.098,-15.388],[31.074,-15.61],[13.487,-3.236],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.112,116.523],[-118.279,118.101],[-234.374,118.431],[-234.756,49.954],[-138.718,16.556],[-90.927,5.432],[-12.612,-36.255]],"c":true}],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.06],[20.875,-4.324],[30.126,15.663],[-19.432,9.822],[-43.815,10.584],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.64],[-20.875,4.324],[-30.127,-15.374],[31.05,-15.685],[13.483,-3.257],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.185,116.516],[-118.191,118.019],[-234.54,118.664],[-235.037,50.056],[-138.8,16.619],[-91.068,5.464],[-12.612,-36.255]],"c":true}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.872,-4.342],[30.142,15.656],[-19.424,9.848],[-43.808,10.621],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.872,4.343],[-30.142,-15.366],[31.037,-15.726],[13.48,-3.268],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.226,116.512],[-118.143,117.974],[-234.631,118.791],[-235.191,50.112],[-138.844,16.654],[-91.145,5.482],[-12.612,-36.255]],"c":true}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.871,-4.349],[30.146,15.639],[-19.422,9.851],[-43.806,10.635],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.639],[-20.871,4.349],[-30.146,-15.35],[31.035,-15.73],[13.48,-3.273],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.209,116.514],[-118.125,117.984],[-234.564,118.795],[-235.138,50.143],[-138.861,16.64],[-91.113,5.475],[-12.612,-36.255]],"c":true}],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.062],[20.871,-4.352],[30.14,15.591],[-19.425,9.832],[-43.805,10.644],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.642],[-20.871,4.352],[-30.14,-15.302],[31.038,-15.7],[13.479,-3.275],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.106,116.524],[-118.114,118.067],[-234.235,118.672],[-234.787,50.193],[-138.871,16.557],[-90.916,5.429],[-12.612,-36.255]],"c":true}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.068],[20.87,-4.357],[30.127,15.494],[-19.43,9.794],[-43.802,10.66],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.649],[-20.87,4.357],[-30.128,-15.206],[31.046,-15.641],[13.479,-3.28],[35.365,-7.831],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.901,116.544],[-118.094,118.233],[-233.578,118.427],[-234.088,50.292],[-138.892,16.391],[-90.523,5.338],[-12.612,-36.255]],"c":true}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.078],[20.869,-4.367],[30.107,15.33],[-19.438,9.731],[-43.799,10.688],[-18.621,4.302],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.66],[-20.869,4.367],[-30.108,-15.045],[31.058,-15.54],[13.478,-3.289],[35.364,-7.836],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.555,116.578],[-118.059,118.513],[-232.466,118.013],[-232.903,50.459],[-138.927,16.11],[-89.857,5.183],[-12.612,-36.255]],"c":true}],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.093],[20.867,-4.381],[30.076,15.082],[-19.45,9.636],[-43.794,10.731],[-18.62,4.306],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.282,-4.677],[-20.867,4.381],[-30.077,-14.8],[31.077,-15.388],[13.476,-3.302],[35.363,-7.843],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.031,116.63],[-118.006,118.937],[-230.785,117.386],[-231.113,50.712],[-138.98,15.685],[-88.852,4.95],[-12.612,-36.255]],"c":true}],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.096,4.112],[20.865,-4.399],[30.037,14.766],[-19.465,9.514],[-43.787,10.785],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.285,-4.698],[-20.865,4.399],[-30.039,-14.489],[31.101,-15.195],[13.474,-3.319],[35.362,-7.852],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.364,116.695],[-117.939,119.476],[-228.645,116.589],[-228.834,51.034],[-139.047,15.144],[-87.572,4.652],[-12.612,-36.255]],"c":true}],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.098,4.131],[20.863,-4.418],[29.997,14.445],[-19.48,9.39],[-43.78,10.84],[-18.619,4.317],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.288,-4.72],[-20.863,4.418],[-29.999,-14.173],[31.125,-14.999],[13.472,-3.336],[35.361,-7.861],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.688,116.762],[-117.871,120.024],[-226.472,115.779],[-226.52,51.361],[-139.115,14.594],[-86.272,4.35],[-12.612,-36.255]],"c":true}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.1,4.147],[20.861,-4.434],[29.963,14.171],[-19.494,9.284],[-43.774,10.887],[-18.618,4.321],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.29,-4.739],[-20.861,4.434],[-29.966,-13.903],[31.146,-14.83],[13.47,-3.35],[35.36,-7.868],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.108,116.818],[-117.813,120.493],[-224.613,115.086],[-224.539,51.641],[-139.174,14.124],[-85.159,4.092],[-12.612,-36.255]],"c":true}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.16],[20.859,-4.446],[29.936,13.951],[-19.504,9.2],[-43.77,10.924],[-18.618,4.325],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.292,-4.754],[-20.859,4.446],[-29.939,-13.687],[31.163,-14.696],[13.469,-3.362],[35.359,-7.875],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.646,116.864],[-117.766,120.867],[-223.128,114.533],[-222.958,51.864],[-139.22,13.749],[-84.271,3.885],[-12.612,-36.255]],"c":true}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.103,4.171],[20.858,-4.456],[29.914,13.779],[-19.513,9.134],[-43.766,10.953],[-18.618,4.328],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.293,-4.765],[-20.858,4.456],[-29.918,-13.517],[31.176,-14.591],[13.467,-3.371],[35.359,-7.879],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.282,116.9],[-117.73,121.161],[-221.961,114.098],[-221.715,52.04],[-139.257,13.453],[-83.573,3.723],[-12.612,-36.255]],"c":true}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.179],[20.857,-4.464],[29.897,13.644],[-19.519,9.081],[-43.763,10.977],[-18.617,4.33],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.775],[-20.857,4.464],[-29.901,-13.384],[31.186,-14.508],[13.467,-3.378],[35.358,-7.883],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.996,116.928],[-117.701,121.393],[-221.042,113.755],[-220.736,52.178],[-139.286,13.221],[-83.023,3.596],[-12.612,-36.255]],"c":true}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.185],[20.856,-4.47],[29.884,13.537],[-19.525,9.04],[-43.761,10.995],[-18.617,4.332],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.782],[-20.856,4.47],[-29.888,-13.278],[31.195,-14.442],[13.466,-3.383],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.77,116.95],[-117.678,121.576],[-220.317,113.485],[-219.964,52.287],[-139.309,13.038],[-82.59,3.495],[-12.612,-36.255]],"c":true}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.19],[20.855,-4.475],[29.874,13.452],[-19.529,9.008],[-43.759,11.009],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.788],[-20.855,4.475],[-29.878,-13.195],[31.201,-14.391],[13.465,-3.388],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.592,116.968],[-117.66,121.72],[-219.745,113.272],[-219.355,52.373],[-139.327,12.893],[-82.248,3.415],[-12.612,-36.255]],"c":true}],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.194],[20.855,-4.479],[29.865,13.386],[-19.532,8.982],[-43.758,11.021],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.792],[-20.855,4.479],[-29.87,-13.13],[31.206,-14.35],[13.465,-3.391],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.452,116.981],[-117.646,121.833],[-219.297,113.105],[-218.878,52.441],[-139.341,12.78],[-81.98,3.353],[-12.612,-36.255]],"c":true}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.197],[20.854,-4.482],[29.859,13.335],[-19.534,8.962],[-43.757,11.029],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.796],[-20.855,4.482],[-29.863,-13.08],[31.21,-14.319],[13.465,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.344,116.992],[-117.635,121.92],[-218.951,112.976],[-218.51,52.493],[-139.352,12.693],[-81.773,3.305],[-12.612,-36.255]],"c":true}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.2],[20.854,-4.484],[29.854,13.297],[-19.536,8.948],[-43.756,11.036],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.798],[-20.854,4.484],[-29.859,-13.042],[31.213,-14.295],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.263,117],[-117.627,121.985],[-218.691,112.879],[-218.232,52.532],[-139.36,12.627],[-81.617,3.269],[-12.612,-36.255]],"c":true}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.486],[29.851,13.269],[-19.538,8.937],[-43.755,11.041],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.855,-13.015],[31.215,-14.278],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.205,117.006],[-117.621,122.033],[-218.504,112.809],[-218.033,52.56],[-139.366,12.579],[-81.505,3.243],[-12.612,-36.255]],"c":true}],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.25],[-19.538,8.93],[-43.755,11.044],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-12.997],[31.216,-14.267],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.166,117.009],[-117.617,122.064],[-218.379,112.763],[-217.9,52.579],[-139.37,12.548],[-81.43,3.225],[-12.612,-36.255]],"c":true}],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.24],[-19.539,8.926],[-43.755,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.986],[31.217,-14.261],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.144,117.012],[-117.615,122.082],[-218.308,112.736],[-217.825,52.59],[-139.372,12.53],[-81.388,3.216],[-12.612,-36.255]],"c":true}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[54.085,-3.398],[27.304,14.385],[26.106,4.195],[20.855,-4.48],[29.864,13.374],[-19.532,8.977],[-43.757,11.023],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.428,0.653],[-24.064,-12.677],[-29.297,-4.793],[-20.855,4.48],[-29.868,-13.118],[31.207,-14.343],[13.465,-3.392],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[117.077,194.754],[32.184,139.048],[-41.426,116.984],[-117.644,121.854],[-219.214,113.074],[-218.79,52.453],[-139.343,12.759],[-81.93,3.342],[-12.612,-36.255]],"c":true}],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[50.763,-3.189],[27.304,14.385],[26.103,4.174],[20.857,-4.459],[29.908,13.729],[-19.515,9.114],[-43.765,10.962],[-18.618,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-14.751,0.843],[-24.064,-12.677],[-29.294,-4.769],[-20.857,4.459],[-29.912,-13.468],[31.18,-14.56],[13.467,-3.373],[35.358,-7.881],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[121.251,193.909],[32.184,139.048],[-42.176,116.91],[-117.719,121.247],[-221.619,113.97],[-221.351,52.091],[-139.268,13.367],[-83.369,3.676],[-12.612,-36.255]],"c":true}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.069,-2.957],[27.304,14.384],[26.1,4.15],[20.86,-4.436],[29.957,14.124],[-19.496,9.266],[-43.773,10.895],[-18.618,4.322],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-18.446,1.054],[-24.064,-12.677],[-29.291,-4.742],[-20.86,4.436],[-29.96,-13.857],[31.15,-14.802],[13.47,-3.352],[35.36,-7.87],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[125.893,192.97],[32.184,139.048],[-43.009,116.828],[-117.803,120.573],[-224.294,114.967],[-224.2,51.689],[-139.184,14.043],[-84.969,4.047],[-12.612,-36.255]],"c":true}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[43.879,-2.757],[27.304,14.385],[26.098,4.13],[20.863,-4.417],[29.999,14.464],[-19.48,9.398],[-43.781,10.836],[-18.619,4.317],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-21.637,1.236],[-24.064,-12.677],[-29.288,-4.719],[-20.863,4.417],[-30.002,-14.192],[31.124,-15.01],[13.472,-3.335],[35.361,-7.86],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[129.901,192.158],[32.184,139.048],[-43.728,116.758],[-117.875,119.991],[-226.604,115.828],[-226.659,51.341],[-139.111,14.627],[-86.35,4.368],[-12.612,-36.255]],"c":true}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[41.29,-2.594],[27.304,14.385],[26.096,4.113],[20.865,-4.401],[30.034,14.741],[-19.466,9.504],[-43.786,10.789],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-24.227,1.384],[-24.064,-12.677],[-29.285,-4.7],[-20.865,4.401],[-30.036,-14.465],[31.103,-15.18],[13.474,-3.32],[35.362,-7.852],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[133.155,191.499],[32.184,139.048],[-44.312,116.7],[-117.934,119.518],[-228.478,116.527],[-228.656,51.059],[-139.052,15.101],[-87.472,4.629],[-12.612,-36.255]],"c":true}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[39.213,-2.464],[27.304,14.385],[26.094,4.1],[20.866,-4.388],[30.061,14.963],[-19.455,9.59],[-43.791,10.751],[-18.62,4.308],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-26.305,1.503],[-24.064,-12.677],[-29.283,-4.685],[-20.866,4.388],[-30.063,-14.684],[31.086,-15.316],[13.475,-3.308],[35.363,-7.846],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[135.765,190.971],[32.184,139.048],[-44.781,116.654],[-117.981,119.139],[-229.982,117.087],[-230.258,50.833],[-139.005,15.482],[-88.372,4.838],[-12.612,-36.255]],"c":true}],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[37.55,-2.359],[27.304,14.385],[26.093,4.089],[20.868,-4.378],[30.084,15.141],[-19.447,9.658],[-43.795,10.721],[-18.62,4.306],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-27.969,1.598],[-24.064,-12.677],[-29.282,-4.673],[-20.867,4.378],[-30.085,-14.859],[31.072,-15.425],[13.476,-3.299],[35.363,-7.841],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[137.855,190.548],[32.184,139.048],[-45.156,116.617],[-118.019,118.836],[-231.186,117.536],[-231.54,50.652],[-138.967,15.786],[-89.092,5.005],[-12.612,-36.255]],"c":true}],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[36.223,-2.276],[27.304,14.385],[26.092,4.081],[20.869,-4.37],[30.101,15.283],[-19.44,9.713],[-43.798,10.696],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-29.296,1.674],[-24.064,-12.677],[-29.281,-4.663],[-20.869,4.37],[-30.102,-14.998],[31.062,-15.511],[13.477,-3.292],[35.364,-7.837],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[139.523,190.21],[32.184,139.048],[-45.456,116.588],[-118.049,118.593],[-232.147,117.894],[-232.564,50.507],[-138.937,16.029],[-89.667,5.139],[-12.612,-36.255]],"c":true}],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[35.172,-2.21],[27.304,14.385],[26.091,4.074],[20.869,-4.363],[30.115,15.395],[-19.434,9.756],[-43.8,10.677],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-30.347,1.734],[-24.064,-12.677],[-29.28,-4.656],[-20.869,4.363],[-30.116,-15.109],[31.053,-15.58],[13.478,-3.286],[35.364,-7.834],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[140.843,189.943],[32.184,139.048],[-45.693,116.565],[-118.073,118.402],[-232.908,118.178],[-233.374,50.392],[-138.913,16.221],[-90.122,5.245],[-12.612,-36.255]],"c":true}],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[34.354,-2.158],[27.304,14.385],[26.09,4.069],[20.87,-4.358],[30.126,15.482],[-19.43,9.79],[-43.802,10.662],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-31.166,1.781],[-24.064,-12.677],[-29.279,-4.65],[-20.87,4.358],[-30.126,-15.195],[31.046,-15.634],[13.479,-3.281],[35.365,-7.831],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[141.871,189.735],[32.184,139.048],[-45.877,116.546],[-118.091,118.252],[-233.5,118.398],[-234.005,50.303],[-138.894,16.371],[-90.476,5.327],[-12.612,-36.255]],"c":true}],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[33.733,-2.119],[27.304,14.385],[26.09,4.065],[20.87,-4.354],[30.134,15.549],[-19.427,9.816],[-43.804,10.651],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-31.787,1.816],[-24.064,-12.677],[-29.279,-4.645],[-20.87,4.354],[-30.134,-15.26],[31.041,-15.674],[13.479,-3.278],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[142.652,189.577],[32.184,139.048],[-46.017,116.533],[-118.105,118.139],[-233.95,118.566],[-234.484,50.236],[-138.88,16.485],[-90.745,5.389],[-12.612,-36.255]],"c":true}],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[33.282,-2.091],[27.304,14.385],[26.089,4.062],[20.871,-4.351],[30.14,15.597],[-19.425,9.834],[-43.805,10.643],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.238,1.842],[-24.064,-12.677],[-29.278,-4.642],[-20.871,4.351],[-30.14,-15.308],[31.038,-15.704],[13.479,-3.275],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.218,189.462],[32.184,139.048],[-46.119,116.523],[-118.116,118.057],[-234.277,118.688],[-234.832,50.187],[-138.87,16.568],[-90.941,5.435],[-12.612,-36.255]],"c":true}],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.98,-2.072],[27.304,14.385],[26.089,4.06],[20.871,-4.35],[30.144,15.629],[-19.423,9.847],[-43.805,10.637],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.54,1.859],[-24.064,-12.677],[-29.278,-4.64],[-20.871,4.35],[-30.144,-15.34],[31.035,-15.724],[13.48,-3.273],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.598,189.385],[32.184,139.048],[-46.187,116.516],[-118.123,118.001],[-234.495,118.769],[-235.065,50.154],[-138.863,16.623],[-91.071,5.465],[-12.612,-36.255]],"c":true}],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.809,-2.061],[27.304,14.385],[26.089,4.059],[20.871,-4.348],[30.147,15.648],[-19.422,9.854],[-43.806,10.634],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.711,1.869],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.349],[-30.147,-15.358],[31.034,-15.735],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.813,189.342],[32.184,139.048],[-46.226,116.512],[-118.126,117.97],[-234.619,118.815],[-235.197,50.135],[-138.859,16.654],[-91.146,5.482],[-12.612,-36.255]],"c":true}],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.754,-2.058],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.766,1.872],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.363],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.881,189.328],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.754,-2.058],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.766,1.872],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.363],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.881,189.328],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.786,-2.06],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.65],[-19.422,9.855],[-43.806,10.634],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.734,1.87],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.36],[31.034,-15.736],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.841,189.336],[32.184,139.048],[-46.231,116.512],[-118.127,117.966],[-234.636,118.821],[-235.214,50.132],[-138.859,16.658],[-91.155,5.485],[-12.612,-36.255]],"c":true}],"t":360,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.888,-2.066],[27.304,14.385],[26.089,4.059],[20.871,-4.349],[30.146,15.639],[-19.423,9.85],[-43.806,10.635],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.632,1.865],[-24.064,-12.677],[-29.278,-4.639],[-20.871,4.349],[-30.146,-15.349],[31.035,-15.73],[13.48,-3.273],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.714,189.362],[32.184,139.048],[-46.208,116.514],[-118.125,117.985],[-234.562,118.794],[-235.136,50.144],[-138.861,16.64],[-91.111,5.474],[-12.612,-36.255]],"c":true}],"t":361,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[33.072,-2.078],[27.304,14.385],[26.089,4.06],[20.871,-4.35],[30.143,15.619],[-19.423,9.843],[-43.805,10.639],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.448,1.854],[-24.064,-12.677],[-29.278,-4.64],[-20.871,4.35],[-30.143,-15.33],[31.036,-15.718],[13.479,-3.274],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.482,189.409],[32.184,139.048],[-46.166,116.518],[-118.12,118.018],[-234.429,118.744],[-234.993,50.164],[-138.865,16.606],[-91.031,5.456],[-12.612,-36.255]],"c":true}],"t":362,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[33.355,-2.096],[27.304,14.385],[26.089,4.062],[20.871,-4.352],[30.139,15.589],[-19.425,9.831],[-43.805,10.644],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.164,1.838],[-24.064,-12.677],[-29.278,-4.643],[-20.871,4.352],[-30.139,-15.3],[31.038,-15.699],[13.479,-3.275],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.126,189.481],[32.184,139.048],[-46.102,116.524],[-118.114,118.07],[-234.223,118.668],[-234.775,50.195],[-138.872,16.554],[-90.909,5.427],[-12.612,-36.255]],"c":true}],"t":363,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[33.759,-2.121],[27.304,14.385],[26.09,4.065],[20.87,-4.354],[30.134,15.546],[-19.427,9.815],[-43.804,10.651],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-31.761,1.815],[-24.064,-12.677],[-29.279,-4.645],[-20.87,4.354],[-30.134,-15.258],[31.042,-15.673],[13.479,-3.278],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[142.619,189.584],[32.184,139.048],[-46.011,116.533],[-118.105,118.144],[-233.931,118.559],[-234.464,50.238],[-138.881,16.48],[-90.734,5.387],[-12.612,-36.255]],"c":true}],"t":364,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[34.313,-2.156],[27.304,14.385],[26.09,4.068],[20.87,-4.358],[30.127,15.487],[-19.43,9.792],[-43.802,10.661],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-31.207,1.783],[-24.064,-12.677],[-29.279,-4.649],[-20.87,4.358],[-30.127,-15.199],[31.046,-15.636],[13.479,-3.281],[35.365,-7.831],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[141.923,189.724],[32.184,139.048],[-45.887,116.546],[-118.092,118.245],[-233.53,118.41],[-234.037,50.299],[-138.893,16.379],[-90.494,5.331],[-12.612,-36.255]],"c":true}],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[35.056,-2.203],[27.304,14.385],[26.091,4.073],[20.869,-4.362],[30.117,15.407],[-19.434,9.761],[-43.801,10.675],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-30.463,1.741],[-24.064,-12.677],[-29.28,-4.655],[-20.869,4.362],[-30.117,-15.121],[31.052,-15.588],[13.478,-3.285],[35.364,-7.834],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[140.989,189.914],[32.184,139.048],[-45.719,116.562],[-118.075,118.38],[-232.992,118.209],[-233.463,50.38],[-138.91,16.243],[-90.172,5.256],[-12.612,-36.255]],"c":true}],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[36.047,-2.265],[27.304,14.385],[26.092,4.079],[20.869,-4.368],[30.104,15.302],[-19.439,9.72],[-43.798,10.693],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-29.472,1.684],[-24.064,-12.677],[-29.281,-4.662],[-20.869,4.368],[-30.104,-15.017],[31.06,-15.523],[13.477,-3.291],[35.364,-7.837],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[139.743,190.166],[32.184,139.048],[-45.495,116.584],[-118.053,118.561],[-232.275,117.941],[-232.699,50.488],[-138.933,16.061],[-89.743,5.157],[-12.612,-36.255]],"c":true}],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[37.366,-2.348],[27.304,14.385],[26.093,4.088],[20.868,-4.377],[30.086,15.161],[-19.446,9.666],[-43.795,10.717],[-18.62,4.305],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-28.153,1.609],[-24.064,-12.677],[-29.282,-4.672],[-20.868,4.377],[-30.087,-14.878],[31.071,-15.437],[13.476,-3.298],[35.363,-7.841],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[138.086,190.501],[32.184,139.048],[-45.198,116.613],[-118.023,118.802],[-231.32,117.586],[-231.682,50.632],[-138.963,15.82],[-89.172,5.024],[-12.612,-36.255]],"c":true}],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[39.115,-2.458],[27.304,14.385],[26.094,4.099],[20.866,-4.387],[30.063,14.974],[-19.455,9.594],[-43.791,10.749],[-18.62,4.308],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-26.403,1.509],[-24.064,-12.677],[-29.283,-4.684],[-20.866,4.387],[-30.064,-14.694],[31.085,-15.322],[13.475,-3.308],[35.363,-7.846],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[135.888,190.946],[32.184,139.048],[-44.803,116.652],[-117.983,119.121],[-230.053,117.114],[-230.333,50.822],[-139.003,15.5],[-88.414,4.848],[-12.612,-36.255]],"c":true}],"t":369,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[41.378,-2.6],[27.304,14.385],[26.096,4.114],[20.865,-4.401],[30.033,14.732],[-19.467,9.501],[-43.786,10.791],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-24.139,1.379],[-24.064,-12.677],[-29.285,-4.701],[-20.865,4.401],[-30.034,-14.456],[31.104,-15.174],[13.474,-3.32],[35.362,-7.853],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[133.044,191.522],[32.184,139.048],[-44.293,116.702],[-117.932,119.534],[-228.414,116.503],[-228.588,51.069],[-139.054,15.085],[-87.434,4.62],[-12.612,-36.255]],"c":true}],"t":370,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[44.061,-2.768],[27.304,14.385],[26.098,4.131],[20.863,-4.418],[29.997,14.445],[-19.48,9.39],[-43.78,10.84],[-18.619,4.317],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-21.456,1.226],[-24.064,-12.677],[-29.288,-4.72],[-20.863,4.418],[-29.999,-14.173],[31.125,-14.999],[13.472,-3.336],[35.361,-7.861],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[129.673,192.204],[32.184,139.048],[-43.688,116.762],[-117.871,120.024],[-226.472,115.779],[-226.52,51.361],[-139.115,14.594],[-86.272,4.35],[-12.612,-36.255]],"c":true}],"t":371,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[46.743,-2.937],[27.304,14.385],[26.1,4.148],[20.86,-4.434],[29.961,14.158],[-19.494,9.28],[-43.774,10.889],[-18.618,4.322],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-18.773,1.073],[-24.064,-12.677],[-29.29,-4.74],[-20.86,4.434],[-29.964,-13.891],[31.147,-14.823],[13.47,-3.351],[35.36,-7.869],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[126.303,192.886],[32.184,139.048],[-43.083,116.821],[-117.81,120.513],[-224.53,115.055],[-224.451,51.653],[-139.176,14.103],[-85.11,4.08],[-12.612,-36.255]],"c":true}],"t":372,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[49.006,-3.079],[27.304,14.385],[26.102,4.162],[20.859,-4.448],[29.931,13.917],[-19.506,9.187],[-43.769,10.93],[-18.618,4.325],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-16.508,0.943],[-24.064,-12.677],[-29.292,-4.756],[-20.859,4.448],[-29.935,-13.653],[31.166,-14.675],[13.468,-3.363],[35.359,-7.876],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[123.459,193.462],[32.184,139.048],[-42.572,116.871],[-117.759,120.927],[-222.892,114.444],[-222.706,51.9],[-139.228,13.689],[-84.13,3.853],[-12.612,-36.255]],"c":true}],"t":373,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[50.755,-3.189],[27.304,14.385],[26.103,4.174],[20.857,-4.459],[29.908,13.73],[-19.515,9.115],[-43.765,10.962],[-18.618,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-14.758,0.843],[-24.064,-12.677],[-29.294,-4.769],[-20.857,4.459],[-29.912,-13.469],[31.18,-14.56],[13.467,-3.373],[35.358,-7.881],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[121.26,193.907],[32.184,139.048],[-42.177,116.91],[-117.719,121.246],[-221.625,113.972],[-221.357,52.091],[-139.268,13.369],[-83.372,3.677],[-12.612,-36.255]],"c":true}],"t":374,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[52.074,-3.272],[27.304,14.385],[26.104,4.182],[20.856,-4.467],[29.891,13.589],[-19.522,9.06],[-43.762,10.986],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-13.439,0.768],[-24.064,-12.677],[-29.295,-4.778],[-20.856,4.467],[-29.894,-13.33],[31.191,-14.474],[13.466,-3.381],[35.358,-7.885],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[119.603,194.243],[32.184,139.048],[-41.88,116.939],[-117.689,121.487],[-220.67,113.617],[-220.34,52.234],[-139.298,13.127],[-82.801,3.544],[-12.612,-36.255]],"c":true}],"t":375,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[53.065,-3.334],[27.304,14.385],[26.105,4.188],[20.856,-4.473],[29.877,13.483],[-19.527,9.019],[-43.76,11.004],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-12.448,0.711],[-24.064,-12.677],[-29.296,-4.786],[-20.856,4.474],[-29.881,-13.226],[31.199,-14.409],[13.465,-3.386],[35.357,-7.888],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[118.358,194.495],[32.184,139.048],[-41.656,116.961],[-117.667,121.667],[-219.953,113.349],[-219.576,52.342],[-139.32,12.946],[-82.372,3.444],[-12.612,-36.255]],"c":true}],"t":376,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[53.809,-3.381],[27.304,14.385],[26.106,4.193],[20.855,-4.478],[29.868,13.403],[-19.531,8.989],[-43.758,11.018],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.704,0.669],[-24.064,-12.677],[-29.297,-4.791],[-20.855,4.478],[-29.872,-13.147],[31.205,-14.361],[13.465,-3.39],[35.357,-7.89],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[117.424,194.684],[32.184,139.048],[-41.489,116.978],[-117.65,121.803],[-219.414,113.148],[-219.003,52.423],[-139.337,12.81],[-82.05,3.369],[-12.612,-36.255]],"c":true}],"t":377,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[54.362,-3.415],[27.304,14.385],[26.106,4.197],[20.855,-4.482],[29.86,13.344],[-19.534,8.966],[-43.757,11.028],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.151,0.637],[-24.064,-12.677],[-29.297,-4.795],[-20.855,4.481],[-29.864,-13.089],[31.209,-14.324],[13.465,-3.393],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[116.728,194.825],[32.184,139.048],[-41.364,116.99],[-117.637,121.904],[-219.014,112.999],[-218.576,52.484],[-139.35,12.708],[-81.81,3.314],[-12.612,-36.255]],"c":true}],"t":378,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.766,-3.441],[27.304,14.385],[26.107,4.199],[20.854,-4.484],[29.855,13.301],[-19.536,8.949],[-43.756,11.035],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.747,0.614],[-24.064,-12.677],[-29.298,-4.798],[-20.854,4.484],[-29.859,-13.046],[31.213,-14.298],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[116.221,194.928],[32.184,139.048],[-41.273,116.999],[-117.628,121.978],[-218.721,112.89],[-218.264,52.528],[-139.359,12.634],[-81.635,3.273],[-12.612,-36.255]],"c":true}],"t":379,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.049,-3.459],[27.304,14.385],[26.107,4.201],[20.854,-4.486],[29.851,13.271],[-19.537,8.938],[-43.755,11.04],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.463,0.598],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.855,-13.017],[31.215,-14.28],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.865,195],[32.184,139.048],[-41.209,117.005],[-117.622,122.03],[-218.516,112.814],[-218.046,52.558],[-139.365,12.583],[-81.512,3.245],[-12.612,-36.255]],"c":true}],"t":380,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.233,-3.47],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.251],[-19.538,8.93],[-43.755,11.044],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.279,0.587],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-12.997],[31.216,-14.267],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.633,195.046],[32.184,139.048],[-41.167,117.009],[-117.618,122.063],[-218.383,112.764],[-217.904,52.578],[-139.37,12.549],[-81.433,3.226],[-12.612,-36.255]],"c":true}],"t":381,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.335,-3.477],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.847,13.24],[-19.539,8.926],[-43.755,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.177,0.582],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.987],[31.217,-14.261],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.505,195.072],[32.184,139.048],[-41.144,117.012],[-117.615,122.082],[-218.309,112.737],[-217.825,52.59],[-139.372,12.53],[-81.389,3.216],[-12.612,-36.255]],"c":true}],"t":382,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":383,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":385,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.256],[-19.538,8.932],[-43.755,11.043],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.854,-13.002],[31.216,-14.27],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.177,117.008],[-117.619,122.055],[-218.414,112.776],[-217.937,52.574],[-139.369,12.557],[-81.451,3.23],[-12.612,-36.255]],"c":true}],"t":386,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.199],[20.854,-4.484],[29.856,13.308],[-19.536,8.952],[-43.756,11.034],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.797],[-20.854,4.484],[-29.86,-13.053],[31.212,-14.302],[13.464,-3.395],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.287,116.997],[-117.63,121.966],[-218.767,112.907],[-218.313,52.521],[-139.358,12.646],[-81.662,3.279],[-12.612,-36.255]],"c":true}],"t":387,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.194],[20.855,-4.479],[29.866,13.387],[-19.532,8.983],[-43.758,11.02],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.792],[-20.855,4.479],[-29.87,-13.132],[31.206,-14.351],[13.465,-3.391],[35.357,-7.89],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.455,116.981],[-117.647,121.83],[-219.306,113.108],[-218.888,52.439],[-139.341,12.782],[-81.985,3.354],[-12.612,-36.255]],"c":true}],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.188],[20.856,-4.473],[29.878,13.491],[-19.527,9.022],[-43.76,11.003],[-18.617,4.332],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.785],[-20.856,4.473],[-29.882,-13.233],[31.198,-14.414],[13.466,-3.386],[35.357,-7.888],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.673,116.96],[-117.668,121.654],[-220.006,113.369],[-219.633,52.334],[-139.319,12.959],[-82.404,3.452],[-12.612,-36.255]],"c":true}],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.181],[20.857,-4.466],[29.894,13.615],[-19.521,9.07],[-43.762,10.982],[-18.617,4.33],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.777],[-20.857,4.466],[-29.898,-13.355],[31.189,-14.49],[13.466,-3.379],[35.358,-7.884],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.934,116.934],[-117.695,121.443],[-220.845,113.682],[-220.526,52.208],[-139.292,13.171],[-82.906,3.568],[-12.612,-36.255]],"c":true}],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.103,4.172],[20.858,-4.458],[29.911,13.757],[-19.514,9.125],[-43.766,10.957],[-18.618,4.328],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.767],[-20.858,4.458],[-29.915,-13.495],[31.178,-14.577],[13.467,-3.372],[35.358,-7.88],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.234,116.904],[-117.725,121.2],[-221.807,114.04],[-221.551,52.063],[-139.262,13.415],[-83.481,3.702],[-12.612,-36.255]],"c":true}],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.163],[20.859,-4.449],[29.931,13.915],[-19.506,9.186],[-43.769,10.93],[-18.618,4.325],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.292,-4.756],[-20.859,4.449],[-29.934,-13.651],[31.166,-14.674],[13.468,-3.363],[35.359,-7.876],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.568,116.872],[-117.759,120.93],[-222.879,114.44],[-222.693,51.902],[-139.228,13.686],[-84.123,3.851],[-12.612,-36.255]],"c":true}],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.101,4.152],[20.86,-4.439],[29.953,14.088],[-19.498,9.253],[-43.773,10.901],[-18.618,4.323],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.291,-4.744],[-20.86,4.439],[-29.956,-13.822],[31.153,-14.78],[13.469,-3.354],[35.36,-7.871],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.934,116.836],[-117.795,120.634],[-224.053,114.877],[-223.943,51.725],[-139.191,13.982],[-84.824,4.014],[-12.612,-36.255]],"c":true}],"t":393,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.099,4.141],[20.861,-4.428],[29.976,14.275],[-19.489,9.325],[-43.777,10.869],[-18.619,4.32],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.289,-4.732],[-20.861,4.428],[-29.978,-14.006],[31.138,-14.894],[13.471,-3.344],[35.36,-7.866],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.328,116.797],[-117.835,120.315],[-225.319,115.349],[-225.291,51.535],[-139.152,14.302],[-85.582,4.19],[-12.612,-36.255]],"c":true}],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.098,4.129],[20.863,-4.416],[30.001,14.474],[-19.479,9.402],[-43.781,10.835],[-18.619,4.316],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.288,-4.718],[-20.863,4.416],[-30.003,-14.202],[31.123,-15.017],[13.472,-3.334],[35.361,-7.86],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.749,116.755],[-117.877,119.974],[-226.671,115.853],[-226.731,51.331],[-139.109,14.645],[-86.391,4.378],[-12.612,-36.255]],"c":true}],"t":395,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.096,4.116],[20.864,-4.404],[30.027,14.686],[-19.469,9.483],[-43.785,10.798],[-18.619,4.313],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.286,-4.704],[-20.864,4.404],[-30.029,-14.411],[31.107,-15.146],[13.473,-3.323],[35.362,-7.854],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.196,116.712],[-117.922,119.612],[-228.106,116.388],[-228.259,51.115],[-139.064,15.007],[-87.249,4.577],[-12.612,-36.255]],"c":true}],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.095,4.103],[20.866,-4.391],[30.055,14.91],[-19.458,9.569],[-43.79,10.76],[-18.62,4.309],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.284,-4.689],[-20.866,4.391],[-30.056,-14.631],[31.09,-15.283],[13.475,-3.311],[35.362,-7.848],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.668,116.665],[-117.97,119.23],[-229.62,116.952],[-229.872,50.887],[-139.016,15.39],[-88.155,4.788],[-12.612,-36.255]],"c":true}],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.089],[20.868,-4.377],[30.084,15.145],[-19.447,9.66],[-43.795,10.72],[-18.62,4.305],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.282,-4.673],[-20.868,4.378],[-30.085,-14.863],[31.072,-15.427],[13.476,-3.299],[35.363,-7.841],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.165,116.616],[-118.02,118.829],[-231.213,117.546],[-231.569,50.648],[-138.966,15.793],[-89.108,5.009],[-12.612,-36.255]],"c":true}],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.074],[20.869,-4.363],[30.115,15.392],[-19.434,9.755],[-43.8,10.678],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.656],[-20.869,4.363],[-30.115,-15.106],[31.053,-15.578],[13.478,-3.286],[35.364,-7.834],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.687,116.565],[-118.072,118.406],[-232.889,118.17],[-233.353,50.395],[-138.914,16.217],[-90.11,5.242],[-12.612,-36.255]],"c":true}],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.694117665291,0.435294121504,0.345098048449,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Thumb","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":425,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Nail - PATH","parent":5,"tt":1,"tp":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-215.854,53.1,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.7},"t":59,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.6,"y":0},"t":95,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":122,"s":[{"i":[[0,0],[4.232,-12.502],[12.921,-1.766],[0,0],[-10.742,11.216],[0,0],[-9.55,-10.068]],"o":[[8.923,9.803],[-4.232,12.502],[0,0],[-17.559,-12.801],[0,0],[13.042,-4.219],[0,0]],"v":[[43.524,-16.699],[51.346,19.151],[23.347,42.689],[-15.873,40.533],[-19.404,-10.788],[6.329,-27.088],[43.177,-17.287]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.4,"y":0},"t":140,"s":[{"i":[[0,0],[5.977,-11.693],[12.492,0.343],[0,0],[-11.927,9.366],[0,0],[-7.435,-11.514]],"o":[[6.885,11.15],[-5.977,11.693],[0,0],[-14.573,-15.516],[0,0],[12.995,-2.066],[0,0]],"v":[[41.831,-31.462],[43.556,5.299],[13.369,24.072],[-23.361,15.588],[-18.585,-35.795],[8.315,-47.769],[41.596,-32.101]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":182,"s":[{"i":[[0,0],[5.977,-11.693],[12.492,0.343],[0,0],[-11.927,9.366],[0,0],[-7.435,-11.514]],"o":[[6.885,11.15],[-5.977,11.693],[0,0],[-14.573,-15.516],[0,0],[12.995,-2.066],[0,0]],"v":[[41.831,-31.462],[43.556,5.299],[13.369,24.072],[-23.361,15.588],[-18.585,-35.795],[8.315,-47.769],[41.596,-32.101]],"c":true}]},{"t":197,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}],"h":1},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":228,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":248,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":260,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"t":275,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}],"h":1},{"i":{"x":0.34,"y":1},"o":{"x":0.66,"y":0},"t":359,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":383,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":385,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"t":400,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.75686275959,0.549019634724,0.474509805441,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Nail","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":425,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Thumb - PATH","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":59,"s":[17.7]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":95,"s":[15.7]},{"t":147,"s":[15.7]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":122,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.6,"y":0.6},"o":{"x":0.604,"y":0.604},"t":145,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.6,"y":0.6},"o":{"x":0.2,"y":0.2},"t":147,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":182,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":197,"s":[0,0,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,49,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":25,"nm":"Elevation","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[0,0,0,0.25],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":63.75,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":180,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":4,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":8,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.7},"t":59,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.6,"y":0},"t":95,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":122,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.49,-5.931],[30.698,11.123],[-18.869,10.266],[-42.877,14.071],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.49,5.931],[-30.684,-10.869],[30.147,-16.402],[13.194,-4.33],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.746,122.8],[-214.825,120.486],[-218.536,60.463],[-143.094,15.021],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.4,"y":0},"t":140,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":182,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"t":197,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"h":1},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":228,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":248,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":260,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"t":275,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.754,-2.058],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.766,1.872],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.363],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.881,189.328],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"h":1},{"i":{"x":0.34,"y":1},"o":{"x":0.66,"y":0},"t":359,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.754,-2.058],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.766,1.872],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.363],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.881,189.328],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":383,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":385,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"t":400,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.694117665291,0.435294121504,0.345098048449,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Thumb","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":425,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":3,"nm":"All Overview Scroll","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":246,"s":[0]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":263,"s":[204.8]},{"t":348,"s":[512]}],"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":22,"mn":"Pseudo/494931","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/494931-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/494931-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/494931-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/494931-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/494931-0005","ix":5,"v":0},{"ty":6,"nm":"Nulls are useless.","mn":"Pseudo/494931-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0007","ix":7,"v":0},{"ty":6,"nm":"They live in the Solids folder,","mn":"Pseudo/494931-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0009","ix":9,"v":0},{"ty":6,"nm":"must travel with projects, and","mn":"Pseudo/494931-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0011","ix":11,"v":0},{"ty":6,"nm":"may be deleted like footage.","mn":"Pseudo/494931-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0013","ix":13,"v":0},{"ty":6,"nm":"Don't use them anymore.","mn":"Pseudo/494931-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0015","ix":15,"v":0},{"ty":6,"nm":"Void - 0.7.1","mn":"Pseudo/494931-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0017","ix":17,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/494931-0018","ix":18,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0019","ix":19,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0020","ix":20,"v":0}]}],"ip":20,"op":425,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":3,"nm":"Initial Overview In","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":182,"s":[-156]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":202,"s":[209]},{"t":217,"s":[206]}],"ix":3},"y":{"a":0,"k":532,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":22,"mn":"Pseudo/494931","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/494931-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/494931-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/494931-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/494931-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/494931-0005","ix":5,"v":0},{"ty":6,"nm":"Nulls are useless.","mn":"Pseudo/494931-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0007","ix":7,"v":0},{"ty":6,"nm":"They live in the Solids folder,","mn":"Pseudo/494931-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0009","ix":9,"v":0},{"ty":6,"nm":"must travel with projects, and","mn":"Pseudo/494931-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0011","ix":11,"v":0},{"ty":6,"nm":"may be deleted like footage.","mn":"Pseudo/494931-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0013","ix":13,"v":0},{"ty":6,"nm":"Don't use them anymore.","mn":"Pseudo/494931-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0015","ix":15,"v":0},{"ty":6,"nm":"Void - 0.7.1","mn":"Pseudo/494931-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0017","ix":17,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/494931-0018","ix":18,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0019","ix":19,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0020","ix":20,"v":0}]}],"ip":20,"op":425,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":3,"nm":"Loop App to Center","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":-306,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":378,"s":[532]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":384.666,"s":[497.6]},{"t":418,"s":[446]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":425,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":7,"sr":1,"ks":{"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":378,"s":[-768]},{"t":408,"s":[-858]}],"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[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,0],[8.421,-4.724],[0,0],[4.631,-0.057],[0,0],[4.931,-8.301],[0,0],[3.982,-2.365],[0,0],[0.12,-9.654],[0,0],[2.266,-4.039],[0,0],[-4.724,-8.421],[0,0],[-0.057,-4.631],[0,0],[-8.301,-4.931],[0,0],[-2.365,-3.982],[0,0],[-9.654,-0.119],[0,0],[-4.039,-2.266],[0,0],[-8.421,4.724],[0,0],[-4.631,0.057],[0,0],[-4.931,8.301],[0,0],[-3.982,2.365],[0,0],[-0.119,9.654],[0,0],[-2.266,4.039],[0,0],[4.724,8.421],[0,0],[0.057,4.631],[0,0],[8.301,4.931],[0,0],[2.365,3.982],[0,0],[9.654,0.12],[0,0],[4.039,2.266]],"o":[[-8.421,-4.724],[0,0],[-4.039,2.266],[0,0],[-9.654,0.12],[0,0],[-2.365,3.982],[0,0],[-8.301,4.931],[0,0],[-0.057,4.631],[0,0],[-4.724,8.421],[0,0],[2.266,4.039],[0,0],[0.12,9.655],[0,0],[3.982,2.365],[0,0],[4.931,8.301],[0,0],[4.631,0.057],[0,0],[8.421,4.724],[0,0],[4.039,-2.266],[0,0],[9.654,-0.119],[0,0],[2.365,-3.982],[0,0],[8.301,-4.931],[0,0],[0.057,-4.631],[0,0],[4.724,-8.421],[0,0],[-2.266,-4.039],[0,0],[-0.119,-9.654],[0,0],[-3.982,-2.365],[0,0],[-4.931,-8.301],[0,0],[-4.631,-0.057],[0,0]],"v":[[13.557,-175.395],[-13.557,-175.395],[-36.472,-162.541],[-49.685,-159.001],[-75.957,-158.675],[-99.438,-145.118],[-112.856,-122.529],[-122.529,-112.856],[-145.118,-99.438],[-158.675,-75.957],[-159.001,-49.685],[-162.541,-36.472],[-175.395,-13.557],[-175.395,13.557],[-162.541,36.472],[-159.001,49.685],[-158.675,75.957],[-145.118,99.438],[-122.529,112.856],[-112.856,122.529],[-99.438,145.119],[-75.957,158.675],[-49.685,159.001],[-36.472,162.541],[-13.557,175.395],[13.557,175.395],[36.472,162.541],[49.685,159.001],[75.957,158.675],[99.438,145.119],[112.856,122.529],[122.529,112.856],[145.119,99.438],[158.675,75.957],[159.001,49.685],[162.541,36.472],[175.395,13.557],[175.395,-13.557],[162.541,-36.472],[159.001,-49.685],[158.675,-75.957],[145.119,-99.438],[122.529,-112.856],[112.856,-122.529],[99.438,-145.118],[75.957,-158.675],[49.685,-159.001],[36.472,-162.541]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":28,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[70,70],"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":"Star 9","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":110,"op":425,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":8,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":264,"s":[50]},{"i":{"x":[0.833],"y":[0.757]},"o":{"x":[0.167],"y":[0]},"t":348,"s":[100]},{"i":{"x":[0.82],"y":[0]},"o":{"x":[0.78],"y":[0]},"t":399,"s":[95]},{"t":424,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":424,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":9,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":378,"s":[220]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":383,"s":[296.8]},{"t":408,"s":[412]}],"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":378,"s":[220]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":383,"s":[488.8]},{"t":408,"s":[892]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":378,"s":[60]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":383,"s":[43.2]},{"t":408,"s":[18]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"k":[{"s":[60],"t":378,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":380,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":381,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":382,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":383,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":384,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":385,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":386,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":387,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"k":[{"s":[60],"t":378,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":380,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":381,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":382,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":383,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":384,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":385,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":386,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":387,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"k":[{"s":[60],"t":378,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":380,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":381,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":382,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":383,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":384,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":385,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":386,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":387,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-33.114,0],[0,0],[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114]],"o":[[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114],[0,0],[-33.114,0],[0,0]],"v":[[-110,-50],[-50,-110],[50,-110],[110,-50],[110,50],[50,110],[-50,110],[-110,50]],"c":true}],"t":378,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-32.906,0],[0,0],[0,-32.906],[0,0],[32.906,0],[0,0],[0,32.906]],"o":[[0,-32.906],[0,0],[32.906,0],[0,0],[0,32.906],[0,0],[-32.906,0],[0,0]],"v":[[-110.86,-53.387],[-51.236,-113.011],[51.236,-113.011],[110.86,-53.387],[110.86,53.387],[51.236,113.011],[-51.236,113.011],[-110.86,53.387]],"c":true}],"t":379,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-32.237,0],[0,0],[0,-32.237],[0,0],[32.237,0],[0,0],[0,32.237]],"o":[[0,-32.237],[0,0],[32.237,0],[0,0],[0,32.237],[0,0],[-32.237,0],[0,0]],"v":[[-113.631,-64.296],[-55.219,-122.707],[55.219,-122.707],[113.631,-64.296],[113.631,64.296],[55.219,122.707],[-55.219,122.707],[-113.631,64.296]],"c":true}],"t":380,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-30.947,0],[0,0],[0,-30.947],[0,0],[30.947,0],[0,0],[0,30.947]],"o":[[0,-30.947],[0,0],[30.947,0],[0,0],[0,30.947],[0,0],[-30.947,0],[0,0]],"v":[[-118.974,-85.335],[-62.9,-141.409],[62.9,-141.409],[118.974,-85.335],[118.974,85.335],[62.9,141.409],[-62.9,141.409],[-118.974,85.335]],"c":true}],"t":381,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-28.64,0],[0,0],[0,-28.64],[0,0],[28.64,0],[0,0],[0,28.64]],"o":[[0,-28.64],[0,0],[28.64,0],[0,0],[0,28.64],[0,0],[-28.64,0],[0,0]],"v":[[-128.53,-122.961],[-76.636,-174.854],[76.636,-174.854],[128.53,-122.961],[128.53,122.961],[76.636,174.854],[-76.636,174.854],[-128.53,122.961]],"c":true}],"t":382,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-23.842,0],[0,0],[0,-23.842],[0,0],[23.842,0],[0,0],[0,23.842]],"o":[[0,-23.842],[0,0],[23.842,0],[0,0],[0,23.842],[0,0],[-23.842,0],[0,0]],"v":[[-148.4,-201.2],[-105.2,-244.4],[105.2,-244.4],[148.4,-201.2],[148.4,201.2],[105.2,244.4],[-105.2,244.4],[-148.4,201.2]],"c":true}],"t":383,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-18.379,0],[0,0],[0,-18.379],[0,0],[18.379,0],[0,0],[0,18.379]],"o":[[0,-18.379],[0,0],[18.379,0],[0,0],[0,18.379],[0,0],[-18.379,0],[0,0]],"v":[[-171.027,-290.294],[-137.727,-323.595],[137.727,-323.595],[171.027,-290.294],[171.027,290.294],[137.727,323.595],[-137.727,323.595],[-171.027,290.294]],"c":true}],"t":384,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-15.973,0],[0,0],[0,-15.973],[0,0],[15.973,0],[0,0],[0,15.973]],"o":[[0,-15.973],[0,0],[15.973,0],[0,0],[0,15.973],[0,0],[-15.973,0],[0,0]],"v":[[-180.988,-329.516],[-152.046,-358.459],[152.046,-358.459],[180.988,-329.516],[180.988,329.516],[152.046,358.459],[-152.046,358.459],[-180.988,329.516]],"c":true}],"t":385,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-14.579,0],[0,0],[0,-14.579],[0,0],[14.579,0],[0,0],[0,14.579]],"o":[[0,-14.579],[0,0],[14.579,0],[0,0],[0,14.579],[0,0],[-14.579,0],[0,0]],"v":[[-186.762,-352.25],[-160.345,-378.667],[160.345,-378.667],[186.762,-352.25],[186.762,352.25],[160.345,378.667],[-160.345,378.667],[-186.762,352.25]],"c":true}],"t":386,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-13.632,0],[0,0],[0,-13.632],[0,0],[13.632,0],[0,0],[0,13.632]],"o":[[0,-13.632],[0,0],[13.632,0],[0,0],[0,13.632],[0,0],[-13.632,0],[0,0]],"v":[[-190.685,-367.697],[-165.985,-392.397],[165.985,-392.397],[190.685,-367.697],[190.685,367.697],[165.985,392.397],[-165.985,392.397],[-190.685,367.697]],"c":true}],"t":387,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-12.934,0],[0,0],[0,-12.934],[0,0],[12.934,0],[0,0],[0,12.934]],"o":[[0,-12.934],[0,0],[12.934,0],[0,0],[0,12.934],[0,0],[-12.934,0],[0,0]],"v":[[-193.577,-379.084],[-170.142,-402.519],[170.142,-402.519],[193.577,-379.084],[193.577,379.084],[170.142,402.519],[-170.142,402.519],[-193.577,379.084]],"c":true}],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-12.394,0],[0,0],[0,-12.394],[0,0],[12.394,0],[0,0],[0,12.394]],"o":[[0,-12.394],[0,0],[12.394,0],[0,0],[0,12.394],[0,0],[-12.394,0],[0,0]],"v":[[-195.813,-387.89],[-173.357,-410.347],[173.357,-410.347],[195.813,-387.89],[195.813,387.89],[173.357,410.347],[-173.357,410.347],[-195.813,387.89]],"c":true}],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.963,0],[0,0],[0,-11.963],[0,0],[11.963,0],[0,0],[0,11.963]],"o":[[0,-11.963],[0,0],[11.963,0],[0,0],[0,11.963],[0,0],[-11.963,0],[0,0]],"v":[[-197.598,-394.916],[-175.922,-416.592],[175.922,-416.592],[197.598,-394.916],[197.598,394.916],[175.922,416.592],[-175.922,416.592],[-197.598,394.916]],"c":true}],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.612,0],[0,0],[0,-11.612],[0,0],[11.612,0],[0,0],[0,11.612]],"o":[[0,-11.612],[0,0],[11.612,0],[0,0],[0,11.612],[0,0],[-11.612,0],[0,0]],"v":[[-199.052,-400.641],[-178.012,-421.681],[178.012,-421.681],[199.052,-400.641],[199.052,400.641],[178.012,421.681],[-178.012,421.681],[-199.052,400.641]],"c":true}],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.322,0],[0,0],[0,-11.322],[0,0],[11.322,0],[0,0],[0,11.322]],"o":[[0,-11.322],[0,0],[11.322,0],[0,0],[0,11.322],[0,0],[-11.322,0],[0,0]],"v":[[-200.254,-405.375],[-179.74,-425.889],[179.74,-425.889],[200.254,-405.375],[200.254,405.375],[179.74,425.889],[-179.74,425.889],[-200.254,405.375]],"c":true}],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.079,0],[0,0],[0,-11.079],[0,0],[11.079,0],[0,0],[0,11.079]],"o":[[0,-11.079],[0,0],[11.079,0],[0,0],[0,11.079],[0,0],[-11.079,0],[0,0]],"v":[[-201.259,-409.332],[-181.185,-429.406],[181.185,-429.406],[201.259,-409.332],[201.259,409.332],[181.185,429.406],[-181.185,429.406],[-201.259,409.332]],"c":true}],"t":393,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.875,0],[0,0],[0,-10.875],[0,0],[10.875,0],[0,0],[0,10.875]],"o":[[0,-10.875],[0,0],[10.875,0],[0,0],[0,10.875],[0,0],[-10.875,0],[0,0]],"v":[[-202.104,-412.661],[-182.4,-432.365],[182.4,-432.365],[202.104,-412.661],[202.104,412.661],[182.4,432.365],[-182.4,432.365],[-202.104,412.661]],"c":true}],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.702,0],[0,0],[0,-10.702],[0,0],[10.702,0],[0,0],[0,10.702]],"o":[[0,-10.702],[0,0],[10.702,0],[0,0],[0,10.702],[0,0],[-10.702,0],[0,0]],"v":[[-202.819,-415.475],[-183.427,-434.867],[183.427,-434.867],[202.819,-415.475],[202.819,415.475],[183.427,434.867],[-183.427,434.867],[-202.819,415.475]],"c":true}],"t":395,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.556,0],[0,0],[0,-10.556],[0,0],[10.556,0],[0,0],[0,10.556]],"o":[[0,-10.556],[0,0],[10.556,0],[0,0],[0,10.556],[0,0],[-10.556,0],[0,0]],"v":[[-203.424,-417.859],[-184.298,-436.986],[184.298,-436.986],[203.424,-417.859],[203.424,417.859],[184.298,436.986],[-184.298,436.986],[-203.424,417.859]],"c":true}],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.432,0],[0,0],[0,-10.432],[0,0],[10.432,0],[0,0],[0,10.432]],"o":[[0,-10.432],[0,0],[10.432,0],[0,0],[0,10.432],[0,0],[-10.432,0],[0,0]],"v":[[-203.937,-419.879],[-185.035,-438.781],[185.035,-438.781],[203.937,-419.879],[203.937,419.879],[185.035,438.781],[-185.035,438.781],[-203.937,419.879]],"c":true}],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.327,0],[0,0],[0,-10.327],[0,0],[10.328,0],[0,0],[0,10.328]],"o":[[0,-10.327],[0,0],[10.328,0],[0,0],[0,10.328],[0,0],[-10.327,0],[0,0]],"v":[[-204.371,-421.587],[-185.659,-440.299],[185.659,-440.299],[204.371,-421.587],[204.371,421.587],[185.659,440.299],[-185.659,440.299],[-204.371,421.587]],"c":true}],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.239,0],[0,0],[0,-10.239],[0,0],[10.239,0],[0,0],[0,10.239]],"o":[[0,-10.239],[0,0],[10.239,0],[0,0],[0,10.239],[0,0],[-10.239,0],[0,0]],"v":[[-204.736,-423.025],[-186.184,-441.578],[186.184,-441.578],[204.736,-423.025],[204.736,423.025],[186.184,441.578],[-186.184,441.578],[-204.736,423.025]],"c":true}],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.166,0],[0,0],[0,-10.166],[0,0],[10.166,0],[0,0],[0,10.166]],"o":[[0,-10.166],[0,0],[10.166,0],[0,0],[0,10.166],[0,0],[-10.166,0],[0,0]],"v":[[-205.042,-424.227],[-186.623,-442.647],[186.623,-442.647],[205.042,-424.227],[205.042,424.227],[186.623,442.647],[-186.623,442.647],[-205.042,424.227]],"c":true}],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.105,0],[0,0],[0,-10.104],[0,0],[10.105,0],[0,0],[0,10.104]],"o":[[0,-10.104],[0,0],[10.105,0],[0,0],[0,10.104],[0,0],[-10.105,0],[0,0]],"v":[[-205.295,-425.223],[-186.986,-443.531],[186.986,-443.531],[205.295,-425.223],[205.295,425.223],[186.986,443.531],[-186.986,443.531],[-205.295,425.223]],"c":true}],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.055,0],[0,0],[0,-10.055],[0,0],[10.055,0],[0,0],[0,10.055]],"o":[[0,-10.055],[0,0],[10.055,0],[0,0],[0,10.055],[0,0],[-10.055,0],[0,0]],"v":[[-205.501,-426.035],[-187.283,-444.253],[187.283,-444.253],[205.501,-426.035],[205.501,426.035],[187.283,444.253],[-187.283,444.253],[-205.501,426.035]],"c":true}],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.015,0],[0,0],[0,-10.015],[0,0],[10.015,0],[0,0],[0,10.015]],"o":[[0,-10.015],[0,0],[10.015,0],[0,0],[0,10.015],[0,0],[-10.015,0],[0,0]],"v":[[-205.666,-426.684],[-187.519,-444.83],[187.519,-444.83],[205.666,-426.684],[205.666,426.684],[187.519,444.83],[-187.519,444.83],[-205.666,426.684]],"c":true}],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.984,0],[0,0],[0,-9.984],[0,0],[9.984,0],[0,0],[0,9.984]],"o":[[0,-9.984],[0,0],[9.984,0],[0,0],[0,9.984],[0,0],[-9.984,0],[0,0]],"v":[[-205.793,-427.186],[-187.703,-445.277],[187.703,-445.277],[205.793,-427.186],[205.793,427.186],[187.703,445.277],[-187.703,445.277],[-205.793,427.186]],"c":true}],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.961,0],[0,0],[0,-9.961],[0,0],[9.961,0],[0,0],[0,9.961]],"o":[[0,-9.961],[0,0],[9.961,0],[0,0],[0,9.961],[0,0],[-9.961,0],[0,0]],"v":[[-205.888,-427.557],[-187.838,-445.607],[187.838,-445.607],[205.888,-427.557],[205.888,427.557],[187.838,445.607],[-187.838,445.607],[-205.888,427.557]],"c":true}],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.946,0],[0,0],[0,-9.946],[0,0],[9.946,0],[0,0],[0,9.946]],"o":[[0,-9.946],[0,0],[9.946,0],[0,0],[0,9.946],[0,0],[-9.946,0],[0,0]],"v":[[-205.952,-427.809],[-187.93,-445.831],[187.93,-445.831],[205.952,-427.809],[205.952,427.809],[187.93,445.831],[-187.93,445.831],[-205.952,427.809]],"c":true}],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.937,0],[0,0],[0,-9.937],[0,0],[9.937,0],[0,0],[0,9.937]],"o":[[0,-9.937],[0,0],[9.937,0],[0,0],[0,9.937],[0,0],[-9.937,0],[0,0]],"v":[[-205.988,-427.954],[-187.983,-445.959],[187.983,-445.959],[205.988,-427.954],[205.988,427.954],[187.983,445.959],[-187.983,445.959],[-205.988,427.954]],"c":true}],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":110,"op":425,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.83],"y":[0.83]},"o":{"x":[0.52],"y":[0]},"t":246,"s":[50]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.17],"y":[0.17]},"t":264,"s":[100]},{"t":281,"s":[50]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":378,"s":[-256,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":408,"s":[-176,0,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[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,0],[18.976,-48.115],[0,0],[14.69,-5.794],[0,0],[-48.115,-18.977],[0,0],[-5.794,-14.69],[0,0],[-18.977,48.115],[0,0],[-14.69,5.794],[0,0],[48.115,18.976],[0,0],[5.794,14.69]],"o":[[-18.977,-48.115],[0,0],[-5.794,14.69],[0,0],[-48.115,18.976],[0,0],[14.69,5.794],[0,0],[18.976,48.115],[0,0],[5.794,-14.69],[0,0],[48.115,-18.977],[0,0],[-14.69,-5.794],[0,0]],"v":[[53.024,-96.229],[-53.024,-96.229],[-56.162,-88.274],[-88.274,-56.162],[-96.229,-53.024],[-96.229,53.024],[-88.274,56.161],[-56.162,88.273],[-53.024,96.228],[53.024,96.228],[56.161,88.273],[88.273,56.161],[96.228,53.024],[96.228,-53.024],[88.273,-56.162],[56.161,-88.274]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":57,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-45,"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":"Star 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":110,"op":425,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":12,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":24,"s":[0]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":64,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":76,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":88,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":118,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":140,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.52],"y":[0]},"t":246,"s":[100]},{"t":264,"s":[50]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.15,"y":1},"o":{"x":0.37,"y":0},"t":122,"s":[206,848,0],"to":[0,0,0],"ti":[0,0,0]},{"t":170,"s":[206,421,0]}],"ix":2,"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":424,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":2,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":132,"s":[412]},{"t":170,"s":[352],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":182,"s":[352]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":202,"s":[216]},{"t":217,"s":[220]}],"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":132,"s":[582]},{"t":170,"s":[442],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":182,"s":[442]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":202,"s":[216]},{"t":217,"s":[220]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":132,"s":[90]},{"t":170,"s":[80],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":182,"s":[80]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":202,"s":[64]},{"t":217,"s":[60]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"k":[{"s":[89.923],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":201,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":202,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":203,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":204,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":205,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":206,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":207,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":208,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":209,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":210,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":211,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":212,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":213,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":214,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":215,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":216,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"k":[{"s":[89.923],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":201,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":202,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":203,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":204,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":205,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":206,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":207,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":208,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":209,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":210,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":211,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":212,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":213,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":214,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":215,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":216,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"k":[{"s":[89.923],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":201,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":202,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":203,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":204,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":205,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":206,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":207,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":208,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":209,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":210,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":211,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":212,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":213,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":214,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":215,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":216,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.661,0],[0,0],[0,-49.661],[0,0],[49.661,0],[0,0],[0,49.661]],"o":[[0,-49.661],[0,0],[49.661,0],[0,0],[0,49.661],[0,0],[-49.661,0],[0,0]],"v":[[-205.946,89.982],[-115.964,0],[115.964,0],[205.946,89.982],[205.946,491.767],[115.964,581.749],[-115.964,581.749],[-205.946,491.767]],"c":true}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.629,0],[0,0],[0,-49.629],[0,0],[49.629,0],[0,0],[0,49.629]],"o":[[0,-49.629],[0,0],[49.629,0],[0,0],[0,49.629],[0,0],[-49.629,0],[0,0]],"v":[[-205.77,89.923],[-115.847,0],[115.847,0],[205.77,89.923],[205.77,491.004],[115.847,580.927],[-115.847,580.927],[-205.77,491.004]],"c":true}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.569,0],[0,0],[0,-49.569],[0,0],[49.569,0],[0,0],[0,49.569]],"o":[[0,-49.569],[0,0],[49.569,0],[0,0],[0,49.569],[0,0],[-49.569,0],[0,0]],"v":[[-205.445,89.815],[-115.63,0],[115.63,0],[205.445,89.815],[205.445,489.595],[115.63,579.41],[-115.63,579.41],[-205.445,489.595]],"c":true}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.475,0],[0,0],[0,-49.475],[0,0],[49.475,0],[0,0],[0,49.475]],"o":[[0,-49.475],[0,0],[49.475,0],[0,0],[0,49.475],[0,0],[-49.475,0],[0,0]],"v":[[-204.936,89.645],[-115.291,0],[115.291,0],[204.936,89.645],[204.936,487.391],[115.291,577.037],[-115.291,577.037],[-204.936,487.391]],"c":true}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.34,0],[0,0],[0,-49.34],[0,0],[49.34,0],[0,0],[0,49.34]],"o":[[0,-49.34],[0,0],[49.34,0],[0,0],[0,49.34],[0,0],[-49.34,0],[0,0]],"v":[[-204.201,89.4],[-114.8,0],[114.8,0],[204.201,89.4],[204.201,484.203],[114.8,573.603],[-114.8,573.603],[-204.201,484.203]],"c":true}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.153,0],[0,0],[0,-49.153],[0,0],[49.153,0],[0,0],[0,49.153]],"o":[[0,-49.153],[0,0],[49.153,0],[0,0],[0,49.153],[0,0],[-49.153,0],[0,0]],"v":[[-203.185,89.062],[-114.123,0],[114.123,0],[203.185,89.062],[203.185,479.8],[114.123,568.862],[-114.123,568.862],[-203.185,479.8]],"c":true}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.905,0],[0,0],[0,-48.905],[0,0],[48.905,0],[0,0],[0,48.905]],"o":[[0,-48.905],[0,0],[48.905,0],[0,0],[0,48.905],[0,0],[-48.905,0],[0,0]],"v":[[-201.834,88.611],[-113.223,0],[113.223,0],[201.834,88.611],[201.834,473.946],[113.223,562.558],[-113.223,562.558],[-201.834,473.946]],"c":true}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.588,0],[0,0],[0,-48.588],[0,0],[48.588,0],[0,0],[0,48.588]],"o":[[0,-48.588],[0,0],[48.588,0],[0,0],[0,48.588],[0,0],[-48.588,0],[0,0]],"v":[[-200.114,88.038],[-112.076,0],[112.076,0],[200.114,88.038],[200.114,466.493],[112.076,554.531],[-112.076,554.531],[-200.114,466.493]],"c":true}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.209,0],[0,0],[0,-48.209],[0,0],[48.209,0],[0,0],[0,48.209]],"o":[[0,-48.209],[0,0],[48.209,0],[0,0],[0,48.209],[0,0],[-48.209,0],[0,0]],"v":[[-198.054,87.351],[-110.703,0],[110.703,0],[198.054,87.351],[198.054,457.566],[110.703,544.918],[-110.703,544.918],[-198.054,457.566]],"c":true}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-47.791,0],[0,0],[0,-47.791],[0,0],[47.791,0],[0,0],[0,47.791]],"o":[[0,-47.791],[0,0],[47.791,0],[0,0],[0,47.791],[0,0],[-47.791,0],[0,0]],"v":[[-195.782,86.594],[-109.188,0],[109.188,0],[195.782,86.594],[195.782,447.721],[109.188,534.315],[-109.188,534.315],[-195.782,447.721]],"c":true}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-47.369,0],[0,0],[0,-47.369],[0,0],[47.369,0],[0,0],[0,47.369]],"o":[[0,-47.369],[0,0],[47.369,0],[0,0],[0,47.369],[0,0],[-47.369,0],[0,0]],"v":[[-193.487,85.829],[-107.658,0],[107.658,0],[193.487,85.829],[193.487,437.775],[107.658,523.604],[-107.658,523.604],[-193.487,437.775]],"c":true}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.972,0],[0,0],[0,-46.972],[0,0],[46.972,0],[0,0],[0,46.972]],"o":[[0,-46.972],[0,0],[46.972,0],[0,0],[0,46.972],[0,0],[-46.972,0],[0,0]],"v":[[-191.327,85.109],[-106.218,0],[106.218,0],[191.327,85.109],[191.327,428.416],[106.218,513.525],[-106.218,513.525],[-191.327,428.416]],"c":true}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.614,0],[0,0],[0,-46.614],[0,0],[46.614,0],[0,0],[0,46.614]],"o":[[0,-46.614],[0,0],[46.614,0],[0,0],[0,46.614],[0,0],[-46.614,0],[0,0]],"v":[[-189.38,84.46],[-104.92,0],[104.92,0],[189.38,84.46],[189.38,419.982],[104.92,504.442],[-104.92,504.442],[-189.38,419.982]],"c":true}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.298,0],[0,0],[0,-46.298],[0,0],[46.298,0],[0,0],[0,46.298]],"o":[[0,-46.298],[0,0],[46.298,0],[0,0],[0,46.298],[0,0],[-46.298,0],[0,0]],"v":[[-187.663,83.888],[-103.775,0],[103.775,0],[187.663,83.888],[187.663,412.539],[103.775,496.426],[-103.775,496.426],[-187.663,412.539]],"c":true}],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.021,0],[0,0],[0,-46.021],[0,0],[46.021,0],[0,0],[0,46.021]],"o":[[0,-46.021],[0,0],[46.021,0],[0,0],[0,46.021],[0,0],[-46.021,0],[0,0]],"v":[[-186.158,83.386],[-102.772,0],[102.772,0],[186.158,83.386],[186.158,406.02],[102.772,489.406],[-102.772,489.406],[-186.158,406.02]],"c":true}],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.779,0],[0,0],[0,-45.779],[0,0],[45.779,0],[0,0],[0,45.779]],"o":[[0,-45.779],[0,0],[45.779,0],[0,0],[0,45.779],[0,0],[-45.779,0],[0,0]],"v":[[-184.842,82.947],[-101.895,0],[101.895,0],[184.842,82.947],[184.842,400.315],[101.895,483.262],[-101.895,483.262],[-184.842,400.315]],"c":true}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.566,0],[0,0],[0,-45.566],[0,0],[45.566,0],[0,0],[0,45.566]],"o":[[0,-45.566],[0,0],[45.566,0],[0,0],[0,45.566],[0,0],[-45.566,0],[0,0]],"v":[[-183.688,82.563],[-101.125,0],[101.125,0],[183.688,82.563],[183.688,395.313],[101.125,477.875],[-101.125,477.875],[-183.688,395.313]],"c":true}],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.38,0],[0,0],[0,-45.38],[0,0],[45.38,0],[0,0],[0,45.38]],"o":[[0,-45.38],[0,0],[45.38,0],[0,0],[0,45.38],[0,0],[-45.38,0],[0,0]],"v":[[-182.673,82.224],[-100.448,0],[100.448,0],[182.673,82.224],[182.673,390.915],[100.448,473.139],[-100.448,473.139],[-182.673,390.915]],"c":true}],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.215,0],[0,0],[0,-45.215],[0,0],[45.215,0],[0,0],[0,45.215]],"o":[[0,-45.215],[0,0],[45.215,0],[0,0],[0,45.215],[0,0],[-45.215,0],[0,0]],"v":[[-181.778,81.926],[-99.852,0],[99.852,0],[181.778,81.926],[181.778,387.037],[99.852,468.963],[-99.852,468.963],[-181.778,387.037]],"c":true}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.069,0],[0,0],[0,-45.069],[0,0],[45.069,0],[0,0],[0,45.069]],"o":[[0,-45.069],[0,0],[45.069,0],[0,0],[0,45.069],[0,0],[-45.069,0],[0,0]],"v":[[-180.987,81.662],[-99.325,0],[99.325,0],[180.987,81.662],[180.987,383.61],[99.325,465.273],[-99.325,465.273],[-180.987,383.61]],"c":true}],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.941,0],[0,0],[0,-44.941],[0,0],[44.941,0],[0,0],[0,44.941]],"o":[[0,-44.941],[0,0],[44.941,0],[0,0],[0,44.941],[0,0],[-44.941,0],[0,0]],"v":[[-180.287,81.429],[-98.858,0],[98.858,0],[180.287,81.429],[180.287,380.577],[98.858,462.006],[-98.858,462.006],[-180.287,380.577]],"c":true}],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.827,0],[0,0],[0,-44.827],[0,0],[44.827,0],[0,0],[0,44.827]],"o":[[0,-44.827],[0,0],[44.827,0],[0,0],[0,44.827],[0,0],[-44.827,0],[0,0]],"v":[[-179.667,81.222],[-98.445,0],[98.445,0],[179.667,81.222],[179.667,377.889],[98.445,459.112],[-98.445,459.112],[-179.667,377.889]],"c":true}],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.725,0],[0,0],[0,-44.725],[0,0],[44.725,0],[0,0],[0,44.725]],"o":[[0,-44.725],[0,0],[44.725,0],[0,0],[0,44.725],[0,0],[-44.725,0],[0,0]],"v":[[-179.117,81.039],[-98.078,0],[98.078,0],[179.117,81.039],[179.117,375.508],[98.078,456.547],[-98.078,456.547],[-179.117,375.508]],"c":true}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.636,0],[0,0],[0,-44.636],[0,0],[44.636,0],[0,0],[0,44.636]],"o":[[0,-44.636],[0,0],[44.636,0],[0,0],[0,44.636],[0,0],[-44.636,0],[0,0]],"v":[[-178.631,80.877],[-97.754,0],[97.754,0],[178.631,80.877],[178.631,373.399],[97.754,454.276],[-97.754,454.276],[-178.631,373.399]],"c":true}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.557,0],[0,0],[0,-44.557],[0,0],[44.557,0],[0,0],[0,44.557]],"o":[[0,-44.557],[0,0],[44.557,0],[0,0],[0,44.557],[0,0],[-44.557,0],[0,0]],"v":[[-178.2,80.733],[-97.467,0],[97.467,0],[178.2,80.733],[178.2,371.535],[97.467,452.269],[-97.467,452.269],[-178.2,371.535]],"c":true}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.487,0],[0,0],[0,-44.487],[0,0],[44.487,0],[0,0],[0,44.487]],"o":[[0,-44.487],[0,0],[44.487,0],[0,0],[0,44.487],[0,0],[-44.487,0],[0,0]],"v":[[-177.821,80.607],[-97.214,0],[97.214,0],[177.821,80.607],[177.821,369.892],[97.214,450.499],[-97.214,450.499],[-177.821,369.892]],"c":true}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.426,0],[0,0],[0,-44.426],[0,0],[44.426,0],[0,0],[0,44.426]],"o":[[0,-44.426],[0,0],[44.426,0],[0,0],[0,44.426],[0,0],[-44.426,0],[0,0]],"v":[[-177.488,80.496],[-96.992,0],[96.992,0],[177.488,80.496],[177.488,368.45],[96.992,448.946],[-96.992,448.946],[-177.488,368.45]],"c":true}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.372,0],[0,0],[0,-44.372],[0,0],[44.372,0],[0,0],[0,44.372]],"o":[[0,-44.372],[0,0],[44.372,0],[0,0],[0,44.372],[0,0],[-44.372,0],[0,0]],"v":[[-177.198,80.399],[-96.798,0],[96.798,0],[177.198,80.399],[177.198,367.19],[96.798,447.589],[-96.798,447.589],[-177.198,367.19]],"c":true}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.326,0],[0,0],[0,-44.326],[0,0],[44.326,0],[0,0],[0,44.326]],"o":[[0,-44.326],[0,0],[44.326,0],[0,0],[0,44.326],[0,0],[-44.326,0],[0,0]],"v":[[-176.945,80.315],[-96.63,0],[96.63,0],[176.945,80.315],[176.945,366.097],[96.63,446.412],[-96.63,446.412],[-176.945,366.097]],"c":true}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.286,0],[0,0],[0,-44.286],[0,0],[44.286,0],[0,0],[0,44.286]],"o":[[0,-44.286],[0,0],[44.286,0],[0,0],[0,44.286],[0,0],[-44.286,0],[0,0]],"v":[[-176.729,80.243],[-96.486,0],[96.486,0],[176.729,80.243],[176.729,365.158],[96.486,445.4],[-96.486,445.4],[-176.729,365.158]],"c":true}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.252,0],[0,0],[0,-44.252],[0,0],[44.252,0],[0,0],[0,44.252]],"o":[[0,-44.252],[0,0],[44.252,0],[0,0],[0,44.252],[0,0],[-44.252,0],[0,0]],"v":[[-176.545,80.182],[-96.363,0],[96.363,0],[176.545,80.182],[176.545,364.36],[96.363,444.542],[-96.363,444.542],[-176.545,364.36]],"c":true}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.224,0],[0,0],[0,-44.224],[0,0],[44.224,0],[0,0],[0,44.224]],"o":[[0,-44.224],[0,0],[44.224,0],[0,0],[0,44.224],[0,0],[-44.224,0],[0,0]],"v":[[-176.391,80.13],[-96.261,0],[96.261,0],[176.391,80.13],[176.391,363.694],[96.261,443.825],[-96.261,443.825],[-176.391,363.694]],"c":true}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.201,0],[0,0],[0,-44.201],[0,0],[44.201,0],[0,0],[0,44.201]],"o":[[0,-44.201],[0,0],[44.201,0],[0,0],[0,44.201],[0,0],[-44.201,0],[0,0]],"v":[[-176.266,80.089],[-96.177,0],[96.177,0],[176.266,80.089],[176.266,363.151],[96.177,443.239],[-96.177,443.239],[-176.266,363.151]],"c":true}],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.183,0],[0,0],[0,-44.183],[0,0],[44.183,0],[0,0],[0,44.183]],"o":[[0,-44.183],[0,0],[44.183,0],[0,0],[0,44.183],[0,0],[-44.183,0],[0,0]],"v":[[-176.166,80.055],[-96.111,0],[96.111,0],[176.166,80.055],[176.166,362.721],[96.111,442.776],[-96.111,442.776],[-176.166,362.721]],"c":true}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.169,0],[0,0],[0,-44.169],[0,0],[44.169,0],[0,0],[0,44.169]],"o":[[0,-44.169],[0,0],[44.169,0],[0,0],[0,44.169],[0,0],[-44.169,0],[0,0]],"v":[[-176.092,80.031],[-96.061,0],[96.061,0],[176.092,80.031],[176.092,362.397],[96.061,442.427],[-96.061,442.427],[-176.092,362.397]],"c":true}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.154,0],[0,0],[0,-44.154],[0,0],[44.154,0],[0,0],[0,44.154]],"o":[[0,-44.154],[0,0],[44.154,0],[0,0],[0,44.154],[0,0],[-44.154,0],[0,0]],"v":[[-176.01,80.003],[-96.007,0],[96.007,0],[176.01,80.003],[176.01,362.042],[96.007,442.046],[-96.007,442.046],[-176.01,362.042]],"c":true}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.152,0],[0,0],[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152]],"o":[[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152],[0,0],[-44.152,0],[0,0]],"v":[[-176,80],[-96,0],[96,0],[176,80],[176,362],[96,442],[-96,442],[-176,362]],"c":true}],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.127,0],[0,0],[0,-44.127],[0,0],[44.127,0],[0,0],[0,44.127]],"o":[[0,-44.127],[0,0],[44.127,0],[0,0],[0,44.127],[0,0],[-44.127,0],[0,0]],"v":[[-175.806,79.954],[-95.852,0],[95.852,0],[175.806,79.954],[175.806,361.402],[95.852,441.356],[-95.852,441.356],[-175.806,361.402]],"c":true}],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.042,0],[0,0],[0,-44.042],[0,0],[44.042,0],[0,0],[0,44.042]],"o":[[0,-44.042],[0,0],[44.042,0],[0,0],[0,44.042],[0,0],[-44.042,0],[0,0]],"v":[[-175.151,79.8],[-95.351,0],[95.351,0],[175.151,79.8],[175.151,359.379],[95.351,439.179],[-95.351,439.179],[-175.151,359.379]],"c":true}],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.877,0],[0,0],[0,-43.877],[0,0],[43.877,0],[0,0],[0,43.877]],"o":[[0,-43.877],[0,0],[43.877,0],[0,0],[0,43.877],[0,0],[-43.877,0],[0,0]],"v":[[-173.883,79.502],[-94.381,0],[94.381,0],[173.883,79.502],[173.883,355.463],[94.381,434.965],[-94.381,434.965],[-173.883,355.463]],"c":true}],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.602,0],[0,0],[0,-43.602],[0,0],[43.602,0],[0,0],[0,43.602]],"o":[[0,-43.602],[0,0],[43.602,0],[0,0],[0,43.602],[0,0],[-43.602,0],[0,0]],"v":[[-171.765,79.003],[-92.761,0],[92.761,0],[171.765,79.003],[171.765,348.92],[92.761,427.924],[-92.761,427.924],[-171.765,348.92]],"c":true}],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.166,0],[0,0],[0,-43.166],[0,0],[43.166,0],[0,0],[0,43.166]],"o":[[0,-43.166],[0,0],[43.166,0],[0,0],[0,43.166],[0,0],[-43.166,0],[0,0]],"v":[[-168.404,78.213],[-90.191,0],[90.191,0],[168.404,78.213],[168.404,338.542],[90.191,416.754],[-90.191,416.754],[-168.404,338.542]],"c":true}],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-42.482,0],[0,0],[0,-42.482],[0,0],[42.482,0],[0,0],[0,42.482]],"o":[[0,-42.482],[0,0],[42.482,0],[0,0],[0,42.482],[0,0],[-42.482,0],[0,0]],"v":[[-163.142,76.975],[-86.168,0],[86.168,0],[163.142,76.975],[163.142,322.292],[86.168,399.267],[-86.168,399.267],[-163.142,322.292]],"c":true}],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-41.435,0],[0,0],[0,-41.435],[0,0],[41.435,0],[0,0],[0,41.435]],"o":[[0,-41.435],[0,0],[41.435,0],[0,0],[0,41.435],[0,0],[-41.435,0],[0,0]],"v":[[-155.078,75.077],[-80.001,0],[80.001,0],[155.078,75.077],[155.078,297.387],[80.001,372.464],[-80.001,372.464],[-155.078,297.387]],"c":true}],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-40.054,0],[0,0],[0,-40.054],[0,0],[40.054,0],[0,0],[0,40.054]],"o":[[0,-40.054],[0,0],[40.054,0],[0,0],[0,40.054],[0,0],[-40.054,0],[0,0]],"v":[[-144.442,72.575],[-71.868,0],[71.868,0],[144.442,72.575],[144.442,264.543],[71.868,337.118],[-71.868,337.118],[-144.442,264.543]],"c":true}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-38.75,0],[0,0],[0,-38.75],[0,0],[38.75,0],[0,0],[0,38.75]],"o":[[0,-38.75],[0,0],[38.75,0],[0,0],[0,38.75],[0,0],[-38.75,0],[0,0]],"v":[[-134.399,70.212],[-64.188,0],[64.188,0],[134.399,70.212],[134.399,233.528],[64.188,303.739],[-64.188,303.739],[-134.399,233.528]],"c":true}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-37.775,0],[0,0],[0,-37.775],[0,0],[37.775,0],[0,0],[0,37.775]],"o":[[0,-37.775],[0,0],[37.775,0],[0,0],[0,37.775],[0,0],[-37.775,0],[0,0]],"v":[[-126.895,68.446],[-58.449,0],[58.449,0],[126.895,68.446],[126.895,210.354],[58.449,278.8],[-58.449,278.8],[-126.895,210.354]],"c":true}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-37.077,0],[0,0],[0,-37.077],[0,0],[37.077,0],[0,0],[0,37.077]],"o":[[0,-37.077],[0,0],[37.077,0],[0,0],[0,37.077],[0,0],[-37.077,0],[0,0]],"v":[[-121.522,67.182],[-54.34,0],[54.34,0],[121.522,67.182],[121.522,193.758],[54.34,260.939],[-54.34,260.939],[-121.522,193.758]],"c":true}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-36.569,0],[0,0],[0,-36.569],[0,0],[36.569,0],[0,0],[0,36.569]],"o":[[0,-36.569],[0,0],[36.569,0],[0,0],[0,36.569],[0,0],[-36.569,0],[0,0]],"v":[[-117.609,66.261],[-51.348,0],[51.348,0],[117.609,66.261],[117.609,181.674],[51.348,247.935],[-51.348,247.935],[-117.609,181.674]],"c":true}],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-36.193,0],[0,0],[0,-36.193],[0,0],[36.193,0],[0,0],[0,36.193]],"o":[[0,-36.193],[0,0],[36.193,0],[0,0],[0,36.193],[0,0],[-36.193,0],[0,0]],"v":[[-114.709,65.579],[-49.131,0],[49.131,0],[114.709,65.579],[114.709,172.72],[49.131,238.299],[-49.131,238.299],[-114.709,172.72]],"c":true}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.912,0],[0,0],[0,-35.912],[0,0],[35.912,0],[0,0],[0,35.912]],"o":[[0,-35.912],[0,0],[35.912,0],[0,0],[0,35.912],[0,0],[-35.912,0],[0,0]],"v":[[-112.544,65.069],[-47.475,0],[47.475,0],[112.544,65.069],[112.544,166.034],[47.475,231.104],[-47.475,231.104],[-112.544,166.034]],"c":true}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.703,0],[0,0],[0,-35.703],[0,0],[35.703,0],[0,0],[0,35.703]],"o":[[0,-35.703],[0,0],[35.703,0],[0,0],[0,35.703],[0,0],[-35.703,0],[0,0]],"v":[[-110.934,64.69],[-46.244,0],[46.244,0],[110.934,64.69],[110.934,161.062],[46.244,225.752],[-46.244,225.752],[-110.934,161.062]],"c":true}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.55,0],[0,0],[0,-35.55],[0,0],[35.55,0],[0,0],[0,35.55]],"o":[[0,-35.55],[0,0],[35.55,0],[0,0],[0,35.55],[0,0],[-35.55,0],[0,0]],"v":[[-109.758,64.414],[-45.344,0],[45.344,0],[109.758,64.414],[109.758,157.429],[45.344,221.843],[-45.344,221.843],[-109.758,157.429]],"c":true}],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.443,0],[0,0],[0,-35.443],[0,0],[35.443,0],[0,0],[0,35.443]],"o":[[0,-35.443],[0,0],[35.443,0],[0,0],[0,35.443],[0,0],[-35.443,0],[0,0]],"v":[[-108.931,64.219],[-44.712,0],[44.712,0],[108.931,64.219],[108.931,154.875],[44.712,219.094],[-44.712,219.094],[-108.931,154.875]],"c":true}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.372,0],[0,0],[0,-35.372],[0,0],[35.372,0],[0,0],[0,35.372]],"o":[[0,-35.372],[0,0],[35.372,0],[0,0],[0,35.372],[0,0],[-35.372,0],[0,0]],"v":[[-108.391,64.092],[-44.299,0],[44.299,0],[108.391,64.092],[108.391,153.209],[44.299,217.301],[-44.299,217.301],[-108.391,153.209]],"c":true}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.334,0],[0,0],[0,-35.334],[0,0],[35.334,0],[0,0],[0,35.334]],"o":[[0,-35.334],[0,0],[35.334,0],[0,0],[0,35.334],[0,0],[-35.334,0],[0,0]],"v":[[-108.093,64.022],[-44.071,0],[44.071,0],[108.093,64.022],[108.093,152.287],[44.071,216.309],[-44.071,216.309],[-108.093,152.287]],"c":true}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.322,0],[0,0],[0,-35.322],[0,0],[35.322,0],[0,0],[0,35.322]],"o":[[0,-35.322],[0,0],[35.322,0],[0,0],[0,35.322],[0,0],[-35.322,0],[0,0]],"v":[[-108,64],[-44,0],[44,0],[108,64],[108,152],[44,216],[-44,216],[-108,152]],"c":true}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.293,0],[0,0],[0,-35.293],[0,0],[35.293,0],[0,0],[0,35.293]],"o":[[0,-35.293],[0,0],[35.293,0],[0,0],[0,35.293],[0,0],[-35.293,0],[0,0]],"v":[[-108.025,63.949],[-44.076,0],[44.076,0],[108.025,63.949],[108.025,152.102],[44.076,216.051],[-44.076,216.051],[-108.025,152.102]],"c":true}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.214,0],[0,0],[0,-35.214],[0,0],[35.214,0],[0,0],[0,35.214]],"o":[[0,-35.214],[0,0],[35.214,0],[0,0],[0,35.214],[0,0],[-35.214,0],[0,0]],"v":[[-108.097,63.806],[-44.292,0],[44.292,0],[108.097,63.806],[108.097,152.389],[44.292,216.194],[-44.292,216.194],[-108.097,152.389]],"c":true}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.092,0],[0,0],[0,-35.092],[0,0],[35.092,0],[0,0],[0,35.092]],"o":[[0,-35.092],[0,0],[35.092,0],[0,0],[0,35.092],[0,0],[-35.092,0],[0,0]],"v":[[-108.208,63.584],[-44.624,0],[44.624,0],[108.208,63.584],[108.208,152.832],[44.624,216.416],[-44.624,216.416],[-108.208,152.832]],"c":true}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.934,0],[0,0],[0,-34.934],[0,0],[34.934,0],[0,0],[0,34.934]],"o":[[0,-34.934],[0,0],[34.934,0],[0,0],[0,34.934],[0,0],[-34.934,0],[0,0]],"v":[[-108.351,63.298],[-45.052,0],[45.052,0],[108.351,63.298],[108.351,153.403],[45.052,216.702],[-45.052,216.702],[-108.351,153.403]],"c":true}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.749,0],[0,0],[0,-34.749],[0,0],[34.749,0],[0,0],[0,34.749]],"o":[[0,-34.749],[0,0],[34.749,0],[0,0],[0,34.749],[0,0],[-34.749,0],[0,0]],"v":[[-108.519,62.963],[-45.556,0],[45.556,0],[108.519,62.963],[108.519,154.074],[45.556,217.037],[-45.556,217.037],[-108.519,154.074]],"c":true}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.545,0],[0,0],[0,-34.545],[0,0],[34.545,0],[0,0],[0,34.545]],"o":[[0,-34.545],[0,0],[34.545,0],[0,0],[0,34.545],[0,0],[-34.545,0],[0,0]],"v":[[-108.704,62.592],[-46.112,0],[46.112,0],[108.704,62.592],[108.704,154.816],[46.112,217.408],[-46.112,217.408],[-108.704,154.816]],"c":true}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.328,0],[0,0],[0,-34.328],[0,0],[34.328,0],[0,0],[0,34.328]],"o":[[0,-34.328],[0,0],[34.328,0],[0,0],[0,34.328],[0,0],[-34.328,0],[0,0]],"v":[[-108.9,62.2],[-46.7,0],[46.7,0],[108.9,62.2],[108.9,155.601],[46.7,217.8],[-46.7,217.8],[-108.9,155.601]],"c":true}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.108,0],[0,0],[0,-34.108],[0,0],[34.108,0],[0,0],[0,34.108]],"o":[[0,-34.108],[0,0],[34.108,0],[0,0],[0,34.108],[0,0],[-34.108,0],[0,0]],"v":[[-109.1,61.8],[-47.3,0],[47.3,0],[109.1,61.8],[109.1,156.399],[47.3,218.2],[-47.3,218.2],[-109.1,156.399]],"c":true}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.891,0],[0,0],[0,-33.891],[0,0],[33.891,0],[0,0],[0,33.891]],"o":[[0,-33.891],[0,0],[33.891,0],[0,0],[0,33.891],[0,0],[-33.891,0],[0,0]],"v":[[-109.296,61.408],[-47.888,0],[47.888,0],[109.296,61.408],[109.296,157.184],[47.888,218.592],[-47.888,218.592],[-109.296,157.184]],"c":true}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.686,0],[0,0],[0,-33.686],[0,0],[33.686,0],[0,0],[0,33.686]],"o":[[0,-33.686],[0,0],[33.686,0],[0,0],[0,33.686],[0,0],[-33.686,0],[0,0]],"v":[[-109.481,61.037],[-48.444,0],[48.444,0],[109.481,61.037],[109.481,157.926],[48.444,218.963],[-48.444,218.963],[-109.481,157.926]],"c":true}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.501,0],[0,0],[0,-33.501],[0,0],[33.501,0],[0,0],[0,33.501]],"o":[[0,-33.501],[0,0],[33.501,0],[0,0],[0,33.501],[0,0],[-33.501,0],[0,0]],"v":[[-109.649,60.702],[-48.948,0],[48.948,0],[109.649,60.702],[109.649,158.597],[48.948,219.298],[-48.948,219.298],[-109.649,158.597]],"c":true}],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.344,0],[0,0],[0,-33.344],[0,0],[33.344,0],[0,0],[0,33.344]],"o":[[0,-33.344],[0,0],[33.344,0],[0,0],[0,33.344],[0,0],[-33.344,0],[0,0]],"v":[[-109.792,60.416],[-49.376,0],[49.376,0],[109.792,60.416],[109.792,159.168],[49.376,219.584],[-49.376,219.584],[-109.792,159.168]],"c":true}],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.221,0],[0,0],[0,-33.221],[0,0],[33.221,0],[0,0],[0,33.221]],"o":[[0,-33.221],[0,0],[33.221,0],[0,0],[0,33.221],[0,0],[-33.221,0],[0,0]],"v":[[-109.903,60.194],[-49.708,0],[49.708,0],[109.903,60.194],[109.903,159.611],[49.708,219.806],[-49.708,219.806],[-109.903,159.611]],"c":true}],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.142,0],[0,0],[0,-33.142],[0,0],[33.142,0],[0,0],[0,33.142]],"o":[[0,-33.142],[0,0],[33.142,0],[0,0],[0,33.142],[0,0],[-33.142,0],[0,0]],"v":[[-109.975,60.051],[-49.924,0],[49.924,0],[109.975,60.051],[109.975,159.898],[49.924,219.949],[-49.924,219.949],[-109.975,159.898]],"c":true}],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.114,0],[0,0],[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114]],"o":[[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114],[0,0],[-33.114,0],[0,0]],"v":[[-110,60],[-50,0],[50,0],[110,60],[110,160],[50,220],[-50,220],[-110,160]],"c":true}],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":425,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".surfaceOverview","cl":"surfaceOverview","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,446,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[412,892],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.875,0.953,0.686,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.875,0.953,0.686,1],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":425,"st":0,"ct":1,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Part03_Demonstration_Overview_V02","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,446,0],"ix":2,"l":2},"a":{"a":0,"k":[206,446,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":412,"h":892,"ip":891,"op":1337,"st":891,"bm":0},{"ddd":0,"ind":2,"ty":0,"nm":"Part02_Charade_Overview_V02","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,446,0],"ix":2,"l":2},"a":{"a":0,"k":[206,446,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":412,"h":892,"ip":425,"op":891,"st":425,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"Part01_ThumbDemo_Overview_V02","refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,446,0],"ix":2,"l":2},"a":{"a":0,"k":[206,446,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":412,"h":892,"ip":0,"op":425,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw/overview_gesture_tutorial_open_foldable_animation.json b/quickstep/res/raw/overview_gesture_tutorial_open_foldable_animation.json
new file mode 100644
index 0000000..b57132b
--- /dev/null
+++ b/quickstep/res/raw/overview_gesture_tutorial_open_foldable_animation.json
@@ -0,0 +1 @@
+{"v":"5.10.0","fr":60,"ip":0,"op":1336,"w":841,"h":701,"nm":"SUW_FO_Overview_Preview V02","ddd":0,"assets":[{"id":"comp_0","nm":"Part01_Thumb_Overview_FO_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"OVERSHOOT THUMB","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":246,"s":[563.5]},{"t":331,"s":[603.5]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":182,"s":[571]},{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":246,"s":[591]},{"t":331,"s":[571]}],"ix":4}},"a":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":321,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":371,"s":[40,0,0]}],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":426,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"HAND NULL","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.39],"y":[1]},"o":{"x":[0.59],"y":[0]},"t":3,"s":[10]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.15],"y":[0]},"t":59,"s":[0]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":95,"s":[-3]},{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":122,"s":[-4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.166],"y":[0]},"t":170,"s":[15]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.5],"y":[0]},"t":201,"s":[15]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":231,"s":[12]},{"i":{"x":[0.22],"y":[0.993]},"o":{"x":[0.41],"y":[0]},"t":246,"s":[15.59]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":290,"s":[40]},{"i":{"x":[0.44],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":321,"s":[40]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":381,"s":[15]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":385,"s":[15]},{"t":425,"s":[65]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.06],"y":[0.36]},"t":0,"s":[260]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":73,"s":[123]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.5],"y":[0]},"t":201,"s":[123]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":231,"s":[70]},{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":246,"s":[70]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":256.666,"s":[130.8]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0]},"t":310,"s":[222]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":331,"s":[152]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":371,"s":[94]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":385,"s":[94]},{"t":425,"s":[364]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.194],"y":[0]},"t":0,"s":[273.366]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":63,"s":[162]},{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":122,"s":[162]},{"i":{"x":[0.83],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":170,"s":[0]},{"i":{"x":[0.33],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":246,"s":[90]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":310,"s":[43]},{"i":{"x":[0.44],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":321,"s":[43]},{"i":{"x":[0.44],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":381,"s":[11]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":385,"s":[11]},{"t":425,"s":[167]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":426,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Thumb - KO","parent":2,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"k":[{"s":[17.7],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.084],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.752],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.548],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.405],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.298],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.213],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.144],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.086],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.037],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.995],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.958],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.926],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.898],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.874],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.852],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.832],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.815],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.8],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.786],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.773],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.763],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.753],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.744],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.73],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.715],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"p":{"k":[{"s":[0,0,0],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.015,0,0],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.077,0,0],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.192,0,0],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.364,0,0],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.598,0,0],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.902,0,0],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.285,0,0],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.76,0,0],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.347,0,0],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.074,0,0],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.968,0,0],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.068,0,0],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.423,0,0],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.089,0,0],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.109,0,0],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.416,0,0],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.732,0,0],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.688,0,0],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.11,0,0],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.047,0,0],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.624,0,0],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.922,0,0],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-20,0,0],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-20,0,0],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.792,0,0],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.993,0,0],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.321,0,0],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.437,0,0],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.855,0,0],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-7.728,0,0],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.403,0,0],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.711,0,0],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.481,0,0],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.587,0,0],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.945,0,0],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.494,0,0],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.2,0,0],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.041,0,0],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"a":{"a":0,"k":[0,49,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":25,"nm":"Elevation","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[0,0,0,0.25],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":63.75,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":180,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":4,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":8,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.095,4.103],[20.866,-4.391],[30.055,14.909],[-19.458,9.569],[-43.79,10.76],[-18.62,4.309],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.284,-4.689],[-20.866,4.391],[-30.056,-14.63],[31.09,-15.283],[13.475,-3.311],[35.363,-7.848],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.667,116.665],[-117.97,119.232],[-229.615,116.95],[-229.867,50.888],[-139.016,15.389],[-88.152,4.787],[-12.612,-36.255]],"c":true}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.098,4.127],[20.863,-4.414],[30.005,14.508],[-19.477,9.414],[-43.782,10.829],[-18.619,4.316],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.287,-4.716],[-20.863,4.414],[-30.007,-14.235],[31.121,-15.037],[13.472,-3.332],[35.361,-7.859],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.82,116.749],[-117.884,119.917],[-226.898,115.937],[-226.972,51.297],[-139.102,14.702],[-86.526,4.409],[-12.612,-36.255]],"c":true}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.099,4.142],[20.861,-4.429],[29.974,14.261],[-19.489,9.319],[-43.776,10.871],[-18.619,4.32],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.289,-4.733],[-20.861,4.429],[-29.977,-13.992],[31.139,-14.886],[13.471,-3.345],[35.36,-7.866],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.3,116.8],[-117.832,120.338],[-225.228,115.315],[-225.194,51.548],[-139.154,14.28],[-85.528,4.177],[-12.612,-36.255]],"c":true}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.101,4.152],[20.86,-4.438],[29.953,14.089],[-19.498,9.253],[-43.773,10.9],[-18.618,4.323],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.291,-4.744],[-20.86,4.438],[-29.956,-13.823],[31.153,-14.781],[13.469,-3.354],[35.36,-7.871],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.936,116.835],[-117.796,120.632],[-224.061,114.88],[-223.952,51.724],[-139.191,13.985],[-84.829,4.015],[-12.612,-36.255]],"c":true}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.16],[20.859,-4.446],[29.937,13.959],[-19.504,9.203],[-43.77,10.923],[-18.618,4.325],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.292,-4.753],[-20.859,4.446],[-29.94,-13.695],[31.162,-14.701],[13.469,-3.361],[35.359,-7.874],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.662,116.862],[-117.768,120.854],[-223.181,114.552],[-223.014,51.856],[-139.219,13.762],[-84.303,3.893],[-12.612,-36.255]],"c":true}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.166],[20.858,-4.452],[29.924,13.857],[-19.509,9.163],[-43.768,10.94],[-18.618,4.326],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.293,-4.76],[-20.858,4.452],[-29.927,-13.594],[31.17,-14.638],[13.468,-3.366],[35.359,-7.877],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.446,116.884],[-117.746,121.029],[-222.486,114.293],[-222.274,51.961],[-139.241,13.586],[-83.887,3.796],[-12.612,-36.255]],"c":true}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.103,4.171],[20.858,-4.457],[29.914,13.773],[-19.513,9.131],[-43.766,10.954],[-18.618,4.328],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.766],[-20.858,4.457],[-29.917,-13.511],[31.177,-14.587],[13.467,-3.371],[35.359,-7.88],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.269,116.901],[-117.728,121.172],[-221.919,114.082],[-221.67,52.046],[-139.258,13.443],[-83.548,3.717],[-12.612,-36.255]],"c":true}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.175],[20.857,-4.461],[29.905,13.703],[-19.516,9.104],[-43.764,10.966],[-18.617,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.771],[-20.857,4.461],[-29.908,-13.443],[31.182,-14.544],[13.467,-3.375],[35.358,-7.882],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.121,116.915],[-117.714,121.291],[-221.446,113.906],[-221.166,52.118],[-139.273,13.323],[-83.265,3.652],[-12.612,-36.255]],"c":true}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.179],[20.857,-4.464],[29.897,13.644],[-19.519,9.081],[-43.763,10.977],[-18.617,4.33],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.775],[-20.857,4.464],[-29.901,-13.384],[31.186,-14.508],[13.467,-3.378],[35.358,-7.883],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.997,116.928],[-117.701,121.392],[-221.044,113.756],[-220.739,52.178],[-139.286,13.222],[-83.025,3.596],[-12.612,-36.255]],"c":true}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.182],[20.856,-4.467],[29.891,13.593],[-19.522,9.062],[-43.762,10.985],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.778],[-20.856,4.467],[-29.895,-13.334],[31.19,-14.477],[13.466,-3.38],[35.358,-7.885],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.889,116.938],[-117.69,121.479],[-220.7,113.628],[-220.372,52.23],[-139.297,13.135],[-82.819,3.548],[-12.612,-36.255]],"c":true}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.184],[20.856,-4.47],[29.886,13.549],[-19.524,9.045],[-43.761,10.993],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.781],[-20.856,4.47],[-29.89,-13.291],[31.194,-14.45],[13.466,-3.383],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.796,116.947],[-117.681,121.554],[-220.401,113.516],[-220.054,52.275],[-139.306,13.059],[-82.64,3.507],[-12.612,-36.255]],"c":true}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.187],[20.856,-4.472],[29.881,13.51],[-19.526,9.03],[-43.76,10.999],[-18.617,4.332],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.784],[-20.856,4.472],[-29.885,-13.253],[31.197,-14.426],[13.466,-3.385],[35.358,-7.887],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.715,116.955],[-117.673,121.62],[-220.14,113.419],[-219.776,52.314],[-139.314,12.993],[-82.484,3.47],[-12.612,-36.255]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.189],[20.856,-4.474],[29.877,13.477],[-19.527,9.017],[-43.76,11.005],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.786],[-20.856,4.474],[-29.881,-13.219],[31.199,-14.406],[13.465,-3.386],[35.357,-7.888],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.643,116.962],[-117.665,121.678],[-219.911,113.334],[-219.531,52.349],[-139.322,12.935],[-82.347,3.438],[-12.612,-36.255]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.191],[20.855,-4.476],[29.873,13.447],[-19.529,9.005],[-43.759,11.01],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.788],[-20.855,4.476],[-29.877,-13.19],[31.201,-14.387],[13.465,-3.388],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.58,116.969],[-117.659,121.729],[-219.708,113.258],[-219.316,52.379],[-139.328,12.884],[-82.226,3.41],[-12.612,-36.255]],"c":true}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.192],[20.855,-4.477],[29.87,13.42],[-19.53,8.995],[-43.758,11.015],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.79],[-20.855,4.477],[-29.874,-13.164],[31.203,-14.371],[13.465,-3.389],[35.357,-7.89],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.524,116.974],[-117.654,121.774],[-219.529,113.191],[-219.124,52.406],[-139.334,12.839],[-82.118,3.385],[-12.612,-36.255]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.194],[20.855,-4.478],[29.867,13.397],[-19.531,8.986],[-43.758,11.019],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.791],[-20.855,4.478],[-29.871,-13.141],[31.205,-14.357],[13.465,-3.391],[35.357,-7.89],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.475,116.979],[-117.649,121.815],[-219.369,113.132],[-218.955,52.43],[-139.339,12.798],[-82.023,3.363],[-12.612,-36.255]],"c":true}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.195],[20.855,-4.48],[29.864,13.376],[-19.532,8.978],[-43.757,11.022],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.793],[-20.855,4.48],[-29.868,-13.12],[31.207,-14.344],[13.465,-3.392],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.43,116.983],[-117.644,121.85],[-219.227,113.079],[-218.803,52.451],[-139.343,12.762],[-81.938,3.343],[-12.612,-36.255]],"c":true}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.196],[20.855,-4.481],[29.862,13.357],[-19.533,8.971],[-43.757,11.026],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.794],[-20.855,4.481],[-29.866,-13.102],[31.208,-14.332],[13.465,-3.393],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.391,116.987],[-117.64,121.882],[-219.101,113.032],[-218.669,52.47],[-139.347,12.73],[-81.862,3.326],[-12.612,-36.255]],"c":true}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.197],[20.855,-4.482],[29.86,13.34],[-19.534,8.965],[-43.757,11.028],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.795],[-20.855,4.482],[-29.864,-13.085],[31.21,-14.322],[13.465,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.356,116.991],[-117.637,121.911],[-218.988,112.99],[-218.549,52.487],[-139.351,12.702],[-81.795,3.31],[-12.612,-36.255]],"c":true}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.198],[20.854,-4.483],[29.858,13.326],[-19.535,8.959],[-43.756,11.031],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.796],[-20.854,4.483],[-29.862,-13.071],[31.211,-14.313],[13.464,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.324,116.994],[-117.633,121.936],[-218.888,112.952],[-218.441,52.503],[-139.354,12.676],[-81.735,3.296],[-12.612,-36.255]],"c":true}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.199],[20.854,-4.483],[29.856,13.312],[-19.535,8.954],[-43.756,11.033],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.797],[-20.854,4.483],[-29.861,-13.058],[31.212,-14.305],[13.464,-3.395],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.297,116.997],[-117.631,121.959],[-218.798,112.919],[-218.346,52.516],[-139.357,12.654],[-81.681,3.284],[-12.612,-36.255]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.199],[20.854,-4.484],[29.855,13.301],[-19.536,8.949],[-43.756,11.035],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.798],[-20.854,4.484],[-29.859,-13.046],[31.213,-14.298],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.272,116.999],[-117.628,121.979],[-218.719,112.889],[-218.261,52.528],[-139.359,12.634],[-81.633,3.273],[-12.612,-36.255]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.2],[20.854,-4.485],[29.854,13.29],[-19.537,8.945],[-43.756,11.037],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.799],[-20.854,4.485],[-29.858,-13.036],[31.213,-14.291],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.25,117.001],[-117.626,121.996],[-218.648,112.863],[-218.186,52.539],[-139.361,12.616],[-81.591,3.263],[-12.612,-36.255]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.485],[29.852,13.281],[-19.537,8.942],[-43.755,11.039],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.799],[-20.854,4.485],[-29.857,-13.027],[31.214,-14.286],[13.464,-3.397],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.23,117.003],[-117.624,122.012],[-218.586,112.84],[-218.12,52.548],[-139.363,12.6],[-81.554,3.254],[-12.612,-36.255]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.486],[29.851,13.273],[-19.537,8.939],[-43.755,11.04],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.856,-13.019],[31.215,-14.281],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.213,117.005],[-117.622,122.026],[-218.531,112.819],[-218.062,52.556],[-139.365,12.586],[-81.521,3.247],[-12.612,-36.255]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.486],[29.85,13.266],[-19.538,8.936],[-43.755,11.041],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.855,-13.012],[31.215,-14.277],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.199,117.006],[-117.621,122.038],[-218.483,112.801],[-218.011,52.563],[-139.366,12.574],[-81.493,3.24],[-12.612,-36.255]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.486],[29.85,13.26],[-19.538,8.933],[-43.755,11.042],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.486],[-29.854,-13.006],[31.216,-14.273],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.186,117.007],[-117.619,122.048],[-218.442,112.786],[-217.967,52.57],[-139.368,12.564],[-81.468,3.234],[-12.612,-36.255]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.255],[-19.538,8.931],[-43.755,11.043],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-13.001],[31.216,-14.27],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.174,117.009],[-117.618,122.057],[-218.406,112.773],[-217.929,52.575],[-139.369,12.555],[-81.446,3.229],[-12.612,-36.255]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.25],[-19.538,8.93],[-43.755,11.044],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-12.996],[31.216,-14.267],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.165,117.009],[-117.617,122.065],[-218.376,112.761],[-217.896,52.58],[-139.37,12.547],[-81.428,3.225],[-12.612,-36.255]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.246],[-19.539,8.928],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.992],[31.217,-14.265],[13.464,-3.399],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.157,117.01],[-117.617,122.071],[-218.35,112.752],[-217.869,52.583],[-139.371,12.541],[-81.413,3.221],[-12.612,-36.255]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.243],[-19.539,8.927],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.99],[31.217,-14.263],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.151,117.011],[-117.616,122.077],[-218.33,112.744],[-217.847,52.586],[-139.371,12.535],[-81.401,3.219],[-12.612,-36.255]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.847,13.241],[-19.539,8.926],[-43.755,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.987],[31.217,-14.261],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.146,117.011],[-117.615,122.081],[-218.313,112.738],[-217.83,52.589],[-139.372,12.531],[-81.391,3.216],[-12.612,-36.255]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.853,-4.49],[29.848,13.234],[-19.538,8.926],[-43.753,11.05],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.853,4.49],[-29.852,-12.98],[31.216,-14.262],[13.464,-3.4],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.609,122.089],[-218.282,112.739],[-217.802,52.604],[-139.378,12.528],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.852,-4.496],[29.852,13.224],[-19.535,8.933],[-43.749,11.064],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.852,4.496],[-29.856,-12.971],[31.211,-14.271],[13.462,-3.405],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.592,122.092],[-218.266,112.774],[-217.805,52.64],[-139.395,12.539],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.849,-4.509],[29.859,13.206],[-19.529,8.944],[-43.742,11.09],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.849,4.509],[-29.863,-12.952],[31.202,-14.29],[13.46,-3.413],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.558,122.098],[-218.236,112.841],[-217.812,52.707],[-139.427,12.561],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.843,-4.529],[29.871,13.176],[-19.52,8.963],[-43.729,11.133],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.843,4.529],[-29.875,-12.923],[31.187,-14.32],[13.456,-3.426],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.504,122.108],[-218.187,112.95],[-217.822,52.818],[-139.479,12.596],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.835,-4.56],[29.89,13.13],[-19.505,8.992],[-43.71,11.199],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.835,4.56],[-29.893,-12.877],[31.163,-14.367],[13.45,-3.446],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.42,122.123],[-218.112,113.119],[-217.838,52.99],[-139.56,12.65],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.823,-4.609],[29.918,13.059],[-19.483,9.037],[-43.681,11.3],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.823,4.609],[-29.921,-12.806],[31.128,-14.438],[13.441,-3.477],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.29,122.147],[-217.996,113.379],[-217.863,53.253],[-139.685,12.734],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.804,-4.686],[29.964,12.946],[-19.447,9.109],[-43.634,11.462],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.804,4.686],[-29.966,-12.693],[31.07,-14.553],[13.427,-3.527],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.083,122.185],[-217.811,113.794],[-217.902,53.674],[-139.884,12.867],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.77,-4.822],[30.044,12.747],[-19.384,9.235],[-43.551,11.747],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.77,4.822],[-30.044,-12.494],[30.969,-14.755],[13.401,-3.615],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.718,122.253],[-217.485,114.525],[-217.971,54.416],[-140.234,13.103],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.705,-5.078],[30.195,12.372],[-19.265,9.473],[-43.396,12.284],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.705,5.078],[-30.192,-12.118],[30.779,-15.136],[13.353,-3.78],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.032,122.379],[-216.87,115.902],[-218.102,55.813],[-140.895,13.546],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.64,-5.337],[30.347,11.993],[-19.145,9.713],[-43.239,12.825],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.64,5.337],[-30.341,-11.74],[30.588,-15.519],[13.305,-3.947],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.339,122.506],[-216.251,117.29],[-218.233,57.222],[-141.561,13.993],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.601,-5.492],[30.439,11.766],[-19.073,9.857],[-43.144,13.15],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.601,5.492],[-30.431,-11.513],[30.473,-15.749],[13.276,-4.047],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.924,122.583],[-215.879,118.123],[-218.312,58.067],[-141.96,14.261],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.575,-5.593],[30.498,11.617],[-19.026,9.952],[-43.083,13.363],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.575,5.593],[-30.489,-11.364],[30.397,-15.9],[13.257,-4.112],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.651,122.633],[-215.635,118.67],[-218.364,58.621],[-142.223,14.437],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.557,-5.667],[30.542,11.51],[-18.992,10.02],[-43.038,13.517],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.557,5.667],[-30.532,-11.257],[30.343,-16.009],[13.243,-4.159],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.455,122.669],[-215.459,119.064],[-218.401,59.021],[-142.412,14.564],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.543,-5.723],[30.575,11.428],[-18.966,10.072],[-43.004,13.634],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.543,5.723],[-30.564,-11.175],[30.301,-16.092],[13.233,-4.195],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.305,122.697],[-215.325,119.365],[-218.43,59.326],[-142.556,14.661],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.531,-5.767],[30.601,11.363],[-18.945,10.113],[-42.977,13.727],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.531,5.767],[-30.589,-11.11],[30.269,-16.158],[13.225,-4.224],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.186,122.719],[-215.219,119.602],[-218.452,59.567],[-142.67,14.737],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.523,-5.802],[30.622,11.312],[-18.929,10.146],[-42.956,13.801],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.523,5.802],[-30.61,-11.058],[30.242,-16.21],[13.218,-4.247],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.092,122.736],[-215.134,119.792],[-218.47,59.76],[-142.761,14.798],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":111,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.515,-5.831],[30.638,11.269],[-18.916,10.173],[-42.938,13.861],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.515,5.831],[-30.626,-11.016],[30.221,-16.253],[13.213,-4.265],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.014,122.75],[-215.066,119.947],[-218.485,59.916],[-142.835,14.848],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":112,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.509,-5.855],[30.652,11.235],[-18.905,10.194],[-42.924,13.91],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.509,5.855],[-30.64,-10.982],[30.204,-16.288],[13.208,-4.28],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.952,122.762],[-215.009,120.073],[-218.497,60.044],[-142.896,14.888],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.505,-5.874],[30.664,11.207],[-18.896,10.212],[-42.912,13.951],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.505,5.874],[-30.651,-10.954],[30.19,-16.316],[13.205,-4.293],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.9,122.771],[-214.963,120.176],[-218.507,60.149],[-142.945,14.922],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.501,-5.889],[30.673,11.184],[-18.889,10.227],[-42.903,13.983],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.501,5.889],[-30.66,-10.931],[30.178,-16.339],[13.202,-4.303],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.858,122.779],[-214.926,120.259],[-218.514,60.234],[-142.985,14.948],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.497,-5.902],[30.68,11.166],[-18.883,10.238],[-42.895,14.009],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.497,5.902],[-30.667,-10.913],[30.169,-16.358],[13.2,-4.311],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.825,122.785],[-214.896,120.327],[-218.521,60.302],[-143.017,14.97],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.495,-5.912],[30.686,11.151],[-18.878,10.248],[-42.889,14.03],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.495,5.912],[-30.673,-10.898],[30.161,-16.372],[13.198,-4.317],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.799,122.79],[-214.872,120.38],[-218.526,60.356],[-143.043,14.987],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.493,-5.919],[30.69,11.14],[-18.875,10.255],[-42.885,14.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.493,5.919],[-30.677,-10.887],[30.156,-16.384],[13.196,-4.322],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.778,122.794],[-214.854,120.42],[-218.53,60.397],[-143.062,15],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.492,-5.925],[30.694,11.132],[-18.872,10.26],[-42.881,14.058],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.492,5.925],[-30.68,-10.879],[30.152,-16.392],[13.195,-4.326],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.763,122.797],[-214.841,120.45],[-218.533,60.427],[-143.077,15.01],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.491,-5.929],[30.696,11.127],[-18.87,10.263],[-42.879,14.065],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.491,5.929],[-30.683,-10.873],[30.149,-16.397],[13.195,-4.328],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.753,122.798],[-214.832,120.47],[-218.534,60.448],[-143.086,15.016],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.491,-5.926],[30.694,11.13],[-18.871,10.261],[-42.88,14.06],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.491,5.926],[-30.681,-10.877],[30.15,-16.393],[13.195,-4.327],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.76,122.801],[-214.837,120.461],[-218.532,60.439],[-143.08,15.017],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.494,-5.909],[30.683,11.154],[-18.878,10.245],[-42.888,14.024],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.494,5.909],[-30.67,-10.901],[30.161,-16.368],[13.197,-4.315],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.807,122.805],[-214.874,120.382],[-218.52,60.362],[-143.036,15.005],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.5,-5.878],[30.662,11.198],[-18.891,10.215],[-42.903,13.959],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.5,5.878],[-30.649,-10.945],[30.181,-16.321],[13.202,-4.295],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.891,122.811],[-214.94,120.24],[-218.497,60.223],[-142.957,14.984],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.509,-5.831],[30.631,11.264],[-18.91,10.171],[-42.926,13.86],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.509,5.831],[-30.619,-11.011],[30.212,-16.25],[13.209,-4.265],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.018,122.822],[-215.041,120.025],[-218.463,60.011],[-142.837,14.951],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.522,-5.764],[30.587,11.358],[-18.937,10.109],[-42.957,13.721],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.522,5.764],[-30.575,-11.105],[30.255,-16.15],[13.219,-4.222],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.198,122.836],[-215.184,119.721],[-218.416,59.713],[-142.668,14.904],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.539,-5.674],[30.527,11.485],[-18.973,10.024],[-43.001,13.532],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.539,5.674],[-30.517,-11.232],[30.313,-16.015],[13.232,-4.164],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.441,122.855],[-215.377,119.309],[-218.351,59.31],[-142.439,14.841],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.562,-5.555],[30.448,11.653],[-19.021,9.911],[-43.058,13.281],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.562,5.555],[-30.439,-11.4],[30.39,-15.835],[13.249,-4.087],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.764,122.881],[-215.634,118.763],[-218.265,58.774],[-142.135,14.757],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.592,-5.398],[30.343,11.875],[-19.085,9.763],[-43.133,12.95],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.592,5.398],[-30.336,-11.622],[30.492,-15.598],[13.273,-3.985],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.19,122.915],[-215.972,118.042],[-218.152,58.067],[-141.734,14.646],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.632,-5.189],[30.204,12.169],[-19.169,9.566],[-43.233,12.512],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.632,5.189],[-30.2,-11.916],[30.627,-15.284],[13.303,-3.85],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.755,122.96],[-216.421,117.086],[-218.001,57.13],[-141.203,14.5],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.686,-4.908],[30.018,12.566],[-19.283,9.302],[-43.368,11.922],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.686,4.908],[-30.017,-12.313],[30.808,-14.861],[13.345,-3.669],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.515,123.021],[-217.025,115.8],[-217.799,55.869],[-140.488,14.302],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.76,-4.519],[29.759,13.113],[-19.44,8.935],[-43.554,11.106],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.76,4.519],[-29.763,-12.861],[31.059,-14.276],[13.402,-3.417],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.567,123.104],[-217.86,114.021],[-217.519,54.124],[-139.498,14.029],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.865,-3.972],[29.396,13.885],[-19.662,8.42],[-43.816,9.956],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.865,3.972],[-29.406,-13.633],[31.413,-13.452],[13.483,-3.064],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-119.049,123.222],[-219.037,111.514],[-217.125,51.666],[-138.104,13.644],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.997,-3.279],[28.935,14.862],[-19.942,7.767],[-44.148,8.501],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.997,3.279],[-28.954,-14.61],[31.861,-12.409],[13.585,-2.616],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-120.924,123.372],[-220.526,108.342],[-216.626,48.556],[-136.34,13.158],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.11,-2.69],[28.544,15.692],[-20.18,7.212],[-44.431,7.265],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.11,2.69],[-28.57,-15.44],[32.241,-11.522],[13.672,-2.235],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-122.517,123.499],[-221.791,105.647],[-216.202,45.913],[-134.841,12.744],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.177,-2.342],[28.313,16.183],[-20.321,6.884],[-44.597,6.533],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.177,2.342],[-28.343,-15.931],[32.466,-10.998],[13.723,-2.01],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-123.459,123.574],[-222.539,104.053],[-215.952,44.35],[-133.955,12.499],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.212,-2.159],[28.191,16.441],[-20.395,6.711],[-44.685,6.149],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.212,2.159],[-28.224,-16.189],[32.585,-10.723],[13.75,-1.892],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-123.954,123.613],[-222.933,103.215],[-215.82,43.528],[-133.488,12.371],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.228,-2.074],[28.135,16.561],[-20.429,6.631],[-44.726,5.97],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.228,2.074],[-28.168,-16.31],[32.64,-10.595],[13.763,-1.837],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.185,123.632],[-223.116,102.825],[-215.759,43.146],[-133.272,12.311],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[21.229,-2.075],[28.141,16.584],[-20.428,6.644],[-44.727,5.971],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-21.229,2.075],[-28.174,-16.332],[32.638,-10.615],[13.763,-1.837],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.191,117.007],[-124.183,123.577],[-223.288,102.889],[-215.949,43.116],[-133.272,12.341],[-81.479,3.237],[-12.612,-36.255]],"c":true}],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.196],[21.214,-2.165],[28.22,16.547],[-20.388,6.771],[-44.691,6.156],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.794],[-21.214,2.165],[-28.252,-16.294],[32.574,-10.818],[13.752,-1.894],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.392,116.987],[-123.942,123.353],[-223.74,103.522],[-216.715,43.395],[-133.494,12.513],[-81.864,3.326],[-12.612,-36.255]],"c":true}],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.184],[21.184,-2.358],[28.391,16.468],[-20.303,7.044],[-44.612,6.552],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.78],[-21.184,2.358],[-28.42,-16.211],[32.438,-11.253],[13.728,-2.016],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.82,116.945],[-123.428,122.877],[-224.705,104.876],[-218.353,43.99],[-133.968,12.88],[-82.687,3.517],[-12.612,-36.255]],"c":true}],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.163],[21.132,-2.689],[28.683,16.333],[-20.156,7.512],[-44.478,7.231],[-18.618,4.326],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.292,-4.757],[-21.132,2.689],[-28.707,-16.07],[32.204,-11.999],[13.687,-2.225],[35.359,-7.876],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.555,116.873],[-122.546,122.059],[-226.362,107.198],[-221.163,45.012],[-134.782,13.509],[-84.098,3.845],[-12.612,-36.255]],"c":true}],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.099,4.137],[21.067,-3.101],[29.047,16.164],[-19.974,8.094],[-44.311,8.076],[-18.619,4.319],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.289,-4.727],[-21.067,3.101],[-29.065,-15.895],[31.913,-12.928],[13.635,-2.485],[35.361,-7.864],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.47,116.783],[-121.45,121.041],[-228.421,110.085],[-224.657,46.282],[-135.794,14.292],[-85.853,4.253],[-12.612,-36.255]],"c":true}],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.096,4.114],[21.011,-3.46],[29.364,16.017],[-19.815,8.601],[-44.166,8.812],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.286,-4.701],[-21.011,3.46],[-29.377,-15.742],[31.66,-13.737],[13.59,-2.712],[35.362,-7.853],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.267,116.705],[-120.493,120.154],[-230.218,112.604],[-227.705,47.39],[-136.676,14.976],[-87.385,4.609],[-12.612,-36.255]],"c":true}],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.094,4.097],[20.969,-3.728],[29.6,15.907],[-19.696,8.979],[-44.057,9.361],[-18.62,4.308],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.283,-4.682],[-20.969,3.728],[-29.609,-15.628],[31.471,-14.34],[13.557,-2.88],[35.363,-7.845],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.861,116.646],[-119.78,119.493],[-231.555,114.479],[-229.974,48.215],[-137.333,15.484],[-88.524,4.873],[-12.612,-36.255]],"c":true}],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.085],[20.938,-3.922],[29.771,15.828],[-19.611,9.253],[-43.979,9.759],[-18.62,4.305],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.668],[-20.938,3.922],[-29.777,-15.545],[31.334,-14.777],[13.533,-3.003],[35.364,-7.839],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.291,116.604],[-119.263,119.014],[-232.526,115.84],[-231.62,48.814],[-137.81,15.853],[-89.352,5.066],[-12.612,-36.255]],"c":true}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.076],[20.916,-4.063],[29.896,15.77],[-19.548,9.453],[-43.921,10.049],[-18.621,4.302],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.658],[-20.916,4.063],[-29.9,-15.485],[31.235,-15.096],[13.515,-3.092],[35.364,-7.835],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.605,116.573],[-118.887,118.664],[-233.233,116.832],[-232.82,49.25],[-138.158,16.122],[-89.954,5.206],[-12.612,-36.255]],"c":true}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.07],[20.9,-4.166],[29.987,15.728],[-19.502,9.599],[-43.88,10.26],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.651],[-20.9,4.166],[-29.989,-15.441],[31.162,-15.328],[13.502,-3.157],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.834,116.551],[-118.613,118.41],[-233.748,117.554],[-233.694,49.567],[-138.411,16.318],[-90.393,5.308],[-12.612,-36.255]],"c":true}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.065],[20.888,-4.24],[30.052,15.698],[-19.47,9.703],[-43.85,10.411],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.646],[-20.888,4.24],[-30.053,-15.41],[31.11,-15.495],[13.493,-3.204],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.998,116.534],[-118.416,118.227],[-234.118,118.072],[-234.321,49.796],[-138.592,16.459],[-90.708,5.381],[-12.612,-36.255]],"c":true}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.062],[20.88,-4.291],[30.097,15.677],[-19.447,9.776],[-43.829,10.516],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.642],[-20.88,4.291],[-30.098,-15.388],[31.074,-15.61],[13.487,-3.236],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.112,116.523],[-118.279,118.101],[-234.374,118.431],[-234.756,49.954],[-138.718,16.556],[-90.927,5.432],[-12.612,-36.255]],"c":true}],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.06],[20.875,-4.324],[30.126,15.663],[-19.432,9.822],[-43.815,10.584],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.64],[-20.875,4.324],[-30.127,-15.374],[31.05,-15.685],[13.483,-3.257],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.185,116.516],[-118.191,118.019],[-234.54,118.664],[-235.037,50.056],[-138.8,16.619],[-91.068,5.464],[-12.612,-36.255]],"c":true}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.872,-4.342],[30.142,15.656],[-19.424,9.848],[-43.808,10.621],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.872,4.343],[-30.142,-15.366],[31.037,-15.726],[13.48,-3.268],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.226,116.512],[-118.143,117.974],[-234.631,118.791],[-235.191,50.112],[-138.844,16.654],[-91.145,5.482],[-12.612,-36.255]],"c":true}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.871,-4.349],[30.146,15.639],[-19.422,9.851],[-43.806,10.635],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.639],[-20.871,4.349],[-30.146,-15.35],[31.035,-15.73],[13.48,-3.273],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.209,116.514],[-118.125,117.984],[-234.564,118.795],[-235.138,50.143],[-138.861,16.64],[-91.113,5.475],[-12.612,-36.255]],"c":true}],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.062],[20.871,-4.352],[30.14,15.591],[-19.425,9.832],[-43.805,10.644],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.642],[-20.871,4.352],[-30.14,-15.302],[31.038,-15.7],[13.479,-3.275],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.106,116.524],[-118.114,118.067],[-234.235,118.672],[-234.787,50.193],[-138.871,16.557],[-90.916,5.429],[-12.612,-36.255]],"c":true}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.068],[20.87,-4.357],[30.127,15.494],[-19.43,9.794],[-43.802,10.66],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.649],[-20.87,4.357],[-30.128,-15.206],[31.046,-15.641],[13.479,-3.28],[35.365,-7.831],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.901,116.544],[-118.094,118.233],[-233.578,118.427],[-234.088,50.292],[-138.892,16.391],[-90.523,5.338],[-12.612,-36.255]],"c":true}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.078],[20.869,-4.367],[30.107,15.33],[-19.438,9.731],[-43.799,10.688],[-18.621,4.302],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.66],[-20.869,4.367],[-30.108,-15.045],[31.058,-15.54],[13.478,-3.289],[35.364,-7.836],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.555,116.578],[-118.059,118.513],[-232.466,118.013],[-232.903,50.459],[-138.927,16.11],[-89.857,5.183],[-12.612,-36.255]],"c":true}],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.093],[20.867,-4.381],[30.076,15.082],[-19.45,9.636],[-43.794,10.731],[-18.62,4.306],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.282,-4.677],[-20.867,4.381],[-30.077,-14.8],[31.077,-15.388],[13.476,-3.302],[35.363,-7.843],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.031,116.63],[-118.006,118.937],[-230.785,117.386],[-231.113,50.712],[-138.98,15.685],[-88.852,4.95],[-12.612,-36.255]],"c":true}],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.096,4.112],[20.865,-4.399],[30.037,14.766],[-19.465,9.514],[-43.787,10.785],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.285,-4.698],[-20.865,4.399],[-30.039,-14.489],[31.101,-15.195],[13.474,-3.319],[35.362,-7.852],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.364,116.695],[-117.939,119.476],[-228.645,116.589],[-228.834,51.034],[-139.047,15.144],[-87.572,4.652],[-12.612,-36.255]],"c":true}],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.098,4.131],[20.863,-4.418],[29.997,14.445],[-19.48,9.39],[-43.78,10.84],[-18.619,4.317],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.288,-4.72],[-20.863,4.418],[-29.999,-14.173],[31.125,-14.999],[13.472,-3.336],[35.361,-7.861],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.688,116.762],[-117.871,120.024],[-226.472,115.779],[-226.52,51.361],[-139.115,14.594],[-86.272,4.35],[-12.612,-36.255]],"c":true}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.1,4.147],[20.861,-4.434],[29.963,14.171],[-19.494,9.284],[-43.774,10.887],[-18.618,4.321],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.29,-4.739],[-20.861,4.434],[-29.966,-13.903],[31.146,-14.83],[13.47,-3.35],[35.36,-7.868],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.108,116.818],[-117.813,120.493],[-224.613,115.086],[-224.539,51.641],[-139.174,14.124],[-85.159,4.092],[-12.612,-36.255]],"c":true}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.16],[20.859,-4.446],[29.936,13.951],[-19.504,9.2],[-43.77,10.924],[-18.618,4.325],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.292,-4.754],[-20.859,4.446],[-29.939,-13.687],[31.163,-14.696],[13.469,-3.362],[35.359,-7.875],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.646,116.864],[-117.766,120.867],[-223.128,114.533],[-222.958,51.864],[-139.22,13.749],[-84.271,3.885],[-12.612,-36.255]],"c":true}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.103,4.171],[20.858,-4.456],[29.914,13.779],[-19.513,9.134],[-43.766,10.953],[-18.618,4.328],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.293,-4.765],[-20.858,4.456],[-29.918,-13.517],[31.176,-14.591],[13.467,-3.371],[35.359,-7.879],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.282,116.9],[-117.73,121.161],[-221.961,114.098],[-221.715,52.04],[-139.257,13.453],[-83.573,3.723],[-12.612,-36.255]],"c":true}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.179],[20.857,-4.464],[29.897,13.644],[-19.519,9.081],[-43.763,10.977],[-18.617,4.33],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.775],[-20.857,4.464],[-29.901,-13.384],[31.186,-14.508],[13.467,-3.378],[35.358,-7.883],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.996,116.928],[-117.701,121.393],[-221.042,113.755],[-220.736,52.178],[-139.286,13.221],[-83.023,3.596],[-12.612,-36.255]],"c":true}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.185],[20.856,-4.47],[29.884,13.537],[-19.525,9.04],[-43.761,10.995],[-18.617,4.332],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.782],[-20.856,4.47],[-29.888,-13.278],[31.195,-14.442],[13.466,-3.383],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.77,116.95],[-117.678,121.576],[-220.317,113.485],[-219.964,52.287],[-139.309,13.038],[-82.59,3.495],[-12.612,-36.255]],"c":true}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.19],[20.855,-4.475],[29.874,13.452],[-19.529,9.008],[-43.759,11.009],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.788],[-20.855,4.475],[-29.878,-13.195],[31.201,-14.391],[13.465,-3.388],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.592,116.968],[-117.66,121.72],[-219.745,113.272],[-219.355,52.373],[-139.327,12.893],[-82.248,3.415],[-12.612,-36.255]],"c":true}],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.194],[20.855,-4.479],[29.865,13.386],[-19.532,8.982],[-43.758,11.021],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.792],[-20.855,4.479],[-29.87,-13.13],[31.206,-14.35],[13.465,-3.391],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.452,116.981],[-117.646,121.833],[-219.297,113.105],[-218.878,52.441],[-139.341,12.78],[-81.98,3.353],[-12.612,-36.255]],"c":true}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.197],[20.854,-4.482],[29.859,13.335],[-19.534,8.962],[-43.757,11.029],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.796],[-20.855,4.482],[-29.863,-13.08],[31.21,-14.319],[13.465,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.344,116.992],[-117.635,121.92],[-218.951,112.976],[-218.51,52.493],[-139.352,12.693],[-81.773,3.305],[-12.612,-36.255]],"c":true}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.2],[20.854,-4.484],[29.854,13.297],[-19.536,8.948],[-43.756,11.036],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.798],[-20.854,4.484],[-29.859,-13.042],[31.213,-14.295],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.263,117],[-117.627,121.985],[-218.691,112.879],[-218.232,52.532],[-139.36,12.627],[-81.617,3.269],[-12.612,-36.255]],"c":true}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.486],[29.851,13.269],[-19.538,8.937],[-43.755,11.041],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.855,-13.015],[31.215,-14.278],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.205,117.006],[-117.621,122.033],[-218.504,112.809],[-218.033,52.56],[-139.366,12.579],[-81.505,3.243],[-12.612,-36.255]],"c":true}],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.25],[-19.538,8.93],[-43.755,11.044],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-12.997],[31.216,-14.267],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.166,117.009],[-117.617,122.064],[-218.379,112.763],[-217.9,52.579],[-139.37,12.548],[-81.43,3.225],[-12.612,-36.255]],"c":true}],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.24],[-19.539,8.926],[-43.755,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.986],[31.217,-14.261],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.144,117.012],[-117.615,122.082],[-218.308,112.736],[-217.825,52.59],[-139.372,12.53],[-81.388,3.216],[-12.612,-36.255]],"c":true}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[54.085,-3.398],[27.304,14.385],[26.106,4.195],[20.855,-4.48],[29.864,13.374],[-19.532,8.977],[-43.757,11.023],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.428,0.653],[-24.064,-12.677],[-29.297,-4.793],[-20.855,4.48],[-29.868,-13.118],[31.207,-14.343],[13.465,-3.392],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[117.077,194.754],[32.184,139.048],[-41.426,116.984],[-117.644,121.854],[-219.214,113.074],[-218.79,52.453],[-139.343,12.759],[-81.93,3.342],[-12.612,-36.255]],"c":true}],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[50.763,-3.189],[27.304,14.385],[26.103,4.174],[20.857,-4.459],[29.908,13.729],[-19.515,9.114],[-43.765,10.962],[-18.618,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-14.751,0.843],[-24.064,-12.677],[-29.294,-4.769],[-20.857,4.459],[-29.912,-13.468],[31.18,-14.56],[13.467,-3.373],[35.358,-7.881],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[121.251,193.909],[32.184,139.048],[-42.176,116.91],[-117.719,121.247],[-221.619,113.97],[-221.351,52.091],[-139.268,13.367],[-83.369,3.676],[-12.612,-36.255]],"c":true}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.069,-2.957],[27.304,14.384],[26.1,4.15],[20.86,-4.436],[29.957,14.124],[-19.496,9.266],[-43.773,10.895],[-18.618,4.322],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-18.446,1.054],[-24.064,-12.677],[-29.291,-4.742],[-20.86,4.436],[-29.96,-13.857],[31.15,-14.802],[13.47,-3.352],[35.36,-7.87],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[125.893,192.97],[32.184,139.048],[-43.009,116.828],[-117.803,120.573],[-224.294,114.967],[-224.2,51.689],[-139.184,14.043],[-84.969,4.047],[-12.612,-36.255]],"c":true}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[43.879,-2.757],[27.304,14.385],[26.098,4.13],[20.863,-4.417],[29.999,14.464],[-19.48,9.398],[-43.781,10.836],[-18.619,4.317],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-21.637,1.236],[-24.064,-12.677],[-29.288,-4.719],[-20.863,4.417],[-30.002,-14.192],[31.124,-15.01],[13.472,-3.335],[35.361,-7.86],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[129.901,192.158],[32.184,139.048],[-43.728,116.758],[-117.875,119.991],[-226.604,115.828],[-226.659,51.341],[-139.111,14.627],[-86.35,4.368],[-12.612,-36.255]],"c":true}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[41.29,-2.594],[27.304,14.385],[26.096,4.113],[20.865,-4.401],[30.034,14.741],[-19.466,9.504],[-43.786,10.789],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-24.227,1.384],[-24.064,-12.677],[-29.285,-4.7],[-20.865,4.401],[-30.036,-14.465],[31.103,-15.18],[13.474,-3.32],[35.362,-7.852],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[133.155,191.499],[32.184,139.048],[-44.312,116.7],[-117.934,119.518],[-228.478,116.527],[-228.656,51.059],[-139.052,15.101],[-87.472,4.629],[-12.612,-36.255]],"c":true}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[39.213,-2.464],[27.304,14.385],[26.094,4.1],[20.866,-4.388],[30.061,14.963],[-19.455,9.59],[-43.791,10.751],[-18.62,4.308],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-26.305,1.503],[-24.064,-12.677],[-29.283,-4.685],[-20.866,4.388],[-30.063,-14.684],[31.086,-15.316],[13.475,-3.308],[35.363,-7.846],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[135.765,190.971],[32.184,139.048],[-44.781,116.654],[-117.981,119.139],[-229.982,117.087],[-230.258,50.833],[-139.005,15.482],[-88.372,4.838],[-12.612,-36.255]],"c":true}],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[37.55,-2.359],[27.304,14.385],[26.093,4.089],[20.868,-4.378],[30.084,15.141],[-19.447,9.658],[-43.795,10.721],[-18.62,4.306],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-27.969,1.598],[-24.064,-12.677],[-29.282,-4.673],[-20.867,4.378],[-30.085,-14.859],[31.072,-15.425],[13.476,-3.299],[35.363,-7.841],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[137.855,190.548],[32.184,139.048],[-45.156,116.617],[-118.019,118.836],[-231.186,117.536],[-231.54,50.652],[-138.967,15.786],[-89.092,5.005],[-12.612,-36.255]],"c":true}],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[36.223,-2.276],[27.304,14.385],[26.092,4.081],[20.869,-4.37],[30.101,15.283],[-19.44,9.713],[-43.798,10.696],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-29.296,1.674],[-24.064,-12.677],[-29.281,-4.663],[-20.869,4.37],[-30.102,-14.998],[31.062,-15.511],[13.477,-3.292],[35.364,-7.837],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[139.523,190.21],[32.184,139.048],[-45.456,116.588],[-118.049,118.593],[-232.147,117.894],[-232.564,50.507],[-138.937,16.029],[-89.667,5.139],[-12.612,-36.255]],"c":true}],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[35.172,-2.21],[27.304,14.385],[26.091,4.074],[20.869,-4.363],[30.115,15.395],[-19.434,9.756],[-43.8,10.677],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-30.347,1.734],[-24.064,-12.677],[-29.28,-4.656],[-20.869,4.363],[-30.116,-15.109],[31.053,-15.58],[13.478,-3.286],[35.364,-7.834],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[140.843,189.943],[32.184,139.048],[-45.693,116.565],[-118.073,118.402],[-232.908,118.178],[-233.374,50.392],[-138.913,16.221],[-90.122,5.245],[-12.612,-36.255]],"c":true}],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[34.354,-2.158],[27.304,14.385],[26.09,4.069],[20.87,-4.358],[30.126,15.482],[-19.43,9.79],[-43.802,10.662],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-31.166,1.781],[-24.064,-12.677],[-29.279,-4.65],[-20.87,4.358],[-30.126,-15.195],[31.046,-15.634],[13.479,-3.281],[35.365,-7.831],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[141.871,189.735],[32.184,139.048],[-45.877,116.546],[-118.091,118.252],[-233.5,118.398],[-234.005,50.303],[-138.894,16.371],[-90.476,5.327],[-12.612,-36.255]],"c":true}],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[33.733,-2.119],[27.304,14.385],[26.09,4.065],[20.87,-4.354],[30.134,15.549],[-19.427,9.816],[-43.804,10.651],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-31.787,1.816],[-24.064,-12.677],[-29.279,-4.645],[-20.87,4.354],[-30.134,-15.26],[31.041,-15.674],[13.479,-3.278],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[142.652,189.577],[32.184,139.048],[-46.017,116.533],[-118.105,118.139],[-233.95,118.566],[-234.484,50.236],[-138.88,16.485],[-90.745,5.389],[-12.612,-36.255]],"c":true}],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[33.282,-2.091],[27.304,14.385],[26.089,4.062],[20.871,-4.351],[30.14,15.597],[-19.425,9.834],[-43.805,10.643],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.238,1.842],[-24.064,-12.677],[-29.278,-4.642],[-20.871,4.351],[-30.14,-15.308],[31.038,-15.704],[13.479,-3.275],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.218,189.462],[32.184,139.048],[-46.119,116.523],[-118.116,118.057],[-234.277,118.688],[-234.832,50.187],[-138.87,16.568],[-90.941,5.435],[-12.612,-36.255]],"c":true}],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.98,-2.072],[27.304,14.385],[26.089,4.06],[20.871,-4.35],[30.144,15.629],[-19.423,9.847],[-43.805,10.637],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.54,1.859],[-24.064,-12.677],[-29.278,-4.64],[-20.871,4.35],[-30.144,-15.34],[31.035,-15.724],[13.48,-3.273],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.598,189.385],[32.184,139.048],[-46.187,116.516],[-118.123,118.001],[-234.495,118.769],[-235.065,50.154],[-138.863,16.623],[-91.071,5.465],[-12.612,-36.255]],"c":true}],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.809,-2.061],[27.304,14.385],[26.089,4.059],[20.871,-4.348],[30.147,15.648],[-19.422,9.854],[-43.806,10.634],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.711,1.869],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.349],[-30.147,-15.358],[31.034,-15.735],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.813,189.342],[32.184,139.048],[-46.226,116.512],[-118.126,117.97],[-234.619,118.815],[-235.197,50.135],[-138.859,16.654],[-91.146,5.482],[-12.612,-36.255]],"c":true}],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.754,-2.058],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.766,1.872],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.363],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.881,189.328],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.754,-2.058],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.766,1.872],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.363],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.881,189.328],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.786,-2.06],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.65],[-19.422,9.855],[-43.806,10.634],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.734,1.87],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.36],[31.034,-15.736],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.841,189.336],[32.184,139.048],[-46.231,116.512],[-118.127,117.966],[-234.636,118.821],[-235.214,50.132],[-138.859,16.658],[-91.155,5.485],[-12.612,-36.255]],"c":true}],"t":360,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.888,-2.066],[27.304,14.385],[26.089,4.059],[20.871,-4.349],[30.146,15.639],[-19.423,9.85],[-43.806,10.635],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.632,1.865],[-24.064,-12.677],[-29.278,-4.639],[-20.871,4.349],[-30.146,-15.349],[31.035,-15.73],[13.48,-3.273],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.714,189.362],[32.184,139.048],[-46.208,116.514],[-118.125,117.985],[-234.562,118.794],[-235.136,50.144],[-138.861,16.64],[-91.111,5.474],[-12.612,-36.255]],"c":true}],"t":361,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[33.072,-2.078],[27.304,14.385],[26.089,4.06],[20.871,-4.35],[30.143,15.619],[-19.423,9.843],[-43.805,10.639],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.448,1.854],[-24.064,-12.677],[-29.278,-4.64],[-20.871,4.35],[-30.143,-15.33],[31.036,-15.718],[13.479,-3.274],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.482,189.409],[32.184,139.048],[-46.166,116.518],[-118.12,118.018],[-234.429,118.744],[-234.993,50.164],[-138.865,16.606],[-91.031,5.456],[-12.612,-36.255]],"c":true}],"t":362,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[33.355,-2.096],[27.304,14.385],[26.089,4.062],[20.871,-4.352],[30.139,15.589],[-19.425,9.831],[-43.805,10.644],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.164,1.838],[-24.064,-12.677],[-29.278,-4.643],[-20.871,4.352],[-30.139,-15.3],[31.038,-15.699],[13.479,-3.275],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.126,189.481],[32.184,139.048],[-46.102,116.524],[-118.114,118.07],[-234.223,118.668],[-234.775,50.195],[-138.872,16.554],[-90.909,5.427],[-12.612,-36.255]],"c":true}],"t":363,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[33.759,-2.121],[27.304,14.385],[26.09,4.065],[20.87,-4.354],[30.134,15.546],[-19.427,9.815],[-43.804,10.651],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-31.761,1.815],[-24.064,-12.677],[-29.279,-4.645],[-20.87,4.354],[-30.134,-15.258],[31.042,-15.673],[13.479,-3.278],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[142.619,189.584],[32.184,139.048],[-46.011,116.533],[-118.105,118.144],[-233.931,118.559],[-234.464,50.238],[-138.881,16.48],[-90.734,5.387],[-12.612,-36.255]],"c":true}],"t":364,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[34.313,-2.156],[27.304,14.385],[26.09,4.068],[20.87,-4.358],[30.127,15.487],[-19.43,9.792],[-43.802,10.661],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-31.207,1.783],[-24.064,-12.677],[-29.279,-4.649],[-20.87,4.358],[-30.127,-15.199],[31.046,-15.636],[13.479,-3.281],[35.365,-7.831],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[141.923,189.724],[32.184,139.048],[-45.887,116.546],[-118.092,118.245],[-233.53,118.41],[-234.037,50.299],[-138.893,16.379],[-90.494,5.331],[-12.612,-36.255]],"c":true}],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[35.056,-2.203],[27.304,14.385],[26.091,4.073],[20.869,-4.362],[30.117,15.407],[-19.434,9.761],[-43.801,10.675],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-30.463,1.741],[-24.064,-12.677],[-29.28,-4.655],[-20.869,4.362],[-30.117,-15.121],[31.052,-15.588],[13.478,-3.285],[35.364,-7.834],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[140.989,189.914],[32.184,139.048],[-45.719,116.562],[-118.075,118.38],[-232.992,118.209],[-233.463,50.38],[-138.91,16.243],[-90.172,5.256],[-12.612,-36.255]],"c":true}],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[36.047,-2.265],[27.304,14.385],[26.092,4.079],[20.869,-4.368],[30.104,15.302],[-19.439,9.72],[-43.798,10.693],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-29.472,1.684],[-24.064,-12.677],[-29.281,-4.662],[-20.869,4.368],[-30.104,-15.017],[31.06,-15.523],[13.477,-3.291],[35.364,-7.837],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[139.743,190.166],[32.184,139.048],[-45.495,116.584],[-118.053,118.561],[-232.275,117.941],[-232.699,50.488],[-138.933,16.061],[-89.743,5.157],[-12.612,-36.255]],"c":true}],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[37.366,-2.348],[27.304,14.385],[26.093,4.088],[20.868,-4.377],[30.086,15.161],[-19.446,9.666],[-43.795,10.717],[-18.62,4.305],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-28.153,1.609],[-24.064,-12.677],[-29.282,-4.672],[-20.868,4.377],[-30.087,-14.878],[31.071,-15.437],[13.476,-3.298],[35.363,-7.841],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[138.086,190.501],[32.184,139.048],[-45.198,116.613],[-118.023,118.802],[-231.32,117.586],[-231.682,50.632],[-138.963,15.82],[-89.172,5.024],[-12.612,-36.255]],"c":true}],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[39.115,-2.458],[27.304,14.385],[26.094,4.099],[20.866,-4.387],[30.063,14.974],[-19.455,9.594],[-43.791,10.749],[-18.62,4.308],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-26.403,1.509],[-24.064,-12.677],[-29.283,-4.684],[-20.866,4.387],[-30.064,-14.694],[31.085,-15.322],[13.475,-3.308],[35.363,-7.846],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[135.888,190.946],[32.184,139.048],[-44.803,116.652],[-117.983,119.121],[-230.053,117.114],[-230.333,50.822],[-139.003,15.5],[-88.414,4.848],[-12.612,-36.255]],"c":true}],"t":369,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[41.378,-2.6],[27.304,14.385],[26.096,4.114],[20.865,-4.401],[30.033,14.732],[-19.467,9.501],[-43.786,10.791],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-24.139,1.379],[-24.064,-12.677],[-29.285,-4.701],[-20.865,4.401],[-30.034,-14.456],[31.104,-15.174],[13.474,-3.32],[35.362,-7.853],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[133.044,191.522],[32.184,139.048],[-44.293,116.702],[-117.932,119.534],[-228.414,116.503],[-228.588,51.069],[-139.054,15.085],[-87.434,4.62],[-12.612,-36.255]],"c":true}],"t":370,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[44.061,-2.768],[27.304,14.385],[26.098,4.131],[20.863,-4.418],[29.997,14.445],[-19.48,9.39],[-43.78,10.84],[-18.619,4.317],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-21.456,1.226],[-24.064,-12.677],[-29.288,-4.72],[-20.863,4.418],[-29.999,-14.173],[31.125,-14.999],[13.472,-3.336],[35.361,-7.861],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[129.673,192.204],[32.184,139.048],[-43.688,116.762],[-117.871,120.024],[-226.472,115.779],[-226.52,51.361],[-139.115,14.594],[-86.272,4.35],[-12.612,-36.255]],"c":true}],"t":371,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[46.743,-2.937],[27.304,14.385],[26.1,4.148],[20.86,-4.434],[29.961,14.158],[-19.494,9.28],[-43.774,10.889],[-18.618,4.322],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-18.773,1.073],[-24.064,-12.677],[-29.29,-4.74],[-20.86,4.434],[-29.964,-13.891],[31.147,-14.823],[13.47,-3.351],[35.36,-7.869],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[126.303,192.886],[32.184,139.048],[-43.083,116.821],[-117.81,120.513],[-224.53,115.055],[-224.451,51.653],[-139.176,14.103],[-85.11,4.08],[-12.612,-36.255]],"c":true}],"t":372,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[49.006,-3.079],[27.304,14.385],[26.102,4.162],[20.859,-4.448],[29.931,13.917],[-19.506,9.187],[-43.769,10.93],[-18.618,4.325],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-16.508,0.943],[-24.064,-12.677],[-29.292,-4.756],[-20.859,4.448],[-29.935,-13.653],[31.166,-14.675],[13.468,-3.363],[35.359,-7.876],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[123.459,193.462],[32.184,139.048],[-42.572,116.871],[-117.759,120.927],[-222.892,114.444],[-222.706,51.9],[-139.228,13.689],[-84.13,3.853],[-12.612,-36.255]],"c":true}],"t":373,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[50.755,-3.189],[27.304,14.385],[26.103,4.174],[20.857,-4.459],[29.908,13.73],[-19.515,9.115],[-43.765,10.962],[-18.618,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-14.758,0.843],[-24.064,-12.677],[-29.294,-4.769],[-20.857,4.459],[-29.912,-13.469],[31.18,-14.56],[13.467,-3.373],[35.358,-7.881],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[121.26,193.907],[32.184,139.048],[-42.177,116.91],[-117.719,121.246],[-221.625,113.972],[-221.357,52.091],[-139.268,13.369],[-83.372,3.677],[-12.612,-36.255]],"c":true}],"t":374,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[52.074,-3.272],[27.304,14.385],[26.104,4.182],[20.856,-4.467],[29.891,13.589],[-19.522,9.06],[-43.762,10.986],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-13.439,0.768],[-24.064,-12.677],[-29.295,-4.778],[-20.856,4.467],[-29.894,-13.33],[31.191,-14.474],[13.466,-3.381],[35.358,-7.885],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[119.603,194.243],[32.184,139.048],[-41.88,116.939],[-117.689,121.487],[-220.67,113.617],[-220.34,52.234],[-139.298,13.127],[-82.801,3.544],[-12.612,-36.255]],"c":true}],"t":375,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[53.065,-3.334],[27.304,14.385],[26.105,4.188],[20.856,-4.473],[29.877,13.483],[-19.527,9.019],[-43.76,11.004],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-12.448,0.711],[-24.064,-12.677],[-29.296,-4.786],[-20.856,4.474],[-29.881,-13.226],[31.199,-14.409],[13.465,-3.386],[35.357,-7.888],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[118.358,194.495],[32.184,139.048],[-41.656,116.961],[-117.667,121.667],[-219.953,113.349],[-219.576,52.342],[-139.32,12.946],[-82.372,3.444],[-12.612,-36.255]],"c":true}],"t":376,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[53.809,-3.381],[27.304,14.385],[26.106,4.193],[20.855,-4.478],[29.868,13.403],[-19.531,8.989],[-43.758,11.018],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.704,0.669],[-24.064,-12.677],[-29.297,-4.791],[-20.855,4.478],[-29.872,-13.147],[31.205,-14.361],[13.465,-3.39],[35.357,-7.89],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[117.424,194.684],[32.184,139.048],[-41.489,116.978],[-117.65,121.803],[-219.414,113.148],[-219.003,52.423],[-139.337,12.81],[-82.05,3.369],[-12.612,-36.255]],"c":true}],"t":377,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[54.362,-3.415],[27.304,14.385],[26.106,4.197],[20.855,-4.482],[29.86,13.344],[-19.534,8.966],[-43.757,11.028],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.151,0.637],[-24.064,-12.677],[-29.297,-4.795],[-20.855,4.481],[-29.864,-13.089],[31.209,-14.324],[13.465,-3.393],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[116.728,194.825],[32.184,139.048],[-41.364,116.99],[-117.637,121.904],[-219.014,112.999],[-218.576,52.484],[-139.35,12.708],[-81.81,3.314],[-12.612,-36.255]],"c":true}],"t":378,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[54.766,-3.441],[27.304,14.385],[26.107,4.199],[20.854,-4.484],[29.855,13.301],[-19.536,8.949],[-43.756,11.035],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.747,0.614],[-24.064,-12.677],[-29.298,-4.798],[-20.854,4.484],[-29.859,-13.046],[31.213,-14.298],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[116.221,194.928],[32.184,139.048],[-41.273,116.999],[-117.628,121.978],[-218.721,112.89],[-218.264,52.528],[-139.359,12.634],[-81.635,3.273],[-12.612,-36.255]],"c":true}],"t":379,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.049,-3.459],[27.304,14.385],[26.107,4.201],[20.854,-4.486],[29.851,13.271],[-19.537,8.938],[-43.755,11.04],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.463,0.598],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.855,-13.017],[31.215,-14.28],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.865,195],[32.184,139.048],[-41.209,117.005],[-117.622,122.03],[-218.516,112.814],[-218.046,52.558],[-139.365,12.583],[-81.512,3.245],[-12.612,-36.255]],"c":true}],"t":380,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.233,-3.47],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.251],[-19.538,8.93],[-43.755,11.044],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.279,0.587],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-12.997],[31.216,-14.267],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.633,195.046],[32.184,139.048],[-41.167,117.009],[-117.618,122.063],[-218.383,112.764],[-217.904,52.578],[-139.37,12.549],[-81.433,3.226],[-12.612,-36.255]],"c":true}],"t":381,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.335,-3.477],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.847,13.24],[-19.539,8.926],[-43.755,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.177,0.582],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.987],[31.217,-14.261],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.505,195.072],[32.184,139.048],[-41.144,117.012],[-117.615,122.082],[-218.309,112.737],[-217.825,52.59],[-139.372,12.53],[-81.389,3.216],[-12.612,-36.255]],"c":true}],"t":382,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":383,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":385,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.256],[-19.538,8.932],[-43.755,11.043],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.854,-13.002],[31.216,-14.27],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.177,117.008],[-117.619,122.055],[-218.414,112.776],[-217.937,52.574],[-139.369,12.557],[-81.451,3.23],[-12.612,-36.255]],"c":true}],"t":386,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.199],[20.854,-4.484],[29.856,13.308],[-19.536,8.952],[-43.756,11.034],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.797],[-20.854,4.484],[-29.86,-13.053],[31.212,-14.302],[13.464,-3.395],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.287,116.997],[-117.63,121.966],[-218.767,112.907],[-218.313,52.521],[-139.358,12.646],[-81.662,3.279],[-12.612,-36.255]],"c":true}],"t":387,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.194],[20.855,-4.479],[29.866,13.387],[-19.532,8.983],[-43.758,11.02],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.792],[-20.855,4.479],[-29.87,-13.132],[31.206,-14.351],[13.465,-3.391],[35.357,-7.89],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.455,116.981],[-117.647,121.83],[-219.306,113.108],[-218.888,52.439],[-139.341,12.782],[-81.985,3.354],[-12.612,-36.255]],"c":true}],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.188],[20.856,-4.473],[29.878,13.491],[-19.527,9.022],[-43.76,11.003],[-18.617,4.332],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.785],[-20.856,4.473],[-29.882,-13.233],[31.198,-14.414],[13.466,-3.386],[35.357,-7.888],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.673,116.96],[-117.668,121.654],[-220.006,113.369],[-219.633,52.334],[-139.319,12.959],[-82.404,3.452],[-12.612,-36.255]],"c":true}],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.181],[20.857,-4.466],[29.894,13.615],[-19.521,9.07],[-43.762,10.982],[-18.617,4.33],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.777],[-20.857,4.466],[-29.898,-13.355],[31.189,-14.49],[13.466,-3.379],[35.358,-7.884],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.934,116.934],[-117.695,121.443],[-220.845,113.682],[-220.526,52.208],[-139.292,13.171],[-82.906,3.568],[-12.612,-36.255]],"c":true}],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.103,4.172],[20.858,-4.458],[29.911,13.757],[-19.514,9.125],[-43.766,10.957],[-18.618,4.328],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.767],[-20.858,4.458],[-29.915,-13.495],[31.178,-14.577],[13.467,-3.372],[35.358,-7.88],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.234,116.904],[-117.725,121.2],[-221.807,114.04],[-221.551,52.063],[-139.262,13.415],[-83.481,3.702],[-12.612,-36.255]],"c":true}],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.163],[20.859,-4.449],[29.931,13.915],[-19.506,9.186],[-43.769,10.93],[-18.618,4.325],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.292,-4.756],[-20.859,4.449],[-29.934,-13.651],[31.166,-14.674],[13.468,-3.363],[35.359,-7.876],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.568,116.872],[-117.759,120.93],[-222.879,114.44],[-222.693,51.902],[-139.228,13.686],[-84.123,3.851],[-12.612,-36.255]],"c":true}],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.101,4.152],[20.86,-4.439],[29.953,14.088],[-19.498,9.253],[-43.773,10.901],[-18.618,4.323],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.291,-4.744],[-20.86,4.439],[-29.956,-13.822],[31.153,-14.78],[13.469,-3.354],[35.36,-7.871],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.934,116.836],[-117.795,120.634],[-224.053,114.877],[-223.943,51.725],[-139.191,13.982],[-84.824,4.014],[-12.612,-36.255]],"c":true}],"t":393,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.099,4.141],[20.861,-4.428],[29.976,14.275],[-19.489,9.325],[-43.777,10.869],[-18.619,4.32],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.289,-4.732],[-20.861,4.428],[-29.978,-14.006],[31.138,-14.894],[13.471,-3.344],[35.36,-7.866],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.328,116.797],[-117.835,120.315],[-225.319,115.349],[-225.291,51.535],[-139.152,14.302],[-85.582,4.19],[-12.612,-36.255]],"c":true}],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.098,4.129],[20.863,-4.416],[30.001,14.474],[-19.479,9.402],[-43.781,10.835],[-18.619,4.316],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.288,-4.718],[-20.863,4.416],[-30.003,-14.202],[31.123,-15.017],[13.472,-3.334],[35.361,-7.86],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.749,116.755],[-117.877,119.974],[-226.671,115.853],[-226.731,51.331],[-139.109,14.645],[-86.391,4.378],[-12.612,-36.255]],"c":true}],"t":395,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.096,4.116],[20.864,-4.404],[30.027,14.686],[-19.469,9.483],[-43.785,10.798],[-18.619,4.313],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.286,-4.704],[-20.864,4.404],[-30.029,-14.411],[31.107,-15.146],[13.473,-3.323],[35.362,-7.854],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.196,116.712],[-117.922,119.612],[-228.106,116.388],[-228.259,51.115],[-139.064,15.007],[-87.249,4.577],[-12.612,-36.255]],"c":true}],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.095,4.103],[20.866,-4.391],[30.055,14.91],[-19.458,9.569],[-43.79,10.76],[-18.62,4.309],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.284,-4.689],[-20.866,4.391],[-30.056,-14.631],[31.09,-15.283],[13.475,-3.311],[35.362,-7.848],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.668,116.665],[-117.97,119.23],[-229.62,116.952],[-229.872,50.887],[-139.016,15.39],[-88.155,4.788],[-12.612,-36.255]],"c":true}],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.089],[20.868,-4.377],[30.084,15.145],[-19.447,9.66],[-43.795,10.72],[-18.62,4.305],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.282,-4.673],[-20.868,4.378],[-30.085,-14.863],[31.072,-15.427],[13.476,-3.299],[35.363,-7.841],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.165,116.616],[-118.02,118.829],[-231.213,117.546],[-231.569,50.648],[-138.966,15.793],[-89.108,5.009],[-12.612,-36.255]],"c":true}],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.074],[20.869,-4.363],[30.115,15.392],[-19.434,9.755],[-43.8,10.678],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.656],[-20.869,4.363],[-30.115,-15.106],[31.053,-15.578],[13.478,-3.286],[35.364,-7.834],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.687,116.565],[-118.072,118.406],[-232.889,118.17],[-233.353,50.395],[-138.914,16.217],[-90.11,5.242],[-12.612,-36.255]],"c":true}],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.694117665291,0.435294121504,0.345098048449,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Thumb","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":426,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Nail - PATH","parent":5,"tt":1,"tp":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-215.854,53.1,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.7},"t":59,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.6,"y":0},"t":95,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":122,"s":[{"i":[[0,0],[4.232,-12.502],[12.921,-1.766],[0,0],[-10.742,11.216],[0,0],[-9.55,-10.068]],"o":[[8.923,9.803],[-4.232,12.502],[0,0],[-17.559,-12.801],[0,0],[13.042,-4.219],[0,0]],"v":[[43.524,-16.699],[51.346,19.151],[23.347,42.689],[-15.873,40.533],[-19.404,-10.788],[6.329,-27.088],[43.177,-17.287]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.4,"y":0},"t":140,"s":[{"i":[[0,0],[5.977,-11.693],[12.492,0.343],[0,0],[-11.927,9.366],[0,0],[-7.435,-11.514]],"o":[[6.885,11.15],[-5.977,11.693],[0,0],[-14.573,-15.516],[0,0],[12.995,-2.066],[0,0]],"v":[[41.831,-31.462],[43.556,5.299],[13.369,24.072],[-23.361,15.588],[-18.585,-35.795],[8.315,-47.769],[41.596,-32.101]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":182,"s":[{"i":[[0,0],[5.977,-11.693],[12.492,0.343],[0,0],[-11.927,9.366],[0,0],[-7.435,-11.514]],"o":[[6.885,11.15],[-5.977,11.693],[0,0],[-14.573,-15.516],[0,0],[12.995,-2.066],[0,0]],"v":[[41.831,-31.462],[43.556,5.299],[13.369,24.072],[-23.361,15.588],[-18.585,-35.795],[8.315,-47.769],[41.596,-32.101]],"c":true}]},{"t":197,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}],"h":1},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":228,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":248,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":260,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"t":275,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}],"h":1},{"i":{"x":0.34,"y":1},"o":{"x":0.66,"y":0},"t":359,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":383,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":385,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"t":400,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.75686275959,0.549019634724,0.474509805441,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Nail","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":426,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Thumb - PATH","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":59,"s":[17.7]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":95,"s":[15.7]},{"t":147,"s":[15.7]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":122,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.6,"y":0.6},"o":{"x":0.604,"y":0.604},"t":145,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.6,"y":0.6},"o":{"x":0.2,"y":0.2},"t":147,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":182,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":197,"s":[0,0,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,49,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":25,"nm":"Elevation","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[0,0,0,0.25],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":63.75,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":180,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":4,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":8,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.7},"t":59,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.6,"y":0},"t":95,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":122,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.49,-5.931],[30.698,11.123],[-18.869,10.266],[-42.877,14.071],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.49,5.931],[-30.684,-10.869],[30.147,-16.402],[13.194,-4.33],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.746,122.8],[-214.825,120.486],[-218.536,60.463],[-143.094,15.021],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.4,"y":0},"t":140,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":182,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"t":197,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"h":1},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":228,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":248,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":260,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"t":275,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.754,-2.058],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.766,1.872],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.363],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.881,189.328],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"h":1},{"i":{"x":0.34,"y":1},"o":{"x":0.66,"y":0},"t":359,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.754,-2.058],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.766,1.872],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.363],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.881,189.328],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":383,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":385,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"t":400,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.694117665291,0.435294121504,0.345098048449,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Thumb","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":426,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":3,"nm":"All Overview Scroll","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":246,"s":[214.5]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":263,"s":[419.3]},{"t":348,"s":[726.5]}],"ix":3},"y":{"a":0,"k":-95,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":22,"mn":"Pseudo/494931","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/494931-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/494931-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/494931-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/494931-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/494931-0005","ix":5,"v":0},{"ty":6,"nm":"Nulls are useless.","mn":"Pseudo/494931-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0007","ix":7,"v":0},{"ty":6,"nm":"They live in the Solids folder,","mn":"Pseudo/494931-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0009","ix":9,"v":0},{"ty":6,"nm":"must travel with projects, and","mn":"Pseudo/494931-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0011","ix":11,"v":0},{"ty":6,"nm":"may be deleted like footage.","mn":"Pseudo/494931-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0013","ix":13,"v":0},{"ty":6,"nm":"Don't use them anymore.","mn":"Pseudo/494931-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0015","ix":15,"v":0},{"ty":6,"nm":"Void - 0.7.1","mn":"Pseudo/494931-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0017","ix":17,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/494931-0018","ix":18,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0019","ix":19,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0020","ix":20,"v":0}]}],"ip":20,"op":426,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":3,"nm":"Initial Overview In","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":182,"s":[-156]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":202,"s":[209]},{"t":217,"s":[206]}],"ix":3},"y":{"a":0,"k":532,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":22,"mn":"Pseudo/494931","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/494931-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/494931-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/494931-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/494931-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/494931-0005","ix":5,"v":0},{"ty":6,"nm":"Nulls are useless.","mn":"Pseudo/494931-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0007","ix":7,"v":0},{"ty":6,"nm":"They live in the Solids folder,","mn":"Pseudo/494931-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0009","ix":9,"v":0},{"ty":6,"nm":"must travel with projects, and","mn":"Pseudo/494931-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0011","ix":11,"v":0},{"ty":6,"nm":"may be deleted like footage.","mn":"Pseudo/494931-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0013","ix":13,"v":0},{"ty":6,"nm":"Don't use them anymore.","mn":"Pseudo/494931-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0015","ix":15,"v":0},{"ty":6,"nm":"Void - 0.7.1","mn":"Pseudo/494931-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0017","ix":17,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/494931-0018","ix":18,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0019","ix":19,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0020","ix":20,"v":0}]}],"ip":20,"op":426,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":3,"nm":"Loop App to Center","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":-512,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":378,"s":[0]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":384.666,"s":[-34.6]},{"t":418,"s":[-86.5]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":426,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":10,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.83],"y":[0.83]},"o":{"x":[0.52],"y":[0]},"t":246,"s":[50]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.17],"y":[0.17]},"t":264,"s":[100]},{"t":281,"s":[50]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-256,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[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,0],[18.976,-48.115],[0,0],[14.69,-5.794],[0,0],[-48.115,-18.977],[0,0],[-5.794,-14.69],[0,0],[-18.977,48.115],[0,0],[-14.69,5.794],[0,0],[48.115,18.976],[0,0],[5.794,14.69]],"o":[[-18.977,-48.115],[0,0],[-5.794,14.69],[0,0],[-48.115,18.976],[0,0],[14.69,5.794],[0,0],[18.976,48.115],[0,0],[5.794,-14.69],[0,0],[48.115,-18.977],[0,0],[-14.69,-5.794],[0,0]],"v":[[53.024,-96.229],[-53.024,-96.229],[-56.162,-88.274],[-88.274,-56.162],[-96.229,-53.024],[-96.229,53.024],[-88.274,56.161],[-56.162,88.273],[-53.024,96.228],[53.024,96.228],[56.161,88.273],[88.273,56.161],[96.228,53.024],[96.228,-53.024],[88.273,-56.162],[56.161,-88.274]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":57,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-45,"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":"Star 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":110,"op":426,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":7,"sr":1,"ks":{"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":378,"s":[-768]},{"t":402,"s":[-1098]}],"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[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,0],[8.421,-4.724],[0,0],[4.631,-0.057],[0,0],[4.931,-8.301],[0,0],[3.982,-2.365],[0,0],[0.12,-9.654],[0,0],[2.266,-4.039],[0,0],[-4.724,-8.421],[0,0],[-0.057,-4.631],[0,0],[-8.301,-4.931],[0,0],[-2.365,-3.982],[0,0],[-9.654,-0.119],[0,0],[-4.039,-2.266],[0,0],[-8.421,4.724],[0,0],[-4.631,0.057],[0,0],[-4.931,8.301],[0,0],[-3.982,2.365],[0,0],[-0.119,9.654],[0,0],[-2.266,4.039],[0,0],[4.724,8.421],[0,0],[0.057,4.631],[0,0],[8.301,4.931],[0,0],[2.365,3.982],[0,0],[9.654,0.12],[0,0],[4.039,2.266]],"o":[[-8.421,-4.724],[0,0],[-4.039,2.266],[0,0],[-9.654,0.12],[0,0],[-2.365,3.982],[0,0],[-8.301,4.931],[0,0],[-0.057,4.631],[0,0],[-4.724,8.421],[0,0],[2.266,4.039],[0,0],[0.12,9.655],[0,0],[3.982,2.365],[0,0],[4.931,8.301],[0,0],[4.631,0.057],[0,0],[8.421,4.724],[0,0],[4.039,-2.266],[0,0],[9.654,-0.119],[0,0],[2.365,-3.982],[0,0],[8.301,-4.931],[0,0],[0.057,-4.631],[0,0],[4.724,-8.421],[0,0],[-2.266,-4.039],[0,0],[-0.119,-9.654],[0,0],[-3.982,-2.365],[0,0],[-4.931,-8.301],[0,0],[-4.631,-0.057],[0,0]],"v":[[13.557,-175.395],[-13.557,-175.395],[-36.472,-162.541],[-49.685,-159.001],[-75.957,-158.675],[-99.438,-145.118],[-112.856,-122.529],[-122.529,-112.856],[-145.118,-99.438],[-158.675,-75.957],[-159.001,-49.685],[-162.541,-36.472],[-175.395,-13.557],[-175.395,13.557],[-162.541,36.472],[-159.001,49.685],[-158.675,75.957],[-145.118,99.438],[-122.529,112.856],[-112.856,122.529],[-99.438,145.119],[-75.957,158.675],[-49.685,159.001],[-36.472,162.541],[-13.557,175.395],[13.557,175.395],[36.472,162.541],[49.685,159.001],[75.957,158.675],[99.438,145.119],[112.856,122.529],[122.529,112.856],[145.119,99.438],[158.675,75.957],[159.001,49.685],[162.541,36.472],[175.395,13.557],[175.395,-13.557],[162.541,-36.472],[159.001,-49.685],[158.675,-75.957],[145.119,-99.438],[122.529,-112.856],[112.856,-122.529],[99.438,-145.118],[75.957,-158.675],[49.685,-159.001],[36.472,-162.541]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":28,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[70,70],"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":"Star 9","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":110,"op":426,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":8,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":264,"s":[50]},{"i":{"x":[0.833],"y":[0.757]},"o":{"x":[0.167],"y":[0]},"t":348,"s":[100]},{"i":{"x":[0.82],"y":[0]},"o":{"x":[0.78],"y":[0]},"t":399,"s":[95]},{"t":424,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":9,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":378,"s":[220]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":383,"s":[468.4]},{"t":408,"s":[841]}],"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":378,"s":[220]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":383,"s":[412.4]},{"t":408,"s":[701]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":378,"s":[60]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":383,"s":[43.2]},{"t":408,"s":[18]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"k":[{"s":[60],"t":378,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":380,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":381,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":382,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":383,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":384,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":385,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":386,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":387,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"k":[{"s":[60],"t":378,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":380,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":381,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":382,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":383,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":384,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":385,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":386,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":387,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"k":[{"s":[60],"t":378,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":380,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":381,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":382,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":383,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":384,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":385,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":386,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":387,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]},{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":2,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":11,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-33.114,0],[0,0],[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114]],"o":[[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114],[0,0],[-33.114,0],[0,0]],"v":[[-110,-50],[-50,-110],[50,-110],[110,-50],[110,50],[50,110],[-50,110],[-110,50]],"c":true}],"t":378,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-32.906,0],[0,0],[0,-32.906],[0,0],[32.906,0],[0,0],[0,32.906]],"o":[[0,-32.906],[0,0],[32.906,0],[0,0],[0,32.906],[0,0],[-32.906,0],[0,0]],"v":[[-112.782,-52.531],[-53.158,-112.155],[53.158,-112.155],[112.782,-52.531],[112.782,52.531],[53.158,112.155],[-53.158,112.155],[-112.782,52.531]],"c":true}],"t":379,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-32.237,0],[0,0],[0,-32.237],[0,0],[32.237,0],[0,0],[0,32.237]],"o":[[0,-32.237],[0,0],[32.237,0],[0,0],[0,32.237],[0,0],[-32.237,0],[0,0]],"v":[[-121.743,-60.684],[-63.331,-119.095],[63.331,-119.095],[121.743,-60.684],[121.743,60.684],[63.331,119.095],[-63.331,119.095],[-121.743,60.684]],"c":true}],"t":380,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-30.947,0],[0,0],[0,-30.947],[0,0],[30.947,0],[0,0],[0,30.947]],"o":[[0,-30.947],[0,0],[30.947,0],[0,0],[0,30.947],[0,0],[-30.947,0],[0,0]],"v":[[-139.025,-76.408],[-82.951,-132.482],[82.951,-132.482],[139.025,-76.408],[139.025,76.408],[82.951,132.482],[-82.951,132.482],[-139.025,76.408]],"c":true}],"t":381,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-28.64,0],[0,0],[0,-28.64],[0,0],[28.64,0],[0,0],[0,28.64]],"o":[[0,-28.64],[0,0],[28.64,0],[0,0],[0,28.64],[0,0],[-28.64,0],[0,0]],"v":[[-169.932,-104.527],[-118.039,-156.421],[118.039,-156.421],[169.932,-104.527],[169.932,104.527],[118.039,156.421],[-118.039,156.421],[-169.932,104.527]],"c":true}],"t":382,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-23.842,0],[0,0],[0,-23.842],[0,0],[23.842,0],[0,0],[0,23.842]],"o":[[0,-23.842],[0,0],[23.842,0],[0,0],[0,23.842],[0,0],[-23.842,0],[0,0]],"v":[[-234.2,-163],[-191,-206.2],[191,-206.2],[234.2,-163],[234.2,163],[191,206.2],[-191,206.2],[-234.2,163]],"c":true}],"t":383,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-18.379,0],[0,0],[0,-18.379],[0,0],[18.379,0],[0,0],[0,18.379]],"o":[[0,-18.379],[0,0],[18.379,0],[0,0],[0,18.379],[0,0],[-18.379,0],[0,0]],"v":[[-307.385,-229.585],[-274.084,-262.886],[274.084,-262.886],[307.385,-229.585],[307.385,229.585],[274.084,262.886],[-274.084,262.886],[-307.385,229.585]],"c":true}],"t":384,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-15.973,0],[0,0],[0,-15.973],[0,0],[15.973,0],[0,0],[0,15.973]],"o":[[0,-15.973],[0,0],[15.973,0],[0,0],[0,15.973],[0,0],[-15.973,0],[0,0]],"v":[[-339.603,-258.898],[-310.66,-287.84],[310.66,-287.84],[339.603,-258.898],[339.603,258.898],[310.66,287.84],[-310.66,287.84],[-339.603,258.898]],"c":true}],"t":385,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-14.579,0],[0,0],[0,-14.579],[0,0],[14.579,0],[0,0],[0,14.579]],"o":[[0,-14.579],[0,0],[14.579,0],[0,0],[0,14.579],[0,0],[-14.579,0],[0,0]],"v":[[-358.277,-275.888],[-331.86,-302.305],[331.86,-302.305],[358.277,-275.888],[358.277,275.888],[331.86,302.305],[-331.86,302.305],[-358.277,275.888]],"c":true}],"t":386,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-13.632,0],[0,0],[0,-13.632],[0,0],[13.632,0],[0,0],[0,13.632]],"o":[[0,-13.632],[0,0],[13.632,0],[0,0],[0,13.632],[0,0],[-13.632,0],[0,0]],"v":[[-370.965,-287.432],[-346.265,-312.133],[346.265,-312.133],[370.965,-287.432],[370.965,287.432],[346.265,312.133],[-346.265,312.133],[-370.965,287.432]],"c":true}],"t":387,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-12.934,0],[0,0],[0,-12.934],[0,0],[12.934,0],[0,0],[0,12.934]],"o":[[0,-12.934],[0,0],[12.934,0],[0,0],[0,12.934],[0,0],[-12.934,0],[0,0]],"v":[[-380.319,-295.942],[-356.883,-319.377],[356.884,-319.377],[380.319,-295.942],[380.319,295.942],[356.884,319.377],[-356.883,319.377],[-380.319,295.942]],"c":true}],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-12.394,0],[0,0],[0,-12.394],[0,0],[12.394,0],[0,0],[0,12.394]],"o":[[0,-12.394],[0,0],[12.394,0],[0,0],[0,12.394],[0,0],[-12.394,0],[0,0]],"v":[[-387.553,-302.524],[-365.096,-324.98],[365.096,-324.98],[387.553,-302.524],[387.553,302.524],[365.096,324.98],[-365.096,324.98],[-387.553,302.524]],"c":true}],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.963,0],[0,0],[0,-11.963],[0,0],[11.963,0],[0,0],[0,11.963]],"o":[[0,-11.963],[0,0],[11.963,0],[0,0],[0,11.963],[0,0],[-11.963,0],[0,0]],"v":[[-393.324,-307.775],[-371.648,-329.451],[371.648,-329.451],[393.324,-307.775],[393.324,307.775],[371.648,329.451],[-371.648,329.451],[-393.324,307.775]],"c":true}],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.612,0],[0,0],[0,-11.612],[0,0],[11.612,0],[0,0],[0,11.612]],"o":[[0,-11.612],[0,0],[11.612,0],[0,0],[0,11.612],[0,0],[-11.612,0],[0,0]],"v":[[-398.027,-312.053],[-376.987,-333.093],[376.987,-333.093],[398.027,-312.053],[398.027,312.053],[376.987,333.093],[-376.987,333.093],[-398.027,312.053]],"c":true}],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.322,0],[0,0],[0,-11.322],[0,0],[11.322,0],[0,0],[0,11.322]],"o":[[0,-11.322],[0,0],[11.322,0],[0,0],[0,11.322],[0,0],[-11.322,0],[0,0]],"v":[[-401.916,-315.591],[-381.402,-336.105],[381.402,-336.105],[401.916,-315.591],[401.916,315.591],[381.402,336.105],[-381.402,336.105],[-401.916,315.591]],"c":true}],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.079,0],[0,0],[0,-11.079],[0,0],[11.079,0],[0,0],[0,11.079]],"o":[[0,-11.079],[0,0],[11.079,0],[0,0],[0,11.079],[0,0],[-11.079,0],[0,0]],"v":[[-405.165,-318.548],[-385.091,-338.622],[385.091,-338.622],[405.165,-318.548],[405.165,318.548],[385.091,338.622],[-385.091,338.622],[-405.165,318.548]],"c":true}],"t":393,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.875,0],[0,0],[0,-10.875],[0,0],[10.875,0],[0,0],[0,10.875]],"o":[[0,-10.875],[0,0],[10.875,0],[0,0],[0,10.875],[0,0],[-10.875,0],[0,0]],"v":[[-407.9,-321.036],[-388.195,-340.74],[388.195,-340.74],[407.9,-321.036],[407.9,321.036],[388.195,340.74],[-388.195,340.74],[-407.9,321.036]],"c":true}],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.702,0],[0,0],[0,-10.702],[0,0],[10.702,0],[0,0],[0,10.702]],"o":[[0,-10.702],[0,0],[10.702,0],[0,0],[0,10.702],[0,0],[-10.702,0],[0,0]],"v":[[-410.211,-323.139],[-390.82,-342.531],[390.82,-342.531],[410.211,-323.139],[410.211,323.139],[390.82,342.531],[-390.82,342.531],[-410.211,323.139]],"c":true}],"t":395,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.556,0],[0,0],[0,-10.556],[0,0],[10.556,0],[0,0],[0,10.556]],"o":[[0,-10.556],[0,0],[10.556,0],[0,0],[0,10.556],[0,0],[-10.556,0],[0,0]],"v":[[-412.17,-324.921],[-393.043,-344.048],[393.043,-344.048],[412.17,-324.921],[412.17,324.921],[393.043,344.048],[-393.043,344.048],[-412.17,324.921]],"c":true}],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.432,0],[0,0],[0,-10.432],[0,0],[10.432,0],[0,0],[0,10.432]],"o":[[0,-10.432],[0,0],[10.432,0],[0,0],[0,10.432],[0,0],[-10.432,0],[0,0]],"v":[[-413.829,-326.431],[-394.927,-345.333],[394.927,-345.333],[413.829,-326.431],[413.829,326.431],[394.927,345.333],[-394.927,345.333],[-413.829,326.431]],"c":true}],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.327,0],[0,0],[0,-10.327],[0,0],[10.327,0],[0,0],[0,10.328]],"o":[[0,-10.327],[0,0],[10.327,0],[0,0],[0,10.328],[0,0],[-10.327,0],[0,0]],"v":[[-415.232,-327.707],[-396.519,-346.42],[396.519,-346.42],[415.232,-327.707],[415.232,327.707],[396.519,346.42],[-396.519,346.42],[-415.232,327.707]],"c":true}],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.239,0],[0,0],[0,-10.239],[0,0],[10.239,0],[0,0],[0,10.239]],"o":[[0,-10.239],[0,0],[10.239,0],[0,0],[0,10.239],[0,0],[-10.239,0],[0,0]],"v":[[-416.413,-328.782],[-397.86,-347.335],[397.86,-347.335],[416.413,-328.782],[416.413,328.782],[397.86,347.335],[-397.86,347.335],[-416.413,328.782]],"c":true}],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.166,0],[0,0],[0,-10.166],[0,0],[10.166,0],[0,0],[0,10.166]],"o":[[0,-10.166],[0,0],[10.166,0],[0,0],[0,10.166],[0,0],[-10.166,0],[0,0]],"v":[[-417.401,-329.68],[-398.982,-348.1],[398.982,-348.1],[417.401,-329.68],[417.401,329.68],[398.982,348.1],[-398.982,348.1],[-417.401,329.68]],"c":true}],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.104,0],[0,0],[0,-10.104],[0,0],[10.104,0],[0,0],[0,10.104]],"o":[[0,-10.104],[0,0],[10.104,0],[0,0],[0,10.104],[0,0],[-10.104,0],[0,0]],"v":[[-418.219,-330.424],[-399.91,-348.733],[399.91,-348.733],[418.219,-330.424],[418.219,330.424],[399.91,348.733],[-399.91,348.733],[-418.219,330.424]],"c":true}],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.055,0],[0,0],[0,-10.055],[0,0],[10.055,0],[0,0],[0,10.055]],"o":[[0,-10.055],[0,0],[10.055,0],[0,0],[0,10.055],[0,0],[-10.055,0],[0,0]],"v":[[-418.886,-331.031],[-400.667,-349.25],[400.667,-349.25],[418.886,-331.031],[418.886,331.031],[400.667,349.25],[-400.667,349.25],[-418.886,331.031]],"c":true}],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.015,0],[0,0],[0,-10.015],[0,0],[10.015,0],[0,0],[0,10.015]],"o":[[0,-10.015],[0,0],[10.015,0],[0,0],[0,10.015],[0,0],[-10.015,0],[0,0]],"v":[[-419.419,-331.516],[-401.272,-349.663],[401.272,-349.663],[419.419,-331.516],[419.419,331.516],[401.272,349.663],[-401.272,349.663],[-419.419,331.516]],"c":true}],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.984,0],[0,0],[0,-9.984],[0,0],[9.984,0],[0,0],[0,9.984]],"o":[[0,-9.984],[0,0],[9.984,0],[0,0],[0,9.984],[0,0],[-9.984,0],[0,0]],"v":[[-419.832,-331.892],[-401.741,-349.982],[401.741,-349.982],[419.832,-331.892],[419.832,331.892],[401.741,349.982],[-401.741,349.982],[-419.832,331.892]],"c":true}],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.961,0],[0,0],[0,-9.961],[0,0],[9.961,0],[0,0],[0,9.961]],"o":[[0,-9.961],[0,0],[9.961,0],[0,0],[0,9.961],[0,0],[-9.961,0],[0,0]],"v":[[-420.136,-332.169],[-402.087,-350.218],[402.087,-350.218],[420.136,-332.169],[420.136,332.169],[402.087,350.218],[-402.087,350.218],[-420.136,332.169]],"c":true}],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.946,0],[0,0],[0,-9.946],[0,0],[9.946,0],[0,0],[0,9.946]],"o":[[0,-9.946],[0,0],[9.946,0],[0,0],[0,9.946],[0,0],[-9.946,0],[0,0]],"v":[[-420.344,-332.358],[-402.322,-350.379],[402.322,-350.379],[420.344,-332.358],[420.344,332.358],[402.322,350.379],[-402.322,350.379],[-420.344,332.358]],"c":true}],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.937,0],[0,0],[0,-9.937],[0,0],[9.937,0],[0,0],[0,9.937]],"o":[[0,-9.937],[0,0],[9.937,0],[0,0],[0,9.937],[0,0],[-9.937,0],[0,0]],"v":[[-420.462,-332.465],[-402.457,-350.471],[402.457,-350.471],[420.462,-332.465],[420.462,332.465],[402.457,350.471],[-402.457,350.471],[-420.462,332.465]],"c":true}],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":110,"op":426,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":64,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":76,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":88,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":118,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":140,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.52],"y":[0]},"t":246,"s":[100]},{"t":264,"s":[50]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.15,"y":1},"o":{"x":0.37,"y":0},"t":122,"s":[206,752,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.15,"y":0.15},"o":{"x":0.37,"y":0.37},"t":170,"s":[206,421,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":378,"s":[206,421,0],"to":[0,0,0],"ti":[0,0,0]},{"t":402,"s":[526,421,0]}],"ix":2,"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":2,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":132,"s":[843]},{"t":170,"s":[352],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":182,"s":[352]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":202,"s":[216]},{"t":217,"s":[220]}],"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":132,"s":[582]},{"t":170,"s":[352],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":182,"s":[352]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":202,"s":[216]},{"t":217,"s":[220]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":132,"s":[90]},{"t":170,"s":[80],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":182,"s":[80]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":202,"s":[64]},{"t":217,"s":[60]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"k":[{"s":[89.923],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":201,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":202,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":203,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":204,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":205,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":206,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":207,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":208,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":209,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":210,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":211,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":212,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":213,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":214,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":215,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":216,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"k":[{"s":[89.923],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":201,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":202,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":203,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":204,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":205,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":206,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":207,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":208,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":209,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":210,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":211,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":212,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":213,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":214,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":215,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":216,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"k":[{"s":[89.923],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":201,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":202,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":203,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":204,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":205,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":206,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":207,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":208,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":209,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":210,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":211,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":212,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":213,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":214,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":215,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":216,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]},{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":2,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":12,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[206,751.633],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,750.454],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,748.33],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,745.094],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,740.545],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,734.442],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,726.497],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,716.407],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,703.886],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,688.79],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,671.278],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,651.958],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,631.805],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,611.874],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,592.965],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,575.511],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,559.641],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,545.32],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,532.437],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,520.847],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,510.403],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,500.982],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,492.465],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,484.749],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,477.755],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,471.405],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,465.636],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,460.395],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,455.631],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,451.307],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,447.382],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,443.824],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,440.61],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,437.711],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,435.105],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,432.771],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,430.694],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,428.857],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,427.245],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,425.844],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,424.643],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,423.63],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,422.795],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,422.13],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,421.625],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,421.273],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,421],"t":378,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[211.988,421],"t":379,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[237.854,421],"t":380,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[287.777,421],"t":381,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[336.028,421],"t":382,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[372.487,421],"t":383,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[400.31,421],"t":384,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[422.313,421],"t":385,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[440.201,421],"t":386,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[455.018,421],"t":387,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[467.451,421],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[477.968,421],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[486.907,421],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[494.518,421],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[500.994,421],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[506.487,421],"t":393,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[511.115,421],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[514.977,421],"t":395,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[518.154,421],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[520.713,421],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[522.712,421],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[524.201,421],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[525.221,421],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[525.81,421],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[49.671,0],[0,0],[0,49.671]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,49.671],[0,0],[-49.671,0],[0,0]],"v":[[-421.5,90],[-331.5,0],[331.5,0],[421.5,90],[421.5,492],[331.5,582],[-331.5,582],[-421.5,492]],"c":true}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.661,0],[0,0],[0,-49.661],[0,0],[49.661,0],[0,0],[0,49.661]],"o":[[0,-49.661],[0,0],[49.661,0],[0,0],[0,49.661],[0,0],[-49.661,0],[0,0]],"v":[[-421.06,89.982],[-331.078,0],[331.078,0],[421.06,89.982],[421.06,491.605],[331.078,581.587],[-331.078,581.587],[-421.06,491.605]],"c":true}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.629,0],[0,0],[0,-49.629],[0,0],[49.629,0],[0,0],[0,49.629]],"o":[[0,-49.629],[0,0],[49.629,0],[0,0],[0,49.629],[0,0],[-49.629,0],[0,0]],"v":[[-419.619,89.923],[-329.695,0],[329.695,0],[419.619,89.923],[419.619,490.314],[329.695,580.237],[-329.695,580.237],[-419.619,490.314]],"c":true}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.569,0],[0,0],[0,-49.569],[0,0],[49.569,0],[0,0],[0,49.569]],"o":[[0,-49.569],[0,0],[49.569,0],[0,0],[0,49.569],[0,0],[-49.569,0],[0,0]],"v":[[-416.958,89.815],[-327.143,0],[327.143,0],[416.958,89.815],[416.958,487.93],[327.143,577.745],[-327.143,577.745],[-416.958,487.93]],"c":true}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.475,0],[0,0],[0,-49.475],[0,0],[49.475,0],[0,0],[0,49.475]],"o":[[0,-49.475],[0,0],[49.475,0],[0,0],[0,49.475],[0,0],[-49.475,0],[0,0]],"v":[[-412.797,89.645],[-323.151,0],[323.151,0],[412.797,89.645],[412.797,484.201],[323.151,573.846],[-323.151,573.846],[-412.797,484.201]],"c":true}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.34,0],[0,0],[0,-49.34],[0,0],[49.34,0],[0,0],[0,49.34]],"o":[[0,-49.34],[0,0],[49.34,0],[0,0],[0,49.34],[0,0],[-49.34,0],[0,0]],"v":[[-406.775,89.4],[-317.375,0],[317.375,0],[406.775,89.4],[406.775,478.804],[317.375,568.205],[-317.375,568.205],[-406.775,478.804]],"c":true}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.153,0],[0,0],[0,-49.153],[0,0],[49.153,0],[0,0],[0,49.153]],"o":[[0,-49.153],[0,0],[49.153,0],[0,0],[0,49.153],[0,0],[-49.153,0],[0,0]],"v":[[-398.461,89.062],[-309.4,0],[309.4,0],[398.461,89.062],[398.461,471.354],[309.4,560.416],[-309.4,560.416],[-398.461,471.354]],"c":true}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.905,0],[0,0],[0,-48.905],[0,0],[48.905,0],[0,0],[0,48.905]],"o":[[0,-48.905],[0,0],[48.905,0],[0,0],[0,48.905],[0,0],[-48.905,0],[0,0]],"v":[[-387.407,88.611],[-298.795,0],[298.795,0],[387.407,88.611],[387.407,461.448],[298.795,550.059],[-298.795,550.059],[-387.407,461.448]],"c":true}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.588,0],[0,0],[0,-48.588],[0,0],[48.588,0],[0,0],[0,48.588]],"o":[[0,-48.588],[0,0],[48.588,0],[0,0],[0,48.588],[0,0],[-48.588,0],[0,0]],"v":[[-373.33,88.038],[-285.292,0],[285.292,0],[373.33,88.038],[373.33,448.834],[285.292,536.872],[-285.292,536.872],[-373.33,448.834]],"c":true}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.209,0],[0,0],[0,-48.209],[0,0],[48.209,0],[0,0],[0,48.209]],"o":[[0,-48.209],[0,0],[48.209,0],[0,0],[0,48.209],[0,0],[-48.209,0],[0,0]],"v":[[-356.473,87.351],[-269.122,0],[269.122,0],[356.473,87.351],[356.473,433.728],[269.122,521.079],[-269.122,521.079],[-356.473,433.728]],"c":true}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-47.791,0],[0,0],[0,-47.791],[0,0],[47.791,0],[0,0],[0,47.791]],"o":[[0,-47.791],[0,0],[47.791,0],[0,0],[0,47.791],[0,0],[-47.791,0],[0,0]],"v":[[-337.88,86.594],[-251.286,0],[251.286,0],[337.88,86.594],[337.88,417.066],[251.286,503.66],[-251.286,503.66],[-337.88,417.066]],"c":true}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-47.369,0],[0,0],[0,-47.369],[0,0],[47.369,0],[0,0],[0,47.369]],"o":[[0,-47.369],[0,0],[47.369,0],[0,0],[0,47.369],[0,0],[-47.369,0],[0,0]],"v":[[-319.099,85.829],[-233.27,0],[233.27,0],[319.099,85.829],[319.099,400.235],[233.27,486.064],[-233.27,486.064],[-319.099,400.235]],"c":true}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.972,0],[0,0],[0,-46.972],[0,0],[46.972,0],[0,0],[0,46.972]],"o":[[0,-46.972],[0,0],[46.972,0],[0,0],[0,46.972],[0,0],[-46.972,0],[0,0]],"v":[[-301.424,85.109],[-216.315,0],[216.315,0],[301.424,85.109],[301.424,384.396],[216.315,469.505],[-216.315,469.505],[-301.424,384.396]],"c":true}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.614,0],[0,0],[0,-46.614],[0,0],[46.614,0],[0,0],[0,46.614]],"o":[[0,-46.614],[0,0],[46.614,0],[0,0],[0,46.614],[0,0],[-46.614,0],[0,0]],"v":[[-285.496,84.46],[-201.036,0],[201.036,0],[285.496,84.46],[285.496,370.123],[201.036,454.583],[-201.036,454.583],[-285.496,370.123]],"c":true}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.298,0],[0,0],[0,-46.298],[0,0],[46.298,0],[0,0],[0,46.298]],"o":[[0,-46.298],[0,0],[46.298,0],[0,0],[0,46.298],[0,0],[-46.298,0],[0,0]],"v":[[-271.44,83.888],[-187.553,0],[187.553,0],[271.44,83.888],[271.44,357.527],[187.553,441.415],[-187.553,441.415],[-271.44,357.527]],"c":true}],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.021,0],[0,0],[0,-46.021],[0,0],[46.021,0],[0,0],[0,46.021]],"o":[[0,-46.021],[0,0],[46.021,0],[0,0],[0,46.021],[0,0],[-46.021,0],[0,0]],"v":[[-259.129,83.386],[-175.743,0],[175.743,0],[259.129,83.386],[259.129,346.495],[175.743,429.881],[-175.743,429.881],[-259.129,346.495]],"c":true}],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.779,0],[0,0],[0,-45.779],[0,0],[45.779,0],[0,0],[0,45.779]],"o":[[0,-45.779],[0,0],[45.779,0],[0,0],[0,45.779],[0,0],[-45.779,0],[0,0]],"v":[[-248.356,82.947],[-165.409,0],[165.409,0],[248.356,82.947],[248.356,336.841],[165.409,419.788],[-165.409,419.788],[-248.356,336.841]],"c":true}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.566,0],[0,0],[0,-45.566],[0,0],[45.566,0],[0,0],[0,45.566]],"o":[[0,-45.566],[0,0],[45.566,0],[0,0],[0,45.566],[0,0],[-45.566,0],[0,0]],"v":[[-238.91,82.563],[-156.348,0],[156.348,0],[238.91,82.563],[238.91,328.376],[156.348,410.938],[-156.348,410.938],[-238.91,328.376]],"c":true}],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.38,0],[0,0],[0,-45.38],[0,0],[45.38,0],[0,0],[0,45.38]],"o":[[0,-45.38],[0,0],[45.38,0],[0,0],[0,45.38],[0,0],[-45.38,0],[0,0]],"v":[[-230.605,82.224],[-148.381,0],[148.381,0],[230.605,82.224],[230.605,320.933],[148.381,403.157],[-148.381,403.157],[-230.605,320.933]],"c":true}],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.215,0],[0,0],[0,-45.215],[0,0],[45.215,0],[0,0],[0,45.215]],"o":[[0,-45.215],[0,0],[45.215,0],[0,0],[0,45.215],[0,0],[-45.215,0],[0,0]],"v":[[-223.282,81.926],[-141.356,0],[141.356,0],[223.282,81.926],[223.282,314.371],[141.356,396.297],[-141.356,396.297],[-223.282,314.371]],"c":true}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.069,0],[0,0],[0,-45.069],[0,0],[45.069,0],[0,0],[0,45.069]],"o":[[0,-45.069],[0,0],[45.069,0],[0,0],[0,45.069],[0,0],[-45.069,0],[0,0]],"v":[[-216.811,81.662],[-135.148,0],[135.148,0],[216.811,81.662],[216.811,308.572],[135.148,390.234],[-135.148,390.234],[-216.811,308.572]],"c":true}],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.941,0],[0,0],[0,-44.941],[0,0],[44.941,0],[0,0],[0,44.941]],"o":[[0,-44.941],[0,0],[44.941,0],[0,0],[0,44.941],[0,0],[-44.941,0],[0,0]],"v":[[-211.082,81.429],[-129.653,0],[129.653,0],[211.082,81.429],[211.082,303.438],[129.653,384.867],[-129.653,384.867],[-211.082,303.438]],"c":true}],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.827,0],[0,0],[0,-44.827],[0,0],[44.827,0],[0,0],[0,44.827]],"o":[[0,-44.827],[0,0],[44.827,0],[0,0],[0,44.827],[0,0],[-44.827,0],[0,0]],"v":[[-206.006,81.222],[-124.784,0],[124.784,0],[206.006,81.222],[206.006,298.89],[124.784,380.112],[-124.784,380.112],[-206.006,298.89]],"c":true}],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.725,0],[0,0],[0,-44.725],[0,0],[44.725,0],[0,0],[0,44.725]],"o":[[0,-44.725],[0,0],[44.725,0],[0,0],[0,44.725],[0,0],[-44.725,0],[0,0]],"v":[[-201.509,81.039],[-120.47,0],[120.47,0],[201.509,81.039],[201.509,294.859],[120.47,375.898],[-120.47,375.898],[-201.509,294.859]],"c":true}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.636,0],[0,0],[0,-44.636],[0,0],[44.636,0],[0,0],[0,44.636]],"o":[[0,-44.636],[0,0],[44.636,0],[0,0],[0,44.636],[0,0],[-44.636,0],[0,0]],"v":[[-197.527,80.877],[-116.65,0],[116.65,0],[197.527,80.877],[197.527,291.291],[116.65,372.168],[-116.65,372.168],[-197.527,291.291]],"c":true}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.557,0],[0,0],[0,-44.557],[0,0],[44.557,0],[0,0],[0,44.557]],"o":[[0,-44.557],[0,0],[44.557,0],[0,0],[0,44.557],[0,0],[-44.557,0],[0,0]],"v":[[-194.007,80.733],[-113.274,0],[113.274,0],[194.007,80.733],[194.007,288.137],[113.274,368.87],[-113.274,368.87],[-194.007,288.137]],"c":true}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.487,0],[0,0],[0,-44.487],[0,0],[44.487,0],[0,0],[0,44.487]],"o":[[0,-44.487],[0,0],[44.487,0],[0,0],[0,44.487],[0,0],[-44.487,0],[0,0]],"v":[[-190.904,80.607],[-110.297,0],[110.297,0],[190.904,80.607],[190.904,285.356],[110.297,365.963],[-110.297,365.963],[-190.904,285.356]],"c":true}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.426,0],[0,0],[0,-44.426],[0,0],[44.426,0],[0,0],[0,44.426]],"o":[[0,-44.426],[0,0],[44.426,0],[0,0],[0,44.426],[0,0],[-44.426,0],[0,0]],"v":[[-188.18,80.496],[-107.684,0],[107.684,0],[188.18,80.496],[188.18,282.915],[107.684,363.411],[-107.684,363.411],[-188.18,282.915]],"c":true}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.372,0],[0,0],[0,-44.372],[0,0],[44.372,0],[0,0],[0,44.372]],"o":[[0,-44.372],[0,0],[44.372,0],[0,0],[0,44.372],[0,0],[-44.372,0],[0,0]],"v":[[-185.8,80.399],[-105.401,0],[105.401,0],[185.8,80.399],[185.8,280.782],[105.401,361.182],[-105.401,361.182],[-185.8,280.782]],"c":true}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.326,0],[0,0],[0,-44.326],[0,0],[44.326,0],[0,0],[0,44.326]],"o":[[0,-44.326],[0,0],[44.326,0],[0,0],[0,44.326],[0,0],[-44.326,0],[0,0]],"v":[[-183.736,80.315],[-103.421,0],[103.421,0],[183.736,80.315],[183.736,278.933],[103.421,359.248],[-103.421,359.248],[-183.736,278.933]],"c":true}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.286,0],[0,0],[0,-44.286],[0,0],[44.286,0],[0,0],[0,44.286]],"o":[[0,-44.286],[0,0],[44.286,0],[0,0],[0,44.286],[0,0],[-44.286,0],[0,0]],"v":[[-181.963,80.243],[-101.72,0],[101.72,0],[181.963,80.243],[181.963,277.344],[101.72,357.586],[-101.72,357.586],[-181.963,277.344]],"c":true}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.252,0],[0,0],[0,-44.252],[0,0],[44.252,0],[0,0],[0,44.252]],"o":[[0,-44.252],[0,0],[44.252,0],[0,0],[0,44.252],[0,0],[-44.252,0],[0,0]],"v":[[-180.457,80.182],[-100.276,0],[100.276,0],[180.457,80.182],[180.457,275.994],[100.276,356.176],[-100.276,356.176],[-180.457,275.994]],"c":true}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.224,0],[0,0],[0,-44.224],[0,0],[44.224,0],[0,0],[0,44.224]],"o":[[0,-44.224],[0,0],[44.224,0],[0,0],[0,44.224],[0,0],[-44.224,0],[0,0]],"v":[[-179.2,80.13],[-99.069,0],[99.069,0],[179.2,80.13],[179.2,274.867],[99.069,354.998],[-99.069,354.998],[-179.2,274.867]],"c":true}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.201,0],[0,0],[0,-44.201],[0,0],[44.201,0],[0,0],[0,44.201]],"o":[[0,-44.201],[0,0],[44.201,0],[0,0],[0,44.201],[0,0],[-44.201,0],[0,0]],"v":[[-178.173,80.089],[-98.084,0],[98.084,0],[178.173,80.089],[178.173,273.947],[98.084,354.036],[-98.084,354.036],[-178.173,273.947]],"c":true}],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.183,0],[0,0],[0,-44.183],[0,0],[44.183,0],[0,0],[0,44.183]],"o":[[0,-44.183],[0,0],[44.183,0],[0,0],[0,44.183],[0,0],[-44.183,0],[0,0]],"v":[[-177.361,80.055],[-97.305,0],[97.305,0],[177.361,80.055],[177.361,273.219],[97.305,353.275],[-97.305,353.275],[-177.361,273.219]],"c":true}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.169,0],[0,0],[0,-44.169],[0,0],[44.169,0],[0,0],[0,44.169]],"o":[[0,-44.169],[0,0],[44.169,0],[0,0],[0,44.169],[0,0],[-44.169,0],[0,0]],"v":[[-176.749,80.031],[-96.719,0],[96.719,0],[176.749,80.031],[176.749,272.672],[96.719,352.702],[-96.719,352.702],[-176.749,272.672]],"c":true}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.159,0],[0,0],[0,-44.159],[0,0],[44.159,0],[0,0],[0,44.159]],"o":[[0,-44.159],[0,0],[44.159,0],[0,0],[0,44.159],[0,0],[-44.159,0],[0,0]],"v":[[-176.326,80.013],[-96.313,0],[96.313,0],[176.326,80.013],[176.326,272.292],[96.313,352.306],[-96.313,352.306],[-176.326,272.292]],"c":true}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.154,0],[0,0],[0,-44.154],[0,0],[44.154,0],[0,0],[0,44.154]],"o":[[0,-44.154],[0,0],[44.154,0],[0,0],[0,44.154],[0,0],[-44.154,0],[0,0]],"v":[[-176.08,80.003],[-96.077,0],[96.077,0],[176.08,80.003],[176.08,272.072],[96.077,352.075],[-96.077,352.075],[-176.08,272.072]],"c":true}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.152,0],[0,0],[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152]],"o":[[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152],[0,0],[-44.152,0],[0,0]],"v":[[-176,80],[-96,0],[96,0],[176,80],[176,272],[96,352],[-96,352],[-176,272]],"c":true}],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.127,0],[0,0],[0,-44.127],[0,0],[44.127,0],[0,0],[0,44.127]],"o":[[0,-44.127],[0,0],[44.127,0],[0,0],[0,44.127],[0,0],[-44.127,0],[0,0]],"v":[[-175.806,79.954],[-95.852,0],[95.852,0],[175.806,79.954],[175.806,271.658],[95.852,351.613],[-95.852,351.613],[-175.806,271.658]],"c":true}],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.042,0],[0,0],[0,-44.042],[0,0],[44.042,0],[0,0],[0,44.042]],"o":[[0,-44.042],[0,0],[44.042,0],[0,0],[0,44.042],[0,0],[-44.042,0],[0,0]],"v":[[-175.151,79.8],[-95.351,0],[95.351,0],[175.151,79.8],[175.151,270.502],[95.351,350.302],[-95.351,350.302],[-175.151,270.502]],"c":true}],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.877,0],[0,0],[0,-43.877],[0,0],[43.877,0],[0,0],[0,43.877]],"o":[[0,-43.877],[0,0],[43.877,0],[0,0],[0,43.877],[0,0],[-43.877,0],[0,0]],"v":[[-173.883,79.502],[-94.381,0],[94.381,0],[173.883,79.502],[173.883,268.264],[94.381,347.766],[-94.381,347.766],[-173.883,268.264]],"c":true}],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.602,0],[0,0],[0,-43.602],[0,0],[43.602,0],[0,0],[0,43.602]],"o":[[0,-43.602],[0,0],[43.602,0],[0,0],[0,43.602],[0,0],[-43.602,0],[0,0]],"v":[[-171.765,79.003],[-92.761,0],[92.761,0],[171.765,79.003],[171.765,264.526],[92.761,343.529],[-92.761,343.529],[-171.765,264.526]],"c":true}],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.166,0],[0,0],[0,-43.166],[0,0],[43.166,0],[0,0],[0,43.166]],"o":[[0,-43.166],[0,0],[43.166,0],[0,0],[0,43.166],[0,0],[-43.166,0],[0,0]],"v":[[-168.404,78.213],[-90.191,0],[90.191,0],[168.404,78.213],[168.404,258.595],[90.191,336.808],[-90.191,336.808],[-168.404,258.595]],"c":true}],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-42.482,0],[0,0],[0,-42.482],[0,0],[42.482,0],[0,0],[0,42.482]],"o":[[0,-42.482],[0,0],[42.482,0],[0,0],[0,42.482],[0,0],[-42.482,0],[0,0]],"v":[[-163.142,76.975],[-86.168,0],[86.168,0],[163.142,76.975],[163.142,249.31],[86.168,326.284],[-86.168,326.284],[-163.142,249.31]],"c":true}],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-41.435,0],[0,0],[0,-41.435],[0,0],[41.435,0],[0,0],[0,41.435]],"o":[[0,-41.435],[0,0],[41.435,0],[0,0],[0,41.435],[0,0],[-41.435,0],[0,0]],"v":[[-155.078,75.077],[-80.001,0],[80.001,0],[155.078,75.077],[155.078,235.078],[80.001,310.155],[-80.001,310.155],[-155.078,235.078]],"c":true}],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-40.054,0],[0,0],[0,-40.054],[0,0],[40.054,0],[0,0],[0,40.054]],"o":[[0,-40.054],[0,0],[40.054,0],[0,0],[0,40.054],[0,0],[-40.054,0],[0,0]],"v":[[-144.442,72.575],[-71.868,0],[71.868,0],[144.442,72.575],[144.442,216.31],[71.868,288.885],[-71.868,288.885],[-144.442,216.31]],"c":true}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-38.75,0],[0,0],[0,-38.75],[0,0],[38.75,0],[0,0],[0,38.75]],"o":[[0,-38.75],[0,0],[38.75,0],[0,0],[0,38.75],[0,0],[-38.75,0],[0,0]],"v":[[-134.399,70.212],[-64.188,0],[64.188,0],[134.399,70.212],[134.399,198.587],[64.188,268.799],[-64.188,268.799],[-134.399,198.587]],"c":true}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-37.775,0],[0,0],[0,-37.775],[0,0],[37.775,0],[0,0],[0,37.775]],"o":[[0,-37.775],[0,0],[37.775,0],[0,0],[0,37.775],[0,0],[-37.775,0],[0,0]],"v":[[-126.895,68.446],[-58.449,0],[58.449,0],[126.895,68.446],[126.895,185.345],[58.449,253.791],[-58.449,253.791],[-126.895,185.345]],"c":true}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-37.077,0],[0,0],[0,-37.077],[0,0],[37.077,0],[0,0],[0,37.077]],"o":[[0,-37.077],[0,0],[37.077,0],[0,0],[0,37.077],[0,0],[-37.077,0],[0,0]],"v":[[-121.522,67.182],[-54.34,0],[54.34,0],[121.522,67.182],[121.522,175.861],[54.34,243.043],[-54.34,243.043],[-121.522,175.861]],"c":true}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-36.569,0],[0,0],[0,-36.569],[0,0],[36.569,0],[0,0],[0,36.569]],"o":[[0,-36.569],[0,0],[36.569,0],[0,0],[0,36.569],[0,0],[-36.569,0],[0,0]],"v":[[-117.609,66.261],[-51.348,0],[51.348,0],[117.609,66.261],[117.609,168.957],[51.348,235.217],[-51.348,235.217],[-117.609,168.957]],"c":true}],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-36.193,0],[0,0],[0,-36.193],[0,0],[36.193,0],[0,0],[0,36.193]],"o":[[0,-36.193],[0,0],[36.193,0],[0,0],[0,36.193],[0,0],[-36.193,0],[0,0]],"v":[[-114.709,65.579],[-49.131,0],[49.131,0],[114.709,65.579],[114.709,163.84],[49.131,229.419],[-49.131,229.419],[-114.709,163.84]],"c":true}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.912,0],[0,0],[0,-35.912],[0,0],[35.912,0],[0,0],[0,35.912]],"o":[[0,-35.912],[0,0],[35.912,0],[0,0],[0,35.912],[0,0],[-35.912,0],[0,0]],"v":[[-112.544,65.069],[-47.475,0],[47.475,0],[112.544,65.069],[112.544,160.02],[47.475,225.089],[-47.475,225.089],[-112.544,160.02]],"c":true}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.703,0],[0,0],[0,-35.703],[0,0],[35.703,0],[0,0],[0,35.703]],"o":[[0,-35.703],[0,0],[35.703,0],[0,0],[0,35.703],[0,0],[-35.703,0],[0,0]],"v":[[-110.934,64.69],[-46.244,0],[46.244,0],[110.934,64.69],[110.934,157.178],[46.244,221.869],[-46.244,221.869],[-110.934,157.178]],"c":true}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.55,0],[0,0],[0,-35.55],[0,0],[35.55,0],[0,0],[0,35.55]],"o":[[0,-35.55],[0,0],[35.55,0],[0,0],[0,35.55],[0,0],[-35.55,0],[0,0]],"v":[[-109.758,64.414],[-45.344,0],[45.344,0],[109.758,64.414],[109.758,155.102],[45.344,219.516],[-45.344,219.516],[-109.758,155.102]],"c":true}],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.443,0],[0,0],[0,-35.443],[0,0],[35.443,0],[0,0],[0,35.443]],"o":[[0,-35.443],[0,0],[35.443,0],[0,0],[0,35.443],[0,0],[-35.443,0],[0,0]],"v":[[-108.931,64.219],[-44.712,0],[44.712,0],[108.931,64.219],[108.931,153.643],[44.712,217.862],[-44.712,217.862],[-108.931,153.643]],"c":true}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.372,0],[0,0],[0,-35.372],[0,0],[35.372,0],[0,0],[0,35.372]],"o":[[0,-35.372],[0,0],[35.372,0],[0,0],[0,35.372],[0,0],[-35.372,0],[0,0]],"v":[[-108.391,64.092],[-44.299,0],[44.299,0],[108.391,64.092],[108.391,152.691],[44.299,216.783],[-44.299,216.783],[-108.391,152.691]],"c":true}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.334,0],[0,0],[0,-35.334],[0,0],[35.334,0],[0,0],[0,35.334]],"o":[[0,-35.334],[0,0],[35.334,0],[0,0],[0,35.334],[0,0],[-35.334,0],[0,0]],"v":[[-108.093,64.022],[-44.071,0],[44.071,0],[108.093,64.022],[108.093,152.164],[44.071,216.186],[-44.071,216.186],[-108.093,152.164]],"c":true}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.322,0],[0,0],[0,-35.322],[0,0],[35.322,0],[0,0],[0,35.322]],"o":[[0,-35.322],[0,0],[35.322,0],[0,0],[0,35.322],[0,0],[-35.322,0],[0,0]],"v":[[-108,64],[-44,0],[44,0],[108,64],[108,152],[44,216],[-44,216],[-108,152]],"c":true}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.293,0],[0,0],[0,-35.293],[0,0],[35.293,0],[0,0],[0,35.293]],"o":[[0,-35.293],[0,0],[35.293,0],[0,0],[0,35.293],[0,0],[-35.293,0],[0,0]],"v":[[-108.025,63.949],[-44.076,0],[44.076,0],[108.025,63.949],[108.025,152.102],[44.076,216.051],[-44.076,216.051],[-108.025,152.102]],"c":true}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.214,0],[0,0],[0,-35.214],[0,0],[35.214,0],[0,0],[0,35.214]],"o":[[0,-35.214],[0,0],[35.214,0],[0,0],[0,35.214],[0,0],[-35.214,0],[0,0]],"v":[[-108.097,63.806],[-44.292,0],[44.292,0],[108.097,63.806],[108.097,152.389],[44.292,216.194],[-44.292,216.194],[-108.097,152.389]],"c":true}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.092,0],[0,0],[0,-35.092],[0,0],[35.092,0],[0,0],[0,35.092]],"o":[[0,-35.092],[0,0],[35.092,0],[0,0],[0,35.092],[0,0],[-35.092,0],[0,0]],"v":[[-108.208,63.584],[-44.624,0],[44.624,0],[108.208,63.584],[108.208,152.832],[44.624,216.416],[-44.624,216.416],[-108.208,152.832]],"c":true}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.934,0],[0,0],[0,-34.934],[0,0],[34.934,0],[0,0],[0,34.934]],"o":[[0,-34.934],[0,0],[34.934,0],[0,0],[0,34.934],[0,0],[-34.934,0],[0,0]],"v":[[-108.351,63.298],[-45.052,0],[45.052,0],[108.351,63.298],[108.351,153.403],[45.052,216.702],[-45.052,216.702],[-108.351,153.403]],"c":true}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.749,0],[0,0],[0,-34.749],[0,0],[34.749,0],[0,0],[0,34.749]],"o":[[0,-34.749],[0,0],[34.749,0],[0,0],[0,34.749],[0,0],[-34.749,0],[0,0]],"v":[[-108.519,62.963],[-45.556,0],[45.556,0],[108.519,62.963],[108.519,154.074],[45.556,217.037],[-45.556,217.037],[-108.519,154.074]],"c":true}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.545,0],[0,0],[0,-34.545],[0,0],[34.545,0],[0,0],[0,34.545]],"o":[[0,-34.545],[0,0],[34.545,0],[0,0],[0,34.545],[0,0],[-34.545,0],[0,0]],"v":[[-108.704,62.592],[-46.112,0],[46.112,0],[108.704,62.592],[108.704,154.816],[46.112,217.408],[-46.112,217.408],[-108.704,154.816]],"c":true}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.328,0],[0,0],[0,-34.328],[0,0],[34.328,0],[0,0],[0,34.328]],"o":[[0,-34.328],[0,0],[34.328,0],[0,0],[0,34.328],[0,0],[-34.328,0],[0,0]],"v":[[-108.9,62.2],[-46.7,0],[46.7,0],[108.9,62.2],[108.9,155.601],[46.7,217.8],[-46.7,217.8],[-108.9,155.601]],"c":true}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.108,0],[0,0],[0,-34.108],[0,0],[34.108,0],[0,0],[0,34.108]],"o":[[0,-34.108],[0,0],[34.108,0],[0,0],[0,34.108],[0,0],[-34.108,0],[0,0]],"v":[[-109.1,61.8],[-47.3,0],[47.3,0],[109.1,61.8],[109.1,156.399],[47.3,218.2],[-47.3,218.2],[-109.1,156.399]],"c":true}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.891,0],[0,0],[0,-33.891],[0,0],[33.891,0],[0,0],[0,33.891]],"o":[[0,-33.891],[0,0],[33.891,0],[0,0],[0,33.891],[0,0],[-33.891,0],[0,0]],"v":[[-109.296,61.408],[-47.888,0],[47.888,0],[109.296,61.408],[109.296,157.184],[47.888,218.592],[-47.888,218.592],[-109.296,157.184]],"c":true}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.686,0],[0,0],[0,-33.686],[0,0],[33.686,0],[0,0],[0,33.686]],"o":[[0,-33.686],[0,0],[33.686,0],[0,0],[0,33.686],[0,0],[-33.686,0],[0,0]],"v":[[-109.481,61.037],[-48.444,0],[48.444,0],[109.481,61.037],[109.481,157.926],[48.444,218.963],[-48.444,218.963],[-109.481,157.926]],"c":true}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.501,0],[0,0],[0,-33.501],[0,0],[33.501,0],[0,0],[0,33.501]],"o":[[0,-33.501],[0,0],[33.501,0],[0,0],[0,33.501],[0,0],[-33.501,0],[0,0]],"v":[[-109.649,60.702],[-48.948,0],[48.948,0],[109.649,60.702],[109.649,158.597],[48.948,219.298],[-48.948,219.298],[-109.649,158.597]],"c":true}],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.344,0],[0,0],[0,-33.344],[0,0],[33.344,0],[0,0],[0,33.344]],"o":[[0,-33.344],[0,0],[33.344,0],[0,0],[0,33.344],[0,0],[-33.344,0],[0,0]],"v":[[-109.792,60.416],[-49.376,0],[49.376,0],[109.792,60.416],[109.792,159.168],[49.376,219.584],[-49.376,219.584],[-109.792,159.168]],"c":true}],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.221,0],[0,0],[0,-33.221],[0,0],[33.221,0],[0,0],[0,33.221]],"o":[[0,-33.221],[0,0],[33.221,0],[0,0],[0,33.221],[0,0],[-33.221,0],[0,0]],"v":[[-109.903,60.194],[-49.708,0],[49.708,0],[109.903,60.194],[109.903,159.611],[49.708,219.806],[-49.708,219.806],[-109.903,159.611]],"c":true}],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.142,0],[0,0],[0,-33.142],[0,0],[33.142,0],[0,0],[0,33.142]],"o":[[0,-33.142],[0,0],[33.142,0],[0,0],[0,33.142],[0,0],[-33.142,0],[0,0]],"v":[[-109.975,60.051],[-49.924,0],[49.924,0],[109.975,60.051],[109.975,159.898],[49.924,219.949],[-49.924,219.949],[-109.975,159.898]],"c":true}],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.114,0],[0,0],[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114]],"o":[[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114],[0,0],[-33.114,0],[0,0]],"v":[[-110,60],[-50,0],[50,0],[110,60],[110,160],[50,220],[-50,220],[-110,160]],"c":true}],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":59,"op":426,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":7,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.83],"y":[0.83]},"o":{"x":[0.52],"y":[0]},"t":246,"s":[50]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.17],"y":[0.17]},"t":264,"s":[100]},{"t":281,"s":[50]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":378,"s":[-256,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":402,"s":[64,0,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[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,0],[18.976,-48.115],[0,0],[14.69,-5.794],[0,0],[-48.115,-18.977],[0,0],[-5.794,-14.69],[0,0],[-18.977,48.115],[0,0],[-14.69,5.794],[0,0],[48.115,18.976],[0,0],[5.794,14.69]],"o":[[-18.977,-48.115],[0,0],[-5.794,14.69],[0,0],[-48.115,18.976],[0,0],[14.69,5.794],[0,0],[18.976,48.115],[0,0],[5.794,-14.69],[0,0],[48.115,-18.977],[0,0],[-14.69,-5.794],[0,0]],"v":[[53.024,-96.229],[-53.024,-96.229],[-56.162,-88.274],[-88.274,-56.162],[-96.229,-53.024],[-96.229,53.024],[-88.274,56.161],[-56.162,88.273],[-53.024,96.228],[53.024,96.228],[56.161,88.273],[88.273,56.161],[96.228,53.024],[96.228,-53.024],[88.273,-56.162],[56.161,-88.274]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":57,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-45,"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":"Star 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":110,"op":426,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".surfaceOverview","cl":"surfaceOverview","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,350.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[841,701],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.875,0.953,0.686,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.875,0.953,0.686,1],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":426,"st":0,"ct":1,"bm":0}]},{"id":"comp_1","nm":"Part02_Charade_Overview_FO_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Scene Repo","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[635,160.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Size","np":3,"mn":"ADBE Point Control","ix":1,"en":1,"ef":[{"ty":3,"nm":"Point","mn":"ADBE Point Control-0001","ix":1,"v":{"a":0,"k":[100,100],"ix":1}}]}],"ip":0,"op":467,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"Secondary Y Movement","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":-214.5,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":38,"s":[457.209]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":40.334,"s":[464.409]},{"t":52,"s":[457.209]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":467,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"MASTER Y POSITION","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":0,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.426],"y":[0.38]},"o":{"x":[0.48],"y":[0.051]},"t":0,"s":[-97.709]},{"i":{"x":[0.633],"y":[1]},"o":{"x":[0.654],"y":[-0.375]},"t":23,"s":[-103.709]},{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":38,"s":[-92.709]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":44.666,"s":[-50.709]},{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.52],"y":[0]},"t":78,"s":[12.291]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":109,"s":[-7.709]},{"i":{"x":[0.8],"y":[0.764]},"o":{"x":[0.3],"y":[0]},"t":118,"s":[-7.709]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":128,"s":[64.291]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.78],"y":[0]},"t":143,"s":[46.291]},{"i":{"x":[0.8],"y":[0.528]},"o":{"x":[0.3],"y":[0]},"t":145,"s":[46.291]},{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[1]},"t":155,"s":[64.291]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":184,"s":[-7.709]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.52],"y":[0]},"t":195,"s":[-7.709]},{"i":{"x":[0.428],"y":[1]},"o":{"x":[0.681],"y":[0]},"t":235,"s":[-221.709]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":290,"s":[-199.709]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.52],"y":[0]},"t":294,"s":[-199.709]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":334,"s":[-221.709]},{"i":{"x":[0.473],"y":[1.867]},"o":{"x":[0.63],"y":[0]},"t":343,"s":[-221.709]},{"i":{"x":[0.105],"y":[1]},"o":{"x":[0.497],"y":[-0.207]},"t":406,"s":[-157.709]},{"t":466,"s":[62.291]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":467,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":60,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":72,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":84,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":96,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":108,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":162,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":174,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":186,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":198,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":210,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":264,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":276,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":288,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":300,"s":[100]},{"t":312,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-214.5,1078.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":843,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":0,"k":581,"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":0,"k":90,"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":0,"k":90,"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]},{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":2,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":1,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[420.5,1239],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,1239],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491],[-331.5,-581],[331.5,-581],[421.5,-491],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.507,0],[0,0]],"v":[[-421.5,-491],[-331.5,-581],[331.5,-581],[421.5,-491],[421.5,-135],[286.5,0],[-286.5,0],[-421.5,-135]],"c":true}],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":312,"st":-205,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".secondaryOverview","cl":"secondaryOverview","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-144,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-134,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":549,"s":[100]},{"t":555,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.108},"t":426,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":465,"s":[0,-10.9,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":1,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":5,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[0,0],"t":426,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-0.27],"t":427,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-0.737],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-1.391],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-2.194],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-3.049],"t":431,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-3.867],"t":432,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-4.609],"t":433,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-5.269],"t":434,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-5.856],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-6.38],"t":436,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-6.85],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-7.272],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-7.654],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-7.999],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-8.312],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-8.595],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-8.851],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-9.083],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-9.295],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-9.488],"t":446,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-9.662],"t":447,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-9.82],"t":448,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-9.963],"t":449,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.093],"t":450,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.211],"t":451,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.317],"t":452,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.412],"t":453,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.498],"t":454,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.575],"t":455,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.642],"t":456,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.701],"t":457,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.752],"t":458,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.794],"t":459,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.83],"t":460,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.857],"t":461,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.878],"t":462,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.892],"t":463,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":406,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[55.625,-40.25]],"c":false}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":426,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-36.75]],"c":false}]},{"t":465,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.83],"y":[0.83]},"o":{"x":[0.44],"y":[0]},"t":406,"s":[54]},{"t":426,"s":[58]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":18,"s":[90]}],"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":"Right","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[55.625,-40.25]],"c":false}],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[55.461,-40.238]],"c":false}],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[54.979,-40.201]],"c":false}],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[54.191,-40.142]],"c":false}],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[53.112,-40.06]],"c":false}],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[51.754,-39.958]],"c":false}],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[50.13,-39.835]],"c":false}],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[48.251,-39.693]],"c":false}],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[46.13,-39.533]],"c":false}],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[43.779,-39.356]],"c":false}],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[41.212,-39.162]],"c":false}],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[38.443,-38.953]],"c":false}],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[35.488,-38.73]],"c":false}],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[32.365,-38.494]],"c":false}],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[29.095,-38.248]],"c":false}],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[25.705,-37.992]],"c":false}],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[22.232,-37.73]],"c":false}],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[18.728,-37.465]],"c":false}],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[15.275,-37.205]],"c":false}],"t":424,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[12.014,-36.959]],"c":false}],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-36.75]],"c":false}],"t":426,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-36.245]],"c":false}],"t":427,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-35.487]],"c":false}],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-34.479]],"c":false}],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-33.307]],"c":false}],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-32.102]],"c":false}],"t":431,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-30.966]],"c":false}],"t":432,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-29.94]],"c":false}],"t":433,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-29.029]],"c":false}],"t":434,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-28.223]],"c":false}],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-27.508]],"c":false}],"t":436,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-26.872]],"c":false}],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-26.304]],"c":false}],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-25.794]],"c":false}],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-25.335]],"c":false}],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-24.92]],"c":false}],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-24.545]],"c":false}],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-24.205]],"c":false}],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.896]],"c":false}],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.615]],"c":false}],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.36]],"c":false}],"t":446,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.129]],"c":false}],"t":447,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.918]],"c":false}],"t":448,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.728]],"c":false}],"t":449,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.555]],"c":false}],"t":450,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.4]],"c":false}],"t":451,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.26]],"c":false}],"t":452,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.135]],"c":false}],"t":453,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.023]],"c":false}],"t":454,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.924]],"c":false}],"t":455,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.837]],"c":false}],"t":456,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.762]],"c":false}],"t":457,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.697]],"c":false}],"t":458,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.642]],"c":false}],"t":459,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.597]],"c":false}],"t":460,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.561]],"c":false}],"t":461,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.534]],"c":false}],"t":462,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.515]],"c":false}],"t":463,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[54.014],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.056],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.123],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.216],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.333],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.474],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.636],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.819],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.022],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.244],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.483],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.738],"t":418,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.008],"t":419,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.291],"t":420,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.584],"t":421,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.883],"t":422,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.185],"t":423,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.482],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.763],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58],"t":426,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":1,"k":[{"t":-145,"s":[0],"h":1},{"t":18,"s":[100],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","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":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":406,"s":[{"i":[[6.167,-3.179],[-15.352,0],[5.008,2.581]],"o":[[-5.59,2.881],[13.869,0],[-6.167,-3.179]],"v":[[-9.526,-79.571],[0.604,-100.669],[9.867,-79.571]],"c":true}]},{"t":426,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.895,-79.571],[0.709,-100.669],[11.321,-79.571]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.765,"y":0.675},"o":{"x":0.399,"y":0},"t":406,"s":[0,139],"to":[0,0],"ti":[0,0]},{"i":{"x":0.24,"y":1},"o":{"x":0.4,"y":0.441},"t":424,"s":[0,101],"to":[0,0],"ti":[0,0]},{"t":427,"s":[0,93]}],"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":3,"mn":"ADBE Vector Group","hd":false}],"ip":406,"op":467,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".secondaryOverview","cl":"secondaryOverview","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-6,"s":[100]},{"t":5,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.033,-21.75],[-55.984,-40.016]],"c":false}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.198,-21.75],[-50.169,-39.599]],"c":false}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-5.356,-21.75],[-37.325,-38.678]],"c":false}],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.425,-21.75],[-16.892,-37.213]],"c":false}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.467,-21.75],[3.272,-35.766]],"c":false}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[2.584,-21.75],[18.031,-34.708]],"c":false}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.048,-21.75],[28.237,-33.976]],"c":false}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5.064,-21.75],[35.32,-33.468]],"c":false}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5.767,-21.75],[40.22,-33.116]],"c":false}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.241,-21.75],[43.523,-32.88]],"c":false}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.54,-21.75],[45.607,-32.73]],"c":false}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.701,-21.75],[46.73,-32.65]],"c":false}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[47.072,-32.625]],"c":false}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[49.587,-33.707]],"c":false}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[54.144,-35.668]],"c":false}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[57.197,-36.982]],"c":false}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[59.162,-37.828]],"c":false}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[60.549,-38.425]],"c":false}],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[61.581,-38.869]],"c":false}],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[62.369,-39.208]],"c":false}],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[62.978,-39.47]],"c":false}],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[63.45,-39.673]],"c":false}],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[63.811,-39.829]],"c":false}],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.082,-39.945]],"c":false}],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.276,-40.028]],"c":false}],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.405,-40.084]],"c":false}],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.477,-40.115]],"c":false}],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","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":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":195,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}]},{"i":{"x":0.01,"y":1},"o":{"x":0.167,"y":0.167},"t":208,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[47.072,-32.625]],"c":false}]},{"t":223,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.5,-40.125]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":200,"op":221,"st":-6,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".secondaryOverview","cl":"secondaryOverview","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-145,"s":[100]},{"t":-134,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.625,-45.75]],"c":false}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.725,-44.786]],"c":false}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.906,-43.051]],"c":false}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.119,-41.012]],"c":false}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.349,-38.801]],"c":false}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.591,-36.476]],"c":false}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.841,-34.073]],"c":false}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.097,-31.615]],"c":false}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.357,-29.121]],"c":false}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.618,-26.612]],"c":false}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.878,-24.121]],"c":false}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.125,-21.75]],"c":false}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.021,-24.795]],"c":false}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.846,-29.943]],"c":false}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.74,-33.077]],"c":false}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.672,-35.065]],"c":false}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.625,-36.457]],"c":false}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.59,-37.483]],"c":false}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.564,-38.258]],"c":false}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.543,-38.847]],"c":false}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.528,-39.292]],"c":false}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.517,-39.621]],"c":false}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.509,-39.856]],"c":false}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.504,-40.011]],"c":false}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.501,-40.098]],"c":false}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.048]],"c":false}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-39.825]],"c":false}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-39.469]],"c":false}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-38.991]],"c":false}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-38.401]],"c":false}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-37.708]],"c":false}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-36.919]],"c":false}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-36.042]],"c":false}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-35.084]],"c":false}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-34.051]],"c":false}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-32.951]],"c":false}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-31.79]],"c":false}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-30.576]],"c":false}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-29.316]],"c":false}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-28.021]],"c":false}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-26.701]],"c":false}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-25.375]],"c":false}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-24.067]],"c":false}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-22.825]],"c":false}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-21.75]],"c":false}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.38,-24.323]],"c":false}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.199,-28.188]],"c":false}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.031,-31.777]],"c":false}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.898,-34.618]],"c":false}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.795,-36.811]],"c":false}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.716,-38.509]],"c":false}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.654,-39.829]],"c":false}],"t":111,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.606,-40.851]],"c":false}],"t":112,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.57,-41.634]],"c":false}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.542,-42.22]],"c":false}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.523,-42.64]],"c":false}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.51,-42.919]],"c":false}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.502,-43.076]],"c":false}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.5,-43.125]],"c":false}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","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":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.17,"y":0},"t":59,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.625,-45.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":70,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.125,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":84,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0.167},"t":104,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-21.75]],"c":false}]},{"t":118,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.5,-43.125]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","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":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.17,"y":0},"t":59,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.895,10.429],[0.709,-10.669],[11.321,10.429]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":70,"s":[{"i":[[4.884,-3.179],[-12.16,0],[3.966,2.581]],"o":[[-4.427,2.881],[10.985,0],[-4.884,-3.179]],"v":[[-7.577,14.554],[0.447,-6.544],[7.784,14.554]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":84,"s":[{"i":[[5.367,-3.179],[-13.36,0],[4.358,2.581]],"o":[[-4.864,2.881],[12.069,0],[-5.367,-3.179]],"v":[[-8.36,13.429],[0.455,-7.669],[8.517,13.429]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":104,"s":[{"i":[[6.067,-3.179],[-15.103,0],[4.926,2.581]],"o":[[-5.499,2.881],[13.644,0],[-6.067,-3.179]],"v":[[-9.38,13.554],[0.585,-7.544],[9.699,13.554]],"c":true}]},{"t":112,"s":[{"i":[[6.067,-3.179],[-15.103,0],[4.926,2.581]],"o":[[-5.499,2.881],[13.644,0],[-6.067,-3.179]],"v":[[-9.38,13.554],[0.585,-7.544],[9.699,13.554]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-90],"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":"Round Bottom","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":59,"op":112,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".secondaryOverview","cl":"secondaryOverview","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":549,"s":[100]},{"t":555,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":1,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":1,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[420.5,519.522],"t":6,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,519.118],"t":8,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,518.844],"t":9,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,518.523],"t":10,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,518.163],"t":11,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,517.778],"t":12,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,517.383],"t":13,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,516.991],"t":14,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,516.607],"t":15,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,516.236],"t":16,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,515.879],"t":17,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,515.536],"t":18,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,515.206],"t":19,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,514.888],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,514.582],"t":21,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,514.286],"t":22,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,514],"t":23,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,513.634],"t":24,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,513.634],"t":28,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,514.162],"t":29,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,514.995],"t":30,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,516.186],"t":31,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,517.757],"t":32,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,519.623],"t":33,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,521.521],"t":34,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,523.117],"t":35,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,524.218],"t":36,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,524.82],"t":37,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,525],"t":38,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,528.61],"t":39,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,533.334],"t":40,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,537.28],"t":41,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,541.651],"t":42,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,547.952],"t":43,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,557.768],"t":44,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,577.765],"t":45,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,593.252],"t":46,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,601.43],"t":47,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,606.66],"t":48,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,610.434],"t":49,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,613.356],"t":50,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,615.726],"t":51,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,617.709],"t":52,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,619.387],"t":53,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,620.811],"t":54,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,622.032],"t":55,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,623.088],"t":56,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,624.009],"t":57,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,624.815],"t":58,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,625.523],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,626.146],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,626.697],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,627.183],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,627.613],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,627.991],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,628.618],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,629.097],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,629.709],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,629.088],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,628.559],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,627.822],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,626.803],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,625.403],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,623.559],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,621.411],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,619.329],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,617.568],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,616.151],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,615.013],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,614.089],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,613.33],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,612.701],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,612.177],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,611.737],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,611.368],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,610.803],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,610.28],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,610],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,611.695],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,615.856],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,621.656],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,628.633],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,636.494],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,645.028],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,654.063],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,663.43],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,672.906],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,682],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,680.974],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,676.807],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,673],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,670.542],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,668.826],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,667.559],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,666.595],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,665.851],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,665.277],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,664.837],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,664.272],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,664.299],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,665.056],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,666.15],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,667.521],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,669.142],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,671.007],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,673.131],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,675.561],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,678.408],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,682],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,668.505],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,656.072],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,645.381],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,636.799],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,630.238],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,625.333],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,621.679],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,618.94],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,616.868],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,615.285],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,614.066],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,613.121],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,612.386],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,611.812],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,611.365],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,611.016],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,610.539],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,610],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,609.828],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,609.281],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,608.304],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,606.831],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,604.778],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,602.043],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,598.493],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,593.96],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,588.23],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,581.034],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,572.052],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,560.966],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,547.609],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,532.269],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,515.909],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,499.879],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,485.221],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,472.354],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,461.261],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,451.742],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,443.565],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,436.516],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,430.418],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,425.126],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,420.524],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,416.516],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,413.026],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,409.991],"t":223,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,407.358],"t":224,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,405.083],"t":225,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,403.13],"t":226,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,401.466],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,400.066],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,398.906],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,397.965],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,397.225],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,396.672],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,396.292],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,396.645],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,396.977],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,397.177],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,397.402],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,397.656],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,397.94],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,398.258],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,398.613],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,399.008],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,399.448],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,399.938],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,400.483],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,401.089],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,401.76],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,402.504],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,403.322],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,404.216],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,405.181],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,406.206],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,407.271],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,408.349],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,409.409],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,410.422],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,411.368],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,412.234],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,413.016],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,413.716],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,414.338],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,414.888],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,415.372],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,415.798],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,416.171],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,416.497],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,416.78],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,417.025],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,417.414],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,417.79],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,417.463],"t":299,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,417.182],"t":300,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,416.817],"t":301,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,416.351],"t":302,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,415.762],"t":303,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,415.022],"t":304,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,414.099],"t":305,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,412.959],"t":306,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,411.586],"t":307,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,410.009],"t":308,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,408.327],"t":309,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,406.679],"t":310,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,405.172],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,403.85],"t":312,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,402.709],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,401.731],"t":314,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,400.89],"t":315,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,400.165],"t":316,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,399.538],"t":317,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,398.994],"t":318,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,398.521],"t":319,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,398.109],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,397.75],"t":321,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,397.438],"t":322,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,397.168],"t":323,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,396.934],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,396.562],"t":326,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,396.202],"t":329,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,396.428],"t":347,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,396.68],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,396.994],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,397.375],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,397.825],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,398.348],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,398.949],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,399.63],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,400.396],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,401.252],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,402.204],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,403.255],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,404.413],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,405.683],"t":360,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,407.072],"t":361,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,408.586],"t":362,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,410.233],"t":363,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,412.02],"t":364,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,413.953],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,416.041],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,418.29],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,420.705],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,423.29],"t":369,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,426.046],"t":370,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,428.971],"t":371,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,432.055],"t":372,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,435.285],"t":373,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,438.637],"t":374,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,442.076],"t":375,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,445.561],"t":376,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,449.037],"t":377,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,452.446],"t":378,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,455.728],"t":379,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,458.826],"t":380,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,461.69],"t":381,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,464.284],"t":382,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,466.585],"t":383,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,468.581],"t":384,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,470.271],"t":385,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,471.664],"t":386,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,472.771],"t":387,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,473.609],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,474.196],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,474.551],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,474.394],"t":393,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,473.988],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,473.43],"t":395,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,472.73],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,471.901],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,470.953],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,469.894],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,468.733],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,467.478],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,466.135],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,464.71],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,463.21],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,461.638],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,460],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,458.564],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,457.319],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,456.287],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,455.494],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,454.972],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,454.894],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,455.439],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,456.461],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,458.043],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,460.295],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,463.352],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,467.389],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,472.625],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,479.323],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,487.764],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,498.164],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,510.486],"t":424,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,524.241],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,538.508],"t":426,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,552.339],"t":427,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,565.125],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,576.645],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,586.916],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,596.055],"t":431,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,604.201],"t":432,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,611.49],"t":433,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,618.038],"t":434,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,623.944],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,629.291],"t":436,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,634.146],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,638.567],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,642.601],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,646.291],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,649.669],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,652.765],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,655.605],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,658.211],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,660.603],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,662.796],"t":446,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,664.806],"t":447,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,666.646],"t":448,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,668.328],"t":449,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,669.862],"t":450,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,671.259],"t":451,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,672.526],"t":452,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,673.671],"t":453,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,674.701],"t":454,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,675.624],"t":455,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,676.443],"t":456,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,677.166],"t":457,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,677.796],"t":458,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,678.339],"t":459,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,678.798],"t":460,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,679.178],"t":461,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,679.712],"t":463,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":16,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.22,"y":1},"o":{"x":0.18,"y":1},"t":23,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.643,-21.893],[-35.357,-21.893]],"c":false}]},{"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-37]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.52],"y":[0.96]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[48]},{"t":18,"s":[64]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":18,"s":[90]}],"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":"Right","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":1,"k":[{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.22,"y":1},"o":{"x":0.18,"y":1},"t":23,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.643,-21.893],[-35.357,-21.893]],"c":false}]},{"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-7.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.52],"y":[0.96]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[48]},{"t":18,"s":[64]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Left","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":28,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".secondaryOverview","cl":"secondaryOverview","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"t":52,"s":[100],"h":1},{"t":62,"s":[0],"h":1},{"t":112,"s":[100],"h":1},{"t":200,"s":[0],"h":1},{"t":221,"s":[100],"h":1},{"t":408,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,-259.147,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":27,"s":[{"i":[[4.22,-5.198],[6.889,-2.445],[6.141,2.195],[4.414,5.745],[2.09,6.003],[1.842,5.673],[0,0],[-4.629,7.032],[-3.668,2.338],[-9.176,-4.129],[0,0],[-2.537,1.423],[0,0],[-5.764,-2.348],[-3.35,-5.761],[3.559,-9.527],[0,0],[2.211,-5.388]],"o":[[-4.607,5.675],[-6.146,2.181],[-6.823,-2.438],[-3.873,-5.041],[-1.961,-5.633],[-0.673,-2.074],[-3.418,-8.054],[2.391,-3.632],[7.091,-4.519],[0,0],[2.053,0.611],[0,0],[6.766,-3.045],[6.042,2.461],[4.226,7.269],[0,0],[0,0],[-2.542,6.194]],"v":[[26.625,263.759],[9.088,276.927],[-10.477,276.927],[-27.766,263.755],[-34.35,245.857],[-39.92,228.853],[-41.895,222.617],[-38.621,196.593],[-29.625,187.329],[-2.764,182.988],[-0.678,184.077],[3.537,183.327],[5.123,182.613],[23.746,183.97],[38.891,196.367],[42.816,222.402],[40.88,229.024],[34.705,245.369]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":38,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":40,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":49,"s":[{"i":[[0,0],[5.924,-2.615],[6.267,2.766],[3.263,7.561],[2.981,6.909],[0,0],[0,0],[-4.825,8.784],[-3.668,2.709],[-9.176,-4.785],[0,0],[-7.064,3.683],[0,0],[-5.942,-2.295],[-3.35,-6.676],[4.5,-10.429],[0,0],[2.725,-6.315]],"o":[[-3.262,7.56],[-6.266,2.766],[-5.925,-2.615],[0,0],[-2.981,-6.909],[0,0],[-3.988,-9.246],[2.335,-4.251],[7.091,-5.237],[0,0],[7.064,3.683],[0,0],[6.766,-3.528],[6.387,2.466],[4.226,8.423],[0,0],[0,0],[-3.063,7.1]],"v":[[23.515,261.285],[9.088,276.548],[-10.477,276.549],[-24.906,261.285],[-33.85,240.557],[-42.795,219.829],[-48.707,206.127],[-47.871,176.22],[-38.875,165.486],[-13.389,163.498],[-11.803,164.325],[10.412,164.325],[11.998,163.498],[31.496,162.173],[46.641,176.538],[47.316,206.126],[40.88,221.041],[32.705,239.986]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.61,"y":0},"t":57,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":61,"s":[{"i":[[0,0],[5.829,-2.275],[6.166,2.405],[3.21,6.575],[2.933,6.009],[0,0],[0,0],[-4.747,7.639],[-3.609,2.356],[-9.028,-5.782],[0,0],[-6.95,4.451],[0,0],[-5.847,-1.996],[-3.296,-5.806],[4.428,-9.07],[0,0],[2.681,-5.492]],"o":[[-3.21,6.575],[-6.165,2.406],[-5.83,-2.274],[0,0],[-2.933,-6.009],[0,0],[-3.924,-8.041],[2.297,-3.697],[6.977,-4.554],[0,0],[6.95,4.451],[0,0],[6.657,-4.263],[6.284,2.145],[4.158,7.326],[0,0],[0,0],[-3.014,6.174]],"v":[[23.147,263.139],[8.953,276.413],[-10.297,276.414],[-24.493,263.14],[-31.981,245.113],[-39.468,227.086],[-43.871,215.169],[-44.463,189.161],[-35.612,179.825],[-10.537,178.375],[-8.977,179.374],[7.631,179.374],[9.191,178.375],[28.374,176.944],[43.275,189.437],[42.525,215.169],[37.607,228.14],[30.877,244.617]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":67,"s":[{"i":[[0,0],[5.782,-2.283],[6.116,2.414],[3.184,6.6],[2.91,6.031],[0,0],[0,0],[-4.709,7.668],[-3.58,2.365],[-8.956,-2.881],[0,0],[-6.894,2.218],[0,0],[-5.8,-2.003],[-3.269,-5.828],[4.392,-9.104],[0,0],[2.66,-5.513]],"o":[[-3.184,6.599],[-6.116,2.415],[-5.783,-2.283],[0,0],[-2.91,-6.031],[0,0],[-3.893,-8.071],[2.279,-3.711],[6.921,-4.571],[0,0],[6.894,2.218],[0,0],[6.604,-2.124],[6.234,2.153],[4.125,7.353],[0,0],[0,0],[-2.99,6.198]],"v":[[22.966,262.838],[8.886,276.162],[-10.209,276.162],[-24.29,262.838],[-31.064,244.743],[-37.837,226.649],[-41.5,214.688],[-42.792,188.581],[-34.012,179.21],[-9.139,174.179],[-7.591,174.677],[6.267,174.677],[7.814,174.179],[26.844,176.318],[41.625,188.859],[40.176,214.688],[36.003,227.707],[29.98,244.245]],"c":true}]},{"i":{"x":0.48,"y":1},"o":{"x":0.26,"y":1},"t":111,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,1.445],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,1.445],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[22.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-30.85,245.866],[-37.795,227.978],[-42.707,216.152],[-41.871,190.343],[-32.875,181.079],[-7.389,179.363],[-5.803,180.077],[5.412,180.077],[6.998,179.363],[26.496,178.22],[41.641,190.617],[42.316,216.152],[38.88,229.024],[31.705,245.374]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"t":118,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.902,"y":0},"o":{"x":0.3,"y":0},"t":119,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":129,"s":[{"i":[[0,0],[6.002,-2.085],[6.349,2.205],[3.305,6.027],[3.02,5.508],[0,0],[0,0],[-4.888,7.002],[-3.716,2.159],[-9.296,-3.814],[0,0],[-7.157,2.936],[0,0],[-6.02,-1.829],[-3.393,-5.322],[4.559,-8.314],[0,0],[2.761,-5.034]],"o":[[-3.305,6.027],[-6.349,2.205],[-6.003,-2.085],[0,0],[-3.02,-5.508],[0,0],[-4.041,-7.37],[2.366,-3.389],[7.184,-4.175],[0,0],[7.157,2.936],[0,0],[6.855,-2.813],[6.471,1.966],[4.282,6.715],[0,0],[0,0],[-3.104,5.66]],"v":[[23.828,264.941],[9.213,277.109],[-10.609,277.11],[-25.226,264.942],[-34.288,248.418],[-43.349,231.894],[-49.339,220.97],[-48.492,197.13],[-39.379,188.572],[-13.559,186.988],[-11.952,187.647],[10.554,187.647],[12.161,186.988],[31.914,185.931],[47.257,197.383],[47.941,220.97],[41.421,232.86],[33.139,247.963]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.78,"y":0},"t":144,"s":[{"i":[[0,0],[5.924,-2.439],[6.267,2.579],[3.263,7.051],[2.981,6.443],[0,0],[0,0],[-4.825,8.191],[-3.668,2.526],[-9.176,-4.462],[0,0],[-7.064,3.435],[0,0],[-5.942,-2.14],[-3.35,-6.225],[4.5,-9.725],[0,0],[2.725,-5.889]],"o":[[-3.262,7.05],[-6.266,2.58],[-5.925,-2.439],[0,0],[-2.981,-6.443],[0,0],[-3.988,-8.622],[2.335,-3.964],[7.091,-4.884],[0,0],[7.064,3.435],[0,0],[6.766,-3.29],[6.387,2.3],[4.226,7.855],[0,0],[0,0],[-3.063,6.621]],"v":[[23.515,262.501],[9.088,276.734],[-10.477,276.735],[-24.906,262.501],[-33.85,243.171],[-42.795,223.841],[-48.707,211.063],[-47.871,183.174],[-38.875,173.164],[-13.389,171.31],[-11.803,172.081],[10.412,172.081],[11.998,171.31],[31.496,170.074],[46.641,183.471],[47.316,211.063],[40.88,224.972],[32.705,242.639]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.4,"y":0},"t":146,"s":[{"i":[[0,0],[5.924,-2.439],[6.267,2.579],[3.263,7.051],[2.981,6.443],[0,0],[0,0],[-4.825,8.191],[-3.668,2.526],[-9.176,-4.462],[0,0],[-7.064,3.435],[0,0],[-5.942,-2.14],[-3.35,-6.225],[4.5,-9.725],[0,0],[2.725,-5.889]],"o":[[-3.262,7.05],[-6.266,2.58],[-5.925,-2.439],[0,0],[-2.981,-6.443],[0,0],[-3.988,-8.622],[2.335,-3.964],[7.091,-4.884],[0,0],[7.064,3.435],[0,0],[6.766,-3.29],[6.387,2.3],[4.226,7.855],[0,0],[0,0],[-3.063,6.621]],"v":[[23.515,262.501],[9.088,276.734],[-10.477,276.735],[-24.906,262.501],[-33.85,243.171],[-42.795,223.841],[-48.707,211.063],[-47.871,183.174],[-38.875,173.164],[-13.389,171.31],[-11.803,172.081],[10.412,172.081],[11.998,171.31],[31.496,170.074],[46.641,183.471],[47.316,211.063],[40.88,224.972],[32.705,242.639]],"c":true}]},{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.884},"t":156,"s":[{"i":[[0,0],[6.002,-2.085],[6.349,2.205],[3.305,6.027],[3.02,5.508],[0,0],[0,0],[-4.888,7.002],[-3.716,2.159],[-9.296,-3.814],[0,0],[-7.157,2.936],[0,0],[-6.02,-1.829],[-3.393,-5.322],[4.559,-8.314],[0,0],[2.761,-5.034]],"o":[[-3.305,6.027],[-6.349,2.205],[-6.003,-2.085],[0,0],[-3.02,-5.508],[0,0],[-4.041,-7.37],[2.366,-3.389],[7.184,-4.175],[0,0],[7.157,2.936],[0,0],[6.855,-2.813],[6.471,1.966],[4.282,6.715],[0,0],[0,0],[-3.104,5.66]],"v":[[23.828,264.941],[9.213,277.109],[-10.609,277.11],[-25.226,264.942],[-34.288,248.418],[-43.349,231.894],[-49.339,220.97],[-48.492,197.13],[-39.379,188.572],[-13.559,186.988],[-11.952,187.647],[10.554,187.647],[12.161,186.988],[31.914,185.931],[47.257,197.383],[47.941,220.97],[41.421,232.86],[33.139,247.963]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":175,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":195,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"t":200,"s":[{"i":[[0,0],[4.982,-1.843],[5.269,1.949],[2.743,5.327],[2.507,4.868],[0,0],[0,0],[-4.057,6.188],[-3.084,1.909],[-7.716,-3.371],[0,0],[-5.94,2.595],[0,0],[-4.997,-1.617],[-2.817,-4.703],[3.784,-7.348],[0,0],[2.291,-4.449]],"o":[[-2.743,5.326],[-5.269,1.949],[-4.982,-1.842],[0,0],[-2.507,-4.868],[0,0],[-3.354,-6.514],[1.963,-2.995],[5.963,-3.69],[0,0],[5.94,2.595],[0,0],[5.69,-2.486],[5.371,1.738],[3.554,5.935],[0,0],[0,0],[-2.576,5.002]],"v":[[21.328,266.623],[7.572,277.365],[-8.88,277.366],[-21.013,266.612],[-30.158,252.046],[-38.929,237.463],[-42.276,232.155],[-38.901,208.3],[-31.337,200.737],[-7.657,199.329],[-6.324,199.912],[6.078,199.877],[7.412,199.294],[26.437,198.157],[39.172,208.278],[42.466,230.78],[38.179,240.068],[31.18,251.666]],"c":true}],"h":1},{"i":{"x":0.8,"y":1},"o":{"x":0.167,"y":0.167},"t":221,"s":[{"i":[[0,0],[-6.469,2.54],[-6.843,-2.686],[-3.562,-7.344],[-2.238,-6.985],[0,0],[0,0],[6.26,-8],[4.298,-2.248],[9.409,5.544],[0,0],[2.81,-1.732],[0,0],[6.751,1.517],[4.533,6.044],[-3.466,10.58],[0,0],[-1.94,6.445]],"o":[[3.562,-7.343],[6.843,-2.687],[6.47,2.54],[0,0],[2.25,7.021],[0,0],[3.257,9.331],[-3.029,3.872],[-8.309,4.346],[0,0],[-2.38,-1.461],[0,0],[-6.856,4.193],[-7.256,-1.631],[-5.72,-7.626],[0,0],[0,0],[2.154,-7.155]],"v":[[-25.972,255.773],[-10.844,240.983],[10.52,240.983],[26.276,255.808],[31.363,274.998],[37.793,295.9],[41.622,309.746],[42.615,338.568],[31.6,348.034],[3.818,347.339],[2.192,346.381],[-2.497,346.652],[-4.104,347.635],[-23.931,350.481],[-42.288,338.404],[-42.272,310.024],[-38.575,296.317],[-32.279,277.471]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":225,"s":[{"i":[[0,0],[-6.469,2.54],[-6.843,-2.686],[-3.562,-7.344],[-2.238,-6.985],[0,0],[0,0],[6.26,-8],[4.298,-2.248],[9.409,5.544],[0,0],[2.81,-1.732],[0,0],[6.751,1.517],[4.533,6.044],[-3.466,10.58],[0,0],[-1.94,6.445]],"o":[[3.562,-7.343],[6.843,-2.687],[6.47,2.54],[0,0],[2.25,7.021],[0,0],[3.257,9.331],[-3.029,3.872],[-8.309,4.346],[0,0],[-2.38,-1.461],[0,0],[-6.856,4.193],[-7.256,-1.631],[-5.72,-7.626],[0,0],[0,0],[2.154,-7.155]],"v":[[-25.972,255.773],[-10.844,240.983],[10.52,240.983],[26.276,255.808],[31.363,274.998],[37.793,295.9],[41.622,309.746],[42.615,338.568],[31.6,348.034],[3.818,347.339],[2.192,346.381],[-2.497,346.652],[-4.104,347.635],[-23.931,350.481],[-42.288,338.404],[-42.272,310.024],[-38.575,296.317],[-32.279,277.471]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":230,"s":[{"i":[[0,0],[-6.469,2.537],[-6.843,-2.683],[-3.562,-7.334],[-3.256,-6.702],[0,0],[0,0],[5.268,-8.52],[4.005,-2.628],[10.02,4.641],[0,0],[7.713,-3.573],[0,0],[6.489,2.226],[3.658,6.475],[-4.914,10.116],[0,0],[-2.976,6.126]],"o":[[3.562,-7.333],[6.843,-2.683],[6.47,2.537],[0,0],[3.256,6.702],[0,0],[4.355,8.968],[-2.55,4.123],[-7.743,5.08],[0,0],[-7.714,-3.573],[0,0],[-7.388,3.422],[-6.974,-2.392],[-4.615,-8.17],[0,0],[0,0],[3.345,-6.886]],"v":[[-26.597,256.303],[-10.844,241.499],[10.52,241.498],[26.276,256.303],[36.042,276.409],[45.809,296.515],[52.265,309.806],[51.352,338.814],[41.529,349.227],[13.7,351.155],[11.968,350.353],[-12.29,350.353],[-14.021,351.155],[-35.312,352.44],[-51.849,338.506],[-52.586,309.806],[-45.559,295.339],[-36.632,276.963]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":235,"s":[{"i":[[0,0],[-6.469,2.527],[-6.843,-2.672],[-3.562,-7.305],[-2.238,-6.948],[0,0],[0,0],[6.26,-7.958],[4.298,-2.236],[9.409,5.515],[0,0],[2.81,-1.723],[0,0],[6.751,1.509],[4.533,6.012],[-3.466,10.525],[0,0],[-1.94,6.411]],"o":[[3.562,-7.305],[6.843,-2.673],[6.47,2.527],[0,0],[2.25,6.984],[0,0],[3.257,9.283],[-3.029,3.851],[-8.309,4.323],[0,0],[-2.38,-1.454],[0,0],[-6.856,4.171],[-7.256,-1.622],[-5.72,-7.586],[0,0],[0,0],[2.154,-7.118]],"v":[[-25.972,256.282],[-10.844,241.57],[10.52,241.569],[26.276,256.317],[31.363,275.406],[37.793,296.199],[41.622,309.972],[42.615,338.644],[31.6,348.06],[3.818,347.368],[2.192,346.415],[-2.497,346.685],[-4.104,347.662],[-23.931,350.493],[-42.288,338.48],[-42.272,310.249],[-38.575,296.613],[-32.279,277.866]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":240,"s":[{"i":[[0,0],[-6.469,2.537],[-6.843,-2.683],[-3.562,-7.334],[-3.256,-6.702],[0,0],[0,0],[5.268,-8.52],[4.005,-2.628],[10.02,4.641],[0,0],[7.713,-3.573],[0,0],[6.489,2.226],[3.658,6.475],[-4.914,10.116],[0,0],[-2.976,6.126]],"o":[[3.562,-7.333],[6.843,-2.683],[6.47,2.537],[0,0],[3.256,6.702],[0,0],[4.355,8.968],[-2.55,4.123],[-7.743,5.08],[0,0],[-7.714,-3.573],[0,0],[-7.388,3.422],[-6.974,-2.392],[-4.615,-8.17],[0,0],[0,0],[3.345,-6.886]],"v":[[-26.597,256.303],[-10.844,241.499],[10.52,241.498],[26.276,256.303],[36.042,276.409],[45.809,296.515],[52.265,309.806],[51.352,338.814],[41.529,349.227],[13.7,351.155],[11.968,350.353],[-12.29,350.353],[-14.021,351.155],[-35.312,352.44],[-51.849,338.506],[-52.586,309.806],[-45.559,295.339],[-36.632,276.963]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.17,"y":0},"t":250,"s":[{"i":[[0,0],[-6.469,2.528],[-6.843,-2.674],[-3.562,-7.309],[-2.238,-6.951],[0,0],[0,0],[6.26,-7.962],[4.298,-2.237],[9.409,5.517],[0,0],[2.81,-1.724],[0,0],[6.751,1.51],[4.533,6.015],[-3.466,10.53],[0,0],[-1.94,6.414]],"o":[[3.562,-7.308],[6.843,-2.674],[6.47,2.528],[0,0],[2.25,6.988],[0,0],[3.257,9.287],[-3.029,3.853],[-8.309,4.325],[0,0],[-2.38,-1.454],[0,0],[-6.856,4.173],[-7.256,-1.623],[-5.72,-7.59],[0,0],[0,0],[2.154,-7.121]],"v":[[-25.972,256.238],[-10.844,241.519],[10.52,241.518],[26.276,256.273],[31.363,275.37],[37.793,296.172],[41.622,309.952],[42.615,338.637],[31.6,348.057],[3.818,347.366],[2.192,346.412],[-2.497,346.682],[-4.104,347.66],[-23.931,350.492],[-42.288,338.473],[-42.272,310.229],[-38.575,296.587],[-32.279,277.831]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.5,"y":0},"t":296,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[32.971,273.182],[41.915,291.071],[47.827,302.896],[46.991,328.705],[37.996,337.969],[12.509,339.685],[10.924,338.971],[-11.292,338.971],[-12.878,339.685],[-32.376,340.828],[-47.521,328.431],[-48.196,302.896],[-41.76,290.025],[-33.585,273.675]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.5,"y":0},"t":313,"s":[{"i":[[0,0],[-5.924,2.351],[-6.267,-2.486],[-3.263,-6.797],[-2.981,-6.211],[0,0],[0,0],[4.825,-7.896],[3.668,-2.435],[9.176,4.301],[0,0],[7.064,-3.311],[0,0],[5.942,2.063],[3.35,6.001],[-4.5,9.375],[0,0],[-2.725,5.677]],"o":[[3.262,-6.796],[6.266,-2.487],[5.925,2.351],[0,0],[2.981,6.211],[0,0],[3.988,8.311],[-2.335,3.821],[-7.091,4.707],[0,0],[-7.064,-3.311],[0,0],[-6.766,3.172],[-6.387,-2.217],[-4.226,-7.572],[0,0],[0,0],[3.063,-6.382]],"v":[[-24.394,255.941],[-9.968,242.221],[9.597,242.22],[24.026,255.941],[32.971,274.574],[41.915,294.249],[47.827,306.566],[46.991,333.45],[37.996,343.1],[12.509,344.887],[10.924,344.143],[-11.292,344.143],[-12.878,344.887],[-32.376,346.078],[-47.521,333.164],[-48.196,306.566],[-41.76,293.159],[-33.585,275.087]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.5,"y":0},"t":318,"s":[{"i":[[0,0],[-5.924,2.351],[-6.267,-2.486],[-3.263,-6.797],[-2.981,-6.211],[0,0],[0,0],[4.825,-7.896],[3.668,-2.435],[9.176,4.301],[0,0],[7.064,-3.311],[0,0],[5.942,2.063],[3.35,6.001],[-4.5,9.375],[0,0],[-2.725,5.677]],"o":[[3.262,-6.796],[6.266,-2.487],[5.925,2.351],[0,0],[2.981,6.211],[0,0],[3.988,8.311],[-2.335,3.821],[-7.091,4.707],[0,0],[-7.064,-3.311],[0,0],[-6.766,3.172],[-6.387,-2.217],[-4.226,-7.572],[0,0],[0,0],[3.063,-6.382]],"v":[[-24.394,255.941],[-9.968,242.221],[9.597,242.22],[24.026,255.941],[30.971,274.574],[38.915,294.249],[43.827,306.566],[42.991,333.45],[33.996,343.1],[8.509,344.887],[6.924,344.143],[-7.292,344.143],[-8.878,344.887],[-28.376,346.078],[-43.521,333.164],[-44.196,306.566],[-38.76,293.159],[-31.585,275.087]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.5,"y":0},"t":323,"s":[{"i":[[0,0],[-6.37,2.351],[-6.738,-2.486],[-3.508,-6.797],[-3.206,-6.211],[0,0],[0,0],[5.188,-7.896],[3.944,-2.435],[9.867,4.301],[0,0],[7.596,-3.311],[0,0],[6.39,2.063],[3.602,6.001],[-4.839,9.375],[0,0],[-2.93,5.677]],"o":[[3.508,-6.796],[6.738,-2.487],[6.371,2.351],[0,0],[3.206,6.211],[0,0],[4.289,8.311],[-2.511,3.821],[-7.625,4.707],[0,0],[-7.596,-3.311],[0,0],[-7.276,3.172],[-6.868,-2.217],[-4.545,-7.572],[0,0],[0,0],[3.294,-6.382]],"v":[[-26.198,255.941],[-10.685,242.221],[10.353,242.22],[25.868,255.941],[35.486,274.574],[45.103,294.249],[51.461,306.566],[50.562,333.45],[40.889,343.1],[13.484,344.887],[11.779,344.143],[-12.109,344.143],[-13.814,344.887],[-34.78,346.078],[-51.065,333.164],[-51.791,306.566],[-44.871,293.159],[-36.08,275.087]],"c":true}]},{"i":{"x":0.58,"y":1},"o":{"x":0.42,"y":0},"t":328,"s":[{"i":[[0,0],[-5.924,2.351],[-6.267,-2.486],[-3.263,-6.797],[-2.981,-6.211],[0,0],[0,0],[4.825,-7.896],[3.668,-2.435],[9.176,4.301],[0,0],[7.064,-3.311],[0,0],[5.942,2.063],[3.35,6.001],[-4.5,9.375],[0,0],[-2.725,5.677]],"o":[[3.262,-6.796],[6.266,-2.487],[5.925,2.351],[0,0],[2.981,6.211],[0,0],[3.988,8.311],[-2.335,3.821],[-7.091,4.707],[0,0],[-7.064,-3.311],[0,0],[-6.766,3.172],[-6.387,-2.217],[-4.226,-7.572],[0,0],[0,0],[3.063,-6.382]],"v":[[-24.394,255.941],[-9.968,242.221],[9.597,242.22],[24.026,255.941],[30.971,274.574],[38.915,294.249],[43.827,306.566],[42.991,333.45],[33.996,343.1],[8.509,344.887],[6.924,344.143],[-7.292,344.143],[-8.878,344.887],[-28.376,346.078],[-43.521,333.164],[-44.196,306.566],[-38.76,293.159],[-31.585,275.087]],"c":true}]},{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":343,"s":[{"i":[[0,0],[-5.924,2.351],[-6.267,-2.486],[-3.263,-6.797],[-2.981,-6.211],[0,0],[0,0],[4.825,-7.896],[3.668,-2.435],[9.176,4.301],[0,0],[7.064,-3.311],[0,0],[5.942,2.063],[3.35,6.001],[-4.5,9.375],[0,0],[-2.725,5.677]],"o":[[3.262,-6.796],[6.266,-2.487],[5.925,2.351],[0,0],[2.981,6.211],[0,0],[3.988,8.311],[-2.335,3.821],[-7.091,4.707],[0,0],[-7.064,-3.311],[0,0],[-6.766,3.172],[-6.387,-2.217],[-4.226,-7.572],[0,0],[0,0],[3.063,-6.382]],"v":[[-24.394,255.941],[-9.968,242.221],[9.597,242.22],[24.026,255.941],[32.971,274.574],[41.915,294.249],[47.827,306.566],[46.991,333.45],[37.996,343.1],[12.509,344.887],[10.924,344.143],[-11.292,344.143],[-12.878,344.887],[-32.376,346.078],[-47.521,333.164],[-48.196,306.566],[-41.76,293.159],[-33.585,275.087]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.5,"y":0},"t":370,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[32.971,273.182],[41.915,291.071],[47.827,302.896],[46.991,328.705],[37.996,337.969],[12.509,339.685],[10.924,338.971],[-11.292,338.971],[-12.878,339.685],[-32.376,340.828],[-47.521,328.431],[-48.196,302.896],[-41.76,290.025],[-33.585,273.675]],"c":true}]},{"i":{"x":0.59,"y":1},"o":{"x":0.5,"y":0},"t":389,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[32.971,273.182],[41.915,291.071],[47.827,302.896],[46.991,328.705],[37.996,337.969],[12.509,339.685],[10.924,338.971],[-11.292,338.971],[-12.878,339.685],[-32.376,340.828],[-47.521,328.431],[-48.196,302.896],[-41.76,290.025],[-33.585,273.675]],"c":true}]},{"t":406,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[30.971,273.182],[38.915,291.071],[43.202,302.895],[42.366,328.704],[33.371,337.968],[7.884,339.684],[6.299,338.97],[-6.167,338.97],[-7.753,339.684],[-27.251,340.827],[-42.396,328.43],[-43.071,302.895],[-38.76,290.025],[-31.585,273.675]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"animated arrow","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":27,"op":408,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".surfaceOverview","cl":"surfaceOverview","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,350.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[841,701],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.875,0.953,0.686,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.875,0.953,0.686,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":467,"st":-145,"ct":1,"bm":0}]},{"id":"comp_2","nm":"Part03_Demonstration_Overview_FO_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[635,255.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Size","np":3,"mn":"ADBE Point Control","ix":1,"en":1,"ef":[{"ty":3,"nm":"Point","mn":"ADBE Point Control-0001","ix":1,"v":{"a":0,"k":[100,100],"ix":1}}]}],"ip":0,"op":445,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Reset to Center","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":292,"s":[-98.901]},{"t":362,"s":[-324.901]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":292,"s":[407.5]},{"t":372,"s":[298.5]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":426,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":3,"nm":"OVERSHOOT CHARACTER","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":227,"s":[-32.599]},{"t":329,"s":[67.401]}],"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":426,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".secondaryOverview","cl":"secondaryOverview","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-609,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-599,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":398,"s":[100]},{"t":404,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":130,"s":[-83]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":197,"s":[-298]},{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":227,"s":[-298]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":237.666,"s":[-161.6]},{"t":291,"s":[43]}],"ix":3},"y":{"k":[{"s":[15],"t":53,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.634],"t":54,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.459],"t":55,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[11.342],"t":56,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[8.117],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.584],"t":58,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-2.5],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-10.417],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-20.475],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-32.954],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-65.451],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-84.709],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-104.794],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-124.659],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-143.507],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-160.907],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-176.724],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-190.994],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-203.834],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-215.387],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-225.794],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-235.185],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-243.675],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-251.363],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-258.334],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-264.663],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-270.412],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-275.637],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-280.384],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-284.695],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-288.607],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-292.152],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-295.356],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-298.246],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-300.843],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-303.168],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-305.238],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-307.069],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-308.676],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-310.073],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-311.27],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-312.279],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.111],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.774],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.277],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.627],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.622],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.261],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.739],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.043],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-312.163],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-311.083],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-309.789],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-308.263],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-306.486],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-304.435],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-302.087],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-299.414],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-296.384],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-292.963],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-289.11],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-284.78],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-279.922],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-274.481],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-268.395],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-261.601],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-254.035],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-245.641],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-236.382],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-226.259],"t":165,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-215.328],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-203.721],"t":167,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-191.658],"t":168,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-179.422],"t":169,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-167.325],"t":170,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-155.649],"t":171,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-144.609],"t":172,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.337],"t":173,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-124.891],"t":174,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-116.273],"t":175,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-108.451],"t":176,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-101.373],"t":177,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-94.982],"t":178,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-89.217],"t":179,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-84.021],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-79.341],"t":181,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-75.129],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-71.342],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-67.941],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-64.893],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-62.168],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-59.738],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-57.58],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.673],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-53.998],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.538],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.278],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-50.204],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.305],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.567],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.983],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.542],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.236],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.058],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.046],"t":294,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.082],"t":295,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.128],"t":296,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.183],"t":297,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.248],"t":298,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.323],"t":299,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.407],"t":300,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.5],"t":301,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.602],"t":302,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.713],"t":303,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.833],"t":304,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.961],"t":305,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.098],"t":306,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.244],"t":307,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.398],"t":308,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.56],"t":309,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.73],"t":310,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.908],"t":311,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.094],"t":312,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.288],"t":313,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.489],"t":314,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.698],"t":315,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.914],"t":316,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-50.137],"t":317,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-50.367],"t":318,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-50.605],"t":319,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-50.849],"t":320,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.101],"t":321,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.359],"t":322,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.623],"t":323,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.894],"t":324,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.171],"t":325,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.455],"t":326,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.745],"t":327,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-53.04],"t":328,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-53.342],"t":329,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-53.65],"t":330,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-53.963],"t":331,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-54.281],"t":332,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-54.606],"t":333,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-54.935],"t":334,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.27],"t":335,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.61],"t":336,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.955],"t":337,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-56.304],"t":338,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-56.659],"t":339,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-57.018],"t":340,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-57.382],"t":341,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-57.75],"t":342,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-58.122],"t":343,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-58.499],"t":344,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-58.879],"t":345,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-59.263],"t":346,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-59.651],"t":347,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-60.043],"t":348,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-60.438],"t":349,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-60.836],"t":350,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-61.237],"t":351,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-61.642],"t":352,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-62.049],"t":353,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-62.459],"t":354,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-62.871],"t":355,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-63.286],"t":356,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-63.702],"t":357,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-64.121],"t":358,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-64.541],"t":359,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-64.963],"t":360,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-65.386],"t":361,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-65.81],"t":362,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-66.234],"t":363,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-67.936],"t":367,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-68.36],"t":368,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-68.783],"t":369,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-69.205],"t":370,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-69.626],"t":371,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-70.044],"t":372,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-70.459],"t":373,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-70.871],"t":374,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-71.28],"t":375,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-71.684],"t":376,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-72.083],"t":377,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-72.477],"t":378,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-72.865],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-73.245],"t":380,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-73.617],"t":381,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-73.98],"t":382,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-74.333],"t":383,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-74.674],"t":384,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-75.002],"t":385,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-75.316],"t":386,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-75.612],"t":387,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-75.89],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.147],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.378],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.581],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.751],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.883],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.969],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.913],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.843],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.753],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.639],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.503],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.343],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.158],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-75.947],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-75.71],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-75.444],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-75.149],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-74.824],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-74.466],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-74.076],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-73.651],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-73.189],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-72.689],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-72.148],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-71.566],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-70.938],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-70.264],"t":418,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-69.54],"t":419,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-68.763],"t":420,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-67.931],"t":421,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-67.039],"t":422,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-66.085],"t":423,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-65.064],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-63.971],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-62.802],"t":426,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-61.552],"t":427,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-60.214],"t":428,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-58.782],"t":429,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-57.249],"t":430,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.608],"t":431,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-53.85],"t":432,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.967],"t":433,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.95],"t":434,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.788],"t":435,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.473],"t":436,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-42.996],"t":437,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-40.352],"t":438,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-37.536],"t":439,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-34.552],"t":440,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-31.41],"t":441,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-28.132],"t":442,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-24.753],"t":443,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.322],"t":444,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue Y Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":0,"k":0,"ix":1}}]},{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":2,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":1,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[420.5,677.634],"t":54,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,676.459],"t":55,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,674.342],"t":56,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,671.117],"t":57,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,666.584],"t":58,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,660.5],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,652.583],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,642.525],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,630.046],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,615],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,597.549],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,578.291],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,558.206],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,538.341],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,519.493],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,502.093],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,486.276],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,472.006],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,459.166],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,447.613],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,437.206],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,427.815],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,419.325],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,411.637],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,404.666],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,398.337],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,392.588],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,387.363],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,382.616],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,378.305],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,374.393],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,370.848],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,367.644],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,364.754],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,362.157],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,359.832],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,357.762],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,355.931],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,354.324],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,352.927],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,351.73],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,350.721],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,349.889],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,349.226],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,348.723],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,348.373],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.133,348.1],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[419.669,348.1],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[419.013,348.1],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[418.163,348.1],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[417.114,348.1],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[415.863,348.1],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[414.409,348.1],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[412.748,348.1],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[410.879,348.1],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[408.799,348.168],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[406.508,348.378],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[404.004,348.739],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[401.288,349.261],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[398.36,349.957],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[395.221,350.837],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[391.874,351.917],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[388.321,353.211],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[384.567,354.737],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[380.616,356.514],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[376.474,358.565],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[372.149,360.913],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[367.65,363.586],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[362.985,366.616],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[358.167,370.037],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[353.206,373.89],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[348.118,378.22],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[342.915,383.078],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[337.614,388.519],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[332.23,394.605],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[326.783,401.399],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[321.288,408.965],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[315.766,417.359],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[310.234,426.618],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[304.712,436.741],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[299.217,447.672],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[293.77,459.279],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[288.386,471.342],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[283.085,483.578],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[277.882,495.675],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[272.794,507.351],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[267.833,518.391],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[263.015,528.663],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[258.35,538.109],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[253.851,546.727],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[249.526,554.549],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[245.384,561.627],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[241.433,568.018],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[237.679,573.783],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[234.126,578.979],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[230.779,583.659],"t":181,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[227.64,587.871],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[224.712,591.658],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[221.996,595.059],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[219.492,598.107],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[217.201,600.832],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[215.121,603.262],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[213.252,605.42],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[211.591,607.327],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[210.137,609.002],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[208.886,610.462],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[207.837,611.722],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206.987,612.796],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206.331,613.695],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[205.867,614.433],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[205.591,615.017],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[205.5,615.458],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[205.5,616],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206.171,616],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[208.21,616],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[211.716,616],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[216.86,616],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[223.901,616],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[233.221,616],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[245.395,616],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[261.349,616],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[282.737,616],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[313.093,616],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[360.267,616],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[401.508,616],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[428.222,616],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[446.678,616],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[460.467,616],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[471.36,616],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[480.308,616],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[487.871,616],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[494.405,616],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[500.148,616],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[505.268,616],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[509.887,616],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[514.098,616],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[517.974,616],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[521.57,616],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[524.933,616],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[528.101,616],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[531.107,616],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[533.977,616],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[536.736,616],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[539.405,616],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[542.002,616],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[544.546,616],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[547.051,616],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[549.533,616],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[552.005,616],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[554.483,616],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[556.977,616],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[559.501,616],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[562.066,616],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[564.684,616],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[567.365,616],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[570.118,616],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[572.948,616],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[575.86,616],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[578.854,616],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[581.924,616],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[585.061,616],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[588.246,616],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[594.665,616],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[597.841,616],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[600.954,616],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[603.975,616],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[606.88,616],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[609.653,616],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[612.28,616],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[614.755,616],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[617.076,616],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[619.245,616],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[621.266,616],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[623.144,616],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[624.885,616],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[626.498,616],"t":291,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[627.998,615.995],"t":292,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[629.313,615.966],"t":293,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[630.359,615.9],"t":294,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[631.139,615.795],"t":295,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[631.655,615.651],"t":296,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[631.903,615.237],"t":298,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[631.639,614.965],"t":299,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[631.118,614.647],"t":300,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[630.342,614.282],"t":301,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[629.312,613.867],"t":302,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[628.029,613.401],"t":303,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[626.496,612.88],"t":304,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[624.713,612.303],"t":305,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[622.683,611.666],"t":306,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[620.409,610.967],"t":307,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[617.893,610.201],"t":308,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[615.139,609.366],"t":309,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[612.15,608.456],"t":310,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[608.932,607.468],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[605.49,606.395],"t":312,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[601.83,605.233],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[597.959,603.975],"t":314,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[593.885,602.614],"t":315,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[589.618,601.142],"t":316,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[585.167,599.55],"t":317,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[580.544,597.828],"t":318,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[575.76,595.966],"t":319,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[570.829,593.952],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[565.765,591.772],"t":321,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[560.582,589.413],"t":322,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[555.297,586.861],"t":323,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[549.926,584.101],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[544.486,581.12],"t":325,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[538.995,577.906],"t":326,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[533.47,574.455],"t":327,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[527.929,570.769],"t":328,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[522.39,566.863],"t":329,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[516.878,562.768],"t":330,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[511.418,558.532],"t":331,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[506.025,554.219],"t":332,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[500.716,549.899],"t":333,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[495.506,545.647],"t":334,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[490.408,541.525],"t":335,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[485.436,537.581],"t":336,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[480.602,533.846],"t":337,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[475.917,530.335],"t":338,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[471.391,527.05],"t":339,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[467.033,523.987],"t":340,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[462.851,521.134],"t":341,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[458.853,518.478],"t":342,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[455.042,516.005],"t":343,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[451.425,513.7],"t":344,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[448.006,511.55],"t":345,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[444.786,509.541],"t":346,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[441.769,507.662],"t":347,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[438.955,505.902],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[436.346,504.25],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[433.942,502.7],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[431.741,501.241],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[429.744,499.869],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[427.949,498.575],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[426.354,497.355],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[424.957,496.203],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[423.756,495.115],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[422.748,494.087],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[421.93,493.115],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[421.299,492.195],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.853,491.325],"t":360,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.588,490.501],"t":361,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,489.722],"t":362,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,488.984],"t":363,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,488.287],"t":364,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,487.627],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,487.004],"t":366,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,486.416],"t":367,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,485.862],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,485.339],"t":369,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,484.848],"t":370,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,484.388],"t":371,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,483.956],"t":372,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,483.541],"t":373,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,483.129],"t":374,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,482.72],"t":375,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,482.316],"t":376,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,481.917],"t":377,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,481.523],"t":378,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,481.135],"t":379,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,480.755],"t":380,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,480.383],"t":381,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,480.02],"t":382,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,479.667],"t":383,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,479.326],"t":384,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,478.998],"t":385,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,478.684],"t":386,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,478.388],"t":387,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,478.11],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,477.853],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,477.419],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,477.842],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,478.29],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,478.556],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,478.851],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,479.176],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,479.534],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,479.924],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,480.349],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,480.811],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,481.311],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,481.852],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,482.434],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,483.062],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,483.736],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,484.46],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,485.237],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,486.069],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,486.961],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,487.915],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,488.936],"t":424,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,490.029],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,491.198],"t":426,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,492.448],"t":427,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,493.786],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,495.218],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,496.751],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,498.392],"t":431,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,500.15],"t":432,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,502.033],"t":433,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,504.05],"t":434,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,506.212],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,508.527],"t":436,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,511.004],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,513.648],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,516.464],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,519.448],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,522.59],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,525.868],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,529.247],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,532.678],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.42,"y":0},"t":24,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,23.5],[21.75,-21.75],[21.75,-66.5]],"c":false}]},{"i":{"x":0.65,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.35,"y":0},"t":53,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.35,"y":0},"t":70,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":140,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":197,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":227,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":244,"s":[{"i":[[0,0],[-20.373,0],[-4.174,-10]],"o":[[4.292,-10],[20.228,0],[0,0]],"v":[[-11.25,18.5],[22,-21.5],[54.75,18.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.42,"y":0},"t":291,"s":[{"i":[[0,0],[-17.75,0],[-10.841,0]],"o":[[11.833,0],[17.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":432,"s":[{"i":[[0,0],[0,17.75],[0,10.841]],"o":[[0,-11.833],[0,-17.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"t":482,"s":[{"i":[[0,0],[0,17.75],[0,10.841]],"o":[[0,-11.833],[0,-17.583],[0,0]],"v":[[21.75,44.5],[21.75,-21.75],[21.75,-88.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":444,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":111,"s":[27]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":130,"s":[58]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":197,"s":[58]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":218,"s":[40]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":247,"s":[40]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[54]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":368,"s":[54]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":388,"s":[40]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":390,"s":[40]},{"t":405,"s":[52]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":127,"s":[49.5]},{"i":{"x":[0.32],"y":[1]},"o":{"x":[0.82],"y":[0]},"t":197,"s":[49.5]},{"t":222,"s":[30],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":247,"s":[30]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[49.75]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":432,"s":[49.75]},{"t":482,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":127,"s":[50.5]},{"i":{"x":[0.32],"y":[1]},"o":{"x":[0.82],"y":[0]},"t":197,"s":[50.5]},{"t":222,"s":[70],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":247,"s":[70]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[50.25]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":432,"s":[50.25]},{"t":482,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-465,"s":[0]},{"t":-447,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":222,"s":[{"i":[[3.179,6.167],[0,-15.352],[-2.581,5.008]],"o":[[-2.881,-5.59],[0,13.869],[3.179,-6.167]],"v":[[-10.45,-10.166],[10.648,-0.036],[-10.45,9.228]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":237,"s":[{"i":[[3.179,8.221],[0,-20.465],[-2.581,6.675]],"o":[[-2.881,-7.451],[0,18.488],[3.179,-8.221]],"v":[[-25.45,-13.344],[-4.352,0.16],[-25.45,12.509]],"c":true}]},{"t":263,"s":[{"i":[[3.179,6.167],[0,-15.352],[-2.581,5.008]],"o":[[-2.881,-5.59],[0,13.869],[3.179,-6.167]],"v":[[-11.7,-10.166],[9.398,-0.036],[-11.7,9.228]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":444,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":1,"k":[{"t":212,"s":[0],"h":1},{"t":222,"s":[100],"h":1},{"t":247,"s":[0],"h":1}],"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":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":445,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"App 3 Matte","parent":13,"td":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":245,"s":[50]},{"i":{"x":[0.833],"y":[0.619]},"o":{"x":[0.167],"y":[0]},"t":329,"s":[100]},{"i":{"x":[0.82],"y":[0]},"o":{"x":[0.78],"y":[0]},"t":409,"s":[95]},{"t":434,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":9,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[220]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":393,"s":[296.8]},{"t":418,"s":[412]}],"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[220]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":393,"s":[488.8]},{"t":418,"s":[892]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[60]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":393,"s":[43.2]},{"t":418,"s":[18]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"k":[{"s":[60],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"k":[{"s":[60],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"k":[{"s":[60],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-33.114,0],[0,0],[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114]],"o":[[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114],[0,0],[-33.114,0],[0,0]],"v":[[-110,-50],[-50,-110],[50,-110],[110,-50],[110,50],[50,110],[-50,110],[-110,50]],"c":true}],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-32.906,0],[0,0],[0,-32.906],[0,0],[32.906,0],[0,0],[0,32.906]],"o":[[0,-32.906],[0,0],[32.906,0],[0,0],[0,32.906],[0,0],[-32.906,0],[0,0]],"v":[[-110.86,-53.387],[-51.236,-113.011],[51.236,-113.011],[110.86,-53.387],[110.86,53.387],[51.236,113.011],[-51.236,113.011],[-110.86,53.387]],"c":true}],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-32.237,0],[0,0],[0,-32.237],[0,0],[32.237,0],[0,0],[0,32.237]],"o":[[0,-32.237],[0,0],[32.237,0],[0,0],[0,32.237],[0,0],[-32.237,0],[0,0]],"v":[[-113.631,-64.296],[-55.219,-122.707],[55.219,-122.707],[113.631,-64.296],[113.631,64.296],[55.219,122.707],[-55.219,122.707],[-113.631,64.296]],"c":true}],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-30.947,0],[0,0],[0,-30.947],[0,0],[30.947,0],[0,0],[0,30.947]],"o":[[0,-30.947],[0,0],[30.947,0],[0,0],[0,30.947],[0,0],[-30.947,0],[0,0]],"v":[[-118.974,-85.335],[-62.9,-141.409],[62.9,-141.409],[118.974,-85.335],[118.974,85.335],[62.9,141.409],[-62.9,141.409],[-118.974,85.335]],"c":true}],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-28.64,0],[0,0],[0,-28.64],[0,0],[28.64,0],[0,0],[0,28.64]],"o":[[0,-28.64],[0,0],[28.64,0],[0,0],[0,28.64],[0,0],[-28.64,0],[0,0]],"v":[[-128.53,-122.961],[-76.636,-174.854],[76.636,-174.854],[128.53,-122.961],[128.53,122.961],[76.636,174.854],[-76.636,174.854],[-128.53,122.961]],"c":true}],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-23.842,0],[0,0],[0,-23.842],[0,0],[23.842,0],[0,0],[0,23.842]],"o":[[0,-23.842],[0,0],[23.842,0],[0,0],[0,23.842],[0,0],[-23.842,0],[0,0]],"v":[[-148.4,-201.2],[-105.2,-244.4],[105.2,-244.4],[148.4,-201.2],[148.4,201.2],[105.2,244.4],[-105.2,244.4],[-148.4,201.2]],"c":true}],"t":393,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-18.379,0],[0,0],[0,-18.379],[0,0],[18.379,0],[0,0],[0,18.379]],"o":[[0,-18.379],[0,0],[18.379,0],[0,0],[0,18.379],[0,0],[-18.379,0],[0,0]],"v":[[-171.027,-290.294],[-137.727,-323.595],[137.727,-323.595],[171.027,-290.294],[171.027,290.294],[137.727,323.595],[-137.727,323.595],[-171.027,290.294]],"c":true}],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-15.973,0],[0,0],[0,-15.973],[0,0],[15.973,0],[0,0],[0,15.973]],"o":[[0,-15.973],[0,0],[15.973,0],[0,0],[0,15.973],[0,0],[-15.973,0],[0,0]],"v":[[-180.988,-329.516],[-152.046,-358.459],[152.046,-358.459],[180.988,-329.516],[180.988,329.516],[152.046,358.459],[-152.046,358.459],[-180.988,329.516]],"c":true}],"t":395,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-14.579,0],[0,0],[0,-14.579],[0,0],[14.579,0],[0,0],[0,14.579]],"o":[[0,-14.579],[0,0],[14.579,0],[0,0],[0,14.579],[0,0],[-14.579,0],[0,0]],"v":[[-186.762,-352.25],[-160.345,-378.667],[160.345,-378.667],[186.762,-352.25],[186.762,352.25],[160.345,378.667],[-160.345,378.667],[-186.762,352.25]],"c":true}],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-13.632,0],[0,0],[0,-13.632],[0,0],[13.632,0],[0,0],[0,13.632]],"o":[[0,-13.632],[0,0],[13.632,0],[0,0],[0,13.632],[0,0],[-13.632,0],[0,0]],"v":[[-190.685,-367.697],[-165.985,-392.397],[165.985,-392.397],[190.685,-367.697],[190.685,367.697],[165.985,392.397],[-165.985,392.397],[-190.685,367.697]],"c":true}],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-12.934,0],[0,0],[0,-12.934],[0,0],[12.934,0],[0,0],[0,12.934]],"o":[[0,-12.934],[0,0],[12.934,0],[0,0],[0,12.934],[0,0],[-12.934,0],[0,0]],"v":[[-193.577,-379.084],[-170.142,-402.519],[170.142,-402.519],[193.577,-379.084],[193.577,379.084],[170.142,402.519],[-170.142,402.519],[-193.577,379.084]],"c":true}],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-12.394,0],[0,0],[0,-12.394],[0,0],[12.394,0],[0,0],[0,12.394]],"o":[[0,-12.394],[0,0],[12.394,0],[0,0],[0,12.394],[0,0],[-12.394,0],[0,0]],"v":[[-195.813,-387.89],[-173.357,-410.347],[173.357,-410.347],[195.813,-387.89],[195.813,387.89],[173.357,410.347],[-173.357,410.347],[-195.813,387.89]],"c":true}],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.963,0],[0,0],[0,-11.963],[0,0],[11.963,0],[0,0],[0,11.963]],"o":[[0,-11.963],[0,0],[11.963,0],[0,0],[0,11.963],[0,0],[-11.963,0],[0,0]],"v":[[-197.598,-394.916],[-175.922,-416.592],[175.922,-416.592],[197.598,-394.916],[197.598,394.916],[175.922,416.592],[-175.922,416.592],[-197.598,394.916]],"c":true}],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.612,0],[0,0],[0,-11.612],[0,0],[11.612,0],[0,0],[0,11.612]],"o":[[0,-11.612],[0,0],[11.612,0],[0,0],[0,11.612],[0,0],[-11.612,0],[0,0]],"v":[[-199.052,-400.641],[-178.012,-421.681],[178.012,-421.681],[199.052,-400.641],[199.052,400.641],[178.012,421.681],[-178.012,421.681],[-199.052,400.641]],"c":true}],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.322,0],[0,0],[0,-11.322],[0,0],[11.322,0],[0,0],[0,11.322]],"o":[[0,-11.322],[0,0],[11.322,0],[0,0],[0,11.322],[0,0],[-11.322,0],[0,0]],"v":[[-200.254,-405.375],[-179.74,-425.889],[179.74,-425.889],[200.254,-405.375],[200.254,405.375],[179.74,425.889],[-179.74,425.889],[-200.254,405.375]],"c":true}],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.079,0],[0,0],[0,-11.079],[0,0],[11.079,0],[0,0],[0,11.079]],"o":[[0,-11.079],[0,0],[11.079,0],[0,0],[0,11.079],[0,0],[-11.079,0],[0,0]],"v":[[-201.259,-409.332],[-181.185,-429.406],[181.185,-429.406],[201.259,-409.332],[201.259,409.332],[181.185,429.406],[-181.185,429.406],[-201.259,409.332]],"c":true}],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.875,0],[0,0],[0,-10.875],[0,0],[10.875,0],[0,0],[0,10.875]],"o":[[0,-10.875],[0,0],[10.875,0],[0,0],[0,10.875],[0,0],[-10.875,0],[0,0]],"v":[[-202.104,-412.661],[-182.4,-432.365],[182.4,-432.365],[202.104,-412.661],[202.104,412.661],[182.4,432.365],[-182.4,432.365],[-202.104,412.661]],"c":true}],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.702,0],[0,0],[0,-10.702],[0,0],[10.702,0],[0,0],[0,10.702]],"o":[[0,-10.702],[0,0],[10.702,0],[0,0],[0,10.702],[0,0],[-10.702,0],[0,0]],"v":[[-202.819,-415.475],[-183.427,-434.867],[183.427,-434.867],[202.819,-415.475],[202.819,415.475],[183.427,434.867],[-183.427,434.867],[-202.819,415.475]],"c":true}],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.556,0],[0,0],[0,-10.556],[0,0],[10.556,0],[0,0],[0,10.556]],"o":[[0,-10.556],[0,0],[10.556,0],[0,0],[0,10.556],[0,0],[-10.556,0],[0,0]],"v":[[-203.424,-417.859],[-184.298,-436.986],[184.298,-436.986],[203.424,-417.859],[203.424,417.859],[184.298,436.986],[-184.298,436.986],[-203.424,417.859]],"c":true}],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.432,0],[0,0],[0,-10.432],[0,0],[10.432,0],[0,0],[0,10.432]],"o":[[0,-10.432],[0,0],[10.432,0],[0,0],[0,10.432],[0,0],[-10.432,0],[0,0]],"v":[[-203.937,-419.879],[-185.035,-438.781],[185.035,-438.781],[203.937,-419.879],[203.937,419.879],[185.035,438.781],[-185.035,438.781],[-203.937,419.879]],"c":true}],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.327,0],[0,0],[0,-10.327],[0,0],[10.328,0],[0,0],[0,10.328]],"o":[[0,-10.327],[0,0],[10.328,0],[0,0],[0,10.328],[0,0],[-10.327,0],[0,0]],"v":[[-204.371,-421.587],[-185.659,-440.299],[185.659,-440.299],[204.371,-421.587],[204.371,421.587],[185.659,440.299],[-185.659,440.299],[-204.371,421.587]],"c":true}],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.239,0],[0,0],[0,-10.239],[0,0],[10.239,0],[0,0],[0,10.239]],"o":[[0,-10.239],[0,0],[10.239,0],[0,0],[0,10.239],[0,0],[-10.239,0],[0,0]],"v":[[-204.736,-423.025],[-186.184,-441.578],[186.184,-441.578],[204.736,-423.025],[204.736,423.025],[186.184,441.578],[-186.184,441.578],[-204.736,423.025]],"c":true}],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.166,0],[0,0],[0,-10.166],[0,0],[10.166,0],[0,0],[0,10.166]],"o":[[0,-10.166],[0,0],[10.166,0],[0,0],[0,10.166],[0,0],[-10.166,0],[0,0]],"v":[[-205.042,-424.227],[-186.623,-442.647],[186.623,-442.647],[205.042,-424.227],[205.042,424.227],[186.623,442.647],[-186.623,442.647],[-205.042,424.227]],"c":true}],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.105,0],[0,0],[0,-10.104],[0,0],[10.105,0],[0,0],[0,10.104]],"o":[[0,-10.104],[0,0],[10.105,0],[0,0],[0,10.104],[0,0],[-10.105,0],[0,0]],"v":[[-205.295,-425.223],[-186.986,-443.531],[186.986,-443.531],[205.295,-425.223],[205.295,425.223],[186.986,443.531],[-186.986,443.531],[-205.295,425.223]],"c":true}],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.055,0],[0,0],[0,-10.055],[0,0],[10.055,0],[0,0],[0,10.055]],"o":[[0,-10.055],[0,0],[10.055,0],[0,0],[0,10.055],[0,0],[-10.055,0],[0,0]],"v":[[-205.501,-426.035],[-187.283,-444.253],[187.283,-444.253],[205.501,-426.035],[205.501,426.035],[187.283,444.253],[-187.283,444.253],[-205.501,426.035]],"c":true}],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.015,0],[0,0],[0,-10.015],[0,0],[10.015,0],[0,0],[0,10.015]],"o":[[0,-10.015],[0,0],[10.015,0],[0,0],[0,10.015],[0,0],[-10.015,0],[0,0]],"v":[[-205.666,-426.684],[-187.519,-444.83],[187.519,-444.83],[205.666,-426.684],[205.666,426.684],[187.519,444.83],[-187.519,444.83],[-205.666,426.684]],"c":true}],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.984,0],[0,0],[0,-9.984],[0,0],[9.984,0],[0,0],[0,9.984]],"o":[[0,-9.984],[0,0],[9.984,0],[0,0],[0,9.984],[0,0],[-9.984,0],[0,0]],"v":[[-205.793,-427.186],[-187.703,-445.277],[187.703,-445.277],[205.793,-427.186],[205.793,427.186],[187.703,445.277],[-187.703,445.277],[-205.793,427.186]],"c":true}],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.961,0],[0,0],[0,-9.961],[0,0],[9.961,0],[0,0],[0,9.961]],"o":[[0,-9.961],[0,0],[9.961,0],[0,0],[0,9.961],[0,0],[-9.961,0],[0,0]],"v":[[-205.888,-427.557],[-187.838,-445.607],[187.838,-445.607],[205.888,-427.557],[205.888,427.557],[187.838,445.607],[-187.838,445.607],[-205.888,427.557]],"c":true}],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.946,0],[0,0],[0,-9.946],[0,0],[9.946,0],[0,0],[0,9.946]],"o":[[0,-9.946],[0,0],[9.946,0],[0,0],[0,9.946],[0,0],[-9.946,0],[0,0]],"v":[[-205.952,-427.809],[-187.93,-445.831],[187.93,-445.831],[205.952,-427.809],[205.952,427.809],[187.93,445.831],[-187.93,445.831],[-205.952,427.809]],"c":true}],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.937,0],[0,0],[0,-9.937],[0,0],[9.937,0],[0,0],[0,9.937]],"o":[[0,-9.937],[0,0],[9.937,0],[0,0],[0,9.937],[0,0],[-9.937,0],[0,0]],"v":[[-205.988,-427.954],[-187.983,-445.959],[187.983,-445.959],[205.988,-427.954],[205.988,427.954],[187.983,445.959],[-187.983,445.959],[-205.988,427.954]],"c":true}],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.494117647059,0.266666666667,0.678431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":245,"op":435,"st":-37,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Pill to Arc | Elevation 2","parent":4,"tt":1,"tp":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":398,"s":[15]},{"t":404,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":130,"s":[-83]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":197,"s":[-238]},{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":227,"s":[-238]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":237.666,"s":[-125.6]},{"t":291,"s":[43]}],"ix":3},"y":{"k":[{"s":[110.1],"t":53,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[109.629],"t":54,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[108.115],"t":55,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[105.387],"t":56,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[101.233],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[95.393],"t":58,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.556],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[77.356],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.399],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[48.322],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.939],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[6.457],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-18.352],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.227],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-69.819],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-94.1],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-116.516],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-136.892],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-155.275],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-171.817],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-186.701],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-200.108],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-212.206],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-223.143],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-233.047],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-242.028],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-250.181],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-257.587],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-264.318],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-270.434],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-275.988],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-281.028],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-285.594],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-289.722],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-293.445],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-296.791],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-299.786],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-302.453],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-304.812],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-306.882],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-308.681],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-310.224],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-311.524],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-312.595],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.449],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.097],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.549],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.814],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.663],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.356],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.911],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.321],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-312.575],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-311.661],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-310.567],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-309.279],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-307.781],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-306.056],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-304.083],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-301.841],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-299.303],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-296.441],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-293.22],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-289.602],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-285.543],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-280.992],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-275.89],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-270.171],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-263.759],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-256.573],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-248.528],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-239.543],"t":165,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-229.563],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-218.577],"t":167,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-206.661],"t":168,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-194.011],"t":169,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-167.889],"t":171,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-155.239],"t":172,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-143.323],"t":173,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-132.337],"t":174,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-122.357],"t":175,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-113.372],"t":176,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-105.327],"t":177,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-98.141],"t":178,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-91.729],"t":179,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-86.01],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-80.908],"t":181,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.357],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-72.298],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-68.68],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-65.459],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-62.597],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-60.059],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-57.817],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.844],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-54.119],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.621],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.333],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-50.239],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.325],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.579],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.989],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.544],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.237],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.058],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.046],"t":294,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.082],"t":295,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.128],"t":296,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.183],"t":297,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.248],"t":298,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.323],"t":299,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.407],"t":300,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.5],"t":301,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.602],"t":302,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.713],"t":303,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.833],"t":304,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.961],"t":305,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.098],"t":306,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.244],"t":307,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.398],"t":308,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.56],"t":309,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.73],"t":310,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.908],"t":311,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.094],"t":312,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.288],"t":313,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.489],"t":314,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.698],"t":315,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.914],"t":316,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-50.137],"t":317,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-50.367],"t":318,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-50.605],"t":319,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-50.849],"t":320,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.101],"t":321,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.359],"t":322,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.623],"t":323,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.894],"t":324,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.171],"t":325,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.455],"t":326,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.745],"t":327,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-53.04],"t":328,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-53.342],"t":329,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-53.65],"t":330,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-53.963],"t":331,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-54.281],"t":332,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-54.606],"t":333,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-54.935],"t":334,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.27],"t":335,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.61],"t":336,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.955],"t":337,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-56.304],"t":338,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-56.659],"t":339,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-57.018],"t":340,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-57.382],"t":341,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-57.75],"t":342,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-58.122],"t":343,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-58.499],"t":344,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-58.879],"t":345,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-59.263],"t":346,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-59.651],"t":347,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-60.043],"t":348,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-60.438],"t":349,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-60.836],"t":350,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-61.237],"t":351,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-61.642],"t":352,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-62.049],"t":353,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-62.459],"t":354,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-62.871],"t":355,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-63.286],"t":356,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-63.702],"t":357,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-64.121],"t":358,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-64.541],"t":359,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-64.963],"t":360,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-65.386],"t":361,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-65.81],"t":362,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-66.234],"t":363,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-67.936],"t":367,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-68.36],"t":368,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-68.783],"t":369,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-69.205],"t":370,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-69.626],"t":371,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-70.044],"t":372,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-70.459],"t":373,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-70.871],"t":374,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-71.28],"t":375,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-71.684],"t":376,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-72.083],"t":377,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-72.477],"t":378,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-72.865],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-73.245],"t":380,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-73.617],"t":381,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-73.98],"t":382,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-74.333],"t":383,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-74.674],"t":384,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-75.002],"t":385,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-75.316],"t":386,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-75.612],"t":387,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-75.89],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.147],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.378],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.581],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.751],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.883],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.969],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.913],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.843],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.753],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.639],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.503],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.343],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.158],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-75.947],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-75.71],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-75.444],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-75.149],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-74.824],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-74.466],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-74.076],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-73.651],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-73.189],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-72.689],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-72.148],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-71.566],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-70.938],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-70.264],"t":418,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-69.54],"t":419,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-68.763],"t":420,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-67.931],"t":421,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-67.039],"t":422,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-66.085],"t":423,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-65.064],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-63.971],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-62.802],"t":426,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-61.552],"t":427,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-60.214],"t":428,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-58.782],"t":429,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-57.249],"t":430,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.608],"t":431,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-53.85],"t":432,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.967],"t":433,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.95],"t":434,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.788],"t":435,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.473],"t":436,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-42.996],"t":437,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-40.352],"t":438,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-37.536],"t":439,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-34.552],"t":440,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-31.41],"t":441,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-28.132],"t":442,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-24.753],"t":443,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.322],"t":444,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},"a":{"a":0,"k":[0,-2,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue Y Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":0,"k":0,"ix":1}}]},{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":2,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":8,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":1,"ix":3}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.42,"y":0},"t":24,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,23.5],[21.75,-21.75],[21.75,-66.5]],"c":false}]},{"i":{"x":0.65,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.35,"y":0},"t":53,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.35,"y":0},"t":70,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":140,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":197,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":227,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":244,"s":[{"i":[[0,0],[-20.373,0],[-4.174,-10]],"o":[[4.292,-10],[20.228,0],[0,0]],"v":[[-11.25,18.5],[22,-21.5],[54.75,18.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.42,"y":0},"t":291,"s":[{"i":[[0,0],[-17.75,0],[-10.841,0]],"o":[[11.833,0],[17.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":432,"s":[{"i":[[0,0],[0,17.75],[0,10.841]],"o":[[0,-11.833],[0,-17.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"t":482,"s":[{"i":[[0,0],[0,17.75],[0,10.841]],"o":[[0,-11.833],[0,-17.583],[0,0]],"v":[[21.75,44.5],[21.75,-21.75],[21.75,-88.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":111,"s":[27]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":130,"s":[58]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":197,"s":[58]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":218,"s":[40]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":247,"s":[40]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[54]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":368,"s":[54]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":388,"s":[40]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":390,"s":[40]},{"t":405,"s":[52]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":127,"s":[49.5]},{"i":{"x":[0.32],"y":[1]},"o":{"x":[0.82],"y":[0]},"t":197,"s":[49.5]},{"t":222,"s":[30],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":247,"s":[30]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[49.5]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":432,"s":[49.5]},{"t":482,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":127,"s":[50.5]},{"i":{"x":[0.32],"y":[1]},"o":{"x":[0.82],"y":[0]},"t":197,"s":[50.5]},{"t":222,"s":[70],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":247,"s":[70]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[50.5]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":432,"s":[50.5]},{"t":482,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-465,"s":[0]},{"t":-447,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":222,"s":[{"i":[[3.179,6.167],[0,-15.352],[-2.581,5.008]],"o":[[-2.881,-5.59],[0,13.869],[3.179,-6.167]],"v":[[-10.45,-10.166],[10.648,-0.036],[-10.45,9.228]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":237,"s":[{"i":[[3.179,8.221],[0,-20.465],[-2.581,6.675]],"o":[[-2.881,-7.451],[0,18.488],[3.179,-8.221]],"v":[[-25.45,-13.344],[-4.352,0.16],[-25.45,12.509]],"c":true}]},{"t":263,"s":[{"i":[[3.179,6.167],[0,-15.352],[-2.581,5.008]],"o":[[-2.881,-5.59],[0,13.869],[3.179,-6.167]],"v":[[-11.7,-10.166],[9.398,-0.036],[-11.7,9.228]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":1,"k":[{"t":212,"s":[0],"h":1},{"t":222,"s":[100],"h":1},{"t":247,"s":[0],"h":1}],"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":2,"mn":"ADBE Vector Group","hd":false}],"ip":245,"op":435,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"App 1 Matte","parent":11,"td":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":19,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":31,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":49,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":71,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.52],"y":[0]},"t":227,"s":[100]},{"t":245,"s":[50]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.15,"y":1},"o":{"x":0.37,"y":0},"t":53,"s":[206,752,0],"to":[0,0,0],"ti":[0,0,0]},{"t":101,"s":[206,421,0]}],"ix":2,"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":2,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":63,"s":[843]},{"t":101,"s":[352],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":113,"s":[352]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[216]},{"t":148,"s":[220]}],"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":63,"s":[582]},{"t":101,"s":[352],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":113,"s":[352]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[216]},{"t":148,"s":[220]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":63,"s":[90]},{"t":101,"s":[80],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":113,"s":[80]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[64]},{"t":148,"s":[60]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"k":[{"s":[89.923],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"k":[{"s":[89.923],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"k":[{"s":[89.923],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[49.671,0],[0,0],[0,49.671]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,49.671],[0,0],[-49.671,0],[0,0]],"v":[[-421.5,90],[-331.5,0],[331.5,0],[421.5,90],[421.5,492],[331.5,582],[-331.5,582],[-421.5,492]],"c":true}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.661,0],[0,0],[0,-49.661],[0,0],[49.661,0],[0,0],[0,49.661]],"o":[[0,-49.661],[0,0],[49.661,0],[0,0],[0,49.661],[0,0],[-49.661,0],[0,0]],"v":[[-421.06,89.982],[-331.078,0],[331.078,0],[421.06,89.982],[421.06,491.605],[331.078,581.587],[-331.078,581.587],[-421.06,491.605]],"c":true}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.629,0],[0,0],[0,-49.629],[0,0],[49.629,0],[0,0],[0,49.629]],"o":[[0,-49.629],[0,0],[49.629,0],[0,0],[0,49.629],[0,0],[-49.629,0],[0,0]],"v":[[-419.619,89.923],[-329.695,0],[329.695,0],[419.619,89.923],[419.619,490.314],[329.695,580.237],[-329.695,580.237],[-419.619,490.314]],"c":true}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.569,0],[0,0],[0,-49.569],[0,0],[49.569,0],[0,0],[0,49.569]],"o":[[0,-49.569],[0,0],[49.569,0],[0,0],[0,49.569],[0,0],[-49.569,0],[0,0]],"v":[[-416.958,89.815],[-327.143,0],[327.143,0],[416.958,89.815],[416.958,487.93],[327.143,577.745],[-327.143,577.745],[-416.958,487.93]],"c":true}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.475,0],[0,0],[0,-49.475],[0,0],[49.475,0],[0,0],[0,49.475]],"o":[[0,-49.475],[0,0],[49.475,0],[0,0],[0,49.475],[0,0],[-49.475,0],[0,0]],"v":[[-412.797,89.645],[-323.151,0],[323.151,0],[412.797,89.645],[412.797,484.201],[323.151,573.846],[-323.151,573.846],[-412.797,484.201]],"c":true}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.34,0],[0,0],[0,-49.34],[0,0],[49.34,0],[0,0],[0,49.34]],"o":[[0,-49.34],[0,0],[49.34,0],[0,0],[0,49.34],[0,0],[-49.34,0],[0,0]],"v":[[-406.775,89.4],[-317.375,0],[317.375,0],[406.775,89.4],[406.775,478.804],[317.375,568.205],[-317.375,568.205],[-406.775,478.804]],"c":true}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.153,0],[0,0],[0,-49.153],[0,0],[49.153,0],[0,0],[0,49.153]],"o":[[0,-49.153],[0,0],[49.153,0],[0,0],[0,49.153],[0,0],[-49.153,0],[0,0]],"v":[[-398.461,89.062],[-309.4,0],[309.4,0],[398.461,89.062],[398.461,471.354],[309.4,560.416],[-309.4,560.416],[-398.461,471.354]],"c":true}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.905,0],[0,0],[0,-48.905],[0,0],[48.905,0],[0,0],[0,48.905]],"o":[[0,-48.905],[0,0],[48.905,0],[0,0],[0,48.905],[0,0],[-48.905,0],[0,0]],"v":[[-387.407,88.611],[-298.795,0],[298.795,0],[387.407,88.611],[387.407,461.448],[298.795,550.059],[-298.795,550.059],[-387.407,461.448]],"c":true}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.588,0],[0,0],[0,-48.588],[0,0],[48.588,0],[0,0],[0,48.588]],"o":[[0,-48.588],[0,0],[48.588,0],[0,0],[0,48.588],[0,0],[-48.588,0],[0,0]],"v":[[-373.33,88.038],[-285.292,0],[285.292,0],[373.33,88.038],[373.33,448.834],[285.292,536.872],[-285.292,536.872],[-373.33,448.834]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.209,0],[0,0],[0,-48.209],[0,0],[48.209,0],[0,0],[0,48.209]],"o":[[0,-48.209],[0,0],[48.209,0],[0,0],[0,48.209],[0,0],[-48.209,0],[0,0]],"v":[[-356.473,87.351],[-269.122,0],[269.122,0],[356.473,87.351],[356.473,433.728],[269.122,521.079],[-269.122,521.079],[-356.473,433.728]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-47.791,0],[0,0],[0,-47.791],[0,0],[47.791,0],[0,0],[0,47.791]],"o":[[0,-47.791],[0,0],[47.791,0],[0,0],[0,47.791],[0,0],[-47.791,0],[0,0]],"v":[[-337.88,86.594],[-251.286,0],[251.286,0],[337.88,86.594],[337.88,417.066],[251.286,503.66],[-251.286,503.66],[-337.88,417.066]],"c":true}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-47.369,0],[0,0],[0,-47.369],[0,0],[47.369,0],[0,0],[0,47.369]],"o":[[0,-47.369],[0,0],[47.369,0],[0,0],[0,47.369],[0,0],[-47.369,0],[0,0]],"v":[[-319.099,85.829],[-233.27,0],[233.27,0],[319.099,85.829],[319.099,400.235],[233.27,486.064],[-233.27,486.064],[-319.099,400.235]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.972,0],[0,0],[0,-46.972],[0,0],[46.972,0],[0,0],[0,46.972]],"o":[[0,-46.972],[0,0],[46.972,0],[0,0],[0,46.972],[0,0],[-46.972,0],[0,0]],"v":[[-301.424,85.109],[-216.315,0],[216.315,0],[301.424,85.109],[301.424,384.396],[216.315,469.505],[-216.315,469.505],[-301.424,384.396]],"c":true}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.614,0],[0,0],[0,-46.614],[0,0],[46.614,0],[0,0],[0,46.614]],"o":[[0,-46.614],[0,0],[46.614,0],[0,0],[0,46.614],[0,0],[-46.614,0],[0,0]],"v":[[-285.496,84.46],[-201.036,0],[201.036,0],[285.496,84.46],[285.496,370.123],[201.036,454.583],[-201.036,454.583],[-285.496,370.123]],"c":true}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.298,0],[0,0],[0,-46.298],[0,0],[46.298,0],[0,0],[0,46.298]],"o":[[0,-46.298],[0,0],[46.298,0],[0,0],[0,46.298],[0,0],[-46.298,0],[0,0]],"v":[[-271.44,83.888],[-187.553,0],[187.553,0],[271.44,83.888],[271.44,357.527],[187.553,441.415],[-187.553,441.415],[-271.44,357.527]],"c":true}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.021,0],[0,0],[0,-46.021],[0,0],[46.021,0],[0,0],[0,46.021]],"o":[[0,-46.021],[0,0],[46.021,0],[0,0],[0,46.021],[0,0],[-46.021,0],[0,0]],"v":[[-259.129,83.386],[-175.743,0],[175.743,0],[259.129,83.386],[259.129,346.495],[175.743,429.881],[-175.743,429.881],[-259.129,346.495]],"c":true}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.779,0],[0,0],[0,-45.779],[0,0],[45.779,0],[0,0],[0,45.779]],"o":[[0,-45.779],[0,0],[45.779,0],[0,0],[0,45.779],[0,0],[-45.779,0],[0,0]],"v":[[-248.356,82.947],[-165.409,0],[165.409,0],[248.356,82.947],[248.356,336.841],[165.409,419.788],[-165.409,419.788],[-248.356,336.841]],"c":true}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.566,0],[0,0],[0,-45.566],[0,0],[45.566,0],[0,0],[0,45.566]],"o":[[0,-45.566],[0,0],[45.566,0],[0,0],[0,45.566],[0,0],[-45.566,0],[0,0]],"v":[[-238.91,82.563],[-156.348,0],[156.348,0],[238.91,82.563],[238.91,328.376],[156.348,410.938],[-156.348,410.938],[-238.91,328.376]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.38,0],[0,0],[0,-45.38],[0,0],[45.38,0],[0,0],[0,45.38]],"o":[[0,-45.38],[0,0],[45.38,0],[0,0],[0,45.38],[0,0],[-45.38,0],[0,0]],"v":[[-230.605,82.224],[-148.381,0],[148.381,0],[230.605,82.224],[230.605,320.933],[148.381,403.157],[-148.381,403.157],[-230.605,320.933]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.215,0],[0,0],[0,-45.215],[0,0],[45.215,0],[0,0],[0,45.215]],"o":[[0,-45.215],[0,0],[45.215,0],[0,0],[0,45.215],[0,0],[-45.215,0],[0,0]],"v":[[-223.282,81.926],[-141.356,0],[141.356,0],[223.282,81.926],[223.282,314.371],[141.356,396.297],[-141.356,396.297],[-223.282,314.371]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.069,0],[0,0],[0,-45.069],[0,0],[45.069,0],[0,0],[0,45.069]],"o":[[0,-45.069],[0,0],[45.069,0],[0,0],[0,45.069],[0,0],[-45.069,0],[0,0]],"v":[[-216.811,81.662],[-135.148,0],[135.148,0],[216.811,81.662],[216.811,308.572],[135.148,390.234],[-135.148,390.234],[-216.811,308.572]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.941,0],[0,0],[0,-44.941],[0,0],[44.941,0],[0,0],[0,44.941]],"o":[[0,-44.941],[0,0],[44.941,0],[0,0],[0,44.941],[0,0],[-44.941,0],[0,0]],"v":[[-211.082,81.429],[-129.653,0],[129.653,0],[211.082,81.429],[211.082,303.438],[129.653,384.867],[-129.653,384.867],[-211.082,303.438]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.827,0],[0,0],[0,-44.827],[0,0],[44.827,0],[0,0],[0,44.827]],"o":[[0,-44.827],[0,0],[44.827,0],[0,0],[0,44.827],[0,0],[-44.827,0],[0,0]],"v":[[-206.006,81.222],[-124.784,0],[124.784,0],[206.006,81.222],[206.006,298.89],[124.784,380.112],[-124.784,380.112],[-206.006,298.89]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.725,0],[0,0],[0,-44.725],[0,0],[44.725,0],[0,0],[0,44.725]],"o":[[0,-44.725],[0,0],[44.725,0],[0,0],[0,44.725],[0,0],[-44.725,0],[0,0]],"v":[[-201.509,81.039],[-120.47,0],[120.47,0],[201.509,81.039],[201.509,294.859],[120.47,375.898],[-120.47,375.898],[-201.509,294.859]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.636,0],[0,0],[0,-44.636],[0,0],[44.636,0],[0,0],[0,44.636]],"o":[[0,-44.636],[0,0],[44.636,0],[0,0],[0,44.636],[0,0],[-44.636,0],[0,0]],"v":[[-197.527,80.877],[-116.65,0],[116.65,0],[197.527,80.877],[197.527,291.291],[116.65,372.168],[-116.65,372.168],[-197.527,291.291]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.557,0],[0,0],[0,-44.557],[0,0],[44.557,0],[0,0],[0,44.557]],"o":[[0,-44.557],[0,0],[44.557,0],[0,0],[0,44.557],[0,0],[-44.557,0],[0,0]],"v":[[-194.007,80.733],[-113.274,0],[113.274,0],[194.007,80.733],[194.007,288.137],[113.274,368.87],[-113.274,368.87],[-194.007,288.137]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.487,0],[0,0],[0,-44.487],[0,0],[44.487,0],[0,0],[0,44.487]],"o":[[0,-44.487],[0,0],[44.487,0],[0,0],[0,44.487],[0,0],[-44.487,0],[0,0]],"v":[[-190.904,80.607],[-110.297,0],[110.297,0],[190.904,80.607],[190.904,285.356],[110.297,365.963],[-110.297,365.963],[-190.904,285.356]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.426,0],[0,0],[0,-44.426],[0,0],[44.426,0],[0,0],[0,44.426]],"o":[[0,-44.426],[0,0],[44.426,0],[0,0],[0,44.426],[0,0],[-44.426,0],[0,0]],"v":[[-188.18,80.496],[-107.684,0],[107.684,0],[188.18,80.496],[188.18,282.915],[107.684,363.411],[-107.684,363.411],[-188.18,282.915]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.372,0],[0,0],[0,-44.372],[0,0],[44.372,0],[0,0],[0,44.372]],"o":[[0,-44.372],[0,0],[44.372,0],[0,0],[0,44.372],[0,0],[-44.372,0],[0,0]],"v":[[-185.8,80.399],[-105.401,0],[105.401,0],[185.8,80.399],[185.8,280.782],[105.401,361.182],[-105.401,361.182],[-185.8,280.782]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.326,0],[0,0],[0,-44.326],[0,0],[44.326,0],[0,0],[0,44.326]],"o":[[0,-44.326],[0,0],[44.326,0],[0,0],[0,44.326],[0,0],[-44.326,0],[0,0]],"v":[[-183.736,80.315],[-103.421,0],[103.421,0],[183.736,80.315],[183.736,278.933],[103.421,359.248],[-103.421,359.248],[-183.736,278.933]],"c":true}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.286,0],[0,0],[0,-44.286],[0,0],[44.286,0],[0,0],[0,44.286]],"o":[[0,-44.286],[0,0],[44.286,0],[0,0],[0,44.286],[0,0],[-44.286,0],[0,0]],"v":[[-181.963,80.243],[-101.72,0],[101.72,0],[181.963,80.243],[181.963,277.344],[101.72,357.586],[-101.72,357.586],[-181.963,277.344]],"c":true}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.252,0],[0,0],[0,-44.252],[0,0],[44.252,0],[0,0],[0,44.252]],"o":[[0,-44.252],[0,0],[44.252,0],[0,0],[0,44.252],[0,0],[-44.252,0],[0,0]],"v":[[-180.457,80.182],[-100.276,0],[100.276,0],[180.457,80.182],[180.457,275.994],[100.276,356.176],[-100.276,356.176],[-180.457,275.994]],"c":true}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.224,0],[0,0],[0,-44.224],[0,0],[44.224,0],[0,0],[0,44.224]],"o":[[0,-44.224],[0,0],[44.224,0],[0,0],[0,44.224],[0,0],[-44.224,0],[0,0]],"v":[[-179.2,80.13],[-99.069,0],[99.069,0],[179.2,80.13],[179.2,274.867],[99.069,354.998],[-99.069,354.998],[-179.2,274.867]],"c":true}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.201,0],[0,0],[0,-44.201],[0,0],[44.201,0],[0,0],[0,44.201]],"o":[[0,-44.201],[0,0],[44.201,0],[0,0],[0,44.201],[0,0],[-44.201,0],[0,0]],"v":[[-178.173,80.089],[-98.084,0],[98.084,0],[178.173,80.089],[178.173,273.947],[98.084,354.036],[-98.084,354.036],[-178.173,273.947]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.183,0],[0,0],[0,-44.183],[0,0],[44.183,0],[0,0],[0,44.183]],"o":[[0,-44.183],[0,0],[44.183,0],[0,0],[0,44.183],[0,0],[-44.183,0],[0,0]],"v":[[-177.361,80.055],[-97.305,0],[97.305,0],[177.361,80.055],[177.361,273.219],[97.305,353.275],[-97.305,353.275],[-177.361,273.219]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.169,0],[0,0],[0,-44.169],[0,0],[44.169,0],[0,0],[0,44.169]],"o":[[0,-44.169],[0,0],[44.169,0],[0,0],[0,44.169],[0,0],[-44.169,0],[0,0]],"v":[[-176.749,80.031],[-96.719,0],[96.719,0],[176.749,80.031],[176.749,272.672],[96.719,352.702],[-96.719,352.702],[-176.749,272.672]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.159,0],[0,0],[0,-44.159],[0,0],[44.159,0],[0,0],[0,44.159]],"o":[[0,-44.159],[0,0],[44.159,0],[0,0],[0,44.159],[0,0],[-44.159,0],[0,0]],"v":[[-176.326,80.013],[-96.313,0],[96.313,0],[176.326,80.013],[176.326,272.292],[96.313,352.306],[-96.313,352.306],[-176.326,272.292]],"c":true}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.154,0],[0,0],[0,-44.154],[0,0],[44.154,0],[0,0],[0,44.154]],"o":[[0,-44.154],[0,0],[44.154,0],[0,0],[0,44.154],[0,0],[-44.154,0],[0,0]],"v":[[-176.08,80.003],[-96.077,0],[96.077,0],[176.08,80.003],[176.08,272.072],[96.077,352.075],[-96.077,352.075],[-176.08,272.072]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.152,0],[0,0],[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152]],"o":[[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152],[0,0],[-44.152,0],[0,0]],"v":[[-176,80],[-96,0],[96,0],[176,80],[176,272],[96,352],[-96,352],[-176,272]],"c":true}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.127,0],[0,0],[0,-44.127],[0,0],[44.127,0],[0,0],[0,44.127]],"o":[[0,-44.127],[0,0],[44.127,0],[0,0],[0,44.127],[0,0],[-44.127,0],[0,0]],"v":[[-175.806,79.954],[-95.852,0],[95.852,0],[175.806,79.954],[175.806,271.658],[95.852,351.613],[-95.852,351.613],[-175.806,271.658]],"c":true}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.042,0],[0,0],[0,-44.042],[0,0],[44.042,0],[0,0],[0,44.042]],"o":[[0,-44.042],[0,0],[44.042,0],[0,0],[0,44.042],[0,0],[-44.042,0],[0,0]],"v":[[-175.151,79.8],[-95.351,0],[95.351,0],[175.151,79.8],[175.151,270.502],[95.351,350.302],[-95.351,350.302],[-175.151,270.502]],"c":true}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.877,0],[0,0],[0,-43.877],[0,0],[43.877,0],[0,0],[0,43.877]],"o":[[0,-43.877],[0,0],[43.877,0],[0,0],[0,43.877],[0,0],[-43.877,0],[0,0]],"v":[[-173.883,79.502],[-94.381,0],[94.381,0],[173.883,79.502],[173.883,268.264],[94.381,347.766],[-94.381,347.766],[-173.883,268.264]],"c":true}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.602,0],[0,0],[0,-43.602],[0,0],[43.602,0],[0,0],[0,43.602]],"o":[[0,-43.602],[0,0],[43.602,0],[0,0],[0,43.602],[0,0],[-43.602,0],[0,0]],"v":[[-171.765,79.003],[-92.761,0],[92.761,0],[171.765,79.003],[171.765,264.526],[92.761,343.529],[-92.761,343.529],[-171.765,264.526]],"c":true}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.166,0],[0,0],[0,-43.166],[0,0],[43.166,0],[0,0],[0,43.166]],"o":[[0,-43.166],[0,0],[43.166,0],[0,0],[0,43.166],[0,0],[-43.166,0],[0,0]],"v":[[-168.404,78.213],[-90.191,0],[90.191,0],[168.404,78.213],[168.404,258.595],[90.191,336.808],[-90.191,336.808],[-168.404,258.595]],"c":true}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-42.482,0],[0,0],[0,-42.482],[0,0],[42.482,0],[0,0],[0,42.482]],"o":[[0,-42.482],[0,0],[42.482,0],[0,0],[0,42.482],[0,0],[-42.482,0],[0,0]],"v":[[-163.142,76.975],[-86.168,0],[86.168,0],[163.142,76.975],[163.142,249.31],[86.168,326.284],[-86.168,326.284],[-163.142,249.31]],"c":true}],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-41.435,0],[0,0],[0,-41.435],[0,0],[41.435,0],[0,0],[0,41.435]],"o":[[0,-41.435],[0,0],[41.435,0],[0,0],[0,41.435],[0,0],[-41.435,0],[0,0]],"v":[[-155.078,75.077],[-80.001,0],[80.001,0],[155.078,75.077],[155.078,235.078],[80.001,310.155],[-80.001,310.155],[-155.078,235.078]],"c":true}],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-40.054,0],[0,0],[0,-40.054],[0,0],[40.054,0],[0,0],[0,40.054]],"o":[[0,-40.054],[0,0],[40.054,0],[0,0],[0,40.054],[0,0],[-40.054,0],[0,0]],"v":[[-144.442,72.575],[-71.868,0],[71.868,0],[144.442,72.575],[144.442,216.31],[71.868,288.885],[-71.868,288.885],[-144.442,216.31]],"c":true}],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-38.75,0],[0,0],[0,-38.75],[0,0],[38.75,0],[0,0],[0,38.75]],"o":[[0,-38.75],[0,0],[38.75,0],[0,0],[0,38.75],[0,0],[-38.75,0],[0,0]],"v":[[-134.399,70.212],[-64.188,0],[64.188,0],[134.399,70.212],[134.399,198.587],[64.188,268.799],[-64.188,268.799],[-134.399,198.587]],"c":true}],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-37.775,0],[0,0],[0,-37.775],[0,0],[37.775,0],[0,0],[0,37.775]],"o":[[0,-37.775],[0,0],[37.775,0],[0,0],[0,37.775],[0,0],[-37.775,0],[0,0]],"v":[[-126.895,68.446],[-58.449,0],[58.449,0],[126.895,68.446],[126.895,185.345],[58.449,253.791],[-58.449,253.791],[-126.895,185.345]],"c":true}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-37.077,0],[0,0],[0,-37.077],[0,0],[37.077,0],[0,0],[0,37.077]],"o":[[0,-37.077],[0,0],[37.077,0],[0,0],[0,37.077],[0,0],[-37.077,0],[0,0]],"v":[[-121.522,67.182],[-54.34,0],[54.34,0],[121.522,67.182],[121.522,175.861],[54.34,243.043],[-54.34,243.043],[-121.522,175.861]],"c":true}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-36.569,0],[0,0],[0,-36.569],[0,0],[36.569,0],[0,0],[0,36.569]],"o":[[0,-36.569],[0,0],[36.569,0],[0,0],[0,36.569],[0,0],[-36.569,0],[0,0]],"v":[[-117.609,66.261],[-51.348,0],[51.348,0],[117.609,66.261],[117.609,168.957],[51.348,235.217],[-51.348,235.217],[-117.609,168.957]],"c":true}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-36.193,0],[0,0],[0,-36.193],[0,0],[36.193,0],[0,0],[0,36.193]],"o":[[0,-36.193],[0,0],[36.193,0],[0,0],[0,36.193],[0,0],[-36.193,0],[0,0]],"v":[[-114.709,65.579],[-49.131,0],[49.131,0],[114.709,65.579],[114.709,163.84],[49.131,229.419],[-49.131,229.419],[-114.709,163.84]],"c":true}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.912,0],[0,0],[0,-35.912],[0,0],[35.912,0],[0,0],[0,35.912]],"o":[[0,-35.912],[0,0],[35.912,0],[0,0],[0,35.912],[0,0],[-35.912,0],[0,0]],"v":[[-112.544,65.069],[-47.475,0],[47.475,0],[112.544,65.069],[112.544,160.02],[47.475,225.089],[-47.475,225.089],[-112.544,160.02]],"c":true}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.703,0],[0,0],[0,-35.703],[0,0],[35.703,0],[0,0],[0,35.703]],"o":[[0,-35.703],[0,0],[35.703,0],[0,0],[0,35.703],[0,0],[-35.703,0],[0,0]],"v":[[-110.934,64.69],[-46.244,0],[46.244,0],[110.934,64.69],[110.934,157.178],[46.244,221.869],[-46.244,221.869],[-110.934,157.178]],"c":true}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.55,0],[0,0],[0,-35.55],[0,0],[35.55,0],[0,0],[0,35.55]],"o":[[0,-35.55],[0,0],[35.55,0],[0,0],[0,35.55],[0,0],[-35.55,0],[0,0]],"v":[[-109.758,64.414],[-45.344,0],[45.344,0],[109.758,64.414],[109.758,155.102],[45.344,219.516],[-45.344,219.516],[-109.758,155.102]],"c":true}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.443,0],[0,0],[0,-35.443],[0,0],[35.443,0],[0,0],[0,35.443]],"o":[[0,-35.443],[0,0],[35.443,0],[0,0],[0,35.443],[0,0],[-35.443,0],[0,0]],"v":[[-108.931,64.219],[-44.712,0],[44.712,0],[108.931,64.219],[108.931,153.643],[44.712,217.862],[-44.712,217.862],[-108.931,153.643]],"c":true}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.372,0],[0,0],[0,-35.372],[0,0],[35.372,0],[0,0],[0,35.372]],"o":[[0,-35.372],[0,0],[35.372,0],[0,0],[0,35.372],[0,0],[-35.372,0],[0,0]],"v":[[-108.391,64.092],[-44.299,0],[44.299,0],[108.391,64.092],[108.391,152.691],[44.299,216.783],[-44.299,216.783],[-108.391,152.691]],"c":true}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.334,0],[0,0],[0,-35.334],[0,0],[35.334,0],[0,0],[0,35.334]],"o":[[0,-35.334],[0,0],[35.334,0],[0,0],[0,35.334],[0,0],[-35.334,0],[0,0]],"v":[[-108.093,64.022],[-44.071,0],[44.071,0],[108.093,64.022],[108.093,152.164],[44.071,216.186],[-44.071,216.186],[-108.093,152.164]],"c":true}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.322,0],[0,0],[0,-35.322],[0,0],[35.322,0],[0,0],[0,35.322]],"o":[[0,-35.322],[0,0],[35.322,0],[0,0],[0,35.322],[0,0],[-35.322,0],[0,0]],"v":[[-108,64],[-44,0],[44,0],[108,64],[108,152],[44,216],[-44,216],[-108,152]],"c":true}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.293,0],[0,0],[0,-35.293],[0,0],[35.293,0],[0,0],[0,35.293]],"o":[[0,-35.293],[0,0],[35.293,0],[0,0],[0,35.293],[0,0],[-35.293,0],[0,0]],"v":[[-108.025,63.949],[-44.076,0],[44.076,0],[108.025,63.949],[108.025,152.102],[44.076,216.051],[-44.076,216.051],[-108.025,152.102]],"c":true}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.214,0],[0,0],[0,-35.214],[0,0],[35.214,0],[0,0],[0,35.214]],"o":[[0,-35.214],[0,0],[35.214,0],[0,0],[0,35.214],[0,0],[-35.214,0],[0,0]],"v":[[-108.097,63.806],[-44.292,0],[44.292,0],[108.097,63.806],[108.097,152.389],[44.292,216.194],[-44.292,216.194],[-108.097,152.389]],"c":true}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.092,0],[0,0],[0,-35.092],[0,0],[35.092,0],[0,0],[0,35.092]],"o":[[0,-35.092],[0,0],[35.092,0],[0,0],[0,35.092],[0,0],[-35.092,0],[0,0]],"v":[[-108.208,63.584],[-44.624,0],[44.624,0],[108.208,63.584],[108.208,152.832],[44.624,216.416],[-44.624,216.416],[-108.208,152.832]],"c":true}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.934,0],[0,0],[0,-34.934],[0,0],[34.934,0],[0,0],[0,34.934]],"o":[[0,-34.934],[0,0],[34.934,0],[0,0],[0,34.934],[0,0],[-34.934,0],[0,0]],"v":[[-108.351,63.298],[-45.052,0],[45.052,0],[108.351,63.298],[108.351,153.403],[45.052,216.702],[-45.052,216.702],[-108.351,153.403]],"c":true}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.749,0],[0,0],[0,-34.749],[0,0],[34.749,0],[0,0],[0,34.749]],"o":[[0,-34.749],[0,0],[34.749,0],[0,0],[0,34.749],[0,0],[-34.749,0],[0,0]],"v":[[-108.519,62.963],[-45.556,0],[45.556,0],[108.519,62.963],[108.519,154.074],[45.556,217.037],[-45.556,217.037],[-108.519,154.074]],"c":true}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.545,0],[0,0],[0,-34.545],[0,0],[34.545,0],[0,0],[0,34.545]],"o":[[0,-34.545],[0,0],[34.545,0],[0,0],[0,34.545],[0,0],[-34.545,0],[0,0]],"v":[[-108.704,62.592],[-46.112,0],[46.112,0],[108.704,62.592],[108.704,154.816],[46.112,217.408],[-46.112,217.408],[-108.704,154.816]],"c":true}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.328,0],[0,0],[0,-34.328],[0,0],[34.328,0],[0,0],[0,34.328]],"o":[[0,-34.328],[0,0],[34.328,0],[0,0],[0,34.328],[0,0],[-34.328,0],[0,0]],"v":[[-108.9,62.2],[-46.7,0],[46.7,0],[108.9,62.2],[108.9,155.601],[46.7,217.8],[-46.7,217.8],[-108.9,155.601]],"c":true}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.108,0],[0,0],[0,-34.108],[0,0],[34.108,0],[0,0],[0,34.108]],"o":[[0,-34.108],[0,0],[34.108,0],[0,0],[0,34.108],[0,0],[-34.108,0],[0,0]],"v":[[-109.1,61.8],[-47.3,0],[47.3,0],[109.1,61.8],[109.1,156.399],[47.3,218.2],[-47.3,218.2],[-109.1,156.399]],"c":true}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.891,0],[0,0],[0,-33.891],[0,0],[33.891,0],[0,0],[0,33.891]],"o":[[0,-33.891],[0,0],[33.891,0],[0,0],[0,33.891],[0,0],[-33.891,0],[0,0]],"v":[[-109.296,61.408],[-47.888,0],[47.888,0],[109.296,61.408],[109.296,157.184],[47.888,218.592],[-47.888,218.592],[-109.296,157.184]],"c":true}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.686,0],[0,0],[0,-33.686],[0,0],[33.686,0],[0,0],[0,33.686]],"o":[[0,-33.686],[0,0],[33.686,0],[0,0],[0,33.686],[0,0],[-33.686,0],[0,0]],"v":[[-109.481,61.037],[-48.444,0],[48.444,0],[109.481,61.037],[109.481,157.926],[48.444,218.963],[-48.444,218.963],[-109.481,157.926]],"c":true}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.501,0],[0,0],[0,-33.501],[0,0],[33.501,0],[0,0],[0,33.501]],"o":[[0,-33.501],[0,0],[33.501,0],[0,0],[0,33.501],[0,0],[-33.501,0],[0,0]],"v":[[-109.649,60.702],[-48.948,0],[48.948,0],[109.649,60.702],[109.649,158.597],[48.948,219.298],[-48.948,219.298],[-109.649,158.597]],"c":true}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.344,0],[0,0],[0,-33.344],[0,0],[33.344,0],[0,0],[0,33.344]],"o":[[0,-33.344],[0,0],[33.344,0],[0,0],[0,33.344],[0,0],[-33.344,0],[0,0]],"v":[[-109.792,60.416],[-49.376,0],[49.376,0],[109.792,60.416],[109.792,159.168],[49.376,219.584],[-49.376,219.584],[-109.792,159.168]],"c":true}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.221,0],[0,0],[0,-33.221],[0,0],[33.221,0],[0,0],[0,33.221]],"o":[[0,-33.221],[0,0],[33.221,0],[0,0],[0,33.221],[0,0],[-33.221,0],[0,0]],"v":[[-109.903,60.194],[-49.708,0],[49.708,0],[109.903,60.194],[109.903,159.611],[49.708,219.806],[-49.708,219.806],[-109.903,159.611]],"c":true}],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.142,0],[0,0],[0,-33.142],[0,0],[33.142,0],[0,0],[0,33.142]],"o":[[0,-33.142],[0,0],[33.142,0],[0,0],[0,33.142],[0,0],[-33.142,0],[0,0]],"v":[[-109.975,60.051],[-49.924,0],[49.924,0],[109.975,60.051],[109.975,159.898],[49.924,219.949],[-49.924,219.949],[-109.975,159.898]],"c":true}],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.114,0],[0,0],[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114]],"o":[[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114],[0,0],[-33.114,0],[0,0]],"v":[[-110,60],[-50,0],[50,0],[110,60],[110,160],[50,220],[-50,220],[-110,160]],"c":true}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.494117647059,0.266666666667,0.678431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":198,"st":-57,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Pill to Arc | Elevation 1","parent":4,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":15,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":130,"s":[-83]},{"t":197,"s":[-298]}],"ix":3},"y":{"k":[{"s":[15],"t":53,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.634],"t":54,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.459],"t":55,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[11.342],"t":56,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[8.117],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.584],"t":58,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-2.5],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-10.417],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-20.475],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-32.954],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-65.451],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-84.709],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-104.794],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-124.659],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-143.507],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-160.907],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-176.724],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-190.994],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-203.834],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-215.387],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-225.794],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-235.185],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-243.675],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-251.363],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-258.334],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-264.663],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-270.412],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-275.637],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-280.384],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-284.695],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-288.607],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-292.152],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-295.356],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-298.246],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-300.843],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-303.168],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-305.238],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-307.069],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-308.676],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-310.073],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-311.27],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-312.279],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.111],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.774],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.277],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.627],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.622],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.261],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.739],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.043],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-312.163],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-311.083],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-309.789],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-308.263],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-306.486],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-304.435],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-302.087],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-299.414],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-296.384],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-292.963],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-289.11],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-284.78],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-279.922],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-274.481],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-268.395],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-261.601],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-254.035],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-245.641],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-236.382],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-226.259],"t":165,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-215.328],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-203.721],"t":167,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-191.658],"t":168,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-179.422],"t":169,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-167.325],"t":170,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-155.649],"t":171,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-144.609],"t":172,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-134.337],"t":173,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-124.891],"t":174,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-116.273],"t":175,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-108.451],"t":176,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-101.373],"t":177,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-94.982],"t":178,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-89.217],"t":179,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-84.021],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-79.341],"t":181,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-75.129],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-71.342],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-67.941],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-64.893],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-62.168],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-59.738],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-57.58],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.673],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-53.998],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.538],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.278],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-50.204],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.305],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.567],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.983],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.542],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.236],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.058],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.963],"t":203,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.934],"t":204,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.896],"t":205,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.851],"t":206,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.796],"t":207,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.734],"t":208,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.662],"t":209,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.583],"t":210,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.494],"t":211,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.397],"t":212,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.292],"t":213,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.177],"t":214,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.054],"t":215,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.923],"t":216,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.782],"t":217,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.633],"t":218,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.475],"t":219,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.308],"t":220,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.132],"t":221,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.948],"t":222,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.754],"t":223,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.552],"t":224,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.34],"t":225,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.119],"t":226,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-43.89],"t":227,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-43.651],"t":228,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-43.404],"t":229,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-43.147],"t":230,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-42.881],"t":231,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-42.606],"t":232,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-42.322],"t":233,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-42.028],"t":234,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-41.726],"t":235,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-41.414],"t":236,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-41.093],"t":237,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-40.763],"t":238,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-40.424],"t":239,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-40.075],"t":240,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-39.717],"t":241,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-39.35],"t":242,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-38.974],"t":243,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-38.588],"t":244,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-38.193],"t":245,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-37.789],"t":246,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-37.375],"t":247,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-36.952],"t":248,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-36.52],"t":249,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-36.078],"t":250,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-35.628],"t":251,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-35.168],"t":252,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-34.698],"t":253,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-34.22],"t":254,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-33.732],"t":255,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-33.235],"t":256,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-32.729],"t":257,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-32.213],"t":258,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-31.688],"t":259,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-31.154],"t":260,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-30.611],"t":261,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-30.059],"t":262,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-29.498],"t":263,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-28.928],"t":264,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-28.348],"t":265,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-27.76],"t":266,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-27.163],"t":267,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-26.556],"t":268,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-25.941],"t":269,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-25.317],"t":270,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-24.684],"t":271,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-24.043],"t":272,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-23.392],"t":273,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-22.733],"t":274,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-22.066],"t":275,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.39],"t":276,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-20.705],"t":277,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-20.012],"t":278,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-19.311],"t":279,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-18.601],"t":280,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-17.883],"t":281,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-17.157],"t":282,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-16.423],"t":283,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-15.681],"t":284,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-14.931],"t":285,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-14.173],"t":286,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-13.407],"t":287,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-12.634],"t":288,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-11.853],"t":289,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-11.065],"t":290,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-10.269],"t":291,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-9.466],"t":292,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-8.656],"t":293,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-7.839],"t":294,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-7.015],"t":295,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-6.184],"t":296,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.347],"t":297,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-4.503],"t":298,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.652],"t":299,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-2.795],"t":300,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-1.932],"t":301,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-1.063],"t":302,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.188],"t":303,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.693],"t":304,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[1.579],"t":305,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.471],"t":306,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.369],"t":307,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[4.271],"t":308,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[5.179],"t":309,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[6.092],"t":310,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[7.009],"t":311,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[7.931],"t":312,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[8.857],"t":313,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[9.788],"t":314,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[10.722],"t":315,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[11.661],"t":316,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[12.603],"t":317,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.549],"t":318,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.499],"t":319,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.451],"t":320,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.407],"t":321,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.366],"t":322,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.327],"t":323,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.29],"t":324,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.256],"t":325,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.225],"t":326,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.195],"t":327,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.166],"t":328,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.14],"t":329,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.114],"t":330,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.067],"t":332,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[34.893],"t":340,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[35.87],"t":341,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.846],"t":342,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[37.82],"t":343,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[38.793],"t":344,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[39.765],"t":345,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[40.734],"t":346,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[41.702],"t":347,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[42.667],"t":348,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.631],"t":349,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[44.591],"t":350,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[45.549],"t":351,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[46.504],"t":352,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[47.455],"t":353,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[48.404],"t":354,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[49.349],"t":355,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[50.29],"t":356,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.227],"t":357,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.16],"t":358,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.089],"t":359,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.014],"t":360,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.934],"t":361,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.849],"t":362,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.76],"t":363,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.665],"t":364,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.565],"t":365,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.459],"t":366,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.348],"t":367,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.232],"t":368,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.109],"t":369,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.98],"t":370,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.845],"t":371,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.704],"t":372,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.556],"t":373,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.402],"t":374,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.241],"t":375,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.073],"t":376,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.898],"t":377,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[69.716],"t":378,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.526],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[71.329],"t":380,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.125],"t":381,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.913],"t":382,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[73.693],"t":383,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[74.466],"t":384,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.23],"t":385,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.986],"t":386,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.735],"t":387,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[77.474],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.206],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.929],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.643],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.349],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.046],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.735],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.414],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.085],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.746],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.399],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.042],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.676],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.301],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.916],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.522],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.119],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.706],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.284],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.852],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[90.41],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[90.959],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[91.498],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[92.027],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[92.547],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[93.057],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[93.557],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[94.047],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[94.527],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[94.998],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[95.458],"t":418,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[95.909],"t":419,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[96.35],"t":420,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[96.78],"t":421,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[97.201],"t":422,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[97.612],"t":423,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[98.013],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[98.404],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[98.785],"t":426,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[99.156],"t":427,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[99.517],"t":428,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[99.868],"t":429,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[100.209],"t":430,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[100.54],"t":431,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[100.862],"t":432,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[101.173],"t":433,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[101.474],"t":434,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[101.766],"t":435,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[102.047],"t":436,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[102.319],"t":437,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[102.581],"t":438,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[102.833],"t":439,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[103.075],"t":440,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[103.307],"t":441,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[103.529],"t":442,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[103.742],"t":443,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[103.945],"t":444,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},"a":{"a":0,"k":[0,-2,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue Y Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":0,"k":0,"ix":1}}]},{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":2,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":8,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":1,"ix":3}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.42,"y":0},"t":24,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,23.5],[21.75,-21.75],[21.75,-66.5]],"c":false}]},{"i":{"x":0.65,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.35,"y":0},"t":53,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.35,"y":0},"t":70,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":140,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":197,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":227,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":244,"s":[{"i":[[0,0],[-20.373,0],[-4.174,-10]],"o":[[4.292,-10],[20.228,0],[0,0]],"v":[[-11.25,18.5],[22,-21.5],[54.75,18.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.42,"y":0},"t":291,"s":[{"i":[[0,0],[-17.75,0],[-10.841,0]],"o":[[11.833,0],[17.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":432,"s":[{"i":[[0,0],[0,17.75],[0,10.841]],"o":[[0,-11.833],[0,-17.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"t":482,"s":[{"i":[[0,0],[0,17.75],[0,10.841]],"o":[[0,-11.833],[0,-17.583],[0,0]],"v":[[21.75,44.5],[21.75,-21.75],[21.75,-88.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":111,"s":[27]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":130,"s":[58]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":197,"s":[58]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":218,"s":[40]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":247,"s":[40]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[54]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":368,"s":[54]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":388,"s":[40]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":390,"s":[40]},{"t":405,"s":[52]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":127,"s":[49.5]},{"i":{"x":[0.32],"y":[1]},"o":{"x":[0.82],"y":[0]},"t":197,"s":[49.5]},{"t":222,"s":[30],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":247,"s":[30]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[49.5]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":432,"s":[49.5]},{"t":482,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":127,"s":[50.5]},{"i":{"x":[0.32],"y":[1]},"o":{"x":[0.82],"y":[0]},"t":197,"s":[50.5]},{"t":222,"s":[70],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":247,"s":[70]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[50.5]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":432,"s":[50.5]},{"t":482,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-465,"s":[0]},{"t":-447,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":222,"s":[{"i":[[3.179,6.167],[0,-15.352],[-2.581,5.008]],"o":[[-2.881,-5.59],[0,13.869],[3.179,-6.167]],"v":[[-10.45,-10.166],[10.648,-0.036],[-10.45,9.228]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":237,"s":[{"i":[[3.179,8.221],[0,-20.465],[-2.581,6.675]],"o":[[-2.881,-7.451],[0,18.488],[3.179,-8.221]],"v":[[-25.45,-13.344],[-4.352,0.16],[-25.45,12.509]],"c":true}]},{"t":263,"s":[{"i":[[3.179,6.167],[0,-15.352],[-2.581,5.008]],"o":[[-2.881,-5.59],[0,13.869],[3.179,-6.167]],"v":[[-11.7,-10.166],[9.398,-0.036],[-11.7,9.228]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":1,"k":[{"t":212,"s":[0],"h":1},{"t":222,"s":[100],"h":1},{"t":247,"s":[0],"h":1}],"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":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":198,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":3,"nm":"All Overview Scroll","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":227,"s":[-420.5]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":244,"s":[-215.7]},{"t":329,"s":[91.5]}],"ix":3},"y":{"a":0,"k":-350.5,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":22,"mn":"Pseudo/494931","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/494931-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/494931-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/494931-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/494931-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/494931-0005","ix":5,"v":0},{"ty":6,"nm":"Nulls are useless.","mn":"Pseudo/494931-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0007","ix":7,"v":0},{"ty":6,"nm":"They live in the Solids folder,","mn":"Pseudo/494931-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0009","ix":9,"v":0},{"ty":6,"nm":"must travel with projects, and","mn":"Pseudo/494931-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0011","ix":11,"v":0},{"ty":6,"nm":"may be deleted like footage.","mn":"Pseudo/494931-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0013","ix":13,"v":0},{"ty":6,"nm":"Don't use them anymore.","mn":"Pseudo/494931-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0015","ix":15,"v":0},{"ty":6,"nm":"Void - 0.7.1","mn":"Pseudo/494931-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0017","ix":17,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/494931-0018","ix":18,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0019","ix":19,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0020","ix":20,"v":0}]}],"ip":2,"op":445,"st":-37,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":3,"nm":"Initial Overview In","parent":11,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[-156]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[209]},{"t":148,"s":[206]}],"ix":3},"y":{"a":0,"k":532,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":22,"mn":"Pseudo/494931","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/494931-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/494931-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/494931-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/494931-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/494931-0005","ix":5,"v":0},{"ty":6,"nm":"Nulls are useless.","mn":"Pseudo/494931-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0007","ix":7,"v":0},{"ty":6,"nm":"They live in the Solids folder,","mn":"Pseudo/494931-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0009","ix":9,"v":0},{"ty":6,"nm":"must travel with projects, and","mn":"Pseudo/494931-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0011","ix":11,"v":0},{"ty":6,"nm":"may be deleted like footage.","mn":"Pseudo/494931-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0013","ix":13,"v":0},{"ty":6,"nm":"Don't use them anymore.","mn":"Pseudo/494931-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0015","ix":15,"v":0},{"ty":6,"nm":"Void - 0.7.1","mn":"Pseudo/494931-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0017","ix":17,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/494931-0018","ix":18,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0019","ix":19,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0020","ix":20,"v":0}]}],"ip":2,"op":445,"st":-37,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":3,"nm":"Loop App to Center","parent":12,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":-512,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[0]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":394.666,"s":[-34.6]},{"t":428,"s":[-86.5]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":2,"op":445,"st":-57,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":15,"sr":1,"ks":{"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-256,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[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,0],[18.976,-48.115],[0,0],[14.69,-5.794],[0,0],[-48.115,-18.977],[0,0],[-5.794,-14.69],[0,0],[-18.977,48.115],[0,0],[-14.69,5.794],[0,0],[48.115,18.976],[0,0],[5.794,14.69]],"o":[[-18.977,-48.115],[0,0],[-5.794,14.69],[0,0],[-48.115,18.976],[0,0],[14.69,5.794],[0,0],[18.976,48.115],[0,0],[5.794,-14.69],[0,0],[48.115,-18.977],[0,0],[-14.69,-5.794],[0,0]],"v":[[53.024,-96.229],[-53.024,-96.229],[-56.162,-88.274],[-88.274,-56.162],[-96.229,-53.024],[-96.229,53.024],[-88.274,56.161],[-56.162,88.273],[-53.024,96.228],[53.024,96.228],[56.161,88.273],[88.273,56.161],[96.228,53.024],[96.228,-53.024],[88.273,-56.162],[56.161,-88.274]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":57,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":444,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-45,"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":"Star 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":90,"op":445,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":12,"sr":1,"ks":{"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":388,"s":[-768]},{"t":412,"s":[-1098]}],"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[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,0],[8.421,-4.724],[0,0],[4.631,-0.057],[0,0],[4.931,-8.301],[0,0],[3.982,-2.365],[0,0],[0.12,-9.654],[0,0],[2.266,-4.039],[0,0],[-4.724,-8.421],[0,0],[-0.057,-4.631],[0,0],[-8.301,-4.931],[0,0],[-2.365,-3.982],[0,0],[-9.654,-0.119],[0,0],[-4.039,-2.266],[0,0],[-8.421,4.724],[0,0],[-4.631,0.057],[0,0],[-4.931,8.301],[0,0],[-3.982,2.365],[0,0],[-0.119,9.654],[0,0],[-2.266,4.039],[0,0],[4.724,8.421],[0,0],[0.057,4.631],[0,0],[8.301,4.931],[0,0],[2.365,3.982],[0,0],[9.654,0.12],[0,0],[4.039,2.266]],"o":[[-8.421,-4.724],[0,0],[-4.039,2.266],[0,0],[-9.654,0.12],[0,0],[-2.365,3.982],[0,0],[-8.301,4.931],[0,0],[-0.057,4.631],[0,0],[-4.724,8.421],[0,0],[2.266,4.039],[0,0],[0.12,9.655],[0,0],[3.982,2.365],[0,0],[4.931,8.301],[0,0],[4.631,0.057],[0,0],[8.421,4.724],[0,0],[4.039,-2.266],[0,0],[9.654,-0.119],[0,0],[2.365,-3.982],[0,0],[8.301,-4.931],[0,0],[0.057,-4.631],[0,0],[4.724,-8.421],[0,0],[-2.266,-4.039],[0,0],[-0.119,-9.654],[0,0],[-3.982,-2.365],[0,0],[-4.931,-8.301],[0,0],[-4.631,-0.057],[0,0]],"v":[[13.557,-175.395],[-13.557,-175.395],[-36.472,-162.541],[-49.685,-159.001],[-75.957,-158.675],[-99.438,-145.118],[-112.856,-122.529],[-122.529,-112.856],[-145.118,-99.438],[-158.675,-75.957],[-159.001,-49.685],[-162.541,-36.472],[-175.395,-13.557],[-175.395,13.557],[-162.541,36.472],[-159.001,49.685],[-158.675,75.957],[-145.118,99.438],[-122.529,112.856],[-112.856,122.529],[-99.438,145.119],[-75.957,158.675],[-49.685,159.001],[-36.472,162.541],[-13.557,175.395],[13.557,175.395],[36.472,162.541],[49.685,159.001],[75.957,158.675],[99.438,145.119],[112.856,122.529],[122.529,112.856],[145.119,99.438],[158.675,75.957],[159.001,49.685],[162.541,36.472],[175.395,13.557],[175.395,-13.557],[162.541,-36.472],[159.001,-49.685],[158.675,-75.957],[145.119,-99.438],[122.529,-112.856],[112.856,-122.529],[99.438,-145.118],[75.957,-158.675],[49.685,-159.001],[36.472,-162.541]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":28,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":444,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[70,70],"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":"Star 9","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":90,"op":445,"st":-37,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":245,"s":[50]},{"i":{"x":[0.833],"y":[0.619]},"o":{"x":[0.167],"y":[0]},"t":329,"s":[100]},{"i":{"x":[0.82],"y":[0]},"o":{"x":[0.78],"y":[0]},"t":409,"s":[95]},{"t":434,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":9,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[220]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":393,"s":[468.4]},{"t":418,"s":[841]}],"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[220]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":393,"s":[412.4]},{"t":418,"s":[701]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[60]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":393,"s":[43.2]},{"t":418,"s":[18]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"k":[{"s":[60],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"k":[{"s":[60],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"k":[{"s":[60],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]},{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":2,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":1,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[-453.5,437],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-451.394,437],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-444.06,437],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-429.42,437],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-404.609,437],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-367.146,437],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-319.437,437],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-271,437],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-229.538,437],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-196.441,437],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-170.42,437],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-149.937,437],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-133.772,437],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-121.025,437],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-111.04,437],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-103.331,437],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-97.527,437],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-93.345,437],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-90.561,437],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-88.994,437],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-88.5,437],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-88.538,437],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-88.646,437],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-88.812,437],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-89.026,437],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-89.278,437],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-89.556,437],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-89.85,437],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-90.15,437],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-90.444,437],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-90.722,437],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-90.974,437],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-91.188,437],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-91.354,437],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-91.462,437],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-91.5,437],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-91.108,437],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-89.928,437],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-87.941,437],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-85.108,437],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-81.374,437],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-76.666,437],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-70.891,437],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-63.931,437],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-55.635,437],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-45.809,437],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-34.194,437],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-20.442,437],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-4.059,437],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[15.691,437],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[39.987,437],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[70.961,437],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[113.3,437],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[160.183,437],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[197.01,437],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[224.779,437],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[246.21,437],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[263.332,437],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[277.435,437],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[289.337,437],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[299.575,437],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[308.516,437],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[316.422,437],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[323.483,437],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[329.841,437],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[335.607,437],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[340.868,437],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[345.692,437],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[350.135,437],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[354.243,437],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[358.054,437],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[361.6,437],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[364.909,437],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[368.003,437],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[370.903,437],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[373.627,437],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[376.188,437],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[378.601,437],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[380.877,437],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[383.027,437],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[385.06,437],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[386.984,437],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[388.807,437],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[390.536,437],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[392.176,437],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[393.734,437],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[395.214,437],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[396.62,437],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[397.958,437],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[399.231,437],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[400.443,437],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[401.596,437],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[402.694,437],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[403.74,437],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[404.736,437],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[405.685,437],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[406.588,437],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[407.449,437],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[408.269,437],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[409.049,437],"t":291,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[409.793,437],"t":292,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[410.5,437],"t":293,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[411.173,437],"t":294,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[411.813,437],"t":295,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[412.422,437],"t":296,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[413,437],"t":297,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[413.549,437],"t":298,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[414.071,437],"t":299,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[414.565,437],"t":300,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[415.033,437],"t":301,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[415.477,437],"t":302,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[415.896,437],"t":303,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[416.292,437],"t":304,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[416.666,437],"t":305,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[417.018,437],"t":306,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[417.35,437],"t":307,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[417.661,437],"t":308,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[417.953,437],"t":309,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[418.225,437],"t":310,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[418.48,437],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[418.717,437],"t":312,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[418.937,437],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[419.327,437],"t":315,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[419.655,437],"t":317,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.038,437],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.451,437],"t":326,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,436.567],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,435.217],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,432.777],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,428.912],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,422.963],"t":393,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,413.35],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,395.555],"t":395,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,382.006],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,374.776],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,370.148],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,366.833],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,364.298],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,362.279],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,360.625],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,359.243],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,358.07],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,357.064],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,356.194],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,355.436],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,354.772],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,354.189],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,353.675],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,353.221],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,352.821],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,352.467],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,352.155],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,351.88],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,351.638],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,351.427],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,351.085],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,350.74],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-33.114,0],[0,0],[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114]],"o":[[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114],[0,0],[-33.114,0],[0,0]],"v":[[-110,-50],[-50,-110],[50,-110],[110,-50],[110,50],[50,110],[-50,110],[-110,50]],"c":true}],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-32.906,0],[0,0],[0,-32.906],[0,0],[32.906,0],[0,0],[0,32.906]],"o":[[0,-32.906],[0,0],[32.906,0],[0,0],[0,32.906],[0,0],[-32.906,0],[0,0]],"v":[[-112.782,-52.531],[-53.158,-112.155],[53.158,-112.155],[112.782,-52.531],[112.782,52.531],[53.158,112.155],[-53.158,112.155],[-112.782,52.531]],"c":true}],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-32.237,0],[0,0],[0,-32.237],[0,0],[32.237,0],[0,0],[0,32.237]],"o":[[0,-32.237],[0,0],[32.237,0],[0,0],[0,32.237],[0,0],[-32.237,0],[0,0]],"v":[[-121.743,-60.684],[-63.331,-119.095],[63.331,-119.095],[121.743,-60.684],[121.743,60.684],[63.331,119.095],[-63.331,119.095],[-121.743,60.684]],"c":true}],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-30.947,0],[0,0],[0,-30.947],[0,0],[30.947,0],[0,0],[0,30.947]],"o":[[0,-30.947],[0,0],[30.947,0],[0,0],[0,30.947],[0,0],[-30.947,0],[0,0]],"v":[[-139.025,-76.408],[-82.951,-132.482],[82.951,-132.482],[139.025,-76.408],[139.025,76.408],[82.951,132.482],[-82.951,132.482],[-139.025,76.408]],"c":true}],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-28.64,0],[0,0],[0,-28.64],[0,0],[28.64,0],[0,0],[0,28.64]],"o":[[0,-28.64],[0,0],[28.64,0],[0,0],[0,28.64],[0,0],[-28.64,0],[0,0]],"v":[[-169.932,-104.527],[-118.039,-156.421],[118.039,-156.421],[169.932,-104.527],[169.932,104.527],[118.039,156.421],[-118.039,156.421],[-169.932,104.527]],"c":true}],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-23.842,0],[0,0],[0,-23.842],[0,0],[23.842,0],[0,0],[0,23.842]],"o":[[0,-23.842],[0,0],[23.842,0],[0,0],[0,23.842],[0,0],[-23.842,0],[0,0]],"v":[[-234.2,-163],[-191,-206.2],[191,-206.2],[234.2,-163],[234.2,163],[191,206.2],[-191,206.2],[-234.2,163]],"c":true}],"t":393,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-18.379,0],[0,0],[0,-18.379],[0,0],[18.379,0],[0,0],[0,18.379]],"o":[[0,-18.379],[0,0],[18.379,0],[0,0],[0,18.379],[0,0],[-18.379,0],[0,0]],"v":[[-307.385,-229.585],[-274.084,-262.886],[274.084,-262.886],[307.385,-229.585],[307.385,229.585],[274.084,262.886],[-274.084,262.886],[-307.385,229.585]],"c":true}],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-15.973,0],[0,0],[0,-15.973],[0,0],[15.973,0],[0,0],[0,15.973]],"o":[[0,-15.973],[0,0],[15.973,0],[0,0],[0,15.973],[0,0],[-15.973,0],[0,0]],"v":[[-339.603,-258.898],[-310.66,-287.84],[310.66,-287.84],[339.603,-258.898],[339.603,258.898],[310.66,287.84],[-310.66,287.84],[-339.603,258.898]],"c":true}],"t":395,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-14.579,0],[0,0],[0,-14.579],[0,0],[14.579,0],[0,0],[0,14.579]],"o":[[0,-14.579],[0,0],[14.579,0],[0,0],[0,14.579],[0,0],[-14.579,0],[0,0]],"v":[[-358.277,-275.888],[-331.86,-302.305],[331.86,-302.305],[358.277,-275.888],[358.277,275.888],[331.86,302.305],[-331.86,302.305],[-358.277,275.888]],"c":true}],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-13.632,0],[0,0],[0,-13.632],[0,0],[13.632,0],[0,0],[0,13.632]],"o":[[0,-13.632],[0,0],[13.632,0],[0,0],[0,13.632],[0,0],[-13.632,0],[0,0]],"v":[[-370.965,-287.432],[-346.265,-312.133],[346.265,-312.133],[370.965,-287.432],[370.965,287.432],[346.265,312.133],[-346.265,312.133],[-370.965,287.432]],"c":true}],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-12.934,0],[0,0],[0,-12.934],[0,0],[12.934,0],[0,0],[0,12.934]],"o":[[0,-12.934],[0,0],[12.934,0],[0,0],[0,12.934],[0,0],[-12.934,0],[0,0]],"v":[[-380.319,-295.942],[-356.883,-319.377],[356.884,-319.377],[380.319,-295.942],[380.319,295.942],[356.884,319.377],[-356.883,319.377],[-380.319,295.942]],"c":true}],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-12.394,0],[0,0],[0,-12.394],[0,0],[12.394,0],[0,0],[0,12.394]],"o":[[0,-12.394],[0,0],[12.394,0],[0,0],[0,12.394],[0,0],[-12.394,0],[0,0]],"v":[[-387.553,-302.524],[-365.096,-324.98],[365.096,-324.98],[387.553,-302.524],[387.553,302.524],[365.096,324.98],[-365.096,324.98],[-387.553,302.524]],"c":true}],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.963,0],[0,0],[0,-11.963],[0,0],[11.963,0],[0,0],[0,11.963]],"o":[[0,-11.963],[0,0],[11.963,0],[0,0],[0,11.963],[0,0],[-11.963,0],[0,0]],"v":[[-393.324,-307.775],[-371.648,-329.451],[371.648,-329.451],[393.324,-307.775],[393.324,307.775],[371.648,329.451],[-371.648,329.451],[-393.324,307.775]],"c":true}],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.612,0],[0,0],[0,-11.612],[0,0],[11.612,0],[0,0],[0,11.612]],"o":[[0,-11.612],[0,0],[11.612,0],[0,0],[0,11.612],[0,0],[-11.612,0],[0,0]],"v":[[-398.027,-312.053],[-376.987,-333.093],[376.987,-333.093],[398.027,-312.053],[398.027,312.053],[376.987,333.093],[-376.987,333.093],[-398.027,312.053]],"c":true}],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.322,0],[0,0],[0,-11.322],[0,0],[11.322,0],[0,0],[0,11.322]],"o":[[0,-11.322],[0,0],[11.322,0],[0,0],[0,11.322],[0,0],[-11.322,0],[0,0]],"v":[[-401.916,-315.591],[-381.402,-336.105],[381.402,-336.105],[401.916,-315.591],[401.916,315.591],[381.402,336.105],[-381.402,336.105],[-401.916,315.591]],"c":true}],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.079,0],[0,0],[0,-11.079],[0,0],[11.079,0],[0,0],[0,11.079]],"o":[[0,-11.079],[0,0],[11.079,0],[0,0],[0,11.079],[0,0],[-11.079,0],[0,0]],"v":[[-405.165,-318.548],[-385.091,-338.622],[385.091,-338.622],[405.165,-318.548],[405.165,318.548],[385.091,338.622],[-385.091,338.622],[-405.165,318.548]],"c":true}],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.875,0],[0,0],[0,-10.875],[0,0],[10.875,0],[0,0],[0,10.875]],"o":[[0,-10.875],[0,0],[10.875,0],[0,0],[0,10.875],[0,0],[-10.875,0],[0,0]],"v":[[-407.9,-321.036],[-388.195,-340.74],[388.195,-340.74],[407.9,-321.036],[407.9,321.036],[388.195,340.74],[-388.195,340.74],[-407.9,321.036]],"c":true}],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.702,0],[0,0],[0,-10.702],[0,0],[10.702,0],[0,0],[0,10.702]],"o":[[0,-10.702],[0,0],[10.702,0],[0,0],[0,10.702],[0,0],[-10.702,0],[0,0]],"v":[[-410.211,-323.139],[-390.82,-342.531],[390.82,-342.531],[410.211,-323.139],[410.211,323.139],[390.82,342.531],[-390.82,342.531],[-410.211,323.139]],"c":true}],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.556,0],[0,0],[0,-10.556],[0,0],[10.556,0],[0,0],[0,10.556]],"o":[[0,-10.556],[0,0],[10.556,0],[0,0],[0,10.556],[0,0],[-10.556,0],[0,0]],"v":[[-412.17,-324.921],[-393.043,-344.048],[393.043,-344.048],[412.17,-324.921],[412.17,324.921],[393.043,344.048],[-393.043,344.048],[-412.17,324.921]],"c":true}],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.432,0],[0,0],[0,-10.432],[0,0],[10.432,0],[0,0],[0,10.432]],"o":[[0,-10.432],[0,0],[10.432,0],[0,0],[0,10.432],[0,0],[-10.432,0],[0,0]],"v":[[-413.829,-326.431],[-394.927,-345.333],[394.927,-345.333],[413.829,-326.431],[413.829,326.431],[394.927,345.333],[-394.927,345.333],[-413.829,326.431]],"c":true}],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.327,0],[0,0],[0,-10.327],[0,0],[10.327,0],[0,0],[0,10.328]],"o":[[0,-10.327],[0,0],[10.327,0],[0,0],[0,10.328],[0,0],[-10.327,0],[0,0]],"v":[[-415.232,-327.707],[-396.519,-346.42],[396.519,-346.42],[415.232,-327.707],[415.232,327.707],[396.519,346.42],[-396.519,346.42],[-415.232,327.707]],"c":true}],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.239,0],[0,0],[0,-10.239],[0,0],[10.239,0],[0,0],[0,10.239]],"o":[[0,-10.239],[0,0],[10.239,0],[0,0],[0,10.239],[0,0],[-10.239,0],[0,0]],"v":[[-416.413,-328.782],[-397.86,-347.335],[397.86,-347.335],[416.413,-328.782],[416.413,328.782],[397.86,347.335],[-397.86,347.335],[-416.413,328.782]],"c":true}],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.166,0],[0,0],[0,-10.166],[0,0],[10.166,0],[0,0],[0,10.166]],"o":[[0,-10.166],[0,0],[10.166,0],[0,0],[0,10.166],[0,0],[-10.166,0],[0,0]],"v":[[-417.401,-329.68],[-398.982,-348.1],[398.982,-348.1],[417.401,-329.68],[417.401,329.68],[398.982,348.1],[-398.982,348.1],[-417.401,329.68]],"c":true}],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.104,0],[0,0],[0,-10.104],[0,0],[10.104,0],[0,0],[0,10.104]],"o":[[0,-10.104],[0,0],[10.104,0],[0,0],[0,10.104],[0,0],[-10.104,0],[0,0]],"v":[[-418.219,-330.424],[-399.91,-348.733],[399.91,-348.733],[418.219,-330.424],[418.219,330.424],[399.91,348.733],[-399.91,348.733],[-418.219,330.424]],"c":true}],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.055,0],[0,0],[0,-10.055],[0,0],[10.055,0],[0,0],[0,10.055]],"o":[[0,-10.055],[0,0],[10.055,0],[0,0],[0,10.055],[0,0],[-10.055,0],[0,0]],"v":[[-418.886,-331.031],[-400.667,-349.25],[400.667,-349.25],[418.886,-331.031],[418.886,331.031],[400.667,349.25],[-400.667,349.25],[-418.886,331.031]],"c":true}],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.015,0],[0,0],[0,-10.015],[0,0],[10.015,0],[0,0],[0,10.015]],"o":[[0,-10.015],[0,0],[10.015,0],[0,0],[0,10.015],[0,0],[-10.015,0],[0,0]],"v":[[-419.419,-331.516],[-401.272,-349.663],[401.272,-349.663],[419.419,-331.516],[419.419,331.516],[401.272,349.663],[-401.272,349.663],[-419.419,331.516]],"c":true}],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.984,0],[0,0],[0,-9.984],[0,0],[9.984,0],[0,0],[0,9.984]],"o":[[0,-9.984],[0,0],[9.984,0],[0,0],[0,9.984],[0,0],[-9.984,0],[0,0]],"v":[[-419.832,-331.892],[-401.741,-349.982],[401.741,-349.982],[419.832,-331.892],[419.832,331.892],[401.741,349.982],[-401.741,349.982],[-419.832,331.892]],"c":true}],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.961,0],[0,0],[0,-9.961],[0,0],[9.961,0],[0,0],[0,9.961]],"o":[[0,-9.961],[0,0],[9.961,0],[0,0],[0,9.961],[0,0],[-9.961,0],[0,0]],"v":[[-420.136,-332.169],[-402.087,-350.218],[402.087,-350.218],[420.136,-332.169],[420.136,332.169],[402.087,350.218],[-402.087,350.218],[-420.136,332.169]],"c":true}],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.946,0],[0,0],[0,-9.946],[0,0],[9.946,0],[0,0],[0,9.946]],"o":[[0,-9.946],[0,0],[9.946,0],[0,0],[0,9.946],[0,0],[-9.946,0],[0,0]],"v":[[-420.344,-332.358],[-402.322,-350.379],[402.322,-350.379],[420.344,-332.358],[420.344,332.358],[402.322,350.379],[-402.322,350.379],[-420.344,332.358]],"c":true}],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.937,0],[0,0],[0,-9.937],[0,0],[9.937,0],[0,0],[0,9.937]],"o":[[0,-9.937],[0,0],[9.937,0],[0,0],[0,9.937],[0,0],[-9.937,0],[0,0]],"v":[[-420.462,-332.465],[-402.457,-350.471],[402.457,-350.471],[420.462,-332.465],[420.462,332.465],[402.457,350.471],[-402.457,350.471],[-420.462,332.465]],"c":true}],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":444,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":90,"op":445,"st":-37,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.83],"y":[0.83]},"o":{"x":[0.52],"y":[0]},"t":227,"s":[50]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.17],"y":[0.17]},"t":245,"s":[100]},{"t":262,"s":[50]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":388,"s":[-256,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":412,"s":[64,0,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[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,0],[18.976,-48.115],[0,0],[14.69,-5.794],[0,0],[-48.115,-18.977],[0,0],[-5.794,-14.69],[0,0],[-18.977,48.115],[0,0],[-14.69,5.794],[0,0],[48.115,18.976],[0,0],[5.794,14.69]],"o":[[-18.977,-48.115],[0,0],[-5.794,14.69],[0,0],[-48.115,18.976],[0,0],[14.69,5.794],[0,0],[18.976,48.115],[0,0],[5.794,-14.69],[0,0],[48.115,-18.977],[0,0],[-14.69,-5.794],[0,0]],"v":[[53.024,-96.229],[-53.024,-96.229],[-56.162,-88.274],[-88.274,-56.162],[-96.229,-53.024],[-96.229,53.024],[-88.274,56.161],[-56.162,88.273],[-53.024,96.228],[53.024,96.228],[56.161,88.273],[88.273,56.161],[96.228,53.024],[96.228,-53.024],[88.273,-56.162],[56.161,-88.274]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":57,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":444,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-45,"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":"Star 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":90,"op":445,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":19,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":31,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":49,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":71,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.52],"y":[0]},"t":227,"s":[100]},{"t":245,"s":[50]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.15,"y":1},"o":{"x":0.37,"y":0},"t":53,"s":[206,752,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.15,"y":0.15},"o":{"x":0.37,"y":0.37},"t":101,"s":[206,421,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":388,"s":[206,421,0],"to":[0,0,0],"ti":[0,0,0]},{"t":412,"s":[526,421,0]}],"ix":2,"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":2,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":63,"s":[843]},{"t":101,"s":[352],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":113,"s":[352]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[216]},{"t":148,"s":[220]}],"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":63,"s":[582]},{"t":101,"s":[352],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":113,"s":[352]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[216]},{"t":148,"s":[220]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":63,"s":[90]},{"t":101,"s":[80],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":113,"s":[80]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[64]},{"t":148,"s":[60]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"k":[{"s":[89.923],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"k":[{"s":[89.923],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"k":[{"s":[89.923],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]},{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":2,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":1,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[420.5,656.633],"t":54,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,655.454],"t":55,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,653.33],"t":56,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,650.094],"t":57,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,645.545],"t":58,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,639.442],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,631.497],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,621.407],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,608.886],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,593.79],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,576.278],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,556.958],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,536.805],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,516.874],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,497.965],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,480.511],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,464.641],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,450.32],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,437.437],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,425.847],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,415.403],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,405.982],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,397.465],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,389.749],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,382.755],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,376.405],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,370.636],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,365.395],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,360.631],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,356.307],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,352.382],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,348.824],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,345.61],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,342.711],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,340.105],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,337.771],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,335.694],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,333.857],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,332.245],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,330.844],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,329.643],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,328.63],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,327.795],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,327.13],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,326.625],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.5,326.273],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[420.892,326],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[422.072,326],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[424.059,326],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[426.892,326],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[430.626,326],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[435.334,326],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[441.109,326],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[448.069,326],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[456.365,326],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[466.191,326],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[477.806,326],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[491.558,326],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[507.941,326],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[527.691,326],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[551.987,326],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[582.961,326],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[625.3,326],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[672.183,326],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[709.01,326],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[736.779,326],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[758.21,326],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[775.332,326],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[789.435,326],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[801.337,326],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[811.575,326],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[820.516,326],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[828.422,326],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[835.483,326],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[841.841,326],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[847.607,326],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[852.868,326],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[857.692,326],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[862.135,326],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[866.243,326],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[870.054,326],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[873.6,326],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[876.909,326],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[880.003,326],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[882.903,326],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[885.627,326],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[888.188,326],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[890.601,326],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[892.877,326],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[895.027,326],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[897.06,326],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[898.984,326],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[900.807,326],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[902.536,326],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[904.176,326],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[905.734,326],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[907.214,326],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[908.62,326],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[909.958,326],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[911.231,326],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[912.443,326],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[913.596,326],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[914.694,326],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[915.74,326],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[916.736,326],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[917.685,326],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[918.588,326],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[919.449,326],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[920.269,326],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[921.049,326],"t":291,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[921.793,326],"t":292,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[922.5,326],"t":293,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[923.173,326],"t":294,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[923.813,326],"t":295,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[924.422,326],"t":296,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[925,326],"t":297,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[925.549,326],"t":298,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[926.071,326],"t":299,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[926.565,326],"t":300,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[927.477,326],"t":302,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[928.292,326],"t":304,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[929.018,326],"t":306,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[929.661,326],"t":308,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[930.48,326],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[931.327,326],"t":315,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[932.226,326],"t":322,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[932.5,326],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[938.488,326],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[964.354,326],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1014.277,326],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1062.528,326],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1098.987,326],"t":393,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1126.81,326],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1148.813,326],"t":395,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1166.701,326],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1181.518,326],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1193.951,326],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1204.468,326],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1213.407,326],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1221.018,326],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1227.494,326],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1232.987,326],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1237.615,326],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1241.477,326],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1244.654,326],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1247.213,326],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1249.212,326],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1250.701,326],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1251.721,326],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[49.671,0],[0,0],[0,49.671]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,49.671],[0,0],[-49.671,0],[0,0]],"v":[[-421.5,90],[-331.5,0],[331.5,0],[421.5,90],[421.5,492],[331.5,582],[-331.5,582],[-421.5,492]],"c":true}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.661,0],[0,0],[0,-49.661],[0,0],[49.661,0],[0,0],[0,49.661]],"o":[[0,-49.661],[0,0],[49.661,0],[0,0],[0,49.661],[0,0],[-49.661,0],[0,0]],"v":[[-421.06,89.982],[-331.078,0],[331.078,0],[421.06,89.982],[421.06,491.605],[331.078,581.587],[-331.078,581.587],[-421.06,491.605]],"c":true}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.629,0],[0,0],[0,-49.629],[0,0],[49.629,0],[0,0],[0,49.629]],"o":[[0,-49.629],[0,0],[49.629,0],[0,0],[0,49.629],[0,0],[-49.629,0],[0,0]],"v":[[-419.619,89.923],[-329.695,0],[329.695,0],[419.619,89.923],[419.619,490.314],[329.695,580.237],[-329.695,580.237],[-419.619,490.314]],"c":true}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.569,0],[0,0],[0,-49.569],[0,0],[49.569,0],[0,0],[0,49.569]],"o":[[0,-49.569],[0,0],[49.569,0],[0,0],[0,49.569],[0,0],[-49.569,0],[0,0]],"v":[[-416.958,89.815],[-327.143,0],[327.143,0],[416.958,89.815],[416.958,487.93],[327.143,577.745],[-327.143,577.745],[-416.958,487.93]],"c":true}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.475,0],[0,0],[0,-49.475],[0,0],[49.475,0],[0,0],[0,49.475]],"o":[[0,-49.475],[0,0],[49.475,0],[0,0],[0,49.475],[0,0],[-49.475,0],[0,0]],"v":[[-412.797,89.645],[-323.151,0],[323.151,0],[412.797,89.645],[412.797,484.201],[323.151,573.846],[-323.151,573.846],[-412.797,484.201]],"c":true}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.34,0],[0,0],[0,-49.34],[0,0],[49.34,0],[0,0],[0,49.34]],"o":[[0,-49.34],[0,0],[49.34,0],[0,0],[0,49.34],[0,0],[-49.34,0],[0,0]],"v":[[-406.775,89.4],[-317.375,0],[317.375,0],[406.775,89.4],[406.775,478.804],[317.375,568.205],[-317.375,568.205],[-406.775,478.804]],"c":true}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.153,0],[0,0],[0,-49.153],[0,0],[49.153,0],[0,0],[0,49.153]],"o":[[0,-49.153],[0,0],[49.153,0],[0,0],[0,49.153],[0,0],[-49.153,0],[0,0]],"v":[[-398.461,89.062],[-309.4,0],[309.4,0],[398.461,89.062],[398.461,471.354],[309.4,560.416],[-309.4,560.416],[-398.461,471.354]],"c":true}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.905,0],[0,0],[0,-48.905],[0,0],[48.905,0],[0,0],[0,48.905]],"o":[[0,-48.905],[0,0],[48.905,0],[0,0],[0,48.905],[0,0],[-48.905,0],[0,0]],"v":[[-387.407,88.611],[-298.795,0],[298.795,0],[387.407,88.611],[387.407,461.448],[298.795,550.059],[-298.795,550.059],[-387.407,461.448]],"c":true}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.588,0],[0,0],[0,-48.588],[0,0],[48.588,0],[0,0],[0,48.588]],"o":[[0,-48.588],[0,0],[48.588,0],[0,0],[0,48.588],[0,0],[-48.588,0],[0,0]],"v":[[-373.33,88.038],[-285.292,0],[285.292,0],[373.33,88.038],[373.33,448.834],[285.292,536.872],[-285.292,536.872],[-373.33,448.834]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.209,0],[0,0],[0,-48.209],[0,0],[48.209,0],[0,0],[0,48.209]],"o":[[0,-48.209],[0,0],[48.209,0],[0,0],[0,48.209],[0,0],[-48.209,0],[0,0]],"v":[[-356.473,87.351],[-269.122,0],[269.122,0],[356.473,87.351],[356.473,433.728],[269.122,521.079],[-269.122,521.079],[-356.473,433.728]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-47.791,0],[0,0],[0,-47.791],[0,0],[47.791,0],[0,0],[0,47.791]],"o":[[0,-47.791],[0,0],[47.791,0],[0,0],[0,47.791],[0,0],[-47.791,0],[0,0]],"v":[[-337.88,86.594],[-251.286,0],[251.286,0],[337.88,86.594],[337.88,417.066],[251.286,503.66],[-251.286,503.66],[-337.88,417.066]],"c":true}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-47.369,0],[0,0],[0,-47.369],[0,0],[47.369,0],[0,0],[0,47.369]],"o":[[0,-47.369],[0,0],[47.369,0],[0,0],[0,47.369],[0,0],[-47.369,0],[0,0]],"v":[[-319.099,85.829],[-233.27,0],[233.27,0],[319.099,85.829],[319.099,400.235],[233.27,486.064],[-233.27,486.064],[-319.099,400.235]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.972,0],[0,0],[0,-46.972],[0,0],[46.972,0],[0,0],[0,46.972]],"o":[[0,-46.972],[0,0],[46.972,0],[0,0],[0,46.972],[0,0],[-46.972,0],[0,0]],"v":[[-301.424,85.109],[-216.315,0],[216.315,0],[301.424,85.109],[301.424,384.396],[216.315,469.505],[-216.315,469.505],[-301.424,384.396]],"c":true}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.614,0],[0,0],[0,-46.614],[0,0],[46.614,0],[0,0],[0,46.614]],"o":[[0,-46.614],[0,0],[46.614,0],[0,0],[0,46.614],[0,0],[-46.614,0],[0,0]],"v":[[-285.496,84.46],[-201.036,0],[201.036,0],[285.496,84.46],[285.496,370.123],[201.036,454.583],[-201.036,454.583],[-285.496,370.123]],"c":true}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.298,0],[0,0],[0,-46.298],[0,0],[46.298,0],[0,0],[0,46.298]],"o":[[0,-46.298],[0,0],[46.298,0],[0,0],[0,46.298],[0,0],[-46.298,0],[0,0]],"v":[[-271.44,83.888],[-187.553,0],[187.553,0],[271.44,83.888],[271.44,357.527],[187.553,441.415],[-187.553,441.415],[-271.44,357.527]],"c":true}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.021,0],[0,0],[0,-46.021],[0,0],[46.021,0],[0,0],[0,46.021]],"o":[[0,-46.021],[0,0],[46.021,0],[0,0],[0,46.021],[0,0],[-46.021,0],[0,0]],"v":[[-259.129,83.386],[-175.743,0],[175.743,0],[259.129,83.386],[259.129,346.495],[175.743,429.881],[-175.743,429.881],[-259.129,346.495]],"c":true}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.779,0],[0,0],[0,-45.779],[0,0],[45.779,0],[0,0],[0,45.779]],"o":[[0,-45.779],[0,0],[45.779,0],[0,0],[0,45.779],[0,0],[-45.779,0],[0,0]],"v":[[-248.356,82.947],[-165.409,0],[165.409,0],[248.356,82.947],[248.356,336.841],[165.409,419.788],[-165.409,419.788],[-248.356,336.841]],"c":true}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.566,0],[0,0],[0,-45.566],[0,0],[45.566,0],[0,0],[0,45.566]],"o":[[0,-45.566],[0,0],[45.566,0],[0,0],[0,45.566],[0,0],[-45.566,0],[0,0]],"v":[[-238.91,82.563],[-156.348,0],[156.348,0],[238.91,82.563],[238.91,328.376],[156.348,410.938],[-156.348,410.938],[-238.91,328.376]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.38,0],[0,0],[0,-45.38],[0,0],[45.38,0],[0,0],[0,45.38]],"o":[[0,-45.38],[0,0],[45.38,0],[0,0],[0,45.38],[0,0],[-45.38,0],[0,0]],"v":[[-230.605,82.224],[-148.381,0],[148.381,0],[230.605,82.224],[230.605,320.933],[148.381,403.157],[-148.381,403.157],[-230.605,320.933]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.215,0],[0,0],[0,-45.215],[0,0],[45.215,0],[0,0],[0,45.215]],"o":[[0,-45.215],[0,0],[45.215,0],[0,0],[0,45.215],[0,0],[-45.215,0],[0,0]],"v":[[-223.282,81.926],[-141.356,0],[141.356,0],[223.282,81.926],[223.282,314.371],[141.356,396.297],[-141.356,396.297],[-223.282,314.371]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.069,0],[0,0],[0,-45.069],[0,0],[45.069,0],[0,0],[0,45.069]],"o":[[0,-45.069],[0,0],[45.069,0],[0,0],[0,45.069],[0,0],[-45.069,0],[0,0]],"v":[[-216.811,81.662],[-135.148,0],[135.148,0],[216.811,81.662],[216.811,308.572],[135.148,390.234],[-135.148,390.234],[-216.811,308.572]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.941,0],[0,0],[0,-44.941],[0,0],[44.941,0],[0,0],[0,44.941]],"o":[[0,-44.941],[0,0],[44.941,0],[0,0],[0,44.941],[0,0],[-44.941,0],[0,0]],"v":[[-211.082,81.429],[-129.653,0],[129.653,0],[211.082,81.429],[211.082,303.438],[129.653,384.867],[-129.653,384.867],[-211.082,303.438]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.827,0],[0,0],[0,-44.827],[0,0],[44.827,0],[0,0],[0,44.827]],"o":[[0,-44.827],[0,0],[44.827,0],[0,0],[0,44.827],[0,0],[-44.827,0],[0,0]],"v":[[-206.006,81.222],[-124.784,0],[124.784,0],[206.006,81.222],[206.006,298.89],[124.784,380.112],[-124.784,380.112],[-206.006,298.89]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.725,0],[0,0],[0,-44.725],[0,0],[44.725,0],[0,0],[0,44.725]],"o":[[0,-44.725],[0,0],[44.725,0],[0,0],[0,44.725],[0,0],[-44.725,0],[0,0]],"v":[[-201.509,81.039],[-120.47,0],[120.47,0],[201.509,81.039],[201.509,294.859],[120.47,375.898],[-120.47,375.898],[-201.509,294.859]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.636,0],[0,0],[0,-44.636],[0,0],[44.636,0],[0,0],[0,44.636]],"o":[[0,-44.636],[0,0],[44.636,0],[0,0],[0,44.636],[0,0],[-44.636,0],[0,0]],"v":[[-197.527,80.877],[-116.65,0],[116.65,0],[197.527,80.877],[197.527,291.291],[116.65,372.168],[-116.65,372.168],[-197.527,291.291]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.557,0],[0,0],[0,-44.557],[0,0],[44.557,0],[0,0],[0,44.557]],"o":[[0,-44.557],[0,0],[44.557,0],[0,0],[0,44.557],[0,0],[-44.557,0],[0,0]],"v":[[-194.007,80.733],[-113.274,0],[113.274,0],[194.007,80.733],[194.007,288.137],[113.274,368.87],[-113.274,368.87],[-194.007,288.137]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.487,0],[0,0],[0,-44.487],[0,0],[44.487,0],[0,0],[0,44.487]],"o":[[0,-44.487],[0,0],[44.487,0],[0,0],[0,44.487],[0,0],[-44.487,0],[0,0]],"v":[[-190.904,80.607],[-110.297,0],[110.297,0],[190.904,80.607],[190.904,285.356],[110.297,365.963],[-110.297,365.963],[-190.904,285.356]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.426,0],[0,0],[0,-44.426],[0,0],[44.426,0],[0,0],[0,44.426]],"o":[[0,-44.426],[0,0],[44.426,0],[0,0],[0,44.426],[0,0],[-44.426,0],[0,0]],"v":[[-188.18,80.496],[-107.684,0],[107.684,0],[188.18,80.496],[188.18,282.915],[107.684,363.411],[-107.684,363.411],[-188.18,282.915]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.372,0],[0,0],[0,-44.372],[0,0],[44.372,0],[0,0],[0,44.372]],"o":[[0,-44.372],[0,0],[44.372,0],[0,0],[0,44.372],[0,0],[-44.372,0],[0,0]],"v":[[-185.8,80.399],[-105.401,0],[105.401,0],[185.8,80.399],[185.8,280.782],[105.401,361.182],[-105.401,361.182],[-185.8,280.782]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.326,0],[0,0],[0,-44.326],[0,0],[44.326,0],[0,0],[0,44.326]],"o":[[0,-44.326],[0,0],[44.326,0],[0,0],[0,44.326],[0,0],[-44.326,0],[0,0]],"v":[[-183.736,80.315],[-103.421,0],[103.421,0],[183.736,80.315],[183.736,278.933],[103.421,359.248],[-103.421,359.248],[-183.736,278.933]],"c":true}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.286,0],[0,0],[0,-44.286],[0,0],[44.286,0],[0,0],[0,44.286]],"o":[[0,-44.286],[0,0],[44.286,0],[0,0],[0,44.286],[0,0],[-44.286,0],[0,0]],"v":[[-181.963,80.243],[-101.72,0],[101.72,0],[181.963,80.243],[181.963,277.344],[101.72,357.586],[-101.72,357.586],[-181.963,277.344]],"c":true}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.252,0],[0,0],[0,-44.252],[0,0],[44.252,0],[0,0],[0,44.252]],"o":[[0,-44.252],[0,0],[44.252,0],[0,0],[0,44.252],[0,0],[-44.252,0],[0,0]],"v":[[-180.457,80.182],[-100.276,0],[100.276,0],[180.457,80.182],[180.457,275.994],[100.276,356.176],[-100.276,356.176],[-180.457,275.994]],"c":true}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.224,0],[0,0],[0,-44.224],[0,0],[44.224,0],[0,0],[0,44.224]],"o":[[0,-44.224],[0,0],[44.224,0],[0,0],[0,44.224],[0,0],[-44.224,0],[0,0]],"v":[[-179.2,80.13],[-99.069,0],[99.069,0],[179.2,80.13],[179.2,274.867],[99.069,354.998],[-99.069,354.998],[-179.2,274.867]],"c":true}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.201,0],[0,0],[0,-44.201],[0,0],[44.201,0],[0,0],[0,44.201]],"o":[[0,-44.201],[0,0],[44.201,0],[0,0],[0,44.201],[0,0],[-44.201,0],[0,0]],"v":[[-178.173,80.089],[-98.084,0],[98.084,0],[178.173,80.089],[178.173,273.947],[98.084,354.036],[-98.084,354.036],[-178.173,273.947]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.183,0],[0,0],[0,-44.183],[0,0],[44.183,0],[0,0],[0,44.183]],"o":[[0,-44.183],[0,0],[44.183,0],[0,0],[0,44.183],[0,0],[-44.183,0],[0,0]],"v":[[-177.361,80.055],[-97.305,0],[97.305,0],[177.361,80.055],[177.361,273.219],[97.305,353.275],[-97.305,353.275],[-177.361,273.219]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.169,0],[0,0],[0,-44.169],[0,0],[44.169,0],[0,0],[0,44.169]],"o":[[0,-44.169],[0,0],[44.169,0],[0,0],[0,44.169],[0,0],[-44.169,0],[0,0]],"v":[[-176.749,80.031],[-96.719,0],[96.719,0],[176.749,80.031],[176.749,272.672],[96.719,352.702],[-96.719,352.702],[-176.749,272.672]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.159,0],[0,0],[0,-44.159],[0,0],[44.159,0],[0,0],[0,44.159]],"o":[[0,-44.159],[0,0],[44.159,0],[0,0],[0,44.159],[0,0],[-44.159,0],[0,0]],"v":[[-176.326,80.013],[-96.313,0],[96.313,0],[176.326,80.013],[176.326,272.292],[96.313,352.306],[-96.313,352.306],[-176.326,272.292]],"c":true}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.154,0],[0,0],[0,-44.154],[0,0],[44.154,0],[0,0],[0,44.154]],"o":[[0,-44.154],[0,0],[44.154,0],[0,0],[0,44.154],[0,0],[-44.154,0],[0,0]],"v":[[-176.08,80.003],[-96.077,0],[96.077,0],[176.08,80.003],[176.08,272.072],[96.077,352.075],[-96.077,352.075],[-176.08,272.072]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.152,0],[0,0],[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152]],"o":[[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152],[0,0],[-44.152,0],[0,0]],"v":[[-176,80],[-96,0],[96,0],[176,80],[176,272],[96,352],[-96,352],[-176,272]],"c":true}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.127,0],[0,0],[0,-44.127],[0,0],[44.127,0],[0,0],[0,44.127]],"o":[[0,-44.127],[0,0],[44.127,0],[0,0],[0,44.127],[0,0],[-44.127,0],[0,0]],"v":[[-175.806,79.954],[-95.852,0],[95.852,0],[175.806,79.954],[175.806,271.658],[95.852,351.613],[-95.852,351.613],[-175.806,271.658]],"c":true}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.042,0],[0,0],[0,-44.042],[0,0],[44.042,0],[0,0],[0,44.042]],"o":[[0,-44.042],[0,0],[44.042,0],[0,0],[0,44.042],[0,0],[-44.042,0],[0,0]],"v":[[-175.151,79.8],[-95.351,0],[95.351,0],[175.151,79.8],[175.151,270.502],[95.351,350.302],[-95.351,350.302],[-175.151,270.502]],"c":true}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.877,0],[0,0],[0,-43.877],[0,0],[43.877,0],[0,0],[0,43.877]],"o":[[0,-43.877],[0,0],[43.877,0],[0,0],[0,43.877],[0,0],[-43.877,0],[0,0]],"v":[[-173.883,79.502],[-94.381,0],[94.381,0],[173.883,79.502],[173.883,268.264],[94.381,347.766],[-94.381,347.766],[-173.883,268.264]],"c":true}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.602,0],[0,0],[0,-43.602],[0,0],[43.602,0],[0,0],[0,43.602]],"o":[[0,-43.602],[0,0],[43.602,0],[0,0],[0,43.602],[0,0],[-43.602,0],[0,0]],"v":[[-171.765,79.003],[-92.761,0],[92.761,0],[171.765,79.003],[171.765,264.526],[92.761,343.529],[-92.761,343.529],[-171.765,264.526]],"c":true}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.166,0],[0,0],[0,-43.166],[0,0],[43.166,0],[0,0],[0,43.166]],"o":[[0,-43.166],[0,0],[43.166,0],[0,0],[0,43.166],[0,0],[-43.166,0],[0,0]],"v":[[-168.404,78.213],[-90.191,0],[90.191,0],[168.404,78.213],[168.404,258.595],[90.191,336.808],[-90.191,336.808],[-168.404,258.595]],"c":true}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-42.482,0],[0,0],[0,-42.482],[0,0],[42.482,0],[0,0],[0,42.482]],"o":[[0,-42.482],[0,0],[42.482,0],[0,0],[0,42.482],[0,0],[-42.482,0],[0,0]],"v":[[-163.142,76.975],[-86.168,0],[86.168,0],[163.142,76.975],[163.142,249.31],[86.168,326.284],[-86.168,326.284],[-163.142,249.31]],"c":true}],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-41.435,0],[0,0],[0,-41.435],[0,0],[41.435,0],[0,0],[0,41.435]],"o":[[0,-41.435],[0,0],[41.435,0],[0,0],[0,41.435],[0,0],[-41.435,0],[0,0]],"v":[[-155.078,75.077],[-80.001,0],[80.001,0],[155.078,75.077],[155.078,235.078],[80.001,310.155],[-80.001,310.155],[-155.078,235.078]],"c":true}],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-40.054,0],[0,0],[0,-40.054],[0,0],[40.054,0],[0,0],[0,40.054]],"o":[[0,-40.054],[0,0],[40.054,0],[0,0],[0,40.054],[0,0],[-40.054,0],[0,0]],"v":[[-144.442,72.575],[-71.868,0],[71.868,0],[144.442,72.575],[144.442,216.31],[71.868,288.885],[-71.868,288.885],[-144.442,216.31]],"c":true}],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-38.75,0],[0,0],[0,-38.75],[0,0],[38.75,0],[0,0],[0,38.75]],"o":[[0,-38.75],[0,0],[38.75,0],[0,0],[0,38.75],[0,0],[-38.75,0],[0,0]],"v":[[-134.399,70.212],[-64.188,0],[64.188,0],[134.399,70.212],[134.399,198.587],[64.188,268.799],[-64.188,268.799],[-134.399,198.587]],"c":true}],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-37.775,0],[0,0],[0,-37.775],[0,0],[37.775,0],[0,0],[0,37.775]],"o":[[0,-37.775],[0,0],[37.775,0],[0,0],[0,37.775],[0,0],[-37.775,0],[0,0]],"v":[[-126.895,68.446],[-58.449,0],[58.449,0],[126.895,68.446],[126.895,185.345],[58.449,253.791],[-58.449,253.791],[-126.895,185.345]],"c":true}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-37.077,0],[0,0],[0,-37.077],[0,0],[37.077,0],[0,0],[0,37.077]],"o":[[0,-37.077],[0,0],[37.077,0],[0,0],[0,37.077],[0,0],[-37.077,0],[0,0]],"v":[[-121.522,67.182],[-54.34,0],[54.34,0],[121.522,67.182],[121.522,175.861],[54.34,243.043],[-54.34,243.043],[-121.522,175.861]],"c":true}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-36.569,0],[0,0],[0,-36.569],[0,0],[36.569,0],[0,0],[0,36.569]],"o":[[0,-36.569],[0,0],[36.569,0],[0,0],[0,36.569],[0,0],[-36.569,0],[0,0]],"v":[[-117.609,66.261],[-51.348,0],[51.348,0],[117.609,66.261],[117.609,168.957],[51.348,235.217],[-51.348,235.217],[-117.609,168.957]],"c":true}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-36.193,0],[0,0],[0,-36.193],[0,0],[36.193,0],[0,0],[0,36.193]],"o":[[0,-36.193],[0,0],[36.193,0],[0,0],[0,36.193],[0,0],[-36.193,0],[0,0]],"v":[[-114.709,65.579],[-49.131,0],[49.131,0],[114.709,65.579],[114.709,163.84],[49.131,229.419],[-49.131,229.419],[-114.709,163.84]],"c":true}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.912,0],[0,0],[0,-35.912],[0,0],[35.912,0],[0,0],[0,35.912]],"o":[[0,-35.912],[0,0],[35.912,0],[0,0],[0,35.912],[0,0],[-35.912,0],[0,0]],"v":[[-112.544,65.069],[-47.475,0],[47.475,0],[112.544,65.069],[112.544,160.02],[47.475,225.089],[-47.475,225.089],[-112.544,160.02]],"c":true}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.703,0],[0,0],[0,-35.703],[0,0],[35.703,0],[0,0],[0,35.703]],"o":[[0,-35.703],[0,0],[35.703,0],[0,0],[0,35.703],[0,0],[-35.703,0],[0,0]],"v":[[-110.934,64.69],[-46.244,0],[46.244,0],[110.934,64.69],[110.934,157.178],[46.244,221.869],[-46.244,221.869],[-110.934,157.178]],"c":true}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.55,0],[0,0],[0,-35.55],[0,0],[35.55,0],[0,0],[0,35.55]],"o":[[0,-35.55],[0,0],[35.55,0],[0,0],[0,35.55],[0,0],[-35.55,0],[0,0]],"v":[[-109.758,64.414],[-45.344,0],[45.344,0],[109.758,64.414],[109.758,155.102],[45.344,219.516],[-45.344,219.516],[-109.758,155.102]],"c":true}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.443,0],[0,0],[0,-35.443],[0,0],[35.443,0],[0,0],[0,35.443]],"o":[[0,-35.443],[0,0],[35.443,0],[0,0],[0,35.443],[0,0],[-35.443,0],[0,0]],"v":[[-108.931,64.219],[-44.712,0],[44.712,0],[108.931,64.219],[108.931,153.643],[44.712,217.862],[-44.712,217.862],[-108.931,153.643]],"c":true}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.372,0],[0,0],[0,-35.372],[0,0],[35.372,0],[0,0],[0,35.372]],"o":[[0,-35.372],[0,0],[35.372,0],[0,0],[0,35.372],[0,0],[-35.372,0],[0,0]],"v":[[-108.391,64.092],[-44.299,0],[44.299,0],[108.391,64.092],[108.391,152.691],[44.299,216.783],[-44.299,216.783],[-108.391,152.691]],"c":true}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.334,0],[0,0],[0,-35.334],[0,0],[35.334,0],[0,0],[0,35.334]],"o":[[0,-35.334],[0,0],[35.334,0],[0,0],[0,35.334],[0,0],[-35.334,0],[0,0]],"v":[[-108.093,64.022],[-44.071,0],[44.071,0],[108.093,64.022],[108.093,152.164],[44.071,216.186],[-44.071,216.186],[-108.093,152.164]],"c":true}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.322,0],[0,0],[0,-35.322],[0,0],[35.322,0],[0,0],[0,35.322]],"o":[[0,-35.322],[0,0],[35.322,0],[0,0],[0,35.322],[0,0],[-35.322,0],[0,0]],"v":[[-108,64],[-44,0],[44,0],[108,64],[108,152],[44,216],[-44,216],[-108,152]],"c":true}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.293,0],[0,0],[0,-35.293],[0,0],[35.293,0],[0,0],[0,35.293]],"o":[[0,-35.293],[0,0],[35.293,0],[0,0],[0,35.293],[0,0],[-35.293,0],[0,0]],"v":[[-108.025,63.949],[-44.076,0],[44.076,0],[108.025,63.949],[108.025,152.102],[44.076,216.051],[-44.076,216.051],[-108.025,152.102]],"c":true}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.214,0],[0,0],[0,-35.214],[0,0],[35.214,0],[0,0],[0,35.214]],"o":[[0,-35.214],[0,0],[35.214,0],[0,0],[0,35.214],[0,0],[-35.214,0],[0,0]],"v":[[-108.097,63.806],[-44.292,0],[44.292,0],[108.097,63.806],[108.097,152.389],[44.292,216.194],[-44.292,216.194],[-108.097,152.389]],"c":true}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.092,0],[0,0],[0,-35.092],[0,0],[35.092,0],[0,0],[0,35.092]],"o":[[0,-35.092],[0,0],[35.092,0],[0,0],[0,35.092],[0,0],[-35.092,0],[0,0]],"v":[[-108.208,63.584],[-44.624,0],[44.624,0],[108.208,63.584],[108.208,152.832],[44.624,216.416],[-44.624,216.416],[-108.208,152.832]],"c":true}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.934,0],[0,0],[0,-34.934],[0,0],[34.934,0],[0,0],[0,34.934]],"o":[[0,-34.934],[0,0],[34.934,0],[0,0],[0,34.934],[0,0],[-34.934,0],[0,0]],"v":[[-108.351,63.298],[-45.052,0],[45.052,0],[108.351,63.298],[108.351,153.403],[45.052,216.702],[-45.052,216.702],[-108.351,153.403]],"c":true}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.749,0],[0,0],[0,-34.749],[0,0],[34.749,0],[0,0],[0,34.749]],"o":[[0,-34.749],[0,0],[34.749,0],[0,0],[0,34.749],[0,0],[-34.749,0],[0,0]],"v":[[-108.519,62.963],[-45.556,0],[45.556,0],[108.519,62.963],[108.519,154.074],[45.556,217.037],[-45.556,217.037],[-108.519,154.074]],"c":true}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.545,0],[0,0],[0,-34.545],[0,0],[34.545,0],[0,0],[0,34.545]],"o":[[0,-34.545],[0,0],[34.545,0],[0,0],[0,34.545],[0,0],[-34.545,0],[0,0]],"v":[[-108.704,62.592],[-46.112,0],[46.112,0],[108.704,62.592],[108.704,154.816],[46.112,217.408],[-46.112,217.408],[-108.704,154.816]],"c":true}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.328,0],[0,0],[0,-34.328],[0,0],[34.328,0],[0,0],[0,34.328]],"o":[[0,-34.328],[0,0],[34.328,0],[0,0],[0,34.328],[0,0],[-34.328,0],[0,0]],"v":[[-108.9,62.2],[-46.7,0],[46.7,0],[108.9,62.2],[108.9,155.601],[46.7,217.8],[-46.7,217.8],[-108.9,155.601]],"c":true}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.108,0],[0,0],[0,-34.108],[0,0],[34.108,0],[0,0],[0,34.108]],"o":[[0,-34.108],[0,0],[34.108,0],[0,0],[0,34.108],[0,0],[-34.108,0],[0,0]],"v":[[-109.1,61.8],[-47.3,0],[47.3,0],[109.1,61.8],[109.1,156.399],[47.3,218.2],[-47.3,218.2],[-109.1,156.399]],"c":true}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.891,0],[0,0],[0,-33.891],[0,0],[33.891,0],[0,0],[0,33.891]],"o":[[0,-33.891],[0,0],[33.891,0],[0,0],[0,33.891],[0,0],[-33.891,0],[0,0]],"v":[[-109.296,61.408],[-47.888,0],[47.888,0],[109.296,61.408],[109.296,157.184],[47.888,218.592],[-47.888,218.592],[-109.296,157.184]],"c":true}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.686,0],[0,0],[0,-33.686],[0,0],[33.686,0],[0,0],[0,33.686]],"o":[[0,-33.686],[0,0],[33.686,0],[0,0],[0,33.686],[0,0],[-33.686,0],[0,0]],"v":[[-109.481,61.037],[-48.444,0],[48.444,0],[109.481,61.037],[109.481,157.926],[48.444,218.963],[-48.444,218.963],[-109.481,157.926]],"c":true}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.501,0],[0,0],[0,-33.501],[0,0],[33.501,0],[0,0],[0,33.501]],"o":[[0,-33.501],[0,0],[33.501,0],[0,0],[0,33.501],[0,0],[-33.501,0],[0,0]],"v":[[-109.649,60.702],[-48.948,0],[48.948,0],[109.649,60.702],[109.649,158.597],[48.948,219.298],[-48.948,219.298],[-109.649,158.597]],"c":true}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.344,0],[0,0],[0,-33.344],[0,0],[33.344,0],[0,0],[0,33.344]],"o":[[0,-33.344],[0,0],[33.344,0],[0,0],[0,33.344],[0,0],[-33.344,0],[0,0]],"v":[[-109.792,60.416],[-49.376,0],[49.376,0],[109.792,60.416],[109.792,159.168],[49.376,219.584],[-49.376,219.584],[-109.792,159.168]],"c":true}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.221,0],[0,0],[0,-33.221],[0,0],[33.221,0],[0,0],[0,33.221]],"o":[[0,-33.221],[0,0],[33.221,0],[0,0],[0,33.221],[0,0],[-33.221,0],[0,0]],"v":[[-109.903,60.194],[-49.708,0],[49.708,0],[109.903,60.194],[109.903,159.611],[49.708,219.806],[-49.708,219.806],[-109.903,159.611]],"c":true}],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.142,0],[0,0],[0,-33.142],[0,0],[33.142,0],[0,0],[0,33.142]],"o":[[0,-33.142],[0,0],[33.142,0],[0,0],[0,33.142],[0,0],[-33.142,0],[0,0]],"v":[[-109.975,60.051],[-49.924,0],[49.924,0],[109.975,60.051],[109.975,159.898],[49.924,219.949],[-49.924,219.949],[-109.975,159.898]],"c":true}],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.114,0],[0,0],[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114]],"o":[[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114],[0,0],[-33.114,0],[0,0]],"v":[[-110,60],[-50,0],[50,0],[110,60],[110,160],[50,220],[-50,220],[-110,160]],"c":true}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":444,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":2,"op":445,"st":-57,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".surfaceOverview","cl":"surfaceOverview","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,350.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[841,701],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.875,0.953,0.686,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.875,0.953,0.686,1],"t":444,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":445,"st":0,"ct":1,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Part01_Thumb_Overview_FO_V02","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,350.5,0],"ix":2,"l":2},"a":{"a":0,"k":[420.5,350.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":841,"h":701,"ip":0,"op":425,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":0,"nm":"Part02_Charade_Overview_FO_V02","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,350.5,0],"ix":2,"l":2},"a":{"a":0,"k":[420.5,350.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":841,"h":701,"ip":425,"op":891,"st":425,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"Part03_Demonstration_Overview_FO_V02","refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,350.5,0],"ix":2,"l":2},"a":{"a":0,"k":[420.5,350.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":841,"h":701,"ip":891,"op":1336,"st":891,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw/overview_gesture_tutorial_tablet_animation.json b/quickstep/res/raw/overview_gesture_tutorial_tablet_animation.json
new file mode 100644
index 0000000..05afd85
--- /dev/null
+++ b/quickstep/res/raw/overview_gesture_tutorial_tablet_animation.json
@@ -0,0 +1 @@
+{"v":"5.10.0","fr":60,"ip":0,"op":1367,"w":1280,"h":800,"nm":"SUW_Tablet_Overview_Preview V02","ddd":0,"assets":[{"id":"comp_0","nm":"Part01_Thumb_Tablet_Overview_V03","fr":60,"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Tablet_PointerFinger_UpdatedDesign","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,400,0],"ix":2,"l":2},"a":{"a":0,"k":[640,400,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":25,"nm":"Elevation","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[0,0,0,0.25],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":63.75,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":180,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":4,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":8,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"w":1280,"h":800,"ip":290,"op":456,"st":290,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"HAND REPO","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[950,344,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Size","np":3,"mn":"ADBE Point Control","ix":1,"en":1,"ef":[{"ty":3,"nm":"Point","mn":"ADBE Point Control-0001","ix":1,"v":{"a":0,"k":[100,100],"ix":1}}]}],"ip":0,"op":456,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":3,"nm":"OVERSHOOT THUMB","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":246,"s":[83]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":263,"s":[163]},{"t":348,"s":[283]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":246,"s":[322]},{"t":295,"s":[386]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":426,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":3,"nm":"HAND NULL","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.39],"y":[1]},"o":{"x":[0.59],"y":[0]},"t":3,"s":[10]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.15],"y":[0]},"t":59,"s":[0]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":95,"s":[-3]},{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":122,"s":[-4]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.166],"y":[0]},"t":170,"s":[15]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.5],"y":[0]},"t":201,"s":[15]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":231,"s":[12]},{"i":{"x":[0.22],"y":[0.993]},"o":{"x":[0.41],"y":[0]},"t":246,"s":[15.59]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":290,"s":[40]},{"t":321,"s":[40]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.06],"y":[0.36]},"t":0,"s":[260]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":73,"s":[123]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.5],"y":[0]},"t":201,"s":[123]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":231,"s":[70]},{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":246,"s":[70]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":264.166,"s":[154.8]},{"t":355,"s":[282]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.194],"y":[0]},"t":0,"s":[273.366]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":63,"s":[162]},{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":122,"s":[162]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":170,"s":[0]},{"i":{"x":[0.82],"y":[-0.109]},"o":{"x":[0.78],"y":[0]},"t":246,"s":[40]},{"t":317,"s":[13]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":426,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Thumb - KO","parent":6,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"k":[{"s":[17.7],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.084],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.752],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.548],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.405],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.298],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.213],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.144],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.086],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.037],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.995],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.958],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.926],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.898],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.874],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.852],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.832],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.815],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.8],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.786],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.773],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.763],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.753],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.744],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.73],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.715],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"p":{"k":[{"s":[0,0,0],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.015,0,0],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.077,0,0],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.192,0,0],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.364,0,0],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.598,0,0],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.902,0,0],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.285,0,0],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.76,0,0],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.347,0,0],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.074,0,0],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.968,0,0],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.068,0,0],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-6.423,0,0],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-8.089,0,0],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.109,0,0],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-12.416,0,0],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.732,0,0],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.688,0,0],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.11,0,0],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.047,0,0],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.624,0,0],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.922,0,0],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-20,0,0],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-20,0,0],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.792,0,0],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-18.993,0,0],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.321,0,0],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-14.437,0,0],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.855,0,0],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-7.728,0,0],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-5.403,0,0],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-3.711,0,0],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-2.481,0,0],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1.587,0,0],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.945,0,0],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.494,0,0],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.2,0,0],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-0.041,0,0],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"a":{"a":0,"k":[0,49,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":25,"nm":"Elevation","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[0,0,0,0.25],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":63.75,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":180,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":4,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":8,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.095,4.103],[20.866,-4.391],[30.055,14.909],[-19.458,9.569],[-43.79,10.76],[-18.62,4.309],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.284,-4.689],[-20.866,4.391],[-30.056,-14.63],[31.09,-15.283],[13.475,-3.311],[35.363,-7.848],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.667,116.665],[-117.97,119.232],[-229.615,116.95],[-229.867,50.888],[-139.016,15.389],[-88.152,4.787],[-12.612,-36.255]],"c":true}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.098,4.127],[20.863,-4.414],[30.005,14.508],[-19.477,9.414],[-43.782,10.829],[-18.619,4.316],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.287,-4.716],[-20.863,4.414],[-30.007,-14.235],[31.121,-15.037],[13.472,-3.332],[35.361,-7.859],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.82,116.749],[-117.884,119.917],[-226.898,115.937],[-226.972,51.297],[-139.102,14.702],[-86.526,4.409],[-12.612,-36.255]],"c":true}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.099,4.142],[20.861,-4.429],[29.974,14.261],[-19.489,9.319],[-43.776,10.871],[-18.619,4.32],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.289,-4.733],[-20.861,4.429],[-29.977,-13.992],[31.139,-14.886],[13.471,-3.345],[35.36,-7.866],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.3,116.8],[-117.832,120.338],[-225.228,115.315],[-225.194,51.548],[-139.154,14.28],[-85.528,4.177],[-12.612,-36.255]],"c":true}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.101,4.152],[20.86,-4.438],[29.953,14.089],[-19.498,9.253],[-43.773,10.9],[-18.618,4.323],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.291,-4.744],[-20.86,4.438],[-29.956,-13.823],[31.153,-14.781],[13.469,-3.354],[35.36,-7.871],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.936,116.835],[-117.796,120.632],[-224.061,114.88],[-223.952,51.724],[-139.191,13.985],[-84.829,4.015],[-12.612,-36.255]],"c":true}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.16],[20.859,-4.446],[29.937,13.959],[-19.504,9.203],[-43.77,10.923],[-18.618,4.325],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.292,-4.753],[-20.859,4.446],[-29.94,-13.695],[31.162,-14.701],[13.469,-3.361],[35.359,-7.874],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.662,116.862],[-117.768,120.854],[-223.181,114.552],[-223.014,51.856],[-139.219,13.762],[-84.303,3.893],[-12.612,-36.255]],"c":true}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.166],[20.858,-4.452],[29.924,13.857],[-19.509,9.163],[-43.768,10.94],[-18.618,4.326],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.293,-4.76],[-20.858,4.452],[-29.927,-13.594],[31.17,-14.638],[13.468,-3.366],[35.359,-7.877],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.446,116.884],[-117.746,121.029],[-222.486,114.293],[-222.274,51.961],[-139.241,13.586],[-83.887,3.796],[-12.612,-36.255]],"c":true}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.103,4.171],[20.858,-4.457],[29.914,13.773],[-19.513,9.131],[-43.766,10.954],[-18.618,4.328],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.766],[-20.858,4.457],[-29.917,-13.511],[31.177,-14.587],[13.467,-3.371],[35.359,-7.88],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.269,116.901],[-117.728,121.172],[-221.919,114.082],[-221.67,52.046],[-139.258,13.443],[-83.548,3.717],[-12.612,-36.255]],"c":true}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.175],[20.857,-4.461],[29.905,13.703],[-19.516,9.104],[-43.764,10.966],[-18.617,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.294,-4.771],[-20.857,4.461],[-29.908,-13.443],[31.182,-14.544],[13.467,-3.375],[35.358,-7.882],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.121,116.915],[-117.714,121.291],[-221.446,113.906],[-221.166,52.118],[-139.273,13.323],[-83.265,3.652],[-12.612,-36.255]],"c":true}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.179],[20.857,-4.464],[29.897,13.644],[-19.519,9.081],[-43.763,10.977],[-18.617,4.33],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.775],[-20.857,4.464],[-29.901,-13.384],[31.186,-14.508],[13.467,-3.378],[35.358,-7.883],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.997,116.928],[-117.701,121.392],[-221.044,113.756],[-220.739,52.178],[-139.286,13.222],[-83.025,3.596],[-12.612,-36.255]],"c":true}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.182],[20.856,-4.467],[29.891,13.593],[-19.522,9.062],[-43.762,10.985],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.778],[-20.856,4.467],[-29.895,-13.334],[31.19,-14.477],[13.466,-3.38],[35.358,-7.885],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.889,116.938],[-117.69,121.479],[-220.7,113.628],[-220.372,52.23],[-139.297,13.135],[-82.819,3.548],[-12.612,-36.255]],"c":true}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.184],[20.856,-4.47],[29.886,13.549],[-19.524,9.045],[-43.761,10.993],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.781],[-20.856,4.47],[-29.89,-13.291],[31.194,-14.45],[13.466,-3.383],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.796,116.947],[-117.681,121.554],[-220.401,113.516],[-220.054,52.275],[-139.306,13.059],[-82.64,3.507],[-12.612,-36.255]],"c":true}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.187],[20.856,-4.472],[29.881,13.51],[-19.526,9.03],[-43.76,10.999],[-18.617,4.332],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.784],[-20.856,4.472],[-29.885,-13.253],[31.197,-14.426],[13.466,-3.385],[35.358,-7.887],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.715,116.955],[-117.673,121.62],[-220.14,113.419],[-219.776,52.314],[-139.314,12.993],[-82.484,3.47],[-12.612,-36.255]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.189],[20.856,-4.474],[29.877,13.477],[-19.527,9.017],[-43.76,11.005],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.786],[-20.856,4.474],[-29.881,-13.219],[31.199,-14.406],[13.465,-3.386],[35.357,-7.888],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.643,116.962],[-117.665,121.678],[-219.911,113.334],[-219.531,52.349],[-139.322,12.935],[-82.347,3.438],[-12.612,-36.255]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.191],[20.855,-4.476],[29.873,13.447],[-19.529,9.005],[-43.759,11.01],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.788],[-20.855,4.476],[-29.877,-13.19],[31.201,-14.387],[13.465,-3.388],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.58,116.969],[-117.659,121.729],[-219.708,113.258],[-219.316,52.379],[-139.328,12.884],[-82.226,3.41],[-12.612,-36.255]],"c":true}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.192],[20.855,-4.477],[29.87,13.42],[-19.53,8.995],[-43.758,11.015],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.79],[-20.855,4.477],[-29.874,-13.164],[31.203,-14.371],[13.465,-3.389],[35.357,-7.89],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.524,116.974],[-117.654,121.774],[-219.529,113.191],[-219.124,52.406],[-139.334,12.839],[-82.118,3.385],[-12.612,-36.255]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.194],[20.855,-4.478],[29.867,13.397],[-19.531,8.986],[-43.758,11.019],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.791],[-20.855,4.478],[-29.871,-13.141],[31.205,-14.357],[13.465,-3.391],[35.357,-7.89],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.475,116.979],[-117.649,121.815],[-219.369,113.132],[-218.955,52.43],[-139.339,12.798],[-82.023,3.363],[-12.612,-36.255]],"c":true}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.195],[20.855,-4.48],[29.864,13.376],[-19.532,8.978],[-43.757,11.022],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.793],[-20.855,4.48],[-29.868,-13.12],[31.207,-14.344],[13.465,-3.392],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.43,116.983],[-117.644,121.85],[-219.227,113.079],[-218.803,52.451],[-139.343,12.762],[-81.938,3.343],[-12.612,-36.255]],"c":true}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.196],[20.855,-4.481],[29.862,13.357],[-19.533,8.971],[-43.757,11.026],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.794],[-20.855,4.481],[-29.866,-13.102],[31.208,-14.332],[13.465,-3.393],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.391,116.987],[-117.64,121.882],[-219.101,113.032],[-218.669,52.47],[-139.347,12.73],[-81.862,3.326],[-12.612,-36.255]],"c":true}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.197],[20.855,-4.482],[29.86,13.34],[-19.534,8.965],[-43.757,11.028],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.795],[-20.855,4.482],[-29.864,-13.085],[31.21,-14.322],[13.465,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.356,116.991],[-117.637,121.911],[-218.988,112.99],[-218.549,52.487],[-139.351,12.702],[-81.795,3.31],[-12.612,-36.255]],"c":true}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.198],[20.854,-4.483],[29.858,13.326],[-19.535,8.959],[-43.756,11.031],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.796],[-20.854,4.483],[-29.862,-13.071],[31.211,-14.313],[13.464,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.324,116.994],[-117.633,121.936],[-218.888,112.952],[-218.441,52.503],[-139.354,12.676],[-81.735,3.296],[-12.612,-36.255]],"c":true}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.199],[20.854,-4.483],[29.856,13.312],[-19.535,8.954],[-43.756,11.033],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.797],[-20.854,4.483],[-29.861,-13.058],[31.212,-14.305],[13.464,-3.395],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.297,116.997],[-117.631,121.959],[-218.798,112.919],[-218.346,52.516],[-139.357,12.654],[-81.681,3.284],[-12.612,-36.255]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.199],[20.854,-4.484],[29.855,13.301],[-19.536,8.949],[-43.756,11.035],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.798],[-20.854,4.484],[-29.859,-13.046],[31.213,-14.298],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.272,116.999],[-117.628,121.979],[-218.719,112.889],[-218.261,52.528],[-139.359,12.634],[-81.633,3.273],[-12.612,-36.255]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.2],[20.854,-4.485],[29.854,13.29],[-19.537,8.945],[-43.756,11.037],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.799],[-20.854,4.485],[-29.858,-13.036],[31.213,-14.291],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.25,117.001],[-117.626,121.996],[-218.648,112.863],[-218.186,52.539],[-139.361,12.616],[-81.591,3.263],[-12.612,-36.255]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.485],[29.852,13.281],[-19.537,8.942],[-43.755,11.039],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.799],[-20.854,4.485],[-29.857,-13.027],[31.214,-14.286],[13.464,-3.397],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.23,117.003],[-117.624,122.012],[-218.586,112.84],[-218.12,52.548],[-139.363,12.6],[-81.554,3.254],[-12.612,-36.255]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.486],[29.851,13.273],[-19.537,8.939],[-43.755,11.04],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.856,-13.019],[31.215,-14.281],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.213,117.005],[-117.622,122.026],[-218.531,112.819],[-218.062,52.556],[-139.365,12.586],[-81.521,3.247],[-12.612,-36.255]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.486],[29.85,13.266],[-19.538,8.936],[-43.755,11.041],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.855,-13.012],[31.215,-14.277],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.199,117.006],[-117.621,122.038],[-218.483,112.801],[-218.011,52.563],[-139.366,12.574],[-81.493,3.24],[-12.612,-36.255]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.486],[29.85,13.26],[-19.538,8.933],[-43.755,11.042],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.486],[-29.854,-13.006],[31.216,-14.273],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.186,117.007],[-117.619,122.048],[-218.442,112.786],[-217.967,52.57],[-139.368,12.564],[-81.468,3.234],[-12.612,-36.255]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.255],[-19.538,8.931],[-43.755,11.043],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-13.001],[31.216,-14.27],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.174,117.009],[-117.618,122.057],[-218.406,112.773],[-217.929,52.575],[-139.369,12.555],[-81.446,3.229],[-12.612,-36.255]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.25],[-19.538,8.93],[-43.755,11.044],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-12.996],[31.216,-14.267],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.165,117.009],[-117.617,122.065],[-218.376,112.761],[-217.896,52.58],[-139.37,12.547],[-81.428,3.225],[-12.612,-36.255]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.246],[-19.539,8.928],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.992],[31.217,-14.265],[13.464,-3.399],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.157,117.01],[-117.617,122.071],[-218.35,112.752],[-217.869,52.583],[-139.371,12.541],[-81.413,3.221],[-12.612,-36.255]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.848,13.243],[-19.539,8.927],[-43.755,11.045],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.99],[31.217,-14.263],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.151,117.011],[-117.616,122.077],[-218.33,112.744],[-217.847,52.586],[-139.371,12.535],[-81.401,3.219],[-12.612,-36.255]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.487],[29.847,13.241],[-19.539,8.926],[-43.755,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.987],[31.217,-14.261],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.146,117.011],[-117.615,122.081],[-218.313,112.738],[-217.83,52.589],[-139.372,12.531],[-81.391,3.216],[-12.612,-36.255]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.853,-4.49],[29.848,13.234],[-19.538,8.926],[-43.753,11.05],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.853,4.49],[-29.852,-12.98],[31.216,-14.262],[13.464,-3.4],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.609,122.089],[-218.282,112.739],[-217.802,52.604],[-139.378,12.528],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.852,-4.496],[29.852,13.224],[-19.535,8.933],[-43.749,11.064],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.852,4.496],[-29.856,-12.971],[31.211,-14.271],[13.462,-3.405],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.592,122.092],[-218.266,112.774],[-217.805,52.64],[-139.395,12.539],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.849,-4.509],[29.859,13.206],[-19.529,8.944],[-43.742,11.09],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.849,4.509],[-29.863,-12.952],[31.202,-14.29],[13.46,-3.413],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.558,122.098],[-218.236,112.841],[-217.812,52.707],[-139.427,12.561],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.843,-4.529],[29.871,13.176],[-19.52,8.963],[-43.729,11.133],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.843,4.529],[-29.875,-12.923],[31.187,-14.32],[13.456,-3.426],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.504,122.108],[-218.187,112.95],[-217.822,52.818],[-139.479,12.596],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.835,-4.56],[29.89,13.13],[-19.505,8.992],[-43.71,11.199],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.835,4.56],[-29.893,-12.877],[31.163,-14.367],[13.45,-3.446],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.42,122.123],[-218.112,113.119],[-217.838,52.99],[-139.56,12.65],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.823,-4.609],[29.918,13.059],[-19.483,9.037],[-43.681,11.3],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.823,4.609],[-29.921,-12.806],[31.128,-14.438],[13.441,-3.477],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.29,122.147],[-217.996,113.379],[-217.863,53.253],[-139.685,12.734],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.804,-4.686],[29.964,12.946],[-19.447,9.109],[-43.634,11.462],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.804,4.686],[-29.966,-12.693],[31.07,-14.553],[13.427,-3.527],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.083,122.185],[-217.811,113.794],[-217.902,53.674],[-139.884,12.867],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.77,-4.822],[30.044,12.747],[-19.384,9.235],[-43.551,11.747],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.77,4.822],[-30.044,-12.494],[30.969,-14.755],[13.401,-3.615],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.718,122.253],[-217.485,114.525],[-217.971,54.416],[-140.234,13.103],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.705,-5.078],[30.195,12.372],[-19.265,9.473],[-43.396,12.284],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.705,5.078],[-30.192,-12.118],[30.779,-15.136],[13.353,-3.78],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.032,122.379],[-216.87,115.902],[-218.102,55.813],[-140.895,13.546],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.64,-5.337],[30.347,11.993],[-19.145,9.713],[-43.239,12.825],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.64,5.337],[-30.341,-11.74],[30.588,-15.519],[13.305,-3.947],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.339,122.506],[-216.251,117.29],[-218.233,57.222],[-141.561,13.993],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.601,-5.492],[30.439,11.766],[-19.073,9.857],[-43.144,13.15],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.601,5.492],[-30.431,-11.513],[30.473,-15.749],[13.276,-4.047],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.924,122.583],[-215.879,118.123],[-218.312,58.067],[-141.96,14.261],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.575,-5.593],[30.498,11.617],[-19.026,9.952],[-43.083,13.363],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.575,5.593],[-30.489,-11.364],[30.397,-15.9],[13.257,-4.112],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.651,122.633],[-215.635,118.67],[-218.364,58.621],[-142.223,14.437],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.557,-5.667],[30.542,11.51],[-18.992,10.02],[-43.038,13.517],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.557,5.667],[-30.532,-11.257],[30.343,-16.009],[13.243,-4.159],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.455,122.669],[-215.459,119.064],[-218.401,59.021],[-142.412,14.564],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.543,-5.723],[30.575,11.428],[-18.966,10.072],[-43.004,13.634],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.543,5.723],[-30.564,-11.175],[30.301,-16.092],[13.233,-4.195],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.305,122.697],[-215.325,119.365],[-218.43,59.326],[-142.556,14.661],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.531,-5.767],[30.601,11.363],[-18.945,10.113],[-42.977,13.727],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.531,5.767],[-30.589,-11.11],[30.269,-16.158],[13.225,-4.224],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.186,122.719],[-215.219,119.602],[-218.452,59.567],[-142.67,14.737],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.523,-5.802],[30.622,11.312],[-18.929,10.146],[-42.956,13.801],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.523,5.802],[-30.61,-11.058],[30.242,-16.21],[13.218,-4.247],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.092,122.736],[-215.134,119.792],[-218.47,59.76],[-142.761,14.798],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":111,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.515,-5.831],[30.638,11.269],[-18.916,10.173],[-42.938,13.861],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.515,5.831],[-30.626,-11.016],[30.221,-16.253],[13.213,-4.265],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.014,122.75],[-215.066,119.947],[-218.485,59.916],[-142.835,14.848],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":112,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.509,-5.855],[30.652,11.235],[-18.905,10.194],[-42.924,13.91],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.509,5.855],[-30.64,-10.982],[30.204,-16.288],[13.208,-4.28],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.952,122.762],[-215.009,120.073],[-218.497,60.044],[-142.896,14.888],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.505,-5.874],[30.664,11.207],[-18.896,10.212],[-42.912,13.951],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.505,5.874],[-30.651,-10.954],[30.19,-16.316],[13.205,-4.293],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.9,122.771],[-214.963,120.176],[-218.507,60.149],[-142.945,14.922],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.501,-5.889],[30.673,11.184],[-18.889,10.227],[-42.903,13.983],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.501,5.889],[-30.66,-10.931],[30.178,-16.339],[13.202,-4.303],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.858,122.779],[-214.926,120.259],[-218.514,60.234],[-142.985,14.948],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.497,-5.902],[30.68,11.166],[-18.883,10.238],[-42.895,14.009],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.497,5.902],[-30.667,-10.913],[30.169,-16.358],[13.2,-4.311],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.825,122.785],[-214.896,120.327],[-218.521,60.302],[-143.017,14.97],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.495,-5.912],[30.686,11.151],[-18.878,10.248],[-42.889,14.03],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.495,5.912],[-30.673,-10.898],[30.161,-16.372],[13.198,-4.317],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.799,122.79],[-214.872,120.38],[-218.526,60.356],[-143.043,14.987],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.493,-5.919],[30.69,11.14],[-18.875,10.255],[-42.885,14.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.493,5.919],[-30.677,-10.887],[30.156,-16.384],[13.196,-4.322],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.778,122.794],[-214.854,120.42],[-218.53,60.397],[-143.062,15],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.492,-5.925],[30.694,11.132],[-18.872,10.26],[-42.881,14.058],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.492,5.925],[-30.68,-10.879],[30.152,-16.392],[13.195,-4.326],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.763,122.797],[-214.841,120.45],[-218.533,60.427],[-143.077,15.01],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.491,-5.929],[30.696,11.127],[-18.87,10.263],[-42.879,14.065],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.491,5.929],[-30.683,-10.873],[30.149,-16.397],[13.195,-4.328],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.753,122.798],[-214.832,120.47],[-218.534,60.448],[-143.086,15.016],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.491,-5.926],[30.694,11.13],[-18.871,10.261],[-42.88,14.06],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.491,5.926],[-30.681,-10.877],[30.15,-16.393],[13.195,-4.327],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.76,122.801],[-214.837,120.461],[-218.532,60.439],[-143.08,15.017],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.494,-5.909],[30.683,11.154],[-18.878,10.245],[-42.888,14.024],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.494,5.909],[-30.67,-10.901],[30.161,-16.368],[13.197,-4.315],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.807,122.805],[-214.874,120.382],[-218.52,60.362],[-143.036,15.005],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.5,-5.878],[30.662,11.198],[-18.891,10.215],[-42.903,13.959],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.5,5.878],[-30.649,-10.945],[30.181,-16.321],[13.202,-4.295],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.891,122.811],[-214.94,120.24],[-218.497,60.223],[-142.957,14.984],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.509,-5.831],[30.631,11.264],[-18.91,10.171],[-42.926,13.86],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.509,5.831],[-30.619,-11.011],[30.212,-16.25],[13.209,-4.265],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.018,122.822],[-215.041,120.025],[-218.463,60.011],[-142.837,14.951],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.522,-5.764],[30.587,11.358],[-18.937,10.109],[-42.957,13.721],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.522,5.764],[-30.575,-11.105],[30.255,-16.15],[13.219,-4.222],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.198,122.836],[-215.184,119.721],[-218.416,59.713],[-142.668,14.904],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.539,-5.674],[30.527,11.485],[-18.973,10.024],[-43.001,13.532],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.539,5.674],[-30.517,-11.232],[30.313,-16.015],[13.232,-4.164],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.441,122.855],[-215.377,119.309],[-218.351,59.31],[-142.439,14.841],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.562,-5.555],[30.448,11.653],[-19.021,9.911],[-43.058,13.281],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.562,5.555],[-30.439,-11.4],[30.39,-15.835],[13.249,-4.087],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-114.764,122.881],[-215.634,118.763],[-218.265,58.774],[-142.135,14.757],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.592,-5.398],[30.343,11.875],[-19.085,9.763],[-43.133,12.95],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.592,5.398],[-30.336,-11.622],[30.492,-15.598],[13.273,-3.985],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.19,122.915],[-215.972,118.042],[-218.152,58.067],[-141.734,14.646],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.632,-5.189],[30.204,12.169],[-19.169,9.566],[-43.233,12.512],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.632,5.189],[-30.2,-11.916],[30.627,-15.284],[13.303,-3.85],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-115.755,122.96],[-216.421,117.086],[-218.001,57.13],[-141.203,14.5],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.686,-4.908],[30.018,12.566],[-19.283,9.302],[-43.368,11.922],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.686,4.908],[-30.017,-12.313],[30.808,-14.861],[13.345,-3.669],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-116.515,123.021],[-217.025,115.8],[-217.799,55.869],[-140.488,14.302],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.76,-4.519],[29.759,13.113],[-19.44,8.935],[-43.554,11.106],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.76,4.519],[-29.763,-12.861],[31.059,-14.276],[13.402,-3.417],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.567,123.104],[-217.86,114.021],[-217.519,54.124],[-139.498,14.029],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.865,-3.972],[29.396,13.885],[-19.662,8.42],[-43.816,9.956],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.865,3.972],[-29.406,-13.633],[31.413,-13.452],[13.483,-3.064],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-119.049,123.222],[-219.037,111.514],[-217.125,51.666],[-138.104,13.644],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.997,-3.279],[28.935,14.862],[-19.942,7.767],[-44.148,8.501],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.997,3.279],[-28.954,-14.61],[31.861,-12.409],[13.585,-2.616],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-120.924,123.372],[-220.526,108.342],[-216.626,48.556],[-136.34,13.158],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.11,-2.69],[28.544,15.692],[-20.18,7.212],[-44.431,7.265],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.11,2.69],[-28.57,-15.44],[32.241,-11.522],[13.672,-2.235],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-122.517,123.499],[-221.791,105.647],[-216.202,45.913],[-134.841,12.744],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.177,-2.342],[28.313,16.183],[-20.321,6.884],[-44.597,6.533],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.177,2.342],[-28.343,-15.931],[32.466,-10.998],[13.723,-2.01],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-123.459,123.574],[-222.539,104.053],[-215.952,44.35],[-133.955,12.499],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.212,-2.159],[28.191,16.441],[-20.395,6.711],[-44.685,6.149],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.212,2.159],[-28.224,-16.189],[32.585,-10.723],[13.75,-1.892],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-123.954,123.613],[-222.933,103.215],[-215.82,43.528],[-133.488,12.371],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.228,-2.074],[28.135,16.561],[-20.429,6.631],[-44.726,5.97],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.228,2.074],[-28.168,-16.31],[32.64,-10.595],[13.763,-1.837],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.185,123.632],[-223.116,102.825],[-215.759,43.146],[-133.272,12.311],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[21.229,-2.075],[28.141,16.584],[-20.428,6.644],[-44.727,5.971],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-21.229,2.075],[-28.174,-16.332],[32.638,-10.615],[13.763,-1.837],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.191,117.007],[-124.183,123.577],[-223.288,102.889],[-215.949,43.116],[-133.272,12.341],[-81.479,3.237],[-12.612,-36.255]],"c":true}],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.196],[21.214,-2.165],[28.22,16.547],[-20.388,6.771],[-44.691,6.156],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.794],[-21.214,2.165],[-28.252,-16.294],[32.574,-10.818],[13.752,-1.894],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.392,116.987],[-123.942,123.353],[-223.74,103.522],[-216.715,43.395],[-133.494,12.513],[-81.864,3.326],[-12.612,-36.255]],"c":true}],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.184],[21.184,-2.358],[28.391,16.468],[-20.303,7.044],[-44.612,6.552],[-18.617,4.331],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.78],[-21.184,2.358],[-28.42,-16.211],[32.438,-11.253],[13.728,-2.016],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.82,116.945],[-123.428,122.877],[-224.705,104.876],[-218.353,43.99],[-133.968,12.88],[-82.687,3.517],[-12.612,-36.255]],"c":true}],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.163],[21.132,-2.689],[28.683,16.333],[-20.156,7.512],[-44.478,7.231],[-18.618,4.326],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.292,-4.757],[-21.132,2.689],[-28.707,-16.07],[32.204,-11.999],[13.687,-2.225],[35.359,-7.876],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.555,116.873],[-122.546,122.059],[-226.362,107.198],[-221.163,45.012],[-134.782,13.509],[-84.098,3.845],[-12.612,-36.255]],"c":true}],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.099,4.137],[21.067,-3.101],[29.047,16.164],[-19.974,8.094],[-44.311,8.076],[-18.619,4.319],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.289,-4.727],[-21.067,3.101],[-29.065,-15.895],[31.913,-12.928],[13.635,-2.485],[35.361,-7.864],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.47,116.783],[-121.45,121.041],[-228.421,110.085],[-224.657,46.282],[-135.794,14.292],[-85.853,4.253],[-12.612,-36.255]],"c":true}],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.096,4.114],[21.011,-3.46],[29.364,16.017],[-19.815,8.601],[-44.166,8.812],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.286,-4.701],[-21.011,3.46],[-29.377,-15.742],[31.66,-13.737],[13.59,-2.712],[35.362,-7.853],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.267,116.705],[-120.493,120.154],[-230.218,112.604],[-227.705,47.39],[-136.676,14.976],[-87.385,4.609],[-12.612,-36.255]],"c":true}],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.094,4.097],[20.969,-3.728],[29.6,15.907],[-19.696,8.979],[-44.057,9.361],[-18.62,4.308],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.283,-4.682],[-20.969,3.728],[-29.609,-15.628],[31.471,-14.34],[13.557,-2.88],[35.363,-7.845],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.861,116.646],[-119.78,119.493],[-231.555,114.479],[-229.974,48.215],[-137.333,15.484],[-88.524,4.873],[-12.612,-36.255]],"c":true}],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.092,4.085],[20.938,-3.922],[29.771,15.828],[-19.611,9.253],[-43.979,9.759],[-18.62,4.305],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.281,-4.668],[-20.938,3.922],[-29.777,-15.545],[31.334,-14.777],[13.533,-3.003],[35.364,-7.839],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.291,116.604],[-119.263,119.014],[-232.526,115.84],[-231.62,48.814],[-137.81,15.853],[-89.352,5.066],[-12.612,-36.255]],"c":true}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.076],[20.916,-4.063],[29.896,15.77],[-19.548,9.453],[-43.921,10.049],[-18.621,4.302],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.658],[-20.916,4.063],[-29.9,-15.485],[31.235,-15.096],[13.515,-3.092],[35.364,-7.835],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.605,116.573],[-118.887,118.664],[-233.233,116.832],[-232.82,49.25],[-138.158,16.122],[-89.954,5.206],[-12.612,-36.255]],"c":true}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.07],[20.9,-4.166],[29.987,15.728],[-19.502,9.599],[-43.88,10.26],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.651],[-20.9,4.166],[-29.989,-15.441],[31.162,-15.328],[13.502,-3.157],[35.364,-7.832],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.834,116.551],[-118.613,118.41],[-233.748,117.554],[-233.694,49.567],[-138.411,16.318],[-90.393,5.308],[-12.612,-36.255]],"c":true}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.065],[20.888,-4.24],[30.052,15.698],[-19.47,9.703],[-43.85,10.411],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.646],[-20.888,4.24],[-30.053,-15.41],[31.11,-15.495],[13.493,-3.204],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.998,116.534],[-118.416,118.227],[-234.118,118.072],[-234.321,49.796],[-138.592,16.459],[-90.708,5.381],[-12.612,-36.255]],"c":true}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.062],[20.88,-4.291],[30.097,15.677],[-19.447,9.776],[-43.829,10.516],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.642],[-20.88,4.291],[-30.098,-15.388],[31.074,-15.61],[13.487,-3.236],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.112,116.523],[-118.279,118.101],[-234.374,118.431],[-234.756,49.954],[-138.718,16.556],[-90.927,5.432],[-12.612,-36.255]],"c":true}],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.06],[20.875,-4.324],[30.126,15.663],[-19.432,9.822],[-43.815,10.584],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.64],[-20.875,4.324],[-30.127,-15.374],[31.05,-15.685],[13.483,-3.257],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.185,116.516],[-118.191,118.019],[-234.54,118.664],[-235.037,50.056],[-138.8,16.619],[-91.068,5.464],[-12.612,-36.255]],"c":true}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.872,-4.342],[30.142,15.656],[-19.424,9.848],[-43.808,10.621],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.872,4.343],[-30.142,-15.366],[31.037,-15.726],[13.48,-3.268],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.226,116.512],[-118.143,117.974],[-234.631,118.791],[-235.191,50.112],[-138.844,16.654],[-91.145,5.482],[-12.612,-36.255]],"c":true}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.059],[20.871,-4.349],[30.146,15.639],[-19.422,9.851],[-43.806,10.635],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.639],[-20.871,4.349],[-30.146,-15.35],[31.035,-15.73],[13.48,-3.273],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.209,116.514],[-118.125,117.984],[-234.564,118.795],[-235.138,50.143],[-138.861,16.64],[-91.113,5.475],[-12.612,-36.255]],"c":true}],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.062],[20.871,-4.352],[30.14,15.591],[-19.425,9.832],[-43.805,10.644],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.642],[-20.871,4.352],[-30.14,-15.302],[31.038,-15.7],[13.479,-3.275],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.106,116.524],[-118.114,118.067],[-234.235,118.672],[-234.787,50.193],[-138.871,16.557],[-90.916,5.429],[-12.612,-36.255]],"c":true}],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.09,4.068],[20.87,-4.357],[30.127,15.494],[-19.43,9.794],[-43.802,10.66],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.279,-4.649],[-20.87,4.357],[-30.128,-15.206],[31.046,-15.641],[13.479,-3.28],[35.365,-7.831],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.901,116.544],[-118.094,118.233],[-233.578,118.427],[-234.088,50.292],[-138.892,16.391],[-90.523,5.338],[-12.612,-36.255]],"c":true}],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.091,4.078],[20.869,-4.367],[30.107,15.33],[-19.438,9.731],[-43.799,10.688],[-18.621,4.302],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.28,-4.66],[-20.869,4.367],[-30.108,-15.045],[31.058,-15.54],[13.478,-3.289],[35.364,-7.836],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.555,116.578],[-118.059,118.513],[-232.466,118.013],[-232.903,50.459],[-138.927,16.11],[-89.857,5.183],[-12.612,-36.255]],"c":true}],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.093,4.093],[20.867,-4.381],[30.076,15.082],[-19.45,9.636],[-43.794,10.731],[-18.62,4.306],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.282,-4.677],[-20.867,4.381],[-30.077,-14.8],[31.077,-15.388],[13.476,-3.302],[35.363,-7.843],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-45.031,116.63],[-118.006,118.937],[-230.785,117.386],[-231.113,50.712],[-138.98,15.685],[-88.852,4.95],[-12.612,-36.255]],"c":true}],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.096,4.112],[20.865,-4.399],[30.037,14.766],[-19.465,9.514],[-43.787,10.785],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.285,-4.698],[-20.865,4.399],[-30.039,-14.489],[31.101,-15.195],[13.474,-3.319],[35.362,-7.852],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-44.364,116.695],[-117.939,119.476],[-228.645,116.589],[-228.834,51.034],[-139.047,15.144],[-87.572,4.652],[-12.612,-36.255]],"c":true}],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.098,4.131],[20.863,-4.418],[29.997,14.445],[-19.48,9.39],[-43.78,10.84],[-18.619,4.317],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.288,-4.72],[-20.863,4.418],[-29.999,-14.173],[31.125,-14.999],[13.472,-3.336],[35.361,-7.861],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.688,116.762],[-117.871,120.024],[-226.472,115.779],[-226.52,51.361],[-139.115,14.594],[-86.272,4.35],[-12.612,-36.255]],"c":true}],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.1,4.147],[20.861,-4.434],[29.963,14.171],[-19.494,9.284],[-43.774,10.887],[-18.618,4.321],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.29,-4.739],[-20.861,4.434],[-29.966,-13.903],[31.146,-14.83],[13.47,-3.35],[35.36,-7.868],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-43.108,116.818],[-117.813,120.493],[-224.613,115.086],[-224.539,51.641],[-139.174,14.124],[-85.159,4.092],[-12.612,-36.255]],"c":true}],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.102,4.16],[20.859,-4.446],[29.936,13.951],[-19.504,9.2],[-43.77,10.924],[-18.618,4.325],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.292,-4.754],[-20.859,4.446],[-29.939,-13.687],[31.163,-14.696],[13.469,-3.362],[35.359,-7.875],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.646,116.864],[-117.766,120.867],[-223.128,114.533],[-222.958,51.864],[-139.22,13.749],[-84.271,3.885],[-12.612,-36.255]],"c":true}],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.103,4.171],[20.858,-4.456],[29.914,13.779],[-19.513,9.134],[-43.766,10.953],[-18.618,4.328],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.293,-4.765],[-20.858,4.456],[-29.918,-13.517],[31.176,-14.591],[13.467,-3.371],[35.359,-7.879],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-42.282,116.9],[-117.73,121.161],[-221.961,114.098],[-221.715,52.04],[-139.257,13.453],[-83.573,3.723],[-12.612,-36.255]],"c":true}],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.104,4.179],[20.857,-4.464],[29.897,13.644],[-19.519,9.081],[-43.763,10.977],[-18.617,4.33],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.295,-4.775],[-20.857,4.464],[-29.901,-13.384],[31.186,-14.508],[13.467,-3.378],[35.358,-7.883],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.996,116.928],[-117.701,121.393],[-221.042,113.755],[-220.736,52.178],[-139.286,13.221],[-83.023,3.596],[-12.612,-36.255]],"c":true}],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.185],[20.856,-4.47],[29.884,13.537],[-19.525,9.04],[-43.761,10.995],[-18.617,4.332],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.782],[-20.856,4.47],[-29.888,-13.278],[31.195,-14.442],[13.466,-3.383],[35.358,-7.886],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.77,116.95],[-117.678,121.576],[-220.317,113.485],[-219.964,52.287],[-139.309,13.038],[-82.59,3.495],[-12.612,-36.255]],"c":true}],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.105,4.19],[20.855,-4.475],[29.874,13.452],[-19.529,9.008],[-43.759,11.009],[-18.617,4.333],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.296,-4.788],[-20.855,4.475],[-29.878,-13.195],[31.201,-14.391],[13.465,-3.388],[35.357,-7.889],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.592,116.968],[-117.66,121.72],[-219.745,113.272],[-219.355,52.373],[-139.327,12.893],[-82.248,3.415],[-12.612,-36.255]],"c":true}],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.194],[20.855,-4.479],[29.865,13.386],[-19.532,8.982],[-43.758,11.021],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.792],[-20.855,4.479],[-29.87,-13.13],[31.206,-14.35],[13.465,-3.391],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.452,116.981],[-117.646,121.833],[-219.297,113.105],[-218.878,52.441],[-139.341,12.78],[-81.98,3.353],[-12.612,-36.255]],"c":true}],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.106,4.197],[20.854,-4.482],[29.859,13.335],[-19.534,8.962],[-43.757,11.029],[-18.617,4.335],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.297,-4.796],[-20.855,4.482],[-29.863,-13.08],[31.21,-14.319],[13.465,-3.394],[35.357,-7.892],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.344,116.992],[-117.635,121.92],[-218.951,112.976],[-218.51,52.493],[-139.352,12.693],[-81.773,3.305],[-12.612,-36.255]],"c":true}],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.2],[20.854,-4.484],[29.854,13.297],[-19.536,8.948],[-43.756,11.036],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.798],[-20.854,4.484],[-29.859,-13.042],[31.213,-14.295],[13.464,-3.396],[35.357,-7.893],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.263,117],[-117.627,121.985],[-218.691,112.879],[-218.232,52.532],[-139.36,12.627],[-81.617,3.269],[-12.612,-36.255]],"c":true}],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.201],[20.854,-4.486],[29.851,13.269],[-19.538,8.937],[-43.755,11.041],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.8],[-20.854,4.486],[-29.855,-13.015],[31.215,-14.278],[13.464,-3.397],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.205,117.006],[-117.621,122.033],[-218.504,112.809],[-218.033,52.56],[-139.366,12.579],[-81.505,3.243],[-12.612,-36.255]],"c":true}],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.202],[20.854,-4.487],[29.849,13.25],[-19.538,8.93],[-43.755,11.044],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.801],[-20.854,4.487],[-29.853,-12.997],[31.216,-14.267],[13.464,-3.398],[35.357,-7.894],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.166,117.009],[-117.617,122.064],[-218.379,112.763],[-217.9,52.579],[-139.37,12.548],[-81.43,3.225],[-12.612,-36.255]],"c":true}],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.24],[-19.539,8.926],[-43.755,11.046],[-18.617,4.336],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.487],[-29.852,-12.986],[31.217,-14.261],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-41.144,117.012],[-117.615,122.082],[-218.308,112.736],[-217.825,52.59],[-139.372,12.53],[-81.388,3.216],[-12.612,-36.255]],"c":true}],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[54.085,-3.398],[27.304,14.385],[26.106,4.195],[20.855,-4.48],[29.864,13.374],[-19.532,8.977],[-43.757,11.023],[-18.617,4.334],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-11.428,0.653],[-24.064,-12.677],[-29.297,-4.793],[-20.855,4.48],[-29.868,-13.118],[31.207,-14.343],[13.465,-3.392],[35.357,-7.891],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[117.077,194.754],[32.184,139.048],[-41.426,116.984],[-117.644,121.854],[-219.214,113.074],[-218.79,52.453],[-139.343,12.759],[-81.93,3.342],[-12.612,-36.255]],"c":true}],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[50.763,-3.189],[27.304,14.385],[26.103,4.174],[20.857,-4.459],[29.908,13.729],[-19.515,9.114],[-43.765,10.962],[-18.618,4.329],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-14.751,0.843],[-24.064,-12.677],[-29.294,-4.769],[-20.857,4.459],[-29.912,-13.468],[31.18,-14.56],[13.467,-3.373],[35.358,-7.881],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[121.251,193.909],[32.184,139.048],[-42.176,116.91],[-117.719,121.247],[-221.619,113.97],[-221.351,52.091],[-139.268,13.367],[-83.369,3.676],[-12.612,-36.255]],"c":true}],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[47.069,-2.957],[27.304,14.384],[26.1,4.15],[20.86,-4.436],[29.957,14.124],[-19.496,9.266],[-43.773,10.895],[-18.618,4.322],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-18.446,1.054],[-24.064,-12.677],[-29.291,-4.742],[-20.86,4.436],[-29.96,-13.857],[31.15,-14.802],[13.47,-3.352],[35.36,-7.87],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[125.893,192.97],[32.184,139.048],[-43.009,116.828],[-117.803,120.573],[-224.294,114.967],[-224.2,51.689],[-139.184,14.043],[-84.969,4.047],[-12.612,-36.255]],"c":true}],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[43.879,-2.757],[27.304,14.385],[26.098,4.13],[20.863,-4.417],[29.999,14.464],[-19.48,9.398],[-43.781,10.836],[-18.619,4.317],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-21.637,1.236],[-24.064,-12.677],[-29.288,-4.719],[-20.863,4.417],[-30.002,-14.192],[31.124,-15.01],[13.472,-3.335],[35.361,-7.86],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[129.901,192.158],[32.184,139.048],[-43.728,116.758],[-117.875,119.991],[-226.604,115.828],[-226.659,51.341],[-139.111,14.627],[-86.35,4.368],[-12.612,-36.255]],"c":true}],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[41.29,-2.594],[27.304,14.385],[26.096,4.113],[20.865,-4.401],[30.034,14.741],[-19.466,9.504],[-43.786,10.789],[-18.62,4.312],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-24.227,1.384],[-24.064,-12.677],[-29.285,-4.7],[-20.865,4.401],[-30.036,-14.465],[31.103,-15.18],[13.474,-3.32],[35.362,-7.852],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[133.155,191.499],[32.184,139.048],[-44.312,116.7],[-117.934,119.518],[-228.478,116.527],[-228.656,51.059],[-139.052,15.101],[-87.472,4.629],[-12.612,-36.255]],"c":true}],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[39.213,-2.464],[27.304,14.385],[26.094,4.1],[20.866,-4.388],[30.061,14.963],[-19.455,9.59],[-43.791,10.751],[-18.62,4.308],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-26.305,1.503],[-24.064,-12.677],[-29.283,-4.685],[-20.866,4.388],[-30.063,-14.684],[31.086,-15.316],[13.475,-3.308],[35.363,-7.846],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[135.765,190.971],[32.184,139.048],[-44.781,116.654],[-117.981,119.139],[-229.982,117.087],[-230.258,50.833],[-139.005,15.482],[-88.372,4.838],[-12.612,-36.255]],"c":true}],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[37.55,-2.359],[27.304,14.385],[26.093,4.089],[20.868,-4.378],[30.084,15.141],[-19.447,9.658],[-43.795,10.721],[-18.62,4.306],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-27.969,1.598],[-24.064,-12.677],[-29.282,-4.673],[-20.867,4.378],[-30.085,-14.859],[31.072,-15.425],[13.476,-3.299],[35.363,-7.841],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[137.855,190.548],[32.184,139.048],[-45.156,116.617],[-118.019,118.836],[-231.186,117.536],[-231.54,50.652],[-138.967,15.786],[-89.092,5.005],[-12.612,-36.255]],"c":true}],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[36.223,-2.276],[27.304,14.385],[26.092,4.081],[20.869,-4.37],[30.101,15.283],[-19.44,9.713],[-43.798,10.696],[-18.621,4.303],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-29.296,1.674],[-24.064,-12.677],[-29.281,-4.663],[-20.869,4.37],[-30.102,-14.998],[31.062,-15.511],[13.477,-3.292],[35.364,-7.837],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[139.523,190.21],[32.184,139.048],[-45.456,116.588],[-118.049,118.593],[-232.147,117.894],[-232.564,50.507],[-138.937,16.029],[-89.667,5.139],[-12.612,-36.255]],"c":true}],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[35.172,-2.21],[27.304,14.385],[26.091,4.074],[20.869,-4.363],[30.115,15.395],[-19.434,9.756],[-43.8,10.677],[-18.621,4.301],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-30.347,1.734],[-24.064,-12.677],[-29.28,-4.656],[-20.869,4.363],[-30.116,-15.109],[31.053,-15.58],[13.478,-3.286],[35.364,-7.834],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[140.843,189.943],[32.184,139.048],[-45.693,116.565],[-118.073,118.402],[-232.908,118.178],[-233.374,50.392],[-138.913,16.221],[-90.122,5.245],[-12.612,-36.255]],"c":true}],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[34.354,-2.158],[27.304,14.385],[26.09,4.069],[20.87,-4.358],[30.126,15.482],[-19.43,9.79],[-43.802,10.662],[-18.621,4.3],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-31.166,1.781],[-24.064,-12.677],[-29.279,-4.65],[-20.87,4.358],[-30.126,-15.195],[31.046,-15.634],[13.479,-3.281],[35.365,-7.831],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[141.871,189.735],[32.184,139.048],[-45.877,116.546],[-118.091,118.252],[-233.5,118.398],[-234.005,50.303],[-138.894,16.371],[-90.476,5.327],[-12.612,-36.255]],"c":true}],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[33.733,-2.119],[27.304,14.385],[26.09,4.065],[20.87,-4.354],[30.134,15.549],[-19.427,9.816],[-43.804,10.651],[-18.621,4.299],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-31.787,1.816],[-24.064,-12.677],[-29.279,-4.645],[-20.87,4.354],[-30.134,-15.26],[31.041,-15.674],[13.479,-3.278],[35.365,-7.83],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[142.652,189.577],[32.184,139.048],[-46.017,116.533],[-118.105,118.139],[-233.95,118.566],[-234.484,50.236],[-138.88,16.485],[-90.745,5.389],[-12.612,-36.255]],"c":true}],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[33.282,-2.091],[27.304,14.385],[26.089,4.062],[20.871,-4.351],[30.14,15.597],[-19.425,9.834],[-43.805,10.643],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.238,1.842],[-24.064,-12.677],[-29.278,-4.642],[-20.871,4.351],[-30.14,-15.308],[31.038,-15.704],[13.479,-3.275],[35.365,-7.828],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.218,189.462],[32.184,139.048],[-46.119,116.523],[-118.116,118.057],[-234.277,118.688],[-234.832,50.187],[-138.87,16.568],[-90.941,5.435],[-12.612,-36.255]],"c":true}],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.98,-2.072],[27.304,14.385],[26.089,4.06],[20.871,-4.35],[30.144,15.629],[-19.423,9.847],[-43.805,10.637],[-18.621,4.298],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.54,1.859],[-24.064,-12.677],[-29.278,-4.64],[-20.871,4.35],[-30.144,-15.34],[31.035,-15.724],[13.48,-3.273],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.598,189.385],[32.184,139.048],[-46.187,116.516],[-118.123,118.001],[-234.495,118.769],[-235.065,50.154],[-138.863,16.623],[-91.071,5.465],[-12.612,-36.255]],"c":true}],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.809,-2.061],[27.304,14.385],[26.089,4.059],[20.871,-4.348],[30.147,15.648],[-19.422,9.854],[-43.806,10.634],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.711,1.869],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.349],[-30.147,-15.358],[31.034,-15.735],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.813,189.342],[32.184,139.048],[-46.226,116.512],[-118.126,117.97],[-234.619,118.815],[-235.197,50.135],[-138.859,16.654],[-91.146,5.482],[-12.612,-36.255]],"c":true}],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.754,-2.058],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.766,1.872],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.363],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.881,189.328],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.694117665291,0.435294121504,0.345098048449,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Thumb","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":295,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Nail - PATH","parent":9,"tt":1,"tp":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-215.854,53.1,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.7},"t":59,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.6,"y":0},"t":95,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":122,"s":[{"i":[[0,0],[4.232,-12.502],[12.921,-1.766],[0,0],[-10.742,11.216],[0,0],[-9.55,-10.068]],"o":[[8.923,9.803],[-4.232,12.502],[0,0],[-17.559,-12.801],[0,0],[13.042,-4.219],[0,0]],"v":[[43.524,-16.699],[51.346,19.151],[23.347,42.689],[-15.873,40.533],[-19.404,-10.788],[6.329,-27.088],[43.177,-17.287]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.4,"y":0},"t":140,"s":[{"i":[[0,0],[5.977,-11.693],[12.492,0.343],[0,0],[-11.927,9.366],[0,0],[-7.435,-11.514]],"o":[[6.885,11.15],[-5.977,11.693],[0,0],[-14.573,-15.516],[0,0],[12.995,-2.066],[0,0]],"v":[[41.831,-31.462],[43.556,5.299],[13.369,24.072],[-23.361,15.588],[-18.585,-35.795],[8.315,-47.769],[41.596,-32.101]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":182,"s":[{"i":[[0,0],[5.977,-11.693],[12.492,0.343],[0,0],[-11.927,9.366],[0,0],[-7.435,-11.514]],"o":[[6.885,11.15],[-5.977,11.693],[0,0],[-14.573,-15.516],[0,0],[12.995,-2.066],[0,0]],"v":[[41.831,-31.462],[43.556,5.299],[13.369,24.072],[-23.361,15.588],[-18.585,-35.795],[8.315,-47.769],[41.596,-32.101]],"c":true}]},{"t":197,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}],"h":1},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":228,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":248,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":260,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"t":275,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}],"h":1},{"i":{"x":0.34,"y":1},"o":{"x":0.66,"y":0},"t":359,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":383,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":385,"s":[{"i":[[0,0],[4.852,-12.202],[12.469,-0.832],[0,0],[-10.995,10.445],[0,0],[-8.483,-10.765]],"o":[[7.901,10.455],[-4.852,12.202],[0,0],[-15.966,-14.079],[0,0],[12.744,-3.277],[0,0]],"v":[[40.886,-22.623],[46.055,13.814],[17.765,35.338],[-19.6,30.341],[-19.67,-21.264],[5.987,-35.71],[40.592,-23.237]],"c":true}]},{"t":400,"s":[{"i":[[0,0],[4.928,-11.595],[12.465,-0.87],[0,0],[-14.56,12.656],[0,0],[-8.406,-10.146]],"o":[[7.827,9.856],[-4.928,11.595],[0,0],[-20.722,-16.616],[0,0],[12.755,-3.189],[0,0]],"v":[[38.416,-22.549],[43.344,11.946],[14.936,32.527],[-32.966,35.719],[-32.314,-26.028],[3.631,-34.724],[38.126,-23.129]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.75686275959,0.549019634724,0.474509805441,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Nail","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":295,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Thumb - PATH","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":59,"s":[17.7]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":95,"s":[15.7]},{"t":147,"s":[15.7]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":122,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.6,"y":0.6},"o":{"x":0.604,"y":0.604},"t":145,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.6,"y":0.6},"o":{"x":0.2,"y":0.2},"t":147,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":182,"s":[-20,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":197,"s":[0,0,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,49,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":25,"nm":"Elevation","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[0,0,0,0.25],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":63.75,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":180,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":4,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":8,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.7},"t":59,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.6,"y":0},"t":95,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":122,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.49,-5.931],[30.698,11.123],[-18.869,10.266],[-42.877,14.071],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.49,5.931],[-30.684,-10.869],[30.147,-16.402],[13.194,-4.33],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-113.746,122.8],[-214.825,120.486],[-218.536,60.463],[-143.094,15.021],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.56,"y":1},"o":{"x":0.4,"y":0},"t":140,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":182,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[21.232,-2.05],[28.119,16.594],[-20.439,6.609],[-44.737,5.921],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-21.232,2.05],[-28.153,-16.343],[32.655,-10.559],[13.766,-1.822],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-124.248,123.637],[-223.166,102.718],[-215.742,43.041],[-133.212,12.294],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"t":197,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"h":1},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":228,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.364],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[115.466,195.08],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":248,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0},"t":260,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.218,-40.908],[25.237,-53.227],[55.367,-3.479],[27.304,14.385],[26.107,4.203],[20.854,-4.488],[29.847,13.237],[-19.539,8.925],[-43.754,11.046],[-18.617,4.337],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-10.146,0.58],[-24.064,-12.677],[-29.298,-4.802],[-20.854,4.488],[-29.851,-12.983],[31.217,-14.259],[13.464,-3.399],[35.357,-7.895],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.226,97.821],[115.466,195.08],[32.184,139.048],[-41.137,117.012],[-117.615,122.088],[-218.286,112.728],[-217.801,52.593],[-139.373,12.524],[-81.375,3.213],[-12.612,-36.255]],"c":true}]},{"t":275,"s":[{"i":[[-2.609,1.739],[-87.592,74.129],[-32.219,-40.908],[25.237,-53.227],[32.754,-2.058],[27.304,14.385],[26.089,4.058],[20.871,-4.348],[30.147,15.653],[-19.422,9.856],[-43.806,10.633],[-18.621,4.297],[-16.233,10.726]],"o":[[104.165,-73.861],[39.748,-33.639],[29.647,37.643],[-33.816,71.321],[-32.766,1.872],[-24.064,-12.677],[-29.278,-4.638],[-20.871,4.348],[-30.147,-15.363],[31.033,-15.738],[13.48,-3.272],[35.365,-7.827],[2.609,-2.029]],"v":[[-4.785,-41.762],[88.687,-303.495],[289.167,-149.936],[310.227,97.821],[143.881,189.328],[32.184,139.048],[-46.238,116.511],[-118.128,117.96],[-234.659,118.83],[-235.238,50.129],[-138.858,16.664],[-91.169,5.488],[-12.612,-36.255]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.694117665291,0.435294121504,0.345098048449,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":7.087,"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":"Thumb","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":295,"st":-40,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":3,"nm":"All Overview Scroll","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":246,"s":[434]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":263,"s":[638.8]},{"t":348,"s":[946]}],"ix":3},"y":{"a":0,"k":-36,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":22,"mn":"Pseudo/494931","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/494931-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/494931-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/494931-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/494931-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/494931-0005","ix":5,"v":0},{"ty":6,"nm":"Nulls are useless.","mn":"Pseudo/494931-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0007","ix":7,"v":0},{"ty":6,"nm":"They live in the Solids folder,","mn":"Pseudo/494931-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0009","ix":9,"v":0},{"ty":6,"nm":"must travel with projects, and","mn":"Pseudo/494931-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0011","ix":11,"v":0},{"ty":6,"nm":"may be deleted like footage.","mn":"Pseudo/494931-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0013","ix":13,"v":0},{"ty":6,"nm":"Don't use them anymore.","mn":"Pseudo/494931-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0015","ix":15,"v":0},{"ty":6,"nm":"Void - 0.7.1","mn":"Pseudo/494931-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0017","ix":17,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/494931-0018","ix":18,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0019","ix":19,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0020","ix":20,"v":0}]}],"ip":20,"op":456,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":3,"nm":"Initial Overview In","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":182,"s":[-326]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":202,"s":[209]},{"t":217,"s":[206]}],"ix":3},"y":{"a":0,"k":532,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":22,"mn":"Pseudo/494931","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/494931-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/494931-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/494931-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/494931-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/494931-0005","ix":5,"v":0},{"ty":6,"nm":"Nulls are useless.","mn":"Pseudo/494931-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0007","ix":7,"v":0},{"ty":6,"nm":"They live in the Solids folder,","mn":"Pseudo/494931-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0009","ix":9,"v":0},{"ty":6,"nm":"must travel with projects, and","mn":"Pseudo/494931-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0011","ix":11,"v":0},{"ty":6,"nm":"may be deleted like footage.","mn":"Pseudo/494931-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0013","ix":13,"v":0},{"ty":6,"nm":"Don't use them anymore.","mn":"Pseudo/494931-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0015","ix":15,"v":0},{"ty":6,"nm":"Void - 0.7.1","mn":"Pseudo/494931-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0017","ix":17,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/494931-0018","ix":18,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0019","ix":19,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0020","ix":20,"v":0}]}],"ip":20,"op":456,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":3,"nm":"Loop App to Center","parent":11,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":-512,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":401,"s":[0]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":407.666,"s":[-38.4]},{"t":441,"s":[-96]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":456,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":14,"sr":1,"ks":{"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-256,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[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,0],[18.976,-48.115],[0,0],[14.69,-5.794],[0,0],[-48.115,-18.977],[0,0],[-5.794,-14.69],[0,0],[-18.977,48.115],[0,0],[-14.69,5.794],[0,0],[48.115,18.976],[0,0],[5.794,14.69]],"o":[[-18.977,-48.115],[0,0],[-5.794,14.69],[0,0],[-48.115,18.976],[0,0],[14.69,5.794],[0,0],[18.976,48.115],[0,0],[5.794,-14.69],[0,0],[48.115,-18.977],[0,0],[-14.69,-5.794],[0,0]],"v":[[53.024,-96.229],[-53.024,-96.229],[-56.162,-88.274],[-88.274,-56.162],[-96.229,-53.024],[-96.229,53.024],[-88.274,56.161],[-56.162,88.273],[-53.024,96.228],[53.024,96.228],[56.161,88.273],[88.273,56.161],[96.228,53.024],[96.228,-53.024],[88.273,-56.162],[56.161,-88.274]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":57,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":455,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-45,"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":"Star 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":110,"op":456,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":11,"sr":1,"ks":{"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":122,"s":[-768]},{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":401,"s":[-768]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":406,"s":[-984]},{"t":431,"s":[-1308]}],"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":1,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":14,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[-768,0],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-772.838,0],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-788.422,0],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-818.479,0],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-872.229,0],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-984,0],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1111.278,0],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1167.309,0],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1199.786,0],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1221.853,0],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1238.119,0],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1250.7,0],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1260.737,0],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1268.916,0],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1275.679,0],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1281.331,0],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1286.087,0],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1290.107,0],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1293.513,0],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1296.398,0],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1298.838,0],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1300.893,0],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1302.61,0],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1304.033,0],"t":424,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1305.193,0],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1306.12,0],"t":426,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-1307.368,0],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[8.421,-4.724],[0,0],[4.631,-0.057],[0,0],[4.931,-8.301],[0,0],[3.982,-2.365],[0,0],[0.12,-9.654],[0,0],[2.266,-4.039],[0,0],[-4.724,-8.421],[0,0],[-0.057,-4.631],[0,0],[-8.301,-4.931],[0,0],[-2.365,-3.982],[0,0],[-9.654,-0.119],[0,0],[-4.039,-2.266],[0,0],[-8.421,4.724],[0,0],[-4.631,0.057],[0,0],[-4.931,8.301],[0,0],[-3.982,2.365],[0,0],[-0.119,9.654],[0,0],[-2.266,4.039],[0,0],[4.724,8.421],[0,0],[0.057,4.631],[0,0],[8.301,4.931],[0,0],[2.365,3.982],[0,0],[9.654,0.12],[0,0],[4.039,2.266]],"o":[[-8.421,-4.724],[0,0],[-4.039,2.266],[0,0],[-9.654,0.12],[0,0],[-2.365,3.982],[0,0],[-8.301,4.931],[0,0],[-0.057,4.631],[0,0],[-4.724,8.421],[0,0],[2.266,4.039],[0,0],[0.12,9.655],[0,0],[3.982,2.365],[0,0],[4.931,8.301],[0,0],[4.631,0.057],[0,0],[8.421,4.724],[0,0],[4.039,-2.266],[0,0],[9.654,-0.119],[0,0],[2.365,-3.982],[0,0],[8.301,-4.931],[0,0],[0.057,-4.631],[0,0],[4.724,-8.421],[0,0],[-2.266,-4.039],[0,0],[-0.119,-9.654],[0,0],[-3.982,-2.365],[0,0],[-4.931,-8.301],[0,0],[-4.631,-0.057],[0,0]],"v":[[13.557,-175.395],[-13.557,-175.395],[-36.472,-162.541],[-49.685,-159.001],[-75.957,-158.675],[-99.438,-145.118],[-112.856,-122.529],[-122.529,-112.856],[-145.118,-99.438],[-158.675,-75.957],[-159.001,-49.685],[-162.541,-36.472],[-175.395,-13.557],[-175.395,13.557],[-162.541,36.472],[-159.001,49.685],[-158.675,75.957],[-145.118,99.438],[-122.529,112.856],[-112.856,122.529],[-99.438,145.119],[-75.957,158.675],[-49.685,159.001],[-36.472,162.541],[-13.557,175.395],[13.557,175.395],[36.472,162.541],[49.685,159.001],[75.957,158.675],[99.438,145.119],[112.856,122.529],[122.529,112.856],[145.119,99.438],[158.675,75.957],[159.001,49.685],[162.541,36.472],[175.395,13.557],[175.395,-13.557],[162.541,-36.472],[159.001,-49.685],[158.675,-75.957],[145.119,-99.438],[122.529,-112.856],[112.856,-122.529],[99.438,-145.118],[75.957,-158.675],[49.685,-159.001],[36.472,-162.541]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":28,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":455,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[70,70],"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":"Star 9","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":110,"op":456,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":264,"s":[50]},{"i":{"x":[0.833],"y":[0.648]},"o":{"x":[0.167],"y":[0]},"t":348,"s":[100]},{"i":{"x":[0.82],"y":[0]},"o":{"x":[0.78],"y":[0]},"t":422,"s":[95]},{"t":447,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":455,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":9,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":401,"s":[220]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":406,"s":[644]},{"t":431,"s":[1280]}],"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":401,"s":[220]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":406,"s":[452]},{"t":431,"s":[800]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":401,"s":[60]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":406,"s":[43.2]},{"t":431,"s":[18]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"k":[{"s":[60],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":418,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":419,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":420,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":421,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":422,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":423,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":426,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":427,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":428,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":429,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":430,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"k":[{"s":[60],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":418,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":419,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":420,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":421,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":422,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":423,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":426,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":427,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":428,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":429,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":430,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"k":[{"s":[60],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":418,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":419,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":420,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":421,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":422,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":423,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":426,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":427,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":428,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":429,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":430,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]},{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":2,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":15,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":455,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-33.114,0],[0,0],[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114]],"o":[[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114],[0,0],[-33.114,0],[0,0]],"v":[[-110,-50],[-50,-110],[50,-110],[110,-50],[110,50],[50,110],[-50,110],[-110,50]],"c":true}],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-32.906,0],[0,0],[0,-32.906],[0,0],[32.906,0],[0,0],[0,32.906]],"o":[[0,-32.906],[0,0],[32.906,0],[0,0],[0,32.906],[0,0],[-32.906,0],[0,0]],"v":[[-114.749,-52.975],[-55.125,-112.598],[55.125,-112.598],[114.749,-52.975],[114.749,52.975],[55.125,112.598],[-55.125,112.598],[-114.749,52.975]],"c":true}],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-32.237,0],[0,0],[0,-32.237],[0,0],[32.237,0],[0,0],[0,32.237]],"o":[[0,-32.237],[0,0],[32.237,0],[0,0],[0,32.237],[0,0],[-32.237,0],[0,0]],"v":[[-130.044,-62.556],[-71.633,-120.968],[71.633,-120.968],[130.044,-62.556],[130.044,62.556],[71.633,120.968],[-71.633,120.968],[-130.044,62.556]],"c":true}],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-30.947,0],[0,0],[0,-30.947],[0,0],[30.947,0],[0,0],[0,30.947]],"o":[[0,-30.947],[0,0],[30.947,0],[0,0],[0,30.947],[0,0],[-30.947,0],[0,0]],"v":[[-159.544,-81.035],[-103.47,-137.109],[103.47,-137.109],[159.544,-81.035],[159.544,81.035],[103.47,137.109],[-103.47,137.109],[-159.544,81.035]],"c":true}],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-28.64,0],[0,0],[0,-28.64],[0,0],[28.64,0],[0,0],[0,28.64]],"o":[[0,-28.64],[0,0],[28.64,0],[0,0],[0,28.64],[0,0],[-28.64,0],[0,0]],"v":[[-212.299,-114.082],[-160.406,-165.975],[160.406,-165.975],[212.299,-114.082],[212.299,114.082],[160.406,165.975],[-160.406,165.975],[-212.299,114.082]],"c":true}],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-23.842,0],[0,0],[0,-23.842],[0,0],[23.842,0],[0,0],[0,23.842]],"o":[[0,-23.842],[0,0],[23.842,0],[0,0],[0,23.842],[0,0],[-23.842,0],[0,0]],"v":[[-322,-182.8],[-278.8,-226],[278.8,-226],[322,-182.8],[322,182.8],[278.8,226],[-278.8,226],[-322,182.8]],"c":true}],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-18.379,0],[0,0],[0,-18.379],[0,0],[18.379,0],[0,0],[0,18.379]],"o":[[0,-18.379],[0,0],[18.379,0],[0,0],[0,18.379],[0,0],[-18.379,0],[0,0]],"v":[[-446.921,-261.052],[-413.62,-294.353],[413.62,-294.353],[446.921,-261.052],[446.921,261.052],[413.62,294.353],[-413.62,294.353],[-446.921,261.052]],"c":true}],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-15.973,0],[0,0],[0,-15.973],[0,0],[15.973,0],[0,0],[0,15.973]],"o":[[0,-15.973],[0,0],[15.973,0],[0,0],[0,15.973],[0,0],[-15.973,0],[0,0]],"v":[[-501.914,-295.501],[-472.972,-324.444],[472.972,-324.444],[501.914,-295.501],[501.914,295.501],[472.972,324.444],[-472.972,324.444],[-501.914,295.501]],"c":true}],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-14.579,0],[0,0],[0,-14.579],[0,0],[14.579,0],[0,0],[0,14.579]],"o":[[0,-14.579],[0,0],[14.579,0],[0,0],[0,14.579],[0,0],[-14.579,0],[0,0]],"v":[[-533.79,-315.468],[-507.373,-341.885],[507.373,-341.885],[533.79,-315.468],[533.79,315.468],[507.373,341.885],[-507.373,341.885],[-533.79,315.468]],"c":true}],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-13.632,0],[0,0],[0,-13.632],[0,0],[13.632,0],[0,0],[0,13.632]],"o":[[0,-13.632],[0,0],[13.632,0],[0,0],[0,13.632],[0,0],[-13.632,0],[0,0]],"v":[[-555.448,-329.035],[-530.748,-353.736],[530.748,-353.736],[555.448,-329.035],[555.448,329.035],[530.748,353.736],[-530.748,353.736],[-555.448,329.035]],"c":true}],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-12.934,0],[0,0],[0,-12.934],[0,0],[12.934,0],[0,0],[0,12.934]],"o":[[0,-12.934],[0,0],[12.934,0],[0,0],[0,12.934],[0,0],[-12.934,0],[0,0]],"v":[[-571.413,-339.036],[-547.978,-362.471],[547.978,-362.471],[571.413,-339.036],[571.413,339.036],[547.978,362.471],[-547.978,362.471],[-571.413,339.036]],"c":true}],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-12.394,0],[0,0],[0,-12.394],[0,0],[12.394,0],[0,0],[0,12.394]],"o":[[0,-12.394],[0,0],[12.394,0],[0,0],[0,12.394],[0,0],[-12.394,0],[0,0]],"v":[[-583.761,-346.771],[-561.305,-369.228],[561.305,-369.228],[583.761,-346.771],[583.761,346.771],[561.305,369.228],[-561.305,369.228],[-583.761,346.771]],"c":true}],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.963,0],[0,0],[0,-11.963],[0,0],[11.963,0],[0,0],[0,11.963]],"o":[[0,-11.963],[0,0],[11.963,0],[0,0],[0,11.963],[0,0],[-11.963,0],[0,0]],"v":[[-593.612,-352.942],[-571.936,-374.618],[571.936,-374.618],[593.612,-352.942],[593.612,352.942],[571.936,374.618],[-571.936,374.618],[-593.612,352.942]],"c":true}],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.612,0],[0,0],[0,-11.612],[0,0],[11.612,0],[0,0],[0,11.612]],"o":[[0,-11.612],[0,0],[11.612,0],[0,0],[0,11.612],[0,0],[-11.612,0],[0,0]],"v":[[-601.64,-357.97],[-580.6,-379.01],[580.6,-379.01],[601.64,-357.97],[601.64,357.97],[580.6,379.01],[-580.6,379.01],[-601.64,357.97]],"c":true}],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.322,0],[0,0],[0,-11.322],[0,0],[11.322,0],[0,0],[0,11.322]],"o":[[0,-11.322],[0,0],[11.322,0],[0,0],[0,11.322],[0,0],[-11.322,0],[0,0]],"v":[[-608.278,-362.129],[-587.764,-382.643],[587.764,-382.643],[608.278,-362.129],[608.278,362.129],[587.764,382.643],[-587.764,382.643],[-608.278,362.129]],"c":true}],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.079,0],[0,0],[0,-11.079],[0,0],[11.079,0],[0,0],[0,11.079]],"o":[[0,-11.079],[0,0],[11.079,0],[0,0],[0,11.079],[0,0],[-11.079,0],[0,0]],"v":[[-613.825,-365.603],[-593.75,-385.678],[593.75,-385.678],[613.825,-365.603],[613.825,365.603],[593.75,385.678],[-593.75,385.678],[-613.825,365.603]],"c":true}],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.875,0],[0,0],[0,-10.875],[0,0],[10.875,0],[0,0],[0,10.875]],"o":[[0,-10.875],[0,0],[10.875,0],[0,0],[0,10.875],[0,0],[-10.875,0],[0,0]],"v":[[-618.492,-368.527],[-598.788,-388.232],[598.788,-388.232],[618.492,-368.527],[618.492,368.527],[598.788,388.232],[-598.788,388.232],[-618.492,368.527]],"c":true}],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.702,0],[0,0],[0,-10.702],[0,0],[10.702,0],[0,0],[0,10.702]],"o":[[0,-10.702],[0,0],[10.702,0],[0,0],[0,10.702],[0,0],[-10.702,0],[0,0]],"v":[[-622.438,-370.999],[-603.047,-390.391],[603.047,-390.391],[622.438,-370.999],[622.438,370.999],[603.047,390.391],[-603.047,390.391],[-622.438,370.999]],"c":true}],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.556,0],[0,0],[0,-10.556],[0,0],[10.556,0],[0,0],[0,10.556]],"o":[[0,-10.556],[0,0],[10.556,0],[0,0],[0,10.556],[0,0],[-10.556,0],[0,0]],"v":[[-625.781,-373.093],[-606.654,-392.22],[606.654,-392.22],[625.781,-373.093],[625.781,373.093],[606.654,392.22],[-606.654,392.22],[-625.781,373.093]],"c":true}],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.432,0],[0,0],[0,-10.432],[0,0],[10.432,0],[0,0],[0,10.432]],"o":[[0,-10.432],[0,0],[10.432,0],[0,0],[0,10.432],[0,0],[-10.432,0],[0,0]],"v":[[-628.613,-374.867],[-609.711,-393.769],[609.711,-393.769],[628.613,-374.867],[628.613,374.867],[609.711,393.769],[-609.711,393.769],[-628.613,374.867]],"c":true}],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.327,0],[0,0],[0,-10.327],[0,0],[10.328,0],[0,0],[0,10.328]],"o":[[0,-10.327],[0,0],[10.328,0],[0,0],[0,10.328],[0,0],[-10.327,0],[0,0]],"v":[[-631.008,-376.367],[-612.295,-395.08],[612.295,-395.08],[631.008,-376.367],[631.008,376.367],[612.295,395.08],[-612.295,395.08],[-631.008,376.367]],"c":true}],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.239,0],[0,0],[0,-10.239],[0,0],[10.239,0],[0,0],[0,10.239]],"o":[[0,-10.239],[0,0],[10.239,0],[0,0],[0,10.239],[0,0],[-10.239,0],[0,0]],"v":[[-633.024,-377.63],[-614.471,-396.183],[614.471,-396.183],[633.024,-377.63],[633.024,377.63],[614.471,396.183],[-614.471,396.183],[-633.024,377.63]],"c":true}],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.166,0],[0,0],[0,-10.166],[0,0],[10.166,0],[0,0],[0,10.166]],"o":[[0,-10.166],[0,0],[10.166,0],[0,0],[0,10.166],[0,0],[-10.166,0],[0,0]],"v":[[-634.71,-378.686],[-616.291,-397.106],[616.291,-397.106],[634.71,-378.686],[634.71,378.686],[616.291,397.106],[-616.291,397.106],[-634.71,378.686]],"c":true}],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.104,0],[0,0],[0,-10.104],[0,0],[10.104,0],[0,0],[0,10.104]],"o":[[0,-10.104],[0,0],[10.104,0],[0,0],[0,10.104],[0,0],[-10.104,0],[0,0]],"v":[[-636.106,-379.561],[-617.797,-397.869],[617.797,-397.869],[636.106,-379.561],[636.106,379.561],[617.797,397.869],[-617.797,397.869],[-636.106,379.561]],"c":true}],"t":424,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.055,0],[0,0],[0,-10.055],[0,0],[10.055,0],[0,0],[0,10.055]],"o":[[0,-10.055],[0,0],[10.055,0],[0,0],[0,10.055],[0,0],[-10.055,0],[0,0]],"v":[[-637.245,-380.274],[-619.026,-398.492],[619.026,-398.492],[637.245,-380.274],[637.245,380.274],[619.026,398.492],[-619.026,398.492],[-637.245,380.274]],"c":true}],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.015,0],[0,0],[0,-10.015],[0,0],[10.015,0],[0,0],[0,10.015]],"o":[[0,-10.015],[0,0],[10.015,0],[0,0],[0,10.015],[0,0],[-10.015,0],[0,0]],"v":[[-638.154,-380.844],[-620.008,-398.99],[620.008,-398.99],[638.154,-380.844],[638.154,380.844],[620.008,398.99],[-620.008,398.99],[-638.154,380.844]],"c":true}],"t":426,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.984,0],[0,0],[0,-9.984],[0,0],[9.984,0],[0,0],[0,9.984]],"o":[[0,-9.984],[0,0],[9.984,0],[0,0],[0,9.984],[0,0],[-9.984,0],[0,0]],"v":[[-638.859,-381.285],[-620.769,-399.376],[620.769,-399.376],[638.859,-381.285],[638.859,381.285],[620.769,399.376],[-620.769,399.376],[-638.859,381.285]],"c":true}],"t":427,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.961,0],[0,0],[0,-9.961],[0,0],[9.961,0],[0,0],[0,9.961]],"o":[[0,-9.961],[0,0],[9.961,0],[0,0],[0,9.961],[0,0],[-9.961,0],[0,0]],"v":[[-639.379,-381.611],[-621.33,-399.66],[621.33,-399.66],[639.379,-381.611],[639.379,381.611],[621.33,399.66],[-621.33,399.66],[-639.379,381.611]],"c":true}],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.946,0],[0,0],[0,-9.946],[0,0],[9.946,0],[0,0],[0,9.946]],"o":[[0,-9.946],[0,0],[9.946,0],[0,0],[0,9.946],[0,0],[-9.946,0],[0,0]],"v":[[-639.733,-381.833],[-621.712,-399.854],[621.712,-399.854],[639.733,-381.833],[639.733,381.833],[621.712,399.854],[-621.712,399.854],[-639.733,381.833]],"c":true}],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.937,0],[0,0],[0,-9.937],[0,0],[9.937,0],[0,0],[0,9.937]],"o":[[0,-9.937],[0,0],[9.937,0],[0,0],[0,9.937],[0,0],[-9.937,0],[0,0]],"v":[[-639.935,-381.959],[-621.93,-399.965],[621.93,-399.965],[639.935,-381.959],[639.935,381.959],[621.93,399.965],[-621.93,399.965],[-639.935,381.959]],"c":true}],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":455,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":110,"op":456,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":10,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":64,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":76,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":88,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":118,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":140,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.52],"y":[0]},"t":246,"s":[100]},{"t":264,"s":[50]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.15,"y":1},"o":{"x":0.37,"y":0},"t":122,"s":[206,794,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.15,"y":0.15},"o":{"x":0.37,"y":0.37},"t":170,"s":[206,421,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.8,"y":0.15},"o":{"x":0.3,"y":0},"t":401,"s":[206,421,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.7},"t":406,"s":[418,421,0],"to":[0,0,0],"ti":[0,0,0]},{"t":431,"s":[736,421,0]}],"ix":2,"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":455,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":2,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":132,"s":[1282]},{"t":170,"s":[352],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":182,"s":[352]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":202,"s":[216]},{"t":217,"s":[220]}],"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":132,"s":[582]},{"t":170,"s":[382],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":182,"s":[382]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":202,"s":[216]},{"t":217,"s":[220]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":132,"s":[90]},{"t":170,"s":[80],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":182,"s":[80]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":202,"s":[64]},{"t":217,"s":[60]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"k":[{"s":[89.923],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":201,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":202,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":203,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":204,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":205,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":206,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":207,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":208,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":209,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":210,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":211,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":212,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":213,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":214,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":215,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":216,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"k":[{"s":[89.923],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":201,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":202,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":203,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":204,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":205,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":206,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":207,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":208,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":209,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":210,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":211,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":212,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":213,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":214,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":215,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":216,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"k":[{"s":[89.923],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":201,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":202,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":203,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":204,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":205,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":206,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":207,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":208,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":209,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":210,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":211,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":212,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":213,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":214,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":215,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":216,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]},{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":2,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":16,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[206,793.586],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,792.258],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,789.864],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,786.218],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,781.092],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,774.214],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,765.261],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,753.89],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,739.78],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,722.769],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,703.036],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,681.264],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,658.554],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,636.094],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,614.786],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,595.117],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,577.233],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,561.095],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,546.578],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,533.516],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,521.747],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,511.131],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,501.533],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,492.838],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,484.956],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,477.801],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,471.3],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,465.393],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,460.026],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,455.152],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,450.729],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,446.721],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,443.098],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,439.832],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,436.895],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,434.265],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,431.924],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,429.854],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,428.038],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,426.459],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,425.105],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,423.964],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,423.023],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,422.273],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,421.704],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,421.308],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[206,421],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[210.749,421],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[226.045,421],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[255.545,421],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[308.302,421],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[418,421],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[542.923,421],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[597.913,421],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[629.788,421],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[651.447,421],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[667.413,421],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[679.761,421],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[689.612,421],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[697.64,421],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[704.277,421],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[709.824,421],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[714.491,421],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[718.438,421],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[721.78,421],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[724.612,421],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[727.008,421],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[729.024,421],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[730.711,421],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[732.106,421],"t":424,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[733.245,421],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[734.154,421],"t":426,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[734.859,421],"t":427,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[735.379,421],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[49.671,0],[0,0],[0,49.671]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,49.671],[0,0],[-49.671,0],[0,0]],"v":[[-641,90],[-551,0],[551,0],[641,90],[641,492],[551,582],[-551,582],[-641,492]],"c":true}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.661,0],[0,0],[0,-49.661],[0,0],[49.661,0],[0,0],[0,49.661]],"o":[[0,-49.661],[0,0],[49.661,0],[0,0],[0,49.661],[0,0],[-49.661,0],[0,0]],"v":[[-640.166,89.982],[-550.184,0],[550.184,0],[640.166,89.982],[640.166,491.659],[550.184,581.641],[-550.184,581.641],[-640.166,491.659]],"c":true}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.629,0],[0,0],[0,-49.629],[0,0],[49.629,0],[0,0],[0,49.629]],"o":[[0,-49.629],[0,0],[49.629,0],[0,0],[0,49.629],[0,0],[-49.629,0],[0,0]],"v":[[-637.437,89.923],[-547.513,0],[547.513,0],[637.437,89.923],[637.437,490.544],[547.513,580.467],[-547.513,580.467],[-637.437,490.544]],"c":true}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.569,0],[0,0],[0,-49.569],[0,0],[49.569,0],[0,0],[0,49.569]],"o":[[0,-49.569],[0,0],[49.569,0],[0,0],[0,49.569],[0,0],[-49.569,0],[0,0]],"v":[[-632.398,89.815],[-542.583,0],[542.583,0],[632.398,89.815],[632.398,488.485],[542.583,578.3],[-542.583,578.3],[-632.398,488.485]],"c":true}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.475,0],[0,0],[0,-49.475],[0,0],[49.475,0],[0,0],[0,49.475]],"o":[[0,-49.475],[0,0],[49.475,0],[0,0],[0,49.475],[0,0],[-49.475,0],[0,0]],"v":[[-624.515,89.645],[-534.87,0],[534.87,0],[624.515,89.645],[624.515,485.264],[534.87,574.91],[-534.87,574.91],[-624.515,485.264]],"c":true}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.34,0],[0,0],[0,-49.34],[0,0],[49.34,0],[0,0],[0,49.34]],"o":[[0,-49.34],[0,0],[49.34,0],[0,0],[0,49.34],[0,0],[-49.34,0],[0,0]],"v":[[-613.109,89.4],[-523.709,0],[523.709,0],[613.109,89.4],[613.109,480.604],[523.709,570.004],[-523.709,570.004],[-613.109,480.604]],"c":true}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.153,0],[0,0],[0,-49.153],[0,0],[49.153,0],[0,0],[0,49.153]],"o":[[0,-49.153],[0,0],[49.153,0],[0,0],[0,49.153],[0,0],[-49.153,0],[0,0]],"v":[[-597.362,89.062],[-508.301,0],[508.301,0],[597.362,89.062],[597.362,474.17],[508.301,563.231],[-508.301,563.231],[-597.362,474.17]],"c":true}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.905,0],[0,0],[0,-48.905],[0,0],[48.905,0],[0,0],[0,48.905]],"o":[[0,-48.905],[0,0],[48.905,0],[0,0],[0,48.905],[0,0],[-48.905,0],[0,0]],"v":[[-576.424,88.611],[-487.812,0],[487.813,0],[576.424,88.611],[576.424,465.614],[487.813,554.225],[-487.812,554.225],[-576.424,465.614]],"c":true}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.588,0],[0,0],[0,-48.588],[0,0],[48.588,0],[0,0],[0,48.588]],"o":[[0,-48.588],[0,0],[48.588,0],[0,0],[0,48.588],[0,0],[-48.588,0],[0,0]],"v":[[-549.762,88.038],[-461.724,0],[461.724,0],[549.762,88.038],[549.762,454.72],[461.724,542.758],[-461.724,542.758],[-549.762,454.72]],"c":true}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.209,0],[0,0],[0,-48.209],[0,0],[48.209,0],[0,0],[0,48.209]],"o":[[0,-48.209],[0,0],[48.209,0],[0,0],[0,48.209],[0,0],[-48.209,0],[0,0]],"v":[[-517.833,87.351],[-430.482,0],[430.482,0],[517.833,87.351],[517.833,441.674],[430.482,529.025],[-430.482,529.025],[-517.833,441.674]],"c":true}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-47.791,0],[0,0],[0,-47.791],[0,0],[47.791,0],[0,0],[0,47.791]],"o":[[0,-47.791],[0,0],[47.791,0],[0,0],[0,47.791],[0,0],[-47.791,0],[0,0]],"v":[[-482.616,86.594],[-396.022,0],[396.022,0],[482.616,86.594],[482.616,427.284],[396.022,513.878],[-396.022,513.878],[-482.616,427.284]],"c":true}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-47.369,0],[0,0],[0,-47.369],[0,0],[47.369,0],[0,0],[0,47.369]],"o":[[0,-47.369],[0,0],[47.369,0],[0,0],[0,47.369],[0,0],[-47.369,0],[0,0]],"v":[[-447.043,85.829],[-361.214,0],[361.214,0],[447.043,85.829],[447.043,412.749],[361.214,498.578],[-361.214,498.578],[-447.043,412.749]],"c":true}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.972,0],[0,0],[0,-46.972],[0,0],[46.972,0],[0,0],[0,46.972]],"o":[[0,-46.972],[0,0],[46.972,0],[0,0],[0,46.972],[0,0],[-46.972,0],[0,0]],"v":[[-413.564,85.109],[-328.455,0],[328.456,0],[413.564,85.109],[413.564,399.069],[328.456,484.178],[-328.455,484.178],[-413.564,399.069]],"c":true}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.614,0],[0,0],[0,-46.614],[0,0],[46.614,0],[0,0],[0,46.614]],"o":[[0,-46.614],[0,0],[46.614,0],[0,0],[0,46.614],[0,0],[-46.614,0],[0,0]],"v":[[-383.396,84.46],[-298.936,0],[298.936,0],[383.396,84.46],[383.396,386.742],[298.936,471.203],[-298.936,471.203],[-383.396,386.742]],"c":true}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.298,0],[0,0],[0,-46.298],[0,0],[46.298,0],[0,0],[0,46.298]],"o":[[0,-46.298],[0,0],[46.298,0],[0,0],[0,46.298],[0,0],[-46.298,0],[0,0]],"v":[[-356.773,83.888],[-272.885,0],[272.885,0],[356.773,83.888],[356.773,375.864],[272.885,459.752],[-272.885,459.752],[-356.773,375.864]],"c":true}],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.021,0],[0,0],[0,-46.021],[0,0],[46.021,0],[0,0],[0,46.021]],"o":[[0,-46.021],[0,0],[46.021,0],[0,0],[0,46.021],[0,0],[-46.021,0],[0,0]],"v":[[-333.455,83.386],[-250.069,0],[250.069,0],[333.455,83.386],[333.455,366.336],[250.069,449.723],[-250.069,449.723],[-333.455,366.336]],"c":true}],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.779,0],[0,0],[0,-45.779],[0,0],[45.779,0],[0,0],[0,45.779]],"o":[[0,-45.779],[0,0],[45.779,0],[0,0],[0,45.779],[0,0],[-45.779,0],[0,0]],"v":[[-313.049,82.947],[-230.102,0],[230.102,0],[313.049,82.947],[313.049,357.999],[230.102,440.946],[-230.102,440.946],[-313.049,357.999]],"c":true}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.566,0],[0,0],[0,-45.566],[0,0],[45.566,0],[0,0],[0,45.566]],"o":[[0,-45.566],[0,0],[45.566,0],[0,0],[0,45.566],[0,0],[-45.566,0],[0,0]],"v":[[-295.158,82.563],[-212.595,0],[212.595,0],[295.158,82.563],[295.158,350.688],[212.595,433.251],[-212.595,433.251],[-295.158,350.688]],"c":true}],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.38,0],[0,0],[0,-45.38],[0,0],[45.38,0],[0,0],[0,45.38]],"o":[[0,-45.38],[0,0],[45.38,0],[0,0],[0,45.38],[0,0],[-45.38,0],[0,0]],"v":[[-279.427,82.224],[-197.203,0],[197.203,0],[279.427,82.224],[279.427,344.26],[197.203,426.485],[-197.203,426.485],[-279.427,344.26]],"c":true}],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.215,0],[0,0],[0,-45.215],[0,0],[45.215,0],[0,0],[0,45.215]],"o":[[0,-45.215],[0,0],[45.215,0],[0,0],[0,45.215],[0,0],[-45.215,0],[0,0]],"v":[[-265.557,81.926],[-183.631,0],[183.631,0],[265.557,81.926],[265.557,338.593],[183.631,420.519],[-183.631,420.519],[-265.557,338.593]],"c":true}],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.069,0],[0,0],[0,-45.069],[0,0],[45.069,0],[0,0],[0,45.069]],"o":[[0,-45.069],[0,0],[45.069,0],[0,0],[0,45.069],[0,0],[-45.069,0],[0,0]],"v":[[-253.299,81.662],[-171.637,0],[171.637,0],[253.299,81.662],[253.299,333.585],[171.637,415.247],[-171.637,415.247],[-253.299,333.585]],"c":true}],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.941,0],[0,0],[0,-44.941],[0,0],[44.941,0],[0,0],[0,44.941]],"o":[[0,-44.941],[0,0],[44.941,0],[0,0],[0,44.941],[0,0],[-44.941,0],[0,0]],"v":[[-242.449,81.429],[-161.02,0],[161.02,0],[242.449,81.429],[242.449,329.151],[161.02,410.58],[-161.02,410.58],[-242.449,329.151]],"c":true}],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.827,0],[0,0],[0,-44.827],[0,0],[44.827,0],[0,0],[0,44.827]],"o":[[0,-44.827],[0,0],[44.827,0],[0,0],[0,44.827],[0,0],[-44.827,0],[0,0]],"v":[[-232.835,81.222],[-151.613,0],[151.613,0],[232.835,81.222],[232.835,325.223],[151.613,406.445],[-151.613,406.445],[-232.835,325.223]],"c":true}],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.725,0],[0,0],[0,-44.725],[0,0],[44.725,0],[0,0],[0,44.725]],"o":[[0,-44.725],[0,0],[44.725,0],[0,0],[0,44.725],[0,0],[-44.725,0],[0,0]],"v":[[-224.316,81.039],[-143.277,0],[143.277,0],[224.316,81.039],[224.316,321.742],[143.277,402.781],[-143.277,402.781],[-224.316,321.742]],"c":true}],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.636,0],[0,0],[0,-44.636],[0,0],[44.636,0],[0,0],[0,44.636]],"o":[[0,-44.636],[0,0],[44.636,0],[0,0],[0,44.636],[0,0],[-44.636,0],[0,0]],"v":[[-216.774,80.877],[-135.897,0],[135.897,0],[216.774,80.877],[216.774,318.66],[135.897,399.537],[-135.897,399.537],[-216.774,318.66]],"c":true}],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.557,0],[0,0],[0,-44.557],[0,0],[44.557,0],[0,0],[0,44.557]],"o":[[0,-44.557],[0,0],[44.557,0],[0,0],[0,44.557],[0,0],[-44.557,0],[0,0]],"v":[[-210.107,80.733],[-129.374,0],[129.374,0],[210.107,80.733],[210.107,315.936],[129.374,396.67],[-129.374,396.67],[-210.107,315.936]],"c":true}],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.487,0],[0,0],[0,-44.487],[0,0],[44.487,0],[0,0],[0,44.487]],"o":[[0,-44.487],[0,0],[44.487,0],[0,0],[0,44.487],[0,0],[-44.487,0],[0,0]],"v":[[-204.23,80.607],[-123.623,0],[123.623,0],[204.23,80.607],[204.23,313.535],[123.623,394.142],[-123.623,394.142],[-204.23,313.535]],"c":true}],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.426,0],[0,0],[0,-44.426],[0,0],[44.426,0],[0,0],[0,44.426]],"o":[[0,-44.426],[0,0],[44.426,0],[0,0],[0,44.426],[0,0],[-44.426,0],[0,0]],"v":[[-199.07,80.496],[-118.574,0],[118.574,0],[199.07,80.496],[199.07,311.426],[118.574,391.923],[-118.574,391.923],[-199.07,311.426]],"c":true}],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.372,0],[0,0],[0,-44.372],[0,0],[44.372,0],[0,0],[0,44.372]],"o":[[0,-44.372],[0,0],[44.372,0],[0,0],[0,44.372],[0,0],[-44.372,0],[0,0]],"v":[[-194.563,80.399],[-114.164,0],[114.164,0],[194.563,80.399],[194.563,309.585],[114.164,389.984],[-114.164,389.984],[-194.563,309.585]],"c":true}],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.326,0],[0,0],[0,-44.326],[0,0],[44.326,0],[0,0],[0,44.326]],"o":[[0,-44.326],[0,0],[44.326,0],[0,0],[0,44.326],[0,0],[-44.326,0],[0,0]],"v":[[-190.654,80.315],[-110.338,0],[110.338,0],[190.654,80.315],[190.654,307.987],[110.338,388.303],[-110.338,388.303],[-190.654,307.987]],"c":true}],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.286,0],[0,0],[0,-44.286],[0,0],[44.286,0],[0,0],[0,44.286]],"o":[[0,-44.286],[0,0],[44.286,0],[0,0],[0,44.286],[0,0],[-44.286,0],[0,0]],"v":[[-187.294,80.243],[-107.051,0],[107.051,0],[187.294,80.243],[187.294,306.615],[107.051,386.858],[-107.051,386.858],[-187.294,306.615]],"c":true}],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.252,0],[0,0],[0,-44.252],[0,0],[44.252,0],[0,0],[0,44.252]],"o":[[0,-44.252],[0,0],[44.252,0],[0,0],[0,44.252],[0,0],[-44.252,0],[0,0]],"v":[[-184.442,80.182],[-104.261,0],[104.261,0],[184.442,80.182],[184.442,305.45],[104.261,385.631],[-104.261,385.631],[-184.442,305.45]],"c":true}],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.224,0],[0,0],[0,-44.224],[0,0],[44.224,0],[0,0],[0,44.224]],"o":[[0,-44.224],[0,0],[44.224,0],[0,0],[0,44.224],[0,0],[-44.224,0],[0,0]],"v":[[-182.061,80.13],[-101.93,0],[101.93,0],[182.061,80.13],[182.061,304.476],[101.93,384.607],[-101.93,384.607],[-182.061,304.476]],"c":true}],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.201,0],[0,0],[0,-44.201],[0,0],[44.201,0],[0,0],[0,44.201]],"o":[[0,-44.201],[0,0],[44.201,0],[0,0],[0,44.201],[0,0],[-44.201,0],[0,0]],"v":[[-180.115,80.089],[-100.027,0],[100.027,0],[180.115,80.089],[180.115,303.682],[100.027,383.77],[-100.027,383.77],[-180.115,303.682]],"c":true}],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.183,0],[0,0],[0,-44.183],[0,0],[44.183,0],[0,0],[0,44.183]],"o":[[0,-44.183],[0,0],[44.183,0],[0,0],[0,44.183],[0,0],[-44.183,0],[0,0]],"v":[[-178.577,80.055],[-98.522,0],[98.522,0],[178.577,80.055],[178.577,303.053],[98.522,383.108],[-98.522,383.108],[-178.577,303.053]],"c":true}],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.169,0],[0,0],[0,-44.169],[0,0],[44.169,0],[0,0],[0,44.169]],"o":[[0,-44.169],[0,0],[44.169,0],[0,0],[0,44.169],[0,0],[-44.169,0],[0,0]],"v":[[-177.419,80.031],[-97.389,0],[97.389,0],[177.419,80.031],[177.419,302.58],[97.389,382.611],[-97.389,382.611],[-177.419,302.58]],"c":true}],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.159,0],[0,0],[0,-44.159],[0,0],[44.159,0],[0,0],[0,44.159]],"o":[[0,-44.159],[0,0],[44.159,0],[0,0],[0,44.159],[0,0],[-44.159,0],[0,0]],"v":[[-176.618,80.013],[-96.605,0],[96.605,0],[176.618,80.013],[176.618,302.253],[96.605,382.266],[-96.605,382.266],[-176.618,302.253]],"c":true}],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.154,0],[0,0],[0,-44.154],[0,0],[44.154,0],[0,0],[0,44.154]],"o":[[0,-44.154],[0,0],[44.154,0],[0,0],[0,44.154],[0,0],[-44.154,0],[0,0]],"v":[[-176.151,80.003],[-96.148,0],[96.148,0],[176.151,80.003],[176.151,302.062],[96.148,382.065],[-96.148,382.065],[-176.151,302.062]],"c":true}],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.152,0],[0,0],[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152]],"o":[[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152],[0,0],[-44.152,0],[0,0]],"v":[[-176,80],[-96,0],[96,0],[176,80],[176,302],[96,382],[-96,382],[-176,302]],"c":true}],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.152,0],[0,0],[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152]],"o":[[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152],[0,0],[-44.152,0],[0,0]],"v":[[-176,80],[-96,0],[96,0],[176,80],[176,302],[96,382],[-96,382],[-176,302]],"c":true}],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.127,0],[0,0],[0,-44.127],[0,0],[44.127,0],[0,0],[0,44.127]],"o":[[0,-44.127],[0,0],[44.127,0],[0,0],[0,44.127],[0,0],[-44.127,0],[0,0]],"v":[[-175.806,79.954],[-95.852,0],[95.852,0],[175.806,79.954],[175.806,301.573],[95.852,381.527],[-95.852,381.527],[-175.806,301.573]],"c":true}],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.042,0],[0,0],[0,-44.042],[0,0],[44.042,0],[0,0],[0,44.042]],"o":[[0,-44.042],[0,0],[44.042,0],[0,0],[0,44.042],[0,0],[-44.042,0],[0,0]],"v":[[-175.151,79.8],[-95.351,0],[95.351,0],[175.151,79.8],[175.151,300.128],[95.351,379.928],[-95.351,379.928],[-175.151,300.128]],"c":true}],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.877,0],[0,0],[0,-43.877],[0,0],[43.877,0],[0,0],[0,43.877]],"o":[[0,-43.877],[0,0],[43.877,0],[0,0],[0,43.877],[0,0],[-43.877,0],[0,0]],"v":[[-173.883,79.502],[-94.381,0],[94.381,0],[173.883,79.502],[173.883,297.331],[94.381,376.832],[-94.381,376.832],[-173.883,297.331]],"c":true}],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.602,0],[0,0],[0,-43.602],[0,0],[43.602,0],[0,0],[0,43.602]],"o":[[0,-43.602],[0,0],[43.602,0],[0,0],[0,43.602],[0,0],[-43.602,0],[0,0]],"v":[[-171.765,79.003],[-92.761,0],[92.761,0],[171.765,79.003],[171.765,292.657],[92.761,371.661],[-92.761,371.661],[-171.765,292.657]],"c":true}],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.166,0],[0,0],[0,-43.166],[0,0],[43.166,0],[0,0],[0,43.166]],"o":[[0,-43.166],[0,0],[43.166,0],[0,0],[0,43.166],[0,0],[-43.166,0],[0,0]],"v":[[-168.404,78.213],[-90.191,0],[90.191,0],[168.404,78.213],[168.404,285.244],[90.191,363.457],[-90.191,363.457],[-168.404,285.244]],"c":true}],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-42.482,0],[0,0],[0,-42.482],[0,0],[42.482,0],[0,0],[0,42.482]],"o":[[0,-42.482],[0,0],[42.482,0],[0,0],[0,42.482],[0,0],[-42.482,0],[0,0]],"v":[[-163.142,76.975],[-86.168,0],[86.168,0],[163.142,76.975],[163.142,273.637],[86.168,350.612],[-86.168,350.612],[-163.142,273.637]],"c":true}],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-41.435,0],[0,0],[0,-41.435],[0,0],[41.435,0],[0,0],[0,41.435]],"o":[[0,-41.435],[0,0],[41.435,0],[0,0],[0,41.435],[0,0],[-41.435,0],[0,0]],"v":[[-155.078,75.077],[-80.001,0],[80.001,0],[155.078,75.077],[155.078,255.848],[80.001,330.925],[-80.001,330.925],[-155.078,255.848]],"c":true}],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-40.054,0],[0,0],[0,-40.054],[0,0],[40.054,0],[0,0],[0,40.054]],"o":[[0,-40.054],[0,0],[40.054,0],[0,0],[0,40.054],[0,0],[-40.054,0],[0,0]],"v":[[-144.442,72.575],[-71.868,0],[71.868,0],[144.442,72.575],[144.442,232.388],[71.868,304.963],[-71.868,304.963],[-144.442,232.388]],"c":true}],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-38.75,0],[0,0],[0,-38.75],[0,0],[38.75,0],[0,0],[0,38.75]],"o":[[0,-38.75],[0,0],[38.75,0],[0,0],[0,38.75],[0,0],[-38.75,0],[0,0]],"v":[[-134.399,70.212],[-64.188,0],[64.188,0],[134.399,70.212],[134.399,210.234],[64.188,280.446],[-64.188,280.446],[-134.399,210.234]],"c":true}],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-37.775,0],[0,0],[0,-37.775],[0,0],[37.775,0],[0,0],[0,37.775]],"o":[[0,-37.775],[0,0],[37.775,0],[0,0],[0,37.775],[0,0],[-37.775,0],[0,0]],"v":[[-126.895,68.446],[-58.449,0],[58.449,0],[126.895,68.446],[126.895,193.681],[58.449,262.127],[-58.449,262.127],[-126.895,193.681]],"c":true}],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-37.077,0],[0,0],[0,-37.077],[0,0],[37.077,0],[0,0],[0,37.077]],"o":[[0,-37.077],[0,0],[37.077,0],[0,0],[0,37.077],[0,0],[-37.077,0],[0,0]],"v":[[-121.522,67.182],[-54.34,0],[54.34,0],[121.522,67.182],[121.522,181.827],[54.34,249.008],[-54.34,249.008],[-121.522,181.827]],"c":true}],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-36.569,0],[0,0],[0,-36.569],[0,0],[36.569,0],[0,0],[0,36.569]],"o":[[0,-36.569],[0,0],[36.569,0],[0,0],[0,36.569],[0,0],[-36.569,0],[0,0]],"v":[[-117.609,66.261],[-51.348,0],[51.348,0],[117.609,66.261],[117.609,173.196],[51.348,239.457],[-51.348,239.457],[-117.609,173.196]],"c":true}],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-36.193,0],[0,0],[0,-36.193],[0,0],[36.193,0],[0,0],[0,36.193]],"o":[[0,-36.193],[0,0],[36.193,0],[0,0],[0,36.193],[0,0],[-36.193,0],[0,0]],"v":[[-114.709,65.579],[-49.131,0],[49.131,0],[114.709,65.579],[114.709,166.8],[49.131,232.379],[-49.131,232.379],[-114.709,166.8]],"c":true}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.912,0],[0,0],[0,-35.912],[0,0],[35.912,0],[0,0],[0,35.912]],"o":[[0,-35.912],[0,0],[35.912,0],[0,0],[0,35.912],[0,0],[-35.912,0],[0,0]],"v":[[-112.544,65.069],[-47.475,0],[47.475,0],[112.544,65.069],[112.544,162.024],[47.475,227.094],[-47.475,227.094],[-112.544,162.024]],"c":true}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.703,0],[0,0],[0,-35.703],[0,0],[35.703,0],[0,0],[0,35.703]],"o":[[0,-35.703],[0,0],[35.703,0],[0,0],[0,35.703],[0,0],[-35.703,0],[0,0]],"v":[[-110.934,64.69],[-46.244,0],[46.244,0],[110.934,64.69],[110.934,158.473],[46.244,223.163],[-46.244,223.163],[-110.934,158.473]],"c":true}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.55,0],[0,0],[0,-35.55],[0,0],[35.55,0],[0,0],[0,35.55]],"o":[[0,-35.55],[0,0],[35.55,0],[0,0],[0,35.55],[0,0],[-35.55,0],[0,0]],"v":[[-109.758,64.414],[-45.344,0],[45.344,0],[109.758,64.414],[109.758,155.878],[45.344,220.292],[-45.344,220.292],[-109.758,155.878]],"c":true}],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.443,0],[0,0],[0,-35.443],[0,0],[35.443,0],[0,0],[0,35.443]],"o":[[0,-35.443],[0,0],[35.443,0],[0,0],[0,35.443],[0,0],[-35.443,0],[0,0]],"v":[[-108.931,64.219],[-44.712,0],[44.712,0],[108.931,64.219],[108.931,154.054],[44.712,218.273],[-44.712,218.273],[-108.931,154.054]],"c":true}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.372,0],[0,0],[0,-35.372],[0,0],[35.372,0],[0,0],[0,35.372]],"o":[[0,-35.372],[0,0],[35.372,0],[0,0],[0,35.372],[0,0],[-35.372,0],[0,0]],"v":[[-108.391,64.092],[-44.299,0],[44.299,0],[108.391,64.092],[108.391,152.863],[44.299,216.955],[-44.299,216.955],[-108.391,152.863]],"c":true}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.334,0],[0,0],[0,-35.334],[0,0],[35.334,0],[0,0],[0,35.334]],"o":[[0,-35.334],[0,0],[35.334,0],[0,0],[0,35.334],[0,0],[-35.334,0],[0,0]],"v":[[-108.093,64.022],[-44.071,0],[44.071,0],[108.093,64.022],[108.093,152.205],[44.071,216.227],[-44.071,216.227],[-108.093,152.205]],"c":true}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.322,0],[0,0],[0,-35.322],[0,0],[35.322,0],[0,0],[0,35.322]],"o":[[0,-35.322],[0,0],[35.322,0],[0,0],[0,35.322],[0,0],[-35.322,0],[0,0]],"v":[[-108,64],[-44,0],[44,0],[108,64],[108,152],[44,216],[-44,216],[-108,152]],"c":true}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.293,0],[0,0],[0,-35.293],[0,0],[35.293,0],[0,0],[0,35.293]],"o":[[0,-35.293],[0,0],[35.293,0],[0,0],[0,35.293],[0,0],[-35.293,0],[0,0]],"v":[[-108.025,63.949],[-44.076,0],[44.076,0],[108.025,63.949],[108.025,152.102],[44.076,216.051],[-44.076,216.051],[-108.025,152.102]],"c":true}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.214,0],[0,0],[0,-35.214],[0,0],[35.214,0],[0,0],[0,35.214]],"o":[[0,-35.214],[0,0],[35.214,0],[0,0],[0,35.214],[0,0],[-35.214,0],[0,0]],"v":[[-108.097,63.806],[-44.292,0],[44.292,0],[108.097,63.806],[108.097,152.389],[44.292,216.194],[-44.292,216.194],[-108.097,152.389]],"c":true}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.092,0],[0,0],[0,-35.092],[0,0],[35.092,0],[0,0],[0,35.092]],"o":[[0,-35.092],[0,0],[35.092,0],[0,0],[0,35.092],[0,0],[-35.092,0],[0,0]],"v":[[-108.208,63.584],[-44.624,0],[44.624,0],[108.208,63.584],[108.208,152.832],[44.624,216.416],[-44.624,216.416],[-108.208,152.832]],"c":true}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.934,0],[0,0],[0,-34.934],[0,0],[34.934,0],[0,0],[0,34.934]],"o":[[0,-34.934],[0,0],[34.934,0],[0,0],[0,34.934],[0,0],[-34.934,0],[0,0]],"v":[[-108.351,63.298],[-45.052,0],[45.052,0],[108.351,63.298],[108.351,153.403],[45.052,216.702],[-45.052,216.702],[-108.351,153.403]],"c":true}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.749,0],[0,0],[0,-34.749],[0,0],[34.749,0],[0,0],[0,34.749]],"o":[[0,-34.749],[0,0],[34.749,0],[0,0],[0,34.749],[0,0],[-34.749,0],[0,0]],"v":[[-108.519,62.963],[-45.556,0],[45.556,0],[108.519,62.963],[108.519,154.074],[45.556,217.037],[-45.556,217.037],[-108.519,154.074]],"c":true}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.545,0],[0,0],[0,-34.545],[0,0],[34.545,0],[0,0],[0,34.545]],"o":[[0,-34.545],[0,0],[34.545,0],[0,0],[0,34.545],[0,0],[-34.545,0],[0,0]],"v":[[-108.704,62.592],[-46.112,0],[46.112,0],[108.704,62.592],[108.704,154.816],[46.112,217.408],[-46.112,217.408],[-108.704,154.816]],"c":true}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.328,0],[0,0],[0,-34.328],[0,0],[34.328,0],[0,0],[0,34.328]],"o":[[0,-34.328],[0,0],[34.328,0],[0,0],[0,34.328],[0,0],[-34.328,0],[0,0]],"v":[[-108.9,62.2],[-46.7,0],[46.7,0],[108.9,62.2],[108.9,155.601],[46.7,217.8],[-46.7,217.8],[-108.9,155.601]],"c":true}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.108,0],[0,0],[0,-34.108],[0,0],[34.108,0],[0,0],[0,34.108]],"o":[[0,-34.108],[0,0],[34.108,0],[0,0],[0,34.108],[0,0],[-34.108,0],[0,0]],"v":[[-109.1,61.8],[-47.3,0],[47.3,0],[109.1,61.8],[109.1,156.399],[47.3,218.2],[-47.3,218.2],[-109.1,156.399]],"c":true}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.891,0],[0,0],[0,-33.891],[0,0],[33.891,0],[0,0],[0,33.891]],"o":[[0,-33.891],[0,0],[33.891,0],[0,0],[0,33.891],[0,0],[-33.891,0],[0,0]],"v":[[-109.296,61.408],[-47.888,0],[47.888,0],[109.296,61.408],[109.296,157.184],[47.888,218.592],[-47.888,218.592],[-109.296,157.184]],"c":true}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.686,0],[0,0],[0,-33.686],[0,0],[33.686,0],[0,0],[0,33.686]],"o":[[0,-33.686],[0,0],[33.686,0],[0,0],[0,33.686],[0,0],[-33.686,0],[0,0]],"v":[[-109.481,61.037],[-48.444,0],[48.444,0],[109.481,61.037],[109.481,157.926],[48.444,218.963],[-48.444,218.963],[-109.481,157.926]],"c":true}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.501,0],[0,0],[0,-33.501],[0,0],[33.501,0],[0,0],[0,33.501]],"o":[[0,-33.501],[0,0],[33.501,0],[0,0],[0,33.501],[0,0],[-33.501,0],[0,0]],"v":[[-109.649,60.702],[-48.948,0],[48.948,0],[109.649,60.702],[109.649,158.597],[48.948,219.298],[-48.948,219.298],[-109.649,158.597]],"c":true}],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.344,0],[0,0],[0,-33.344],[0,0],[33.344,0],[0,0],[0,33.344]],"o":[[0,-33.344],[0,0],[33.344,0],[0,0],[0,33.344],[0,0],[-33.344,0],[0,0]],"v":[[-109.792,60.416],[-49.376,0],[49.376,0],[109.792,60.416],[109.792,159.168],[49.376,219.584],[-49.376,219.584],[-109.792,159.168]],"c":true}],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.221,0],[0,0],[0,-33.221],[0,0],[33.221,0],[0,0],[0,33.221]],"o":[[0,-33.221],[0,0],[33.221,0],[0,0],[0,33.221],[0,0],[-33.221,0],[0,0]],"v":[[-109.903,60.194],[-49.708,0],[49.708,0],[109.903,60.194],[109.903,159.611],[49.708,219.806],[-49.708,219.806],[-109.903,159.611]],"c":true}],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.142,0],[0,0],[0,-33.142],[0,0],[33.142,0],[0,0],[0,33.142]],"o":[[0,-33.142],[0,0],[33.142,0],[0,0],[0,33.142],[0,0],[-33.142,0],[0,0]],"v":[[-109.975,60.051],[-49.924,0],[49.924,0],[109.975,60.051],[109.975,159.898],[49.924,219.949],[-49.924,219.949],[-109.975,159.898]],"c":true}],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.114,0],[0,0],[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114]],"o":[[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114],[0,0],[-33.114,0],[0,0]],"v":[[-110,60],[-50,0],[50,0],[110,60],[110,160],[50,220],[-50,220],[-110,160]],"c":true}],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":455,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":59,"op":456,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.83],"y":[0.83]},"o":{"x":[0.52],"y":[0]},"t":246,"s":[50]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.17],"y":[0.17]},"t":264,"s":[100]},{"t":281,"s":[50]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.8,"y":0.15},"o":{"x":0.3,"y":0},"t":401,"s":[-256,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.7},"t":406,"s":[-44,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":431,"s":[274,0,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[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,0],[18.976,-48.115],[0,0],[14.69,-5.794],[0,0],[-48.115,-18.977],[0,0],[-5.794,-14.69],[0,0],[-18.977,48.115],[0,0],[-14.69,5.794],[0,0],[48.115,18.976],[0,0],[5.794,14.69]],"o":[[-18.977,-48.115],[0,0],[-5.794,14.69],[0,0],[-48.115,18.976],[0,0],[14.69,5.794],[0,0],[18.976,48.115],[0,0],[5.794,-14.69],[0,0],[48.115,-18.977],[0,0],[-14.69,-5.794],[0,0]],"v":[[53.024,-96.229],[-53.024,-96.229],[-56.162,-88.274],[-88.274,-56.162],[-96.229,-53.024],[-96.229,53.024],[-88.274,56.161],[-56.162,88.273],[-53.024,96.228],[53.024,96.228],[56.161,88.273],[88.273,56.161],[96.228,53.024],[96.228,-53.024],[88.273,-56.162],[56.161,-88.274]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":57,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":455,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-45,"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":"Star 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":110,"op":456,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".surfaceOverview","cl":"surfaceOverview","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,400,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[1280,800],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.875,0.953,0.686,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.875,0.953,0.686,1],"t":455,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":456,"st":0,"ct":1,"bm":0}]},{"id":"comp_1","nm":"Tablet_PointerFinger_UpdatedDesign","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"OVERSHOOT INDEX","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.6],"y":[0.52]},"o":{"x":[0.26],"y":[0]},"t":130,"s":[0]},{"t":168,"s":[-5]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.6],"y":[0.2]},"o":{"x":[0.26],"y":[0]},"t":130,"s":[1107.018]},{"t":168,"s":[1225]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.66],"y":[0.893]},"o":{"x":[0.69],"y":[0]},"t":118,"s":[1122.018]},{"t":165,"s":[1256.018]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":184,"st":-290,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"INDEX HAND NULL","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":24,"s":[15]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":94,"s":[6]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":113,"s":[1]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":118,"s":[1]},{"t":158,"s":[4]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.56],"y":[0]},"t":4,"s":[515.81]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":94,"s":[-132]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":118,"s":[-132]},{"t":158,"s":[-31]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":24,"s":[-367.627]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":90,"s":[-219.627]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":113,"s":[-209.627]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":118,"s":[-209.627]},{"t":158,"s":[48]}],"ix":4}},"a":{"a":1,"k":[{"i":{"x":0.34,"y":1},"o":{"x":0.66,"y":0},"t":70,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.12,"y":1},"o":{"x":0.44,"y":0},"t":90,"s":[0,20,0],"to":[0,0,0],"ti":[0,0,0]},{"t":113,"s":[0,0,0]}],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.58,0.58,0.58],"y":[1,1,1]},"o":{"x":[0.42,0.42,0.42],"y":[0,0,0]},"t":92,"s":[104,104,100]},{"i":{"x":[0.59,0.59,0.59],"y":[1,1,1]},"o":{"x":[0.11,0.11,0.11],"y":[0,0,0]},"t":111,"s":[100,100,100]},{"i":{"x":[0.59,0.59,0.59],"y":[1,1,1]},"o":{"x":[0.11,0.11,0.11],"y":[0.44,0.44,0]},"t":115,"s":[100,100,100]},{"t":140,"s":[104,104,100]}],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":21,"mn":"Pseudo/474342","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/474342-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/474342-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/474342-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/474342-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":0,"nm":"Roundness","mn":"Pseudo/474342-0005","ix":5,"v":{"a":0,"k":0,"ix":5}},{"ty":6,"nm":"About","mn":"Pseudo/474342-0006","ix":6,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/474342-0007","ix":7,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/474342-0008","ix":8,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/474342-0009","ix":9,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/474342-0010","ix":10,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/474342-0011","ix":11,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/474342-0012","ix":12,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/474342-0013","ix":13,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/474342-0014","ix":14,"v":0},{"ty":6,"nm":"Void - 1.0.4","mn":"Pseudo/474342-0015","ix":15,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/474342-0016","ix":16,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/474342-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/474342-0018","ix":18,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/474342-0019","ix":19,"v":0}]}],"ip":0,"op":300,"st":-290,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Index Nail","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-180.223,-270.591,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.84,"y":1},"o":{"x":0.83,"y":0},"t":65,"s":[{"i":[[-2.414,9.958],[-9.532,8.492],[-8.791,-2.892],[-2.171,-6.452],[5.371,-14.184],[13.429,-5.311],[1.086,0.181],[6.579,7.605]],"o":[[1.6,-6.669],[5.524,-4.921],[7.702,2.534],[2.002,5.33],[-6.579,17.412],[-8.148,3.229],[-1.479,-0.241],[-9.627,-11.075]],"v":[[-32.333,-4.972],[-16.302,-38.994],[12.239,-40.207],[33.667,-22.415],[31.011,3.961],[5.963,40.173],[-10.966,42.105],[-29.104,32.539]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":98,"s":[{"i":[[-0.698,10.223],[-9.532,11.629],[-21.476,-7.681],[-2.528,-9.138],[6.879,-13.735],[11.047,-4.308],[1.189,0.194],[7.375,8.159]],"o":[[0.525,-7.692],[6.683,-8.153],[16.081,5.751],[2.272,8.212],[-8.799,17.568],[-8.931,3.483],[-1.618,-0.264],[-8.455,-9.354]],"v":[[-41.951,-0.782],[-27.133,-34.111],[13.998,-44.435],[42.171,-12.972],[35.693,12.318],[7.278,43.341],[-11.239,45.454],[-31.076,34.991]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.66,"y":0},"t":113,"s":[{"i":[[-1.146,6.239],[-7.955,8.894],[-6.883,-2.265],[-1.7,-5.052],[6.14,-15.114],[8.464,-3.354],[0.685,0.112],[4.159,4.785]],"o":[[1.862,-10.142],[5.437,-6.078],[6.031,1.984],[1.568,4.174],[-4.539,11.172],[-5.137,2.036],[-0.932,-0.152],[-6.069,-6.982]],"v":[[-27.679,-2.349],[-13.046,-32.207],[10.368,-34.984],[27.147,-21.053],[23.939,6.893],[1.942,28.66],[-8.731,29.878],[-20.165,23.847]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.66,"y":0},"t":115,"s":[{"i":[[-1.146,6.239],[-7.955,8.894],[-6.883,-2.265],[-1.7,-5.052],[6.14,-15.114],[8.464,-3.354],[0.685,0.112],[4.159,4.785]],"o":[[1.862,-10.142],[5.437,-6.078],[6.031,1.984],[1.568,4.174],[-4.539,11.172],[-5.137,2.036],[-0.932,-0.152],[-6.069,-6.982]],"v":[[-27.679,-2.349],[-13.046,-32.207],[10.368,-34.984],[27.147,-21.053],[23.939,6.893],[1.942,28.66],[-8.731,29.878],[-20.165,23.847]],"c":true}]},{"t":140,"s":[{"i":[[-2.414,9.958],[-9.532,8.492],[-8.791,-2.892],[-2.171,-6.452],[5.371,-14.184],[13.429,-5.311],[1.086,0.181],[6.579,7.605]],"o":[[1.6,-6.669],[5.524,-4.921],[7.702,2.534],[2.002,5.33],[-6.579,17.412],[-8.148,3.229],[-1.479,-0.241],[-9.627,-11.075]],"v":[[-32.333,-4.972],[-16.302,-38.994],[12.239,-40.207],[33.667,-22.415],[31.011,3.961],[5.963,40.173],[-10.966,42.105],[-29.104,32.539]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.760784327984,0.478431373835,0.40000000596,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-53.598,"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":"Index Nail","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Thumb Nail","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":98,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[6.94]},{"i":{"x":[0.59],"y":[1]},"o":{"x":[0.11],"y":[0.44]},"t":115,"s":[6.94]},{"t":140,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":98,"s":[-200.402,36.571,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":0.2},"o":{"x":0.4,"y":0.4},"t":113,"s":[-192.388,33.434,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.59,"y":1},"o":{"x":0.11,"y":0.44},"t":115,"s":[-192.388,33.434,0],"to":[0,0,0],"ti":[0,0,0]},{"t":140,"s":[-200.402,36.571,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.454,-3.078],[9.687,0.211],[0,0],[-2.754,8.058],[-9.627,2.595],[0,0],[-4.165,-1.992],[-0.392,-2.354],[0.905,-1.69]],"o":[[-10.653,4.376],[0,0],[2.401,-7.767],[4.126,-12.071],[2.475,-0.664],[4.044,0.362],[3.169,1.509],[2.082,12.524],[-5.704,10.623]],"v":[[9.153,24.314],[-28.629,28.116],[-28.629,28.086],[-20.331,5.151],[4.113,-27.742],[10.783,-28.195],[25.026,-23.578],[28.044,-19.413],[25.147,5.302]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.760784327984,0.478431373835,0.40000000596,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-48.45,"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":"Thumb Nail","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Hand Lines KO","parent":2,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"k":[{"s":[-5.995],"t":6,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.989],"t":7,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.98],"t":8,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.969],"t":9,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.954],"t":10,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.937],"t":11,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.916],"t":12,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.892],"t":13,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.864],"t":14,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.832],"t":15,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.796],"t":16,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.756],"t":17,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.711],"t":18,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.662],"t":19,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.607],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.546],"t":21,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.479],"t":22,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.406],"t":23,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.326],"t":24,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.238],"t":25,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.141],"t":26,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-5.035],"t":27,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-4.919],"t":28,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-4.792],"t":29,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-4.653],"t":30,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-4.501],"t":31,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-4.334],"t":32,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-4.15],"t":33,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.949],"t":34,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.728],"t":35,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.487],"t":36,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.225],"t":37,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-2.942],"t":38,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-2.642],"t":39,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-2.33],"t":40,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-2.015],"t":41,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-1.708],"t":42,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-1.42],"t":43,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-1.158],"t":44,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.927],"t":45,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.728],"t":46,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.56],"t":47,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.421],"t":48,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.306],"t":49,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.214],"t":50,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.142],"t":51,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.087],"t":52,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.047],"t":53,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.02],"t":54,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.005],"t":55,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":56,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.002],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.009],"t":58,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.02],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.037],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.06],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.091],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.13],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.178],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.238],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.312],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.402],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.513],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.648],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.813],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[1.012],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[1.245],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[1.755],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[1.988],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.187],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.352],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.487],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.598],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.688],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.762],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.822],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.87],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.909],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.94],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.963],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.98],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.991],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.998],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.979],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.907],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.765],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.526],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.164],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[1.686],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[1.171],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.708],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.328],"t":101,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.025],"t":102,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.216],"t":103,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.408],"t":104,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.561],"t":105,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.683],"t":106,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.779],"t":107,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.854],"t":108,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.911],"t":109,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.952],"t":110,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.98],"t":111,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.995],"t":112,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-1],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-1],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.373],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.094],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.488],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.835],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[1.149],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[1.436],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[1.701],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[1.947],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.177],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.39],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.589],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.775],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[2.947],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.107],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.254],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.388],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.51],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.62],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.716],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.8],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.869],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.925],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.966],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.991],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[4],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[133,148,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.825],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.632,42.969],[-21.739,54.462],[-6.188,16.331],[-17.668,-6.383],[2.898,-20.708],[10.649,-42.063],[12.372,-41.711]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.265,-54.261],[10.737,-26.9],[20.949,-34.02],[15.865,5.732],[-1.303,9.342],[-14.021,55.386],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.701,-249.695],[46.909,-330.8],[99.523,-350.994],[119.596,-304.538],[99.441,-218.66],[54.795,-53.073]],"c":true}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.629,42.97],[-21.742,54.469],[-6.19,16.336],[-17.674,-6.385],[2.899,-20.715],[10.653,-42.068],[12.379,-41.752]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.269,-54.283],[10.739,-26.904],[20.956,-34.032],[15.871,5.734],[-1.303,9.345],[-14.027,55.392],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.682,-249.676],[46.895,-330.803],[99.528,-351.004],[119.609,-304.532],[99.438,-218.637],[54.795,-53.073]],"c":true}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.625,42.972],[-21.746,54.48],[-6.193,16.345],[-17.683,-6.389],[2.9,-20.725],[10.659,-42.076],[12.389,-41.812]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.275,-54.314],[10.741,-26.909],[20.967,-34.049],[15.879,5.737],[-1.304,9.35],[-14.035,55.401],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.656,-249.648],[46.876,-330.807],[99.535,-351.018],[119.626,-304.523],[99.435,-218.604],[54.795,-53.073]],"c":true}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.825],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.62,42.974],[-21.751,54.493],[-6.198,16.355],[-17.695,-6.393],[2.902,-20.739],[10.668,-42.086],[12.402,-41.891]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.283,-54.355],[10.743,-26.916],[20.981,-34.072],[15.89,5.741],[-1.305,9.356],[-14.046,55.413],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.621,-249.611],[46.851,-330.812],[99.545,-351.038],[119.65,-304.511],[99.43,-218.56],[54.795,-53.073]],"c":true}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.613,42.977],[-21.758,54.51],[-6.203,16.369],[-17.71,-6.398],[2.905,-20.757],[10.678,-42.098],[12.419,-41.99]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.293,-54.406],[10.747,-26.924],[20.999,-34.1],[15.903,5.746],[-1.306,9.364],[-14.059,55.427],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.577,-249.565],[46.819,-330.819],[99.558,-351.061],[119.679,-304.496],[99.424,-218.505],[54.795,-53.073]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.605,42.98],[-21.766,54.531],[-6.209,16.386],[-17.728,-6.405],[2.907,-20.778],[10.691,-42.113],[12.439,-42.11]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.305,-54.469],[10.751,-26.934],[21.02,-34.135],[15.919,5.751],[-1.307,9.374],[-14.076,55.445],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.523,-249.509],[46.781,-330.828],[99.573,-351.091],[119.715,-304.477],[99.417,-218.439],[54.795,-53.073]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.596,42.984],[-21.776,54.555],[-6.217,16.406],[-17.749,-6.413],[2.911,-20.803],[10.706,-42.13],[12.463,-42.253]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.319,-54.543],[10.756,-26.946],[21.046,-34.176],[15.938,5.758],[-1.309,9.385],[-14.095,55.467],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.46,-249.442],[46.735,-330.838],[99.591,-351.125],[119.757,-304.456],[99.408,-218.359],[54.795,-53.073]],"c":true}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.585,42.988],[-21.787,54.584],[-6.225,16.429],[-17.774,-6.422],[2.915,-20.832],[10.724,-42.151],[12.491,-42.421]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.336,-54.63],[10.761,-26.96],[21.075,-34.225],[15.961,5.767],[-1.311,9.398],[-14.118,55.492],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.386,-249.364],[46.681,-330.85],[99.613,-351.166],[119.807,-304.43],[99.398,-218.267],[54.795,-53.073]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.572,42.993],[-21.8,54.617],[-6.236,16.456],[-17.803,-6.432],[2.919,-20.866],[10.744,-42.175],[12.524,-42.614]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.355,-54.731],[10.768,-26.977],[21.11,-34.28],[15.987,5.776],[-1.313,9.414],[-14.144,55.521],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.3,-249.273],[46.62,-330.863],[99.637,-351.212],[119.865,-304.401],[99.386,-218.16],[54.795,-53.073]],"c":true}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.557,42.999],[-21.816,54.654],[-6.247,16.486],[-17.836,-6.444],[2.925,-20.905],[10.767,-42.202],[12.561,-42.835]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.378,-54.845],[10.775,-26.995],[21.149,-34.344],[16.017,5.787],[-1.315,9.431],[-14.174,55.554],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.202,-249.17],[46.549,-330.879],[99.665,-351.266],[119.93,-304.367],[99.372,-218.038],[54.795,-53.073]],"c":true}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.54,43.005],[-21.833,54.697],[-6.26,16.521],[-17.874,-6.458],[2.931,-20.949],[10.794,-42.233],[12.603,-43.085]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.403,-54.975],[10.784,-27.016],[21.193,-34.416],[16.05,5.799],[-1.318,9.451],[-14.207,55.591],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.09,-249.053],[46.469,-330.897],[99.697,-351.327],[120.005,-304.329],[99.357,-217.899],[54.795,-53.073]],"c":true}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.522,43.013],[-21.852,54.746],[-6.275,16.56],[-17.916,-6.473],[2.938,-20.999],[10.824,-42.268],[12.651,-43.368]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.431,-55.122],[10.793,-27.04],[21.244,-34.498],[16.088,5.813],[-1.321,9.474],[-14.246,55.633],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[14.965,-248.921],[46.379,-330.917],[99.733,-351.395],[120.088,-304.286],[99.34,-217.743],[54.795,-53.073]],"c":true}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.825],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.501,43.021],[-21.874,54.8],[-6.292,16.604],[-17.964,-6.49],[2.945,-21.055],[10.857,-42.307],[12.704,-43.684]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.463,-55.287],[10.804,-27.067],[21.3,-34.589],[16.131,5.828],[-1.325,9.499],[-14.288,55.681],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[14.824,-248.773],[46.277,-330.939],[99.773,-351.471],[120.183,-304.237],[99.321,-217.568],[54.795,-53.073]],"c":true}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.825],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.477,43.03],[-21.898,54.86],[-6.31,16.653],[-18.017,-6.509],[2.954,-21.117],[10.894,-42.35],[12.764,-44.038]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.499,-55.471],[10.816,-27.097],[21.363,-34.692],[16.179,5.845],[-1.329,9.527],[-14.336,55.734],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[14.667,-248.608],[46.164,-330.964],[99.818,-351.557],[120.288,-304.184],[99.299,-217.372],[54.795,-53.073]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.825],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.451,43.041],[-21.925,54.928],[-6.331,16.708],[-18.076,-6.531],[2.963,-21.186],[10.936,-42.399],[12.83,-44.433]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.539,-55.676],[10.829,-27.13],[21.433,-34.806],[16.232,5.864],[-1.333,9.558],[-14.39,55.793],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[14.492,-248.424],[46.038,-330.992],[99.868,-351.653],[120.405,-304.123],[99.275,-217.153],[54.795,-53.073]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.825],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.422,43.052],[-21.955,55.003],[-6.354,16.769],[-18.142,-6.555],[2.974,-21.263],[10.982,-42.453],[12.904,-44.872]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.583,-55.904],[10.844,-27.167],[21.511,-34.932],[16.291,5.886],[-1.338,9.593],[-14.449,55.858],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[14.297,-248.219],[45.897,-331.023],[99.923,-351.759],[120.536,-304.057],[99.249,-216.911],[54.795,-53.073]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.389,43.065],[-21.988,55.086],[-6.38,16.836],[-18.215,-6.581],[2.985,-21.349],[11.034,-42.513],[12.987,-45.36]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.632,-56.158],[10.86,-27.209],[21.598,-35.073],[16.357,5.91],[-1.343,9.632],[-14.515,55.931],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[14.08,-247.991],[45.741,-331.057],[99.985,-351.877],[120.68,-303.982],[99.219,-216.641],[54.795,-53.073]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.353,43.079],[-22.025,55.179],[-6.408,16.911],[-18.296,-6.61],[2.998,-21.444],[11.091,-42.58],[13.078,-45.901]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.686,-56.439],[10.879,-27.254],[21.694,-35.23],[16.43,5.936],[-1.349,9.674],[-14.588,56.012],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[13.84,-247.738],[45.568,-331.095],[100.054,-352.008],[120.841,-303.9],[99.186,-216.341],[54.795,-53.073]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.313,43.095],[-22.066,55.282],[-6.44,16.995],[-18.386,-6.643],[3.013,-21.55],[11.154,-42.654],[13.179,-46.502]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.747,-56.752],[10.899,-27.305],[21.801,-35.403],[16.511,5.965],[-1.356,9.722],[-14.67,56.102],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[13.573,-247.457],[45.376,-331.138],[100.13,-352.153],[121.02,-303.808],[99.149,-216.009],[54.795,-53.073]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.825],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.269,43.113],[-22.111,55.396],[-6.475,17.087],[-18.486,-6.679],[3.029,-21.667],[11.225,-42.736],[13.292,-47.17]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.814,-57.098],[10.921,-27.361],[21.92,-35.596],[16.6,5.998],[-1.363,9.775],[-14.76,56.202],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[13.276,-247.146],[45.163,-331.185],[100.214,-352.315],[121.218,-303.706],[99.109,-215.639],[54.795,-53.073]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.22,43.132],[-22.162,55.523],[-6.514,17.19],[-18.597,-6.719],[3.046,-21.798],[11.303,-42.828],[13.416,-47.911]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.889,-57.484],[10.946,-27.424],[22.052,-35.81],[16.7,6.034],[-1.372,9.834],[-14.86,56.312],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[12.947,-246.799],[44.925,-331.237],[100.308,-352.494],[121.438,-303.594],[99.064,-215.229],[54.795,-53.073]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.165,43.154],[-22.218,55.664],[-6.557,17.304],[-18.721,-6.764],[3.066,-21.943],[11.39,-42.93],[13.555,-48.735]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.972,-57.912],[10.974,-27.494],[22.198,-36.048],[16.811,6.074],[-1.381,9.899],[-14.972,56.436],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[12.581,-246.414],[44.662,-331.295],[100.413,-352.694],[121.683,-303.468],[99.013,-214.773],[54.795,-53.073]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.104,43.178],[-22.281,55.82],[-6.605,17.431],[-18.859,-6.814],[3.088,-22.104],[11.487,-43.043],[13.71,-49.653]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[23.064,-58.389],[11.005,-27.571],[22.361,-36.313],[16.935,6.118],[-1.391,9.972],[-15.096,56.573],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[12.173,-245.986],[44.368,-331.36],[100.529,-352.916],[121.956,-303.328],[98.958,-214.266],[54.795,-53.073]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.036,43.204],[-22.351,55.995],[-6.659,17.573],[-19.012,-6.869],[3.113,-22.284],[11.594,-43.169],[13.882,-50.674]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[23.167,-58.92],[11.04,-27.657],[22.543,-36.608],[17.072,6.168],[-1.402,10.053],[-15.234,56.725],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[11.72,-245.509],[44.042,-331.432],[100.658,-353.163],[122.259,-303.173],[98.896,-213.701],[54.795,-53.073]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-16.961,43.234],[-22.428,56.189],[-6.718,17.73],[-19.182,-6.93],[3.14,-22.483],[11.714,-43.308],[14.073,-51.808]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[23.281,-59.509],[11.078,-27.753],[22.744,-36.935],[17.225,6.223],[-1.415,10.143],[-15.388,56.895],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[11.216,-244.979],[43.679,-331.512],[100.802,-353.437],[122.596,-303],[98.827,-213.073],[54.795,-53.073]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-16.878,43.267],[-22.514,56.403],[-6.784,17.904],[-19.37,-6.998],[3.17,-22.703],[11.846,-43.463],[14.284,-53.06]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[23.407,-60.16],[11.12,-27.859],[22.967,-37.297],[17.394,6.284],[-1.428,10.242],[-15.557,57.082],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[10.66,-244.394],[43.279,-331.6],[100.961,-353.74],[122.968,-302.809],[98.75,-212.381],[54.795,-53.073]],"c":true}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.825],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-16.788,43.303],[-22.606,56.635],[-6.855,18.092],[-19.573,-7.072],[3.202,-22.942],[11.989,-43.63],[14.513,-54.417]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[23.544,-60.865],[11.166,-27.974],[23.208,-37.688],[17.576,6.35],[-1.444,10.35],[-15.74,57.285],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[10.058,-243.761],[42.845,-331.696],[101.133,-354.068],[123.371,-302.602],[98.668,-211.63],[54.795,-53.073]],"c":true}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-16.694,43.34],[-22.703,56.877],[-6.93,18.288],[-19.785,-7.148],[3.236,-23.191],[12.139,-43.804],[14.751,-55.831]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[23.686,-61.6],[11.214,-28.093],[23.46,-38.097],[17.767,6.419],[-1.459,10.462],[-15.932,57.496],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[9.429,-243.1],[42.392,-331.796],[101.312,-354.41],[123.791,-302.387],[98.582,-210.848],[54.795,-53.073]],"c":true}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-16.604,43.375],[-22.795,57.109],[-7.001,18.476],[-19.989,-7.222],[3.269,-23.429],[12.282,-43.972],[14.979,-57.188]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[23.823,-62.306],[11.259,-28.208],[23.701,-38.489],[17.949,6.485],[-1.474,10.569],[-16.115,57.699],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[8.827,-242.466],[41.958,-331.891],[101.484,-354.739],[124.195,-302.18],[98.499,-210.097],[54.795,-53.073]],"c":true}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-16.53,43.405],[-22.871,57.3],[-7.06,18.63],[-20.156,-7.282],[3.296,-23.625],[12.399,-44.109],[15.167,-58.303]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[23.935,-62.885],[11.297,-28.302],[23.899,-38.81],[18.1,6.539],[-1.486,10.658],[-16.266,57.866],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[8.332,-241.946],[41.602,-331.97],[101.625,-355.008],[124.526,-302.01],[98.431,-209.48],[54.795,-53.073]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-16.483,43.423],[-22.919,57.419],[-7.096,18.727],[-20.261,-7.32],[3.312,-23.748],[12.473,-44.195],[15.285,-59.001]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[24.005,-63.248],[11.32,-28.361],[24.023,-39.012],[18.194,6.573],[-1.494,10.713],[-16.361,57.97],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[8.022,-241.619],[41.378,-332.019],[101.714,-355.177],[124.733,-301.904],[98.389,-209.094],[54.795,-53.073]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-16.468,43.429],[-22.934,57.457],[-7.108,18.758],[-20.294,-7.332],[3.318,-23.787],[12.497,-44.223],[15.323,-59.225]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[24.028,-63.364],[11.328,-28.38],[24.063,-39.077],[18.224,6.584],[-1.497,10.731],[-16.391,58.003],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[7.922,-241.515],[41.307,-332.035],[101.742,-355.231],[124.8,-301.87],[98.375,-208.97],[54.795,-53.073]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.202,94.793],[-14.745,12.801],[-6.916,-15.158],[0.26,-12.13],[2.071,-12.308],[-4.165,-36.183],[-7.967,-22.12],[-16.458,43.348],[-22.845,57.21],[-7.084,18.696],[-20.227,-7.308],[3.307,-23.708],[12.461,-44.152],[15.305,-59.305]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.411,-14.451],[14.383,-12.469],[4.809,12.017],[-0.359,17.259],[-0.853,5.038],[1.63,14.184],[20.846,-49.856],[24.257,-63.814],[11.331,-28.369],[23.983,-38.947],[18.163,6.562],[-1.492,10.695],[-16.352,57.947],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.301,-55.919],[-162.806,-147.528],[-120.554,-133.098],[-114.753,-99.686],[-117.8,-61.551],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[8.019,-241.502],[41.451,-332.003],[101.686,-355.155],[124.666,-301.938],[98.296,-209.023],[54.795,-53.073]],"c":true}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.752,94.698],[-14.814,12.709],[-6.825,-15.192],[0.331,-12.123],[2.143,-12.29],[-4.165,-36.183],[-7.967,-22.12],[-16.418,43.052],[-22.515,56.299],[-6.997,18.465],[-19.977,-7.218],[3.266,-23.416],[12.327,-43.89],[15.239,-59.604]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.494,-14.437],[14.449,-12.38],[4.737,12.04],[-0.459,17.25],[-0.882,5.031],[1.63,14.184],[20.846,-49.856],[25.102,-65.473],[11.342,-28.33],[23.687,-38.466],[17.939,6.481],[-1.473,10.563],[-16.21,57.737],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.334,-56.066],[-162.321,-147.412],[-120.172,-132.743],[-114.568,-99.311],[-117.836,-61.209],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[8.374,-241.455],[41.982,-331.885],[101.478,-354.871],[124.171,-302.191],[98.002,-209.218],[54.795,-53.073]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-10.927,94.497],[-14.96,12.513],[-6.63,-15.264],[0.481,-12.109],[2.295,-12.253],[-4.165,-36.183],[-7.967,-22.12],[-16.335,42.417],[-21.81,54.351],[-6.81,17.972],[-19.444,-7.025],[3.179,-22.79],[12.042,-43.331],[15.097,-60.243]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.673,-14.406],[14.591,-12.19],[4.583,12.089],[-0.674,17.23],[-0.944,5.015],[1.63,14.184],[20.846,-49.856],[26.909,-69.021],[11.367,-28.245],[23.055,-37.439],[17.46,6.308],[-1.434,10.281],[-15.905,57.289],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.403,-56.38],[-161.286,-147.164],[-119.354,-131.982],[-114.171,-98.508],[-117.911,-60.479],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[9.135,-241.355],[43.119,-331.633],[101.035,-354.265],[123.113,-302.732],[97.373,-209.636],[54.795,-53.073]],"c":true}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-12.943,94.151],[-15.212,12.177],[-6.296,-15.388],[0.738,-12.085],[2.556,-12.189],[-4.165,-36.183],[-7.967,-22.12],[-16.191,41.328],[-20.6,51.008],[-6.49,17.126],[-18.529,-6.694],[3.029,-21.718],[11.553,-42.371],[14.854,-61.339]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.979,-14.354],[14.835,-11.863],[4.319,12.173],[-1.042,17.195],[-1.05,4.989],[1.63,14.184],[20.846,-49.856],[30.008,-75.107],[11.408,-28.101],[21.97,-35.677],[16.638,6.011],[-1.366,9.797],[-15.383,56.521],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.523,-56.919],[-159.51,-146.738],[-117.952,-130.677],[-113.491,-97.132],[-118.04,-59.227],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[10.44,-241.182],[45.069,-331.201],[100.274,-353.225],[121.298,-303.66],[96.295,-210.352],[54.795,-53.073]],"c":true}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-15.45,93.722],[-15.524,11.759],[-5.88,-15.543],[1.058,-12.055],[2.881,-12.11],[-4.165,-36.183],[-7.967,-22.12],[-16.012,39.975],[-19.095,46.852],[-6.091,16.074],[-17.391,-6.283],[2.843,-20.384],[10.945,-41.177],[14.553,-62.702]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[2.36,-14.288],[15.138,-11.457],[3.991,12.277],[-1.499,17.152],[-1.182,4.957],[1.63,14.184],[20.846,-49.856],[33.862,-82.675],[11.46,-27.921],[20.621,-33.486],[15.617,5.642],[-1.283,9.196],[-14.733,55.566],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.672,-57.588],[-157.302,-146.209],[-116.209,-129.055],[-112.646,-95.42],[-118.201,-57.67],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[12.062,-240.967],[47.494,-330.664],[99.328,-351.932],[119.042,-304.815],[94.955,-211.242],[54.795,-53.073]],"c":true}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-17.637,93.347],[-15.797,11.394],[-5.518,-15.677],[1.337,-12.028],[3.164,-12.041],[-4.165,-36.183],[-7.967,-22.12],[-15.856,38.794],[-17.783,43.226],[-5.743,15.157],[-16.398,-5.924],[2.681,-19.221],[10.414,-40.136],[14.289,-63.89]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[2.692,-14.231],[15.402,-11.103],[3.705,12.368],[-1.898,17.115],[-1.297,4.929],[1.63,14.184],[20.846,-49.856],[37.225,-89.278],[11.505,-27.764],[19.443,-31.575],[14.725,5.32],[-1.209,8.671],[-14.166,54.732],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.801,-58.172],[-155.376,-145.747],[-114.688,-127.639],[-111.908,-93.926],[-118.341,-56.311],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[13.477,-240.78],[49.609,-330.196],[98.503,-350.804],[117.073,-305.821],[93.785,-212.018],[54.795,-53.073]],"c":true}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-19.265,93.068],[-16,11.122],[-5.248,-15.777],[1.545,-12.009],[3.375,-11.989],[-4.165,-36.183],[-7.967,-22.12],[-15.739,37.914],[-16.806,40.527],[-5.485,14.474],[-15.659,-5.658],[2.56,-18.354],[10.02,-39.36],[14.093,-64.775]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[2.939,-14.189],[15.599,-10.84],[3.491,12.436],[-2.195,17.087],[-1.383,4.908],[1.63,14.184],[20.846,-49.856],[39.727,-94.192],[11.538,-27.648],[18.567,-30.152],[14.062,5.08],[-1.155,8.28],[-13.744,54.112],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.898,-58.607],[-153.942,-145.404],[-113.555,-126.585],[-111.359,-92.815],[-118.445,-55.3],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[14.531,-240.641],[51.184,-329.847],[97.889,-349.965],[115.607,-306.571],[92.915,-212.596],[54.795,-53.073]],"c":true}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-20.447,92.865],[-16.147,10.925],[-5.052,-15.85],[1.696,-11.995],[3.528,-11.951],[-4.165,-36.183],[-7.967,-22.12],[-15.655,37.276],[-16.097,38.568],[-5.297,13.978],[-15.123,-5.464],[2.472,-17.726],[9.733,-38.798],[13.951,-65.418]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.119,-14.158],[15.742,-10.649],[3.337,12.485],[-2.411,17.067],[-1.445,4.893],[1.63,14.184],[20.846,-49.856],[41.544,-97.759],[11.563,-27.563],[17.931,-29.119],[13.58,4.906],[-1.115,7.996],[-13.438,53.661],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.968,-58.923],[-152.901,-145.154],[-112.734,-125.821],[-110.96,-92.008],[-118.521,-54.566],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.296,-240.54],[52.327,-329.593],[97.443,-349.355],[114.544,-307.115],[92.283,-213.016],[54.795,-53.073]],"c":true}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-21.308,92.717],[-16.254,10.782],[-4.909,-15.903],[1.806,-11.984],[3.639,-11.924],[-4.165,-36.183],[-7.967,-22.12],[-15.594,36.811],[-15.58,37.141],[-5.16,13.617],[-14.732,-5.323],[2.408,-17.268],[9.524,-38.388],[13.848,-65.885]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.25,-14.135],[15.846,-10.509],[3.224,12.521],[-2.568,17.052],[-1.49,4.881],[1.63,14.184],[20.846,-49.856],[42.867,-100.358],[11.58,-27.501],[17.468,-28.367],[13.229,4.78],[-1.086,7.79],[-13.215,53.333],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202.019,-59.153],[-152.142,-144.973],[-112.135,-125.263],[-110.67,-91.42],[-118.576,-54.031],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.853,-240.466],[53.159,-329.409],[97.118,-348.911],[113.769,-307.511],[91.822,-213.322],[54.795,-53.073]],"c":true}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-21.935,92.61],[-16.332,10.677],[-4.805,-15.942],[1.886,-11.977],[3.72,-11.904],[-4.165,-36.183],[-7.967,-22.12],[-15.549,36.473],[-15.204,36.102],[-5.06,13.354],[-14.447,-5.22],[2.362,-16.934],[9.372,-38.089],[13.772,-66.226]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.345,-14.119],[15.922,-10.408],[3.142,12.547],[-2.682,17.041],[-1.523,4.873],[1.63,14.184],[20.846,-49.856],[43.831,-102.251],[11.593,-27.456],[17.131,-27.819],[12.974,4.687],[-1.065,7.639],[-13.052,53.094],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202.056,-59.32],[-151.59,-144.84],[-111.699,-124.858],[-110.458,-90.992],[-118.616,-53.642],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.259,-240.412],[53.766,-329.275],[96.882,-348.588],[113.205,-307.8],[91.487,-213.544],[54.795,-53.073]],"c":true}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-22.385,92.533],[-16.388,10.602],[-4.73,-15.969],[1.943,-11.971],[3.779,-11.89],[-4.165,-36.183],[-7.967,-22.12],[-15.517,36.23],[-14.934,35.356],[-4.989,13.165],[-14.243,-5.146],[2.328,-16.695],[9.263,-37.875],[13.718,-66.471]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.413,-14.107],[15.976,-10.335],[3.083,12.566],[-2.764,17.034],[-1.547,4.867],[1.63,14.184],[20.846,-49.856],[44.523,-103.609],[11.603,-27.424],[16.888,-27.425],[12.79,4.621],[-1.05,7.531],[-12.936,52.923],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202.083,-59.441],[-151.194,-144.745],[-111.386,-124.566],[-110.306,-90.685],[-118.645,-53.362],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.55,-240.374],[54.201,-329.178],[96.712,-348.356],[112.799,-308.007],[91.247,-213.704],[54.795,-53.073]],"c":true}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-22.697,92.479],[-16.427,10.55],[-4.679,-15.989],[1.983,-11.967],[3.819,-11.88],[-4.165,-36.183],[-7.967,-22.12],[-15.494,36.061],[-14.746,34.838],[-4.939,13.034],[-14.101,-5.095],[2.305,-16.529],[9.187,-37.726],[13.68,-66.641]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.461,-14.099],[16.014,-10.284],[3.042,12.579],[-2.821,17.028],[-1.564,4.863],[1.63,14.184],[20.846,-49.856],[45.003,-104.552],[11.609,-27.402],[16.72,-27.153],[12.663,4.575],[-1.04,7.456],[-12.855,52.804],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202.101,-59.524],[-150.919,-144.68],[-111.169,-124.364],[-110.201,-90.471],[-118.665,-53.168],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.752,-240.347],[54.503,-329.111],[96.594,-348.195],[112.518,-308.151],[91.08,-213.815],[54.795,-53.073]],"c":true}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-22.899,92.445],[-16.452,10.517],[-4.645,-16.001],[2.009,-11.965],[3.845,-11.874],[-4.165,-36.183],[-7.967,-22.12],[-15.48,35.953],[-14.625,34.504],[-4.907,12.95],[-14.01,-5.062],[2.29,-16.422],[9.138,-37.631],[13.656,-66.75]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.491,-14.094],[16.039,-10.252],[3.016,12.587],[-2.858,17.025],[-1.574,4.861],[1.63,14.184],[20.846,-49.856],[45.313,-105.16],[11.613,-27.387],[16.612,-26.977],[12.581,4.545],[-1.033,7.408],[-12.803,52.727],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202.113,-59.578],[-150.741,-144.637],[-111.029,-124.234],[-110.133,-90.334],[-118.678,-53.043],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.882,-240.33],[54.698,-329.068],[96.518,-348.091],[112.337,-308.243],[90.972,-213.886],[54.795,-53.073]],"c":true}],"t":111,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-23.009,92.426],[-16.466,10.498],[-4.627,-16.008],[2.023,-11.964],[3.86,-11.87],[-4.165,-36.183],[-7.967,-22.12],[-15.472,35.893],[-14.559,34.321],[-4.889,12.903],[-13.96,-5.044],[2.282,-16.363],[9.112,-37.578],[13.643,-66.81]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.508,-14.091],[16.052,-10.234],[3.001,12.592],[-2.878,17.023],[-1.58,4.859],[1.63,14.184],[20.846,-49.856],[45.483,-105.493],[11.615,-27.379],[16.553,-26.88],[12.536,4.529],[-1.03,7.382],[-12.774,52.685],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202.119,-59.607],[-150.644,-144.614],[-110.952,-124.163],[-110.096,-90.258],[-118.685,-52.975],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.954,-240.32],[54.804,-329.044],[96.476,-348.034],[112.238,-308.294],[90.913,-213.926],[54.795,-53.073]],"c":true}],"t":112,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-23.043,92.42],[-16.47,10.492],[-4.621,-16.01],[2.027,-11.963],[3.864,-11.869],[-4.165,-36.183],[-7.967,-22.12],[-15.47,35.875],[-14.539,34.264],[-4.884,12.889],[-13.944,-5.038],[2.28,-16.345],[9.103,-37.562],[13.639,-66.829]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.513,-14.09],[16.056,-10.228],[2.997,12.593],[-2.884,17.022],[-1.582,4.859],[1.63,14.184],[20.846,-49.856],[45.535,-105.596],[11.616,-27.377],[16.534,-26.85],[12.522,4.524],[-1.028,7.373],[-12.765,52.672],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202.122,-59.616],[-150.614,-144.607],[-110.928,-124.14],[-110.084,-90.235],[-118.687,-52.953],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.976,-240.317],[54.837,-329.037],[96.463,-348.016],[112.207,-308.31],[90.895,-213.938],[54.795,-53.073]],"c":true}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-23.043,92.42],[-16.47,10.492],[-4.621,-16.01],[2.027,-11.963],[3.864,-11.869],[-4.165,-36.183],[-7.967,-22.12],[-15.47,35.875],[-14.539,34.264],[-4.884,12.889],[-13.944,-5.038],[2.28,-16.345],[9.103,-37.562],[13.639,-66.829]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.513,-14.09],[16.056,-10.228],[2.997,12.593],[-2.884,17.022],[-1.582,4.859],[1.63,14.184],[20.846,-49.856],[45.535,-105.596],[11.616,-27.377],[16.534,-26.85],[12.522,4.524],[-1.028,7.373],[-12.765,52.672],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202.122,-59.616],[-150.614,-144.607],[-110.928,-124.14],[-110.084,-90.235],[-118.687,-52.953],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.976,-240.317],[54.837,-329.037],[96.463,-348.016],[112.207,-308.31],[90.895,-213.938],[54.795,-53.073]],"c":true}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-23.026,92.423],[-16.468,10.495],[-4.624,-16.009],[2.025,-11.964],[3.862,-11.87],[-4.165,-36.183],[-7.967,-22.12],[-15.472,35.883],[-14.548,34.29],[-4.886,12.893],[-13.949,-5.04],[2.28,-16.35],[9.105,-37.567],[13.637,-66.797]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.51,-14.091],[16.054,-10.231],[2.999,12.593],[-2.881,17.023],[-1.581,4.859],[1.63,14.184],[20.846,-49.856],[45.506,-105.532],[11.615,-27.376],[16.54,-26.859],[12.526,4.526],[-1.029,7.376],[-12.767,52.675],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202.12,-59.612],[-150.629,-144.61],[-110.94,-124.152],[-110.09,-90.247],[-118.686,-52.964],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.974,-240.329],[54.828,-329.039],[96.467,-348.02],[112.216,-308.305],[90.905,-213.944],[54.795,-53.073]],"c":true}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-22.972,92.432],[-16.462,10.504],[-4.633,-16.006],[2.018,-11.964],[3.855,-11.871],[-4.165,-36.183],[-7.967,-22.12],[-15.481,35.91],[-14.575,34.367],[-4.891,12.906],[-13.963,-5.045],[2.283,-16.367],[9.111,-37.585],[13.632,-66.701]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.502,-14.092],[16.047,-10.24],[3.006,12.59],[-2.871,17.023],[-1.578,4.86],[1.63,14.184],[20.846,-49.856],[45.417,-105.336],[11.612,-27.374],[16.557,-26.887],[12.539,4.53],[-1.03,7.383],[-12.772,52.686],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202.117,-59.598],[-150.676,-144.622],[-110.977,-124.186],[-110.108,-90.283],[-118.682,-52.997],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.969,-240.365],[54.797,-329.046],[96.479,-348.031],[112.244,-308.291],[90.938,-213.962],[54.795,-53.073]],"c":true}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-22.881,92.448],[-16.45,10.52],[-4.648,-16],[2.006,-11.965],[3.843,-11.874],[-4.165,-36.183],[-7.967,-22.12],[-15.495,35.957],[-14.622,34.499],[-4.899,12.929],[-13.988,-5.054],[2.287,-16.395],[9.121,-37.614],[13.624,-66.537]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.489,-14.094],[16.036,-10.255],[3.018,12.587],[-2.855,17.025],[-1.573,4.861],[1.63,14.184],[20.846,-49.856],[45.265,-105.001],[11.606,-27.371],[16.585,-26.933],[12.561,4.538],[-1.032,7.396],[-12.78,52.703],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202.112,-59.573],[-150.757,-144.641],[-111.041,-124.245],[-110.139,-90.346],[-118.677,-53.054],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.961,-240.426],[54.746,-329.058],[96.499,-348.051],[112.292,-308.266],[90.994,-213.993],[54.795,-53.073]],"c":true}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-22.75,92.47],[-16.434,10.541],[-4.67,-15.992],[1.99,-11.967],[3.826,-11.879],[-4.165,-36.183],[-7.967,-22.12],[-15.515,36.023],[-14.69,34.688],[-4.911,12.961],[-14.022,-5.066],[2.293,-16.436],[9.136,-37.656],[13.612,-66.301]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.469,-14.098],[16.021,-10.276],[3.035,12.581],[-2.831,17.027],[-1.566,4.863],[1.63,14.184],[20.846,-49.856],[45.047,-104.519],[11.598,-27.367],[16.627,-27],[12.592,4.549],[-1.034,7.415],[-12.792,52.729],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202.104,-59.538],[-150.873,-144.669],[-111.132,-124.33],[-110.183,-90.435],[-118.668,-53.136],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.949,-240.514],[54.671,-329.074],[96.527,-348.078],[112.362,-308.231],[91.074,-214.037],[54.795,-53.073]],"c":true}],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-22.576,92.5],[-16.412,10.57],[-4.699,-15.981],[1.967,-11.969],[3.804,-11.884],[-4.165,-36.183],[-7.967,-22.12],[-15.542,36.111],[-14.779,34.938],[-4.927,13.004],[-14.068,-5.083],[2.3,-16.49],[9.155,-37.712],[13.596,-65.989]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.442,-14.102],[16,-10.304],[3.058,12.574],[-2.799,17.03],[-1.557,4.865],[1.63,14.184],[20.846,-49.856],[44.758,-103.883],[11.587,-27.361],[16.681,-27.089],[12.633,4.564],[-1.038,7.439],[-12.807,52.762],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202.094,-59.492],[-151.025,-144.705],[-111.253,-124.443],[-110.242,-90.554],[-118.657,-53.243],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.934,-240.631],[54.573,-329.096],[96.565,-348.115],[112.453,-308.184],[91.18,-214.096],[54.795,-53.073]],"c":true}],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-22.358,92.537],[-16.385,10.607],[-4.735,-15.968],[1.94,-11.972],[3.775,-11.891],[-4.165,-36.183],[-7.967,-22.12],[-15.576,36.222],[-14.891,35.253],[-4.948,13.057],[-14.126,-5.104],[2.31,-16.558],[9.179,-37.782],[13.576,-65.598]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.409,-14.108],[15.973,-10.339],[3.087,12.565],[-2.759,17.034],[-1.546,4.868],[1.63,14.184],[20.846,-49.856],[44.396,-103.083],[11.573,-27.353],[16.75,-27.201],[12.685,4.583],[-1.042,7.47],[-12.827,52.805],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202.081,-59.434],[-151.217,-144.751],[-111.404,-124.584],[-110.315,-90.703],[-118.643,-53.379],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.914,-240.777],[54.45,-329.123],[96.613,-348.162],[112.568,-308.126],[91.313,-214.17],[54.795,-53.073]],"c":true}],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-22.093,92.583],[-16.352,10.651],[-4.779,-15.951],[1.906,-11.975],[3.741,-11.899],[-4.165,-36.183],[-7.967,-22.12],[-15.617,36.356],[-15.027,35.635],[-4.972,13.122],[-14.197,-5.129],[2.322,-16.64],[9.208,-37.867],[13.552,-65.121]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.369,-14.115],[15.941,-10.382],[3.121,12.554],[-2.711,17.038],[-1.532,4.871],[1.63,14.184],[20.846,-49.856],[43.955,-102.11],[11.556,-27.344],[16.833,-27.336],[12.749,4.606],[-1.047,7.507],[-12.85,52.856],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202.065,-59.363],[-151.451,-144.807],[-111.589,-124.755],[-110.405,-90.884],[-118.626,-53.543],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.89,-240.955],[54.3,-329.157],[96.671,-348.218],[112.708,-308.054],[91.475,-214.259],[54.795,-53.073]],"c":true}],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-21.779,92.637],[-16.313,10.703],[-4.831,-15.932],[1.866,-11.979],[3.7,-11.909],[-4.165,-36.183],[-7.967,-22.12],[-15.665,36.516],[-15.189,36.09],[-5.002,13.2],[-14.281,-5.159],[2.335,-16.739],[9.243,-37.968],[13.524,-64.555]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.321,-14.123],[15.903,-10.433],[3.162,12.541],[-2.653,17.044],[-1.515,4.875],[1.63,14.184],[20.846,-49.856],[43.431,-100.954],[11.537,-27.333],[16.933,-27.497],[12.824,4.633],[-1.053,7.551],[-12.878,52.917],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202.047,-59.279],[-151.728,-144.873],[-111.807,-124.959],[-110.511,-91.099],[-118.606,-53.739],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.862,-241.166],[54.122,-329.196],[96.74,-348.285],[112.874,-307.969],[91.667,-214.366],[54.795,-53.073]],"c":true}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-21.411,92.7],[-16.267,10.765],[-4.892,-15.909],[1.819,-11.983],[3.653,-11.921],[-4.165,-36.183],[-7.967,-22.12],[-15.722,36.702],[-15.379,36.621],[-5.036,13.29],[-14.378,-5.195],[2.352,-16.853],[9.283,-38.087],[13.49,-63.894]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.265,-14.133],[15.859,-10.493],[3.211,12.525],[-2.586,17.05],[-1.496,4.88],[1.63,14.184],[20.846,-49.856],[42.819,-99.605],[11.514,-27.321],[17.049,-27.686],[12.912,4.665],[-1.06,7.603],[-12.911,52.988],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202.025,-59.18],[-152.052,-144.951],[-112.063,-125.197],[-110.635,-91.35],[-118.582,-53.967],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.829,-241.413],[53.914,-329.242],[96.82,-348.363],[113.068,-307.87],[91.892,-214.491],[54.795,-53.073]],"c":true}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-20.987,92.772],[-16.214,10.835],[-4.962,-15.883],[1.765,-11.988],[3.598,-11.934],[-4.165,-36.183],[-7.967,-22.12],[-15.788,36.917],[-15.597,37.232],[-5.075,13.394],[-14.491,-5.235],[2.37,-16.985],[9.33,-38.223],[13.452,-63.132]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.201,-14.144],[15.807,-10.561],[3.266,12.508],[-2.509,17.057],[-1.474,4.886],[1.63,14.184],[20.846,-49.856],[42.114,-98.049],[11.487,-27.306],[17.182,-27.903],[13.013,4.701],[-1.069,7.662],[-12.949,53.07],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202,-59.067],[-152.425,-145.041],[-112.358,-125.471],[-110.778,-91.639],[-118.555,-54.231],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.791,-241.698],[53.674,-329.296],[96.912,-348.453],[113.292,-307.756],[92.151,-214.634],[54.795,-53.073]],"c":true}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-20.504,92.855],[-16.154,10.916],[-5.042,-15.854],[1.703,-11.994],[3.535,-11.95],[-4.165,-36.183],[-7.967,-22.12],[-15.863,37.162],[-15.845,37.93],[-5.12,13.513],[-14.619,-5.282],[2.392,-17.136],[9.383,-38.378],[13.408,-62.263]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.127,-14.156],[15.749,-10.639],[3.329,12.488],[-2.421,17.066],[-1.448,4.892],[1.63,14.184],[20.846,-49.856],[41.31,-96.275],[11.456,-27.29],[17.335,-28.15],[13.128,4.743],[-1.078,7.73],[-12.992,53.164],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.971,-58.938],[-152.851,-145.143],[-112.694,-125.784],[-110.941,-91.969],[-118.524,-54.531],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.747,-242.022],[53.4,-329.357],[97.018,-348.555],[113.546,-307.626],[92.446,-214.798],[54.795,-53.073]],"c":true}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-19.958,92.949],[-16.086,11.007],[-5.133,-15.82],[1.633,-12],[3.464,-11.967],[-4.165,-36.183],[-7.967,-22.12],[-15.947,37.439],[-16.126,38.718],[-5.171,13.647],[-14.765,-5.334],[2.416,-17.306],[9.443,-38.554],[13.358,-61.281]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.044,-14.171],[15.683,-10.728],[3.401,12.465],[-2.321,17.075],[-1.419,4.899],[1.63,14.184],[20.846,-49.856],[40.402,-94.27],[11.422,-27.271],[17.507,-28.43],[13.258,4.79],[-1.089,7.807],[-13.041,53.269],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.939,-58.792],[-153.332,-145.258],[-113.074,-126.137],[-111.125,-92.342],[-118.489,-54.87],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.698,-242.389],[53.091,-329.425],[97.137,-348.671],[113.835,-307.479],[92.78,-214.983],[54.795,-53.073]],"c":true}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-19.345,93.054],[-16.009,11.109],[-5.235,-15.782],[1.555,-12.008],[3.385,-11.986],[-4.165,-36.183],[-7.967,-22.12],[-16.042,37.75],[-16.442,39.603],[-5.228,13.798],[-14.927,-5.393],[2.443,-17.497],[9.511,-38.751],[13.302,-60.18]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[2.951,-14.187],[15.609,-10.827],[3.481,12.439],[-2.209,17.086],[-1.387,4.907],[1.63,14.184],[20.846,-49.856],[39.382,-92.02],[11.384,-27.25],[17.7,-28.743],[13.405,4.843],[-1.101,7.893],[-13.096,53.388],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.902,-58.629],[-153.872,-145.387],[-113.5,-126.534],[-111.332,-92.761],[-118.45,-55.251],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.643,-242.801],[52.744,-329.502],[97.271,-348.801],[114.158,-307.314],[93.154,-215.191],[54.795,-53.073]],"c":true}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-18.662,93.171],[-15.924,11.223],[-5.348,-15.74],[1.468,-12.016],[3.297,-12.008],[-4.165,-36.183],[-7.967,-22.12],[-16.147,38.096],[-16.793,40.588],[-5.292,13.965],[-15.109,-5.459],[2.473,-17.709],[9.586,-38.97],[13.24,-58.952]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[2.848,-14.205],[15.526,-10.938],[3.57,12.411],[-2.085,17.097],[-1.351,4.916],[1.63,14.184],[20.846,-49.856],[38.246,-89.514],[11.341,-27.227],[17.915,-29.093],[13.568,4.902],[-1.114,7.989],[-13.157,53.52],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.862,-58.446],[-154.473,-145.531],[-113.975,-126.976],[-111.562,-93.227],[-118.406,-55.675],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.581,-243.259],[52.357,-329.588],[97.42,-348.946],[114.518,-307.13],[93.572,-215.422],[54.795,-53.073]],"c":true}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-17.906,93.301],[-15.83,11.349],[-5.473,-15.694],[1.371,-12.025],[3.199,-12.032],[-4.165,-36.183],[-7.967,-22.12],[-16.264,38.48],[-17.182,41.68],[-5.362,14.151],[-15.31,-5.531],[2.506,-17.945],[9.67,-39.213],[13.171,-57.593]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[2.733,-14.224],[15.435,-11.06],[3.669,12.379],[-1.947,17.11],[-1.311,4.925],[1.63,14.184],[20.846,-49.856],[36.988,-86.738],[11.293,-27.201],[18.153,-29.48],[13.748,4.967],[-1.129,8.095],[-13.225,53.667],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.817,-58.244],[-155.139,-145.691],[-114.501,-127.465],[-111.817,-93.743],[-118.358,-56.145],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.513,-243.767],[51.93,-329.684],[97.585,-349.107],[114.917,-306.927],[94.034,-215.678],[54.795,-53.073]],"c":true}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-17.074,93.443],[-15.726,11.488],[-5.611,-15.643],[1.265,-12.035],[3.091,-12.058],[-4.165,-36.183],[-7.967,-22.12],[-16.393,38.901],[-17.61,42.88],[-5.44,14.355],[-15.531,-5.611],[2.543,-18.204],[9.761,-39.481],[13.096,-56.098]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[2.606,-14.246],[15.334,-11.195],[3.778,12.345],[-1.795,17.124],[-1.267,4.936],[1.63,14.184],[20.846,-49.856],[35.605,-83.686],[11.241,-27.172],[18.415,-29.905],[13.947,5.039],[-1.145,8.212],[-13.299,53.828],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.768,-58.022],[-155.872,-145.866],[-115.079,-128.004],[-112.098,-94.311],[-118.305,-56.661],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.438,-244.325],[51.459,-329.788],[97.767,-349.283],[115.356,-306.703],[94.542,-215.96],[54.795,-53.073]],"c":true}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-16.167,93.599],[-15.613,11.639],[-5.761,-15.587],[1.149,-12.046],[2.973,-12.087],[-4.165,-36.183],[-7.967,-22.12],[-16.533,39.361],[-18.077,44.189],[-5.524,14.578],[-15.772,-5.698],[2.583,-18.486],[9.861,-39.772],[13.013,-54.467]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[2.469,-14.27],[15.225,-11.341],[3.897,12.307],[-1.63,17.14],[-1.22,4.948],[1.63,14.184],[20.846,-49.856],[34.096,-80.356],[11.184,-27.141],[18.701,-30.37],[14.163,5.117],[-1.163,8.34],[-13.381,54.003],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.714,-57.78],[-156.671,-146.058],[-115.71,-128.591],[-112.404,-94.931],[-118.246,-57.225],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.356,-244.934],[50.945,-329.902],[97.965,-349.476],[115.834,-306.458],[95.096,-216.267],[54.795,-53.073]],"c":true}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-15.186,93.767],[-15.491,11.803],[-5.924,-15.526],[1.024,-12.058],[2.846,-12.118],[-4.165,-36.183],[-7.967,-22.12],[-16.685,39.859],[-18.581,45.604],[-5.615,14.819],[-16.033,-5.793],[2.626,-18.792],[9.969,-40.088],[12.924,-52.704]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[2.32,-14.295],[15.106,-11.5],[4.025,12.266],[-1.451,17.157],[-1.168,4.96],[1.63,14.184],[20.846,-49.856],[32.465,-76.757],[11.122,-27.108],[19.01,-30.871],[14.397,5.202],[-1.182,8.478],[-13.468,54.193],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.656,-57.518],[-157.534,-146.265],[-116.392,-129.225],[-112.734,-95.6],[-118.184,-57.834],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.268,-245.592],[50.39,-330.026],[98.179,-349.684],[116.351,-306.195],[95.695,-216.599],[54.795,-53.073]],"c":true}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-14.141,93.946],[-15.361,11.977],[-6.097,-15.462],[0.891,-12.07],[2.711,-12.151],[-4.165,-36.183],[-7.967,-22.12],[-16.847,40.389],[-19.119,47.113],[-5.713,15.076],[-16.311,-5.893],[2.672,-19.117],[10.085,-40.424],[12.829,-50.826]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[2.161,-14.322],[14.98,-11.669],[4.162,12.223],[-1.26,17.175],[-1.113,4.974],[1.63,14.184],[20.846,-49.856],[30.726,-72.921],[11.056,-27.072],[19.34,-31.406],[14.647,5.292],[-1.203,8.625],[-13.562,54.396],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.594,-57.239],[-158.455,-146.485],[-117.119,-129.902],[-113.087,-96.314],[-118.117,-58.483],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.174,-246.294],[49.799,-330.157],[98.407,-349.906],[116.903,-305.913],[96.334,-216.954],[54.795,-53.073]],"c":true}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-13.049,94.133],[-15.225,12.159],[-6.278,-15.395],[0.751,-12.083],[2.57,-12.186],[-4.165,-36.183],[-7.967,-22.12],[-17.016,40.942],[-19.681,48.689],[-5.814,15.344],[-16.601,-5.998],[2.721,-19.457],[10.205,-40.775],[12.73,-48.863]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.995,-14.351],[14.848,-11.846],[4.305,12.177],[-1.061,17.193],[-1.055,4.988],[1.63,14.184],[20.846,-49.856],[28.909,-68.913],[10.988,-27.035],[19.684,-31.965],[14.907,5.386],[-1.224,8.778],[-13.66,54.607],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.529,-56.947],[-159.417,-146.716],[-117.878,-130.608],[-113.455,-97.059],[-118.047,-59.161],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.075,-247.027],[49.181,-330.295],[98.646,-350.138],[117.479,-305.619],[97.001,-217.323],[54.795,-53.073]],"c":true}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-11.945,94.323],[-15.087,12.343],[-6.461,-15.327],[0.61,-12.097],[2.427,-12.221],[-4.165,-36.183],[-7.967,-22.12],[-17.187,41.502],[-20.249,50.284],[-5.917,15.616],[-16.894,-6.104],[2.769,-19.801],[10.327,-41.13],[12.629,-46.876]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.827,-14.38],[14.714,-12.025],[4.45,12.131],[-0.859,17.212],[-0.997,5.002],[1.63,14.184],[20.846,-49.856],[27.071,-64.857],[10.918,-26.997],[20.032,-32.53],[15.171,5.481],[-1.246,8.933],[-13.758,54.821],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.464,-56.652],[-160.39,-146.949],[-118.647,-131.323],[-113.828,-97.814],[-117.976,-59.847],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.976,-247.769],[48.555,-330.434],[98.887,-350.372],[118.061,-305.322],[97.676,-217.698],[54.795,-53.073]],"c":true}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-10.885,94.504],[-14.955,12.52],[-6.637,-15.262],[0.475,-12.109],[2.289,-12.254],[-4.165,-36.183],[-7.967,-22.12],[-17.35,42.04],[-20.794,51.813],[-6.016,15.876],[-17.176,-6.206],[2.816,-20.131],[10.443,-41.47],[12.533,-44.972]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.666,-14.407],[14.586,-12.196],[4.589,12.087],[-0.666,17.23],[-0.941,5.016],[1.63,14.184],[20.846,-49.856],[25.309,-60.968],[10.852,-26.96],[20.366,-33.073],[15.424,5.573],[-1.267,9.082],[-13.853,55.026],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.401,-56.369],[-161.323,-147.173],[-119.384,-132.009],[-114.185,-98.537],[-117.908,-60.506],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.88,-248.48],[47.956,-330.567],[99.118,-350.597],[118.62,-305.036],[98.324,-218.057],[54.795,-53.073]],"c":true}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.962,94.662],[-14.84,12.674],[-6.79,-15.205],[0.357,-12.121],[2.17,-12.284],[-4.165,-36.183],[-7.967,-22.12],[-17.493,42.508],[-21.269,53.145],[-6.102,16.103],[-17.421,-6.294],[2.857,-20.419],[10.545,-41.767],[12.449,-43.312]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.526,-14.431],[14.474,-12.346],[4.709,12.049],[-0.498,17.246],[-0.893,5.028],[1.63,14.184],[20.846,-49.856],[23.773,-57.58],[10.793,-26.929],[20.657,-33.545],[15.644,5.652],[-1.285,9.212],[-13.936,55.205],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.346,-56.122],[-162.136,-147.367],[-120.026,-132.606],[-114.497,-99.167],[-117.849,-61.079],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.797,-249.1],[47.433,-330.683],[99.32,-350.793],[119.107,-304.788],[98.888,-218.369],[54.795,-53.073]],"c":true}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.303,94.775],[-14.758,12.784],[-6.899,-15.165],[0.273,-12.128],[2.084,-12.305],[-4.165,-36.183],[-7.967,-22.12],[-17.595,42.842],[-21.608,54.096],[-6.163,16.265],[-17.596,-6.357],[2.886,-20.624],[10.618,-41.979],[12.389,-42.128]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.426,-14.449],[14.395,-12.453],[4.796,12.021],[-0.378,17.257],[-0.858,5.036],[1.63,14.184],[20.846,-49.856],[22.677,-55.161],[10.752,-26.906],[20.865,-33.882],[15.801,5.709],[-1.298,9.305],[-13.995,55.333],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.307,-55.946],[-162.717,-147.506],[-120.484,-133.033],[-114.719,-99.617],[-117.807,-61.488],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.738,-249.543],[47.06,-330.766],[99.464,-350.933],[119.455,-304.61],[99.29,-218.593],[54.795,-53.073]],"c":true}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.634,42.969],[-21.737,54.457],[-6.186,16.326],[-17.663,-6.381],[2.897,-20.702],[10.645,-42.059],[12.366,-41.679]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.261,-54.244],[10.736,-26.898],[20.943,-34.01],[15.861,5.73],[-1.303,9.34],[-14.017,55.381],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.715,-249.71],[46.919,-330.797],[99.518,-350.986],[119.587,-304.543],[99.443,-218.677],[54.795,-53.073]],"c":true}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.678431391716,0.403921574354,0.305882364511,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-48.45,"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":"Hand","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Hand Lines","parent":7,"tt":1,"tp":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[72.723,19.821,0],"ix":2,"l":2},"a":{"a":0,"k":[490.552,442.212,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-7.665,31.475]],"o":[[0,0],[0,0]],"v":[[-15.889,21.592],[15.889,-21.592]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.596078455448,0.321568638086,0.239215686917,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-48.45,"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":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[382.696,550.212],"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":"Thumb Line","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[-9.068,38.768],[0,0]],"v":[[10.258,-29.133],[-10.258,29.133]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.596078455448,0.321568638086,0.239215686917,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-48.45,"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":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[428.001,369.5],"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":"Line 1","np":1,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[9.242,-16.485]],"o":[[-4.672,26.39],[0,0]],"v":[[10.819,-35.549],[-10.819,35.549]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.596078455448,0.321568638086,0.239215686917,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-48.45,"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":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[515.779,357.675],"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":"Line 2","np":1,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,25.56],[0,0]],"v":[[8.374,-35.429],[-8.374,35.429]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.596078455448,0.321568638086,0.239215686917,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.8,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-48.45,"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":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[583.068,337.766],"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":"Line 3","np":1,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Hand","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.8],"y":[0]},"t":4,"s":[-6]},{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":56,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":90,"s":[3]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":92,"s":[3]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":113,"s":[-1]},{"i":{"x":[0.59],"y":[1]},"o":{"x":[0.11],"y":[0.44]},"t":115,"s":[-1]},{"t":140,"s":[4],"h":1}],"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[133,148,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.84,"y":1},"o":{"x":0.83,"y":0},"t":65,"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.634,42.969],[-21.737,54.457],[-6.186,16.326],[-17.663,-6.381],[2.897,-20.702],[10.645,-42.059],[12.366,-41.679]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.261,-54.244],[10.736,-26.898],[20.943,-34.01],[15.861,5.73],[-1.303,9.34],[-14.017,55.381],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.715,-249.71],[46.919,-330.797],[99.518,-350.986],[119.587,-304.543],[99.443,-218.677],[54.795,-53.073]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":98,"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-16.468,43.429],[-22.934,57.457],[-7.108,18.758],[-20.294,-7.332],[3.318,-23.787],[12.497,-44.223],[15.323,-59.225]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[24.028,-63.364],[11.328,-28.38],[24.063,-39.077],[18.224,6.584],[-1.497,10.731],[-16.391,58.003],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[7.922,-241.515],[41.307,-332.035],[101.742,-355.231],[124.8,-301.87],[98.375,-208.97],[54.795,-53.073]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.66,"y":0},"t":113,"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-23.043,92.42],[-16.47,10.492],[-4.621,-16.01],[2.027,-11.963],[3.864,-11.869],[-4.165,-36.183],[-7.967,-22.12],[-15.47,35.875],[-14.539,34.264],[-4.884,12.889],[-13.944,-5.038],[2.28,-16.345],[9.103,-37.562],[13.639,-66.829]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.513,-14.09],[16.056,-10.228],[2.997,12.593],[-2.884,17.022],[-1.582,4.859],[1.63,14.184],[20.846,-49.856],[45.535,-105.596],[11.616,-27.377],[16.534,-26.85],[12.522,4.524],[-1.028,7.373],[-12.765,52.672],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202.122,-59.616],[-150.614,-144.607],[-110.928,-124.14],[-110.084,-90.235],[-118.687,-52.953],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.976,-240.317],[54.837,-329.037],[96.463,-348.016],[112.207,-308.31],[90.895,-213.938],[54.795,-53.073]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.66,"y":0},"t":115,"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-23.043,92.42],[-16.47,10.492],[-4.621,-16.01],[2.027,-11.963],[3.864,-11.869],[-4.165,-36.183],[-7.967,-22.12],[-15.47,35.875],[-14.539,34.264],[-4.884,12.889],[-13.944,-5.038],[2.28,-16.345],[9.103,-37.562],[13.639,-66.829]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[3.513,-14.09],[16.056,-10.228],[2.997,12.593],[-2.884,17.022],[-1.582,4.859],[1.63,14.184],[20.846,-49.856],[45.535,-105.596],[11.616,-27.377],[16.534,-26.85],[12.522,4.524],[-1.028,7.373],[-12.765,52.672],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-202.122,-59.616],[-150.614,-144.607],[-110.928,-124.14],[-110.084,-90.235],[-118.687,-52.953],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[16.976,-240.317],[54.837,-329.037],[96.463,-348.016],[112.207,-308.31],[90.895,-213.938],[54.795,-53.073]],"c":true}]},{"t":140,"s":[{"i":[[-14.274,-42.007],[-17.413,-41.917],[0,0],[2.927,-58.816],[44.814,-60.355],[77.889,155.264],[-9.053,94.818],[-14.727,12.826],[-6.941,-15.149],[0.241,-12.131],[2.052,-12.312],[-4.165,-36.183],[-7.967,-22.12],[-17.634,42.969],[-21.737,54.457],[-6.186,16.326],[-17.663,-6.381],[2.897,-20.702],[10.645,-42.059],[12.366,-41.679]],"o":[[4.783,0.1],[0,0],[20.762,5.492],[-3.983,58.877],[-77.285,104.022],[-56.221,-112.08],[1.388,-14.455],[14.365,-12.493],[4.828,12.011],[-0.332,17.262],[-0.845,5.04],[1.63,14.184],[20.846,-49.856],[22.261,-54.244],[10.736,-26.898],[20.943,-34.01],[15.861,5.73],[-1.303,9.34],[-14.017,55.381],[12.222,1.147]],"v":[[122.936,-2.827],[180.123,41.836],[180.123,41.866],[227.2,122.772],[169.108,282.714],[-199.844,234.128],[-201.292,-55.879],[-162.937,-147.559],[-120.658,-133.195],[-114.803,-99.788],[-117.791,-61.643],[-117.067,-13.661],[-103.969,41.926],[-50.496,-86.743],[15.715,-249.71],[46.919,-330.797],[99.518,-350.986],[119.587,-304.543],[99.443,-218.677],[54.795,-53.073]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.678431391716,0.403921574354,0.305882364511,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-48.45,"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":"Hand","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0}]},{"id":"comp_2","nm":"Part02_Charade_Tablet_Overview_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"REPO","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":640,"ix":3},"y":{"a":0,"k":1337,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":60,"op":312,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"Secondary Y Movement","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":0,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":38,"s":[-621.291]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":40.334,"s":[-614.091]},{"t":52,"s":[-621.291]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":467,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"MASTER Y POSITION","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":0,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.426],"y":[0.38]},"o":{"x":[0.48],"y":[0.051]},"t":0,"s":[-97.709]},{"i":{"x":[0.633],"y":[1]},"o":{"x":[0.654],"y":[-0.375]},"t":23,"s":[-103.709]},{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":38,"s":[-92.709]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":44.666,"s":[-50.709]},{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.52],"y":[0]},"t":78,"s":[12.291]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":109,"s":[-7.709]},{"i":{"x":[0.8],"y":[0.764]},"o":{"x":[0.3],"y":[0]},"t":118,"s":[-7.709]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":128,"s":[64.291]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.78],"y":[0]},"t":143,"s":[46.291]},{"i":{"x":[0.8],"y":[0.528]},"o":{"x":[0.3],"y":[0]},"t":145,"s":[46.291]},{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[1]},"t":155,"s":[64.291]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":184,"s":[-7.709]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.52],"y":[0]},"t":195,"s":[-7.709]},{"i":{"x":[0.428],"y":[1]},"o":{"x":[0.681],"y":[0]},"t":235,"s":[-261.709]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":290,"s":[-239.709]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.52],"y":[0]},"t":294,"s":[-239.709]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":334,"s":[-261.709]},{"i":{"x":[0.473],"y":[1.533]},"o":{"x":[0.63],"y":[0]},"t":343,"s":[-261.709]},{"i":{"x":[0.105],"y":[1]},"o":{"x":[0.497],"y":[-0.207]},"t":406,"s":[-157.709]},{"t":466,"s":[62.291]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":467,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":60,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":72,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":84,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":96,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":108,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":162,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":174,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":186,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":198,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":210,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":264,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":276,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":288,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":300,"s":[100]},{"t":312,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":6,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":0,"k":1282,"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":0,"k":581,"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":0,"k":90,"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"a":0,"k":90,"ix":8}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"a":0,"k":135,"ix":9}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"a":0,"k":135,"ix":10}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491],[-551,-581],[551,-581],[641,-491],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[74.506,0],[0,0],[0,74.506]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,74.506],[0,0],[-74.506,0],[0,0]],"v":[[-641,-491],[-551,-581],[551,-581],[641,-491],[641,-135],[506,0],[-506,0],[-641,-135]],"c":true}],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Rectangle 11986","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":312,"st":-205,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".secondaryOverview","cl":"secondaryOverview","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-144,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-134,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":549,"s":[100]},{"t":555,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.108},"t":426,"s":[0,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":465,"s":[0,-10.9,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":1,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":5,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[0,0],"t":426,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-0.27],"t":427,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-0.737],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-1.391],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-2.194],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-3.049],"t":431,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-3.867],"t":432,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-4.609],"t":433,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-5.269],"t":434,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-5.856],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-6.38],"t":436,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-6.85],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-7.272],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-7.654],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-7.999],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-8.312],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-8.595],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-8.851],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-9.083],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-9.295],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-9.488],"t":446,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-9.662],"t":447,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-9.82],"t":448,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-9.963],"t":449,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.093],"t":450,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.211],"t":451,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.317],"t":452,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.412],"t":453,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.498],"t":454,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.575],"t":455,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.642],"t":456,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.701],"t":457,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.752],"t":458,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.794],"t":459,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.83],"t":460,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.857],"t":461,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.878],"t":462,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,-10.892],"t":463,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":406,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[55.625,-40.25]],"c":false}]},{"i":{"x":0.12,"y":1},"o":{"x":0.167,"y":0.167},"t":426,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-36.75]],"c":false}]},{"t":465,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.83],"y":[0.83]},"o":{"x":[0.44],"y":[0]},"t":406,"s":[54]},{"t":426,"s":[58]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":18,"s":[90]}],"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":"Right","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[55.625,-40.25]],"c":false}],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[55.461,-40.238]],"c":false}],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[54.979,-40.201]],"c":false}],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[54.191,-40.142]],"c":false}],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[53.112,-40.06]],"c":false}],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[51.754,-39.958]],"c":false}],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[50.13,-39.835]],"c":false}],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[48.251,-39.693]],"c":false}],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[46.13,-39.533]],"c":false}],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[43.779,-39.356]],"c":false}],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[41.212,-39.162]],"c":false}],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[38.443,-38.953]],"c":false}],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[35.488,-38.73]],"c":false}],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[32.365,-38.494]],"c":false}],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[29.095,-38.248]],"c":false}],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[25.705,-37.992]],"c":false}],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[22.232,-37.73]],"c":false}],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[18.728,-37.465]],"c":false}],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[15.275,-37.205]],"c":false}],"t":424,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[12.014,-36.959]],"c":false}],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-36.75]],"c":false}],"t":426,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-36.245]],"c":false}],"t":427,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-35.487]],"c":false}],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-34.479]],"c":false}],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-33.307]],"c":false}],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-32.102]],"c":false}],"t":431,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-30.966]],"c":false}],"t":432,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-29.94]],"c":false}],"t":433,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-29.029]],"c":false}],"t":434,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-28.223]],"c":false}],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-27.508]],"c":false}],"t":436,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-26.872]],"c":false}],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-26.304]],"c":false}],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-25.794]],"c":false}],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-25.335]],"c":false}],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-24.92]],"c":false}],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-24.545]],"c":false}],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-24.205]],"c":false}],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.896]],"c":false}],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.615]],"c":false}],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.36]],"c":false}],"t":446,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-23.129]],"c":false}],"t":447,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.918]],"c":false}],"t":448,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.728]],"c":false}],"t":449,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.555]],"c":false}],"t":450,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.4]],"c":false}],"t":451,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.26]],"c":false}],"t":452,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.135]],"c":false}],"t":453,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-22.023]],"c":false}],"t":454,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.924]],"c":false}],"t":455,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.837]],"c":false}],"t":456,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.762]],"c":false}],"t":457,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.697]],"c":false}],"t":458,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.642]],"c":false}],"t":459,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.597]],"c":false}],"t":460,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.561]],"c":false}],"t":461,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.534]],"c":false}],"t":462,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[9.25,-21.5],[9.25,-21.515]],"c":false}],"t":463,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[54.014],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.056],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.123],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.216],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.333],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.474],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.636],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[54.819],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.022],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.244],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.483],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[55.738],"t":418,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.008],"t":419,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.291],"t":420,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.584],"t":421,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.883],"t":422,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.185],"t":423,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.482],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.763],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58],"t":426,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":1,"k":[{"t":-145,"s":[0],"h":1},{"t":18,"s":[100],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Left","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":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.44,"y":0},"t":406,"s":[{"i":[[6.167,-3.179],[-15.352,0],[5.008,2.581]],"o":[[-5.59,2.881],[13.869,0],[-6.167,-3.179]],"v":[[-9.526,-79.571],[0.604,-100.669],[9.867,-79.571]],"c":true}]},{"t":426,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.895,-79.571],[0.709,-100.669],[11.321,-79.571]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.765,"y":0.675},"o":{"x":0.399,"y":0},"t":406,"s":[0,139],"to":[0,0],"ti":[0,0]},{"i":{"x":0.24,"y":1},"o":{"x":0.4,"y":0.441},"t":424,"s":[0,101],"to":[0,0],"ti":[0,0]},{"t":427,"s":[0,93]}],"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":3,"mn":"ADBE Vector Group","hd":false}],"ip":406,"op":467,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".secondaryOverview","cl":"secondaryOverview","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-6,"s":[100]},{"t":5,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.033,-21.75],[-55.984,-40.016]],"c":false}],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.198,-21.75],[-50.169,-39.599]],"c":false}],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-5.356,-21.75],[-37.325,-38.678]],"c":false}],"t":198,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.425,-21.75],[-16.892,-37.213]],"c":false}],"t":199,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.467,-21.75],[3.272,-35.766]],"c":false}],"t":200,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[2.584,-21.75],[18.031,-34.708]],"c":false}],"t":201,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.048,-21.75],[28.237,-33.976]],"c":false}],"t":202,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5.064,-21.75],[35.32,-33.468]],"c":false}],"t":203,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5.767,-21.75],[40.22,-33.116]],"c":false}],"t":204,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.241,-21.75],[43.523,-32.88]],"c":false}],"t":205,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.54,-21.75],[45.607,-32.73]],"c":false}],"t":206,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.701,-21.75],[46.73,-32.65]],"c":false}],"t":207,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[47.072,-32.625]],"c":false}],"t":208,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[49.587,-33.707]],"c":false}],"t":209,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[54.144,-35.668]],"c":false}],"t":210,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[57.197,-36.982]],"c":false}],"t":211,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[59.162,-37.828]],"c":false}],"t":212,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[60.549,-38.425]],"c":false}],"t":213,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[61.581,-38.869]],"c":false}],"t":214,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[62.369,-39.208]],"c":false}],"t":215,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[62.978,-39.47]],"c":false}],"t":216,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[63.45,-39.673]],"c":false}],"t":217,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[63.811,-39.829]],"c":false}],"t":218,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.082,-39.945]],"c":false}],"t":219,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.276,-40.028]],"c":false}],"t":220,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.405,-40.084]],"c":false}],"t":221,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.477,-40.115]],"c":false}],"t":222,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","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":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":195,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}]},{"i":{"x":0.01,"y":1},"o":{"x":0.167,"y":0.167},"t":208,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[47.072,-32.625]],"c":false}]},{"t":223,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.75,-21.75],[64.5,-40.125]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":200,"op":221,"st":-6,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".secondaryOverview","cl":"secondaryOverview","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-145,"s":[100]},{"t":-134,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.625,-45.75]],"c":false}],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.725,-44.786]],"c":false}],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.906,-43.051]],"c":false}],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.119,-41.012]],"c":false}],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.349,-38.801]],"c":false}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.591,-36.476]],"c":false}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.841,-34.073]],"c":false}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.097,-31.615]],"c":false}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.357,-29.121]],"c":false}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.618,-26.612]],"c":false}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.878,-24.121]],"c":false}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.125,-21.75]],"c":false}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.021,-24.795]],"c":false}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.846,-29.943]],"c":false}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.74,-33.077]],"c":false}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.672,-35.065]],"c":false}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.625,-36.457]],"c":false}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.59,-37.483]],"c":false}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.564,-38.258]],"c":false}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.543,-38.847]],"c":false}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.528,-39.292]],"c":false}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.517,-39.621]],"c":false}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.509,-39.856]],"c":false}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.504,-40.011]],"c":false}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.501,-40.098]],"c":false}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.048]],"c":false}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-39.825]],"c":false}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-39.469]],"c":false}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-38.991]],"c":false}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-38.401]],"c":false}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-37.708]],"c":false}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-36.919]],"c":false}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-36.042]],"c":false}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-35.084]],"c":false}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-34.051]],"c":false}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-32.951]],"c":false}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-31.79]],"c":false}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-30.576]],"c":false}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-29.316]],"c":false}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-28.021]],"c":false}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-26.701]],"c":false}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-25.375]],"c":false}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-24.067]],"c":false}],"t":102,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-22.825]],"c":false}],"t":103,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-21.75]],"c":false}],"t":104,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.38,-24.323]],"c":false}],"t":105,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.199,-28.188]],"c":false}],"t":106,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.031,-31.777]],"c":false}],"t":107,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.898,-34.618]],"c":false}],"t":108,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.795,-36.811]],"c":false}],"t":109,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.716,-38.509]],"c":false}],"t":110,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.654,-39.829]],"c":false}],"t":111,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.606,-40.851]],"c":false}],"t":112,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.57,-41.634]],"c":false}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.542,-42.22]],"c":false}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.523,-42.64]],"c":false}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.51,-42.919]],"c":false}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.502,-43.076]],"c":false}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.5,-43.125]],"c":false}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,-100],"ix":3},"r":{"a":0,"k":90,"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":"Left","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":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.17,"y":0},"t":59,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-55.625,-45.75]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":70,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-58.125,-21.75]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":84,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-40.125]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.167,"y":0.167},"t":104,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-57.5,-21.75]],"c":false}]},{"t":118,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.25,-21.75],[-56.5,-43.125]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":54,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","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":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.17,"y":0},"t":59,"s":[{"i":[[7.064,-3.179],[-17.586,0],[5.736,2.581]],"o":[[-6.403,2.881],[15.887,0],[-7.064,-3.179]],"v":[[-10.895,10.429],[0.709,-10.669],[11.321,10.429]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":70,"s":[{"i":[[4.884,-3.179],[-12.16,0],[3.966,2.581]],"o":[[-4.427,2.881],[10.985,0],[-4.884,-3.179]],"v":[[-7.577,14.554],[0.447,-6.544],[7.784,14.554]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":84,"s":[{"i":[[5.367,-3.179],[-13.36,0],[4.358,2.581]],"o":[[-4.864,2.881],[12.069,0],[-5.367,-3.179]],"v":[[-8.36,13.429],[0.455,-7.669],[8.517,13.429]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":104,"s":[{"i":[[6.067,-3.179],[-15.103,0],[4.926,2.581]],"o":[[-5.499,2.881],[13.644,0],[-6.067,-3.179]],"v":[[-9.38,13.554],[0.585,-7.544],[9.699,13.554]],"c":true}]},{"t":112,"s":[{"i":[[6.067,-3.179],[-15.103,0],[4.926,2.581]],"o":[[-5.499,2.881],[13.644,0],[-6.067,-3.179]],"v":[[-9.38,13.554],[0.585,-7.544],[9.699,13.554]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-90],"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":"Round Bottom","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":59,"op":112,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".secondaryOverview","cl":"secondaryOverview","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":549,"s":[100]},{"t":555,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":1,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":8,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":466,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":12,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":16,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.22,"y":1},"o":{"x":0.18,"y":1},"t":23,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.643,-21.893],[-35.357,-21.893]],"c":false}]},{"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-37]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.52],"y":[0.96]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[48]},{"t":18,"s":[64]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Right","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":1,"k":[{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0,-21.75],[0,-21.75]],"c":false}]},{"i":{"x":0.22,"y":1},"o":{"x":0.18,"y":1},"t":23,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-11.643,-21.893],[-35.357,-21.893]],"c":false}]},{"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-7.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.52],"y":[0.96]},"o":{"x":[0.48],"y":[0.04]},"t":0,"s":[48]},{"t":18,"s":[64]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":90,"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":"Left","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":28,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".secondaryOverview","cl":"secondaryOverview","parent":3,"sr":1,"ks":{"o":{"a":1,"k":[{"t":52,"s":[100],"h":1},{"t":62,"s":[0],"h":1},{"t":112,"s":[100],"h":1},{"t":200,"s":[0],"h":1},{"t":221,"s":[100],"h":1},{"t":408,"s":[0],"h":1}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,-259.147,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.001,"y":0},"t":27,"s":[{"i":[[4.22,-5.198],[6.889,-2.445],[6.141,2.195],[4.414,5.745],[2.09,6.003],[1.842,5.673],[0,0],[-4.629,7.032],[-3.668,2.338],[-9.176,-4.129],[0,0],[-2.537,1.423],[0,0],[-5.764,-2.348],[-3.35,-5.761],[3.559,-9.527],[0,0],[2.211,-5.388]],"o":[[-4.607,5.675],[-6.146,2.181],[-6.823,-2.438],[-3.873,-5.041],[-1.961,-5.633],[-0.673,-2.074],[-3.418,-8.054],[2.391,-3.632],[7.091,-4.519],[0,0],[2.053,0.611],[0,0],[6.766,-3.045],[6.042,2.461],[4.226,7.269],[0,0],[0,0],[-2.542,6.194]],"v":[[26.625,263.759],[9.088,276.927],[-10.477,276.927],[-27.766,263.755],[-34.35,245.857],[-39.92,228.853],[-41.895,222.617],[-38.621,196.593],[-29.625,187.329],[-2.764,182.988],[-0.678,184.077],[3.537,183.327],[5.123,182.613],[23.746,183.97],[38.891,196.367],[42.816,222.402],[40.88,229.024],[34.705,245.369]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":38,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":40,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":49,"s":[{"i":[[0,0],[5.924,-2.615],[6.267,2.766],[3.263,7.561],[2.981,6.909],[0,0],[0,0],[-4.825,8.784],[-3.668,2.709],[-9.176,-4.785],[0,0],[-7.064,3.683],[0,0],[-5.942,-2.295],[-3.35,-6.676],[4.5,-10.429],[0,0],[2.725,-6.315]],"o":[[-3.262,7.56],[-6.266,2.766],[-5.925,-2.615],[0,0],[-2.981,-6.909],[0,0],[-3.988,-9.246],[2.335,-4.251],[7.091,-5.237],[0,0],[7.064,3.683],[0,0],[6.766,-3.528],[6.387,2.466],[4.226,8.423],[0,0],[0,0],[-3.063,7.1]],"v":[[23.515,261.285],[9.088,276.548],[-10.477,276.549],[-24.906,261.285],[-33.85,240.557],[-42.795,219.829],[-48.707,206.127],[-47.871,176.22],[-38.875,165.486],[-13.389,163.498],[-11.803,164.325],[10.412,164.325],[11.998,163.498],[31.496,162.173],[46.641,176.538],[47.316,206.126],[40.88,221.041],[32.705,239.986]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.61,"y":0},"t":57,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":61,"s":[{"i":[[0,0],[5.829,-2.275],[6.166,2.405],[3.21,6.575],[2.933,6.009],[0,0],[0,0],[-4.747,7.639],[-3.609,2.356],[-9.028,-5.782],[0,0],[-6.95,4.451],[0,0],[-5.847,-1.996],[-3.296,-5.806],[4.428,-9.07],[0,0],[2.681,-5.492]],"o":[[-3.21,6.575],[-6.165,2.406],[-5.83,-2.274],[0,0],[-2.933,-6.009],[0,0],[-3.924,-8.041],[2.297,-3.697],[6.977,-4.554],[0,0],[6.95,4.451],[0,0],[6.657,-4.263],[6.284,2.145],[4.158,7.326],[0,0],[0,0],[-3.014,6.174]],"v":[[23.147,263.139],[8.953,276.413],[-10.297,276.414],[-24.493,263.14],[-31.981,245.113],[-39.468,227.086],[-43.871,215.169],[-44.463,189.161],[-35.612,179.825],[-10.537,178.375],[-8.977,179.374],[7.631,179.374],[9.191,178.375],[28.374,176.944],[43.275,189.437],[42.525,215.169],[37.607,228.14],[30.877,244.617]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":67,"s":[{"i":[[0,0],[5.782,-2.283],[6.116,2.414],[3.184,6.6],[2.91,6.031],[0,0],[0,0],[-4.709,7.668],[-3.58,2.365],[-8.956,-2.881],[0,0],[-6.894,2.218],[0,0],[-5.8,-2.003],[-3.269,-5.828],[4.392,-9.104],[0,0],[2.66,-5.513]],"o":[[-3.184,6.599],[-6.116,2.415],[-5.783,-2.283],[0,0],[-2.91,-6.031],[0,0],[-3.893,-8.071],[2.279,-3.711],[6.921,-4.571],[0,0],[6.894,2.218],[0,0],[6.604,-2.124],[6.234,2.153],[4.125,7.353],[0,0],[0,0],[-2.99,6.198]],"v":[[22.966,262.838],[8.886,276.162],[-10.209,276.162],[-24.29,262.838],[-31.064,244.743],[-37.837,226.649],[-41.5,214.688],[-42.792,188.581],[-34.012,179.21],[-9.139,174.179],[-7.591,174.677],[6.267,174.677],[7.814,174.179],[26.844,176.318],[41.625,188.859],[40.176,214.688],[36.003,227.707],[29.98,244.245]],"c":true}]},{"i":{"x":0.48,"y":1},"o":{"x":0.26,"y":1},"t":111,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,1.445],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,1.445],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[22.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-30.85,245.866],[-37.795,227.978],[-42.707,216.152],[-41.871,190.343],[-32.875,181.079],[-7.389,179.363],[-5.803,180.077],[5.412,180.077],[6.998,179.363],[26.496,178.22],[41.641,190.617],[42.316,216.152],[38.88,229.024],[31.705,245.374]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0.167},"t":118,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.902,"y":0},"o":{"x":0.3,"y":0},"t":119,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":129,"s":[{"i":[[0,0],[6.002,-2.085],[6.349,2.205],[3.305,6.027],[3.02,5.508],[0,0],[0,0],[-4.888,7.002],[-3.716,2.159],[-9.296,-3.814],[0,0],[-7.157,2.936],[0,0],[-6.02,-1.829],[-3.393,-5.322],[4.559,-8.314],[0,0],[2.761,-5.034]],"o":[[-3.305,6.027],[-6.349,2.205],[-6.003,-2.085],[0,0],[-3.02,-5.508],[0,0],[-4.041,-7.37],[2.366,-3.389],[7.184,-4.175],[0,0],[7.157,2.936],[0,0],[6.855,-2.813],[6.471,1.966],[4.282,6.715],[0,0],[0,0],[-3.104,5.66]],"v":[[23.828,264.941],[9.213,277.109],[-10.609,277.11],[-25.226,264.942],[-34.288,248.418],[-43.349,231.894],[-49.339,220.97],[-48.492,197.13],[-39.379,188.572],[-13.559,186.988],[-11.952,187.647],[10.554,187.647],[12.161,186.988],[31.914,185.931],[47.257,197.383],[47.941,220.97],[41.421,232.86],[33.139,247.963]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.78,"y":0},"t":144,"s":[{"i":[[0,0],[5.924,-2.439],[6.267,2.579],[3.263,7.051],[2.981,6.443],[0,0],[0,0],[-4.825,8.191],[-3.668,2.526],[-9.176,-4.462],[0,0],[-7.064,3.435],[0,0],[-5.942,-2.14],[-3.35,-6.225],[4.5,-9.725],[0,0],[2.725,-5.889]],"o":[[-3.262,7.05],[-6.266,2.58],[-5.925,-2.439],[0,0],[-2.981,-6.443],[0,0],[-3.988,-8.622],[2.335,-3.964],[7.091,-4.884],[0,0],[7.064,3.435],[0,0],[6.766,-3.29],[6.387,2.3],[4.226,7.855],[0,0],[0,0],[-3.063,6.621]],"v":[[23.515,262.501],[9.088,276.734],[-10.477,276.735],[-24.906,262.501],[-33.85,243.171],[-42.795,223.841],[-48.707,211.063],[-47.871,183.174],[-38.875,173.164],[-13.389,171.31],[-11.803,172.081],[10.412,172.081],[11.998,171.31],[31.496,170.074],[46.641,183.471],[47.316,211.063],[40.88,224.972],[32.705,242.639]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.4,"y":0},"t":146,"s":[{"i":[[0,0],[5.924,-2.439],[6.267,2.579],[3.263,7.051],[2.981,6.443],[0,0],[0,0],[-4.825,8.191],[-3.668,2.526],[-9.176,-4.462],[0,0],[-7.064,3.435],[0,0],[-5.942,-2.14],[-3.35,-6.225],[4.5,-9.725],[0,0],[2.725,-5.889]],"o":[[-3.262,7.05],[-6.266,2.58],[-5.925,-2.439],[0,0],[-2.981,-6.443],[0,0],[-3.988,-8.622],[2.335,-3.964],[7.091,-4.884],[0,0],[7.064,3.435],[0,0],[6.766,-3.29],[6.387,2.3],[4.226,7.855],[0,0],[0,0],[-3.063,6.621]],"v":[[23.515,262.501],[9.088,276.734],[-10.477,276.735],[-24.906,262.501],[-33.85,243.171],[-42.795,223.841],[-48.707,211.063],[-47.871,183.174],[-38.875,173.164],[-13.389,171.31],[-11.803,172.081],[10.412,172.081],[11.998,171.31],[31.496,170.074],[46.641,183.471],[47.316,211.063],[40.88,224.972],[32.705,242.639]],"c":true}]},{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.884},"t":156,"s":[{"i":[[0,0],[6.002,-2.085],[6.349,2.205],[3.305,6.027],[3.02,5.508],[0,0],[0,0],[-4.888,7.002],[-3.716,2.159],[-9.296,-3.814],[0,0],[-7.157,2.936],[0,0],[-6.02,-1.829],[-3.393,-5.322],[4.559,-8.314],[0,0],[2.761,-5.034]],"o":[[-3.305,6.027],[-6.349,2.205],[-6.003,-2.085],[0,0],[-3.02,-5.508],[0,0],[-4.041,-7.37],[2.366,-3.389],[7.184,-4.175],[0,0],[7.157,2.936],[0,0],[6.855,-2.813],[6.471,1.966],[4.282,6.715],[0,0],[0,0],[-3.104,5.66]],"v":[[23.828,264.941],[9.213,277.109],[-10.609,277.11],[-25.226,264.942],[-34.288,248.418],[-43.349,231.894],[-49.339,220.97],[-48.492,197.13],[-39.379,188.572],[-13.559,186.988],[-11.952,187.647],[10.554,187.647],[12.161,186.988],[31.914,185.931],[47.257,197.383],[47.941,220.97],[41.421,232.86],[33.139,247.963]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":175,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"i":{"x":0.6,"y":1},"o":{"x":0.8,"y":0},"t":195,"s":[{"i":[[0,0],[5.924,-2.257],[6.267,2.387],[3.263,6.525],[2.981,5.963],[0,0],[0,0],[-4.825,7.58],[-3.668,2.338],[-9.176,-4.129],[0,0],[-7.064,3.179],[0,0],[-5.942,-1.98],[-3.35,-5.761],[4.5,-9],[0,0],[2.725,-5.45]],"o":[[-3.262,6.524],[-6.266,2.387],[-5.925,-2.257],[0,0],[-2.981,-5.963],[0,0],[-3.988,-7.979],[2.335,-3.669],[7.091,-4.519],[0,0],[7.064,3.179],[0,0],[6.766,-3.045],[6.387,2.129],[4.226,7.269],[0,0],[0,0],[-3.063,6.127]],"v":[[23.515,263.755],[9.088,276.927],[-10.477,276.927],[-24.906,263.755],[-33.85,245.866],[-42.795,227.978],[-48.707,216.152],[-47.871,190.343],[-38.875,181.079],[-13.389,179.363],[-11.803,180.077],[10.412,180.077],[11.998,179.363],[31.496,178.22],[46.641,190.617],[47.316,216.152],[40.88,229.024],[32.705,245.374]],"c":true}]},{"t":200,"s":[{"i":[[0,0],[4.982,-1.843],[5.269,1.949],[2.743,5.327],[2.507,4.868],[0,0],[0,0],[-4.057,6.188],[-3.084,1.909],[-7.716,-3.371],[0,0],[-5.94,2.595],[0,0],[-4.997,-1.617],[-2.817,-4.703],[3.784,-7.348],[0,0],[2.291,-4.449]],"o":[[-2.743,5.326],[-5.269,1.949],[-4.982,-1.842],[0,0],[-2.507,-4.868],[0,0],[-3.354,-6.514],[1.963,-2.995],[5.963,-3.69],[0,0],[5.94,2.595],[0,0],[5.69,-2.486],[5.371,1.738],[3.554,5.935],[0,0],[0,0],[-2.576,5.002]],"v":[[21.328,266.623],[7.572,277.365],[-8.88,277.366],[-21.013,266.612],[-30.158,252.046],[-38.929,237.463],[-42.276,232.155],[-38.901,208.3],[-31.337,200.737],[-7.657,199.329],[-6.324,199.912],[6.078,199.877],[7.412,199.294],[26.437,198.157],[39.172,208.278],[42.466,230.78],[38.179,240.068],[31.18,251.666]],"c":true}],"h":1},{"i":{"x":0.8,"y":1},"o":{"x":0.167,"y":0.167},"t":221,"s":[{"i":[[0,0],[-6.469,2.54],[-6.843,-2.686],[-3.562,-7.344],[-2.238,-6.985],[0,0],[0,0],[6.26,-8],[4.298,-2.248],[9.409,5.544],[0,0],[2.81,-1.732],[0,0],[6.751,1.517],[4.533,6.044],[-3.466,10.58],[0,0],[-1.94,6.445]],"o":[[3.562,-7.343],[6.843,-2.687],[6.47,2.54],[0,0],[2.25,7.021],[0,0],[3.257,9.331],[-3.029,3.872],[-8.309,4.346],[0,0],[-2.38,-1.461],[0,0],[-6.856,4.193],[-7.256,-1.631],[-5.72,-7.626],[0,0],[0,0],[2.154,-7.155]],"v":[[-25.972,255.773],[-10.844,240.983],[10.52,240.983],[26.276,255.808],[31.363,274.998],[37.793,295.9],[41.622,309.746],[42.615,338.568],[31.6,348.034],[3.818,347.339],[2.192,346.381],[-2.497,346.652],[-4.104,347.635],[-23.931,350.481],[-42.288,338.404],[-42.272,310.024],[-38.575,296.317],[-32.279,277.471]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":225,"s":[{"i":[[0,0],[-6.469,2.54],[-6.843,-2.686],[-3.562,-7.344],[-2.238,-6.985],[0,0],[0,0],[6.26,-8],[4.298,-2.248],[9.409,5.544],[0,0],[2.81,-1.732],[0,0],[6.751,1.517],[4.533,6.044],[-3.466,10.58],[0,0],[-1.94,6.445]],"o":[[3.562,-7.343],[6.843,-2.687],[6.47,2.54],[0,0],[2.25,7.021],[0,0],[3.257,9.331],[-3.029,3.872],[-8.309,4.346],[0,0],[-2.38,-1.461],[0,0],[-6.856,4.193],[-7.256,-1.631],[-5.72,-7.626],[0,0],[0,0],[2.154,-7.155]],"v":[[-25.972,255.773],[-10.844,240.983],[10.52,240.983],[26.276,255.808],[31.363,274.998],[37.793,295.9],[41.622,309.746],[42.615,338.568],[31.6,348.034],[3.818,347.339],[2.192,346.381],[-2.497,346.652],[-4.104,347.635],[-23.931,350.481],[-42.288,338.404],[-42.272,310.024],[-38.575,296.317],[-32.279,277.471]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":230,"s":[{"i":[[0,0],[-6.469,2.537],[-6.843,-2.683],[-3.562,-7.334],[-3.256,-6.702],[0,0],[0,0],[5.268,-8.52],[4.005,-2.628],[10.02,4.641],[0,0],[7.713,-3.573],[0,0],[6.489,2.226],[3.658,6.475],[-4.914,10.116],[0,0],[-2.976,6.126]],"o":[[3.562,-7.333],[6.843,-2.683],[6.47,2.537],[0,0],[3.256,6.702],[0,0],[4.355,8.968],[-2.55,4.123],[-7.743,5.08],[0,0],[-7.714,-3.573],[0,0],[-7.388,3.422],[-6.974,-2.392],[-4.615,-8.17],[0,0],[0,0],[3.345,-6.886]],"v":[[-26.597,256.303],[-10.844,241.499],[10.52,241.498],[26.276,256.303],[36.042,276.409],[45.809,296.515],[52.265,309.806],[51.352,338.814],[41.529,349.227],[13.7,351.155],[11.968,350.353],[-12.29,350.353],[-14.021,351.155],[-35.312,352.44],[-51.849,338.506],[-52.586,309.806],[-45.559,295.339],[-36.632,276.963]],"c":true}]},{"i":{"x":0.8,"y":1},"o":{"x":0.21,"y":0},"t":235,"s":[{"i":[[0,0],[-6.469,2.527],[-6.843,-2.672],[-3.562,-7.305],[-2.238,-6.948],[0,0],[0,0],[6.26,-7.958],[4.298,-2.236],[9.409,5.515],[0,0],[2.81,-1.723],[0,0],[6.751,1.509],[4.533,6.012],[-3.466,10.525],[0,0],[-1.94,6.411]],"o":[[3.562,-7.305],[6.843,-2.673],[6.47,2.527],[0,0],[2.25,6.984],[0,0],[3.257,9.283],[-3.029,3.851],[-8.309,4.323],[0,0],[-2.38,-1.454],[0,0],[-6.856,4.171],[-7.256,-1.622],[-5.72,-7.586],[0,0],[0,0],[2.154,-7.118]],"v":[[-25.972,256.282],[-10.844,241.57],[10.52,241.569],[26.276,256.317],[31.363,275.406],[37.793,296.199],[41.622,309.972],[42.615,338.644],[31.6,348.06],[3.818,347.368],[2.192,346.415],[-2.497,346.685],[-4.104,347.662],[-23.931,350.493],[-42.288,338.48],[-42.272,310.249],[-38.575,296.613],[-32.279,277.866]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.4,"y":0},"t":240,"s":[{"i":[[0,0],[-6.469,2.537],[-6.843,-2.683],[-3.562,-7.334],[-3.256,-6.702],[0,0],[0,0],[5.268,-8.52],[4.005,-2.628],[10.02,4.641],[0,0],[7.713,-3.573],[0,0],[6.489,2.226],[3.658,6.475],[-4.914,10.116],[0,0],[-2.976,6.126]],"o":[[3.562,-7.333],[6.843,-2.683],[6.47,2.537],[0,0],[3.256,6.702],[0,0],[4.355,8.968],[-2.55,4.123],[-7.743,5.08],[0,0],[-7.714,-3.573],[0,0],[-7.388,3.422],[-6.974,-2.392],[-4.615,-8.17],[0,0],[0,0],[3.345,-6.886]],"v":[[-26.597,256.303],[-10.844,241.499],[10.52,241.498],[26.276,256.303],[36.042,276.409],[45.809,296.515],[52.265,309.806],[51.352,338.814],[41.529,349.227],[13.7,351.155],[11.968,350.353],[-12.29,350.353],[-14.021,351.155],[-35.312,352.44],[-51.849,338.506],[-52.586,309.806],[-45.559,295.339],[-36.632,276.963]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.17,"y":0},"t":250,"s":[{"i":[[0,0],[-6.469,2.528],[-6.843,-2.674],[-3.562,-7.309],[-2.238,-6.951],[0,0],[0,0],[6.26,-7.962],[4.298,-2.237],[9.409,5.517],[0,0],[2.81,-1.724],[0,0],[6.751,1.51],[4.533,6.015],[-3.466,10.53],[0,0],[-1.94,6.414]],"o":[[3.562,-7.308],[6.843,-2.674],[6.47,2.528],[0,0],[2.25,6.988],[0,0],[3.257,9.287],[-3.029,3.853],[-8.309,4.325],[0,0],[-2.38,-1.454],[0,0],[-6.856,4.173],[-7.256,-1.623],[-5.72,-7.59],[0,0],[0,0],[2.154,-7.121]],"v":[[-25.972,256.238],[-10.844,241.519],[10.52,241.518],[26.276,256.273],[31.363,275.37],[37.793,296.172],[41.622,309.952],[42.615,338.637],[31.6,348.057],[3.818,347.366],[2.192,346.412],[-2.497,346.682],[-4.104,347.66],[-23.931,350.492],[-42.288,338.473],[-42.272,310.229],[-38.575,296.587],[-32.279,277.831]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.5,"y":0},"t":296,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[32.971,273.182],[41.915,291.071],[47.827,302.896],[46.991,328.705],[37.996,337.969],[12.509,339.685],[10.924,338.971],[-11.292,338.971],[-12.878,339.685],[-32.376,340.828],[-47.521,328.431],[-48.196,302.896],[-41.76,290.025],[-33.585,273.675]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.5,"y":0},"t":313,"s":[{"i":[[0,0],[-5.924,2.351],[-6.267,-2.486],[-3.263,-6.797],[-2.981,-6.211],[0,0],[0,0],[4.825,-7.896],[3.668,-2.435],[9.176,4.301],[0,0],[7.064,-3.311],[0,0],[5.942,2.063],[3.35,6.001],[-4.5,9.375],[0,0],[-2.725,5.677]],"o":[[3.262,-6.796],[6.266,-2.487],[5.925,2.351],[0,0],[2.981,6.211],[0,0],[3.988,8.311],[-2.335,3.821],[-7.091,4.707],[0,0],[-7.064,-3.311],[0,0],[-6.766,3.172],[-6.387,-2.217],[-4.226,-7.572],[0,0],[0,0],[3.063,-6.382]],"v":[[-24.394,255.941],[-9.968,242.221],[9.597,242.22],[24.026,255.941],[32.971,274.574],[41.915,294.249],[47.827,306.566],[46.991,333.45],[37.996,343.1],[12.509,344.887],[10.924,344.143],[-11.292,344.143],[-12.878,344.887],[-32.376,346.078],[-47.521,333.164],[-48.196,306.566],[-41.76,293.159],[-33.585,275.087]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.5,"y":0},"t":318,"s":[{"i":[[0,0],[-5.924,2.351],[-6.267,-2.486],[-3.263,-6.797],[-2.981,-6.211],[0,0],[0,0],[4.825,-7.896],[3.668,-2.435],[9.176,4.301],[0,0],[7.064,-3.311],[0,0],[5.942,2.063],[3.35,6.001],[-4.5,9.375],[0,0],[-2.725,5.677]],"o":[[3.262,-6.796],[6.266,-2.487],[5.925,2.351],[0,0],[2.981,6.211],[0,0],[3.988,8.311],[-2.335,3.821],[-7.091,4.707],[0,0],[-7.064,-3.311],[0,0],[-6.766,3.172],[-6.387,-2.217],[-4.226,-7.572],[0,0],[0,0],[3.063,-6.382]],"v":[[-24.394,255.941],[-9.968,242.221],[9.597,242.22],[24.026,255.941],[30.971,274.574],[38.915,294.249],[43.827,306.566],[42.991,333.45],[33.996,343.1],[8.509,344.887],[6.924,344.143],[-7.292,344.143],[-8.878,344.887],[-28.376,346.078],[-43.521,333.164],[-44.196,306.566],[-38.76,293.159],[-31.585,275.087]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.5,"y":0},"t":323,"s":[{"i":[[0,0],[-6.37,2.351],[-6.738,-2.486],[-3.508,-6.797],[-3.206,-6.211],[0,0],[0,0],[5.188,-7.896],[3.944,-2.435],[9.867,4.301],[0,0],[7.596,-3.311],[0,0],[6.39,2.063],[3.602,6.001],[-4.839,9.375],[0,0],[-2.93,5.677]],"o":[[3.508,-6.796],[6.738,-2.487],[6.371,2.351],[0,0],[3.206,6.211],[0,0],[4.289,8.311],[-2.511,3.821],[-7.625,4.707],[0,0],[-7.596,-3.311],[0,0],[-7.276,3.172],[-6.868,-2.217],[-4.545,-7.572],[0,0],[0,0],[3.294,-6.382]],"v":[[-26.198,255.941],[-10.685,242.221],[10.353,242.22],[25.868,255.941],[35.486,274.574],[45.103,294.249],[51.461,306.566],[50.562,333.45],[40.889,343.1],[13.484,344.887],[11.779,344.143],[-12.109,344.143],[-13.814,344.887],[-34.78,346.078],[-51.065,333.164],[-51.791,306.566],[-44.871,293.159],[-36.08,275.087]],"c":true}]},{"i":{"x":0.58,"y":1},"o":{"x":0.42,"y":0},"t":328,"s":[{"i":[[0,0],[-5.924,2.351],[-6.267,-2.486],[-3.263,-6.797],[-2.981,-6.211],[0,0],[0,0],[4.825,-7.896],[3.668,-2.435],[9.176,4.301],[0,0],[7.064,-3.311],[0,0],[5.942,2.063],[3.35,6.001],[-4.5,9.375],[0,0],[-2.725,5.677]],"o":[[3.262,-6.796],[6.266,-2.487],[5.925,2.351],[0,0],[2.981,6.211],[0,0],[3.988,8.311],[-2.335,3.821],[-7.091,4.707],[0,0],[-7.064,-3.311],[0,0],[-6.766,3.172],[-6.387,-2.217],[-4.226,-7.572],[0,0],[0,0],[3.063,-6.382]],"v":[[-24.394,255.941],[-9.968,242.221],[9.597,242.22],[24.026,255.941],[30.971,274.574],[38.915,294.249],[43.827,306.566],[42.991,333.45],[33.996,343.1],[8.509,344.887],[6.924,344.143],[-7.292,344.143],[-8.878,344.887],[-28.376,346.078],[-43.521,333.164],[-44.196,306.566],[-38.76,293.159],[-31.585,275.087]],"c":true}]},{"i":{"x":0.52,"y":0.96},"o":{"x":0.48,"y":0.04},"t":343,"s":[{"i":[[0,0],[-5.924,2.351],[-6.267,-2.486],[-3.263,-6.797],[-2.981,-6.211],[0,0],[0,0],[4.825,-7.896],[3.668,-2.435],[9.176,4.301],[0,0],[7.064,-3.311],[0,0],[5.942,2.063],[3.35,6.001],[-4.5,9.375],[0,0],[-2.725,5.677]],"o":[[3.262,-6.796],[6.266,-2.487],[5.925,2.351],[0,0],[2.981,6.211],[0,0],[3.988,8.311],[-2.335,3.821],[-7.091,4.707],[0,0],[-7.064,-3.311],[0,0],[-6.766,3.172],[-6.387,-2.217],[-4.226,-7.572],[0,0],[0,0],[3.063,-6.382]],"v":[[-24.394,255.941],[-9.968,242.221],[9.597,242.22],[24.026,255.941],[32.971,274.574],[41.915,294.249],[47.827,306.566],[46.991,333.45],[37.996,343.1],[12.509,344.887],[10.924,344.143],[-11.292,344.143],[-12.878,344.887],[-32.376,346.078],[-47.521,333.164],[-48.196,306.566],[-41.76,293.159],[-33.585,275.087]],"c":true}]},{"i":{"x":0.83,"y":1},"o":{"x":0.5,"y":0},"t":370,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[32.971,273.182],[41.915,291.071],[47.827,302.896],[46.991,328.705],[37.996,337.969],[12.509,339.685],[10.924,338.971],[-11.292,338.971],[-12.878,339.685],[-32.376,340.828],[-47.521,328.431],[-48.196,302.896],[-41.76,290.025],[-33.585,273.675]],"c":true}]},{"i":{"x":0.59,"y":1},"o":{"x":0.5,"y":0},"t":389,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[32.971,273.182],[41.915,291.071],[47.827,302.896],[46.991,328.705],[37.996,337.969],[12.509,339.685],[10.924,338.971],[-11.292,338.971],[-12.878,339.685],[-32.376,340.828],[-47.521,328.431],[-48.196,302.896],[-41.76,290.025],[-33.585,273.675]],"c":true}]},{"t":406,"s":[{"i":[[0,0],[-5.924,2.257],[-6.267,-2.387],[-3.263,-6.525],[-2.981,-5.963],[0,0],[0,0],[4.825,-7.58],[3.668,-2.338],[9.176,4.129],[0,0],[7.064,-3.179],[0,0],[5.942,1.98],[3.35,5.761],[-4.5,9],[0,0],[-2.725,5.45]],"o":[[3.262,-6.524],[6.266,-2.387],[5.925,2.257],[0,0],[2.981,5.963],[0,0],[3.988,7.979],[-2.335,3.669],[-7.091,4.519],[0,0],[-7.064,-3.179],[0,0],[-6.766,3.045],[-6.387,-2.129],[-4.226,-7.269],[0,0],[0,0],[3.063,-6.127]],"v":[[-24.394,255.294],[-9.968,242.121],[9.597,242.121],[24.026,255.294],[30.971,273.182],[38.915,291.071],[43.202,302.895],[42.366,328.704],[33.371,337.968],[7.884,339.684],[6.299,338.97],[-6.167,338.97],[-7.753,339.684],[-27.251,340.827],[-42.396,328.43],[-43.071,302.895],[-38.76,290.025],[-31.585,273.675]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"animated arrow","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":27,"op":408,"st":-145,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".surfaceOverview","cl":"surfaceOverview","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,400,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[1280,800],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.875,0.953,0.686,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.875,0.953,0.686,1],"t":466,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":467,"st":-145,"ct":1,"bm":0}]},{"id":"comp_3","nm":"Part03_Demonstration_Tablet_Overview_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"SCENE REPO","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1074,364,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Size","np":3,"mn":"ADBE Point Control","ix":1,"en":1,"ef":[{"ty":3,"nm":"Point","mn":"ADBE Point Control-0001","ix":1,"v":{"a":0,"k":[100,100],"ix":1}}]}],"ip":0,"op":446,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Reset to Center","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":292,"s":[-318.401]},{"t":362,"s":[-584.401]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.66],"y":[0]},"t":292,"s":[358]},{"t":372,"s":[249]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":426,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":3,"nm":"OVERSHOOT CHARACTER","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.34],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":227,"s":[-32.599]},{"t":339,"s":[107.401]}],"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":426,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".secondaryOverview","cl":"secondaryOverview","parent":4,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-609,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-599,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":405,"s":[100]},{"t":411,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":130,"s":[-83]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":197,"s":[-338]},{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":227,"s":[-338]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":237.666,"s":[-185.6]},{"t":291,"s":[43]}],"ix":3},"y":{"k":[{"s":[54],"t":53,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.591],"t":54,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.277],"t":55,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[49.909],"t":56,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[46.303],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[41.234],"t":58,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[34.431],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.579],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.331],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.377],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-16.447],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-35.962],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-57.496],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-79.956],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-102.169],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.245],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-142.703],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-160.389],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-176.346],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-190.704],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-203.623],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-215.26],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-225.762],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-235.255],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-243.852],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-251.647],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-258.724],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-265.153],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-270.995],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-276.303],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-281.125],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-285.499],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-289.462],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-293.046],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-296.277],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-299.181],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-301.781],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-304.096],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-306.143],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-307.941],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-309.502],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-310.841],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-311.97],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-312.9],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.641],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.203],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.595],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.356],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.911],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.321],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-312.575],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-311.661],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-310.567],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-309.279],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-307.781],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-306.056],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-304.083],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-301.841],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-299.303],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-296.441],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-293.22],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-289.602],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-285.543],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-280.992],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-275.89],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-270.171],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-263.759],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-256.573],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-248.528],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-239.543],"t":165,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-229.563],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-218.577],"t":167,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-206.661],"t":168,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-194.011],"t":169,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-167.889],"t":171,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-155.239],"t":172,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-143.323],"t":173,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-132.337],"t":174,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-122.357],"t":175,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-113.372],"t":176,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-105.327],"t":177,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-98.141],"t":178,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-91.729],"t":179,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-86.01],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-80.908],"t":181,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.357],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-72.298],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-68.68],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-65.459],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-62.597],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-60.059],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-57.817],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.844],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-54.119],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.621],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.333],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-50.239],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.325],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.579],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.989],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.544],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.237],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.058],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.958],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.904],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.827],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.727],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.602],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.452],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.276],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.072],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.84],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.578],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.285],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.96],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.601],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.207],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-43.777],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-43.308],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-42.799],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-42.248],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-41.652],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-41.01],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-40.318],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-39.575],"t":418,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-38.777],"t":419,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-37.921],"t":420,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-37.003],"t":421,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-36.021],"t":422,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-34.969],"t":423,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-33.843],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-32.639],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-31.35],"t":426,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-29.972],"t":427,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-28.497],"t":428,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-26.919],"t":429,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-25.229],"t":430,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-23.42],"t":431,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.483],"t":432,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-19.407],"t":433,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-17.183],"t":434,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-14.8],"t":435,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-12.248],"t":436,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-9.519],"t":437,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-6.604],"t":438,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.5],"t":439,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.211],"t":440,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.252],"t":441,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[6.866],"t":442,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[10.59],"t":443,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.372],"t":444,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.144],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue Y Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":0,"k":0,"ix":1}}]},{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":2,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":1,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[640,775.591],"t":54,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,774.277],"t":55,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,771.909],"t":56,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,768.303],"t":57,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,763.234],"t":58,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,756.431],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,747.579],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,736.331],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,722.377],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,705.553],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,686.038],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,664.504],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,642.044],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,619.831],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,598.755],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,579.297],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,561.611],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,545.654],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,531.296],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,518.377],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,506.74],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,496.238],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,486.745],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,478.148],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,470.353],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,463.276],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,456.847],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,451.005],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,445.697],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,440.875],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,436.501],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,432.538],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,428.954],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,425.723],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,422.819],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,420.219],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,417.904],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,415.857],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,414.059],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,412.498],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,411.159],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,410.03],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,409.1],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,408.359],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,407.797],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,407.405],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[639.565,407.1],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[639.015,407.1],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[638.237,407.1],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[637.228,407.1],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[635.984,407.1],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[634.501,407.1],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[632.776,407.1],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[630.806,407.1],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[628.589,407.1],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[626.122,407.158],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[623.405,407.337],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[620.435,407.644],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[617.214,408.089],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[613.741,408.679],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[610.018,409.425],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[606.048,410.339],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[601.834,411.433],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[597.381,412.721],"t":149,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[592.695,414.219],"t":150,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[587.783,415.944],"t":151,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[582.654,417.917],"t":152,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[577.317,420.159],"t":153,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[571.785,422.697],"t":154,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[566.07,425.559],"t":155,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[560.187,428.78],"t":156,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[554.151,432.398],"t":157,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[547.98,436.457],"t":158,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[541.693,441.008],"t":159,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[535.308,446.11],"t":160,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[528.847,451.829],"t":161,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[522.33,458.241],"t":162,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[515.781,465.427],"t":163,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[509.219,473.472],"t":164,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[502.67,482.457],"t":165,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[496.153,492.437],"t":166,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[489.692,503.423],"t":167,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[483.307,515.339],"t":168,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[477.02,527.989],"t":169,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[470.849,541.05],"t":170,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[464.813,554.111],"t":171,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[458.93,566.761],"t":172,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[453.215,578.677],"t":173,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[447.683,589.663],"t":174,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[442.346,599.643],"t":175,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[437.217,608.628],"t":176,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[432.305,616.673],"t":177,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[427.619,623.859],"t":178,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[423.166,630.271],"t":179,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[418.952,635.99],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[414.982,641.092],"t":181,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[411.259,645.643],"t":182,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[407.786,649.702],"t":183,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[404.565,653.32],"t":184,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[401.595,656.541],"t":185,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[398.878,659.403],"t":186,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[396.411,661.941],"t":187,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[394.194,664.183],"t":188,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[392.224,666.156],"t":189,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[390.499,667.881],"t":190,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[389.016,669.379],"t":191,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[387.772,670.667],"t":192,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[386.763,671.761],"t":193,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[385.985,672.675],"t":194,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[385.435,673.421],"t":195,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[385.108,674.011],"t":196,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[385,674.456],"t":197,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[385,675],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[385.765,675],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[388.09,675],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[392.085,675],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[397.945,675],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[405.96,675],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[416.557,675],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[430.38,675],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[448.467,675],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[472.664,675],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[506.923,675],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[560.017,675],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[606.525,675],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[636.85,675],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[657.995,675],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[673.974,675],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[686.767,675],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[697.438,675],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[706.614,675],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[714.692,675],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[721.939,675],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[728.542,675],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[734.639,675],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[740.332,675],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[745.699,675],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[750.803,675],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[755.691,675],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[760.402,675],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[764.968,675],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[769.413,675],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[773.757,675],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[778.015,675],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[782.199,675],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[786.316,675],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[790.373,675],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[794.373,675],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[798.316,675],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[802.203,675],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[806.031,675],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[809.798,675],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[813.5,675],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[817.133,675],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[820.694,675],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[824.177,675],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[827.579,675],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[830.896,675],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[834.125,675],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[837.263,675],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[840.308,675],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[843.258,675],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[846.112,675],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[848.869,675],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[851.529,675],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[854.093,675],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[856.561,675],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[858.933,675],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[861.212,675],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[863.398,675],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[865.494,675],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[867.5,675],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[869.419,675],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[871.253,675],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[873.004,675],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[874.674,675],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[876.265,675],"t":291,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[877.789,675],"t":292,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[879.155,674.987],"t":293,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[880.257,674.946],"t":294,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[881.093,674.877],"t":295,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[881.958,674.648],"t":297,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[881.206,674.054],"t":300,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[880.401,673.782],"t":301,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[879.317,673.469],"t":302,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[877.952,673.113],"t":303,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[876.307,672.713],"t":304,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[874.382,672.264],"t":305,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[872.176,671.764],"t":306,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[869.692,671.211],"t":307,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[866.931,670.599],"t":308,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[863.896,669.926],"t":309,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[860.59,669.186],"t":310,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[857.019,668.376],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[853.186,667.489],"t":312,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[849.099,666.521],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[844.766,665.464],"t":314,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[840.194,664.312],"t":315,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[835.396,663.056],"t":316,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[830.38,661.687],"t":317,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[825.161,660.196],"t":318,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[819.752,658.571],"t":319,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[814.167,656.801],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[808.424,654.873],"t":321,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[802.539,652.772],"t":322,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[796.531,650.484],"t":323,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[790.419,647.995],"t":324,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[784.223,645.291],"t":325,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[777.963,642.361],"t":326,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[771.659,639.199],"t":327,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[765.333,635.809],"t":328,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[759.007,632.205],"t":329,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[752.699,628.418],"t":330,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[746.431,624.495],"t":331,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[740.223,620.5],"t":332,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[734.093,616.505],"t":333,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[728.06,612.582],"t":334,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[722.14,608.795],"t":335,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[716.35,605.191],"t":336,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[710.704,601.801],"t":337,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[705.216,598.639],"t":338,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[699.898,595.709],"t":339,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[694.769,593.005],"t":340,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[689.847,590.516],"t":341,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[685.141,588.228],"t":342,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[680.656,586.127],"t":343,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[676.399,584.199],"t":344,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[672.374,582.429],"t":345,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[668.584,580.804],"t":346,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[665.033,579.313],"t":347,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[661.722,577.944],"t":348,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[658.651,576.688],"t":349,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[655.821,575.536],"t":350,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[653.231,574.479],"t":351,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[650.881,573.511],"t":352,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[648.768,572.624],"t":353,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[646.89,571.814],"t":354,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[645.246,571.074],"t":355,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[643.832,570.401],"t":356,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[642.646,569.789],"t":357,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[641.683,569.236],"t":358,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640.941,568.736],"t":359,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640.416,568.287],"t":360,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640.103,567.887],"t":361,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,567.531],"t":362,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,567.218],"t":363,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,566.712],"t":365,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,566.222],"t":368,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,566.724],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,567.16],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,567.715],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,568.04],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,568.399],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,568.793],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,569.223],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,569.692],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,570.201],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,570.752],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,571.348],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,571.99],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,572.682],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,573.425],"t":418,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,574.223],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,575.079],"t":420,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,575.997],"t":421,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,576.979],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,578.031],"t":423,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,579.157],"t":424,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,580.361],"t":425,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,581.65],"t":426,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,583.028],"t":427,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,584.503],"t":428,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,586.081],"t":429,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,587.771],"t":430,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,589.58],"t":431,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,591.517],"t":432,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,593.593],"t":433,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,595.817],"t":434,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,598.2],"t":435,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,600.752],"t":436,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,603.481],"t":437,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,606.396],"t":438,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,609.5],"t":439,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,612.789],"t":440,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,616.252],"t":441,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,619.866],"t":442,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,623.59],"t":443,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,627.372],"t":444,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,631.144],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.42,"y":0},"t":24,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,23.5],[21.75,-21.75],[21.75,-66.5]],"c":false}]},{"i":{"x":0.65,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.35,"y":0},"t":53,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.35,"y":0},"t":70,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":140,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":197,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":227,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":244,"s":[{"i":[[0,0],[-20.373,0],[-4.174,-10]],"o":[[4.292,-10],[20.228,0],[0,0]],"v":[[-11.25,18.5],[22,-21.5],[54.75,18.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.42,"y":0},"t":291,"s":[{"i":[[0,0],[-17.75,0],[-10.841,0]],"o":[[11.833,0],[17.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":432,"s":[{"i":[[0,0],[0,17.75],[0,10.841]],"o":[[0,-11.833],[0,-17.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"t":482,"s":[{"i":[[0,0],[0,17.75],[0,10.841]],"o":[[0,-11.833],[0,-17.583],[0,0]],"v":[[21.75,44.5],[21.75,-21.75],[21.75,-88.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":111,"s":[27]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":130,"s":[58]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":197,"s":[58]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":218,"s":[40]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":247,"s":[40]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[54]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":368,"s":[54]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":388,"s":[40]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":390,"s":[40]},{"t":405,"s":[52]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":127,"s":[49.5]},{"i":{"x":[0.32],"y":[1]},"o":{"x":[0.82],"y":[0]},"t":197,"s":[49.5]},{"t":222,"s":[30],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":247,"s":[30]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[49.75]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":432,"s":[49.75]},{"t":482,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":127,"s":[50.5]},{"i":{"x":[0.32],"y":[1]},"o":{"x":[0.82],"y":[0]},"t":197,"s":[50.5]},{"t":222,"s":[70],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":247,"s":[70]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[50.25]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":432,"s":[50.25]},{"t":482,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-465,"s":[0]},{"t":-447,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":222,"s":[{"i":[[3.179,6.167],[0,-15.352],[-2.581,5.008]],"o":[[-2.881,-5.59],[0,13.869],[3.179,-6.167]],"v":[[-10.45,-10.166],[10.648,-0.036],[-10.45,9.228]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":237,"s":[{"i":[[3.179,8.221],[0,-20.465],[-2.581,6.675]],"o":[[-2.881,-7.451],[0,18.488],[3.179,-8.221]],"v":[[-25.45,-13.344],[-4.352,0.16],[-25.45,12.509]],"c":true}]},{"t":263,"s":[{"i":[[3.179,6.167],[0,-15.352],[-2.581,5.008]],"o":[[-2.881,-5.59],[0,13.869],[3.179,-6.167]],"v":[[-11.7,-10.166],[9.398,-0.036],[-11.7,9.228]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.996,0.714,0.557,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.996,0.714,0.557,1],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":1,"k":[{"t":212,"s":[0],"h":1},{"t":222,"s":[100],"h":1},{"t":247,"s":[0],"h":1}],"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":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":446,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"App 3 Matte","parent":13,"td":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":245,"s":[50]},{"i":{"x":[0.833],"y":[0.619]},"o":{"x":[0.167],"y":[0]},"t":329,"s":[100]},{"i":{"x":[0.82],"y":[0]},"o":{"x":[0.78],"y":[0]},"t":409,"s":[95]},{"t":434,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":9,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[220]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":393,"s":[296.8]},{"t":418,"s":[412]}],"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[220]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":393,"s":[488.8]},{"t":418,"s":[892]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[60]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":393,"s":[43.2]},{"t":418,"s":[18]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"k":[{"s":[60],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"k":[{"s":[60],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"k":[{"s":[60],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-33.114,0],[0,0],[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114]],"o":[[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114],[0,0],[-33.114,0],[0,0]],"v":[[-110,-50],[-50,-110],[50,-110],[110,-50],[110,50],[50,110],[-50,110],[-110,50]],"c":true}],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-32.906,0],[0,0],[0,-32.906],[0,0],[32.906,0],[0,0],[0,32.906]],"o":[[0,-32.906],[0,0],[32.906,0],[0,0],[0,32.906],[0,0],[-32.906,0],[0,0]],"v":[[-110.86,-53.387],[-51.236,-113.011],[51.236,-113.011],[110.86,-53.387],[110.86,53.387],[51.236,113.011],[-51.236,113.011],[-110.86,53.387]],"c":true}],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-32.237,0],[0,0],[0,-32.237],[0,0],[32.237,0],[0,0],[0,32.237]],"o":[[0,-32.237],[0,0],[32.237,0],[0,0],[0,32.237],[0,0],[-32.237,0],[0,0]],"v":[[-113.631,-64.296],[-55.219,-122.707],[55.219,-122.707],[113.631,-64.296],[113.631,64.296],[55.219,122.707],[-55.219,122.707],[-113.631,64.296]],"c":true}],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-30.947,0],[0,0],[0,-30.947],[0,0],[30.947,0],[0,0],[0,30.947]],"o":[[0,-30.947],[0,0],[30.947,0],[0,0],[0,30.947],[0,0],[-30.947,0],[0,0]],"v":[[-118.974,-85.335],[-62.9,-141.409],[62.9,-141.409],[118.974,-85.335],[118.974,85.335],[62.9,141.409],[-62.9,141.409],[-118.974,85.335]],"c":true}],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-28.64,0],[0,0],[0,-28.64],[0,0],[28.64,0],[0,0],[0,28.64]],"o":[[0,-28.64],[0,0],[28.64,0],[0,0],[0,28.64],[0,0],[-28.64,0],[0,0]],"v":[[-128.53,-122.961],[-76.636,-174.854],[76.636,-174.854],[128.53,-122.961],[128.53,122.961],[76.636,174.854],[-76.636,174.854],[-128.53,122.961]],"c":true}],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-23.842,0],[0,0],[0,-23.842],[0,0],[23.842,0],[0,0],[0,23.842]],"o":[[0,-23.842],[0,0],[23.842,0],[0,0],[0,23.842],[0,0],[-23.842,0],[0,0]],"v":[[-148.4,-201.2],[-105.2,-244.4],[105.2,-244.4],[148.4,-201.2],[148.4,201.2],[105.2,244.4],[-105.2,244.4],[-148.4,201.2]],"c":true}],"t":393,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-18.379,0],[0,0],[0,-18.379],[0,0],[18.379,0],[0,0],[0,18.379]],"o":[[0,-18.379],[0,0],[18.379,0],[0,0],[0,18.379],[0,0],[-18.379,0],[0,0]],"v":[[-171.027,-290.294],[-137.727,-323.595],[137.727,-323.595],[171.027,-290.294],[171.027,290.294],[137.727,323.595],[-137.727,323.595],[-171.027,290.294]],"c":true}],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-15.973,0],[0,0],[0,-15.973],[0,0],[15.973,0],[0,0],[0,15.973]],"o":[[0,-15.973],[0,0],[15.973,0],[0,0],[0,15.973],[0,0],[-15.973,0],[0,0]],"v":[[-180.988,-329.516],[-152.046,-358.459],[152.046,-358.459],[180.988,-329.516],[180.988,329.516],[152.046,358.459],[-152.046,358.459],[-180.988,329.516]],"c":true}],"t":395,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-14.579,0],[0,0],[0,-14.579],[0,0],[14.579,0],[0,0],[0,14.579]],"o":[[0,-14.579],[0,0],[14.579,0],[0,0],[0,14.579],[0,0],[-14.579,0],[0,0]],"v":[[-186.762,-352.25],[-160.345,-378.667],[160.345,-378.667],[186.762,-352.25],[186.762,352.25],[160.345,378.667],[-160.345,378.667],[-186.762,352.25]],"c":true}],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-13.632,0],[0,0],[0,-13.632],[0,0],[13.632,0],[0,0],[0,13.632]],"o":[[0,-13.632],[0,0],[13.632,0],[0,0],[0,13.632],[0,0],[-13.632,0],[0,0]],"v":[[-190.685,-367.697],[-165.985,-392.397],[165.985,-392.397],[190.685,-367.697],[190.685,367.697],[165.985,392.397],[-165.985,392.397],[-190.685,367.697]],"c":true}],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-12.934,0],[0,0],[0,-12.934],[0,0],[12.934,0],[0,0],[0,12.934]],"o":[[0,-12.934],[0,0],[12.934,0],[0,0],[0,12.934],[0,0],[-12.934,0],[0,0]],"v":[[-193.577,-379.084],[-170.142,-402.519],[170.142,-402.519],[193.577,-379.084],[193.577,379.084],[170.142,402.519],[-170.142,402.519],[-193.577,379.084]],"c":true}],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-12.394,0],[0,0],[0,-12.394],[0,0],[12.394,0],[0,0],[0,12.394]],"o":[[0,-12.394],[0,0],[12.394,0],[0,0],[0,12.394],[0,0],[-12.394,0],[0,0]],"v":[[-195.813,-387.89],[-173.357,-410.347],[173.357,-410.347],[195.813,-387.89],[195.813,387.89],[173.357,410.347],[-173.357,410.347],[-195.813,387.89]],"c":true}],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.963,0],[0,0],[0,-11.963],[0,0],[11.963,0],[0,0],[0,11.963]],"o":[[0,-11.963],[0,0],[11.963,0],[0,0],[0,11.963],[0,0],[-11.963,0],[0,0]],"v":[[-197.598,-394.916],[-175.922,-416.592],[175.922,-416.592],[197.598,-394.916],[197.598,394.916],[175.922,416.592],[-175.922,416.592],[-197.598,394.916]],"c":true}],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.612,0],[0,0],[0,-11.612],[0,0],[11.612,0],[0,0],[0,11.612]],"o":[[0,-11.612],[0,0],[11.612,0],[0,0],[0,11.612],[0,0],[-11.612,0],[0,0]],"v":[[-199.052,-400.641],[-178.012,-421.681],[178.012,-421.681],[199.052,-400.641],[199.052,400.641],[178.012,421.681],[-178.012,421.681],[-199.052,400.641]],"c":true}],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.322,0],[0,0],[0,-11.322],[0,0],[11.322,0],[0,0],[0,11.322]],"o":[[0,-11.322],[0,0],[11.322,0],[0,0],[0,11.322],[0,0],[-11.322,0],[0,0]],"v":[[-200.254,-405.375],[-179.74,-425.889],[179.74,-425.889],[200.254,-405.375],[200.254,405.375],[179.74,425.889],[-179.74,425.889],[-200.254,405.375]],"c":true}],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.079,0],[0,0],[0,-11.079],[0,0],[11.079,0],[0,0],[0,11.079]],"o":[[0,-11.079],[0,0],[11.079,0],[0,0],[0,11.079],[0,0],[-11.079,0],[0,0]],"v":[[-201.259,-409.332],[-181.185,-429.406],[181.185,-429.406],[201.259,-409.332],[201.259,409.332],[181.185,429.406],[-181.185,429.406],[-201.259,409.332]],"c":true}],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.875,0],[0,0],[0,-10.875],[0,0],[10.875,0],[0,0],[0,10.875]],"o":[[0,-10.875],[0,0],[10.875,0],[0,0],[0,10.875],[0,0],[-10.875,0],[0,0]],"v":[[-202.104,-412.661],[-182.4,-432.365],[182.4,-432.365],[202.104,-412.661],[202.104,412.661],[182.4,432.365],[-182.4,432.365],[-202.104,412.661]],"c":true}],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.702,0],[0,0],[0,-10.702],[0,0],[10.702,0],[0,0],[0,10.702]],"o":[[0,-10.702],[0,0],[10.702,0],[0,0],[0,10.702],[0,0],[-10.702,0],[0,0]],"v":[[-202.819,-415.475],[-183.427,-434.867],[183.427,-434.867],[202.819,-415.475],[202.819,415.475],[183.427,434.867],[-183.427,434.867],[-202.819,415.475]],"c":true}],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.556,0],[0,0],[0,-10.556],[0,0],[10.556,0],[0,0],[0,10.556]],"o":[[0,-10.556],[0,0],[10.556,0],[0,0],[0,10.556],[0,0],[-10.556,0],[0,0]],"v":[[-203.424,-417.859],[-184.298,-436.986],[184.298,-436.986],[203.424,-417.859],[203.424,417.859],[184.298,436.986],[-184.298,436.986],[-203.424,417.859]],"c":true}],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.432,0],[0,0],[0,-10.432],[0,0],[10.432,0],[0,0],[0,10.432]],"o":[[0,-10.432],[0,0],[10.432,0],[0,0],[0,10.432],[0,0],[-10.432,0],[0,0]],"v":[[-203.937,-419.879],[-185.035,-438.781],[185.035,-438.781],[203.937,-419.879],[203.937,419.879],[185.035,438.781],[-185.035,438.781],[-203.937,419.879]],"c":true}],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.327,0],[0,0],[0,-10.327],[0,0],[10.328,0],[0,0],[0,10.328]],"o":[[0,-10.327],[0,0],[10.328,0],[0,0],[0,10.328],[0,0],[-10.327,0],[0,0]],"v":[[-204.371,-421.587],[-185.659,-440.299],[185.659,-440.299],[204.371,-421.587],[204.371,421.587],[185.659,440.299],[-185.659,440.299],[-204.371,421.587]],"c":true}],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.239,0],[0,0],[0,-10.239],[0,0],[10.239,0],[0,0],[0,10.239]],"o":[[0,-10.239],[0,0],[10.239,0],[0,0],[0,10.239],[0,0],[-10.239,0],[0,0]],"v":[[-204.736,-423.025],[-186.184,-441.578],[186.184,-441.578],[204.736,-423.025],[204.736,423.025],[186.184,441.578],[-186.184,441.578],[-204.736,423.025]],"c":true}],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.166,0],[0,0],[0,-10.166],[0,0],[10.166,0],[0,0],[0,10.166]],"o":[[0,-10.166],[0,0],[10.166,0],[0,0],[0,10.166],[0,0],[-10.166,0],[0,0]],"v":[[-205.042,-424.227],[-186.623,-442.647],[186.623,-442.647],[205.042,-424.227],[205.042,424.227],[186.623,442.647],[-186.623,442.647],[-205.042,424.227]],"c":true}],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.105,0],[0,0],[0,-10.104],[0,0],[10.105,0],[0,0],[0,10.104]],"o":[[0,-10.104],[0,0],[10.105,0],[0,0],[0,10.104],[0,0],[-10.105,0],[0,0]],"v":[[-205.295,-425.223],[-186.986,-443.531],[186.986,-443.531],[205.295,-425.223],[205.295,425.223],[186.986,443.531],[-186.986,443.531],[-205.295,425.223]],"c":true}],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.055,0],[0,0],[0,-10.055],[0,0],[10.055,0],[0,0],[0,10.055]],"o":[[0,-10.055],[0,0],[10.055,0],[0,0],[0,10.055],[0,0],[-10.055,0],[0,0]],"v":[[-205.501,-426.035],[-187.283,-444.253],[187.283,-444.253],[205.501,-426.035],[205.501,426.035],[187.283,444.253],[-187.283,444.253],[-205.501,426.035]],"c":true}],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.015,0],[0,0],[0,-10.015],[0,0],[10.015,0],[0,0],[0,10.015]],"o":[[0,-10.015],[0,0],[10.015,0],[0,0],[0,10.015],[0,0],[-10.015,0],[0,0]],"v":[[-205.666,-426.684],[-187.519,-444.83],[187.519,-444.83],[205.666,-426.684],[205.666,426.684],[187.519,444.83],[-187.519,444.83],[-205.666,426.684]],"c":true}],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.984,0],[0,0],[0,-9.984],[0,0],[9.984,0],[0,0],[0,9.984]],"o":[[0,-9.984],[0,0],[9.984,0],[0,0],[0,9.984],[0,0],[-9.984,0],[0,0]],"v":[[-205.793,-427.186],[-187.703,-445.277],[187.703,-445.277],[205.793,-427.186],[205.793,427.186],[187.703,445.277],[-187.703,445.277],[-205.793,427.186]],"c":true}],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.961,0],[0,0],[0,-9.961],[0,0],[9.961,0],[0,0],[0,9.961]],"o":[[0,-9.961],[0,0],[9.961,0],[0,0],[0,9.961],[0,0],[-9.961,0],[0,0]],"v":[[-205.888,-427.557],[-187.838,-445.607],[187.838,-445.607],[205.888,-427.557],[205.888,427.557],[187.838,445.607],[-187.838,445.607],[-205.888,427.557]],"c":true}],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.946,0],[0,0],[0,-9.946],[0,0],[9.946,0],[0,0],[0,9.946]],"o":[[0,-9.946],[0,0],[9.946,0],[0,0],[0,9.946],[0,0],[-9.946,0],[0,0]],"v":[[-205.952,-427.809],[-187.93,-445.831],[187.93,-445.831],[205.952,-427.809],[205.952,427.809],[187.93,445.831],[-187.93,445.831],[-205.952,427.809]],"c":true}],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.937,0],[0,0],[0,-9.937],[0,0],[9.937,0],[0,0],[0,9.937]],"o":[[0,-9.937],[0,0],[9.937,0],[0,0],[0,9.937],[0,0],[-9.937,0],[0,0]],"v":[[-205.988,-427.954],[-187.983,-445.959],[187.983,-445.959],[205.988,-427.954],[205.988,427.954],[187.983,445.959],[-187.983,445.959],[-205.988,427.954]],"c":true}],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.494117647059,0.266666666667,0.678431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":245,"op":435,"st":-37,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Pill to Arc | Elevation 2","parent":4,"tt":1,"tp":6,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":405,"s":[15]},{"t":411,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":130,"s":[-83]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":197,"s":[-238]},{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":227,"s":[-238]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":237.666,"s":[-125.6]},{"t":291,"s":[43]}],"ix":3},"y":{"k":[{"s":[110.1],"t":53,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[109.629],"t":54,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[108.115],"t":55,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[105.387],"t":56,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[101.233],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[95.393],"t":58,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.556],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[77.356],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.399],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[48.322],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.939],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[6.457],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-18.352],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.227],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-69.819],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-94.1],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-116.516],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-136.892],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-155.275],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-171.817],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-186.701],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-200.108],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-212.206],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-223.143],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-233.047],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-242.028],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-250.181],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-257.587],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-264.318],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-270.434],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-275.988],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-281.028],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-285.594],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-289.722],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-293.445],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-296.791],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-299.786],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-302.453],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-304.812],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-306.882],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-308.681],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-310.224],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-311.524],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-312.595],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.449],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.097],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.549],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.814],"t":100,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.663],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.356],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.911],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.321],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-312.575],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-311.661],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-310.567],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-309.279],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-307.781],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-306.056],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-304.083],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-301.841],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-299.303],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-296.441],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-293.22],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-289.602],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-285.543],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-280.992],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-275.89],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-270.171],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-263.759],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-256.573],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-248.528],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-239.543],"t":165,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-229.563],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-218.577],"t":167,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-206.661],"t":168,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-194.011],"t":169,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-167.889],"t":171,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-155.239],"t":172,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-143.323],"t":173,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-132.337],"t":174,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-122.357],"t":175,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-113.372],"t":176,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-105.327],"t":177,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-98.141],"t":178,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-91.729],"t":179,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-86.01],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-80.908],"t":181,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.357],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-72.298],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-68.68],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-65.459],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-62.597],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-60.059],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-57.817],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.844],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-54.119],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.621],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.333],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-50.239],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.325],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.579],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.989],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.544],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.237],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.058],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.958],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.904],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.827],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.727],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.602],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.452],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.276],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-46.072],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.84],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.578],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.285],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.96],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.601],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.207],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-43.777],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-43.308],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-42.799],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-42.248],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-41.652],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-41.01],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-40.318],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-39.575],"t":418,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-38.777],"t":419,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-37.921],"t":420,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-37.003],"t":421,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-36.021],"t":422,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-34.969],"t":423,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-33.843],"t":424,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-32.639],"t":425,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-31.35],"t":426,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-29.972],"t":427,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-28.497],"t":428,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-26.919],"t":429,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-25.229],"t":430,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-23.42],"t":431,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-21.483],"t":432,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-19.407],"t":433,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-17.183],"t":434,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-14.8],"t":435,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-12.248],"t":436,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-9.519],"t":437,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-6.604],"t":438,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-3.5],"t":439,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-0.211],"t":440,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[3.252],"t":441,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[6.866],"t":442,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[10.59],"t":443,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.372],"t":444,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.144],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},"a":{"a":0,"k":[0,-2,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue Y Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":0,"k":0,"ix":1}}]},{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":2,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":8,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":1,"ix":3}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.42,"y":0},"t":24,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,23.5],[21.75,-21.75],[21.75,-66.5]],"c":false}]},{"i":{"x":0.65,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.35,"y":0},"t":53,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.35,"y":0},"t":70,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":140,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":197,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":227,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":244,"s":[{"i":[[0,0],[-20.373,0],[-4.174,-10]],"o":[[4.292,-10],[20.228,0],[0,0]],"v":[[-11.25,18.5],[22,-21.5],[54.75,18.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.42,"y":0},"t":291,"s":[{"i":[[0,0],[-17.75,0],[-10.841,0]],"o":[[11.833,0],[17.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":432,"s":[{"i":[[0,0],[0,17.75],[0,10.841]],"o":[[0,-11.833],[0,-17.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"t":482,"s":[{"i":[[0,0],[0,17.75],[0,10.841]],"o":[[0,-11.833],[0,-17.583],[0,0]],"v":[[21.75,44.5],[21.75,-21.75],[21.75,-88.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":111,"s":[27]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":130,"s":[58]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":197,"s":[58]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":218,"s":[40]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":247,"s":[40]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[54]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":368,"s":[54]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":388,"s":[40]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":390,"s":[40]},{"t":405,"s":[52]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":127,"s":[49.5]},{"i":{"x":[0.32],"y":[1]},"o":{"x":[0.82],"y":[0]},"t":197,"s":[49.5]},{"t":222,"s":[30],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":247,"s":[30]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[49.5]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":432,"s":[49.5]},{"t":482,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":127,"s":[50.5]},{"i":{"x":[0.32],"y":[1]},"o":{"x":[0.82],"y":[0]},"t":197,"s":[50.5]},{"t":222,"s":[70],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":247,"s":[70]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[50.5]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":432,"s":[50.5]},{"t":482,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-465,"s":[0]},{"t":-447,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":222,"s":[{"i":[[3.179,6.167],[0,-15.352],[-2.581,5.008]],"o":[[-2.881,-5.59],[0,13.869],[3.179,-6.167]],"v":[[-10.45,-10.166],[10.648,-0.036],[-10.45,9.228]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":237,"s":[{"i":[[3.179,8.221],[0,-20.465],[-2.581,6.675]],"o":[[-2.881,-7.451],[0,18.488],[3.179,-8.221]],"v":[[-25.45,-13.344],[-4.352,0.16],[-25.45,12.509]],"c":true}]},{"t":263,"s":[{"i":[[3.179,6.167],[0,-15.352],[-2.581,5.008]],"o":[[-2.881,-5.59],[0,13.869],[3.179,-6.167]],"v":[[-11.7,-10.166],[9.398,-0.036],[-11.7,9.228]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":1,"k":[{"t":212,"s":[0],"h":1},{"t":222,"s":[100],"h":1},{"t":247,"s":[0],"h":1}],"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":2,"mn":"ADBE Vector Group","hd":false}],"ip":245,"op":435,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"App 1 Matte","parent":11,"td":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":19,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":31,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":49,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":71,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.52],"y":[0]},"t":227,"s":[100]},{"t":245,"s":[50]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.15,"y":1},"o":{"x":0.37,"y":0},"t":53,"s":[206,792,0],"to":[0,0,0],"ti":[0,0,0]},{"t":101,"s":[206,421,0]}],"ix":2,"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":2,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":63,"s":[412]},{"t":101,"s":[352],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":113,"s":[352]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[216]},{"t":148,"s":[220]}],"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":63,"s":[582]},{"t":101,"s":[442],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":113,"s":[442]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[216]},{"t":148,"s":[220]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":63,"s":[90]},{"t":101,"s":[80],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":113,"s":[80]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[64]},{"t":148,"s":[60]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"k":[{"s":[89.923],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"k":[{"s":[89.923],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"k":[{"s":[89.923],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]}],"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.661,0],[0,0],[0,-49.661],[0,0],[49.661,0],[0,0],[0,49.661]],"o":[[0,-49.661],[0,0],[49.661,0],[0,0],[0,49.661],[0,0],[-49.661,0],[0,0]],"v":[[-205.946,89.982],[-115.964,0],[115.964,0],[205.946,89.982],[205.946,491.767],[115.964,581.749],[-115.964,581.749],[-205.946,491.767]],"c":true}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.629,0],[0,0],[0,-49.629],[0,0],[49.629,0],[0,0],[0,49.629]],"o":[[0,-49.629],[0,0],[49.629,0],[0,0],[0,49.629],[0,0],[-49.629,0],[0,0]],"v":[[-205.77,89.923],[-115.847,0],[115.847,0],[205.77,89.923],[205.77,491.004],[115.847,580.927],[-115.847,580.927],[-205.77,491.004]],"c":true}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.569,0],[0,0],[0,-49.569],[0,0],[49.569,0],[0,0],[0,49.569]],"o":[[0,-49.569],[0,0],[49.569,0],[0,0],[0,49.569],[0,0],[-49.569,0],[0,0]],"v":[[-205.445,89.815],[-115.63,0],[115.63,0],[205.445,89.815],[205.445,489.595],[115.63,579.41],[-115.63,579.41],[-205.445,489.595]],"c":true}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.475,0],[0,0],[0,-49.475],[0,0],[49.475,0],[0,0],[0,49.475]],"o":[[0,-49.475],[0,0],[49.475,0],[0,0],[0,49.475],[0,0],[-49.475,0],[0,0]],"v":[[-204.936,89.645],[-115.291,0],[115.291,0],[204.936,89.645],[204.936,487.391],[115.291,577.037],[-115.291,577.037],[-204.936,487.391]],"c":true}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.34,0],[0,0],[0,-49.34],[0,0],[49.34,0],[0,0],[0,49.34]],"o":[[0,-49.34],[0,0],[49.34,0],[0,0],[0,49.34],[0,0],[-49.34,0],[0,0]],"v":[[-204.201,89.4],[-114.8,0],[114.8,0],[204.201,89.4],[204.201,484.203],[114.8,573.603],[-114.8,573.603],[-204.201,484.203]],"c":true}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.153,0],[0,0],[0,-49.153],[0,0],[49.153,0],[0,0],[0,49.153]],"o":[[0,-49.153],[0,0],[49.153,0],[0,0],[0,49.153],[0,0],[-49.153,0],[0,0]],"v":[[-203.185,89.062],[-114.123,0],[114.123,0],[203.185,89.062],[203.185,479.8],[114.123,568.862],[-114.123,568.862],[-203.185,479.8]],"c":true}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.905,0],[0,0],[0,-48.905],[0,0],[48.905,0],[0,0],[0,48.905]],"o":[[0,-48.905],[0,0],[48.905,0],[0,0],[0,48.905],[0,0],[-48.905,0],[0,0]],"v":[[-201.834,88.611],[-113.223,0],[113.223,0],[201.834,88.611],[201.834,473.946],[113.223,562.558],[-113.223,562.558],[-201.834,473.946]],"c":true}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.588,0],[0,0],[0,-48.588],[0,0],[48.588,0],[0,0],[0,48.588]],"o":[[0,-48.588],[0,0],[48.588,0],[0,0],[0,48.588],[0,0],[-48.588,0],[0,0]],"v":[[-200.114,88.038],[-112.076,0],[112.076,0],[200.114,88.038],[200.114,466.493],[112.076,554.531],[-112.076,554.531],[-200.114,466.493]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.209,0],[0,0],[0,-48.209],[0,0],[48.209,0],[0,0],[0,48.209]],"o":[[0,-48.209],[0,0],[48.209,0],[0,0],[0,48.209],[0,0],[-48.209,0],[0,0]],"v":[[-198.054,87.351],[-110.703,0],[110.703,0],[198.054,87.351],[198.054,457.566],[110.703,544.918],[-110.703,544.918],[-198.054,457.566]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-47.791,0],[0,0],[0,-47.791],[0,0],[47.791,0],[0,0],[0,47.791]],"o":[[0,-47.791],[0,0],[47.791,0],[0,0],[0,47.791],[0,0],[-47.791,0],[0,0]],"v":[[-195.782,86.594],[-109.188,0],[109.188,0],[195.782,86.594],[195.782,447.721],[109.188,534.315],[-109.188,534.315],[-195.782,447.721]],"c":true}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-47.369,0],[0,0],[0,-47.369],[0,0],[47.369,0],[0,0],[0,47.369]],"o":[[0,-47.369],[0,0],[47.369,0],[0,0],[0,47.369],[0,0],[-47.369,0],[0,0]],"v":[[-193.487,85.829],[-107.658,0],[107.658,0],[193.487,85.829],[193.487,437.775],[107.658,523.604],[-107.658,523.604],[-193.487,437.775]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.972,0],[0,0],[0,-46.972],[0,0],[46.972,0],[0,0],[0,46.972]],"o":[[0,-46.972],[0,0],[46.972,0],[0,0],[0,46.972],[0,0],[-46.972,0],[0,0]],"v":[[-191.327,85.109],[-106.218,0],[106.218,0],[191.327,85.109],[191.327,428.416],[106.218,513.525],[-106.218,513.525],[-191.327,428.416]],"c":true}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.614,0],[0,0],[0,-46.614],[0,0],[46.614,0],[0,0],[0,46.614]],"o":[[0,-46.614],[0,0],[46.614,0],[0,0],[0,46.614],[0,0],[-46.614,0],[0,0]],"v":[[-189.38,84.46],[-104.92,0],[104.92,0],[189.38,84.46],[189.38,419.982],[104.92,504.442],[-104.92,504.442],[-189.38,419.982]],"c":true}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.298,0],[0,0],[0,-46.298],[0,0],[46.298,0],[0,0],[0,46.298]],"o":[[0,-46.298],[0,0],[46.298,0],[0,0],[0,46.298],[0,0],[-46.298,0],[0,0]],"v":[[-187.663,83.888],[-103.775,0],[103.775,0],[187.663,83.888],[187.663,412.539],[103.775,496.426],[-103.775,496.426],[-187.663,412.539]],"c":true}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.021,0],[0,0],[0,-46.021],[0,0],[46.021,0],[0,0],[0,46.021]],"o":[[0,-46.021],[0,0],[46.021,0],[0,0],[0,46.021],[0,0],[-46.021,0],[0,0]],"v":[[-186.158,83.386],[-102.772,0],[102.772,0],[186.158,83.386],[186.158,406.02],[102.772,489.406],[-102.772,489.406],[-186.158,406.02]],"c":true}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.779,0],[0,0],[0,-45.779],[0,0],[45.779,0],[0,0],[0,45.779]],"o":[[0,-45.779],[0,0],[45.779,0],[0,0],[0,45.779],[0,0],[-45.779,0],[0,0]],"v":[[-184.842,82.947],[-101.895,0],[101.895,0],[184.842,82.947],[184.842,400.315],[101.895,483.262],[-101.895,483.262],[-184.842,400.315]],"c":true}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.566,0],[0,0],[0,-45.566],[0,0],[45.566,0],[0,0],[0,45.566]],"o":[[0,-45.566],[0,0],[45.566,0],[0,0],[0,45.566],[0,0],[-45.566,0],[0,0]],"v":[[-183.688,82.563],[-101.125,0],[101.125,0],[183.688,82.563],[183.688,395.313],[101.125,477.875],[-101.125,477.875],[-183.688,395.313]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.38,0],[0,0],[0,-45.38],[0,0],[45.38,0],[0,0],[0,45.38]],"o":[[0,-45.38],[0,0],[45.38,0],[0,0],[0,45.38],[0,0],[-45.38,0],[0,0]],"v":[[-182.673,82.224],[-100.448,0],[100.448,0],[182.673,82.224],[182.673,390.915],[100.448,473.139],[-100.448,473.139],[-182.673,390.915]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.215,0],[0,0],[0,-45.215],[0,0],[45.215,0],[0,0],[0,45.215]],"o":[[0,-45.215],[0,0],[45.215,0],[0,0],[0,45.215],[0,0],[-45.215,0],[0,0]],"v":[[-181.778,81.926],[-99.852,0],[99.852,0],[181.778,81.926],[181.778,387.037],[99.852,468.963],[-99.852,468.963],[-181.778,387.037]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.069,0],[0,0],[0,-45.069],[0,0],[45.069,0],[0,0],[0,45.069]],"o":[[0,-45.069],[0,0],[45.069,0],[0,0],[0,45.069],[0,0],[-45.069,0],[0,0]],"v":[[-180.987,81.662],[-99.325,0],[99.325,0],[180.987,81.662],[180.987,383.61],[99.325,465.273],[-99.325,465.273],[-180.987,383.61]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.941,0],[0,0],[0,-44.941],[0,0],[44.941,0],[0,0],[0,44.941]],"o":[[0,-44.941],[0,0],[44.941,0],[0,0],[0,44.941],[0,0],[-44.941,0],[0,0]],"v":[[-180.287,81.429],[-98.858,0],[98.858,0],[180.287,81.429],[180.287,380.577],[98.858,462.006],[-98.858,462.006],[-180.287,380.577]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.827,0],[0,0],[0,-44.827],[0,0],[44.827,0],[0,0],[0,44.827]],"o":[[0,-44.827],[0,0],[44.827,0],[0,0],[0,44.827],[0,0],[-44.827,0],[0,0]],"v":[[-179.667,81.222],[-98.445,0],[98.445,0],[179.667,81.222],[179.667,377.889],[98.445,459.112],[-98.445,459.112],[-179.667,377.889]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.725,0],[0,0],[0,-44.725],[0,0],[44.725,0],[0,0],[0,44.725]],"o":[[0,-44.725],[0,0],[44.725,0],[0,0],[0,44.725],[0,0],[-44.725,0],[0,0]],"v":[[-179.117,81.039],[-98.078,0],[98.078,0],[179.117,81.039],[179.117,375.508],[98.078,456.547],[-98.078,456.547],[-179.117,375.508]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.636,0],[0,0],[0,-44.636],[0,0],[44.636,0],[0,0],[0,44.636]],"o":[[0,-44.636],[0,0],[44.636,0],[0,0],[0,44.636],[0,0],[-44.636,0],[0,0]],"v":[[-178.631,80.877],[-97.754,0],[97.754,0],[178.631,80.877],[178.631,373.399],[97.754,454.276],[-97.754,454.276],[-178.631,373.399]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.557,0],[0,0],[0,-44.557],[0,0],[44.557,0],[0,0],[0,44.557]],"o":[[0,-44.557],[0,0],[44.557,0],[0,0],[0,44.557],[0,0],[-44.557,0],[0,0]],"v":[[-178.2,80.733],[-97.467,0],[97.467,0],[178.2,80.733],[178.2,371.535],[97.467,452.269],[-97.467,452.269],[-178.2,371.535]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.487,0],[0,0],[0,-44.487],[0,0],[44.487,0],[0,0],[0,44.487]],"o":[[0,-44.487],[0,0],[44.487,0],[0,0],[0,44.487],[0,0],[-44.487,0],[0,0]],"v":[[-177.821,80.607],[-97.214,0],[97.214,0],[177.821,80.607],[177.821,369.892],[97.214,450.499],[-97.214,450.499],[-177.821,369.892]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.426,0],[0,0],[0,-44.426],[0,0],[44.426,0],[0,0],[0,44.426]],"o":[[0,-44.426],[0,0],[44.426,0],[0,0],[0,44.426],[0,0],[-44.426,0],[0,0]],"v":[[-177.488,80.496],[-96.992,0],[96.992,0],[177.488,80.496],[177.488,368.45],[96.992,448.946],[-96.992,448.946],[-177.488,368.45]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.372,0],[0,0],[0,-44.372],[0,0],[44.372,0],[0,0],[0,44.372]],"o":[[0,-44.372],[0,0],[44.372,0],[0,0],[0,44.372],[0,0],[-44.372,0],[0,0]],"v":[[-177.198,80.399],[-96.798,0],[96.798,0],[177.198,80.399],[177.198,367.19],[96.798,447.589],[-96.798,447.589],[-177.198,367.19]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.326,0],[0,0],[0,-44.326],[0,0],[44.326,0],[0,0],[0,44.326]],"o":[[0,-44.326],[0,0],[44.326,0],[0,0],[0,44.326],[0,0],[-44.326,0],[0,0]],"v":[[-176.945,80.315],[-96.63,0],[96.63,0],[176.945,80.315],[176.945,366.097],[96.63,446.412],[-96.63,446.412],[-176.945,366.097]],"c":true}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.286,0],[0,0],[0,-44.286],[0,0],[44.286,0],[0,0],[0,44.286]],"o":[[0,-44.286],[0,0],[44.286,0],[0,0],[0,44.286],[0,0],[-44.286,0],[0,0]],"v":[[-176.729,80.243],[-96.486,0],[96.486,0],[176.729,80.243],[176.729,365.158],[96.486,445.4],[-96.486,445.4],[-176.729,365.158]],"c":true}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.252,0],[0,0],[0,-44.252],[0,0],[44.252,0],[0,0],[0,44.252]],"o":[[0,-44.252],[0,0],[44.252,0],[0,0],[0,44.252],[0,0],[-44.252,0],[0,0]],"v":[[-176.545,80.182],[-96.363,0],[96.363,0],[176.545,80.182],[176.545,364.36],[96.363,444.542],[-96.363,444.542],[-176.545,364.36]],"c":true}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.224,0],[0,0],[0,-44.224],[0,0],[44.224,0],[0,0],[0,44.224]],"o":[[0,-44.224],[0,0],[44.224,0],[0,0],[0,44.224],[0,0],[-44.224,0],[0,0]],"v":[[-176.391,80.13],[-96.261,0],[96.261,0],[176.391,80.13],[176.391,363.694],[96.261,443.825],[-96.261,443.825],[-176.391,363.694]],"c":true}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.201,0],[0,0],[0,-44.201],[0,0],[44.201,0],[0,0],[0,44.201]],"o":[[0,-44.201],[0,0],[44.201,0],[0,0],[0,44.201],[0,0],[-44.201,0],[0,0]],"v":[[-176.266,80.089],[-96.177,0],[96.177,0],[176.266,80.089],[176.266,363.151],[96.177,443.239],[-96.177,443.239],[-176.266,363.151]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.183,0],[0,0],[0,-44.183],[0,0],[44.183,0],[0,0],[0,44.183]],"o":[[0,-44.183],[0,0],[44.183,0],[0,0],[0,44.183],[0,0],[-44.183,0],[0,0]],"v":[[-176.166,80.055],[-96.111,0],[96.111,0],[176.166,80.055],[176.166,362.721],[96.111,442.776],[-96.111,442.776],[-176.166,362.721]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.169,0],[0,0],[0,-44.169],[0,0],[44.169,0],[0,0],[0,44.169]],"o":[[0,-44.169],[0,0],[44.169,0],[0,0],[0,44.169],[0,0],[-44.169,0],[0,0]],"v":[[-176.092,80.031],[-96.061,0],[96.061,0],[176.092,80.031],[176.092,362.397],[96.061,442.427],[-96.061,442.427],[-176.092,362.397]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.154,0],[0,0],[0,-44.154],[0,0],[44.154,0],[0,0],[0,44.154]],"o":[[0,-44.154],[0,0],[44.154,0],[0,0],[0,44.154],[0,0],[-44.154,0],[0,0]],"v":[[-176.01,80.003],[-96.007,0],[96.007,0],[176.01,80.003],[176.01,362.042],[96.007,442.046],[-96.007,442.046],[-176.01,362.042]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.152,0],[0,0],[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152]],"o":[[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152],[0,0],[-44.152,0],[0,0]],"v":[[-176,80],[-96,0],[96,0],[176,80],[176,362],[96,442],[-96,442],[-176,362]],"c":true}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.127,0],[0,0],[0,-44.127],[0,0],[44.127,0],[0,0],[0,44.127]],"o":[[0,-44.127],[0,0],[44.127,0],[0,0],[0,44.127],[0,0],[-44.127,0],[0,0]],"v":[[-175.806,79.954],[-95.852,0],[95.852,0],[175.806,79.954],[175.806,361.402],[95.852,441.356],[-95.852,441.356],[-175.806,361.402]],"c":true}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.042,0],[0,0],[0,-44.042],[0,0],[44.042,0],[0,0],[0,44.042]],"o":[[0,-44.042],[0,0],[44.042,0],[0,0],[0,44.042],[0,0],[-44.042,0],[0,0]],"v":[[-175.151,79.8],[-95.351,0],[95.351,0],[175.151,79.8],[175.151,359.379],[95.351,439.179],[-95.351,439.179],[-175.151,359.379]],"c":true}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.877,0],[0,0],[0,-43.877],[0,0],[43.877,0],[0,0],[0,43.877]],"o":[[0,-43.877],[0,0],[43.877,0],[0,0],[0,43.877],[0,0],[-43.877,0],[0,0]],"v":[[-173.883,79.502],[-94.381,0],[94.381,0],[173.883,79.502],[173.883,355.463],[94.381,434.965],[-94.381,434.965],[-173.883,355.463]],"c":true}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.602,0],[0,0],[0,-43.602],[0,0],[43.602,0],[0,0],[0,43.602]],"o":[[0,-43.602],[0,0],[43.602,0],[0,0],[0,43.602],[0,0],[-43.602,0],[0,0]],"v":[[-171.765,79.003],[-92.761,0],[92.761,0],[171.765,79.003],[171.765,348.92],[92.761,427.924],[-92.761,427.924],[-171.765,348.92]],"c":true}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.166,0],[0,0],[0,-43.166],[0,0],[43.166,0],[0,0],[0,43.166]],"o":[[0,-43.166],[0,0],[43.166,0],[0,0],[0,43.166],[0,0],[-43.166,0],[0,0]],"v":[[-168.404,78.213],[-90.191,0],[90.191,0],[168.404,78.213],[168.404,338.542],[90.191,416.754],[-90.191,416.754],[-168.404,338.542]],"c":true}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-42.482,0],[0,0],[0,-42.482],[0,0],[42.482,0],[0,0],[0,42.482]],"o":[[0,-42.482],[0,0],[42.482,0],[0,0],[0,42.482],[0,0],[-42.482,0],[0,0]],"v":[[-163.142,76.975],[-86.168,0],[86.168,0],[163.142,76.975],[163.142,322.292],[86.168,399.267],[-86.168,399.267],[-163.142,322.292]],"c":true}],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-41.435,0],[0,0],[0,-41.435],[0,0],[41.435,0],[0,0],[0,41.435]],"o":[[0,-41.435],[0,0],[41.435,0],[0,0],[0,41.435],[0,0],[-41.435,0],[0,0]],"v":[[-155.078,75.077],[-80.001,0],[80.001,0],[155.078,75.077],[155.078,297.387],[80.001,372.464],[-80.001,372.464],[-155.078,297.387]],"c":true}],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-40.054,0],[0,0],[0,-40.054],[0,0],[40.054,0],[0,0],[0,40.054]],"o":[[0,-40.054],[0,0],[40.054,0],[0,0],[0,40.054],[0,0],[-40.054,0],[0,0]],"v":[[-144.442,72.575],[-71.868,0],[71.868,0],[144.442,72.575],[144.442,264.543],[71.868,337.118],[-71.868,337.118],[-144.442,264.543]],"c":true}],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-38.75,0],[0,0],[0,-38.75],[0,0],[38.75,0],[0,0],[0,38.75]],"o":[[0,-38.75],[0,0],[38.75,0],[0,0],[0,38.75],[0,0],[-38.75,0],[0,0]],"v":[[-134.399,70.212],[-64.188,0],[64.188,0],[134.399,70.212],[134.399,233.528],[64.188,303.739],[-64.188,303.739],[-134.399,233.528]],"c":true}],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-37.775,0],[0,0],[0,-37.775],[0,0],[37.775,0],[0,0],[0,37.775]],"o":[[0,-37.775],[0,0],[37.775,0],[0,0],[0,37.775],[0,0],[-37.775,0],[0,0]],"v":[[-126.895,68.446],[-58.449,0],[58.449,0],[126.895,68.446],[126.895,210.354],[58.449,278.8],[-58.449,278.8],[-126.895,210.354]],"c":true}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-37.077,0],[0,0],[0,-37.077],[0,0],[37.077,0],[0,0],[0,37.077]],"o":[[0,-37.077],[0,0],[37.077,0],[0,0],[0,37.077],[0,0],[-37.077,0],[0,0]],"v":[[-121.522,67.182],[-54.34,0],[54.34,0],[121.522,67.182],[121.522,193.758],[54.34,260.939],[-54.34,260.939],[-121.522,193.758]],"c":true}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-36.569,0],[0,0],[0,-36.569],[0,0],[36.569,0],[0,0],[0,36.569]],"o":[[0,-36.569],[0,0],[36.569,0],[0,0],[0,36.569],[0,0],[-36.569,0],[0,0]],"v":[[-117.609,66.261],[-51.348,0],[51.348,0],[117.609,66.261],[117.609,181.674],[51.348,247.935],[-51.348,247.935],[-117.609,181.674]],"c":true}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-36.193,0],[0,0],[0,-36.193],[0,0],[36.193,0],[0,0],[0,36.193]],"o":[[0,-36.193],[0,0],[36.193,0],[0,0],[0,36.193],[0,0],[-36.193,0],[0,0]],"v":[[-114.709,65.579],[-49.131,0],[49.131,0],[114.709,65.579],[114.709,172.72],[49.131,238.299],[-49.131,238.299],[-114.709,172.72]],"c":true}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.912,0],[0,0],[0,-35.912],[0,0],[35.912,0],[0,0],[0,35.912]],"o":[[0,-35.912],[0,0],[35.912,0],[0,0],[0,35.912],[0,0],[-35.912,0],[0,0]],"v":[[-112.544,65.069],[-47.475,0],[47.475,0],[112.544,65.069],[112.544,166.034],[47.475,231.104],[-47.475,231.104],[-112.544,166.034]],"c":true}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.703,0],[0,0],[0,-35.703],[0,0],[35.703,0],[0,0],[0,35.703]],"o":[[0,-35.703],[0,0],[35.703,0],[0,0],[0,35.703],[0,0],[-35.703,0],[0,0]],"v":[[-110.934,64.69],[-46.244,0],[46.244,0],[110.934,64.69],[110.934,161.062],[46.244,225.752],[-46.244,225.752],[-110.934,161.062]],"c":true}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.55,0],[0,0],[0,-35.55],[0,0],[35.55,0],[0,0],[0,35.55]],"o":[[0,-35.55],[0,0],[35.55,0],[0,0],[0,35.55],[0,0],[-35.55,0],[0,0]],"v":[[-109.758,64.414],[-45.344,0],[45.344,0],[109.758,64.414],[109.758,157.429],[45.344,221.843],[-45.344,221.843],[-109.758,157.429]],"c":true}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.443,0],[0,0],[0,-35.443],[0,0],[35.443,0],[0,0],[0,35.443]],"o":[[0,-35.443],[0,0],[35.443,0],[0,0],[0,35.443],[0,0],[-35.443,0],[0,0]],"v":[[-108.931,64.219],[-44.712,0],[44.712,0],[108.931,64.219],[108.931,154.875],[44.712,219.094],[-44.712,219.094],[-108.931,154.875]],"c":true}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.372,0],[0,0],[0,-35.372],[0,0],[35.372,0],[0,0],[0,35.372]],"o":[[0,-35.372],[0,0],[35.372,0],[0,0],[0,35.372],[0,0],[-35.372,0],[0,0]],"v":[[-108.391,64.092],[-44.299,0],[44.299,0],[108.391,64.092],[108.391,153.209],[44.299,217.301],[-44.299,217.301],[-108.391,153.209]],"c":true}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.334,0],[0,0],[0,-35.334],[0,0],[35.334,0],[0,0],[0,35.334]],"o":[[0,-35.334],[0,0],[35.334,0],[0,0],[0,35.334],[0,0],[-35.334,0],[0,0]],"v":[[-108.093,64.022],[-44.071,0],[44.071,0],[108.093,64.022],[108.093,152.287],[44.071,216.309],[-44.071,216.309],[-108.093,152.287]],"c":true}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.322,0],[0,0],[0,-35.322],[0,0],[35.322,0],[0,0],[0,35.322]],"o":[[0,-35.322],[0,0],[35.322,0],[0,0],[0,35.322],[0,0],[-35.322,0],[0,0]],"v":[[-108,64],[-44,0],[44,0],[108,64],[108,152],[44,216],[-44,216],[-108,152]],"c":true}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.293,0],[0,0],[0,-35.293],[0,0],[35.293,0],[0,0],[0,35.293]],"o":[[0,-35.293],[0,0],[35.293,0],[0,0],[0,35.293],[0,0],[-35.293,0],[0,0]],"v":[[-108.025,63.949],[-44.076,0],[44.076,0],[108.025,63.949],[108.025,152.102],[44.076,216.051],[-44.076,216.051],[-108.025,152.102]],"c":true}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.214,0],[0,0],[0,-35.214],[0,0],[35.214,0],[0,0],[0,35.214]],"o":[[0,-35.214],[0,0],[35.214,0],[0,0],[0,35.214],[0,0],[-35.214,0],[0,0]],"v":[[-108.097,63.806],[-44.292,0],[44.292,0],[108.097,63.806],[108.097,152.389],[44.292,216.194],[-44.292,216.194],[-108.097,152.389]],"c":true}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.092,0],[0,0],[0,-35.092],[0,0],[35.092,0],[0,0],[0,35.092]],"o":[[0,-35.092],[0,0],[35.092,0],[0,0],[0,35.092],[0,0],[-35.092,0],[0,0]],"v":[[-108.208,63.584],[-44.624,0],[44.624,0],[108.208,63.584],[108.208,152.832],[44.624,216.416],[-44.624,216.416],[-108.208,152.832]],"c":true}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.934,0],[0,0],[0,-34.934],[0,0],[34.934,0],[0,0],[0,34.934]],"o":[[0,-34.934],[0,0],[34.934,0],[0,0],[0,34.934],[0,0],[-34.934,0],[0,0]],"v":[[-108.351,63.298],[-45.052,0],[45.052,0],[108.351,63.298],[108.351,153.403],[45.052,216.702],[-45.052,216.702],[-108.351,153.403]],"c":true}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.749,0],[0,0],[0,-34.749],[0,0],[34.749,0],[0,0],[0,34.749]],"o":[[0,-34.749],[0,0],[34.749,0],[0,0],[0,34.749],[0,0],[-34.749,0],[0,0]],"v":[[-108.519,62.963],[-45.556,0],[45.556,0],[108.519,62.963],[108.519,154.074],[45.556,217.037],[-45.556,217.037],[-108.519,154.074]],"c":true}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.545,0],[0,0],[0,-34.545],[0,0],[34.545,0],[0,0],[0,34.545]],"o":[[0,-34.545],[0,0],[34.545,0],[0,0],[0,34.545],[0,0],[-34.545,0],[0,0]],"v":[[-108.704,62.592],[-46.112,0],[46.112,0],[108.704,62.592],[108.704,154.816],[46.112,217.408],[-46.112,217.408],[-108.704,154.816]],"c":true}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.328,0],[0,0],[0,-34.328],[0,0],[34.328,0],[0,0],[0,34.328]],"o":[[0,-34.328],[0,0],[34.328,0],[0,0],[0,34.328],[0,0],[-34.328,0],[0,0]],"v":[[-108.9,62.2],[-46.7,0],[46.7,0],[108.9,62.2],[108.9,155.601],[46.7,217.8],[-46.7,217.8],[-108.9,155.601]],"c":true}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.108,0],[0,0],[0,-34.108],[0,0],[34.108,0],[0,0],[0,34.108]],"o":[[0,-34.108],[0,0],[34.108,0],[0,0],[0,34.108],[0,0],[-34.108,0],[0,0]],"v":[[-109.1,61.8],[-47.3,0],[47.3,0],[109.1,61.8],[109.1,156.399],[47.3,218.2],[-47.3,218.2],[-109.1,156.399]],"c":true}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.891,0],[0,0],[0,-33.891],[0,0],[33.891,0],[0,0],[0,33.891]],"o":[[0,-33.891],[0,0],[33.891,0],[0,0],[0,33.891],[0,0],[-33.891,0],[0,0]],"v":[[-109.296,61.408],[-47.888,0],[47.888,0],[109.296,61.408],[109.296,157.184],[47.888,218.592],[-47.888,218.592],[-109.296,157.184]],"c":true}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.686,0],[0,0],[0,-33.686],[0,0],[33.686,0],[0,0],[0,33.686]],"o":[[0,-33.686],[0,0],[33.686,0],[0,0],[0,33.686],[0,0],[-33.686,0],[0,0]],"v":[[-109.481,61.037],[-48.444,0],[48.444,0],[109.481,61.037],[109.481,157.926],[48.444,218.963],[-48.444,218.963],[-109.481,157.926]],"c":true}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.501,0],[0,0],[0,-33.501],[0,0],[33.501,0],[0,0],[0,33.501]],"o":[[0,-33.501],[0,0],[33.501,0],[0,0],[0,33.501],[0,0],[-33.501,0],[0,0]],"v":[[-109.649,60.702],[-48.948,0],[48.948,0],[109.649,60.702],[109.649,158.597],[48.948,219.298],[-48.948,219.298],[-109.649,158.597]],"c":true}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.344,0],[0,0],[0,-33.344],[0,0],[33.344,0],[0,0],[0,33.344]],"o":[[0,-33.344],[0,0],[33.344,0],[0,0],[0,33.344],[0,0],[-33.344,0],[0,0]],"v":[[-109.792,60.416],[-49.376,0],[49.376,0],[109.792,60.416],[109.792,159.168],[49.376,219.584],[-49.376,219.584],[-109.792,159.168]],"c":true}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.221,0],[0,0],[0,-33.221],[0,0],[33.221,0],[0,0],[0,33.221]],"o":[[0,-33.221],[0,0],[33.221,0],[0,0],[0,33.221],[0,0],[-33.221,0],[0,0]],"v":[[-109.903,60.194],[-49.708,0],[49.708,0],[109.903,60.194],[109.903,159.611],[49.708,219.806],[-49.708,219.806],[-109.903,159.611]],"c":true}],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.142,0],[0,0],[0,-33.142],[0,0],[33.142,0],[0,0],[0,33.142]],"o":[[0,-33.142],[0,0],[33.142,0],[0,0],[0,33.142],[0,0],[-33.142,0],[0,0]],"v":[[-109.975,60.051],[-49.924,0],[49.924,0],[109.975,60.051],[109.975,159.898],[49.924,219.949],[-49.924,219.949],[-109.975,159.898]],"c":true}],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.114,0],[0,0],[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114]],"o":[[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114],[0,0],[-33.114,0],[0,0]],"v":[[-110,60],[-50,0],[50,0],[110,60],[110,160],[50,220],[-50,220],[-110,160]],"c":true}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.494117647059,0.266666666667,0.678431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":198,"st":-57,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Pill to Arc | Elevation 1","parent":4,"tt":1,"tp":8,"sr":1,"ks":{"o":{"a":0,"k":15,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.58],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":130,"s":[-83]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":197,"s":[-338]},{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":227,"s":[-338]},{"t":237.666015625,"s":[-185.6]}],"ix":3},"y":{"k":[{"s":[54],"t":53,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[53.591],"t":54,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[52.277],"t":55,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[49.909],"t":56,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[46.303],"t":57,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[41.234],"t":58,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[34.431],"t":59,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.579],"t":60,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[14.331],"t":61,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.377],"t":62,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-16.447],"t":63,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-35.962],"t":64,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-57.496],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-79.956],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-102.169],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-123.245],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-142.703],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-160.389],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-176.346],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-190.704],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-203.623],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-215.26],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-225.762],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-235.255],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-243.852],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-251.647],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-258.724],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-265.153],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-270.995],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-276.303],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-281.125],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-285.499],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-289.462],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-293.046],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-296.277],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-299.181],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-301.781],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-304.096],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-306.143],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-307.941],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-309.502],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-310.841],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-311.97],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-312.9],"t":96,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.641],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.203],"t":98,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.595],"t":99,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-314.356],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.911],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-313.321],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-312.575],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-311.661],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-310.567],"t":148,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-309.279],"t":149,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-307.781],"t":150,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-306.056],"t":151,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-304.083],"t":152,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-301.841],"t":153,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-299.303],"t":154,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-296.441],"t":155,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-293.22],"t":156,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-289.602],"t":157,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-285.543],"t":158,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-280.992],"t":159,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-275.89],"t":160,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-270.171],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-263.759],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-256.573],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-248.528],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-239.543],"t":165,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-229.563],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-218.577],"t":167,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-206.661],"t":168,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-194.011],"t":169,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-167.889],"t":171,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-155.239],"t":172,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-143.323],"t":173,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-132.337],"t":174,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-122.357],"t":175,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-113.372],"t":176,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-105.327],"t":177,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-98.141],"t":178,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-91.729],"t":179,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-86.01],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-80.908],"t":181,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-76.357],"t":182,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-72.298],"t":183,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-68.68],"t":184,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-65.459],"t":185,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-62.597],"t":186,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-60.059],"t":187,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-57.817],"t":188,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-55.844],"t":189,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-54.119],"t":190,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-52.621],"t":191,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.333],"t":192,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-50.239],"t":193,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-49.325],"t":194,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.579],"t":195,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.989],"t":196,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.544],"t":197,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.237],"t":198,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47.058],"t":199,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-47],"t":200,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},"a":{"a":0,"k":[0,-2,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Continue Y Position","np":3,"mn":"ADBE Slider Control","ix":1,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":0,"k":0,"ix":1}}]},{"ty":29,"nm":"Gaussian Blur","np":5,"mn":"ADBE Gaussian Blur 2","ix":2,"en":1,"ef":[{"ty":0,"nm":"Blurriness","mn":"ADBE Gaussian Blur 2-0001","ix":1,"v":{"a":0,"k":8,"ix":1}},{"ty":7,"nm":"Blur Dimensions","mn":"ADBE Gaussian Blur 2-0002","ix":2,"v":{"a":0,"k":1,"ix":2}},{"ty":7,"nm":"Repeat Edge Pixels","mn":"ADBE Gaussian Blur 2-0003","ix":3,"v":{"a":0,"k":1,"ix":3}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.32,"y":1},"o":{"x":0.82,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[21.75,-21.641],[21.75,-21.75],[21.75,-21.75]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.42,"y":0},"t":24,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,23.5],[21.75,-21.75],[21.75,-66.5]],"c":false}]},{"i":{"x":0.65,"y":1},"o":{"x":0.167,"y":0},"t":44,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.39,"y":1},"o":{"x":0.35,"y":0},"t":53,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,13.5],[21.75,-21.75],[21.75,-56.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.35,"y":0},"t":70,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":140,"s":[{"i":[[0,0],[0,11.75],[0,0]],"o":[[0,0],[0,-11.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":197,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.2,"y":1},"o":{"x":0.4,"y":0},"t":227,"s":[{"i":[[0,0],[-11.75,0],[0,0]],"o":[[0,0],[11.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":244,"s":[{"i":[[0,0],[-20.373,0],[-4.174,-10]],"o":[[4.292,-10],[20.228,0],[0,0]],"v":[[-11.25,18.5],[22,-21.5],[54.75,18.5]],"c":false}]},{"i":{"x":0.833,"y":1},"o":{"x":0.42,"y":0},"t":291,"s":[{"i":[[0,0],[-17.75,0],[-10.841,0]],"o":[[11.833,0],[17.583,0],[0,0]],"v":[[-31.25,-21.5],[22,-21.5],[74.75,-21.5]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":432,"s":[{"i":[[0,0],[0,17.75],[0,10.841]],"o":[[0,-11.833],[0,-17.583],[0,0]],"v":[[21.75,31.5],[21.75,-21.75],[21.75,-74.5]],"c":false}]},{"t":482,"s":[{"i":[[0,0],[0,17.75],[0,10.841]],"o":[[0,-11.833],[0,-17.583],[0,0]],"v":[[21.75,44.5],[21.75,-21.75],[21.75,-88.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-59,"s":[54]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":-4,"s":[58]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":0,"s":[58]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":20,"s":[27]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":111,"s":[27]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":130,"s":[58]},{"i":{"x":[0.17],"y":[1]},"o":{"x":[0.47],"y":[0]},"t":197,"s":[58]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":218,"s":[40]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":247,"s":[40]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[54]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":368,"s":[54]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":388,"s":[40]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":390,"s":[40]},{"t":405,"s":[52]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":127,"s":[49.5]},{"i":{"x":[0.32],"y":[1]},"o":{"x":[0.82],"y":[0]},"t":197,"s":[49.5]},{"t":222,"s":[30],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":247,"s":[30]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[49.5]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":432,"s":[49.5]},{"t":482,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":127,"s":[50.5]},{"i":{"x":[0.32],"y":[1]},"o":{"x":[0.82],"y":[0]},"t":197,"s":[50.5]},{"t":222,"s":[70],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":247,"s":[70]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":291,"s":[50.5]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.88],"y":[0]},"t":432,"s":[50.5]},{"t":482,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-21.75],"ix":2},"a":{"a":0,"k":[0,-21.75],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.42],"y":[0]},"t":-465,"s":[0]},{"t":-447,"s":[90]}],"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":"Bend","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":222,"s":[{"i":[[3.179,6.167],[0,-15.352],[-2.581,5.008]],"o":[[-2.881,-5.59],[0,13.869],[3.179,-6.167]],"v":[[-10.45,-10.166],[10.648,-0.036],[-10.45,9.228]],"c":true}]},{"i":{"x":0.999,"y":1},"o":{"x":0.42,"y":0},"t":237,"s":[{"i":[[3.179,8.221],[0,-20.465],[-2.581,6.675]],"o":[[-2.881,-7.451],[0,18.488],[3.179,-8.221]],"v":[[-25.45,-13.344],[-4.352,0.16],[-25.45,12.509]],"c":true}]},{"t":263,"s":[{"i":[[3.179,6.167],[0,-15.352],[-2.581,5.008]],"o":[[-2.881,-5.59],[0,13.869],[3.179,-6.167]],"v":[[-11.7,-10.166],[9.398,-0.036],[-11.7,9.228]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":1,"k":[{"t":212,"s":[0],"h":1},{"t":222,"s":[100],"h":1},{"t":247,"s":[0],"h":1}],"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":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":198,"st":-610,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":3,"nm":"All Overview Scroll","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":227,"s":[-640]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":244,"s":[-435.2]},{"t":329,"s":[-128]}],"ix":3},"y":{"a":0,"k":-400,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":22,"mn":"Pseudo/494931","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/494931-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/494931-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/494931-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/494931-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/494931-0005","ix":5,"v":0},{"ty":6,"nm":"Nulls are useless.","mn":"Pseudo/494931-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0007","ix":7,"v":0},{"ty":6,"nm":"They live in the Solids folder,","mn":"Pseudo/494931-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0009","ix":9,"v":0},{"ty":6,"nm":"must travel with projects, and","mn":"Pseudo/494931-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0011","ix":11,"v":0},{"ty":6,"nm":"may be deleted like footage.","mn":"Pseudo/494931-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0013","ix":13,"v":0},{"ty":6,"nm":"Don't use them anymore.","mn":"Pseudo/494931-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0015","ix":15,"v":0},{"ty":6,"nm":"Void - 0.7.1","mn":"Pseudo/494931-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0017","ix":17,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/494931-0018","ix":18,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0019","ix":19,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0020","ix":20,"v":0}]}],"ip":2,"op":446,"st":-37,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":3,"nm":"Initial Overview In","parent":11,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":113,"s":[-326]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[209]},{"t":148,"s":[206]}],"ix":3},"y":{"a":0,"k":532,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":22,"mn":"Pseudo/494931","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/494931-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/494931-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/494931-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/494931-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/494931-0005","ix":5,"v":0},{"ty":6,"nm":"Nulls are useless.","mn":"Pseudo/494931-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0007","ix":7,"v":0},{"ty":6,"nm":"They live in the Solids folder,","mn":"Pseudo/494931-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0009","ix":9,"v":0},{"ty":6,"nm":"must travel with projects, and","mn":"Pseudo/494931-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0011","ix":11,"v":0},{"ty":6,"nm":"may be deleted like footage.","mn":"Pseudo/494931-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0013","ix":13,"v":0},{"ty":6,"nm":"Don't use them anymore.","mn":"Pseudo/494931-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0015","ix":15,"v":0},{"ty":6,"nm":"Void - 0.7.1","mn":"Pseudo/494931-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0017","ix":17,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/494931-0018","ix":18,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0019","ix":19,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/494931-0020","ix":20,"v":0}]}],"ip":2,"op":446,"st":-37,"ct":1,"bm":0},{"ddd":0,"ind":13,"ty":3,"nm":"Loop App to Center","parent":12,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":-512,"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[0]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":394.666,"s":[-38.4]},{"t":428,"s":[-96]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":2,"op":446,"st":-57,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":15,"sr":1,"ks":{"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-256,0.001,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[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,0],[18.976,-48.115],[0,0],[14.69,-5.794],[0,0],[-48.115,-18.977],[0,0],[-5.794,-14.69],[0,0],[-18.977,48.115],[0,0],[-14.69,5.794],[0,0],[48.115,18.976],[0,0],[5.794,14.69]],"o":[[-18.977,-48.115],[0,0],[-5.794,14.69],[0,0],[-48.115,18.976],[0,0],[14.69,5.794],[0,0],[18.976,48.115],[0,0],[5.794,-14.69],[0,0],[48.115,-18.977],[0,0],[-14.69,-5.794],[0,0]],"v":[[53.024,-96.229],[-53.024,-96.229],[-56.162,-88.274],[-88.274,-56.162],[-96.229,-53.024],[-96.229,53.024],[-88.274,56.161],[-56.162,88.273],[-53.024,96.228],[53.024,96.228],[56.161,88.273],[88.273,56.161],[96.228,53.024],[96.228,-53.024],[88.273,-56.162],[56.161,-88.274]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":57,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-45,"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":"Star 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":110,"op":446,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":12,"sr":1,"ks":{"o":{"a":0,"k":50,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[-768]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":393,"s":[-984]},{"t":418,"s":[-1308]}],"ix":3},"y":{"a":0,"k":0,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[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,0],[8.421,-4.724],[0,0],[4.631,-0.057],[0,0],[4.931,-8.301],[0,0],[3.982,-2.365],[0,0],[0.12,-9.654],[0,0],[2.266,-4.039],[0,0],[-4.724,-8.421],[0,0],[-0.057,-4.631],[0,0],[-8.301,-4.931],[0,0],[-2.365,-3.982],[0,0],[-9.654,-0.119],[0,0],[-4.039,-2.266],[0,0],[-8.421,4.724],[0,0],[-4.631,0.057],[0,0],[-4.931,8.301],[0,0],[-3.982,2.365],[0,0],[-0.119,9.654],[0,0],[-2.266,4.039],[0,0],[4.724,8.421],[0,0],[0.057,4.631],[0,0],[8.301,4.931],[0,0],[2.365,3.982],[0,0],[9.654,0.12],[0,0],[4.039,2.266]],"o":[[-8.421,-4.724],[0,0],[-4.039,2.266],[0,0],[-9.654,0.12],[0,0],[-2.365,3.982],[0,0],[-8.301,4.931],[0,0],[-0.057,4.631],[0,0],[-4.724,8.421],[0,0],[2.266,4.039],[0,0],[0.12,9.655],[0,0],[3.982,2.365],[0,0],[4.931,8.301],[0,0],[4.631,0.057],[0,0],[8.421,4.724],[0,0],[4.039,-2.266],[0,0],[9.654,-0.119],[0,0],[2.365,-3.982],[0,0],[8.301,-4.931],[0,0],[0.057,-4.631],[0,0],[4.724,-8.421],[0,0],[-2.266,-4.039],[0,0],[-0.119,-9.654],[0,0],[-3.982,-2.365],[0,0],[-4.931,-8.301],[0,0],[-4.631,-0.057],[0,0]],"v":[[13.557,-175.395],[-13.557,-175.395],[-36.472,-162.541],[-49.685,-159.001],[-75.957,-158.675],[-99.438,-145.118],[-112.856,-122.529],[-122.529,-112.856],[-145.118,-99.438],[-158.675,-75.957],[-159.001,-49.685],[-162.541,-36.472],[-175.395,-13.557],[-175.395,13.557],[-162.541,36.472],[-159.001,49.685],[-158.675,75.957],[-145.118,99.438],[-122.529,112.856],[-112.856,122.529],[-99.438,145.119],[-75.957,158.675],[-49.685,159.001],[-36.472,162.541],[-13.557,175.395],[13.557,175.395],[36.472,162.541],[49.685,159.001],[75.957,158.675],[99.438,145.119],[112.856,122.529],[122.529,112.856],[145.119,99.438],[158.675,75.957],[159.001,49.685],[162.541,36.472],[175.395,13.557],[175.395,-13.557],[162.541,-36.472],[159.001,-49.685],[158.675,-75.957],[145.119,-99.438],[122.529,-112.856],[112.856,-122.529],[99.438,-145.118],[75.957,-158.675],[49.685,-159.001],[36.472,-162.541]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":28,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[70,70],"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":"Star 9","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":110,"op":446,"st":-37,"ct":1,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":13,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":245,"s":[50]},{"i":{"x":[0.833],"y":[0.619]},"o":{"x":[0.167],"y":[0]},"t":329,"s":[100]},{"i":{"x":[0.82],"y":[0]},"o":{"x":[0.78],"y":[0]},"t":409,"s":[95]},{"t":434,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":9,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[220]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":393,"s":[644]},{"t":418,"s":[1280]}],"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[220]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":393,"s":[452]},{"t":418,"s":[800]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":388,"s":[60]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":393,"s":[43.2]},{"t":418,"s":[18]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"k":[{"s":[60],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"k":[{"s":[60],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"k":[{"s":[60],"t":388,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[59.624],"t":389,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[58.412],"t":390,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[56.074],"t":391,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[51.893],"t":392,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[43.2],"t":393,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.301],"t":394,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.943],"t":395,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.417],"t":396,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.7],"t":397,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.435],"t":398,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.457],"t":399,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.676],"t":400,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.04],"t":401,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.514],"t":402,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.074],"t":403,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.704],"t":404,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.392],"t":405,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.127],"t":406,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.902],"t":407,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.713],"t":408,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.553],"t":409,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.419],"t":410,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.309],"t":411,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.218],"t":412,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.146],"t":413,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.09],"t":414,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.049],"t":415,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.021],"t":416,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[18.005],"t":417,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]},{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":2,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":1,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[-404,496],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-400.913,496],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-390.163,496],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-368.705,496],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-332.338,496],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-277.426,496],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-207.497,496],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-136.5,496],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-75.727,496],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-27.215,496],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[10.925,496],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[40.948,496],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[64.643,496],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[83.326,496],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[97.961,496],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[109.262,496],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[117.768,496],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[123.898,496],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[127.979,496],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[130.276,496],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[131,496],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[130.962,496],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[130.854,496],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[130.688,496],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[130.474,496],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[130.222,496],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[129.944,496],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[129.65,496],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[129.35,496],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[129.056,496],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[128.778,496],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[128.526,496],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[128.312,496],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[128.146,496],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[128.038,496],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[128,496],"t":227,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[128.392,496],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[129.572,496],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[131.559,496],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[134.392,496],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[138.126,496],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[142.834,496],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[148.609,496],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[155.569,496],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[163.865,496],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[173.691,496],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[185.306,496],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[199.058,496],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[215.441,496],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[235.191,496],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[259.487,496],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[290.461,496],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[332.8,496],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[379.683,496],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[416.51,496],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[444.279,496],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[465.71,496],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[482.832,496],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[496.935,496],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[508.837,496],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[519.075,496],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[528.016,496],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[535.922,496],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[542.983,496],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[549.341,496],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[555.107,496],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[560.368,496],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[565.192,496],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[569.635,496],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[573.743,496],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[577.554,496],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[581.1,496],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[584.409,496],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[587.503,496],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[590.403,496],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[593.127,496],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[595.688,496],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[598.101,496],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[600.377,496],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[602.527,496],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[604.56,496],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[606.484,496],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[608.307,496],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[610.036,496],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[611.676,496],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[613.234,496],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[614.714,496],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[616.12,496],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[617.458,496],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[618.731,496],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[619.943,496],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[621.096,496],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[622.194,496],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[623.24,496],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[624.236,496],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[625.185,496],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[626.088,496],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[626.949,496],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[627.769,496],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[628.549,496],"t":291,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[629.293,496],"t":292,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[630,496],"t":293,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[630.673,496],"t":294,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[631.313,496],"t":295,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[631.922,496],"t":296,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[632.5,496],"t":297,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[633.049,496],"t":298,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[633.571,496],"t":299,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[634.065,496],"t":300,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[634.533,496],"t":301,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[634.977,496],"t":302,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[635.396,496],"t":303,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[635.792,496],"t":304,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[636.166,496],"t":305,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[636.518,496],"t":306,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[636.85,496],"t":307,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[637.453,496],"t":309,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[637.98,496],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[638.437,496],"t":313,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[638.999,496],"t":316,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[639.538,496],"t":320,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,495.519],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,494.021],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,491.313],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,487.024],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,480.422],"t":393,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,469.753],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,450.003],"t":395,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,434.966],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,426.942],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,421.806],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,418.126],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,415.314],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,413.073],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,411.237],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,409.703],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,408.402],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,407.285],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,406.319],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,405.478],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,404.741],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,404.094],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,403.523],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,403.02],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,402.575],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,402.183],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,401.836],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,401.531],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,401.263],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,401.029],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,400.65],"t":419,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,400.266],"t":422,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-33.114,0],[0,0],[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114]],"o":[[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114],[0,0],[-33.114,0],[0,0]],"v":[[-110,-50],[-50,-110],[50,-110],[110,-50],[110,50],[50,110],[-50,110],[-110,50]],"c":true}],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-32.906,0],[0,0],[0,-32.906],[0,0],[32.906,0],[0,0],[0,32.906]],"o":[[0,-32.906],[0,0],[32.906,0],[0,0],[0,32.906],[0,0],[-32.906,0],[0,0]],"v":[[-114.749,-52.975],[-55.125,-112.598],[55.125,-112.598],[114.749,-52.975],[114.749,52.975],[55.125,112.598],[-55.125,112.598],[-114.749,52.975]],"c":true}],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-32.237,0],[0,0],[0,-32.237],[0,0],[32.237,0],[0,0],[0,32.237]],"o":[[0,-32.237],[0,0],[32.237,0],[0,0],[0,32.237],[0,0],[-32.237,0],[0,0]],"v":[[-130.044,-62.556],[-71.633,-120.968],[71.633,-120.968],[130.044,-62.556],[130.044,62.556],[71.633,120.968],[-71.633,120.968],[-130.044,62.556]],"c":true}],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-30.947,0],[0,0],[0,-30.947],[0,0],[30.947,0],[0,0],[0,30.947]],"o":[[0,-30.947],[0,0],[30.947,0],[0,0],[0,30.947],[0,0],[-30.947,0],[0,0]],"v":[[-159.544,-81.035],[-103.47,-137.109],[103.47,-137.109],[159.544,-81.035],[159.544,81.035],[103.47,137.109],[-103.47,137.109],[-159.544,81.035]],"c":true}],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-28.64,0],[0,0],[0,-28.64],[0,0],[28.64,0],[0,0],[0,28.64]],"o":[[0,-28.64],[0,0],[28.64,0],[0,0],[0,28.64],[0,0],[-28.64,0],[0,0]],"v":[[-212.299,-114.082],[-160.406,-165.975],[160.406,-165.975],[212.299,-114.082],[212.299,114.082],[160.406,165.975],[-160.406,165.975],[-212.299,114.082]],"c":true}],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-23.842,0],[0,0],[0,-23.842],[0,0],[23.842,0],[0,0],[0,23.842]],"o":[[0,-23.842],[0,0],[23.842,0],[0,0],[0,23.842],[0,0],[-23.842,0],[0,0]],"v":[[-322,-182.8],[-278.8,-226],[278.8,-226],[322,-182.8],[322,182.8],[278.8,226],[-278.8,226],[-322,182.8]],"c":true}],"t":393,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-18.379,0],[0,0],[0,-18.379],[0,0],[18.379,0],[0,0],[0,18.379]],"o":[[0,-18.379],[0,0],[18.379,0],[0,0],[0,18.379],[0,0],[-18.379,0],[0,0]],"v":[[-446.921,-261.052],[-413.62,-294.353],[413.62,-294.353],[446.921,-261.052],[446.921,261.052],[413.62,294.353],[-413.62,294.353],[-446.921,261.052]],"c":true}],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-15.973,0],[0,0],[0,-15.973],[0,0],[15.973,0],[0,0],[0,15.973]],"o":[[0,-15.973],[0,0],[15.973,0],[0,0],[0,15.973],[0,0],[-15.973,0],[0,0]],"v":[[-501.914,-295.501],[-472.972,-324.444],[472.972,-324.444],[501.914,-295.501],[501.914,295.501],[472.972,324.444],[-472.972,324.444],[-501.914,295.501]],"c":true}],"t":395,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-14.579,0],[0,0],[0,-14.579],[0,0],[14.579,0],[0,0],[0,14.579]],"o":[[0,-14.579],[0,0],[14.579,0],[0,0],[0,14.579],[0,0],[-14.579,0],[0,0]],"v":[[-533.79,-315.468],[-507.373,-341.885],[507.373,-341.885],[533.79,-315.468],[533.79,315.468],[507.373,341.885],[-507.373,341.885],[-533.79,315.468]],"c":true}],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-13.632,0],[0,0],[0,-13.632],[0,0],[13.632,0],[0,0],[0,13.632]],"o":[[0,-13.632],[0,0],[13.632,0],[0,0],[0,13.632],[0,0],[-13.632,0],[0,0]],"v":[[-555.448,-329.035],[-530.748,-353.736],[530.748,-353.736],[555.448,-329.035],[555.448,329.035],[530.748,353.736],[-530.748,353.736],[-555.448,329.035]],"c":true}],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-12.934,0],[0,0],[0,-12.934],[0,0],[12.934,0],[0,0],[0,12.934]],"o":[[0,-12.934],[0,0],[12.934,0],[0,0],[0,12.934],[0,0],[-12.934,0],[0,0]],"v":[[-571.413,-339.036],[-547.978,-362.471],[547.978,-362.471],[571.413,-339.036],[571.413,339.036],[547.978,362.471],[-547.978,362.471],[-571.413,339.036]],"c":true}],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-12.394,0],[0,0],[0,-12.394],[0,0],[12.394,0],[0,0],[0,12.394]],"o":[[0,-12.394],[0,0],[12.394,0],[0,0],[0,12.394],[0,0],[-12.394,0],[0,0]],"v":[[-583.761,-346.771],[-561.305,-369.228],[561.305,-369.228],[583.761,-346.771],[583.761,346.771],[561.305,369.228],[-561.305,369.228],[-583.761,346.771]],"c":true}],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.963,0],[0,0],[0,-11.963],[0,0],[11.963,0],[0,0],[0,11.963]],"o":[[0,-11.963],[0,0],[11.963,0],[0,0],[0,11.963],[0,0],[-11.963,0],[0,0]],"v":[[-593.612,-352.942],[-571.936,-374.618],[571.936,-374.618],[593.612,-352.942],[593.612,352.942],[571.936,374.618],[-571.936,374.618],[-593.612,352.942]],"c":true}],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.612,0],[0,0],[0,-11.612],[0,0],[11.612,0],[0,0],[0,11.612]],"o":[[0,-11.612],[0,0],[11.612,0],[0,0],[0,11.612],[0,0],[-11.612,0],[0,0]],"v":[[-601.64,-357.97],[-580.6,-379.01],[580.6,-379.01],[601.64,-357.97],[601.64,357.97],[580.6,379.01],[-580.6,379.01],[-601.64,357.97]],"c":true}],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.322,0],[0,0],[0,-11.322],[0,0],[11.322,0],[0,0],[0,11.322]],"o":[[0,-11.322],[0,0],[11.322,0],[0,0],[0,11.322],[0,0],[-11.322,0],[0,0]],"v":[[-608.278,-362.129],[-587.764,-382.643],[587.764,-382.643],[608.278,-362.129],[608.278,362.129],[587.764,382.643],[-587.764,382.643],[-608.278,362.129]],"c":true}],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-11.079,0],[0,0],[0,-11.079],[0,0],[11.079,0],[0,0],[0,11.079]],"o":[[0,-11.079],[0,0],[11.079,0],[0,0],[0,11.079],[0,0],[-11.079,0],[0,0]],"v":[[-613.825,-365.603],[-593.75,-385.678],[593.75,-385.678],[613.825,-365.603],[613.825,365.603],[593.75,385.678],[-593.75,385.678],[-613.825,365.603]],"c":true}],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.875,0],[0,0],[0,-10.875],[0,0],[10.875,0],[0,0],[0,10.875]],"o":[[0,-10.875],[0,0],[10.875,0],[0,0],[0,10.875],[0,0],[-10.875,0],[0,0]],"v":[[-618.492,-368.527],[-598.788,-388.232],[598.788,-388.232],[618.492,-368.527],[618.492,368.527],[598.788,388.232],[-598.788,388.232],[-618.492,368.527]],"c":true}],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.702,0],[0,0],[0,-10.702],[0,0],[10.702,0],[0,0],[0,10.702]],"o":[[0,-10.702],[0,0],[10.702,0],[0,0],[0,10.702],[0,0],[-10.702,0],[0,0]],"v":[[-622.438,-370.999],[-603.047,-390.391],[603.047,-390.391],[622.438,-370.999],[622.438,370.999],[603.047,390.391],[-603.047,390.391],[-622.438,370.999]],"c":true}],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.556,0],[0,0],[0,-10.556],[0,0],[10.556,0],[0,0],[0,10.556]],"o":[[0,-10.556],[0,0],[10.556,0],[0,0],[0,10.556],[0,0],[-10.556,0],[0,0]],"v":[[-625.781,-373.093],[-606.654,-392.22],[606.654,-392.22],[625.781,-373.093],[625.781,373.093],[606.654,392.22],[-606.654,392.22],[-625.781,373.093]],"c":true}],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.432,0],[0,0],[0,-10.432],[0,0],[10.432,0],[0,0],[0,10.432]],"o":[[0,-10.432],[0,0],[10.432,0],[0,0],[0,10.432],[0,0],[-10.432,0],[0,0]],"v":[[-628.613,-374.867],[-609.711,-393.769],[609.711,-393.769],[628.613,-374.867],[628.613,374.867],[609.711,393.769],[-609.711,393.769],[-628.613,374.867]],"c":true}],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.327,0],[0,0],[0,-10.327],[0,0],[10.328,0],[0,0],[0,10.328]],"o":[[0,-10.327],[0,0],[10.328,0],[0,0],[0,10.328],[0,0],[-10.327,0],[0,0]],"v":[[-631.008,-376.367],[-612.295,-395.08],[612.295,-395.08],[631.008,-376.367],[631.008,376.367],[612.295,395.08],[-612.295,395.08],[-631.008,376.367]],"c":true}],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.239,0],[0,0],[0,-10.239],[0,0],[10.239,0],[0,0],[0,10.239]],"o":[[0,-10.239],[0,0],[10.239,0],[0,0],[0,10.239],[0,0],[-10.239,0],[0,0]],"v":[[-633.024,-377.63],[-614.471,-396.183],[614.471,-396.183],[633.024,-377.63],[633.024,377.63],[614.471,396.183],[-614.471,396.183],[-633.024,377.63]],"c":true}],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.166,0],[0,0],[0,-10.166],[0,0],[10.166,0],[0,0],[0,10.166]],"o":[[0,-10.166],[0,0],[10.166,0],[0,0],[0,10.166],[0,0],[-10.166,0],[0,0]],"v":[[-634.71,-378.686],[-616.291,-397.106],[616.291,-397.106],[634.71,-378.686],[634.71,378.686],[616.291,397.106],[-616.291,397.106],[-634.71,378.686]],"c":true}],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.104,0],[0,0],[0,-10.104],[0,0],[10.104,0],[0,0],[0,10.104]],"o":[[0,-10.104],[0,0],[10.104,0],[0,0],[0,10.104],[0,0],[-10.104,0],[0,0]],"v":[[-636.106,-379.561],[-617.797,-397.869],[617.797,-397.869],[636.106,-379.561],[636.106,379.561],[617.797,397.869],[-617.797,397.869],[-636.106,379.561]],"c":true}],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.055,0],[0,0],[0,-10.055],[0,0],[10.055,0],[0,0],[0,10.055]],"o":[[0,-10.055],[0,0],[10.055,0],[0,0],[0,10.055],[0,0],[-10.055,0],[0,0]],"v":[[-637.245,-380.274],[-619.026,-398.492],[619.026,-398.492],[637.245,-380.274],[637.245,380.274],[619.026,398.492],[-619.026,398.492],[-637.245,380.274]],"c":true}],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-10.015,0],[0,0],[0,-10.015],[0,0],[10.015,0],[0,0],[0,10.015]],"o":[[0,-10.015],[0,0],[10.015,0],[0,0],[0,10.015],[0,0],[-10.015,0],[0,0]],"v":[[-638.154,-380.844],[-620.008,-398.99],[620.008,-398.99],[638.154,-380.844],[638.154,380.844],[620.008,398.99],[-620.008,398.99],[-638.154,380.844]],"c":true}],"t":413,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.984,0],[0,0],[0,-9.984],[0,0],[9.984,0],[0,0],[0,9.984]],"o":[[0,-9.984],[0,0],[9.984,0],[0,0],[0,9.984],[0,0],[-9.984,0],[0,0]],"v":[[-638.859,-381.285],[-620.769,-399.376],[620.769,-399.376],[638.859,-381.285],[638.859,381.285],[620.769,399.376],[-620.769,399.376],[-638.859,381.285]],"c":true}],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.961,0],[0,0],[0,-9.961],[0,0],[9.961,0],[0,0],[0,9.961]],"o":[[0,-9.961],[0,0],[9.961,0],[0,0],[0,9.961],[0,0],[-9.961,0],[0,0]],"v":[[-639.379,-381.611],[-621.33,-399.66],[621.33,-399.66],[639.379,-381.611],[639.379,381.611],[621.33,399.66],[-621.33,399.66],[-639.379,381.611]],"c":true}],"t":415,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.946,0],[0,0],[0,-9.946],[0,0],[9.946,0],[0,0],[0,9.946]],"o":[[0,-9.946],[0,0],[9.946,0],[0,0],[0,9.946],[0,0],[-9.946,0],[0,0]],"v":[[-639.733,-381.833],[-621.712,-399.854],[621.712,-399.854],[639.733,-381.833],[639.733,381.833],[621.712,399.854],[-621.712,399.854],[-639.733,381.833]],"c":true}],"t":416,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-9.937,0],[0,0],[0,-9.937],[0,0],[9.937,0],[0,0],[0,9.937]],"o":[[0,-9.937],[0,0],[9.937,0],[0,0],[0,9.937],[0,0],[-9.937,0],[0,0]],"v":[[-639.935,-381.959],[-621.93,-399.965],[621.93,-399.965],[639.935,-381.959],[639.935,381.959],[621.93,399.965],[-621.93,399.965],[-639.935,381.959]],"c":true}],"t":417,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":53,"op":446,"st":-37,"ct":1,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":12,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.83],"y":[0.83]},"o":{"x":[0.52],"y":[0]},"t":227,"s":[50]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.17],"y":[0.17]},"t":245,"s":[100]},{"t":262,"s":[50]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.8,"y":0.15},"o":{"x":0.3,"y":0},"t":388,"s":[-256,0,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.7},"t":393,"s":[-44,0,0],"to":[0,0,0],"ti":[0,0,0]},{"t":418,"s":[274,0,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[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,0],[18.976,-48.115],[0,0],[14.69,-5.794],[0,0],[-48.115,-18.977],[0,0],[-5.794,-14.69],[0,0],[-18.977,48.115],[0,0],[-14.69,5.794],[0,0],[48.115,18.976],[0,0],[5.794,14.69]],"o":[[-18.977,-48.115],[0,0],[-5.794,14.69],[0,0],[-48.115,18.976],[0,0],[14.69,5.794],[0,0],[18.976,48.115],[0,0],[5.794,-14.69],[0,0],[48.115,-18.977],[0,0],[-14.69,-5.794],[0,0]],"v":[[53.024,-96.229],[-53.024,-96.229],[-56.162,-88.274],[-88.274,-56.162],[-96.229,-53.024],[-96.229,53.024],[-88.274,56.161],[-56.162,88.273],[-53.024,96.228],[53.024,96.228],[56.161,88.273],[88.273,56.161],[96.228,53.024],[96.228,-53.024],[88.273,-56.162],[56.161,-88.274]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"rd","nm":"Round Corners 1","r":{"a":0,"k":57,"ix":1},"ix":2,"mn":"ADBE Vector Filter - RC","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-45,"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":"Star 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":110,"op":446,"st":20,"ct":1,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".onSurfaceOverview","cl":"onSurfaceOverview","parent":11,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":7,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":19,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":31,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":49,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":71,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.52],"y":[0]},"t":227,"s":[100]},{"t":245,"s":[50]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.15,"y":1},"o":{"x":0.37,"y":0},"t":53,"s":[206,792,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.15,"y":0.15},"o":{"x":0.37,"y":0.37},"t":101,"s":[206,421,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.8,"y":0.15},"o":{"x":0.3,"y":0},"t":388,"s":[206,421,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.1,"y":1},"o":{"x":0.05,"y":0.7},"t":393,"s":[418,421,0],"to":[0,0,0],"ti":[0,0,0]},{"t":418,"s":[736,421,0]}],"ix":2,"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":445,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Rectangle Independent Corners","np":19,"mn":"Pseudo/0.16410552199068107","ix":1,"en":1,"ef":[{"ty":7,"nm":"Align","mn":"Pseudo/0.16410552199068107-0001","ix":1,"v":{"a":0,"k":2,"ix":1}},{"ty":6,"nm":"Size","mn":"Pseudo/0.16410552199068107-0002","ix":2,"v":0},{"ty":0,"nm":"w","mn":"Pseudo/0.16410552199068107-0003","ix":3,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":63,"s":[1282]},{"t":101,"s":[352],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":113,"s":[352]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[216]},{"t":148,"s":[220]}],"ix":3}},{"ty":0,"nm":"h","mn":"Pseudo/0.16410552199068107-0004","ix":4,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":63,"s":[582]},{"t":101,"s":[382],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":113,"s":[382]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[216]},{"t":148,"s":[220]}],"ix":4}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0005","ix":5,"v":0},{"ty":6,"nm":"Rounding","mn":"Pseudo/0.16410552199068107-0006","ix":6,"v":0},{"ty":0,"nm":"tl","mn":"Pseudo/0.16410552199068107-0007","ix":7,"v":{"a":1,"k":[{"i":{"x":[0.15],"y":[1]},"o":{"x":[0.37],"y":[0]},"t":63,"s":[90]},{"t":101,"s":[80],"h":1},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.563],"y":[0]},"t":113,"s":[80]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[64]},{"t":148,"s":[60]}],"ix":7}},{"ty":0,"nm":"tr","mn":"Pseudo/0.16410552199068107-0008","ix":8,"v":{"k":[{"s":[89.923],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"br","mn":"Pseudo/0.16410552199068107-0009","ix":9,"v":{"k":[{"s":[89.923],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":0,"nm":"bl","mn":"Pseudo/0.16410552199068107-0010","ix":10,"v":{"k":[{"s":[89.923],"t":65,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.815],"t":66,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.645],"t":67,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.4],"t":68,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[89.062],"t":69,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.611],"t":70,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[88.038],"t":71,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[87.351],"t":72,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.594],"t":73,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.829],"t":74,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[85.109],"t":75,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.46],"t":76,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.888],"t":77,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[83.386],"t":78,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.947],"t":79,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.563],"t":80,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[82.224],"t":81,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.926],"t":82,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.662],"t":83,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.429],"t":84,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.222],"t":85,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[81.039],"t":86,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.877],"t":87,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.733],"t":88,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.607],"t":89,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.496],"t":90,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.399],"t":91,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.315],"t":92,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.243],"t":93,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.182],"t":94,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.13],"t":95,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80.055],"t":97,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[80],"t":113,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.954],"t":114,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.8],"t":115,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.502],"t":116,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[79.003],"t":117,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[78.213],"t":118,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[76.975],"t":119,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.077],"t":120,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.575],"t":121,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[70.212],"t":122,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.446],"t":123,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[67.182],"t":124,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[66.261],"t":125,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.579],"t":126,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[65.069],"t":127,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.69],"t":128,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.414],"t":129,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.219],"t":130,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.092],"t":131,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64.022],"t":132,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[64],"t":133,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.949],"t":134,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.806],"t":135,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.584],"t":136,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[63.298],"t":137,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.963],"t":138,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.592],"t":139,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.2],"t":140,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.8],"t":141,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.408],"t":142,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[61.037],"t":143,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.702],"t":144,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.416],"t":145,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.194],"t":146,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[60.051],"t":147,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0011","ix":11,"v":0},{"ty":6,"nm":"Alignment","mn":"Pseudo/0.16410552199068107-0012","ix":12,"v":0},{"ty":0,"nm":"X Anchor %","mn":"Pseudo/0.16410552199068107-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":0,"nm":"Y Anchor %","mn":"Pseudo/0.16410552199068107-0014","ix":14,"v":{"a":0,"k":0,"ix":14}},{"ty":0,"nm":"X Position","mn":"Pseudo/0.16410552199068107-0015","ix":15,"v":{"a":0,"k":0,"ix":15}},{"ty":0,"nm":"Y Position","mn":"Pseudo/0.16410552199068107-0016","ix":16,"v":{"a":0,"k":0,"ix":16}},{"ty":6,"nm":"Rectangle Independent Corners","mn":"Pseudo/0.16410552199068107-0017","ix":17,"v":0}]},{"ty":5,"nm":"Global Position","np":4,"mn":"Pseudo/88900","ix":2,"en":1,"ef":[{"ty":10,"nm":"Master Parent","mn":"Pseudo/88900-0001","ix":1,"v":{"a":0,"k":1,"ix":1}},{"ty":3,"nm":"Global Position","mn":"Pseudo/88900-0002","ix":2,"v":{"k":[{"s":[640,755.589],"t":54,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,754.267],"t":55,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,751.886],"t":56,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,748.26],"t":57,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,743.161],"t":58,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,736.32],"t":59,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,727.415],"t":60,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,716.105],"t":61,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,702.071],"t":62,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,685.151],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,665.524],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,643.868],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,621.28],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,598.94],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,577.747],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,558.183],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,540.395],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,524.343],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,509.904],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,496.913],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,485.207],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,474.647],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,465.101],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,456.453],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,448.613],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,441.496],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,435.03],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,429.155],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,423.816],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,418.969],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,414.57],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,410.583],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,406.979],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,403.731],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,400.809],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,398.194],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,395.866],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,393.807],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,392],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,390.43],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,389.083],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,387.948],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,387.012],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,386.266],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,385.7],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640,385.306],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[640.392,385],"t":228,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[641.572,385],"t":229,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[643.559,385],"t":230,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[646.392,385],"t":231,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[650.126,385],"t":232,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[654.834,385],"t":233,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[660.609,385],"t":234,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[667.569,385],"t":235,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[675.865,385],"t":236,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[685.691,385],"t":237,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[697.306,385],"t":238,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[711.058,385],"t":239,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[727.441,385],"t":240,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[747.191,385],"t":241,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[771.487,385],"t":242,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[802.461,385],"t":243,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[844.8,385],"t":244,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[891.683,385],"t":245,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[928.51,385],"t":246,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[956.279,385],"t":247,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[977.71,385],"t":248,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[994.832,385],"t":249,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1008.935,385],"t":250,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1020.837,385],"t":251,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1031.075,385],"t":252,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1040.016,385],"t":253,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1047.922,385],"t":254,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1054.983,385],"t":255,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1061.341,385],"t":256,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1067.107,385],"t":257,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1072.368,385],"t":258,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1077.192,385],"t":259,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1081.635,385],"t":260,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1085.743,385],"t":261,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1089.554,385],"t":262,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1093.1,385],"t":263,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1096.409,385],"t":264,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1099.503,385],"t":265,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1102.403,385],"t":266,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1105.127,385],"t":267,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1107.688,385],"t":268,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1110.101,385],"t":269,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1112.377,385],"t":270,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1114.527,385],"t":271,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1116.56,385],"t":272,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1118.484,385],"t":273,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1120.307,385],"t":274,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1122.036,385],"t":275,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1123.676,385],"t":276,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1125.234,385],"t":277,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1126.714,385],"t":278,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1128.12,385],"t":279,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1129.458,385],"t":280,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1130.731,385],"t":281,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1131.943,385],"t":282,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1133.096,385],"t":283,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1134.194,385],"t":284,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1135.24,385],"t":285,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1136.236,385],"t":286,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1137.185,385],"t":287,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1138.088,385],"t":288,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1138.949,385],"t":289,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1139.769,385],"t":290,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1140.549,385],"t":291,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1141.293,385],"t":292,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1142,385],"t":293,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1142.673,385],"t":294,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1143.313,385],"t":295,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1143.922,385],"t":296,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1145.049,385],"t":298,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1146.065,385],"t":300,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1146.977,385],"t":302,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1147.792,385],"t":304,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1148.85,385],"t":307,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1149.98,385],"t":311,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1150.999,385],"t":316,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1152,385],"t":388,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1156.749,385],"t":389,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1172.045,385],"t":390,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1201.545,385],"t":391,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1254.302,385],"t":392,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1364,385],"t":393,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1488.923,385],"t":394,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1543.913,385],"t":395,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1575.788,385],"t":396,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1597.447,385],"t":397,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1613.413,385],"t":398,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1625.761,385],"t":399,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1635.612,385],"t":400,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1643.64,385],"t":401,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1650.277,385],"t":402,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1655.824,385],"t":403,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1660.491,385],"t":404,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1664.438,385],"t":405,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1667.78,385],"t":406,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1670.612,385],"t":407,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1673.008,385],"t":408,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1675.024,385],"t":409,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1676.711,385],"t":410,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1678.106,385],"t":411,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1679.245,385],"t":412,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[1680.859,385],"t":414,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]}}]}],"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"k":[{"s":[{"i":[[0,0],[-49.671,0],[0,0],[0,-49.671],[0,0],[49.671,0],[0,0],[0,49.671]],"o":[[0,-49.671],[0,0],[49.671,0],[0,0],[0,49.671],[0,0],[-49.671,0],[0,0]],"v":[[-641,90],[-551,0],[551,0],[641,90],[641,492],[551,582],[-551,582],[-641,492]],"c":true}],"t":63,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.661,0],[0,0],[0,-49.661],[0,0],[49.661,0],[0,0],[0,49.661]],"o":[[0,-49.661],[0,0],[49.661,0],[0,0],[0,49.661],[0,0],[-49.661,0],[0,0]],"v":[[-640.166,89.982],[-550.184,0],[550.184,0],[640.166,89.982],[640.166,491.659],[550.184,581.641],[-550.184,581.641],[-640.166,491.659]],"c":true}],"t":64,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.629,0],[0,0],[0,-49.629],[0,0],[49.629,0],[0,0],[0,49.629]],"o":[[0,-49.629],[0,0],[49.629,0],[0,0],[0,49.629],[0,0],[-49.629,0],[0,0]],"v":[[-637.437,89.923],[-547.513,0],[547.513,0],[637.437,89.923],[637.437,490.544],[547.513,580.467],[-547.513,580.467],[-637.437,490.544]],"c":true}],"t":65,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.569,0],[0,0],[0,-49.569],[0,0],[49.569,0],[0,0],[0,49.569]],"o":[[0,-49.569],[0,0],[49.569,0],[0,0],[0,49.569],[0,0],[-49.569,0],[0,0]],"v":[[-632.398,89.815],[-542.583,0],[542.583,0],[632.398,89.815],[632.398,488.485],[542.583,578.3],[-542.583,578.3],[-632.398,488.485]],"c":true}],"t":66,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.475,0],[0,0],[0,-49.475],[0,0],[49.475,0],[0,0],[0,49.475]],"o":[[0,-49.475],[0,0],[49.475,0],[0,0],[0,49.475],[0,0],[-49.475,0],[0,0]],"v":[[-624.515,89.645],[-534.87,0],[534.87,0],[624.515,89.645],[624.515,485.264],[534.87,574.91],[-534.87,574.91],[-624.515,485.264]],"c":true}],"t":67,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.34,0],[0,0],[0,-49.34],[0,0],[49.34,0],[0,0],[0,49.34]],"o":[[0,-49.34],[0,0],[49.34,0],[0,0],[0,49.34],[0,0],[-49.34,0],[0,0]],"v":[[-613.109,89.4],[-523.709,0],[523.709,0],[613.109,89.4],[613.109,480.604],[523.709,570.004],[-523.709,570.004],[-613.109,480.604]],"c":true}],"t":68,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-49.153,0],[0,0],[0,-49.153],[0,0],[49.153,0],[0,0],[0,49.153]],"o":[[0,-49.153],[0,0],[49.153,0],[0,0],[0,49.153],[0,0],[-49.153,0],[0,0]],"v":[[-597.362,89.062],[-508.301,0],[508.301,0],[597.362,89.062],[597.362,474.17],[508.301,563.231],[-508.301,563.231],[-597.362,474.17]],"c":true}],"t":69,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.905,0],[0,0],[0,-48.905],[0,0],[48.905,0],[0,0],[0,48.905]],"o":[[0,-48.905],[0,0],[48.905,0],[0,0],[0,48.905],[0,0],[-48.905,0],[0,0]],"v":[[-576.424,88.611],[-487.812,0],[487.813,0],[576.424,88.611],[576.424,465.614],[487.813,554.225],[-487.812,554.225],[-576.424,465.614]],"c":true}],"t":70,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.588,0],[0,0],[0,-48.588],[0,0],[48.588,0],[0,0],[0,48.588]],"o":[[0,-48.588],[0,0],[48.588,0],[0,0],[0,48.588],[0,0],[-48.588,0],[0,0]],"v":[[-549.762,88.038],[-461.724,0],[461.724,0],[549.762,88.038],[549.762,454.72],[461.724,542.758],[-461.724,542.758],[-549.762,454.72]],"c":true}],"t":71,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-48.209,0],[0,0],[0,-48.209],[0,0],[48.209,0],[0,0],[0,48.209]],"o":[[0,-48.209],[0,0],[48.209,0],[0,0],[0,48.209],[0,0],[-48.209,0],[0,0]],"v":[[-517.833,87.351],[-430.482,0],[430.482,0],[517.833,87.351],[517.833,441.674],[430.482,529.025],[-430.482,529.025],[-517.833,441.674]],"c":true}],"t":72,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-47.791,0],[0,0],[0,-47.791],[0,0],[47.791,0],[0,0],[0,47.791]],"o":[[0,-47.791],[0,0],[47.791,0],[0,0],[0,47.791],[0,0],[-47.791,0],[0,0]],"v":[[-482.616,86.594],[-396.022,0],[396.022,0],[482.616,86.594],[482.616,427.284],[396.022,513.878],[-396.022,513.878],[-482.616,427.284]],"c":true}],"t":73,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-47.369,0],[0,0],[0,-47.369],[0,0],[47.369,0],[0,0],[0,47.369]],"o":[[0,-47.369],[0,0],[47.369,0],[0,0],[0,47.369],[0,0],[-47.369,0],[0,0]],"v":[[-447.043,85.829],[-361.214,0],[361.214,0],[447.043,85.829],[447.043,412.749],[361.214,498.578],[-361.214,498.578],[-447.043,412.749]],"c":true}],"t":74,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.972,0],[0,0],[0,-46.972],[0,0],[46.972,0],[0,0],[0,46.972]],"o":[[0,-46.972],[0,0],[46.972,0],[0,0],[0,46.972],[0,0],[-46.972,0],[0,0]],"v":[[-413.564,85.109],[-328.455,0],[328.456,0],[413.564,85.109],[413.564,399.069],[328.456,484.178],[-328.455,484.178],[-413.564,399.069]],"c":true}],"t":75,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.614,0],[0,0],[0,-46.614],[0,0],[46.614,0],[0,0],[0,46.614]],"o":[[0,-46.614],[0,0],[46.614,0],[0,0],[0,46.614],[0,0],[-46.614,0],[0,0]],"v":[[-383.396,84.46],[-298.936,0],[298.936,0],[383.396,84.46],[383.396,386.742],[298.936,471.203],[-298.936,471.203],[-383.396,386.742]],"c":true}],"t":76,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.298,0],[0,0],[0,-46.298],[0,0],[46.298,0],[0,0],[0,46.298]],"o":[[0,-46.298],[0,0],[46.298,0],[0,0],[0,46.298],[0,0],[-46.298,0],[0,0]],"v":[[-356.773,83.888],[-272.885,0],[272.885,0],[356.773,83.888],[356.773,375.864],[272.885,459.752],[-272.885,459.752],[-356.773,375.864]],"c":true}],"t":77,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-46.021,0],[0,0],[0,-46.021],[0,0],[46.021,0],[0,0],[0,46.021]],"o":[[0,-46.021],[0,0],[46.021,0],[0,0],[0,46.021],[0,0],[-46.021,0],[0,0]],"v":[[-333.455,83.386],[-250.069,0],[250.069,0],[333.455,83.386],[333.455,366.336],[250.069,449.723],[-250.069,449.723],[-333.455,366.336]],"c":true}],"t":78,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.779,0],[0,0],[0,-45.779],[0,0],[45.779,0],[0,0],[0,45.779]],"o":[[0,-45.779],[0,0],[45.779,0],[0,0],[0,45.779],[0,0],[-45.779,0],[0,0]],"v":[[-313.049,82.947],[-230.102,0],[230.102,0],[313.049,82.947],[313.049,357.999],[230.102,440.946],[-230.102,440.946],[-313.049,357.999]],"c":true}],"t":79,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.566,0],[0,0],[0,-45.566],[0,0],[45.566,0],[0,0],[0,45.566]],"o":[[0,-45.566],[0,0],[45.566,0],[0,0],[0,45.566],[0,0],[-45.566,0],[0,0]],"v":[[-295.158,82.563],[-212.595,0],[212.595,0],[295.158,82.563],[295.158,350.688],[212.595,433.251],[-212.595,433.251],[-295.158,350.688]],"c":true}],"t":80,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.38,0],[0,0],[0,-45.38],[0,0],[45.38,0],[0,0],[0,45.38]],"o":[[0,-45.38],[0,0],[45.38,0],[0,0],[0,45.38],[0,0],[-45.38,0],[0,0]],"v":[[-279.427,82.224],[-197.203,0],[197.203,0],[279.427,82.224],[279.427,344.26],[197.203,426.485],[-197.203,426.485],[-279.427,344.26]],"c":true}],"t":81,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.215,0],[0,0],[0,-45.215],[0,0],[45.215,0],[0,0],[0,45.215]],"o":[[0,-45.215],[0,0],[45.215,0],[0,0],[0,45.215],[0,0],[-45.215,0],[0,0]],"v":[[-265.557,81.926],[-183.631,0],[183.631,0],[265.557,81.926],[265.557,338.593],[183.631,420.519],[-183.631,420.519],[-265.557,338.593]],"c":true}],"t":82,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-45.069,0],[0,0],[0,-45.069],[0,0],[45.069,0],[0,0],[0,45.069]],"o":[[0,-45.069],[0,0],[45.069,0],[0,0],[0,45.069],[0,0],[-45.069,0],[0,0]],"v":[[-253.299,81.662],[-171.637,0],[171.637,0],[253.299,81.662],[253.299,333.585],[171.637,415.247],[-171.637,415.247],[-253.299,333.585]],"c":true}],"t":83,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.941,0],[0,0],[0,-44.941],[0,0],[44.941,0],[0,0],[0,44.941]],"o":[[0,-44.941],[0,0],[44.941,0],[0,0],[0,44.941],[0,0],[-44.941,0],[0,0]],"v":[[-242.449,81.429],[-161.02,0],[161.02,0],[242.449,81.429],[242.449,329.151],[161.02,410.58],[-161.02,410.58],[-242.449,329.151]],"c":true}],"t":84,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.827,0],[0,0],[0,-44.827],[0,0],[44.827,0],[0,0],[0,44.827]],"o":[[0,-44.827],[0,0],[44.827,0],[0,0],[0,44.827],[0,0],[-44.827,0],[0,0]],"v":[[-232.835,81.222],[-151.613,0],[151.613,0],[232.835,81.222],[232.835,325.223],[151.613,406.445],[-151.613,406.445],[-232.835,325.223]],"c":true}],"t":85,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.725,0],[0,0],[0,-44.725],[0,0],[44.725,0],[0,0],[0,44.725]],"o":[[0,-44.725],[0,0],[44.725,0],[0,0],[0,44.725],[0,0],[-44.725,0],[0,0]],"v":[[-224.316,81.039],[-143.277,0],[143.277,0],[224.316,81.039],[224.316,321.742],[143.277,402.781],[-143.277,402.781],[-224.316,321.742]],"c":true}],"t":86,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.636,0],[0,0],[0,-44.636],[0,0],[44.636,0],[0,0],[0,44.636]],"o":[[0,-44.636],[0,0],[44.636,0],[0,0],[0,44.636],[0,0],[-44.636,0],[0,0]],"v":[[-216.774,80.877],[-135.897,0],[135.897,0],[216.774,80.877],[216.774,318.66],[135.897,399.537],[-135.897,399.537],[-216.774,318.66]],"c":true}],"t":87,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.557,0],[0,0],[0,-44.557],[0,0],[44.557,0],[0,0],[0,44.557]],"o":[[0,-44.557],[0,0],[44.557,0],[0,0],[0,44.557],[0,0],[-44.557,0],[0,0]],"v":[[-210.107,80.733],[-129.374,0],[129.374,0],[210.107,80.733],[210.107,315.936],[129.374,396.67],[-129.374,396.67],[-210.107,315.936]],"c":true}],"t":88,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.487,0],[0,0],[0,-44.487],[0,0],[44.487,0],[0,0],[0,44.487]],"o":[[0,-44.487],[0,0],[44.487,0],[0,0],[0,44.487],[0,0],[-44.487,0],[0,0]],"v":[[-204.23,80.607],[-123.623,0],[123.623,0],[204.23,80.607],[204.23,313.535],[123.623,394.142],[-123.623,394.142],[-204.23,313.535]],"c":true}],"t":89,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.426,0],[0,0],[0,-44.426],[0,0],[44.426,0],[0,0],[0,44.426]],"o":[[0,-44.426],[0,0],[44.426,0],[0,0],[0,44.426],[0,0],[-44.426,0],[0,0]],"v":[[-199.07,80.496],[-118.574,0],[118.574,0],[199.07,80.496],[199.07,311.426],[118.574,391.923],[-118.574,391.923],[-199.07,311.426]],"c":true}],"t":90,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.372,0],[0,0],[0,-44.372],[0,0],[44.372,0],[0,0],[0,44.372]],"o":[[0,-44.372],[0,0],[44.372,0],[0,0],[0,44.372],[0,0],[-44.372,0],[0,0]],"v":[[-194.563,80.399],[-114.164,0],[114.164,0],[194.563,80.399],[194.563,309.585],[114.164,389.984],[-114.164,389.984],[-194.563,309.585]],"c":true}],"t":91,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.326,0],[0,0],[0,-44.326],[0,0],[44.326,0],[0,0],[0,44.326]],"o":[[0,-44.326],[0,0],[44.326,0],[0,0],[0,44.326],[0,0],[-44.326,0],[0,0]],"v":[[-190.654,80.315],[-110.338,0],[110.338,0],[190.654,80.315],[190.654,307.987],[110.338,388.303],[-110.338,388.303],[-190.654,307.987]],"c":true}],"t":92,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.286,0],[0,0],[0,-44.286],[0,0],[44.286,0],[0,0],[0,44.286]],"o":[[0,-44.286],[0,0],[44.286,0],[0,0],[0,44.286],[0,0],[-44.286,0],[0,0]],"v":[[-187.294,80.243],[-107.051,0],[107.051,0],[187.294,80.243],[187.294,306.615],[107.051,386.858],[-107.051,386.858],[-187.294,306.615]],"c":true}],"t":93,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.252,0],[0,0],[0,-44.252],[0,0],[44.252,0],[0,0],[0,44.252]],"o":[[0,-44.252],[0,0],[44.252,0],[0,0],[0,44.252],[0,0],[-44.252,0],[0,0]],"v":[[-184.442,80.182],[-104.261,0],[104.261,0],[184.442,80.182],[184.442,305.45],[104.261,385.631],[-104.261,385.631],[-184.442,305.45]],"c":true}],"t":94,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.224,0],[0,0],[0,-44.224],[0,0],[44.224,0],[0,0],[0,44.224]],"o":[[0,-44.224],[0,0],[44.224,0],[0,0],[0,44.224],[0,0],[-44.224,0],[0,0]],"v":[[-182.061,80.13],[-101.93,0],[101.93,0],[182.061,80.13],[182.061,304.476],[101.93,384.607],[-101.93,384.607],[-182.061,304.476]],"c":true}],"t":95,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.201,0],[0,0],[0,-44.201],[0,0],[44.201,0],[0,0],[0,44.201]],"o":[[0,-44.201],[0,0],[44.201,0],[0,0],[0,44.201],[0,0],[-44.201,0],[0,0]],"v":[[-180.115,80.089],[-100.027,0],[100.027,0],[180.115,80.089],[180.115,303.682],[100.027,383.77],[-100.027,383.77],[-180.115,303.682]],"c":true}],"t":96,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.183,0],[0,0],[0,-44.183],[0,0],[44.183,0],[0,0],[0,44.183]],"o":[[0,-44.183],[0,0],[44.183,0],[0,0],[0,44.183],[0,0],[-44.183,0],[0,0]],"v":[[-178.577,80.055],[-98.522,0],[98.522,0],[178.577,80.055],[178.577,303.053],[98.522,383.108],[-98.522,383.108],[-178.577,303.053]],"c":true}],"t":97,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.169,0],[0,0],[0,-44.169],[0,0],[44.169,0],[0,0],[0,44.169]],"o":[[0,-44.169],[0,0],[44.169,0],[0,0],[0,44.169],[0,0],[-44.169,0],[0,0]],"v":[[-177.419,80.031],[-97.389,0],[97.389,0],[177.419,80.031],[177.419,302.58],[97.389,382.611],[-97.389,382.611],[-177.419,302.58]],"c":true}],"t":98,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.159,0],[0,0],[0,-44.159],[0,0],[44.159,0],[0,0],[0,44.159]],"o":[[0,-44.159],[0,0],[44.159,0],[0,0],[0,44.159],[0,0],[-44.159,0],[0,0]],"v":[[-176.618,80.013],[-96.605,0],[96.605,0],[176.618,80.013],[176.618,302.253],[96.605,382.266],[-96.605,382.266],[-176.618,302.253]],"c":true}],"t":99,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.154,0],[0,0],[0,-44.154],[0,0],[44.154,0],[0,0],[0,44.154]],"o":[[0,-44.154],[0,0],[44.154,0],[0,0],[0,44.154],[0,0],[-44.154,0],[0,0]],"v":[[-176.151,80.003],[-96.148,0],[96.148,0],[176.151,80.003],[176.151,302.062],[96.148,382.065],[-96.148,382.065],[-176.151,302.062]],"c":true}],"t":100,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.152,0],[0,0],[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152]],"o":[[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152],[0,0],[-44.152,0],[0,0]],"v":[[-176,80],[-96,0],[96,0],[176,80],[176,302],[96,382],[-96,382],[-176,302]],"c":true}],"t":101,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.152,0],[0,0],[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152]],"o":[[0,-44.152],[0,0],[44.152,0],[0,0],[0,44.152],[0,0],[-44.152,0],[0,0]],"v":[[-176,80],[-96,0],[96,0],[176,80],[176,302],[96,382],[-96,382],[-176,302]],"c":true}],"t":113,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.127,0],[0,0],[0,-44.127],[0,0],[44.127,0],[0,0],[0,44.127]],"o":[[0,-44.127],[0,0],[44.127,0],[0,0],[0,44.127],[0,0],[-44.127,0],[0,0]],"v":[[-175.806,79.954],[-95.852,0],[95.852,0],[175.806,79.954],[175.806,301.573],[95.852,381.527],[-95.852,381.527],[-175.806,301.573]],"c":true}],"t":114,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-44.042,0],[0,0],[0,-44.042],[0,0],[44.042,0],[0,0],[0,44.042]],"o":[[0,-44.042],[0,0],[44.042,0],[0,0],[0,44.042],[0,0],[-44.042,0],[0,0]],"v":[[-175.151,79.8],[-95.351,0],[95.351,0],[175.151,79.8],[175.151,300.128],[95.351,379.928],[-95.351,379.928],[-175.151,300.128]],"c":true}],"t":115,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.877,0],[0,0],[0,-43.877],[0,0],[43.877,0],[0,0],[0,43.877]],"o":[[0,-43.877],[0,0],[43.877,0],[0,0],[0,43.877],[0,0],[-43.877,0],[0,0]],"v":[[-173.883,79.502],[-94.381,0],[94.381,0],[173.883,79.502],[173.883,297.331],[94.381,376.832],[-94.381,376.832],[-173.883,297.331]],"c":true}],"t":116,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.602,0],[0,0],[0,-43.602],[0,0],[43.602,0],[0,0],[0,43.602]],"o":[[0,-43.602],[0,0],[43.602,0],[0,0],[0,43.602],[0,0],[-43.602,0],[0,0]],"v":[[-171.765,79.003],[-92.761,0],[92.761,0],[171.765,79.003],[171.765,292.657],[92.761,371.661],[-92.761,371.661],[-171.765,292.657]],"c":true}],"t":117,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-43.166,0],[0,0],[0,-43.166],[0,0],[43.166,0],[0,0],[0,43.166]],"o":[[0,-43.166],[0,0],[43.166,0],[0,0],[0,43.166],[0,0],[-43.166,0],[0,0]],"v":[[-168.404,78.213],[-90.191,0],[90.191,0],[168.404,78.213],[168.404,285.244],[90.191,363.457],[-90.191,363.457],[-168.404,285.244]],"c":true}],"t":118,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-42.482,0],[0,0],[0,-42.482],[0,0],[42.482,0],[0,0],[0,42.482]],"o":[[0,-42.482],[0,0],[42.482,0],[0,0],[0,42.482],[0,0],[-42.482,0],[0,0]],"v":[[-163.142,76.975],[-86.168,0],[86.168,0],[163.142,76.975],[163.142,273.637],[86.168,350.612],[-86.168,350.612],[-163.142,273.637]],"c":true}],"t":119,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-41.435,0],[0,0],[0,-41.435],[0,0],[41.435,0],[0,0],[0,41.435]],"o":[[0,-41.435],[0,0],[41.435,0],[0,0],[0,41.435],[0,0],[-41.435,0],[0,0]],"v":[[-155.078,75.077],[-80.001,0],[80.001,0],[155.078,75.077],[155.078,255.848],[80.001,330.925],[-80.001,330.925],[-155.078,255.848]],"c":true}],"t":120,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-40.054,0],[0,0],[0,-40.054],[0,0],[40.054,0],[0,0],[0,40.054]],"o":[[0,-40.054],[0,0],[40.054,0],[0,0],[0,40.054],[0,0],[-40.054,0],[0,0]],"v":[[-144.442,72.575],[-71.868,0],[71.868,0],[144.442,72.575],[144.442,232.388],[71.868,304.963],[-71.868,304.963],[-144.442,232.388]],"c":true}],"t":121,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-38.75,0],[0,0],[0,-38.75],[0,0],[38.75,0],[0,0],[0,38.75]],"o":[[0,-38.75],[0,0],[38.75,0],[0,0],[0,38.75],[0,0],[-38.75,0],[0,0]],"v":[[-134.399,70.212],[-64.188,0],[64.188,0],[134.399,70.212],[134.399,210.234],[64.188,280.446],[-64.188,280.446],[-134.399,210.234]],"c":true}],"t":122,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-37.775,0],[0,0],[0,-37.775],[0,0],[37.775,0],[0,0],[0,37.775]],"o":[[0,-37.775],[0,0],[37.775,0],[0,0],[0,37.775],[0,0],[-37.775,0],[0,0]],"v":[[-126.895,68.446],[-58.449,0],[58.449,0],[126.895,68.446],[126.895,193.681],[58.449,262.127],[-58.449,262.127],[-126.895,193.681]],"c":true}],"t":123,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-37.077,0],[0,0],[0,-37.077],[0,0],[37.077,0],[0,0],[0,37.077]],"o":[[0,-37.077],[0,0],[37.077,0],[0,0],[0,37.077],[0,0],[-37.077,0],[0,0]],"v":[[-121.522,67.182],[-54.34,0],[54.34,0],[121.522,67.182],[121.522,181.827],[54.34,249.008],[-54.34,249.008],[-121.522,181.827]],"c":true}],"t":124,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-36.569,0],[0,0],[0,-36.569],[0,0],[36.569,0],[0,0],[0,36.569]],"o":[[0,-36.569],[0,0],[36.569,0],[0,0],[0,36.569],[0,0],[-36.569,0],[0,0]],"v":[[-117.609,66.261],[-51.348,0],[51.348,0],[117.609,66.261],[117.609,173.196],[51.348,239.457],[-51.348,239.457],[-117.609,173.196]],"c":true}],"t":125,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-36.193,0],[0,0],[0,-36.193],[0,0],[36.193,0],[0,0],[0,36.193]],"o":[[0,-36.193],[0,0],[36.193,0],[0,0],[0,36.193],[0,0],[-36.193,0],[0,0]],"v":[[-114.709,65.579],[-49.131,0],[49.131,0],[114.709,65.579],[114.709,166.8],[49.131,232.379],[-49.131,232.379],[-114.709,166.8]],"c":true}],"t":126,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.912,0],[0,0],[0,-35.912],[0,0],[35.912,0],[0,0],[0,35.912]],"o":[[0,-35.912],[0,0],[35.912,0],[0,0],[0,35.912],[0,0],[-35.912,0],[0,0]],"v":[[-112.544,65.069],[-47.475,0],[47.475,0],[112.544,65.069],[112.544,162.024],[47.475,227.094],[-47.475,227.094],[-112.544,162.024]],"c":true}],"t":127,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.703,0],[0,0],[0,-35.703],[0,0],[35.703,0],[0,0],[0,35.703]],"o":[[0,-35.703],[0,0],[35.703,0],[0,0],[0,35.703],[0,0],[-35.703,0],[0,0]],"v":[[-110.934,64.69],[-46.244,0],[46.244,0],[110.934,64.69],[110.934,158.473],[46.244,223.163],[-46.244,223.163],[-110.934,158.473]],"c":true}],"t":128,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.55,0],[0,0],[0,-35.55],[0,0],[35.55,0],[0,0],[0,35.55]],"o":[[0,-35.55],[0,0],[35.55,0],[0,0],[0,35.55],[0,0],[-35.55,0],[0,0]],"v":[[-109.758,64.414],[-45.344,0],[45.344,0],[109.758,64.414],[109.758,155.878],[45.344,220.292],[-45.344,220.292],[-109.758,155.878]],"c":true}],"t":129,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.443,0],[0,0],[0,-35.443],[0,0],[35.443,0],[0,0],[0,35.443]],"o":[[0,-35.443],[0,0],[35.443,0],[0,0],[0,35.443],[0,0],[-35.443,0],[0,0]],"v":[[-108.931,64.219],[-44.712,0],[44.712,0],[108.931,64.219],[108.931,154.054],[44.712,218.273],[-44.712,218.273],[-108.931,154.054]],"c":true}],"t":130,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.372,0],[0,0],[0,-35.372],[0,0],[35.372,0],[0,0],[0,35.372]],"o":[[0,-35.372],[0,0],[35.372,0],[0,0],[0,35.372],[0,0],[-35.372,0],[0,0]],"v":[[-108.391,64.092],[-44.299,0],[44.299,0],[108.391,64.092],[108.391,152.863],[44.299,216.955],[-44.299,216.955],[-108.391,152.863]],"c":true}],"t":131,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.334,0],[0,0],[0,-35.334],[0,0],[35.334,0],[0,0],[0,35.334]],"o":[[0,-35.334],[0,0],[35.334,0],[0,0],[0,35.334],[0,0],[-35.334,0],[0,0]],"v":[[-108.093,64.022],[-44.071,0],[44.071,0],[108.093,64.022],[108.093,152.205],[44.071,216.227],[-44.071,216.227],[-108.093,152.205]],"c":true}],"t":132,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.322,0],[0,0],[0,-35.322],[0,0],[35.322,0],[0,0],[0,35.322]],"o":[[0,-35.322],[0,0],[35.322,0],[0,0],[0,35.322],[0,0],[-35.322,0],[0,0]],"v":[[-108,64],[-44,0],[44,0],[108,64],[108,152],[44,216],[-44,216],[-108,152]],"c":true}],"t":133,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.293,0],[0,0],[0,-35.293],[0,0],[35.293,0],[0,0],[0,35.293]],"o":[[0,-35.293],[0,0],[35.293,0],[0,0],[0,35.293],[0,0],[-35.293,0],[0,0]],"v":[[-108.025,63.949],[-44.076,0],[44.076,0],[108.025,63.949],[108.025,152.102],[44.076,216.051],[-44.076,216.051],[-108.025,152.102]],"c":true}],"t":134,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.214,0],[0,0],[0,-35.214],[0,0],[35.214,0],[0,0],[0,35.214]],"o":[[0,-35.214],[0,0],[35.214,0],[0,0],[0,35.214],[0,0],[-35.214,0],[0,0]],"v":[[-108.097,63.806],[-44.292,0],[44.292,0],[108.097,63.806],[108.097,152.389],[44.292,216.194],[-44.292,216.194],[-108.097,152.389]],"c":true}],"t":135,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-35.092,0],[0,0],[0,-35.092],[0,0],[35.092,0],[0,0],[0,35.092]],"o":[[0,-35.092],[0,0],[35.092,0],[0,0],[0,35.092],[0,0],[-35.092,0],[0,0]],"v":[[-108.208,63.584],[-44.624,0],[44.624,0],[108.208,63.584],[108.208,152.832],[44.624,216.416],[-44.624,216.416],[-108.208,152.832]],"c":true}],"t":136,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.934,0],[0,0],[0,-34.934],[0,0],[34.934,0],[0,0],[0,34.934]],"o":[[0,-34.934],[0,0],[34.934,0],[0,0],[0,34.934],[0,0],[-34.934,0],[0,0]],"v":[[-108.351,63.298],[-45.052,0],[45.052,0],[108.351,63.298],[108.351,153.403],[45.052,216.702],[-45.052,216.702],[-108.351,153.403]],"c":true}],"t":137,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.749,0],[0,0],[0,-34.749],[0,0],[34.749,0],[0,0],[0,34.749]],"o":[[0,-34.749],[0,0],[34.749,0],[0,0],[0,34.749],[0,0],[-34.749,0],[0,0]],"v":[[-108.519,62.963],[-45.556,0],[45.556,0],[108.519,62.963],[108.519,154.074],[45.556,217.037],[-45.556,217.037],[-108.519,154.074]],"c":true}],"t":138,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.545,0],[0,0],[0,-34.545],[0,0],[34.545,0],[0,0],[0,34.545]],"o":[[0,-34.545],[0,0],[34.545,0],[0,0],[0,34.545],[0,0],[-34.545,0],[0,0]],"v":[[-108.704,62.592],[-46.112,0],[46.112,0],[108.704,62.592],[108.704,154.816],[46.112,217.408],[-46.112,217.408],[-108.704,154.816]],"c":true}],"t":139,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.328,0],[0,0],[0,-34.328],[0,0],[34.328,0],[0,0],[0,34.328]],"o":[[0,-34.328],[0,0],[34.328,0],[0,0],[0,34.328],[0,0],[-34.328,0],[0,0]],"v":[[-108.9,62.2],[-46.7,0],[46.7,0],[108.9,62.2],[108.9,155.601],[46.7,217.8],[-46.7,217.8],[-108.9,155.601]],"c":true}],"t":140,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-34.108,0],[0,0],[0,-34.108],[0,0],[34.108,0],[0,0],[0,34.108]],"o":[[0,-34.108],[0,0],[34.108,0],[0,0],[0,34.108],[0,0],[-34.108,0],[0,0]],"v":[[-109.1,61.8],[-47.3,0],[47.3,0],[109.1,61.8],[109.1,156.399],[47.3,218.2],[-47.3,218.2],[-109.1,156.399]],"c":true}],"t":141,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.891,0],[0,0],[0,-33.891],[0,0],[33.891,0],[0,0],[0,33.891]],"o":[[0,-33.891],[0,0],[33.891,0],[0,0],[0,33.891],[0,0],[-33.891,0],[0,0]],"v":[[-109.296,61.408],[-47.888,0],[47.888,0],[109.296,61.408],[109.296,157.184],[47.888,218.592],[-47.888,218.592],[-109.296,157.184]],"c":true}],"t":142,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.686,0],[0,0],[0,-33.686],[0,0],[33.686,0],[0,0],[0,33.686]],"o":[[0,-33.686],[0,0],[33.686,0],[0,0],[0,33.686],[0,0],[-33.686,0],[0,0]],"v":[[-109.481,61.037],[-48.444,0],[48.444,0],[109.481,61.037],[109.481,157.926],[48.444,218.963],[-48.444,218.963],[-109.481,157.926]],"c":true}],"t":143,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.501,0],[0,0],[0,-33.501],[0,0],[33.501,0],[0,0],[0,33.501]],"o":[[0,-33.501],[0,0],[33.501,0],[0,0],[0,33.501],[0,0],[-33.501,0],[0,0]],"v":[[-109.649,60.702],[-48.948,0],[48.948,0],[109.649,60.702],[109.649,158.597],[48.948,219.298],[-48.948,219.298],[-109.649,158.597]],"c":true}],"t":144,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.344,0],[0,0],[0,-33.344],[0,0],[33.344,0],[0,0],[0,33.344]],"o":[[0,-33.344],[0,0],[33.344,0],[0,0],[0,33.344],[0,0],[-33.344,0],[0,0]],"v":[[-109.792,60.416],[-49.376,0],[49.376,0],[109.792,60.416],[109.792,159.168],[49.376,219.584],[-49.376,219.584],[-109.792,159.168]],"c":true}],"t":145,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.221,0],[0,0],[0,-33.221],[0,0],[33.221,0],[0,0],[0,33.221]],"o":[[0,-33.221],[0,0],[33.221,0],[0,0],[0,33.221],[0,0],[-33.221,0],[0,0]],"v":[[-109.903,60.194],[-49.708,0],[49.708,0],[109.903,60.194],[109.903,159.611],[49.708,219.806],[-49.708,219.806],[-109.903,159.611]],"c":true}],"t":146,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.142,0],[0,0],[0,-33.142],[0,0],[33.142,0],[0,0],[0,33.142]],"o":[[0,-33.142],[0,0],[33.142,0],[0,0],[0,33.142],[0,0],[-33.142,0],[0,0]],"v":[[-109.975,60.051],[-49.924,0],[49.924,0],[109.975,60.051],[109.975,159.898],[49.924,219.949],[-49.924,219.949],[-109.975,159.898]],"c":true}],"t":147,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[{"i":[[0,0],[-33.114,0],[0,0],[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114]],"o":[[0,-33.114],[0,0],[33.114,0],[0,0],[0,33.114],[0,0],[-33.114,0],[0,0]],"v":[[-110,60],[-50,0],[50,0],[110,60],[110,160],[50,220],[-50,220],[-110,160]],"c":true}],"t":148,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"k":[{"s":[0.494,0.267,0.678,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.494,0.267,0.678,1],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":446,"st":-57,"ct":1,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".surfaceOverview","cl":"surfaceOverview","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,400,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[1280,800],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.875,0.953,0.686,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.875,0.953,0.686,1],"t":445,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":446,"st":0,"ct":1,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Part01_Thumb_Tablet_Overview_V03","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,400,0],"ix":2,"l":2},"a":{"a":0,"k":[640,400,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":1280,"h":800,"ip":0,"op":455,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":0,"nm":"Part02_Charade_Tablet_Overview_V02","refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,400,0],"ix":2,"l":2},"a":{"a":0,"k":[640,400,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":1280,"h":800,"ip":455,"op":921,"st":455,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"Part03_Demonstration_Tablet_Overview_V02","refId":"comp_3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[640,400,0],"ix":2,"l":2},"a":{"a":0,"k":[640,400,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":1280,"h":800,"ip":921,"op":1367,"st":921,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw/taskbar_edu_settings.json b/quickstep/res/raw/taskbar_edu_settings.json
new file mode 100644
index 0000000..a724824
--- /dev/null
+++ b/quickstep/res/raw/taskbar_edu_settings.json
@@ -0,0 +1 @@
+{"v":"5.7.8","fr":60,"ip":0,"op":301,"w":320,"h":202,"nm":"Taskbar_Persistent_EDU_2","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".blue100","cl":"blue100","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":62,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":66,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":242,"s":[100]},{"t":246,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.2,"y":0},"t":60,"s":[209,86,0],"to":[2.833,0,0],"ti":[-2.833,0,0]},{"i":{"x":0.1,"y":0.1},"o":{"x":0.167,"y":0.167},"t":80,"s":[226,86,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.1,"y":1},"o":{"x":0.2,"y":0},"t":240,"s":[226,86,0],"to":[-2.833,0,0],"ti":[2.833,0,0]},{"t":260,"s":[209,86,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[125,125,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[11,11],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":15,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".grey600","cl":"grey600","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.1,"y":1},"o":{"x":0.2,"y":0},"t":60,"s":[209,86,0],"to":[2.833,0,0],"ti":[-2.833,0,0]},{"i":{"x":0.1,"y":0.1},"o":{"x":0.167,"y":0.167},"t":80,"s":[226,86,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.1,"y":1},"o":{"x":0.2,"y":0},"t":240,"s":[226,86,0],"to":[-2.833,0,0],"ti":[2.833,0,0]},{"t":260,"s":[209,86,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[125,125,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[11,11],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":15,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.501960784314,0.525490196078,0.545098039216,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".black","cl":"black","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":62,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":66,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":242,"s":[100]},{"t":246,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[217.5,86,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[125,125,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[28,15],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":15,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey800","cl":"grey800","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[217.5,86,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[125,125,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[28,15],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":15,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294117647,0.250980392157,0.262745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".blue100","cl":"blue100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[101.25,86,0],"ix":2,"l":2},"a":{"a":0,"k":[-43.792,-15.776,0],"ix":1,"l":2},"s":{"a":0,"k":[125,125,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.784,0],[0,1.783],[1.783,0],[0,-1.783]],"o":[[1.783,0],[0,-1.783],[-1.784,0],[0,1.783]],"v":[[-43.755,-12.577],[-40.526,-15.806],[-43.755,-19.035],[-46.984,-15.806]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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,0],[0,0.053]],"o":[[0,0.053],[0,0]],"v":[[-44.937,-23.822],[-44.937,-23.822]],"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":[[0,0],[0,0.054]],"o":[[0,0.054],[0,0]],"v":[[-49.458,-21.078],[-49.458,-21.078]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-0.431,0.269],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0.215],[0,0.215],[0,0],[0,0],[0,0],[0,0],[0,0],[0.431,0.161],[0,0],[0,0],[0,0],[0,0],[0,0],[0.431,-0.269],[0,0],[0,0],[0,0],[0,0],[0,0],[0,-0.216],[-0.054,-0.215],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.431,-0.162],[0,0]],"o":[[0,0],[0,0],[0,0],[0.431,-0.162],[0,0],[0,0],[0,0],[0,0],[0,0],[0.054,-0.215],[0,-0.269],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.377,-0.269],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.431,0.161],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0.215],[0,0.215],[0,0],[0,0],[0,0],[0,0],[0,0],[0.377,0.323],[0,0],[0,0]],"v":[[-45.045,-8.215],[-42.515,-8.215],[-42.138,-10.529],[-41.654,-10.744],[-40.416,-11.444],[-39.986,-11.767],[-37.779,-10.906],[-36.487,-13.112],[-38.371,-14.565],[-38.317,-15.104],[-38.263,-15.803],[-38.317,-16.503],[-38.371,-17.041],[-36.487,-18.494],[-37.779,-20.701],[-39.986,-19.84],[-40.416,-20.163],[-41.654,-20.862],[-42.138,-21.078],[-42.461,-23.392],[-44.991,-23.392],[-45.314,-21.078],[-45.798,-20.862],[-47.036,-20.163],[-47.467,-19.84],[-49.673,-20.701],[-50.965,-18.494],[-49.081,-17.041],[-49.135,-16.503],[-49.189,-15.803],[-49.135,-15.104],[-49.081,-14.565],[-50.965,-13.112],[-49.673,-10.906],[-47.467,-11.767],[-47.036,-11.444],[-45.798,-10.744],[-45.368,-10.529]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[0.054,0]],"o":[[0.054,0],[0,0]],"v":[[-44.991,-7.784],[-44.991,-7.784]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[0.7,0],[0,0],[0.108,0.7],[0,0],[0.215,0.162],[0,0],[0.323,0.592],[0,0],[-0.484,0.376],[0,0],[0,0.161],[0,0.162],[0,0],[-0.376,0.593],[0,0],[-0.592,-0.215],[0,0],[-0.215,0.162],[0,0],[-0.7,0],[0,0],[-0.107,-0.7],[0,0],[-0.269,-0.162],[0,0],[-0.323,-0.592],[0,0],[0.484,-0.377],[0,0],[0,-0.162],[0,-0.161],[0,0],[0.323,-0.592],[0,0],[0.646,0.215],[0,0],[0.216,-0.162],[0,0]],"o":[[0,0],[-0.7,0],[0,0],[-0.269,-0.108],[0,0],[-0.646,0.215],[0,0],[-0.323,-0.592],[0,0],[0,-0.161],[0,-0.162],[0,0],[-0.538,-0.431],[0,0],[0.323,-0.592],[0,0],[0.215,-0.162],[0,0],[0.053,-0.646],[0,0],[0.699,0],[0,0],[0.269,0.108],[0,0],[0.646,-0.215],[0,0],[0.323,0.592],[0,0],[0,0.161],[0,0.161],[0,0],[0.538,0.431],[0,0],[-0.323,0.592],[0,0],[-0.215,0.161],[0,0],[0,0.538]],"v":[[-42.085,-6.385],[-45.475,-6.385],[-46.821,-7.569],[-47.09,-9.291],[-47.789,-9.722],[-49.458,-9.076],[-51.126,-9.668],[-52.795,-12.574],[-52.472,-14.296],[-51.072,-15.373],[-51.072,-15.803],[-51.072,-16.234],[-52.472,-17.31],[-52.795,-19.033],[-51.126,-21.939],[-49.512,-22.531],[-47.843,-21.831],[-47.144,-22.262],[-46.874,-24.038],[-45.529,-25.168],[-42.138,-25.168],[-40.793,-23.984],[-40.524,-22.262],[-39.77,-21.831],[-38.102,-22.477],[-36.433,-21.885],[-34.765,-18.979],[-35.088,-17.256],[-36.487,-16.18],[-36.487,-15.749],[-36.487,-15.319],[-35.088,-14.243],[-34.765,-12.52],[-36.487,-9.56],[-38.156,-8.968],[-39.824,-9.614],[-40.524,-9.183],[-40.793,-7.407]],"c":true},"ix":2},"nm":"Path 5","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":6,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-43.792,-15.776],"ix":2},"a":{"a":0,"k":[-43.792,-15.776],"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 6","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".blue400","cl":"blue400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[160,86,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[125,125,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[144,35],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":15,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.4,0.61568627451,0.964705882353,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":80,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":84,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":265,"s":[0]},{"t":270,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[225,187,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[35,35,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.719,-0.273],[0,0],[0,0],[0.812,-0.492],[0,0],[0,0],[0,0.688],[0,0],[0,0]],"o":[[0.688,0.196],[0,0],[0,0],[-0.812,0.492],[0,0],[0,0],[0,-0.812],[0,0],[0,0]],"v":[[5.906,-10.352],[6.5,-9.219],[6.5,8.812],[5.938,10.071],[4.26,9.965],[-10.993,1.159],[-11.75,0],[-10.892,-1.217],[4.852,-10.307]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854902020623,0.862745157878,0.878431432387,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":80,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":84,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":265,"s":[0]},{"t":270,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[251,187,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"d":1,"ty":"el","s":{"a":0,"k":[6.5,6.5],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854902020623,0.862745157878,0.878431432387,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":80,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":84,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":265,"s":[0]},{"t":270,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[277,187,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[6,6],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":1,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".yellow400","cl":"yellow400","parent":22,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[29,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294819,0.78823530674,0.203921571374,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":360,"st":-65,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".grey300","cl":"grey300","parent":22,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-83,0,0],"ix":2,"l":2},"a":{"a":0,"k":[121.456,227.454,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[125.547,231.545],"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":"Layer 18","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[125.547,227.455],"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":"Layer 17","np":1,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[125.547,223.364],"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":"Layer 16","np":1,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[121.453,231.545],"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":"Layer 15","np":1,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[121.453,227.455],"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":"Layer 14","np":1,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[121.453,223.364],"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":"Layer 13","np":1,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[117.364,231.545],"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":"Layer 12","np":1,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[117.364,227.455],"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":"Layer 11","np":1,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[117.364,223.364],"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":"Layer 10","np":1,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"green circle matte","parent":22,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[82.955,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.807843148708,0.917647063732,0.839215695858,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.807843137255,0.917647058824,0.839215686275,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".green400","cl":"green400","parent":22,"tt":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":83,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":88,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":262,"s":[100]},{"t":267,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[83.068,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[80,80,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.35686275363,0.72549021244,0.454901963472,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".green100","cl":"green100","parent":22,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":83,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":88,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":262,"s":[100]},{"t":267,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[82.955,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.807843148708,0.917647063732,0.839215695858,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.807843137255,0.917647058824,0.839215686275,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":"blue circle matte 2","parent":22,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[56,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.541175991881,0.705881993911,0.972549019608,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".blue400","cl":"blue400","parent":22,"tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[56,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[80,80,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".blue100","cl":"blue100","parent":22,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[56,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.823529422283,0.890196084976,0.988235294819,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".yellow400","cl":"yellow400","parent":22,"sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[29,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294118,0.788235294118,0.203921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".green400","cl":"green400","parent":22,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.35686275363,0.72549021244,0.454901963472,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".red400","cl":"red400","parent":22,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-29,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333337307,0.403921574354,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue400","cl":"blue400","parent":22,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-58,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".grey800","cl":"grey800","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":80,"s":[122,186.5,0],"to":[31.333,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":0},"o":{"x":0.167,"y":0.167},"t":105,"s":[160,179,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":260,"s":[160,179,0],"to":[0,0,0],"ti":[30.299,0.107,0]},{"t":280,"s":[122,186.5,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":80,"s":[202,30]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":105,"s":[202,30]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":260,"s":[202,30]},{"t":280,"s":[202,30]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":30,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294117647,0.250980392157,0.262745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":23,"ty":4,"nm":".blue100","cl":"blue100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":80,"s":[160,98.001,0],"to":[0,2.667,0],"ti":[0,-2.667,0]},{"i":{"x":0,"y":0},"o":{"x":0.2,"y":0.2},"t":100,"s":[160,114.001,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":260,"s":[160,114.001,0],"to":[0,-2.667,0],"ti":[0,2.667,0]},{"t":285,"s":[160,98.001,0]}],"ix":2,"l":2},"a":{"a":0,"k":[192,122.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":80,"s":[320,170]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":100,"s":[320,202]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":260,"s":[320,202]},{"t":285,"s":[320,170]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":16,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192,109.499],"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":24,"ty":4,"nm":".grey800","cl":"grey800","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[160,100.5,0],"ix":2,"l":2},"a":{"a":0,"k":[192,122.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[320,202],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":16,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294117647,0.250980392157,0.262745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192,123],"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw/taskbar_edu_splitscreen_persistent.json b/quickstep/res/raw/taskbar_edu_splitscreen_persistent.json
new file mode 100644
index 0000000..b0a7286
--- /dev/null
+++ b/quickstep/res/raw/taskbar_edu_splitscreen_persistent.json
@@ -0,0 +1 @@
+{"v":"5.7.8","fr":60,"ip":0,"op":301,"w":320,"h":202,"nm":"Taskbar_Persistent_EDU_1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[225,187,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[35,35,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.719,-0.273],[0,0],[0,0],[0.812,-0.492],[0,0],[0,0],[0,0.688],[0,0],[0,0]],"o":[[0.688,0.196],[0,0],[0,0],[-0.812,0.492],[0,0],[0,0],[0,-0.812],[0,0],[0,0]],"v":[[5.906,-10.352],[6.5,-9.219],[6.5,8.812],[5.938,10.071],[4.26,9.965],[-10.993,1.159],[-11.75,0],[-10.892,-1.217],[4.852,-10.307]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854902020623,0.862745157878,0.878431432387,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[251,187,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"d":1,"ty":"el","s":{"a":0,"k":[6.5,6.5],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854902020623,0.862745157878,0.878431432387,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[277,187,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[6,6],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":1,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"gesture","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":40,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":130,"s":[100]},{"t":140,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.5,"y":1},"o":{"x":0.167,"y":0.167},"t":30,"s":[127.45,169.4,0],"to":[3.425,5.892,0],"ti":[-15.2,-2.85,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":50,"s":[151,186.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.4,"y":1},"o":{"x":0.5,"y":0},"t":70,"s":[151,186.5,0],"to":[0,0,0],"ti":[-8.458,24.508,0]},{"t":120,"s":[214,130.7,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.5,0.5,0.667],"y":[1,1,1]},"o":{"x":[0.5,0.5,0.333],"y":[0,0,0]},"t":50,"s":[60,60,100]},{"i":{"x":[0.5,0.5,0.667],"y":[1,1,1]},"o":{"x":[0.5,0.5,0.333],"y":[0,0,0]},"t":60,"s":[48,48,100]},{"i":{"x":[0.5,0.5,0.667],"y":[1,1,1]},"o":{"x":[0.5,0.5,0.333],"y":[0,0,0]},"t":130,"s":[48,48,100]},{"t":140,"s":[60,60,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[56,56],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":67,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":50,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":30,"op":141,"st":5,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".yellow400","cl":"yellow400","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":130,"s":[100]},{"t":138,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[214,130.7,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.5,0.5,0.5],"y":[1,1,1]},"o":{"x":[0.5,0.5,0.5],"y":[0,0,0]},"t":130,"s":[120,120,100]},{"t":140,"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":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294819,0.78823530674,0.203921571374,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":130,"op":11335,"st":-65,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".yellow400","cl":"yellow400","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[250,250,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294819,0.78823530674,0.203921571374,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":70,"op":130,"st":-65,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".yellow400","cl":"yellow400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[151,186.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.2,0.2,0.2],"y":[0,0,0]},"t":60,"s":[100,100,100]},{"t":70,"s":[120,120,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294819,0.78823530674,0.203921571374,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":70,"st":-65,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[39,186.5,0],"ix":2,"l":2},"a":{"a":0,"k":[121.456,227.454,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[125.547,231.545],"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":"Layer 18","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[125.547,227.455],"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":"Layer 17","np":1,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[125.547,223.364],"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":"Layer 16","np":1,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[121.453,231.545],"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":"Layer 15","np":1,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[121.453,227.455],"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":"Layer 14","np":1,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[121.453,223.364],"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":"Layer 13","np":1,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[117.364,231.545],"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":"Layer 12","np":1,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[117.364,227.455],"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":"Layer 11","np":1,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[117.364,223.364],"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":"Layer 10","np":1,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"blue circle matte 2","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[178,186.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.541175991881,0.705881993911,0.972549019608,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".blue400","cl":"blue400","tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[178,186.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[80,80,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".blue100","cl":"blue100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[178,186.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.823529422283,0.890196084976,0.988235294819,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".yellow400","cl":"yellow400","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":140,"s":[0]},{"t":160,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[151,186.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294118,0.788235294118,0.203921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".grey400","cl":"grey400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[151,186.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741176470588,0.756862745098,0.776470588235,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":17,"ty":4,"nm":".green400","cl":"green400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[122,186.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.35686275363,0.72549021244,0.454901963472,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":18,"ty":4,"nm":".red400","cl":"red400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[93,186.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333337307,0.403921574354,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":19,"ty":4,"nm":".blue400","cl":"blue400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[64,186.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":".yellow100","cl":"yellow100","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":91,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":99,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":245,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":91,"s":[233.5,99.001,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":111,"s":[237,100,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":140,"s":[237,100.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":160,"s":[241,99.001,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":240,"s":[241,99,0],"to":[0,0,0],"ti":[0,0,0]},{"t":260,"s":[233.5,99,0]}],"ix":2,"l":2},"a":{"a":0,"k":[192,122.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":91,"s":[173,172]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":111,"s":[145,152]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":140,"s":[145,152]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":160,"s":[158,172]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":240,"s":[158,172]},{"t":260,"s":[173,172]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":16,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.996078431373,0.937254901961,0.764705882353,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192,109.499],"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":".blue100","cl":"blue100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":91,"s":[233.5,99.001,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":0},"o":{"x":0.2,"y":0.2},"t":111,"s":[237,100,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":140,"s":[237,100,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":0},"o":{"x":0.2,"y":0.2},"t":160,"s":[241,99.001,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":240,"s":[241,99.001,0],"to":[0,0,0],"ti":[0,0,0]},{"t":260,"s":[233.5,99.001,0]}],"ix":2,"l":2},"a":{"a":0,"k":[192,122.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":91,"s":[173,172]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":111,"s":[145,152]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":140,"s":[145,152]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":160,"s":[158,172]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":240,"s":[158,172]},{"t":260,"s":[173,172]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":16,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192,109.499],"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":".blue100","cl":"blue100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":91,"s":[86.5,99.001,0],"to":[-0.583,0.167,0],"ti":[0.583,-0.167,0]},{"i":{"x":0,"y":0},"o":{"x":0.2,"y":0.2},"t":111,"s":[83,100,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":140,"s":[83,100,0],"to":[-0.667,-0.167,0],"ti":[0.667,0.167,0]},{"i":{"x":0,"y":0},"o":{"x":0.2,"y":0.2},"t":160,"s":[79,99.001,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":240,"s":[79,99.001,0],"to":[1.25,0,0],"ti":[-1.25,0,0]},{"t":260,"s":[86.5,99.001,0]}],"ix":2,"l":2},"a":{"a":0,"k":[192,122.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":91,"s":[173,172]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":111,"s":[145,152]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":140,"s":[145,152]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":160,"s":[158,172]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":240,"s":[158,172]},{"t":260,"s":[173,172]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":16,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192,109.499],"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":23,"ty":4,"nm":".grey800","cl":"grey800","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[160,100.5,0],"ix":2,"l":2},"a":{"a":0,"k":[192,122.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[320,202],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":16,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294117647,0.250980392157,0.262745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192,123],"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw/taskbar_edu_splitscreen_transient.json b/quickstep/res/raw/taskbar_edu_splitscreen_transient.json
new file mode 100644
index 0000000..6dbc074
--- /dev/null
+++ b/quickstep/res/raw/taskbar_edu_splitscreen_transient.json
@@ -0,0 +1 @@
+{"v":"5.7.8","fr":60,"ip":0,"op":301,"w":320,"h":202,"nm":"Taskbar_Transient_EDU_2","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[18,15,0],"ix":2,"l":2},"a":{"a":0,"k":[121.456,227.454,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[125.547,231.545],"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":"Layer 18","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[125.547,227.455],"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":"Layer 17","np":1,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[125.547,223.364],"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":"Layer 16","np":1,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[121.453,231.545],"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":"Layer 15","np":1,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[121.453,227.455],"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":"Layer 14","np":1,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[121.453,223.364],"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":"Layer 13","np":1,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[117.364,231.545],"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":"Layer 12","np":1,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[117.364,227.455],"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":"Layer 11","np":1,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[117.364,223.364],"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":"Layer 10","np":1,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"green circle matte","parent":4,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.807843148708,0.917647063732,0.839215695858,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.807843137255,0.917647058824,0.839215686275,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green400","cl":"green400","parent":4,"tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.113,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[80,80,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.35686275363,0.72549021244,0.454901963472,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".green100","cl":"green100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[183.955,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.807843148708,0.917647063732,0.839215695858,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.807843137255,0.917647058824,0.839215686275,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"blue circle matte 2","parent":7,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.541175991881,0.705881993911,0.972549019608,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".blue400","cl":"blue400","parent":7,"tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[80,80,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".blue100","cl":"blue100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[157,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.823529422283,0.890196084976,0.988235294819,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".yellow400","cl":"yellow400","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":140,"s":[0]},{"t":160,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[130,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294118,0.788235294118,0.203921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey400","cl":"grey400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[130,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.741176470588,0.756862745098,0.776470588235,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".green400","cl":"green400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[101,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.35686275363,0.72549021244,0.454901963472,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".red400","cl":"red400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[72,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333337307,0.403921574354,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".blue400","cl":"blue400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[43,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".grey800","cl":"grey800","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[101,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[202,30],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":30,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294117647,0.250980392157,0.262745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"gesture","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":40,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":130,"s":[100]},{"t":140,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.5,"y":1},"o":{"x":0.167,"y":0.167},"t":30,"s":[165.45,161.9,0],"to":[3.425,5.892,0],"ti":[-15.2,-2.85,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":50,"s":[189,179,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.4,"y":1},"o":{"x":0.5,"y":0},"t":70,"s":[189,179,0],"to":[0,0,0],"ti":[-8.458,24.508,0]},{"t":120,"s":[229.25,135.45,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.5,0.5,0.667],"y":[1,1,1]},"o":{"x":[0.5,0.5,0.333],"y":[0,0,0]},"t":50,"s":[60,60,100]},{"i":{"x":[0.5,0.5,0.667],"y":[1,1,1]},"o":{"x":[0.5,0.5,0.333],"y":[0,0,0]},"t":60,"s":[48,48,100]},{"i":{"x":[0.5,0.5,0.667],"y":[1,1,1]},"o":{"x":[0.5,0.5,0.333],"y":[0,0,0]},"t":130,"s":[48,48,100]},{"t":140,"s":[60,60,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[56,56],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":67,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":50,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":30,"op":141,"st":5,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".yellow400","cl":"yellow400","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":130,"s":[100]},{"t":138,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[229.25,135.45,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.5,0.5,0.5],"y":[1,1,1]},"o":{"x":[0.5,0.5,0.5],"y":[0,0,0]},"t":130,"s":[120,120,100]},{"t":140,"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":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294819,0.78823530674,0.203921571374,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":130,"op":11335,"st":-65,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".yellow400","cl":"yellow400","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[250,250,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294819,0.78823530674,0.203921571374,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":70,"op":130,"st":-65,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".yellow400","cl":"yellow400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[189,179,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.2,0.2,0.2],"y":[0,0,0]},"t":60,"s":[100,100,100]},{"t":70,"s":[120,120,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294819,0.78823530674,0.203921571374,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":70,"st":-65,"bm":0},{"ddd":0,"ind":5,"ty":0,"nm":"Taskbar_2","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[160,179,0],"ix":2,"l":2},"a":{"a":0,"k":[101,15,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":202,"h":30,"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".yellow100","cl":"yellow100","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":91,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":99,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":240,"s":[100]},{"t":245,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":91,"s":[233.5,100.5,0],"to":[0.583,0,0],"ti":[-0.583,0,0]},{"i":{"x":0,"y":0},"o":{"x":0.2,"y":0.2},"t":111,"s":[237,100.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":140,"s":[237,100.5,0],"to":[0.667,0,0],"ti":[-0.667,0,0]},{"i":{"x":0,"y":0},"o":{"x":0.2,"y":0.2},"t":160,"s":[241,100.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":240,"s":[241,100.5,0],"to":[-1.25,0,0],"ti":[1.25,0,0]},{"t":260,"s":[233.5,100.5,0]}],"ix":2,"l":2},"a":{"a":0,"k":[192,122.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":91,"s":[173,202]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":111,"s":[145,181.8]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":140,"s":[145,181.8]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":160,"s":[158,202]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":240,"s":[158,202]},{"t":260,"s":[173,202]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":16,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.996078431373,0.937254901961,0.764705882353,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192,123],"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".blue100","cl":"blue100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":91,"s":[233.5,100.5,0],"to":[0.583,0,0],"ti":[-0.583,0,0]},{"i":{"x":0,"y":0},"o":{"x":0.2,"y":0.2},"t":111,"s":[237,100.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":140,"s":[237,100.5,0],"to":[0.667,0,0],"ti":[-0.667,0,0]},{"i":{"x":0,"y":0},"o":{"x":0.2,"y":0.2},"t":160,"s":[241,100.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":240,"s":[241,100.5,0],"to":[-1.25,0,0],"ti":[1.25,0,0]},{"t":260,"s":[233.5,100.5,0]}],"ix":2,"l":2},"a":{"a":0,"k":[192,122.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":91,"s":[173,202]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":111,"s":[145,181.8]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":140,"s":[145,181.8]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":160,"s":[158,202]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":240,"s":[158,202]},{"t":260,"s":[173,202]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":16,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192,123],"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".blue100","cl":"blue100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":91,"s":[86.5,100.5,0],"to":[-0.583,0,0],"ti":[0.583,0,0]},{"i":{"x":0,"y":0},"o":{"x":0.2,"y":0.2},"t":111,"s":[83,100.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":140,"s":[83,100.5,0],"to":[-0.667,0,0],"ti":[0.667,0,0]},{"i":{"x":0,"y":0},"o":{"x":0.2,"y":0.2},"t":160,"s":[79,100.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.2,"y":0},"t":240,"s":[79,100.5,0],"to":[1.25,0,0],"ti":[-1.25,0,0]},{"t":260,"s":[86.5,100.5,0]}],"ix":2,"l":2},"a":{"a":0,"k":[192,122.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":91,"s":[173,202]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":111,"s":[145,181.8]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":140,"s":[145,181.8]},{"i":{"x":[0.833,0.833],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":160,"s":[158,202]},{"i":{"x":[0,0],"y":[1,1]},"o":{"x":[0.2,0.2],"y":[0,0]},"t":240,"s":[158,202]},{"t":260,"s":[173,202]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":16,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192,123],"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".grey800","cl":"grey800","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[160,100.5,0],"ix":2,"l":2},"a":{"a":0,"k":[192,122.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[320,202],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":16,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294117647,0.250980392157,0.262745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192,123],"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw/taskbar_edu_stashing.json b/quickstep/res/raw/taskbar_edu_stashing.json
new file mode 100644
index 0000000..c8a3644
--- /dev/null
+++ b/quickstep/res/raw/taskbar_edu_stashing.json
@@ -0,0 +1 @@
+{"v":"5.7.8","fr":60,"ip":0,"op":301,"w":320,"h":202,"nm":"Taskbar_Transient_EDU_1","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[18,15,0],"ix":2,"l":2},"a":{"a":0,"k":[121.456,227.454,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[125.547,231.545],"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":"Layer 18","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[125.547,227.455],"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":"Layer 17","np":1,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[125.547,223.364],"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":"Layer 16","np":1,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[121.453,231.545],"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":"Layer 15","np":1,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[121.453,227.455],"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":"Layer 14","np":1,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[121.453,223.364],"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":"Layer 13","np":1,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[117.364,231.545],"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":"Layer 12","np":1,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[117.364,227.455],"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":"Layer 11","np":1,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[117.364,223.364],"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":"Layer 10","np":1,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"green circle matte","parent":4,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.807843148708,0.917647063732,0.839215695858,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.807843137255,0.917647058824,0.839215686275,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".green400","cl":"green400","parent":4,"tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.113,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[80,80,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.35686275363,0.72549021244,0.454901963472,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".green100","cl":"green100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[183.955,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.807843148708,0.917647063732,0.839215695858,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.807843137255,0.917647058824,0.839215686275,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"blue circle matte 2","parent":7,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.541175991881,0.705881993911,0.972549019608,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".blue400","cl":"blue400","parent":7,"tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[80,80,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".blue100","cl":"blue100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[157,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.823529422283,0.890196084976,0.988235294819,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".yellow400","cl":"yellow400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[130,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294819,0.78823530674,0.203921571374,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".green400","cl":"green400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[101,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.35686275363,0.72549021244,0.454901963472,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".red400","cl":"red400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[72,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333337307,0.403921574354,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".blue400","cl":"blue400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[43,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".grey800","cl":"grey800","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[101,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[202,30],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":30,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294117647,0.250980392157,0.262745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"swipe up","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":40,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":80,"s":[100]},{"t":90,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.5,"y":1},"o":{"x":0.167,"y":0.167},"t":30,"s":[136.45,176.9,0],"to":[3.425,5.892,0],"ti":[-15.2,-2.85,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":50,"s":[160,194,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.4,"y":1},"o":{"x":0.5,"y":0},"t":60,"s":[160,194,0],"to":[0,0,0],"ti":[0,0,0]},{"t":90,"s":[160,155.45,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.5,0.5,0.667],"y":[1,1,1]},"o":{"x":[0.5,0.5,0.333],"y":[0,0,0]},"t":50,"s":[60,60,100]},{"i":{"x":[0.5,0.5,0.667],"y":[1,1,1]},"o":{"x":[0.5,0.5,0.333],"y":[0,0,0]},"t":60,"s":[48,48,100]},{"i":{"x":[0.5,0.5,0.667],"y":[1,1,1]},"o":{"x":[0.5,0.5,0.333],"y":[0,0,0]},"t":80,"s":[48,48,100]},{"t":90,"s":[60,60,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[56,56],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":67,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":50,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":30,"op":91,"st":5,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".grey800","cl":"grey800","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.2,"y":0},"t":210,"s":[160,179,0],"to":[0,2.5,0],"ti":[0,-2.5,0]},{"t":240,"s":[160,194,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[88,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":5,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294118524,0.250980407,0.262745112181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":218,"op":360,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"Taskbar_1","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.5,"y":0},"t":60,"s":[160,194,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":90,"s":[160,175,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.167,"y":0.167},"t":107,"s":[160,179,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.2,"y":1},"o":{"x":0.2,"y":0},"t":210,"s":[160,179,0],"to":[0,0,0],"ti":[0,0,0]},{"t":240,"s":[160,194,0]}],"ix":2,"l":2},"a":{"a":0,"k":[101,15,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0,0,0],"y":[1,1,1]},"o":{"x":[0.2,0.2,0.2],"y":[0,0,0]},"t":72,"s":[43,43,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.2,0.2,0.2],"y":[0,0,0]},"t":90,"s":[100,100,100]},{"i":{"x":[0.8,0.8,0.2],"y":[1,1,1]},"o":{"x":[0.3,0.3,0.4],"y":[0,0,0]},"t":210,"s":[100,100,100]},{"t":218,"s":[43,43,100]}],"ix":6,"l":2}},"ao":0,"w":202,"h":30,"ip":72,"op":218,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".grey800","cl":"grey800","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.5,"y":0},"t":60,"s":[160,194,0],"to":[0,-4.5,0],"ti":[0,4.5,0]},{"t":90,"s":[160,167,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"rc","d":1,"s":{"a":0,"k":[88,4],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":5,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294118524,0.250980407,0.262745112181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":72,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".blue100","cl":"blue100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[160,100.5,0],"ix":2,"l":2},"a":{"a":0,"k":[192,122.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[320,202],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":16,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192,123],"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw/taskbar_edu_suggestions_persistent.json b/quickstep/res/raw/taskbar_edu_suggestions_persistent.json
new file mode 100644
index 0000000..07cea32
--- /dev/null
+++ b/quickstep/res/raw/taskbar_edu_suggestions_persistent.json
@@ -0,0 +1 @@
+{"v":"5.7.8","fr":60,"ip":0,"op":301,"w":320,"h":202,"nm":"Taskbar_Persistent_EDU_3","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":6,"ty":4,"nm":"bluematte 2","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[157,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".blue400","cl":"blue400","tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.8,"y":0},"t":63,"s":[157,36.436,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.5,"y":1},"o":{"x":0.3,"y":0},"t":93,"s":[157,14.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":106,"s":[157,15,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[80,80,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"bluematte","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[157,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".blue400","cl":"blue400","tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.8,"y":0},"t":60,"s":[157,15,0],"to":[0,-3.573,0],"ti":[0,3.573,0]},{"t":90,"s":[157,-6.436,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[80,80,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".blue100","cl":"blue100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[157,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".yellow400","cl":"yellow400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[130,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294118,0.788235294118,0.203921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".green400","cl":"green400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[101,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.35686275363,0.72549021244,0.454901963472,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".red400","cl":"red400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[72,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333337307,0.403921574354,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".blue400","cl":"blue400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[43,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[18,15,0],"ix":2,"l":2},"a":{"a":0,"k":[121.456,227.454,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[125.547,231.545],"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":"Layer 18","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[125.547,227.455],"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":"Layer 17","np":1,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[125.547,223.364],"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":"Layer 16","np":1,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[121.453,231.545],"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":"Layer 15","np":1,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[121.453,227.455],"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":"Layer 14","np":1,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[121.453,223.364],"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":"Layer 13","np":1,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[117.364,231.545],"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":"Layer 12","np":1,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[117.364,227.455],"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":"Layer 11","np":1,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[117.364,223.364],"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":"Layer 10","np":1,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Taskbar_4","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.5,148.5,0],"ix":2,"l":2},"a":{"a":0,"k":[101,15,0],"ix":1,"l":2},"s":{"a":0,"k":[375,375,100],"ix":6,"l":2}},"ao":0,"w":202,"h":30,"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".grey800","cl":"grey800","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[160,119.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[320,55],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294117647,0.250980392157,0.262745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".grey800","cl":"grey800","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[160,147,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[320,110],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":16,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294117647,0.250980392157,0.262745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".blue100","cl":"blue100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[160,74.5,0],"ix":2,"l":2},"a":{"a":0,"k":[192,122.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[320,150],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":16,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192,123],"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/raw/taskbar_edu_suggestions_transient.json b/quickstep/res/raw/taskbar_edu_suggestions_transient.json
new file mode 100644
index 0000000..6153647
--- /dev/null
+++ b/quickstep/res/raw/taskbar_edu_suggestions_transient.json
@@ -0,0 +1 @@
+{"v":"5.7.8","fr":60,"ip":0,"op":301,"w":320,"h":202,"nm":"Taskbar_Transient_EDU_3","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"greenmatte 2","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[184.068,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.807843137255,0.917647058824,0.839215686275,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".green400","cl":"green400","tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.8,"y":0},"t":69,"s":[184.068,36.436,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.5,"y":1},"o":{"x":0.3,"y":0},"t":99,"s":[184.068,14.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":112,"s":[184.068,15,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[80,80,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.35686275363,0.72549021244,0.454901963472,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"greenmatte","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[184.068,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.807843137255,0.917647058824,0.839215686275,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".green400","cl":"green400","tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.8,"y":0},"t":66,"s":[184.068,15,0],"to":[0,0,0],"ti":[0,0,0]},{"t":96,"s":[184.068,-6.436,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[80,80,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.35686275363,0.72549021244,0.454901963472,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".green100","cl":"green100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[184.068,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.807843137255,0.917647058824,0.839215686275,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"bluematte 2","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[157,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".blue400","cl":"blue400","tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.8,"y":0},"t":63,"s":[157,36.436,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.5,"y":1},"o":{"x":0.3,"y":0},"t":93,"s":[157,14.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":106,"s":[157,15,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[80,80,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"bluematte","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[157,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":".blue400","cl":"blue400","tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.8,"y":0},"t":60,"s":[157,15,0],"to":[0,-3.573,0],"ti":[0,3.573,0]},{"t":90,"s":[157,-6.436,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[80,80,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.443,0],[0,-4.443],[4.443,0],[0,4.443]],"o":[[4.443,0],[0,4.443],[-4.443,0],[0,-4.443]],"v":[[0,-8.045],[8.045,0],[0,8.045],[-8.045,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":".blue100","cl":"blue100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[157,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":".yellow400","cl":"yellow400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[130,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988235294118,0.788235294118,0.203921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":".green400","cl":"green400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[101,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.35686275363,0.72549021244,0.454901963472,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":".red400","cl":"red400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[72,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.933333337307,0.403921574354,0.360784322023,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":".blue400","cl":"blue400","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[43,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.272,0],[0,-5.272],[5.272,0],[0,5.272]],"o":[[5.272,0],[0,5.272],[-5.272,0],[0,-5.272]],"v":[[0,-9.545],[9.545,0],[0,9.545],[-9.545,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.40000000596,0.615686297417,0.964705884457,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":15,"ty":4,"nm":".grey300","cl":"grey300","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[18,15,0],"ix":2,"l":2},"a":{"a":0,"k":[121.456,227.454,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[125.547,231.545],"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":"Layer 18","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[125.547,227.455],"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":"Layer 17","np":1,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[125.547,223.364],"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":"Layer 16","np":1,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[121.453,231.545],"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":"Layer 15","np":1,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[121.453,227.455],"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":"Layer 14","np":1,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[121.453,223.364],"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":"Layer 13","np":1,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[117.364,231.545],"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":"Layer 12","np":1,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[117.364,227.455],"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":"Layer 11","np":1,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.753,0],[0,-0.753],[0.753,0],[0,0.753]],"o":[[0.753,0],[0,0.753],[-0.753,0],[0,-0.753]],"v":[[0,-1.364],[1.364,0],[0,1.364],[-1.364,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.854901960784,0.862745098039,0.878431372549,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"tr","p":{"a":0,"k":[117.364,223.364],"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":"Layer 10","np":1,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":16,"ty":4,"nm":".grey800","cl":"grey800","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[101,15,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[202,30],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":30,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.235294117647,0.250980392157,0.262745098039,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":11400,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Taskbar_3","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-101,101,0],"ix":2,"l":2},"a":{"a":0,"k":[101,15,0],"ix":1,"l":2},"s":{"a":0,"k":[375,375,100],"ix":6,"l":2}},"ao":0,"w":202,"h":30,"ip":0,"op":11400,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".blue100","cl":"blue100","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[160,100.5,0],"ix":2,"l":2},"a":{"a":0,"k":[192,122.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[320,202],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":16,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.823529411765,0.890196078431,0.988235294118,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[192,123],"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":360,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/quickstep/res/values-af/strings.xml b/quickstep/res/values-af/strings.xml
index ac10cc8..2dc0a1e 100644
--- a/quickstep/res/values-af/strings.xml
+++ b/quickstep/res/values-af/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Kry programvoorstelle op jou tuisskerm se gunstelingery"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Kry maklik toegang tot jou programme wat die meeste gebruik word, direk van die tuisskerm af. Voorstelle sal verander op grond van jou roetines. Programme in die onderste ry sal opskuif na jou tuisskerm."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Kry maklik toegang tot jou programme wat die meeste gebruik word, direk van die tuisskerm af. Voorstelle sal verander op grond van jou roetines. Programme in die gunstelingery sal na jou tuisskerm toe skuif."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Kry maklik toegang tot jou programme wat die meeste gebruik word, direk van die tuisskerm af. Voorstelle sal verander op grond van jou roetines. Programme in die onderste ry sal na \'n nuwe vouer toe skuif."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Kry programvoorstelle"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nee, dankie"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Instellings"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Gaan na Instellings om sensitiwiteit van teruggebaar te verander"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Swiep om terug te gaan"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Swiep van die linker- of regterrand na die middel van die skerm om na die vorige skerm terug te gaan."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Swiep met 2 vingers van die linker- of regterkant van die skerm af na die middel toe om terug te keer na die vorige skerm."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Gaan terug"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Maak seker dat jy van die onderrand van die skerm af opswiep."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Maak seker jy onderbreek nie voordat jy laat los nie."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Maak seker jy swiep reguit op."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Jy het die \"gaan na tuisskerm\"-gebaar voltooi."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Swiep om na tuisskerm toe te gaan"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Swiep op van die onderkant van jou skerm af. Hierdie gebaar neem jou altyd na die tuisskerm toe."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Swiep met 2 vingers op van die onderkant van die skerm af. Dié gebaar neem jou altyd na die tuisskerm toe."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Gaan na tuisskerm"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Swiep enige tyd van die onderkant van jou skerm af op om na jou tuisskerm toe te gaan"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Maak seker dat jy van die onderrand van die skerm af opswiep."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Probeer om die venster langer te hou voordat jy laat los."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Maak seker dat jy reguit opswiep en dan onderbreek."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Jy het die \"wissel tussen programme\"-gebaar voltooi."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Swiep om tussen programme te wissel"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Swiep van die onderkant van jou skerm af op, hou en laat los dan om tussen programme te wissel."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Swiep met 2 vingers op van die onderkant van jou skerm af, hou en laat los dan om tussen programme te wissel."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Wissel apps"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Gereed"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Klaar"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Instellings"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Mooi so!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Tutoriaal <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Gereed!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Swiep op om na die tuisskerm toe te gaan"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Jy is gereed om jou foon te begin gebruik"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Swiep op om na die tuisskerm toe te gaan"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Tik op die tuisknoppie om na jou tuisskerm toe te gaan"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Jy is gereed om jou <xliff:g id="DEVICE">%1$s</xliff:g> te begin gebruik"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"toestel"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Stelselnavigasie-instellings"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Deel"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Skermkiekie"</string>
     <string name="action_split" msgid="2098009717623550676">"Verdeel"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Probeer ander program om verdeelde skerm te gebruik"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Program steun nie verdeelde skerm nie."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Tik op ’n ander app om verdeelde skerm te gebruik"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Kies nog ’n app as jy verdeelde skerm wil gebruik"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Jou organisasie laat nie hierdie program toe nie"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Slaan navigasietutoriaal oor?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Jy kan dit later in die <xliff:g id="NAME">%1$s</xliff:g>-program kry"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Kanselleer"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Slaan oor"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Draai skerm"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Taakbalkopvoeding het verskyn"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Taakbalkopvoeding is toegemaak"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Gebruik die taakbalk om tussen programme te wissel"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Sleep na die kant om twee programme gelyktydig te gebruik"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Raak en hou om die taakbalk te versteek"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Volgende"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Terug"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Taakbalkopvoeding"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Sleep ’n app na die kant toe om 2 apps tegelyk te gebruik"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Stadigswiep op om die Taakbalk te wys"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Kry appvoorstelle op grond van jou roetine"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Skakel gebaarnavigasie in Instellings aan om die Taakbalk outomaties te versteek"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Doen meer met die Taakbalk"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Maak toe"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Klaar"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Tuis"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Onlangs"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Kennisgewings"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Kitsinstellings"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Taakbalk"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Taakbalk word gewys"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Taakbalk is versteek"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigasiebalk"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Wys Taakbalk altyd"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Verander navigasiemodus"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Taakbalkverdeler"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Skuif na links bo"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Skuif na regs onder"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Wys nog # app.}other{Wys nog # apps.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> en <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-am/strings.xml b/quickstep/res/values-am/strings.xml
index dfa8532..36a8bda 100644
--- a/quickstep/res/values-am/strings.xml
+++ b/quickstep/res/values-am/strings.xml
@@ -20,7 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="recent_task_option_pin" msgid="7929860679018978258">"ሰካ"</string>
-    <string name="recent_task_option_freeform" msgid="48863056265284071">"ነጻ ቅጽ"</string>
+    <string name="recent_task_option_freeform" msgid="48863056265284071">"ነፃ ቅጽ"</string>
     <string name="recents_empty_message" msgid="7040467240571714191">"ምንም የቅርብ ጊዜ ንጥሎች የሉም"</string>
     <string name="accessibility_app_usage_settings" msgid="6312864233673544149">"የመተግበሪያ አጠቃቀም ቅንብሮች"</string>
     <string name="recents_clear_all" msgid="5328176793634888831">"ሁሉንም አጽዳ"</string>
@@ -34,8 +34,7 @@
     <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"በመነሻ ገጽዎ ታችኛው ረድፍ ላይ የመተግበሪያ አስተያየት ጥቆማዎችን ያግኙ"</string>
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"በመነሻ ማያ ገጽዎ የተወዳጆች ረድፍ ላይ የመተግበሪያ አስተያየት ጥቆማዎችን ያግኙ"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"በጣም ስራ ላይ የዋሉ መተግበሪያዎችዎን በቀላሉ ከመነሻ ገጹ ሆነው ይድረሱባቸው። የአስተያየት ጥቆማዎች በእርስዎ ዕለት ተዕለት ተግባራት ላይ በመመስረት ይቀየራሉ። በታችኛው ረድፍ ላይ ያሉ መተግበሪያዎች ወደ መነሻ ገጽዎ ይወሰዳሉ።"</string>
-    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"በጣም ሥራ ላይ የዋሉ መተግበሪያዎችዎን በቀላሉ ከመነሻ ገጹ ሆነው ይድረሱባቸው። የአስተያየት ጥቆማዎች በእርስዎ ዕለት ተዕለት ተግባራት ላይ በመመሥረት ይቀየራሉ። በተወዳጆች ረድፍ ውስጥ ያሉ መተግበሪያዎች ወደ የእርስዎ መነሻ ማያ ገጽ ይንቀሳቀሳሉ።"</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"በጣም ስራ ላይ የዋሉ መተግበሪያዎችዎን በቀላሉ ከመነሻ ገጹ ሆነው ይድረሱባቸው። የአስተያየት ጥቆማዎች በእርስዎ ዕለት ተዕለት ተግባራት ላይ በመመስረት ይቀየራሉ። በታችኛው ረድፍ ላይ ያሉ መተግበሪያዎች ወደ አዲስ አቃፊ ይወሰዳሉ።"</string>
+    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"በጣም ሥራ ላይ የዋሉ መተግበሪያዎችዎን በቀላሉ ከመነሻ ገጹ ሆነው ይድረሱባቸው። የአስተያየት ጥቆማዎች በእርስዎ ዕለት ተዕለት ተግባራት ላይ በመመሥረት ይቀየራሉ። በተወዳጆች ረድፍ ውስጥ ያሉ መተግበሪያዎች ወደ የእርስዎ መነሻ ማያ ገፅ ይንቀሳቀሳሉ።"</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"የመተግበሪያ አስተያየት ጥቆማዎችን አግኝ"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"አይ፣ አመሰግናለሁ"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"ቅንብሮች"</string>
@@ -52,14 +51,19 @@
     <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"ከማያ ገጹ ታችኛው ክፍል ጋር በጣም ጠጋ ብለው አለማንሸራተትዎን ያረጋግጡ።"</string>
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"ከኋላ ስሜት ሰጭነት ደረጃ ለመለወጥ ወደ ቅንብሮች ይመለሱ"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"ወደኋላ ለመመለስ ያንሸራትቱ"</string>
-    <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"ወደ መጨረሻው ማያ ገጽ ለመመለስ ከግራ ወይም ከቀኝ ጠርዝ ወደ ማያ ገጹ መሃል ያንሸራትቱ።"</string>
+    <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"ወደ መጨረሻው ማያ ገፅ ለመመለስ ከግራ ወይም ከቀኝ ጠርዝ ወደ ማያ ገጹ መሃል ያንሸራትቱ።"</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"ወደ መጨረሻው ማያ ገፅ ለመመለስ በ2 ጣቶች ከግራ ወይም ከቀኝ ጠርዝ ወደ ማያ ገጹ መሃል ያንሸራትቱ።"</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"ተመለስ"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"ከማያ ገጹ የታችኛው ጫፍ ወደ ላይ ማንሸራተትዎን ያረጋግጡ።"</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"ከመልቀቅዎ በፊት ለአፍታ እንዳልቆሙ ያረጋግጡ።"</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"በቀጥታ ወደ ላይ ማንሸራተትዎን ያረጋግጡ።"</string>
     <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"የወደ መነሻ ሂድ ምልክትን አጠናቀዋል። ቀጥሎም ወደ ኋላ እንዴት መሄድ እንደሚችሉ ይወቁ።"</string>
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"የወደ መነሻ ሂድ ምልክትን አጠናቀዋል።"</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"ወደ መነሻ ለመሄድ ያንሸራትቱ"</string>
-    <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"ከእርስዎ ማያ ገጽ ግርጌ ላይ ወደ ላይ በጣት ጠረግ ያድርጉ። ይህ የእጅ ውዝዋዜ ሁልጊዜ ወደ መነሻ ማያ ገጽ ይወስድዎታል።"</string>
+    <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"ከእርስዎ ማያ ገፅ ግርጌ ላይ ወደ ላይ በጣት ጠረግ ያድርጉ። ይህ የእጅ ውዝዋዜ ሁልጊዜ ወደ መነሻ ማያ ገፅ ይወስድዎታል።"</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"በ2 ጣቶች ከማያ ገጹ ግርጌ ወደ ላይ ያንሸራትቱ። ይህ የእጅ ምልክት ሁልጊዜ ወደ መነሻ ማያ ገፅ ይወስደዎታል።"</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"ወደ መነሻ ይሂዱ"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"በማንኛውም ጊዜ ወደ መነሻ ማያ ገጽዎ ለመሄድ ከማያ ገጽዎ የታችኛው ክፍል ወደ ላይ ያንሸራትቱ"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"ከማያ ገጹ የታችኛው ጫፍ ወደ ላይ ማንሸራተትዎን ያረጋግጡ።"</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"ከመልቀቅዎ በፊት መስኮቱን ረዘም ላለ ጊዜ ለመያዝ ይሞክሩ።"</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"በቀጥታ ወደ ላይ ማንሸራተትዎን ያረጋግጡ፣ ከዚያ ለአፍታ ያቁሙ።"</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"መተግበሪያዎችን የመቀያየር ምልክትን አጠናቀዋል።"</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"መተግበሪያዎችን ለመቀየር ያንሸራትቱ"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"በመተግበሪያዎች መካከል ለመቀያየር ከማያ ገጽዎ ግርጌ ወደ ላይ ያንሸራትቱ፣ ይያዙ፣ ከዚያ ይለቀቁ።"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"በመተግበሪያዎች መካከል ለመቀያየር ከማያ ገጽዎ ግርጌ ላይ በ2 ጣቶች ያንሸራትቱ፣ ይያዙ፣ ከዚያ ይለቀቁ።"</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"መተግበሪያዎችን ይቀያይሩ"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"ሁሉም ዝግጁ"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"ተጠናቋል"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"ቅንብሮች"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"ጥሩ!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"አጋዥ ሥልጠና <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"ሁሉም ዝግጁ!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"ወደ መነሻ ለመሄድ በጣት ወደ ላይ ማንሸራተት"</string>
-    <string name="allset_description" msgid="6350320429953234580">"ስልክዎን መጠቀም ለመጀመር ዝግጁ ነዎት"</string>
+    <string name="allset_hint" msgid="459504134589971527">"ወደ መነሻ ለመሄድ በጣት ወደ ላይ ይጥረጉ"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"ወደ መነሻ ማያ ገጽዎ ለመሄድ የመነሻ አዝራሩን መታ ያድርጉ"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"የእርስዎን <xliff:g id="DEVICE">%1$s</xliff:g> መጠቀም ለመጀመር ዝግጁ ነዎት"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"መሣሪያ"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"የስርዓት አሰሳ ቅንብሮች"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"አጋራ"</string>
-    <string name="action_screenshot" msgid="8171125848358142917">"ቅጽበታዊ ገጽ እይታ"</string>
+    <string name="action_screenshot" msgid="8171125848358142917">"ቅጽበታዊ ገፅ እይታ"</string>
     <string name="action_split" msgid="2098009717623550676">"ክፈል"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"የተከፈለ ማያን ለመጠቀም ሌላ መተግበሪያ መታ ያድርጉ"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"መተግበሪያው የተከፈለ ማያ ገጽን አይደግፍም።"</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"የተከፈለ ማያ ገጽን ለመጠቀም ሌላ መተግበሪያ መታ ያድርጉ"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"የተከፈለ ማያ ገጽን ለመቀበል ሌላ መተግበሪያ ይምረጡ"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"ይህ ድርጊት በመተግበሪያው ወይም በእርስዎ ድርጅት አይፈቀድም"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"የአሰሳ አጋዥ ሥልጠናን ይዝለሉ?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"ይህን በኋላ በ<xliff:g id="NAME">%1$s</xliff:g> መተግበሪያው ውስጥ ማግኘት ይችላሉ"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"ይቅር"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"ዝለል"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"ማያ ገጹን አዙር"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"የተግባር አሞሌ ትምህርት ይታያል"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"የተግባር አሞሌ ትምህርት ተዘግቷል"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"መተግበሪያዎችን ለመቀየር የተግባር አሞሌውን ይጠቀሙ"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"በአንድ ጊዜ ሁለት መተግበሪያዎችን ለመጠቀም ወደ ጎን ይጎትቱ"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"የተግባር አሞሌውን ለመደበቅ ነክተው ይያዙት"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"ቀጣይ"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"ተመለስ"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"የተግባር አሞሌ ትምህርት"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"በአንድ ጊዜ 2 መተግበሪያዎችን ለመጠቀም አንድ መተግበሪያን ወደ ጎን ይጎትቱ"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"የተግባር አሞሌውን ለማሳየት ቀስ ብለው ወደ ላይ ያንሸራትቱ"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"በዕለት ተዕለት ተግባርዎ መሠረት የመተግበሪያ አስተያየቶችን ያግኙ"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"የተግባር አሞሌን በራስ ሰር ለመደበቅ የእጅ ምልክት ዳሰሳን በቅንብሮች ውስጥ ያብሩት"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"በተግባር አሞሌው ተጨማሪ ነገር ያድርጉ"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"ዝጋ"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"ተጠናቅቋል"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"መነሻ"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"የቅርብ ጊዜዎቹ"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"ማሳወቂያዎች"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"ፈጣን ቅንብሮች"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"የተግባር አሞሌ"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"የተግባር አሞሌ ይታያል"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"የተግባር አሞሌ ተደብቋል"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"የአሰሳ አሞሌ"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"ሁልጊዜ የተግባር አሞሌ ያሳዩ"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"የአሰሳ ሁነታን ይለውጡ"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"የተግባር አሞሌ አካፋይ"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"ወደ ላይ/ግራ ይውሰዱ"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"ወደ ታች/ቀኝ ይውሰዱ"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{ተጨማሪ # መተግበሪያ አሳይ።}one{ተጨማሪ # መተግበሪያ አሳይ።}other{ተጨማሪ # መተግበሪያዎች አሳይ።}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> እና <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-ar/strings.xml b/quickstep/res/values-ar/strings.xml
index 58b26d1..4e3cd17 100644
--- a/quickstep/res/values-ar/strings.xml
+++ b/quickstep/res/values-ar/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"رؤية التطبيقات المقترحة في صف التطبيقات المفضّلة في الشاشة الرئيسية"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"يمكنك الوصول إلى التطبيقات الأكثر استخدامًا بسهولة من الشاشة الرئيسية مباشرةً. سيتم تغيير الاقتراحات استنادًا إلى استخدامك الروتيني. وسيتم نقل التطبيقات من الصف السفلي في الشاشة الرئيسية إلى الصف الأعلى."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"يمكنك الوصول إلى التطبيقات الأكثر استخدامًا بسهولة من الشاشة الرئيسية مباشرةً. سيتم تغيير الاقتراحات استنادًا إلى سلاسل الإجراءات. سيتم نقل التطبيقات من صف التطبيقات المفضّلة إلى الشاشة الرئيسية."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"يمكنك الوصول إلى التطبيقات الأكثر استخدامًا بسهولة من الشاشة الرئيسية مباشرةً. سيتم تغيير الاقتراحات استنادًا إلى سلاسل الإجراءات. سيتم نقل التطبيقات من الصف الأسفل إلى مجلد جديد."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"رؤية تطبيقات مقترحة"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"لا، شكرًا"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"الإعدادات"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"لتغيير مستوى حساسية إيماءة الرجوع، انتقِل إلى \"الإعدادات\""</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"مرِّر سريعًا للرجوع."</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"للرجوع إلى الشاشة السابقة، مرِّر سريعًا من الحافة اليسرى أو الحافة اليمنى إلى وسط الشاشة."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"للرجوع إلى الشاشة السابقة، عليك التمرير سريعًا بإصبعين من الحافة اليسرى أو اليمنى نحو وسط الشاشة."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"الرجوع"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"تأكّد من التمرير سريعًا من الحافة السفلى للشاشة إلى أعلاها."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"تأكّد من عدم التوقّف قليلاً قبل رفع إصبعك."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"تأكّد من التمرير إلى الأعلى مباشرةً."</string>
@@ -60,13 +61,18 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"أكملت التدريب على إيماءة الانتقال إلى الشاشة الرئيسية."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"مرِّر سريعًا للانتقال إلى الشاشة الرئيسية"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"مرِّر سريعًا من أسفل الشاشة إلى أعلاها. تنقلك هذه الإيماءة دائمًا إلى الشاشة الرئيسية."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"مرِّر سريعًا بإصبعين من أسفل الشاشة إلى أعلاها. تنقلك هذه الإيماءة دائمًا إلى الشاشة الرئيسية."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"الانتقال إلى الشاشة الرئيسية"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"للانتقال إلى شاشتك الرئيسية في أي وقت، اسحب لأعلى الشاشة من أسفلها."</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"تأكّد من التمرير سريعًا من الحافة السفلى للشاشة إلى أعلاها."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"حاوِل إبقاء إصبعك على النافذة لمدة أطول قبل رفعه."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"تأكّد من التمرير سريعًا للأعلى مباشرةً ثم التوقّف قليلاً."</string>
     <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"لقد تعرّفت على كيفية استخدام الإيماءات. لإيقاف الإيماءات، انتقِل إلى \"الإعدادات\"."</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"أكملت التدريب على إيماءة التبديل بين التطبيقات."</string>
-    <string name="overview_gesture_intro_title" msgid="2902054412868489378">"مرِّر سريعًا للتبديل بين التطبيقات"</string>
+    <string name="overview_gesture_intro_title" msgid="2902054412868489378">"التمرير سريعًا للتبديل بين التطبيقات"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"للتبديل بين التطبيقات، مرِّر سريعًا من أسفل الشاشة لأعلاها مع تثبيت إصبعك ثم ارفعه."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"للتبديل بين التطبيقات، مرِّر سريعًا من أسفل الشاشة إلى أعلاها بإصبعين مع تثبيتهما، ثم ارفعهما."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"تبديل التطبيقات"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"اكتمل التدريب على الإيماءة"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"تم"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"الإعدادات"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"أحسنت"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"الدليل التوجيهي <xliff:g id="CURRENT">%1$d</xliff:g> من إجمالي <xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"اكتملت عملية الإعداد"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"مرِّر سريعًا للأعلى للانتقال إلى الشاشة الرئيسية."</string>
-    <string name="allset_description" msgid="6350320429953234580">"يمكنك الآن بدء استخدام هاتفك."</string>
+    <string name="allset_hint" msgid="459504134589971527">"يمكنك التمرير السريع إلى الأعلى للانتقال إلى الشاشة الرئيسية."</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"انقر على زر الشاشة الرئيسية للانتقال إلى الشاشة الرئيسية."</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"يمكنك الآن بدء استخدام \"<xliff:g id="DEVICE">%1$s</xliff:g>\"."</string>
+    <string name="default_device_name" msgid="6660656727127422487">"الجهاز"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"إعدادات التنقّل داخل النظام"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"مشاركة"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"لقطة شاشة"</string>
     <string name="action_split" msgid="2098009717623550676">"تقسيم"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"انقر على تطبيق آخر لاستخدام وضع تقسيم الشاشة."</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"التطبيق لا يتيح تقسيم الشاشة."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"انقر على تطبيق آخر لاستخدام وضع تقسيم الشاشة."</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"اختَر تطبيقًا آخر لاستخدام وضع تقسيم الشاشة."</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"لا يسمح التطبيق أو لا تسمح مؤسستك بهذا الإجراء."</string>
-    <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"هل تريد تخطي الدليل التوجيهي؟"</string>
+    <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"هل تريد تخطي الدليل التوجيهي للتنقّل؟"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"يمكنك العثور على هذا الدليل التوجيهي لاحقًا في التطبيق \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"إلغاء"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"التخطي"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"تدوير الشاشة"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"ظهرت لوحة تعليم استخدام شريط المهام."</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"تم إغلاق لوحة تعليم استخدام شريط المهام."</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"يمكنك استخدام شريط المهام للتبديل بين التطبيقات."</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"اسحبه إلى جانب الشاشة لاستخدام تطبيقين في آنٍ واحد."</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"انقر مع الاستمرار لإخفاء شريط المهام."</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"الشاشة التالية"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"رجوع"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"التعريف بشريط التطبيقات"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"اسحب تطبيقًا إلى جانب الشاشة لاستخدام تطبيقََين في آنٍ واحد."</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"مرِّر ببطء للأعلى لإظهار شريط التطبيقات"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"احصل على اقتراحات التطبيقات بناءً على سلسلة إجراءاتك."</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"فعِّل خيار \"التنقُّل بالإيماءات\" في \"الإعدادات\" لإخفاء شريط التطبيقات تلقائيًا."</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"إنجاز المزيد باستخدام شريط التطبيقات"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"إغلاق"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"تم"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"الرئيسية"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"رجوع"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"‏مفتاح التبديل إلى IME"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"الأحدث"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"الإشعارات"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"إعدادات سريعة"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"شريط التطبيقات"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"تم إظهار شريط التطبيقات"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"تم إخفاء شريط التطبيقات"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"شريط التنقل"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"إظهار شريط التطبيقات دائمًا"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"تغيير وضع التنقل"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"مقسِّم شريط التطبيقات"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"الانتقال إلى يمين الشاشة أو أعلاها"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"الانتقال إلى يسار الشاشة أو أسفلها"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{إظهار تطبيق واحد آخر}zero{إظهار # تطبيق آخر}two{إظهار تطبيقَين آخرَين}few{إظهار # تطبيقات أخرى}many{إظهار # تطبيقًا آخر}other{إظهار # تطبيق آخر}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"\"<xliff:g id="APP_NAME_1">%1$s</xliff:g>\" و\"<xliff:g id="APP_NAME_2">%2$s</xliff:g>\""</string>
 </resources>
diff --git a/quickstep/res/values-as/strings.xml b/quickstep/res/values-as/strings.xml
index 38a506f..aab660d 100644
--- a/quickstep/res/values-as/strings.xml
+++ b/quickstep/res/values-as/strings.xml
@@ -24,7 +24,7 @@
     <string name="recents_empty_message" msgid="7040467240571714191">"কোনো শেহতীয়া বস্তু নাই"</string>
     <string name="accessibility_app_usage_settings" msgid="6312864233673544149">"এপে ব্যৱহাৰ কৰা ডেটাৰ ছেটিং"</string>
     <string name="recents_clear_all" msgid="5328176793634888831">"আটাইবোৰ মচক"</string>
-    <string name="accessibility_recent_apps" msgid="4058661986695117371">"শেহতীয়া এপসমূহ"</string>
+    <string name="accessibility_recent_apps" msgid="4058661986695117371">"শেহতীয়া এপ্‌সমূহ"</string>
     <string name="task_view_closed" msgid="9170038230110856166">"কাৰ্য বন্ধ কৰা হ’ল"</string>
     <string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
     <string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"&lt; ১ মিনিট"</string>
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"আপোনাৰ গৃহ স্ক্ৰীনৰ প্ৰিয় সমলৰ শাৰীটোত এপৰ পৰামর্শসমূহ পাওক"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"আপোনাৰ সকলোতকৈ বেছিকৈ ব্যৱহৃত এপ্‌সমূহ গৃহ স্ক্ৰীনতে সহজে এক্সেছ কৰক। আপোনাৰ ৰুটিনসমূহৰ ভিত্তিত পৰামর্শসমূহ সলনি হ\'ব। একেবাৰে তলৰ শাৰীটোত থকা এপ্‌সমূহ ওপৰৰ আপোনাৰ গৃহ স্ক্ৰীনলৈ যাব।"</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"আপোনাৰ সকলোতকৈ বেছিকৈ ব্যৱহৃত এপ্‌সমূহ গৃহ স্ক্ৰীনতে সহজে এক্সেছ কৰক। আপোনাৰ ৰুটিনসমূহৰ ভিত্তিত পৰামর্শসমূহ সলনি হ’ব। প্ৰিয় সমলৰ শাৰীত থকা এপ্‌সমূহ আপোনাৰ গৃহ স্ক্রীনলৈ যাব।"</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"আপোনাৰ সকলোতকৈ বেছিকৈ ব্যৱহৃত এপ্‌সমূহ গৃহ স্ক্ৰীনতে সহজে এক্সেছ কৰক। আপোনাৰ ৰুটিনসমূহৰ ভিত্তিত পৰামর্শসমূহ সলনি হ\'ব। একেবাৰে তলৰ শাৰীটোত থকা এপ্‌সমূহ এটা নতুন ফ\'ল্ডাৰলৈ যাব।"</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"এপৰ পৰামর্শসমূহ পাওক"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"নালাগে, ধন্যবাদ"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"ছেটিং"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"উভতি যোৱাৰ নির্দেশটোৰ সংবেদনশীলতা সলনি কৰিবলৈ ছেটিঙলৈ যাওক"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"উভতি যাবলৈ ছোৱাইপ কৰক"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"অন্তিম স্ক্ৰীনখনলৈ উভতি যাবলৈ বাওঁ অথবা সোঁ প্ৰান্তৰৰ পৰা মাজলৈ ছোৱাইপ কৰক।"</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"অন্তিম স্ক্ৰীনখনলৈ উভতি যাবলৈ ২ টা আঙুলিৰে স্ক্ৰীনখনৰ বাওঁ অথবা সোঁ প্ৰান্তৰৰ পৰা মাজলৈ ছোৱাইপ কৰক।"</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"উভতি যাওক"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"আপুনি স্ক্ৰীনৰ তলৰ প্ৰান্তৰ পৰা ওপৰলৈ ছোৱাইপ কৰাটো নিশ্চিত কৰক।"</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"আপুনি এৰি দিয়াৰ পূৰ্বে অলপো নোৰোৱাটো নিশ্চিত কৰক।"</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"আপুনি পোনকৈ ওপৰলৈ ছোৱাইপ কৰাটো নিশ্চিত কৰক।"</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"আপুনি গৃহ স্ক্ৰীনলৈ যোৱাৰ নিৰ্দেশটো সম্পূৰ্ণ কৰিলে।"</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"গৃহ স্ক্ৰীনলৈ যাবলৈ ছোৱাইপ কৰক"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"আপোনাৰ স্ক্ৰীনৰ তলৰ অংশৰ পৰা ওপৰলৈ ছোৱাইপ কৰক। এই নিৰ্দেশটোৱে আপোনাক সদায় গৃহ স্ক্ৰীনলৈ লৈ যায়।"</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"স্ক্ৰীনখনৰ একেবাৰে তলৰ পৰা ২ টা আঙুলিৰে ওপৰলৈ ছোৱাইপ কৰক। এই নিৰ্দেশটোৱে আপোনাক সদায় গৃহ স্ক্ৰীনলৈ লৈ যায়।"</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"গৃহ পৃষ্ঠালৈ যাওক"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"আপোনাৰ গৃহ স্ক্ৰীনলৈ যিকোনো সময়তে যাবলৈ, আপোনাৰ স্ক্ৰীনখনৰ একেবাৰে তলৰ পৰা ওপৰলৈ ছোৱাইপ কৰক"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"আপুনি স্ক্ৰীনৰ তলৰ প্ৰান্তৰ পৰা ওপৰলৈ ছোৱাইপ কৰাটো নিশ্চিত কৰক।"</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"এৰি দিয়াৰ পূৰ্বে ৱিণ্ডখন দীৰ্ঘ সময়ৰ বাবে ধৰি ৰাখিবলৈ চেষ্টা কৰক।"</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"আপুনি স্ক্ৰীনৰ ওপৰলৈ পোনকৈ ছোৱাইপ কৰি তাৰ পাছত ৰোৱাটো নিশ্চিত কৰক।"</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"আপুনি এপ্‌ সলনি কৰাৰ নিৰ্দেশটো সম্পূৰ্ণ কৰিলে।"</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"এপ্‌ সলনি কৰিবলৈ ছোৱাইপ কৰক"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"এপ্‌সমূহ সালসলনিকৈ ব্যৱহাৰ কৰিবলৈ আপোনাৰ স্ক্ৰীনৰ একেবাৰে তলৰ অংশৰ পৰা ওপৰলৈ ছোৱাইপ কৰি ধৰি ৰাখক আৰু তাৰ পাছত এৰি দিয়ক।"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"এপ্‌সমূহ সালসলনিকৈ ব্যৱহাৰ কৰিবলৈ ২ টা আঙুলিৰে আপোনাৰ স্ক্ৰীনৰ একেবাৰে তলৰ অংশৰ পৰা ওপৰলৈ ছোৱাইপ কৰি ধৰি ৰাখক আৰু তাৰ পাছত এৰি দিয়ক।"</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"এপ্‌ সলনি কৰক"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"সম্পূৰ্ণ সাজু"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"হ’ল"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"ছেটিং"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"সুন্দৰ!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"টিউট’ৰিয়েল <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"সকলো সাজু!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"গৃহ স্ক্ৰীনলৈ যাবলৈ ওপৰলৈ ছোৱাইপ কৰক"</string>
-    <string name="allset_description" msgid="6350320429953234580">"আপুনি আপোনাৰ ফ’নটো ব্যৱহাৰ কৰিবলৈ সাজু"</string>
+    <string name="allset_hint" msgid="459504134589971527">"গৃহ স্ক্ৰীনলৈ যাবলৈ ওপৰলৈ ছোৱাইপ কৰক"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"আপোনাৰ গৃহ স্ক্ৰীনলৈ যাবলৈ গৃহপৃষ্ঠা বুটামটো টিপক"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"আপুনি আপোনাৰ <xliff:g id="DEVICE">%1$s</xliff:g>টো ব্যৱহাৰ কৰিবলৈ সাজু"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"ডিভাইচ"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"ছিষ্টেম নেভিগেশ্বনৰ ছেটিং"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"শ্বেয়াৰ কৰক"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"স্ক্ৰীনশ্বট"</string>
     <string name="action_split" msgid="2098009717623550676">"বিভাজন কৰক"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"বিভাজিত স্ক্ৰীন ব্যৱহাৰ কৰিবলৈ অন্য এটা এপত টিপক"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"এপ্‌টোৱে বিভাজিত স্ক্ৰীন সমৰ্থন নকৰে।"</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"বিভাজিত স্ক্ৰীন ব্যৱহাৰ কৰিবলৈ অন্য এটা এপত টিপক"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"বিভাজিত স্ক্ৰীন ব্যৱহাৰ কৰিবলৈ অন্য এটা এপ্ বাছক"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"এপ্‌টোৱে অথবা আপোনাৰ প্ৰতিষ্ঠানে এই কাৰ্যটোৰ অনুমতি নিদিয়ে"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"নেভিগেশ্বনৰ টিউট’ৰিয়েল এৰিব বিচাৰে নেকি?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"আপুনি এয়া পাছত <xliff:g id="NAME">%1$s</xliff:g> এপ্‌টোত বিচাৰিব পাৰিব"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"বাতিল কৰক"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"এৰি যাওক"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"স্ক্ৰীনখন ঘূৰাওক"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"টাস্কবাৰৰ শিক্ষাৰ পেনেলটো প্ৰদর্শিত হৈছে"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"টাস্কবাৰৰ শিক্ষাৰ পেনেলটো বন্ধ হৈছে"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"এপ্‌ সলনি কৰিবলৈ টাস্কবাৰডাল ব্যৱহাৰ কৰক"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"এবাৰতে দুটা এপ্‌ ব্যৱহাৰ কৰিবলৈ কাষলৈ টানি আনি এৰক"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"টাস্কবাৰডাল লুকুৱাবলৈ স্পৰ্শ কৰি ধৰি ৰাখক"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"পৰৱৰ্তী"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"উভতি যাওক"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"টাস্কবাৰৰ শিক্ষা"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"এবাৰতে ২ টা এপ্‌ ব্যৱহাৰ কৰিবলৈ কোনো এপ্‌ কাষলৈ টানি আনি এৰক"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"টাস্কবাৰ দেখুৱাবলৈ লাহেকৈ ওপৰলৈ ছোৱাইপ কৰক"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"আপোনাৰ ৰুটিনৰ ওপৰত আধাৰিত এপৰ পৰামৰ্শ পাওক"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"টাস্কবাৰ স্বয়ংক্ৰিয়ভাৱে লুকুৱাবলৈ ছেটিঙত আঙুলিৰ স্পৰ্শৰ নিৰ্দেশেৰে কৰা নেভিগেশ্বন অন কৰক"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"টাস্কবাৰৰ জৰিয়তে অধিক কাৰ্য সম্পাদন কৰক"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"বন্ধ কৰক"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"হ’ল"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"গৃহপৃষ্ঠা"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"উভতি যাওক"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME ছুইচ্চাৰ"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"শেহতীয়া"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"জাননী"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"ক্ষিপ্ৰ ছেটিং"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"টাস্কবাৰ"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"টাস্কবাৰ দেখুওৱা হৈছে"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"টাস্কবাৰ লুকুৱাই থোৱা হৈছে"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"নেভিগেশ্বনৰ দণ্ড"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"টাস্কবাৰ সদায় দেখুৱাওক"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"নেভিগেশ্বন ম’ড সলনি কৰক"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"টাস্কবাৰ বিভাজক"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"ওপৰৰ বাঁওফাললৈ নিয়ক"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"তলৰ সোঁফাললৈ নিয়ক"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{আৰু # টা এপ্‌ দেখুৱাওক।}one{আৰু # টা এপ্‌ দেখুৱাওক।}other{আৰু # টা এপ্‌ দেখুৱাওক।}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> আৰু <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-az/strings.xml b/quickstep/res/values-az/strings.xml
index 74fcb63..d6cf4ac 100644
--- a/quickstep/res/values-az/strings.xml
+++ b/quickstep/res/values-az/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Ana ekranın sevimlilər sırasında tətbiq təklifləri alın"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Birbaşa Ana ekrandan ən çox istifadə edilən tətbiqlərə asanlıqla daxil olun. Təkliflər rejimlərinizə uyğun olaraq dəyişəcək. Aşağı sıradakı tətbiqlər Ana ekrana köçürüləcək."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Birbaşa Ana ekrandan ən çox işlədilən tətbiqlərə asanlıqla girin. Təkliflər rejimlərinizə uyğun olaraq dəyişəcək. Sevimlilər sırasındakı tətbiqlər Əsas ekrana köçürüləcək."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Birbaşa Əsas səhifədən ən çox istifadə edilən tətbiqlərə asanlıqla daxil olun. Təkliflər rejimlərinizə uyğun olaraq dəyişəcək. Aşağı sıradakı tətbiqlər yeni qovluğa köçürüləcək."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Tətbiq təklifləri əldə edin"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Yox, çox sağolun"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Ayarlar"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Geri qayıtma jestinin həssaslığını dəyişmək üçün Ayarlara keçin"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Geri qayıtmaq üçün sürüşdürün"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Sonuncu ekrana qayıtmaq üçün ekranın sol, yaxud sağ kənarından mərkəzinə doğru sürüşdürün."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Sonuncu ekrana qayıtmaq üçün 2 barmaqla ekranın sol, yaxud sağ kənarından mərkəzinə doğru sürüşdürün."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Geri qayıdın"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Ekranın ən kənar aşağısından yuxarı sürüşdürün."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Buraxmazdan əvvəl durdurmadığınıza əmin olun."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Birbaşa yuxarı sürüşdürün."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Əsas səhifəyə keçmə jestini tamamladınız."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Əsas səhifəyə keçmək üçün sürüşdürün"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Ekranın aşağısından yuxarısına sürüşdürün. Bu jest həmişə Əsas səhifəyə aparır."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"2 barmaqla ekranın aşağısından yuxarısına sürüşdürün. Bu jest həmişə Əsas səhifəyə aparır."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Əsas səhifəyə qayıdın"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"İstənilən vaxt əsas ekranınıza getmək üçün ekranın aşağısından yuxarı sürüşdürün"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Ekranın ən kənar aşağısından yuxarı sürüşdürün."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Barmağı buraxmadan öncə displeydə bir müddət saxlayın."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Sürüşdürüb ekranın yuxarı kənarında saxlayın."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Tətbiqləri keçirmə jestini tamamladınız."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Tətbiqi keçirmək üçün sürüşdürün"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Tətbiqlər arasında keçid üçün ekranın aşağısından yuxarı doğru sürüşdürüb saxlayın, sonra buraxın."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Tətbiqlər arasında keçid üçün 2 barmaqla ekranın aşağısından yuxarı doğru sürüşdürüb saxlayın, sonra buraxın."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Tətbiqləri dəyişin"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Tam hazır"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Oldu"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Ayarlar"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Əla!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Dərslik <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Hər şey hazırdır!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Əsas səhifəyə keçmək üçün yuxarı çəkin"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Telefondan istifadəyə başlamağa hazırsınız"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Əsas səhifəyə keçmək üçün yuxarı çəkin"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Əsas ekranınıza keçmək üçün əsas düyməyə toxunun"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"<xliff:g id="DEVICE">%1$s</xliff:g> cihazından istifadəyə başlamağa hazırsınız"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"cihaz"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Sistem naviqasiya ayarları"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Paylaşın"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Skrinşot"</string>
     <string name="action_split" msgid="2098009717623550676">"Ayırın"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Bölmə ekranını istifadə etmək üçün başqa tətbiqə toxunun"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Tətbiq ekran bölünməsini dəstəkləmir."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Bölünmüş ekran üçün başqa tətbiqə toxunun"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Bölünmüş ekrandan istifadə üçün başqa tətbiq seçin"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Bu əməliyyata tətbiq və ya təşkilatınız tərəfindən icazə verilmir"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Naviqasiya dərsliyi ötürülsün?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Bunu sonra <xliff:g id="NAME">%1$s</xliff:g> tətbiqində tapa bilərsiniz"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Ləğv edin"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Ötürün"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Ekranı fırladın"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Tapşırıq panelindəki təlim bölməsi görünür"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Tapşırıq panelindəki təlim bölməsi bağlanıb"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Tətbiqləri keçirmək üçün tapşırıq panelindən istifadə edin"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Eyni anda iki tətbiqi istifadə etmək üçün yan tərəfə çəkin"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Tapşırıq panelini toxunub saxlamaqla gizlədin"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Sonra"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Geri"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Tapşırıq panelində təhsil"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Eyni anda 2 tətbiqi istifadə etmək üçün bir tətbiqi yan tərəfə çəkin"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Tapşırıq panelini göstərmək üçün astaca yuxarı sürüşdürün"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Rejiminizə əsasən tətbiq təklifləri alın"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Tapşırıq panelini avtomatik gizlətmək üçün Ayarlarda jest naviqasiyasını aktiv edin"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Tapşırıq paneli ilə daha çox şey edin"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Bağlayın"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Hazırdır"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Ev"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Geriyə"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME keçiricisi"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Sonuncular"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Bildirişlər"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Sürətli Ayarlar"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Tapşırıq paneli"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"İşləmə paneli göstərilir"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"İşləmə paneli gizlədilib"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Naviqasiya paneli"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"İşləmə paneli həmişə görünsün"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Naviqasiya rejimini dəyişin"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"İşləmə paneli ayırıcısı"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Yuxarı/sola köçürün"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Aşağı/sağa köçürün"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Daha # tətbiqi göstərin.}other{Daha # tətbiqi göstərin.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> və <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-b+sr+Latn/strings.xml b/quickstep/res/values-b+sr+Latn/strings.xml
index f495b00..9fc7a74 100644
--- a/quickstep/res/values-b+sr+Latn/strings.xml
+++ b/quickstep/res/values-b+sr+Latn/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Dobijajte predloge aplikacija u redu sa omiljenim stavkama na početnom ekranu"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Lako pristupajte aplikacijama koje najčešće koristite direktno sa početnog ekrana. Predlozi se menjaju na osnovu upotrebe. Aplikacije iz donjeg reda se premeštaju nagore na početni ekran."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Lako pristupajte aplikacijama koje najčešće koristite direktno sa početnog ekrana. Predlozi se menjaju na osnovu vaših rutina. Aplikacije iz reda sa omiljenim stavkama se premeštaju na početni ekran."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Lako pristupajte aplikacijama koje najčešće koristite direktno sa početnog ekrana. Predlozi se menjaju na osnovu upotrebe. Aplikacije iz donjeg reda se premeštaju u nov folder."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Prikazuj predloge aplikacija"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Ne, hvala"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Podešavanja"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Osetljivost pok. za nazad možete da promenite u Podešavanjima"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Prevucite da biste se vratili unazad"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Da biste se vratili na poslednji ekran, prevucite od leve ili desne ivice do sredine ekrana."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Da biste se vratili na poslednji ekran, prevucite pomoću dva prsta od leve ili desne ivice do sredine ekrana."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Nazad"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Obavezno prevucite nagore od donje ivice ekrana."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Nikako ne stajte pre otpuštanja."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Obavezno prevucite pravo nagore."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Dovršili ste pokret za povratak na početnu stranicu."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Prevucite da biste otišli na početnu stranicu"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Prevucite nagore od dna ekrana. Ovaj pokret vas uvek vodi na početni ekran."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Prevucite pomoću dva prsta nagore od dna ekrana. Ovim pokretom uvek otvarate početni ekran."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Idite na početni ekran"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Da biste otišli na početni ekran u bilo kom trenutku, prevucite nagore od dna ekrana."</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Obavezno prevucite nagore od donje ivice ekrana."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Probajte da držite prozor duže pre otpuštanja."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Obavezno prevucite pravo nagore, pa zastanite."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Dovršili ste pokret za promenu aplikacija."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Prevucite da biste zamenili aplikacije"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Za prelazak sa jedne aplikacije na drugu prevucite nagore od dna ekrana, zadržite, pa pustite."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Za prelazak između aplikacija prevucite pomoću dva prsta nagore od dna ekrana, zadržite, pa pustite."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Pređite na drugu aplikaciju"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"To je to"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Gotovo"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Podešavanja"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Svaka čast!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Vodič <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Gotovo!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Prevucite nagore da biste otvorili početni ekran"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Spremni ste da počnete da koristite telefon"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Prevucite nagore da biste otvorili početni ekran"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Dodirnite dugme Početak da bisti išli na početni ekran"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Spremni ste da počnete da koristite <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"uređaj"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Podešavanja kretanja kroz sistem"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Deli"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Snimak ekrana"</string>
     <string name="action_split" msgid="2098009717623550676">"Podeli"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Dodirnite drugu aplikaciju za podeljeni ekran"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Aplikacija ne podržava podeljeni ekran."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Dodirnite drugu aplikaciju za podeljeni ekran"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Odaberite drugu aplikaciju za podeljeni ekran"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Aplikacija ili organizacija ne dozvoljavaju ovu radnju"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Želite da preskočite vodič za kretanje?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Možete da pronađete ovo kasnije u aplikaciji <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Otkaži"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Preskoči"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Rotirajte ekran"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Edukativno okno iz trake zadataka se pojavilo"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Edukativno okno iz trake zadataka je zatvoreno"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Koristite traku zadataka da biste menjali aplikacije"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Prevucite na stranu da koristite dve aplikacije odjednom"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Dodirnite i zadržite za skrivanje trake zadataka"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Dalje"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Nazad"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Uputstva na traci zadataka"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Prevucite na stranu da biste koristili 2 aplikacije odjednom"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Sporo prevucite nagore da biste prikazali traku zadataka"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Dobijajte predloge aplikacija na osnovu rutine"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Uključite navigaciju pomoću pokreta u Podešavanjima radi automatskog skrivanja trake zadataka"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Uradite više pomoću trake zadataka"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Zatvori"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Gotovo"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Početna"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Nedavno"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Obaveštenja"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Brza podešavanja"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Traka zadataka"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Traka zadataka je prikazana"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Traka zadataka je skrivena"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Traka za navigaciju"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Uvek prikazuj traku zadataka"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Promeni režim navigacije"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Razdelnik trake zadataka"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Premesti gore levo"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Premesti dole desno"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Prikaži još # aplikaciju.}one{Prikaži još # aplikaciju.}few{Prikaži još # aplikacije.}other{Prikaži još # aplikacija.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> i <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-be/strings.xml b/quickstep/res/values-be/strings.xml
index 4872f7d..685c921 100644
--- a/quickstep/res/values-be/strings.xml
+++ b/quickstep/res/values-be/strings.xml
@@ -35,12 +35,11 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Атрымлівайце прапановы праграм у пераліку абраных на Галоўным экране"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Атрымлiвайце доступ да праграм, якімі вы карыстаецеся найбольш часта, непасрэдна з Галоўнага экрана. Прапановы будуць змяняцца ў залежнасці ад вашых дзеянняў. Праграмы, якія знаходзяцца ў ніжнім радку, будуць перамешчаны на Галоўны экран."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Атрымлівайце доступ да праграм, якімі вы карыстаецеся найбольш часта, непасрэдна з Галоўнага экрана. Прапановы будуць змяняцца ў залежнасці ад вашых дзеянняў. Пералік абраных праграм будзе перамешчаны на Галоўны экран."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Атрымлiвайце просты доступ да праграм, якімі вы карыстаецеся найбольш часта, непасрэдна з Галоўнага экрана. Прапановы будуць змяняцца ў залежнасці ад вашых дзеянняў. Праграмы, якія знаходзяцца ў ніжнім радку, будуць перамешчаны ў новую папку."</string>
-    <string name="hotseat_edu_accept" msgid="1611544083278999837">"Атрымаць прапановы праграм"</string>
+    <string name="hotseat_edu_accept" msgid="1611544083278999837">"Атрымліваць прапановы праграм"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Не, дзякуй"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Налады"</string>
     <string name="hotseat_auto_enrolled" msgid="522100018967146807">"Тут з\'яўляюцца праграмы, якімі вы карыстаецеся найбольш часта. Гэты спіс змяняецца на падставе вашых дзеянняў"</string>
-    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Перацягніце праграмы з ніжняга радка, каб атрымаць прапановы праграм"</string>
+    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Перацягніце праграмы з ніжняга радка, каб атрымліваць прапановы праграм"</string>
     <string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Прапановы праграм дададзены на свабоднае месца"</string>
     <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"Прапановы праграм уключаны"</string>
     <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"Прапановы праграм выключаны"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Каб змяніць адчувальнасць жэста вяртання, адкрыйце налады"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Правядзіце пальцам, каб вярнуцца"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Каб вярнуцца на папярэдні экран, правядзіце пальцам ад левага ці правага краю да цэнтра экрана."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Каб вярнуцца на папярэдні экран, правядзіце двума пальцамі ад левага ці правага краю ў цэнтр экрана."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Назад"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Пераканайцеся, што праводзіце пальцам па экране знізу ўверх."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Пераканайцеся, што не затрымліваецеся перад адпусканнем."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Пераканайцеся, што праводзіце пальцам вертыкальна."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Вы навучыліся рабіць жэст пераходу на галоўны экран."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Правядзіце пальцам для пераходу на галоўны экран"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Правядзіце пальцам па экране знізу ўверх. Гэты жэст дазваляе вярнуцца на Галоўны экран."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Правядзіце двума пальцамі па экране знізу ўверх. Гэты жэст дазваляе вярнуцца на Галоўны экран."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Перайсці на галоўны экран"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Каб у любы час адкрыць галоўны экран, правядзіце пальцам па экране знізу ўверх"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Пераканайцеся, што праводзіце пальцам па экране знізу ўверх."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Перш чым адпусціць палец, паспрабуйце даўжэй утрымліваць акно націснутым."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Пераканайцеся, што праводзіце пальцам вертыкальна, а потым затрымліваеце яго."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Вы навучыліся рабіць жэст пераключэння паміж праграмамі."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Правядзіце пальцам для пераключэння паміж праграмамі"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Каб пераключыцца на іншую праграму, правядзіце па экране знізу ўверх, патрымайце палец і адпусціце."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Каб пераключыцца на іншую праграму, правядзіце двума пальцамі знізу ўверх, патрымайце і адпусціце."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Пераключэнне праграм"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Гатова"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Гатова"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Налады"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Выдатна!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Дапаможнік <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Гатова!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Каб перайсці на галоўны экран, правядзіце пальцам уверх"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Вы можаце пачаць карыстанне тэлефонам"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Каб перайсці на галоўны экран, правядзіце пальцам уверх"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Каб перайсці на галоўны экран, націсніце кнопку галоўнага экрана"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Вы можаце пачаць карыстанне прыладай \"<xliff:g id="DEVICE">%1$s</xliff:g>\""</string>
+    <string name="default_device_name" msgid="6660656727127422487">"прылада"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Налады навігацыі ў сістэме"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Абагуліць"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Здымак экрана"</string>
     <string name="action_split" msgid="2098009717623550676">"Падзелены экран"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Для падзеленага экрана націсніце на іншую праграму"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Праграма не падтрымлівае рэжым падзеленага экрана."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Каб падзяліць экран, націсніце на іншую праграму"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Каб падзяліць экран, выберыце іншую праграму"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Гэта дзеянне не дазволена праграмай ці вашай арганізацыяй"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Прапусціць дапаможнік па навігацыі?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Знайсці дапаможнік можна ў праграме \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Скасаваць"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Прапусціць"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Павярнуць экран"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"З\'явілася панэль навучання на панэлі задач"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Панэль навучання на панэлі задач закрыта"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Выкарыстоўвайце панэль задач для пераключэння праграм"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Перацягніце ўбок, каб адначасова скарыстаць дзве праграмы"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Націсніце і ўтрымлівайце, каб схаваць панэль задач"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Далей"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Назад"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Інфармацыя пра панэль задач"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Каб карыстацца 2 праграмамі, перацягніце адну з іх убок"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Каб паказаць панэль задач, павольна правядзіце пальцам уверх"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Атрымлівайце прапановы праграм з улікам вашых дзеянняў"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Каб аўтаматычна схаваць панэль задач, уключыце ў Наладах навігацыю жэстамі"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Выкарыстоўвайце магчымасці панэлі задач"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Закрыць"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Гатова"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Галоўны экран"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Назад"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"Выключальнік IME"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Нядаўнія"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Апавяшчэнні"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Хуткія налады"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Панэль задач"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Панэль задач паказана"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Панэль задач схавана"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Панэль навігацыі"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Заўсёды паказваць панэль задач"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Змяніць рэжым навігацыі"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Раздзяляльнік панэлі задач"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Перамясціць уверх/улева"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Перамясціць уніз/управа"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Паказаць ячшэ # праграму.}one{Паказаць ячшэ # праграму.}few{Паказаць ячшэ # праграмы.}many{Паказаць ячшэ # праграм.}other{Паказаць ячшэ # праграмы.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> і <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-bg/strings.xml b/quickstep/res/values-bg/strings.xml
index 3fea5ee..ad87573 100644
--- a/quickstep/res/values-bg/strings.xml
+++ b/quickstep/res/values-bg/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Получаване на предложения за приложения в реда с любими на началния екран"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Осъществявайте лесен достъп до най-използваните от вас приложения директно от началния екран. Предложенията ще се променят въз основа на действията ви. Приложенията на най-долния ред ще се преместят на началния ви екран."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Осъществявайте лесен достъп до най-използваните от вас приложения директно от началния екран. Предложенията ще се променят въз основа на действията ви. Приложенията в реда с любими ще бъдат преместени на началния екран."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Осъществявайте лесен достъп до най-използваните от вас приложения директно от началния екран. Предложенията ще се променят въз основа на действията ви. Приложенията на най-долния ред ще се преместят в нова папка."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Предложения"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Не, благодаря"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Настройки"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Променете чувств. на жеста за връщане назад от настройките"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Жест за връщане назад"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"За да се върнете на предишния екран, прекарайте пръст от левия или десния край на екрана до средата."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"За да се върнете към последния екран, прекарайте два пръста от левия или десния край на екрана до средата."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Връщане назад"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Трябва да прекарате пръст нагоре от долния край на екрана."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Не задържайте, преди да вдигнете пръста си."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Трябва да прекарате пръст право нагоре."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Изпълнихте жеста за преминаване към началния екран."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Жест за преминаване към началния екран"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Прекарайте пръст нагоре от долната част на екрана. Този жест винаги ще ви отвежда до началния екран."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Прекарайте два пръста нагоре от долната част на екрана. Този жест винаги води до началния екран."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Отваряне на началния екран"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"За да отворите началния си екран по всяко време, прекарайте пръст нагоре от долната част на екрана"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Трябва да прекарате пръст нагоре от долния край на екрана."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Задръжте прозореца по-дълго, преди да вдигнете пръста си."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Прекарайте пръст право нагоре, след което задръжте."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Изпълнихте жеста за превключване между приложения."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Жест за превключване между приложенията"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"За превключване прекарайте пръст нагоре от долната част на екрана, задръжте и освободете"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"За превключване на прил. плъзнете 2 пръста нагоре от долната част на екрана, задръжте и освободете."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Превключване на приложенията"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Готово"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Готово"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Настройки"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Чудесно!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Урок <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Готово!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Прекарайте пръст нагоре, за да отворите началния екран"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Можете да започнете да използвате телефона си"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Прекарайте пръст нагоре, за да отворите началния екран"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Докоснете бутона „Начало“, за да преминете към началния екран"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Можете да започнете да използвате <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"устройството"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Настройки за навигиране в системата"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Споделяне"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Екранна снимка"</string>
     <string name="action_split" msgid="2098009717623550676">"Разделяне на екрана"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Докоснете друго прил., за да ползвате разд. екран"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Приложението не поддържа разделен екран."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Докоснете друго прил., за да ползвате разд. екран"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"За разделен екран изберете още едно приложение"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Това действие не е разрешено от приложението или организацията ви"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Пропускане на урока за навигиране?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Урокът е налице в приложението <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Отказ"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Пропускане"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Завъртане на екрана"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Показва се урокът за лентата на задачите"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Урокът за лентата на задачите бе затворен"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Използвайте лентата на задачите за превключване между прил."</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Плъзнете встрани, за да използвате едновременно 2 приложения"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Докоснете и задръжте, за да скриете лентата на задачите"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Напред"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Назад"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Урок за лентата на задачите"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Плъзнете приложение встрани, за да използвате едновременно 2"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Плъзнете бавно нагоре, за да видите лентата на задачите"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Получавайте предложения за приложения според навиците си"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Включете навигирането с жестове от настройките с цел авт. скриване на лентата на задачите"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Правете повече неща с лентата на задачите"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Затваряне"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Готово"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Начало"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Назад"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"Редактор за метода на въвежд.: Превключвател"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Скорошни"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Известия"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Бързи настройки"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Лента на задачите"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Лентата на задачите се показва"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Лентата на задачите е скрита"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Лента за навигация"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Лентата на задачите винаги да се показва"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Промяна на режима на навигация"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Разделител на лентата на задачите"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Преместване горе/вляво"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Преместване долу/вдясно"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Показване на още # приложение.}other{Показване на още # приложения.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> и <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-bn/strings.xml b/quickstep/res/values-bn/strings.xml
index ddd0edd..97dbeae 100644
--- a/quickstep/res/values-bn/strings.xml
+++ b/quickstep/res/values-bn/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"হোম স্ক্রিনের \'ফেভারিট রো\' বিকল্পের জন্য অ্যাপ সাজেশন পান"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"হোম স্ক্রিন থেকে সরাসরি সব থেকে বেশি ব্যবহার করা অ্যাপগুলি অ্যাক্সেস করুন। আপনার রুটিনের উপর ভিত্তি করে সাজেশন পরির্তন করা হবে। নিচের সারিতে থাকা অ্যাপ আপনার হোম স্ক্রিনে সরানো হবে।"</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"খুব বেশি ব্যবহার করেন এমন অ্যাপগুলি হোম স্ক্রিন থেকে সহজে সরাসরি অ্যাক্সেস করুন। আপনার রুটিন অনুযায়ী সাজেশন পরির্তন করা হবে। \'ফেভারিট রো\' বিকল্পে থাকা অ্যাপগুলি হোম স্ক্রিনে সরিয়ে দেওয়া হবে।"</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"হোম স্ক্রিনের পাশে সব থেকে ব্যবহার করা অ্যাপ সহজেই অ্যাক্সেস করুন। আপনার রুটিনের উপর ভিত্তি করে সাজেশন পরির্তন করা হবে। নিচের সারিতে থাকা অ্যাপ নতুন ফোল্ডারে সরানো হবে।"</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"অ্যাপ সাজেশন পান"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"না থাক"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"সেটিংস"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"ফিরে যাওয়ার জেসচারের সেন্সিটিভিটি পরিবর্তন করতে, সেটিংসে যান"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"ফিরে যেতে সোয়াইপ করুন"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"শেষের স্ক্রিনে ফিরে যেতে, ডান বা বাঁ প্রান্ত থেকে স্ক্রিনের মাঝখান পর্যন্ত সোয়াইপ করুন।"</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"শেষ স্ক্রিনে ফিরতে, বাম বা ডান প্রান্ত থেকে স্ক্রিনের মাঝামাঝি পর্যন্ত ২টি আঙুল দিয়ে সোয়াইপ করুন।"</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"ফিরে যান"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"স্ক্রিনের নিচের প্রান্ত থেকে আপনি সোয়াইপ করেছেন কিনা ভাল করে দেখে নিন।"</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"আঙুল তুলে নেওয়ার আগে আপনি যাতে পজ না করেন সেটি ভাল করে দেখে নিন।"</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"আপনি উপরের দিকে সোজাসুজি সোয়াইপ করেছেন কিনা ভাল করে দেখে নিন।"</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"আপনি হোম স্ক্রিনে যাওয়ার জেসচার সম্পর্কে জেনেছেন।"</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"হোম স্ক্রিনে যেতে সোয়াইপ করুন"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"স্ক্রিনের নিচের প্রান্ত থেকে উপরের দিকে সোয়াইপ করুন। এটি করলে, আপনি সবসময় হোম স্ক্রিনে যেতে পারবেন।"</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"স্ক্রিনের নিচ থেকে ২টি আঙুল দিয়ে উপরে সোয়াইপ করুন। এই জেসচার সবসময় আপনাকে হোম স্ক্রিনে নিয়ে যায়।"</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"হোমে যান"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"যেকোনও সময় আপনার হোম স্ক্রিনে যেতে, স্ক্রিনের নিচ থেকে উপরের দিকে সোয়াইপ করুন"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"স্ক্রিনের নিচের প্রান্ত থেকে আপনি সোয়াইপ করেছেন কিনা ভাল করে দেখে নিন।"</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"চেষ্টা করুন যাতে আঙুল সরিয়ে নেওয়ার আগে উইন্ডো কিছুক্ষণ প্রেস করে রাখা যায়।"</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"আপনি উপরের দিকে সোজাসুজি সোয়াইপ করেছেন কিনা ভাল করে দেখে নিয়ে তারপর পজ করুন।"</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"আপনি একটি অ্যাপ থেকে অন্য অ্যাপে যাওয়ার জেসচার সম্পর্কে জেনেছেন।"</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"একটি অ্যাপ থেকে অন্য অ্যাপে যেতে সোয়াইপ করুন"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"একটি অ্যাপ থেকে অন্যটিতে পাল্টাতে, স্ক্রিনের নিচ থেকে উপরে সোয়াইপ করে ধরে রাখুন, তারপরে ছেড়ে দিন।"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"একটি থেকে অন্য অ্যাপে পাল্টাতে, ২টি আঙুল দিয়ে স্ক্রিনের নিচ থেকে উপরে সোয়াইপ করে ধরে রেখে ছেড়ে দিন।"</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"অ্যাপ পরিবর্তন করুন"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"সব প্রস্তুত"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"সম্পূর্ণ হয়েছে"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"সেটিংস"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"সাবাস!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"টিউটোরিয়াল <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"সব রেডি!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"হোম স্ক্রিনে যেতে উপরের দিকে সোয়াইপ করুন"</string>
-    <string name="allset_description" msgid="6350320429953234580">"এবারে আপনি ফোন ব্যবহার করতে পারবেন"</string>
+    <string name="allset_hint" msgid="459504134589971527">"হোম স্ক্রিনে যেতে উপরের দিকে সোয়াইপ করুন"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"আপনার হোম স্ক্রিনে যাওয়ার জন্য হোম বোতামে ট্যাপ করুন"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"<xliff:g id="DEVICE">%1$s</xliff:g> ব্যবহার শুরু করার জন্য আপনি রেডি"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"ডিভাইস"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"সিস্টেম নেভিগেশন সেটিংস"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"শেয়ার করুন"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"স্ক্রিনশট নিন"</string>
     <string name="action_split" msgid="2098009717623550676">"স্প্লিট"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"স্প্লিটস্ক্রিন ব্যবহার করতে অন্য অ্যাপে ট্যাপ করুন"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"স্প্লিট-স্ক্রিনে এই অ্যাপ কাজ করে না।"</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"স্প্লিট স্ক্রিন ব্যবহারের জন্য অ্যাপে ট্যাপ করুন"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"স্প্লিট স্ক্রিন ব্যবহার করতে অন্য অ্যাপ বেছে নিন"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"এই অ্যাপ বা আপনার প্রতিষ্ঠান এই অ্যাকশনটি পারফর্ম করার অনুমতি দেয়নি"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"নেভিগেশন টিউটোরিয়াল এড়িয়ে যেতে চান?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"আপনি <xliff:g id="NAME">%1$s</xliff:g> অ্যাপে পরে এটি খুঁজে পাবেন"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"বাতিল করুন"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"এড়িয়ে যান"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"স্ক্রিন ঘোরান"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"টাস্কবার এডুকেশন দেখানো হয়েছে"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"টাস্কবার এডুকেশন বন্ধ করা আছে"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"অ্যাপ পাল্টানোর জন্য টাস্কবার ব্যবহার করুন"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"একসাথে দুটি অ্যাপ ব্যবহার করতে পাশে টেনে আনুন"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"টাস্কবার লুকানোর জন্য টাচ করে ধরে থাকুন"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"পরবর্তী"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"ফিরুন"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"টাস্কবার এডুকেশন"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"একসাথে ২টি অ্যাপ ব্যবহার করতে একটি অ্যাপ পাশে টেনে আনুন"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"\'টাস্কবার\' দেখানোর জন্য উপরের দিকে আস্তে সোয়াইপ করুন"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"আপনার রুটিন অনুযায়ী অ্যাপ থেকে সাজেশন পান"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"\'টাস্কবার\' অটোমেটিক লুকানোর জন্য, সেটিংসে জেসচার নেভিগেশন চালু করুন"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"\'টাস্কবার\' ফিচারের সাহায্যে আরও অনেক কিছু করুন"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"বন্ধ করুন"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"হয়ে গেছে"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"হোম"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"সম্প্রতি"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"বিজ্ঞপ্তি"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"দ্রুত সেটিংস"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"টাস্কবার"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"\'টাস্কবার\' দেখানো হয়েছে"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"\'টাস্কবার\' লুকানো রয়েছে"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"নেভিগেশন বার"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"সবসময় টাস্কবার দেখুন"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"\'নেভিগেশন\' মোড পরিবর্তন করুন"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"টাস্কবার ডিভাইডার"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"উপরে/বাঁদিকে সরান"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"নিচে/ডানদিকে সরান"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{আরও #টি অ্যাপ দেখুন।}one{আরও #টি অ্যাপ দেখুন।}other{আরও #টি অ্যাপ দেখুন।}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> ও <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-bs/strings.xml b/quickstep/res/values-bs/strings.xml
index 2cf2ef4..fea5b6a 100644
--- a/quickstep/res/values-bs/strings.xml
+++ b/quickstep/res/values-bs/strings.xml
@@ -33,9 +33,8 @@
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"Predviđene aplikacije"</string>
     <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Primajte prijedloge aplikacija u donjem redu početnog ekrana"</string>
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Primajte prijedloge aplikacija u redu omiljenih stavki početnog ekrana"</string>
-    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Jednostavno pristupite najčešće korištenim aplikacijama direktno na početnom ekranu. Prijedlozi će se mijenjati na osnovu vaših rutina. Aplikacije koje se nalaze u donjem redu će se premjestiti na početni ekran."</string>
-    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Jednostavno pristupite najčešće korištenim aplikacijama direktno na početnom ekranu. Prijedlozi će se mijenjati na osnovu vaših rutina. Aplikacije u redu omiljenih stavki će se premjestiti na početni ekran."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Jednostavno pristupite najčešće korištenim aplikacijama, direktno na početnom ekranu. Prijedlozi će se mijenjati na osnovu vaših rutina. Aplikacije koje se nalaze u donjem redu će se premjestiti u novi folder."</string>
+    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Jednostavno pristupite najčešće korištenim aplikacijama direktno s početnog ekrana. Prijedlozi će se mijenjati na osnovu vaših rutina. Aplikacije koje se nalaze u donjem redu će se premjestiti na početni ekran."</string>
+    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Jednostavno pristupite najčešće korištenim aplikacijama direktno s početnog ekrana. Prijedlozi će se mijenjati na osnovu vaših rutina. Aplikacije u redu omiljenih stavki će se premjestiti na početni ekran."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Prikaži prijedloge aplikacija"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Ne, hvala"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Postavke"</string>
@@ -48,25 +47,32 @@
     <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Vodite računa da prevučete s krajnjeg desnog ili krajnjeg lijevog ruba."</string>
     <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"Vodite računa da prevučete s desnog ili lijevog ruba prema sredini ekrana i pustite."</string>
     <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"Naučili ste kako prevući zdesna da se vratite. Sljedeće naučite kako prebacivati između aplikacija."</string>
-    <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Završili ste pokret za vraćanje."</string>
+    <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Savladali ste pokret za vraćanje."</string>
     <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Obratite pažnju da ne prevučete preblizu donjem dijelu ekrana."</string>
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Promijenite osjetljivost pokreta za povratak u Postavkama"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Prevucite da se vratite"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Da se vratite na posljednji ekran, prevucite s lijevog ili desnog ruba prema sredini ekrana."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Da se vratite na posljednji ekran, prevucite s 2 prsta od lijevog ili desnog ruba do sredine ekrana."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Nazad"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Trebate prevući prema gore s donjeg ruba ekrana."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Obratite pažnju da ne zastanete prije puštanja."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Trebate prevući ravno prema gore."</string>
-    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Završili ste pokret za otvaranje početnog ekrana. Sljedeće naučite kako se vratiti."</string>
-    <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Završili ste pokret za otvaranje početnog ekrana."</string>
+    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Savladali ste pokret za otvaranje početnog ekrana. Sljedeće naučite kako se vratiti."</string>
+    <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Savladali ste pokret za otvaranje početnog ekrana."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Prevucite da odete na početni ekran"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Prevucite s dna ekrana prema gore. Tim pokretom uvijek idete na početni ekran."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Prevucite s 2 prsta od dna ekrana. Tim pokretom uvijek idete na početni ekran"</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Odlazak na početni ekran"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Idite na početni ekran u bilo kojem trenutku, prevucite s donjeg dijela ekrana nagore"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Trebate prevući prema gore s donjeg ruba ekrana."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Pokušajte zadržati prozor duže prije puštanja."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Trebate prevući ravno prema gore, a zatim zastati."</string>
     <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Naučili ste kako koristiti pokrete. Idite u Postavke da isključite pokrete."</string>
-    <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Završili ste pokret za prebacivanje između aplikacija."</string>
+    <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Savladali ste pokret za prebacivanje između aplikacija."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Prevucite da prebacujete između aplikacija"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Da prebacujete između aplikacija, prevucite s dna ekrana prema gore, zadržite, a zatim pustite."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Da se prebacujete između aplikacija, prevucite s 2 prsta od dna ekrana, zadržite, a zatim pustite."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Prebacujte se između aplikacija"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Sve je spremno"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Gotovo"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Postavke"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Odlično!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Vodič <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Sve je spremno!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Prevucite prema gore da odete na početnu stranicu"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Sve je spremno da počnete koristiti telefon"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Prevucite prema gore da odete na početni ekran"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Dodirnite dugme za početni ekran da odete napočetni ekran"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Sve je spremno da počnete koristiti uređaj <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"uređaj"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Postavke navigiranja sistemom"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Dijeli"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Snimak ekrana"</string>
     <string name="action_split" msgid="2098009717623550676">"Podijeli"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Dodirnite drugu apl. da koristite podijeljeni ekran"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Aplikacija ne podržava podijeljeni ekran."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Dodirnite drugu apl. da koristite podijeljeni ekran"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Odaberite drugu apl. da koristite podijeljeni ekran"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Ovu radnju ne dozvoljava aplikacija ili vaša organizacija"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Preskočiti vodič za navigiranje?"</string>
-    <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"To možete pronaći kasnije u aplikaciji <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Možete ga pronaći kasnije u aplikaciji <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Otkaži"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Preskoči"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Rotiranje ekrana"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Edukacija o programskoj traci je prikazana"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Edukacija o programskoj traci je zatvorena"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Koristite programsku traku da promijenite aplikacije"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Prevucite u stranu da istovremeno koristite dvije aplikacije"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Dodirnite i držite da sakrijete programsku traku"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Naprijed"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Nazad"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Edukacija o traci zadataka"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Prevucite aplikaciju ustranu da odjednom koristite 2 aplikacije"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Sporo prevucite nagore da vidite traku zadataka"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Dobijajte prijedloge aplikacija zasnovane na vašoj rutini"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Uključite navigaciju pokretima u Postavkama da automatski sakrijete traku zadataka"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Uradite više pomoću trake zadataka"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Zatvori"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Gotovo"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Dom"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Nedavno"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Obavještenja"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Brze postavke"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Traka zadataka"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Traka zadataka je prikazana"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Traka zadataka je sakrivena"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigaciona traka"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Uvijek prikaži traku zadataka"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Promijeni način navigacije"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Razdjelnik trake zadataka"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Premjesti gore lijevo"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Premjesti dolje desno"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Prikaži još # aplikaciju.}one{Prikaži još # aplikaciju.}few{Prikaži još # aplikacije.}other{Prikaži još # aplikacija.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> i <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-ca/strings.xml b/quickstep/res/values-ca/strings.xml
index 0f6c486..011b121 100644
--- a/quickstep/res/values-ca/strings.xml
+++ b/quickstep/res/values-ca/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Obtén suggeriments d\'aplicacions a la fila Preferides de la teva pantalla d\'inici"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Accedeix fàcilment a les aplicacions que més utilitzes des de la pantalla d\'inici. Els suggeriments variaran en funció dels teus hàbits. Les aplicacions de la fila inferior pujaran a la pantalla d\'inici."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Accedeix fàcilment a les aplicacions que més utilitzes des de la pantalla d\'inici. Els suggeriments variaran en funció dels teus hàbits. Les aplicacions de la fila Preferides es mouran a la teva pantalla d\'inici."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Accedeix fàcilment a les aplicacions que més utilitzes des de la pantalla d\'inici. Els suggeriments variaran en funció dels teus hàbits. Les aplicacions de la fila inferior es mouran a una carpeta nova."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Mostra suggeriments d\'aplicacions"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"No, gràcies"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Configuració"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Per canviar la sensibilitat del gest, ves a Configuració"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Llisca per anar enrere"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Per tornar a la darrera pantalla, llisca des de la vora esquerra o dreta cap al centre de la pantalla."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Per tornar a la pantalla anterior, llisca amb dos dits des de l\'extrem esquerre o dret cap al centre de la pantalla."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Torna"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Assegura\'t de lliscar des de la vora inferior de la pantalla."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Assegura\'t de no aturar-te abans de deixar anar."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Assegura\'t de lliscar directament cap amunt."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Has completat el gest per anar a la pantalla d\'inici."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Llisca per anar a la pantalla d\'inici"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Llisca cap amunt des de la part inferior de la pantalla. Aquest gest et porta a la pantalla d\'inici."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Llisca amb dos dits cap amunt des de la part inferior. Aquest gest sempre porta a la pantalla d\'inici."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Ves a la pàgina d\'inici"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Per anar a la pantalla d\'inici en qualsevol moment, llisca cap amunt des la part inferior"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Assegura\'t de lliscar des de la vora inferior de la pantalla."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Prova de mantenir premuda la finestra durant més temps abans de deixar-la anar."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Assegura\'t de lliscar directament cap amunt i després aturar-te."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Has completat el gest per canviar d\'aplicació."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Llisca per canviar d\'aplicació"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Per canviar entre aplicacions, llisca cap amunt des de la part inferior, mantén premut i deixa anar."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Per canviar entre apps, llisca amb dos dits cap amunt des de la part inferior, mantén i deixa anar."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Canvia d\'aplicació"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Tot a punt"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Fet"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Configuració"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Molt bé!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Tutorial <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Tot a punt!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Llisca cap amunt per anar a la pàgina d\'inici"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Ja pots començar a utilitzar el telèfon"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Llisca cap amunt per anar a la pàgina d\'inici"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Toca el botó d\'inici per anar a la pantalla d\'inici"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Ja pots començar a utilitzar <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"dispositiu"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Configuració de navegació del sistema"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Comparteix"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Captura de pantalla"</string>
     <string name="action_split" msgid="2098009717623550676">"Divideix"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Toca una altra aplicació per dividir la pantalla"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"L\'aplicació no admet la pantalla dividida."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Toca una altra app per utilitzar pantalla dividida"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Tria una altra app per utilitzar pantalla dividida"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"L\'aplicació o la teva organització no permeten aquesta acció"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Vols ometre el tutorial de navegació?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Pots trobar-lo més tard a l\'aplicació <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Cancel·la"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Omet"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Gira la pantalla"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Ha aparegut el tauler educatiu de la barra de tasques"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"S\'ha tancat el tauler educatiu de la barra de tasques"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Utilitza la barra de tasques per canviar d\'aplicació"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Arrossega al costat per utilitzar dues aplicacions alhora"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Mantén premut per amagar la barra de tasques"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Següent"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Enrere"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Informació sobre Barra de tasques"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Arrossega una aplicació al costat per utilitzar-ne dues alhora"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Llisca lentament cap amunt per mostrar la Barra de tasques"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Obtén suggeriments d\'aplicacions basats en la teva rutina"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"A Configuració, activa la navegació amb gestos per amagar la Barra de tasques automàticament"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Treu més partit de la Barra de tasques"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Tanca"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Fet"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Inici"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Enrere"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"Selector d\'IME"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Recents"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Notificacions"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Config. ràpida"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Barra de tasques"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Es mostra la Barra de tasques"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"S\'ha amagat la Barra de tasques"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Barra de navegació"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Mostra sempre Barra de tasques"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Canvia el mode de navegació"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Separador de la Barra de tasques"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Mou a la part superior o a l\'esquerra"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Mou a la part inferior o a la dreta"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Mostra # aplicació més.}other{Mostra # aplicacions més.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> i <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-cs/strings.xml b/quickstep/res/values-cs/strings.xml
index 6aef1a4..786e162 100644
--- a/quickstep/res/values-cs/strings.xml
+++ b/quickstep/res/values-cs/strings.xml
@@ -35,12 +35,11 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Nechte si na řádku oblíbených na ploše zobrazovat návrhy aplikací"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Mějte nejpoužívanější aplikace k dispozici přímo na ploše. Návrhy se budou měnit podle vašich zvyklostí. Aplikace ve spodním řádku se přesunou nahoru na vaši plochu."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Mějte nejpoužívanější aplikace k dispozici přímo na ploše. Návrhy se budou měnit podle vašich zvyklostí. Aplikace na řádku oblíbených se přesunou na plochu."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Mějte nejpoužívanější aplikace k dispozici přímo na ploše. Návrhy se budou měnit podle vašich zvyklostí. Aplikace ve spodním řádku se přesunou do nové složky."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Zobrazovat návrhy aplikací"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Ne, díky"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Nastavení"</string>
     <string name="hotseat_auto_enrolled" msgid="522100018967146807">"Zde se zobrazují nejpoužívanější aplikace (které se mění podle sledů činností)"</string>
-    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Návrhy aplikací získáte přetažením aplikací z dolního řádku"</string>
+    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Návrhy získáte přetažením aplikací z dolního řádku"</string>
     <string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Volné místo bylo vyplněno návrhy aplikací"</string>
     <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"Návrhy aplikací jsou povoleny"</string>
     <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"Návrhy aplikací jsou zakázány"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Citlivost gesta pro přechod zpět můžete změnit v Nastavení"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Přejetím prstem se vrátíte zpět"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"K návratu na poslední obrazovku přejeďte prstem z levého nebo pravého okraje obrazovky doprostřed."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Pokud se chcete vrátit na poslední obrazovku, přejeďte dvěma prsty z levého nebo pravého okraje doprostřed obrazovky."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Zpět"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Přejeďte prstem nahoru z dolního okraje obrazovky."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Před zdvihnutím prstu nedělejte pauzu."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Přejeďte prstem přímo nahoru."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Dokončili jste gesto pro přechod na plochu."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Přechod na plochu přejetím prstem"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Přejeďte prstem ze spodní části obrazovky nahoru. Tímto gestem se vždy dostanete na plochu."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Přejeďte dvěma prsty z dolního okraje obrazovky nahoru. Tímto gestem se vždy dostanete na plochu."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Přejít na plochu"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Na plochu kdykoli přejdete přejetím prstem ze spodní části obrazovky nahoru"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Přejeďte prstem nahoru z dolního okraje obrazovky."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Zkuste podržet okno delší dobu, než ho uvolníte."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Přejeďte prstem přímo nahoru a pak udělejte pauzu."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Dokončili jste gesto pro přepínání aplikací."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Přepínání aplikací přejetím prstem"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Přepínání mezi aplikacemi: Přejeďte nahoru z dolního okraje obrazovky, podržte obrazovku a uvolněte."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Přepínání mezi aplikacemi: Přejeďte dvěma prsty nahoru z dolního okraje obrazovky, podržte obrazovku a uvolněte."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Přepnout aplikace"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Vše je nastaveno"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Hotovo"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Nastavení"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Skvělé!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Výukový program <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Hotovo!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Přejetím nahoru se vrátíte na plochu"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Jste připraveni začít používat telefon"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Přejetím nahoru se vrátíte na plochu"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Klepnutím na tlačítko plochy se vrátíte na plochu"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Jste připraveni začít používat <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"zařízení"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Nastavení navigace v systému"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Sdílet"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Snímek obrazovky"</string>
     <string name="action_split" msgid="2098009717623550676">"Rozdělit"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Klepnutím na jinou aplikaci rozdělíte obrazovku"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Aplikace nepodporuje režim rozdělené obrazovky."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Obrazovku rozdělíte klepnutím na jinou aplikaci"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Vyberte podporovanou aplikaci"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Aplikace nebo organizace zakazuje tuto akci"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Přeskočit výukový program k navigaci?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Program později najdete v aplikaci <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Zrušit"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Přeskočit"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Otočit obrazovku"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Zobrazila se výuka k hlavnímu panelu"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Výuka k hlavnímu panelu byla zavřena"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Aplikace lze přepínat pomocí hlavního panelu"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Po přetažení na stranu lze používat dvě aplikace současně"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Hlavní panel můžete skrýt podržením"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Další"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Zpět"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Informace o panelu aplikací"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Přetáhněte aplikaci na stranu a používejte tak dvě najednou"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Panel aplikací zobrazíte pomalým přejetím prstem nahoru"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Dostávejte návrhy aplikací podle toho, jaké používáte"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Pokud chcete panel aplikací automaticky skrýt, zapněte v Nastavení navigaci gesty"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Více možností s panelem aplikací"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Zavřít"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Hotovo"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Domů"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Zpět"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"Přepínač IME"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Poslední"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Oznámení"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Rychlé nastavení"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Panel aplikací"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Panel aplikací je zobrazen"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Panel aplikací je skrytý"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigační panel"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Vždy zobrazovat panel aplikací"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Změnit režim navigace"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Rozdělovač panelu aplikací"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Přesunout doleva nahoru"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Přesunout doprava dolů"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Zobrazit # další aplikaci.}few{Zobrazit # další aplikace.}many{Zobrazit # další aplikace.}other{Zobrazit # dalších aplikací.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> a <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-da/strings.xml b/quickstep/res/values-da/strings.xml
index c2e6681..bde4fe1 100644
--- a/quickstep/res/values-da/strings.xml
+++ b/quickstep/res/values-da/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Få appforslag i rækken med favoritter på din startskærm"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Få nem adgang til dine mest brugte apps direkte fra startskærmen. Forslagene ændres ud fra dine vaner. Apps i nederste række bliver flyttet op til din startskærm."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Få nem adgang til dine mest brugte apps direkte fra startskærmen. Forslagene ændres ud fra dine vaner. Apps i rækken med favoritter bliver flyttet til din startskærm."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Få nem adgang til dine mest brugte apps direkte fra startskærmen. Forslagene ændres ud fra dine vaner. Apps i nederste række bliver flyttet til en ny mappe."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Få appforslag"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nej tak"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Indstillinger"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Juster følsomheden for bevægelsen Gå tilbage i Indstillinger"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Stryg for at gå tilbage"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Stryg mod midten af skærmen fra venstre eller højre kant for at gå tilbage til den seneste skærm."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Du kan gå tilbage til forrige skærm ved at stryge fra venstre eller højre kant mod midten af skærmen med 2 fingre."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Gå tilbage"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Stryg opad fra bunden af skærmen."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Undlad at holde fingeren stille, indtil du løfter fingeren."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Stryg lige opad."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Du har fuldført bevægelsen for Gå til startskærmen."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Stryg for at gå til startskærmen"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Stryg opad fra bunden af skærmen. Denne bevægelse åbner altid startskærmen."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Stryg opad med 2 fingre fra bunden af skærmen. Denne bevægelse åbner altid startskærmen."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Gå til startskærmen"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Du kan altid gå til startskærmen ved at stryge opad fra bunden af skærmen"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Stryg opad fra bunden af skærmen."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Prøv at holde fingeren nede på vinduet i længere tid, inden du løfter den."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Stryg lige opad, og hold derefter fingeren stille."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Du har fuldført bevægelsen for Skift app."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Stryg for at skifte app"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Skift mellem apps ved at stryge opad fra bunden af skærmen, holde fingeren stille og løfte den."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Skift mellem apps ved at stryge opad fra bunden af skærmen med 2 fingre, holde dem nede og slippe."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Skift mellem apps"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Så er du klar"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Luk"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Indstillinger"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Sådan!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Selvstudie <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Alt er parat!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Stryg opad for at gå til startsiden"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Du er klar til at bruge din telefon"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Stryg opad for at gå til startsiden"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Tryk på knappen Hjem for at gå til din startskærm"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Du er klar til at bruge din <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"enhed"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Indstillinger for systemnavigation"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Del"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
     <string name="action_split" msgid="2098009717623550676">"Opdel"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Tryk på en anden app for at bruge opdelt skærm"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Appen understøtter ikke opdelt skærm."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Tryk på en anden app for at bruge opdelt skærm"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Vælg en anden app for at bruge opdelt skærm"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Appen eller din organisation tillader ikke denne handling"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Vil du springe selvstudiet for navigation over?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Du kan finde dette senere i appen <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Annuller"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Spring over"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Roter skærm"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Vejledningen om proceslinjen blev åbnet"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Vejledningen om proceslinjen blev lukket"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Skift mellem apps ved hjælp af proceslinjen"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Træk til siden for at bruge to apps samtidig"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Du kan skjule proceslinjen ved at holde fingeren nede"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Næste"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Tilbage"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Oplysninger om proceslinjen"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Træk en app til siden for at bruge 2 apps på én gang"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Stryg langsomt opad for at se proceslinjen"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Få appforslag baseret på din rutine"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Aktivér navigation med bevægelser under Indstillinger for automatisk at skjule proceslinjen"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Få mere fra hånden med proceslinjen"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Luk"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Luk"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Hjem"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Tilbage"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME-vælger"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Seneste"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Notifikationer"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Kvikmenu"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Proceslinje"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Proceslinjen vises"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Proceslinjen er skjult"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigationslinje"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Vis altid proceslinjen"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Skift navigationstilstand"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Opdeling af proceslinjen"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Flyt til toppen eller venstre side"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Flyt til bunden eller højre side"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Vis # app mere.}one{Vis # app mere.}other{Vis # apps mere.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> og <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-de/strings.xml b/quickstep/res/values-de/strings.xml
index 8d5aa7a..a5766f7 100644
--- a/quickstep/res/values-de/strings.xml
+++ b/quickstep/res/values-de/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Lass dir in der Favoritenleiste auf dem Startbildschirm App-Vorschläge anzeigen"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Schneller Zugriff auf deine meistverwendeten Apps direkt über den Startbildschirm. Die Vorschläge werden deiner Nutzung entsprechend laufend angepasst. Apps in der unteren Reihe werden nach oben auf den Startbildschirm verschoben."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Schneller Zugriff auf deine meistverwendeten Apps direkt über den Startbildschirm. Die Vorschläge werden deiner Nutzung entsprechend laufend angepasst. Apps der Favoritenleiste werden auf den Startbildschirm verschoben."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Schneller Zugriff auf deine meistverwendeten Apps direkt über den Startbildschirm. Die Vorschläge werden deiner Nutzung entsprechend laufend angepasst. Apps in der unteren Reihe werden in einen neuen Ordner verschoben."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"App-Vorschläge erhalten"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nein danke"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Einstellungen"</string>
@@ -47,54 +46,62 @@
     <string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Vorgeschlagene App: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Wische vom äußersten rechten oder linken Displayrand."</string>
     <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"Wische vom rechten oder linken Displayrand zur Displaymitte und lass los."</string>
-    <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"Du kannst jetzt vom rechten Displayrand aus wischen, um zurückzugehen. Gleich erfährst du, wie man zwischen Apps wechselt."</string>
+    <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"Du hast jetzt gelernt, vom rechten Displayrand aus zu wischen, um zurückzugehen. Gleich erfährst du, wie man zwischen Apps wechselt."</string>
     <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Du hast die „Zurück“-Touch-Geste abgeschlossen."</string>
     <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Wische nicht zu nah am unteren Displayrand."</string>
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Du kannst die Empfindlichkeit von „Zurück“ in den Einstellungen ändern"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Zum Zurückgehen wischen"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Wenn du zum letzten Bildschirm zurückgehen möchtest, wische vom linken oder rechten Rand zur Mitte."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Wenn du zum letzten Bildschirm zurückgehen möchtest, wische mit zwei Fingern vom linken oder rechten Displayrand zur Mitte."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Zurück"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Wische vom unteren Displayrand nach oben."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Achte darauf, nicht innezuhalten, bevor du loslässt."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Wische gerade nach oben."</string>
-    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Du hast die „Startbildschirm“-Touch-Geste abgeschlossen. Gleich erfährst du, wie du zurückgelangst."</string>
-    <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Du hast die „Startbildschirm“-Touch-Geste abgeschlossen."</string>
-    <string name="home_gesture_intro_title" msgid="836590312858441830">"Zum Startbildschirm gehen"</string>
+    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Du hast die Touch-Geste zum Aufrufen des Startbildschirms abgeschlossen. Gleich erfährst du, wie du zurückgelangst."</string>
+    <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Du hast die Touch-Geste zum Aufrufen des Startbildschirms abgeschlossen."</string>
+    <string name="home_gesture_intro_title" msgid="836590312858441830">"Den Startbildschirm aufrufen"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Wenn du zum Startbildschirm gehen möchtest, wische einfach vom unteren Displayrand nach oben."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Wische mit zwei Fingern vom unteren Displayrand nach oben. So gelangst du immer zum Startbildschirm."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Zum Startbildschirm"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Du kannst jederzeit zum Startbildschirm gehen, indem du vom unteren Displayrand nach oben wischst"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Wische vom unteren Displayrand nach oben."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Versuche, das Fenster länger festzuhalten, bevor du es loslässt."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Wische gerade nach oben und halte dann inne."</string>
     <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Nun weißt du, wie Touch-Gesten funktionieren. Du kannst sie in den Einstellungen deaktivieren."</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Du hast die „Apps wechseln“-Touch-Geste abgeschlossen."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Zwischen Apps wechseln"</string>
-    <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Wische auf dem Display von unten nach oben und lass dann los, um zwischen Apps zu wechseln."</string>
+    <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Wische auf dem Display von unten nach oben, halte den Finger gedrückt und lass dann los, um zwischen Apps zu wechseln."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Wische zum App-Wechseln mit zwei Fingern vom unteren Displayrand nach oben, halte und lass dann los."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Apps wechseln"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Fertig"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Fertig"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Einstellungen"</string>
-    <string name="gesture_tutorial_try_again" msgid="65962545858556697">"Wiederholen"</string>
+    <string name="gesture_tutorial_try_again" msgid="65962545858556697">"Noch einmal versuchen"</string>
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Sehr gut!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Anleitung <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Fertig!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Nach oben wischen, um den Startbildschirm aufzurufen"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Du kannst dein Smartphone jetzt verwenden"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Nach oben wischen, um den Startbildschirm aufzurufen"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Startbildschirmtaste drücken, um zum Startbildschirm zu gehen"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Du kannst dein <xliff:g id="DEVICE">%1$s</xliff:g> jetzt verwenden"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"Gerät"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Einstellungen der Systemsteuerung"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Teilen"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
     <string name="action_split" msgid="2098009717623550676">"Teilen"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Für „Bildschirm teilen“ auf weitere App tippen"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"„Bildschirm teilen“ wird von der App nicht unterstützt."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Für Splitscreen auf weitere App tippen"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Für Splitscreen andere App auswählen"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Die App oder deine Organisation lässt diese Aktion nicht zu"</string>
-    <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Navigationstutorial überspringen?"</string>
+    <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Tutorial zur Bedienung überspringen?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Du findest es später auch in der <xliff:g id="NAME">%1$s</xliff:g> App"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Abbrechen"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Überspringen"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Bildschirm drehen"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Anleitung für Taskleiste eingeblendet"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Anleitung für Taskleiste geschlossen"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Über die Taskleiste zwischen Apps wechseln"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Zur Seite ziehen, um zwei Apps gleichzeitig zu verwenden"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Gedrückt halten, um die Taskleiste auszublenden"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Weiter"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Zurück"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Informationen zur Taskleiste"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"App zur Seite ziehen, um zwei Apps gleichzeitig zu nutzen"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Langsam nach oben wischen, um die Taskleiste anzuzeigen"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"App-Vorschläge auf Grundlage deiner Nutzung erhalten"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Taskleiste automatisch ausblenden: Aktiviere in „Einstellungen“ die Bedienung über Gesten."</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Mehr Möglichkeiten mit der Taskleiste"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Schließen"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Fertig"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Startbildschirm"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Letzte Apps"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Benachrichtigungen"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Schnelleinstellungen"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Taskleiste"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Taskleiste eingeblendet"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Taskleiste ausgeblendet"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigationsleiste"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Taskleiste immer anzeigen"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Navigationsmodus ändern"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Taskleisten-Teiler"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Nach oben / Nach links verschieben"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Nach unten / Nach rechts verschieben"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{# weitere App anzeigen.}other{# weitere Apps anzeigen.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> und <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-el/strings.xml b/quickstep/res/values-el/strings.xml
index 10c39b4..03774c2 100644
--- a/quickstep/res/values-el/strings.xml
+++ b/quickstep/res/values-el/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Δείτε τις προτεινόμενες εφαρμογές στη σειρά Αγαπημένα της αρχικής οθόνης."</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Αποκτήστε εύκολα πρόσβαση στις εφαρμογές που χρησιμοποιείτε περισσότερο απευθείας από την αρχική οθόνη. Οι προτάσεις θα αλλάζουν με βάση τις ρουτίνες σας. Οι εφαρμογές στην κάτω σειρά θα μετακινηθούν προς τα επάνω στην αρχική οθόνη."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Αποκτήστε εύκολα πρόσβαση στις εφαρμογές που χρησιμοποιείτε περισσότερο απευθείας από την αρχική οθόνη. Οι προτάσεις θα αλλάζουν με βάση τις ρουτίνες σας. Οι εφαρμογές στην σειρά Αγαπημένα θα μετακινηθούν στην αρχική οθόνη σας."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Αποκτήστε εύκολα πρόσβαση στις εφαρμογές που χρησιμοποιείτε περισσότερο, απευθείας από την αρχική οθόνη. Οι προτάσεις θα αλλάζουν με βάση τις ρουτίνες σας. Οι εφαρμογές στην κάτω σειρά θα μεταφερθούν σε νέο φάκελο."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Προβολή προτεινόμενων εφαρμογών"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Όχι, ευχαριστώ"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Ρυθμίσεις"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Μεταβείτε στις Ρυθμίσεις για αλλαγή ευαισθ. κίνησης επιστρ."</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Σύρετε για επιστροφή"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Για να επιστρέψετε στην τελευτ. οθόνη, σύρετε από το αριστ. ή το δεξί άκρο προς το μέσο της οθόνης."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Για να επιστρέψετε στην προηγούμενη οθόνη, σύρετε με 2 δάχτυλα από την αριστερή ή δεξιά άκρη προς τη μέση της οθόνης."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Επιστροφή"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Φροντίστε να σύρετε προς τα επάνω από το κάτω άκρο της οθόνης."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Φροντίστε να μην κάνετε παύση προτού απομακρύνετε τα δάχτυλά σας."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Φροντίστε να σύρετε απευθείας προς τα επάνω."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Ολοκληρώσατε την κίνηση μετάβασης στην αρχική οθόνη."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Σύρετε για μετάβαση στην αρχική οθόνη"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Σύρετε προς τα πάνω από το κάτω μέρος της οθόνης. Αυτή η κίνηση σάς μεταφέρει πάντα στην αρχ. οθόνη."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Σύρετε από το κάτω άκρο προς τα πάνω με 2 δάχτ. Αυτή η κίνηση σάς μεταφέρει πάντα στην αρχική οθόνη."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Αρχική"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Για μετάβαση στην αρχική οθόνη ανά πάσα στιγμή, σύρετε προς τα επάνω από το κάτω μέρος της οθόνης"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Φροντίστε να σύρετε προς τα επάνω από το κάτω άκρο της οθόνης."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Δοκιμάστε να κρατήσετε περισσότερο το παράθυρο προτού απελευθερώσετε."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Φροντίστε να σύρετε απευθείας προς τα επάνω και έπειτα κάντε παύση."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Ολοκληρώσατε την κίνηση εναλλαγής εφαρμογών."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Σύρετε για εναλλαγή εφαρμογών"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Για εναλλαγή εφαρμογών, σύρετε προς τα πάνω από το κάτω μέρος της οθόνης, πατήστε παρατεταμένα και μετά αφήστε."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Για εναλλαγή μεταξύ εφαρμογών, σύρετε από κάτω προς τα πάνω με 2 δάχτ., κρατήστε και έπειτα αφήστε."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Εναλλαγή μεταξύ εφαρμογών"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Όλα είναι έτοιμα"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Τέλος"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Ρυθμίσεις"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Ωραία!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Οδηγός <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Όλα έτοιμα!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Σύρετε προς τα πάνω για μετάβαση στην αρχική οθόνη."</string>
-    <string name="allset_description" msgid="6350320429953234580">"Είστε έτοιμοι να ξεκινήσετε να χρησιμοποιείτε το τηλέφωνό σας"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Σύρετε προς τα επάνω για να μεταβείτε στην αρχική σελίδα"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Πατήστε το κουμπί αρχικής οθόνης για να μεταβείτε στην αρχική οθόνη"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Είστε έτοιμοι να ξεκινήσετε να χρησιμοποιείτε το/τη <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"συσκευή"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Ρυθμίσεις πλοήγησης συστήματος"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Κοινοποίηση"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Στιγμιότυπο οθόνης"</string>
     <string name="action_split" msgid="2098009717623550676">"Διαχωρισμός"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Πατήστε άλλη εφαρμογή για χρήση διαχωρισμού οθόνης"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Η εφαρμογή δεν υποστηρίζει διαχωρισμό οθόνης."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Πατήστε άλλη εφαρμογή για διαχωρισμό οθόνης"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Επιλέξτε άλλη εφαρμογή για διαχωρισμό οθόνης"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Αυτή η ενέργεια δεν επιτρέπεται από την εφαρμογή ή τον οργανισμό σας."</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Παράβλεψη οδηγού πλοήγησης;"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Βρείτε τον αργότερα στην εφαρμογή <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Ακύρωση"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Παράβλεψη"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Περιστροφή οθόνης"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Η εκπαίδευση για τη γραμμή εργασιών εμφανίστηκε"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Η εκπαίδευση για τη γραμμή εργασιών έκλεισε"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Χρήση της γραμμής εργασιών για εναλλαγή εφαρμογών"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Σύρετε στο πλάι για ταυτόχρονη χρήση δύο εφαρμογών"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Αγγίξτε παρατεταμένα για απόκρυψη της γραμμής εργασιών."</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Επόμενο"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Πίσω"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Πληροφορίες χρήσης της Γραμμής εργαλείων"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Σύρετε μια εφαρμ. στην άκρη για χρήση δύο εφαρμ. ταυτόχρονα"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Σύρετε αργά προς τα πάνω για εμφάνιση της Γραμμής εργαλείων"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Λάβετε προτεινόμενες εφαρμογές με βάση τη ρουτίνα σας"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Ενεργοπ. την πλοήγηση με κινήσεις στις Ρυθμίσεις για αυτόμ. απόκρυψη της Γραμμής εργαλείων"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Κάντε περισσότερα με τη Γραμμή εργαλείων"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Κλείσιμο"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Τέλος"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Αρχική σελίδα"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Πρόσφατα"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Ειδοποιήσεις"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Γρήγορες ρυθμ."</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Γραμμή εργαλείων"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Η γραμμή εργαλείων εμφανίζεται"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Η γραμμή εργαλείων είναι κρυφή"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Γραμμή πλοήγησης"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Εμφ. πάντα σε Γραμμή εργαλείων"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Αλλαγή τρόπου πλοήγησης"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Διαχωριστικό Γραμμής εργαλείων"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Μετακίνηση επάνω/αριστερά"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Μετακίνηση κάτω/δεξιά"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Εμφάνιση # ακόμα εφαρμογής.}other{Εμφάνιση # ακόμα εφαρμογών.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> και <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-en-rAU/strings.xml b/quickstep/res/values-en-rAU/strings.xml
index c67f4c9..f5d7e73 100644
--- a/quickstep/res/values-en-rAU/strings.xml
+++ b/quickstep/res/values-en-rAU/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Get app suggestions on the favourites row of your home screen"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will move up to your home screen."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps in the favourites row will move to your home screen."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will be moved to a new folder."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Get app suggestions"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"No, thanks"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Settings"</string>
@@ -47,26 +46,33 @@
     <string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predicted app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Make sure that you swipe from the far-right or far-left edge."</string>
     <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"Make sure that you swipe from the right or left edge to the middle of the screen and let go."</string>
-    <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"You learned how to swipe from the right to go back. Next, learn how to switch apps."</string>
+    <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"You\'ve learned how to swipe from the right to go back. Next, learn how to switch apps."</string>
     <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"You completed the go back gesture."</string>
     <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Make sure that you don\'t swipe too close to the bottom of the screen."</string>
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"To change sensitivity of the back gesture, go to Settings"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Swipe to go back"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"To go back to the last screen, swipe from the left or right edge to the middle of the screen."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"To go back to the last screen, swipe with two fingers from the left or right edge to the middle of the screen."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Go back"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Make sure that you swipe up from the bottom edge of the screen."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Make sure that you don\'t pause before letting go."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Make sure that you swipe straight up."</string>
-    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"You completed the go home gesture. Next, learn how to go back."</string>
+    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"You\'ve completed the go home gesture. Next, learn how to go back."</string>
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"You completed the go home gesture."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Swipe to go home"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Swipe up from the bottom of your screen. This gesture always takes you to the home screen."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Swipe up with two fingers from the bottom of the screen. This gesture always takes you to the home screen."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Go home"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"To go to your home screen at any time, swipe up from the bottom of your screen"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Make sure that you swipe up from the bottom edge of the screen."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Try holding the window for longer before releasing."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Make sure that you swipe straight up, then pause."</string>
-    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"You learned how to use gestures. To turn off gestures, go to Settings."</string>
+    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"You\'ve learned how to use gestures. To turn off gestures, go to Settings."</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"You completed the switch apps gesture."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Swipe to switch apps"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"To switch between apps, swipe up from the bottom of your screen, hold, then release."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"To switch between apps, swipe up with two fingers from the bottom of your screen, hold, then release."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Switch apps"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"All set"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Done"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Settings"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Nice!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Tutorial <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Ready!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Swipe up to go home"</string>
-    <string name="allset_description" msgid="6350320429953234580">"You’re ready to start using your phone"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Swipe up to go home"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Tap the home button to go to your home screen"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"You’re ready to start using your <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"device"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"System navigation settings"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Share"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
     <string name="action_split" msgid="2098009717623550676">"Split"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Tap another app to use split-screen"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"App does not support split-screen."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Tap another app to use split screen"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Choose another app to use split screen"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"This action isn\'t allowed by the app or your organisation"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Skip navigation tutorial?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"You can find this later in the <xliff:g id="NAME">%1$s</xliff:g> app"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Cancel"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Skip"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Rotate screen"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Taskbar education appeared"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Taskbar education closed"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Use the taskbar to switch apps"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Drag to the side to use two apps at once"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Touch &amp; hold to hide the taskbar"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Next"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Back"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Taskbar education"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Drag an app to the side to use two apps at once"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Slow-swipe up to show the Taskbar"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Get app suggestions based on your routine"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Turn on gesture navigation in Settings to auto-hide the Taskbar"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Do more with the Taskbar"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Close"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Done"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Home"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Recents"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Notifications"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Quick Settings"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Taskbar"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Taskbar shown"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Taskbar hidden"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigation bar"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Always show Taskbar"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Change navigation mode"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Taskbar divider"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Move to top/left"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Move to bottom/right"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Show # more app.}other{Show # more apps.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> and <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-en-rCA/strings.xml b/quickstep/res/values-en-rCA/strings.xml
index c67f4c9..9adb0f4 100644
--- a/quickstep/res/values-en-rCA/strings.xml
+++ b/quickstep/res/values-en-rCA/strings.xml
@@ -25,19 +25,18 @@
     <string name="accessibility_app_usage_settings" msgid="6312864233673544149">"App usage settings"</string>
     <string name="recents_clear_all" msgid="5328176793634888831">"Clear all"</string>
     <string name="accessibility_recent_apps" msgid="4058661986695117371">"Recent apps"</string>
-    <string name="task_view_closed" msgid="9170038230110856166">"Task closed"</string>
+    <string name="task_view_closed" msgid="9170038230110856166">"Task Closed"</string>
     <string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
     <string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"&lt; 1 minute"</string>
     <string name="time_left_for_app" msgid="3111996412933644358">"<xliff:g id="TIME">%1$s</xliff:g> left today"</string>
     <string name="title_app_suggestions" msgid="4185902664111965088">"App suggestions"</string>
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"Your predicted apps"</string>
-    <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Get app suggestions on the bottom row of your home screen"</string>
-    <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Get app suggestions on the favourites row of your home screen"</string>
-    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will move up to your home screen."</string>
-    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps in the favourites row will move to your home screen."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will be moved to a new folder."</string>
+    <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Get app suggestions on the bottom row of your Home screen"</string>
+    <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Get app suggestions on favorites row of your Home screen"</string>
+    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Easily access your most-used apps right on the Home screen. Suggestions will change based on your routines. Apps on the bottom row will move up to your Home screen."</string>
+    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Easily access your most-used apps right on the Home screen. Suggestions will change based on your routines. Apps in favorites row will move to your Home screen."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Get app suggestions"</string>
-    <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"No, thanks"</string>
+    <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"No thanks"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Settings"</string>
     <string name="hotseat_auto_enrolled" msgid="522100018967146807">"Most-used apps appear here, and change based on routines"</string>
     <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Drag apps off the bottom row to get app suggestions"</string>
@@ -45,56 +44,64 @@
     <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"App suggestions enabled"</string>
     <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"App suggestions are disabled"</string>
     <string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predicted app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
-    <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Make sure that you swipe from the far-right or far-left edge."</string>
-    <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"Make sure that you swipe from the right or left edge to the middle of the screen and let go."</string>
-    <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"You learned how to swipe from the right to go back. Next, learn how to switch apps."</string>
+    <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Make sure you swipe from the far-right or far-left edge."</string>
+    <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"Make sure you swipe from the right or left edge to the middle of the screen and let go."</string>
+    <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"You learned how to swipe from the right to go back. Next up, learn how to switch apps."</string>
     <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"You completed the go back gesture."</string>
-    <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Make sure that you don\'t swipe too close to the bottom of the screen."</string>
-    <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"To change sensitivity of the back gesture, go to Settings"</string>
+    <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Make sure you don\'t swipe too close to the bottom of the screen."</string>
+    <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"To change the sensitivity of the back gesture, go to Settings"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Swipe to go back"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"To go back to the last screen, swipe from the left or right edge to the middle of the screen."</string>
-    <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Make sure that you swipe up from the bottom edge of the screen."</string>
-    <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Make sure that you don\'t pause before letting go."</string>
-    <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Make sure that you swipe straight up."</string>
-    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"You completed the go home gesture. Next, learn how to go back."</string>
-    <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"You completed the go home gesture."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"To go back to the last screen, swipe with 2 fingers from the left or right edge to the middle of the screen."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Go back"</string>
+    <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Make sure you swipe up from the bottom edge of the screen."</string>
+    <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Make sure you don\'t pause before letting go."</string>
+    <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Make sure you swipe straight up."</string>
+    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"You completed the go Home gesture. Next up, learn how to go back."</string>
+    <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"You completed the go Home gesture."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Swipe to go home"</string>
-    <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Swipe up from the bottom of your screen. This gesture always takes you to the home screen."</string>
-    <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Make sure that you swipe up from the bottom edge of the screen."</string>
+    <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Swipe up from the bottom of your screen. This gesture always takes you to the Home screen."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Swipe up with 2 fingers from the bottom of the screen. This gesture always takes you to the Home screen."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Go home"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"To go to your home screen at any time, swipe up from the bottom of your screen"</string>
+    <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Make sure you swipe up from the bottom edge of the screen."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Try holding the window for longer before releasing."</string>
-    <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Make sure that you swipe straight up, then pause."</string>
+    <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Make sure you swipe straight up, then pause."</string>
     <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"You learned how to use gestures. To turn off gestures, go to Settings."</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"You completed the switch apps gesture."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Swipe to switch apps"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"To switch between apps, swipe up from the bottom of your screen, hold, then release."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"To switch between apps, swipe up with 2 fingers from the bottom of your screen, hold, then release."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Switch apps"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"All set"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Done"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Settings"</string>
     <string name="gesture_tutorial_try_again" msgid="65962545858556697">"Try again"</string>
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Nice!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Tutorial <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
-    <string name="allset_title" msgid="5021126669778966707">"Ready!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Swipe up to go home"</string>
-    <string name="allset_description" msgid="6350320429953234580">"You’re ready to start using your phone"</string>
+    <string name="allset_title" msgid="5021126669778966707">"All set!"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Swipe up to go home"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Tap the home button to go to your home screen"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"You\'re ready to start using your <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"device"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"System navigation settings"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Share"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
     <string name="action_split" msgid="2098009717623550676">"Split"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Tap another app to use split-screen"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"App does not support split-screen."</string>
-    <string name="blocked_by_policy" msgid="2071401072261365546">"This action isn\'t allowed by the app or your organisation"</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Tap another app to use split screen"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Choose another app to use split screen"</string>
+    <string name="blocked_by_policy" msgid="2071401072261365546">"This action isn\'t allowed by the app or your organization"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Skip navigation tutorial?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"You can find this later in the <xliff:g id="NAME">%1$s</xliff:g> app"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Cancel"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Skip"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Rotate screen"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Taskbar education appeared"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Taskbar education closed"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Use the taskbar to switch apps"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Drag to the side to use two apps at once"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Touch &amp; hold to hide the taskbar"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Next"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Back"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Taskbar education"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Drag an app to the side to use 2 apps at once"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Slow-swipe up to show the Taskbar"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Get app suggestions based on your routine"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Turn on gesture navigation in Settings to auto-hide the Taskbar"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Do more with the Taskbar"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Close"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Done"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Home"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Recents"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Notifications"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Quick Settings"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Taskbar"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Taskbar shown"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Taskbar hidden"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigation bar"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Always show Taskbar"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Change navigation mode"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Taskbar Divider"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Move to top/left"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Move to bottom/right"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Show # more app.}other{Show # more apps.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> and <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-en-rGB/strings.xml b/quickstep/res/values-en-rGB/strings.xml
index c67f4c9..f5d7e73 100644
--- a/quickstep/res/values-en-rGB/strings.xml
+++ b/quickstep/res/values-en-rGB/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Get app suggestions on the favourites row of your home screen"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will move up to your home screen."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps in the favourites row will move to your home screen."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will be moved to a new folder."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Get app suggestions"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"No, thanks"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Settings"</string>
@@ -47,26 +46,33 @@
     <string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predicted app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Make sure that you swipe from the far-right or far-left edge."</string>
     <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"Make sure that you swipe from the right or left edge to the middle of the screen and let go."</string>
-    <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"You learned how to swipe from the right to go back. Next, learn how to switch apps."</string>
+    <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"You\'ve learned how to swipe from the right to go back. Next, learn how to switch apps."</string>
     <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"You completed the go back gesture."</string>
     <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Make sure that you don\'t swipe too close to the bottom of the screen."</string>
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"To change sensitivity of the back gesture, go to Settings"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Swipe to go back"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"To go back to the last screen, swipe from the left or right edge to the middle of the screen."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"To go back to the last screen, swipe with two fingers from the left or right edge to the middle of the screen."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Go back"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Make sure that you swipe up from the bottom edge of the screen."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Make sure that you don\'t pause before letting go."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Make sure that you swipe straight up."</string>
-    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"You completed the go home gesture. Next, learn how to go back."</string>
+    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"You\'ve completed the go home gesture. Next, learn how to go back."</string>
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"You completed the go home gesture."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Swipe to go home"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Swipe up from the bottom of your screen. This gesture always takes you to the home screen."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Swipe up with two fingers from the bottom of the screen. This gesture always takes you to the home screen."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Go home"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"To go to your home screen at any time, swipe up from the bottom of your screen"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Make sure that you swipe up from the bottom edge of the screen."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Try holding the window for longer before releasing."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Make sure that you swipe straight up, then pause."</string>
-    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"You learned how to use gestures. To turn off gestures, go to Settings."</string>
+    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"You\'ve learned how to use gestures. To turn off gestures, go to Settings."</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"You completed the switch apps gesture."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Swipe to switch apps"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"To switch between apps, swipe up from the bottom of your screen, hold, then release."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"To switch between apps, swipe up with two fingers from the bottom of your screen, hold, then release."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Switch apps"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"All set"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Done"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Settings"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Nice!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Tutorial <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Ready!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Swipe up to go home"</string>
-    <string name="allset_description" msgid="6350320429953234580">"You’re ready to start using your phone"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Swipe up to go home"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Tap the home button to go to your home screen"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"You’re ready to start using your <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"device"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"System navigation settings"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Share"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
     <string name="action_split" msgid="2098009717623550676">"Split"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Tap another app to use split-screen"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"App does not support split-screen."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Tap another app to use split screen"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Choose another app to use split screen"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"This action isn\'t allowed by the app or your organisation"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Skip navigation tutorial?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"You can find this later in the <xliff:g id="NAME">%1$s</xliff:g> app"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Cancel"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Skip"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Rotate screen"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Taskbar education appeared"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Taskbar education closed"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Use the taskbar to switch apps"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Drag to the side to use two apps at once"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Touch &amp; hold to hide the taskbar"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Next"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Back"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Taskbar education"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Drag an app to the side to use two apps at once"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Slow-swipe up to show the Taskbar"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Get app suggestions based on your routine"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Turn on gesture navigation in Settings to auto-hide the Taskbar"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Do more with the Taskbar"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Close"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Done"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Home"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Recents"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Notifications"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Quick Settings"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Taskbar"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Taskbar shown"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Taskbar hidden"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigation bar"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Always show Taskbar"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Change navigation mode"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Taskbar divider"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Move to top/left"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Move to bottom/right"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Show # more app.}other{Show # more apps.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> and <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-en-rIN/strings.xml b/quickstep/res/values-en-rIN/strings.xml
index c67f4c9..f5d7e73 100644
--- a/quickstep/res/values-en-rIN/strings.xml
+++ b/quickstep/res/values-en-rIN/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Get app suggestions on the favourites row of your home screen"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will move up to your home screen."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps in the favourites row will move to your home screen."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will be moved to a new folder."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Get app suggestions"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"No, thanks"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Settings"</string>
@@ -47,26 +46,33 @@
     <string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predicted app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Make sure that you swipe from the far-right or far-left edge."</string>
     <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"Make sure that you swipe from the right or left edge to the middle of the screen and let go."</string>
-    <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"You learned how to swipe from the right to go back. Next, learn how to switch apps."</string>
+    <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"You\'ve learned how to swipe from the right to go back. Next, learn how to switch apps."</string>
     <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"You completed the go back gesture."</string>
     <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Make sure that you don\'t swipe too close to the bottom of the screen."</string>
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"To change sensitivity of the back gesture, go to Settings"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Swipe to go back"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"To go back to the last screen, swipe from the left or right edge to the middle of the screen."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"To go back to the last screen, swipe with two fingers from the left or right edge to the middle of the screen."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Go back"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Make sure that you swipe up from the bottom edge of the screen."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Make sure that you don\'t pause before letting go."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Make sure that you swipe straight up."</string>
-    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"You completed the go home gesture. Next, learn how to go back."</string>
+    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"You\'ve completed the go home gesture. Next, learn how to go back."</string>
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"You completed the go home gesture."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Swipe to go home"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Swipe up from the bottom of your screen. This gesture always takes you to the home screen."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Swipe up with two fingers from the bottom of the screen. This gesture always takes you to the home screen."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Go home"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"To go to your home screen at any time, swipe up from the bottom of your screen"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Make sure that you swipe up from the bottom edge of the screen."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Try holding the window for longer before releasing."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Make sure that you swipe straight up, then pause."</string>
-    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"You learned how to use gestures. To turn off gestures, go to Settings."</string>
+    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"You\'ve learned how to use gestures. To turn off gestures, go to Settings."</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"You completed the switch apps gesture."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Swipe to switch apps"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"To switch between apps, swipe up from the bottom of your screen, hold, then release."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"To switch between apps, swipe up with two fingers from the bottom of your screen, hold, then release."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Switch apps"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"All set"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Done"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Settings"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Nice!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Tutorial <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Ready!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Swipe up to go home"</string>
-    <string name="allset_description" msgid="6350320429953234580">"You’re ready to start using your phone"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Swipe up to go home"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Tap the home button to go to your home screen"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"You’re ready to start using your <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"device"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"System navigation settings"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Share"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
     <string name="action_split" msgid="2098009717623550676">"Split"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Tap another app to use split-screen"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"App does not support split-screen."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Tap another app to use split screen"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Choose another app to use split screen"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"This action isn\'t allowed by the app or your organisation"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Skip navigation tutorial?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"You can find this later in the <xliff:g id="NAME">%1$s</xliff:g> app"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Cancel"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Skip"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Rotate screen"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Taskbar education appeared"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Taskbar education closed"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Use the taskbar to switch apps"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Drag to the side to use two apps at once"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Touch &amp; hold to hide the taskbar"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Next"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Back"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Taskbar education"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Drag an app to the side to use two apps at once"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Slow-swipe up to show the Taskbar"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Get app suggestions based on your routine"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Turn on gesture navigation in Settings to auto-hide the Taskbar"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Do more with the Taskbar"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Close"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Done"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Home"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Recents"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Notifications"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Quick Settings"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Taskbar"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Taskbar shown"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Taskbar hidden"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigation bar"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Always show Taskbar"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Change navigation mode"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Taskbar divider"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Move to top/left"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Move to bottom/right"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Show # more app.}other{Show # more apps.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> and <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-en-rXC/strings.xml b/quickstep/res/values-en-rXC/strings.xml
index c3007f0..853684d 100644
--- a/quickstep/res/values-en-rXC/strings.xml
+++ b/quickstep/res/values-en-rXC/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‏‎‏‏‏‎‎‏‎‏‏‎‏‏‏‏‎‏‏‏‎‎‏‏‏‏‏‎‏‏‎‎‎‏‎‎‏‏‎‏‎‎‎‎‏‎‏‏‏‏‏‎‏‏‎Get app suggestions on favorites row of your Home screen‎‏‎‎‏‎"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‏‏‏‎‏‏‎‏‏‎‎‎‏‏‏‏‎‏‎‎‏‏‏‏‏‎‎‏‎‏‏‎‎‏‏‎‎‏‏‎‏‏‏‏‎‏‏‎‎‎‎Easily access your most-used apps right on the Home screen. Suggestions will change based on your routines. Apps on the bottom row will move up to your Home screen.‎‏‎‎‏‎"</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‎‏‏‏‏‎‏‏‏‎‏‎‎‎‏‏‏‎‏‏‏‏‏‏‎‎‎‎‏‏‏‏‎‎‎‎‏‎‎‏‏‎‏‎‏‎‏‏‏‎‎‏‏‎‎‎‏‎Easily access your most-used apps right on the Home screen. Suggestions will change based on your routines. Apps in favorites row will move to your Home screen.‎‏‎‎‏‎"</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‏‏‏‎‎‎‏‎‏‎‎‎‏‎‎‏‏‎‏‎‎‎‏‎‏‏‏‏‏‎‎‎‏‎‏‏‎‎‎‏‎‏‏‎‏‎‏‎‎‏‎‏‎‎‎Easily access your most-used apps, right on the Home screen. Suggestions will change based on your routines. Apps on the bottom row will move to a new folder.‎‏‎‎‏‎"</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‏‏‎‎‏‎‏‏‏‎‏‎‏‎‏‏‎‏‎‏‏‎‎‏‏‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‎‏‎‎‎‏‏‎‎‎‏‎‎‎‏‏‏‎‏‎Get app suggestions‎‏‎‎‏‎"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‏‎‏‎‎‏‏‎‎‎‏‎‏‎‏‎‏‏‏‏‏‏‎‎‎‏‎‏‎‎‏‏‎‏‏‎‏‏‎‎‎‏‎‎‎‏‏‎‏‎‏‏‎‏‏‎‎‏‎No thanks‎‏‎‎‏‎"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‏‎‎‎‎‎‎‏‏‏‎‎‎‏‎‏‎‏‎‏‏‏‏‎‎‎‏‎‏‎‏‏‏‎‎‏‎‏‎‏‏‏‎‎‎‎‎‏‎‎‎‏‎‎Settings‎‏‎‎‏‎"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‏‏‎‎‏‏‏‏‎‏‏‎‎‎‏‏‏‎‏‎‎‎‏‏‏‏‏‎‏‏‏‎‏‎‏‎‎‏‎‏‎‎‏‏‏‏‏‎‎‏‎‎‎‏‎‎To change the sensitivity of the back gesture, go to Settings‎‏‎‎‏‎"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‎‏‏‏‏‎‎‎‏‎‏‎‏‏‏‎‏‎‏‏‏‎‎‎‎‏‏‏‎‎‏‏‏‏‎‎‏‏‎‏‏‏‏‏‎‏‎‎‏‎‎‎‎‏‎‏‏‎‎‎Swipe to go back‎‏‎‎‏‎"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‎‎‏‏‏‏‎‎‎‏‏‏‏‎‎‏‏‎‎‎‏‏‏‎‎‎‎‎‎‏‎‎‏‏‏‎‎‎‎‏‏‎‎‎‏‏‏‎‏‎‏‏‎‏‎To go back to the last screen, swipe from the left or right edge to the middle of the screen.‎‏‎‎‏‎"</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‎‎‎‎‎‏‎‎‎‏‏‏‏‎‏‏‎‏‎‏‎‏‏‎‏‏‎‎‎‏‎‎‏‎‎‎‎‎‎‎‎‏‏‏‏‏‏‏‎‏‎‎‎‎‎To go back to the last screen, swipe with 2 fingers from the left or right edge to the middle of the screen.‎‏‎‎‏‎"</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‏‏‏‏‏‎‏‎‎‎‏‏‎‎‎‏‏‎‏‏‎‏‏‏‎‏‏‏‎‏‎‏‎‎‏‎‎‏‏‏‎‎‏‎‎‎‎‏‏‎‎‏‏‎‏‎Go back‎‏‎‎‏‎"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‏‎‎‎‎‎‏‎‎‏‏‏‏‏‏‏‎‎‏‎‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‎‎‏‏‏‎‏‏‏‎‏‏‎‏‎‎‏‎‎Make sure you swipe up from the bottom edge of the screen.‎‏‎‎‏‎"</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‏‎‏‏‎‎‏‏‏‎‏‎‏‏‎‏‏‏‏‏‏‎‎‎‏‏‎‏‎‎‏‏‎‎‎‏‏‎‎‎‏‏‎‎‎‏‏‎‎‎‏‎‏‏‏‎‏‎‏‎Make sure you don\'t pause before letting go.‎‏‎‎‏‎"</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‏‏‎‎‏‎‏‎‏‏‏‎‏‎‎‏‎‎‏‏‎‏‎‎‏‎‎‏‏‏‏‎‎‎‎‏‎‏‏‏‏‎‎Make sure you swipe straight up.‎‏‎‎‏‎"</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‎‏‎‎‎‎‏‎‎‏‎‏‎‏‎‏‎‏‏‎‎‏‎‏‏‏‎‎‏‎‎‏‏‎‏‎‎‎‎‎‏‏‎‎‏‏‏‏‏‎‏‎‎You completed the go Home gesture.‎‏‎‎‏‎"</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‎‏‎‏‏‏‎‎‏‏‏‎‎‎‎‏‎‏‎‏‎‎‏‏‏‎‏‎‏‎‎‎‎‎‏‎‎‎‏‏‏‎‏‎‏‏‏‎‏‏‎‎‎‎‏‏‎‎‏‏‎‎Swipe to go home‎‏‎‎‏‎"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‎‏‎‏‏‏‎‎‏‏‎‎‏‎‎‎‎‏‎‎‎‎‎‎‏‏‏‏‎‏‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‎‎Swipe up from the bottom of your screen. This gesture always takes you to the Home screen.‎‏‎‎‏‎"</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‎‏‏‏‎‎‏‎‎‏‏‏‎‏‏‎‎‏‏‎‏‏‏‎‏‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‏‏‎‎‏‏‏‎‎‏‎‏‏‎‎‎‎‏‏‎‎Swipe up with 2 fingers from the bottom of the screen. This gesture always takes you to the Home screen.‎‏‎‎‏‎"</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‎‏‏‎‏‏‎‎‏‎‎‏‎‏‏‏‏‏‏‎‏‎‎‎‏‎‏‏‎‏‏‏‎‏‎‎‎‎‎‏‎‏‏‎‏‎‎‏‎‎‏‏‎‎‎‎‎‎‎‎Go home‎‏‎‎‏‎"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‎‏‏‏‏‎‏‏‏‏‎‏‎‎‎‎‏‏‎‏‏‎‎‏‎‎‎‏‏‎‏‎‎‏‏‎‎‏‏‏‏‏‎‎‏‏‏‏‎‏‏‎To go to your home screen at any time, swipe up from the bottom of your screen‎‏‎‎‏‎"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‎‏‎‏‏‎‏‎‎‎‎‏‎‏‎‎‏‏‏‏‎‏‎‏‏‏‎‏‏‎‏‎‏‏‎‎‏‏‎‏‏‎‏‏‎‎‏‎‎‎‏‎‎‏‎Make sure you swipe up from the bottom edge of the screen.‎‏‎‎‏‎"</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‏‎‏‎‏‎‏‎‏‏‎‎‎‎‎‏‎‎‎‏‏‏‏‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‏‎‎‏‏‎‏‎‎‎‏‎‎‏‎Try holding the window for longer before releasing.‎‏‎‎‏‎"</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‎‏‏‎‏‏‏‎‏‎‏‎‎‎‎‏‏‏‎‎‎‏‎‏‎‎‏‏‏‎‎‏‎‏‏‎‎‎‏‎‏‎‎‎‎‎‎‏‎‏‎‏‎Make sure you swipe straight up, then pause.‎‏‎‎‏‎"</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‏‎‎‎‏‏‎‎‏‏‎‏‏‎‏‏‎‏‏‏‏‎‎‎‎‎‎‎‎‎‏‏‏‎‎‎‏‎‎‏‏‎‏‏‏‎‎‎‏‏‏‎‎‎‏‎‎‎‎‎You completed the switch apps gesture.‎‏‎‎‏‎"</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‎‎‎‎‏‎‎‎‏‏‎‎‎‏‎‏‎‏‏‎‎‎‏‏‏‎‎‏‏‎‏‏‏‎‏‏‏‏‎‎‎‎‏‏‎‎‏‎‎‎‎‏‎‏‎‎‎‏‎‎Swipe to switch apps‎‏‎‎‏‎"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‏‏‎‎‏‎‎‎‏‏‎‏‎‎‎‏‏‏‎‏‎‎‏‏‏‎‎‏‏‎‏‏‏‎‎‏‏‏‎‏‎‏‏‎‏‎‏‏‏‎‏‎‏‏‎To switch between apps, swipe up from the bottom of your screen, hold, then release.‎‏‎‎‏‎"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‏‏‏‏‎‎‏‏‏‏‎‏‏‎‏‎‏‎‎‎‏‎‏‎‏‎‏‎‏‏‎‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎To switch between apps, swipe up with 2 fingers from the bottom of your screen, hold, then release.‎‏‎‎‏‎"</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‎‎‎‎‏‏‏‏‎‏‎‎‏‎‎‎‏‎‎‏‏‎‏‎‎‎‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‎‎‏‏‎‏‏‏‎‎‎‎‎Switch apps‎‏‎‎‏‎"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‎‎‏‎‎‎‎‎‎‏‏‎‏‏‎‎‎‎‏‏‏‎‎‎‏‎‎‏‎‏‏‎‏‎‏‎‏‎‏‏‏‎‏‎‏‏‏‎‏‏‎‏‏‎‎‎All set‎‏‎‎‏‎"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‏‏‎‏‏‏‏‏‎‏‎‏‎‎‎‎‏‏‎‏‏‏‏‎‎‏‎‏‎‏‎‏‎‎‎‏‎‎‎‎‏‎‏‏‏‎‎‎‏‏‎‏‎‎Done‎‏‎‎‏‎"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‎‏‎‎‏‎‏‏‎‎‏‎‎‏‏‏‎‏‏‎‏‎‎‏‏‎‎‎‏‎‏‏‏‎‏‎‏‎‏‏‎‏‏‏‏‏‏‏‎‎‏‏‎‎‎Settings‎‏‎‎‏‎"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‏‏‏‏‎‎‏‎‏‏‏‏‎‏‏‏‎‏‎‏‎‎‎‎‏‎‏‏‏‏‎‎‏‏‎‎‎‎‎‏‏‎‎‎‎Nice!‎‏‎‎‏‎"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‎‎‏‏‏‎‎‎‎‏‎‏‎‏‏‎‏‏‎‏‎‏‏‎‎‏‎‏‎‏‏‎‏‏‏‎‎‎‎‎‏‎‎‏‏‎‎‏‎‏‏‏‏‏‎‏‎‎‎‎Tutorial ‎‏‎‎‏‏‎<xliff:g id="CURRENT">%1$d</xliff:g>‎‏‎‎‏‏‏‎/‎‏‎‎‏‏‎<xliff:g id="TOTAL">%2$d</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <string name="allset_title" msgid="5021126669778966707">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‎‏‎‏‏‏‎‏‎‏‎‎‎‎‎‎‎‎‏‏‎‏‎‎‏‏‎‎‏‎‎‎‏‏‎‏‎‏‎‎‏‎‏‏‎‎‎‏‎‏‏‎‎‏‏‎All set!‎‏‎‎‏‎"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‎‎‏‎‎‎‏‎‏‏‏‏‏‏‎‏‎‏‏‎‎‎‏‎‎‏‏‎‎‎‎‏‎‏‏‎‎‎‏‏‏‏‎‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‎Swipe up to go Home‎‏‎‎‏‎"</string>
-    <string name="allset_description" msgid="6350320429953234580">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‎‏‎‎‎‎‎‏‏‎‏‏‏‏‎‏‏‎‎‏‎‎‏‎‎‎‏‏‏‎‏‎‏‎‎‎‏‎‎‏‎‏‏‎‏‏‎‏‎‎‏‎‏‎‎‎You’re ready to start using your phone‎‏‎‎‏‎"</string>
+    <string name="allset_hint" msgid="459504134589971527">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‏‏‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‎‎‏‎‎‏‎‎‏‏‎‏‏‎‏‎‏‏‎‎‎‎‏‏‏‎‏‏‏‏‏‏‎‎‎‏‎‎‎‏‏‏‎Swipe up to go home‎‏‎‎‏‎"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‎‎‏‎‎‏‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‎‏‎‎‎‎‎‎‏‎‎‎‎‎‎‏‎‏‏‏‏‏‎‏‏‏‏‎‎‏‏‎Tap the home button to go to your home screen‎‏‎‎‏‎"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‎‏‏‏‏‎‏‎‎‏‎‎‎‏‏‏‏‎‎‎‏‎‏‏‏‏‎‎‎‎‏‎‏‏‎‎‏‎‏‎‏‎‎‎‎‎‎‎‎‎‎‏‏‏‏‎You’re ready to start using your ‎‏‎‎‏‏‎<xliff:g id="DEVICE">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‎‏‏‏‏‎‏‏‎‏‎‎‎‎‎‎‎‎‎‎‎‏‏‏‎‏‏‏‏‎‎‏‏‏‏‏‎‏‏‏‏‎‏‏‎‎‎‎‏‎‏‏‏‎device‎‏‎‎‏‎"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‏‏‎‏‎‎‏‎‏‏‎‎‎‎‎‏‎‎‎‎‏‎‎‎‎‏‏‎‏‎‏‎‎‎‎‎‏‏‎‎‎‎‏‎‏‏‏‏‎‏‏‏‎‏‏‎‎‏‎‎‏‏‎"<annotation id="link">"‎‏‎‎‏‏‏‎System navigation settings‎‏‎‎‏‏‎"</annotation>"‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <string name="action_share" msgid="2648470652637092375">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‏‎‎‎‎‎‏‎‏‎‎‎‎‏‎‎‎‎‎‎‏‏‎‏‏‎‎‎‎‎‎‎‏‏‏‏‎‏‏‎‎‎‏‏‎‏‎‎‎‎‏‎‏‏‏‎Share‎‏‎‎‏‎"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‎‎‏‎‏‏‎‏‎‏‎‏‏‏‎‏‎‏‎‏‎‏‎‏‎‎‏‏‎‎‏‏‎‎‏‏‎‎‏‎‎‎‎‏‏‏‏‎‎‎‏‎‏‎Screenshot‎‏‎‎‏‎"</string>
     <string name="action_split" msgid="2098009717623550676">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‏‎‏‎‎‎‏‏‏‎‏‏‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‏‏‏‎‎‏‎‎‏‎‎‎‏‎‎‏‏‏‏‎‎‏‎‏‏‎‏‎‏‎‎‎Split‎‏‎‎‏‎"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‎‏‏‎‎‎‎‎‎‎‎‎‏‏‎‎‎‏‎‎‏‎‏‏‎‎‏‏‎‏‎‏‎‎‎‏‎‏‎‏‏‎‏‏‎‏‎‎‎‏‏‎‎‎‎‎Tap another app to use splitscreen‎‏‎‎‏‎"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‏‎‎‏‏‎‏‏‎‎‏‎‏‏‏‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‏‏‎‏‎‎‏‎‎‎‏‎‎‎‏‏‎‎‏‎‎‏‎‎App does not support split-screen.‎‏‎‎‏‎"</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‏‏‏‎‏‎‎‎‏‎‏‏‎‎‏‎‏‎‏‏‎‎‎‏‏‏‏‎‎‏‎‏‎‏‏‎‎‏‏‏‏‏‎‎‎‎‏‏‎‏‎‎Tap another app to use split screen‎‏‎‎‏‎"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‎‎‎‏‏‎‎‎‎‎‏‎‎‏‏‏‎‎‎‎‏‎‎‏‎‎‏‎‏‎‎‎‎‎‏‏‏‏‎‎‎‎‎‎‎‏‎‏‎‏‏‏‎‏‏‎‎‏‎‎Choose another app to use split screen‎‏‎‎‏‎"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‏‏‏‏‏‎‎‎‏‏‎‎‎‎‏‎‎‏‏‎‎‏‏‏‎‏‎‏‏‏‎‎‎‎‎‎‎‎‏‏‏‏‏‏‏‎‎‏‎‏‎‏‎‎This action isn\'t allowed by the app or your organization‎‏‎‎‏‎"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‎‏‎‎‏‏‎‏‏‎‏‏‏‎‎‎‎‎‎‎‏‏‏‎‎‏‏‎‏‏‎‏‏‎‎‎‎‎‏‎‎‏‏‎‎‏‎‎‏‏‏‎‏‎‎Skip navigation tutorial?‎‏‎‎‏‎"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‏‏‏‏‏‎‎‎‏‏‎‎‏‏‏‎‎‏‏‎‏‎‏‏‎‏‏‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‏‏‏‏‎‏‎‎‏‏‏‎‎You can find this later in the ‎‏‎‎‏‏‎<xliff:g id="NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ app‎‏‎‎‏‎"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‎‏‏‏‏‏‎‏‎‎‎‏‏‏‏‎‏‎‎‎‎‏‏‎‏‎‎‏‎‎‎‏‎‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‎‎‎Cancel‎‏‎‎‏‎"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‏‏‎‏‎‏‏‏‏‎‎‏‎‏‏‎‎‎‎‎‏‎‏‏‎‎‏‏‎‎‏‎‏‎‎‏‏‏‏‎‎‎‏‎‏‎‎‎‎‎‏‎‏‎‎‏‏‎‎‎‎Skip‎‏‎‎‏‎"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‏‏‏‎‎‎‏‏‏‎‏‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‎‎‎‎‎‎‏‏‏‎‏‏‏‏‎‏‏‎‏‎‎‏‏‏‏‏‎Rotate screen‎‏‎‎‏‎"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‏‎‎‏‎‎‎‎‏‏‏‎‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‎‎‏‎‏‎‏‎‎‎‎‎‎‏‏‎‎‎‎‎‎‏‏‎‎‏‎Taskbar education appeared‎‏‎‎‏‎"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‎‏‏‏‏‎‎‎‎‎‏‏‏‏‎‏‏‎‏‏‏‎‎‏‏‏‎‎‎‏‏‎‏‏‎‏‎‏‎‎‏‎‎‏‎‏‎‏‏‏‏‎‎‏‏‏‏‏‎‎Taskbar education closed‎‏‎‎‏‎"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‎‏‏‎‏‎‎‎‎‎‎‎‎‏‎‏‏‎‏‎‎‏‎‏‏‎‏‏‎‎‎‏‎‏‎‏‎‏‏‎‎‏‏‏‎‎‏‏‏‎‏‏‎‏‎Use the taskbar to switch apps‎‏‎‎‏‎"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‏‏‏‎‏‏‎‎‎‏‎‏‎‎‏‎‏‏‎‎‎‏‎‎‏‎‎‎‎‏‎‎‎‏‏‎‎‏‎‎‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎Drag to the side to use two apps at once‎‏‎‎‏‎"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‎‏‎‏‏‎‎‎‎‏‎‎‏‎‏‏‏‎‎‎‏‏‏‎‎‏‎‏‏‎‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‏‎‎‏‏‏‏‏‏‎Touch &amp; hold to hide the taskbar‎‏‎‎‏‎"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‎‏‏‏‎‏‏‏‏‎‏‎‏‏‏‎‎‏‎‏‏‎‎‏‎‏‏‎‏‎‏‎‎‏‎‎‏‎‎‏‏‎‏‎‎‏‎‎‏‎‎‎‎‏‎Next‎‏‎‎‏‎"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‏‏‏‏‎‏‏‎‏‎‏‎‎‎‎‏‎‎‏‏‏‏‎‎‎‎‏‏‎‎‏‏‎‏‏‏‏‎‎‏‎‎‎‏‏‎‏‎‎‏‏‎‎Back‎‏‎‎‏‎"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‎‏‏‎‎‎‎‏‎‎‎‏‏‎‏‏‎‎‏‏‏‎‏‎‎‏‎‏‎‎‏‎‎‏‎‎‏‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‎‏‏‎Taskbar education‎‏‎‎‏‎"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‏‎‎‏‎‏‎‏‏‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‏‏‎‎‎‏‏‎‎‏‎‎‎‎‎‏‎‏‎‏‏‏‎‎‏‏‎‎Drag an app to the side to use 2 apps at once‎‏‎‎‏‎"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‏‎‏‏‎‎‎‏‎‏‏‎‏‎‏‎‎‏‏‎‏‎‏‎‎‎‏‏‏‏‏‎‎‏‎‎‎‏‏‎‏‎‎‏‎‏‎‎‎‎‎‏‏‏‎‎Slow-swipe up to show the Taskbar‎‏‎‎‏‎"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‎‎‎‏‏‎‏‏‎‎‏‏‎‏‏‏‎‎‎‏‏‏‎‎‎‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‎‎‎‏‎‎‏‎‏‏‏‎‎Get app suggestions based on your routine‎‏‎‎‏‎"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‏‎‎‎‎‎‎‏‏‏‏‎‎‎‎‎‏‏‎‎‎‎‎‏‎‎‏‎‎‏‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‏‎‏‏‏‎Turn on gesture navigation in Settings to auto-hide the Taskbar‎‏‎‎‏‎"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‏‏‎‎‎‎‏‎‏‎‎‎‎‏‏‎‏‎‏‎‎‏‎‏‎‏‏‏‏‎‎‏‎‏‎‎‏‎‎‏‏‎‏‏‎‎‏‏‏‎‏‎‎‏‎‎‎‏‎‎Do more with the Taskbar‎‏‎‎‏‎"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‎‏‏‎‎‎‏‎‎‏‏‏‏‎‏‎‏‎‏‏‎‏‎‏‏‎‏‎‏‏‎‏‏‏‏‎‎‏‎‎‏‎‏‎‎‎‏‏‏‎‎‎‎‎‏‏‎‎‎‎‏‎Close‎‏‎‎‏‎"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‎‎‏‏‎‏‏‎‎‎‎‏‏‎‎‎‎‏‎‎‏‎‏‏‏‏‎‏‏‏‎‎‎‏‏‎‎‎‎‏‏‏‏‎‎‏‎Done‎‏‎‎‏‎"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‏‎‏‏‎‏‏‎‏‎‎‏‏‎‏‏‏‏‏‏‎‎‏‎‎‏‎‏‏‏‏‎‎‎‎‎‏‏‎‎‎‎‎‏‎‏‏‏‏‎‎‏‏‎‎‎Home‎‏‎‎‏‎"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‏‎‎‎‎‎‎‏‏‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‎‏‎‎‏‏‏‏‏‏‏‎‏‎‎‏‎‎‎‏‎‎‎‎‏‏‏‎‎Recents‎‏‎‎‏‎"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‎‎‎‏‎‎‎‎‏‏‎‏‎‎‎‎‎‏‏‎‎‎‏‏‎‎‎‏‎‏‏‏‏‎‏‎‎‎‎‏‏‎‎Notifications‎‏‎‎‏‎"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‎‏‏‎‎‏‎‏‎‎‎‏‏‎‏‎‎‏‎‎‎‏‏‎‎‏‎‎‎‏‏‎‏‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‎‎‎‎‏‏‏‏‎Quick Settings‎‏‎‎‏‎"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‎‎‎‏‏‏‎‏‎‏‎‎‎‎‏‎‏‏‏‎‎‏‏‏‎‏‎‏‏‎‎‏‏‏‏‎‎‎‎‎‏‏‏‎‎‏‎‏‎‎‏‏‎‎Taskbar‎‏‎‎‏‎"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‏‏‎‏‏‎‏‎‏‎‎‎‎‎‏‏‏‎‎‎‏‏‎‎‎‏‏‎‎‏‏‏‏‎‏‎‏‏‏‎‎‏‎‏‏‎‏‏‏‏‎‎‎‏‎Taskbar shown‎‏‎‎‏‎"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‏‎‎‏‏‎‎‎‎‎‎‎‏‎‏‏‎‏‎‏‏‏‏‏‏‏‎‏‎‏‎‏‏‎‎‎‎‏‎‎‎‏‎‏‎‎‏‎‏‎‎‎Taskbar hidden‎‏‎‎‏‎"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‎‏‏‏‎‏‏‎‏‏‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‏‎‏‎‎‏‏‎Navigation bar‎‏‎‎‏‎"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‎‎‏‎‏‎‏‎‎‎‎‏‎‎‏‏‎‏‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‏‎‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‎Always show Taskbar‎‏‎‎‏‎"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‎‎‎‎‏‏‏‎‏‎‏‎‏‎‏‏‎‏‎‎‏‎‎‏‏‎‏‎‎‏‏‏‎‎‏‏‏‏‎‏‏‎‎‎‎‎‎‏‎‎‎‎Change navigation mode‎‏‎‎‏‎"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‎‏‏‎‏‏‎‏‏‎‎‏‎‎‎‏‏‎‏‎‎‏‎‏‎‎‎‎‏‎‏‎‏‏‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‏‎‎‎‎‎‎Taskbar Divider‎‏‎‎‏‎"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‏‏‏‎‏‎‎‎‎‎‎‎‎‎‏‏‎‎‏‏‎‏‎‏‏‎‏‏‏‏‎‏‎‏‎‎‎‎‏‎‎‏‏‏‏‏‏‎‎‏‏‏‏‏‎Move to top/left‎‏‎‎‏‎"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‏‏‎‎‎‎‎‎‎‏‎‏‏‏‏‏‎‎‎‏‎‎‏‏‎‏‎‎‎‏‎‏‏‎‏‎‎‏‏‏‎‎‏‏‎‏‏‏‏‎‎‎‎‏‎‎Move to bottom/right‎‏‎‎‏‎"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‏‏‏‏‏‏‎‎‎‎‎‎‏‏‏‎‏‏‎‏‎‎‎‎‎‎‏‏‎‎‏‎‎‎‏‎‏‎‏‏‏‏‎‏‏‎‎‎‎‏‏‎‎‏‎Show # more app.‎‏‎‎‏‎}other{‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‏‏‏‏‏‏‎‎‎‎‎‎‏‏‏‎‏‏‎‏‎‎‎‎‎‎‏‏‎‎‏‎‎‎‏‎‏‎‏‏‏‏‎‏‏‎‎‎‎‏‏‎‎‏‎Show # more apps.‎‏‎‎‏‎}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‏‏‎‎‎‎‏‏‎‎‏‎‎‎‎‏‏‏‎‎‎‎‏‏‏‏‎‎‏‎‏‎‏‏‎‏‎‎‎‏‏‏‏‏‏‎‎‎‎‎‏‎‎‎‎‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">%1$s</xliff:g>‎‏‎‎‏‏‏‎ and ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_2">%2$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
 </resources>
diff --git a/quickstep/res/values-es-rUS/strings.xml b/quickstep/res/values-es-rUS/strings.xml
index 69b6015..e31466a 100644
--- a/quickstep/res/values-es-rUS/strings.xml
+++ b/quickstep/res/values-es-rUS/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Obtén sugerencias de apps en la fila de favoritos de la pantalla principal"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Accede fácilmente en la pantalla principal a las apps que más usas. Las sugerencias cambiarán según tus rutinas. Las apps de la fila inferior se desplazarán hacia arriba en la pantalla principal."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Accede fácilmente en la pantalla principal a las apps que más usas. Las sugerencias cambiarán según tus rutinas. Se moverán a la pantalla principal las apps que estén en la fila de favoritos."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Accede fácilmente a las apps que más usas en la pantalla principal. Las sugerencias cambiarán según tus rutinas. Las apps de la fila inferior se moverán a una nueva carpeta."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Obtén sugerencias de aplicaciones"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"No, gracias"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Configuración"</string>
@@ -47,26 +46,33 @@
     <string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predicción de app: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Asegúrate de deslizar desde el extremo derecho o izquierdo."</string>
     <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"Asegúrate de deslizar desde borde izquierdo o derecho hacia centro de la pantalla y, luego, soltar."</string>
-    <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"Aprendiste a deslizar el dedo desde la derecha para volver. Ahora, descubre cómo cambiar de app."</string>
+    <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"Ya sabes deslizar el dedo desde la derecha para ir atrás. Ahora, descubre cómo cambiar de app."</string>
     <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Completaste el gesto \"Atrás\"."</string>
     <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Asegúrate de no hacerlo muy cerca de la parte inferior de la pantalla."</string>
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Cambia sensibilidad de gesto \"Atrás\" en Configuración"</string>
-    <string name="back_gesture_intro_title" msgid="19551256430224428">"Desliza el dedo para volver"</string>
-    <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Desliza el dedo desde el borde derecho o izquierdo para volver a la última pantalla."</string>
+    <string name="back_gesture_intro_title" msgid="19551256430224428">"Desliza para ir atrás"</string>
+    <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Desliza el dedo desde el borde derecho o izquierdo hasta el centro para volver a la última pantalla."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Para volver la pantalla anterior, desliza 2 dedos desde el borde izquierdo o derecho hacia el centro de la pantalla."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Atrás"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Desliza el dedo hacia arriba desde el borde inferior de la pantalla."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Asegúrate de no detenerte antes de soltarlo."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Desliza el dedo directamente hacia arriba."</string>
-    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Completaste el gesto para ir a la página principal. A continuación, obtén información para volver."</string>
+    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Completaste el gesto para ir a la página principal. Ahora, descubre cómo ir hacia atrás."</string>
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Completaste el gesto para ir a la página principal."</string>
-    <string name="home_gesture_intro_title" msgid="836590312858441830">"Desliza el dedo para ir a la página principal"</string>
-    <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Desliza el dedo hacia arriba desde la parte inferior de la pantalla. Este gesto te llevará siempre a la pantalla principal."</string>
+    <string name="home_gesture_intro_title" msgid="836590312858441830">"Desliza para ir a la página principal"</string>
+    <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Desliza hacia arriba desde la parte inferior de la pantalla. Este gesto te llevará a la pantalla principal."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Desliza hacia arriba desde la parte inferior. Este gesto te llevará siempre a la pantalla principal."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Ir a la pantalla principal"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Para ir a la pantalla principal en cualquier momento, desliza desde la parte inferior de la pantalla"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Desliza el dedo hacia arriba desde el borde inferior de la pantalla."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Prueba mantener presionada la ventana más tiempo antes de soltarla."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Desliza el dedo directamente hacia arriba y luego detente."</string>
     <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Ya sabes cómo usar los gestos. Para desactivarlos, ve a Configuración."</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Completaste el gesto para cambiar de app."</string>
-    <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Desliza el dedo para cambiar de app"</string>
-    <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Para cambiar de app, desliza hacia arriba desde parte inferior, mantén presionado y, luego, suelta."</string>
+    <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Desliza para cambiar de app"</string>
+    <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Desliza el dedo hacia arriba desde la parte inferior, mantenlo presionado y suéltalo."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Para alternar entre apps, desliza el dedo hacia arriba, mantén presionado y, luego, suelta."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Cambiar de app"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Listo"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Listo"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Configuración"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"¡Genial!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Instructivo <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Todo listo"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Desliza el dedo hacia arriba para ir a la pantalla principal"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Ya puedes empezar a usar tu teléfono"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Desliza el dedo hacia arriba para ir a la página principal"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Presiona el botón de inicio para ir a la pantalla principal"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Ya puedes comenzar a usar tu <xliff:g id="DEVICE">%1$s</xliff:g>."</string>
+    <string name="default_device_name" msgid="6660656727127422487">"dispositivo"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Configuración de navegación del sistema"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Compartir"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Captura de pantalla"</string>
     <string name="action_split" msgid="2098009717623550676">"Pantalla dividida"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Presiona otra app para usar la pantalla dividida"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"La app no es compatible con la función de pantalla dividida."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Presiona otra app para usar la pantalla dividida"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Elige otra app para usar la pantalla dividida"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"La app o tu organización no permiten realizar esta acción"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"¿Omitir el instructivo de navegación?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Puedes encontrarlo en la app de <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Cancelar"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Omitir"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Girar pantalla"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Se abrió la barra de herramientas Educación"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Se cerró la barra de herramientas Educación"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Usa la barra de tareas para cambiar de app"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Arrastra a un lado para usar dos apps a la vez"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Mantén presionado para ocultar la barra de tareas"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Siguiente"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Atrás"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Información sobre la barra de tareas"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Arrastra una app a un lado para usar 2 apps a la vez"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Desliza despacio hacia arriba para ver la Barra de tareas"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Recibe sugerencias de aplicaciones basadas en tu rutina"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Activa la navegación por gestos en la Configuración y la Barra de tareas se ocultará sola"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Aprovecha mejor la Barra de tareas"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Cerrar"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Listo"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Botón de inicio"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Recientes"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Notificaciones"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Config. rápida"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Barra de tareas"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Barra de tareas visible"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Barra de tareas oculta"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Barra de navegación"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Ver siempre la Barra de tareas"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Cambiar el modo de navegación"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Divisor de la Barra de tareas"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Mover a la parte superior o izquierda"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Mover a la parte inferior o derecha"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Mostrar # app más.}other{Mostrar # apps más.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> y <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-es/strings.xml b/quickstep/res/values-es/strings.xml
index b5dc6e6..06078e3 100644
--- a/quickstep/res/values-es/strings.xml
+++ b/quickstep/res/values-es/strings.xml
@@ -33,9 +33,8 @@
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"Predicción de aplicaciones"</string>
     <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Obtén sugerencias de aplicaciones en la fila inferior de la pantalla de inicio"</string>
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Recibe sugerencias de aplicaciones en la fila de aplicaciones favoritas de la pantalla de inicio"</string>
-    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Accede fácilmente a las aplicaciones que más usas desde la pantalla de inicio. Las sugerencias cambiarán según tus hábitos. Las aplicaciones de la fila inferior pasarán a mostrarse en la pantalla de inicio."</string>
+    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Accede fácilmente a las aplicaciones que más usas desde la pantalla de inicio. Las sugerencias cambiarán según tus hábitos. Las aplicaciones de la fila inferior que tengas ahora se moverán hacia arriba en la pantalla de inicio."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Accede fácilmente a las aplicaciones que más usas desde la pantalla de inicio. Las sugerencias cambiarán según tus hábitos. Las aplicaciones de la fila de aplicaciones favoritas se moverán a la pantalla de inicio."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Accede fácilmente a las aplicaciones que más usas desde la pantalla de inicio. Las sugerencias cambiarán según tus hábitos. Las aplicaciones de la fila inferior se pondrán en una carpeta nueva."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Sí, obtener sugerencias"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"No, gracias"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Ajustes"</string>
@@ -45,56 +44,64 @@
     <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"Sugerencias de aplicaciones habilitadas"</string>
     <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"Las sugerencias de aplicaciones están inhabilitadas"</string>
     <string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Aplicación sugerida: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
-    <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Desliza el dedo desde el borde derecho o izquierdo de la pantalla."</string>
-    <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"Desliza el dedo desde el borde derecho o izquierdo de la pantalla hasta el centro y luego levántalo."</string>
+    <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Asegúrate de deslizar el dedo desde el borde derecho o izquierdo de la pantalla."</string>
+    <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"Asegúrate de deslizar el dedo desde el borde derecho o izquierdo de la pantalla hasta el centro y luego levántalo."</string>
     <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"Ya sabes deslizar el dedo desde la derecha para ir atrás. Descubre ahora cómo cambiar de aplicación."</string>
     <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Has completado el gesto para volver."</string>
     <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"No deslices el dedo demasiado cerca de la parte inferior de la pantalla."</string>
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Para cambiar la sensibilidad del gesto, ve a Ajustes"</string>
-    <string name="back_gesture_intro_title" msgid="19551256430224428">"Desliza el dedo para volver"</string>
+    <string name="back_gesture_intro_title" msgid="19551256430224428">"Desliza para ir atrás"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Para volver a la última pantalla, desliza el dedo desde un lateral de la pantalla hasta el centro."</string>
-    <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Desliza el dedo hacia arriba desde el borde inferior de la pantalla."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Para volver a la pantalla anterior, desliza dos dedos desde el borde izquierdo o derecho hacia el centro de la pantalla."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Volver"</string>
+    <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Asegúrate de deslizar el dedo hacia arriba desde el borde inferior de la pantalla."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"No hagas ninguna pausa antes de levantar el dedo."</string>
-    <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Desliza el dedo directamente hacia arriba."</string>
-    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Has completado el gesto para ir a la pantalla de inicio. Ahora, descubre cómo volver."</string>
+    <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Asegúrate de deslizar el dedo hacia arriba."</string>
+    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Has completado el gesto para ir a la pantalla de inicio. Ahora, descubre cómo ir hacia atrás."</string>
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Has completado el gesto para ir a la pantalla de inicio."</string>
-    <string name="home_gesture_intro_title" msgid="836590312858441830">"Desliza el dedo para ir a la pantalla de inicio"</string>
-    <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Desliza hacia arriba desde la parte inferior. Con este gesto, siempre irás a la pantalla de inicio."</string>
-    <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Desliza el dedo hacia arriba desde el borde inferior de la pantalla."</string>
+    <string name="home_gesture_intro_title" msgid="836590312858441830">"Desliza para ir a la pantalla de inicio"</string>
+    <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Desliza hacia arriba desde la parte inferior de la pantalla. Este gesto siempre te lleva a la pantalla de inicio."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Desliza dos dedos hacia arriba desde la parte inferior de la pantalla. Si haces este gesto, siempre irás a la pantalla de inicio."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Ir a Inicio"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Para ir a la pantalla de inicio, desliza el dedo hacia arriba desde la parte inferior de la pantalla"</string>
+    <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Asegúrate de deslizar el dedo hacia arriba desde el borde inferior de la pantalla."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Prueba a mantener pulsada la ventana durante más tiempo antes de soltarla."</string>
-    <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Desliza el dedo directamente hacia arriba y luego mantenlo pulsado."</string>
-    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Ya sabes cómo utilizar gestos. Para desactivarlos, ve a Configuración."</string>
+    <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Asegúrate de deslizar el dedo directamente hacia arriba y luego mantenlo pulsado."</string>
+    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Ya sabes cómo utilizar gestos. Para desactivarlos, ve a Ajustes."</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Has completado el gesto para cambiar de aplicación."</string>
-    <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Deslizar el dedo para cambiar de aplicación"</string>
-    <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Para cambiar de app, desliza el dedo hacia arriba desde el borde inferior y no lo levantes enseguida."</string>
+    <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Desliza el dedo para cambiar de aplicación"</string>
+    <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Para cambiar de aplicación, desliza el dedo hacia arriba desde el borde inferior, mantenlo pulsado y suéltalo"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Para cambiar de app, desliza dos dedos hacia arriba desde el borde inferior, mantén pulsada la pantalla y, luego, suelta."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Cambiar de aplicación"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Todo listo"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Hecho"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Ajustes"</string>
-    <string name="gesture_tutorial_try_again" msgid="65962545858556697">"Vuélvelo a intentar"</string>
+    <string name="gesture_tutorial_try_again" msgid="65962545858556697">"Vuelve a intentarlo"</string>
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"¡Muy bien!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Tutorial <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"¡Ya está!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Desliza el dedo hacia arriba para ir a la pantalla de inicio"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Ya puedes empezar a usar tu teléfono"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Desliza el dedo hacia arriba para ir a la pantalla de inicio"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Toca el botón de inicio para ir a la pantalla de inicio"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Ya puedes empezar a usar tu <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"dispositivo"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Ajustes de navegación del sistema"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Compartir"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Hacer captura"</string>
     <string name="action_split" msgid="2098009717623550676">"Dividir"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Toca otra aplicación para usar la pantalla dividida"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"La aplicación no admite la pantalla dividida."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Toca otra aplicación para usar la pantalla dividida"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Elige otra app para usar la pantalla dividida"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"No puedes hacerlo porque la aplicación o tu organización no lo permiten"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"¿Saltar tutorial de navegación?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Puedes consultarlo en otro momento en la aplicación <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Cancelar"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Saltar"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Girar la pantalla"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Ha aparecido una nota sobre la barra de tareas"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Nota sobre la barra de tareas cerrada"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Usa la barra de tareas para cambiar de aplicación"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Arrastra hacia un lado para usar dos aplicaciones a la vez"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Mantén pulsada la barra de tareas para ocultarla"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Siguiente"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Atrás"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Información sobre la barra de tareas"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Arrastra una aplicación hacia un lado para usar 2 a la vez"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Desliza hacia arriba lentamente para ver la barra de tareas"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Obtén sugerencias de aplicaciones basadas en tu rutina"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Activa la navegación por gestos en Ajustes para ocultar la barra de tareas automáticamente"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Sácale más partido a la barra de tareas"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Cerrar"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Hecho"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Inicio"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Atrás"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"Interruptor IME"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Recientes"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Notificaciones"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Ajustes rápidos"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Barra de tareas"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Barra de tareas visible"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Barra de tareas oculta"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Barra de navegación"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Ver siempre Barra de Tareas"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Cambiar el modo de navegación"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Divisor de Barra de Tareas"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Mover arriba/a la izquierda"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Mover abajo/a la derecha"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Mostrar # aplicación más.}other{Mostrar # aplicaciones más.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> y <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-et/strings.xml b/quickstep/res/values-et/strings.xml
index 950263f..0095d51 100644
--- a/quickstep/res/values-et/strings.xml
+++ b/quickstep/res/values-et/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Hankige avakuva lemmikute reale rakenduste soovitusi"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Pääsete enim kasutatavatele rakendustele hõlpsasti juurde otse avakuvalt. Soovitused muutuvad olenevalt teie rutiinist. Alumisel real olevad rakendused teisaldatakse teie avakuvale."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Pääsete enim kasutatavatele rakendustele hõlpsasti juurde otse avakuvalt. Soovitused muutuvad olenevalt teie rutiinist. Lemmikute real olevad rakendused teisaldatakse teie avakuvale."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Pääsete enim kasutatavatele rakendustele hõlpsasti juurde otse avakuvalt. Soovitused muutuvad olenevalt teie rutiinist. Alumisel real olevad rakendused teisaldatakse uude kausta."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Hangi rakenduste soovitusi"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Tänan, ei"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Seaded"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Tagasiliigutuse tundlikkuse muutmiseks avage menüü Seaded"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Tagasiliikumiseks pühkige"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Eelmisele ekraanikuvale naasmiseks pühkige vasakust või paremast servast ekraanikuva keskele."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Eelmisele ekraanikuvale naasmiseks pühkige vasakust või paremast servast kahe sõrmega ekraanikuva keskele."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Tagasiliikumine"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Pühkige kindlasti ekraanikuva alumisest servast üles."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Veenduge, et te enne vabastamist liigutust ei peataks."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Pühkige kindlasti otse üles."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Tegite avakuvale minemise liigutuse."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Pühkige avakuvale minemiseks"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Pühkige ekraani alaosast üles. See liigutus viib teid alati tagasi avakuvale."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Pühkige ekraanikuva alumisest servast 2 sõrmega üles. See liigutus viib teid alati tagasi avakuvale."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Avalehele"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Mis tahes ajal avakuvale liikumiseks pühkige ekraanikuva allosast üles"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Pühkige kindlasti ekraanikuva alumisest servast üles."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Hoidke sõrme aknal pisut kauem, enne kui vabastate."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Pühkige kindlasti otse üles, seejärel peatuge."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Tegite rakenduste vahel vahetamise liigutuse."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Pühkige rakenduste vahetamiseks"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Rakenduste vahel vahetamiseks pühkige ekraanikuva alaosast üles, hoidke ja seejärel vabastage."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Rakenduste vahel vahetamiseks pühkige kuva alaosast kahe sõrmega üles, hoidke ja seejärel vabastage."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Rakenduste vahetamine"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Valmis"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Valmis"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Seaded"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Tubli töö!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Õpetus <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Valmis!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Avakuvale liikumiseks pühkige üles"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Olete valmis oma telefoni kasutama."</string>
+    <string name="allset_hint" msgid="459504134589971527">"Avalehele liikumiseks pühkige üles"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Avakuvale liikumiseks puudutage avakuva nuppu"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Olete valmis oma seadet <xliff:g id="DEVICE">%1$s</xliff:g> kasutama"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"seade"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Süsteemi navigeerimisseaded"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Jaga"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Ekraanipilt"</string>
     <string name="action_split" msgid="2098009717623550676">"Eralda"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Jagatud kuva kasutamiseks puudutage muud rakendust"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Rakendus ei toeta jagatud ekraani."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Jagatud ekraanikuva kasutamiseks puudutage muud rakendust"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Valige jagatud ekraanikuva jaoks muu rakendus"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Rakendus või teie organisatsioon on selle toimingu keelanud"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Kas jätta navigeerimise õpetused vahele?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Leiate selle hiljem rakendusest <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Tühista"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Jäta vahele"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Pöörake ekraani"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Tegumiriba juhised kuvati"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Tegumiriba juhised on suletud"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Kasutage rakenduste vahetamiseks tegumiriba"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Kahe rakenduse korraga kasutamiseks lohistage külje poole"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Tegumiriba peitmiseks puudutage pikalt"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Järgmine"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Tagasi"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Tegumiriba tutvustus"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"2 rakenduse korraga kasutamiseks lohistage rakendus kõrvale"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Tegumiriba kuvamiseks pühkige aeglaselt üles"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Hankige oma rutiini põhjal rakenduste soovitusi"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Tegumiriba automaatseks peitmiseks lülitage seadetes sisse liigutustega navigeerimine"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Tehke tegumiriba abil enamat"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Sule"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Valmis"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Avaleht"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Tagasi"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME vahetaja"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Hiljutised"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Märguanded"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Kiirseaded"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Tegumiriba"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Tegumiriba on kuvatud"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Tegumiriba on peidetud"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigeerimisriba"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Kuva tööriistariba alati"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Navigeerimisrežiimi muutmine"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Tegumiriba jagaja"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Teisalda üles/vasakule"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Teisalda alla/paremale"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Kuva veel # rakendus.}other{Kuva veel # rakendust.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> ja <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-eu/strings.xml b/quickstep/res/values-eu/strings.xml
index 6193e35..fa624e7 100644
--- a/quickstep/res/values-eu/strings.xml
+++ b/quickstep/res/values-eu/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Jaso aplikazioen iradokizunak hasierako pantailako gogokoen errenkadan"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Atzitu erraz aplikazio erabilienak hasierako pantailatik bertatik. Ohituren arabera aldatuko dira iradokizunak. Hasierako pantailara eramango dira beheko errenkadan dauden aplikazioak."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Atzitu erraz aplikazio erabilienak hasierako pantailatik bertatik. Ohituren arabera aldatuko dira iradokizunak. Gogokoen errenkadako aplikazioak hasierako pantailara eramango ditugu."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Atzitu erraz aplikazio erabilienak hasierako pantailatik bertatik. Ohituren arabera aldatuko dira iradokizunak. Karpeta berri batera eramango dira beheko errenkadan dauden aplikazioak."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Jaso aplikazioen iradokizunak"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Ez, eskerrik asko"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Ezarpenak"</string>
@@ -53,20 +52,27 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Keinuaren sentikortasuna aldatzeko, joan ezarpenetara"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Pasatu hatza atzera egiteko"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Aurreko pantailara itzultzeko, pasatu hatza pantailaren ezkerreko edo eskuineko ertzetik erdialdera."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Aurreko pantailara itzultzeko, pasatu bi hatz pantailaren ezkerreko edo eskuineko ertzetik erdialdera."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Egin atzera"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Ziurtatu hatza pantailaren beheko ertzetik gora pasatzen duzula."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Ziurtatu askatu aurretik ez duzula hatza gelditzen."</string>
-    <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Ziurtatu hatza zuzen gora pasatzen duzula."</string>
+    <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Ziurtatu hatza zuzen pasatzen duzula gora."</string>
     <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Ikasi duzu hasierako pantailara joateko keinua. Jarraian, ikasi atzera egiten."</string>
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Ikasi duzu hasierako pantailara joateko keinua."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Pasatu hatza hasierako pantailara joateko"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Pasatu hatza pantailaren behealdetik gora. Keinu horrek hasierako pantailara eramango zaitu beti."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Pasatu bi hatz pantailaren behealdetik gora. Hasierako pantailara eramango zaitu beti keinu horrek."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Joan hasierako pantailara"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Hasierako pantailara joateko, pasatu hatza pantailaren behealdetik gora"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Ziurtatu hatza pantailaren beheko ertzetik gora pasatzen duzula."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Eduki sakatuta leihoa luzaroago hatza altxatu aurretik."</string>
-    <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Ziurtatu hatza zuzen gora pasatzen duzula; ondoren, gelditu."</string>
+    <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Ziurtatu hatza zuzen pasatzen duzula gora; ondoren, gelditu."</string>
     <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Ikasi duzu keinuak erabiltzen. Keinuak desaktibatzeko, joan ezarpenetara."</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Ikasi duzu aplikazioa aldatzeko keinua."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Pasatu hatza aplikazioa aldatzeko"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Aplikazio batetik bestera joateko, pasatu hatza pantailaren behealdetik gora, eduki pantaila sakatuta eta altxatu hatza."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Aplikazio batetik bestera joateko, pasatu bi hatz pantailaren behealdetik gora, eduki pantaila sakatuta eta altxatu hatza."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Aldatu aplikazioa"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Dena prest"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Eginda"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Ezarpenak"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Ederki!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Tutoriala: <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Dena prest!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Pasatu hatza gora hasierako pantailara joateko"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Prest zaude telefonoa erabiltzen hasteko"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Pasatu hatza gora hasierako pantailara joateko"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Hasierako pantailara joateko, sakatu Hasiera botoia"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Prest zaude <xliff:g id="DEVICE">%1$s</xliff:g> erabiltzen hasteko"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"gailua"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Sisteman nabigatzeko ezarpenak"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Partekatu"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Atera pantaila-argazki bat"</string>
     <string name="action_split" msgid="2098009717623550676">"Zatitu"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Sakatu beste aplikazio bat pantaila zatitzeko"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Aplikazioak ez du onartzen pantaila zatitua."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Sakatu beste aplikazio bat pantaila zatitzeko"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Pantaila zatitua ikusteko, aukeratu beste aplikazio bat"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Aplikazioak edo erakundeak ez du eman ekintza hori gauzatzeko baimena"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Nabigazio-tutoriala saltatu nahi duzu?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"<xliff:g id="NAME">%1$s</xliff:g> aplikazioan dago eskuragarri tutoriala"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Utzi"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Saltatu"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Biratu pantaila"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Agertu egin da zereginen barraren tutoriala"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Itxi egin da zereginen barraren tutoriala"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Erabili zereginen barra aplikazioz aldatzeko"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Bi aplikazio batera erabiltzeko, arrastatu hatza albo batera"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Zereginen barra ezkutatzeko, eduki ezazu sakatuta"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Hurrengoa"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Atzera"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Zereginen barra erabiltzeko argibideak"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Bi aplikazio batera erabiltzeko, arrastatu bat albo batera"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Zereginen barra ikusteko, pasatu hatza gora poliki"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Jaso aplikazioen iradokizunak erabileran oinarrituta"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Zereginen barra automatikoki ezkutatzeko, aktibatu keinu bidezko nabigazioa ezarpenetan"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Egin gauza gehiago zereginen barrarekin"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Itxi"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Eginda"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Hasiera"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Azkenak"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Jakinarazpenak"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Ezarpen bizkorrak"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Zereginen barra"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Zereginen barra ikusgai dago"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Zereginen barra itxita dago"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Nabigazio-barra"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Erakutsi beti zereginen barra"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Aldatu nabigazio modua"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Zereginen barraren zatitzailea"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Eraman gora, ezkerretara"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Eraman behera, eskuinetara"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Erakutsi beste # aplikazio.}other{Erakutsi beste # aplikazio.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> eta <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-fa/strings.xml b/quickstep/res/values-fa/strings.xml
index 2323b3b..e520acd 100644
--- a/quickstep/res/values-fa/strings.xml
+++ b/quickstep/res/values-fa/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"دریافت «پیشنهاد برنامه» در ردیف موارد دلخواه صفحه اصلی"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"به‌راحتی در صفحه اصلی به پرکاربردترین برنامه‌ها دسترسی داشته باشید. پیشنهادها براساس روال‌هایتان تغییر خواهد کرد. برنامه‌های ردیف پایین در صفحه اصلی به بالا منتقل خواهند شد."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"به‌راحتی در صفحه اصلی به پرکاربردترین برنامه‌ها دسترسی داشته باشید. پیشنهادها براساس روال‌هایتان تغییر خواهد کرد. برنامه‌های موجود در ردیف موارد دلخواه به صفحه اصلی منتقل می‌شوند."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"به‌راحتی در صفحه اصلی به پرکاربردترین برنامه‌ها دسترسی داشته باشید. پیشنهادها براساس روال‌هایتان تغییر خواهد کرد. برنامه‌های ردیف پایین به پوشه جدیدی منتقل خواهند شد."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"دریافت پیشنهادهای برنامه"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"نه متشکرم"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"تنظیمات"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"برای تغییر حساسیت اشاره برگشت، به «تنظیمات» بروید"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"تند بکشید تا به‌عقب برگردید"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"برای برگشتن به صفحه آخر، از لبه سمت چپ یا راست تند به وسط صفحه بکشید."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"برای برگشتن به صفحه قبلی، با ۲ انگشت از لبه سمت چپ یا راست تند به‌وسط صفحه بکشید."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"برگشتن"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"دقت کنید که از لبه پایینی صفحه تند به بالا بکشید."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"دقت کنید که تا قبل‌از رها کردن، کشیدن را متوقف نکنید."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"دقت کنید که مستقیماً تند به بالا بکشید."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"اشاره رفتن به «صفحه اصلی» را تکمیل کردید."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"تند کشیدن برای رفتن به صفحه اصلی"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"از پایین صفحه، تند به‌سمت بالا بکشید. این اشاره همیشه شما را به صفحه اصلی می‌برد."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"با ۲ انگشت از پایین صفحه تند به‌بالا بکشید. این اشاره همیشه شما را به صفحه اصلی می‌برد."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"رفتن به صفحه اصلی"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"برای رفتن به صفحه اصلی در هر زمانی، از پایین صفحه تند به‌بالا بکشید"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"دقت کنید که از لبه پایینی صفحه تند به بالا بکشید."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"سعی کنید قبل‌از رها کردن، پنجره را برای مدت طولانی‌تری نگه دارید."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"دقت کنید که مستقیماً تند به بالا بکشید و سپس توقف کنید."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"اشاره جابه‌جا شدن بین برنامه‌ها را تکمیل کردید."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"برای جابه‌جا شدن بین برنامه‌ها، تند به‌بالا بکشید"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"برای جابه‌جا شدن بین برنامه‌ها، از پایین صفحه تند به‌بالا بکشید، نگه دارید، و سپس رها کنید."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"برای جابه‌جایی بین برنامه‌ها، با ۲ انگشت از پایین صفحه تند به‌بالا بکشید، نگه دارید، و سپس رها کنید."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"جابه‌جایی بین برنامه‌ها"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"همه چیز آماده است"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"تمام"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"تنظیمات"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"عالی!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"آموزش گام‌به‌گام <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"همه چیز آماده است!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"برای رفتن به «صفحه اصلی»، تند به‌بالا بکشید"</string>
-    <string name="allset_description" msgid="6350320429953234580">"آماده‌اید از تلفنتان استفاده کنید"</string>
+    <string name="allset_hint" msgid="459504134589971527">"برای رفتن به صفحه اصلی، تند به‌بالا بکشید"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"برای رفتن به صفحه اصلی، روی دکمه صفحه اصلی ضربه بزنید"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"آماده‌اید از <xliff:g id="DEVICE">%1$s</xliff:g> خود استفاده کنید"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"دستگاه"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"تنظیمات پیمایش سیستم"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"هم‌رسانی"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"نماگرفت"</string>
     <string name="action_split" msgid="2098009717623550676">"دونیمه"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"برای استفاده از صفحهٔ دونیمه، روی برنامه دیگری ضربه بزنید"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"برنامه از صفحهٔ دونیمه پشتیبانی نمی‌کند."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"زدن روی برنامه‌ای دیگر برای استفاده از صفحه دونیمه"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"انتخاب برنامه‌ای دیگر برای استفاده از صفحه دونیمه"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"برنامه یا سازمان شما اجازه نمی‌دهد این کنش انجام شود."</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"آموزش گام‌به‌گام پیمایش رد شود؟"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"می‌توانید آن را بعداً در برنامه <xliff:g id="NAME">%1$s</xliff:g> پیدا کنید"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"لغو"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"رد شدن"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"چرخاندن صفحه"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"پانل آموزشی نوار وظیفه نمایان شد"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"پانل آموزشی نوار وظیفه بسته شد"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"برای جابه‌جایی بین برنامه‌ها، از نوار وظیفه استفاده کنید"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"برای استفاده هم‌زمان از دو برنامه، آن را به کنار بکشید"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"برای پنهان کردن نوار وظیفه، لمس کنید و نگه دارید"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"بعدی"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"برگشت"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"آموزش نوار وظیفه"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"برای استفاده هم‌زمان از ۲ برنامه، یک برنامه را به کناری بکشید"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"برای نمایش «نوار وظیفه»، انگشتتان را آهسته به‌بالا بکشید"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"براساس روال‌هایتان، پیشنهاد برنامه دریافت کنید"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"برای پنهان‌سازی خودکار «نوار وظیفه»، پیمایش اشاره‌ای را در «تنظیمات» روشن کنید"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"با «نوار وظیفه» می‌توانید کارهای بیشتر انجام دهید"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"بستن"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"تمام"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"صفحه اصلی"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"موارد اخیر"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"اعلان‌ها"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"تنظیمات فوری"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"نوار وظیفه"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"نوار وظیفه نمایان است"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"نوار وظیفه پنهان است"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"نوار پیمایش"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"نوار وظیفه همیشه نشان داده شود"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"تغییر حالت پیمایش"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"جداکننده نوار وظیفه"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"انتقال به بالا/ چپ"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"انتقال به پایین/ راست"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{نمایش # برنامه دیگر.}one{نمایش # برنامه دیگر.}other{نمایش # برنامه دیگر.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> و <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-fi/strings.xml b/quickstep/res/values-fi/strings.xml
index 9505039..5c04d68 100644
--- a/quickstep/res/values-fi/strings.xml
+++ b/quickstep/res/values-fi/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Näytä sovellusehdotuksia aloitusnäytön Suosikit-rivillä"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Voit avata käytetyimmät sovellukset kätevästi aloitusnäytöltä. Ehdotukset muuttuvat rutiiniesi perusteella. Alimmalla rivillä olevat sovellukset siirretään aloitusnäytön yläosaan."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Voit avata käytetyimmät sovellukset kätevästi aloitusnäytöltä. Ehdotukset muuttuvat rutiiniesi perusteella. Suosikit-rivillä olevat sovellukset siirretään aloitusnäytölle."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Voit avata käytetyimmät sovellukset kätevästi aloitusnäytöltä. Ehdotukset muuttuvat rutiiniesi perusteella. Alimmalla rivillä olevat sovellukset siirretään uuteen kansioon."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Näytä sovellusehdotuksia"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Ei kiitos"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Asetukset"</string>
@@ -53,13 +52,18 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Voit muuttaa Takaisin-eleen herkkyyttä asetuksista"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Siirry takaisin pyyhkäisemällä"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Voit palata edelliseen näkymään pyyhkäisemällä näytön vasemmasta tai oikeasta reunasta keskelle."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Palaa takaisin edelliselle näytölle pyyhkäisemällä kahdella sormella vasemmasta tai oikeasta reunasta näytön keskikohtaan."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Takaisin"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Pyyhkäise ylös näytön alareunasta."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Varo keskeyttämästä ennen kuin päästät irti."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Muista pyyhkäistä suoraan ylöspäin."</string>
-    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Olet oppinut aloitusnäytölle palaamiseleen. Opettele seuraavaksi siirtymään takaisin."</string>
-    <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Olet oppinut aloitusnäytölle palaamiseleen."</string>
+    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Olet oppinut aloitusnäytölle palaamisen eleen. Opettele seuraavaksi siirtymään takaisin."</string>
+    <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Olet oppinut aloitusnäytölle palaamisen eleen."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Siirry aloitusnäytölle pyyhkäisemällä"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Pyyhkäise ylös näytön alareunasta. Tämä ele vie sinut aina aloitusnäytölle."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Pyyhkäise näytön alareunasta ylöspäin kahdella sormella. Tämä ele vie sinut aina aloitusnäytölle."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Aloitusnäytölle siirtyminen"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Voit siirtyä aloitusnäytölle milloin tahansa pyyhkäisemällä ylös näytön alareunasta"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Pyyhkäise ylös näytön alareunasta."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Kokeile pitää ikkunaa painettuna pidempään ennen kuin päästät irti."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Muista pyyhkäistä suoraan ylöspäin ja keskeytä sitten."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Olet oppinut sovellusten vaihtamiseleen."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Vaihda sovellusta pyyhkäisemällä"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Voit vaihtaa sovelluksesta toiseen pyyhkäisemällä ylöspäin näytön alareunasta ja päästämällä sitten irti."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Vaihda sovelluksia pyyhkäisemällä ylös näytön alareunasta kahdella sormella ja päästä sitten irti."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Sovelluksen vaihtaminen"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Valmista"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Valmis"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Asetukset"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Hienoa!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Ohje <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Valmis"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Siirry aloitusnäytölle pyyhkäisemällä ylös"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Olet valmis aloittamaan puhelimen käytön"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Siirry aloitusnäytölle pyyhkäisemällä ylös"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Siirry aloitusnäytölle napauttamalla aloitusnäyttöpainiketta"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"<xliff:g id="DEVICE">%1$s</xliff:g> on nyt valmis käytettäväksi"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"Laite"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Järjestelmän navigointiasetukset"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Jaa"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Kuvakaappaus"</string>
     <string name="action_split" msgid="2098009717623550676">"Jaa"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Avaa jaettu näyttö napauttamalla toista sovellusta"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Sovellus ei tue jaetun näytön tilaa."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Avaa jaettu näyttö napauttamalla toista sovellusta"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Käytä jaettua näyttöä valitsemalla toinen sovellus"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Sovellus tai organisaatio ei salli tätä toimintoa"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Ohitetaanko navigointiohje?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Löydät tämän myöhemmin sovelluksesta: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Peru"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Ohita"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Käännä näyttö"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Tehtäväpalkin ohje näkyvissä"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Tehtäväpalkin ohje suljettu"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Vaihda sovellusta tehtäväpalkin kautta"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Vetämällä sivuun voit käyttää kahta sovellusta samaan aikaan"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Piilota tehtäväpalkki koskettamalla pitkään"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Seuraava"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Takaisin"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Tehtäväpalkin ohje"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Vedä sovellus sivuun, ja voit käyttää kahta sovellusta"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Näytä tehtäväpalkki pyyhkäisemällä ylös hitaasti"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Sovellussuosituksia käytön perusteella"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Laita eleillä navigointi päälle Asetuksista Tehtäväpalkin piilottamiseksi automaattisesti"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Vinkkejä tehtäväpalkin tehokkaampaan käyttöön"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Sulje"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Valmis"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Etusivu"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Takaisin"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME-vaihtopalvelu"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Viimeaikaiset"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Ilmoitukset"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Pika-asetukset"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Tehtäväpalkki"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Tehtäväpalkki näkyvissä"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Tehtäväpalkki piilotettu"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigointipalkki"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Näytä tehtäväpalkki aina"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Vaihda navigointitilaa"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Tehtäväpalkin jakaja"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Siirrä ylös tai vasemmalle"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Siirrä alas tai oikealle"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Näytä # muu sovellus.}other{Näytä # muuta sovellusta.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> ja <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-fr-rCA/strings.xml b/quickstep/res/values-fr-rCA/strings.xml
index e34cb5d..56e5047 100644
--- a/quickstep/res/values-fr-rCA/strings.xml
+++ b/quickstep/res/values-fr-rCA/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Retrouvez des suggestions d\'applications dans la rangée des favoris de votre écran d\'accueil"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Accédez facilement aux applications que vous utilisez le plus, directement à l\'écran d\'accueil. Les suggestions changeront en fonction de vos habitudes. Les applications dans la rangée du bas seront déplacées vers votre écran d\'accueil."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Accédez facilement aux applications que vous utilisez le plus, directement à l\'écran d\'accueil. Les suggestions changeront en fonction de vos habitudes. Les applications dans la rangée des favoris seront déplacées vers votre écran d\'accueil."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Accédez facilement aux applications que vous utilisez le plus, directement à l\'écran d\'accueil. Les suggestions changeront en fonction de vos habitudes. Les applications dans la rangée du bas seront déplacées vers un nouveau dossier."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Obtenir des suggestions d\'applications"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Non merci"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Paramètres"</string>
@@ -51,50 +50,58 @@
     <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Vous avez appris le geste de retour en arrière."</string>
     <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Assurez-vous de ne pas balayer trop près du bas de l\'écran."</string>
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Modifiez la sensibilité du geste de retour dans Paramètres"</string>
-    <string name="back_gesture_intro_title" msgid="19551256430224428">"Balayer l\'écran pour revenir en arrière"</string>
+    <string name="back_gesture_intro_title" msgid="19551256430224428">"Balayez l\'écran pour revenir en arrière"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Pour revenir à l\'écran précédent, balayez l\'écran de l\'extrémité gauche ou droite vers le centre."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Pour revenir à l\'écran précédent, balayez l\'écran avec deux doigts du bord gauche ou droit jusqu\'au centre."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Retour"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Assurez-vous de balayer l\'écran à partir de l\'extrémité inférieure vers le haut."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Assurez-vous de ne pas interrompre le geste avant de lever le doigt."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Assurez-vous de balayer l\'écran en ligne droite vers le haut."</string>
     <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Vous avez appris le geste de retour à l\'écran d\'accueil. Maintenant, apprenez à revenir en arrière."</string>
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Vous avez appris le geste de retour à l\'écran d\'accueil."</string>
-    <string name="home_gesture_intro_title" msgid="836590312858441830">"Balayer pour revenir à l\'écran d\'accueil"</string>
+    <string name="home_gesture_intro_title" msgid="836590312858441830">"Balayez pour revenir à l\'écran d\'accueil"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Balayez l\'écran du bas vers le haut. Ce geste vous ramène toujours à l\'écran d\'accueil."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Balayez l\'écran de bas en haut avec deux doigts. Ce geste vous ramène toujours à l\'écran d\'accueil."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Retour à la page d\'accueil"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Pour accéder à votre écran d\'accueil à tout moment, balayez l\'écran du bas vers le haut"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Assurez-vous de balayer l\'écran à partir de l\'extrémité inférieure vers le haut."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Essayez de tenir la fenêtre plus longtemps avant de relâcher."</string>
-    <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Assurez-vous de balayer l\'écran vers le haut, puis de faire une pause."</string>
+    <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Assurez-vous de balayer l\'écran en ligne droite vers le haut, puis de faire une pause."</string>
     <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Vous avez appris à utiliser les gestes. Pour les désactiver, accédez au menu Paramètres."</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Vous avez appris le geste de changement d\'application."</string>
-    <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Balayer pour basculer entre les applications"</string>
-    <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Pour passer d\'une application à l\'autre, balayez l\'écran de bas en haut, maintenez la pression, puis relâchez."</string>
+    <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Balayez pour basculer entre les applications"</string>
+    <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Pour changer d\'application, balayez l\'écran de bas en haut, maintenez le doigt, puis relâchez-le."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Pour changer d\'appli, balayez l\'écran de bas en haut avec deux doigts, maintenez-les et relâchez-les."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Changer d\'application"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Terminé"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"OK"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Paramètres"</string>
-    <string name="gesture_tutorial_try_again" msgid="65962545858556697">"Réessayer"</string>
+    <string name="gesture_tutorial_try_again" msgid="65962545858556697">"Réessayez"</string>
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Bien!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Étape <xliff:g id="CURRENT">%1$d</xliff:g> sur <xliff:g id="TOTAL">%2$d</xliff:g> du tutoriel"</string>
     <string name="allset_title" msgid="5021126669778966707">"Tout est prêt!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Balayez l\'écran vers le haut pour accéder à l\'écran d\'accueil"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Vous êtes maintenant prêt à utiliser votre téléphone"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Balayez l\'écran vers le haut pour accéder à l\'écran d\'accueil"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Toucher le bouton d\'accueil pour passer sur votre écran d\'accueil"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Vous êtes maintenant prêt à utiliser votre <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"appareil"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Paramètres de navigation du système"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Partager"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Capture d\'écran"</string>
-    <string name="action_split" msgid="2098009717623550676">"Séparé"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Touchez une autre appli pour partager l\'écran"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"L\'appli n\'est pas compatible avec l\'écran partagé."</string>
+    <string name="action_split" msgid="2098009717623550676">"Partager"</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Toucher une autre appli pour partager l\'écran"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Choisir une autre application pour utiliser l\'écran partagé"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"L\'application ou votre organisation n\'autorise pas cette action"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Ignorer le tutoriel sur la navigation?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Vous trouverez le tutoriel dans l\'application <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Annuler"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Ignorer"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Faire pivoter l\'écran"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"La barre des tâches éducatives s\'est affichée"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"La barre des tâches éducatives est fermée"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Utilisez la barre des tâches pour changer les applications"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Glissez sur le côté pour utiliser 2 applications à la fois"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Maintenez le doigt sur la barre des tâches pour la masquer"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Suivant"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Retour"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Informations sur la barre des tâches"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Pour utiliser deux applis, faites-les glisser vers le côté"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Balayez lent. vers le haut pour afficher la barre des tâches"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Obtenez des suggestions d\'applis en fonction de vos routines"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Activez la navigation par gestes dans Paramètres pour masquer auto. la barre des tâches"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Faites-en plus avec la barre des tâches"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Fermer"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"OK"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Accueil"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Retour"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"Sélecteur IME"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Récents"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Notifications"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Paramètres rapides"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Barre des tâches"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Barre des tâches affichée"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Barre des tâches masquée"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Barre de navigation"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Touj. afficher barre des tâches"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Changer de mode de navigation"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Séparateur de la barre des tâches"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Déplacer vers le coin supérieur gauche de l\'écran"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Déplacer vers le coin inférieur droit de l\'écran"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Afficher # autre application.}one{Afficher # autre application.}other{Afficher # autres applications.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> et <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-fr/strings.xml b/quickstep/res/values-fr/strings.xml
index 3c28c46..31068f7 100644
--- a/quickstep/res/values-fr/strings.xml
+++ b/quickstep/res/values-fr/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Retrouvez des suggestions d\'applications dans la zone des favoris de votre écran d\'accueil"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Les suggestions d\'applications permettent d\'afficher vos applications favorites au bas de votre écran d\'accueil. Elles s\'adaptent à vos habitudes d\'utilisation. Les icônes auparavant affichées au bas de l\'écran seront déplacées vers le haut."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Accédez facilement aux applications dont vous vous servez le plus, directement depuis l\'écran d\'accueil. Ces suggestions peuvent varier en fonction de vos habitudes d\'utilisation. Les applications de la zone des favoris seront transférées sur votre écran d\'accueil."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Les suggestions d\'applications permettent d\'afficher vos applications favorites au bas de votre écran d\'accueil. Elles s\'adaptent à vos habitudes d\'utilisation. Les icônes auparavant affichées au bas de l\'écran seront placées dans un nouveau dossier."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Activer les suggestions"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Non, merci"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Paramètres"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Modifiez la sensibilité du geste retour dans les paramètres"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Balayez l\'écran pour revenir en arrière"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Pour revenir à l\'écran précédent, balayez l\'écran depuis le bord droit ou gauche jusqu\'au centre."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Pour revenir au dernier écran, balayez l\'écran avec deux doigts en partant du bord gauche ou droit vers le milieu."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Retour"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Veillez à balayer l\'écran de bas en haut."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Veillez à ne pas marquer de pause dans votre geste avant de relever le doigt."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Veillez à balayer l\'écran vers le haut."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Vous avez appris le geste pour revenir à l\'écran d\'accueil."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Balayez pour revenir à l\'écran d\'accueil"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Balayez l\'écran de bas en haut. Ce geste vous ramènera toujours à l\'écran d\'accueil."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Balayez l\'écran de bas en haut avec 2 doigts. Ce geste vous ramènera toujours à l\'écran d\'accueil."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Retour à l\'accueil"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Pour accéder à l\'écran d\'accueil à tout moment, balayez l\'écran du bas vers le haut"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Veillez à balayer l\'écran de bas en haut."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Essayez d\'appuyer plus longtemps sur la fenêtre avant de relever le doigt."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Veillez à balayer l\'écran vers le haut, puis à marquer une pause."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Vous avez appris le geste pour passer d\'une appli à l\'autre."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Balayez pour passer d\'une appli à l\'autre"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Pour changer d\'appli, balayez l\'écran de bas en haut, appuyez de manière prolongée et relâchez."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Pour changer d\'appli, balayez l\'écran de bas en haut avec deux doigts, maintenez appuyé et relâchez."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Changer d\'appli"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Vous avez terminé"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"OK"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Paramètres"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Bravo !"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Tutoriel <xliff:g id="CURRENT">%1$d</xliff:g> sur <xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Tout est prêt !"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Balayez l\'écran vers le haut pour revenir à l\'accueil"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Vous pouvez maintenant utiliser votre téléphone"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Balayez l\'écran vers le haut pour revenir à l\'accueil"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Appuyez sur le bouton d\'accueil pour accéder à votre écran d\'accueil"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Vous pouvez maintenant utiliser votre <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"appareil"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Paramètres de navigation système"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Partager"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Capture d\'écran"</string>
     <string name="action_split" msgid="2098009717623550676">"Partager"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Appuyez sur autre appli pour utiliser écran partagé"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Appli incompatible avec l\'écran partagé."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Appuyez sur autre appli pour l\'écran partagé"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Sélect. autre appli pour utiliser l\'écran partagé"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Cette action n\'est pas autorisée par l\'application ou par votre organisation"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Ignorer le tutoriel de navigation ?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Vous le retrouverez dans l\'appli <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Annuler"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Passer"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Faire pivoter l\'écran"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Infos sur la barre des tâches affichées"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Infos sur la barre des tâches fermées"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Utilisez la barre des tâches pour changer d\'application"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Faites glisser sur côté pour utiliser deux applis à la fois"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Appuyez de manière prolongée pour masquer barre des tâches"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Suivant"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Retour"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Fonctionnement de la barre des tâches"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Faites glisser une appli sur le côté pour en utiliser 2 à la fois"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Balayez lentement vers haut pour afficher barre des tâches"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Obtenez des suggestions d\'applis basées sur vos habitudes"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Activez la navigation par gestes dans paramètres pour masquage auto de la barre des tâches"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Faites-en plus avec la barre des tâches"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Fermer"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"OK"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Accueil"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Retour"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"Sélecteur IME"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Récents"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Notifications"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Réglages rapides"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Barre des tâches"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Barre des tâches affichée"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Barre des tâches masquée"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Barre de navigation"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Toujours voir barre des tâches"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Modifier le mode de navigation"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Séparateur de barre des tâches"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Déplacer en haut ou à gauche"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Déplacer en bas ou à droite"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Afficher # autre appli.}one{Afficher # autre appli.}other{Afficher # autre applis.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> et <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-gl/strings.xml b/quickstep/res/values-gl/strings.xml
index 4095f7d..ebec206 100644
--- a/quickstep/res/values-gl/strings.xml
+++ b/quickstep/res/values-gl/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Recibe suxestións de aplicacións na fila de Favoritos da pantalla de inicio"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Accede facilmente desde a pantalla de inicio ás aplicacións que máis usas. As suxestións irán cambiando en función das túas rutinas. As aplicacións da fila inferior pasarán á pantalla de inicio."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Accede facilmente desde a pantalla de inicio ás aplicacións que máis usas. As suxestións irán cambiando en función das túas rutinas. As aplicacións da fila de Favoritos moveranse á túa pantalla de inicio."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Accede facilmente desde a pantalla de inicio ás aplicacións que máis usas. As suxestións irán cambiando en función das túas rutinas. As aplicacións da fila inferior pasarán a un cartafol novo."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Recibir suxestións de aplicacións"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Non, grazas"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Configuración"</string>
@@ -45,28 +44,35 @@
     <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"As suxestións de aplicacións están activadas"</string>
     <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"As suxestións de aplicacións están desactivadas"</string>
     <string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Aplicación predita: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
-    <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Asegúrate de pasar o dedo desde o bordo dereito ou esquerdo máis afastado."</string>
+    <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Asegúrate de pasar o dedo desde o bordo dereito ou esquerdo."</string>
     <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"Asegúrate de pasar o dedo desde o bordo dereito ou esquerdo ata o medio da pantalla e avanza."</string>
     <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"Aprendiches a pasar o dedo desde a dereita para volver. Agora, aprende a cambiar de aplicación."</string>
     <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Completaches o xesto de volver á última pantalla."</string>
     <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Asegúrate de non pasar o dedo demasiado preto da parte inferior da pantalla."</string>
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Podes cambiar a sensibilidade do xesto en Configuración"</string>
-    <string name="back_gesture_intro_title" msgid="19551256430224428">"Pasar o dedo para volver"</string>
+    <string name="back_gesture_intro_title" msgid="19551256430224428">"Pasa o dedo para volver"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Para volver á última pantalla, pasa o dedo cara ao medio desde o bordo dereito ou esquerdo."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Para volver á última pantalla, pasa 2 dedos desde o bordo esquerdo ou o dereito ata a metade da pantalla."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Atrás"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Asegúrate de pasar o dedo cara arriba desde o bordo inferior da pantalla."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Asegúrate de non facer unha pausa antes de avanzar."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Asegúrate de pasar o dedo cara arriba cun movemento vertical."</string>
     <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Completaches o xesto de ir ao inicio. O próximo é aprender a volver á última pantalla."</string>
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Completaches o xesto de ir ao inicio."</string>
-    <string name="home_gesture_intro_title" msgid="836590312858441830">"Pasar o dedo para ir ao inicio"</string>
+    <string name="home_gesture_intro_title" msgid="836590312858441830">"Pasa o dedo para ir ao inicio"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Pasa o dedo cara arriba desde a parte inferior da pantalla. Ao facelo, irás á pantalla de inicio."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Pasa 2 dedos desde a parte inferior da pantalla. Ao facelo, sempre irás á pantalla de inicio."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Ir á pantalla de inicio"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Para ir á pantalla de inicio, pasa o dedo cara arriba desde a parte inferior da pantalla"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Asegúrate de pasar o dedo cara arriba desde o bordo inferior da pantalla."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Proba a manter premida a pantalla máis tempo antes de soltala."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Asegúrate de pasar o dedo cara arriba cun movemento vertical. Despois, fai unha pausa."</string>
     <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Aprendiches a usar os xestos. Para desactivalos, vai a Configuración."</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Completaches o xesto para cambiar de aplicación."</string>
-    <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Pasar o dedo para cambiar de aplicación"</string>
-    <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Para cambiar de aplicación, pasa o dedo cara arriba desde abaixo, mantén premido e levanta o dedo."</string>
+    <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Pasa o dedo para cambiar de aplicación"</string>
+    <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Para cambiar de aplicación, pasa o dedo cara arriba desde a parte inferior da pantalla, mantén premido e levanta o dedo."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Para cambiar de app, pasa 2 dedos cara arriba desde abaixo, mantén premida a pantalla e levántaos."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Pasar dunha aplicación a outra"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Todo listo"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Feito"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Configuración"</string>
@@ -74,38 +80,46 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Excelente!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Titorial <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Todo listo"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Pasa o dedo cara arriba para ir á pantalla de inicio"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Todo está listo para comezar a utilizar o teléfono"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Pasa o dedo cara arriba para ir á pantalla de inicio"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Toca o botón de inicio para ir á pantalla de inicio"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Xa podes comezar a utilizar o teu dispositivo (<xliff:g id="DEVICE">%1$s</xliff:g>)"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"dispositivo"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Configuración da navegación do sistema"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Compartir"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Facer captura"</string>
     <string name="action_split" msgid="2098009717623550676">"Dividir"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Para usar a pantalla dividida, toca outra app"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"A app non admite a función de pantalla dividida."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Para usar a pantalla dividida, toca outra app"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Escolle outra app para usar a pantalla dividida"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"A aplicación ou a túa organización non permite realizar esta acción"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Queres omitir o titorial de navegación?"</string>
-    <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Podes atopar isto máis tarde na aplicación <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Podes atopalo máis tarde na aplicación <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Cancelar"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Omitir"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Xira a pantalla"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Panel de información de barra de tarefas aberto"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Panel de información de barra de tarefas pechado"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Usa a barra de ferramentas para cambiar de aplicación"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Para usar dúas aplicacións á vez, arrastra cara ao lado"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Mantén premida a barra de tarefas para ocultala"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Seguinte"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Atrás"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Información sobre a función Barra de tarefas"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Arrastra unha aplicación cara a un lado para usar dúas á vez"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Pasa o dedo amodo cara arriba para ver a barra de tarefas"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Obtén suxestións de aplicacións en función da túa rutina"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Activa navegación con xestos en Configuración e oculta automaticamente a barra de tarefas"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Tira máis proveito da barra de tarefas"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Pechar"</string>
-    <string name="taskbar_edu_done" msgid="6880178093977704569">"Feito"</string>
+    <string name="taskbar_edu_done" msgid="6880178093977704569">"Listo"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Inicio"</string>
     <string name="taskbar_button_a11y" msgid="5241161324875094465">"Accesibilidade"</string>
     <string name="taskbar_button_back" msgid="8558862226461164514">"Atrás"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"Selector do IME"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Recentes"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Notificacións"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Configuración rápida"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Barra de tarefas"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Estase mostrando a barra de tarefas"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Non se está mostrando a barra de tarefas"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Barra de navegación"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Manter Barra de tarefas"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Cambiar modo de navegación"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Divisor da Barra de tarefas"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Mover á parte superior ou á esquerda"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Mover á parte inferior ou á dereita"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Mostrar # aplicación máis.}other{Mostrar # aplicacións máis.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> e <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-gu/strings.xml b/quickstep/res/values-gu/strings.xml
index 6bb100a..2e1c289 100644
--- a/quickstep/res/values-gu/strings.xml
+++ b/quickstep/res/values-gu/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"તમારી હોમ સ્ક્રીનની મનપસંદ પંક્તિમાં ઍપના સુઝાવો મેળવો"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"તમારી સૌથી વધુ વપરાતી ઍપને સીધી હોમ સ્ક્રીન પરથી જ સરળતાથી ઍક્સેસ કરો. સૂચનો તમારા રૂટિનના આધારે બદલાશે. નીચેની પંક્તિમાં રહેલી ઍપ તમારી હોમ સ્ક્રીન પર ખસેડાશે."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"તમારી સૌથી વધુ વપરાતી ઍપને સીધી હોમ સ્ક્રીન પરથી જ સરળતાથી ઍક્સેસ કરો. સૂચનો તમારા રૂટિનના આધારે બદલાશે. મનપસંદ પંક્તિમાં રહેલી ઍપ તમારી હોમ સ્ક્રીન પર ખસેડાશે."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"તમારી સૌથી વધુ વપરાતી ઍપને સીધી હોમ સ્ક્રીન પરથી જ સરળતાથી ઍક્સેસ કરો. સૂચનો તમારા રૂટિનના આધારે બદલાશે. નીચેની પંક્તિમાં રહેલી ઍપ નવા ફોલ્ડરમાં ખસેડાશે."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"ઍપ અંગેના સુઝાવો મેળવો"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"ના, આભાર"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"સેટિંગ"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"પાછા જવાના સંકેતની સંવેદિતા બદલવા માટે, સેટિંગમાં જાઓ"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"પાછળ જવા માટે સ્વાઇપ કરો"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"છેલ્લી સ્ક્રીન પર પાછા જવા, ડાબી કે જમણી કિનારીએથી સ્ક્રીનના મધ્ય ભાગ સુધી સ્વાઇપ કરો."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"છેલ્લી સ્ક્રીન પર પાછા જવા માટે, 2 આંગળી વડે ડાબી કે જમણી કિનારીએથી સ્ક્રીનના મધ્ય ભાગ સુધી સ્વાઇપ કરો."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"પાછા જાઓ"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"ખાતરી કરો કે તમે સ્ક્રીનની નીચેની કિનારીએથી ઉપરની તરફ સ્વાઇપ કરો છો."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"ખાતરી કરો કે તમે આંગળી ઊંચકી લેતા પહેલાં સ્વાઇપ કરવાનું થોભાવતા નથી."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"ખાતરી કરો કે તમે સીધું ઉપરની તરફ સ્વાઇપ કરો છો."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"તમે હોમ સ્ક્રીન પર પાછા જવાનો સંકેત પૂર્ણ કર્યો છે."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"હોમ સ્ક્રીન પર જવા માટે સ્વાઇપ કરો"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"તમારી સ્ક્રીનના નીચેના ભાગથી ઉપરની તરફ સ્વાઇપ કરો. આ સંકેત તમને હંમેશાં હોમ સ્ક્રીન પર લઈ જાય છે."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"2 આંગળી વડે સ્ક્રીનના સૌથી નીચેના ભાગથી ઉપરની તરફ સ્વાઇપ કરો. આ સંકેત તમને હંમેશાં હોમ સ્ક્રીન પર લઈ જાય છે."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"હોમ પર જાઓ"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"કોઈપણ સમયે તમારી હોમ સ્ક્રીન પર જવા માટે, તમારી સ્ક્રીનની સૌથી નીચેની બાજુએથી ઉપરની તરફ સ્વાઇપ કરો"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"ખાતરી કરો કે તમે સ્ક્રીનની નીચેની કિનારીએથી ઉપરની તરફ સ્વાઇપ કરો છો."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"તમારી આંગળી ઊંચકતા પહેલાં તેને વિન્ડો પર થોડી વધારે વાર માટે દબાવી રાખવાનો પ્રયાસ કરો."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"ખાતરી કરો કે તમે સીધું ઉપર સ્વાઇપ કરો છો, પછી થોભી જાઓ છો."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"તમે ઍપ સ્વિચ કરવાનો સંકેત પૂર્ણ કર્યો છે."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"ઍપ સ્વિચ કરવા સ્વાઇપ કરો"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"એક ઍપ પરથી બીજી ઍપ પર સ્વિચ કરવા માટે, તમારી સ્ક્રીનના નીચેના ભાગથી ઉપરની તરફ સ્વાઇપ કરીને, થોડીવાર દબાવી રાખો, પછી છોડી દો."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"એક ઍપ પરથી બીજી ઍપ પર સ્વિચ કરવા માટે, 2 આંગળી વડે તમારી સ્ક્રીનના સૌથી નીચેના ભાગથી ઉપરની તરફ સ્વાઇપ કરીને, થોડીવાર દબાવી રાખો, પછી છોડી દો."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"ઍપ સ્વિચ કરો"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"બધું સેટ થઈ ગયું"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"થઈ ગયું"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"સેટિંગ"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"સરસ!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"ટ્યૂટૉરિઅલ <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"બધું સેટ થઈ ગયું!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"હોમપેજ પર જવા માટે ઉપરની તરફ સ્વાઇપ કરો"</string>
-    <string name="allset_description" msgid="6350320429953234580">"તમે તમારા ફોનનો ઉપયોગ કરવા માટે તૈયાર છો"</string>
+    <string name="allset_hint" msgid="459504134589971527">"હોમ પર જવા માટે ઉપરની તરફ સ્વાઇપ કરો"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"તમારી હોમ સ્ક્રીન પર જવા માટે હોમ બટન ટૅપ કરો"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"તમે તમારા <xliff:g id="DEVICE">%1$s</xliff:g>નો ઉપયોગ કરવાનું શરૂ કરવા માટે તૈયાર છો"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"ડિવાઇસ"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"સિસ્ટમના નૅવિગેશન સેટિંગ"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"શેર કરો"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"સ્ક્રીનશૉટ"</string>
     <string name="action_split" msgid="2098009717623550676">"વિભાજિત કરો"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"સ્પલિટસ્ક્રીનના વપરાશ માટે, કોઈ અન્ય ઍપ પર ટૅપ કરો"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"ઍપ સ્ક્રીન-વિભાજનને સપોર્ટ કરતી નથી."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"વિભાજિત સ્ક્રીન વાપરવા, કોઈ અન્ય ઍપ પર ટૅપ કરો"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"સ્ક્રીન વિભાજનનો ઉપયોગ કરવા કોઈ અન્ય ઍપ પસંદ કરો"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"ઍપ કે તમારી સંસ્થા દ્વારા આ ક્રિયા કરવાની મંજૂરી નથી"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"નૅવિગેશન ટ્યૂટૉરિઅલ છોડી દઈએ?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"તમે આને પછીથી <xliff:g id="NAME">%1$s</xliff:g> ઍપમાં જોઈ શકો છો"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"રદ કરો"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"છોડો"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"સ્ક્રીન ફેરવો"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"ટાસ્કબારનું શિક્ષણ આપતી પૅનલ દેખાય છે"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"ટાસ્કબારનું શિક્ષણ આપતી પૅનલ બંધ થઈ છે"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"ઍપ સ્વિચ કરવા માટે, ટાસ્કબારનો ઉપયોગ કરો"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"એક જ સમયે બે ઍપનો ઉપયોગ કરવા માટે, ખેંચીને બાજુ પર લઈ જાઓ"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"ટાસ્કબાર છુપાવવા, તેને ટચ કરીને થોડીવાર દબાવી રાખો"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"આગળ"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"પાછળ"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"ટાસ્કબાર વિશે શિક્ષણ"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"એક સાથે 2 ઍપનો ઉપયોગ કરવા માટે, ઍપને ખેંચીને બાજુ પર લઈ જાઓ"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"ટાસ્કબાર બતાવવા માટે ઉપરની તરફ ધીમેથી સ્વાઇપ કરો"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"તમારા રૂટિનના આધારે ઍપના સુઝાવો મેળવો"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"ટાસ્કબારને ઑટોમૅટિક રીતે છુપાવવા માટે સેટિંગમાં સંકેતથી નૅવિગેશનની સુવિધા ચાલુ કરો"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"ટાસ્કબાર વડે બીજું ઘણું કરો"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"બંધ કરો"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"થઈ ગયું"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"હોમ"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"તાજેતરના"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"નોટિફિકેશન"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"ઝડપી સેટિંગ"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"ટાસ્કબાર"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"ટાસ્કબાર બતાવવામાં આવ્યો"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"ટાસ્કબાર છુપાવવામાં આવ્યો"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"નૅવિગેશન બાર"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"હંમેશાં ટાસ્કબાર બતાવો"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"નૅવિગેશન મોડ બદલો"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"ટાસ્કબાર વિભાજક"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"સૌથી ઉપર ડાબી બાજુએ ખસેડો"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"સૌથી નીચે જમણી બાજુએ ખસેડો"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{વધુ # ઍપ બતાવો.}one{વધુ # ઍપ બતાવો.}other{વધુ # ઍપ બતાવો.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> અને <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-hi/strings.xml b/quickstep/res/values-hi/strings.xml
index 957125a..2dc6603 100644
--- a/quickstep/res/values-hi/strings.xml
+++ b/quickstep/res/values-hi/strings.xml
@@ -19,7 +19,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="recent_task_option_pin" msgid="7929860679018978258">"पिन करना"</string>
+    <string name="recent_task_option_pin" msgid="7929860679018978258">"पिन करें"</string>
     <string name="recent_task_option_freeform" msgid="48863056265284071">"फ़्रीफ़ॉर्म"</string>
     <string name="recents_empty_message" msgid="7040467240571714191">"हाल ही में इस्तेमाल किया गया कोई ऐप्लिकेशन नहीं है"</string>
     <string name="accessibility_app_usage_settings" msgid="6312864233673544149">"ऐप्लिकेशन इस्तेमाल की सेटिंग"</string>
@@ -31,11 +31,10 @@
     <string name="time_left_for_app" msgid="3111996412933644358">"आज <xliff:g id="TIME">%1$s</xliff:g> और चलेगा"</string>
     <string name="title_app_suggestions" msgid="4185902664111965088">"सुझाए गए ऐप्लिकेशन"</string>
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"आपके काम के ऐप्लिकेशन"</string>
-    <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"अपने होम स्क्रीन की सबसे नीचे वाली पंक्ति में ऐप्लिकेशन के सुझाव पाएं"</string>
-    <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"अपने होम स्क्रीन की सबसे नीचे वाली पंक्ति में पसंदीदा ऐप्लिकेशन के सुझाव पाएं"</string>
-    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"आप जिन ऐप्लिकेशन का ज़्यादा इस्तेमाल करते हैं उन्हें सीधा अपने होम स्क्रीन पर पाएं. ऐप्लिकेशन इस्तेमाल करने के आपके रूटीन के हिसाब से सुझाव बदलते रहते हैं. नीचे की पंक्ति के ऐप्लिकेशन होम स्क्रीन पर आ जाएंगे."</string>
+    <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"अपनी होम स्क्रीन की सबसे नीचे वाली पंक्ति में ऐप्लिकेशन के सुझाव पाएं"</string>
+    <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"अपनी होम स्क्रीन की सबसे नीचे वाली पंक्ति में पसंदीदा ऐप्लिकेशन के सुझाव पाएं"</string>
+    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"आपके ज़्यादातर इस्तेमाल किए जाने वाले ऐप्लिकेशन, सीधा अपनी होम स्क्रीन पर पाएं. ऐप्लिकेशन इस्तेमाल करने के आपके रूटीन के हिसाब से सुझाव बदलते रहते हैं. नीचे की पंक्ति के ऐप्लिकेशन होम स्क्रीन पर आ जाएंगे."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"सबसे ज़्यादा इस्तेमाल होने वाले ऐप्लिकेशन सीधे होम स्क्रीन पर देखें. आप ऐप्लिकेशन का कितना इस्तेमाल कर रहे हैं, उसके हिसाब से सुझाव बदलते रहते हैं. आपके पसंदीदा ऐप्लिकेशन, होम स्क्रीन पर नीचे की पंक्ति में दिखाई देंगे."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"सबसे ज़्यादा इस्तेमाल होने वाले ऐप्लिकेशन, सीधे होम स्क्रीन पर पाएं. आपके ऐप्लिकेशन इस्तेमाल करने के रूटीन के हिसाब से सुझाव बदलते रहते हैं. नीचे की पंक्ति के ऐप्लिकेशन एक नए फ़ोल्डर में चले जाएंगे."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"ऐप्लिकेशन के बारे में सुझाव पाएं"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"रहने दें"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"सेटिंग"</string>
@@ -45,28 +44,35 @@
     <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"सुझाए गए ऐप्लिकेशन की सुविधा चालू है"</string>
     <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"सुझाए गए ऐप्लिकेशन की सुविधा बंद है"</string>
     <string name="hotseat_prediction_content_description" msgid="4582028296938078419">"सुझाया गया ऐप्लिकेशन: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
-    <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"पक्का करें कि आप स्क्रीन की दाईं या बाईं ओर के बिल्कुल किनारे से स्वाइप कर रहे हों."</string>
+    <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"देख लें कि आपने स्क्रीन की दाईं या बाईं ओर के बिलकुल किनारे से स्वाइप किया हो."</string>
     <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"स्क्रीन के दाएं या बाएं किनारे से स्क्रीन के बीच तक स्वाइप करें और अपनी उंगली उठा लें."</string>
     <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"आपने स्क्रीन के दाएं किनारे से स्वाइप करके, पिछली स्क्रीन पर वापस जाने का तरीका सीख लिया है. अब, एक ऐप से दूसरे ऐप पर जाने का तरीका सीखें."</string>
     <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"आपने पेज पर पीछे ले जाने वाले हाथ के जेस्चर (हाव-भाव) के बारे में जान लिया है."</string>
-    <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"देख लें कि आप स्क्रीन पर बिल्कुल नीचे तक स्वाइप न कर रहे हों."</string>
+    <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"देख लें कि आप स्क्रीन पर बिलकुल नीचे तक स्वाइप न कर रहे हों."</string>
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"\'सेटिंग\' में जाकर, पीछे जाने के लिए इस्तेमाल होने वाले हाथ के जेस्चर (हाव-भाव) की संवेदनशीलता बदलें"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"पिछली स्क्रीन पर वापस जाने के लिए स्वाइप करें"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"पिछली स्क्रीन पर वापस जाने के लिए, स्क्रीन के बाएं या दाएं किनारे से बीचों-बीच तक स्वाइप करें."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"पिछली स्क्रीन पर वापस जाने के लिए, स्क्रीन के बाएं या दाएं किनारे से स्क्रीन के बीच तक दो उंगलियों से स्वाइप करें."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"वापस जाएं"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"देख लें कि आप स्क्रीन के निचले किनारे से ऊपर की ओर स्वाइप कर रहे हों."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"देख लें कि आप स्क्रीन से अपनी उंगली उठाने से पहले, इसे कहीं न रोक रहे हों."</string>
-    <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"देख लें कि आप ऊपर की ओर बिल्कुल सीधे स्वाइप कर रहे हों."</string>
+    <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"देख लें कि आपने ऊपर की ओर बिलकुल सीधे स्वाइप किया हो."</string>
     <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"आपने होम स्क्रीन पर ले जाने वाले हाथ के जेस्चर के बारे में जान लिया है. अब, वापस जाने का तरीका जानें."</string>
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"आपने होम स्क्रीन पर ले जाने वाले हाथ के जेस्चर (हाव-भाव) के बारे में जान लिया है."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"होम स्क्रीन पर जाने के लिए स्वाइप करें"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"स्क्रीन पर नीचे से ऊपर की ओर स्वाइप करें. हाथ का यह जेस्चर आपको हमेशा होम स्क्रीन पर ले जाता है."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"स्क्रीन के सबसे नीचे से ऊपर की ओर 2 उंगलियों से स्वाइप करें. जेस्चर हमेशा होम स्क्रीन पर ले जाता है."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"होम स्क्रीन पर जाएं"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"किसी भी समय फ़ोन की होम स्क्रीन पर जाने के लिए, फ़ोन पर सबसे नीचे से ऊपर की ओर स्वाइप करें"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"देख लें कि आप स्क्रीन के निचले किनारे से ऊपर की ओर स्वाइप कर रहे हों."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"कोशिश करें कि स्क्रीन से उंगली उठाने से पहले, इसे कुछ देर स्क्रीन पर दबाकर रखें."</string>
-    <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"देख लें कि आप स्क्रीन पर ऊपर की तरफ़, बिल्कुल सीधे स्वाइप कर रहे हों और फिर रुकें."</string>
-    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"आपने हाथ के जेस्चर (हाव-भाव) इस्तेमाल करने सीख लिए हैं. जेस्चर बंद करने के लिए, सेटिंग में जाएं."</string>
+    <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"देख लें कि आप स्क्रीन पर ऊपर की तरफ़, बिलकुल सीधे स्वाइप कर रहे हों और फिर रुकें."</string>
+    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"आपने हाथ के जेस्चर इस्तेमाल करने सीख लिए हैं. जेस्चर बंद करने के लिए, सेटिंग में जाएं."</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"आपने एक ऐप्लिकेशन से दूसरे पर जाने के लिए इस्तेमाल होने वाले हाथ के जेस्चर के बारे में जान लिया है."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"एक ऐप्लिकेशन से दूसरे पर जाने के लिए स्वाइप करें"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"एक ऐप से दूसरे पर जाने के लिए, स्क्रीन पर नीचे से ऊपर की ओर स्वाइप करें, दबाकर रखें, और फिर छोड़ दें."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"इन ऐप के बीच स्विच करने के लिए, दो उंगलियों से नीचे से ऊपर स्वाइप करें, होल्ड करें, और फिर छोड़ें."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"ऐप्लिकेशन के बीच स्विच करें"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"आप पूरी तरह तैयार हैं"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"हो गया"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"सेटिंग"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"बहुत बढ़िया!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"ट्यूटोरियल <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"हो गया!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"होम स्क्रीन पर जाने के लिए, ऊपर की ओर स्वाइप करें"</string>
-    <string name="allset_description" msgid="6350320429953234580">"अब आप अपना फ़ोन इस्तेमाल कर सकते हैं"</string>
+    <string name="allset_hint" msgid="459504134589971527">"होम पेज पर जाने के लिए, ऊपर की ओर स्वाइप करें"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"होम स्क्रीन पर जाने के लिए, होम बटन पर टैप करें"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"अब <xliff:g id="DEVICE">%1$s</xliff:g> इस्तेमाल के लिए तैयार हैं"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"डिवाइस"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"सिस्टम नेविगेशन सेटिंग"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"शेयर करें"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"स्क्रीनशॉट लें"</string>
     <string name="action_split" msgid="2098009717623550676">"स्प्लिट स्क्रीन मोड"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"स्प्लिट स्क्रीन मोड के लिए, दूसरे ऐप पर टैप करें"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"यह ऐप्लिकेशन, स्प्लिट स्क्रीन पर काम नहीं करता है."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"स्प्लिट स्क्रीन के लिए दूसरे ऐप्लिकेशन पर टैप करें"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"स्प्लिट स्क्रीन के लिए, दूसरा ऐप्लिकेशन चुनें"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"ऐप्लिकेशन या आपका संगठन इस कार्रवाई की अनुमति नहीं देता"</string>
-    <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"नेविगेशन ट्यूटोरियल छोड़ना चाहते हैं?"</string>
-    <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"आप बाद में <xliff:g id="NAME">%1$s</xliff:g> ऐप्लिकेशन पर इसे देख सकते हैं"</string>
-    <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"अभी नहीं"</string>
+    <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"क्या आपको अभी नेविगेशन ट्यूटोरियल नहीं देखना है?"</string>
+    <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"इसे बाद में <xliff:g id="NAME">%1$s</xliff:g> ऐप्लिकेशन पर देखा जा सकता है"</string>
+    <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"रद्द करें"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"अभी नहीं"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"स्क्रीन घुमाएं"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"टास्कबार ट्यूटोरियल दिखाया गया"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"टास्कबार ट्यूटोरियल बंद किया गया"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"ऐप्लिकेशन स्विच करने के लिए, टास्कबार का इस्तेमाल करें"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"एक साथ दो ऐप्लिकेशन इस्तेमाल करने के लिए, उन्हें किनारे की ओर खींचें और छोड़ें"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"टास्कबार को छिपाने के लिए, उसे दबाकर रखें"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"आगे बढ़ें"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"वापस जाएं"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"टास्कबार का ट्यूटोरियल"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"किसी ऐप को किनारे की ओर ड्रैग करके 2 ऐप एक साथ इस्तेमाल करें"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"टास्कबार दिखाने के लिए, ऊपर की ओर धीरे से स्वाइप करें"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"डिवाइस के इस्तेमाल के आधार पर ऐप्लिकेशन के सुझाव पाएं"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"टास्कबार अपने-आप छिपाने वाली सुविधा के लिए, सेटिंग में जाकर जेस्चर वाला नेविगेशन चालू करें"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"टास्कबार की मदद से कई और काम करें"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"बंद करें"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"हो गया"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"होम"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"हाल ही के"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"सूचनाएं"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"फटाफट सेटिंग"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"टास्कबार"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"टास्कबार दिखाया गया"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"टास्कबार छिपाया गया"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"नेविगेशन बार"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"टास्कबार हमेशा दिखाएं"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"नेविगेशन का मोड बदलें"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"टास्कबार डिवाइडर"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"ऊपर/बाईं तरफ़ ले जाएं"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"नीचे/दाईं तरफ़ ले जाएं"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{# और ऐप्लिकेशन दिखाएं.}one{# और ऐप्लिकेशन दिखाएं.}other{# और ऐप्लिकेशन दिखाएं.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> और <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-hr/strings.xml b/quickstep/res/values-hr/strings.xml
index 6c29822..2a18704 100644
--- a/quickstep/res/values-hr/strings.xml
+++ b/quickstep/res/values-hr/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Primajte prijedloge aplikacija u retku omiljenih na početnom zaslonu"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Lako pristupite najčešće upotrebljavanim aplikacijama s početnog zaslona. Prijedlozi će se mijenjati na temelju vaših rutina. Aplikacije iz donjeg retka pomaknut će se na početni zaslon."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Lako pristupite najčešće upotrebljavanim aplikacijama s početnog zaslona. Prijedlozi će se mijenjati na temelju vaših rutina. Aplikacije koje se nalaze u retku omiljenih pomaknut će se na početni zaslon."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Lako pristupite najčešće upotrebljavanim aplikacijama s početnog zaslona. Prijedlozi će se mijenjati na temelju vaših rutina. Aplikacije iz donjeg retka pomaknut će se u novu mapu."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Predloži mi aplikacije"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Ne, hvala"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Postavke"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Osjetljivost pokreta povratka promijenite u postavkama"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Prijeđite prstom da biste se vratili"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Za povratak na zadnji zaslon prijeđite prstom od lijevog ili desnog ruba do sredine zaslona."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Da biste se vratili na posljednji zaslon, prijeđite s dva prsta od lijevog ili desnog ruba do sredine zaslona."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Natrag"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Pazite da prijeđete prstom prema gore od donjeg ruba zaslona."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Pazite da ne zastanete prije podizanja prsta."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Pazite da prijeđete prstom ravno prema gore."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Izvršili ste pokret za otvaranje početnog zaslona."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Prijeđite prstom da biste otvorili početni zaslon"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Prijeđite prstom od dna zaslona prema gore. Tim pokretom uvijek će se otvoriti početni zaslon."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Prijeđite s dva prsta od dna zaslona prema gore. Tim pokretom uvijek će se otvoriti početni zaslon."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Otvaranje početnog zaslona"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Da biste otvorili početni zaslon, prijeđite prstom od dna zaslona prema gore"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Pazite da prijeđete prstom prema gore od donjeg ruba zaslona."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Pokušajte zadržati prozor dulje prije podizanja prsta."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Pazite da prijeđete prstom ravno prema gore, a zatim zastanete."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Izvršili ste pokret za promjenu aplikacije."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Povlačenje prstom za promjenu aplikacije"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Za promjenu aplikacije prijeđite prstom od dna zaslona prema gore, zadržite pritisak pa pustite."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Za promjenu aplikacije prijeđite s dva prsta od dna zaslona prema gore, zadržite pritisak i pustite."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Promjena aplikacije"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Sve je spremno"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Gotovo"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Postavke"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Odlično!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Vodič <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Sve je spremno!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Prijeđite prstom prema gore da biste otvorili početni zaslon"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Spremni ste za početak upotrebe telefona"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Prijeđite prstom prema gore da biste otvorili početni zaslon"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Dodirnite gumb početnog zaslona da biste prešli na početni zaslon"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Spremni ste za početak upotrebe uređaja <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"uređaj"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Postavke navigacije sustavom"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Podijeli"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Snimka zaslona"</string>
     <string name="action_split" msgid="2098009717623550676">"Podijeli"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Dodirnite drugu aplikaciju za podijeljeni zaslon"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Aplikacija ne podržava podijeljeni zaslon."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Dodirnite drugu aplikaciju za podijeljeni zaslon"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Odaberite drugu aplikaciju za upotrebu podijeljenog zaslona"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Aplikacija ili vaša organizacija ne dopuštaju ovu radnju"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Želite li preskočiti vodič za kretanje?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Kasnije ga možete pronaći u aplikaciji <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Odustani"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Preskoči"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Zakretanje zaslona"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Upute za programsku traku su se pojavile"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Upute za programsku traku su zatvorene"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Upotrijebite program. traku da biste promijenili aplikaciju"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Povucite u stranu da biste istovremeno koristili dvije aplikacije"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Dodirnite i zadržite da biste sakrili programsku traku"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Dalje"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Natrag"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Upute za traku sa zadacima"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Povucite aplikaciju u stranu radi istodobne upotrebe dviju aplikacija"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Polako prijeđite prstom prema gore za prikaz trake sa zadacima"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Primajte prijedloge aplikacija na temelju svoje rutine"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Uključite navigaciju pokretima u postavkama da bi se traka sa zadacima automatski sakrila"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Učinite više pomoću trake sa zadacima"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Zatvori"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Gotovo"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Početna"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Najnovije"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Obavijesti"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Brze postavke"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Traka sa zadacima"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Traka sa zadacima prikazana"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Traka sa zadacima skrivena"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigacijska traka"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Uvijek prikaži traku zadataka"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Promijeni način navigacije"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Razdjelnik trake sa zadacima"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Premjesti gore/lijevo"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Premjesti dolje/desno"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Prikaži više aplikacija (još #).}one{Prikaži više aplikacija (još #).}few{Prikaži više aplikacija (još #).}other{Prikaži više aplikacija (još #).}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> i <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-hu/strings.xml b/quickstep/res/values-hu/strings.xml
index 5b1aff9..27f5efa 100644
--- a/quickstep/res/values-hu/strings.xml
+++ b/quickstep/res/values-hu/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Alkalmazásjavaslatokat kaphat a kezdőképernyőn megjelenő kedvencek sorában"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"A kezdőképernyőről könnyedén hozzáférhet a leggyakrabban használt alkalmazásokhoz. A javaslatok a rutinjai alapján változni fognak. Az alsó sorban lévő alkalmazások felkerülnek a kezdőképernyőre."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"A kezdőképernyőről könnyedén hozzáférhet a leggyakrabban használt alkalmazásokhoz. A javaslatok a rutinjai alapján változnak majd. A kedvencek sorában lévő alkalmazások a kezdőképernyőre kerülnek."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"A kezdőképernyőről könnyedén hozzáférhet a leggyakrabban használt alkalmazásokhoz. A javaslatok a rutinjai alapján változni fognak. Az alsó sorban lévő alkalmazások egy új mappába kerülnek."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Kérek javaslatokat"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Köszönöm, nem"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Beállítások"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"A vissza mozdulat érzékenysége a Beállításokban módosítható"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Csúsztasson a visszalépéshez"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Ha visszatérne a legutóbbi képernyőre, csúsztasson a képernyő közepére a bal vagy a jobb széléről."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Ha vissza szeretne térni a legutóbbi képernyőre, csúsztasson gyorsan két ujjal a képernyő bal vagy jobb széléről a közepe felé."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Vissza"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Csúsztasson felfelé a képernyő aljától."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Ne álljon meg, mielőtt elengedi a képernyőt."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Csúsztasson egyenesen felfelé."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Teljesítette a kezdőképernyőre lépés kézmozdulatát."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Csúsztatás a kezdőképernyőre lépéshez"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Csúsztassa ujját felfelé a képernyő aljától. Ez a mozdulat mindig a kezdőképernyőre visz."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Csúsztasson felfelé két ujjal a képernyő aljáról. Ez a kézmozdulat mindig a kezdőképernyőre viszi."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Ugrás a kezdőképernyőre"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Ha vissza szeretne térni a kezdőképernyőre, bármikor felfelé csúsztathat ujjával a képernyő aljáról"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Csúsztasson felfelé a képernyő aljától."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Próbálja tovább lenyomva tartani az ablakot, mielőtt elengedi a képernyőt."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Csúsztasson egyenesen felfelé, majd várjon egy kicsit."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Teljesítette az alkalmazásváltás kézmozdulatát."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Alkalmazásváltás csúsztatással"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Appok közti váltáshoz csúsztasson felfelé a kép aljáról, tartsa lenyomva az ujját, majd emelje fel."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Appváltáshoz csúsztasson fel két ujjal a kép aljáról, tartsa lenyomva ujjait, majd emelje fel őket."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Váltás az alkalmazások között"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Minden kész"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Kész"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Beállítások"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Remek!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Útmutató (<xliff:g id="TOTAL">%2$d</xliff:g>/<xliff:g id="CURRENT">%1$d</xliff:g>.)"</string>
     <string name="allset_title" msgid="5021126669778966707">"Kész is!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Felfelé csúsztatva megjelenik a Kezdőképernyő"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Készen áll a telefon használatára"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Felfelé csúsztatva megjelenik a kezdőképernyő"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"A kezdőképernyőre való lépéshez koppintson a kezdőképernyő gombra"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Készen áll a(z) <xliff:g id="DEVICE">%1$s</xliff:g> használatára"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"eszköz"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Rendszer-navigációs beállítások"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Megosztás"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Képernyőkép"</string>
     <string name="action_split" msgid="2098009717623550676">"Felosztás"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Koppintson másik appra a képernyőmegosztáshoz"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Az alkalmazás nem támogatja az osztott képernyőt."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Koppintson másik appra az osztott képernyőhöz"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Válasszon másik appot a képernyő felosztásához"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Az alkalmazás vagy az Ön szervezete nem engedélyezi ezt a műveletet"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Kihagyja a navigáció bemutatóját?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Ezt később megtalálhatja a(z) <xliff:g id="NAME">%1$s</xliff:g> alkalmazásban"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Mégse"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Kihagyás"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Képernyő elforgatása"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Az eszköztár használatát ismertető panel megjelent"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Az eszköztár használatát ismertető panel bezárult"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Az eszköztárral válthat az alkalmazások között"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Húzza oldalra, ha egyszerre két appot szeretne használni"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Nyomva tartással elrejthető az eszköztár"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Tovább"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Vissza"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Tálca használatának ismertetése"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Húzzon egy appot oldalra, ha kettőt használna egyidejűleg"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Lassan csúsztassa fel az ujját a Feladatsáv megjelenítéséhez"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Alkalmazásjavaslatokat kaphat a rutinja alapján"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"A Feladatsáv automatikus elrejtéséhez aktiválja a navigációs kézmozdulatokat a beállításokban"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Jobban kihasználhatja a Feladatsávot"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Bezárás"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Kész"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Kezdőlap"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Vissza"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME-váltó"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Legutóbbiak"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Értesítések"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Gyorsbeállítások"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Tálca"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Feladatsáv megjelenítve"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Feladatsáv elrejtve"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigációs sáv"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Mindig megjelenő feladatsáv"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Navigációs mód módosítása"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Feladatsáv-elválasztó"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Mozgatás felülre vagy a bal oldalra"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Mozgatás alulra vagy a jobb oldalra"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{# további alkalmazás megjelenítése.}other{# további alkalmazás megjelenítése.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> és <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-hy/strings.xml b/quickstep/res/values-hy/strings.xml
index df73078..80e6750 100644
--- a/quickstep/res/values-hy/strings.xml
+++ b/quickstep/res/values-hy/strings.xml
@@ -24,7 +24,7 @@
     <string name="recents_empty_message" msgid="7040467240571714191">"Վերջին տարրեր չկան"</string>
     <string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Հավելվածի օգտագործման կարգավորումներ"</string>
     <string name="recents_clear_all" msgid="5328176793634888831">"Փակել բոլորը"</string>
-    <string name="accessibility_recent_apps" msgid="4058661986695117371">"Վերջին օգտագործած հավելվածները"</string>
+    <string name="accessibility_recent_apps" msgid="4058661986695117371">"Վերջին հավելվածներ"</string>
     <string name="task_view_closed" msgid="9170038230110856166">"Առաջադրանքը փակված է"</string>
     <string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
     <string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"&lt; 1 ր"</string>
@@ -33,10 +33,9 @@
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"Ձեր կանխատեսված հավելվածները"</string>
     <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Ստացեք հավելվածների առաջարկներ հիմնական էկրանի ներքևում"</string>
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Ստացեք հավելվածների առաջարկներ հիմնական էկրանի «Ընտրանի» տողում"</string>
-    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Արագ բացեք հաճախ օգտագործվող հավելվածներն անմիջապես հիմնական էկրանից։ Առաջարկները կփոփոխվեն՝ կախված ձեր գործողություններից։ Ներքևում ցուցադրվող հավելվածները կտեղափոխվեն հիմնական էկրանի վերևի մաս։"</string>
+    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Անմիջապես հիմնական էկրանից բացեք հաճախ օգտագործվող հավելվածները։ Առաջարկվող հավելվածները կփոփոխվեն՝ կախված ձեր գործողություններից։ Ներքևի տողի հավելվածները կտեղափոխվեն վերև հիմնական էկրանին։"</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Արագ բացեք հաճախ օգտագործվող հավելվածներն անմիջապես հիմնական էկրանից։ Առաջարկները կփոփոխվեն՝ կախված ձեր գործողություններից։ «Ընտրանի» տողի հավելվածները կտեղափոխվեն հիմնական էկրան։"</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Արագ բացեք հաճախ օգտագործվող հավելվածներն անմիջապես հիմնական էկրանից։ Առաջարկները կփոփոխվեն՝ կախված ձեր գործողություններից։ Ներքևում ցուցադրվող հավելվածները կտեղափոխվեն նոր պանակ։"</string>
-    <string name="hotseat_edu_accept" msgid="1611544083278999837">"Ստանալ հավելվածների առաջարկներ"</string>
+    <string name="hotseat_edu_accept" msgid="1611544083278999837">"Ստանալ առաջարկներ"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Ոչ, շնորհակալություն"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Կարգավորումներ"</string>
     <string name="hotseat_auto_enrolled" msgid="522100018967146807">"Հաճախ օգտագործվող հավելվածները ցուցադրվում են այստեղ և փոփոխվում են ըստ ձեր գործողությունների հերթականության։"</string>
@@ -52,7 +51,9 @@
     <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Համոզվեք, որ մատը չափազանց մոտ չեք սահեցնում էկրանին ներքևի հատվածին։"</string>
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Հետ գնալու ժեստի զգայունությունը փոփոխեք կարգավորումներում"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Սահեցրեք մատը՝ հետ գնալու համար"</string>
-    <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Վերջին էկրան վերադառնալու համար էկրանի աջ կամ ձախ եզրից մատը սահեցրեք դեպի կենտրոն։"</string>
+    <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Վերջին էկրանին վերադառնալու համար էկրանի աջ կամ ձախ եզրից մատը սահեցրեք դեպի կենտրոն։"</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Վերջին էկրանին վերադառնալու համար 2 մատը սահեցրեք ձախ կամ աջ եզրից դեպի կենտրոն։"</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Վերադարձ հետ"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Համոզվեք, որ մատն էկրանի ներքևի եզրից վերև եք սահեցնում։"</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Համոզվեք, որ դադար չեք տալիս նախքան բաց թողնելը։"</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Համոզվեք, որ մատն ուղիղ վերև եք սահեցնում։"</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Դուք սովորեցիք հիմնական էկրան անցնելու ժեստը։"</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Սահեցրեք մատը՝ հիմնական էկրան անցնելու համար"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Մատը սահեցրեք էկրանի ներքևից վերև։ Այս ժեստը բացում է հիմնական էկրանը։"</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Երկու մատը էկրանի ներքևից սահեցրեք վերև։ Այս ժեստը բացում է հիմնական էկրանը։"</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Անցնել հիմնական էկրան"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Հիմնական էկրան վերադառնալու համար մատը էկրանի ներքևից սահեցրեք վերև"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Համոզվեք, որ մատն էկրանի ներքևի եզրից վերև եք սահեցնում։"</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Նախքան բաց թողնելը փորձեք հնարավորինս երկար պահել պատուհանը։"</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Համոզվեք, որ մատն ուղիղ վերև եք սահեցնում, այնուհետև դադար տվեք։"</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Դուք սովորեցիք մի հավելվածից մյուսն անցնելու ժեստը։"</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Մատը սահեցրեք՝ մյուս հավելվածին անցնելու համար"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Մեկ հավելվածից մյուսն անցնելու համար մատը էկրանի ներքևից սահեցրեք վերև, ապա հեռացրեք այն էկրանից։"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Մեկ հավելվածից մյուսն անցնելու համար 2 մատը էկրանի ներքևից սահեցրեք վերև, ապա հեռացրեք այն էկրանից։"</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Անցում մեկ հավելվածից մյուսին"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Պատրաստ է"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Պատրաստ է"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Կարգավորումներ"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Գերազանց է"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Ուղեցույց <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Պատրաստ է"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Մատը սահեցրեք վերև՝ հիմնական էկրան անցնելու համար"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Դուք արդեն կարող եք օգտագործել ձեր հեռախոսը"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Մատը սահեցրեք վերև՝ հիմնական էկրան անցնելու համար"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Հիմնական էկրան վերադառնալու համար սեղմեք գլխավոր էկրանի կոճակը"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Դուք արդեն կարող եք օգտագործել ձեր <xliff:g id="DEVICE">%1$s</xliff:g> սարքը"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"սարք"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Նավիգացիայի համակարգային կարգավորումներ"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Կիսվել"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Սքրինշոթ անել"</string>
     <string name="action_split" msgid="2098009717623550676">"Տրոհել"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Հպեք այլ հավելվածի՝ էկրանը տրոհելու համար"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Հավելվածը չի աջակցում էկրանի տրոհումը։"</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Հպեք այլ հավելվածի՝ տրոհված էկրանից օգտվելու համար"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Ընտրեք այլ հավելված՝ կիսված էկրանից օգտվելու համար"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Այս գործողությունն արգելված է հավելվածի կամ ձեր կազմակերպության կողմից"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Բաց թողնե՞լ նավիգացիայի ուղեցույցը"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Հետագայում սա կարող եք գտնել «<xliff:g id="NAME">%1$s</xliff:g>» հավելվածում"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Չեղարկել"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Բաց թողնել"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Պտտել էկրանը"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Խնդրագոտու «Կրթություն» վահանակը բացվեց"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Խնդրագոտու «Կրթություն» վահանակը փակվեց"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Օգտագործեք խնդրագոտին՝ մի հավելվածից մյուսին անցնելու համար"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Քաշեք մի կողմ՝ միաժամանակ երկու հավելված օգտագործելու համար"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Հպեք և պահեք՝ խնդրագոտին թաքցնելու համար"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Առաջ"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Հետ"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Խնդրագոտու «Կրթություն» պատուհան"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Միաժամանակ օգտագործեք երկու հավելված՝ մեկը մի կողմ քաշելով"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Հավելվածների վահանակը բացելու համար մատը դանդաղ սահեցրեք վեր"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Ստացեք առաջարկներ ձեր գործողությունների հիման վրա"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Կարգավորումներում միացրեք ժեստերով նավիգացիան՝ հավելվածների վահանակը թաքցնելու համար"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Օգտվեք հավելվածների վահանակի բոլոր հնարավորություններից"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Փակել"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Պատրաստ է"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Սկիզբ"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Վերջինները"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Ծանուցումներ"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Արագ կարգավորումներ"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Խնդրագոտի"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Խնդրագոտին ցուցադրվում է"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Խնդրագոտին թաքցված է"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Նավիգացիայի գոտի"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Միշտ ցուցադրել հավելվածները"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Փոխել նավիգացիայի ռեժիմը"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Հավելվածների վահանակի բաժանիչ"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Տեղափոխել վերևի ձախ անկյուն"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Տեղափոխել ներքևի աջ անկյուն"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Ցուցադրել ևս # հավելված։}one{Ցուցադրել ևս # հավելված։}other{Ցուցադրել ևս # հավելված։}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> և <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-in/strings.xml b/quickstep/res/values-in/strings.xml
index 61bdf31..0d4e375 100644
--- a/quickstep/res/values-in/strings.xml
+++ b/quickstep/res/values-in/strings.xml
@@ -35,12 +35,11 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Dapatkan saran aplikasi di baris favorit Layar utama"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Akses aplikasi yang paling sering digunakan dengan mudah, langsung di Layar utama. Saran akan berubah berdasarkan rutinitas Anda. Aplikasi di baris paling bawah akan berpindah naik ke Layar utama."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Mudah mengakses aplikasi yang paling sering digunakan, langsung di Layar utama. Saran akan berubah berdasarkan rutinitas Anda. Aplikasi di baris favorit akan berpindah ke Layar utama."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Akses aplikasi yang paling sering digunakan dengan mudah, langsung di Layar utama. Saran akan berubah berdasarkan rutinitas Anda. Aplikasi di baris paling bawah akan berpindah ke folder baru."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Dapatkan saran aplikasi"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Lain kali"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Setelan"</string>
     <string name="hotseat_auto_enrolled" msgid="522100018967146807">"Aplikasi yang paling sering digunakan muncul di sini, dan berubah berdasarkan rutinitas"</string>
-    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Tarik aplikasi dari baris paling bawah untuk mendapatkan saran aplikasi"</string>
+    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Tarik aplikasi dari baris bawah untuk mendapatkan saran aplikasi"</string>
     <string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Saran aplikasi ditambahkan ke ruang kosong"</string>
     <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"Saran aplikasi diaktifkan"</string>
     <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"Saran aplikasi dinonaktifkan"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Untuk mengubah sensitivitas gestur kembali, buka Setelan"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Geser untuk kembali"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Untuk kembali ke layar terakhir, geser dari tepi kiri atau kanan ke tengah layar."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Untuk kembali ke layar terakhir, geser dengan 2 jari dari tepi kiri atau kanan ke tengah layar."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Kembali"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Pastikan Anda menggeser ke atas dari tepi bawah layar."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Pastikan Anda tidak menjeda sebelum melepaskan."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Pastikan Anda menggeser lurus ke atas."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Anda telah menyelesaikan gestur menuju Layar utama."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Geser untuk beralih ke layar utama"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Geser ke atas dari bagian bawah layar. Gestur ini akan selalu membawa Anda ke Layar utama."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Geser ke atas dengan 2 jari dari bawah layar. Gestur ini akan selalu membawa Anda ke Layar utama."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Buka layar utama"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Untuk membuka layar utama kapan saja, geser ke atas dari bagian bawah layar"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Pastikan Anda menggeser ke atas dari tepi bawah layar."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Coba tahan jendela lebih lama sebelum melepaskan."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Pastikan Anda menggeser lurus ke atas, lalu menjedanya."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Anda telah menyelesaikan gestur beralih aplikasi."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Geser untuk beralih aplikasi"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Untuk beralih antar-aplikasi, geser ke atas dari bagian bawah layar, tahan, lalu lepaskan."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Untuk beralih antar-aplikasi, geser ke atas dengan 2 jari dari bawah layar, tahan, lalu lepaskan."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Beralih aplikasi"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Semua siap"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Selesai"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Setelan"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Bagus!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Tutorial <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Semua siap."</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Geser ke atas untuk beralih ke Layar utama"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Anda sudah siap untuk mulai menggunakan ponsel"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Geser ke atas untuk beralih ke layar utama"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Ketuk tombol layar utama untuk membuka layar utama"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Anda sudah siap untuk mulai menggunakan <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"perangkat"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Setelan navigasi sistem"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Bagikan"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
     <string name="action_split" msgid="2098009717623550676">"Pisahkan"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Ketuk aplikasi lain untuk menggunakan layar terpisah"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Aplikasi tidak mendukung layar terpisah."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Ketuk aplikasi lain untuk memakai layar terpisah"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Pilih aplikasi lain untuk memakai layar terpisah"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Tindakan ini tidak diizinkan oleh aplikasi atau organisasi Anda"</string>
-    <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Lewati tutorial navigasi?"</string>
+    <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Lewati tutorial gestur?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Anda dapat menemukan tutorial ini di lain waktu di aplikasi <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Batal"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Lewati"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Putar layar"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Edukasi taskbar ditampilkan"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Edukasi taskbar ditutup"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Gunakan taskbar untuk beralih aplikasi"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Tarik ke samping untuk menggunakan dua aplikasi sekaligus"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Sentuh lama untuk menyembunyikan taskbar"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Berikutnya"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Kembali"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Pengantar Taskbar"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Tarik aplikasi ke samping untuk menggunakan 2 aplikasi sekaligus"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Geser perlahan ke atas untuk menampilkan Taskbar"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Dapatkan saran aplikasi berdasarkan rutinitas Anda"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Aktifkan navigasi gestur di Setelan untuk menyembunyikan otomatis Taskbar"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Lakukan lebih banyak dengan Taskbar"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Tutup"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Selesai"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Layar utama"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Terbaru"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Notifikasi"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Setelan Cepat"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Taskbar"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Taskbar ditampilkan"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Taskbar disembunyikan"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Menu navigasi"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Selalu tampilkan Taskbar"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Ubah mode navigasi"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Pemisah Taskbar"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Pindahkan ke atas/kiri"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Pindahkan ke bawah/kanan"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Tampilkan # aplikasi lain.}other{Tampilkan # aplikasi lain.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> dan <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-is/strings.xml b/quickstep/res/values-is/strings.xml
index 1327552..08b5e99 100644
--- a/quickstep/res/values-is/strings.xml
+++ b/quickstep/res/values-is/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Fáðu tillögur að forritum á eftirlætissvæði heimaskjásins"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Nálgastu forritin sem þú notar mest auðveldlega á heimaskjánum. Tillögurnar breytast í samræmi við notkun þína. Forrit í neðstu röð færast upp á heimaskjáinn."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Nálgastu forritin sem þú notar mest á einfaldan hátt á heimaskjánum. Tillögurnar breytast í samræmi við notkun þína. Forrit á eftirlætissvæði færast á heimaskjáinn."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Nálgastu forritin sem þú notar mest auðveldlega á heimaskjánum. Tillögurnar breytast í samræmi við notkun þína. Forrit í neðstu röð færast í nýja möppu."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Fá tillögur að forritum"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nei, takk"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Stillingar"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Til að breyta næmi til baka-bendingar ferðu í stillingar"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Strjúktu til að fara til baka"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Til að fara til baka á síðasta skjá skaltu strjúka frá vinstri eða hægri brún að miðju skjásins."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Strjúktu frá vinstri eða hægri brún að miðju skjásins með 2 fingrum til að fara aftur á síðasta skjá."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Til baka"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Passaðu að strjúka upp frá neðri brún skjásins."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Passaðu að stoppa ekki áður en þú sleppir."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Passaðu að strjúka beint upp."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Þú laukst við að kynna þér bendinguna „heim“."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Strjúktu til að fara heim"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Strjúktu upp frá neðri hluta skjásins. Þetta flytur þig alltaf á heimaskjáinn."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Strjúktu frá neðri brún skjásins með 2 fingrum. Þessi bending opnar ávallt heimaskjáinn."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Fara á heimaskjá"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Strjúktu upp frá neðsta hluta skjásins til að opna heimskjáinn hvenær sem er"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Passaðu að strjúka upp frá neðri brún skjásins."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Prófaðu að halda fingrinum lengur á glugganum áður en þú sleppir."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Passaðu að strjúka beint upp og stoppa svo."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Þú laukst við að kynna þér bendinguna „skipta um forrit“."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Strjúktu til að skipta á milli forrita"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Strjúktu upp frá neðri hluta skjásins, haltu og slepptu svo til að skipta á milli forrita."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Strjúktu upp frá neðri brún skjásins með 2 fingrum, haltu og slepptu til að skipta á milli forrita."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Skipta um forrit"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Allt til reiðu"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Lokið"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Stillingar"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Flott!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Leiðsögn <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Allt tilbúið!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Strjúktu upp til að fara á heimaskjáinn"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Þú getur byrjað að nota símann"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Strjúktu upp til að fara á heimaskjáinn"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Ýttu á heimahnappinn til að fara á heimaskjáinn"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Þú getur byrjað að nota <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"tækið"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Stillingar kerfisstjórnunar"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Deila"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Skjámynd"</string>
     <string name="action_split" msgid="2098009717623550676">"Skipta"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Ýttu á annað forrit til að nota skjáskiptingu"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Forritið styður ekki að skjánum sé skipt."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Ýttu á annað forrit til að nota skjáskiptingu"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Veldu annað forrit til að nota skjáskiptingu"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Forritið eða fyrirtækið leyfir ekki þessa aðgerð"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Sleppa flettileiðsögn?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Þú getur fundið þetta síðar í forritinu <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Hætta við"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Sleppa"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Snúa skjánum"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Leiðsögn verkefnastiku sýnileg"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Leiðsögn verkefnastiku lokað"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Notaðu verkefnastikuna til að skipta á milli forrita"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Dragðu til hliðar til að nota tvö forrit í einu"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Haltu inni til að fela verkefnastikuna"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Áfram"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Til baka"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Leiðsögn verkefnastiku"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Dragðu forrit til hliðar til að nota 2 forrit í einu"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Strjúktu hægt upp til að birta forritastikuna"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Fáðu forritatillögur sem byggjast á rútínunni þinni"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Kveiktu á bendingastjórnun í stillingunum til að fela forritastikuna sjálfkrafa"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Nýttu forritastikuna betur"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Loka"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Lokið"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Heim"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Til baka"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"Breyta innsláttaraðferð"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Nýlegt"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Tilkynningar"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Flýtistillingar"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Verkstika"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Forritastika sýnd"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Forritastika falin"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Yfirlitsstika"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Alltaf sýna forritastiku"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Breyta leiðsagnarstillingu"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Skipting forritastiku"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Færa efst/til vinstri"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Færa neðst/til hægri"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Sýna # forrit í viðbót.}one{Sýna # forrit í viðbót.}other{Sýna # forrit í viðbót.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> og <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-it/strings.xml b/quickstep/res/values-it/strings.xml
index a555636..6f2f954 100644
--- a/quickstep/res/values-it/strings.xml
+++ b/quickstep/res/values-it/strings.xml
@@ -31,11 +31,10 @@
     <string name="time_left_for_app" msgid="3111996412933644358">"Rimanente oggi: <xliff:g id="TIME">%1$s</xliff:g>"</string>
     <string name="title_app_suggestions" msgid="4185902664111965088">"App suggerite"</string>
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"App previste per te"</string>
-    <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Visualizza app suggerite nella riga inferiore della schermata Home"</string>
+    <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Visualizza le app suggerite nella riga inferiore della schermata Home"</string>
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Visualizza app suggerite nella riga dei Preferiti della schermata Home"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Accedi facilmente alle app più utilizzate direttamente dalla schermata Home. I suggerimenti varieranno in base alle tue routine. Le app nella riga inferiore verranno spostate più in alto sulla schermata Home."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Accedi facilmente alle app più utilizzate direttamente dalla schermata Home. I suggerimenti varieranno in base alle tue routine. Le app nella riga dei Preferiti verranno spostate nella schermata Home."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Accedi facilmente alle app più utilizzate direttamente dalla schermata Home. I suggerimenti varieranno in base alle tue routine. Le app nella riga inferiore verranno spostate in una nuova cartella."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Visualizza app suggerite"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"No, grazie"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Impostazioni"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Usa Impostazioni per cambiare sensibilità del gesto Indietro"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Scorri per tornare indietro"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Per tornare all\'ultima schermata, scorri dal bordo sinistro o destro verso il centro dello schermo."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Per tornare all\'ultima schermata, scorri con 2 dita dal bordo sinistro o destro verso il centro dello schermo."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Vai indietro"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Assicurati di scorrere verso l\'alto dal bordo inferiore dello schermo."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Assicurati di non fare pause prima di sollevare il dito."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Assicurati di scorrere verso l\'alto senza fermarti."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Hai completato il gesto Vai alla schermata Home."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Scorri per andare alla schermata Home"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Scorri verso l\'alto dalla parte inferiore dello schermo. Questo gesto ti porta sempre alla schermata Home."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Scorri verso l\'alto con 2 dita dal basso. Questo gesto ti porta sempre alla schermata Home."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Vai alla schermata Home"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Per andare alla schermata Home in qualsiasi momento, scorri sullo schermo dal basso verso l\'alto"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Assicurati di scorrere verso l\'alto dal bordo inferiore dello schermo."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Prova a tenere premuta la finestra più a lungo prima di rilasciarla."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Assicurati di scorrere verso l\'alto senza fermarti, poi fai una pausa."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Hai completato il gesto Cambia app."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Scorri per passare da un\'app all\'altra"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Per spostarti tra le app, scorri verso l\'alto dal fondo dello schermo, tieni premuto e rilascia."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Per spostarti tra le app, scorri verso l\'alto con 2 dita, tieni premuto e rilascia."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Cambia app"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Fatto"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Fine"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Impostazioni"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Bene!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Tutorial <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Finito."</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Scorri verso l\'alto per andare alla schermata Home"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Puoi iniziare a usare il tuo telefono"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Scorri verso l\'alto per andare alla schermata Home"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Tocca il pulsante Home per andare alla schermata Home"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Puoi iniziare a usare il tuo <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"dispositivo"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Impostazioni Navigazione del sistema"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Condividi"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
     <string name="action_split" msgid="2098009717623550676">"Dividi"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Tocca un\'altra app per usare lo schermo diviso"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"L\'app non supporta la modalità Schermo diviso."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Tocca un\'altra app per usare lo schermo diviso"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Scegli un\'altra app per usare lo schermo diviso"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Questa azione non è consentita dall\'app o dall\'organizzazione"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Saltare il tutorial di navigazione?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Puoi trovarlo in un secondo momento nell\'app <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Annulla"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Salta"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Ruota lo schermo"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Riquadro Formazione barra delle applicazioni visualizzato"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Riquadro Formazione barra delle applicazioni chiuso"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Usa la barra delle applicazioni per cambiare app"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Trascina di lato per usare due app contemporaneamente"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Tocca e tieni premuto per nascondere barra applicazioni"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Avanti"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Indietro"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Informazioni sulla barra delle applicazioni"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Trascina un\'app di lato per usare due app contemporaneamente"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Scorri lentamente in su per mostrare la barra delle app"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Visualizza le app suggerite in base alla tua routine"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Per nascondere automaticamente la barra delle app, attiva la navigazione tramite gesti"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Fai di più con la barra delle app"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Chiudi"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Fine"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Home"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Indietro"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"Selettore IME"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Recenti"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Notifiche"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Impostazioni rapide"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Barra delle applicazioni"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Barra delle app visualizzata"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Barra delle app nascosta"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Barra di navigazione"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Mostra sempre barra delle app"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Cambia modalità di navigazione"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Divisore barra delle app"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Sposta in alto/a sinistra"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Sposta in basso/a destra"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Mostra # altra app.}other{Mostra altre # app.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> e <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-iw/strings.xml b/quickstep/res/values-iw/strings.xml
index cd97903..e158869 100644
--- a/quickstep/res/values-iw/strings.xml
+++ b/quickstep/res/values-iw/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"קבלת הצעות לאפליקציות בשורת המועדפות של מסך הבית"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"גישה נוחה לאפליקציות שנעשה בהן שימוש תכוף – ישירות ממסך הבית. ההצעות ישתנו בהתאם להרגלי השימוש שלך. אפליקציות שמופיעות בשורה התחתונה יעברו למעלה למסך הבית."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"גישה נוחה לאפליקציות שהשתמשת בהן הכי הרבה, ישירות ממסך הבית. ההצעות ישתנו בהתאם להרגלי השימוש שלך. אפליקציות בשורת המועדפות יועברו למסך הבית."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"גישה נוחה לאפליקציות שנעשה בהן שימוש תכוף – ישירות ממסך הבית. ההצעות ישתנו בהתאם להרגלי השימוש שלך. אפליקציות שמופיעות בשורה התחתונה יעברו לתיקייה חדשה."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"קבלת הצעות לאפליקציות"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"לא, תודה"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"הגדרות"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"כדי לשנות את מידת הרגישות של תנועת החזרה, יש לעבור להגדרות"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"יש להחליק כדי לחזור"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"כדי לחזור למסך הקודם, יש להחליק מהקצה השמאלי או הימני למרכז המסך."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"כדי לחזור למסך הקודם, יש להחליק עם שתי אצבעות מהקצה השמאלי או הימני למרכז המסך."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"הקודם"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"חשוב להקפיד להחליק למעלה מהקצה התחתון של המסך."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"חשוב לוודא שלא מחכים לפני שמשחררים."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"חשוב להקפיד להחליק ישר למעלה."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"השלמת את תנועת המעבר למסך הבית."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"יש להחליק כדי לעבור למסך הבית"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"החלקה למעלה מתחתית המסך תמיד תעביר אותך למסך הבית."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"יש להחליק למעלה עם שתי אצבעות מתחתית המסך. התנועה הזו תמיד מעבירה אותך למסך הבית."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"מעבר למסך הבית"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"למעבר למסך הבית בכל שלב, צריך להחליק למעלה מהחלק התחתון של המסך"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"חשוב להקפיד להחליק למעלה מהקצה התחתון של המסך."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"אפשר להחזיק את החלון זמן רב יותר לפני שמשחררים."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"חשוב להקפיד להחליק ישר למעלה ואז להמתין."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"השלמת את תנועת המעבר בין האפליקציות."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"יש להחליק כדי לעבור בין אפליקציות"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"כדי לעבור בין אפלקציות, יש להחליק למעלה מתחתית המסך, להחזיק ולאחר מכן לשחרר."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"כדי לעבור בין אפלקציות, יש להחליק למעלה עם שתי אצבעות מתחתית המסך, להחזיק ולאחר מכן לשחרר."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"מעבר בין אפליקציות"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"הכול מוכן"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"סיום"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"הגדרות"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"איזה יופי!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"מדריך <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"הכול מוכן!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"כדי לעבור לדף הבית, מחליקים כלפי מעלה"</string>
-    <string name="allset_description" msgid="6350320429953234580">"הכול מוכן ואפשר להתחיל להשתמש בטלפון"</string>
+    <string name="allset_hint" msgid="459504134589971527">"כדי לחזור לדף הבית, מחליקים כלפי מעלה"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"כדי לעבור אל מסך הבית יש להקיש על הלחצן הראשי"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"הכול מוכן ואפשר להתחיל להשתמש ב<xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"מכשיר"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"הגדרות הניווט של המערכת"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"שיתוף"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"צילום מסך"</string>
     <string name="action_split" msgid="2098009717623550676">"פיצול"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"צריך להקיש על אפליקציה אחרת כדי להשתמש במסך מפוצל"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"האפליקציה אינה תומכת במסך מפוצל."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"צריך להקיש על אפליקציה אחרת כדי להשתמש במסך מפוצל"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"כדי להשתמש במסך מפוצל צריך לבחור אפליקציה אחרת"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"האפליקציה או הארגון שלך אינם מתירים את הפעולה הזאת"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"לדלג על המדריך לניווט?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"ניתן למצוא את המדריך מאוחר יותר באפליקציה <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"ביטול"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"דילוג"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"סיבוב המסך"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"חלונית ההסברים על שורת המשימות מופיעה"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"חלונית ההסברים על שורת המשימות נסגרה"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"כדי לעבור בין אפליקציות, משתמשים בשורת המשימות"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"כדי להשתמש בשתי אפליקציות בו-זמנית, צריך לגרור לצד"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"כדי להסתיר את שורת המשימות, לוחצים לחיצה ארוכה"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"הבא"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"חזרה"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"הסבר על סרגל האפליקציות"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"כדי להשתמש בשתי אפליקציות בו-זמנית, צריך לגרור אפליקציה לצד"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"צריך להחליק לאט כדי להציג את סרגל האפליקציות"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"קבלת הצעות לאפליקציות על סמך השימוש השגרתי שלך"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"אפשר להפעיל את הניווט באמצעות תנועות ב\'הגדרות\' כדי להסתיר אוטומטית את סרגל האפליקציות"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"פעולות נוספות שאפשר לעשות עם סרגל האפליקציות"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"סגירה"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"סיום"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"בית"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"חזרה"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"‏כלי להחלפת IME"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"לאחרונה"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"התראות"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"הגדרות מהירות"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"סרגל האפליקציות"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"סרגל האפליקציות מוצג"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"סרגל האפליקציות מוסתר"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"סרגל הניווט"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"סרגל האפליקציות מוצג תמיד"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"שינוי מצב הניווט"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"המחיצה בסרגל האפליקציות"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"העברה לפינה השמאלית/העליונה"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"העברה לפינה הימנית/התחתונה"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{הצגת אפליקציה אחת (#) נוספת.}one{הצגת # אפליקציות נוספות.}two{הצגת # אפליקציות נוספות.}other{הצגת # אפליקציות נוספות.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> ו-<xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-ja/strings.xml b/quickstep/res/values-ja/strings.xml
index 9a4ce01..d55a2c0 100644
--- a/quickstep/res/values-ja/strings.xml
+++ b/quickstep/res/values-ja/strings.xml
@@ -33,9 +33,8 @@
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"予測されたアプリ"</string>
     <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"ホーム画面の一番下にアプリの候補を表示できます"</string>
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"ホーム画面のお気に入りの行でアプリの候補を利用できます"</string>
-    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"ホーム画面で、使用頻度の高いアプリに簡単にアクセスできるようになります。アプリの候補はルーティンに応じて変わります。一番下の行にあるアプリは上に移動します。"</string>
+    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"ホーム画面で、使用頻度の高いアプリに簡単にアクセスできるようになります。アプリの候補はルーティンに応じて変わります。ホーム画面で今一番下の行にあるアプリは、一行上に移動します。"</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"ホーム画面で、使用頻度の高いアプリに簡単にアクセスできるようになります。アプリの候補はルーティンに応じて変わります。お気に入りの行にあるアプリがホーム画面に移動します。"</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"ホーム画面で、使用頻度の高いアプリに簡単にアクセスできるようになります。アプリの候補はルーティンに応じて変わります。一番下の行にあるアプリが新しいフォルダに移動します。"</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"アプリの候補を利用"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"使用しない"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"設定"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"「戻る」操作の感度を変更するには [設定] に移動します"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"スワイプで戻る"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"直前の画面に戻るには、画面の左端または右端から中央に向かってスワイプします。"</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"直前の画面に戻るには、2 本の指で画面の左端または右端から中央に向かってスワイプします。"</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"戻る"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"画面の下端から上にスワイプしてください。"</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"指を離す前にいったん止めないでください。"</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"まっすぐ上にスワイプしてください。"</string>
@@ -60,41 +61,47 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"「ホームに戻る」操作を学習しました。"</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"スワイプでホームに戻る"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"画面を下から上にスワイプします。この操作でいつでもホーム画面に戻れます。"</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"2 本の指で画面下部から上にスワイプします。この操作で常にホーム画面に戻ります。"</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"ホームに移動"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"画面を下から上にスワイプすると、ホーム画面にいつでも移動できます"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"画面の下端から上にスワイプしてください。"</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"ウィンドウをもう少し長く押してから指を離すようにしてみましょう。"</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"まっすぐ上にスワイプしてから、いったん指を止めてください。"</string>
-    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"主な操作方法を覚えました。操作を OFF にするには、設定に移動してください。"</string>
+    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"主なジェスチャーについて学びました。ジェスチャーを OFF にするには、設定に移動してください。"</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"「アプリを切り替える」操作を完了しました。"</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"スワイプでアプリを切り替える"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"アプリを切り替えるには、画面を下から上にスワイプして長押しし、指を離します。"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"アプリを切り替えるには、2 本の指で画面下部から上にスワイプしたまま長押しし、指を離します。"</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"アプリの切り替え"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"設定完了"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"完了"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"設定"</string>
     <string name="gesture_tutorial_try_again" msgid="65962545858556697">"もう一度"</string>
-    <string name="gesture_tutorial_nice" msgid="2936275692616928280">"成功しました"</string>
+    <string name="gesture_tutorial_nice" msgid="2936275692616928280">"その調子です!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"チュートリアル <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"設定完了"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"ホームに移動するには上にスワイプします"</string>
-    <string name="allset_description" msgid="6350320429953234580">"スマートフォンを使い始めることができます"</string>
+    <string name="allset_hint" msgid="459504134589971527">"ホームに移動するには上にスワイプします"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"ホームボタンをタップすると、ホーム画面に移動します"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"<xliff:g id="DEVICE">%1$s</xliff:g> を使用する準備ができました"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"デバイス"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"システム ナビゲーションの設定"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"共有"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"スクリーンショット"</string>
     <string name="action_split" msgid="2098009717623550676">"分割"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"分割画面を使用するには、他のアプリをタップします"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"アプリで分割画面がサポートされていません。"</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"分割画面を使用するには、他のアプリをタップします"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"分割画面にするには、別のアプリを選択してください"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"この操作はアプリまたは組織で許可されていません"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"操作チュートリアルをスキップしますか?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"チュートリアルは後から <xliff:g id="NAME">%1$s</xliff:g> アプリで確認できます"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"キャンセル"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"スキップ"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"画面を回転"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"タスクバーの説明を開きました"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"タスクバーの説明を閉じました"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"アプリを切り替えるには、タスクバーを使用します"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"2 個のアプリを同時に使用するには、横にドラッグします"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"タスクバーを長押しすると非表示になります"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"次へ"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"戻る"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"タスクバーの説明"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"アプリを横にドラッグして 2 個のアプリを同時に使用できます"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"タスクバーを表示するには、上にゆっくりとスワイプします"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"毎日の使用状況に基づいてアプリの候補が表示されます"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"[設定] でジェスチャー ナビゲーションを ON にすると、タスクバーを自動的に非表示にできます"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"タスクバーの各種機能"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"閉じる"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"完了"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"ホーム"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"最近"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"通知"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"クイック設定"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"タスクバー"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"タスクバー表示"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"タスクバー非表示"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"ナビゲーション バー"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"常にタスクバーを表示"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"ナビゲーション モードを変更"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"タスクバーの区切り"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"上 / 左に移動"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"下 / 右に移動"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{他 # 件のアプリを表示できます。}other{他 # 件のアプリを表示できます。}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> と <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-ka/strings.xml b/quickstep/res/values-ka/strings.xml
index 2501489..c1df53c 100644
--- a/quickstep/res/values-ka/strings.xml
+++ b/quickstep/res/values-ka/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"მიიღეთ აპების შემოთავაზებები მთავარი ეკრანის რჩეულების მწკრივში"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"მარტივად იქონიეთ ყველაზე ხშირად გამოყენებულ აპებზე წვდომა მთავარი ეკრანიდან. შეთავაზებები შეიცვლება თქვენი რუტინების მიხედვით. მოხდება ქვედა რიგში არსებული აპების მთავარ ეკრანზე გადატანა."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"მარტივად იქონიეთ წვდომა ყველაზე ხშირად გამოყენებულ აპებზე მთავარი ეკრანიდან. შეთავაზებები შეიცვლება თქვენი რუტინების მიხედვით. რჩეულების მწკრივში არსებული აპები თქვენს მთავარ ეკრანზე გადავა."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"მარტივად იქონიეთ ყველაზე ხშირად გამოყენებულ აპებზე წვდომა მთავარი ეკრანიდან. შეთავაზებები შეიცვლება თქვენი რუტინების მიხედვით. მოხდება ქვედა რიგში არსებული აპების ახალ საქაღალდეში გადატანა."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"აპის შეთავაზებების მიღება"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"არა, გმადლობთ"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"პარამეტრები"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"დაბრუნების ჟესტის მგრძნობელობის შესაცვლელად გადადით პარამეტრებზე"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"უკან დასაბრუნებლად გადაფურცლეთ"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"ბოლო ეკრანზე დასაბრუნებლად გადაფურცლეთ მარცხენა ან მარჯვენა კიდიდან ეკრანის ცენტრისკენ."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"ბოლო ეკრანზე დასაბრუნებლად ორი თითით გადაფურცლეთ მარცხენა ან მარჯვენა კიდიდან ეკრანის ცენტრისკენ."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"უკან დაბრუნება"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"გადაფურცლეთ ეკრანის ქვედა კიდიდან ზემოთ."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"არ დააპაუზოთ თითის აშვებამდე."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"გადაფურცლეთ ზემოთ."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"თქვენ შეასრულეთ მთავარ ეკრანზე დაბრუნების ჟესტი."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"მთავარი გვერდის სანახავად გადაფურცლეთ"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"გადაფურცლეთ ეკრანის ქვედა კიდიდან ზემოთ. ამ ჟესტს ყოველთვის მთავარი გვერდის ეკრანზე გადაყავხართ."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"ორი თითით გადაფურცლეთ ეკრანის ქვედა ნაწილიდან. ეს ჟესტი ყოველთვის მთავარ ეკრანზე გადაგიყვანთ."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"მთავარზე გადასვლა"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"ნებისმიერ დროს მთავარ ეკრანზე გადასასვლელად, გადაფურცლეთ ეკრანის ქვემოდან ზემოთ"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"გადაფურცლეთ ეკრანის ქვედა კიდიდან ზემოთ."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"უფრო ხანგრძლივად დააჭირეთ თითი ფანჯარას, რომ არ დაიხუროს."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"გადაფურცლეთ პირდაპირ ზემოთ და შემდეგ დააპაუზეთ."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"თქვენ შეასრულეთ აპების გადართვის ჟესტი."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"აპების გადასართავად გადაფურცლეთ"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"აპების გადასართავად, გადაფურცლეთ ეკრანის ქვედა კიდიდან ზემოთ, დააყოვნეთ, შემდეგ თითი აუშვით."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"აპებს შორის გადასართავად ეკრანის ქვედა კიდიდან ორი თითით გადაფურცლეთ, დააყოვნეთ და აუშვით."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"აპების გადართვა"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"მზად არის"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"მზადაა"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"პარამეტრები"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"მშვენიერია!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"სახელმძღვანელო <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"მზადაა!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"მთავარ გვერდზე გადასასვლელად გადაფურცლეთ ზევით"</string>
-    <string name="allset_description" msgid="6350320429953234580">"მზად ხართ ტელეფონის გამოსაყენებლად"</string>
+    <string name="allset_hint" msgid="459504134589971527">"მთავარ გვერდზე გადასასვლელად გადაფურცლეთ ზევით"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"შეეხეთ მთავარი ეკრანის ღილაკს მთავარ ეკრანზე გადასასვლელად"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"მზად ხართ, გამოიყენოთ <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"მოწყობილობა"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"სისტემის ნავიგაციის პარამეტრები"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"გაზიარება"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"ეკრანის ანაბეჭდი"</string>
     <string name="action_split" msgid="2098009717623550676">"გაყოფა"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"შეეხეთ სხვა აპს ეკრანის გასაყოფად"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"ეკრანის გაყოფა არ არის მხარდაჭერილი აპის მიერ."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"შეეხეთ სხვა აპს ეკრანის გასაყოფად"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"აირჩიეთ სხვა აპი ეკრანის გასაყოფად"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"ეს მოქმედება არ არის დაშვებული აპის ან თქვენი ორგანიზაციის მიერ"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"გსურთ, გამოტოვოთ ნავიგაციის სახელმძღვანელო?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"ამის მოგვიანებით პოვნა <xliff:g id="NAME">%1$s</xliff:g> აპში შეგიძლიათ"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"გაუქმება"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"გამოტოვება"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"ეკრანის შეტრიალება"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"ამოცანების ზოლის სასწავლო არე გამოჩნდა"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"ამოცანების ზოლის სასწავლო არე დაიხურა"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"აპების გადასართავად გამოიყენეთ ამოცანათა ზოლი"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"გადაათრიეთ კიდეზე ორი აპის ერთდოულად გამოსაყენებლად"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"ხანგრძლივად შეეხეთ ამოცანების ზოლის დასამალად"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"შემდეგი"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"უკან"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"ამოცანათა ზოლი: განათლება"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"2 აპის ერთდროულად გამოსაყენებლად გადაათრიეთ აპი კიდეზე"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"მოკლედ გადაფურცლეთ ზემოთ, რომ ამოცანათა ზოლი გამოაჩინოთ"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"მიიღეთ აპის შეთავაზებები თქვენი რუტინის მიხედვით"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"ჩართეთ ჟესტებით ნავიგაცია პარამეტრებში, რათა ავტომატურად დაიმალოთ სამუშაო ზოლი"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"გააკეთეთ მეტი ამოცანათა ზოლის მეშვეობით"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"დახურვა"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"მზადაა"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"მთავარი"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"ბოლოდროინდელი"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"შეტყობინებები"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"სწრაფი პარამეტრები"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"ამოცანათა ზოლი"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"ამოცანათა ზოლი ნაჩვენებია"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"ამოცანათა ზოლი დამალულია"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"ნავიგაციის ზოლი"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"ამოცანათა ზოლის მუდამ ჩვენება"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"შეცვალეთ ნავიგაციის რეჟიმი"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"ამოცანათა ზოლის გამყოფი"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"ზემოთ/მარცხნივ გადატანა"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"ქვემოთ/მარჯვნივ გადატანა"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{#-ით მეტი აპის ჩენება}other{#-ით მეტი აპის ჩვენება.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> და <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-kk/strings.xml b/quickstep/res/values-kk/strings.xml
index 9d3ca2d..68141aa 100644
--- a/quickstep/res/values-kk/strings.xml
+++ b/quickstep/res/values-kk/strings.xml
@@ -24,26 +24,25 @@
     <string name="recents_empty_message" msgid="7040467240571714191">"Соңғы элементтер жоқ"</string>
     <string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Қолданбаны пайдалану параметрлері"</string>
     <string name="recents_clear_all" msgid="5328176793634888831">"Барлығын өшіру"</string>
-    <string name="accessibility_recent_apps" msgid="4058661986695117371">"Соңғы пайдаланылған қолданбалар"</string>
+    <string name="accessibility_recent_apps" msgid="4058661986695117371">"Соңғы қолданбалар"</string>
     <string name="task_view_closed" msgid="9170038230110856166">"Тапсырма жабылды."</string>
     <string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
     <string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"&lt; 1 мин"</string>
     <string name="time_left_for_app" msgid="3111996412933644358">"Бүгін <xliff:g id="TIME">%1$s</xliff:g> қалды"</string>
-    <string name="title_app_suggestions" msgid="4185902664111965088">"Ұсынылған қолданбалар"</string>
+    <string name="title_app_suggestions" msgid="4185902664111965088">"Қолданба ұсыныстары"</string>
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"Ұсынылатын қолданбалар"</string>
     <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Негізгі экранның төменгі жолында қолданбаларды ұсыну"</string>
-    <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Ұсынылған қолданбалар негізгі экранда таңдаулылар арасында көрсетілетін болады"</string>
+    <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Қолданба ұсыныстары негізгі экрандағы таңдаулылар жолында көрсетілетін болады"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Жиі пайдаланылатын қолданбаларға негізгі экраннан кіруге болады. Ұсыныстар күнделікті әрекеттеріңізге сәйкес өзгереді. Төменгі қатардағы қолданбалар негізгі экранға қарай жоғары жылжиды."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Жиі пайдаланылатын қолданбаларға негізгі экраннан оңай кіре аласыз. Ұсыныстар күнделікті әрекеттеріңізге сәйкес өзгереді. Таңдаулылар жолындағы қолданбалар негізгі экранға ауысады."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Жиі пайдаланылатын қолданбаларға негізгі экраннан кіруге болады. Ұсыныстар күнделікті әрекеттеріңізге сәйкес өзгереді. Төменгі қатардағы қолданбалар жаңа қалтаға жылжиды."</string>
-    <string name="hotseat_edu_accept" msgid="1611544083278999837">"Ұсынылған қолданбаларды көру"</string>
+    <string name="hotseat_edu_accept" msgid="1611544083278999837">"Қолданба ұсыныстарын алу"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Жоқ, рақмет"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Параметрлер"</string>
     <string name="hotseat_auto_enrolled" msgid="522100018967146807">"Жиі пайдаланылатын қолданбалар осы жерде көрсетіледі. Олар күнделікті әрекеттеріңізге сәйкес өзгереді."</string>
-    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Ұсынылған қолданбаларды көру үшін төменгі қатардан керектерін сүйреп шығарыңыз."</string>
-    <string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Ұсынылған қолданбалар бос орынға қосылды."</string>
-    <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"Ұсынылған қолданбалар функциясы қосылды."</string>
-    <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"\"Ұсынылған қолданбалар\" функциясы өшірулі."</string>
+    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Қолданба ұсыныстарын алу үшін төменгі қатардан керектерін сүйреп шығарыңыз."</string>
+    <string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Қолданба ұсыныстары бос орынға қойылып отырады."</string>
+    <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"\"Қолданба ұсыныстары\" функциясы қосылды."</string>
+    <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"\"Қолданба ұсыныстары\" функциясы өшірулі."</string>
     <string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Болжалды қолданба: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Экранның оң немесе сол жиегінен сырғытыңыз."</string>
     <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"Экранның оң немесе сол жиегінен ортасына қарай сырғытып, саусағыңызды жіберіңіз."</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Артқа қайту қимылы сезгіштігін параметрлерден өзгертіңіз."</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Артқа қайту үшін сырғытыңыз"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Соңғы ашылған экранға оралу үшін экранның сол немесе оң жақ шетінен ортасына қарай сырғытыңыз."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Соңғы ашылған экранға оралу үшін екі саусақпен экранның сол не оң жағынан ортасына сырғытыңыз."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Артқа"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Экранның төменгі шетінен жоғары қарай сырғытыңыз."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Жіберер алдында кідіріс жасамаңыз."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Тігінен жоғары қарай сырғытыңыз."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Негізгі экранға қайту қимылын аяқтадыңыз."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Негізгі экранға өту үшін сырғытыңыз"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Экранның төменгі жағынан жоғары қарай сырғытыңыз. Сонда негізгі экран ашылады."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Екі саусақпен экранның төменгі жағынан жоғары сырғытыңыз. Бұл қимыл үнемі негізгі экранды ашады."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Негізгі бетке өту"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Кез келген уақытта негізгі экранға өту үшін экранның астыңғы жағынан жоғары қарай сырғытыңыз."</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Экранның төменгі шетінен жоғары қарай сырғытыңыз."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Жіберер алдында терезені ұзағырақ ұстап тұруға тырысыңыз."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Тігінен жоғары қарай сырғытыңыз да, кідіріңіз."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Қолданбаларды ауыстыру қимылын аяқтадыңыз."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Қолданбаларды ауыстыру үшін сырғытыңыз"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Бір қолданбадан екіншісіне ауысу үшін экранның төменгі жағынан жоғары қарай сырғытып, ұстап тұрып жіберіңіз."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Бір қолданбадан екіншісіне ауысу үшін екі саусақпен экранның төменгі жағынан жоғары қарай сырғытып, ұстап тұрып жіберіңіз."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Қолданбалар арасында ауысу"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Бәрі дайын"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Дайын"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Параметрлер"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Жақсы!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Оқулық: <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Бәрі дайын!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Негізгі экранға өту үшін жоғары қарай сырғытыңыз."</string>
-    <string name="allset_description" msgid="6350320429953234580">"Телефоныңыз пайдалануға дайын."</string>
+    <string name="allset_hint" msgid="459504134589971527">"Негізгі экранға өту үшін жоғары қарай сырғытыңыз."</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Негізгі экранға өту үшін негізгі экран түймесін түртіңіз."</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"<xliff:g id="DEVICE">%1$s</xliff:g> пайдалануға дайын."</string>
+    <string name="default_device_name" msgid="6660656727127422487">"құрылғы"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Навигацияның жүйелік параметрлері"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Бөлісу"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Скриншот"</string>
     <string name="action_split" msgid="2098009717623550676">"Бөлу"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Экранды бөлу режимін пайдалану үшін басқа қолданбаны түртіңіз."</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Қолданбада экранды бөлу мүмкін емес."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Экранды бөлу режимін пайдалану үшін басқа қолданбаны түртіңіз."</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Экранды бөлу үшін басқа қолданбаны таңдаңыз."</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Бұл әрекетке қолданба не ұйым рұқсат етпейді."</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Қимылдар оқулығын өткізіп жіберу керек пе?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Мұны кейін <xliff:g id="NAME">%1$s</xliff:g> қолданбасынан таба аласыз."</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Бас тарту"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Өткізіп жіберу"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Экранды бұру"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Тапсырмалар тақтасы бойынша нұсқаулық ашылды."</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Тапсырмалар тақтасы бойынша нұсқаулық жабылды."</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Қолданбаларды ауыстыру үшін тапсырма тақтасын пайдаланыңыз."</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Екі қолданбаны бір уақытта пайдалану үшін шетке сүйреңіз."</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Тапсырмалар тақтасын жасыру үшін басып тұрыңыз."</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Келесі"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Артқа"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Тапсырмалар жолағы: үйрену"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"2 қолданбаны бір мезгілде пайдалану үшін қолданбаны шетке сүйреңіз."</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Тапсырмалар жолағын көрсету үшін жоғары қарай ақырын сырғытыңыз."</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Іс-әрекеттеріңізге негізделген қолданба ұсыныстарын алыңыз."</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Тапсырмалар жолағын автоматты түрде жасыру үшін параметрлерден қимылмен басқаруды қосыңыз."</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Тапсырмалар жолағында мүмкіндік көп"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Жабу"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Дайын"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Негізгі экран"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Соңғылары"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Хабарландырулар"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Жылдам параметрлер"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Тапсырмалар жолағы"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Тапсырмалар жолағы көрсетілді"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Тапсырмалар жолағы жасырылды"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Навигация жолағы"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Тапсырма жолағын үнемі көрсету"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Навигация режимін өзгерту"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Тапсырмалар жолағын бөлгіш"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Жоғары/солға жылжыту"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Төмен/оңға жылжыту"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Тағы # қолданбаны көрсету.}other{Тағы # қолданбаны көрсету.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> және <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-km/strings.xml b/quickstep/res/values-km/strings.xml
index 3295a63..aa20709 100644
--- a/quickstep/res/values-km/strings.xml
+++ b/quickstep/res/values-km/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"ទទួលបាន​ការណែនាំកម្មវិធី​នៅលើ​ជួរដេកសំណព្វ​នៃអេក្រង់ដើម​របស់អ្នក"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"ចូលប្រើ​កម្មវិធី​ដែលអ្នកប្រើ​ញឹកញាប់បំផុត​បានយ៉ាង​ងាយស្រួល​នៅលើ​អេក្រង់ដើម​ផ្ទាល់។ ការណែនាំ​នឹងប្រែប្រួល​ទៅតាម​ទម្លាប់​របស់អ្នក។ កម្មវិធី​នៅជួរ​ខាងក្រោម​នឹងផ្លាស់ទីឡើង​ទៅអេក្រង់ដើម​របស់អ្នក។"</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"ចូលប្រើ​កម្មវិធី​ដែលអ្នកប្រើ​ញឹកញាប់បំផុត​បានយ៉ាង​ងាយស្រួល​នៅលើ​អេក្រង់ដើមដោយផ្ទាល់។ ការណែនាំ​នឹងប្រែប្រួល​ទៅតាម​ទម្លាប់​របស់អ្នក។ កម្មវិធី​នៅក្នុង​ជួរដេក​សំណព្វ​នឹងផ្លាស់ទី​ទៅអេក្រង់ដើម​របស់អ្នក។"</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"ចូលប្រើ​កម្មវិធី​ដែលអ្នកប្រើ​ញឹកញាប់បំផុត​បានយ៉ាង​ងាយស្រួល​នៅលើ​អេក្រង់ដើម​ផ្ទាល់។ ការណែនាំ​នឹងប្រែប្រួល​ទៅតាម​ទម្លាប់​របស់អ្នក។ កម្មវិធី​នៅជួរ​ខាងក្រោម​នឹងផ្លាស់ទី​ទៅថតថ្មី។"</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"ទទួលការណែនាំ​កម្មវិធី"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"ទេ អរគុណ"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"ការកំណត់"</string>
@@ -51,8 +50,10 @@
     <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"អ្នក​បានបញ្ចប់​ចលនា​ថយក្រោយ​ហើយ។"</string>
     <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"ត្រូវប្រាកដថា​អ្នកមិនអូស​ទៅជិត​ផ្នែកខាងក្រោម​នៃអេក្រង់ពេក​។"</string>
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"ដើម្បីប្ដូរកម្រិត​រំញោចនឹង​ចលនាថយក្រោយ សូមចូលទៅកាន់​ការកំណត់"</string>
-    <string name="back_gesture_intro_title" msgid="19551256430224428">"អូស​ដើម្បី​ត្រឡប់​ទៅវិញ"</string>
+    <string name="back_gesture_intro_title" msgid="19551256430224428">"អូស​ដើម្បី​ថយក្រោយ"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"ដើម្បី​ត្រឡប់ទៅ​អេក្រង់​ចុងក្រោយវិញ សូមអូស​ពីគែម​ខាងឆ្វេង ឬខាងស្ដាំ​ទៅផ្នែកកណ្ដាល​នៃអេក្រង់​។"</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"ដើម្បី​ត្រឡប់​ទៅ​អេក្រង់​ចុងក្រោយ​វិញ អូស​ដោយ​ប្រើ​ម្រាមដៃពីរ​ពី​គែម​ខាង​ឆ្វេង ឬ​ខាង​ស្ដាំ​ទៅផ្នែក​​កណ្ដាលនៃ​អេក្រង់។"</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"ថយ​ក្រោយ"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"ត្រូវប្រាកដថា​អ្នកអូសឡើងលើ​ពីគែមខាងក្រោម​នៃអេក្រង់​។"</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"ត្រូវប្រាកដថា​អ្នកមិនផ្អាក មុនពេល​ដកដៃ​។"</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"ត្រូវប្រាកដថា​អ្នកអូស​ត្រង់ឡើងលើ​។"</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"អ្នក​បានបញ្ចប់​ចលនា​ចូលទៅកាន់​ទំព័រដើម​ហើយ។"</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"អូស​ដើម្បីចូល​ទៅកាន់​អេក្រង់ដើម"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"អូស​ឡើងលើ​ពីផ្នែកខាងក្រោម​នៃ​អេក្រង់របស់អ្នក។ ចលនា​នេះ​នាំ​អ្នក​ទៅ​អេក្រង់ដើម​ជានិច្ច។"</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"អូសឡើងលើដោយប្រើម្រាមដៃពីរពីផ្នែកខាងក្រោមនៃ​អេក្រង់។ ចលនានេះ​តែងតែ​នាំអ្នក​ទៅ​អេក្រង់​ដើម​ជា​និច្ច។"</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"ទៅទំព័រដើម"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"ដើម្បីទៅកាន់អេក្រង់ដើមរបស់អ្នកនៅពេលណាក៏បាន សូមអូសឡើងលើពីផ្នែកខាងក្រោមនៃអេក្រង់របស់អ្នក"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"ត្រូវប្រាកដថា​អ្នកអូសឡើងលើ​ពីគែមខាងក្រោម​នៃអេក្រង់​។"</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"សាកល្បង​សង្កត់វិនដូ​ឱ្យបានយូរ​ជាងនេះ មុនពេល​ដកដៃ​។"</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"ត្រូវប្រាកដថា​អ្នកអូស​ត្រង់ឡើងលើ រួចផ្អាក។"</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"អ្នក​បានបញ្ចប់​ចលនា​ប្ដូរកម្មវិធី​ហើយ។"</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"អូស​ដើម្បីប្ដូរ​កម្មវិធី"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"ដើម្បីប្ដូររវាងកម្មវិធី សូមអូសឡើងលើពីផ្នែកខាងក្រោមនៃអេក្រង់របស់អ្នក រួចចុចឱ្យជាប់ បន្ទាប់មកដកដៃចេញ។"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"ដើម្បីប្ដូរកម្មវិធី អូសឡើងលើ​ដោយប្រើម្រាមដៃពីរពី​ផ្នែក​ខាងក្រោមនៃ​អេក្រង់របស់អ្នក សង្កត់ ហើយ​លែងវិញ។"</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"ប្ដូរ​កម្មវិធី"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"រួចហើយ"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"រួចរាល់"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"ការកំណត់"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"ល្អ!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"មេរៀនទី <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"រួចហើយ!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"អូសឡើងលើ ដើម្បី​ទៅកាន់​អេក្រង់ដើម"</string>
-    <string name="allset_description" msgid="6350320429953234580">"អ្នក​អាច​ចាប់ផ្ដើម​ប្រើ​ទូរសព្ទ​របស់អ្នក​បានហើយ"</string>
+    <string name="allset_hint" msgid="459504134589971527">"អូស​ឡើង​លើ ​ដើម្បី​ចូលទៅកាន់អេក្រង់ដើម"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"ចុចប៊ូតុងដើម ដើម្បីចូលទៅកាន់អេក្រង់ដើមរបស់អ្នក"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"អ្នកអាចចាប់ផ្ដើមប្រើ <xliff:g id="DEVICE">%1$s</xliff:g> របស់អ្នកបានហើយ"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"ឧបករណ៍"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"ការកំណត់​ការរុករក​ប្រព័ន្ធ"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"ចែករំលែក"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"រូបថតអេក្រង់"</string>
     <string name="action_split" msgid="2098009717623550676">"បំបែក"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"ចុចកម្មវិធី​ផ្សេងទៀត ដើម្បីប្រើមុខងារ​បំបែកអេក្រង់"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"កម្មវិធីមិនអាចប្រើមុខងារ​បំបែកអេក្រង់បានទេ។"</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"ចុចកម្មវិធី​ផ្សេងទៀត ដើម្បីប្រើ​មុខងារបំបែកអេក្រង់"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"ជ្រើសរើសកម្មវិធីផ្សេងទៀត ដើម្បីប្រើមុខងារ​បំបែកអេក្រង់"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"សកម្មភាពនេះ​មិនត្រូវបានអនុញ្ញាតដោយកម្មវិធី​ ឬ​ស្ថាប័ន​របស់អ្នកទេ"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"រំលង​មេរៀន​អំពី​ការរុករក​ឬ?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"អ្នកអាចស្វែងរកមេរៀននេះនៅពេលក្រោយក្នុងកម្មវិធី <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"បោះបង់"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"រំលង"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"បង្វិលអេក្រង់"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"ការបង្រៀនអំពីរបារកិច្ចការបានបង្ហាញ"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"ការបង្រៀនអំពីរបារកិច្ចការត្រូវបានបិទ"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"ប្រើ​របារកិច្ចការ ដើម្បី​ប្ដូរកម្មវិធី"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"អូស​ទៅចំហៀង ដើម្បីប្រើ​កម្មវិធីពីរ​ក្នុងពេលតែមួយ"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"ចុចឱ្យជាប់ ដើម្បីលាក់របារកិច្ចការ"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"បន្ទាប់"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"ថយក្រោយ"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"ការអប់រំលើរបារកិច្ចការ"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"អូសកម្មវិធីទៅចំហៀង ដើម្បីប្រើកម្មវិធី 2 ក្នុងពេលតែមួយ"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"អូសឡើងលើយឺតៗ ដើម្បីបង្ហាញរបារកិច្ចការ"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"ទទួលការណែនាំកម្មវិធីដោយផ្អែកលើទម្លាប់របស់អ្នក"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"បើកការរុករក​ដោយប្រើចលនានៅក្នុងការកំណត់ ដើម្បីលាក់របារកិច្ចការដោយស្វ័យប្រវត្តិ"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"ធ្វើបានកាន់តែច្រើនដោយប្រើរបារកិច្ចការ"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"បិទ"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"រួចរាល់"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"ទំព័រដើម"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"ថយក្រោយ"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"ប៊ូតុងប្ដូរ IME"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"ថ្មីៗ"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"ការ​ជូនដំណឹង"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"ការកំណត់រហ័ស"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"របារកិច្ចការ"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"បានបង្ហាញរបារកិច្ចការ"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"បានលាក់របារកិច្ចការ"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"របាររុករក"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"បង្ហាញរបារកិច្ចការជានិច្ច"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"ប្ដូរ​មុខងាររុករក"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"បន្ទាត់​ខណ្ឌចែករបារកិច្ចការ"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"ផ្លាស់ទីទៅខាងលើ/ឆ្វេង"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"ផ្លាស់ទីទៅខាងក្រោម/ស្ដាំ"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{បង្ហាញកម្មវិធី # ទៀត។}other{បង្ហាញ​កម្មវិធី # ទៀត។}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> និង <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-kn/strings.xml b/quickstep/res/values-kn/strings.xml
index 01c7dd5..9bb18fa 100644
--- a/quickstep/res/values-kn/strings.xml
+++ b/quickstep/res/values-kn/strings.xml
@@ -33,9 +33,8 @@
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"ನಿಮ್ಮ ಮುನ್ಸೂಚಿತ ಆ್ಯಪ್‌ಗಳು"</string>
     <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"ನಿಮ್ಮ ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನ ಕೆಳಭಾಗದ ಸಾಲಿನಲ್ಲಿ ಆ್ಯಪ್ ಸಲಹೆಗಳನ್ನು ಪಡೆಯಿರಿ"</string>
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"ನಿಮ್ಮ ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನ ಮೆಚ್ಚಿನವುಗಳ ಸಾಲಿನಲ್ಲಿ ಆ್ಯಪ್ ಸಲಹೆಗಳನ್ನು ಪಡೆಯಿರಿ"</string>
-    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"ನೀವು ಹೆಚ್ಚು ಬಳಸಿದ ಆ್ಯಪ್‌ಗಳನ್ನು ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿಯೇ ಸುಲಭವಾಗಿ ಪ್ರವೇಶಿಸಿ. ನಿಮ್ಮ ದಿನಚರಿಯನ್ನು ಆಧರಿಸಿ ಸಲಹೆಗಳು ಬದಲಾಗುತ್ತವೆ. ಕೆಳಭಾಗದ ಸಾಲಿನಲ್ಲಿನ ಆ್ಯಪ್‌ಗಳು ನಿಮ್ಮ ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ ಚಲಿಸುತ್ತವೆ."</string>
+    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"ನೀವು ಹೆಚ್ಚು ಬಳಸಿದ ಆ್ಯಪ್‌ಗಳನ್ನು ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿಯೇ ಸುಲಭವಾಗಿ ಪ್ರವೇಶಿಸಿ. ನಿಮ್ಮ ದಿನಚರಿಯನ್ನು ಆಧರಿಸಿ ಸಲಹೆಗಳು ಬದಲಾಗುತ್ತವೆ. ಕೆಳಭಾಗದ ಸಾಲಿನಲ್ಲಿನ ಆ್ಯಪ್‌ಗಳು ನಿಮ್ಮ ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ ಕಡೆಗೆ ಚಲಿಸುತ್ತವೆ."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"ನೀವು ಹೆಚ್ಚು ಬಳಸಿದ ಆ್ಯಪ್‌ಗಳನ್ನು ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿಯೇ ಸುಲಭವಾಗಿ ಪ್ರವೇಶಿಸಿ. ನಿಮ್ಮ ದಿನಚರಿಯನ್ನು ಆಧರಿಸಿ ಸಲಹೆಗಳು ಬದಲಾಗುತ್ತವೆ. ಮೆಚ್ಚಿನವುಗಳ ಸಾಲಿನಲ್ಲಿನ ಆ್ಯಪ್‌ಗಳು ನಿಮ್ಮ ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ಗೆ ಚಲಿಸುತ್ತವೆ."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"ನೀವು ಹೆಚ್ಚು ಬಳಸಿದ ಆ್ಯಪ್‌ಗಳನ್ನು ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿಯೇ ಸುಲಭವಾಗಿ ಪ್ರವೇಶಿಸಿ. ನಿಮ್ಮ ದಿನಚರಿಯನ್ನು ಆಧರಿಸಿ ಸಲಹೆಗಳು ಬದಲಾಗುತ್ತವೆ. ಕೆಳಭಾಗದ ಸಾಲಿನಲ್ಲಿನ ಆ್ಯಪ್‌ಗಳು ಹೊಸ ಫೋಲ್ಡರ್‌ಗೆ ಚಲಿಸುತ್ತವೆ."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"ಆ್ಯಪ್ ಸಲಹೆಗಳನ್ನು ಪಡೆಯಿರಿ"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"ಬೇಡ"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"ಬ್ಯಾಕ್ ಗೆಸ್ಚರ್‌ನ ಸೂಕ್ಷ್ಮತೆ ಬದಲಾಯಿಸಲು, ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ಹೋಗಿ"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"ಹಿಂದಕ್ಕೆ ಹೋಗಲು ಸ್ವೈಪ್ ಮಾಡಿ"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"ಕೊನೆಯ ಸ್ಕ್ರೀನ್‌ಗೆ ಹಿಂತಿರುಗಲು, ಎಡ ಅಥವಾ ಬಲ ಅಂಚಿನಿಂದ ಸ್ಕ್ರೀನ್ ಮಧ್ಯಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"ಹಿಂದಿನ ಸ್ಕ್ರೀನ್‌ಗೆ ಹೋಗಲು, 2 ಬೆರಳುಗಳಿಂದ ಎಡ ಅಥವಾ ಬಲ ಅಂಚಿನಿಂದ ಸ್ಕ್ರೀನ್ ಮಧ್ಯಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"ಹಿಂದಿರುಗಿ"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"ಸ್ಕ್ರೀನ್‌ನ ಕೆಳಗಿನ ಅಂಚಿನಿಂದ ನೀವು ಸ್ವೈಪ್ ಮಾಡುತ್ತಿದ್ದೀರಿ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"ವಿರಾಮಗೊಳಿಸದೆ ನಿಮ್ಮ ಬೆರಳನ್ನು ಸ್ಕ್ರೀನ್‌ನಿಂದ ಮೇಲೆತ್ತಿ."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"ನೀವು ನೇರವಾಗಿ ಸ್ವೈಪ್ ಮಾಡುತ್ತಿದ್ದೀರಿ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"ನೀವು ಗೋ ಹೋಮ್ ಗೆಸ್ಚರ್ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸಿದ್ದೀರಿ."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ಗೆ ಹಿಂತಿರುಗಲು ಸ್ವೈಪ್ ಮಾಡಿ"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"ಸ್ಕ್ರೀನ್‌ನ ಕೆಳಗಿನಿಂದ ಮೇಲೆ ಸ್ವೈಪ್ ಮಾಡಿ. ಈ ಗೆಸ್ಚರ್ ಯಾವಾಗಲೂ ನಿಮ್ಮನ್ನು ಹೋಮ್‌ ಸ್ಕ್ರೀನ್‌ಗೆ ಕರೆದೊಯ್ಯುತ್ತದೆ."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"2 ಬೆರಳುಗಳಿಂದ ಸ್ಕ್ರೀನ್‌ನ ಕೆಳಗಿನಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ. ಈ ಗೆಸ್ಚರ್ ಯಾವಾಗಲೂ ನಿಮ್ಮನ್ನು ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ಗೆ ಕರೆದೊಯ್ಯುತ್ತದೆ."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"ಮುಖಪುಟಕ್ಕೆ ಹೋಗಿ"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ನಿಮ್ಮ ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ಗೆ ಹೋಗಲು, ನಿಮ್ಮ ಸ್ಕ್ರೀನ್‌ನ ಕೆಳಭಾಗದಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"ಸ್ಕ್ರೀನ್‌ನ ಕೆಳಗಿನ ಅಂಚಿನಿಂದ ನೀವು ಸ್ವೈಪ್ ಮಾಡುತ್ತಿದ್ದೀರಿ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"ಬೆರಳನ್ನು ಮೇಲೆತ್ತುವ ಮೊದಲು ವಿಂಡೋವನ್ನು ಹೆಚ್ಚು ಸಮಯ ಹಿಡಿದಿಡಲು ಪ್ರಯತ್ನಿಸಿ."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"ನೀವು ನೇರವಾಗಿ ಸ್ವೈಪ್ ಮಾಡಿ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ, ನಂತರ ವಿರಾಮಗೊಳಿಸಿ."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"ನೀವು ಆ್ಯಪ್‌ಗಳನ್ನು ಬದಲಾಯಿಸುವ ಗೆಸ್ಚರ್ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸಿದ್ದೀರಿ."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"ಆ್ಯಪ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಲು ಸ್ವೈಪ್ ಮಾಡಿ"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"ಆ್ಯಪ್‌ಗಳ ನಡುವೆ ಬದಲಿಸಲು, ನಿಮ್ಮ ಸ್ಕ್ರೀನ್‌ನ ಕೆಳಭಾಗದಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ, ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಿ, ನಂತರ ಬಿಟ್ಟುಬಿಡಿ."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"ಆ್ಯಪ್‌ಗಳ ನಡುವೆ ಬದಲಿಸಲು, 2 ಬೆರಳುಗಳಿಂದ ನಿಮ್ಮ ಸ್ಕ್ರೀನ್‌ನ ಕೆಳಭಾಗದಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ, ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಿ, ನಂತರ ಬಿಟ್ಟುಬಿಡಿ."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"ಆ್ಯಪ್‌ಗಳನ್ನು ಬದಲಿಸಿ"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"ಸಂಪೂರ್ಣ ಸಿದ್ಧವಾಗಿದೆ"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"ಮುಗಿದಿದೆ"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
@@ -74,36 +80,46 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"ಚೆನ್ನಾಗಿದೆ!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"ಟ್ಯುಟೋರಿಯಲ್ <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"ಎಲ್ಲವೂ ಸಿದ್ಧವಾಗಿದೆ!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"ಮುಖಪುಟಕ್ಕೆ ಹೋಗಲು ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ"</string>
-    <string name="allset_description" msgid="6350320429953234580">"ನಿಮ್ಮ ಫೋನ್ ಬಳಸುವುದನ್ನು ಪ್ರಾರಂಭಿಸಲು ನೀವು ಸಿದ್ದರಾಗಿರುವಿರಿ"</string>
+    <string name="allset_hint" msgid="459504134589971527">"ಮುಖಪುಟಕ್ಕೆ ಹೋಗಲು ಮೇಲೆ ಸ್ವೈಪ್ ಮಾಡಿ"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"ನಿಮ್ಮ ಮುಖಪುಟದ ಪರದೆಗೆ ಹೋಗಲು ಮುಖಪುಟ ಬಟನ್ ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"ನಿಮ್ಮ <xliff:g id="DEVICE">%1$s</xliff:g> ಬಳಸುವುದನ್ನು ಪ್ರಾರಂಭಿಸಲು ನೀವು ಸಿದ್ಧರಾಗಿರುವಿರಿ"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"ಸಾಧನ"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"ಸಿಸ್ಟಂ ನ್ಯಾವಿಗೇಶನ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"ಹಂಚಿಕೊಳ್ಳಿ"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"ಸ್ಕ್ರೀನ್‌ಶಾಟ್"</string>
     <string name="action_split" msgid="2098009717623550676">"ವಿಭಜಿಸಿ"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"ಸ್ಪ್ಲಿಟ್ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಬಳಸಲು ಬೇರೊಂದು ಆ್ಯಪ್ ಮೇಲೆ ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"ಸ್ಪ್ಲಿಟ್ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಆ್ಯಪ್ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"ಸ್ಪ್ಲಿಟ್ ಸ್ಕ್ರೀನ್ ಬಳಸಲು ಬೇರೆ ಆ್ಯಪ್ ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"\"ಪರದೆ ಬೇರ್ಪಡಿಸಿ\" ಬಳಸಲು ಬೇರೆ ಆ್ಯಪ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"ಆ್ಯಪ್ ಅಥವಾ ನಿಮ್ಮ ಸಂಸ್ಥೆಯು ಈ ಕ್ರಿಯೆಯನ್ನು ಅನುಮತಿಸುವುದಿಲ್ಲ"</string>
-    <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"ನ್ಯಾವಿಗೇಷನ್ ಟ್ಯುಟೋರಿಯಲ್ ಸ್ಕಿಪ್ ಮಾಡಿ?"</string>
+    <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"ನ್ಯಾವಿಗೇಶನ್ ಟ್ಯುಟೋರಿಯಲ್ ಸ್ಕಿಪ್ ಮಾಡಬೇಕೇ?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"<xliff:g id="NAME">%1$s</xliff:g> ಆ್ಯಪ್‌ನಲ್ಲಿ ಇದನ್ನು ನಂತರ ಕಾಣಬಹುದು"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"ರದ್ದುಮಾಡಿ"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"ಸ್ಕಿಪ್ ಮಾಡಿ"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"ಸ್ಕ್ರೀನ್ ತಿರುಗಿಸಿ"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"ಟಾಸ್ಕ್‌ಬಾರ್ ಶಿಕ್ಷಣ ಕಾಣಿಸಿಕೊಂಡಿದೆ"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"ಟಾಸ್ಕ್‌ಬಾರ್ ಶಿಕ್ಷಣ ಮುಚ್ಚಿದೆ"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"ಆ್ಯಪ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಲು ಟಾಸ್ಕ್ ಬಾರ್ ಬಳಸಿ"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"ಏಕಕಾಲದಲ್ಲಿ ಎರಡು ಆ್ಯಪ್‌ಗಳನ್ನು ಬಳಸಲು, ಬದಿಗೆ ಡ್ರ್ಯಾಗ್ ಮಾಡಿ"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"ಟಾಸ್ಕ್‌ಬಾರ್ ಅನ್ನು ಮರೆಮಾಡಲು ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹೋಲ್ಡ್ ಮಾಡಿ"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"ಮುಂದೆ"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"ಹಿಂದೆ"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"ಟಾಸ್ಕ್‌ಬಾರ್ ಶಿಕ್ಷಣ"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"ಒಂದೇ ಬಾರಿಗೆ 2 ಆ್ಯಪ್‌ಗಳನ್ನು ಬಳಸಲು ಆ್ಯಪ್ ಅನ್ನು ಬದಿಗೆ ಎಳೆಯಿರಿ"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"ಟಾಸ್ಕ್‌ಬಾರ್ ಅನ್ನು ತೋರಿಸಲು ನಿಧಾನವಾಗಿ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"ನಿಮ್ಮ ದಿನಚರಿಯ ಆಧಾರದ ಮೇಲೆ ಆ್ಯಪ್ ಸಲಹೆಗಳನ್ನು ಪಡೆಯಿರಿ"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"ಟಾಸ್ಕ್‌ಬಾರ್ ಅನ್ನು ಸ್ವಯಂ-ಮರೆಮಾಡಲು ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಗೆಸ್ಚರ್ ನ್ಯಾವಿಗೇಶನ್ ಅನ್ನು ಆನ್ ಮಾಡಿ"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"ಟಾಸ್ಕ್‌ಬಾರ್ ಮೂಲಕ ಹೆಚ್ಚಿನದನ್ನು ಮಾಡಿ"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"ಮುಚ್ಚಿರಿ"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"ಮುಗಿದಿದೆ"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"ಮುಖಪುಟ"</string>
-    <string name="taskbar_button_a11y" msgid="5241161324875094465">"ಪ್ರವೇಶಿಸುವಿಕೆ"</string>
+    <string name="taskbar_button_a11y" msgid="5241161324875094465">"ಆ್ಯಕ್ಸೆಸಿಬಿಲಿಟಿ"</string>
     <string name="taskbar_button_back" msgid="8558862226461164514">"ಹಿಂದೆ"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME ಪರಿವರ್ತಕ"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"ಇತ್ತೀಚಿನವು"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"ಅಧಿಸೂಚನೆಗಳು"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"ತ್ವರಿತ ಸೆಟ್ಟಿಂಗ್‍ಗಳು"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"ಟಾಸ್ಕ್‌ಬಾರ್"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"ಟಾಸ್ಕ್‌ಬಾರ್ ತೋರಿಸಲಾಗಿದೆ"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"ಟಾಸ್ಕ್‌ಬಾರ್ ಮರೆಮಾಡಲಾಗಿದೆ"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"ನ್ಯಾವಿಗೇಷನ್ ಬಾರ್"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"ಯಾವಾಗಲೂ ಟಾಸ್ಕ್‌ಬಾರ್ ತೋರಿಸಿ"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"ನ್ಯಾವಿಗೇಶನ್ ಮೋಡ್ ಬದಲಾಯಿಸಿ"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"ಟಾಸ್ಕ್‌ಬಾರ್ ಡಿವೈಡರ್"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"ಮೇಲಿನ/ಎಡಭಾಗಕ್ಕೆ ಸರಿಸಿ"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"ಕೆಳಗಿನ/ಬಲಭಾಗಕ್ಕೆ ಸರಿಸಿ"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{ಇನ್ನೂ # ಆ್ಯಪ್ ಅನ್ನು ತೋರಿಸಿ.}one{ಇನ್ನೂ # ಆ್ಯಪ್‌ಗಳನ್ನು ತೋರಿಸಿ.}other{ಇನ್ನೂ # ಆ್ಯಪ್‌ಗಳನ್ನು ತೋರಿಸಿ.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> ಮತ್ತು <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-ko/strings.xml b/quickstep/res/values-ko/strings.xml
index 08e5642..4cef3ca 100644
--- a/quickstep/res/values-ko/strings.xml
+++ b/quickstep/res/values-ko/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"홈 화면의 즐겨찾기 행에서 앱 제안 보기"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"홈 화면에서 자주 사용하는 앱에 바로 액세스할 수 있습니다. 제안은 사용 습관에 따라 바뀌며, 하단의 앱들은 홈 화면으로 이동합니다."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"홈 화면에서 가장 많이 사용한 앱에 바로 액세스할 수 있습니다. 제안은 루틴에 따라 달라집니다. 즐겨찾기 행의 앱이 홈 화면으로 이동합니다."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"홈 화면에서 자주 사용하는 앱에 바로 액세스할 수 있습니다. 제안은 사용 습관에 따라 바뀌며, 하단의 앱들은 새 폴더로 이동합니다."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"앱 제안받기"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"나중에"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"설정"</string>
@@ -52,21 +51,28 @@
     <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"화면 하단에 지나치게 가까운 곳에서 스와이프하면 안 됩니다."</string>
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"돌아가기 동작의 민감도를 변경하려면 설정으로 이동하세요"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"스와이프하여 돌아가기"</string>
-    <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"마지막 화면으로 돌아가려면 왼쪽 또는 오른쪽 가장자리에서 화면 중앙으로 스와이프하세요."</string>
+    <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"이전 화면으로 돌아가려면 왼쪽 또는 오른쪽 가장자리에서 화면 중앙으로 스와이프하세요."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"마지막 화면으로 돌아가려면 두 손가락을 사용해 왼쪽 또는 오른쪽 가장자리에서 화면 중앙으로 스와이프하세요"</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"뒤로"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"화면 하단 가장자리에서 위로 스와이프하세요."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"손가락을 떼기 전에 멈추지 않아야 합니다."</string>
-    <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"위로 똑바르게 스와이프하세요."</string>
+    <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"위로 곧게 스와이프하세요."</string>
     <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"홈으로 이동 동작을 완료했습니다. 이번에는 뒤로 돌아가는 방법을 알아보겠습니다."</string>
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"홈으로 이동 동작을 완료했습니다."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"스와이프하여 홈으로 이동"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"화면 하단에서 위로 스와이프합니다. 이 동작을 사용하면 언제든지 홈 화면으로 이동할 수 있습니다."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"두 손가락을 사용해 화면 하단에서 위로 스와이프하세요. 이 동작을 사용하면 언제든지 홈 화면으로 이동할 수 있습니다"</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"홈으로 이동"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"언제든지 화면을 아래에서 위로 스와이프하여 홈 화면으로 이동할 수 있습니다"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"화면 하단 가장자리에서 위로 스와이프하세요."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"창을 더 오래 누르고 있다가 손가락을 떼 보세요."</string>
-    <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"위로 똑바르게 스와이프한 후 잠깐 멈추세요."</string>
+    <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"위로 곧게 스와이프한 후 잠시 멈추세요."</string>
     <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"동작 사용 방법을 알아봤습니다. 동작을 사용 중지하려면 설정으로 이동하세요."</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"앱 전환 동작을 완료했습니다."</string>
-    <string name="overview_gesture_intro_title" msgid="2902054412868489378">"스와이프로 앱 전환"</string>
+    <string name="overview_gesture_intro_title" msgid="2902054412868489378">"스와이프하여 앱 전환"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"앱 간에 전환하려면 화면 하단에서 위로 스와이프하고 잠시 멈춘 다음 손가락을 떼세요."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"앱 간에 전환하려면 두 손가락을 사용해 화면 하단에서 위로 스와이프하고 잠시 멈춘 다음 손가락을 떼세요"</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"앱 전환"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"설정 완료"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"완료"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"설정"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"잘하셨습니다"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"튜토리얼 <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"설정 완료"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"위로 스와이프하여 홈으로 이동"</string>
-    <string name="allset_description" msgid="6350320429953234580">"휴대전화를 사용할 준비가 되었습니다."</string>
+    <string name="allset_hint" msgid="459504134589971527">"위로 스와이프하여 홈으로 이동"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"홈 화면으로 이동하려면 홈 버튼을 탭하세요."</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"<xliff:g id="DEVICE">%1$s</xliff:g>을(를) 사용할 준비가 되었습니다."</string>
+    <string name="default_device_name" msgid="6660656727127422487">"기기"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"시스템 탐색 설정"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"공유"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"스크린샷"</string>
     <string name="action_split" msgid="2098009717623550676">"분할"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"다른 앱을 탭하여 화면 분할 사용"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"앱이 화면 분할을 지원하지 않습니다."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"다른 앱을 탭하여 화면 분할 사용"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"화면 분할을 사용하려면 다른 앱을 선택하세요."</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"이 작업은 앱 또는 조직에서 허용되지 않습니다."</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"이동 방법 튜토리얼을 건너뛰시겠습니까?"</string>
-    <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"이 튜토리얼은 <xliff:g id="NAME">%1$s</xliff:g> 앱에서 다시 볼 수 있습니다"</string>
+    <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"이 튜토리얼은 <xliff:g id="NAME">%1$s</xliff:g> 앱에서 다시 볼 수 있습니다."</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"취소"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"건너뛰기"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"화면 회전"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"작업 표시줄 튜토리얼 패널 표시됨"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"작업 표시줄 튜토리얼 패널 닫힘"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"작업 표시줄을 사용하여 앱 전환"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"옆으로 드래그하여 한 번에 앱 두 개 사용"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"작업 표시줄을 숨기려면 길게 터치하세요."</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"다음"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"뒤로"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"태스크 바 정보"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"앱을 옆으로 드래그하여 앱 2개를 동시에 사용합니다."</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"위로 천천히 스와이프하면 태스크 바가 표시됩니다."</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"사용 습관에 따라 앱 제안을 받습니다."</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"태스크 바를 자동 숨김하려면 설정에서 동작 탐색을 켜세요."</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"태스크 바 최대한 활용하기"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"닫기"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"완료"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"홈"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"뒤로"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME 전환기"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"최근 항목"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"알림"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"빠른 설정"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"태스크 바"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"태스크 바 표시"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"태스크 바 숨김"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"탐색 메뉴"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"태스크 바 항상 표시"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"탐색 모드 변경"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"태스크 바 분할"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"상단/왼쪽으로 이동"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"하단/오른쪽으로 이동"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{앱 #개 더 표시}other{앱 #개 더 표시}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> 및 <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-ky/strings.xml b/quickstep/res/values-ky/strings.xml
index c1ca8b3..64a1c90 100644
--- a/quickstep/res/values-ky/strings.xml
+++ b/quickstep/res/values-ky/strings.xml
@@ -22,7 +22,7 @@
     <string name="recent_task_option_pin" msgid="7929860679018978258">"Кадап коюу"</string>
     <string name="recent_task_option_freeform" msgid="48863056265284071">"Эркин форма режими"</string>
     <string name="recents_empty_message" msgid="7040467240571714191">"Акыркы колдонмолор жок"</string>
-    <string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Колдонмону пайдалануу жөндөөлөрү"</string>
+    <string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Колдонмону пайдалануу параметрлери"</string>
     <string name="recents_clear_all" msgid="5328176793634888831">"Баарын тазалоо"</string>
     <string name="accessibility_recent_apps" msgid="4058661986695117371">"Акыркы колдонмолор"</string>
     <string name="task_view_closed" msgid="9170038230110856166">"Тапшырма жабылды"</string>
@@ -35,10 +35,9 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Сунушталган колдонмолор башкы экрандагы тандалмалардын катарында көрүнөт."</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Көп колдонулган колдонмолор башкы экранда жайгашып, алардын тизмеси маал-маалы менен өзгөрүп турат. Ылдый жакта жайгашкан тилкедеги колдонмолор башкы экранга жылдырылат."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Көп иштетилген колдонмолорго Башкы экрандан оңой кириңиз. Сунуштар тартиптин негизинде өзгөрөт. Тандалмалардын катарындагы колдонмолор башкы экраныңызга жылдырылат."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Көп колдонулган колдонмолор башкы экранда жайгашып, алардын тизмеси маал-маалы менен өзгөрүп турат. Ылдый жакта жайгашкан тилкедеги колдонмолор жаңы папкага жылдырылат."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Сунушталган колдонолорду алуу"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Жок, рахмат"</string>
-    <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Жөндөөлөр"</string>
+    <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Параметрлер"</string>
     <string name="hotseat_auto_enrolled" msgid="522100018967146807">"Көп иштетилген колдонмолор ушул жерде көрүнүп, тартиптин негизинде өзгөрөт"</string>
     <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Сунуштарды алып туруу үчүн ылдый жактагы тилкедеги колдонмолорду сүйрөп келиңиз"</string>
     <string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Сунушталган колдонмолор бош жерге кошулат"</string>
@@ -50,9 +49,11 @@
     <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"Артка кайтуу үчүн экранды оңдон солго карай сүрүүнү үйрөндүңүз. Эми колдонмолорду которуштурганды үйрөнүп алыңыз."</string>
     <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"\"Артка\" жаңсоосун үйрөндүңүз."</string>
     <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Манжаңызды экрандын ылдый жагына өтө жакындатпай сүрүңүз."</string>
-    <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"\"Артка\" жаң-нун сезгичтигин өзгөртүү үчүн жөндөөлөргө өтүңүз"</string>
+    <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"\"Артка\" жаң-нун сезгичтигин өзгөртүү үчүн параметрлерге өтүңүз"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Артка кайтуу үчүн сүрүңүз"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Акыркы экранга кайтуу үчүн экранды сол же оң жагынан ортосуна карай сүрүңүз."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Акыркы экранга кайтуу үчүн экранды сол же оң жагынан ортосуна карай 2 манжаңыз менен сүрүңүз."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Артка кайтуу"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Экранды ылдыйдан өйдө сүрүңүз."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Манжаңызды алганга чейин токтотпоңуз."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Экранды өйдө сүрүңүз."</string>
@@ -60,41 +61,47 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"\"Башкы бетке өтүү\" жаңсоосун үйрөндүңүз."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Башкы бетке өтүү үчүн сүрүп коюңуз"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Экранды ылдый жагынан өйдө сүрүңүз. Бул жаңсоо сизди ар дайым Башкы экранга алып барат."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Экранды ылдый жагынан өйдө 2 манжаңыз менен сүрүңүз. Бул жаңсоо ар дайым Башкы экранга алып барат."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Башкы бетке өтүү"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Каалаган убакта башкы экранга өтүү үчүн экранды ылдыйдан жогору карай сүрүңүз"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Экранды ылдыйдан өйдө сүрүңүз."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Манжаңызды алуудан мурун экранда узагыраак кармаңыз."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Экранды өйдө карай сүрүп, токтоп туруңуз."</string>
-    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Жаңсоолорду колдонгонду үйрөндүңүз. Жаңсоолорду өчүрүү үчүн жөндөөлөргө өтүңүз."</string>
+    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Жаңсоолорду колдонгонду үйрөндүңүз. Жаңсоолорду өчүрүү үчүн параметрлерге өтүңүз."</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"\"Колдонмолорду которуштуруу\" жаңсоосун үйрөндүңүз."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Колдонмолорду которуштуруу үчүн сүрүңүз"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Бир колдонмодон экинчисине өтүү үчүн экранды ылдыйдан өйдө карай сүрүп, бир аз коё бербей туруңуз."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Бир колдонмодон экинчисине өтүү үчүн экранды 2 манжа менен ылдыйдан өйдө сүрүп, коё бербей туруңуз."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Колдонмолорду которуштуруу"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Дапдаяр!"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Бүттү"</string>
-    <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Жөндөөлөр"</string>
+    <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Параметрлер"</string>
     <string name="gesture_tutorial_try_again" msgid="65962545858556697">"Кайталап көрүңүз"</string>
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Сонун!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Үйрөткүч: <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Бүттү!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Башкы бетке өтүү үчүн экранды өйдө сүрүңүз"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Телефонуңузду колдоно берсеңиз болот"</string>
-    <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Өтүү аракетинин тутумдук жөндөөлөрү"</annotation></string>
+    <string name="allset_hint" msgid="459504134589971527">"Башкы бетке өтүү үчүн экранды өйдө сүрүңүз"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Башкы экранга өтүү үчүн башкы бет баскычын таптап коюңуз"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"<xliff:g id="DEVICE">%1$s</xliff:g> түзмөгүн колдоно берсеңиз болот"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"түзмөк"</string>
+    <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Өтүү аракетинин системалык параметрлери"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Бөлүшүү"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Скриншот"</string>
     <string name="action_split" msgid="2098009717623550676">"Бөлүү"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Экранды бөлүү үчүн башка колдонмону таптап коюңуз"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Колдонмодо экран бөлүнбөйт."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Экранды бөлүү үчүн башка колдонмону таптап коюңуз"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Экранды бөлүү үчүн башка колдонмону тандаңыз"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Бул аракетти аткарууга колдонмо же ишканаңыз тыюу салган"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Жаңсоолор үйрөткүчүн өткөрүп жибересизби?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Аны кийин <xliff:g id="NAME">%1$s</xliff:g> колдонмосунан табасыз"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Жокко чыгаруу"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Өткрп жиберүү"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Экранды буруу"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Тапшырмалар тактасынын окутуу панели көрсөтүлдү"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Тапшырмалар тактасынын окутуу панели жабылды"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Тапшырмалар тактасы аркылуу башка колдонмого которула аласыз"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Эки колдонмону бир убакта пайдалануу үчүн капталга сүрүңүз"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Тапшырмалар тактасын жашыруу үчүн коё бербей басып туруңуз"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Кийинки"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Артка"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Тапшырмалар тактасы жөнүндө маалымат"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"2 колдонмону бир убакта пайдалануу үчүн капталга сүйрөңүз"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Тапшырмалар тактасын көрүү үчүн экранды жай өйдө сүрүңүз"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Программаңыздын негизинде сунушталган колдонмолорду алуу"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Тапшырмалар тактасын автоматтык түрдө жашыруу үчүн Тууралоодон жаңсап чабыттоону күйгүзүңүз"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Тапшырмалар тактасы менен көбүрөөк нерселерди аткарыңыз"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Жабуу"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Бүттү"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Башкы бет"</string>
@@ -103,7 +110,16 @@
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME которгучу"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Акыркылар"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Билдирмелер"</string>
-    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Ыкчам жөндөөлөр"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Ыкчам параметрлер"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Тапшырмалар тактасы"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Тапшырмалар панели көрсөтүлдү"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Тапшырмалар панели жашырылды"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Чабыттоо тилкеси"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Тапшырмалар панелин ар дайым көрсөтүү"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Өтүү режимин өзгөртүү"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Тапшырмалар панелин бөлгүч"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Жогорку/сол бурчка жылдыруу"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Төмөнкү/оң бурчка жылдыруу"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Дагы # колдонмону көрсөтүү.}other{Дагы # колдонмону көрсөтүү.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> жана <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-land/dimens.xml b/quickstep/res/values-land/dimens.xml
index f233bde..ee594c8 100644
--- a/quickstep/res/values-land/dimens.xml
+++ b/quickstep/res/values-land/dimens.xml
@@ -15,7 +15,8 @@
      limitations under the License.
 -->
 <resources>
-    <dimen name="overview_task_margin">8dp</dimen>
+    <!--  Overview actions  -->
+    <dimen name="overview_actions_top_margin">12dp</dimen>
 
     <!-- Tips Gesture Tutorial -->
     <dimen name="gesture_tutorial_feedback_margin_start_end">126dp</dimen>
@@ -73,4 +74,14 @@
 
     <!-- Gesture Tutorial mock taskbar -->
     <dimen name="gesture_tutorial_taskbar_padding_start_end">218dp</dimen>
-</resources>
\ No newline at end of file
+
+    <!--  Taskbar 3 button spacing  -->
+    <dimen name="taskbar_button_margin_split">88dp</dimen>
+    <dimen name="taskbar_button_margin_6_5">219.6dp</dimen>
+    <dimen name="taskbar_contextual_button_margin">48dp</dimen>
+    <dimen name="taskbar_suw_frame">96dp</dimen>
+    <dimen name="taskbar_suw_insets">24dp</dimen>
+
+    <dimen name="keyboard_quick_switch_taskview_width">205dp</dimen>
+    <dimen name="keyboard_quick_switch_taskview_height">119dp</dimen>
+</resources>
diff --git a/quickstep/res/values-lo/strings.xml b/quickstep/res/values-lo/strings.xml
index 4c1791f..72201f2 100644
--- a/quickstep/res/values-lo/strings.xml
+++ b/quickstep/res/values-lo/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"ຮັບການແນະນຳແອັບຢູ່ແຖວລາຍການທີ່ມັກຂອງໜ້າຈໍຫຼັກຂອງທ່ານ"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"ເຂົ້າເຖິງແອັບທີ່ທ່ານໃຊ້ຫຼາຍທີ່ສຸດໄດ້ຢ່າງງ່າຍດາຍທັນທີຈາກໜ້າຈໍຫຼັກ. ການແນະນຳຈະປ່ຽນແປງຕາມການນຳໃຊ້ປະຈຳຂອງທ່ານ. ແອັບຢູ່ແຖວລຸ່ມສຸດຈະຍ້າຍຂຶ້ນໄປໃສ່ໜ້າຈໍຫຼັກຂອງທ່ານ."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"ເຂົ້າເຖິງແອັບທີ່ທ່ານໃຊ້ຫຼາຍທີ່ສຸດໄດ້ຢ່າງງ່າຍດາຍທັນທີຈາກໜ້າຈໍຫຼັກ. ການແນະນຳຈະປ່ຽນແປງຕາມການນຳໃຊ້ປະຈຳຂອງທ່ານ. ຕອນນີ້ແອັບໃນລາຍການທີ່ມັກຈະຍ້າຍໄປໃສ່ໜ້າຈໍຫຼັກຂອງທ່ານ."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"ເຂົ້າເຖິງແອັບທີ່ທ່ານໃຊ້ຫຼາຍທີ່ສຸດໄດ້ຢ່າງງ່າຍດາຍທັນທີຈາກໜ້າຈໍຫຼັກ. ການແນະນຳຈະປ່ຽນແປງຕາມການນຳໃຊ້ປະຈຳຂອງທ່ານ. ແອັບຢູ່ແຖວລຸ່ມສຸດຈະຍ້າຍໄປໂຟນເດີໃໝ່."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"ຮັບການແນະນຳແອັບ"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"ບໍ່, ຂອບໃຈ"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"ການຕັ້ງຄ່າ"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"ເພື່ອປ່ຽນຄວາມລະອຽດອ່ອນຂອງທ່າທາງກັບຄືນ, ໃຫ້ໄປຫາການຕັ້ງຄ່າ"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"ປັດເພື່ອກັບຄືນ"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"ເພື່ອກັບໄປໜ້າຈໍຫຼ້າສຸດ, ໃຫ້ປັດຈາກຂອບຊ້າຍ ຫຼື ຂວາໄປຫາທາງກາງຂອງໜ້າຈໍ."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"ເພື່ອກັບໄປໜ້າຈໍຫຼ້າສຸດ, ໃຫ້ປັດດ້ວຍ 2 ນິ້ວຈາກຂອບຊ້າຍ ຫຼື ຂວາໄປຫາທາງກາງຂອງໜ້າຈໍ."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"ກັບຄືນ"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"ກະລຸນາກວດສອບວ່າທ່ານປັດຂຶ້ນຈາກຂອບລຸ່ມສຸດຂອງໜ້າຈໍ."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"ກະລຸນາກວດສອບວ່າທ່ານບໍ່ຢຸດຊົ່ວຄາວກ່ອນປ່ອຍນິ້ວ."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"ກະລຸນາກວດສອບວ່າທ່ານປັດຂຶ້ນໄປຊື່ໆ."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"ທ່ານໃຊ້ທ່າທາງໄປໜ້າຫຼັກສຳເລັດແລ້ວ."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"ປັດເພື່ອໄປໜ້າຫຼັກ"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"ປັດຂຶ້ນມາຈາກລຸ່ມສຸດຂອງໜ້າຈໍທ່ານ. ທ່າທາງນີ້ຈະພາທ່ານໄປໂຮມສະກຣີນສະເໝີ."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"ປັດຂຶ້ນດ້ວຍ 2 ນິ້ວຈາກລຸ່ມສຸດຂອງໜ້າຈໍ. ທ່າທາງນີ້ຈະພາທ່ານໄປໂຮມສະກຣີນສະເໝີ."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"ໄປໜ້າຫຼັກ"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"ປັດຂຶ້ນຈາກລຸ່ມສຸດຂອງໜ້າຈໍຂອງທ່ານເພື່ອກັບໄປໂຮມສະກຣີນຂອງທ່ານໄດ້ທຸກເວລາ"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"ກະລຸນາກວດສອບວ່າທ່ານປັດຂຶ້ນຈາກຂອບລຸ່ມສຸດຂອງໜ້າຈໍ."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"ລອງກົດໃສ່ໜ້າຈໍຄ້າງໄວ້ດົນຂຶ້ນກ່ອນປ່ອຍນິ້ວ."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"ກະລຸນາກວດສອບວ່າທ່ານປັດຂຶ້ນຊື່ໆ, ຈາກນັ້ນຢຸດຊົ່ວຄາວ."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"ທ່ານໃຊ້ທ່າທາງສະຫຼັບແອັບສຳເລັດແລ້ວ."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"ປັດເພື່ອສະຫຼັບແອັບ"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"ເພື່ອສະຫຼັບລະຫວ່າງແອັບ, ໃຫ້ປັດຂຶ້ນຈາກລຸ່ມສຸດຂອງໜ້າຈໍທ່ານ, ກົດຄ້າງໄວ້, ຈາກນັ້ນປ່ອຍ."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"ເພື່ອສະຫຼັບລະຫວ່າງແອັບ, ໃຫ້ປັດຂຶ້ນດ້ວຍ 2 ນິ້ວຈາກລຸ່ມສຸດຂອງໜ້າຈໍທ່ານ, ກົດຄ້າງໄວ້ແລ້ວປ່ອຍ."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"ສະຫຼັບແອັບ"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"ທຸກຢ່າງພ້ອມແລ້ວ"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"ແລ້ວໆ"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"ການຕັ້ງຄ່າ"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"ດີ!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"ການສອນການນຳໃຊ້ທີ <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"ຮຽບຮ້ອຍໝົດແລ້ວ!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"ປັດຂຶ້ນເພື່ອໄປຫາໜ້າຫຼັກ"</string>
-    <string name="allset_description" msgid="6350320429953234580">"ທ່ານພ້ອມເລີ່ມຕົ້ນໃຊ້ໂທລະສັບຂອງທ່ານແລ້ວ"</string>
+    <string name="allset_hint" msgid="459504134589971527">"ປັດຂຶ້ນເພື່ອໄປຫາໜ້າຫຼັກ"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"ແຕະປຸ່ມໜ້າທຳອິດເພື່ອໄປຫາໂຮມສະກຣີນຂອງທ່ານ"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"ທ່ານເລີ່ມໃຊ້ແທັບເລັດ <xliff:g id="DEVICE">%1$s</xliff:g> ຂອງທ່ານໄດ້ແລ້ວ"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"ອຸປະກອນ"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"ການຕັ້ງຄ່າການນຳທາງລະບົບ"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"ແບ່ງປັນ"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"ຮູບໜ້າຈໍ"</string>
     <string name="action_split" msgid="2098009717623550676">"ແບ່ງ"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"ແຕະແອັບອື່ນເພື່ອໃຊ້ການແຍກໜ້າຈໍ"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"ແອັບບໍ່ຮອງຮັບການແບ່ງໜ້າຈໍ."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"ແຕະແອັບອື່ນເພື່ອໃຊ້ໜ້າຈໍແຍກ"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"ເລືອກແອັບອື່ນເພື່ອໃຊ້ການແບ່ງໜ້າຈໍ"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"ແອັບ ຫຼື ອົງການຂອງທ່ານບໍ່ອະນຸຍາດໃຫ້ໃຊ້ຄຳສັ່ງນີ້"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"ຂ້າມການສອນການນຳໃຊ້ການນຳທາງບໍ?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"ທ່ານສາມາດຊອກສ່ວນນີ້ພາຍຫຼັງໄດ້ໃນແອັບ <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"ຍົກເລີກ"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"ຂ້າມ"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"ໝຸນໜ້າຈໍ"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"ສະແດງການສຶກສາແຖບໜ້າວຽກແລ້ວ"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"ປິດການສຶກສາແຖບໜ້າວຽກແລ້ວ"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"ໃຊ້ແຖບໜ້າວຽກເພື່ອສະຫຼັບແອັບ"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"ລາກໄປທາງຂ້າງເພື່ອໃຊ້ສອງແອັບພ້ອມກັນ"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"ແຕະຄ້າງໄວ້ເພື່ອເຊື່ອງແຖບໜ້າວຽກ"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"ຕໍ່ໄປ"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"ກັບຄືນ"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"ແຖບໜ້າວຽກ Education"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"ລາກແອັບໄປດ້ານຂ້າງເພື່ອໃຊ້ 2 ແອັບໃນເວລາດຽວກັນ"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"ປັດຂຶ້ນຊ້າໆເພື່ອສະແດງແຖບໜ້າວຽກ"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"ຮັບການແນະນຳແອັບໂດຍອີງໃສ່ສິ່ງທີ່ເຮັດປະຈຳຂອງທ່ານ"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"ເປີດການນຳທາງແບບທ່າທາງໃນການຕັ້ງຄ່າເພື່ອເຊື່ອງແຖບໜ້າວຽກໄວ້ໂດຍອັດຕະໂນມັດ"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"ເຮັດສິ່ງຕ່າງໆໄດ້ຫຼາຍຂຶ້ນດ້ວຍແຖບໜ້າວຽກ"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"ປິດ"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"ແລ້ວໆ"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"ໜ້າຫຼັກ"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"ກັບຄືນ"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"ຕົວສະຫຼັບ IME"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"ຫຼ້າສຸດ"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"ການແຈ້ງເຕືອນ"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"ການຕັ້ງຄ່າດ່ວນ"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"ແຖບໜ້າວຽກ"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"ແຖບໜ້າວຽກທີ່ສະແດງຢູ່"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"ແຖບໜ້າວຽກທີ່ເຊື່ອງໄວ້ຢູ່"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"ແຖບການນຳທາງ"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"ສະແດງແຖບໜ້າວຽກສະເໝີ"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"ປ່ຽນໂໝດການນຳທາງ"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"ເສັ້ນແບ່ງແຖບໜ້າວຽກ"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"ຍ້າຍໄປຊ້າຍ/ເທິງ"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"ຍ້າຍໄປຂວາ/ລຸ່ມ"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{ສະແດງອີກ # ແອັບ.}other{ສະແດງອີກ # ແອັບ.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> ແລະ <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-lt/strings.xml b/quickstep/res/values-lt/strings.xml
index 95a7e86..ba0df27 100644
--- a/quickstep/res/values-lt/strings.xml
+++ b/quickstep/res/values-lt/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Gaukite programų pasiūlymų pagrindinio ekrano eilutėje „Mėgstamiausios“"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Lengvai pasiekite dažniausiai naudojamas programas iškart pagrindiniame ekrane. Pasiūlymai keisis atsižvelgiant į tai, kaip jas naudojate. Apatinėje eilutėje esančios programos bus perkeltos į pagrindinį ekraną."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Lengvai pasiekite dažniausiai naudojamas programas iškart pagrindiniame ekrane. Pasiūlymai keisis atsižvelgiant į tai, kaip jas naudojate. Eilutėje „Mėgstamiausios“ rodomos programos bus perkeltos į pagrindinį ekraną."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Lengvai pasiekite dažniausiai naudojamas programas iškart pagrindiniame ekrane. Pasiūlymai keisis atsižvelgiant į tai, kaip jas naudojate. Apatinėje eilutėje esančios programos bus perkeltos į naują aplanką."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Gauti programų pasiūlymų"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Ne, ačiū"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Nustatymai"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Norėd. pak. grįžimo gesto jautr., eikite į sk. „Nustatymai“"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Norėdami grįžti, perbraukite"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Norėdami grįžti į ankstesnį ekraną, perbr. nuo kairiojo arba dešinio krašto link ekrano vidurio."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Jei norite grįžti į ankstesnį ekraną, perbraukite dviem pirštais nuo kairiojo arba dešiniojo krašto link ekrano vidurio."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Grįžti"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Turite perbraukti aukštyn nuo apatinio ekrano krašto."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Nepristabdykite prieš pakeldami pirštą."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Turite tiesiai perbraukti aukštyn."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Atlikote perėjimo į pagrindinį ekraną gestą."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Perbraukite, kad pereitumėte į pagrindinį ekraną"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Perbraukite aukštyn nuo ekrano apačios. Atlikus šį gestą, visada nukreipiama į pagrindinį ekraną."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Perbraukite dviem pirštais nuo ekrano apačios. Šis gestas visada nukreipia į pagrindinį ekraną."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Eikite į pagrindinį ekraną"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Jei norite bet kada pasiekti pagrindinį ekraną, perbraukite aukštyn iš ekrano apačios"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Turite perbraukti aukštyn nuo apatinio ekrano krašto."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Pabandykite palaikyti langą ilgiau prieš pakeldami pirštą."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Turite tiesiai perbraukti aukštyn, o tada pristabdyti."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Atlikote programų perjungimo gestą."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Perbraukite, kad perjungtumėte programas"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Norėdami perjungti programas, perbraukite aukštyn nuo ekrano apačios, palaikykite ir paleiskite."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Perjunkite programas perbraukę dviem pirštais aukštyn nuo ekrano apačios, palaikę ir paleidę."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Perjungti programas"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Viskas nustatyta"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Atlikta"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Nustatymai"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Šaunu!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Mokymo programa: <xliff:g id="CURRENT">%1$d</xliff:g> iš <xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Paruošta!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Perbraukite aukštyn, kad grįžtumėte į pagrindinį ekraną"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Esate pasiruošę pradėti naudoti telefoną"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Perbraukite aukštyn, kad grįžtumėte į pagrindinį ekraną"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Norėdami eiti į pagrindinį ekraną, palieskite pagrindinio ekrano mygtuką"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Esate pasirengę pradėti naudoti <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"įrenginys"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Sistemos naršymo nustatymai"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Bendrinti"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Ekrano kopija"</string>
     <string name="action_split" msgid="2098009717623550676">"Išskaidymo režimas"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Pal. kitą progr., kad gal. naud. išsk. ekr. rež."</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Programoje nepalaikomas išskaidyto ekrano režimas."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Išskaidyto ekrano režimas palietus kitą programą"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Išskaidyto ekrano režimą naudokite kita programa"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Jūsų organizacijoje arba naudojant šią programą neleidžiama atlikti šio veiksmo"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Praleisti naršymo mokymo programą?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Tai galėsite rasti vėliau programoje „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Atšaukti"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Praleisti"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Pasukti ekraną"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Užduočių juostos patarimai rodomi"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Užduočių juostos patarimai uždaryti"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Naudokite užduočių juostą, kad gal. perjungti programas"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Nuvilkite į šoną, kad gal. vienu metu naudoti dvi programas"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Palieskite ir palaikykite, kad paslėptumėte užduočių juostą"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Kitas"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Atgal"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Užduočių juostos mokomoji informacija"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Nuvilkę programą į šoną vienu metu naudokite dvi programas"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Trumpai perbraukite, kad būtų rodoma Užduočių juosta"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Gaukite programų pasiūlymų pagal savo veiklą"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Įjungę naršymą gestais „Nustatymų“ skiltyje automatiškai paslėpkite Užduočių juostą"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Atlikite daugiau naudodami Užduočių juostą"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Uždaryti"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Atlikta"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Pagrindinis"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Atgal"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IMRP perjungiklis"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Naujausi"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Pranešimai"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Spartieji nustatymai"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Užduočių juosta"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Užduočių juosta rodoma"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Užduočių juosta paslėpta"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Naršymo juosta"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Visada rodyti užduočių juostą"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Keisti naršymo režimą"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Užduočių juostos daliklis"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Perkelti aukštyn, kairėn"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Perkelti žemyn, dešinėn"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Rodyti dar # programą.}one{Rodyti dar # programą.}few{Rodyti dar # programas.}many{Rodyti dar # programos.}other{Rodyti dar # programų.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"„<xliff:g id="APP_NAME_1">%1$s</xliff:g>“ ir „<xliff:g id="APP_NAME_2">%2$s</xliff:g>“"</string>
 </resources>
diff --git a/quickstep/res/values-lv/strings.xml b/quickstep/res/values-lv/strings.xml
index f3de0b7..3992ebd 100644
--- a/quickstep/res/values-lv/strings.xml
+++ b/quickstep/res/values-lv/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Saņemiet lietotņu ieteikumus izlases rindā sākuma ekrānā"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Varat sākuma ekrānā ērti piekļūt savām visbiežāk izmantotajām lietotnēm. Ieteikumi mainīsies atkarībā no jūsu paradumiem. Apakšējā rindā esošās lietotnes tiks pārvietotas uz augšu — uz sākuma ekrānu."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Varat sākuma ekrānā ērti piekļūt savām visbiežāk izmantotajām lietotnēm. Ieteikumi mainīsies atkarībā no jūsu paradumiem. Lietotnes no izlases rindas tiks pārvietotas uz sākuma ekrānu."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Varat sākuma ekrānā ērti piekļūt savām visbiežāk izmantotajām lietotnēm. Ieteikumi mainīsies atkarībā no jūsu paradumiem. Apakšējā rindā esošās lietotnes tiks pārvietotas uz jaunu mapi."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Rādīt ieteicamās lietotnes"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nē, paldies"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Iestatījumi"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Atgriešanās žesta jutīguma līmeni varat mainīt iestatījumos."</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Vilkšana, lai atgrieztos"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Lai atgrieztos iepriekšējā ekrānā, velciet no kreisās vai labās malas uz ekrāna vidu."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Lai pārietu uz iepriekšējo ekrānu, ar diviem pirkstiem velciet no kreisās vai labās malas uz ekrāna vidu."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Atpakaļ"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Jāvelk augšup no ekrāna apakšmalas."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Pirms atlaišanas nepārtrauciet kustību."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Jāvelk tieši uz augšu."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Jūs sekmīgi veicāt sākuma ekrāna atvēršanas žestu."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Vilkšana, lai pārietu uz sākumu"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Velciet augšup no ekrāna apakšdaļas. Ar šo žestu vienmēr varat atvērt sākuma ekrānu."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Ar 2 pirkstiem velciet augšup no ekrāna apakšdaļas. Ar šo žestu vienmēr varat atvērt sākuma ekrānu."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Došanās uz sākuma ekrānu"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Jebkurā laikā varat doties uz sākuma ekrānu, no ekrāna apakšdaļas velkot augšup."</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Jāvelk augšup no ekrāna apakšmalas."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Mēģiniet ilgāk turēt logu, pirms atlaižat."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Jāvelk tieši uz augšu un pēc tam jāaptur kustība."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Jūs sekmīgi veicāt lietotņu pārslēgšanas žestu."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Vilkšana, lai pārslēgtu lietotnes"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Lai pārslēgtu lietotnes, velciet augšup no ekrāna apakšdaļas, turiet un pēc tam atlaidiet."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Lai pārslēgtu lietotnes, ar 2 pirkstiem velciet no ekrāna apakšdaļas, turiet un pēc tam atlaidiet."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Lietotņu pārslēgšana"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Gatavs"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Gatavs"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Iestatījumi"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Lieliski!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"<xliff:g id="CURRENT">%1$d</xliff:g>. mācību darbība no <xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Gatavs!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Velciet augšup, lai pārietu uz sākuma ekrānu."</string>
-    <string name="allset_description" msgid="6350320429953234580">"Varat sākt izmantot savu tālruni"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Velciet augšup, lai pārietu uz sākuma ekrānu"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Pieskarieties pogai Sākums, lai dotos uz sākuma ekrānu"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Varat sākt izmantot savu ierīci (<xliff:g id="DEVICE">%1$s</xliff:g>)"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"ierīce"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Sistēmas navigācijas iestatījumi"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Kopīgot"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Veikt ekrānuzņēmumu"</string>
     <string name="action_split" msgid="2098009717623550676">"Sadalīt"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Piesk. citai lietotnei, lai izm. ekrāna sadalīšanu"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Lietotnē netiek atbalstīta ekrāna sadalīšana."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Lai sadalītu ekrānu, pieskarieties citai lietotnei"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Izvēlieties citu lietotni, lai sadalītu ekrānu"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Lietotne vai jūsu organizācija neatļauj veikt šo darbību."</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Vai izlaist navigācijas mācības?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Varēsiet to vēlāk atrast lietotnē <xliff:g id="NAME">%1$s</xliff:g>."</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Atcelt"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Izlaist"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Pagriezt ekrānu"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Tika atvērta uzdevumjoslas apmācība"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Tika aizvērta uzdevumjoslas apmācība"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Izmantojiet uzdevumjoslu, lai pārslēgtu lietotnes."</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Velciet uz malu, lai izmantotu divas lietotnes vienlaikus."</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Pieskarieties un turiet, lai paslēptu uzdevumjoslu."</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Tālāk"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Atpakaļ"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Informācija par uzdevumu joslu"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Velciet lietotni sānis, lai izmantotu 2 lietotnes vienlaikus"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Lai skatītu uzdevumu joslu, lēni velciet augšup"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Skatiet ieteiktās lietotnes, balstoties uz jūsu ieradumiem"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Lai Uzdevumu josla tiktu automātiski paslēpta, iestatījumos ieslēdziet žestu navigāciju."</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Plašākas iespējas, izmantojot uzdevumu joslu"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Aizvērt"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Gatavs"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Sākums"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Atpakaļ"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME pārslēdzējs"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Nesenie"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Paziņojumi"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Ātrie iestatīj."</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Uzdevumu josla"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Uzdevumu josla tiek rādīta"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Uzdevumu josla paslēpta"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigācijas josla"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Vienmēr rādīt uzdevumu joslu"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Mainīt navigācijas režīmu"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Uzdevumu joslas atdalītājs"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Pārvietot uz augšējo/kreiso stūri"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Pārvietot uz apakšējo/labo stūri"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Rādīt vēl # lietotni}zero{Rādīt vēl # lietotnes}one{Rādīt vēl # lietotni}other{Rādīt vēl # lietotnes}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"“<xliff:g id="APP_NAME_1">%1$s</xliff:g>” un “<xliff:g id="APP_NAME_2">%2$s</xliff:g>”"</string>
 </resources>
diff --git a/quickstep/res/values-mk/strings.xml b/quickstep/res/values-mk/strings.xml
index dc0732f..fcbca7e 100644
--- a/quickstep/res/values-mk/strings.xml
+++ b/quickstep/res/values-mk/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Добивајте предлози за апликации во редот со омилени на почетниот екран"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Лесно пристапувајте до најкористените апликации директно на почетниот екран. Предлозите ќе се менуваат според рутините. Апликациите од последниот ред ќе се поместуваат нагоре до почетниот екран."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Лесно пристапувајте до најкористените апликации на почетниот екран. Предлозите ќе се менуваат според рутините. Апликациите од редот со омилени ќе се преместат на почетниот екран."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Лесно пристапувајте до најкористените апликации директно на почетниот екран. Предлозите ќе се менуваат според рутините. Апликациите од последниот ред ќе се преместуваат во нова папка."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Добивајте предлози за апликации"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Не, фала"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Поставки"</string>
@@ -47,26 +46,33 @@
     <string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Предвидена апликација: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Повлечете од крајниот десен или крајниот лев раб."</string>
     <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"Повлечете од десниот или левиот раб кон средината на екранот и пуштете."</string>
-    <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"Научивте како да повлекувате оддесно за да одите назад. Следно, дознајте како да се префрлате помеѓу апликации."</string>
+    <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"Научивте како да повлекувате оддесно за враќање назад. Научете и како да се префрлате помеѓу апликациите."</string>
     <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Завршивте со упатството за враќање назад."</string>
     <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Не повлекувајте преблиску до долниот раб на екранот."</string>
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"За да ја промените чувствителноста, одете во „Поставки“"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Повлечете за да се вратите назад"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"За да се вратите на последниот екран, повлечете од левиот или десниот раб кон средината на екранот."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"За да се вратите на последниот екран на кој бевте, повлечете со два прста од левиот или десниот раб кон средината на екранот."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Назад"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Повлечете нагоре од долниот раб на екранот."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Не правете пауза пред да пуштите."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Повлечете право нагоре."</string>
-    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Завршивте со упатството за почетната страница. Следно, дознајте како да се вратите назад."</string>
-    <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Завршивте со упатството за почетната страница."</string>
-    <string name="home_gesture_intro_title" msgid="836590312858441830">"Повлечете за да одите на почетната страница"</string>
+    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Го научивте движењето за отворање на почетниот екран. Научете го и движењето за враќање назад."</string>
+    <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Го научивте движењето за отворање на почетниот екран."</string>
+    <string name="home_gesture_intro_title" msgid="836590312858441830">"Повлечете за да одите на почетниот екран"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Повлечете нагоре од долниот раб на екранот. Ова движење секогаш ќе ве одведе на почетниот екран."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Повлечете нагоре со два прста од долниот раб на екранот. Движењево секогаш ве носи на почетниот екран."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Одете на почетниот екран"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"За да одите на вашиот почетен екран во кое било време, повлечете нагоре од дното на екранот"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Повлечете нагоре од долниот раб на екранот."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Задржете го прозорецот подолго пред да го пуштите."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Повлечете право нагоре, а потоа застанете."</string>
-    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Дознавте како се користат движењата. За да ги исклучите движењата, одете во „Поставки“."</string>
+    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Научивте како се користат движењата. За да ги исклучите движењата, одете во „Поставки“."</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Завршивте со упатството за префрлање помеѓу апликации."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Повлечете за префрлање помеѓу апликации"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"За да смените апликација, повлечете нагоре од дното на екранот и задржете, па пуштете."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"За да се префрлате помеѓу апликации, повлечете нагоре со два прста од долниот раб на екранот, задржете и потоа отпуштете."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Променете ја апликацијата"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Готово"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Готово"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Поставки"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Одлично!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Упатство <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Готово!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Повлечете нагоре за да појдете на почетниот екран"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Спремни сте да почнете да го користите телефонот"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Повлечете нагоре за да појдете на почетен екран"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Допрете го копчето за почетен екран за да одите на почетниот екран"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Подготвени сте да почнете да го користите вашиот <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"уред"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Поставки за системска навигација"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Сподели"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Слика од екранот"</string>
     <string name="action_split" msgid="2098009717623550676">"Раздели"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Допрете друга апликација за да користите поделен екран"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Апликацијата не поддржува поделен екран."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Допрете друга аплик. за да користите поделен екран"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Изберете друга апликација за да користите поделен екран"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Апликацијата или вашата организација не го дозволува дејствово"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Да се прескокне упатството за навигација?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Ова може да го најдете подоцна во апликацијата <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Откажи"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Прескокни"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Ротирајте го екранот"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Се појави лентата за задачи за образование"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Затворена е лентата за задачи за образование"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Префрлувајте се меѓу апликации преку лентата за задачи"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Повлечете кон страната за да користите две апликации одеднаш"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Допрете и задржете за да се сокрие лентата за задачи"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Следна"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Назад"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Обука за лентата со задачи"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Повлечете апликација настрана за да користите 2 апликации"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Полека повлечете нагоре за да се прикаже лентата со задачи"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Добивајте предлози за апликации според вашата рутина"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Вклучете навигација со движење во „Поставки“ за автоматско сокривање на „Лентата со задачи“"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Правете повеќе со една лента со задачи"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Затвори"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Готово"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Дома"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Неодамнешни"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Известувања"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Брзи поставки"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Лента со задачи"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Лентата со задачи е прикажана"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Лентата со задачи е скриена"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Лента за навигација"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Секогаш прикажувај „Лента“"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Променете режим на навигација"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Разделник на „Лента со задачи“"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Премести горе лево"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Премести долу десно"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Прикажи уште # апликација.}one{Прикажи уште # апликација.}other{Прикажи уште # апликации.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> и <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-ml/strings.xml b/quickstep/res/values-ml/strings.xml
index 4ac251c..3d87fb6 100644
--- a/quickstep/res/values-ml/strings.xml
+++ b/quickstep/res/values-ml/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"നിങ്ങളുടെ ഹോം സ്‌ക്രീനിന്റെ \'പ്രിയപ്പെട്ടവ\' വരിയിൽ ആപ്പ് നിർദ്ദേശങ്ങൾ നേടുക"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"നിങ്ങൾ ഏറ്റവും കൂടുതൽ ഉപയോഗിച്ച ആപ്പുകൾ ഹോം സ്ക്രീനിൽ നിന്ന് തന്നെ എളുപ്പത്തിൽ ആക്‌സസ് ചെയ്യൂ. നിങ്ങളുടെ ദിനചര്യകളുടെ അടിസ്ഥാനത്തിൽ നിർദ്ദേശങ്ങൾ മാറും. താഴത്തെ നിരയിലുള്ള ആപ്പുകൾ നിങ്ങളുടെ ഹോം സ്‌ക്രീനിലേക്ക് നീങ്ങും."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"നിങ്ങൾ ഏറ്റവും കൂടുതൽ ഉപയോഗിച്ച ആപ്പുകൾ ഹോം സ്ക്രീനിൽ നിന്ന് തന്നെ എളുപ്പത്തിൽ ആക്‌സസ് ചെയ്യൂ. നിങ്ങളുടെ ദിനചര്യകളുടെ അടിസ്ഥാനത്തിൽ നിർദ്ദേശങ്ങൾ മാറും. \'പ്രിയപ്പെട്ടവ\' വരിയിലുള്ള ആപ്പുകൾ നിങ്ങളുടെ ഹോം സ്‌ക്രീനിലേക്ക് നീങ്ങും."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"നിങ്ങൾ ഏറ്റവും കൂടുതൽ ഉപയോഗിച്ച ആപ്പുകൾ ഹോം സ്ക്രീനിൽ നിന്ന് തന്നെ എളുപ്പത്തിൽ ആക്‌സസ് ചെയ്യൂ. നിങ്ങളുടെ ദിനചര്യകളുടെ അടിസ്ഥാനത്തിൽ നിർദ്ദേശങ്ങൾ മാറും. താഴത്തെ നിരയിലുള്ള ആപ്പുകൾ പുതിയൊരു ഫോൾഡറിലേക്ക് നീങ്ങും."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"ആപ്പ് നിർദ്ദേശങ്ങൾ നേടുക"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"വേണ്ട"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"ക്രമീകരണം"</string>
@@ -53,20 +52,27 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"ബാക്ക്ജെസ്റ്ററിന്റെ സെൻസിറ്റിവിറ്റി മാറ്റാൻ ക്രമീകരണത്തിൽ പോകൂ"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"മടങ്ങാൻ സ്വെെപ്പ് ചെയ്യുക"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"മുൻ സ്‌ക്രീനിലേക്ക് മടങ്ങാൻ, ഇടതോ വലതോ അരികിൽ നിന്ന് സ്‌ക്രീനിന്റെ നടുവിലേക്ക് സ്വെെപ്പ് ചെയ്യുക."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"മുമ്പത്തെ സ്ക്രീനിലേക്ക് മടങ്ങാൻ, 2 വിരലുകൾ ഉപയോഗിച്ച് ഇടത് അല്ലെങ്കിൽ വലത് മൂലയിൽ നിന്ന് സ്ക്രീനിന്റെ മധ്യഭാഗത്തേക്ക് സ്വൈപ്പ് ചെയ്യുക."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"മടങ്ങുക"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"സ്‌ക്രീനിന്റെ താഴത്തെ അരികിൽ നിന്ന് മുകളിലേക്ക് സ്വെെപ്പ് ചെയ്യുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"വിടുന്നതിന് മുമ്പ് നിങ്ങൾ താൽക്കാലികമായി നിർത്തുന്നില്ലെന്ന് ഉറപ്പാക്കുക."</string>
-    <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"നേരെ മുകളിലേക്ക് സ്വെെപ്പ് ചെയ്യുന്നുണ്ടെന്ന് ഉറപ്പിക്കുക."</string>
+    <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"നേരെ മുകളിലേക്ക് സ്വെെപ്പ് ചെയ്യുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക."</string>
     <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"ഹോമിലേക്ക് പോകുക ജെസ്ച്ചർ പൂർത്തിയാക്കി. അടുത്തത്, എങ്ങനെ മടങ്ങാമെന്ന് അറിയുക."</string>
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"ഹോമിലേക്ക് പോകുക ജെസ്ച്ചർ നിങ്ങൾ പൂർത്തിയാക്കി."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"ഹോമിലേക്ക് പോകാൻ സ്വെെപ്പ് ചെയ്യുക"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"സ്‌ക്രീനിന്റെ താഴെ നിന്ന് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്യൂ. ഈ ജെസ്ച്ചർ എപ്പോഴും ഹോം സ്‌ക്രീനിലേക്ക് നയിക്കുന്നു."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"സ്ക്രീനിന്റെ താഴെ നിന്ന് മുകളിലേക്ക് 2 വിരലുകൾ കൊണ്ട് സ്വൈപ്പ് ചെയ്യൂ. ഈ ജെസ്ച്ചർ എല്ലായ്‌പ്പോഴും ഹോം സ്ക്രീനിലേക്ക് നയിക്കുന്നു."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"ഹോമിലേക്ക് പോകൂ"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"ഏതുസമയത്തും ഹോം സ്ക്രീനിലേക്ക് പോകാൻ, സ്ക്രീനിന്റെ താഴെ നിന്ന് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്യൂ"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"സ്‌ക്രീനിന്റെ താഴത്തെ അരികിൽ നിന്ന് മുകളിലേക്ക് സ്വെെപ്പ് ചെയ്യുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"റിലീസ് ചെയ്യുന്നതിന് മുമ്പ് വിൻഡോ കൂടുതൽ സമയം ഹോൾഡ് ചെയ്യാൻ ശ്രമിക്കുക."</string>
-    <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"നേരെ മുകളിലേക്ക് സ്വെെപ്പ് ചെയ്യുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക, ശേഷം താൽക്കാലികമായി നിർത്തുക."</string>
+    <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"നേരെ മുകളിലേക്ക് സ്വെെപ്പ് ചെയ്ത് അൽപ്പസമയം പിടിച്ചുനിർത്തുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക."</string>
     <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"ജെസ്ച്ചറുകൾ ഉപയോഗിക്കുന്ന രീതി നിങ്ങൾ മനസ്സിലാക്കി. ജെസ്ച്ചറുകൾ ഓഫാക്കാൻ ക്രമീകരണത്തിലേക്ക് പോകുക."</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"ആപ്പുകൾ തമ്മിൽ മാറുക ജെസ്‌ച്ചർ നിങ്ങൾ പൂർത്തിയാക്കി."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"ആപ്പുകൾ മാറാൻ സ്വെെപ്പ് ചെയ്യുക"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"ആപ്പുകൾക്കിടയിൽ മാറാൻ സ്‌ക്രീനിന്റെ താഴെ നിന്ന് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്‌ത് പിടിച്ച ശേഷം വിടുക."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"ആപ്പുകൾക്കിടയിൽ മാറാൻ സ്ക്രീനിന്റെ താഴെ നിന്ന് മുകളിലേക്ക് 2 വിരലുകൾ കൊണ്ട് സ്വൈപ്പ് ചെയ്ത് പിടിച്ച ശേഷം വിടുക."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"ആപ്പുകൾ മാറുക"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"എല്ലാം സജ്ജീകരിച്ചു"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"പൂർത്തിയായി"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"ക്രമീകരണം"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"കൊള്ളാം!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"ട്യൂട്ടോറിയൽ <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"എല്ലാം സജ്ജീകരിച്ചു!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"ഹോമിലേക്ക് പോകാൻ മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്യുക"</string>
-    <string name="allset_description" msgid="6350320429953234580">"ഫോൺ ഉപയോഗിച്ച് തുടങ്ങാൻ നിങ്ങൾ തയ്യാറാണ്"</string>
+    <string name="allset_hint" msgid="459504134589971527">"ഹോമിലേക്ക് പോകാൻ മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്യുക"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"നിങ്ങളുടെ ഹോം സ്ക്രീനിലേക്ക് പോകാൻ ഹോം ബട്ടൺ ടാപ്പ് ചെയ്യുക"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"നിങ്ങൾക്ക് <xliff:g id="DEVICE">%1$s</xliff:g> ഉപയോഗിച്ചു തുടങ്ങാം"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"ഉപകരണം"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"സിസ്‌റ്റം നാവിഗേഷൻ ക്രമീകരണം"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"പങ്കിടുക"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"സ്ക്രീൻഷോട്ട്"</string>
     <string name="action_split" msgid="2098009717623550676">"വിഭജിക്കുക"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"സ്പ്ലിറ്റ് സ്ക്രീനിനായി മറ്റൊരു ആപ്പ് ടാപ്പുചെയ്യൂ"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"സ്പ്ലിറ്റ്-സ്ക്രീനിനെ ആപ്പ് പിന്തുണയ്ക്കുന്നില്ല."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"സ്പ്ലിറ്റ് സ്ക്രീനിന് മറ്റൊരു ആപ്പിൽ ടാപ്പ് ചെയ്യൂ"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"സ്ക്രീൻ വിഭജന മോഡിന് മറ്റൊരു ആപ്പ് തിരഞ്ഞെടുക്കൂ"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"ഈ നടപടി എടുക്കുന്നത് ആപ്പോ നിങ്ങളുടെ സ്ഥാപനമോ അനുവദിക്കുന്നില്ല"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"നാവിഗേഷൻ ട്യൂട്ടോറിയൽ ഒഴിവാക്കണോ?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"<xliff:g id="NAME">%1$s</xliff:g> ആപ്പിൽ നിങ്ങൾക്ക് ഇത് പിന്നീട് കാണാനാകും"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"റദ്ദാക്കുക"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"ഒഴിവാക്കുക"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"സ്‌ക്രീൻ റൊട്ടേറ്റ് ചെയ്യുക"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"ടാസ്ക്ക്ബാർ വിവര പാനൽ ദൃശ്യമായി"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"ടാസ്ക്ക്ബാർ വിവര പാനൽ അടച്ചു"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"ആപ്പുകൾ മാറാൻ ടാസ്ക്ക്ബാർ ഉപയോഗിക്കുക"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"രണ്ട് ആപ്പുകൾ ഒരുമിച്ച് ഉപയോഗിക്കാൻ അരികിലേക്ക് വലിച്ചിടുക"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"ടാസ്ക്ക്ബാർ മറയ്ക്കാൻ സ്‌പർശിച്ച് പിടിക്കുക"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"അടുത്തത്"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"മടങ്ങുക"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"ടാസ്‌ക്ബാർ മാർഗ്ഗനിർദ്ദേശ വിൻഡോ"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"ഒരേ സമയം 2 ആപ്പുകൾ ഉപയോഗിക്കാൻ ഒരു ആപ്പ് വശത്തേക്ക് വലിച്ചിടൂ"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"ടാസ്‌ക്ബാർ ദൃശ്യമാക്കാൻ മുകളിലേക്ക് പതുക്കെ സ്വൈപ്പ് ചെയ്യൂ"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"നിങ്ങളുടെ ദിനചര്യ അനുസരിച്ച് ആപ്പ് നിർദ്ദേശങ്ങൾ നേടുക"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"ടാസ്‌ക്‌ബാർ സ്വയമേവ മറയ്‌ക്കാൻ ക്രമീകരണത്തിൽ ജെസ്ച്ചർ നാവിഗേഷൻ ഓണാക്കുക"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"ടാസ്‌ക്‌ബാർ ഉപയോഗിച്ച് കൂടുതൽ ചെയ്യുക"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"അടയ്ക്കുക"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"പൂർത്തിയായി"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"ഹോം"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"അടുത്തിടെയുള്ളവ"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"അറിയിപ്പുകൾ"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"ദ്രുത ക്രമീകരണം"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"ടാസ്‌ക്ബാർ"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"ടാസ്‌ക്ബാർ കാണിച്ചിരിക്കുന്നു"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"ടാസ്‌ക്ബാർ മറച്ചിരിക്കുന്നു"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"നാവിഗേഷൻ ബാർ"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"ടാസ്‌ക്ബാർ എപ്പോഴും കാണിക്കൂ"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"നാവിഗേഷൻ മോഡ് മാറ്റുക"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"ടാസ്‌ക്ബാർ ഡിവൈഡർ"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"മുകളിലേക്കോ ഇടത്തേക്കോ നീക്കുക"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"താഴേക്കോ വലത്തേക്കോ നീക്കുക"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{# ആപ്പ് കൂടി കാണിക്കുക.}other{# ആപ്പുകൾ കൂടി കാണിക്കുക.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g>, <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-mn/strings.xml b/quickstep/res/values-mn/strings.xml
index 6d918f6..40d14f4 100644
--- a/quickstep/res/values-mn/strings.xml
+++ b/quickstep/res/values-mn/strings.xml
@@ -23,7 +23,7 @@
     <string name="recent_task_option_freeform" msgid="48863056265284071">"Чөлөөтэй хувьсах"</string>
     <string name="recents_empty_message" msgid="7040467240571714191">"Сүүлийн үеийн зүйл алга"</string>
     <string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Апп ашиглалтын тохиргоо"</string>
-    <string name="recents_clear_all" msgid="5328176793634888831">"Бүгдийг устгах"</string>
+    <string name="recents_clear_all" msgid="5328176793634888831">"Бүгдийг арилгах"</string>
     <string name="accessibility_recent_apps" msgid="4058661986695117371">"Саяхны аппууд"</string>
     <string name="task_view_closed" msgid="9170038230110856166">"Ажлыг хаасан"</string>
     <string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
@@ -35,12 +35,11 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Үндсэн нүүрний дуртай мөрнөөсөө санал болгож буй аппуудыг аваарай"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Хамгийн их ашигладаг аппууддаа Үндсэн нүүрнээс хялбархан хандаарай. Санал болгож буй аппуудыг таны хэвшлээс хамаарч өөрчилнө. Доод мөрд буй аппуудыг таны Үндсэн нүүр лүү дээш зөөнө."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Хамгийн их ашигладаг аппууддаа Үндсэн нүүрнээсээ хялбархан хандаарай. Санал болголтыг таны хэвшлээс хамааран өөрчилнө. Дуртай мөрөнд буй аппуудыг таны үндсэн нүүр лүү зөөнө."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Хамгийн их ашигладаг аппууддаа Үндсэн нүүрнээс хялбархан хандаарай. Санал болгож буй аппуудыг таны хэвшлээс хамаарч өөрчилнө. Доод мөрөнд буй аппуудыг шинэ фолдер луу зөөнө."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Санал болгож буй аппуудыг авах"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Үгүй, баярлалаа"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Тохиргоо"</string>
     <string name="hotseat_auto_enrolled" msgid="522100018967146807">"Хамгийн их ашигладаг аппуудыг энд харуулах бөгөөд хэвшлээс хамаарч өөрчилдөг"</string>
-    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Санал болгож буй аппуудыг авахын тулд доод мөрөөс аппуудыг чирж гаргаарай"</string>
+    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Санал болгож буй аппуудыг авахын тулд доод мөрөөс аппуудыг чирч гаргаарай"</string>
     <string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Санал болгож буй аппуудыг хоосон зайд нэмсэн"</string>
     <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"Санал болгож буй аппуудыг идэвхжүүлсэн"</string>
     <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"Санал болгож буй аппуудыг идэвхгүй болгосон"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Буцах зангааны мэдрэгшлийг өөрчлөх бол Тохиргоо руу очно уу"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Буцахын тулд шудрах"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Сүүлийн дэлгэц рүү буцахын тулд дэлгэцийн зүүн эсвэл баруун булангаас дунд хэсэг рүү шударна уу."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Сүүлийн дэлгэц рүү буцахын тулд 2 хуруугаараа дэлгэцийн голоос зүүн эсвэл баруун ирмэг рүү шударна уу."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Буцах"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Та дэлгэцийн доод булангаас дээш шударна уу."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Та суллахаасаа өмнө түр зогсоож болохгүй."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Та чигээрээ шударна уу."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Та Нүүр лүү очих зангааг гүйцэтгэлээ."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Нүүр лүү очихын тулд шудрах"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Дэлгэцийнхээ доороос дээш шударна уу. Энэ зангаа таныг тогтмол Үндсэн нүүрэнд аваачна."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"2 хуруугаараа дэлгэцийн доороос дээш шударна уу. Энэ зангаа таныг тогтмол Үндсэн нүүрэнд аваачна."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Үндсэн нүүр лүү очих"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Үндсэн нүүр лүүгээ хүссэн үедээ очихын тулд дэлгэцийн доороос дээш шударна уу"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Та дэлгэцийн доод булангаас дээш шударна уу."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Суллахаасаа өмнө цонхыг илүү удаан дарж үзнэ үү."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Та чигээрээ шударч, дараа нь түр зогсооно уу."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Та аппуудыг сэлгэх зангааг гүйцэтгэлээ."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Аппуудыг сэлгэхийн тулд шудрах"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Аппуудын хооронд сэлгэхийн тулд дэлгэцийнхээ доод хэсгээс дээш шударч, удаан дараад, суллана уу."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Аппуудын хооронд сэлгэхийн тулд 2 хуруугаараа дэлгэцийнхээ доод хэсгээс дээш шударч, удаан дараад, суллана уу."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Аппуудыг сэлгэх"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Бүгдийг тохируулсан"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Дууссан"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Тохиргоо"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Янзтай!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"<xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g> практик хичээл"</string>
     <string name="allset_title" msgid="5021126669778966707">"Тохируулж дууслаа!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Нүүр хуудас руу очихын тулд дээш шударна уу"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Та утсаа ашиглаж эхлэхэд бэлэн боллоо"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Нүүр хуудас руу очихын тулд дээш шударна уу"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Үндсэн нүүр лүүгээ очихын тулд нүүр хуудасны товчлуурыг товшино уу"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Та <xliff:g id="DEVICE">%1$s</xliff:g>-г ашиглаж эхлэхэд бэлэн боллоо"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"төхөөрөмж"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Системийн навигацын тохиргоо"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Хуваалцах"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Дэлгэцийн агшин дарах"</string>
     <string name="action_split" msgid="2098009717623550676">"Хуваах"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Дэлгэц хуваахыг ашиглах бол өөр аппыг товшино уу"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Апп дэлгэцийг хуваах горимыг дэмждэггүй."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Дэлгэцийг хуваахыг ашиглахын тулд өөр аппыг товш"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Дэлгэцийг хуваах горим ашиглах өөр апп сонгоно уу"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Энэ үйлдлийг апп эсвэл танай байгууллага зөвшөөрдөггүй"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Навигацын практик хичээлийг алгасах уу?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Та үүнийг дараа нь <xliff:g id="NAME">%1$s</xliff:g> аппаас олох боломжтой"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Цуцлах"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Алгасах"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Дэлгэцийг эргүүлэх"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Боловсролын ажлын талбар гарч ирсэн"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Боловсролын ажлын талбарыг хаасан"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Аппуудыг сэлгэхийн тулд талбарыг ашиглана уу"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Хоёр аппыг зэрэг ашиглахын тулд хажуу тал руу чирнэ үү"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Ажлын талбарыг нуухын тулд хүрээд удаан дарна уу"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Дараах"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Буцах"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Ажлын хэсгийн боловсрол"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"2 аппыг зэрэг ашиглахын тулд аппыг хажуу тийш чирнэ үү"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Ажлын хэсгийг харуулахын тулд аажмаар дээш шударна уу"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Таны хэвшилд тулгуурлан санал болгож буй аппуудыг аваарай"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Ажлын хэсгийг автоматаар хаахын тулд Тохиргоонд зангааны навигацыг асаана уу"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Ажлын хэсгийн тусламжтай илүү ихийг хийгээрэй"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Хаах"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Дууссан"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Гэр"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Саяхны"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Мэдэгдэл"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Шуурхай тохиргоо"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Ажлын хэсэг"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Ажлын хэсгийг харуулсан"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Ажлын хэсгийг нуусан"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Навигацын самбар"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Ажлын хэсгийг үргэлж харуулах"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Навигацын горимыг өөрчлөх"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Ажлын хэсгийг хуваагч"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Зүүн дээд хэсэг рүү зөөх"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Баруун доод хэсэг рүү зөөх"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Өөр # аппыг харуулна уу.}other{Өөр # аппыг харуулна уу.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> болон <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-mr/strings.xml b/quickstep/res/values-mr/strings.xml
index aa374b4..c2ddaf5 100644
--- a/quickstep/res/values-mr/strings.xml
+++ b/quickstep/res/values-mr/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"तुमच्या होम स्क्रीनच्या पसंतीच्या पंक्तीवर अ‍ॅप सूचना मिळवा"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"तुमची सर्वाधिक वापरली जाणारी अ‍ॅप्स होम स्क्रीनवरच सहजपणे अ‍ॅक्सेस करा. तुमच्या दिनक्रमानुसार तुम्हाला मिळणाऱ्या सूचना बदलतील. तळाशी असणारी अ‍ॅप्स तुमच्या होम स्क्रीनवर जातील."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"तुमची सर्वाधिक वापरली जाणारी अ‍ॅप्स होम स्क्रीनवर सहजपणे अ‍ॅक्सेस करा. सूचना तुमच्या दिनक्रमांनुसार बदलतील. पसंतीच्या पंक्तीमधील अ‍ॅप्स तुमच्या होम स्क्रीनवर हलवली जातील."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"तुमची सर्वाधिक वापरली जाणारी अ‍ॅप्स होम स्क्रीनवरच सहजपणे अ‍ॅक्सेस करा. सूचना तुमच्या दिनक्रमांच्या आधारावर बदलतील. तळाच्या पंक्तीवरील अ‍ॅप्स नवीन फोल्डरवर जातील."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"अ‍ॅप सूचना मिळवा"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"नाही, नको"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"सेटिंग्ज"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"बॅक जेश्चरची संवेदनशीलता बदलण्यासाठी, सेटिंग्ज वर जा"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"परत जाण्यासाठी स्वाइप करा"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"मागील स्क्रीनवर परत जाण्यासाठी, स्क्रीनच्या डाव्या किंवा उजव्या कडेपासून मध्यावर स्‍वाइप करा."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"मागील स्क्रीनवर परत जाण्यासाठी, दोन बोटांनी डाव्या किंवा उजव्या कडेपासून स्क्रीनच्या मध्यभागी स्वाइप करा."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"मागे जा"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"तुम्ही स्क्रीनच्या तळाच्या कडेपासून वर स्वाइप करत आहात याची खात्री करा."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"तुम्ही स्क्रीनवरून बोट उचलण्यापूर्वी ते थांबवत नाही याची खात्री करा."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"तुम्ही सरळ वर स्वाइप करत आहात याची खात्री करा."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"तुम्ही गो होम जेश्चर पूर्ण केले."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"होमवर जाण्यासाठी स्‍वाइप करा"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"तुमच्या स्क्रीनच्या तळाकडून वर स्वाइप करा. हे जेश्चर तुम्हाला नेहमी होम स्क्रीनवर घेऊन जाते."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"स्क्रीनच्या तळापासून दोन बोटांनी वर स्वाइप करा. हे जेश्चर तुम्हाला नेहमी होम स्क्रीनवर घेऊन जाते."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"होमवर जा"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"कधीही तुमच्या होम स्क्रीनवर जाण्यासाठी, तुमच्या स्क्रीनच्या तळापासून वर स्वाइप करा"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"तुम्ही स्क्रीनच्या तळाच्या कडेपासून वर स्वाइप करत आहात याची खात्री करा."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"विंडोवरून बोट उचलण्यापूर्वी थोडा वेळ ते तेथेच धरून ठेवा."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"तुम्ही सरळ वर स्वाइप करून, त्यानंतर बोट थांबवत आहात याची खात्री करा."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"तुम्ही ॲप्स स्विच करण्याचे जेश्चर पूर्ण केले."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"अ‍ॅप्स स्विच करण्यासाठी स्वाइप करा"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"ॲप्सदरम्यान स्विच करण्यासाठी, स्क्रीनच्या तळापासून वर स्वाइप करा, धरून ठेवा, त्यानंतर सोडून द्या."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"ॲप्सदरम्यान स्विच करण्यासाठी, स्क्रीनच्या तळापासून दोन बोटांनी वर स्वाइप करा, धरून ठेवा नंतर सोडा."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"अ‍ॅप्स स्विच करा"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"सर्व तयार आहे"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"पूर्ण झाले"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"सेटिंग्ज"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"छान!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"ट्यूटोरियल <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"सर्व तयार आहे!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"होम वर जाण्यासाठी वरती स्वाइप करा"</string>
-    <string name="allset_description" msgid="6350320429953234580">"तुम्ही तुमचा फोन वापरण्यास सुरुवात करू शकता"</string>
-    <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"सिस्टम नेव्हिगेशन सेटिंग्ज"</annotation></string>
+    <string name="allset_hint" msgid="459504134589971527">"होमवर जाण्यासाठी वरती स्वाइप करा"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"तुमच्या होम स्क्रीनवर जाण्यासाठी होम बटणावर टॅप करा"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"तुम्ही तुमचे <xliff:g id="DEVICE">%1$s</xliff:g> वापरण्यास सुरुवात करू शकता"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"डिव्हाइस"</string>
+    <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"सिस्टीम नेव्हिगेशन सेटिंग्ज"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"शेअर करा"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"स्क्रीनशॉट"</string>
     <string name="action_split" msgid="2098009717623550676">"स्प्लिट"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"स्प्लिटस्क्रीन वापरण्यासाठी दुसऱ्या ॲपवर टॅप करा"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"अ‍ॅप हे स्प्लिट-स्क्रीनला सपोर्ट करत नाही."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"स्प्लिट स्क्रीन वापरण्यासाठी दुसऱ्या ॲपवर टॅप करा"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"स्प्लिट स्क्रीन वापरण्यासाठी दुसरे ॲप निवडा"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"अ‍ॅप किंवा तुमच्या संस्थेद्वारे ही क्रिया करण्याची अनुमती नाही"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"नेव्हिगेशन ट्यूटोरियल वगळायचे आहे का?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"तुम्हाला हे नंतर <xliff:g id="NAME">%1$s</xliff:g> ॲपमध्ये मिळेल"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"रद्द करा"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"वगळा"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"स्क्रीन फिरवा"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"टास्कबारशी संबंधित माहिती देणारे पॅनल उघडले आहे"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"टास्कबारशी संबंधित माहिती देणारे पॅनल बंद केले आहे"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"ॲप्स स्विच करण्यासाठी टास्कबार वापरा"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"दोन ॲप्स एकत्र वापरण्यासाठी, त्यांना बाजूला नेऊन ड्रॅग करा"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"टास्कबार लपवण्यासाठी स्पर्श करा आणि धरून ठेवा"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"पुढे"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"मागे जा"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"टास्कबारशी संबंधित माहिती"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"दोन ॲप्स एकत्र वापरण्यासाठी एक अ‍ॅप बाजूला ड्रॅग करा"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"टास्कबार दाखवण्यासाठी थोडे हळू वरती स्वाइप करा"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"तुमच्या दिनक्रमावर आधारित ॲप सूचना मिळवा"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"टास्कबार ऑटो हाइड करण्यासाठी सेटिंग्ज मधून जेश्चर नेव्हिगेशन सुरू करा"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"टास्कबार चा पुरेपूर वापर करा"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"बंद करा"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"पूर्ण झाले"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"होम"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"अलीकडील"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"सूचना"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"क्विक सेटिंग्ज"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"टास्कबार"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"टास्कबार दाखवलेला आहे"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"टास्कबार लपवलेले आहे"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"नेव्हिगेशन बार"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"नेहमी टास्कबार दाखवा"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"नेव्हिगेशन मोड बदला"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"टास्कबार विभाजक"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"सर्वात वरती/डावीकडे हलवा"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"तळाशी/उजवीकडे हलवा"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{आणखी # अ‍ॅप दाखवा.}other{आणखी # अ‍ॅप्स दाखवा.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> आणि <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-ms/strings.xml b/quickstep/res/values-ms/strings.xml
index 8b9165d..129462d 100644
--- a/quickstep/res/values-ms/strings.xml
+++ b/quickstep/res/values-ms/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Dapatkan cadangan apl di baris kegemaran Skrin utama anda"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Akses apl yang paling kerap anda gunakan dengan mudah pada Skrin utama. Cadangan akan berubah berdasarkan rutin anda. Apl di baris bawah akan beralih ke atas, ke Skrin utama anda."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Akses apl yang paling kerap anda gunakan dengan mudah pada Skrin utama. Cadangan akan berubah berdasarkan rutin anda. Apl di baris kegemaran akan beralih ke Skrin utama anda."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Akses apl yang paling kerap anda gunakan dengan mudah, terus pada Skrin utama. Cadangan akan berubah berdasarkan rutin anda. Apl di baris bawah akan beralih ke folder baharu."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Dapatkan cadangan apl"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Tidak perlu"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Tetapan"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Utk mengubah kepekaan gerak isyarat undur, pergi ke Tetapan"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Leret untuk kembali"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Untuk kembali ke skrin terakhir, leret dari tepi sebelah kiri atau kanan ke tengah skrin."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Untuk kembali ke skrin terakhir, leret dengan 2 jari dari tepi kiri atau kanan ke tengah skrin."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Kembali"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Pastikan anda meleret ke atas dari tepi sebelah bawah skrin."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Pastikan anda tidak menjeda sebelum melepaskan gerak isyarat tersebut."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Pastikan anda meleret terus ke atas."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Anda telah melengkapkan gerak isyarat pergi ke Laman Utama."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Leret untuk kembali ke laman utama"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Leret ke atas dari bahagian bawah skrin. Gerak isyarat ini sentiasa membawa anda ke Skrin utama."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Leret ke atas dengan 2 jari dari bawah skrin. Gerak isyarat ini sentiasa bawa anda ke Skrin utama."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Pergi ke laman utama"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Untuk pergi ke skrin utama anda pada bila-bila masa, leret ke atas dari bahagian bawah skrin anda"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Pastikan anda meleret ke atas dari tepi sebelah bawah skrin."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Cuba tahan tetingkap untuk tempoh yang lebih lama sebelum melepaskan."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Pastikan anda meleret ke atas, kemudian menjeda."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Anda telah melengkapkan gerak isyarat menukar apl."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Leret untuk menukar apl"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Untuk beralih antara apl, leret ke atas dari bahagian bawah skrin anda, tahan, kemudian lepaskan."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Untuk beralih antara apl, leret ke atas dengan 2 jari dari bawah skrin, tahan, kemudian lepaskan."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Tukar apl"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Selesai"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Selesai"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Tetapan"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Bagus!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Tutorial <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Siap!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Leret ke atas untuk kembali ke Laman Utama"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Anda sudah sedia untuk mula menggunakan telefon anda"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Leret ke atas untuk mencapai laman utama"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Ketik butang skrin utama untuk pergi ke skrin utama anda"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Anda sudah sedia untuk mula menggunakan <xliff:g id="DEVICE">%1$s</xliff:g> anda"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"peranti"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Tetapan navigasi sistem"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Kongsi"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Tangkapan skrin"</string>
     <string name="action_split" msgid="2098009717623550676">"Pisah"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Ketik apl lain untuk menggunakan skrin pisah"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Apl tidak menyokong skrin pisah."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Ketik apl lain untuk menggunakan skrin pisah"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Pilih apl lain untuk menggunakan skrin pisah"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Tindakan ini tidak dibenarkan oleh apl atau organisasi anda"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Langkau tutorial navigasi?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Anda boleh mendapatkan tutorial ini kemudian dalam apl <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Batal"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Langkau"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Putar skrin"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Pendidikan bar tugas muncul"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Pendidikan bar tugas ditutup"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Gunakan bar tugas untuk menukar apl"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Seret ke tepi untuk menggunakan dua apl serentak"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Sentuh &amp; tahan untuk menyembunyikan bar tugas"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Seterusnya"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Kembali"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Pendidikan bar tugas"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Seret apl ke tepi untuk menggunakan 2 apl serentak"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Leret perlahan ke atas untuk menunjukkan Bar Tugas"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Dapatkan cadangan apl berdasarkan rutin anda"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Hidupkan navigasi gerak isyarat dalam Tetapan untuk autosembunyi Bar Tugas"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Lakukan lebih banyak perkara dengan Bar Tugas"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Tutup"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Selesai"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Laman Utama"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Terbaharu"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Pemberitahuan"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Tetapan Pantas"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Bar Tugas"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Bar Tugas dipaparkan"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Bar Tugas disembunyikan"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Bar navigasi"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Sentiasa paparkan Bar Tugas"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Tukar mod navigasi"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Pembahagi Bar Tugas"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Alihkan ke atas/kiri"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Alihkan ke bawah/kanan"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Tunjukkan # lagi apl.}other{Tunjukkan # lagi apl.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> dan <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-my/strings.xml b/quickstep/res/values-my/strings.xml
index d09165a..287e4a0 100644
--- a/quickstep/res/values-my/strings.xml
+++ b/quickstep/res/values-my/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"သင်၏ \'ပင်မစာမျက်နှာ\' ၏ အနှစ်သက်ဆုံးများအတန်းတွင် အက်ပ်အကြံပြုချက်များ ရယူခြင်း"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"အသုံးအများဆုံးအက်ပ်များကို \'ပင်မစာမျက်နှာ\' တွင် အလွယ်တကူ ဖွင့်နိုင်သည်။ သင်၏ ပုံမှန်လုပ်ဆောင်ချက်များပေါ် အခြေခံ၍ အကြံပြုချက်များ ပြောင်းလဲပါမည်။ အောက်ခြေအတန်းရှိ အက်ပ်များကို သင်၏ \'ပင်မစာမျက်နှာ\' သို့ရွှေ့လိုက်မည်။"</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"အသုံးအများဆုံးအက်ပ်များကို \'ပင်မစာမျက်နှာ\' တွင် အလွယ်တကူ သုံးနိုင်သည်။ သင်၏ ပုံမှန်အစီအစဉ်များပေါ် အခြေခံ၍ အကြံပြုချက်များ ပြောင်းလဲပါမည်။ အနှစ်သက်ဆုံးများအတန်းရှိ အက်ပ်များကို သင်၏ \'ပင်မစာမျက်နှာ\' သို့ရွှေ့လိုက်မည်။"</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"အသုံးအများဆုံးအက်ပ်များကို \'ပင်မစာမျက်နှာ\' တွင် အလွယ်တကူ သုံးနိုင်သည်။ သင်၏ ပုံမှန်အစီအစဉ်များပေါ် အခြေခံ၍ အကြံပြုချက်များ ပြောင်းလဲပါမည်။ အောက်ခြေအတန်းရှိ အက်ပ်များကို ဖိုင်တွဲအသစ်သို့ ရွှေ့လိုက်မည်။"</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"အက်ပ်အကြံပြုချက်များ ရယူရန်"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"မလိုပါ"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"ဆက်တင်များ"</string>
@@ -45,7 +44,7 @@
     <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"အက်ပ်အကြံပြုချက်များ ဖွင့်ထားသည်"</string>
     <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"အက်ပ်အကြံပြုချက်များကို ပိတ်ထားသည်"</string>
     <string name="hotseat_prediction_content_description" msgid="4582028296938078419">"ကြိုတင်မှန်းဆထားသော အက်ပ်− <xliff:g id="TITLE">%1$s</xliff:g>"</string>
-    <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"ညာ သို့မဟုတ် ဘယ်ဘက်အစွန် ခပ်လှမ်းလှမ်းမှ ပွတ်ဆွဲကြောင်း သေချာပါစေ။"</string>
+    <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"ညာ သို့မဟုတ် ဘယ်ဘက်အစွန်မှ ပွတ်ဆွဲကြောင်း သေချာပါစေ။"</string>
     <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"စခရင်၏ ညာ သို့မဟုတ် ဘက်ဘက်အစွန်မှ အလယ်သို့ ပွတ်ဆွဲပြီး လွှတ်လိုက်ကြောင်း သေချာပါစေ။"</string>
     <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"နောက်ပြန်သွားရန် ညာဘက်မှပွတ်ဆွဲနည်းကို သိသွားပါပြီ။ နောက်အဆင့်တွင် အက်ပ်များပြောင်းနည်းကို လေ့လာပါ။"</string>
     <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"နောက်ဆုတ်လက်ဟန် ရှင်းလင်းပို့ချချက် ပြီးပါပြီ။"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"နောက်ဆုတ်လက်ဟန်၏ အာရုံခံစွမ်းကိုပြောင်းရန် ‘ဆက်တင်များ’ သို့ သွားပါ"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"နောက်ပြန်သွားရန် ပွတ်ဆွဲပါ"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"နောက်ဆုံးဖန်သားပြင်သို့ ပြန်သွားရန် ဘယ်ဘက် (သို့) ညာဘက်အစွန်မှ ဖန်သားပြင်အလယ်သို့ ပွတ်ဆွဲပါ။"</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"ပြီးခဲ့သည့်ဖန်သားပြင်သို့သွားရန် ဘယ်ဘက် (သို့) ညာဘက်အစွန်းမှ ဖန်သားပြင်အလယ်သို့ လက် ၂ ချောင်းဖြင့် ပွတ်ဆွဲပါ။"</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"နောက်သို့"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"ဖန်သားပြင် အောက်ခြေအစွန်မှ အပေါ်သို့ ပွတ်ဆွဲကြောင်း သေချာပါစေ။"</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"လက်မလွှတ်ခင် ခဏရပ်ခြင်းမရှိကြောင်း သေချာပါစေ။"</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"အပေါ်တည့်တည့်သို့ ပွတ်ဆွဲကြောင်း သေချာပါစေ။"</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"ပင်မစာမျက်နှာသို့သွားသည့် လက်ဟန် ရှင်းလင်းပို့ချချက် ပြီးပါပြီ။"</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"ပင်မစာမျက်နှာသို့သွားရန် ပွတ်ဆွဲပါ"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"သင့်ဖန်သားပြင် အောက်ခြေမှ အပေါ်သို့ပွတ်ဆွဲပါ။ ဤလက်ဟန်ဖြင့် ပင်မစာမျက်နှာသို့ အမြဲပြန်သွားနိုင်သည်။"</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"ဖန်သားပြင်အောက်မှ အပေါ်သို့ လက် ၂ ချောင်းဖြင့် ပွတ်ဆွဲပါ။ ဤလက်ဟန်က ပင်မစာမျက်နှာသို့ အမြဲပို့ပေးမည်။"</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"ပင်မစာမျက်နှာသို့ သွားပါ"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"ပင်မစာမျက်နှာသို့ အချိန်မရွေး ပြန်သွားရန် စခရင်အောက်ခြေမှ အပေါ်သို့ ပွတ်ဆွဲပါ"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"ဖန်သားပြင် အောက်ခြေအစွန်မှ အပေါ်သို့ ပွတ်ဆွဲကြောင်း သေချာပါစေ။"</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"မလွှတ်ခင် ဝင်းဒိုးကို အချိန်ကြာကြာ ဖိထားကြည့်ပါ။"</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"အပေါ်တည့်တည့်သို့ ပွတ်ဆွဲပြီးနောက် ခဏရပ်ကြောင်း သေချာပါစေ။"</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"အက်ပ်များပြောင်းသည့် လက်ဟန် ရှင်းလင်းပို့ချချက် ပြီးပါပြီ။"</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"အက်ပ်များပြောင်းရန် ပွတ်ဆွဲပါ"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"အက်ပ်တစ်ခုမှတစ်ခုသို့ ပြောင်းရန် စခရင်အောက်ခြေမှ အပေါ်သို့ ပွတ်ဆွဲ၍ ဖိထားပြီးနောက် လွှတ်ပါ။"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"အက်ပ်များကြားပြောင်းရန် ဖန်သားပြင်အောက်မှ အပေါ်သို့ လက် ၂ ချောင်းဖြင့်ဆွဲ၍ ထိန်းထားပြီး လွှတ်ပါ။"</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"အက်ပ်များ ကူးပြောင်းရန်"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"အားလုံးအဆင်သင့်ဖြစ်ပါပြီ"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"ပြီးပြီ"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"ဆက်တင်များ"</string>
@@ -74,38 +80,46 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"ကောင်းသည်။"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"ရှင်းလင်းပို့ချချက် <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"အားလုံး အဆင်သင့်ပါ။"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"ပင်မစာမျက်နှာသို့သွားရန် အပေါ်သို့ ပွတ်ဆွဲပါ"</string>
-    <string name="allset_description" msgid="6350320429953234580">"သင့်ဖုန်းကို စတင်အသုံးပြုရန် အသင့်ဖြစ်ပါပြီ"</string>
+    <string name="allset_hint" msgid="459504134589971527">"ပင်မစာမျက်နှာသို့သွားရန် အပေါ်သို့ ပွတ်ဆွဲပါ"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"ပင်မစာမျက်နှာသို့ သွားရန် ပင်မခလုတ်ကို တို့ပါ"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"<xliff:g id="DEVICE">%1$s</xliff:g> ကို စသုံးရန် အသင့်ဖြစ်ပါပြီ"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"စက်"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"စနစ် လမ်းညွှန် ဆက်တင်များ"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"မျှဝေရန်"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"ဖန်သားပြင်ဓာတ်ပုံ"</string>
     <string name="action_split" msgid="2098009717623550676">"ခွဲထုတ်ရန်"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"မျက်နှာပြင်ခွဲ၍ပြသရန် အက်ပ်နောက်တစ်ခုကို တို့ပါ"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"အက်ပ်တွင် မျက်နှာပြင် ခွဲ၍ပြသခြင်း သုံး၍မရပါ။"</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"မျက်နှာပြင် ခွဲ၍ပြသရန် အက်ပ်နောက်တစ်ခုကို တို့ပါ"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"မျက်နှာပြင်ခွဲ၍ပြသခြင်းသုံးရန် နောက်အက်ပ်တစ်ခုရွေးပါ"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"ဤလုပ်ဆောင်ချက်ကို အက်ပ် သို့မဟုတ် သင်၏အဖွဲ့အစည်းက ခွင့်မပြုပါ"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"လမ်းညွှန်ခြင်း ရှင်းလင်းပို့ချချက်ကို ကျော်မလား။"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"၎င်းကို နောက်မှ <xliff:g id="NAME">%1$s</xliff:g> အက်ပ်တွင် ရှာနိုင်သည်"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"မလုပ်တော့"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"ကျော်ရန်"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"ဖန်သားပြင်လှည့်ရန်"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"ပညာရေး လုပ်ဆောင်စရာဘား ပြထားသည်"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"ပညာရေး လုပ်ဆောင်စရာဘား ပိတ်ထားသည်"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"အက်ပ်များပြောင်းရန် လုပ်ဆောင်စရာဘားကို သုံးပါ"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"အက်ပ်နှစ်ခု တစ်ပြိုင်တည်းသုံးရန် တစ်ဖက်သို့ ဖိဆွဲပါ"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"လုပ်ဆောင်စရာဘားကို ဖျောက်ရန် ထိပြီးဖိထားနိုင်သည်"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"ရှေ့သို့"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"နောက်သို့"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"လုပ်ဆောင်စရာဘား ပညာပေး"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"အက်ပ် ၂ ခု တစ်ပြိုင်တည်းသုံးရန် အက်ပ်ကို ဘေးသို့ ဖိဆွဲပါ"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Taskbar ပြရန် အပေါ်သို့ ဖြည်းဖြည်းပွတ်ဆွဲပါ"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"ပုံမှန်အစီအစဉ်ပေါ် အခြေခံ၍ အက်ပ်အကြံပြုချက်များကို ရယူပါ"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Taskbar ကို အော်တိုဝှက်ရန် ဆက်တင်များတွင် လက်ဟန်ဖြင့်လမ်းညွှန်ခြင်း ဖွင့်နိုင်သည်"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Taskbar ဖြင့် ပိုမိုလုပ်ဆောင်နိုင်ခြင်း"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"ပိတ်ရန်"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"ပြီးပြီ"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"ပင်မစာမျက်နှာ"</string>
-    <string name="taskbar_button_a11y" msgid="5241161324875094465">"အများသုံးစွဲနိုင်မှု"</string>
+    <string name="taskbar_button_a11y" msgid="5241161324875094465">"အများသုံးနိုင်မှု"</string>
     <string name="taskbar_button_back" msgid="8558862226461164514">"နောက်သို့"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME ပြောင်းစနစ်"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"လတ်တလောများ"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"အကြောင်းကြားချက်"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"အမြန်ဆက်တင်များ"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"လုပ်ဆောင်စရာဘား"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Taskbar ပြထားသည်"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Taskbar ဖျောက်ထားသည်"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"လမ်းညွှန်ဘား"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"‘လုပ်ဆောင်စရာဘား’ အမြဲပြပါ"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"ရွှေ့ကြည့်သည့်မုဒ် ပြောင်းရန်"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"လုပ်ဆောင်စရာဘား ပိုင်းခြားစနစ်"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"အပေါ်/ဘယ်ဘက်သို့ ရွှေ့ရန်"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"အောက်ခြေ/ညာဘက်သို့ ရွှေ့ရန်"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{နောက်ထပ်အက်ပ် # ခု ပြပါ။}other{နောက်ထပ်အက်ပ် # ခု ပြပါ။}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> နှင့် <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-nb/strings.xml b/quickstep/res/values-nb/strings.xml
index 6d143bd..064eaf3 100644
--- a/quickstep/res/values-nb/strings.xml
+++ b/quickstep/res/values-nb/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Få appforslag i favoritter-raden på startskjermen"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Få enkel tilgang til appene du bruker oftest, rett fra startskjermen. Forslagene endres basert på rutinene dine. Appene i den nederste raden flyttes opp til startskjermen."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Få enkel tilgang til appene du bruker oftest, rett fra startskjermen. Forslagene endres basert på rutinene dine. Apper i favoritter-raden blir flyttet til startskjermen."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Få enkel tilgang til appene du bruker oftest, rett fra startskjermen. Forslagene endres basert på rutinene dine. Appene i den nederste raden flyttes til en ny mappe."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Få appforslag"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nei takk"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Innstillinger"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Gå til Innstillinger for å endre tilbakebevegelsefølsomheten"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Sveip for å gå tilbake"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"For å gå tilbake til forrige skjerm, sveip fra venstre eller høyre kant til midten av skjermen."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"For å gå tilbake til den forrige skjermen, sveip med to fingre fra den venstre eller høyre kanten til midten av skjermen."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Gå tilbake"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Sørg for at du sveiper opp fra den nederste kanten av skjermen."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Sørg for at du ikke setter på pause før du slipper."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Sørg for at du sveiper rett opp."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Du har fullført bevegelsen for å gå til startskjermen."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Sveip for å gå til startskjermen"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Sveip opp fra bunnen av skjermen. Denne bevegelsen tar deg alltid til startskjermen."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Sveip opp med to fingre fra bunnen av skjermen. Denne bevegelsen tar deg alltid til startskjermen."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Gå til startskjermen"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"For å gå til startskjermen, sveip opp fra bunnen av skjermen når som helst"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Sørg for at du sveiper opp fra den nederste kanten av skjermen."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Prøv å holde vinduet lenger før du slipper."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Sørg for at du sveiper rett opp, og så stopper du."</string>
@@ -67,34 +71,37 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Du har fullført bevegelsen for å bytte app."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Sveip for å bytte app"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"For å bytte mellom apper, sveip opp fra bunnen av skjermen, hold, og slipp"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"For å bytte mellom apper, sveip opp med to fingre fra bunnen av skjermen, hold, og slipp."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Bytt app"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Ferdig"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Ferdig"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Innstillinger"</string>
-    <string name="gesture_tutorial_try_again" msgid="65962545858556697">"Prøv igjen"</string>
+    <string name="gesture_tutorial_try_again" msgid="65962545858556697">"Prøv på nytt"</string>
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Bra!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Veiledning <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Alt er klart!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Sveip opp for å gå til startskjermen"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Du er klar til å begynne å bruke telefonen"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Sveip opp for å gå til startskjermen"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Trykk på hjemknappen for å gå til startskjermen"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Nå kan du bruke <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"enheten"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Innstillinger for systemnavigasjon"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Del"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Skjermdump"</string>
     <string name="action_split" msgid="2098009717623550676">"Del opp"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Trykk på en annen app for å bruke delt skjerm"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Appen støtter ikke delt skjerm."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Trykk på en annen app for å bruke delt skjerm"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Velg en annen app for å bruke delt skjerm"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Appen eller organisasjonen din tillater ikke denne handlingen"</string>
-    <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Vil du hoppe over navigeringsveiledning?"</string>
+    <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Vil du hoppe over navigeringsveiledningen?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Du kan finne dette i <xliff:g id="NAME">%1$s</xliff:g>-appen senere"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Avbryt"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Hopp over"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Rotér skjermen"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Opplæringen for oppgavelinjen vises"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Opplæringen for oppgavelinjen er lukket"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Bruk oppgavelinjen for å bytte app"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Dra til siden for å bruke to apper samtidig"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Trykk og hold for å skjule oppgavelinjen"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Neste"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Tilbake"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Veiledning for oppgavelinjen"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Dra en app til siden for å bruke 2 apper samtidig"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Sveip langsomt opp for å vise oppgavelinjen"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Få appforslag som er basert på rutinene dine"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Slå på navigasjon med bevegelser i innstillingene for å skjule oppgavelinjen automatisk"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Gjør mer med oppgavelinjen"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Lukk"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Ferdig"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Hjem"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Tilbake"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME-veksler"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Nylige"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Varsler"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Hurtiginnst."</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Oppgavelinje"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Oppgavelinjen vises"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Oppgavelinjen er skjult"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigasjonsrad"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Vis alltid oppgavelinjen"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Endre navigasjonsmodus"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Skille for oppgavelinjen"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Flytt til øverst/venstre"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Flytt til nederst/høyre"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Vis # app til.}other{Vis # apper til.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> og <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-ne/strings.xml b/quickstep/res/values-ne/strings.xml
index cd3383b..f4df28b 100644
--- a/quickstep/res/values-ne/strings.xml
+++ b/quickstep/res/values-ne/strings.xml
@@ -35,14 +35,13 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"आफ्नो होम स्क्रिनको मन पर्ने नामक पङ्क्तिमा एपसम्बन्धी सिफारिस प्राप्त गर्नुहोस्"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"आफूले सबैभन्दा बढी प्रयोग गर्ने एप होम स्क्रिनबाट सजिलै चलाउनुहोस्। सिफारिस गरिने एपहरूको क्रम तपाईंले एप प्रयोग गर्ने समयतालिकाअनुसार बदलिने छ। फेदको रोमा रहेका एपहरू तपाईंको होम स्क्रिनको सिरानमा सर्ने छन्।"</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"आफूले सबैभन्दा बढी प्रयोग गर्ने एपहरू गृह स्क्रिनबाटै सजिलैसँग खोल्नुहोस्। सिफारिस गरिने एपहरूको क्रम तपाईंको दिनचर्याअनुसार बदलिने छ। मन पर्ने नामक पङ्क्तिमा रहेका एपहरू सारेर होम स्क्रिनमा लगिने छन्।"</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"गृह स्क्रिनबाटै आफूले सबैभन्दा बढी प्रयोग गर्ने एप सजिलै चलाउनुहोस्। सिफारिस गरिने एपहरूको क्रम तपाईंले एप प्रयोग गर्ने समयतालिकाअनुसार बदलिने छ। फेदको पङ्क्तिमा रहेका एपहरू एउटा नयाँ फोल्डरमा सर्ने छन्।"</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"एपसम्बन्धी सिफारिस प्राप्त गर्नुहोस्"</string>
-    <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"पर्दैन धन्यवाद"</string>
+    <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"पर्दैन, धन्यवाद"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"सेटिङ"</string>
     <string name="hotseat_auto_enrolled" msgid="522100018967146807">"सबैभन्दा बढी प्रयोग हुने एपहरू यहाँ देखिन्छन् र यी एपहरूको क्रम तपाईंले एप प्रयोग गर्ने समयतालिकाअनुसार बदलिरहन्छ"</string>
     <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"एपसम्बन्धी सिफारिस प्राप्त गर्न फेदको रोमा रहेका एपहरू ड्र्याग गरी हटाउनुहोस्"</string>
     <string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"खाली ठाउँमा सिफारिस गरिएका एपहरू थपिए"</string>
-    <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"सिफारिस गरिएका एपहरू देखाउने सुविधा सक्षम पारिएका छन्"</string>
+    <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"सिफारिस गरिएका एप देखाउने सुविधा अन गरिएको छ"</string>
     <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"सिफारिस गरिएका एपहरू देखाउने सुविधा असक्षम पारिएको छ"</string>
     <string name="hotseat_prediction_content_description" msgid="4582028296938078419">"पूर्वानुमान गरिएको एप: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"स्क्रिनको सबैभन्दा दायाँ किनारा वा सबैभन्दा बायाँ किनाराबाट स्वाइप गर्नुहोस्।"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"\'पछाडि\' नामक इसाराको संवेदनशीलता बदल्न सेटिङमा जानुहोस्"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"पछाडि जान स्वाइप गर्नुहोस्"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"यसअघिको स्क्रिनमा फर्कन स्क्रिनको बायाँ वा दायाँ किनाराबाट मध्य भागसम्म स्वाइप गर्नुहोस्।"</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"तपाईं यसअघि जुन स्क्रिनमा हुनुहुन्थ्यो त्यही स्क्रिनमा फर्कन चाहनुहुन्छ भने २ वटा औँला प्रयोग गरी स्क्रिनको बायाँ वा दायाँ किनाराबाट मध्य भागसम्म स्वाइप गर्नुहोस्।"</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"पछाडि जानुहोस्"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"स्क्रिनको फेदबाट माथितिर स्वाइप गर्नुहोस्।"</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"औँला उठाउनुअघि नरोकिनुहोस्।"</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"सीधै माथितिर स्वाइप गर्नुहोस्।"</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"तपाईंले \'होम स्क्रिनमा जानुहोस्\' नामक इसारा प्रयोग गर्ने तरिका सिक्नुभयो।"</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"होम स्क्रिनमा जान स्वाइप गर्नुहोस्"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"स्क्रिनको फेदबाट माथितिर स्वाइप गर्नुहोस्। यो इसारा प्रयोग गर्दा सधैँ होम स्क्रिन खुल्छ।"</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"२ वटा औँला प्रयोग गरी स्क्रिनको फेदबाट माथितिर स्वाइप गर्नुहोस्। यो जेस्चर प्रयोग गर्दा सधैँ होम स्क्रिन खुल्छ।"</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"होम स्क्रिनमा जाने तरिका"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"जुनसुकै बेला होम स्क्रिनमा जान स्क्रिनको पुछारबाट माथितिर स्वाइप गर्नुहोस्"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"स्क्रिनको फेदबाट माथितिर स्वाइप गर्नुहोस्।"</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"स्क्रिनबाट औँला उठाउनुअघि एपको विन्डोमा केही बेर छोइराख्नुहोस्।"</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"सीधै माथितिर स्वाइप गर्नुहोस् अनि रोकिनुहोस्।"</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"तपाईंले \'एउटा एपबाट अर्को एपमा जानुहोस्\' नामक इसारा प्रयोग गर्ने तरिका सिक्नुभयो।"</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"एउटा एपबाट अर्को एपमा जान स्वाइप गर्नुहोस्"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"एउटा एपबाट अर्कोमा जान स्क्रिनको फेदबाट माथितिर स्वाइप गर्नुहोस्, छोइराख्नुहोस् अनि औँला उठाउनुहोस्।"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"एउटा एपबाट अर्कोमा जान २ वटा औँला प्रयोग गरी स्क्रिनको फेदबाट माथितिर स्वाइप गर्नुहोस्, छोइराख्नुहोस् अनि औँला उठाउनुहोस्।"</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"एउटा एपबाट अर्को एपमा जाने तरिका"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"सबै तयार छ"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"सम्पन्न भयो"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"सेटिङ"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"राम्रो!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"ट्युटोरियल <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"सबै तयार भयो!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"होममा जान माथितिर स्वाइप गर्नुहोस्"</string>
-    <string name="allset_description" msgid="6350320429953234580">"तपाईं आफ्नो फोन चलाउन थाल्न सक्नुहुन्छ"</string>
+    <string name="allset_hint" msgid="459504134589971527">"होममा जान माथितिर स्वाइप गर्नुहोस्"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"आफ्नो होम स्क्रिनमा जान होम बटनमा ट्याप गर्नुहोस्"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"तपाईं अब आफ्नो <xliff:g id="DEVICE">%1$s</xliff:g> चलाउन थाल्न सक्नुहुन्छ"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"डिभाइस"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"सिस्टम नेभिगेसनसम्बन्धी सेटिङ"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"सेयर गर्नुहोस्"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"स्क्रिनसट"</string>
     <string name="action_split" msgid="2098009717623550676">"स्प्लिट गर्नुहोस्"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"स्प्लिटक्रिन प्रयोग गर्न अर्को एपमा ट्याप गर्नुहोस्"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"यो एपको स्क्रिन विभाजन गर्न मिल्दैन।"</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"स्प्लिटस्क्रिन प्रयोग गर्न अर्को एपमा ट्याप गर्नु…"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"स्प्लिट स्क्रिन प्रयोग गर्न अर्को एप रोज्नुहोस्"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"यो एप वा तपाईंको सङ्गठनले यो कारबाही गर्ने अनुमति दिँदैन"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"नेभिगेसन ट्युटोरियल स्किप गर्ने हो?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"तपाईं पछि <xliff:g id="NAME">%1$s</xliff:g> नामक एपमा गई यो ट्युटोरियल भेट्टाउन सक्नुहुन्छ"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"रद्द गर्नुहोस्"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"स्किप गर्नु…"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"स्क्रिन घुमाउनुहोस्"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"टास्कबार एजुकेसन देखिएको छ"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"टास्कबार एजुकेसन बन्द गरिएको छ"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"एउटा एपबाट अर्को एपमा जान टास्कबार प्रयोग गर्नुहोस्"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"टास्कबार छेउतिर ड्र्याग गरेर एकै पटक दुई वटा एप चलाउनुहोस्"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"टास्कबार लुकाउन टास्कबार थिचिराख्नुहोस्"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"अर्को"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"पछाडि"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"टास्कबार एजुकेसन"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"एपलाई छेउतिर ड्र्याग गरेर एकै पटक २ वटा एप चलाउनुहोस्"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"टास्कबार देखाउन माथितिर बिस्तारै स्वाइप गर्नुहोस्"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"आफ्नो रुटिनका आधारमा एपसम्बन्धी सुझावहरू प्राप्त गर्नुहोस्"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"टास्कबार स्वतः लुकाउन सेटिङमा गई इसारामार्फत गरिने नेभिगेसन अन गर्नुहोस्"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"टास्कबार प्रयोग गरेर अझ धेरै कार्य गर्नुहोस्"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"बन्द गर्नुहोस्"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"सम्पन्न भयो"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"होम"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"पछाडि जानुहोस्"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME स्विचर"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"हालसालैका बटनहरू"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"सूचनाहरू"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"द्रुत सेटिङ"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"टास्कबार"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"टास्कबार देखाइएको छ"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"टास्कबार लुकाइएको छ"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"नेभिगेसन बार"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"टास्कबार सधैँ देखाइयोस्"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"नेभिगेसन मोड बदल्नुहोस्"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"टास्कबार डिभाइडर"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"सिरान/बायाँतिर सार्नुहोस्"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"फेद/दायाँतिर सार्नुहोस्"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{थप # एप देखाइयोस्।}other{थप # वटा एप देखाइयोस्।}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> र <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-night/colors.xml b/quickstep/res/values-night/colors.xml
index af6e064..8d03ce6 100644
--- a/quickstep/res/values-night/colors.xml
+++ b/quickstep/res/values-night/colors.xml
@@ -13,7 +13,7 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<resources>
+<resources xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
 
     <color name="gesture_tutorial_back_arrow_color">#99000000</color>
 
@@ -24,4 +24,8 @@
 
     <color name="all_set_page_background">#FF000000</color>
 
+    <!-- Turn on work apps button -->
+    <color name="work_turn_on_stroke">?androidprv:attr/colorAccentSecondaryVariant</color>
+    <color name="work_fab_bg_color">?androidprv:attr/materialColorPrimaryFixedDim</color>
+    <color name="work_fab_icon_color">?androidprv:attr/materialColorOnPrimaryFixed</color>
 </resources>
\ No newline at end of file
diff --git a/quickstep/res/values-night/styles.xml b/quickstep/res/values-night/styles.xml
index e6b3450..ed0bd5b 100644
--- a/quickstep/res/values-night/styles.xml
+++ b/quickstep/res/values-night/styles.xml
@@ -14,7 +14,8 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<resources>
+<resources
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
 
     <style name="AllSetTheme" parent="@android:style/Theme.DeviceDefault.NoActionBar">
         <item name="android:navigationBarColor">@android:color/transparent</item>
@@ -24,4 +25,58 @@
         <item name="android:windowBackground">@android:color/transparent</item>
     </style>
 
+    <style name="TextAppearance.GestureTutorial.MenuButton.Home"
+        parent="TextAppearance.GestureTutorial.MenuButton">
+        <item name="android:textColor">?attr/onSurfaceHome</item>
+    </style>
+
+    <style name="TextAppearance.GestureTutorial.MenuButton.Back"
+        parent="TextAppearance.GestureTutorial.MenuButton">
+        <item name="android:textColor">?attr/onSurfaceBack</item>
+    </style>
+
+    <style name="TextAppearance.GestureTutorial.MenuButton.Overview"
+        parent="TextAppearance.GestureTutorial.MenuButton">
+        <item name="android:textColor">?attr/onSurfaceOverview</item>
+    </style>
+
+    <style name="TextAppearance.GestureTutorial.ButtonLabel.Home"
+        parent="TextAppearance.GestureTutorial.ButtonLabel">
+        <item name="android:textColor">?attr/secondaryHome</item>
+    </style>
+
+    <style name="TextAppearance.GestureTutorial.ButtonLabel.Back"
+        parent="TextAppearance.GestureTutorial.ButtonLabel">
+        <item name="android:textColor">?attr/secondaryBack</item>
+    </style>
+
+    <style name="TextAppearance.GestureTutorial.ButtonLabel.Overview"
+        parent="TextAppearance.GestureTutorial.ButtonLabel">
+        <item name="android:textColor">?attr/secondaryOverview</item>
+    </style>
+
+    <style name="TextAppearance.GestureTutorial.MainTitle.Success.Home"
+        parent="TextAppearance.GestureTutorial.MainTitle.Home" />
+
+    <style name="TextAppearance.GestureTutorial.MainTitle.Success.Back"
+        parent="TextAppearance.GestureTutorial.MainTitle.Back" />
+
+    <style name="TextAppearance.GestureTutorial.MainTitle.Success.Overview"
+        parent="TextAppearance.GestureTutorial.MainTitle.Overview" />
+
+    <style name="GestureTutorialActivity" parent="@style/AppTheme">
+        <item name="background">@android:color/transparent</item>
+        <item name="tutorialSubtitle">@android:color/white</item>
+        <item name="surfaceContainer">?androidprv:attr/materialColorSurfaceContainer</item>
+        <item name="onSurfaceHome">?androidprv:attr/materialColorPrimaryFixedDim</item>
+        <item name="surfaceHome">?androidprv:attr/materialColorOnPrimaryFixedVariant</item>
+        <item name="secondaryHome">?androidprv:attr/materialColorOnPrimaryFixed</item>
+        <item name="onSurfaceBack">?androidprv:attr/materialColorTertiaryFixedDim</item>
+        <item name="surfaceBack">?androidprv:attr/materialColorOnTertiaryFixedVariant</item>
+        <item name="secondaryBack">?androidprv:attr/materialColorOnTertiaryFixed</item>
+        <item name="onSurfaceOverview">?androidprv:attr/materialColorPrimaryFixed</item>
+        <item name="surfaceOverview">?androidprv:attr/materialColorOnSecondaryFixedVariant</item>
+        <item name="secondaryOverview">?androidprv:attr/materialColorOnSecondaryFixed</item>
+    </style>
+
 </resources>
\ No newline at end of file
diff --git a/quickstep/res/values-nl/strings.xml b/quickstep/res/values-nl/strings.xml
index 7772aae..140b4ae 100644
--- a/quickstep/res/values-nl/strings.xml
+++ b/quickstep/res/values-nl/strings.xml
@@ -31,16 +31,15 @@
     <string name="time_left_for_app" msgid="3111996412933644358">"Nog <xliff:g id="TIME">%1$s</xliff:g> vandaag"</string>
     <string name="title_app_suggestions" msgid="4185902664111965088">"App-suggesties"</string>
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"Je voorspelde apps"</string>
-    <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"App-suggesties ontvangen op de onderste rij van je startscherm"</string>
-    <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"App-suggesties ontvangen op de rij met favorieten op het startscherm"</string>
-    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Open je meestgebruikte apps gemakkelijk vanaf het startscherm. De suggesties veranderen op basis van je routines. Apps op de onderste rij worden naar je startscherm verplaatst."</string>
-    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Open je meestgebruikte apps gemakkelijk vanaf het startscherm. De suggesties veranderen op basis van je routines. Apps op de rij met favorieten worden naar het startscherm verplaatst."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Open je meestgebruikte apps gemakkelijk vanaf het startscherm. De suggesties veranderen op basis van je routines. Apps op de onderste rij worden naar een nieuwe map verplaatst."</string>
-    <string name="hotseat_edu_accept" msgid="1611544083278999837">"App-suggesties ontvangen"</string>
+    <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"App-suggesties krijgen op de onderste rij van je startscherm"</string>
+    <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"App-suggesties krijgen op de rij met favorieten op het startscherm"</string>
+    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Open je meestgebruikte apps makkelijk vanaf het startscherm. De suggesties veranderen op basis van je routines. Apps in de onderste rij worden naar je startscherm verplaatst."</string>
+    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Open je meestgebruikte apps makkelijk vanaf het startscherm. De suggesties veranderen op basis van je routines. Apps in de rij met favorieten worden naar het startscherm verplaatst."</string>
+    <string name="hotseat_edu_accept" msgid="1611544083278999837">"App-suggesties krijgen"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nee, bedankt"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Instellingen"</string>
     <string name="hotseat_auto_enrolled" msgid="522100018967146807">"De meestgebruikte apps worden hier weergegeven en kunnen veranderen op basis van je routines"</string>
-    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Sleep apps weg van de onderste rij om app-suggesties te ontvangen"</string>
+    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Sleep apps weg van de onderste rij om app-suggesties te krijgen"</string>
     <string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"App-suggesties toegevoegd aan lege ruimte"</string>
     <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"App-suggesties staan aan"</string>
     <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"App-suggesties staan uit"</string>
@@ -53,13 +52,18 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Open Instellingen om de gevoeligheid van Terug te wijzigen"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Swipe om terug te gaan"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Swipe vanaf de linker- of rechterrand naar het midden om terug te gaan naar het vorige scherm."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Als je wilt teruggaan naar het laatste scherm, swipe je met 2 vingers vanaf de linker- of rechterrand naar het midden van het scherm."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Terug"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Swipe vanaf de onderrand van het scherm omhoog."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Pauzeer niet voordat je loslaat."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Swipe recht omhoog."</string>
-    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Je weet nu hoe je weer naar het startscherm gaat. Ontdek als volgende hoe je weer teruggaat."</string>
+    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Je hebt geleerd hoe je weer naar het startscherm gaat. Ontdek nu hoe je weer teruggaat."</string>
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Je weet nu hoe je teruggaat naar het startscherm."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Swipe om naar het startscherm te gaan"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Swipe omhoog vanaf de onderkant van het scherm. Met dit gebaar ga je altijd naar het startscherm."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Swipe met 2 vingers omhoog vanaf de onderkant van het scherm. Met dit gebaar ga je altijd naar het startscherm."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Naar het startscherm"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Ga op elk moment naar je startscherm door omhoog te swipen vanaf de onderkant van je scherm"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Swipe vanaf de onderrand van het scherm omhoog."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Houd het venster langer vast voordat je loslaat."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Swipe recht omhoog en pauzeer dan."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Je weet nu hoe je het gebaar Schakelen tussen apps maakt."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Swipe om tussen apps te schakelen"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Swipe omhoog vanaf de onderkant van het scherm, houd vast en laat los om tussen apps te schakelen."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Swipe met 2 vingers omhoog vanaf de onderkant van het scherm, houd vast en laat los om tussen apps te schakelen."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Schakelen tussen apps"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Klaar"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Klaar"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Instellingen"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Dat gaat lekker."</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Tutorial <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Klaar"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Swipe omhoog om naar het startscherm te gaan"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Je bent klaar om je telefoon te gebruiken"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Swipe omhoog om naar het startscherm te gaan"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Tik op de startknop om naar je startscherm te gaan"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Je bent klaar om je <xliff:g id="DEVICE">%1$s</xliff:g> te gebruiken"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"apparaat"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Navigatie-instellingen van systeem"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Delen"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
     <string name="action_split" msgid="2098009717623550676">"Splitsen"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Tik op nog een app om je scherm te splitsen"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"App ondersteunt geen gesplitst scherm."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Tik op nog een app om je scherm te splitsen"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Kies andere app om gesplitst scherm te gebruiken"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Deze actie wordt niet toegestaan door de app of je organisatie"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Navigatietutorial overslaan?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Je vindt dit later terug in de app <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Annuleren"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Overslaan"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Scherm draaien"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Uitleg van taakbalk geopend"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Uitleg van taakbalk gesloten"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Gebruik de taakbalk om van app te wisselen"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Sleep naar de zijkant om 2 apps tegelijk te gebruiken"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Tik en houd vast om de taakbalk te verbergen"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Volgende"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Terug"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Taakbalk Onderwijs"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Sleep een app naar de zijkant om 2 apps tegelijk te gebruiken"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Swipe langzaam omhoog om de taakbalk te tonen"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Krijg app-suggesties op basis van je routine"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Zet navigatie met gebaren aan bij Instellingen om de Taakbalk automatisch te verbergen"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Doe meer met de taakbalk"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Sluiten"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Klaar"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Home"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Recent"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Meldingen"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Snelle instellingen"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Taakbalk"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Taakbalk wordt getoond"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Taakbalk is verborgen"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigatiebalk"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Taakbalk altijd tonen"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Navigatiemodus wijzigen"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Scheiding voor Taakbalk"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Naar boven/links verplaatsen"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Naar beneden/rechts verplaatsen"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Nog # app tonen.}other{Nog # apps tonen.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> en <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-or/strings.xml b/quickstep/res/values-or/strings.xml
index 7740783..72729bf 100644
--- a/quickstep/res/values-or/strings.xml
+++ b/quickstep/res/values-or/strings.xml
@@ -21,8 +21,8 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="recent_task_option_pin" msgid="7929860679018978258">"ପିନ୍‍"</string>
     <string name="recent_task_option_freeform" msgid="48863056265284071">"ଫ୍ରିଫର୍ମ"</string>
-    <string name="recents_empty_message" msgid="7040467240571714191">"କୌଣସି ସାମ୍ପ୍ରତିକ ଆଇଟମ୍ ନାହିଁ"</string>
-    <string name="accessibility_app_usage_settings" msgid="6312864233673544149">"ଆପ୍‍ ବ୍ୟବହାର ସେଟିଂସ୍‍"</string>
+    <string name="recents_empty_message" msgid="7040467240571714191">"ବର୍ତ୍ତମାନର କୌଣସି ଆଇଟମ ନାହିଁ"</string>
+    <string name="accessibility_app_usage_settings" msgid="6312864233673544149">"ଆପ ବ୍ୟବହାର ସେଟିଂସ"</string>
     <string name="recents_clear_all" msgid="5328176793634888831">"ସବୁ ଖାଲି କରନ୍ତୁ"</string>
     <string name="accessibility_recent_apps" msgid="4058661986695117371">"ବର୍ତ୍ତମାନର ଆପ୍‌"</string>
     <string name="task_view_closed" msgid="9170038230110856166">"ଟାସ୍କ ବନ୍ଦ ହୋଇଯାଇଛି"</string>
@@ -31,14 +31,13 @@
     <string name="time_left_for_app" msgid="3111996412933644358">"ଆଜି <xliff:g id="TIME">%1$s</xliff:g> ବାକି ଅଛି"</string>
     <string name="title_app_suggestions" msgid="4185902664111965088">"ଆପ୍ ପରାମର୍ଶଗୁଡ଼ିକ"</string>
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"ଆପଣ ପୂର୍ବାନୁମାନ କରିଥିବା ଆପ୍ସ"</string>
-    <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"ଆପଣଙ୍କ ମୂଳ ସ୍କ୍ରିନର ତଳ ଧାଡ଼ିରେ ଆପ୍ ପରାମର୍ଶଗୁଡ଼ିକ ପାଆନ୍ତୁ"</string>
-    <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"ଆପଣଙ୍କ ମୂଳ ସ୍କ୍ରିନର ପସନ୍ଦର ଧାଡ଼ିରେ ଆପ୍ ପରାମର୍ଶଗୁଡ଼ିକ ପାଆନ୍ତୁ"</string>
-    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"ଆପଣଙ୍କର ସବୁଠାରୁ ଅଧିକ-ବ୍ୟବହୃତ ଆପଗୁଡ଼ିକୁ ସିଧା ମୂଳ ସ୍କ୍ରିନରେ ସହଜରେ ଆକ୍ସେସ୍ କରନ୍ତୁ। ଆପଣଙ୍କ ରୁଟିନଗୁଡ଼ିକ ଆଧାରରେ ପରାମର୍ଶଗୁଡ଼ିକ ପରିବର୍ତ୍ତିତ ହେବ। ତଳ ଧାଡ଼ିରେ ଥିବା ଆପଗୁଡ଼ିକ ଆପଣଙ୍କ ମୂଳ ସ୍କ୍ରିନକୁ ମୁଭ୍ କରିଯିବ।"</string>
-    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"ମୂଳ ସ୍କ୍ରିନରେ ହିଁ ଆପଣଙ୍କର ସବୁଠାରୁ ଅଧିକ-ବ୍ୟବହୃତ ଆପଗୁଡ଼ିକୁ ସହଜରେ ଆକ୍ସେସ୍ କରନ୍ତୁ। ଆପଣଙ୍କ ରୁଟିନଗୁଡ଼ିକ ଆଧାରରେ ପରାମର୍ଶଗୁଡ଼ିକ ବଦଳିବ। ଆପଣଙ୍କ ମୂଳ ସ୍କ୍ରିନକୁ ପସନ୍ଦର ଧାଡ଼ିରେ ଥିବା ଆପଗୁଡ଼ିକ ମୁଭ୍ ହେବ।"</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"ଆପଣଙ୍କର ସବୁଠାରୁ ଅଧିକ-ବ୍ୟବହୃତ ଆପଗୁଡ଼ିକୁ, ସିଧା ମୂଳ ସ୍କ୍ରିନରେ ସହଜରେ ଆକ୍ସେସ୍ କରନ୍ତୁ। ଆପଣଙ୍କ ରୁଟିନଗୁଡ଼ିକ ଆଧାରରେ ପରାମର୍ଶଗୁଡ଼ିକ ପରିବର୍ତ୍ତିତ ହେବ। ତଳ ଧାଡ଼ିରେ ଥିବା ଆପଗୁଡ଼ିକ ଏକ ନୂଆ ଫୋଲ୍ଡରକୁ ମୁଭ୍ କରିଯିବ।"</string>
+    <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"ଆପଣଙ୍କ ହୋମ ସ୍କ୍ରିନର ତଳ ଧାଡ଼ିରେ ଆପ ପରାମର୍ଶଗୁଡ଼ିକ ପାଆନ୍ତୁ"</string>
+    <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"ଆପଣଙ୍କ ହୋମ ସ୍କ୍ରିନର ପସନ୍ଦର ଧାଡ଼ିରେ ଆପ ପରାମର୍ଶଗୁଡ଼ିକ ପାଆନ୍ତୁ"</string>
+    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"ଆପଣଙ୍କର ସବୁଠାରୁ ଅଧିକ-ବ୍ୟବହୃତ ଆପ୍ସକୁ ସିଧା ହୋମ ସ୍କ୍ରିନରେ ସହଜରେ ଆକ୍ସେସ କରନ୍ତୁ। ଆପଣଙ୍କ ରୁଟିନଗୁଡ଼ିକ ଆଧାରରେ ପରାମର୍ଶଗୁଡ଼ିକ ପରିବର୍ତ୍ତିତ ହେବ। ତଳ ଧାଡ଼ିରେ ଥିବା ଆପ୍ସ ଆପଣଙ୍କ ହୋମ ସ୍କ୍ରିନକୁ ମୁଭ ହୋଇଯିବ।"</string>
+    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"ହୋମ ସ୍କ୍ରିନରେ ହିଁ ଆପଣଙ୍କର ସବୁଠାରୁ ଅଧିକ-ବ୍ୟବହୃତ ଆପ୍ସକୁ ସହଜରେ ଆକ୍ସେସ କରନ୍ତୁ। ଆପଣଙ୍କ ରୁଟିନଗୁଡ଼ିକ ଆଧାରରେ ପରାମର୍ଶଗୁଡ଼ିକ ବଦଳିବ। ଆପଣଙ୍କ ହୋମ ସ୍କ୍ରିନକୁ ପସନ୍ଦର ଧାଡ଼ିରେ ଥିବା ଆପ୍ସ ମୁଭ ହୋଇଯିବ।"</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"ଆପ୍ ପରାମର୍ଶଗୁଡ଼ିକ ପାଆନ୍ତୁ"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"ନାହିଁ, ଥାଉ"</string>
-    <string name="hotseat_prediction_settings" msgid="6246554993566070818">"ସେଟିଂସ୍"</string>
+    <string name="hotseat_prediction_settings" msgid="6246554993566070818">"ସେଟିଂସ"</string>
     <string name="hotseat_auto_enrolled" msgid="522100018967146807">"ସବୁଠାରୁ ଅଧିକ-ବ୍ୟବହୃତ ଆପଗୁଡ଼ିକ ଏଠାରେ ଦେଖାଯାଏ ଏବଂ ରୁଟିନଗୁଡ଼ିକ ଆଧାରରେ ପରିବର୍ତ୍ତିତ ହୋଇଥାଏ"</string>
     <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"ଆପ୍ ପରାମର୍ଶଗୁଡ଼ିକ ପାଇବାକୁ ଆପଗୁଡ଼ିକୁ ତଳ ଧାଡ଼ିରୁ ଟାଣି ଆଣନ୍ତୁ"</string>
     <string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"ଆପ୍ ପରାମର୍ଶଗୁଡ଼ିକ ଖାଲି ସ୍ଥାନରେ ଯୋଗ କରାଯାଇଛି"</string>
@@ -53,13 +52,18 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"ପଛକୁ ଫେରିବା ଜେଶ୍ଚରର ସମ୍ବେଦନଶୀଳତା ବଦଳାଇବାକୁ ସେଟିଂସକୁ ଯାଆନ୍ତୁ"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"ପଛକୁ ଫେରିବା ପାଇଁ ସ୍ୱାଇପ୍ କରନ୍ତୁ"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"ପୂର୍ବବର୍ତ୍ତୀ ସ୍କ୍ରିନକୁ ଫେରିବା ପାଇଁ, ସ୍କ୍ରିନର ବାମ କିମ୍ବା ଡାହାଣ ଧାରରୁ ମଝିକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ।"</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"ପୂର୍ବ ସ୍କ୍ରିନକୁ ଫେରିବା ପାଇଁ, ସ୍କ୍ରିନର ବାମ କିମ୍ବା ଡାହାଣ ଧାରରୁ ମଝିକୁ 2ଟି ଆଙ୍ଗୁଠିରେ ସ୍ୱାଇପ କରନ୍ତୁ।"</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"ପଛକୁ ଫେରନ୍ତୁ"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"ଆପଣ ସ୍କ୍ରିନର ତଳ ଧାରରୁ ଉପରକୁ ସ୍ୱାଇପ୍ କରୁଥିବା ସୁନିଶ୍ଚିତ କରନ୍ତୁ।"</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"ଆପଣ ଛାଡ଼ିବା ପୂର୍ବରୁ ବିରତ କରୁନଥିବା ସୁନିଶ୍ଚିତ କରନ୍ତୁ।"</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"ଆପଣ ସିଧା ଉପରକୁ ସ୍ୱାଇପ୍ କରୁଥିବା ସୁନିଶ୍ଚିତ କରନ୍ତୁ।"</string>
-    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"ଆପଣ \'ମୂଳପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ\' ଜେଶ୍ଚର୍ ସମ୍ପୂର୍ଣ୍ଣ କରିଛନ୍ତି। ତା\'ପରେ, ପଛକୁ କିପରି ଫେରିବେ ତାହା ଜାଣନ୍ତୁ।"</string>
-    <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"ଆପଣ \'ମୂଳପୃଷ୍ଠାକୁ ଯାଆନ୍ତୁ\' ଜେଶ୍ଚର୍ ସମ୍ପୂର୍ଣ୍ଣ କରିଛନ୍ତି।"</string>
-    <string name="home_gesture_intro_title" msgid="836590312858441830">"ମୂଳପୃଷ୍ଠାକୁ ଯିବା ପାଇଁ ସ୍ୱାଇପ୍ କରନ୍ତୁ"</string>
-    <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"ଆପଣଙ୍କ ସ୍କ୍ରିନର ତଳୁ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ। ଏହି ଜେଶ୍ଚର୍ ସର୍ବଦା ଆପଣଙ୍କୁ ମୂଳସ୍କ୍ରିନକୁ ନେଇଥାଏ।"</string>
+    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"ଆପଣ ହୋମ ଜେଶ୍ଚର ସମ୍ପୂର୍ଣ୍ଣ କରିଛନ୍ତି। ତା\'ପରେ, ପଛକୁ କିପରି ଫେରିବେ ତାହା ଜାଣନ୍ତୁ।"</string>
+    <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"ଆପଣ ହୋମ ଜେଶ୍ଚର ସମ୍ପୂର୍ଣ୍ଣ କରିଛନ୍ତି।"</string>
+    <string name="home_gesture_intro_title" msgid="836590312858441830">"ହୋମକୁ ଯିବା ପାଇଁ ସ୍ୱାଇପ କରନ୍ତୁ"</string>
+    <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"ଆପଣଙ୍କ ସ୍କ୍ରିନର ତଳୁ ଉପରକୁ ସ୍ୱାଇପ କରନ୍ତୁ। ଏହି ଜେଶ୍ଚର ସର୍ବଦା ଆପଣଙ୍କୁ ହୋମ ସ୍କ୍ରିନକୁ ନେଇଥାଏ।"</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"2ଟି ଆଙ୍ଗୁଠିରେ ସ୍କ୍ରିନର ତଳୁ ଉପରକୁ ସ୍ୱାଇପ କରନ୍ତୁ। ଏହି ଜେଶ୍ଚର ସର୍ବଦା ଆପଣଙ୍କୁ ହୋମ ସ୍କ୍ରିନକୁ ନେଇଥାଏ।"</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"ହୋମକୁ ଯାଆନ୍ତୁ"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"ଯେ କୌଣସି ସମୟରେ ଆପଣଙ୍କ ହୋମ ସ୍କ୍ରିନକୁ ଯିବା ପାଇଁ ଆପଣଙ୍କ ସ୍କିନର ତଳୁ ଉପରକୁ ସ୍ୱାଇପ କରନ୍ତୁ"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"ଆପଣ ସ୍କ୍ରିନର ତଳ ଧାରରୁ ଉପରକୁ ସ୍ୱାଇପ୍ କରୁଥିବା ସୁନିଶ୍ଚିତ କରନ୍ତୁ।"</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"ୱିଣ୍ଡୋକୁ ରିଲିଜ୍ କରିବା ପୂର୍ବରୁ ଅଧିକ ସମୟ ଧରି ରଖିବାକୁ ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"ଆପଣ ସିଧା ଉପରକୁ ସ୍ୱାଇପ୍ କରି ତା\'ପରେ ବିରତ କରୁଥିବା ସୁନିଶ୍ଚିତ କରନ୍ତୁ।"</string>
@@ -67,45 +71,55 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"ଆପଣ \'ଆପଗୁଡ଼ିକୁ ସ୍ୱିଚ୍ କରନ୍ତୁ\' ଜେଶ୍ଚର୍ ସମ୍ପୂର୍ଣ୍ଣ କରିଛନ୍ତି।"</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"ଆପଗୁଡ଼ିକୁ ସ୍ୱିଚ୍ କରିବା ପାଇଁ ସ୍ୱାଇପ୍ କରନ୍ତୁ"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"ଆପଗୁଡ଼ିକ ମଧ୍ୟରେ ସ୍ୱିଚ୍ କରିବାକୁ, ସ୍କ୍ରିନର ତଳୁ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ, ଧରି ରଖନ୍ତୁ, ତା\'ପରେ ରିଲିଜ୍ କରନ୍ତୁ।"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"ଆପ୍ସ ମଧ୍ୟରେ ସ୍ୱିଚ କରିବାକୁ, 2ଟି ଆଙ୍ଗୁଠିରେ ସ୍କ୍ରିନର ତଳୁ ଉପରକୁ ସ୍ୱାଇପ କରି ଧରି ରଖନ୍ତୁ, ତା\'ପରେ ରିଲିଜ କର।"</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"ଆପ୍ସ ସ୍ୱିଚ କରନ୍ତୁ"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"ସବୁ ପ୍ରସ୍ତୁତ"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"ହୋଇଗଲା"</string>
-    <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"ସେଟିଂସ୍"</string>
+    <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"ସେଟିଂସ"</string>
     <string name="gesture_tutorial_try_again" msgid="65962545858556697">"ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ"</string>
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"ବଢ଼ିଆ!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"ଟ୍ୟୁଟୋରିଆଲ୍ <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"ସମ୍ପୂର୍ଣ୍ଣ ଭାବେ ପ୍ରସ୍ତୁତ!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"ମୂଳପୃଷ୍ଠାକୁ ଯିବା ପାଇଁ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ"</string>
-    <string name="allset_description" msgid="6350320429953234580">"ଆପଣ ଆପଣଙ୍କ ଫୋନ୍ ବ୍ୟବହାର କରିବା ପାଇଁ ପ୍ରସ୍ତୁତ ଅଛନ୍ତି"</string>
-    <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"ସିଷ୍ଟମ୍ ନାଭିଗେସନ୍ ସେଟିଂସ୍"</annotation></string>
+    <string name="allset_hint" msgid="459504134589971527">"ମୂଳପୃଷ୍ଠାକୁ ଯିବା ପାଇଁ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"ଆପଣଙ୍କ ହୋମ ସ୍କ୍ରିନକୁ ଯିବା ପାଇଁ ହୋମ ବଟନରେ ଟାପ କରନ୍ତୁ"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"ଆପଣ ଆପଣଙ୍କ <xliff:g id="DEVICE">%1$s</xliff:g> ବ୍ୟବହାର କରିବା ଆରମ୍ଭ କରିବାକୁ ପ୍ରସ୍ତୁତ ଅଛନ୍ତି"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"ଡିଭାଇସ"</string>
+    <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"ସିଷ୍ଟମ ନାଭିଗେସନ ସେଟିଂସ"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"ସେୟାର୍ କରନ୍ତୁ"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"ସ୍କ୍ରିନସଟ୍"</string>
     <string name="action_split" msgid="2098009717623550676">"ସ୍ପ୍ଲିଟ୍"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"ସ୍ପ୍ଲିଟସ୍କ୍ରିନ ବ୍ୟବହାର କରିବାକୁ ଅନ୍ୟ ଏକ ଆପରେ ଟାପ କର"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"ସ୍ପ୍ଲିଟ-ସ୍କ୍ରିନକୁ ଆପ ସମର୍ଥନ କରେ ନାହିଁ।"</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"ସ୍ପ୍ଲିଟସ୍କ୍ରିନ ବ୍ୟବହାର କରିବାକୁ ଅନ୍ୟ ଏକ ଆପରେ ଟାପ କର"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"ସ୍ପ୍ଲିଟ ସ୍କ୍ରିନ ବ୍ୟବହାର କରିବାକୁ ଅନ୍ୟ ଏକ ଆପ ବାଛନ୍ତୁ"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"ଆପ୍ କିମ୍ବା ଆପଣଙ୍କ ସଂସ୍ଥା ଦ୍ୱାରା ଏହି କାର୍ଯ୍ୟକୁ ଅନୁମତି ଦିଆଯାଇ ନାହିଁ"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"ନାଭିଗେସନ୍ ଟ୍ୟୁଟୋରିଆଲକୁ ବାଦ୍ ଦେବେ?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"ଆପଣ ପରେ ଏହାକୁ <xliff:g id="NAME">%1$s</xliff:g> ଆପରେ ପାଇପାରିବେ"</string>
-    <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"ବାତିଲ୍ କରନ୍ତୁ"</string>
+    <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"ବାତିଲ କରନ୍ତୁ"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"ବାଦ୍ ଦିଅନ୍ତୁ"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"ସ୍କ୍ରିନ ଘୂରାନ୍ତୁ"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"ଟାସ୍କବାର୍ ଶିକ୍ଷା ଦେଖାଯାଇଛି"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"ଟାସ୍କବାର୍ ଶିକ୍ଷା ବନ୍ଦ ହୋଇଯାଇଛି"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"ଆପଗୁଡ଼ିକୁ ସ୍ୱିଚ କରିବା ପାଇଁ ଟାସ୍କବାର ବ୍ୟବହାର କରନ୍ତୁ"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"ଥରକେ ଦୁଇଟି ଆପ ବ୍ୟବହାର କରିବା ପାଇଁ ପାର୍ଶ୍ୱକୁ ଡ୍ରାଗ କରନ୍ତୁ"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"ଟାସ୍କବାରକୁ ଲୁଚାଇବା ପାଇଁ ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"ପରବର୍ତ୍ତୀ"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"ପଛକୁ ଫେରନ୍ତୁ"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"ଟାସ୍କବାର ଶିକ୍ଷା"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"ଥରକେ 2ଟି ଆପ୍ସ ବ୍ୟବହାର କରିବା ପାଇଁ ଏକ ଆପକୁ ପାର୍ଶ୍ୱକୁ ଡ୍ରାଗ କର"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"ଟାସ୍କବାର ଦେଖାଇବା ପାଇଁ ଉପରକୁ ଧୀରେ-ସ୍ୱାଇପ କରନ୍ତୁ"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"ଆପଣଙ୍କ ରୁଟିନ ଆଧାରରେ ଆପ ପରାମର୍ଶଗୁଡ଼ିକୁ ପାଆନ୍ତୁ"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"ଟାସ୍କବାରକୁ ସ୍ୱତଃ-ଲୁଚାଇବା ପାଇଁ ସେଟିଂସରେ ଜେଶ୍ଚର ନାଭିଗେସନକୁ ଚାଲୁ କରନ୍ତୁ"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"ଟାସ୍କବାର ମାଧ୍ୟମରେ ଆହୁରି ଅନେକ କିଛି କରନ୍ତୁ"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"ବନ୍ଦ କରନ୍ତୁ"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"ହୋଇଗଲା"</string>
-    <string name="taskbar_button_home" msgid="2151398979630664652">"ମୂଳପୃଷ୍ଠା"</string>
+    <string name="taskbar_button_home" msgid="2151398979630664652">"ହୋମ"</string>
     <string name="taskbar_button_a11y" msgid="5241161324875094465">"ଆକ୍ସେସିବିଲିଟୀ"</string>
     <string name="taskbar_button_back" msgid="8558862226461164514">"ପଛକୁ ଫେରନ୍ତୁ"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME ସ୍ୱିଚର"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"ବର୍ତ୍ତମାନର"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"କ୍ୱିକ ସେଟିଂସ"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"ଟାସ୍କବାର"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"ଟାସ୍କବାର ଦେଖାଯାଇଛି"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"ଟାସ୍କବାର ଲୁଚାଯାଇଛି"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"ନାଭିଗେସନ ବାର"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"ସର୍ବଦା ଟାସ୍କବାର ଦେଖାନ୍ତୁ"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"ନାଭିଗେସନ ମୋଡ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"ଟାସ୍କବାର ଡିଭାଇଡର"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"ଶୀର୍ଷ/ବାମକୁ ମୁଭ କରନ୍ତୁ"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"ନିମ୍ନ/ଡାହାଣକୁ ମୁଭ କରନ୍ତୁ"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{ଅଧିକ #ଟି ଆପ ଦେଖାନ୍ତୁ।}other{ଅଧିକ #ଟି ଆପ୍ସ ଦେଖାନ୍ତୁ।}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> ଏବଂ <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-pa/strings.xml b/quickstep/res/values-pa/strings.xml
index 0173ee2..3da7e42 100644
--- a/quickstep/res/values-pa/strings.xml
+++ b/quickstep/res/values-pa/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"ਆਪਣੀ ਹੋਮ ਸਕ੍ਰੀਨ ਦੀ ਮਨਪਸੰਦ ਕਤਾਰ \'ਤੇ ਐਪ ਸੁਝਾਅ ਹਾਸਲ ਕਰੋ"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਆਪਣੀਆਂ ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੀਆਂ ਗਈਆਂ ਐਪਾਂ ਤੱਕ ਆਸਾਨੀ ਨਾਲ ਪਹੁੰਚ ਕਰੋ। ਸੁਝਾਅ ਤੁਹਾਡੇ ਨਿਯਮਬੱਧ ਕੰਮਾਂ ਦੇ ਆਧਾਰ \'ਤੇ ਬਦਲਣਗੇ। ਹੇਠਲੀ ਕਤਾਰ ਵਾਲੀਆਂ ਐਪਾਂ ਤੁਹਾਡੀ ਹੋਮ ਸਕ੍ਰੀਨ ਵੱਲ ਉੱਪਰ ਆ ਜਾਣਗੀਆਂ।"</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਆਪਣੀਆਂ ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੀਆਂ ਗਈਆਂ ਐਪਾਂ ਤੱਕ ਆਸਾਨੀ ਨਾਲ ਪਹੁੰਚ ਕਰੋ। ਸੁਝਾਅ ਤੁਹਾਡੇ ਨਿਯਮਬੱਧ ਕੰਮਾਂ ਦੇ ਆਧਾਰ \'ਤੇ ਬਦਲਣਗੇ। ਮਨਪਸੰਦ ਕਤਾਰ ਵਿਚਲੀਆਂ ਐਪਾਂ ਤੁਹਾਡੀ ਹੋਮ ਸਕ੍ਰੀਨ ਉੱਪਰ ਆ ਜਾਣਗੀਆਂ।"</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਆਪਣੀਆਂ ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੀਆਂ ਗਈਆਂ ਐਪਾਂ ਤੱਕ ਆਸਾਨੀ ਨਾਲ ਪਹੁੰਚ ਕਰੋ। ਸੁਝਾਅ ਤੁਹਾਡੇ ਨਿਯਮਬੱਧ ਕੰਮਾਂ ਦੇ ਆਧਾਰ \'ਤੇ ਬਦਲਣਗੇ। ਹੇਠਲੀ ਕਤਾਰ ਵਾਲੀਆਂ ਐਪਾਂ ਇੱਕ ਨਵੇਂ ਫੋਲਡਰ ਵਿੱਚ ਚਲੀਆਂ ਜਾਣਗੀਆਂ।"</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"ਐਪ ਸੁਝਾਅ ਪ੍ਰਾਪਤ ਕਰੋ"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"ਨਹੀਂ ਧੰਨਵਾਦ"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"ਸੈਟਿੰਗਾਂ"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"ਪਿੱਛੇ ਜਾਣ ਦੇ ਸੰਕੇਤ ਦੀ ਸੰਵੇਦਨਸ਼ੀਲਤਾ ਬਦਲਣ ਲਈ, ਸੈਟਿੰਗਾਂ \'ਤੇ ਜਾਓ"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"ਪਿੱਛੇ ਜਾਣ ਲਈ ਸਵਾਈਪ ਕਰੋ"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"ਪਿਛਲੀ ਸਕ੍ਰੀਨ \'ਤੇ ਵਾਪਸ ਜਾਣ ਲਈ, ਖੱਬੇ ਜਾਂ ਸੱਜੇ ਕਿਨਾਰੇ ਤੋਂ ਸਕ੍ਰੀਨ ਦੇ ਵਿਚਕਾਰ ਤੱਕ ਸਵਾਈਪ ਕਰੋ।"</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"ਪਿਛਲੀ ਸਕ੍ਰੀਨ \'ਤੇ ਵਾਪਸ ਜਾਣ ਲਈ, ਖੱਬੇ ਜਾਂ ਸੱਜੇ ਕਿਨਾਰੇ ਤੋਂ ਸਕ੍ਰੀਨ ਦੇ ਵਿਚਕਾਰ ਤੱਕ 2 ਉਂਗਲਾਂ ਨਾਲ ਸਵਾਈਪ ਕਰੋ।"</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"ਵਾਪਸ ਜਾਓ"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"ਇਹ ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਲੇ ਕਿਨਾਰੇ ਤੋਂ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰਦੇ ਹੋ।"</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"ਪੱਕਾ ਕਰੋ ਕਿ ਸਕ੍ਰੀਨ ਨੂੰ ਛੱਡਣ ਤੋਂ ਪਹਿਲਾਂ ਰੁਕੋ ਨਾ।"</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"ਇਹ ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਸਿੱਧੇ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰਦੇ ਹੋ।"</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"ਤੁਸੀਂ \'ਹੋਮ \'ਤੇ ਜਾਓ\' ਦਾ ਇਸ਼ਾਰਾ ਪੂਰਾ ਕੀਤਾ।"</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"ਹੋਮ \'ਤੇ ਜਾਣ ਲਈ ਸਵਾਈਪ ਕਰੋ"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"ਆਪਣੀ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਤੋਂ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ। ਇਹ ਇਸ਼ਾਰਾ ਹਮੇਸ਼ਾਂ ਤੁਹਾਨੂੰ ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਲੈ ਜਾਂਦਾ ਹੈ।"</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਤੋਂ 2 ਉਂਗਲਾਂ ਨਾਲ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ। ਇਹ ਇਸ਼ਾਰਾ ਹਮੇਸ਼ਾਂ ਤੁਹਾਨੂੰ ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਲੈ ਜਾਂਦਾ ਹੈ।"</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਜਾਓ"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"ਕਿਸੇ ਵੀ ਸਮੇਂ ਆਪਣੀ ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਜਾਣ ਲਈ, ਆਪਣੀ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਤੋਂ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"ਇਹ ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਲੇ ਕਿਨਾਰੇ ਤੋਂ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰਦੇ ਹੋ।"</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"ਛੱਡਣ ਤੋਂ ਪਹਿਲਾਂ ਵਿੰਡੋ ਨੂੰ ਕੁਝ ਸਮੇਂ ਲਈ ਦਬਾ ਕੇ ਰੱਖੋ।"</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"ਇਹ ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਸਿੱਧੇ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰਦੇ ਹੋ, ਫਿਰ ਰੋਕੋ।"</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"ਤੁਸੀਂ \'ਐਪਾਂ ਵਿਚਾਲੇ ਅਦਲਾ-ਬਦਲੀ ਕਰੋ\' ਦਾ ਇਸ਼ਾਰਾ ਪੂਰਾ ਕੀਤਾ।"</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"ਐਪਾਂ ਵਿਚਾਲੇ ਅਦਲਾ-ਬਦਲੀ ਕਰਨ ਲਈ ਸਵਾਈਪ ਕਰੋ"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"ਐਪਾਂ ਵਿਚਾਲੇ ਅਦਲਾ-ਬਦਲੀ ਕਰਨ ਲਈ, ਆਪਣੀ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਤੋਂ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰਕੇ ਦਬਾਈ ਰੱਖੋ ਅਤੇ ਫਿਰ ਛੱਡੋ।"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"ਐਪਾਂ ਵਿਚਾਲੇ ਅਦਲਾ-ਬਦਲੀ ਕਰਨ ਲਈ, ਆਪਣੀ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਤੋਂ 2 ਉਂਗਲਾਂ ਨਾਲ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰ ਕੇ ਦਬਾਈ ਰੱਖੋ ਅਤੇ ਫਿਰ ਛੱਡੋ।"</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"ਐਪਾਂ ਵਿਚਕਾਰ ਸਵਿੱਚ ਕਰੋ"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"ਪੂਰੀ ਤਰ੍ਹਾਂ ਤਿਆਰ"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"ਹੋ ਗਿਆ"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"ਸੈਟਿੰਗਾਂ"</string>
@@ -74,29 +80,30 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"ਵਧੀਆ!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"ਟਿਊਟੋਰੀਅਲ <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"ਪੂਰੀ ਤਰ੍ਹਾਂ ਤਿਆਰ!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"ਹੋਮ \'ਤੇ ਜਾਣ ਲਈ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ"</string>
-    <string name="allset_description" msgid="6350320429953234580">"ਤੁਸੀਂ ਆਪਣਾ ਫ਼ੋਨ ਵਰਤਣ ਲਈ ਤਿਆਰ ਹੋ"</string>
+    <string name="allset_hint" msgid="459504134589971527">"ਹੋਮ \'ਤੇ ਜਾਣ ਲਈ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"ਆਪਣੀ ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਜਾਣ ਲਈ ਹੋਮ ਬਟਨ \'ਤੇ ਟੈਪ ਕਰੋ"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"ਤੁਸੀਂ ਆਪਣਾ <xliff:g id="DEVICE">%1$s</xliff:g> ਵਰਤਣ ਲਈ ਤਿਆਰ ਹੋ"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"ਡੀਵਾਈਸ"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"ਸਿਸਟਮ ਨੈਵੀਗੇਸ਼ਨ ਸੈਟਿੰਗਾਂ"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"ਸਾਂਝਾ ਕਰੋ"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"ਸਕ੍ਰੀਨਸ਼ਾਟ"</string>
     <string name="action_split" msgid="2098009717623550676">"ਸਪਲਿਟ"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"ਸਪਲਿਟ ਸਕ੍ਰੀਨ ਵਰਤਣ ਲਈ ਕਿਸੇ ਹੋਰ ਐਪ \'ਤੇ ਟੈਪ ਕਰੋ"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"ਐਪ ਸਪਲਿਟ-ਸਕ੍ਰੀਨ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੀ।"</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"ਸਪਲਿਟ ਸਕ੍ਰੀਨ ਨੂੰ ਵਰਤਣ ਲਈ ਕਿਸੇ ਹੋਰ ਐਪ \'ਤੇ ਟੈਪ ਕਰੋ"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"ਸਪਲਿਟ ਸਕ੍ਰੀਨ ਵਰਤਣ ਲਈ ਕਿਸੇ ਹੋਰ ਐਪ ਨੂੰ ਚੁਣੋ"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"ਐਪ ਜਾਂ ਤੁਹਾਡੀ ਸੰਸਥਾ ਵੱਲੋਂ ਇਸ ਕਾਰਵਾਈ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"ਕੀ ਨੈਵੀਗੇਸ਼ਨ ਟਿਊਟੋਰੀਅਲ ਨੂੰ ਛੱਡਣਾ ਹੈ?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"ਤੁਸੀਂ ਇਸਨੂੰ ਬਾਅਦ ਵਿੱਚ <xliff:g id="NAME">%1$s</xliff:g> ਐਪ ਵਿੱਚ ਲੱਭ ਸਕਦੇ ਹੋ"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"ਰੱਦ ਕਰੋ"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"ਛੱਡੋ"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"ਸਕ੍ਰੀਨ ਘੁਮਾਓ"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"ਟਾਸਕਵਾਰ ਸਿੱਖਿਆ ਪੈਨਲ ਦਿਖਾਇਆ ਗਿਆ"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"ਟਾਸਕਵਾਰ ਸਿੱਖਿਆ ਪੈਨਲ ਬੰਦ ਕੀਤਾ ਗਿਆ"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"ਐਪਾਂ ਸਵਿੱਚ ਕਰਨ ਲਈ ਟਾਸਕਬਾਰ ਵਰਤੋ"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"ਇੱਕ ਵਾਰ ਵਿੱਚ ਦੋ ਐਪਾਂ ਵਰਤਣ ਲਈ ਉਨ੍ਹਾਂ ਨੂੰ ਸਾਈਡ ਵੱਲ ਘਸੀਟੋ"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"ਟਾਸਕਬਾਰ ਨੂੰ ਲੁਕਾਉਣ ਲਈ ਸਪਰਸ਼ ਕਰਕੇ ਰੱਖੋ"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"ਅੱਗੇ"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"ਪਿੱਛੇ"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"ਟਾਸਕਬਾਰ ਸਿੱਖਿਆ"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"ਇੱਕੋ ਸਮੇਂ \'ਤੇ 2 ਐਪਾਂ ਵਰਤਣ ਲਈ, ਐਪ ਨੂੰ ਪਾਸੇ ਵੱਲ ਘਸੀਟੋ"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"ਟਾਸਕਬਾਰ ਦਿਖਾਉਣ ਲਈ ਥੋੜ੍ਹਾ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"ਤੁਹਾਡੇ ਨਿਯਮਬੱਧ ਕੰਮ ਦੇ ਆਧਾਰ \'ਤੇ ਐਪ ਸੁਝਾਅ ਪ੍ਰਾਪਤ ਕਰੋ"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"ਟਾਸਕਬਾਰ ਨੂੰ ਸਵੈ-ਲੁਕਾਉਣ ਲਈ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਇਸ਼ਾਰਾ ਨੈਵੀਗੇਸ਼ਨ ਨੂੰ ਚਾਲੂ ਕਰੋ"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"ਟਾਸਕਬਾਰ ਦਾ ਹੋਰ ਲਾਹਾ ਲਓ"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"ਬੰਦ ਕਰੋ"</string>
-    <string name="taskbar_edu_done" msgid="6880178093977704569">"ਹੋ ਗਿਆ"</string>
+    <string name="taskbar_edu_done" msgid="6880178093977704569">"ਸਮਝ ਲਿਆ"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"ਘਰ"</string>
     <string name="taskbar_button_a11y" msgid="5241161324875094465">"ਪਹੁੰਚਯੋਗਤਾ"</string>
     <string name="taskbar_button_back" msgid="8558862226461164514">"ਪਿੱਛੇ"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"ਹਾਲੀਆ"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"ਸੂਚਨਾਵਾਂ"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"ਤਤਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"ਟਾਸਕਬਾਰ"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"ਟਾਸਕਬਾਰ ਨੂੰ ਦਿਖਾਇਆ ਗਿਆ"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"ਟਾਸਕਬਾਰ ਨੂੰ ਲੁਕਾਇਆ ਗਿਆ"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"ਨੈਵੀਗੇਸ਼ਨ ਵਾਲੀ ਪੱਟੀ"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"ਹਮੇਸ਼ਾਂ ਟਾਸਕਬਾਰ ਦਿਖਾਓ"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"ਨੈਵੀਗੇਸ਼ਨ ਮੋਡ ਬਦਲੋ"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"ਟਾਸਕਬਾਰ ਵਿਭਾਜਕ"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"ਸਿਖਰਲੇ/ਖੱਬੇ ਪਾਸੇ ਲੈ ਕੇ ਜਾਓ"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"ਹੇਠਾਂ/ਸੱਜੇ ਪਾਸੇ ਲੈ ਕੇ ਜਾਓ"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{# ਹੋਰ ਐਪ ਦਿਖਾਓ।}one{# ਹੋਰ ਐਪ ਦਿਖਾਓ।}other{# ਹੋਰ ਐਪਾਂ ਦਿਖਾਓ।}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> ਅਤੇ <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-pl/strings.xml b/quickstep/res/values-pl/strings.xml
index 19b666a..2ee14ff 100644
--- a/quickstep/res/values-pl/strings.xml
+++ b/quickstep/res/values-pl/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Otrzymuj sugestie aplikacji w wierszu ulubionych na ekranie głównym"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Łatwo uruchamiaj najczęściej używane aplikacje z ekranu głównego. Sugestie będą zmieniać się w zależności od Twoich nawyków. Aplikacje z dolnych wierszy będą przesuwane w górę, do ekranu głównego."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Zyskaj łatwy dostęp do najczęściej używanych aplikacji na ekranie głównym. Sugestie będą się zmieniać na podstawie Twojej rutyny. Aplikacje z wiersza ulubionych zostaną przeniesione na ekran główny."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Korzystaj z najczęściej używanych aplikacji na ekranie głównym w łatwy sposób. Sugestie będą się zmieniać na podstawie Twojej rutyny. Aplikacje z dolnych wierszy będą się przenosić do nowego folderu."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Otrzymuj sugestie aplikacji"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nie, dziękuję"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Ustawienia"</string>
@@ -45,7 +44,7 @@
     <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"Włączono sugestie aplikacji"</string>
     <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"Sugestie aplikacji są wyłączone"</string>
     <string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Przewidywana aplikacja: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
-    <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Pamiętaj, aby przesuwać palcem od samej prawej lub lewej krawędzi."</string>
+    <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Pamiętaj, aby przesuwać palcem od samej krawędzi (prawej lub lewej)."</string>
     <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"Pamiętaj, aby przesuwać palcem od prawej lub lewej krawędzi do środka ekranu i podnieść palec."</string>
     <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"Wiesz już, jak przesuwać palcem, aby przejść wstecz. Poćwicz teraz przełączanie aplikacji."</string>
     <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Gest przejścia wstecz został opanowany."</string>
@@ -53,13 +52,18 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Czułość gestu cofania możesz zmienić w Ustawieniach"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Przesuń palcem, aby przejść wstecz"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Aby wrócić do ostatniego ekranu, przesuń palcem od lewej lub prawej krawędzi do środka ekranu."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Aby wrócić do ostatniego ekranu, przesuń 2 palcami od lewej lub prawej krawędzi do środka ekranu."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Przejście wstecz"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Pamiętaj, aby przesuwać palcem od dolnej krawędzi ekranu."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Pamiętaj, aby przed podniesieniem palca nie było przerwy."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Pamiętaj, aby przesuwać palcem prosto do góry."</string>
-    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Potrafisz już przejść na ekran główny. Poćwicz teraz powrót do wcześniejszego ekranu."</string>
+    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Potrafisz już przejść na ekran główny. Teraz naucz się, jak wrócić do poprzedniego ekranu."</string>
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Gest przechodzenia na ekran główny został opanowany."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Przesuń palcem, aby przejść na ekran główny"</string>
-    <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Przesuń palcem z dołu ekranu. Ten gest zawsze powoduje przejście na ekran główny."</string>
+    <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Przesuń palcem od dołu ekranu. Ten gest zawsze powoduje przejście na ekran główny."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Przesuń 2 palcami od dołu ekranu. Ten gest zawsze powoduje przejście do ekranu głównego."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Otwórz ekran główny"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Aby wyświetlić ekran główny w dowolnym momencie, przesuń od dołu do góry ekranu"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Pamiętaj, aby przesuwać palcem od dolnej krawędzi ekranu."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Przytrzymaj okno dłużej, zanim podniesiesz palec."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Pamiętaj, aby przesuwać palcem prosto do góry, a potem przerwać ruch."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Gest przełączania aplikacji został opanowany."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Przesuń palcem, aby przełączać aplikacje"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Aby przełączać się między aplikacjami, przesuń palcem od dołu ekranu, przytrzymaj i puść."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Aby przełączać się między aplikacjami, przesuń 2 palcami od dołu ekranu, przytrzymaj i puść."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Przełączanie aplikacji"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Wszystko gotowe"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Gotowe"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Ustawienia"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Super!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Samouczek <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Wszystko gotowe"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Aby przejść na stronę główną, przesuń palcem w górę"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Teraz możesz zacząć używać telefonu"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Aby przejść na stronę główną, przesuń w górę"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Kliknij przycisk ekranu głównego, aby otworzyć ekran główny"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Teraz możesz zacząć używać urządzenia <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"urządzenie"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Ustawienia nawigacji w systemie"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Udostępnij"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Zrzut ekranu"</string>
     <string name="action_split" msgid="2098009717623550676">"Podziel"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Kliknij drugą aplikację, aby podzielić ekran"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Aplikacja nie obsługuje podzielonego ekranu."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Aby podzielić ekran, kliknij drugą aplikację"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Wybierz drugą aplikację, aby podzielić ekran"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Nie możesz wykonać tego działania, bo nie zezwala na to aplikacja lub Twoja organizacja"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Pominąć samouczek nawigacji?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Znajdziesz to później w aplikacji <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Anuluj"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Pomiń"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Obróć ekran"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Wskazówki na temat paska zadań zostały wyświetlone"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Wskazówki na temat paska zadań zostały zamknięte"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Używaj paska zadań, aby przełączać aplikacje"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Przeciągnij w bok, aby używać 2 aplikacji jednocześnie"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Naciśnij i przytrzymaj, aby ukryć pasek zadań"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Dalej"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Wstecz"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Informacje o pasku aplikacji"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Przeciągnij aplikację w bok, aby używać 2 aplikacji naraz"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Aby wyświetlić pasek aplikacji, przesuń palcem krótko w górę"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Otrzymuj sugestie aplikacji na podstawie rutyny"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Włącz nawigację przy użyciu gestów w Ustawieniach, aby automatycznie ukrywać pasek aplikacji"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Wykorzystaj potencjał paska aplikacji"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Zamknij"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Gotowe"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Ekran główny"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Ostatnie"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Powiadomienia"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Szybkie ustawienia"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Pasek aplikacji"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Pasek aplikacji widoczny"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Pasek aplikacji ukryty"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Pasek nawigacyjny"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Zawsze pokazuj pasek aplikacji"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Zmień tryb nawigacji"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Linia dzielenia paska aplikacji"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Przesuń w górny lewy róg"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Przesuń w dolny prawy róg"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Pokaż jeszcze # aplikację.}few{Pokaż jeszcze # aplikacje.}many{Pokaż jeszcze # aplikacji.}other{Pokaż jeszcze # aplikacji.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> i <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-pt-rPT/strings.xml b/quickstep/res/values-pt-rPT/strings.xml
index 4e7b7a6..c5aad16 100644
--- a/quickstep/res/values-pt-rPT/strings.xml
+++ b/quickstep/res/values-pt-rPT/strings.xml
@@ -31,16 +31,15 @@
     <string name="time_left_for_app" msgid="3111996412933644358">"Resta(m) <xliff:g id="TIME">%1$s</xliff:g> hoje."</string>
     <string name="title_app_suggestions" msgid="4185902664111965088">"Sugestões de apps"</string>
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"As suas apps previstas"</string>
-    <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Obtenha sugestões de apps na última fila do ecrã principal"</string>
-    <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Obtenha sugestões de apps na fila dos favoritos do ecrã principal"</string>
+    <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Receba sugestões de apps na última fila do ecrã principal"</string>
+    <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Receba sugestões de apps na fila dos favoritos do ecrã principal"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Aceda facilmente às suas apps mais utilizadas, diretamente no ecrã principal. As sugestões mudam em função das suas rotinas. As apps na última fila passam para o ecrã principal."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Aceda facilmente às suas apps mais utilizadas no ecrã principal. As sugestões mudam em função das suas rotinas. As apps na fila dos favoritos passam para o ecrã principal."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Aceda facilmente às suas apps mais utilizadas, diretamente no ecrã principal. As sugestões mudam em função das suas rotinas. As apps na última fila passam para uma nova pasta."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Obter sugestões de apps"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Não, obrigado"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Definições"</string>
     <string name="hotseat_auto_enrolled" msgid="522100018967146807">"As apps mais utilizadas aparecem aqui e mudam em função das rotinas."</string>
-    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Arraste as apps para fora da última fila para obter sugestões de apps."</string>
+    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Arraste as apps para fora da última fila para ver sugestões de apps."</string>
     <string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Sugestões de apps adicionadas a um espaço vazio."</string>
     <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"Sugestões de apps ativadas"</string>
     <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"As sugestões de apps estão desativadas"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Altere a sensibilidade do gesto para voltar nas Definições."</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Deslize rapidamente com o dedo para retroceder"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Para voltar ao último ecrã, deslize rapidamente do limite esquerdo ou direito até ao centro do ecrã."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Para voltar ao último ecrã, deslize rapidamente com 2 dedos a partir da extremidade esquerda ou direita até ao centro do ecrã."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Voltar"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Garanta que desliza rapidamente com o dedo a partir do limite inferior do ecrã."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Garanta que não faz uma pausa antes de soltar."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Garanta que desliza rapidamente com o dedo para cima."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Concluiu o gesto para aceder ao ecrã principal."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Deslize rapidamente com o dedo para aceder ao ecrã principal"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Deslize rapidamente para cima a partir da parte inferior. Este gesto abre sempre o ecrã principal."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Deslize rapidamente para cima com 2 dedos no fundo do ecrã. Este gesto abre sempre o ecrã principal."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Aceda ao ecrã principal"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Para aceder ao ecrã principal em qualquer altura, deslize rapidamente de baixo para cima no seu ecrã"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Deslize rapidamente com o dedo a partir do limite inferior do ecrã."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Experimente premir a janela durante mais tempo antes de soltar."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Garanta que desliza rapidamente com o dedo para cima e, em seguida, faz uma pausa."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Concluiu o gesto para alternar entre apps."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Deslize rapidamente com o dedo para alternar entre apps"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Para alternar entre apps, deslize para cima sem soltar a partir da parte inferior do ecrã e solte."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Para mudar de app, deslize rapidamente para cima com 2 dedos sem soltar no fundo do ecrã e solte."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Mude de app"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Está tudo pronto"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Concluído"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Definições"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Boa!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Tutorial <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Tudo pronto!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Deslize rapidamente para cima para aceder ao ecrã principal"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Já pode começar a utilizar o seu telemóvel"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Deslize rapidamente para cima para aceder ao ecrã principal"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Toque no botão página inicial para aceder ao ecrã principal"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Já pode começar a usar o seu <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"dispositivo"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Definições de navegação do sistema"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Partilhar"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Fazer captura de ecrã"</string>
     <string name="action_split" msgid="2098009717623550676">"Dividir"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Toque noutra app para utilizar o ecrã dividido"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"A app não é compatível com o ecrã dividido."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Toque noutra app para usar o ecrã dividido"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Escolher outra app para usar o ecrã dividido"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Esta ação não é permitida pela app ou a sua entidade."</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Ignorar o tutorial de navegação?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Pode encontrar isto mais tarde na app <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Cancelar"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Ignorar"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Rodar ecrã"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Informação da barra de tarefas apresentada"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Informação da barra de tarefas fechada"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Utilize a barra de ferramentas para alternar entre apps"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Arraste para o lado para utilizar duas apps em simultâneo"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Toque sem soltar para ocultar a barra de tarefas"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Seguinte"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Anterior"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Educação da Barra de tarefas"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Arraste uma app para o lado para usar 2 apps em simultâneo"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Deslize lentamente para cima para mostrar a Barra de tarefas"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Obtenha sugestões de apps baseadas na sua rotina"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Ative a navegação por gestos em Definições para ocultar automaticamente a Barra de tarefas"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Faça mais com a Barra de tarefas"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Fechar"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Concluir"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Início"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Recentes"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Notificações"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Definiç. rápidas"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Barra de tarefas"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Barra de tarefas apresentada"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Barra de tarefas ocultada"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Barra de navegação"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Mostr. sempre Barra de tarefas"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Alterar modo de navegação"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Divisor da Barra de tarefas"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Mover para a parte superior esquerda"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Mover para a part superior direita"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Mostrar mais # app.}other{Mostrar mais # apps.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> e <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-pt/strings.xml b/quickstep/res/values-pt/strings.xml
index d4a56ac..c2b4d92 100644
--- a/quickstep/res/values-pt/strings.xml
+++ b/quickstep/res/values-pt/strings.xml
@@ -23,7 +23,7 @@
     <string name="recent_task_option_freeform" msgid="48863056265284071">"Forma livre"</string>
     <string name="recents_empty_message" msgid="7040467240571714191">"Nenhum item recente"</string>
     <string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Configurações de uso do app"</string>
-    <string name="recents_clear_all" msgid="5328176793634888831">"Limpar tudo"</string>
+    <string name="recents_clear_all" msgid="5328176793634888831">"Remover tudo"</string>
     <string name="accessibility_recent_apps" msgid="4058661986695117371">"Apps recentes"</string>
     <string name="task_view_closed" msgid="9170038230110856166">"Tarefa encerrada"</string>
     <string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
@@ -33,14 +33,13 @@
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"Suas predições de apps"</string>
     <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Receba sugestões de apps na linha inferior da tela inicial"</string>
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Receba sugestões de apps na linha \"Favoritos\" da tela inicial"</string>
-    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Acesse diretamente na tela inicial os apps que você mais usa. As sugestões mudarão de acordo com sua rotina. Os apps na linha inferior serão movidos para a tela inicial."</string>
-    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Acesse os apps mais usados na tela inicial de forma simples. As sugestões mudarão de acordo com sua rotina. Os apps na linha \"Favoritos\" serão movidos para a tela inicial."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Acesse diretamente na tela inicial os apps que você mais usa. As sugestões mudarão de acordo com sua rotina. Os apps na linha inferior serão movidos para uma nova pasta."</string>
+    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Acesse diretamente na tela inicial os apps que você mais usa. As sugestões mudam de acordo com sua rotina, e os apps na linha inferior são movidos para a tela inicial."</string>
+    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Acesse os apps mais usados na tela inicial de forma simples. As sugestões mudam de acordo com sua rotina, e os apps na linha \"Favoritos\" são movidos para a tela inicial."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Receber sugestões de apps"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Não"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Configurações"</string>
     <string name="hotseat_auto_enrolled" msgid="522100018967146807">"Os apps mais usados aparecem aqui e mudam de acordo com sua rotina"</string>
-    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Arraste apps da linha inferior para receber sugestões de apps"</string>
+    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Arraste apps para fora da linha inferior e receba sugestões"</string>
     <string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Sugestões de apps adicionadas a um espaço vazio"</string>
     <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"O recurso \"sugestões de apps\" está ativado"</string>
     <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"O recurso \"sugestões de apps\" está desativado"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Mude a sensibilidade do gesto de voltar nas configurações"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Deslize para voltar"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Para voltar à tela anterior, deslize da borda esquerda ou direita até o meio da tela."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Para voltar à tela anterior, deslize da borda esquerda ou direita até o meio da tela com dois dedos."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Voltar"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Deslize da borda inferior da tela para cima."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Não pare antes de soltar."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Deslize para cima."</string>
@@ -60,13 +61,18 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Você concluiu o gesto para acessar a tela inicial."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Deslizar para voltar à tela inicial"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Deslize de baixo para cima na tela. Esse gesto sempre leva você para a tela inicial."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Deslize de baixo para cima na tela com dois dedos. Esse gesto sempre leva você para a tela inicial."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Ir para a página inicial"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Para acessar sua tela inicial a qualquer momento, deslize de baixo para cima na tela"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Deslize da borda inferior da tela para cima."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Mantenha a janela pressionada por mais tempo antes de soltar."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Deslize para cima e pare."</string>
-    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Você aprendeu a usar gestos. Para desativá-los, acesse as Configurações."</string>
+    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Você aprendeu. Para desativar os gestos, acesse as Configurações."</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Você concluiu o gesto para trocar de app."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Deslizar para trocar de app"</string>
-    <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Para mudar de app, deslize de baixo para cima na tela, mantenha-a pressionada por um tempo e solte."</string>
+    <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Para mudar de app, deslize de baixo para cima, mantenha a tela pressionada por um tempo e solte."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Para mudar de app, deslize de baixo para cima na tela com dois dedos, segure por um tempo e solte."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Alternar entre apps"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Tudo pronto"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Concluído"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Configurações"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Muito bem!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Tutorial <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Tudo pronto!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Deslize para cima para acessar a tela inicial"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Você já pode começar a usar seu smartphone"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Deslize para cima para acessar a tela inicial"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Toque no botão home para ir para a tela inicial"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Você já pode começar a usar seu <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"dispositivo"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Configurações de navegação do sistema"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Compartilhar"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Capturar tela"</string>
     <string name="action_split" msgid="2098009717623550676">"Dividir"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Toque em outro app para dividir a tela"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"O app não tem suporte para a divisão de tela."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Toque em outro app para usar a tela dividida"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Escolha outro app para usar na tela dividida"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Essa ação não é permitida pelo app ou pela organização"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Pular o tutorial de navegação?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Veja o tutorial mais tarde no app <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Cancelar"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Pular"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Girar a tela"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"As dicas sobre a barra de tarefas foram abertas"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"As dicas sobre a barra de tarefas foram fechadas"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Use a barra de tarefas para alternar entre apps"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Arraste para o lado e use dois apps ao mesmo tempo"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Mantenha a barra de tarefas pressionada para ocultá-la"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Próxima"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Voltar"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Informações sobre a barra de tarefas"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Arraste um app para o lado e use dois apps ao mesmo tempo"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Deslize para cima devagar para mostrar a Barra de tarefas"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Receba sugestões de apps com base na sua rotina"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Ative a navegação por gestos nas configs. para ocultar a Barra de tarefas automaticamente"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Aproveite ainda mais a Barra de tarefas"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Fechar"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Concluído"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Início"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Recentes"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Notificações"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Config. rápidas"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Barra de tarefas"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Barra de tarefas visível"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Barra de tarefas oculta"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Barra de navegação"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Sempre mostrar a Barra de tarefas"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Mudar o modo de navegação"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Separador da Barra de tarefas"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Mover para cima/para a esquerda"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Mover para baixo/para a direita"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Mostrar mais # app.}one{Mostrar mais # app.}other{Mostrar mais # apps.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> e <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-ro/strings.xml b/quickstep/res/values-ro/strings.xml
index 38d596c..8559f61 100644
--- a/quickstep/res/values-ro/strings.xml
+++ b/quickstep/res/values-ro/strings.xml
@@ -19,11 +19,11 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="recent_task_option_pin" msgid="7929860679018978258">"Fixați"</string>
+    <string name="recent_task_option_pin" msgid="7929860679018978258">"Fixează"</string>
     <string name="recent_task_option_freeform" msgid="48863056265284071">"Formă liberă"</string>
     <string name="recents_empty_message" msgid="7040467240571714191">"Niciun element recent"</string>
     <string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Setări de utilizare a aplicației"</string>
-    <string name="recents_clear_all" msgid="5328176793634888831">"Ștergeți tot"</string>
+    <string name="recents_clear_all" msgid="5328176793634888831">"Șterge tot"</string>
     <string name="accessibility_recent_apps" msgid="4058661986695117371">"Aplicații recente"</string>
     <string name="task_view_closed" msgid="9170038230110856166">"Activitatea s-a încheiat"</string>
     <string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
@@ -31,71 +31,78 @@
     <string name="time_left_for_app" msgid="3111996412933644358">"Au mai rămas <xliff:g id="TIME">%1$s</xliff:g> astăzi"</string>
     <string name="title_app_suggestions" msgid="4185902664111965088">"Sugestii de aplicații"</string>
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"Aplicațiile estimate"</string>
-    <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Primiți sugestii de aplicații în rândul de jos al ecranului de pornire"</string>
-    <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Primiți sugestii de aplicații în rândul de preferințe al ecranului de pornire"</string>
-    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Accesați cu ușurință cele mai folosite aplicații direct din ecranul de pornire. Sugestiile se vor modifica în funcție de rutine. Aplicațiile din rândul de jos se vor muta în sus pe ecranul de pornire."</string>
-    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Accesați cu ușurință cele mai folosite aplicații direct din ecranul de pornire. Sugestiile se vor schimba în funcție de rutina dvs. Aplicațiile din rândul de preferințe se vor muta în ecranul de pornire."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Accesați cu ușurință cele mai folosite aplicații, direct din ecranul de pornire. Sugestiile se vor modifica în funcție de rutine. Aplicațiile din rândul de jos se vor muta într-un dosar nou."</string>
-    <string name="hotseat_edu_accept" msgid="1611544083278999837">"Primiți sugestii de aplicații"</string>
+    <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Primește sugestii de aplicații în rândul de jos al ecranului de pornire"</string>
+    <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Primește sugestii de aplicații în rândul de preferințe al ecranului de pornire"</string>
+    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Accesează cu ușurință cele mai folosite aplicații direct din ecranul de pornire. Sugestiile se vor modifica în funcție de rutine. Aplicațiile din rândul de jos se vor muta în sus pe ecranul de pornire."</string>
+    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Accesează cu ușurință cele mai folosite aplicații direct din ecranul de pornire. Sugestiile se vor schimba în funcție de rutina ta. Aplicațiile din rândul de preferințe se vor muta în ecranul de pornire."</string>
+    <string name="hotseat_edu_accept" msgid="1611544083278999837">"Primește sugestii de aplicații"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nu, mulțumesc"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Setări"</string>
     <string name="hotseat_auto_enrolled" msgid="522100018967146807">"Cele mai folosite aplicații apar aici și se modifică în funcție de rutine"</string>
-    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Trageți aplicații din rândul de jos pentru a primi sugestii de aplicații"</string>
+    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Trage aplicații din rândul de jos pentru a primi sugestii de aplicații"</string>
     <string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Sugestiile de aplicații sunt adăugate în spațiile goale"</string>
     <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"Sugestiile de aplicații au fost activate"</string>
     <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"Sugestiile de aplicații au fost dezactivate"</string>
     <string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Aplicația estimată: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
-    <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Glisați dinspre marginea dreaptă îndepărtată sau dinspre marginea stângă îndepărtată."</string>
-    <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"Glisați dinspre marginea dreaptă sau stângă spre mijlocul ecranului și eliberați."</string>
-    <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"Ați învățat cum să glisați dinspre dreapta pentru a reveni. În continuare, aflați cum să comutați aplicațiile."</string>
-    <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Ați finalizat gestul „înapoi”."</string>
-    <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Nu glisați prea aproape de partea de jos a ecranului."</string>
-    <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Schimbați sensibilitatea gestului „Înapoi” accesând Setările"</string>
-    <string name="back_gesture_intro_title" msgid="19551256430224428">"Glisați pentru a reveni"</string>
-    <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Pentru a reveni la ultimul ecran, glisați de la marginea stângă sau dreaptă spre mijlocul ecranului."</string>
-    <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Glisați în sus dinspre marginea de jos a ecranului."</string>
-    <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Nu întrerupeți gestul înainte de a elibera."</string>
-    <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Glisați direct în sus."</string>
-    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Ați finalizat gestul „accesați ecranul de pornire”. În continuare, aflați cum să reveniți."</string>
-    <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Ați finalizat gestul „accesați ecranul de pornire”."</string>
-    <string name="home_gesture_intro_title" msgid="836590312858441830">"Glisați pentru a accesa ecranul de pornire"</string>
-    <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Glisați în sus din partea de jos a ecranului. Cu acest gest accesați întotdeauna ecranul de pornire."</string>
-    <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Glisați în sus dinspre marginea de jos a ecranului."</string>
-    <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Încercați să țineți fereastra mai mult înainte s-o eliberați."</string>
-    <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Glisați direct în sus, apoi întrerupeți."</string>
-    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Ați învățat cum să folosiți gesturi. Pentru a dezactiva gesturile, accesați Setările."</string>
-    <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Ați finalizat gestul „comutați între aplicații”."</string>
-    <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Glisați pentru a comuta între aplicații"</string>
-    <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Ca să comutați între aplicații, glisați în sus din partea de jos a ecranului, așteptați și eliberați."</string>
+    <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Glisează dinspre marginea dreaptă îndepărtată sau dinspre marginea stângă îndepărtată."</string>
+    <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"Glisează dinspre marginea dreaptă sau stângă spre mijlocul ecranului și eliberează."</string>
+    <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"Ai învățat cum să glisezi din dreapta pentru a reveni. Acum află cum să comuți aplicațiile."</string>
+    <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Ai finalizat gestul „înapoi”."</string>
+    <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Nu glisa prea aproape de partea de jos a ecranului."</string>
+    <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Schimbă sensibilitatea gestului „Înapoi” accesând Setările"</string>
+    <string name="back_gesture_intro_title" msgid="19551256430224428">"Glisează pentru a reveni"</string>
+    <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Pentru a reveni la ultimul ecran, glisează de la marginea stângă sau dreaptă spre mijlocul ecranului."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Pentru a reveni la ultimul ecran, glisează cu două degete dinspre marginea stângă sau dreaptă spre mijlocul ecranului."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Înapoi"</string>
+    <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Glisează în sus dinspre marginea de jos a ecranului."</string>
+    <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Nu întrerupe gestul înainte de a elibera."</string>
+    <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Glisează direct în sus."</string>
+    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"Ai finalizat gestul „accesează ecranul de pornire”. Acum află cum să revii."</string>
+    <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Ai finalizat gestul „accesează ecranul de pornire”."</string>
+    <string name="home_gesture_intro_title" msgid="836590312858441830">"Glisează pentru a accesa ecranul de pornire"</string>
+    <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Glisează în sus din partea de jos a ecranului. Cu acest gest accesezi mereu ecranul de pornire."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Glisează în sus cu două degete din partea de jos. Cu acest gest accesezi mereu ecranul de pornire."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Înapoi la ecranul de pornire"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Pentru a accesa oricând ecranul de pornire, glisează în sus din partea de jos a ecranului"</string>
+    <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Glisează în sus dinspre marginea de jos a ecranului."</string>
+    <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Încearcă să ții fereastra mai mult înainte s-o eliberezi."</string>
+    <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Glisează direct în sus, apoi întrerupe."</string>
+    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Ai învățat să folosești gesturi. Pentru a dezactiva gesturile, accesează Setările."</string>
+    <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Ai finalizat gestul „comută între aplicații”."</string>
+    <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Glisează pentru a comuta între aplicații"</string>
+    <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Ca să comuți între aplicații, glisează în sus din partea de jos a ecranului, așteaptă și eliberează."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Ca să comuți între aplicații, glisează cu două degete de jos în sus, așteaptă și eliberează"</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Comută între aplicații"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Gata"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Gata"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Setări"</string>
-    <string name="gesture_tutorial_try_again" msgid="65962545858556697">"Reîncercați"</string>
+    <string name="gesture_tutorial_try_again" msgid="65962545858556697">"Reîncearcă"</string>
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Bravo!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Tutorialul <xliff:g id="CURRENT">%1$d</xliff:g> / <xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Gata!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Glisați în sus pentru a accesa ecranul de pornire"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Sunteți gata să folosiți telefonul"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Glisați în sus pentru a accesa pagina principală"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Atinge butonul ecran de pornire ca să accesezi ecranul de pornire"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Ești gata să folosești <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"dispozitivul"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Setările de navigare ale sistemului"</annotation></string>
-    <string name="action_share" msgid="2648470652637092375">"Distribuiți"</string>
+    <string name="action_share" msgid="2648470652637092375">"Distribuie"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Captură de ecran"</string>
     <string name="action_split" msgid="2098009717623550676">"Împărțit"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Atingeți altă aplicație pentru a folosi ecranul împărțit"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Aplicația nu acceptă ecranul împărțit."</string>
-    <string name="blocked_by_policy" msgid="2071401072261365546">"Această acțiune nu este permisă de aplicație sau de organizația dvs."</string>
-    <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Omiteți tutorialul de navigare?"</string>
-    <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Îl puteți găsi mai târziu în aplicația <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Anulați"</string>
-    <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Omiteți"</string>
-    <string name="accessibility_rotate_button" msgid="4771825231336502943">"Rotiți ecranul"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Panoul cu informații despre bara de activități s-a afișat"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Panoul cu informații despre bara de activități s-a închis"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Folosiți bara de activități ca să comutați între aplicații"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Trageți în lateral ca să folosiți două aplicații deodată"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Atingeți lung oricând pentru a ascunde bara de activități"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Înainte"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Înapoi"</string>
-    <string name="taskbar_edu_close" msgid="887022990168191073">"Închideți"</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Atinge altă aplicație pentru ecranul împărțit"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Alege altă aplicație pentru ecranul împărțit"</string>
+    <string name="blocked_by_policy" msgid="2071401072261365546">"Această acțiune nu este permisă de aplicație sau de organizația ta"</string>
+    <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Omiți tutorialul de navigare?"</string>
+    <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Îl poți găsi mai târziu în aplicația <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Anulează"</string>
+    <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Omite"</string>
+    <string name="accessibility_rotate_button" msgid="4771825231336502943">"Rotește ecranul"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Informații despre bara de activități"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Trage în lateral o aplicație ca să folosești 2 aplicații deodată"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Glisează lent în sus pentru a afișa bara de activități"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Primește sugestii de aplicații în funcție de rutina ta"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Activează navigarea prin gesturi în Setări ca să ascunzi automat bara de activități"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Fă mai multe din Bara de activități"</string>
+    <string name="taskbar_edu_close" msgid="887022990168191073">"Închide"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Gata"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Ecran de pornire"</string>
     <string name="taskbar_button_a11y" msgid="5241161324875094465">"Accesibilitate"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Recente"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Notificări"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Setări rapide"</string>
-    <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Mutați în stânga sus"</string>
-    <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Mutați în dreapta jos"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Bară de activități"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Bara de activități este afișată"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Bara de activități este ascunsă"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Bară de navigare"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Afișează întotdeauna bara de activități"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Schimbă modul de navigare"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Separator pentru bara de activități"</string>
+    <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Mută în stânga sus"</string>
+    <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Mută în dreapta jos"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Afișează încă # aplicație}few{Afișează încă # aplicații}other{Afișează încă # de aplicații}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> și <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-ru/strings.xml b/quickstep/res/values-ru/strings.xml
index 7d27436..0634d8b 100644
--- a/quickstep/res/values-ru/strings.xml
+++ b/quickstep/res/values-ru/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Рекомендуемые приложения будут появляться в разделе избранных на главном экране"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Приложения, которыми вы часто пользуетесь, будут доступны прямо на главном экране. Их список может меняться с учетом ваших предпочтений. Приложения из нижнего ряда будут перемещены выше на главном экране."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Включите функцию для быстрого доступа к часто используемым приложениям на главном экране. Список меняется с учетом ваших действий. Приложения из раздела избранных будут перемещены на главный экран."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Приложения, которыми вы часто пользуетесь, будут доступны прямо на главном экране. Их список может меняться с учетом ваших предпочтений. Приложения из нижнего ряда будут перемещены в новую папку."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Показывать рекомендации"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Отмена"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Настройки"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Уровень чувствительности можно изменить в настройках."</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Возврат к предыдущему экрану"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Чтобы вернуться к предыдущему экрану, проведите от левого или правого края дисплея к центру."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Чтобы вернуться на предыдущий экран, проведите двумя пальцами от левого или правого края экрана к центру."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Как вернуться к предыдущему экрану"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Проведите снизу вверх от самого края экрана."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Не приостанавливайтесь перед тем, как отпустить палец."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Проведите по экрану ровно вверх."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Вы выполнили жест для перехода на главный экран."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Переход на главный экран"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Проведите вверх от нижнего края дисплея. Этот жест открывает главный экран."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Проведите двумя пальцами вверх от нижнего края экрана. Этот жест открывает главный экран."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Переход на главный экран"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Чтобы открыть главный экран, проведите снизу вверх по экрану."</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Проведите снизу вверх от самого края экрана."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Прежде чем отпускать палец, задержите его на дисплее подольше."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Проведите по экрану ровно вверх, а затем задержите палец в крайнем положении."</string>
@@ -67,34 +71,37 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Вы выполнили жест для переключения между приложениями."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Переключение между приложениями"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Чтобы переключиться между приложениями‚ проведите по экрану снизу вверх, задержите палец, а затем отпустите."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Чтобы сменить приложение, проведите двумя пальцами снизу вверх, задержите пальцы, а затем отпустите."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Как переключаться между приложениями"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Готово"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Готово"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Настройки"</string>
     <string name="gesture_tutorial_try_again" msgid="65962545858556697">"Повторите попытку"</string>
-    <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Поздравляем!"</string>
+    <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Отлично!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Руководство (шаг <xliff:g id="CURRENT">%1$d</xliff:g> из <xliff:g id="TOTAL">%2$d</xliff:g>)"</string>
     <string name="allset_title" msgid="5021126669778966707">"Готово!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Чтобы перейти на главный экран, проведите вверх."</string>
-    <string name="allset_description" msgid="6350320429953234580">"Теперь вы можете использовать телефон."</string>
+    <string name="allset_hint" msgid="459504134589971527">"Чтобы перейти на главный экран, проведите вверх."</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Нажмите кнопку главного экрана, чтобы открыть его."</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Теперь вы можете использовать <xliff:g id="DEVICE">%1$s</xliff:g>."</string>
+    <string name="default_device_name" msgid="6660656727127422487">"устройство"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Системные настройки навигации"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Поделиться"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Скриншот"</string>
     <string name="action_split" msgid="2098009717623550676">"Разделить"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Для разделения экрана нажмите на другое приложение."</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Приложение не поддерживает разделение экрана."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Для разделения экрана выберите другое приложение."</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Выберите другое приложение для разделения экрана."</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Это действие заблокировано приложением или организацией."</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Пропустить руководство по жестам?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Его можно найти в приложении \"<xliff:g id="NAME">%1$s</xliff:g>\"."</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Отмена"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Пропустить"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Повернуть экран"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Обучение по работе с панелью задач показано"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Обучение по работе с панелью задач скрыто"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Используйте панель задач, чтобы переключать приложения."</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Перетащите в сторону, чтобы использовать два приложения сразу."</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Чтобы скрыть панель задач, коснитесь ее и удерживайте."</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Далее"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Назад"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Обучение по работе с панелью задач"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Используйте два приложения сразу, перетащив одно в сторону."</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Чтобы открыть панель задач, медленно проведите снизу вверх."</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Получайте рекомендации, основанные на ваших действиях."</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Чтобы панель задач скрывалась автоматически, включите навигацию с помощью жестов."</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Используйте все возможности панели задач"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Закрыть"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Готово"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Главный экран"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Недавние"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Уведомления"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Быстрые настройки"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Панель задач"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Панель задач показана"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Панель задач скрыта"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Панель навигации"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Всегда показывать панель задач"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Изменить режим навигации"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Разделитель панели задач"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Переместить вверх или влево"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Переместить вниз или вправо"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Показать ещё # приложение}one{Показать ещё # приложение}few{Показать ещё # приложения}many{Показать ещё # приложений}other{Показать ещё # приложения}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> и <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-si/strings.xml b/quickstep/res/values-si/strings.xml
index 990017e..376427b 100644
--- a/quickstep/res/values-si/strings.xml
+++ b/quickstep/res/values-si/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"ඔබේ මුල් තිරයේ ප්‍රියතම පේළියේ යෙදුම් යෝජනා ලබා ගන්න"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"ඔබගේ වැඩිපුරම භාවිත කරන යෙදුම්වලට මුල් තිරයේ සිටම පහසුවෙන් ප්‍රවේශ වන්න. ඔබගේ දිනචරියා මත පදනම්ව යෝජනා වෙනස් වනු ඇත. පහළ පේළියේ යෙදුම් ඔබගේ මුල් තිරය දක්වා ගෙන යනු ඇත."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"ඔබගේ වැඩිපුරම භාවිත කරන යෙදුම්වලට මුල් තිරයේ සිටම පහසුවෙන් ප්‍රවේශ වන්න. ඔබගේ දිනචරියා මත පදනම්ව යෝජනා වෙනස් වනු ඇත. ප්‍රියතම තුළ යෙදුම් ඔබේ මුල් තිරය වෙත ගෙන යනු ඇත."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"ඔබගේ වැඩිපුරම භාවිත කරන යෙදුම්වලට මුල් තිරයේ සිටම පහසුවෙන් ප්‍රවේශ වන්න. ඔබගේ දිනචරියා මත පදනම්ව යෝජනා වෙනස් වනු ඇත. පහළ පේළියේ යෙදුම් නව ෆෝල්ඩරයකට ගෙන යනු ඇත."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"යෙදුම් යෝජනා ලබා ගන්න"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"එපා ස්තුතියි"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"සැකසීම්"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"ආපසු ඉංගිතයෙහි සංවේදීතාව වෙනස් කිරීමට, සැකසීම් වෙත යන්න"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"ආපසු යාමට ස්වයිප් කරන්න"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"අවසාන තිරයට ආපසු යාමට, වම් හෝ දකුණු දාරයෙන් තිරයේ මැදට ස්වයිප් කරන්න."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"අවසාන තිරයට ආපසු යාමට, වම් හෝ දකුණු දාරයෙන් තිරයේ මැදට ඇඟිලි 2කින් ස්වයිප් කරන්න."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"ආපසු යන්න"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"ඔබ තිරයේ පහළ දාරයේ සිට ඉහළට ස්වයිප් කරන බව සහතික කර ගන්න."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"යාමට ඉඩ හැරීමට පෙර ඔබ විරාමයක් නොගන්නා බව සහතික කර ගන්න."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"ඔබ කෙලින්ම ඉහළට ස්වයිප් කරන බව සහතික කර ගන්න."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"ඔබ මුල් පිටුවට යාමේ ඉංගිතය සම්පූර්ණ කරන ලදි."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"මුල් පිටුවට යාමට ස්වයිප් කරන්න"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"ඔබගේ තිරයේ පහළින් උඩට ස්වයිප් කරන්න.මෙම ඉංගිතය සැම විටම ඔබව මුල් තිරයට ගෙන යයි."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"තිරයේ පහළම සිට ඇඟිලි 2කින් ඉහළට ස්වයිප් කරන්න. මෙම ඉංගිතය සැම විටම ඔබව මුල් තිරයට ගෙන යයි."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"මුල් පිටුවට යන්න"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"ඕනෑම වේලාවක දී ඔබේ මුල් තිරයට යාම සඳහා, ඔබේ තිරයෙහි පහළ සිට ඉහළට ස්වයිප් කරන්න"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"ඔබ තිරයේ පහළ දාරයේ සිට ඉහළට ස්වයිප් කරන බව සහතික කර ගන්න."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"මුදා හැරීමට පෙර කවුළුව වැඩි වේලාවක් රඳවා තබා ගැනීමට උත්සාහ කරන්න."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"ඔබ කෙලින්ම ඉහළට ස්වයිප් කර, අනතුරුව විරාම කරන බව සහතික කර ගන්න."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"ඔබ යෙදුම් මාරු කිරීමේ ඉංගිතය සම්පූර්ණ කර ඇත."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"යෙදුම් මාරු කිරීමට ස්වයිප් කරන්න"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"යෙදුම් අතර මාරු වීමට, ඔබගේ තිරයේ පහළම සිට උඩට ස්වයිප් කර, අල්ලාගෙන සිට, අනතුරුව මුදා හරින්න."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"යෙදුම් අතර මාරු වීමට, ඔබගේ තිරයේ පහළම සිට උඩට ඇඟිලි 2කින් ස්වයිප් කර, අල්ලාගෙන සිට, අනතුරුව මුදා හරින්න."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"යෙදුම් මාරු කරන්න"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"සියල්ල සකසා ඇත"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"නිමයි"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"සැකසීම්"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"කදිමයි!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"නිබන්ධනය <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"සියල්ල සූදානම්!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"මුල් පිටුවට යාමට ඉහළට ස්වයිප් කරන්න"</string>
-    <string name="allset_description" msgid="6350320429953234580">"ඔබ ඔබගේ දුරකථනය භාවිත කිරීම පටන් ගැනීමට සූදානම්"</string>
+    <string name="allset_hint" msgid="459504134589971527">"මුල් පිටුවට යාමට ඉහළට ස්වයිප් කරන්න"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"ඔබේ මුල් තිරය වෙත යාමට මුල් පිටුව බොත්තම තට්ටු කරන්න"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"ඔබ ඔබේ <xliff:g id="DEVICE">%1$s</xliff:g> භාවිත කිරීම පටන් ගැනීමට සූදානම්"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"උපාංගය"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"පද්ධති සංචාලන සැකසීම්"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"බෙදා ගන්න"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"තිර රුව"</string>
     <string name="action_split" msgid="2098009717623550676">"බෙදන්න"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"බෙදුම් තිරය භාවිත කිරීමට තවත් යෙදුමක් තට්ටු කරන්න"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"යෙදුම බෙදුම් තිරය සඳහා සහාය නොදක්වයි."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"බෙදුම් තිරය භාවිතා කිරීමට තවත් යෙදුමක් තට්ටු කරන්න"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"බෙදීම් තිරය භාවිතා කිරීමට වෙනත් යෙදුමක් තෝරා ගන්න"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"මෙම ක්‍රියාව යෙදුම හෝ ඔබේ සංවිධානය මගින් ඉඩ නොදේ"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"නිබන්ධනය සංචාලනය මඟ හරින්නද?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"ඔබට මෙය පසුව <xliff:g id="NAME">%1$s</xliff:g> යෙදුම තුළ සොයා ගත හැකිය"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"අවලංගු කරන්න"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"මඟ හරින්න"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"තිරය කරකවන්න"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"කාර්ය තීරු අධ්‍යාපනය දිස් විය"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"කාර්ය තීරු අධ්‍යාපනය වසා ඇත"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"යෙදුම් මාරු කිරීමට කාර්ය තීරුව භාවිත කරන්න"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"එකවර යෙදුම් දෙකක් භාවිතා කිරීමට පැත්තට අදින්න"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"කාර්ය තීරුව සැඟවීමට ස්පර්ශ කර අල්ලා ගෙන සිටින්න"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"ඊළඟ"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"ආපසු"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"කාර්ය තීරු අධ්‍යාපනය"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"එකවර යෙදුම් 2ක් භාවිතා කිරීමට යෙදුමක් පැත්තට අදින්න"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"කාර්ය තීරුව පෙන්වීමට ඉහළට සෙමින් ස්වයිප් කරන්න"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"ඔබේ දිනචරියාව මත පදනම්ව යෙදුම් යෝජනා ලබා ගන්න"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"කාර්ය තීරුව ස්වයංක්‍රීයව සැඟවීමට සැකසීම් තුළ අභින සංචලනය සක්‍රීය කරන්න"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"කාර්ය තීරුව සමග තවත් කරන්න"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"වසන්න"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"නිමයි"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"මුල් පිටුව"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"ආපසු"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME මාරුව"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"මෑත"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"දැනුම්දීම්"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"ඉක්මන් සැකසීම්"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"කාර්ය තීරුව"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"කාර්ය තීරුව පෙන්වා ඇත"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"කාර්ය තීරුව සඟවා ඇත"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"සංචලන තීරුව"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"සෑම විටම කාර්ය තීරුව පෙන්වන්න"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"සංචාලන ප්‍රකාරය වෙනස් කරන්න"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"කාර්ය තීරු බෙදනය"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"ඉහළ/වම වෙත ගෙන යන්න"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"පහළ/දකුණ වෙත ගෙන යන්න"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{තවත් # යෙදුමක් පෙන්වන්න.}one{තවත් යෙදුම් #ක් පෙන්වන්න.}other{තවත් යෙදුම් #ක් පෙන්වන්න.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> සහ <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-sk/strings.xml b/quickstep/res/values-sk/strings.xml
index a18f72c..b3f1c29 100644
--- a/quickstep/res/values-sk/strings.xml
+++ b/quickstep/res/values-sk/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Nechajte si na ploche na riadku obľúbených zobrazovať návrhy aplikácií"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Získajte jednoduchý prístup k najpoužívanejším aplikáciám priamo na ploche. Návrhy sa budú meniť podľa vašich zvyklostí. Aplikácie v spodnom riadku sa presunú nahor na plochu."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Získajte jednoduchý prístup k najpoužívanejším aplikáciám priamo na ploche. Návrhy sa budú meniť podľa vašich postupov. Aplikácie v riadku s obľúbenými sa presunú na plochu."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Získajte jednoduchý prístup k najpoužívanejším aplikáciám priamo na ploche. Návrhy sa budú meniť podľa vašich zvyklostí. Aplikácie v spodnom riadku sa presunú do nového priečinka."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Zobrazovať návrhy aplikácií"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nie, ďakujem"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Nastavenia"</string>
@@ -45,14 +44,16 @@
     <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"Návrhy aplikácií zapnuté"</string>
     <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"Návrhy aplikácií vypnuté"</string>
     <string name="hotseat_prediction_content_description" msgid="4582028296938078419">"Predpovedaná aplikácia: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
-    <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Musite potiahnuť z úplne krajného pravého alebo ľavého okraja."</string>
+    <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"Musíte potiahnuť úplne z pravého alebo ľavého okraja."</string>
     <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"Musíte potiahnuť z pravého alebo ľavého okraja do stredu obrazovky a potom uvoľniť."</string>
     <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"Naučili ste sa prejsť späť potiahnutím sprava. V ďalšom kroku sa naučíte prepínať aplikácie."</string>
     <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"Dokončili ste gesto na prechod späť."</string>
     <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Nesmiete potiahnuť príliš blízko dolnej časti obrazovky."</string>
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Ak chcete zmeniť citlivosť gesta Späť, prejdite do Nastavení"</string>
-    <string name="back_gesture_intro_title" msgid="19551256430224428">"Prejdite späť potiahnutím"</string>
+    <string name="back_gesture_intro_title" msgid="19551256430224428">"Prechod späť potiahnutím"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Na poslednú obrazovku prejdete potiahnutím z ľavého alebo pravého okraja do stredu obrazovky."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Na poslednú obrazovku sa vrátite potiahnutím dvoma prstami z ľavého alebo pravého okraja do stredu obrazovky."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Prechod späť"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Musíte potiahnuť nahor z dolného okraja obrazovky."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Pred uvoľnením nesmiete zastať."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Musíte potiahnuť priamo hore."</string>
@@ -60,13 +61,18 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Dokončili ste gesto na prechod na plochu."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Prechod na plochu potiahnutím"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Potiahnite nahor zdola obrazovky. Týmto gestom sa vždy vrátite na plochu."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Postiahnite dvoma prstami z dolnej časti obrazovky. Týmto gestom sa vždy vrátite na plochu."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Prejdenie na plochu"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Na plochu môžete kedykoľvek prejsť potiahnutím nahor z dolnej časti obrazovky"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Musíte potiahnuť nahor z dolného okraja obrazovky."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Skúste okno pred uvoľnením podržať dlhšie."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Musite potiahnuť priamo hore a potom zastať."</string>
-    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Naučili ste sa používať gestá. Ak ich chcete vypnúť, prejdite do Nastavení."</string>
+    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"Naučili ste sa používať gestá. Gestá môžete vypnúť v nastaveniach."</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Dokončili ste gesto na prepnutie aplikácií."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Prepínanie aplikácií potiahnutím"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Aplikácie môžete prepínať potiahnutím obrazovky zdola nahor, pridržaním a následným uvoľnením."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Aplikácie prepnete potiahnutím dvoma prstami z dolnej časti obrazovky, ich pridržaním a uvoľnením."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Prepnutie aplikácií"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Hotovo"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Hotovo"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Nastavenia"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Výborne!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Návod <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Hotovo"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Potiahnutím nahor prejdete na plochu"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Telefón môžete začať používať"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Potiahnutím nahor prejdete na plochu"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Na plochu prejdete klepnutím na tlačidlo plochy"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"<xliff:g id="DEVICE">%1$s</xliff:g> môžete začať používať"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"zariadenie"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Nastavenia navigácie systémom"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Zdieľať"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Snímka obrazovky"</string>
     <string name="action_split" msgid="2098009717623550676">"Rozdeliť"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Rozdel. obrazovku spustíte klepnutím na inú aplik."</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Aplikácia nepodporuje rozdelenú obrazovku."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Obrazovku rozdelíte klepnutím na inú aplikáciu"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Na použitie rozd. obrazovky vyberte inú aplikáciu"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Aplikácia alebo vaša organizácia túto akciu nepovoľuje"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Chcete preskočiť návod na navigáciu?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Tento návod nájdete v aplikácii <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Zrušiť"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Preskočiť"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Otočiť obrazovku"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Zobrazila sa výuka k hlavnému panelu"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Výuka k hlavnému panelu bola zatvorená"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Aplikácie je možné prepínať pomocou panela úloh"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Po presunutí na stranu je možné používať dve aplikácie naraz"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Panel úloh skryjete pridržaním"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Ďalej"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Späť"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Panel vzdelávacích aplikácií"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Ak chcete použiť dve aplikácie naraz, presuňte aplikáciu nabok"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Panel aplikácií zobrazíte pomalým potiahnutím nahor"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Získavajte návrhy aplikácií na základe svojich zvykov"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Ak chcete, aby sa panel aplikácií autom. skrýval, zapnite v Nastaveniach navigáciu gestami"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Panel aplikácií vám ponúka ďalšie možnosti"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Zavrieť"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Hotovo"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Plocha"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Späť"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"Prepínač IME"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Nedávne"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Upozornenia"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Rýchle nastavenia"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Panel aplikácií"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Panel aplikácií je zobrazený"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Panel aplikácií je skrytý"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigačný panel"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Zobrazovať panel aplikácií"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Zmeniť režim navigácie"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Rozdeľovač panela aplikácií"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Presunúť hore alebo doľava"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Presunúť dole alebo doprava"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Zobraziť # ďalšiu aplikáciu.}few{Zobraziť # ďalšie aplikácie.}many{Show # more apps.}other{Zobraziť # ďalších aplikácií.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> a <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-sl/strings.xml b/quickstep/res/values-sl/strings.xml
index 8203528..38792bd 100644
--- a/quickstep/res/values-sl/strings.xml
+++ b/quickstep/res/values-sl/strings.xml
@@ -31,11 +31,10 @@
     <string name="time_left_for_app" msgid="3111996412933644358">"Danes je ostalo še <xliff:g id="TIME">%1$s</xliff:g>"</string>
     <string name="title_app_suggestions" msgid="4185902664111965088">"Predlagane aplikacije"</string>
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"Predvidene aplikacije"</string>
-    <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Oglejte si predlagane aplikacije v spodnji vrstici začetnega zaslona"</string>
+    <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Vklopite prikaz predlaganih aplikacij v spodnji vrstici začetnega zaslona"</string>
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Prejemajte predloge aplikacij v vrstici s priljubljenimi na začetnem zaslonu"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Preprosto dostopajte do najpogosteje uporabljenih aplikacij kar na začetnem zaslonu. Predlogi se spreminjajo na podlagi dejanj, ki jih pogosto izvajate. Aplikacije iz spodnje vrstice se premaknejo na začetni zaslon."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Preprosto dostopajte do najpogosteje uporabljenih aplikacij kar na začetnem zaslonu. Predlogi se spreminjajo na podlagi dejanj, ki jih pogosto izvajate. Aplikacije v vrstici s priljubljenimi bodo premaknjene na začetni zaslon."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Preprosto dostopajte do najpogosteje uporabljenih aplikacij kar na začetnem zaslonu. Predlogi se spreminjajo na podlagi dejanj, ki jih pogosto izvajate. Aplikacije iz spodnje vrstice se premaknejo v novo mapo."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Prikaži predlagane aplikacije"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Ne, hvala"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Nastavitve"</string>
@@ -52,7 +51,9 @@
     <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"Pazite, da ne povlečete preblizu dna zaslona."</string>
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Občutljivost poteze za nazaj lahko spremenite v nastavitvah."</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Povlecite za vrnitev"</string>
-    <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Če se želite vrniti na zadnji zaslon, povlecite z levega ali desnega roba do sredine zaslona."</string>
+    <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Če se želite vrniti na prejšnji zaslon, povlecite z levega ali desnega roba do sredine zaslona."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Če se želite vrniti na zadnji prikazani zaslon, z dvema prstoma povlecite z levega ali desnega roba do sredine zaslona."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Nazaj"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Pazite, da povlečete s spodnjega roba zaslona navzgor."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Pazite, da ne zaustavite prsta, preden ga dvignete."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Pazite, da povlečete naravnost navzgor."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Izvedli ste potezo za pomik na začetni zaslon."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Povlecite za pomik na začetni zaslon"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Z dna zaslona s prstom povlecite navzgor. S to potezo lahko vedno odprete začetni zaslon."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Z dvema prstoma povlecite navzgor z dna zaslona. S to potezo lahko vedno odprete začetni zaslon."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Pomik na začetni zaslon"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Za pomik na začetni zaslon lahko kadar koli povlečete navzgor z dna zaslona."</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Pazite, da povlečete s spodnjega roba zaslona navzgor."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Poskusite okno pridržati dalj časa, preden ga izpustite."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Pazite, da povlečete naravnost navzgor in nato zaustavite prst."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Izvedli ste potezo za preklapljanje med aplikacijami."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Povlecite za preklapljanje med aplikacijami"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Za preklapljanje med aplikacijami povlecite navzgor z dna zaslona, pridržite in nato izpustite."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Za preklop med aplikacijami z dvema prstoma povlecite navzgor z dna zaslona, pridržite in spustite."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Preklop aplikacij"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Zdaj znate"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Končano"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Nastavitve"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Odlično!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Vadnica <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Končano"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Povlecite navzgor za začetni zaslon"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Pripravljeni ste, da začnete uporabljati telefon"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Povlecite navzgor za začetni zaslon"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Za pomik na začetni zaslon se dotaknite gumba za začetni zaslon."</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Pripravljeni ste, da začnete uporabljati <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"napravo"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Nastavitve krmarjenja po sistemu"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Deli"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Posnetek zaslona"</string>
     <string name="action_split" msgid="2098009717623550676">"Razdeli"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Za uporabo razdeljenega zaslona se dotaknite še ene aplikacije."</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Aplikacija ne podpira načina razdeljenega zaslona."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Za razdeljeni zaslon se dotaknite še 1 aplikacije"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Izberite drugo aplikacijo za uporabo razdeljenega zaslona."</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Aplikacija ali vaša organizacija ne dovoljuje tega dejanja"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Želite preskočiti vadnico za krmarjenje?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"To lahko pozneje najdete v aplikaciji <xliff:g id="NAME">%1$s</xliff:g>."</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Prekliči"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Preskoči"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Sukanje zaslona"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Poučni nasveti o opravilni vrstici so prikazani."</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Poučni nasveti o opravilni vrstici so zaprti."</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Za preklop aplikacij uporabite opravilno vrstico."</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Povlecite vstran za uporabo dveh aplikacij hkrati."</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Pridržite, če želite opravilno vrstico skriti."</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Naprej"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Nazaj"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Poučni nasveti o opravilni vrstici"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Povlecite aplikacijo na stran za uporabo 2 aplikacij hkrati."</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Počasi povlecite navzgor za prikaz opravilne vrstice"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Prejemajte predloge aplikacij na podlagi svojih navad."</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"V nastavitvah vklopite krmarjenje s potezami, da se bo opravilna vrstica samodejno skrila."</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Naredite več z opravilno vrstico"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Zapri"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Končano"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Začetni zaslon"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Nedavno"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Obvestila"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Hitre nastavitve"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Opravilna vrstica"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Opravilna vrstica je prikazana"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Opravilna vrstica je skrita"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Vrstica za krmarjenje"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Stalen prikaz opravilne vrstice"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Spreminjanje načina navigacije"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Razdelilnik opravilne vrstice"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Premakni na vrh/levo"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Premakni na dno/desno"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Pokaži še # aplikacijo.}one{Pokaži še # aplikacijo.}two{Pokaži še # aplikaciji.}few{Pokaži še # aplikacije.}other{Pokaži še # aplikacij.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> in <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-sq/strings.xml b/quickstep/res/values-sq/strings.xml
index f2b2fa8..ad9f951 100644
--- a/quickstep/res/values-sq/strings.xml
+++ b/quickstep/res/values-sq/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Merr aplikacione të sugjeruara në rreshtin e të preferuarave të ekranit tënd bazë"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Qasu me lehtësi në aplikacionet më të përdorura direkt në ekranin bazë. Sugjerimet do të ndryshojnë bazuar në rutinat e tua. Aplikacionet në rreshtin e poshtëm do të zhvendosen lart në ekranin tënd bazë."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Qasu me lehtësi në aplikacionet më të përdorura direkt në ekranin bazë. Sugjerimet do të ndryshojnë bazuar në rutinat e tua. Aplikacionet në rreshtin e të preferuarave do të zhvendosen në ekranin tënd bazë."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Qasu me lehtësi në aplikacionet më të përdorura, direkt në ekranin bazë. Sugjerimet do të ndryshojnë bazuar në rutinat e tua. Aplikacionet në rreshtin e poshtëm do të zhvendosen në një dosje tjetër."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Merr aplikacione të sugjeruara"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Jo, faleminderit"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Cilësimet"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Për të ndryshuar ndjeshmërinë e gjestit të kthimit prapa, shko te \"Cilësimet\""</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Rrëshqit shpejt për t\'u kthyer prapa"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Për t\'u kthyer prapa tek ekrani i fundit, rrëshqit shpejt nga skaji i majtë ose i djathtë drejt mesit të ekranit"</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Për t\'u kthyer prapa tek ekrani i fundit, rrëshqit shpejt me 2 gishta nga skaji i majtë ose i djathtë drejt mesit të ekranit."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Kthehu prapa"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Sigurohu që të rrëshqasësh shpejt lart nga skaji i poshtëm i ekranit."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Sigurohu që të mos ndalosh para se ta lëshosh."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Sigurohu që të rrëshqasësh shpejt drejt lart."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"E ke përfunduar gjestin e kalimit tek ekrani bazë."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Rrëshqit shpejt për të kaluar tek ekrani bazë"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Rrëshqit shpejt lart nga fundi i ekranit tënd. Ky gjest të dërgon gjithmonë tek ekrani bazë."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Rrëshqit shpejt lart me 2 gishta nga fundi i ekranit. Ky gjest të dërgon gjithmonë tek ekrani bazë."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Shko tek ekrani bazë"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Për të shkuar tek ekrani bazë në çdo kohë, rrëshqit shpejt lart nga fundi i ekranit"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Sigurohu që të rrëshqasësh shpejt lart nga skaji i poshtëm i ekranit."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Provo ta mbash shtypur dritaren për një kohë më të gjatë para se ta lëshosh."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Sigurohu që të rrëshqasësh shpejt drejt lart dhe më pas ndalo."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"E ke përfunduar gjestin e ndërrimit të aplikacioneve."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Rrëshqit shpejt për të ndërruar aplikacionet"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Për të ndërruar mes aplikacioneve, rrëshqit shpejt lart nga fundi i ekranit tënd, mbaj dhe pastaj lësho."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Për të ndërruar mes aplikacioneve, rrëshqit lart me 2 gishta nga fundi i ekranit, mbaje dhe lëshoje."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Ndërro aplikacionet"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Plotësisht gati"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"U krye"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Cilësimet"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Bukur!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Udhëzuesi <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Plotësisht gati!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Rrëshqit shpejt lart për të shkuar tek \"Ekrani bazë\""</string>
-    <string name="allset_description" msgid="6350320429953234580">"Je gati për të filluar përdorimin e telefonit tënd"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Rrëshqit shpejt lart për të shkuar në ekranin bazë"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Trokit te butoni \"kreu\" për të shkuar tek ekrani bazë"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Je gati që të fillosh të përdorësh <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"pajisje"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Cilësimet e navigimit të sistemit"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Ndaj"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Pamja e ekranit"</string>
     <string name="action_split" msgid="2098009717623550676">"Ndaj"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Trokit aplikacion tjetër e përdor ekranin e ndarë"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Aplikacioni nuk mbështet ekranin e ndarë."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Trokit një apl. tjetër; përdor ekranin e ndarë"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Zgjidh një aplikacion tjetër për të përdorur ekranin e ndarë"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Ky veprim nuk lejohet nga aplikacioni ose organizata jote"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Të kapërcehet udhëzuesi i navigimit?"</string>
-    <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Këtë mund ta gjesh më vonë tek aplikacioni <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Këtë mund ta gjesh më vonë tek aplikacioni \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Anulo"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Kapërce"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Rrotullo ekranin"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Edukimi i shiritit të detyrave u shfaq"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Edukimi nga shiriti i detyrave u mbyll"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Përdor shiritin e detyrave për të ndryshuar aplikacionet"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Zvarrit anash për të përdorur të dyja aplikacionet njëherësh"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Preke dhe mbaje prekur për ta fshehur shiritin e detyrave"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Para"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Pas"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Edukimi për shiritin e detyrave"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Zvarrit një aplikacion në anë për të përdorur 2 aplikacione njëherësh"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Rrëshqit lart ngadalë për të shfaqur \"Shiritin e detyrave\""</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Merr sugjerime për aplikacion bazuar në rutinën tënde"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Aktivizo navigimin me gjeste te \"Cilësimet\" për të fshehur \"Shiritin e detyrave\""</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Bëj më shumë me \"Shiritin e detyrave\""</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Mbyll"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"U krye"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Faqja kryesore"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Pas"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"Çelësi IME"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Të fundit"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Njoftimet"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Cilësimet shpejt"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Shiriti i detyrave"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Shiriti i detyrave i shfaqur"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Shiriti i detyrave i fshehur"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Shiriti i navigimit"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Shfaq gjithmonë shiritin e detyrave"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Ndrysho modalitetin e navigimit"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Ndarësi i shiritit të detyrave"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Lëviz në krye/majtas"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Lëviz në fund/djathtas"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Shfaq # aplikacion tjetër.}other{Shfaq # aplikacione të tjera.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> dhe <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-sr/strings.xml b/quickstep/res/values-sr/strings.xml
index 309aaeb..f443a68 100644
--- a/quickstep/res/values-sr/strings.xml
+++ b/quickstep/res/values-sr/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Добијајте предлоге апликација у реду са омиљеним ставкама на почетном екрану"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Лако приступајте апликацијама које најчешће користите директно са почетног екрана. Предлози се мењају на основу употребе. Апликације из доњег реда се премештају нагоре на почетни екран."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Лако приступајте апликацијама које најчешће користите директно са почетног екрана. Предлози се мењају на основу ваших рутина. Апликације из реда са омиљеним ставкама се премештају на почетни екран."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Лако приступајте апликацијама које најчешће користите директно са почетног екрана. Предлози се мењају на основу употребе. Апликације из доњег реда се премештају у нов фолдер."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Приказуј предлоге апликација"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Не, хвала"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Подешавања"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Осетљивост пок. за назад можете да промените у Подешавањима"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Превуците да бисте се вратили уназад"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Да бисте се вратили на последњи екран, превуците од леве или десне ивице до средине екрана."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Да бисте се вратили на последњи екран, превуците помоћу два прста од леве или десне ивице до средине екрана."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Назад"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Обавезно превуците нагоре од доње ивице екрана."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Никако не стајте пре отпуштања."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Обавезно превуците право нагоре."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Довршили сте покрет за повратак на почетну страницу."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Превуците да бисте отишли на почетну страницу"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Превуците нагоре од дна екрана. Овај покрет вас увек води на почетни екран."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Превуците помоћу два прста нагоре од дна екрана. Овим покретом увек отварате почетни екран."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Идите на почетни екран"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Да бисте отишли на почетни екран у било ком тренутку, превуците нагоре од дна екрана."</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Обавезно превуците нагоре од доње ивице екрана."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Пробајте да држите прозор дуже пре отпуштања."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Обавезно превуците право нагоре, па застаните."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Довршили сте покрет за промену апликација."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Превуците да бисте заменили апликације"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"За прелазак са једне апликације на другу превуците нагоре од дна екрана, задржите, па пустите."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"За прелазак између апликација превуците помоћу два прста нагоре од дна екрана, задржите, па пустите."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Пређите на другу апликацију"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"То је то"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Готово"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Подешавања"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Свака част!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Водич <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Готово!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Превуците нагоре да бисте отворили почетни екран"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Спремни сте да почнете да користите телефон"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Превуците нагоре да бисте отворили почетни екран"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Додирните дугме Почетак да бисти ишли на почетни екран"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Спремни сте да почнете да користите <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"уређај"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Подешавања кретања кроз систем"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Дели"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Снимак екрана"</string>
     <string name="action_split" msgid="2098009717623550676">"Подели"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Додирните другу апликацију за подељени екран"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Апликација не подржава подељени екран."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Додирните другу апликацију за подељени екран"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Одаберите другу апликацију за подељени екран"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Апликација или организација не дозвољавају ову радњу"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Желите да прескочите водич за кретање?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Можете да пронађете ово касније у апликацији <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Откажи"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Прескочи"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Ротирајте екран"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Едукативно окно из траке задатака се појавило"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Едукативно окно из траке задатака је затворено"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Користите траку задатака да бисте мењали апликације"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Превуците на страну да користите две апликације одједном"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Додирните и задржите за скривање траке задатака"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Даље"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Назад"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Упутства на траци задатака"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Превуците на страну да бисте користили 2 апликације одједном"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Споро превуците нагоре да бисте приказали траку задатака"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Добијајте предлоге апликација на основу рутине"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Укључите навигацију помоћу покрета у Подешавањима ради аутоматског скривања траке задатака"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Урадите више помоћу траке задатака"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Затвори"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Готово"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Почетна"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Недавно"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Обавештења"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Брза подешавања"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Трака задатака"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Трака задатака је приказана"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Трака задатака је скривена"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Трака за навигацију"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Увек приказуј траку задатака"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Промени режим навигације"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Разделник траке задатака"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Премести горе лево"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Премести доле десно"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Прикажи још # апликацију.}one{Прикажи још # апликацију.}few{Прикажи још # апликације.}other{Прикажи још # апликација.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> и <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-sv/strings.xml b/quickstep/res/values-sv/strings.xml
index 2f1b75a..738b362 100644
--- a/quickstep/res/values-sv/strings.xml
+++ b/quickstep/res/values-sv/strings.xml
@@ -21,7 +21,7 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="recent_task_option_pin" msgid="7929860679018978258">"Fäst"</string>
     <string name="recent_task_option_freeform" msgid="48863056265284071">"Fritt format"</string>
-    <string name="recents_empty_message" msgid="7040467240571714191">"Listan med de senaste åtgärderna är tom"</string>
+    <string name="recents_empty_message" msgid="7040467240571714191">"Listan är tom"</string>
     <string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Inställningar för appanvändning"</string>
     <string name="recents_clear_all" msgid="5328176793634888831">"Rensa alla"</string>
     <string name="accessibility_recent_apps" msgid="4058661986695117371">"Senaste apparna"</string>
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Få appförslag på raden Favoriter på startskärmen"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Kom enkelt åt de appar du använder mest, direkt från startskärmen. Förslagen ändras efter dina rutiner. Appar på nedersta raden flyttas upp till startskärmen."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Kom enkelt åt de appar du använder mest, direkt från startskärmen. Förslagen ändras efter dina rutiner. Appar på raden Favoriter flyttas till startskärmen."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Kom enkelt åt de appar du använder mest, direkt från startskärmen. Förslagen ändras efter dina rutiner. Appar på nedersta raden flyttas till en ny mapp."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Få appförslag"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Nej tack"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Inställningar"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Öppna inställningarna om du vill ändra rörelsens känslighet"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Svep för att återgå"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Återgå till den senaste skärmen genom att svepa från skärmens vänster- eller högerkant till mitten."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Gå tillbaka till den senaste skärmen genom att med två fingrar svepa mot mitten av skärmen från vänster eller höger kant."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Tillbaka"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Se till att du sveper från nederkanten på skärmen."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Se till att du sveper i en jämn rörelse innan du släpper."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Se till att du sveper rakt uppåt."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Du är klar med rörelsen för att öppna startskärmen."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Svep för att öppna startskärmen"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Svep uppåt från skärmens nederkant. Du kan alltid återgå till startskärmen med den här rörelsen."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Svep uppåt med två fingrar från skärmens nederkant. Så kommer du alltid tillbaka till startskärmen."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Öppna startskärmen"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Öppna startskärmen när som helst genom att svepa uppåt från skärmens nederkant"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Se till att du sveper från nederkanten på skärmen."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Testa att trycka längre på fönstret innan du släpper."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Se till att du sveper rakt uppåt och sedan pausar."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Du är klar med rörelsen för att byta mellan appar."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Svep för att byta mellan appar"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Byt mellan appar genom att svepa uppåt från skärmens nederkant. Håll fingret nedtryckt och släpp."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Byta mellan appar: Svep uppåt med två fingrar från skärmens nederkant, håll kvar och släpp sedan."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Byt app"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Klart"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Klar"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Inställningar"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Bra!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Självstudie <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Klart!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Svep uppåt för att öppna startskärmen"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Nu kan du börja använda telefonen"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Svep uppåt för att öppna startskärmen"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Tryck på hemknappen för att öppna startskärmen"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Nu kan du börja använda din <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"enhet"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Systemnavigeringsinställningar"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Dela"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Skärmbild"</string>
     <string name="action_split" msgid="2098009717623550676">"Delat"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Tryck på en annan app för att använda delad skärm"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Appen har inte stöd för delad skärm."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Tryck på en annan app för att använda delad skärm"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Välj en annan app för att använda delad skärm"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Appen eller organisationen tillåter inte den här åtgärden"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Vill du hoppa över självstudierna?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Du hittar det här igen i <xliff:g id="NAME">%1$s</xliff:g>-appen"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Avbryt"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Hoppa över"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Rotera skärmen"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Information om aktivitetsfältet visades"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Information om aktivitetsfältet stängdes"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Använd aktivitetsfältet för att byta mellan appar"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Dra till sidan om du vill använda två appar samtidigt"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Tryck länge för att dölja aktivitetsfältet"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Nästa"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Tillbaka"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Aktivitetsfältsutbildning"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Dra en app till sidan om du vill använda två appar samtidigt"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Svep långsamt uppåt för att visa aktivitetsfältet"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Få appförslag utifrån dina rutiner"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Slå på navigering med rörelser i Inställningar för att dölja aktivitetsfältet automatiskt"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Gör mer med aktivitetsfältet"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Stäng"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Klar"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Startsida"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Tillbaka"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME-väljare"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Senaste"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Aviseringar"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Snabbinställn."</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Aktivitetsfält"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Aktivitetsfältet visas"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Aktivitetsfältet är dolt"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigeringsfält"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Visa alltid aktivitetsfältet"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Ändra navigeringsläge"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Avdelare för aktivitetsfältet"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Flytta högst upp/till vänster"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Flytta längst ned/till höger"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Visa # app till.}other{Visa # appar till.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> och <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-sw/strings.xml b/quickstep/res/values-sw/strings.xml
index e10d447..c5b588d 100644
--- a/quickstep/res/values-sw/strings.xml
+++ b/quickstep/res/values-sw/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Pata mapendekezo ya programu katika safu ya vipendwa ya Skrini yako ya kwanza"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Fikia kwa urahisi programu unazotumia sana moja kwa moja kwenye Skrini ya kwanza. Mapendekezo yatabadilika kulingana na ratiba zako. Programu zilizo kwenye sehemu ya chini zitahamishiwa kwenye Skrini yako ya kwanza."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Fikia kwa urahisi programu unazotumia sana moja kwa moja kwenye Skrini ya kwanza. Mapendekezo yatabadilika kulingana na utumiaji wako. Programu zilizo katika safu ya vipendwa zitahamishiwa kwenye Skrini yako ya kwanza."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Fikia kwa urahisi programu unazotumia zaidi, moja kwa moja kwenye Skrini ya kwanza. Mapendekezo yatabadilika kulingana na ratiba zako. Programu zilizo kwenye safu ya chini zitahamishiwa kwenye folda mpya."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Pata mapendekezo ya programu"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Hapana"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Mipangilio"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Kubadilisha hisi ya ishara ya nyuma, nenda kwenye Mipangilio"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Telezesha kidole ili urudi nyuma"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Ili urudi kwenye skrini iliyotangulia, telezesha kidole kuanzia ukingo wa kushoto au wa kulia kuelekea katikati ya skrini."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Ili urudi kwenye skrini iliyopita, telezesha vidole viwili kuanzia ukingo wa kushoto au wa kulia kuelekea katikati ya skrini."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Rudi nyuma"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Hakikisha unatelezesha kidole juu kuanzia ukingo wa chini wa skrini."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Hakikisha kuwa husimamishi kabla ya kuachilia."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Hakikisha unatelezesha kidole kuelekea juu."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Umekamilisha ishara ya kwenda kwenye Skrini ya kwanza."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Telezesha kidole ili uende kwenye skrini ya kwanza"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Telezesha kidole juu kuanzia chini ya skrini yako. Ishara hii kila wakati hukupeleka kwenye Skrini ya kwanza."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Telezesha vidole viwili kuelekea juu kuanzia sehemu ya chini ya skrini. Ishara hii kila wakati hukupeleka kwenye Skrini ya kwanza."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Nenda kwenye ukurasa wa mwanzo"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Ili uende kwenye skrini ya kwanza muda wowote, telezesha kidole juu kutoka sehemu ya chini ya skrini"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Hakikisha unatelezesha kidole juu kuanzia ukingo wa chini wa skrini."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Jaribu kushikilia dirisha kwa muda mrefu kabla ya kuachilia."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Hakikisha unatelezesha kidole kuelekea juu, kisha usimamishe."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Umekamilisha ishara ya kubadilisha programu."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Telezesha kidole ili ubadilishe programu"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Ili ubadili kati ya programu, telezesha kidole juu kuanzia sehemu ya chini ya skrini yako, ushikilie, kisha uachilie."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Ili ubadilishe kati ya programu, telezesha vidole viwili kuelekea juu kuanzia sehemu ya chini ya skrini yako, ushikilie, kisha uachilie."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Badilisha programu"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Kila kitu kiko tayari"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Nimemaliza"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Mipangilio"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Safi!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Mafunzo ya <xliff:g id="CURRENT">%1$d</xliff:g> kati ya <xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Tayari!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Telezesha kidole juu ili uende kwenye skrini ya kwanza"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Uko tayari kuanza kutumia simu yako"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Telezesha kidole juu ili uende kwenye skrini ya kwanza"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Gusa kitufe cha ukurasa wa mwanzo ili uende kwenye skrini ya kwanza"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Uko tayari kuanza kutumia <xliff:g id="DEVICE">%1$s</xliff:g> yako"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"kifaa"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Mipangilio ya usogezaji kwenye mfumo"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Shiriki"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Picha ya skrini"</string>
     <string name="action_split" msgid="2098009717623550676">"Iliyogawanywa"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Gusa programu nyingine ili utumie skrini iliyogawanywa"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Programu haiwezi kutumia skrini iliyogawanywa."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Gusa programu nyingine ili utumie kipengele cha kugawa skrini"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Chagua programu nyingine ili utumie hali ya kugawa skrini"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Kitendo hiki hakiruhusiwi na programu au shirika lako"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Ungependa kuruka mafunzo ya usogezaji?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Utapata mafunzo haya baadaye katika programu ya <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Ghairi"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Ruka"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Zungusha skrini"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Paneli ya elimu kwenye upau wa shughuli inaonyeshwa"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Paneli ya elimu kwenye upau wa shughuli imefungwa"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Tumia upau wa shughuli kubadilisha programu"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Buruta pembeni ili utumie programu mbili kwa wakati mmoja"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Gusa na ushikilie ili ufiche upau wa shughuli"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Endelea"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Nyuma"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Elimu ya Upauzana"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Buruta programu pembeni ili utumie programu 2 kwa wakati mmoja"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Telezesha kidole juu taratibu ili ufungue Upauzana"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Pata mapendekezo ya programu kulingana na ratiba yako"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Washa usogezaji kwa kutumia ishara kwenye Mipangilio ili ufiche Upauzana kiotomatiki"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Kamilisha mengi kwa kutumia Upauzana huu"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Funga"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Imemaliza"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Mwanzo"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Vilivyotumika majuzi"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Arifa"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Mipangilio ya Haraka"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Upauzana"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Upauzana umeonyeshwa"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Upauzana umefichwa"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Sehemu ya viungo muhimu"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Onyesha Upauzana kila wakati"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Badilisha hali ya usogezaji"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Kitenganishi cha Upauzana"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Sogeza juu/kushoto"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Sogeza chini/kulia"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Onyesha programu # zaidi.}other{Onyesha programu # zaidi.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> na <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-sw600dp-land/dimens.xml b/quickstep/res/values-sw600dp-land/dimens.xml
index 0cd9b2b..9cb3fec 100644
--- a/quickstep/res/values-sw600dp-land/dimens.xml
+++ b/quickstep/res/values-sw600dp-land/dimens.xml
@@ -15,6 +15,16 @@
 */
 -->
 <resources>
-    <!--  Overview actions  -->
-    <dimen name="overview_actions_top_margin">12dp</dimen>
+    <!-- All Set page -->
+    <dimen name="allset_page_margin_horizontal">48dp</dimen>
+
+    <!-- Gesture Tutorial menu page -->
+    <dimen name="gesture_tutorial_menu_padding_horizontal">48dp</dimen>
+    <dimen name="gesture_tutorial_menu_padding_top">32dp</dimen>
+    <dimen name="gesture_tutorial_menu_padding_bottom">16dp</dimen>
+    <dimen name="gesture_tutorial_menu_button_height">491dp</dimen>
+    <dimen name="gesture_tutorial_menu_button_spacing">24dp</dimen>
+    <dimen name="gesture_tutorial_menu_done_button_top_spacing">40dp</dimen>
+    <dimen name="gesture_tutorial_menu_back_shape_bottom_margin">49dp</dimen>
+
 </resources>
diff --git a/quickstep/res/values-sw600dp/dimens.xml b/quickstep/res/values-sw600dp/dimens.xml
index 7494683..daf1f63 100644
--- a/quickstep/res/values-sw600dp/dimens.xml
+++ b/quickstep/res/values-sw600dp/dimens.xml
@@ -14,16 +14,31 @@
  * limitations under the License.
 */
 -->
+<!-- Applies to small tablet screens -->
 <resources>
     <dimen name="navigation_key_padding">25dp</dimen>
 
-    <!--  Task View  -->
+    <!--  Overview Task Views  -->
+    <!--  A touch target for icons, sometimes slightly larger than the icons themselves  -->
     <dimen name="task_thumbnail_icon_size">48dp</dimen>
+    <!--  The icon size for the focused task, placed in center of touch target  -->
     <dimen name="task_thumbnail_icon_drawable_size">44dp</dimen>
+    <!--  The space under the focused task icon  -->
     <dimen name="overview_task_margin">12dp</dimen>
+    <!--  The icon size of all non-focused task icons, placed in center of touch target  -->
     <dimen name="task_thumbnail_icon_drawable_size_grid">44dp</dimen>
-    <dimen name="overview_task_margin_grid">12dp</dimen>
+    <!--  The space between grid rows (when there's 2 rows of thumbnails)  -->
     <dimen name="overview_grid_row_spacing">28dp</dimen>
+    <!--  The horizontal space between tasks  -->
     <dimen name="overview_page_spacing">36dp</dimen>
+    <!--  The space to the left and to the right of the "Clear all" button  -->
     <dimen name="overview_grid_side_margin">64dp</dimen>
+    <!--  Overview actions  -->
+    <dimen name="overview_actions_top_margin">24dp</dimen>
+
+    <!-- All Set page -->
+    <dimen name="allset_page_margin_horizontal">120dp</dimen>
+    <dimen name="allset_page_allset_text_size">38sp</dimen>
+    <dimen name="allset_page_swipe_up_text_size">15sp</dimen>
+
 </resources>
diff --git a/quickstep/res/values-sw720dp-land/dimens.xml b/quickstep/res/values-sw720dp-land/dimens.xml
index 02d1189..4634a2d 100644
--- a/quickstep/res/values-sw720dp-land/dimens.xml
+++ b/quickstep/res/values-sw720dp-land/dimens.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?><!--
- * Copyright (c) 2022, The Android Open Source Project
+ * 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.
@@ -15,6 +15,11 @@
 */
 -->
 <resources>
-    <!--  Overview actions  -->
-    <dimen name="overview_actions_top_margin">20dp</dimen>
+
+    <!-- Gesture Tutorial menu page -->
+    <dimen name="gesture_tutorial_menu_button_height">580dp</dimen>
+    <dimen name="gesture_tutorial_menu_button_spacing">49dp</dimen>
+    <dimen name="gesture_tutorial_menu_done_button_top_spacing">24dp</dimen>
+    <dimen name="gesture_tutorial_menu_back_shape_bottom_margin">21dp</dimen>
+
 </resources>
diff --git a/quickstep/res/values-sw720dp/dimens.xml b/quickstep/res/values-sw720dp/dimens.xml
index ceaa8f8..9e832bc 100644
--- a/quickstep/res/values-sw720dp/dimens.xml
+++ b/quickstep/res/values-sw720dp/dimens.xml
@@ -14,14 +14,33 @@
  * limitations under the License.
 */
 -->
+<!-- Applies to large tablet screens -->
 <resources>
-    <!--  Task View  -->
+    <!--  Overview Task Views  -->
+    <!--  The primary task thumbnail uses up to this much of the total screen height/width  -->
+    <item name="overview_max_scale" format="float" type="dimen">0.7</item>
+    <!--  A touch target for icons, sometimes slightly larger than the icons themselves  -->
     <dimen name="task_thumbnail_icon_size">48dp</dimen>
+    <!--  The icon size for the focused task, placed in center of touch target  -->
     <dimen name="task_thumbnail_icon_drawable_size">44dp</dimen>
+    <!--  The space under the focused task icon  -->
     <dimen name="overview_task_margin">16dp</dimen>
+    <!--  The icon size of all non-focused task icons, placed in center of touch target  -->
     <dimen name="task_thumbnail_icon_drawable_size_grid">44dp</dimen>
-    <dimen name="overview_task_margin_grid">16dp</dimen>
+    <!--  The space between grid rows (when there's 2 rows of thumbnails)  -->
     <dimen name="overview_grid_row_spacing">36dp</dimen>
+    <!--  The horizontal space between tasks  -->
     <dimen name="overview_page_spacing">44dp</dimen>
+    <!--  The space to the left and to the right of the "Clear all" button  -->
     <dimen name="overview_grid_side_margin">64dp</dimen>
+
+    <!-- All Set page-->
+    <dimen name="allset_page_allset_text_size">42sp</dimen>
+    <dimen name="allset_page_swipe_up_text_size">16sp</dimen>
+
+    <!-- Taskbar swipe up thresholds -->
+    <dimen name="taskbar_from_nav_threshold">30dp</dimen>
+    <dimen name="taskbar_app_window_threshold">100dp</dimen>
+    <dimen name="taskbar_home_overview_threshold">180dp</dimen>
+    <dimen name="taskbar_catch_up_threshold">300dp</dimen>
 </resources>
diff --git a/quickstep/res/values-ta/strings.xml b/quickstep/res/values-ta/strings.xml
index ebf5eb2..ea39749 100644
--- a/quickstep/res/values-ta/strings.xml
+++ b/quickstep/res/values-ta/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"உங்கள் முகப்புத் திரையின் \'பிடித்தவை\' வரிசையில் ஆப்ஸ் பரிந்துரைகளைப் பெறலாம்"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"அதிகமாகப் பயன்படுத்திய ஆப்ஸை முகப்புத் திரையிலேயே அணுகலாம். உங்கள் வழக்கங்களின் அடிப்படையில் பரிந்துரைகள் மாறும். கடைசி வரிசையிலுள்ள ஆப்ஸ் உங்கள் முகப்புத் திரைக்கு நகர்த்தப்படும்."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"அதிகமாகப் பயன்படுத்திய ஆப்ஸை முகப்புத் திரையிலேயே எளிதாக அணுகலாம். உங்கள் வழக்கங்களின் அடிப்படையில் பரிந்துரைகள் மாறும். பிடித்தவை வரிசையில் உள்ள ஆப்ஸ் உங்கள் முகப்புத் திரைக்கு நகர்த்தப்படும்."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"அதிகமாகப் பயன்படுத்திய ஆப்ஸை முகப்புத் திரையிலேயே அணுகலாம். உங்கள் வழக்கங்களின் அடிப்படையில் பரிந்துரைகள் மாறும். கடைசி வரிசையிலுள்ள ஆப்ஸ் புதிய ஃபோல்டருக்கு நகர்த்தப்படும்."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"ஆப்ஸ் பரிந்துரைகளைப் பெறுக"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"வேண்டாம்"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"அமைப்புகள்"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"பின்செல் சைகையின் உணர்திறனை மாற்ற அமைப்புகளுக்குச் செல்க"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"பின்செல்ல ஸ்வைப் செய்யுங்கள்"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"முந்தைய திரைக்கு மீண்டும் செல்ல, இடது/வலது ஓரத்திலிருந்து திரையின் மையப் பகுதிக்கு ஸ்வைப் செய்க."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"முந்தைய திரைக்கு மீண்டும் செல்ல, 2 விரல்களால் இடது அல்லது வலது ஓரத்திலிருந்து திரையின் மையப் பகுதிக்கு ஸ்வைப் செய்யுங்கள்."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"பின்செல்லுதல்"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"திரையின் கீழ் ஓரத்திலிருந்து மேல்நோக்கி ஸ்வைப் செய்வதை உறுதிசெய்துகொள்ளுங்கள்."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"விடுவிப்பதற்கு முன்பாக இடைநிறுத்தவில்லை என்பதை உறுதிசெய்துகொள்ளுங்கள்."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"மேல்நோக்கி நேராக ஸ்வைப் செய்வதை உறுதிசெய்துகொள்ளுங்கள்."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"முகப்புக்குச் செல் சைகைப் பயிற்சியை முடித்துவிட்டீர்கள்."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"முகப்புக்குச் செல்ல ஸ்வைப் செய்யுங்கள்"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"திரையின் கீழிருந்து மேலாக ஸ்வைப் செய்க. இந்தச் சைகை எப்போதும் முகப்புத் திரைக்கு அழைத்துச் செல்லும்."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"2 விரலால் திரையின் கீழிருந்து மேலாக ஸ்வைப் செய்க. இந்தச் சைகை முகப்புத் திரைக்கு அழைத்துச் செல்லும்."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"முகப்புக்குச் செல்லுதல்"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"எந்தத் திரையிலிருந்தும் முகப்புத் திரைக்குச் செல்ல திரையின் கீழிருந்து மேல்நோக்கி ஸ்வைப் செய்யுங்கள்"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"திரையின் கீழ் ஓரத்திலிருந்து மேல்நோக்கி ஸ்வைப் செய்வதை உறுதிசெய்துகொள்ளுங்கள்."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"விடுவிப்பதற்கு முன்பாக நீண்டநேரம் சாளரத்தை அழுத்திப் பிடித்திருங்கள்."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"மேல்நோக்கி நேராக ஸ்வைப் செய்தபிறகு இடைநிறுத்துவதை உறுதிசெய்துகொள்ளுங்கள்."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"ஆப்ஸுக்கிடையே மாறும் சைகைப் பயிற்சியை முடித்துவிட்டீர்கள்."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"ஆப்ஸுக்கிடையே மாற ஸ்வைப் செய்யுங்கள்"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"ஆப்ஸுக்கு இடையே மாற, திரையின் கீழிலிருந்து மேலாக ஸ்வைப் செய்து, பிடித்திருந்து, பிறகு விடுவிக்கவும்."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"ஆப்ஸுக்கிடையே மாற, திரையின் கீழிருந்து மேலாக 2 விரலால் ஸ்வைப் செய்து, பிடித்து, பிறகு விடுவிக்கவும்."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"ஆப்ஸுக்கிடையே மாறுதல்"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"எல்லாம் தயார்"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"முடிந்தது"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"அமைப்புகள்"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"அருமை!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"பயிற்சி <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"அனைத்தையும் அமைத்துவிட்டீர்கள்!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"முகப்புத் திரைக்குச் செல்ல மேல்நோக்கி ஸ்வைப் செய்யுங்கள்"</string>
-    <string name="allset_description" msgid="6350320429953234580">"மொபைலைப் பயன்படுத்தத் தயாராகிவிட்டீர்கள்"</string>
+    <string name="allset_hint" msgid="459504134589971527">"முகப்புக்குச் செல்ல மேல்நோக்கி ஸ்வைப் செய்யுங்கள்"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"முகப்புத் திரைக்குச் செல்வதற்கு முகப்பு பட்டனைத் தட்டவும்"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"உங்கள் <xliff:g id="DEVICE">%1$s</xliff:g> சாதனத்தைப் பயன்படுத்தத் தயாராகிவிட்டீர்கள்"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"சாதனம்"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"சிஸ்டம் வழிசெலுத்தல் அமைப்புகள்"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"பகிர்"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"ஸ்கிரீன்ஷாட்"</string>
     <string name="action_split" msgid="2098009717623550676">"பிரி"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"ஸ்பிளிட் ஸ்கிரீனுக்கு மற்றொரு ஆப்ஸைத் தட்டவும்"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"திரைப் பிரிப்பு அம்சத்தை ஆப்ஸ் ஆதரிக்கவில்லை."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"திரைப் பிரிப்பைப் பயன்படுத்த வேறு ஆப்ஸைத் தட்டவும்"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"திரைப் பிரிப்பை பயன்படுத்த வேறு ஆப்ஸை தேர்வுசெய்க"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"ஆப்ஸோ உங்கள் நிறுவனமோ இந்த செயலை அனுமதிப்பதில்லை"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"வழிகாட்டுதல் பயிற்சியைத் தவிர்க்கவா?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"<xliff:g id="NAME">%1$s</xliff:g> ஆப்ஸில் பிறகு இதைக் கண்டறியலாம்"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"ரத்துசெய்"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"தவிர்"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"திரையைச் சுழற்றும்"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"பணிப்பட்டியை எவ்வாறு பயன்படுத்துவது என்பது பற்றிய பலகம் காட்டப்படுகிறது"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"பணிப்பட்டியை எவ்வாறு பயன்படுத்துவது என்பது பற்றிய பலகம் மூடப்பட்டது"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"ஆப்ஸிற்கு இடையே மாற பணிப்பட்டியைப் பயன்படுத்தவும்"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"ஒரே நேரத்தில் இரு ஆப்ஸை உபயோகிக்க பக்கவாட்டிற்கு இழுக்கவும்"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"பணிப்பட்டியை மறைக்கத் தொட்டுப் பிடிக்கவும்"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"அடுத்து"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"பின்செல்"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"செயல் பட்டியைப் பயன்படுத்தும் விதம்"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"ஒரே நேரத்தில் 2 ஆப்ஸைப் பயன்படுத்தப் பக்கவாட்டில் இழுக்கவும்"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"செயல் பட்டியைக் காட்ட மேல்நோக்கி மெதுவாக ஸ்வைப் செய்யவும்"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"உங்கள் வழக்கத்திற்கேற்ப ஆப்ஸ் பரிந்துரைகளைப் பெறலாம்"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"செயல் பட்டியைத் தானாக மறைக்க அமைப்புகளில் சைகை வழிசெலுத்தலை இயக்கவும்"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"செயல் பட்டி மூலம் மேலும் பலவற்றைச் செய்யுங்கள்"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"மூடுக"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"முடிந்தது"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"முகப்பு"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"சமீபத்தியவை"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"அறிவிப்புகள்"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"விரைவு அமைப்புகள்"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"செயல் பட்டி"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"செயல் பட்டி காட்டப்படுகிறது"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"செயல் பட்டி மறைக்கப்பட்டுள்ளது"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"வழிசெலுத்தல் பட்டி"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"செயல் பட்டியை எப்போதும் காட்டு"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"வழிசெலுத்தல் பயன்முறையை மாற்று"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"செயல் பட்டிப் பிரிப்பான்"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"மேலே/இடதுபுறம் நகர்த்தும்"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"கீழே/வலதுபுறம் நகர்த்தும்"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{மேலும் # ஆப்ஸைக் காட்டு.}other{மேலும் # ஆப்ஸைக் காட்டு.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> மற்றும் <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-te/strings.xml b/quickstep/res/values-te/strings.xml
index 8f43b3c..9cdd2fa 100644
--- a/quickstep/res/values-te/strings.xml
+++ b/quickstep/res/values-te/strings.xml
@@ -19,7 +19,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="recent_task_option_pin" msgid="7929860679018978258">"పిన్ చేయి"</string>
+    <string name="recent_task_option_pin" msgid="7929860679018978258">"పిన్ చేయండి"</string>
     <string name="recent_task_option_freeform" msgid="48863056265284071">"సంప్రదాయేతర"</string>
     <string name="recents_empty_message" msgid="7040467240571714191">"ఇటీవలి అంశాలు ఏవీ లేవు"</string>
     <string name="accessibility_app_usage_settings" msgid="6312864233673544149">"యాప్ వినియోగ సెట్టింగ్‌లు"</string>
@@ -29,13 +29,12 @@
     <string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
     <string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"&lt; 1 నిమిషం"</string>
     <string name="time_left_for_app" msgid="3111996412933644358">"నేటికి <xliff:g id="TIME">%1$s</xliff:g> మిగిలి ఉంది"</string>
-    <string name="title_app_suggestions" msgid="4185902664111965088">"యాప్ సలహాలు"</string>
+    <string name="title_app_suggestions" msgid="4185902664111965088">"యాప్ సూచనలు"</string>
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"మీ సూచించబడిన యాప్‌లు"</string>
     <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"మీ మొదటి స్క్రీన్‌ దిగువ వరుసలో యాప్ సలహాలను పొందండి"</string>
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"మీ హోమ్ స్క్రీన్‌లోని ఇష్టమైన వాటి వరుసలో యాప్ సూచ‌న‌లు పొందండి"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"మీరు ఎక్కువగా ఉపయోగించే యాప్‌లను నేరుగా మొదటి స్క్రీన్‌లోనే సులభంగా యాక్సెస్ చేయండి. మీ రోజువారీ యాక్టివిటీలను బట్టి సూచనలు మారతాయి. దిగువ వరుసలోని యాప్‌లు మీ మొదటి స్క్రీన్ పైకి చేరుకుంటాయి."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"మీరు ఎక్కువగా ఉపయోగించే యాప్‌లను నేరుగా మొదటి స్క్రీన్‌లోనే సులభంగా యాక్సెస్ చేయండి. మీ రోజువారీ యాక్టివిటీలను బట్టి సూచనలు మారతాయి. ఇష్టమైన వాటి వరుసలోని యాప్‌లు మీ మొదటి స్క్రీన్‌కు చేరుకుంటాయి."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"మీరు ఎక్కువగా ఉపయోగించే యాప్‌లను నేరుగా మొదటి స్క్రీన్‌లోనే సులభంగా యాక్సెస్ చేయండి. మీ రోజువారీ యాక్టివిటీలను బట్టి సూచనలు మారతాయి. దిగువ వరుసలోని యాప్‌లు కొత్త ఫోల్డర్‌కు తరలించబడతాయి."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"యాప్ సూచ‌న‌లను పొందండి"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"వద్దు"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"సెట్టింగ్‌లు"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"వెనుక సంజ్ఞ సున్నితత్వం మార్చడానికి, సెట్టింగ్‌లకు వెళ్లండి"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"వెనుకకు వెళ్ళడం కోసం స్వైప్ చేయండి"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"మునుపటి స్క్రీన్‌కు తిరిగి వెళ్లడానికి, ఎడమ లేదా కుడి అంచు నుండి స్క్రీన్ మధ్యలోకి స్వైప్ చేయండి."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"గత స్క్రీన్‌కు తిరిగి వెళ్లడానికి, ఎడమ లేదా కుడి అంచు నుండి స్క్రీన్ మధ్యలోకి 2 వేళ్లతో స్వైప్ చేయండి."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"వెనుకకు వెళ్లండి"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"మీరు స్క్రీన్ దిగువ అంచు నుండి పైకి స్వయిప్ చేస్తున్నారని నిర్ధారించుకోండి."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"బయలుదేరే ముందు మీరు పాజ్ చేయకుండా చూసుకోండి."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"మీరు నేరుగా పైకి స్వైప్ చేశారని నిర్ధారించుకోండి."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"మీరు మొదటి ట్యాబ్‌కు వెళ్లే సంజ్ఞను పూర్తి చేశారు."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"మొదటి స్క్రీన్‌కు వెళ్లడానికి స్వైప్ చేయండి"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"స్క్రీన్ కింది నుండి పైకి స్వైప్ చేయండి. ఈ సంజ్ఞ ఎప్పుడూ మిమ్మల్ని మొదటి స్క్రీన్‌కు తీసుకెళ్తుంది."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"స్క్రీన్ కింది నుండి 2 వేళ్లతో పైకి స్వైప్ చేయండి. సంజ్ఞ ఎల్లప్పుడూ మొదటి స్క్రీన్‌కు తీసుకెళ్తుంది."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"మొదటి ట్యాబ్‌కు వెళ్లండి"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"ఎప్పుడైనా మీ మొదటి స్క్రీన్‌కు వెళ్లడానికి, మీ స్క్రీన్ దిగువ భాగం నుండి పైకి స్వైప్ చేయండి"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"మీరు స్క్రీన్ దిగువ అంచు నుండి పైకి స్వయిప్ చేస్తున్నారని నిర్ధారించుకోండి."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"రిలీజ్ చేయడానికి ముందు విండోను ఎక్కువసేపు పట్టుకోడానికి ట్రై చేయండి."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"మీరు నేరుగా స్వైప్ చేశారని నిర్ధారించుకోండి, ఆపై పాజ్ చేయండి."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"మీరు \'యాప్‌ల మధ్య మార్పు\' సంజ్ఞను పూర్తి చేశారు."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"యాప్‌ల మధ్య మార్చడం కోసం స్వైప్ చేయండి"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"యాప్‌ల మధ్య మారడానికి, మీ స్క్రీన్ కింది వైపు నుండి పైకి స్వైప్ చేసి, పట్టుకుని, తర్వాత వదలండి."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"యాప్‌ల మధ్య మారడానికి, మీ స్క్రీన్ కింది నుండి 2 వేళ్లతో పైకి స్వైప్ చేసి, నొక్కి పట్టి, వదలండి."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"యాప్‌ల మధ్య మారండి"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"అంతా సిద్ధంగా ఉంది"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"పూర్తయింది"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"సెట్టింగ్‌లు"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"పనితీరు బాగుంది!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"ట్యుటోరియల్ <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"అంతా సెట్ అయింది!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"మొదటి స్క్రీన్‌కు వెళ్లడానికి పైకి స్వైప్ చేయండి"</string>
-    <string name="allset_description" msgid="6350320429953234580">"మీరు మీ ఫోన్‌ను ఉపయోగించడానికి సిద్ధంగా ఉన్నారు"</string>
+    <string name="allset_hint" msgid="459504134589971527">"హోమ్‌కు వెళ్లడానికి పైకి స్వైప్ చేయండి"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"మీ మొదటి స్క్రీన్‌కు వెళ్లడానికి హోమ్ బటన్‌ను ట్యాప్ చేయండి"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"మీరు ఇప్పుడు మీ <xliff:g id="DEVICE">%1$s</xliff:g>‌ను ఉపయోగించడం ప్రారంభించవచ్చు"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"పరికరం"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"సిస్టమ్ నావిగేషన్ సెట్టింగ్‌లు"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"షేర్ చేయండి"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"స్క్రీన్‌షాట్"</string>
     <string name="action_split" msgid="2098009717623550676">"స్ప్లిట్ చేయండి"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"స్క్రీన్ విభజనను ఉపయోగించడానికి మరొక యాప్ నొక్కండి"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"యాప్‌లో స్ప్లిట్-స్క్రీన్ పని చేయదు."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"స్ప్లిట్ స్క్రీన్ కోసం మరొక యాప్‌ను ట్యాప్ చేయండి"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"స్ప్లిట్ స్క్రీన్ ఉపయోగానికి మరొక యాప్ ఎంచుకోండి"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"ఈ చర్యను యాప్ గానీ, మీ సంస్థ గానీ అనుమతించవు"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"నావిగేషన్ ట్యుటోరియల్‌ను స్కిప్ చేయాలా?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"<xliff:g id="NAME">%1$s</xliff:g> యాప్‌లో మీరు తర్వాత కనుగొనవచ్చు"</string>
-    <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"రద్దు చేయి"</string>
-    <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"స్కిప్ చేయి"</string>
+    <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"రద్దు చేయండి"</string>
+    <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"స్కిప్ చేయండి"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"స్క్రీన్‌ను తిప్పండి"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"టాస్క్‌బార్ శిక్షణకు సంబంధించిన ప్యానెల్ కనిపించింది"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"టాస్క్‌బార్ శిక్షణకు సంబంధించిన ప్యానెల్ మూసివేయబడింది"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"యాప్‌లను స్విచ్ చేయడానికి టాస్క్‌బార్‌ను ఉపయోగించండి"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"ఒకేసారి రెండు యాప్‌లను ఉపయోగించడానికి పక్కకు లాగండి"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"టాస్క్‌బార్‌ను దాచడానికి తాకి, నొక్కి ఉంచండి"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"తర్వాత"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"వెనుకకు"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"టాస్క్‌బార్ ఎడ్యుకేషన్"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"ఒకేసారి 2 యాప్‌లను ఉపయోగించడానికి యాప్‌ను పక్కకు లాగండి"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"టాస్క్‌బార్‌ను చూపడానికి నెమ్మదిగా పైకి స్వైప్ చేయండి"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"మీ రొటీన్ ఆధారంగా యాప్ సూచనలను పొందండి"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"టాస్క్‌బార్‌ను ఆటోమేటిక్‌గా దాచడానికి, సెట్టింగ్‌లలో సంజ్ఞ నావిగేషన్‌ను ఆన్ చేయండి"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"టాస్క్‌బార్‌తో మరిన్ని చేయండి"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"మూసివేయండి"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"పూర్తయింది"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"మొదటి ట్యాబ్"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"ఇటీవలివి"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"నోటిఫికేషన్‌లు"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"క్విక్ సెట్టింగ్‌లు"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"టాస్క్‌బార్"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"టాస్క్‌బార్ చూపబడింది"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"టాస్క్‌బార్ దాచబడింది"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"నావిగేషన్ బార్"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"ఎప్పుడూ టాస్క్‌బార్ చూపించండి"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"నావిగేషన్ మోడ్‌ను మార్చండి"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"టాస్క్‌బార్ డివైడర్"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"ఎగువ/ఎడమ వైపునకు తరలించండి"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"దిగువ/కుడి వైపునకు తరలించండి"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{మరో # యాప్‌ను చూడండి.}other{మరో # యాప్‌లను చూడండి.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g>, <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-th/strings.xml b/quickstep/res/values-th/strings.xml
index 62ab2d2..fe8e37f 100644
--- a/quickstep/res/values-th/strings.xml
+++ b/quickstep/res/values-th/strings.xml
@@ -33,9 +33,8 @@
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"แอปที่คาดการณ์ไว้"</string>
     <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"ดูแอปแนะนำที่แถวล่างของหน้าจอหลัก"</string>
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"รับคำแนะนำเกี่ยวกับแอปในแถวรายการโปรดของหน้าจอหลัก"</string>
-    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"เข้าถึงแอปที่คุณใช้มากที่สุดได้อย่างง่ายดายจากหน้าจอหลัก คำแนะนำจะเปลี่ยนไปตามแอปที่ใช้งานเป็นประจำ แอปในแถวล่างจะย้ายขึ้นมาอยู่ในหน้าจอหลัก"</string>
-    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"เข้าถึงแอปที่ใช้มากที่สุดได้อย่างง่ายดายในหน้าจอหลัก คำแนะนำจะเปลี่ยนไปตามการใช้งานประจำ แอปในแถวรายการโปรดจะย้ายไปอยู่ในหน้าจอหลัก"</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"เข้าถึงแอปที่คุณใช้มากที่สุดได้อย่างง่ายดายจากหน้าจอหลัก คำแนะนำจะเปลี่ยนไปตามแอปที่ใช้งานเป็นประจำ แอปในแถวล่างจะย้ายไปอยู่ในโฟลเดอร์ใหม่"</string>
+    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"เข้าถึงแอปที่คุณใช้มากที่สุดได้อย่างง่ายดายจากหน้าจอหลัก การแนะนำจะเปลี่ยนไปตามแอปที่ใช้งานเป็นประจำ แอปในแถวล่างจะย้ายขึ้นมาอยู่ในหน้าจอหลัก"</string>
+    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"เข้าถึงแอปที่คุณใช้มากที่สุดได้อย่างง่ายดายจากหน้าจอหลัก การแนะนำจะเปลี่ยนไปตามแอปที่ใช้งานเป็นประจำ แอปในแถวรายการโปรดจะย้ายไปอยู่ในหน้าจอหลัก"</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"ดูแอปแนะนำ"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"ไม่เป็นไร"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"การตั้งค่า"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"เปลี่ยนความไวของท่าทางสัมผัสเพื่อย้อนกลับได้ที่การตั้งค่า"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"ปัดเพื่อย้อนกลับ"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"หากต้องการย้อนกลับไปที่หน้าจอล่าสุด ให้ปัดจากขอบด้านซ้ายหรือขวาไปตรงกลางหน้าจอ"</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"หากต้องการย้อนกลับไปที่หน้าจอล่าสุด ให้ใช้ 2 นิ้วปัดจากขอบด้านซ้ายหรือขวาไปตรงกลางหน้าจอ"</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"กลับ"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"ปัดขึ้นจากขอบด้านล่างของหน้าจอ"</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"ตรวจสอบว่าไม่มีการหยุดชั่วคราวก่อนยกนิ้วขึ้น"</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"ตรวจสอบว่าปัดขึ้นในแนวตรง"</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"คุณทำท่าทางสัมผัสเพื่อไปที่หน้าแรกเสร็จแล้ว"</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"ปัดเพื่อไปที่หน้าแรก"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"ปัดขึ้นจากด้านล่างของหน้าจอ ท่าทางสัมผัสนี้จะนำคุณไปที่หน้าจอหลักเสมอ"</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"ใช้ 2 นิ้วปัดขึ้นจากด้านล่างของหน้าจอ ท่าทางสัมผัสนี้จะนำคุณไปที่หน้าจอหลักเสมอ"</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"ไปที่หน้าแรก"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"ปัดขึ้นจากด้านล่างของหน้าจอเพื่อไปที่หน้าจอหลักได้ทุกเมื่อ"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"ปัดขึ้นจากขอบด้านล่างของหน้าจอ"</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"ลองแตะหน้าต่างค้างไว้นานขึ้นก่อนปล่อยนิ้ว"</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"ตรวจสอบว่าปัดขึ้นในแนวตรง แล้วหยุดชั่วคราว"</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"คุณทำท่าทางสัมผัสเพื่อสลับแอปเสร็จแล้ว"</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"ปัดเพื่อสลับแอป"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"หากต้องการสลับระหว่างแอปต่างๆ ให้ปัดขึ้นจากด้านล่างของหน้าจอ ค้างไว้ แล้วปล่อย"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"หากต้องการสลับระหว่างแอป ให้ใช้ 2 นิ้วปัดขึ้นจากด้านล่างของหน้าจอค้างไว้แล้วปล่อย"</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"เปลี่ยนแอป"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"เรียบร้อย"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"เสร็จสิ้น"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"การตั้งค่า"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"ดีมาก"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"บทแนะนำ <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"เรียบร้อยแล้ว"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"ปัดขึ้นเพื่อไปที่หน้าแรก"</string>
-    <string name="allset_description" msgid="6350320429953234580">"คุณเริ่มใช้โทรศัพท์ได้แล้ว"</string>
+    <string name="allset_hint" msgid="459504134589971527">"ปัดขึ้นเพื่อไปที่หน้าแรก"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"แตะปุ่มหน้าแรกเพื่อไปที่หน้าจอหลัก"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"คุณเริ่มใช้<xliff:g id="DEVICE">%1$s</xliff:g>ได้แล้ว"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"อุปกรณ์"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"การตั้งค่าการนำทางของระบบ"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"แชร์"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"ภาพหน้าจอ"</string>
     <string name="action_split" msgid="2098009717623550676">"แยก"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"แตะที่แอปอื่นเพื่อใช้แบ่งหน้าจอ"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"แอปไม่รองรับการแบ่งหน้าจอ"</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"แตะแอปอื่นเพื่อใช้การแยกหน้าจอ"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"เลือกแอปอื่นเพื่อใช้การแยกหน้าจอ"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"แอปหรือองค์กรของคุณไม่อนุญาตการดำเนินการนี้"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"ข้ามบทแนะนำการนำทางไหม"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"คุณดูบทแนะนำนี้ได้ภายหลังในแอป \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"ยกเลิก"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"ข้าม"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"หมุนหน้าจอ"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"แถบงาน Education ปรากฎขึ้น"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"ปิดแถบงาน Education แล้ว"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"ใช้แถบงานเพื่อเปลี่ยนแอป"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"ลากไปด้านข้างเพื่อใช้ 2 แอปพร้อมกัน"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"แตะค้างไว้เพื่อซ่อนแถบงาน"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"ถัดไป"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"กลับ"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"แถบงาน Education"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"ลากแอปไปด้านข้างเพื่อใช้ 2 แอปพร้อมกัน"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"ปัดขึ้นช้าๆ เพื่อแสดงแถบงาน"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"รับคำแนะนำเกี่ยวกับแอปตามกิจวัตรของคุณ"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"เปิดการนำทางด้วยท่าทางสัมผัสในการตั้งค่าเพื่อซ่อนแถบงานโดยอัตโนมัติ"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"ทำสิ่งต่างๆ ได้มากขึ้นด้วยแถบงาน"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"ปิด"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"เสร็จ"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"หน้าแรก"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"ล่าสุด"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"การแจ้งเตือน"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"การตั้งค่าด่วน"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"แถบงาน"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"แถบงานแสดงอยู่"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"แถบงานซ่อนอยู่"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"แถบนำทาง"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"แสดงแถบงานเสมอ"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"เปลี่ยนโหมดการนําทาง"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"ตัวแบ่งแถบงาน"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"ย้ายไปที่ด้านบนหรือด้านซ้าย"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"ย้ายไปที่ด้านล่างหรือด้านขวา"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{แสดงเพิ่มเติมอีก # แอป}other{แสดงเพิ่มเติมอีก # แอป}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> และ <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-tl/strings.xml b/quickstep/res/values-tl/strings.xml
index 3ecae96..bf62a38 100644
--- a/quickstep/res/values-tl/strings.xml
+++ b/quickstep/res/values-tl/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Makakuha ng mga iminumungkahing app sa row ng mga paborito ng iyong Home screen"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Madaling ma-access ang mga pinakaginagamit mong app nang direkta sa Home screen. Magbabago ang mga suhestyon batay sa iyong mga routine. Mapupunta sa iyong Home screen ang mga app na nasa ibabang row."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Madaling ma-access ang mga pinakaginagamit mong app nang direkta sa Home screen. Magbabago ang mga suhestyon batay sa iyong mga routine. Mapupunta sa iyong Home screen ang mga app sa row ng mga paborito."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Madaling ma-access ang mga pinakaginagamit mong app, direkta sa Home screen. Magbabago ang mga suhestyon batay sa iyong mga routine. Mapupunta sa isang bagong folder ang mga app na nasa ibabang row."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Kumuha ng mga suhestiyon sa app"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Huwag na lang"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Mga Setting"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Pumunta sa Settings para baguhin ang sensitivity ng pagbalik"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Mag-swipe para bumalik"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Para bumalik sa nakaraang screen, mag-swipe mula sa kaliwa o kanang gilid patungo sa gitna ng screen."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Para bumalik sa huling screen, mag-swipe gamit ang 2 daliri mula sa kaliwa o kanang gilid hanggang sa gitna ng screen."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Bumalik"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Tiyaking magsa-swipe ka pataas mula sa pinakaibaba ng screen."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Tiyaking hindi ka magpo-pause bago iangat ang iyong daliri."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Tiyaking magsa-swipe ka nang diretso pataas."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Nakumpleto mo na ang galaw para pumunta sa Home."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Mag-swipe para pumunta sa home"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Mag-swipe pataas mula sa ibaba ng iyong screen. Dadalhin ka palagi ng galaw na ito sa Home screen."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Mag-swipe pataas gamit ang 2 daliri mula sa ibaba ng screen. Dadalhin ka palagi nito sa Home screen."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Pumunta sa home"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Para pumunta sa iyong home screen anumang oras, mag-swipe pataas mula sa ibaba ng screen mo"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Tiyaking magsa-swipe ka pataas mula sa pinakaibaba ng screen."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Subukang pindutin nang mas matagal ang window bago ito bitawan."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Tiyaking magsa-swipe ka nang diretso pataas, pagkatapos ay mag-pause."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Nakumpleto mo na ang galaw para magpalipat-lipat sa mga app."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Mag-swipe para lumipat ng app"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Para lumipat ng app, mag-swipe pataas mula sa ibaba ng iyong screen, mag-hold, at iangat ang daliri."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Para lumipat ng app, mag-swipe pataas gamit ang 2 daliri mula sa ibaba, mag-hold, at bumitaw."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Lumipat ng app"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Handa na ang lahat"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Tapos na"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Mga Setting"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Magaling!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Tutorial <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Handa na ang lahat!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Mag-swipe pataas para pumunta sa Home"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Handa mo nang simulan ang paggamit sa iyong telepono"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Mag-swipe pataas para pumunta sa home"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"I-tap ang button ng home para pumunta sa iyong home screen"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Handa mo nang simulan ang paggamit sa iyong <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"device"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Mga setting ng navigation ng system"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Ibahagi"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Screenshot"</string>
     <string name="action_split" msgid="2098009717623550676">"Split"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Mag-tap ng ibang app para gamitin ang splitscreen"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Hindi sinusuportahan ng app ang split-screen."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Mag-tap ng ibang app para gamitin ang split screen"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Pumili ng ibang app para gamitin ang split screen"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Hindi pinapayagan ng app o ng iyong organisasyon ang pagkilos na ito"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Laktawan ang tutorial sa pag-navigate?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Makikita mo ito sa <xliff:g id="NAME">%1$s</xliff:g> app sa ibang pagkakataon"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Kanselahin"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Laktawan"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"I-rotate ang screen"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Lumabas ang edukasyon sa taskbar"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Sarado ang edukasyon sa taskbar"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Gamitin ang taskbar para magpalipat-lipat sa mga app"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"I-drag sa gilid para makagamit ng dalawang app nang sabay"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Pindutin nang matagal para itago ang taskbar"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Susunod"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Bumalik"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Impormasyon sa taskbar"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Mag-drag ng app sa gilid para makagamit ng 2 app nang sabay"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Mag-swipe nang mabagal pataas para ipakita ang Taskbar"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Makakuha ng mga iminumungkahing app batay sa iyong routine"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"I-on ang navigation gamit ang galaw sa Mga Setting para i-auto hide ang Taskbar"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Mas maraming magawa gamit ang Taskbar"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Isara"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Tapos na"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Home"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Bumalik"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME switcher"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Mga Kamakailan"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Mga Notification"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Quick Settings"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Taskbar"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Ipinapakita ang taskbar"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Nakatago ang taskbar"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigation bar"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Palaging ipakita ang Taskbar"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Magpalit ng navigation mode"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Divider ng Taskbar"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Ilipat sa itaas/kaliwa"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Ilipat sa ibaba/kanan"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Magpakita ng # pang app.}one{Magpakita ng # pang app.}other{Magpakita ng # pang app.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> at <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-tr/strings.xml b/quickstep/res/values-tr/strings.xml
index 19ced47..772ad8b 100644
--- a/quickstep/res/values-tr/strings.xml
+++ b/quickstep/res/values-tr/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Ana ekranınızın favoriler satırında uygulama önerileri alın"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"En çok kullanılan uygulamalarınıza Ana ekranda kolayca erişin. Öneriler, rutinlerinize dayalı olarak değişir. Alt satırdaki uygulamalar, yukarı taşınarak Ana ekranınıza alınır."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"En çok kullanılan uygulamalarınıza Ana ekrandan kolayca erişin. Öneriler rutinlerinize dayalı olarak değişir. Favoriler satırındaki uygulamalar Ana ekranınıza taşınır."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"En çok kullanılan uygulamalarınıza Ana ekranda kolayca erişin. Öneriler, rutinlerinize dayalı olarak değişir. Alt satırdaki uygulamalar yeni bir klasöre taşınır."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Uygulama önerileri al"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Hayır, teşekkürler"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Ayarlar"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Geri hareketinin hassasiyetini değiştirmek için Ayarlar\'a gidin"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Geri dönmek için kaydırma"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Son ekrana geri gitmek için sol veya sağ kenardan ekranın ortasına doğru kaydırın."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Son ekrana geri gitmek için sol veya sağ kenardan ekranın ortasına doğru 2 parmağınızla kaydırın."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Geri dönme"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Ekranın alt kenarından yukarı kaydırdığınızdan emin olun."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Bırakmadan önce parmağınızı duraklatmadığınızdan emin olun."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Düz bir şekilde yukarı kaydırdığınızdan emin olun."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Ana ekrana git hareketini tamamladınız."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Ana ekrana gitmek için kaydırma"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Ekranın alt kısmından yukarıya doğru kaydırın. Bu hareket sizi her zaman Ana ekrana götürür."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Ekranın alt kısmından 2 parmağınızla yukarı kaydırın. Bu hareket sizi her zaman Ana ekrana götürür."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Ana sayfaya gidin"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"İstediğiniz zaman ana ekrana gitmek için ekranınızın altından yukarı doğru kaydırın"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Ekranın alt kenarından yukarı kaydırdığınızdan emin olun."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Bırakmadan önce pencereyi daha uzun süre tutmayı deneyin."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Düz bir şekilde yukarı kaydırıp ardından parmağınızı duraklattığınızdan emin olun."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Uygulamalar arasında geçiş yapma hareketini tamamladınız."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Uygulamalar arasında geçiş yapmak için kaydırma"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Uygulamalar arasında geçiş yapmak için ekranınızın altından yukarı kaydırıp basılı tutun ve sonra bırakın."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Uygulamalara geçiş yapmak için ekranın altından 2 parmakla yukarı kaydırıp basılı tutun ve bırakın."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Uygulamalar arasında geçiş yapma"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Hepsi bu kadar"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Bitti"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Ayarlar"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Güzel!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Eğitim <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"İşlem tamam!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Ana ekrana gitmek için yukarı kaydırın"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Telefonunuzu kullanmaya hazırsınız"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Ana ekrana gitmek için yukarı kaydırın"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Ana ekranınıza gitmek için ana sayfa düğmesine dokunun"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"<xliff:g id="DEVICE">%1$s</xliff:g> cihazınızı kullanmaya hazırsınız"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"cihaz"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Sistem gezinme ayarları"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Paylaş"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Ekran görüntüsü"</string>
     <string name="action_split" msgid="2098009717623550676">"Böl"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Bölünmüş ekran için başka bir uygulamaya dokunun"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Uygulama bölünmüş ekranı desteklemiyor."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Bölünmüş ekran için başka bir uygulamaya dokunun"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Bölünmüş ekran kullanmak için başka bir uygulama seçin"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Uygulamanız veya kuruluşunuz bu işleme izin vermiyor"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Gezinme eğitimi atlansın mı?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Bunu daha sonra <xliff:g id="NAME">%1$s</xliff:g> uygulamasında bulabilirsiniz"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"İptal"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Atla"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Ekranı döndür"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Görev çubuğu eğitimi görüntülendi"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Görev çubuğu eğitimi kapatıldı"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Görev çubuğundan uygulamalar arasında geçiş yapabilirsiniz"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Tek seferde iki uygulamayı kullanmak için yana sürükleyin"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Görev çubuğunu gizlemek için basılı tutun"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"İleri"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Geri"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Görev çubuğu eğitimi"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Aynı anda iki uygulama kullanmak için birini yana sürükleyin"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Görev çubuğunu göstermek için yukarı doğru yavaşça kaydırın"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Rutininize göre uygulama önerileri alın"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Görev çubuğunu otomatik olarak gizlemek için Ayarlar\'dan hareketle gezinmeyi etkinleştirin"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Görev çubuğuyla daha fazla şey yapın"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Kapat"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Bitti"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Ana ekran"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Geri"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME değiştirici"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Son Kullanılanlar"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Bildirimler"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Hızlı Ayarlar"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Görev çubuğu."</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Görev çubuğu gösteriliyor"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Görev çubuğu gizlendi"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Gezinme çubuğu"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Görev çubuğunu daima göster"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Gezinme modunu değiştir"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Görev Çubuğu Ayırıcısı"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Sol üste taşı"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Sağ alta taşı"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{# uygulama daha göster.}other{# uygulama daha göster}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> ve <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-uk/strings.xml b/quickstep/res/values-uk/strings.xml
index 231d128..0104798 100644
--- a/quickstep/res/values-uk/strings.xml
+++ b/quickstep/res/values-uk/strings.xml
@@ -31,11 +31,10 @@
     <string name="time_left_for_app" msgid="3111996412933644358">"Сьогодні залишилося <xliff:g id="TIME">%1$s</xliff:g>"</string>
     <string name="title_app_suggestions" msgid="4185902664111965088">"Рекомендовані додатки"</string>
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"Передбачені додатки"</string>
-    <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Рекомендовані додатки з\'являтимуться в нижньому рядку головного екрана"</string>
+    <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Переглядайте рекомендовані додатки внизу головного екрана"</string>
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Рекомендовані додатки з\'являтимуться в рядку \"Вибране\" на головному екрані"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"З легкістю відкривайте на головному екрані ті додатки, які використовуєте найчастіше. Рекомендації змінюватимуться залежно від ваших дій. Додатки в нижньому рядку перемістяться на головний екран."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"З легкістю відкривайте найпотрібніші додатки просто з головного екрана. Рекомендації змінюватимуться залежно від ваших дій. Додатки з рядка \"Вибране\" буде переміщено на головний екран."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"З легкістю відкривайте найвикористовуваніші додатки просто з головного екрана. Рекомендації змінюватимуться залежно від ваших дій. Додатки в нижньому рядку буде переміщено в нову папку."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Показувати рекомендації"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Не потрібно"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Налаштування"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Щоб змінити чутливість жесту \"Назад\", відкрийте налаштування"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Щоб повернутися, проведіть пальцем по екрану"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Щоб перейти на попередній екран, проведіть пальцем від лівого чи правого краю до середини екрана."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Щоб перейти на попередній екран, проведіть двома пальцями від лівого чи правого краю до середини екрана."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Повернення на попередній екран"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Проведіть пальцем угору від нижнього краю екрана."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Не робіть паузу перед тим, як відірвати палець від екрана."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Проводьте пальцем вертикально вгору."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Ви виконали жест переходу на головний екран."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Проведіть пальцем, щоб перейти на головний екран"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Проведіть пальцем по екрану знизу вгору. Цей жест завжди повертатиме вас на головний екран."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Проведіть двома пальцями вгору від низу екрана. Цей жест завжди спрямовує вас на головний екран."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Перейти на головний екран"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Щоб будь-коли перейти на головний екран, проведіть пальцем вгору від низу екрана"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Проведіть пальцем угору від нижнього краю екрана."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Спробуйте втримувати вікно довше, перш ніж відпустити."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Проведіть пальцем вертикально вгору, а тоді зробіть паузу."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Ви виконали жест переходу в інший додаток."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Проведіть пальцем, щоб перейти в інший додаток"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Щоб переключатися між додатками, проведіть знизу вгору по екрану, утримуйте палець, а потім відпустіть."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Щоб перейти в інший додаток, проведіть 2 пальцями від низу екрана, потримайте й відпустіть палець."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Перемикання між додатками"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Усе готово!"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Готово"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Налаштування"</string>
@@ -74,38 +80,46 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Чудово!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Навчальний посібник <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Готово."</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Щоб перейти на головний екран, проведіть пальцем угору"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Тепер ви можете користуватися телефоном"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Щоб перейти на головний екран, проведіть пальцем угору"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Натисніть кнопку головного екрана, щоб відкрити його"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Тепер ви можете користуватися цим пристроєм: <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"пристрій"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Системні налаштування навігації"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Поділитися"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Знімок екрана"</string>
     <string name="action_split" msgid="2098009717623550676">"Розділити"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Щоб розділити екран, виберіть ще один додаток"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Додаток не підтримує розділення екрана."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Щоб розділити екран, виберіть ще один додаток"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Щоб розділити екран, виберіть ще один додаток"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Ця дія заборонена додатком або адміністратором організації"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Пропустити посібник із навігації?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Ви знайдете його пізніше в додатку <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Скасувати"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Пропустити"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Обернути екран"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Панель завдань Education відкрито"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Панель завдань Education закрито"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Переходьте між додатками за допомогою панелі завдань"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Перетягніть убік, щоб використовувати два додатки одночасно"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Натисніть і втримуйте панель завдань, щоб сховати її"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Далі"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Назад"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Панель завдань Education"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Перетягніть убік, щоб використовувати 2 додатки одночасно"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Щоб відкрити панель завдань, повільно проведіть угору"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Отримуйте рекомендації додатків залежно від їх використання"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Увімкніть навігацію жестами в налаштуваннях, щоб автоматично приховувати панель завдань"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Більше можливостей завдяки панелі завдань"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Закрити"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Готово"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Головний екран"</string>
-    <string name="taskbar_button_a11y" msgid="5241161324875094465">"Спеціальні можливості"</string>
+    <string name="taskbar_button_a11y" msgid="5241161324875094465">"Доступність"</string>
     <string name="taskbar_button_back" msgid="8558862226461164514">"Назад"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"Перемикач IME"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Нещодавні"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Сповіщення"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Швидкі налаштув."</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Панель завдань"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Панель завдань показано"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Панель завдань приховано"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Панель навігації"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Завжди показув. панель завдань"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Змінити режим навігації"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Розділювач панелі завдань"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Перемістити вгору або вліво"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Перемістити вниз або вправо"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Показати ще # додаток.}one{Показати ще # додаток.}few{Показати ще # додатки.}many{Показати ще # додатків.}other{Показати ще # додатка.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> та <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-ur/strings.xml b/quickstep/res/values-ur/strings.xml
index 2b055ac..7e9b34c 100644
--- a/quickstep/res/values-ur/strings.xml
+++ b/quickstep/res/values-ur/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"اپنی ہوم اسکرین کی پسندیدہ قطار پر ایپ کی تجاویز حاصل کریں"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"ہوم اسکرین پر آسانی سے اپنی سب سے زیادہ مستعمل ایپس تک رسائی حاصل کریں۔ آپ کی روٹینز کی بنیاد پر تجاویز تبدیل ہوں گی۔ نچلی قطار میں موجود ایپس آپ کی ہوم اسکرین کے اوپر منتقل ہوں گی۔"</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"ہوم اسکرین پر آسانی سے اپنی سب سے زیادہ مستعمل ایپس تک رسائی حاصل کریں۔ آپ کی روٹینز کی بنیاد پر تجاویز تبدیل ہوں گی۔ پسندیدہ میں موجود ایپس آپ کی ہوم اسکرین کے اوپر منتقل ہوں گی۔"</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"ہوم اسکرین پر، آسانی سے اپنی سب سے زیادہ مستعمل ایپس تک رسائی حاصل کریں۔ آپ کی روٹینز کی بنیاد پر تجاویز تبدیل ہوں گی۔ نچلی قطار میں موجود ایپس نئے فولڈر میں منتقل ہوں گی۔"</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"ایپس کی تجاویز حاصل کریں"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"نہیں شکریہ"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"ترتیبات"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"پچھلے اشارے کی حساسیت تبدیل کرنے کے لیے ترتیبات پر جائیں"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"واپس جانے کے لیے سوائپ کریں"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"پچھلی اسکرین پر واپس جانے کے لیے بائیں یا دائیں کنارے سے اسکرین کے وسط تک سوائپ کریں۔"</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"آخری اسکرین پر واپس جانے کے لیے، 2 انگلیوں سے بائیں یا دائیں کنارے سے اسکرین کے وسط تک سوائپ کریں۔"</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"واپس جائیں"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"اس بات کو یقینی بنائیں کہ آپ اسکرین کے نچلے کنارے سے اوپر کی طرف سوائپ کریں۔"</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"اس بات کو یقینی بنائیں کہ آپ اپنی انگلی اوپر اٹھانے سے پہلے موقوف نہ کریں۔"</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"اس بات کو یقینی بنائیں کہ آپ سیدھا اوپر کی طرف سوائپ کریں۔"</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"آپ نے ہوم پر جانے کا اشارہ مکمل کر لیا۔"</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"ہوم پر جانے کے لیے سوائپ کریں"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"اپنی اسکرین کے نیچے سے اوپر کی طرف سوائپ کریں۔ یہ اشارہ آپ کو ہمیشہ ہوم اسکرین پر لے جاتا ہے۔"</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"اسکرین کے نیچے سے 2 انگلیوں سے اوپر سوائپ کریں۔ یہ اشارہ آپ کو ہمیشہ ہوم اسکرین پر لے جاتا ہے۔"</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"گھر جائیں"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"کسی بھی وقت اپنی ہوم اسکرین پر جانے کے لیے، اپنی اسکرین کے نیچے سے اوپر سوائپ کریں"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"اس بات کو یقینی بنائیں کہ آپ اسکرین کے نچلے کنارے سے اوپر کی طرف سوائپ کریں۔"</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"انگلی اٹھانے سے پہلے ونڈو کو زیادہ دیر تک پکڑنے کی کوشش کریں۔"</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"اس بات کو یقینی بنائیں کہ آپ سیدھا اوپر کی طرف سوائپ کریں، پھر موقوف کریں۔"</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"آپ نے ایپس کو سوئچ کرنے کا اشارہ مکمل کر لیا۔"</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"ایپس سوئچ کرنے کے لیے سوائپ کریں"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"ایپس کے مابین سوئچ کرنے کے لیے، اپنی اسکرین کے نچلے حصے سے اوپر کی جانب سوائپ کریں، پکڑے رکھیں، پھر چھوڑ دیں۔"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"ایپس کے مابین سوئچ کرنے کیلئے، اپنی اسکرین کے نیچے سے 2 انگلیوں سے اوپر سوائپ کریں، دبائے رکھیں پھر چھوڑ دیں۔"</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"ایپس سوئچ کریں"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"سب ہو گیا"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"ہو گیا"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"ترتیبات"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"عمدہ!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"ٹیوٹوریل <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"سب کچھ تیار ہے!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"ہوم پر جانے کے لیے اوپر سوائپ کریں"</string>
-    <string name="allset_description" msgid="6350320429953234580">"آپ اپنا فون استعمال شروع کرنے کے لیے تیار ہیں"</string>
+    <string name="allset_hint" msgid="459504134589971527">"ہوم پر جانے کے لیے اوپر سوائپ کریں"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"اپنی ہوم اسکرین پر جانے کے لیے ہوم بٹن پر تھپتھپائیں"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"آپ اپنے <xliff:g id="DEVICE">%1$s</xliff:g> کا استعمال شروع کرنے کے لیے تیار ہیں"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"آلہ"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"سسٹم نیویگیشن کی ترتیبات"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"اشتراک کریں"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"اسکرین شاٹ"</string>
     <string name="action_split" msgid="2098009717623550676">"اسپلٹ"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"اسپلٹ اسکرین کا استعمال کرنے کیلئے دوسری ایپ پر تھپتھپائیں"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"ایپ سپلٹ اسکرین کو سپورٹ نہیں کرتی۔"</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"اسپلٹ اسکرین کا استعمال کرنے کیلئے دوسری ایپ پر تھپتھپائیں"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"اسپلٹ اسکرین کے استعمال کیلئے دوسری ایپ منتخب کریں"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"ایپ یا آپ کی تنظیم کی جانب سے اس کارروائی کی اجازت نہیں ہے"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"نیویگیشن کا ٹیوٹوریل نظر انداز کریں؟"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"آپ اسے بعد میں <xliff:g id="NAME">%1$s</xliff:g> ایپ میں تلاش کر سکتے ہیں"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"منسوخ کریں"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"نظر انداز کریں"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"اسکرین کو گھمائیں"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"ٹاکس بار کا تعلیمی پینل ظاہر ہو گیا"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"ٹاسک بار کا تعلیمی پینل بند ہو گیا"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"ایپس کو سوئچ کرنے کیلئے ٹاسک بار کا استعمال کریں"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"ایک وقت میں دو ایپس استعمال کرنے کے لیے سائیڈ پر گھسیٹیں"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"ٹاسک بار کو کسی بھی وقت چھپانے کیلئے ٹچ کریں اور دبائے رکھیں"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"آگے"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"پیچھے"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"ٹاسک بار کی تعلیم"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"ایک وقت میں 2 ایپس استعمال کرنے کیلئے ایپ سائیڈ پر گھسیٹیں"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"ٹاسک بار دکھانے کے لیے آہستہ سے اوپر سوائپ کریں"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"اپنی روٹین پر مبنی ایپس کی تجاویز حاصل کریں"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"ٹاسک بار کو خودکار طور پر چھپانے کیلئے \'ترتیبات\' میں اشاروں والی نیویگیشن آن کریں"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"ٹاسک بار سے بہت کچھ کریں"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"بند کریں"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"ہو گیا"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"ہوم"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"حالیہ"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"اطلاعات"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"فوری ترتیبات"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"ٹاسک بار"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"ٹاشک بار دکھایا گیا"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"ٹاسک بار چھپایا گیا"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"نیویگیشن بار"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"ہمیشہ ٹاسک بار دکھائیں"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"نیویگیشن موڈ تبدیل کریں"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"ٹاسک بار ڈیوائیڈر"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"اوپر/بائیں طرف منتقل کریں"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"نیچے/دائیں طرف منتقل کریں"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{# مزید ایپ دکھائیں۔}other{# مزید ایپس دکھائیں۔}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> اور <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-uz/strings.xml b/quickstep/res/values-uz/strings.xml
index 3b9853f..73ad2f3 100644
--- a/quickstep/res/values-uz/strings.xml
+++ b/quickstep/res/values-uz/strings.xml
@@ -24,7 +24,7 @@
     <string name="recents_empty_message" msgid="7040467240571714191">"Yaqinda ishlatilgan ilovalar yo‘q"</string>
     <string name="accessibility_app_usage_settings" msgid="6312864233673544149">"Ilovadan foydalanish sozlamalari"</string>
     <string name="recents_clear_all" msgid="5328176793634888831">"Hammasini tozalash"</string>
-    <string name="accessibility_recent_apps" msgid="4058661986695117371">"Yaqinda ishlatilgan ilovalar"</string>
+    <string name="accessibility_recent_apps" msgid="4058661986695117371">"Oxirgi ilovalar"</string>
     <string name="task_view_closed" msgid="9170038230110856166">"Vazifalar yopildi"</string>
     <string name="task_contents_description_with_remaining_time" msgid="4479688746574672685">"<xliff:g id="TASK_DESCRIPTION">%1$s</xliff:g>, <xliff:g id="REMAINING_TIME">%2$s</xliff:g>"</string>
     <string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"&lt; 1 daqiqa"</string>
@@ -35,12 +35,11 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Tavsiya etiladigan ilovalar bosh ekranning saralanganlar ruknida chiqadi"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Faol ishlatiladigan ilovalarga bosh ekrandan osongina kira olasiz. Tavsiyalar oxirgi faoliyatingiz asosida almashib boradi. Pastki qatordagi ilovalar bosh ekranga chiqadi."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Faol ishlatiladigan ilovalarga bosh ekrandan osongina kira olasiz. Tavsiyalar oxirgi faoliyatingiz asosida almashib boradi. Saralanganlar qatoridagi ilovalar bosh ekranga chiqadi."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Faol ishlatiladigan ilovalarga bosh ekrandan osongina kira olasiz. Tavsiyalar oxirgi faoliyatingiz asosida almashib boradi. Pastki qatordagi ilovalar yangi jildga chiqadi."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Tavsiyalarni chiqarish"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Kerak emas"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Sozlamalar"</string>
     <string name="hotseat_auto_enrolled" msgid="522100018967146807">"Faol ishlatiladigan ilovalar bu yerda chiqadi va oxirgi faoliyatingiz asosida almashadi"</string>
-    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Tavsiyalar olish uchun ilovalarni pastki qatordan tashqariga oling"</string>
+    <string name="hotseat_tip_no_empty_slots" msgid="1325212677738179185">"Ilova tavsiyalarini olish uchun ilovalarni pastki qatordan tashqariga ushlab torting"</string>
     <string name="hotseat_tip_gaps_filled" msgid="3035673010274223538">"Tavsiya etilgan ilovalarni ochiq joylarga kiriting"</string>
     <string name="hotsaet_tip_prediction_enabled" msgid="2233554377501347650">"Ilova tavsiyalari yoqildi"</string>
     <string name="hotsaet_tip_prediction_disabled" msgid="1506426298884658491">"Endi ilova takliflari chiqmaydi"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Orqaga ishorasi sezuvchanligi Sozlamalardan oʻzgartiriladi"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Orqaga qaytish"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Ortga qaytish uchun barmoqni ekranning yon chekkalaridan oʻrtasigacha suring."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Oxirgi ekranga qaytish uchun 2 barmoq bilan ekranning chap yoki oʻng chekkasidan oʻrtasigacha suring."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Orqaga"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Barmoqni ekranning pastki chetidan yuqoriga suring."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Barmoqni ekrandan pauzasiz qoʻyib uzing."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Barmoqni tik tepaga suring."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Bosh ekranni ochish ishorasi darsini tamomladingiz."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Svayp bilan bosh ekranni ochish"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Ekranning pastidan tepaga qarab suring. Bu ishora doim Bosh ekranni ochadi."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"2 barmoq bilan ekranning quyidan tepasiga suring. Bu ishora har doim Bosh ekranni ochadi."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Boshiga"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Istalgan vaqtda bosh ekranga oʻtish uchun ekranning pastidan tepaga suring"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Barmoqni ekranning pastki chetidan yuqoriga suring."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Barmoqni uzishdan oldin oynani biroz bosib turing."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Avval tik tepaga surib, keyin pauza qiling."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Ilovalarni almashtirish darsini tamomladingiz."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Ilovalar orasida almashish"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Ilovalarni ochish uchun ekranning pastidan tepaga qarab suring, biroz ushlab turing va qoʻyib yuboring"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Ilovalarni almashtirish uchun 2 barmoq bilan ekranning quyidan tepasiga surib turib, qoʻyib yuboring"</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Ilovalarni almashtirish"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Tayyor"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Tayyor"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Sozlamalar"</string>
@@ -74,36 +80,46 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Yaxshi!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Darslik: <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Hammasi tayyor!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Boshiga qaytish uchun tepaga suring"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Telefoningiz xizmatga tayyor"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Boshiga qaytish uchun tepaga suring"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Bosh ekranga oʻtish uchun bosh ekran tugmasini bosing"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"<xliff:g id="DEVICE">%1$s</xliff:g> xizmatga tayyor"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"qurilma"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Tizim navigatsiya sozlamalari"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Ulashish"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Skrinshot"</string>
     <string name="action_split" msgid="2098009717623550676">"Ajratish"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Ekranni ikkiga ajratish uchun boshqa ilovani bosing"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Bu ilovada ekranni ikkiga ajratish ishlamaydi."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Ekranni ikkiga ajratish uchun boshqa ilovani bosing"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Ekranni ikkiga ajratish uchun boshqa ilovani tanlang"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Bu amal ilova yoki tashkilotingiz tomonidan taqiqlangan"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Navigatsiya darsi yopilsinmi?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Bu darslar <xliff:g id="NAME">%1$s</xliff:g> ilovasida chiqadi"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Bekor qilish"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Tashlab ketish"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Ekranni burish"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Taʼlim vazifalar paneli chiqdi"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Taʼlim vazifalar paneli yopildi"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Ilovalarni vazifalar panelida almashtirish mumkin"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Bir vaqtda ikkita ilova ochish uchun birini yoniga torting"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Vazifalar panelini ustiga bosib turib yashirish mumkin"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Keyingisi"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Orqaga"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Vazifalar paneli qoʻllanmasi"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Bitta ilovani yon tomonga sudrab, bir vaqtda 2 ta ilovadan foydalaning."</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Vazifalar panelini ochish uchun tepaga asta suring"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Harakatlaringiz asosida tavsiyalar oling."</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Vazifalar paneli avtomatik yopilishi uchun ishorali navigatsiyani yoqing"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Vazifalar panelidan maksimal darajada foydalaning"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Yopish"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Tayyor"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Bosh ekran"</string>
-    <string name="taskbar_button_a11y" msgid="5241161324875094465">"Maxsus imkoniyatlar"</string>
+    <string name="taskbar_button_a11y" msgid="5241161324875094465">"Qulayliklar"</string>
     <string name="taskbar_button_back" msgid="8558862226461164514">"Orqaga"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME tugmasi"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Oxirgilar"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Bildirishnomalar"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Tezkor sozlamalar"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Vazifalar paneli"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Vazifalar paneli ochiq"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Vazifalar paneli yopiq"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Navigatsiya paneli"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Doim vazifalar paneli chiqsin"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Navigatsiya rejimini oʻzgartirish"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Vazifalar panelini ajratkich"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Yuqoriga yoki chapga oʻtkazish"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Pastga yoki oʻngga oʻtkazish"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Yana # ta ilovani chiqarish}other{Yana # ta ilovani chiqarish}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> va <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-vi/strings.xml b/quickstep/res/values-vi/strings.xml
index 1072c3a..5b7f12e 100644
--- a/quickstep/res/values-vi/strings.xml
+++ b/quickstep/res/values-vi/strings.xml
@@ -33,9 +33,8 @@
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"Các ứng dụng gợi ý của bạn"</string>
     <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"Nhận các ứng dụng đề xuất ở cuối Màn hình chính"</string>
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Nhận các ứng dụng đề xuất trên hàng mục ưa thích của Màn hình chính"</string>
-    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Ngay từ Màn hình chính, bạn có thể dễ dàng truy cập vào những ứng dụng mà mình dùng thường xuyên nhất. Các ứng dụng đề xuất sẽ thay đổi dựa trên thói quen của bạn. Các ứng dụng ở hàng dưới cùng sẽ chuyển lên phía trên của Màn hình chính."</string>
-    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Ngay trên Màn hình chính, bạn có thể dễ dàng mở những ứng dụng mà mình dùng thường xuyên nhất. Các ứng dụng đề xuất sẽ thay đổi dựa trên thói quen của bạn. Các ứng dụng ở hàng mục ưa thích sẽ chuyển sang Màn hình chính."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Ngay từ Màn hình chính, bạn có thể dễ dàng truy cập vào những ứng dụng mà mình dùng thường xuyên nhất. Các ứng dụng đề xuất sẽ thay đổi dựa trên thói quen của bạn. Các ứng dụng ở hàng dưới cùng sẽ chuyển đến một thư mục mới."</string>
+    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Bạn có thể dễ dàng truy cập những ứng dụng mà mình dùng thường xuyên nhất ngay trên màn hình chính. Các ứng dụng đề xuất sẽ thay đổi dựa trên thói quen của bạn. Các ứng dụng ở hàng dưới cùng sẽ chuyển lên phía trên của Màn hình chính."</string>
+    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Bạn có thể dễ dàng mở những ứng dụng mà mình dùng thường xuyên nhất ngay trên màn hình chính. Các ứng dụng đề xuất sẽ thay đổi dựa trên thói quen của bạn. Các ứng dụng ở hàng mục ưa thích sẽ chuyển sang Màn hình chính."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Nhận ứng dụng đề xuất"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Không, cảm ơn"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Cài đặt"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Để thay đổi độ nhạy của cử chỉ quay lại, hãy vào mục Cài đặt"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Vuốt để quay lại"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Để quay lại màn hình gần đây nhất, hãy vuốt từ mép trái hoặc mép phải tới chính giữa màn hình."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Để quay lại màn hình trước đó, hãy vuốt 2 ngón tay từ cạnh trái hoặc phải vào giữa màn hình."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Quay lại"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Hãy vuốt lên từ mép dưới cùng của màn hình."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Hãy nhớ không được tạm dừng trước khi nhấc ngón tay."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Hãy vuốt thẳng lên."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Bạn đã thực hiện xong cử chỉ chuyển đến Màn hình chính."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Vuốt để chuyển đến Màn hình chính"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Vuốt lên từ cuối màn hình. Cử chỉ này luôn đưa bạn đến Màn hình chính."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Vuốt 2 ngón tay lên từ cuối màn hình. Cử chỉ này luôn đưa bạn về Màn hình chính."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Chuyển đến màn hình chính"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Để chuyển đến màn hình chính bất cứ lúc nào, hãy vuốt lên từ cuối màn hình"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Hãy vuốt lên từ mép dưới cùng của màn hình."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Hãy thử giữ cửa sổ lâu hơn trước khi thả tay ra."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Hãy vuốt thẳng lên, sau đó tạm dừng."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Bạn đã thực hiện xong cử chỉ chuyển đổi ứng dụng."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Vuốt để chuyển đổi ứng dụng"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Để chuyển đổi giữa các ứng dụng, hãy vuốt lên từ cuối màn hình, giữ rồi thả ra."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Để chuyển đổi giữa các ứng dụng, hãy vuốt 2 ngón tay lên từ cuối màn hình, giữ rồi thả ra."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Chuyển đổi giữa các ứng dụng"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Đã hoàn tất"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Xong"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Cài đặt"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Tuyệt vời!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Hướng dẫn <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Đã hoàn tất!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Vuốt lên để chuyển đến Màn hình chính"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Vậy là bạn đã sẵn sàng sử dụng điện thoại của mình"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Vuốt lên để chuyển đến màn hình chính"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Nhấn vào nút màn hình chính để chuyển đến màn hình chính"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Bạn có thể bắt đầu sử dụng <xliff:g id="DEVICE">%1$s</xliff:g>"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"thiết bị"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Chế độ cài đặt di chuyển trên hệ thống"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Chia sẻ"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Chụp ảnh màn hình"</string>
     <string name="action_split" msgid="2098009717623550676">"Chia đôi màn hình"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Nhấn vào một ứng dụng khác để dùng màn hình chia đôi"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Ứng dụng không hỗ trợ chia đôi màn hình."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Nhấn vào ứng dụng khác để chia đôi màn hình"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Chọn một ứng dụng khác để dùng chế độ chia đôi màn hình"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Ứng dụng hoặc tổ chức của bạn không cho phép thực hiện hành động này"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Bỏ qua phần hướng dẫn thao tác?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Bạn có thể tìm lại phần hướng dẫn này trong ứng dụng <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Hủy"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Bỏ qua"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Xoay màn hình"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Đã hiện bảng hướng dẫn trên thanh tác vụ"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Đã đóng bảng hướng dẫn trên thanh tác vụ"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Dùng thanh tác vụ để chuyển đổi ứng dụng"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Kéo sang bên để dùng hai ứng dụng cùng một lúc"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Chạm và giữ để ẩn thanh tác vụ"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Tiếp theo"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Quay lại"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Cách sử dụng thanh tác vụ"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Kéo một ứng dụng sang bên để dùng 2 ứng dụng cùng lúc"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Từ từ vuốt lên để Thanh tác vụ xuất hiện"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Nhận ứng dụng đề xuất dựa trên thói quen của bạn"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Bật tính năng thao tác bằng cử chỉ trong phần Cài đặt để tự động ẩn Thanh tác vụ"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Làm nhiều việc hơn qua Thanh tác vụ"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Đóng"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Xong"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Màn hình chính"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"Quay lại"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"Trình chuyển đổi IME"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Gần đây"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"Thông báo"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Cài đặt nhanh"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"Thanh tác vụ"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Đã hiện thanh thao tác"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Đã ẩn thanh thao tác"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Thanh điều hướng"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Luôn hiển thị Taskbar"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Thay đổi chế độ điều hướng"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Đường phân chia Taskbar"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Chuyển lên trên cùng/sang bên trái"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Chuyển xuống dưới cùng/sang bên phải"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Hiện thêm # ứng dụng.}other{Hiện thêm # ứng dụng.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g> và <xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-zh-rCN/strings.xml b/quickstep/res/values-zh-rCN/strings.xml
index 4587d58..b88899b 100644
--- a/quickstep/res/values-zh-rCN/strings.xml
+++ b/quickstep/res/values-zh-rCN/strings.xml
@@ -33,9 +33,8 @@
     <string name="all_apps_prediction_tip" msgid="2672336544844936186">"您可能想要使用的应用"</string>
     <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"在主屏幕底部获取应用建议"</string>
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"在主屏幕的收藏行获取应用建议"</string>
-    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"直接在主屏幕上轻松访问您最常用的应用。系统会根据您的日常安排提供不同的建议。最下面一排中的应用会向上移动到主屏幕中。"</string>
+    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"直接在主屏幕上轻松访问您最常用的应用。系统会根据您的日常安排提供不同的建议。最下面一排中的应用会向上移到主屏幕中。"</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"直接在主屏幕上轻松访问您最常用的应用。建议会因您的日常安排而变化,收藏行中的应用将移到主屏幕上。"</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"直接在主屏幕上轻松访问您最常用的应用。系统会根据您的日常安排提供不同的建议。最下面一排中的应用会移到新文件夹中。"</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"获取应用建议"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"不用了"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"设置"</string>
@@ -52,14 +51,19 @@
     <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"请确保滑动时手的位置不要太靠近屏幕底部。"</string>
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"如要调节“返回”手势的灵敏度,请转到“设置”"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"滑动即可返回"</string>
-    <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"如要返回上一个屏幕,请从左侧或右侧边缘滑动到屏幕中间位置。"</string>
+    <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"如要返回上一个屏幕,请从屏幕左侧或右侧边缘往屏幕中间滑动。"</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"若要返回上一个屏幕,请用两根手指从屏幕左侧或右侧边缘向中间滑动。"</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"返回"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"请确保从屏幕底部边缘向上滑动。"</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"松开手指前,请确保不要停下来。"</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"请确保直接向上滑动。"</string>
     <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"您完成了“转到主屏幕”手势教程。接下来了解如何返回。"</string>
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"您完成了“转到主屏幕”手势教程。"</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"上滑可转到主屏幕"</string>
-    <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"从屏幕底部向上滑动。这个手势会一律将您转到主屏幕。"</string>
+    <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"从屏幕底部向上滑动,即可随时回到主屏幕。"</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"用两根手指从屏幕底部向上滑动,这个手势会一律使您回到主屏幕。"</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"前往主屏幕"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"若要随时前往主屏幕,请从屏幕的底部向上滑动"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"请确保从屏幕底部边缘向上滑动。"</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"请尝试按住窗口较长时间,然后再松开手指。"</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"请确保直接向上滑动,然后停住。"</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"您完成了“切换应用”手势教程。"</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"滑动即可切换应用"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"如需在应用之间切换,请从屏幕底部向上滑动后按住,然后松开。"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"若要在应用之间切换,请用两根手指从屏幕底部向上滑动并按住,然后松开。"</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"切换应用"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"大功告成"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"完成"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"设置"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"很好!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"教程 <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"大功告成!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"向上滑动即可转到主屏幕"</string>
-    <string name="allset_description" msgid="6350320429953234580">"您可以开始使用手机了"</string>
+    <string name="allset_hint" msgid="459504134589971527">"向上滑动可转到主屏幕"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"点按主屏幕按钮即可前往主屏幕"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"您可以开始使用<xliff:g id="DEVICE">%1$s</xliff:g>了"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"设备"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"系统导航设置"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"分享"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"屏幕截图"</string>
     <string name="action_split" msgid="2098009717623550676">"拆分"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"点按另一个应用即可使用分屏"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"应用不支持分屏。"</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"点按另一个应用即可使用分屏"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"另外选择一个应用才可使用分屏模式"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"该应用或您所在的单位不允许执行此操作"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"要跳过导航教程吗?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"您之后可以在“<xliff:g id="NAME">%1$s</xliff:g>”应用中找到此教程"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"取消"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"跳过"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"旋转屏幕"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"任务栏教程已显示"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"任务栏教程已关闭"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"使用任务栏切换应用"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"拖动到一侧,以便一次使用两个应用"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"轻触并按住即可隐藏任务栏"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"继续"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"返回"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"任务栏教程"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"将一个应用拖到一侧,即可一次使用两个应用"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"缓慢向上滑动即可显示任务栏"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"根据您的日常安排获取应用建议"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"在设置中开启手势导航后,任务栏会自动隐藏"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"体验任务栏的更多功能"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"关闭"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"完成"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"主屏幕"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"返回"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"IME 切换器"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"最近用过"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"通知"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"快捷设置"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"任务栏"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"任务栏已显示"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"任务栏已隐藏"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"导航栏"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"始终显示任务栏"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"更改导航模式"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"任务栏分隔线"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"移到顶部/左侧"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"移到底部/右侧"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{显示另外 # 个应用。}other{显示另外 # 个应用。}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"<xliff:g id="APP_NAME_1">%1$s</xliff:g>和<xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values-zh-rHK/strings.xml b/quickstep/res/values-zh-rHK/strings.xml
index 2810771..e6de624 100644
--- a/quickstep/res/values-zh-rHK/strings.xml
+++ b/quickstep/res/values-zh-rHK/strings.xml
@@ -30,12 +30,11 @@
     <string name="shorter_duration_less_than_one_minute" msgid="4722015666335015336">"少於 1 分鐘"</string>
     <string name="time_left_for_app" msgid="3111996412933644358">"今天剩餘時間:<xliff:g id="TIME">%1$s</xliff:g>"</string>
     <string name="title_app_suggestions" msgid="4185902664111965088">"應用程式建議"</string>
-    <string name="all_apps_prediction_tip" msgid="2672336544844936186">"您的預測應用程式"</string>
+    <string name="all_apps_prediction_tip" msgid="2672336544844936186">"你的預測應用程式"</string>
     <string name="hotseat_edu_title_migrate" msgid="306578144424489980">"在主畫面底部取得應用程式建議"</string>
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"在主畫面「我的最愛」列取得應用程式建議"</string>
-    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"在主畫面輕鬆存取常用的應用程式。系統會根據您的日常安排更改建議,並將底部的應用程式移到主畫面。"</string>
-    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"在主畫面輕鬆存取最常用的應用程式。系統會根據您的日常安排變更建議,「我的最愛」列中的應用程式會移至主畫面。"</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"在主畫面輕鬆存取最常用的應用程式。系統會根據您的日常安排變更建議,並將底列的應用程式移至新資料夾。"</string>
+    <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"在主畫面輕鬆存取常用的應用程式。系統會根據你的日常安排更改建議,並將底部的應用程式移到主畫面。"</string>
+    <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"在主畫面輕鬆存取最常用的應用程式。系統會根據你的日常安排變更建議,「我的最愛」列中的應用程式會移至主畫面。"</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"取得應用程式建議"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"不用了,謝謝"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"設定"</string>
@@ -47,26 +46,33 @@
     <string name="hotseat_prediction_content_description" msgid="4582028296938078419">"預測應用程式:<xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="back_gesture_feedback_swipe_too_far_from_edge" msgid="1711645592102201538">"請從螢幕右側或左側邊緣滑動。"</string>
     <string name="back_gesture_feedback_cancelled" msgid="3274382913290074496">"請從螢幕右側或左側邊緣往中央滑動,然後放開手指。"</string>
-    <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"您已瞭解如何透過「由右向左滑動」手勢返回。接下來一起瞭解如何切換應用程式。"</string>
-    <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"您已完成「返回」手勢的教學課程。"</string>
+    <string name="back_gesture_feedback_complete_with_overview_follow_up" msgid="9176400654037014471">"你已瞭解如何透過「由右向左滑動」手勢返回。接下來一起瞭解如何切換應用程式。"</string>
+    <string name="back_gesture_feedback_complete_without_follow_up" msgid="6405649621667113830">"你已完成「返回」手勢的教學課程。"</string>
     <string name="back_gesture_feedback_swipe_in_nav_bar" msgid="1148198467090405643">"滑動時,手的位置不要太接近螢幕底部。"</string>
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"如要變更「返回」手勢的敏感度,請前往「設定」"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"滑動即可返回"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"如要返回上一個畫面,請從螢幕左側或右側邊緣往中央滑動。"</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"如要返回上一個畫面,請用 2 隻手指從螢幕左側或右側邊緣往中央滑動。"</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"返回"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"請從螢幕底部邊緣向上滑動。"</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"放開手指前請勿停下來。"</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"請向上滑動。"</string>
-    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"您已完成「返回主畫面」手勢的教學課程。接著,一起來瞭解如何返回上一個畫面。"</string>
-    <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"您已完成「返回主畫面」手勢的教學課程。"</string>
+    <string name="home_gesture_feedback_complete_with_follow_up" msgid="1427872029729605034">"你已完成「返回主畫面」手勢的教學課程。接著,一起來瞭解如何返回上一個畫面。"</string>
+    <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"你已完成「返回主畫面」手勢的教學課程。"</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"向上滑動即可返回主畫面"</string>
-    <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"從螢幕底部向上滑動。這個手勢在所有畫面下都可讓您返回主畫面。"</string>
+    <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"從螢幕底部向上滑動。這個手勢在所有畫面下都可讓你返回主畫面。"</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"請用 2 隻手指從螢幕底部向上滑動。這個手勢在所有畫面下都可讓你返回主畫面。"</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"返回主畫面"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"只要從螢幕底部向上滑動,隨時可以返回主畫面"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"請從螢幕底部邊緣向上滑動。"</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"請嘗試按住視窗更長時間,然後再放開。"</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"請向上滑動,然後停住。"</string>
-    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"您已學會如何使用手勢。如要關閉手勢,請前往「設定」。"</string>
-    <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"您已完成「切換應用程式」手勢的教學課程。"</string>
+    <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"你已學會如何使用手勢。如要關閉手勢,請前往「設定」。"</string>
+    <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"你已完成「切換應用程式」手勢的教學課程。"</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"滑動即可切換應用程式"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"如要切換應用程式,請從螢幕底部向上滑動並按住,然後放開。"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"如要切換應用程式,請用 2 隻手指從螢幕底部向上滑動並按住,然後放開手指。"</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"切換應用程式"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"大功告成"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"完成"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"設定"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"做得好!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"教學課程 <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"設定完成!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"向上滑動即可前往主畫面"</string>
-    <string name="allset_description" msgid="6350320429953234580">"您可以開始使用手機了"</string>
+    <string name="allset_hint" msgid="459504134589971527">"向上滑動即可前往主畫面"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"輕按主按鈕即可前往主畫面"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"你可以開始使用 <xliff:g id="DEVICE">%1$s</xliff:g> 了"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"裝置"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"系統導覽設定"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"分享"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"螢幕截圖"</string>
     <string name="action_split" msgid="2098009717623550676">"分割"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"輕按其他應用程式以使用分割螢幕"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"應用程式不支援分割螢幕。"</string>
-    <string name="blocked_by_policy" msgid="2071401072261365546">"應用程式或您的機構不允許此操作"</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"輕按其他應用程式以使用分割螢幕"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"選擇其他應用程式才能使用分割螢幕"</string>
+    <string name="blocked_by_policy" msgid="2071401072261365546">"應用程式或你的機構不允許此操作"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"要略過手勢操作教學課程嗎?"</string>
-    <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"您之後可以在「<xliff:g id="NAME">%1$s</xliff:g>」應用程式找到這些說明"</string>
+    <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"你之後可以在「<xliff:g id="NAME">%1$s</xliff:g>」應用程式找到這些說明"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"取消"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"略過"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"旋轉螢幕"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"顯示咗工作列教學"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"閂咗工作列教學"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"使用工作列即可切換應用程式"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"拖曳至一側即可同時使用兩個應用程式"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"按住即可隱藏工作列"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"繼續"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"返回"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"工作列教學"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"將應用程式拖曳到一邊,即可同時使用 2 個應用程式"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"慢慢向上滑動即可顯示工作列"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"根據你的日常安排提供應用程式建議"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"在「設定」中啟用手勢操作後,工作列就會自動隱藏"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"工作列助你事半功倍"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"關閉"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"完成"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"住宅"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"返回"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"輸入法編輯器切換工具"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"最近"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"通知"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"快速設定"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"工作列"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"顯示咗工作列"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"隱藏咗工作列"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"導覽列"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"一律顯示工作列"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"變更導覽模式"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"工作列分隔線"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"移至上方/左側"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"移至底部/右側"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{顯示另外 # 個應用程式。}other{顯示另外 # 個應用程式。}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"「<xliff:g id="APP_NAME_1">%1$s</xliff:g>」和「<xliff:g id="APP_NAME_2">%2$s</xliff:g>」"</string>
 </resources>
diff --git a/quickstep/res/values-zh-rTW/strings.xml b/quickstep/res/values-zh-rTW/strings.xml
index 847cb91..2987a87 100644
--- a/quickstep/res/values-zh-rTW/strings.xml
+++ b/quickstep/res/values-zh-rTW/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"在主畫面的收藏列取得應用程式建議"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"你可以輕鬆地在主畫面上找到自己常用的應用程式。應用程式建議會依據你的日常使用習慣而有所不同。系統會將底部列出的應用程式上移到主畫面。"</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"你可以輕鬆地在主畫面上找到自己常用的應用程式。系統會根據你的日常使用習慣提供不同的應用程式建議,並在主畫面顯示收藏列中的應用程式。"</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"你可以輕鬆地在主畫面上找到自己常用的應用程式。應用程式建議會根據日常安排有所不同。系統會將底部列出的應用程式移到新的資料夾。"</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"取得應用程式建議"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"不用了,謝謝"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"設定"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"如要變更「返回」手勢的敏感度,請前往「設定」"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"滑動即可返回"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"如要返回上一個畫面,請從螢幕左側或右側邊緣往中央滑動。"</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"如要返回上一個畫面,請用 2 指從螢幕左側或右側邊緣往中央滑動。"</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"返回"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"請從螢幕底部邊緣向上滑動。"</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"放開手指前請勿停下來。"</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"請向上滑動。"</string>
@@ -60,41 +61,47 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"你已完成「返回主畫面」手勢的教學課程。"</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"使用滑動手勢返回主畫面"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"從螢幕底部向上滑動,即可返回主畫面。"</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"用 2 指從螢幕底部向上滑動,即可回到主畫面。"</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"返回主畫面"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"只要從螢幕底部向上滑動,隨時可以返回主畫面"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"請從螢幕底部邊緣向上滑動。"</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"請按住視窗久一點,然後再放開。"</string>
-    <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"請向上滑動,然後停住。"</string>
+    <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"請直直向上滑動,然後停住。"</string>
     <string name="overview_gesture_feedback_complete_with_follow_up" msgid="3544611727467765026">"你已瞭解如何使用手勢了。如要關閉手勢,請前往「設定」。"</string>
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"你已完成「切換應用程式」手勢的教學課程。"</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"使用滑動手勢切換應用程式"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"如要切換不同的應用程式,請從螢幕底部向上滑動並按住,然後放開手指。"</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"如要切換應用程式,請用 2 指從螢幕底部向上滑動並按住,然後放開手指。"</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"切換應用程式"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"大功告成"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"完成"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"設定"</string>
     <string name="gesture_tutorial_try_again" msgid="65962545858556697">"重試"</string>
-    <string name="gesture_tutorial_nice" msgid="2936275692616928280">"很好!"</string>
+    <string name="gesture_tutorial_nice" msgid="2936275692616928280">"太棒了!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"教學課程 <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"設定完成!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"向上滑動即可前往主畫面"</string>
-    <string name="allset_description" msgid="6350320429953234580">"你可以開始使用手機了"</string>
+    <string name="allset_hint" msgid="459504134589971527">"向上滑動即可前往主畫面"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"輕觸主畫面按鈕即可前往主畫面"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"你可以開始使用「<xliff:g id="DEVICE">%1$s</xliff:g>」了"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"裝置"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"系統操作機制設定"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"分享"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"螢幕截圖"</string>
     <string name="action_split" msgid="2098009717623550676">"分割"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"輕觸另一個應用程式即可使用分割畫面"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"這個應用程式不支援分割畫面。"</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"輕觸另一個應用程式即可使用分割畫面"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"必須選擇另一個應用程式才能使用分割畫面"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"這個應用程式或貴機構不允許執行這個動作"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"要略過手勢操作教學課程嗎?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"你之後可以在「<xliff:g id="NAME">%1$s</xliff:g>」應用程式找到這些說明"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"取消"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"略過"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"旋轉螢幕"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"工作列教學課程已顯示"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"工作列教學課程已關閉"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"使用工作列即可切換應用程式"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"拖曳到一邊即可同時使用兩個應用程式"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"按住即可隱藏工作列"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"繼續"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"返回"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"工作列教學課程"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"將應用程式拖曳到一邊即可同時使用 2 個應用程式"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"緩慢向上滑動即可讓工作列顯示在畫面上"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"根據你的日常安排建議應用程式"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"在設定中啟用手勢操作後,工作列就會自動隱藏"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"充分發揮工作列的功用"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"關閉"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"完成"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"主畫面"</string>
@@ -102,10 +109,17 @@
     <string name="taskbar_button_back" msgid="8558862226461164514">"返回"</string>
     <string name="taskbar_button_ime_switcher" msgid="1730244360907588541">"輸入法編輯器切換器"</string>
     <string name="taskbar_button_recents" msgid="7273376136216613134">"最近使用"</string>
-    <!-- no translation found for taskbar_button_notifications (7471740351507357318) -->
-    <skip />
-    <!-- no translation found for taskbar_button_quick_settings (227662894293189391) -->
-    <skip />
+    <string name="taskbar_button_notifications" msgid="7471740351507357318">"通知"</string>
+    <string name="taskbar_button_quick_settings" msgid="227662894293189391">"快速設定"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"工作列"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"已顯示工作列"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"已隱藏工作列"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"導覽列"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"一律顯示工作列"</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"變更操作模式"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"工作列分隔線"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"移到上方/左側"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"移到底部/右側"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{顯示另外 # 個應用程式。}other{顯示另外 # 個應用程式。}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"「<xliff:g id="APP_NAME_1">%1$s</xliff:g>」和「<xliff:g id="APP_NAME_2">%2$s</xliff:g>」"</string>
 </resources>
diff --git a/quickstep/res/values-zu/strings.xml b/quickstep/res/values-zu/strings.xml
index 98ea6d7..2d78ebc 100644
--- a/quickstep/res/values-zu/strings.xml
+++ b/quickstep/res/values-zu/strings.xml
@@ -35,7 +35,6 @@
     <string name="hotseat_edu_title_migrate_landscape" msgid="3633942953997845243">"Thola iziphakamiso zohlelo lokusebenza kumugqa wezintandokazi Zesikrini sakho sasekhaya"</string>
     <string name="hotseat_edu_message_migrate" msgid="8927179260533775320">"Finyelela kalula izinhlelo zakho zokusebenza ezisetshenziswa kakhulu khona kusikrini sasekhaya. Iziphakamiso zizoshintsha ngokususelwe kwimijikelezo yakho. Izinhlelo zokusebenza ezisemgqeni ongezansi zizoya phezulu kusikrini sakho sasekhaya."</string>
     <string name="hotseat_edu_message_migrate_landscape" msgid="4248943380443387697">"Finyelela kalula izinhlelo zakho zokusebenza ezisetshenziswa kakhulu khona kusikrini sasekhaya. Iziphakamiso zizoshintsha ngokususelwe kwimijikelezo yakho. Izintandokazi zomugqa wezinhlelo zokusebenza zizoya Kusikrini sakho sasekhaya."</string>
-    <string name="hotseat_edu_message_migrate_alt" msgid="3042360119039646356">"Finyelela kalula izinhlelo zakho zokusebenza ezisetshenziswa njalo, kusikrini sasekhaya. Iziphakamiso zizoshintsha ngokususelwe kwimijikelezo yakho. Izinhlelo zokusebenza ezisemgqeni ongezansi zizoya phezulu kufolda entsha."</string>
     <string name="hotseat_edu_accept" msgid="1611544083278999837">"Thola iziphakamiso zohlelo lokusebenza"</string>
     <string name="hotseat_edu_dismiss" msgid="2781161822780201689">"Cha ngiyabonga"</string>
     <string name="hotseat_prediction_settings" msgid="6246554993566070818">"Amasethingi"</string>
@@ -53,6 +52,8 @@
     <string name="back_gesture_tutorial_confirm_subtitle" msgid="5181305411668713250">"Ukuze ushintshe ukuzwela kokuthinta emuva, iya Kumasethingi"</string>
     <string name="back_gesture_intro_title" msgid="19551256430224428">"Swayipha ukuze uye emuva"</string>
     <string name="back_gesture_intro_subtitle" msgid="7912576483031802797">"Ukuze ubuyele emuva esikrinini sokugcina, swapha kusuka emngceleni wesobunxele noma wesokudla kuya phakathi kwesikrini."</string>
+    <string name="back_gesture_spoken_intro_subtitle" msgid="2162043199263088592">"Ukuze ubuyele esikrinini sokugcina, swayipha ngeminwe emi-2 ukusuka kwesokunxele noma kwesokudla emphethweni uye phakathi kwesikrini."</string>
+    <string name="back_gesture_tutorial_title" msgid="1944737946101059789">"Iya emuva"</string>
     <string name="home_gesture_feedback_swipe_too_far_from_edge" msgid="1446774096007065298">"Qiniseka ukuthi uswayiphela phezulu kusuka emngceleni ophansi wesikrini."</string>
     <string name="home_gesture_feedback_overview_detected" msgid="1557523944897393013">"Qiniseka ukuthi awumisi ngaphambi kokudedela."</string>
     <string name="home_gesture_feedback_wrong_swipe_direction" msgid="6993979358080825438">"Qiniseka ukuthi uswayiphela ngqo phezulu."</string>
@@ -60,6 +61,9 @@
     <string name="home_gesture_feedback_complete_without_follow_up" msgid="8049099486868933882">"Ukuqedile ukuthinta kokuya Ekhaya."</string>
     <string name="home_gesture_intro_title" msgid="836590312858441830">"Swayipha ukuze uye ekhaya"</string>
     <string name="home_gesture_intro_subtitle" msgid="2632238748497975326">"Swayiphela phezulu kusuka phansi kwesikrini sakho.Lokhu kuthinta kuhlala kukusa esikrinini sasekhaya."</string>
+    <string name="home_gesture_spoken_intro_subtitle" msgid="1030987707382031750">"Swayiphela phezulu ngeminwe emi-2 kusukela phansi esikrinini. Lesi senzo sihlala sikuyisa esikrinini Sasekhaya."</string>
+    <string name="home_gesture_tutorial_title" msgid="3126834347496917376">"Iya ekhasini lokuqala"</string>
+    <string name="home_gesture_tutorial_subtitle" msgid="8979014952569486971">"Ukuze uye esikrinini sakho sasekhaya noma kunini, swayiphela phezulu ukusuka phansi esikrinini sakho"</string>
     <string name="overview_gesture_feedback_swipe_too_far_from_edge" msgid="3032757898111577225">"Qiniseka ukuthi uswayiphela phezulu kusuka emngceleni ophansi wesikrini."</string>
     <string name="overview_gesture_feedback_home_detected" msgid="1411130969354020489">"Zama ukubamba iwindi isikhashana ngaphambi kokulidedela."</string>
     <string name="overview_gesture_feedback_wrong_swipe_direction" msgid="6725820500906747925">"Qiniseka ukuthi uswayiphela ngqo phezulu bese uyamisa."</string>
@@ -67,6 +71,8 @@
     <string name="overview_gesture_feedback_complete_without_follow_up" msgid="3199486203448379152">"Ukuqedile ukuthinta kokushintsha ama-app."</string>
     <string name="overview_gesture_intro_title" msgid="2902054412868489378">"Swayipha ukuze ushintshe ama-app"</string>
     <string name="overview_gesture_intro_subtitle" msgid="4968091015637850859">"Ukuze ushintshe phakathi kwama-app, swayiphela phezulu kusuka ngezansi kwesikrini sakho, bese uyadedela."</string>
+    <string name="overview_gesture_spoken_intro_subtitle" msgid="3853371838260201751">"Ukuze ushintshe phakathi kwama-app, swayiphela phezulu ngeminwe emi-2 kusukela phansi esikrinini sakho, ubambe, bese uyakhulula."</string>
+    <string name="overview_gesture_tutorial_title" msgid="4125835002668708720">"Shintsha ama-app"</string>
     <string name="gesture_tutorial_confirm_title" msgid="6201516182040074092">"Konke kusethiwe"</string>
     <string name="gesture_tutorial_action_button_label" msgid="6249846312991332122">"Kwenziwe"</string>
     <string name="gesture_tutorial_action_button_label_settings" msgid="2923621047916486604">"Amasethingi"</string>
@@ -74,27 +80,28 @@
     <string name="gesture_tutorial_nice" msgid="2936275692616928280">"Kuhle!"</string>
     <string name="gesture_tutorial_step" msgid="1279786122817620968">"Okokufundisa <xliff:g id="CURRENT">%1$d</xliff:g>/<xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="allset_title" msgid="5021126669778966707">"Konke kusethiwe!"</string>
-    <string name="allset_hint" msgid="2384632994739392447">"Swayiphela phezulu ukuze uye Ekhaya"</string>
-    <string name="allset_description" msgid="6350320429953234580">"Usulungele ukuqala ukusebenzisa ifoni yakho"</string>
+    <string name="allset_hint" msgid="459504134589971527">"Swayiphela phezulu ukuze uye ekhaya"</string>
+    <string name="allset_button_hint" msgid="2395219947744706291">"Thepha inkinobho yasekhaya ukuze uye kusikrini sasekhaya"</string>
+    <string name="allset_description_generic" msgid="5385500062202019855">"Usulungele ukuqala ukusebenzisa i-<xliff:g id="DEVICE">%1$s</xliff:g> yakho"</string>
+    <string name="default_device_name" msgid="6660656727127422487">"idivayisi"</string>
     <string name="allset_navigation_settings" msgid="4713404605961476027"><annotation id="link">"Amasethingi wokuzulazula isistimu"</annotation></string>
     <string name="action_share" msgid="2648470652637092375">"Yabelana"</string>
     <string name="action_screenshot" msgid="8171125848358142917">"Isithombe-skrini"</string>
     <string name="action_split" msgid="2098009717623550676">"Hlukanisa"</string>
-    <string name="toast_split_select_app" msgid="5453865907322018352">"Thepha enye i-app ukuze usebenzise isikrini sokuhlukanisa"</string>
-    <string name="toast_split_app_unsupported" msgid="3271526028981899666">"Uhlelo lokusebenza alusekeli isikrini esihlukanisiwe."</string>
+    <string name="toast_split_select_app" msgid="8464310533320556058">"Thepha enye i-app ukuze usebenzise isikrini sokuhlukanisa"</string>
+    <string name="toast_split_app_unsupported" msgid="2360229567007828914">"Khetha enye i-app ukuze usebenzise ukuhlukanisa isikrini"</string>
     <string name="blocked_by_policy" msgid="2071401072261365546">"Lesi senzo asivunyelwanga uhlelo lokusebenza noma inhlangano yakho"</string>
     <string name="skip_tutorial_dialog_title" msgid="2725643161260038458">"Yeqa isifundo sokuzulazula?"</string>
     <string name="skip_tutorial_dialog_subtitle" msgid="544063326241955662">"Lokhu ungakuthola kamuva ku-app ye-<xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="gesture_tutorial_action_button_label_cancel" msgid="3809842569351264108">"Khansela"</string>
     <string name="gesture_tutorial_action_button_label_skip" msgid="394452764989751960">"Yeqa"</string>
     <string name="accessibility_rotate_button" msgid="4771825231336502943">"Zungezisa isikrini"</string>
-    <string name="taskbar_edu_opened" msgid="3950252793551919129">"Imfuno yebha yomsebenzi ivelile"</string>
-    <string name="taskbar_edu_closed" msgid="126643734478892862">"Imfundo yebha yomsebenzi ivaliwe"</string>
-    <string name="taskbar_edu_switch_apps" msgid="6942863327845784813">"Sebenzisa ibha yomsebenzi ukushintsha ama-app"</string>
-    <string name="taskbar_edu_splitscreen" msgid="2663361731630346489">"Hudula ngaseceleni ukuze usebenzise ama-app amabili ngesikhathi esisodwa"</string>
-    <string name="taskbar_edu_stashing" msgid="5212374387411764031">"Thinta futhi ubambe, bamba ukuze ufihle ibha yomsebenzi"</string>
-    <string name="taskbar_edu_next" msgid="4007618274426775841">"Okulandelayo"</string>
-    <string name="taskbar_edu_previous" msgid="459202320127201702">"Emuva"</string>
+    <string name="taskbar_edu_a11y_title" msgid="5417986057866415355">"Imfundo ye-taskbar"</string>
+    <string name="taskbar_edu_splitscreen" msgid="5605512479258053350">"Hudula i-app ukusebenzisa ama-app ama-2 ngesikhathi esisodwa"</string>
+    <string name="taskbar_edu_stashing" msgid="5645461372669217294">"Swayiphela phezulu kancane ukuze ubonise i-Taskbar"</string>
+    <string name="taskbar_edu_suggestions" msgid="8215044496435527982">"Thola iziphakamiso ze-app ngokusekelwe kumjikelezo wakho"</string>
+    <string name="taskbar_edu_settings_persistent" msgid="1387372982791296151">"Vula ukufuna kokuthinta Kumasethingi ukuze ufihle ngokuzenzakalela ibha yomsebenzi"</string>
+    <string name="taskbar_edu_features" msgid="3320337287472848162">"Yenza okwengeziwe nge-Taskbar"</string>
     <string name="taskbar_edu_close" msgid="887022990168191073">"Vala"</string>
     <string name="taskbar_edu_done" msgid="6880178093977704569">"Kwenziwe"</string>
     <string name="taskbar_button_home" msgid="2151398979630664652">"Ikhaya"</string>
@@ -104,6 +111,15 @@
     <string name="taskbar_button_recents" msgid="7273376136216613134">"Okwakamuva"</string>
     <string name="taskbar_button_notifications" msgid="7471740351507357318">"Izaziso"</string>
     <string name="taskbar_button_quick_settings" msgid="227662894293189391">"Amasethingi Asheshayo"</string>
+    <string name="taskbar_a11y_title" msgid="6432169809852243110">"I-Taskbar"</string>
+    <string name="taskbar_a11y_shown_title" msgid="6842833581088937713">"Ibha yomsebenzi ibonisiwe"</string>
+    <string name="taskbar_a11y_hidden_title" msgid="9154903639589659284">"Ibha yomsebenzi ifihliwe"</string>
+    <string name="taskbar_phone_a11y_title" msgid="4933360237131229395">"Ibha yokufuna"</string>
+    <string name="always_show_taskbar" msgid="3608801276107751229">"Bonisa i-Taskbar njalo."</string>
+    <string name="change_navigation_mode" msgid="9088393078736808968">"Shintsha imodi yokufuna"</string>
+    <string name="taskbar_divider_a11y_title" msgid="6608690309720242080">"Isihlukanisi se-Taskbar"</string>
     <string name="move_drop_target_top_or_left" msgid="2988702185049595807">"Hamba phezulu/kwesokunxele"</string>
     <string name="move_drop_target_bottom_or_right" msgid="5431393418797620162">"Hamba phansi/kwesokudla"</string>
+    <string name="quick_switch_overflow" msgid="6935266023013283353">"{count,plural, =1{Bonisa i-app e-# ngaphezulu.}one{Bonisa ama-app angu-# ngaphezulu.}other{Bonisa ama-app angu-# ngaphezulu.}}"</string>
+    <string name="quick_switch_split_task" msgid="5598194724255333896">"I-<xliff:g id="APP_NAME_1">%1$s</xliff:g> ne-<xliff:g id="APP_NAME_2">%2$s</xliff:g>"</string>
 </resources>
diff --git a/quickstep/res/values/attrs.xml b/quickstep/res/values/attrs.xml
index 336fb57..fb51919 100644
--- a/quickstep/res/values/attrs.xml
+++ b/quickstep/res/values/attrs.xml
@@ -19,4 +19,31 @@
         <attr name="android:textSize"/>
         <attr name="android:fontFamily"/>
     </declare-styleable>
+
+    <!--
+         TaskView specific attributes. These attributes are used to customize a TaskView view in
+         XML files.
+     -->
+    <declare-styleable name="TaskView">
+        <!-- Border color for a keyboard quick switch task views -->
+        <attr name="borderColor" format="color" />
+    </declare-styleable>
+
+    <!--
+         Gesture nav edu specific attributes. These attributes are used to customize Gesture nav edu
+         view lottie animation colors in XML files.
+     -->
+    <declare-styleable name="RootSandboxLayout">
+        <attr name="tutorialSubtitle" format="color" />
+        <attr name="surfaceContainer" format="color" />
+        <attr name="onSurfaceHome" format="color" />
+        <attr name="surfaceHome" format="color" />
+        <attr name="secondaryHome" format="color" />
+        <attr name="onSurfaceBack" format="color" />
+        <attr name="surfaceBack" format="color" />
+        <attr name="secondaryBack" format="color" />
+        <attr name="onSurfaceOverview" format="color" />
+        <attr name="surfaceOverview" format="color" />
+        <attr name="secondaryOverview" format="color" />
+    </declare-styleable>
 </resources>
diff --git a/quickstep/res/values/colors.xml b/quickstep/res/values/colors.xml
index 185c815..63f192c 100644
--- a/quickstep/res/values/colors.xml
+++ b/quickstep/res/values/colors.xml
@@ -13,7 +13,7 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
+<resources xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
 
     <color name="chip_hint_foreground_color">#fff</color>
     <color name="chip_scrim_start_color">#39000000</color>
@@ -25,10 +25,6 @@
 
     <!-- Taskbar -->
     <color name="taskbar_nav_icon_selection_ripple">#E0E0E0</color>
-    <color name="taskbar_nav_icon_light_color">#ffffff</color>
-    <!-- The dark navigation button color is only used in the rare cases that taskbar isn't drawing
-    its background and the underlying app has requested dark buttons. -->
-    <color name="taskbar_nav_icon_dark_color">#99000000</color>
     <color name="taskbar_stashed_handle_light_color">#EBffffff</color>
     <color name="taskbar_stashed_handle_dark_color">#99000000</color>
 
@@ -40,13 +36,10 @@
     <color name="gesture_tutorial_fake_task_view_color">#6DA1FF</color> <!-- Light Blue -->
     <!-- Must contrast gesture_tutorial_fake_wallpaper_color -->
     <color name="gesture_tutorial_fake_previous_task_view_color">#3C4043</color> <!-- Gray -->
-    <color name="gesture_tutorial_taskbar_color">#202124</color>
+    <color name="gesture_tutorial_taskbar_color">#E8EAED</color>
 
     <!-- Mock hotseat -->
-    <color name="mock_app_icon_1">#8AB4F8</color>
-    <color name="mock_app_icon_2">#F28B82</color>
-    <color name="mock_app_icon_3">#FDD663</color>
-    <color name="mock_app_icon_4">#81C995</color>
+    <color name="mock_app_icon">#BDC1C6</color>
     <color name="mock_search_bar">#3C4043</color>
 
     <!-- Mock conversation -->
@@ -76,4 +69,23 @@
 
     <color name="all_set_page_background">#FFFFFFFF</color>
 
+    <!-- Recents overview -->
+    <color name="recents_filter_icon">#333333</color>
+
+    <!-- Lottie light theme colors. -->
+    <color name="lottie_blue400">#669df6</color>
+    <color name="lottie_blue600">#1a73e8</color>
+    <color name="lottie_green400">#5bb974</color>
+    <color name="lottie_green600">#1e8e3e</color>
+    <color name="lottie_grey200">#e8eaed</color>
+    <color name="lottie_grey600">#80868b</color>
+    <color name="lottie_grey700">#5f6368</color>
+    <color name="lottie_red600">#d93025</color>
+    <color name="lottie_yellow400">#fcc934</color>
+    <color name="lottie_yellow600">#f9ab00</color>
+
+    <!-- Turn on work apps button -->
+    <color name="work_turn_on_stroke">?androidprv:attr/colorAccentPrimaryVariant</color>
+    <color name="work_fab_bg_color">?androidprv:attr/materialColorPrimaryFixedDim</color>
+    <color name="work_fab_icon_color">?androidprv:attr/materialColorOnPrimaryFixed</color>
 </resources>
\ No newline at end of file
diff --git a/quickstep/res/values/config.xml b/quickstep/res/values/config.xml
index 3b4a28b..8a3ffb5 100644
--- a/quickstep/res/values/config.xml
+++ b/quickstep/res/values/config.xml
@@ -25,6 +25,7 @@
     <string name="stats_log_manager_class" translatable="false">com.android.quickstep.logging.StatsLogCompatManager</string>
     <string name="test_information_handler_class" translatable="false">com.android.quickstep.QuickstepTestInformationHandler</string>
     <string name="window_manager_proxy_class" translatable="false">com.android.quickstep.util.SystemWindowManagerProxy</string>
+    <string name="widget_holder_factory_class" translatable="false">com.android.launcher3.uioverrides.QuickstepWidgetHolder$QuickstepHolderFactory</string>
 
     <!-- The number of thumbnails and icons to keep in the cache. The thumbnail cache size also
          determines how many thumbnails will be fetched in the background. -->
@@ -43,4 +44,14 @@
     <!-- Accessibility actions -->
     <item type="id" name="action_move_to_top_or_left" />
     <item type="id" name="action_move_to_bottom_or_right" />
+
+    <!-- The max scale for the wallpaper when it's zoomed in -->
+    <item name="config_wallpaperMaxScale" format="float" type="dimen">
+        @*android:dimen/config_wallpaperMaxScale
+    </item>
+
+    <string name="setup_wizard_pkg" translatable="false" />
+
+    <!-- This is a float because it is converted to dp later in DeviceProfile -->
+    <item name="taskbar_icon_size" type="dimen" format="float">48.4</item>
 </resources>
diff --git a/quickstep/res/values/dimens.xml b/quickstep/res/values/dimens.xml
index 3072a3e..bb4f74d 100644
--- a/quickstep/res/values/dimens.xml
+++ b/quickstep/res/values/dimens.xml
@@ -31,13 +31,19 @@
 
     <dimen name="overview_minimum_next_prev_size">50dp</dimen>
 
-    <!--  Task View  -->
+    <!--  Overview Task Views  -->
+    <!--  The primary task thumbnail uses up to this much of the total screen height/width  -->
+    <item name="overview_max_scale" format="float" type="dimen">0.7</item>
+    <!--  A touch target for icons, sometimes slightly larger than the icons themselves  -->
     <dimen name="task_thumbnail_icon_size">48dp</dimen>
+    <!--  The icon size for the focused task, placed in center of touch target  -->
     <dimen name="task_thumbnail_icon_drawable_size">44dp</dimen>
+    <!--  The space under the focused task icon  -->
     <dimen name="overview_task_margin">16dp</dimen>
+    <!--  The horizontal space between tasks  -->
     <dimen name="overview_page_spacing">16dp</dimen>
 
-    <item name="overview_max_scale" format="float" type="dimen">0.7</item>
+    <dimen name="task_icon_cache_default_icon_size">72dp</dimen>
     <item name="overview_modal_max_scale" format="float" type="dimen">1.1</item>
 
     <!-- Overrideable in overlay that provides the Overview Actions. -->
@@ -66,7 +72,6 @@
     <dimen name="quickstep_fling_threshold_speed">0.5dp</dimen>
 
     <!-- Launcher app transition -->
-    <item name="content_scale" format="float" type="dimen">0.97</item>
     <dimen name="closing_window_trans_y">115dp</dimen>
 
     <dimen name="quick_switch_scaling_scroll_threshold">100dp</dimen>
@@ -116,6 +121,19 @@
     <dimen name="gesture_tutorial_multi_row_task_view_spacing">72dp</dimen>
     <dimen name="gesture_tutorial_small_task_view_corner_radius">18dp</dimen>
     <dimen name="gesture_tutorial_mock_taskbar_height">80dp</dimen>
+    <dimen name="gesture_tutorial_back_gesture_exiting_app_margin">8dp</dimen>
+    <dimen name="gesture_tutorial_back_gesture_end_corner_radius">36dp</dimen>
+
+    <!-- Gesture Tutorial menu page -->
+    <dimen name="gesture_tutorial_menu_padding_horizontal">24dp</dimen>
+    <dimen name="gesture_tutorial_menu_padding_top">31dp</dimen>
+    <dimen name="gesture_tutorial_menu_padding_bottom">24dp</dimen>
+    <dimen name="gesture_tutorial_menu_button_height">0dp</dimen>
+    <dimen name="gesture_tutorial_menu_button_spacing">16dp</dimen>
+    <dimen name="gesture_tutorial_menu_button_radius">28dp</dimen>
+    <dimen name="gesture_tutorial_menu_done_button_top_spacing">0dp</dimen>
+    <dimen name="gesture_tutorial_menu_back_shape_bottom_margin">0dp</dimen>
+    <dimen name="gesture_tutorial_menu_done_button_spacing">72dp</dimen>
 
     <!-- Gesture Tutorial mock conversations -->
     <dimen name="gesture_tutorial_message_icon_size">44dp</dimen>
@@ -191,12 +209,19 @@
     <integer name="gesture_tutorial_webpage_extra_lines_visibility">0</integer> <!-- VISIBLE -->
 
     <!-- Gesture Tutorial mock taskbar -->
-    <dimen name="gesture_tutorial_taskbar_icon_size">44dp</dimen>
+    <dimen name="gesture_tutorial_taskbar_icon_size">52dp</dimen>
+    <dimen name="gesture_tutorial_taskbar_all_apps_mini_size">7dp</dimen>
     <dimen name="gesture_tutorial_taskbar_icon_corner_radius">100dp</dimen>
-    <dimen name="gesture_tutorial_taskbar_padding_start_end">52dp</dimen>
+    <dimen name="gesture_tutorial_taskbar_corner_radius">100dp</dimen>
+    <dimen name="gesture_tutorial_taskbar_padding">12dp</dimen>
+    <dimen name="gesture_tutorial_taskbar_icon_spacing">24dp</dimen>
+    <dimen name="gesture_tutorial_taskbar_margin_bottom">24dp</dimen>
 
     <!-- All Set page -->
     <dimen name="allset_page_margin_horizontal">40dp</dimen>
+    <dimen name="allset_page_allset_text_size">36sp</dimen>
+    <dimen name="allset_page_swipe_up_text_size">14sp</dimen>
+
     <dimen name="allset_title_margin_top">24dp</dimen>
     <dimen name="allset_title_icon_margin_top">32dp</dimen>
     <dimen name="allset_subtitle_margin_top">24dp</dimen>
@@ -239,7 +264,7 @@
     <dimen name="navigation_key_padding">0dp</dimen>
 
     <!-- Floating rotation button -->
-    <dimen name="floating_rotation_button_diameter">40dp</dimen>
+    <dimen name="floating_rotation_button_diameter">52dp</dimen>
     <dimen name="floating_rotation_button_min_margin">20dp</dimen>
     <dimen name="floating_rotation_button_taskbar_left_margin">20dp</dimen>
     <dimen name="floating_rotation_button_taskbar_bottom_margin">10dp</dimen>
@@ -247,25 +272,115 @@
     <!-- Taskbar -->
     <dimen name="taskbar_size">@*android:dimen/taskbar_frame_height</dimen>
     <dimen name="taskbar_ime_size">48dp</dimen>
-    <dimen name="taskbar_icon_touch_size">48dp</dimen>
+    <dimen name="taskbar_icon_min_touch_size">48dp</dimen>
+    <!-- Note that this applies to both sides of all icons, so visible space is double this. -->
+    <dimen name="taskbar_icon_spacing">12dp</dimen>
     <dimen name="taskbar_icon_drag_icon_size">54dp</dimen>
     <dimen name="taskbar_folder_margin">16dp</dimen>
-    <dimen name="taskbar_nav_buttons_spacing">16dp</dimen>
+    <dimen name="taskbar_contextual_button_padding">16dp</dimen>
     <dimen name="taskbar_contextual_padding_top">8dp</dimen>
     <dimen name="taskbar_nav_buttons_size">44dp</dimen>
-    <dimen name="taskbar_contextual_button_margin">40dp</dimen>
-    <dimen name="taskbar_hotseat_nav_spacing">42dp</dimen>
+    <dimen name="taskbar_split_instructions_margin">48dp</dimen>
+    <dimen name="taskbar_contextual_button_margin">120dp</dimen>
+    <dimen name="taskbar_suw_insets">48dp</dimen>
+    <dimen name="taskbar_suw_frame">48dp</dimen>
+    <dimen name="taskbar_hotseat_nav_spacing">24dp</dimen>
     <dimen name="taskbar_contextual_buttons_size">35dp</dimen>
     <dimen name="taskbar_stashed_size">24dp</dimen>
     <dimen name="taskbar_stashed_handle_width">220dp</dimen>
+    <dimen name="taskbar_stashed_small_screen">108dp</dimen>
     <dimen name="taskbar_unstash_input_area">316dp</dimen>
     <dimen name="taskbar_stashed_handle_height">4dp</dimen>
-    <dimen name="taskbar_edu_wave_anim_trans_y">25dp</dimen>
-    <dimen name="taskbar_edu_wave_anim_trans_y_return_overshoot">4dp</dimen>
+    <dimen name="taskbar_stashed_screen_edge_hover_deadzone_height">10dp</dimen>
+    <dimen name="taskbar_stashed_below_hover_deadzone_height">1dp</dimen>
+    <dimen name="taskbar_edu_horizontal_margin">112dp</dimen>
     <dimen name="taskbar_nav_buttons_width_kids">88dp</dimen>
     <dimen name="taskbar_nav_buttons_height_kids">40dp</dimen>
     <dimen name="taskbar_nav_buttons_corner_radius_kids">40dp</dimen>
     <dimen name="taskbar_back_button_left_margin_kids">48dp</dimen>
     <dimen name="taskbar_home_button_left_margin_kids">48dp</dimen>
     <dimen name="taskbar_icon_size_kids">32dp</dimen>
+    <dimen name="taskbar_all_apps_button_translation_x_offset">6dp</dimen>
+
+
+    <!-- Transient taskbar -->
+    <dimen name="transient_taskbar_padding">12dp</dimen>
+    <dimen name="transient_taskbar_min_width">150dp</dimen>
+    <dimen name="transient_taskbar_bottom_margin">24dp</dimen>
+    <dimen name="transient_taskbar_shadow_blur">40dp</dimen>
+    <dimen name="transient_taskbar_key_shadow_distance">10dp</dimen>
+    <dimen name="transient_taskbar_stashed_height">32dp</dimen>
+    <dimen name="transient_taskbar_all_apps_button_translation_x_offset">4dp</dimen>
+    <dimen name="transient_taskbar_stash_spring_velocity_dp_per_s">400dp</dimen>
+
+    <!-- An additional touch slop to prevent x-axis movement during the swipe up to show taskbar -->
+    <dimen name="transient_taskbar_clamped_offset_bound">16dp</dimen>
+    <!-- Taskbar swipe up thresholds -->
+    <dimen name="taskbar_from_nav_threshold">40dp</dimen>
+    <dimen name="taskbar_app_window_threshold">88dp</dimen>
+    <dimen name="taskbar_home_overview_threshold">156dp</dimen>
+    <dimen name="taskbar_catch_up_threshold">264dp</dimen>
+    <!-- Taskbar swipe down threshold -->
+    <dimen name="taskbar_to_nav_threshold">24dp</dimen>
+
+    <!--  Taskbar 3 button spacing  -->
+    <dimen name="taskbar_button_space_inbetween">24dp</dimen>
+    <dimen name="taskbar_button_space_inbetween_phone">40dp</dimen>
+    <dimen name="taskbar_button_margin_split">48dp</dimen>
+    <dimen name="taskbar_button_margin_6_5">75dp</dimen>
+    <dimen name="taskbar_button_margin_default">48dp</dimen>
+
+    <!-- Taskbar education tooltip -->
+    <dimen name="taskbar_edu_tooltip_elevation">14dp</dimen>
+    <dimen name="taskbar_edu_tooltip_horizontal_margin">32dp</dimen>
+    <dimen name="taskbar_edu_tooltip_vertical_margin">24dp</dimen>
+    <dimen name="taskbar_edu_tooltip_enter_y_delta">20dp</dimen>
+    <dimen name="taskbar_edu_tooltip_exit_y_delta">-10dp</dimen>
+    <dimen name="taskbar_edu_swipe_lottie_width">348dp</dimen>
+    <dimen name="taskbar_edu_swipe_lottie_height">217dp</dimen>
+    <dimen name="taskbar_edu_features_lottie_width">170dp</dimen>
+    <dimen name="taskbar_edu_features_lottie_height">106dp</dimen>
+    <dimen name="taskbar_edu_features_horizontal_spacing">24dp</dimen>
+    <dimen name="taskbar_edu_features_tooltip_width_persistent">624dp</dimen>
+    <dimen name="taskbar_edu_features_tooltip_width_transient">428dp</dimen>
+
+    <!--- Taskbar Pinning -->
+    <dimen name="taskbar_pinning_popup_menu_width">300dp</dimen>
+
+    <!-- Recents overview -->
+    <dimen name="recents_filter_icon_size">30dp</dimen>
+
+    <!-- Bubble bar -->
+    <dimen name="bubblebar_size">72dp</dimen>
+    <dimen name="bubblebar_stashed_handle_width">55dp</dimen>
+    <dimen name="bubblebar_stashed_size">@dimen/transient_taskbar_stashed_height</dimen>
+    <dimen name="bubblebar_stashed_handle_height">@dimen/taskbar_stashed_handle_height</dimen>
+    <dimen name="bubblebar_pointer_size">8dp</dimen>
+
+    <dimen name="bubblebar_icon_size">50dp</dimen>
+    <dimen name="bubblebar_badge_size">24dp</dimen>
+    <dimen name="bubblebar_icon_overlap">12dp</dimen>
+    <dimen name="bubblebar_icon_spacing">3dp</dimen>
+    <dimen name="bubblebar_icon_elevation">1dp</dimen>
+
+    <!-- Launcher splash screen -->
+    <!-- Note: keep this value in sync with the WindowManager/Shell dimens.xml -->
+    <!--     starting_surface_exit_animation_window_shift_length -->
+    <dimen name="starting_surface_exit_animation_window_shift_length">20dp</dimen>
+
+    <!-- Keyboard Quick Switch -->
+    <dimen name="keyboard_quick_switch_border_width">4dp</dimen>
+    <dimen name="keyboard_quick_switch_taskview_width">104dp</dimen>
+    <dimen name="keyboard_quick_switch_taskview_height">134dp</dimen>
+    <dimen name="keyboard_quick_switch_taskview_icon_size">28dp</dimen>
+    <dimen name="keyboard_quick_switch_taskview_icon_margin">4dp</dimen>
+    <dimen name="keyboard_quick_switch_recents_icon_size">20dp</dimen>
+    <dimen name="keyboard_quick_switch_margin_top">56dp</dimen>
+    <dimen name="keyboard_quick_switch_margin_ends">16dp</dimen>
+    <dimen name="keyboard_quick_switch_view_spacing">16dp</dimen>
+    <dimen name="keyboard_quick_switch_split_view_spacing">2dp</dimen>
+    <dimen name="keyboard_quick_switch_view_radius">28dp</dimen>
+    <dimen name="keyboard_quick_switch_task_view_radius">16dp</dimen>
+    <dimen name="keyboard_quick_switch_no_recent_items_icon_size">24dp</dimen>
+    <dimen name="keyboard_quick_switch_no_recent_items_icon_margin">8dp</dimen>
 </resources>
diff --git a/quickstep/res/values/override.xml b/quickstep/res/values/override.xml
index 705ec9d..4f472f0 100644
--- a/quickstep/res/values/override.xml
+++ b/quickstep/res/values/override.xml
@@ -25,4 +25,6 @@
 
   <string name="model_delegate_class" translatable="false">com.android.launcher3.model.QuickstepModelDelegate</string>
 
+  <string name="secondary_display_predictions_class" translatable="false">com.android.launcher3.secondarydisplay.SecondaryDisplayPredictionsImpl</string>
+
 </resources>
diff --git a/quickstep/res/values/strings.xml b/quickstep/res/values/strings.xml
index 81b0dd2..bd69f9f 100644
--- a/quickstep/res/values/strings.xml
+++ b/quickstep/res/values/strings.xml
@@ -36,6 +36,9 @@
     <!-- Recents: Title of a button that clears the task list, i.e. closes all tasks. [CHAR LIMIT=30] -->
     <string name="recents_clear_all">Clear all</string>
 
+    <!-- Recents: Title of a button that goes back from displaying tasks filtered by package name to displaying all tasks [CHAR LIMIT=30] -->
+    <string name="recents_back" translatable="false">Back</string>
+
     <!-- Accessibility title for the list of recent apps [CHAR_LIMIT=none] -->
     <string name="accessibility_recent_apps">Recent apps</string>
 
@@ -68,7 +71,6 @@
 
     <string name="hotseat_edu_message_migrate">Easily access your most-used apps right on the Home screen. Suggestions will change based on your routines. Apps on the bottom row will move up to your Home screen. </string>
     <string name="hotseat_edu_message_migrate_landscape">Easily access your most-used apps right on the Home screen. Suggestions will change based on your routines. Apps in favorites row will move to your Home screen. </string>
-    <string name="hotseat_edu_message_migrate_alt">Easily access your most-used apps, right on the Home screen. Suggestions will change based on your routines. Apps on the bottom row will move to a new folder.</string>
 
     <!-- Button text to opt in for fully predicted hotseat -->
     <string name="hotseat_edu_accept">Get app suggestions</string>
@@ -111,6 +113,8 @@
     <string name="back_gesture_intro_subtitle">To go back to the last screen, swipe from the left or right edge to the middle of the screen.</string>
     <!-- Introduction subtitle for the Back gesture tutorial that will be spoken by screen readers. [CHAR LIMIT=200] -->
     <string name="back_gesture_spoken_intro_subtitle">To go back to the last screen, swipe with 2 fingers from the left or right edge to the middle of the screen.</string>
+    <!-- Title of the gesture tutorial section educating users on how to go back to the previous screen. [CHAR LIMIT=100] -->
+    <string name="back_gesture_tutorial_title">Go back</string>
 
     <string name="home_gesture_feedback_swipe_too_far_from_edge">Make sure you swipe up from the bottom edge of the screen.</string>
     <!-- Feedback shown during interactive parts of Home gesture tutorial when the Overview gesture is detected. [CHAR LIMIT=100] -->
@@ -127,6 +131,10 @@
     <string name="home_gesture_intro_subtitle">Swipe up from the bottom of your screen. This gesture always takes you to the Home screen.</string>
     <!-- Introduction subtitle for the Home gesture tutorial that will be spoken by screen readers. [CHAR LIMIT=100] -->
     <string name="home_gesture_spoken_intro_subtitle">Swipe up with 2 fingers from the bottom of the screen. This gesture always takes you to the Home screen.</string>
+    <!-- Title of the gesture tutorial section educating users on how to go to the home screen. [CHAR LIMIT=100] -->
+    <string name="home_gesture_tutorial_title">Go home</string>
+    <!-- Subtitle of the gesture tutorial section educating users on how to go to the home screen [CHAR LIMIT=100] -->
+    <string name="home_gesture_tutorial_subtitle">To go to your home screen at any time, swipe up from the bottom of your screen</string>
 
     <!-- Feedback shown during interactive parts of Overview gesture tutorial when the gesture is started too far from the edge. [CHAR LIMIT=100] -->
     <string name="overview_gesture_feedback_swipe_too_far_from_edge">Make sure you swipe up from the bottom edge of the screen.</string>
@@ -144,6 +152,8 @@
     <string name="overview_gesture_intro_subtitle">To switch between apps, swipe up from the bottom of your screen, hold, then release.</string>
     <!-- Introduction subtitle for the Overview gesture tutorial that will be spoken by screen readers. [CHAR LIMIT=100] -->
     <string name="overview_gesture_spoken_intro_subtitle">To switch between apps, swipe up with 2 fingers from the bottom of your screen, hold, then release.</string>
+    <!-- Title of the gesture tutorial section educating users on how to switch between apps. [CHAR LIMIT=100] -->
+    <string name="overview_gesture_tutorial_title">Switch apps</string>
 
     <!-- Title shown during interactive part of Assistant gesture tutorial. [CHAR LIMIT=30] -->
     <string name="assistant_gesture_tutorial_playground_title" translatable="false">Tutorial: Assistant</string>
@@ -187,11 +197,13 @@
     <!-- Title of "All Set" page [CHAR LIMIT=NONE] -->
     <string name="allset_title">All set!</string>
     <!-- Hint string at the bottom of "All Set" page [CHAR LIMIT=NONE] -->
-    <string name="allset_hint">Swipe up to go Home</string>
-    <!-- Description of "All Set" page on phones [CHAR LIMIT=NONE] -->
-    <string name="allset_description">You\u2019re ready to start using your phone</string>
-    <!-- Description of "All Set" page on tablets [CHAR LIMIT=NONE] -->
-    <string name="allset_description_tablet">You\u2019re ready to start using your tablet</string>
+    <string name="allset_hint">Swipe up to go home</string>
+    <!-- Hint string at the bottom of "All Set" page for button navigation [CHAR LIMIT=NONE] -->
+    <string name="allset_button_hint">Tap the home button to go to your home screen</string>
+    <!-- Description of "All Set" page on the user's device [CHAR LIMIT=NONE] -->
+    <string name="allset_description_generic">You\u2019re ready to start using your <xliff:g id="device" example="Pixel 6">%1$s</xliff:g></string>
+    <!-- A default device name to use in the description of the "All Set" page [CHAR LIMIT=NONE] -->
+    <string name="default_device_name">device</string>
     <!-- String linking to navigation settings on "All Set" page [CHAR LIMIT=NONE] -->
     <string name="allset_navigation_settings"><annotation id="link">System navigation settings</annotation></string>
 
@@ -203,9 +215,9 @@
     <!-- Label for a button that enters split screen selection mode. [CHAR_LIMIT=20] -->
     <string name="action_split">Split</string>
     <!-- Label for toast with instructions for split screen selection mode. [CHAR_LIMIT=50] -->
-    <string name="toast_split_select_app">Tap another app to use splitscreen</string>
+    <string name="toast_split_select_app">Tap another app to use split screen</string>
     <!-- Label for toast when app selected for split isn't supported. [CHAR_LIMIT=50] -->
-    <string name="toast_split_app_unsupported">App does not support split-screen.</string>
+    <string name="toast_split_app_unsupported">Choose another app to use split screen</string>
     <!-- Message shown when an action is blocked by a policy enforced by the app or the organization managing the device. [CHAR_LIMIT=NONE] -->
     <string name="blocked_by_policy">This action isn\'t allowed by the app or your organization</string>
 
@@ -223,23 +235,18 @@
     <string name="accessibility_rotate_button">Rotate screen</string>
 
     <!-- ******* Taskbar Edu ******* -->
-    <!-- Accessibility text spoken when the taskbar education panel appears [CHAR_LIMIT=NONE] -->
-    <string name="taskbar_edu_opened">Taskbar education appeared</string>
-    <!-- Accessibility text spoken when the taskbar education panel disappears [CHAR_LIMIT=NONE] -->
-    <string name="taskbar_edu_closed">Taskbar education closed</string>
-    <!-- Text in dialog that lets a user know how they can use the taskbar to switch apps on their device.
-         [CHAR_LIMIT=60] -->
-    <string name="taskbar_edu_switch_apps">Use the taskbar to switch apps</string>
-    <!-- Text in dialog that lets a user know how they can use the taskbar to use multiple apps at once on their device.
-         [CHAR_LIMIT=60] -->
-    <string name="taskbar_edu_splitscreen">Drag to the side to use two apps at once</string>
-    <!-- Text in dialog that lets a user know how they can hide the taskbar on their device.
-         [CHAR_LIMIT=60] -->
-    <string name="taskbar_edu_stashing">Touch &amp; hold to hide the taskbar</string>
-    <!-- Text on button to go to the next screen of a tutorial [CHAR_LIMIT=16] -->
-    <string name="taskbar_edu_next">Next</string>
-    <!-- Text on button to go to the previous screen of a tutorial [CHAR_LIMIT=16] -->
-    <string name="taskbar_edu_previous">Back</string>
+    <!-- Accessibility title for the Taskbar education window. [CHAR_LIMIT=NONE] -->
+    <string name="taskbar_edu_a11y_title">Taskbar education</string>
+    <!-- Text in dialog that lets a user know how they can use the Taskbar to use multiple apps at once on their device. [CHAR_LIMIT=60] -->
+    <string name="taskbar_edu_splitscreen">Drag an app to the side to use 2 apps at once</string>
+    <!-- Text in dialog that lets a user know how they can show the Taskbar on their device. [CHAR_LIMIT=60] -->
+    <string name="taskbar_edu_stashing">Slow-swipe up to show the Taskbar</string>
+    <!-- Text in dialog that lets a user know how the Taskbar suggests apps based on their usage. [CHAR_LIMIT=60] -->
+    <string name="taskbar_edu_suggestions">Get app suggestions based on your routine</string>
+    <!-- Text in dialog that lets a user know that Taskbar will auto-hide, if the user switches to gesture navigation in system settings. [CHAR_LIMIT=90] -->
+    <string name="taskbar_edu_settings_persistent">Turn on gesture navigation in Settings to auto-hide the Taskbar</string>
+    <!-- Title in dialog that shows a user what they can do with the Taskbar. [CHAR_LIMIT=60] -->
+    <string name="taskbar_edu_features">Do more with the Taskbar</string>
     <!-- Text on button to exit a tutorial [CHAR_LIMIT=16] -->
     <string name="taskbar_edu_close">Close</string>
     <!-- Text on button to finish a tutorial [CHAR_LIMIT=16] -->
@@ -258,9 +265,33 @@
     <string name="taskbar_button_notifications">Notifications</string>
     <!-- Content description for quick settings button [CHAR_LIMIT=16] -->
     <string name="taskbar_button_quick_settings">Quick Settings</string>
+    <!-- Accessibility title for the Taskbar window. [CHAR_LIMIT=NONE] -->
+    <string name="taskbar_a11y_title">Taskbar</string>
+    <!-- Accessibility title for the Taskbar window appeared. [CHAR_LIMIT=NONE] -->
+    <string name="taskbar_a11y_shown_title">Taskbar shown</string>
+    <!-- Accessibility title for the Taskbar window being close. [CHAR_LIMIT=NONE] -->
+    <string name="taskbar_a11y_hidden_title">Taskbar hidden</string>
+    <!-- Accessibility title for the Taskbar window on phones. [CHAR_LIMIT=NONE] -->
+    <string name="taskbar_phone_a11y_title">Navigation bar</string>
+    <!-- Text in popup dialog for user to switch between always showing Taskbar or not. [CHAR LIMIT=30] -->
+    <string name="always_show_taskbar">Always show Taskbar</string>
+    <!-- Text in popup dialog for user to switch between system navigation modes. [CHAR LIMIT=30] -->
+    <string name="change_navigation_mode">Change navigation mode</string>
+    <!-- Accessibility title for the Taskbar vertical divider icon. [CHAR_LIMIT=NONE] -->
+    <string name="taskbar_divider_a11y_title">Taskbar Divider</string>
 
-    <!-- Label for moving drop target to the top or left side of the screen, depending on orientation (from the taskbar only). -->
+
+    <!-- Label for moving drop target to the top or left side of the screen, depending on orientation (from the Taskbar only). -->
     <string name="move_drop_target_top_or_left">Move to top&#47;left</string>
-    <!-- Label for moving drop target to the bottom or right side of the screen, depending on orientation (from the taskbar only). -->
+    <!-- Label for moving drop target to the bottom or right side of the screen, depending on orientation (from the Taskbar only). -->
     <string name="move_drop_target_bottom_or_right">Move to bottom&#47;right</string>
+
+    <!-- Label for quick switch tile showing how many more apps are available [CHAR LIMIT=NONE] -->
+    <string name="quick_switch_overflow">{count, plural,
+            =1{Show # more app.}
+            other{Show # more apps.}
+        }</string>
+
+    <!-- Accessibility label for quick switch tiles showing split tasks [CHAR LIMIT=NONE] -->
+    <string name="quick_switch_split_task"><xliff:g id="app_name_1" example="Chrome">%1$s</xliff:g> and <xliff:g id="app_name_2" example="Gmail">%2$s</xliff:g></string>
 </resources>
diff --git a/quickstep/res/values/styles.xml b/quickstep/res/values/styles.xml
index 7225220..612682a 100644
--- a/quickstep/res/values/styles.xml
+++ b/quickstep/res/values/styles.xml
@@ -14,13 +14,14 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<resources>
+<resources
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
 
     <style name="TextAppearance.GestureTutorial"
-        parent="android:TextAppearance.Material.Body1" />
+        parent="@android:style/Theme.DeviceDefault.DayNight" />
 
     <style name="TextAppearance.GestureTutorial.CallToAction"
-        parent="android:TextAppearance.Material.Body2" />
+        parent="@android:style/Theme.DeviceDefault.DayNight" />
 
     <style name="TextAppearance.GestureTutorial.Title"
         parent="TextAppearance.GestureTutorial">
@@ -41,16 +42,38 @@
         parent="TextAppearance.GestureTutorial">
         <item name="android:gravity">start</item>
         <item name="android:textColor">?android:attr/textColorPrimary</item>
-        <item name="android:fontFamily">google-sans-regular</item>
+        <item name="android:fontFamily">google-sans</item>
         <item name="android:letterSpacing">0.03</item>
         <item name="android:textSize">36sp</item>
         <item name="android:lineHeight">44sp</item>
     </style>
 
+    <style name="TextAppearance.GestureTutorial.MenuButton"
+        parent="TextAppearance.GestureTutorial.Feedback.Title">
+        <item name="android:gravity">center</item>
+        <item name="fontWeight">400</item>
+    </style>
+
+    <style name="TextAppearance.GestureTutorial.MenuButton.Home"
+        parent="TextAppearance.GestureTutorial.MenuButton">
+        <item name="android:textColor">?attr/secondaryHome</item>
+    </style>
+
+    <style name="TextAppearance.GestureTutorial.MenuButton.Back"
+        parent="TextAppearance.GestureTutorial.MenuButton">
+        <item name="android:textColor">?attr/secondaryBack</item>
+    </style>
+
+    <style name="TextAppearance.GestureTutorial.MenuButton.Overview"
+        parent="TextAppearance.GestureTutorial.MenuButton">
+        <item name="android:textColor">?attr/secondaryOverview</item>
+    </style>
+
     <style name="TextAppearance.GestureTutorial.Feedback.Title.AllSet"
         parent="TextAppearance.GestureTutorial.Feedback.Title">
         <item name="android:letterSpacing">0.03</item>
         <item name="android:lineHeight">44sp</item>
+        <item name="android:textSize">@dimen/allset_page_allset_text_size</item>
     </style>
 
     <style name="TextAppearance.GestureTutorial.Dialog.Title"
@@ -101,10 +124,26 @@
     <style name="TextAppearance.GestureTutorial.ButtonLabel"
         parent="TextAppearance.GestureTutorial.CallToAction">
         <item name="android:gravity">center</item>
-        <item name="android:textColor">?android:attr/textColorPrimaryInverse</item>
+        <item name="android:textColor">?androidprv:attr/materialColorOnPrimary</item>
         <item name="android:letterSpacing">0.02</item>
         <item name="android:textSize">16sp</item>
         <item name="android:textAllCaps">false</item>
+        <item name="android:fontFamily">google-sans-text-medium</item>
+    </style>
+
+    <style name="TextAppearance.GestureTutorial.ButtonLabel.Home"
+        parent="TextAppearance.GestureTutorial.ButtonLabel">
+        <item name="android:textColor">?attr/onSurfaceHome</item>
+    </style>
+
+    <style name="TextAppearance.GestureTutorial.ButtonLabel.Back"
+        parent="TextAppearance.GestureTutorial.ButtonLabel">
+        <item name="android:textColor">?attr/onSurfaceBack</item>
+    </style>
+
+    <style name="TextAppearance.GestureTutorial.ButtonLabel.Overview"
+        parent="TextAppearance.GestureTutorial.ButtonLabel">
+        <item name="android:textColor">?attr/onSurfaceOverview</item>
     </style>
 
     <style name="TextAppearance.GestureTutorial.CancelButtonLabel"
@@ -122,6 +161,50 @@
         <item name="android:textSize">14sp</item>
     </style>
 
+    <style name="TextAppearance.GestureTutorial.MainTitle"
+        parent="TextAppearance.GestureTutorial">
+        <item name="android:textSize">36sp</item>
+        <item name="android:fontFamily">google-sans</item>
+    </style>
+
+    <style name="TextAppearance.GestureTutorial.MainTitle.Home"
+        parent="TextAppearance.GestureTutorial.MainTitle">
+        <item name="android:textColor">?attr/onSurfaceHome</item>
+    </style>
+
+    <style name="TextAppearance.GestureTutorial.MainTitle.Back"
+        parent="TextAppearance.GestureTutorial.MainTitle">
+        <item name="android:textColor">?attr/onSurfaceBack</item>
+    </style>
+
+    <style name="TextAppearance.GestureTutorial.MainTitle.Overview"
+        parent="TextAppearance.GestureTutorial.MainTitle">
+        <item name="android:textColor">?attr/onSurfaceOverview</item>
+    </style>
+
+    <style name="TextAppearance.GestureTutorial.MainTitle.Success.Home"
+        parent="TextAppearance.GestureTutorial.MainTitle.Home">
+        <item name="android:textColor">?attr/secondaryHome</item>
+    </style>
+
+    <style name="TextAppearance.GestureTutorial.MainTitle.Success.Back"
+        parent="TextAppearance.GestureTutorial.MainTitle.Back">
+        <item name="android:textColor">?attr/secondaryBack</item>
+    </style>
+
+    <style name="TextAppearance.GestureTutorial.MainTitle.Success.Overview"
+        parent="TextAppearance.GestureTutorial.MainTitle.Overview">
+        <item name="android:textColor">?attr/secondaryOverview</item>
+    </style>
+
+    <style name="TextAppearance.GestureTutorial.MainSubtitle"
+        parent="TextAppearance.GestureTutorial.Subtitle">
+        <item name="android:textSize">16sp</item>
+        <item name="android:letterSpacing">0.02</item>
+        <item name="android:fontFamily">google-sans-text</item>
+        <item name="android:textColor">?attr/tutorialSubtitle</item>
+    </style>
+
     <style name="AllSetTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar">
         <item name="android:navigationBarColor">@android:color/transparent</item>
         <item name="android:statusBarColor">@android:color/transparent</item>
@@ -140,6 +223,8 @@
 
     <style name="OverviewActionButton"
         parent="@android:style/Widget.DeviceDefault.Button.Borderless">
+        <item name="android:paddingTop">4dp</item>
+        <item name="android:paddingBottom">4dp</item>
         <item name="android:textColor">@color/overview_button</item>
         <item name="android:drawableTint">@color/overview_button</item>
         <item name="android:tint">?android:attr/textColorPrimary</item>
@@ -151,6 +236,8 @@
         <item name="android:background">@drawable/bg_overview_clear_all_button</item>
         <item name="android:minWidth">96dp</item>
         <item name="android:minHeight">48dp</item>
+        <item name="android:paddingStart">12dp</item>
+        <item name="android:paddingEnd">12dp</item>
         <item name="android:stateListAnimator">@null</item>
     </style>
 
@@ -159,27 +246,48 @@
         <item name="iconDisplay">taskbar</item>
     </style>
 
-    <style name="TaskbarEdu.Button.Close" parent="@android:style/Widget.Material.Button">
-        <item name="android:background">@drawable/button_taskbar_edu_bordered</item>
-        <item name="android:stateListAnimator">@null</item>
-        <item name="android:textSize">16sp</item>
-        <item name="android:padding">4dp</item>
-    </style>
-
-    <style name="TaskbarEdu.Button.Next" parent="@android:style/Widget.Material.Button">
+    <style name="TaskbarEdu.Button.Done" parent="@android:style/Widget.Material.Button">
         <item name="android:background">@drawable/button_taskbar_edu_colored</item>
         <item name="android:stateListAnimator">@null</item>
         <item name="android:textSize">16sp</item>
-        <item name="android:padding">4dp</item>
+        <item name="android:minHeight">36dp</item>
     </style>
 
-    <style name="TextAppearance.TaskbarEdu.Title"
-        parent="@android:style/TextAppearance.DeviceDefault.DialogWindowTitle" >
-        <item name="android:layout_marginHorizontal">16dp</item>
+    <style name="TextAppearance.TaskbarEduTooltip.Title" parent="@android:style/TextAppearance.DeviceDefault.DialogWindowTitle">
         <item name="android:gravity">center_horizontal</item>
         <item name="android:fontFamily">google-sans</item>
-        <item name="android:textColor">?android:attr/textColorPrimary</item>
         <item name="android:textSize">24sp</item>
-        <item name="android:lines">2</item>
     </style>
-</resources>
\ No newline at end of file
+
+    <style name="TextAppearance.TaskbarEduTooltip.Subtext" parent="android:TextAppearance.Material.Body1">
+        <item name="android:layout_marginTop">16dp</item>
+        <item name="android:fontFamily">google-sans-text</item>
+        <item name="android:textSize">14sp</item>
+    </style>
+
+    <style name="KeyboardQuickSwitchText">
+        <item name="fontFamily">google-sans-text</item>
+        <item name="android:textSize">14sp</item>
+        <item name="android:textColor">?androidprv:attr/materialColorOnSurface</item>
+        <item name="lineHeight">20sp</item>
+    </style>
+
+    <style name="KeyboardQuickSwitchText.OnBackground" parent="KeyboardQuickSwitchText">
+        <item name="android:textColor">?androidprv:attr/materialColorOnSurfaceInverse</item>
+    </style>
+
+    <style name="GestureTutorialActivity" parent="@style/AppTheme">
+        <item name="background">@android:color/transparent</item>
+        <item name="tutorialSubtitle">@android:color/black</item>
+        <item name="surfaceContainer">?androidprv:attr/materialColorSurfaceContainer</item>
+        <item name="onSurfaceHome">?androidprv:attr/materialColorPrimaryFixed</item>
+        <item name="surfaceHome">@android:color/system_accent1_300</item>
+        <item name="secondaryHome">?androidprv:attr/materialColorOnPrimaryFixedVariant</item>
+        <item name="onSurfaceBack">?androidprv:attr/materialColorTertiaryFixed</item>
+        <item name="surfaceBack">@android:color/system_accent3_300</item>
+        <item name="secondaryBack">?androidprv:attr/materialColorOnTertiaryFixedVariant</item>
+        <item name="onSurfaceOverview">?androidprv:attr/materialColorPrimaryFixed</item>
+        <item name="surfaceOverview">@android:color/system_accent2_300</item>
+        <item name="secondaryOverview">?androidprv:attr/materialColorOnSecondaryFixedVariant</item>
+    </style>
+</resources>
diff --git a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java
deleted file mode 100644
index 2239102..0000000
--- a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java
+++ /dev/null
@@ -1,641 +0,0 @@
-/*
- * Copyright (C) 2019 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.launcher3;
-
-import static com.android.launcher3.AbstractFloatingView.TYPE_ALL;
-import static com.android.launcher3.AbstractFloatingView.TYPE_HIDE_BACK_BUTTON;
-import static com.android.launcher3.LauncherState.FLAG_HIDE_BACK_BUTTON;
-import static com.android.launcher3.LauncherState.NORMAL;
-import static com.android.launcher3.LauncherState.NO_OFFSET;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_SPLIT_FROM_WORKSPACE;
-import static com.android.launcher3.model.data.ItemInfo.NO_MATCHING_ID;
-import static com.android.launcher3.popup.QuickstepSystemShortcut.getSplitSelectShortcutByPosition;
-import static com.android.launcher3.taskbar.LauncherTaskbarUIController.ALL_APPS_PAGE_PROGRESS_INDEX;
-import static com.android.launcher3.taskbar.LauncherTaskbarUIController.MINUS_ONE_PAGE_PROGRESS_INDEX;
-import static com.android.launcher3.taskbar.LauncherTaskbarUIController.WIDGETS_PAGE_PROGRESS_INDEX;
-import static com.android.launcher3.util.DisplayController.CHANGE_ACTIVE_SCREEN;
-import static com.android.launcher3.util.DisplayController.CHANGE_NAVIGATION_MODE;
-import static com.android.launcher3.util.DisplayController.NavigationMode.TWO_BUTTONS;
-import static com.android.launcher3.util.Executors.THREAD_POOL_EXECUTOR;
-import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
-import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_HOME_KEY;
-
-import android.animation.AnimatorSet;
-import android.animation.ValueAnimator;
-import android.app.ActivityManager;
-import android.app.ActivityOptions;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentSender;
-import android.hardware.SensorManager;
-import android.hardware.devicestate.DeviceStateManager;
-import android.os.Bundle;
-import android.os.CancellationSignal;
-import android.os.IBinder;
-import android.view.Display;
-import android.view.View;
-import android.window.SplashScreen;
-
-import androidx.annotation.Nullable;
-
-import com.android.launcher3.config.FeatureFlags;
-import com.android.launcher3.dragndrop.DragOptions;
-import com.android.launcher3.model.WellbeingModel;
-import com.android.launcher3.model.data.ItemInfo;
-import com.android.launcher3.popup.SystemShortcut;
-import com.android.launcher3.proxy.ProxyActivityStarter;
-import com.android.launcher3.proxy.StartActivityParams;
-import com.android.launcher3.statehandlers.BackButtonAlphaHandler;
-import com.android.launcher3.statehandlers.DepthController;
-import com.android.launcher3.statemanager.StateManager.StateHandler;
-import com.android.launcher3.taskbar.LauncherTaskbarUIController;
-import com.android.launcher3.taskbar.TaskbarManager;
-import com.android.launcher3.uioverrides.RecentsViewStateController;
-import com.android.launcher3.util.ActivityOptionsWrapper;
-import com.android.launcher3.util.DisplayController;
-import com.android.launcher3.util.DisplayController.NavigationMode;
-import com.android.launcher3.util.IntSet;
-import com.android.launcher3.util.ObjectWrapper;
-import com.android.launcher3.util.RunnableList;
-import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption;
-import com.android.launcher3.util.UiThreadHelper;
-import com.android.quickstep.OverviewCommandHelper;
-import com.android.quickstep.RecentsModel;
-import com.android.quickstep.SystemUiProxy;
-import com.android.quickstep.TaskUtils;
-import com.android.quickstep.TouchInteractionService.TISBinder;
-import com.android.quickstep.util.LauncherUnfoldAnimationController;
-import com.android.quickstep.util.ProxyScreenStatusProvider;
-import com.android.quickstep.util.RemoteAnimationProvider;
-import com.android.quickstep.util.RemoteFadeOutAnimationListener;
-import com.android.quickstep.util.SplitSelectStateController;
-import com.android.quickstep.util.TISBindHelper;
-import com.android.quickstep.views.OverviewActionsView;
-import com.android.quickstep.views.RecentsView;
-import com.android.systemui.shared.system.ActivityManagerWrapper;
-import com.android.systemui.shared.system.ActivityOptionsCompat;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
-import com.android.systemui.unfold.UnfoldTransitionFactory;
-import com.android.systemui.unfold.UnfoldTransitionProgressProvider;
-import com.android.systemui.unfold.config.UnfoldTransitionConfig;
-
-import java.io.FileDescriptor;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Stream;
-
-/**
- * Extension of Launcher activity to provide quickstep specific functionality
- */
-public abstract class BaseQuickstepLauncher extends Launcher {
-
-    private DepthController mDepthController = new DepthController(this);
-    private QuickstepTransitionManager mAppTransitionManager;
-
-    /**
-     * Reusable command for applying the back button alpha on the background thread.
-     */
-    public static final UiThreadHelper.AsyncCommand SET_BACK_BUTTON_ALPHA =
-            (context, arg1, arg2) -> SystemUiProxy.INSTANCE.get(context).setNavBarButtonAlpha(
-                    Float.intBitsToFloat(arg1), arg2 != 0);
-
-    private OverviewActionsView mActionsView;
-
-    private TISBindHelper mTISBindHelper;
-    private @Nullable TaskbarManager mTaskbarManager;
-    private @Nullable OverviewCommandHelper mOverviewCommandHelper;
-    private @Nullable LauncherTaskbarUIController mTaskbarUIController;
-
-    // Will be updated when dragging from taskbar.
-    private @Nullable DragOptions mNextWorkspaceDragOptions = null;
-
-    private @Nullable UnfoldTransitionProgressProvider mUnfoldTransitionProgressProvider;
-    private @Nullable LauncherUnfoldAnimationController mLauncherUnfoldAnimationController;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        addMultiWindowModeChangedListener(mDepthController);
-        initUnfoldTransitionProgressProvider();
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-
-        if (mLauncherUnfoldAnimationController != null) {
-            mLauncherUnfoldAnimationController.onResume();
-        }
-    }
-
-    @Override
-    protected void onPause() {
-        if (mLauncherUnfoldAnimationController != null) {
-            mLauncherUnfoldAnimationController.onPause();
-        }
-
-        super.onPause();
-    }
-
-    @Override
-    public void onDestroy() {
-        mAppTransitionManager.onActivityDestroyed();
-        if (mUnfoldTransitionProgressProvider != null) {
-            mUnfoldTransitionProgressProvider.destroy();
-        }
-
-        mTISBindHelper.onDestroy();
-        if (mTaskbarManager != null) {
-            mTaskbarManager.clearActivity(this);
-        }
-
-        if (mLauncherUnfoldAnimationController != null) {
-            mLauncherUnfoldAnimationController.onDestroy();
-        }
-
-        super.onDestroy();
-    }
-
-    @Override
-    protected void onNewIntent(Intent intent) {
-        super.onNewIntent(intent);
-
-        if (mOverviewCommandHelper != null) {
-            mOverviewCommandHelper.clearPendingCommands();
-        }
-    }
-
-    public QuickstepTransitionManager getAppTransitionManager() {
-        return mAppTransitionManager;
-    }
-
-    @Override
-    public void onEnterAnimationComplete() {
-        super.onEnterAnimationComplete();
-        // After the transition to home, enable the high-res thumbnail loader if it wasn't enabled
-        // as a part of quickstep, so that high-res thumbnails can load the next time we enter
-        // overview
-        RecentsModel.INSTANCE.get(this).getThumbnailCache()
-                .getHighResLoadingState().setVisible(true);
-    }
-
-    @Override
-    protected void handleGestureContract(Intent intent) {
-        if (FeatureFlags.SEPARATE_RECENTS_ACTIVITY.get()) {
-            super.handleGestureContract(intent);
-        }
-    }
-
-    @Override
-    public void onTrimMemory(int level) {
-        super.onTrimMemory(level);
-        RecentsModel.INSTANCE.get(this).onTrimMemory(level);
-    }
-
-    @Override
-    public void onUiChangedWhileSleeping() {
-        // Remove the snapshot because the content view may have obvious changes.
-        UI_HELPER_EXECUTOR.execute(
-                () -> ActivityManagerWrapper.getInstance().invalidateHomeTaskSnapshot(this));
-    }
-
-    @Override
-    protected void onScreenOff() {
-        super.onScreenOff();
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
-            RecentsView recentsView = getOverviewPanel();
-            recentsView.finishRecentsAnimation(true /* toRecents */, null);
-        }
-    }
-
-    /**
-     * {@code LauncherOverlayCallbacks} scroll amount.
-     * Indicates transition progress to -1 screen.
-     * @param progress From 0 to 1.
-     */
-    @Override
-    public void onScrollChanged(float progress) {
-        super.onScrollChanged(progress);
-        mDepthController.onOverlayScrollChanged(progress);
-        onTaskbarInAppDisplayProgressUpdate(progress, MINUS_ONE_PAGE_PROGRESS_INDEX);
-    }
-
-    @Override
-    public void onAllAppsTransition(float progress) {
-        super.onAllAppsTransition(progress);
-        onTaskbarInAppDisplayProgressUpdate(progress, ALL_APPS_PAGE_PROGRESS_INDEX);
-    }
-
-    @Override
-    public void onWidgetsTransition(float progress) {
-        super.onWidgetsTransition(progress);
-        onTaskbarInAppDisplayProgressUpdate(progress, WIDGETS_PAGE_PROGRESS_INDEX);
-    }
-
-    private void onTaskbarInAppDisplayProgressUpdate(float progress, int flag) {
-        if (mTaskbarManager == null
-                || mTaskbarManager.getCurrentActivityContext() == null
-                || mTaskbarUIController == null) {
-            return;
-        }
-        mTaskbarUIController.onTaskbarInAppDisplayProgressUpdate(progress, flag);
-    }
-
-    @Override
-    public void startIntentSenderForResult(IntentSender intent, int requestCode,
-            Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options) {
-        if (requestCode != -1) {
-            mPendingActivityRequestCode = requestCode;
-            StartActivityParams params = new StartActivityParams(this, requestCode);
-            params.intentSender = intent;
-            params.fillInIntent = fillInIntent;
-            params.flagsMask = flagsMask;
-            params.flagsValues = flagsValues;
-            params.extraFlags = extraFlags;
-            params.options = options;
-            startActivity(ProxyActivityStarter.getLaunchIntent(this, params));
-        } else {
-            super.startIntentSenderForResult(intent, requestCode, fillInIntent, flagsMask,
-                    flagsValues, extraFlags, options);
-        }
-    }
-
-    @Override
-    public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
-        if (requestCode != -1) {
-            mPendingActivityRequestCode = requestCode;
-            StartActivityParams params = new StartActivityParams(this, requestCode);
-            params.intent = intent;
-            params.options = options;
-            startActivity(ProxyActivityStarter.getLaunchIntent(this, params));
-        } else {
-            super.startActivityForResult(intent, requestCode, options);
-        }
-    }
-
-    @Override
-    protected void onDeferredResumed() {
-        super.onDeferredResumed();
-        handlePendingActivityRequest();
-    }
-
-    @Override
-    public void onStateSetEnd(LauncherState state) {
-        super.onStateSetEnd(state);
-        handlePendingActivityRequest();
-    }
-
-    private void handlePendingActivityRequest() {
-        if (mPendingActivityRequestCode != -1 && isInState(NORMAL)
-                && ((getActivityFlags() & ACTIVITY_STATE_DEFERRED_RESUMED) != 0)) {
-            // Remove any active ProxyActivityStarter task and send RESULT_CANCELED to Launcher.
-            onActivityResult(mPendingActivityRequestCode, RESULT_CANCELED, null);
-            // ProxyActivityStarter is started with clear task to reset the task after which it
-            // removes the task itself.
-            startActivity(ProxyActivityStarter.getLaunchIntent(this, null));
-        }
-    }
-
-    @Override
-    protected void setupViews() {
-        super.setupViews();
-
-        mActionsView = findViewById(R.id.overview_actions_view);
-        RecentsView overviewPanel = (RecentsView) getOverviewPanel();
-        SplitSelectStateController controller =
-                new SplitSelectStateController(this, mHandler, getStateManager(),
-                        getDepthController());
-        overviewPanel.init(mActionsView, controller);
-        mActionsView.updateDimension(getDeviceProfile(), overviewPanel.getLastComputedTaskSize());
-        mActionsView.updateVerticalMargin(DisplayController.getNavigationMode(this));
-
-        mAppTransitionManager = new QuickstepTransitionManager(this);
-        mAppTransitionManager.registerRemoteAnimations();
-        mAppTransitionManager.registerRemoteTransitions();
-
-        mTISBindHelper = new TISBindHelper(this, this::onTISConnected);
-    }
-
-    private void onTISConnected(TISBinder binder) {
-        mTaskbarManager = binder.getTaskbarManager();
-        mTaskbarManager.setActivity(this);
-        mOverviewCommandHelper = binder.getOverviewCommandHelper();
-    }
-
-    @Override
-    public void runOnBindToTouchInteractionService(Runnable r) {
-        mTISBindHelper.runOnBindToTouchInteractionService(r);
-    }
-
-    private void initUnfoldTransitionProgressProvider() {
-        final UnfoldTransitionConfig config = UnfoldTransitionFactory.createConfig(this);
-        if (config.isEnabled()) {
-            mUnfoldTransitionProgressProvider =
-                    UnfoldTransitionFactory.createUnfoldTransitionProgressProvider(
-                            this,
-                            config,
-                            ProxyScreenStatusProvider.INSTANCE,
-                            getSystemService(DeviceStateManager.class),
-                            getSystemService(ActivityManager.class),
-                            getSystemService(SensorManager.class),
-                            getMainThreadHandler(),
-                            getMainExecutor(),
-                            /* backgroundExecutor= */ THREAD_POOL_EXECUTOR,
-                            /* tracingTagPrefix= */ "launcher"
-                    );
-
-            mLauncherUnfoldAnimationController = new LauncherUnfoldAnimationController(
-                    this,
-                    getWindowManager(),
-                    mUnfoldTransitionProgressProvider
-            );
-        }
-    }
-
-    public void setTaskbarUIController(LauncherTaskbarUIController taskbarUIController) {
-        mTaskbarUIController = taskbarUIController;
-    }
-
-    public @Nullable LauncherTaskbarUIController getTaskbarUIController() {
-        return mTaskbarUIController;
-    }
-
-    public <T extends OverviewActionsView> T getActionsView() {
-        return (T) mActionsView;
-    }
-
-    @Override
-    protected void closeOpenViews(boolean animate) {
-        super.closeOpenViews(animate);
-        TaskUtils.closeSystemWindowsAsync(CLOSE_SYSTEM_WINDOWS_REASON_HOME_KEY);
-    }
-
-    @Override
-    protected void collectStateHandlers(List<StateHandler> out) {
-        super.collectStateHandlers(out);
-        out.add(getDepthController());
-        out.add(new RecentsViewStateController(this));
-        out.add(new BackButtonAlphaHandler(this));
-    }
-
-    public DepthController getDepthController() {
-        return mDepthController;
-    }
-
-    @Nullable
-    public UnfoldTransitionProgressProvider getUnfoldTransitionProgressProvider() {
-        return mUnfoldTransitionProgressProvider;
-    }
-
-    @Override
-    public boolean supportsAdaptiveIconAnimation(View clickedView) {
-        return mAppTransitionManager.hasControlRemoteAppTransitionPermission();
-    }
-
-    @Override
-    public DragOptions getDefaultWorkspaceDragOptions() {
-        if (mNextWorkspaceDragOptions != null) {
-            DragOptions options = mNextWorkspaceDragOptions;
-            mNextWorkspaceDragOptions = null;
-            return options;
-        }
-        return super.getDefaultWorkspaceDragOptions();
-    }
-
-    public void setNextWorkspaceDragOptions(DragOptions dragOptions) {
-        mNextWorkspaceDragOptions = dragOptions;
-    }
-
-    @Override
-    public void useFadeOutAnimationForLauncherStart(CancellationSignal signal) {
-        QuickstepTransitionManager appTransitionManager = getAppTransitionManager();
-        appTransitionManager.setRemoteAnimationProvider(new RemoteAnimationProvider() {
-            @Override
-            public AnimatorSet createWindowAnimation(RemoteAnimationTargetCompat[] appTargets,
-                    RemoteAnimationTargetCompat[] wallpaperTargets) {
-
-                // On the first call clear the reference.
-                signal.cancel();
-
-                ValueAnimator fadeAnimation = ValueAnimator.ofFloat(1, 0);
-                fadeAnimation.addUpdateListener(new RemoteFadeOutAnimationListener(appTargets,
-                        wallpaperTargets));
-                AnimatorSet anim = new AnimatorSet();
-                anim.play(fadeAnimation);
-                return anim;
-            }
-        }, signal);
-    }
-
-    @Override
-    public float[] getNormalOverviewScaleAndOffset() {
-        return DisplayController.getNavigationMode(this).hasGestures
-                ? new float[] {1, 1} : new float[] {1.1f, NO_OFFSET};
-    }
-
-    @Override
-    public void onDragLayerHierarchyChanged() {
-        onLauncherStateOrFocusChanged();
-    }
-
-    @Override
-    protected void onActivityFlagsChanged(int changeBits) {
-        if ((changeBits
-                & (ACTIVITY_STATE_WINDOW_FOCUSED | ACTIVITY_STATE_TRANSITION_ACTIVE)) != 0) {
-            onLauncherStateOrFocusChanged();
-        }
-
-        if ((changeBits & ACTIVITY_STATE_STARTED) != 0) {
-            mDepthController.setActivityStarted(isStarted());
-        }
-
-        if ((changeBits & ACTIVITY_STATE_RESUMED) != 0) {
-            if (mTaskbarUIController != null) {
-                mTaskbarUIController.onLauncherResumedOrPaused(hasBeenResumed());
-            }
-        }
-
-        super.onActivityFlagsChanged(changeBits);
-    }
-
-    public boolean shouldBackButtonBeHidden(LauncherState toState) {
-        NavigationMode mode = DisplayController.getNavigationMode(this);
-        boolean shouldBackButtonBeHidden = mode.hasGestures
-                && toState.hasFlag(FLAG_HIDE_BACK_BUTTON)
-                && hasWindowFocus()
-                && (getActivityFlags() & ACTIVITY_STATE_TRANSITION_ACTIVE) == 0;
-        if (shouldBackButtonBeHidden) {
-            // Show the back button if there is a floating view visible.
-            shouldBackButtonBeHidden = AbstractFloatingView.getTopOpenViewWithType(this,
-                    TYPE_ALL & ~TYPE_HIDE_BACK_BUTTON) == null;
-        }
-        return shouldBackButtonBeHidden;
-    }
-
-    /**
-     * Sets the back button visibility based on the current state/window focus.
-     */
-    private void onLauncherStateOrFocusChanged() {
-        boolean shouldBackButtonBeHidden = shouldBackButtonBeHidden(getStateManager().getState());
-        if (DisplayController.getNavigationMode(this) == TWO_BUTTONS) {
-            UiThreadHelper.setBackButtonAlphaAsync(this, SET_BACK_BUTTON_ALPHA,
-                    shouldBackButtonBeHidden ? 0f : 1f, true /* animate */);
-        }
-        if (getDragLayer() != null) {
-            getRootView().setDisallowBackGesture(shouldBackButtonBeHidden);
-        }
-    }
-
-    @Override
-    public void finishBindingItems(IntSet pagesBoundFirst) {
-        super.finishBindingItems(pagesBoundFirst);
-        // Instantiate and initialize WellbeingModel now that its loading won't interfere with
-        // populating workspace.
-        // TODO: Find a better place for this
-        WellbeingModel.INSTANCE.get(this);
-    }
-
-    @Override
-    public void onInitialBindComplete(IntSet boundPages, RunnableList pendingTasks) {
-        pendingTasks.add(() -> {
-            // This is added in pending task as we need to wait for views to be positioned
-            // correctly before registering them for the animation.
-            if (mLauncherUnfoldAnimationController != null) {
-                // This is needed in case items are rebound while the unfold animation is in
-                // progress.
-                mLauncherUnfoldAnimationController.updateRegisteredViewsIfNeeded();
-            }
-        });
-        super.onInitialBindComplete(boundPages, pendingTasks);
-    }
-
-    @Override
-    public Stream<SystemShortcut.Factory> getSupportedShortcuts() {
-        Stream<SystemShortcut.Factory> base = Stream.of(WellbeingModel.SHORTCUT_FACTORY);
-        if (ENABLE_SPLIT_FROM_WORKSPACE.get() && mDeviceProfile.isTablet) {
-            RecentsView recentsView = getOverviewPanel();
-            // TODO: Pull it out of PagedOrentationHandler for split from workspace.
-            List<SplitPositionOption> positions =
-                    recentsView.getPagedOrientationHandler().getSplitPositionOptions(
-                            mDeviceProfile);
-            List<SystemShortcut.Factory<BaseQuickstepLauncher>> splitShortcuts = new ArrayList<>();
-            for (SplitPositionOption position : positions) {
-                splitShortcuts.add(getSplitSelectShortcutByPosition(position));
-            }
-            base = Stream.concat(base, splitShortcuts.stream());
-        }
-        return Stream.concat(base, super.getSupportedShortcuts());
-    }
-
-    @Override
-    public ActivityOptionsWrapper getActivityLaunchOptions(View v, @Nullable ItemInfo item) {
-        ActivityOptionsWrapper activityOptions =
-                mAppTransitionManager.hasControlRemoteAppTransitionPermission()
-                        ? mAppTransitionManager.getActivityLaunchOptions(v)
-                        : super.getActivityLaunchOptions(v, item);
-        if (mLastTouchUpTime > 0) {
-            ActivityOptionsCompat.setLauncherSourceInfo(
-                    activityOptions.options, mLastTouchUpTime);
-        }
-        activityOptions.options.setSplashScreenStyle(SplashScreen.SPLASH_SCREEN_STYLE_ICON);
-        activityOptions.options.setLaunchDisplayId(
-                (v != null && v.getDisplay() != null) ? v.getDisplay().getDisplayId()
-                        : Display.DEFAULT_DISPLAY);
-        addLaunchCookie(item, activityOptions.options);
-        return activityOptions;
-    }
-
-    /**
-     * Adds a new launch cookie for the activity launch if supported.
-     *
-     * @param info the item info for the launch
-     * @param opts the options to set the launchCookie on.
-     */
-    public void addLaunchCookie(ItemInfo info, ActivityOptions opts) {
-        IBinder launchCookie = getLaunchCookie(info);
-        if (launchCookie != null) {
-            opts.setLaunchCookie(launchCookie);
-        }
-    }
-
-    /**
-     * Return a new launch cookie for the activity launch if supported.
-     *
-     * @param info the item info for the launch
-     */
-    public IBinder getLaunchCookie(ItemInfo info) {
-        if (info == null) {
-            return null;
-        }
-        switch (info.container) {
-            case LauncherSettings.Favorites.CONTAINER_DESKTOP:
-            case LauncherSettings.Favorites.CONTAINER_HOTSEAT:
-                // Fall through and continue it's on the workspace (we don't support swiping back
-                // to other containers like all apps or the hotseat predictions (which can change)
-                break;
-            default:
-                if (info.container >= 0) {
-                    // Also allow swiping to folders
-                    break;
-                }
-                // Reset any existing launch cookies associated with the cookie
-                return ObjectWrapper.wrap(NO_MATCHING_ID);
-        }
-        switch (info.itemType) {
-            case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION:
-            case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT:
-            case LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT:
-            case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET:
-                // Fall through and continue if it's an app, shortcut, or widget
-                break;
-            default:
-                // Reset any existing launch cookies associated with the cookie
-                return ObjectWrapper.wrap(NO_MATCHING_ID);
-        }
-        return ObjectWrapper.wrap(new Integer(info.id));
-    }
-
-    public void setHintUserWillBeActive() {
-        addActivityFlags(ACTIVITY_STATE_USER_WILL_BE_ACTIVE);
-    }
-
-    @Override
-    public void onDisplayInfoChanged(Context context, DisplayController.Info info, int flags) {
-        super.onDisplayInfoChanged(context, info, flags);
-        // When changing screens, force moving to rest state similar to StatefulActivity.onStop, as
-        // StatefulActivity isn't called consistently.
-        if ((flags & CHANGE_ACTIVE_SCREEN) != 0) {
-            getStateManager().moveToRestState();
-        }
-
-        if ((flags & CHANGE_NAVIGATION_MODE) != 0) {
-            getDragLayer().recreateControllers();
-            if (mActionsView != null) {
-                mActionsView.updateVerticalMargin(info.navigationMode);
-            }
-        }
-    }
-
-    @Override
-    public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) {
-        super.dump(prefix, fd, writer, args);
-        if (mDepthController != null) {
-            mDepthController.dump(prefix, writer);
-        }
-    }
-}
diff --git a/quickstep/src/com/android/launcher3/LauncherAnimationRunner.java b/quickstep/src/com/android/launcher3/LauncherAnimationRunner.java
index 62603e9..5d4e19d 100644
--- a/quickstep/src/com/android/launcher3/LauncherAnimationRunner.java
+++ b/quickstep/src/com/android/launcher3/LauncherAnimationRunner.java
@@ -28,13 +28,16 @@
 import android.content.Context;
 import android.os.Build;
 import android.os.Handler;
+import android.os.RemoteException;
+import android.view.IRemoteAnimationFinishedCallback;
+import android.view.RemoteAnimationTarget;
 
 import androidx.annotation.BinderThread;
 import androidx.annotation.Nullable;
 import androidx.annotation.UiThread;
 
+import com.android.systemui.animation.RemoteAnimationDelegate;
 import com.android.systemui.shared.system.RemoteAnimationRunnerCompat;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
 
 import java.lang.ref.WeakReference;
 
@@ -55,7 +58,7 @@
  * reference to the runner, leaving only the weak ref from the runner.
  */
 @TargetApi(Build.VERSION_CODES.P)
-public class LauncherAnimationRunner implements RemoteAnimationRunnerCompat {
+public class LauncherAnimationRunner extends RemoteAnimationRunnerCompat {
 
     private static final RemoteAnimationFactory DEFAULT_FACTORY =
             (transit, appTargets, wallpaperTargets, nonAppTargets, result) ->
@@ -82,14 +85,14 @@
     @BinderThread
     public void onAnimationStart(
             int transit,
-            RemoteAnimationTargetCompat[] appTargets,
-            RemoteAnimationTargetCompat[] wallpaperTargets,
-            RemoteAnimationTargetCompat[] nonAppTargets,
+            RemoteAnimationTarget[] appTargets,
+            RemoteAnimationTarget[] wallpaperTargets,
+            RemoteAnimationTarget[] nonAppTargets,
             Runnable runnable) {
         Runnable r = () -> {
             finishExistingAnimation();
             mAnimationResult = new AnimationResult(() -> mAnimationResult = null, runnable);
-            getFactory().onCreateAnimation(transit, appTargets, wallpaperTargets, nonAppTargets,
+            getFactory().onAnimationStart(transit, appTargets, wallpaperTargets, nonAppTargets,
                     mAnimationResult);
         };
         if (mStartAtFrontOfQueue) {
@@ -99,22 +102,6 @@
         }
     }
 
-    // Called only in R platform
-    @BinderThread
-    public void onAnimationStart(RemoteAnimationTargetCompat[] appTargets,
-            RemoteAnimationTargetCompat[] wallpaperTargets, Runnable runnable) {
-        onAnimationStart(0 /* transit */, appTargets, wallpaperTargets,
-                new RemoteAnimationTargetCompat[0], runnable);
-    }
-
-    // Called only in Q platform
-    @BinderThread
-    @Deprecated
-    public void onAnimationStart(RemoteAnimationTargetCompat[] appTargets, Runnable runnable) {
-        onAnimationStart(appTargets, new RemoteAnimationTargetCompat[0], runnable);
-    }
-
-
     private RemoteAnimationFactory getFactory() {
         RemoteAnimationFactory factory = mFactory.get();
         return factory != null ? factory : DEFAULT_FACTORY;
@@ -140,7 +127,11 @@
         });
     }
 
-    public static final class AnimationResult {
+    /**
+     * Used by RemoteAnimationFactory implementations to run the actual animation and its lifecycle
+     * callbacks.
+     */
+    public static final class AnimationResult extends IRemoteAnimationFinishedCallback.Stub {
 
         private final Runnable mSyncFinishRunnable;
         private final Runnable mASyncFinishRunnable;
@@ -205,39 +196,50 @@
                         finish();
                     }
                 });
-                mAnimator.start();
-
                 if (skipFirstFrame) {
                     // Because t=0 has the app icon in its original spot, we can skip the
                     // first frame and have the same movement one frame earlier.
                     mAnimator.setCurrentPlayTime(
                             Math.min(getSingleFrameMs(context), mAnimator.getTotalDuration()));
                 }
+                mAnimator.start();
             }
         }
+
+        /**
+         * When used as a simple IRemoteAnimationFinishedCallback, this method is used to run the
+         * animation finished runnable.
+         */
+        @Override
+        public void onAnimationFinished() throws RemoteException {
+            mASyncFinishRunnable.run();
+        }
     }
 
     /**
      * Used with LauncherAnimationRunner as an interface for the runner to call back to the
      * implementation.
      */
-    @FunctionalInterface
-    public interface RemoteAnimationFactory {
+    public interface RemoteAnimationFactory extends RemoteAnimationDelegate<AnimationResult> {
 
         /**
          * Called on the UI thread when the animation targets are received. The implementation must
          * call {@link AnimationResult#setAnimation} with the target animation to be run.
          */
-        void onCreateAnimation(int transit,
-                RemoteAnimationTargetCompat[] appTargets,
-                RemoteAnimationTargetCompat[] wallpaperTargets,
-                RemoteAnimationTargetCompat[] nonAppTargets,
+        @Override
+        @UiThread
+        void onAnimationStart(int transit,
+                RemoteAnimationTarget[] appTargets,
+                RemoteAnimationTarget[] wallpaperTargets,
+                RemoteAnimationTarget[] nonAppTargets,
                 LauncherAnimationRunner.AnimationResult result);
 
         /**
          * Called when the animation is cancelled. This can happen with or without
          * the create being called.
          */
-        default void onAnimationCancelled() { }
+        @Override
+        @UiThread
+        default void onAnimationCancelled() {}
     }
 }
diff --git a/quickstep/src/com/android/launcher3/LauncherInitListener.java b/quickstep/src/com/android/launcher3/LauncherInitListener.java
index 35151f1..28bd701 100644
--- a/quickstep/src/com/android/launcher3/LauncherInitListener.java
+++ b/quickstep/src/com/android/launcher3/LauncherInitListener.java
@@ -19,10 +19,11 @@
 import android.annotation.TargetApi;
 import android.os.Build;
 import android.os.CancellationSignal;
+import android.view.RemoteAnimationTarget;
 
+import com.android.launcher3.uioverrides.QuickstepLauncher;
 import com.android.quickstep.util.ActivityInitListener;
 import com.android.quickstep.util.RemoteAnimationProvider;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
 
 import java.util.function.BiPredicate;
 
@@ -44,15 +45,15 @@
     public boolean handleInit(Launcher launcher, boolean alreadyOnHome) {
         if (mRemoteAnimationProvider != null) {
             QuickstepTransitionManager appTransitionManager =
-                    ((BaseQuickstepLauncher) launcher).getAppTransitionManager();
+                    ((QuickstepLauncher) launcher).getAppTransitionManager();
 
             // Set a one-time animation provider. After the first call, this will get cleared.
             // TODO: Probably also check the intended target id.
             CancellationSignal cancellationSignal = new CancellationSignal();
             appTransitionManager.setRemoteAnimationProvider(new RemoteAnimationProvider() {
                 @Override
-                public AnimatorSet createWindowAnimation(RemoteAnimationTargetCompat[] appTargets,
-                        RemoteAnimationTargetCompat[] wallpaperTargets) {
+                public AnimatorSet createWindowAnimation(RemoteAnimationTarget[] appTargets,
+                        RemoteAnimationTarget[] wallpaperTargets) {
 
                     // On the first call clear the reference.
                     cancellationSignal.cancel();
diff --git a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
index 9aeb370..114965f 100644
--- a/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
+++ b/quickstep/src/com/android/launcher3/QuickstepTransitionManager.java
@@ -16,9 +16,19 @@
 
 package com.android.launcher3;
 
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
 import static android.provider.Settings.Secure.LAUNCHER_TASKBAR_EDUCATION_SHOWING;
+import static android.view.RemoteAnimationTarget.MODE_CLOSING;
+import static android.view.RemoteAnimationTarget.MODE_OPENING;
+import static android.view.WindowManager.TRANSIT_CLOSE;
+import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_GOING_AWAY;
+import static android.view.WindowManager.TRANSIT_OPEN;
+import static android.view.WindowManager.TRANSIT_TO_BACK;
+import static android.view.WindowManager.TRANSIT_TO_FRONT;
 import static android.window.StartingWindowInfo.STARTING_WINDOW_TYPE_NONE;
 import static android.window.StartingWindowInfo.STARTING_WINDOW_TYPE_SPLASH_SCREEN;
+import static android.window.TransitionFilter.CONTAINER_ORDER_TOP;
 
 import static com.android.launcher3.BaseActivity.INVISIBLE_ALL;
 import static com.android.launcher3.BaseActivity.INVISIBLE_BY_APP_TRANSITIONS;
@@ -31,7 +41,6 @@
 import static com.android.launcher3.LauncherState.NORMAL;
 import static com.android.launcher3.LauncherState.OVERVIEW;
 import static com.android.launcher3.Utilities.mapBoundToRange;
-import static com.android.launcher3.Utilities.postAsyncCallback;
 import static com.android.launcher3.anim.Interpolators.ACCEL_1_5;
 import static com.android.launcher3.anim.Interpolators.AGGRESSIVE_EASE;
 import static com.android.launcher3.anim.Interpolators.DEACCEL_1_5;
@@ -43,22 +52,23 @@
 import static com.android.launcher3.config.FeatureFlags.KEYGUARD_ANIMATION;
 import static com.android.launcher3.config.FeatureFlags.SEPARATE_RECENTS_ACTIVITY;
 import static com.android.launcher3.model.data.ItemInfo.NO_MATCHING_ID;
-import static com.android.launcher3.statehandlers.DepthController.DEPTH;
-import static com.android.launcher3.testing.TestProtocol.BAD_STATE;
+import static com.android.launcher3.util.DisplayController.isTransientTaskbar;
+import static com.android.launcher3.util.MultiPropertyFactory.MULTI_PROPERTY_VALUE;
 import static com.android.launcher3.util.window.RefreshRateTracker.getSingleFrameMs;
 import static com.android.launcher3.views.FloatingIconView.SHAPE_PROGRESS_DURATION;
 import static com.android.launcher3.views.FloatingIconView.getFloatingIconView;
+import static com.android.quickstep.TaskAnimationManager.ENABLE_SHELL_TRANSITIONS;
 import static com.android.quickstep.TaskViewUtils.findTaskViewToLaunch;
 import static com.android.systemui.shared.system.QuickStepContract.getWindowCornerRadius;
 import static com.android.systemui.shared.system.QuickStepContract.supportsRoundedCornersOnWindows;
-import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_CLOSING;
-import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_OPENING;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.AnimatorSet;
 import android.animation.ObjectAnimator;
 import android.animation.ValueAnimator;
+import android.app.ActivityOptions;
+import android.app.WindowConfiguration;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.pm.PackageManager;
@@ -78,16 +88,23 @@
 import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.provider.Settings;
-import android.util.Log;
 import android.util.Pair;
 import android.util.Size;
+import android.view.CrossWindowBlurListeners;
+import android.view.IRemoteAnimationFinishedCallback;
+import android.view.RemoteAnimationAdapter;
+import android.view.RemoteAnimationDefinition;
+import android.view.RemoteAnimationTarget;
 import android.view.SurfaceControl;
 import android.view.View;
 import android.view.ViewRootImpl;
 import android.view.ViewTreeObserver;
+import android.view.WindowManager;
 import android.view.animation.AnimationUtils;
 import android.view.animation.Interpolator;
 import android.view.animation.PathInterpolator;
+import android.window.RemoteTransition;
+import android.window.TransitionFilter;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
@@ -96,12 +113,16 @@
 import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
 import com.android.launcher3.LauncherAnimationRunner.RemoteAnimationFactory;
 import com.android.launcher3.anim.AnimationSuccessListener;
+import com.android.launcher3.anim.AnimatorListeners;
 import com.android.launcher3.dragndrop.DragLayer;
 import com.android.launcher3.icons.FastBitmapDrawable;
+import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.shortcuts.DeepShortcutView;
 import com.android.launcher3.statehandlers.DepthController;
 import com.android.launcher3.taskbar.LauncherTaskbarUIController;
+import com.android.launcher3.testing.shared.ResourceUtils;
 import com.android.launcher3.touch.PagedOrientationHandler;
+import com.android.launcher3.uioverrides.QuickstepLauncher;
 import com.android.launcher3.util.ActivityOptionsWrapper;
 import com.android.launcher3.util.DynamicResource;
 import com.android.launcher3.util.ObjectWrapper;
@@ -116,28 +137,26 @@
 import com.android.quickstep.TaskViewUtils;
 import com.android.quickstep.util.MultiValueUpdateListener;
 import com.android.quickstep.util.RectFSpringAnim;
+import com.android.quickstep.util.RectFSpringAnim.DefaultSpringConfig;
+import com.android.quickstep.util.RectFSpringAnim.TaskbarHotseatSpringConfig;
 import com.android.quickstep.util.RemoteAnimationProvider;
 import com.android.quickstep.util.StaggeredWorkspaceAnim;
+import com.android.quickstep.util.SurfaceTransaction;
+import com.android.quickstep.util.SurfaceTransaction.SurfaceProperties;
 import com.android.quickstep.util.SurfaceTransactionApplier;
 import com.android.quickstep.util.WorkspaceRevealAnim;
 import com.android.quickstep.views.FloatingWidgetView;
 import com.android.quickstep.views.RecentsView;
-import com.android.systemui.shared.system.ActivityCompat;
-import com.android.systemui.shared.system.ActivityOptionsCompat;
+import com.android.systemui.animation.ActivityLaunchAnimator;
+import com.android.systemui.animation.DelegateLaunchAnimatorController;
+import com.android.systemui.animation.RemoteAnimationDelegate;
 import com.android.systemui.shared.system.BlurUtils;
 import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
 import com.android.systemui.shared.system.QuickStepContract;
-import com.android.systemui.shared.system.RemoteAnimationAdapterCompat;
-import com.android.systemui.shared.system.RemoteAnimationDefinitionCompat;
 import com.android.systemui.shared.system.RemoteAnimationRunnerCompat;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
-import com.android.systemui.shared.system.RemoteTransitionCompat;
-import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams;
-import com.android.systemui.shared.system.WindowManagerWrapper;
 import com.android.wm.shell.startingsurface.IStartingWindowListener;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.LinkedHashMap;
 import java.util.List;
 
@@ -146,8 +165,6 @@
  */
 public class QuickstepTransitionManager implements OnDeviceProfileChangeListener {
 
-    private static final String TAG = "QuickstepTransition";
-
     private static final boolean ENABLE_SHELL_STARTING_SURFACE =
             SystemProperties.getBoolean("persist.debug.shell_starting_surface", true);
 
@@ -184,6 +201,11 @@
     public static final int SPLIT_DIVIDER_ANIM_DURATION = 100;
 
     public static final int CONTENT_ALPHA_DURATION = 217;
+    public static final int TRANSIENT_TASKBAR_TRANSITION_DURATION = 417;
+    public static final int TASKBAR_TO_APP_DURATION = 600;
+    // TODO(b/236145847): Tune TASKBAR_TO_HOME_DURATION to 383 after conflict with unlock animation
+    // is solved.
+    public static final int TASKBAR_TO_HOME_DURATION = 300;
     protected static final int CONTENT_SCALE_DURATION = 350;
     protected static final int CONTENT_SCRIM_DURATION = 350;
 
@@ -192,12 +214,11 @@
     // Cross-fade duration between App Widget and App
     private static final int WIDGET_CROSSFADE_DURATION_MILLIS = 125;
 
-    protected final BaseQuickstepLauncher mLauncher;
-    private final DragLayer mDragLayer;
+    protected final QuickstepLauncher mLauncher;
+    protected final DragLayer mDragLayer;
 
-    final Handler mHandler;
+    protected final Handler mHandler;
 
-    private final float mContentScale;
     private final float mClosingWindowTransY;
     private final float mMaxShadowRadius;
 
@@ -208,11 +229,10 @@
     private RemoteAnimationProvider mRemoteAnimationProvider;
     // Strong refs to runners which are cleared when the launcher activity is destroyed
     private RemoteAnimationFactory mWallpaperOpenRunner;
-    private RemoteAnimationFactory mAppLaunchRunner;
     private RemoteAnimationFactory mKeyguardGoingAwayRunner;
 
     private RemoteAnimationFactory mWallpaperOpenTransitionRunner;
-    private RemoteTransitionCompat mLauncherOpenTransition;
+    private RemoteTransition mLauncherOpenTransition;
 
     private LauncherBackAnimationController mBackAnimationController;
     private final AnimatorListenerAdapter mForceInvisibleListener = new AnimatorListenerAdapter() {
@@ -242,7 +262,6 @@
         mBackAnimationController = new LauncherBackAnimationController(mLauncher, this);
 
         Resources res = mLauncher.getResources();
-        mContentScale = res.getFloat(R.dimen.content_scale);
         mClosingWindowTransY = res.getDimensionPixelSize(R.dimen.closing_window_trans_y);
         mMaxShadowRadius = res.getDimensionPixelSize(R.dimen.max_shadow_radius);
 
@@ -278,9 +297,18 @@
     public ActivityOptionsWrapper getActivityLaunchOptions(View v) {
         boolean fromRecents = isLaunchingFromRecents(v, null /* targets */);
         RunnableList onEndCallback = new RunnableList();
-        mAppLaunchRunner = new AppLaunchAnimationRunner(v, onEndCallback);
+
+        RemoteAnimationFactory delegateRunner = new AppLaunchAnimationRunner(v, onEndCallback);
+        ItemInfo tag = (ItemInfo) v.getTag();
+        if (tag != null && tag.shouldUseBackgroundAnimation()) {
+            ContainerAnimationRunner containerAnimationRunner =
+                    ContainerAnimationRunner.from(v, mStartingWindowListener, onEndCallback);
+            if (containerAnimationRunner != null) {
+                delegateRunner = containerAnimationRunner;
+            }
+        }
         RemoteAnimationRunnerCompat runner = new LauncherAnimationRunner(
-                mHandler, mAppLaunchRunner, true /* startAtFrontOfQueue */);
+                mHandler, delegateRunner, true /* startAtFrontOfQueue */);
 
         // Note that this duration is a guess as we do not know if the animation will be a
         // recents launch or not for sure until we know the opening app targets.
@@ -290,11 +318,11 @@
 
         long statusBarTransitionDelay = duration - STATUS_BAR_TRANSITION_DURATION
                 - STATUS_BAR_TRANSITION_PRE_DELAY;
-        RemoteAnimationAdapterCompat adapterCompat =
-                new RemoteAnimationAdapterCompat(runner, duration, statusBarTransitionDelay,
-                        mLauncher.getIApplicationThread());
-        return new ActivityOptionsWrapper(
-                ActivityOptionsCompat.makeRemoteAnimation(adapterCompat), onEndCallback);
+        ActivityOptions options = ActivityOptions.makeRemoteAnimation(
+                new RemoteAnimationAdapter(runner, duration, statusBarTransitionDelay),
+                new RemoteTransition(runner.toRemoteTransition(),
+                        mLauncher.getIApplicationThread(), "QuickstepLaunch"));
+        return new ActivityOptionsWrapper(options, onEndCallback);
     }
 
     /**
@@ -308,7 +336,7 @@
      * @return true if the app is launching from recents, false if it most likely is not
      */
     protected boolean isLaunchingFromRecents(@NonNull View v,
-            @Nullable RemoteAnimationTargetCompat[] targets) {
+            @Nullable RemoteAnimationTarget[] targets) {
         return mLauncher.getStateManager().getState().overviewUi
                 && findTaskViewToLaunch(mLauncher.getOverviewPanel(), v, targets) != null;
     }
@@ -322,18 +350,18 @@
      * @param launcherClosing true if the launcher app is closing
      */
     protected void composeRecentsLaunchAnimator(@NonNull AnimatorSet anim, @NonNull View v,
-            @NonNull RemoteAnimationTargetCompat[] appTargets,
-            @NonNull RemoteAnimationTargetCompat[] wallpaperTargets,
-            @NonNull RemoteAnimationTargetCompat[] nonAppTargets, boolean launcherClosing) {
+            @NonNull RemoteAnimationTarget[] appTargets,
+            @NonNull RemoteAnimationTarget[] wallpaperTargets,
+            @NonNull RemoteAnimationTarget[] nonAppTargets, boolean launcherClosing) {
         TaskViewUtils.composeRecentsLaunchAnimator(anim, v, appTargets, wallpaperTargets,
                 nonAppTargets, launcherClosing, mLauncher.getStateManager(),
                 mLauncher.getOverviewPanel(), mLauncher.getDepthController());
     }
 
-    private boolean areAllTargetsTranslucent(@NonNull RemoteAnimationTargetCompat[] targets) {
+    private boolean areAllTargetsTranslucent(@NonNull RemoteAnimationTarget[] targets) {
         boolean isAllOpeningTargetTrs = true;
         for (int i = 0; i < targets.length; i++) {
-            RemoteAnimationTargetCompat target = targets[i];
+            RemoteAnimationTarget target = targets[i];
             if (target.mode == MODE_OPENING) {
                 isAllOpeningTargetTrs &= target.isTranslucent;
             }
@@ -351,21 +379,18 @@
      * @param launcherClosing true if launcher is closing
      */
     private void composeIconLaunchAnimator(@NonNull AnimatorSet anim, @NonNull View v,
-            @NonNull RemoteAnimationTargetCompat[] appTargets,
-            @NonNull RemoteAnimationTargetCompat[] wallpaperTargets,
-            @NonNull RemoteAnimationTargetCompat[] nonAppTargets,
+            @NonNull RemoteAnimationTarget[] appTargets,
+            @NonNull RemoteAnimationTarget[] wallpaperTargets,
+            @NonNull RemoteAnimationTarget[] nonAppTargets,
             boolean launcherClosing) {
         // Set the state animation first so that any state listeners are called
         // before our internal listeners.
         mLauncher.getStateManager().setCurrentAnimation(anim);
 
-        final int rotationChange = getRotationChange(appTargets);
         // Note: the targetBounds are relative to the launcher
         int startDelay = getSingleFrameMs(mLauncher);
-        Rect windowTargetBounds = getWindowTargetBounds(appTargets, rotationChange);
-        Animator windowAnimator = getOpeningWindowAnimators(v, appTargets, wallpaperTargets,
-                nonAppTargets, windowTargetBounds, areAllTargetsTranslucent(appTargets),
-                rotationChange);
+        Animator windowAnimator = getOpeningWindowAnimators(
+                v, appTargets, wallpaperTargets, nonAppTargets, launcherClosing);
         windowAnimator.setStartDelay(startDelay);
         anim.play(windowAnimator);
         if (launcherClosing) {
@@ -379,40 +404,19 @@
                     launcherContentAnimator.second.run();
                 }
             });
-        } else {
-            anim.addListener(new AnimatorListenerAdapter() {
-                @Override
-                public void onAnimationStart(Animator animation) {
-                    mLauncher.addOnResumeCallback(() ->
-                            ObjectAnimator.ofFloat(mLauncher.getDepthController(), DEPTH,
-                                    mLauncher.getStateManager().getState().getDepth(
-                                            mLauncher)).start());
-                }
-            });
         }
     }
 
     private void composeWidgetLaunchAnimator(
             @NonNull AnimatorSet anim,
             @NonNull LauncherAppWidgetHostView v,
-            @NonNull RemoteAnimationTargetCompat[] appTargets,
-            @NonNull RemoteAnimationTargetCompat[] wallpaperTargets,
-            @NonNull RemoteAnimationTargetCompat[] nonAppTargets) {
+            @NonNull RemoteAnimationTarget[] appTargets,
+            @NonNull RemoteAnimationTarget[] wallpaperTargets,
+            @NonNull RemoteAnimationTarget[] nonAppTargets,
+            boolean launcherClosing) {
         mLauncher.getStateManager().setCurrentAnimation(anim);
-
-        Rect windowTargetBounds = getWindowTargetBounds(appTargets, getRotationChange(appTargets));
-        anim.play(getOpeningWindowAnimatorsForWidget(v, appTargets, wallpaperTargets, nonAppTargets,
-                windowTargetBounds, areAllTargetsTranslucent(appTargets)));
-
-        anim.addListener(new AnimatorListenerAdapter() {
-            @Override
-            public void onAnimationStart(Animator animation) {
-                mLauncher.addOnResumeCallback(() ->
-                        ObjectAnimator.ofFloat(mLauncher.getDepthController(), DEPTH,
-                                mLauncher.getStateManager().getState().getDepth(
-                                        mLauncher)).start());
-            }
-        });
+        anim.play(getOpeningWindowAnimatorsForWidget(
+                v, appTargets, wallpaperTargets, nonAppTargets, launcherClosing));
     }
 
     /**
@@ -420,10 +424,10 @@
      * In multiwindow mode, we need to get the final size of the opening app window target to help
      * figure out where the floating view should animate to.
      */
-    private Rect getWindowTargetBounds(@NonNull RemoteAnimationTargetCompat[] appTargets,
+    private Rect getWindowTargetBounds(@NonNull RemoteAnimationTarget[] appTargets,
             int rotationChange) {
-        RemoteAnimationTargetCompat target = null;
-        for (RemoteAnimationTargetCompat t : appTargets) {
+        RemoteAnimationTarget target = null;
+        for (RemoteAnimationTarget t : appTargets) {
             if (t.mode != MODE_OPENING) continue;
             target = t;
             break;
@@ -445,7 +449,9 @@
                         4 - rotationChange);
             }
         }
-        if (mDeviceProfile.isTaskbarPresentInApps) {
+        if (mDeviceProfile.isTaskbarPresentInApps
+                && !target.willShowImeOnTarget
+                && !isTransientTaskbar(mLauncher)) {
             // Animate to above the taskbar.
             bounds.bottom -= target.contentInsets.bottom;
         }
@@ -480,8 +486,8 @@
                 : new float[]{0, 1};
 
         float[] scales = isAppOpening
-                ? new float[]{1, mContentScale}
-                : new float[]{mContentScale, 1};
+                ? new float[]{1, mDeviceProfile.workspaceContentScale}
+                : new float[]{mDeviceProfile.workspaceContentScale, 1};
 
         // Pause expensive view updates as they can lead to layer thrashing and skipped frames.
         mLauncher.pauseExpensiveViewUpdates();
@@ -491,6 +497,10 @@
             final View appsView = mLauncher.getAppsView();
             final float startAlpha = appsView.getAlpha();
             final float startScale = SCALE_PROPERTY.get(appsView);
+            if (mDeviceProfile.isTablet) {
+                // AllApps should not fade at all in tablets.
+                alphas = new float[]{1, 1};
+            }
             appsView.setAlpha(alphas[0]);
 
             ObjectAnimator alpha = ObjectAnimator.ofFloat(appsView, View.ALPHA, alphas);
@@ -528,7 +538,15 @@
             workspace.forEachVisiblePage(
                     view -> viewsToAnimate.add(((CellLayout) view).getShortcutsAndWidgets()));
 
-            viewsToAnimate.add(mLauncher.getHotseat());
+            // Do not scale hotseat as a whole when taskbar is present, and scale QSB only if it's
+            // not inline.
+            if (mDeviceProfile.isTaskbarPresent) {
+                if (!mDeviceProfile.isQsbInline) {
+                    viewsToAnimate.add(mLauncher.getHotseat().getQsb());
+                }
+            } else {
+                viewsToAnimate.add(mLauncher.getHotseat());
+            }
 
             viewsToAnimate.forEach(view -> {
                 view.setLayerType(View.LAYER_TYPE_HARDWARE, null);
@@ -541,10 +559,7 @@
 
             final boolean scrimEnabled = ENABLE_SCRIM_FOR_APP_LAUNCH.get();
             if (scrimEnabled) {
-                boolean useTaskbarColor = mDeviceProfile.isTaskbarPresentInApps;
-                int scrimColor = useTaskbarColor
-                        ? mLauncher.getResources().getColor(R.color.taskbar_background)
-                        : Themes.getAttrColor(mLauncher, R.attr.overviewScrimColor);
+                int scrimColor = Themes.getAttrColor(mLauncher, R.attr.overviewScrimColor);
                 int scrimColorTrans = ColorUtils.setAlphaComponent(scrimColor, 0);
                 int[] colors = isAppOpening
                         ? new int[]{scrimColorTrans, scrimColor}
@@ -558,29 +573,6 @@
                     scrim.setDuration(CONTENT_SCRIM_DURATION);
                     scrim.setInterpolator(DEACCEL_1_5);
 
-                    if (useTaskbarColor) {
-                        // Hide the taskbar background color since it would duplicate the scrim.
-                        scrim.addListener(new AnimatorListenerAdapter() {
-                            @Override
-                            public void onAnimationStart(Animator animation) {
-                                LauncherTaskbarUIController taskbarUIController =
-                                        mLauncher.getTaskbarUIController();
-                                if (taskbarUIController != null) {
-                                    taskbarUIController.forceHideBackground(true);
-                                }
-                            }
-
-                            @Override
-                            public void onAnimationEnd(Animator animation) {
-                                LauncherTaskbarUIController taskbarUIController =
-                                        mLauncher.getTaskbarUIController();
-                                if (taskbarUIController != null) {
-                                    taskbarUIController.forceHideBackground(false);
-                                }
-                            }
-                        });
-                    }
-
                     launcherAnimator.play(scrim);
                 }
             }
@@ -614,28 +606,9 @@
         RecentsView overview = mLauncher.getOverviewPanel();
         ObjectAnimator alpha = ObjectAnimator.ofFloat(overview,
                 RecentsView.CONTENT_ALPHA, alphas);
-        Log.d(BAD_STATE, "QTM composeViewContentAnimator alphas=" + Arrays.toString(alphas));
-        alpha.addListener(new AnimatorListenerAdapter() {
-            @Override
-            public void onAnimationStart(Animator animation) {
-                Log.d(BAD_STATE, "QTM composeViewContentAnimator onStart");
-            }
-
-            @Override
-            public void onAnimationCancel(Animator animation) {
-                float alpha = overview == null ? -1 : RecentsView.CONTENT_ALPHA.get(overview);
-                Log.d(BAD_STATE, "QTM composeViewContentAnimator onCancel, alpha=" + alpha);
-            }
-
-            @Override
-            public void onAnimationEnd(Animator animation) {
-                Log.d(BAD_STATE, "QTM composeViewContentAnimator onEnd");
-            }
-        });
         alpha.setDuration(CONTENT_ALPHA_DURATION);
         alpha.setInterpolator(LINEAR);
         anim.play(alpha);
-        Log.d(BAD_STATE, "QTM composeViewContentAnimator setFreezeVisibility=true");
         overview.setFreezeViewVisibility(true);
 
         ObjectAnimator scaleAnim = ObjectAnimator.ofFloat(overview, SCALE_PROPERTY, scales);
@@ -644,7 +617,6 @@
         anim.play(scaleAnim);
 
         return () -> {
-            Log.d(BAD_STATE, "QTM composeViewContentAnimator onEnd setFreezeVisibility=false");
             overview.setFreezeViewVisibility(false);
             SCALE_PROPERTY.set(overview, 1f);
             mLauncher.getStateManager().reapplyState();
@@ -656,13 +628,21 @@
      * @return Animator that controls the window of the opening targets from app icons.
      */
     private Animator getOpeningWindowAnimators(View v,
-            RemoteAnimationTargetCompat[] appTargets,
-            RemoteAnimationTargetCompat[] wallpaperTargets,
-            RemoteAnimationTargetCompat[] nonAppTargets,
-            Rect windowTargetBounds, boolean appTargetsAreTranslucent, int rotationChange) {
+            RemoteAnimationTarget[] appTargets,
+            RemoteAnimationTarget[] wallpaperTargets,
+            RemoteAnimationTarget[] nonAppTargets,
+            boolean launcherClosing) {
+        int rotationChange = getRotationChange(appTargets);
+        Rect windowTargetBounds = getWindowTargetBounds(appTargets, rotationChange);
+        boolean appTargetsAreTranslucent = areAllTargetsTranslucent(appTargets);
+
         RectF launcherIconBounds = new RectF();
-        FloatingIconView floatingView = FloatingIconView.getFloatingIconView(mLauncher, v,
-                !appTargetsAreTranslucent, launcherIconBounds, true /* isOpening */);
+        FloatingIconView floatingView = getFloatingIconView(mLauncher, v,
+                (mLauncher.getTaskbarUIController() == null || !isTransientTaskbar(mLauncher))
+                        ? null
+                        : mLauncher.getTaskbarUIController().findMatchingView(v),
+                null /* fadeOutView */, !appTargetsAreTranslucent, launcherIconBounds,
+                true /* isOpening */);
         Rect crop = new Rect();
         Matrix matrix = new Matrix();
 
@@ -671,7 +651,7 @@
         SurfaceTransactionApplier surfaceApplier =
                 new SurfaceTransactionApplier(floatingView);
         openingTargets.addReleaseCheck(surfaceApplier);
-        RemoteAnimationTargetCompat navBarTarget = openingTargets.getNavBarRemoteAnimationTarget();
+        RemoteAnimationTarget navBarTarget = openingTargets.getNavBarRemoteAnimationTarget();
 
         int[] dragLayerBounds = new int[2];
         mDragLayer.getLocationOnScreen(dragLayerBounds);
@@ -711,7 +691,7 @@
             @Override
             public void onAnimationStart(Animator animation) {
                 LauncherTaskbarUIController taskbarController = mLauncher.getTaskbarUIController();
-                if (taskbarController != null && taskbarController.shouldShowEdu()) {
+                if (taskbarController != null && taskbarController.shouldShowEduOnAppLaunch()) {
                     // LAUNCHER_TASKBAR_EDUCATION_SHOWING is set to true here, when the education
                     // flow is about to start, to avoid a race condition with other components
                     // that would show something else to the user as soon as the app is opened.
@@ -727,7 +707,7 @@
                 }
                 LauncherTaskbarUIController taskbarController = mLauncher.getTaskbarUIController();
                 if (taskbarController != null) {
-                    taskbarController.showEdu();
+                    taskbarController.showEduOnAppLaunch();
                 }
                 openingTargets.release();
             }
@@ -818,15 +798,16 @@
 
                 if (initOnly) {
                     // For the init pass, we want full alpha since the window is not yet ready.
-                    floatingView.update(1f, 255, floatingIconBounds, percent, 0f,
+                    floatingView.update(1f, floatingIconBounds, percent, 0f,
                             mWindowRadius.value * scale, true /* isOpening */);
                     return;
                 }
 
-                ArrayList<SurfaceParams> params = new ArrayList<>();
+                SurfaceTransaction transaction = new SurfaceTransaction();
+
                 for (int i = appTargets.length - 1; i >= 0; i--) {
-                    RemoteAnimationTargetCompat target = appTargets[i];
-                    SurfaceParams.Builder builder = new SurfaceParams.Builder(target.leash);
+                    RemoteAnimationTarget target = appTargets[i];
+                    SurfaceProperties builder = transaction.forSurface(target.leash);
 
                     if (target.mode == MODE_OPENING) {
                         matrix.setScale(scale, scale);
@@ -845,16 +826,15 @@
                             matrix.postTranslate(windowTransX0, windowTransY0);
                         }
 
-                        floatingView.update(mIconAlpha.value, 255, floatingIconBounds, percent, 0f,
+                        floatingView.update(mIconAlpha.value, floatingIconBounds, percent, 0f,
                                 mWindowRadius.value * scale, true /* isOpening */);
-                        builder.withMatrix(matrix)
-                                .withWindowCrop(crop)
-                                .withAlpha(1f - mIconAlpha.value)
-                                .withCornerRadius(mWindowRadius.value)
-                                .withShadowRadius(mShadowRadius.value);
+                        builder.setMatrix(matrix)
+                                .setWindowCrop(crop)
+                                .setAlpha(1f - mIconAlpha.value)
+                                .setCornerRadius(mWindowRadius.value)
+                                .setShadowRadius(mShadowRadius.value);
                     } else if (target.mode == MODE_CLOSING) {
                         if (target.localBounds != null) {
-                            final Rect localBounds = target.localBounds;
                             tmpPos.set(target.localBounds.left, target.localBounds.top);
                         } else {
                             tmpPos.set(target.position.x, target.position.y);
@@ -871,29 +851,26 @@
                             tmpPos.y = tmp;
                         }
                         matrix.setTranslate(tmpPos.x, tmpPos.y);
-                        builder.withMatrix(matrix)
-                                .withWindowCrop(crop)
-                                .withAlpha(1f);
+                        builder.setMatrix(matrix)
+                                .setWindowCrop(crop)
+                                .setAlpha(1f);
                     }
-                    params.add(builder.build());
                 }
 
                 if (navBarTarget != null) {
-                    final SurfaceParams.Builder navBuilder =
-                            new SurfaceParams.Builder(navBarTarget.leash);
+                    SurfaceProperties navBuilder =
+                            transaction.forSurface(navBarTarget.leash);
                     if (mNavFadeIn.value > mNavFadeIn.getStartValue()) {
                         matrix.setScale(scale, scale);
                         matrix.postTranslate(windowTransX0, windowTransY0);
-                        navBuilder.withMatrix(matrix)
-                                .withWindowCrop(crop)
-                                .withAlpha(mNavFadeIn.value);
+                        navBuilder.setMatrix(matrix)
+                                .setWindowCrop(crop)
+                                .setAlpha(mNavFadeIn.value);
                     } else {
-                        navBuilder.withAlpha(mNavFadeOut.value);
+                        navBuilder.setAlpha(mNavFadeOut.value);
                     }
-                    params.add(navBuilder.build());
                 }
-
-                surfaceApplier.scheduleApply(params.toArray(new SurfaceParams[params.size()]));
+                surfaceApplier.scheduleApply(transaction);
             }
         };
         appAnimator.addUpdateListener(listener);
@@ -902,7 +879,7 @@
 
         // If app targets are translucent, do not animate the background as it causes a visible
         // flicker when it resets itself at the end of its animation.
-        if (appTargetsAreTranslucent) {
+        if (appTargetsAreTranslucent || !launcherClosing) {
             animatorSet.play(appAnimator);
         } else {
             animatorSet.playTogether(appAnimator, getBackgroundAnimator());
@@ -911,17 +888,19 @@
     }
 
     private Animator getOpeningWindowAnimatorsForWidget(LauncherAppWidgetHostView v,
-            RemoteAnimationTargetCompat[] appTargets,
-            RemoteAnimationTargetCompat[] wallpaperTargets,
-            RemoteAnimationTargetCompat[] nonAppTargets, Rect windowTargetBounds,
-            boolean appTargetsAreTranslucent) {
+            RemoteAnimationTarget[] appTargets,
+            RemoteAnimationTarget[] wallpaperTargets,
+            RemoteAnimationTarget[] nonAppTargets, boolean launcherClosing) {
+        Rect windowTargetBounds = getWindowTargetBounds(appTargets, getRotationChange(appTargets));
+        boolean appTargetsAreTranslucent = areAllTargetsTranslucent(appTargets);
+
         final RectF widgetBackgroundBounds = new RectF();
         final Rect appWindowCrop = new Rect();
         final Matrix matrix = new Matrix();
         RemoteAnimationTargets openingTargets = new RemoteAnimationTargets(appTargets,
                 wallpaperTargets, nonAppTargets, MODE_OPENING);
 
-        RemoteAnimationTargetCompat openingTarget = openingTargets.getFirstAppTarget();
+        RemoteAnimationTarget openingTarget = openingTargets.getFirstAppTarget();
         int fallbackBackgroundColor = 0;
         if (openingTarget != null && supportsSSplashScreen()) {
             fallbackBackgroundColor = mTaskStartParams.containsKey(openingTarget.taskId)
@@ -945,7 +924,7 @@
         SurfaceTransactionApplier surfaceApplier = new SurfaceTransactionApplier(floatingView);
         openingTargets.addReleaseCheck(surfaceApplier);
 
-        RemoteAnimationTargetCompat navBarTarget = openingTargets.getNavBarRemoteAnimationTarget();
+        RemoteAnimationTarget navBarTarget = openingTargets.getNavBarRemoteAnimationTarget();
 
         AnimatorSet animatorSet = new AnimatorSet();
         ValueAnimator appAnimator = ValueAnimator.ofFloat(0, 1);
@@ -1003,49 +982,45 @@
                 mAppWindowScale = widgetBackgroundBounds.width() / windowTargetBounds.width();
                 // Crop scaled app window to match widget
                 appWindowCrop.set(0 /* left */, 0 /* top */,
-                        Math.round(windowTargetBounds.width()) /* right */,
+                        windowTargetBounds.width() /* right */,
                         Math.round(widgetBackgroundBounds.height() / mAppWindowScale) /* bottom */);
                 matrix.setTranslate(widgetBackgroundBounds.left, widgetBackgroundBounds.top);
                 matrix.postScale(mAppWindowScale, mAppWindowScale, widgetBackgroundBounds.left,
                         widgetBackgroundBounds.top);
 
-                ArrayList<SurfaceParams> params = new ArrayList<>();
+                SurfaceTransaction transaction = new SurfaceTransaction();
                 float floatingViewAlpha = appTargetsAreTranslucent ? 1 - mPreviewAlpha.value : 1;
                 for (int i = appTargets.length - 1; i >= 0; i--) {
-                    RemoteAnimationTargetCompat target = appTargets[i];
-                    SurfaceParams.Builder builder = new SurfaceParams.Builder(target.leash);
+                    RemoteAnimationTarget target = appTargets[i];
+                    SurfaceProperties builder = transaction.forSurface(target.leash);
                     if (target.mode == MODE_OPENING) {
                         floatingView.update(widgetBackgroundBounds, floatingViewAlpha,
                                 mWidgetForegroundAlpha.value, mWidgetFallbackBackgroundAlpha.value,
                                 mCornerRadiusProgress.value);
-                        builder.withMatrix(matrix)
-                                .withWindowCrop(appWindowCrop)
-                                .withAlpha(mPreviewAlpha.value)
-                                .withCornerRadius(mWindowRadius.value / mAppWindowScale);
+                        builder.setMatrix(matrix)
+                                .setWindowCrop(appWindowCrop)
+                                .setAlpha(mPreviewAlpha.value)
+                                .setCornerRadius(mWindowRadius.value / mAppWindowScale);
                     }
-                    params.add(builder.build());
                 }
 
                 if (navBarTarget != null) {
-                    final SurfaceParams.Builder navBuilder =
-                            new SurfaceParams.Builder(navBarTarget.leash);
+                    SurfaceProperties navBuilder = transaction.forSurface(navBarTarget.leash);
                     if (mNavFadeIn.value > mNavFadeIn.getStartValue()) {
-                        navBuilder.withMatrix(matrix)
-                                .withWindowCrop(appWindowCrop)
-                                .withAlpha(mNavFadeIn.value);
+                        navBuilder.setMatrix(matrix)
+                                .setWindowCrop(appWindowCrop)
+                                .setAlpha(mNavFadeIn.value);
                     } else {
-                        navBuilder.withAlpha(mNavFadeOut.value);
+                        navBuilder.setAlpha(mNavFadeOut.value);
                     }
-                    params.add(navBuilder.build());
                 }
-
-                surfaceApplier.scheduleApply(params.toArray(new SurfaceParams[params.size()]));
+                surfaceApplier.scheduleApply(transaction);
             }
         });
 
         // If app targets are translucent, do not animate the background as it causes a visible
         // flicker when it resets itself at the end of its animation.
-        if (appTargetsAreTranslucent) {
+        if (appTargetsAreTranslucent || !launcherClosing) {
             animatorSet.play(appAnimator);
         } else {
             animatorSet.playTogether(appAnimator, getBackgroundAnimator());
@@ -1059,54 +1034,40 @@
     private ObjectAnimator getBackgroundAnimator() {
         // When launching an app from overview that doesn't map to a task, we still want to just
         // blur the wallpaper instead of the launcher surface as well
-        boolean allowBlurringLauncher = mLauncher.getStateManager().getState() != OVERVIEW;
-        DepthController depthController = mLauncher.getDepthController();
-        ObjectAnimator backgroundRadiusAnim = ObjectAnimator.ofFloat(depthController, DEPTH,
-                BACKGROUND_APP.getDepth(mLauncher))
+        boolean allowBlurringLauncher = mLauncher.getStateManager().getState() != OVERVIEW
+                && BlurUtils.supportsBlursOnWindows();
+
+        MyDepthController depthController = new MyDepthController(mLauncher);
+        ObjectAnimator backgroundRadiusAnim = ObjectAnimator.ofFloat(depthController.stateDepth,
+                        MULTI_PROPERTY_VALUE, BACKGROUND_APP.getDepth(mLauncher))
                 .setDuration(APP_LAUNCH_DURATION);
+
         if (allowBlurringLauncher) {
-            final SurfaceControl dimLayer;
-            if (BlurUtils.supportsBlursOnWindows()) {
-                // Create a temporary effect layer, that lives on top of launcher, so we can apply
-                // the blur to it. The EffectLayer will be fullscreen, which will help with caching
-                // optimizations on the SurfaceFlinger side:
-                // - Results would be able to be cached as a texture
-                // - There won't be texture allocation overhead, because EffectLayers don't have
-                //   buffers
-                ViewRootImpl viewRootImpl = mLauncher.getDragLayer().getViewRootImpl();
-                SurfaceControl parent = viewRootImpl != null
-                        ? viewRootImpl.getSurfaceControl()
-                        : null;
-                dimLayer = new SurfaceControl.Builder()
-                        .setName("Blur layer")
-                        .setParent(parent)
-                        .setOpaque(false)
-                        .setHidden(false)
-                        .setEffectLayer()
-                        .build();
-            } else {
-                dimLayer = null;
-            }
+            // Create a temporary effect layer, that lives on top of launcher, so we can apply
+            // the blur to it. The EffectLayer will be fullscreen, which will help with caching
+            // optimizations on the SurfaceFlinger side:
+            // - Results would be able to be cached as a texture
+            // - There won't be texture allocation overhead, because EffectLayers don't have
+            //   buffers
+            ViewRootImpl viewRootImpl = mLauncher.getDragLayer().getViewRootImpl();
+            SurfaceControl parent = viewRootImpl != null
+                    ? viewRootImpl.getSurfaceControl()
+                    : null;
+            SurfaceControl dimLayer = new SurfaceControl.Builder()
+                    .setName("Blur layer")
+                    .setParent(parent)
+                    .setOpaque(false)
+                    .setHidden(false)
+                    .setEffectLayer()
+                    .build();
 
-            depthController.setSurface(dimLayer);
-            backgroundRadiusAnim.addListener(new AnimatorListenerAdapter() {
-                @Override
-                public void onAnimationStart(Animator animation) {
-                    depthController.setIsInLaunchTransition(true);
-                }
-
-                @Override
-                public void onAnimationEnd(Animator animation) {
-                    depthController.setIsInLaunchTransition(false);
-                    depthController.setSurface(null);
-                    if (dimLayer != null) {
-                        new SurfaceControl.Transaction()
-                                .remove(dimLayer)
-                                .apply();
-                    }
-                }
-            });
+            backgroundRadiusAnim.addListener(AnimatorListeners.forEndCallback(() ->
+                    new SurfaceControl.Transaction().remove(dimLayer).apply()));
         }
+
+        backgroundRadiusAnim.addListener(
+                AnimatorListeners.forEndCallback(depthController::dispose));
+
         return backgroundRadiusAnim;
     }
 
@@ -1118,30 +1079,34 @@
             return;
         }
         if (hasControlRemoteAppTransitionPermission()) {
-            mWallpaperOpenRunner = createWallpaperOpenRunner(false /* fromUnlock */);
+            RemoteAnimationDefinition definition = new RemoteAnimationDefinition();
+            addRemoteAnimations(definition);
+            mLauncher.registerRemoteAnimations(definition);
+        }
+    }
 
-            RemoteAnimationDefinitionCompat definition = new RemoteAnimationDefinitionCompat();
-            definition.addRemoteAnimation(WindowManagerWrapper.TRANSIT_WALLPAPER_OPEN,
-                    WindowManagerWrapper.ACTIVITY_TYPE_STANDARD,
-                    new RemoteAnimationAdapterCompat(
-                            new LauncherAnimationRunner(mHandler, mWallpaperOpenRunner,
-                                    false /* startAtFrontOfQueue */),
-                            CLOSING_TRANSITION_DURATION_MS, 0 /* statusBarTransitionDelay */,
-                            mLauncher.getIApplicationThread()));
+    /**
+     * Adds remote animations to a {@link RemoteAnimationDefinition}. May be overridden to add
+     * additional animations.
+     */
+    private void addRemoteAnimations(RemoteAnimationDefinition definition) {
+        mWallpaperOpenRunner = createWallpaperOpenRunner(false /* fromUnlock */);
+        definition.addRemoteAnimation(WindowManager.TRANSIT_OLD_WALLPAPER_OPEN,
+                WindowConfiguration.ACTIVITY_TYPE_STANDARD,
+                new RemoteAnimationAdapter(
+                        new LauncherAnimationRunner(mHandler, mWallpaperOpenRunner,
+                                false /* startAtFrontOfQueue */),
+                        CLOSING_TRANSITION_DURATION_MS, 0 /* statusBarTransitionDelay */));
 
-            if (KEYGUARD_ANIMATION.get()) {
-                mKeyguardGoingAwayRunner = createWallpaperOpenRunner(true /* fromUnlock */);
-                definition.addRemoteAnimation(
-                        WindowManagerWrapper.TRANSIT_KEYGUARD_GOING_AWAY_ON_WALLPAPER,
-                        new RemoteAnimationAdapterCompat(
-                                new LauncherAnimationRunner(
-                                        mHandler, mKeyguardGoingAwayRunner,
-                                        true /* startAtFrontOfQueue */),
-                                CLOSING_TRANSITION_DURATION_MS, 0 /* statusBarTransitionDelay */,
-                                mLauncher.getIApplicationThread()));
-            }
-
-            new ActivityCompat(mLauncher).registerRemoteAnimations(definition);
+        if (KEYGUARD_ANIMATION.get()) {
+            mKeyguardGoingAwayRunner = createWallpaperOpenRunner(true /* fromUnlock */);
+            definition.addRemoteAnimation(
+                    WindowManager.TRANSIT_OLD_KEYGUARD_GOING_AWAY_ON_WALLPAPER,
+                    new RemoteAnimationAdapter(
+                            new LauncherAnimationRunner(
+                                    mHandler, mKeyguardGoingAwayRunner,
+                                    true /* startAtFrontOfQueue */),
+                            CLOSING_TRANSITION_DURATION_MS, 0 /* statusBarTransitionDelay */));
         }
     }
 
@@ -1149,16 +1114,33 @@
      * Registers remote animations used when closing apps to home screen.
      */
     public void registerRemoteTransitions() {
+        if (ENABLE_SHELL_TRANSITIONS) {
+            SystemUiProxy.INSTANCE.get(mLauncher).shareTransactionQueue();
+        }
         if (SEPARATE_RECENTS_ACTIVITY.get()) {
             return;
         }
         if (hasControlRemoteAppTransitionPermission()) {
             mWallpaperOpenTransitionRunner = createWallpaperOpenRunner(false /* fromUnlock */);
-            mLauncherOpenTransition = RemoteAnimationAdapterCompat.buildRemoteTransition(
+            mLauncherOpenTransition = new RemoteTransition(
                     new LauncherAnimationRunner(mHandler, mWallpaperOpenTransitionRunner,
-                            false /* startAtFrontOfQueue */), mLauncher.getIApplicationThread());
-            mLauncherOpenTransition.addHomeOpenCheck(mLauncher.getComponentName());
-            SystemUiProxy.INSTANCE.get(mLauncher).registerRemoteTransition(mLauncherOpenTransition);
+                            false /* startAtFrontOfQueue */).toRemoteTransition(),
+                    mLauncher.getIApplicationThread(), "QuickstepLaunchHome");
+
+            TransitionFilter homeCheck = new TransitionFilter();
+            // No need to handle the transition that also dismisses keyguard.
+            homeCheck.mNotFlags = TRANSIT_FLAG_KEYGUARD_GOING_AWAY;
+            homeCheck.mRequirements =
+                    new TransitionFilter.Requirement[]{new TransitionFilter.Requirement(),
+                            new TransitionFilter.Requirement()};
+            homeCheck.mRequirements[0].mActivityType = ACTIVITY_TYPE_HOME;
+            homeCheck.mRequirements[0].mTopActivity = mLauncher.getComponentName();
+            homeCheck.mRequirements[0].mModes = new int[]{TRANSIT_OPEN, TRANSIT_TO_FRONT};
+            homeCheck.mRequirements[0].mOrder = CONTAINER_ORDER_TOP;
+            homeCheck.mRequirements[1].mActivityType = ACTIVITY_TYPE_STANDARD;
+            homeCheck.mRequirements[1].mModes = new int[]{TRANSIT_CLOSE, TRANSIT_TO_BACK};
+            SystemUiProxy.INSTANCE.get(mLauncher)
+                    .registerRemoteTransition(mLauncherOpenTransition, homeCheck);
         }
         if (mBackAnimationController != null) {
             mBackAnimationController.registerBackCallbacks(mHandler);
@@ -1177,17 +1159,19 @@
             return;
         }
         if (hasControlRemoteAppTransitionPermission()) {
-            new ActivityCompat(mLauncher).unregisterRemoteAnimations();
+            mLauncher.unregisterRemoteAnimations();
 
             // Also clear strong references to the runners registered with the remote animation
             // definition so we don't have to wait for the system gc
             mWallpaperOpenRunner = null;
-            mAppLaunchRunner = null;
             mKeyguardGoingAwayRunner = null;
         }
     }
 
-    private void unregisterRemoteTransitions() {
+    protected void unregisterRemoteTransitions() {
+        if (ENABLE_SHELL_TRANSITIONS) {
+            SystemUiProxy.INSTANCE.get(mLauncher).unshareTransactionQueue();
+        }
         if (SEPARATE_RECENTS_ACTIVITY.get()) {
             return;
         }
@@ -1204,8 +1188,8 @@
         }
     }
 
-    private boolean launcherIsATargetWithMode(RemoteAnimationTargetCompat[] targets, int mode) {
-        for (RemoteAnimationTargetCompat target : targets) {
+    private boolean launcherIsATargetWithMode(RemoteAnimationTarget[] targets, int mode) {
+        for (RemoteAnimationTarget target : targets) {
             if (target.mode == mode && target.taskInfo != null
                     // Compare component name instead of task-id because transitions will promote
                     // the target up to the root task while getTaskId returns the leaf.
@@ -1217,9 +1201,9 @@
         return false;
     }
 
-    private boolean hasMultipleTargetsWithMode(RemoteAnimationTargetCompat[] targets, int mode) {
+    private boolean hasMultipleTargetsWithMode(RemoteAnimationTarget[] targets, int mode) {
         int numTargets = 0;
-        for (RemoteAnimationTargetCompat target : targets) {
+        for (RemoteAnimationTarget target : targets) {
             if (target.mode == mode) {
                 numTargets++;
             }
@@ -1241,8 +1225,8 @@
     /**
      * Animator that controls the transformations of the windows when unlocking the device.
      */
-    private Animator getUnlockWindowAnimator(RemoteAnimationTargetCompat[] appTargets,
-            RemoteAnimationTargetCompat[] wallpaperTargets) {
+    private Animator getUnlockWindowAnimator(RemoteAnimationTarget[] appTargets,
+            RemoteAnimationTarget[] wallpaperTargets) {
         SurfaceTransactionApplier surfaceApplier = new SurfaceTransactionApplier(mDragLayer);
         ValueAnimator unlockAnimator = ValueAnimator.ofFloat(0, 1);
         unlockAnimator.setDuration(CLOSING_TRANSITION_DURATION_MS);
@@ -1251,24 +1235,23 @@
         unlockAnimator.addListener(new AnimatorListenerAdapter() {
             @Override
             public void onAnimationStart(Animator animation) {
-                SurfaceParams[] params = new SurfaceParams[appTargets.length];
+                SurfaceTransaction transaction = new SurfaceTransaction();
                 for (int i = appTargets.length - 1; i >= 0; i--) {
-                    RemoteAnimationTargetCompat target = appTargets[i];
-                    params[i] = new SurfaceParams.Builder(target.leash)
-                            .withAlpha(1f)
-                            .withWindowCrop(target.screenSpaceBounds)
-                            .withCornerRadius(cornerRadius)
-                            .build();
+                    RemoteAnimationTarget target = appTargets[i];
+                    transaction.forSurface(target.leash)
+                            .setAlpha(1f)
+                            .setWindowCrop(target.screenSpaceBounds)
+                            .setCornerRadius(cornerRadius);
                 }
-                surfaceApplier.scheduleApply(params);
+                surfaceApplier.scheduleApply(transaction);
             }
         });
         return unlockAnimator;
     }
 
-    private static int getRotationChange(RemoteAnimationTargetCompat[] appTargets) {
+    private static int getRotationChange(RemoteAnimationTarget[] appTargets) {
         int rotationChange = 0;
-        for (RemoteAnimationTargetCompat target : appTargets) {
+        for (RemoteAnimationTarget target : appTargets) {
             if (Math.abs(target.rotationChange) > Math.abs(rotationChange)) {
                 rotationChange = target.rotationChange;
             }
@@ -1279,8 +1262,8 @@
     /**
      * Returns view on launcher that corresponds to the closing app in the list of app targets
      */
-    private @Nullable View findLauncherView(RemoteAnimationTargetCompat[] appTargets) {
-        for (RemoteAnimationTargetCompat appTarget : appTargets) {
+    private @Nullable View findLauncherView(RemoteAnimationTarget[] appTargets) {
+        for (RemoteAnimationTarget appTarget : appTargets) {
             if (appTarget.mode == MODE_CLOSING) {
                 View launcherView = findLauncherView(appTarget);
                 if (launcherView != null) {
@@ -1294,7 +1277,7 @@
     /**
      * Returns view on launcher that corresponds to the {@param runningTaskTarget}.
      */
-    private @Nullable View findLauncherView(RemoteAnimationTargetCompat runningTaskTarget) {
+    private @Nullable View findLauncherView(RemoteAnimationTarget runningTaskTarget) {
         if (runningTaskTarget == null || runningTaskTarget.taskInfo == null) {
             return null;
         }
@@ -1355,15 +1338,15 @@
      * Closing animator that animates the window into its final location on the workspace.
      */
     private RectFSpringAnim getClosingWindowAnimators(AnimatorSet animation,
-            RemoteAnimationTargetCompat[] targets, View launcherView, PointF velocityPxPerS,
+            RemoteAnimationTarget[] targets, View launcherView, PointF velocityPxPerS,
             RectF closingWindowStartRect, float startWindowCornerRadius) {
         FloatingIconView floatingIconView = null;
         FloatingWidgetView floatingWidget = null;
         RectF targetRect = new RectF();
 
-        RemoteAnimationTargetCompat runningTaskTarget = null;
+        RemoteAnimationTarget runningTaskTarget = null;
         boolean isTransluscent = false;
-        for (RemoteAnimationTargetCompat target : targets) {
+        for (RemoteAnimationTarget target : targets) {
             if (target.mode == MODE_CLOSING) {
                 runningTaskTarget = target;
                 isTransluscent = runningTaskTarget.isTranslucent;
@@ -1372,6 +1355,7 @@
         }
 
         // Get floating view and target rect.
+        boolean isInHotseat = false;
         if (launcherView instanceof LauncherAppWidgetHostView) {
             Size windowSize = new Size(mDeviceProfile.availableWidthPx,
                     mDeviceProfile.availableHeightPx);
@@ -1382,14 +1366,22 @@
                     mDeviceProfile.isMultiWindowMode ? 0 : getWindowCornerRadius(mLauncher),
                     isTransluscent, fallbackBackgroundColor);
         } else if (launcherView != null) {
-            floatingIconView = getFloatingIconView(mLauncher, launcherView,
+            floatingIconView = getFloatingIconView(mLauncher, launcherView, null,
+                    mLauncher.getTaskbarUIController() == null
+                            ? null
+                            : mLauncher.getTaskbarUIController().findMatchingView(launcherView),
                     true /* hideOriginal */, targetRect, false /* isOpening */);
+            isInHotseat = launcherView.getTag() instanceof ItemInfo
+                    && ((ItemInfo) launcherView.getTag()).isInHotseat();
         } else {
             targetRect.set(getDefaultWindowTargetRect());
         }
 
-        RectFSpringAnim anim = new RectFSpringAnim(closingWindowStartRect, targetRect, mLauncher,
-                mDeviceProfile);
+        boolean useTaskbarHotseatParams = mDeviceProfile.isTaskbarPresent && isInHotseat;
+        RectFSpringAnim anim = new RectFSpringAnim(useTaskbarHotseatParams
+                ? new TaskbarHotseatSpringConfig(mLauncher, closingWindowStartRect, targetRect)
+                : new DefaultSpringConfig(mLauncher, mDeviceProfile, closingWindowStartRect,
+                        targetRect));
 
         // Hook up floating views to the closing window animators.
         final int rotationChange = getRotationChange(targets);
@@ -1408,8 +1400,8 @@
                     windowTargetBounds, startWindowCornerRadius) {
                 @Override
                 public void onUpdate(RectF currentRectF, float progress) {
-                    finalFloatingIconView.update(1f, 255 /* fgAlpha */, currentRectF, progress,
-                            windowAlphaThreshold, getCornerRadius(progress), false);
+                    finalFloatingIconView.update(1f, currentRectF, progress, windowAlphaThreshold,
+                            getCornerRadius(progress), false);
 
                     super.onUpdate(currentRectF, progress);
                 }
@@ -1448,7 +1440,7 @@
         animation.addListener(new AnimatorListenerAdapter() {
             @Override
             public void onAnimationStart(Animator animation) {
-                anim.start(mLauncher, velocityPxPerS);
+                anim.start(mLauncher, mDeviceProfile, velocityPxPerS);
             }
         });
         return anim;
@@ -1457,7 +1449,7 @@
     /**
      * Closing window animator that moves the window down and offscreen.
      */
-    private Animator getFallbackClosingWindowAnimators(RemoteAnimationTargetCompat[] appTargets) {
+    private Animator getFallbackClosingWindowAnimators(RemoteAnimationTarget[] appTargets) {
         final int rotationChange = getRotationChange(appTargets);
         SurfaceTransactionApplier surfaceApplier = new SurfaceTransactionApplier(mDragLayer);
         Matrix matrix = new Matrix();
@@ -1478,18 +1470,18 @@
 
             @Override
             public void onUpdate(float percent, boolean initOnly) {
-                SurfaceParams[] params = new SurfaceParams[appTargets.length];
+                SurfaceTransaction transaction = new SurfaceTransaction();
                 for (int i = appTargets.length - 1; i >= 0; i--) {
-                    RemoteAnimationTargetCompat target = appTargets[i];
-                    SurfaceParams.Builder builder = new SurfaceParams.Builder(target.leash);
+                    RemoteAnimationTarget target = appTargets[i];
+                    SurfaceProperties builder = transaction.forSurface(target.leash);
 
-                    if (target.localBounds != null) {
-                        tmpPos.set(target.localBounds.left, target.localBounds.top);
+                    if (target.screenSpaceBounds != null) {
+                        tmpPos.set(target.screenSpaceBounds.left, target.screenSpaceBounds.top);
                     } else {
                         tmpPos.set(target.position.x, target.position.y);
                     }
 
-                    final Rect crop = new Rect(target.screenSpaceBounds);
+                    final Rect crop = new Rect(target.localBounds);
                     crop.offsetTo(0, 0);
                     if (target.mode == MODE_CLOSING) {
                         tmpRect.set(target.screenSpaceBounds);
@@ -1503,20 +1495,19 @@
                                 tmpRect.centerY());
                         matrix.postTranslate(0, mDy.value);
                         matrix.postTranslate(tmpPos.x, tmpPos.y);
-                        builder.withMatrix(matrix)
-                                .withWindowCrop(crop)
-                                .withAlpha(mAlpha.value)
-                                .withCornerRadius(windowCornerRadius)
-                                .withShadowRadius(mShadowRadius.value);
+                        builder.setMatrix(matrix)
+                                .setWindowCrop(crop)
+                                .setAlpha(mAlpha.value)
+                                .setCornerRadius(windowCornerRadius)
+                                .setShadowRadius(mShadowRadius.value);
                     } else if (target.mode == MODE_OPENING) {
                         matrix.setTranslate(tmpPos.x, tmpPos.y);
-                        builder.withMatrix(matrix)
-                                .withWindowCrop(crop)
-                                .withAlpha(1f);
+                        builder.setMatrix(matrix)
+                                .setWindowCrop(crop)
+                                .setAlpha(1f);
                     }
-                    params[i] = builder.build();
                 }
-                surfaceApplier.scheduleApply(params);
+                surfaceApplier.scheduleApply(transaction);
             }
         });
 
@@ -1580,11 +1571,12 @@
      * the transition.
      */
     public Pair<RectFSpringAnim, AnimatorSet> createWallpaperOpenAnimations(
-            RemoteAnimationTargetCompat[] appTargets,
-            RemoteAnimationTargetCompat[] wallpaperTargets,
+            RemoteAnimationTarget[] appTargets,
+            RemoteAnimationTarget[] wallpaperTargets,
             boolean fromUnlock,
             RectF startRect,
-            float startWindowCornerRadius) {
+            float startWindowCornerRadius,
+            boolean fromPredictiveBack) {
         AnimatorSet anim = null;
         RectFSpringAnim rectFSpringAnim = null;
 
@@ -1618,21 +1610,22 @@
                 rectFSpringAnim = getClosingWindowAnimators(
                         anim, appTargets, launcherView, velocity, startRect,
                         startWindowCornerRadius);
-                if (!mLauncher.isInState(LauncherState.ALL_APPS)) {
+                if (mLauncher.isInState(LauncherState.ALL_APPS)) {
+                    // Skip scaling all apps, otherwise FloatingIconView will get wrong
+                    // layout bounds.
+                    skipAllAppsScale = true;
+                } else if (!fromPredictiveBack) {
                     anim.play(new StaggeredWorkspaceAnim(mLauncher, velocity.y,
                             true /* animateOverviewScrim */, launcherView).getAnimators());
 
                     if (!areAllTargetsTranslucent(appTargets)) {
-                        anim.play(ObjectAnimator.ofFloat(mLauncher.getDepthController(), DEPTH,
+                        anim.play(ObjectAnimator.ofFloat(mLauncher.getDepthController().stateDepth,
+                                MULTI_PROPERTY_VALUE,
                                 BACKGROUND_APP.getDepth(mLauncher), NORMAL.getDepth(mLauncher)));
                     }
 
                     // We play StaggeredWorkspaceAnim as a part of the closing window animation.
                     playWorkspaceReveal = false;
-                } else {
-                    // Skip scaling all apps, otherwise FloatingIconView will get wrong
-                    // layout bounds.
-                    skipAllAppsScale = true;
                 }
             } else {
                 anim.play(getFallbackClosingWindowAnimators(appTargets));
@@ -1688,10 +1681,10 @@
         }
 
         @Override
-        public void onCreateAnimation(int transit,
-                RemoteAnimationTargetCompat[] appTargets,
-                RemoteAnimationTargetCompat[] wallpaperTargets,
-                RemoteAnimationTargetCompat[] nonAppTargets,
+        public void onAnimationStart(int transit,
+                RemoteAnimationTarget[] appTargets,
+                RemoteAnimationTarget[] wallpaperTargets,
+                RemoteAnimationTarget[] nonAppTargets,
                 LauncherAnimationRunner.AnimationResult result) {
             if (mLauncher.isDestroyed()) {
                 AnimatorSet anim = new AnimatorSet();
@@ -1705,11 +1698,14 @@
                 mLauncher.getStateManager().moveToRestState();
             }
 
+            RectF windowTargetBounds =
+                    new RectF(getWindowTargetBounds(appTargets, getRotationChange(appTargets)));
             Pair<RectFSpringAnim, AnimatorSet> pair = createWallpaperOpenAnimations(
-                    appTargets, wallpaperTargets, mFromUnlock,
-                    new RectF(0, 0, mDeviceProfile.widthPx, mDeviceProfile.heightPx),
-                    QuickStepContract.getWindowCornerRadius(mLauncher));
+                    appTargets, wallpaperTargets, mFromUnlock, windowTargetBounds,
+                    QuickStepContract.getWindowCornerRadius(mLauncher),
+                    false /* fromPredictiveBack */);
 
+            TaskViewUtils.createSplitAuxiliarySurfacesAnimator(nonAppTargets, false, null);
             mLauncher.clearForceInvisibleFlag(INVISIBLE_ALL);
             result.setAnimation(pair.second, mLauncher);
         }
@@ -1729,10 +1725,10 @@
         }
 
         @Override
-        public void onCreateAnimation(int transit,
-                RemoteAnimationTargetCompat[] appTargets,
-                RemoteAnimationTargetCompat[] wallpaperTargets,
-                RemoteAnimationTargetCompat[] nonAppTargets,
+        public void onAnimationStart(int transit,
+                RemoteAnimationTarget[] appTargets,
+                RemoteAnimationTarget[] wallpaperTargets,
+                RemoteAnimationTarget[] nonAppTargets,
                 LauncherAnimationRunner.AnimationResult result) {
             AnimatorSet anim = new AnimatorSet();
             boolean launcherClosing =
@@ -1743,7 +1739,7 @@
             final boolean skipFirstFrame;
             if (launchingFromWidget) {
                 composeWidgetLaunchAnimator(anim, (LauncherAppWidgetHostView) mV, appTargets,
-                        wallpaperTargets, nonAppTargets);
+                        wallpaperTargets, nonAppTargets, launcherClosing);
                 addCujInstrumentation(
                         anim, InteractionJankMonitorWrapper.CUJ_APP_LAUNCH_FROM_WIDGET);
                 skipFirstFrame = true;
@@ -1774,6 +1770,87 @@
         }
     }
 
+    /** Remote animation runner to launch an app using System UI's animation library. */
+    private static class ContainerAnimationRunner implements RemoteAnimationFactory {
+
+        /** The delegate runner that handles the actual animation. */
+        private final RemoteAnimationDelegate<IRemoteAnimationFinishedCallback> mDelegate;
+
+        private ContainerAnimationRunner(
+                RemoteAnimationDelegate<IRemoteAnimationFinishedCallback> delegate) {
+            mDelegate = delegate;
+        }
+
+        @Nullable
+        private static ContainerAnimationRunner from(
+                View v, StartingWindowListener startingWindowListener, RunnableList onEndCallback) {
+            View viewToUse = findViewWithBackground(v);
+            if (viewToUse == null) {
+                viewToUse = v;
+            }
+
+            // The CUJ is logged by the click handler, so we don't log it inside the animation
+            // library.
+            ActivityLaunchAnimator.Controller controllerDelegate =
+                    ActivityLaunchAnimator.Controller.fromView(viewToUse, null /* cujType */);
+
+            if (controllerDelegate == null) {
+                return null;
+            }
+
+            // This wrapper allows us to override the default value, telling the controller that the
+            // current window is below the animating window.
+            ActivityLaunchAnimator.Controller controller =
+                    new DelegateLaunchAnimatorController(controllerDelegate) {
+                        @Override
+                        public boolean isBelowAnimatingWindow() {
+                            return true;
+                        }
+                    };
+
+            ActivityLaunchAnimator.Callback callback = task -> ColorUtils.setAlphaComponent(
+                    startingWindowListener.getBackgroundColor(), 255);
+
+            ActivityLaunchAnimator.Listener listener = new ActivityLaunchAnimator.Listener() {
+                @Override
+                public void onLaunchAnimationEnd() {
+                    onEndCallback.executeAllAndDestroy();
+                }
+            };
+
+            return new ContainerAnimationRunner(
+                    new ActivityLaunchAnimator.AnimationDelegate(controller, callback, listener));
+        }
+
+        /** Finds the closest parent of [view] (inclusive) with a background drawable. */
+        @Nullable
+        private static View findViewWithBackground(View view) {
+            View current = view;
+            while (current.getBackground() == null) {
+                if (!(current.getParent() instanceof View)) {
+                    return null;
+                }
+
+                current = (View) view.getParent();
+            }
+
+            return current;
+        }
+
+        @Override
+        public void onAnimationStart(int transit, RemoteAnimationTarget[] appTargets,
+                RemoteAnimationTarget[] wallpaperTargets, RemoteAnimationTarget[] nonAppTargets,
+                LauncherAnimationRunner.AnimationResult result) {
+            mDelegate.onAnimationStart(
+                    transit, appTargets, wallpaperTargets, nonAppTargets, result);
+        }
+
+        @Override
+        public void onAnimationCancelled() {
+            mDelegate.onAnimationCancelled();
+        }
+    }
+
     /**
      * Class that holds all the variables for the app open animation.
      */
@@ -1842,8 +1919,9 @@
         }
     }
 
-    private static class StartingWindowListener extends IStartingWindowListener.Stub {
+    private class StartingWindowListener extends IStartingWindowListener.Stub {
         private QuickstepTransitionManager mTransitionManager;
+        private int mBackgroundColor;
 
         public void setTransitionManager(QuickstepTransitionManager transitionManager) {
             mTransitionManager = transitionManager;
@@ -1852,6 +1930,13 @@
         @Override
         public void onTaskLaunching(int taskId, int supportedType, int color) {
             mTransitionManager.mTaskStartParams.put(taskId, Pair.create(supportedType, color));
+            mBackgroundColor = color;
+        }
+
+        public int getBackgroundColor() {
+            return mBackgroundColor == Color.TRANSPARENT
+                    ? mLauncher.getScrimView().getBackgroundColor()
+                    : mBackgroundColor;
         }
     }
 
@@ -1859,7 +1944,7 @@
      * RectFSpringAnim update listener to be used for app to home animation.
      */
     private class SpringAnimRunner implements RectFSpringAnim.OnUpdateListener {
-        private final RemoteAnimationTargetCompat[] mAppTargets;
+        private final RemoteAnimationTarget[] mAppTargets;
         private final Matrix mMatrix = new Matrix();
         private final Point mTmpPos = new Point();
         private final Rect mCurrentRect = new Rect();
@@ -1870,7 +1955,7 @@
 
         private final Rect mTmpRect = new Rect();
 
-        SpringAnimRunner(RemoteAnimationTargetCompat[] appTargets, RectF targetRect,
+        SpringAnimRunner(RemoteAnimationTarget[] appTargets, RectF targetRect,
                 Rect windowTargetBounds, float startWindowCornerRadius) {
             mAppTargets = appTargets;
             mStartRadius = startWindowCornerRadius;
@@ -1885,10 +1970,10 @@
 
         @Override
         public void onUpdate(RectF currentRectF, float progress) {
-            SurfaceParams[] params = new SurfaceParams[mAppTargets.length];
+            SurfaceTransaction transaction = new SurfaceTransaction();
             for (int i = mAppTargets.length - 1; i >= 0; i--) {
-                RemoteAnimationTargetCompat target = mAppTargets[i];
-                SurfaceParams.Builder builder = new SurfaceParams.Builder(target.leash);
+                RemoteAnimationTarget target = mAppTargets[i];
+                SurfaceProperties builder = transaction.forSurface(target.leash);
 
                 if (target.localBounds != null) {
                     mTmpPos.set(target.localBounds.left, target.localBounds.top);
@@ -1923,18 +2008,17 @@
                     mMatrix.setScale(scale, scale);
                     mMatrix.postTranslate(mCurrentRect.left, mCurrentRect.top);
 
-                    builder.withMatrix(mMatrix)
-                            .withWindowCrop(mTmpRect)
-                            .withAlpha(getWindowAlpha(progress))
-                            .withCornerRadius(getCornerRadius(progress) / scale);
+                    builder.setMatrix(mMatrix)
+                            .setWindowCrop(mTmpRect)
+                            .setAlpha(getWindowAlpha(progress))
+                            .setCornerRadius(getCornerRadius(progress) / scale);
                 } else if (target.mode == MODE_OPENING) {
                     mMatrix.setTranslate(mTmpPos.x, mTmpPos.y);
-                    builder.withMatrix(mMatrix)
-                            .withAlpha(1f);
+                    builder.setMatrix(mMatrix)
+                            .setAlpha(1f);
                 }
-                params[i] = builder.build();
             }
-            mSurfaceApplier.scheduleApply(params);
+            mSurfaceApplier.scheduleApply(transaction);
         }
 
         protected float getWindowAlpha(float progress) {
@@ -1951,4 +2035,17 @@
             return Utilities.mapToRange(progress, start, end, 1, 0, ACCEL_1_5);
         }
     }
+
+    private static class MyDepthController extends DepthController {
+        MyDepthController(Launcher l) {
+            super(l);
+            setCrossWindowBlursEnabled(
+                    CrossWindowBlurListeners.getInstance().isCrossWindowBlurEnabled());
+        }
+
+        @Override
+        public void setSurface(SurfaceControl surface) {
+            super.setSurface(surface);
+        }
+    }
 }
diff --git a/quickstep/src/com/android/launcher3/appprediction/AppsDividerView.java b/quickstep/src/com/android/launcher3/appprediction/AppsDividerView.java
index f42b39f..e8374b8 100644
--- a/quickstep/src/com/android/launcher3/appprediction/AppsDividerView.java
+++ b/quickstep/src/com/android/launcher3/appprediction/AppsDividerView.java
@@ -35,6 +35,7 @@
 import com.android.launcher3.R;
 import com.android.launcher3.allapps.FloatingHeaderRow;
 import com.android.launcher3.allapps.FloatingHeaderView;
+import com.android.launcher3.util.OnboardingPrefs;
 import com.android.launcher3.util.Themes;
 import com.android.launcher3.views.ActivityContext;
 
@@ -92,8 +93,10 @@
                 ? R.color.all_apps_label_text_dark
                 : R.color.all_apps_label_text);
 
-        mShowAllAppsLabel = !ActivityContext.lookupContext(
-                getContext()).getOnboardingPrefs().hasReachedMaxCount(ALL_APPS_VISITED_COUNT);
+        OnboardingPrefs<?> onboardingPrefs = ActivityContext.lookupContext(
+                getContext()).getOnboardingPrefs();
+        mShowAllAppsLabel = onboardingPrefs == null || !onboardingPrefs.hasReachedMaxCount(
+                ALL_APPS_VISITED_COUNT);
     }
 
     public void setup(FloatingHeaderView parent, FloatingHeaderRow[] rows, boolean tabsHidden) {
@@ -216,8 +219,8 @@
 
             CharSequence allAppsLabelText = getResources().getText(R.string.all_apps_label);
             mAllAppsLabelLayout = StaticLayout.Builder.obtain(
-                    allAppsLabelText, 0, allAppsLabelText.length(), mPaint,
-                    Math.round(mPaint.measureText(allAppsLabelText.toString())))
+                            allAppsLabelText, 0, allAppsLabelText.length(), mPaint,
+                            Math.round(mPaint.measureText(allAppsLabelText.toString())))
                     .setAlignment(Layout.Alignment.ALIGN_CENTER)
                     .setMaxLines(1)
                     .setIncludePad(true)
diff --git a/quickstep/src/com/android/launcher3/appprediction/InstantAppItemInfo.java b/quickstep/src/com/android/launcher3/appprediction/InstantAppItemInfo.java
index 9c3b881..8baee00 100644
--- a/quickstep/src/com/android/launcher3/appprediction/InstantAppItemInfo.java
+++ b/quickstep/src/com/android/launcher3/appprediction/InstantAppItemInfo.java
@@ -22,6 +22,8 @@
 import android.content.Context;
 import android.content.Intent;
 
+import androidx.annotation.NonNull;
+
 import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.model.data.AppInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
@@ -33,11 +35,13 @@
         this.componentName = new ComponentName(packageName, COMPONENT_CLASS_MARKER);
     }
 
+    @NonNull
     @Override
     public ComponentName getTargetComponent() {
         return componentName;
     }
 
+    @NonNull
     @Override
     public WorkspaceItemInfo makeWorkspaceItem(Context context) {
         WorkspaceItemInfo workspaceItemInfo = super.makeWorkspaceItem(context);
diff --git a/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java b/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java
index 351a3bc..34316db 100644
--- a/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java
+++ b/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java
@@ -30,9 +30,9 @@
 
 import com.android.launcher3.BubbleTextView;
 import com.android.launcher3.DeviceProfile;
-import com.android.launcher3.DeviceProfile.DeviceProfileListenable;
 import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
 import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
 import com.android.launcher3.allapps.FloatingHeaderRow;
 import com.android.launcher3.allapps.FloatingHeaderView;
 import com.android.launcher3.anim.AlphaUpdateListener;
@@ -50,7 +50,7 @@
 import java.util.stream.Collectors;
 
 @TargetApi(Build.VERSION_CODES.P)
-public class PredictionRowView<T extends Context & ActivityContext & DeviceProfileListenable>
+public class PredictionRowView<T extends Context & ActivityContext>
         extends LinearLayout implements OnDeviceProfileChangeListener, FloatingHeaderRow {
 
     private final T mActivityContext;
@@ -65,7 +65,6 @@
     private FloatingHeaderView mParent;
 
     private boolean mPredictionsEnabled = false;
-    private @Nullable List<ItemInfo> mPendingPredictedItems;
     private OnLongClickListener mOnIconLongClickListener = ItemLongClickListener.INSTANCE_ALL_APPS;
 
     public PredictionRowView(@NonNull Context context) {
@@ -78,7 +77,6 @@
 
         mFocusHelper = new SimpleFocusIndicatorHelper(this);
         mActivityContext = ActivityContext.lookupContext(context);
-        mActivityContext.addOnDeviceProfileChangeListener(this);
         mNumPredictedAppsPerRow = mActivityContext.getDeviceProfile().numShownAllAppsColumns;
         updateVisibility();
     }
@@ -86,6 +84,13 @@
     @Override
     protected void onAttachedToWindow() {
         super.onAttachedToWindow();
+        mActivityContext.addOnDeviceProfileChangeListener(this);
+    }
+
+    @Override
+    protected void onDetachedFromWindow() {
+        super.onDetachedFromWindow();
+        mActivityContext.removeOnDeviceProfileChangeListener(this);
     }
 
     public void setup(FloatingHeaderView parent, FloatingHeaderRow[] rows, boolean tabsHidden) {
@@ -101,12 +106,22 @@
                 mActivityContext.getAppsView().getAppsStore().unregisterIconContainer(this);
             }
         }
+
+        // Set the predicted row in All Apps' text line to 1.
+        if (FeatureFlags.ENABLE_TWOLINE_ALLAPPS.get()
+                || FeatureFlags.ENABLE_TWOLINE_DEVICESEARCH.get()) {
+            for (int i = 0; i < getChildCount(); i++) {
+                BubbleTextView icon = (BubbleTextView) getChildAt(i);
+                icon.setMaxLines(1);
+            }
+        }
     }
 
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(getExpectedHeight(),
                 MeasureSpec.EXACTLY));
+        updateVisibility();
     }
 
     @Override
@@ -117,9 +132,14 @@
 
     @Override
     public int getExpectedHeight() {
-        return getVisibility() == GONE ? 0
-                : mActivityContext.getDeviceProfile().allAppsCellHeightPx + getPaddingTop()
-                        + getPaddingBottom();
+        DeviceProfile deviceProfile = mActivityContext.getDeviceProfile();
+        int iconHeight = deviceProfile.allAppsIconSizePx;
+        int iconPadding = deviceProfile.allAppsIconDrawablePaddingPx;
+        int textHeight = Utilities.calculateTextHeight(deviceProfile.allAppsIconTextSizePx);
+        int verticalPadding = getResources().getDimensionPixelSize(
+                R.dimen.all_apps_predicted_icon_vertical_padding);
+        int totalHeight = iconHeight + iconPadding + textHeight + verticalPadding * 2;
+        return getVisibility() == GONE ? 0 : totalHeight + getPaddingTop() + getPaddingBottom();
     }
 
     @Override
@@ -154,18 +174,10 @@
      * we can optimize by swapping them in place.
      */
     public void setPredictedApps(List<ItemInfo> items) {
-        if (!FeatureFlags.ENABLE_APP_PREDICTIONS_WHILE_VISIBLE.get()
-                && !mActivityContext.isBindingItems()
-                && isShown()
-                && getWindowVisibility() == View.VISIBLE) {
-            mPendingPredictedItems = items;
-            return;
-        }
         applyPredictedApps(items);
     }
 
     private void applyPredictedApps(List<ItemInfo> items) {
-        mPendingPredictedItems = null;
         mPredictedApps.clear();
         mPredictedApps.addAll(items.stream()
                 .filter(itemInfo -> itemInfo instanceof WorkspaceItemInfo)
@@ -260,13 +272,4 @@
         return getChildAt(0);
     }
 
-
-    @Override
-    public void onVisibilityAggregated(boolean isVisible) {
-        super.onVisibilityAggregated(isVisible);
-
-        if (mPendingPredictedItems != null && !isVisible) {
-            applyPredictedApps(mPendingPredictedItems);
-        }
-    }
 }
diff --git a/quickstep/src/com/android/launcher3/hybridhotseat/HotseatEduController.java b/quickstep/src/com/android/launcher3/hybridhotseat/HotseatEduController.java
index d63bc18..048243e 100644
--- a/quickstep/src/com/android/launcher3/hybridhotseat/HotseatEduController.java
+++ b/quickstep/src/com/android/launcher3/hybridhotseat/HotseatEduController.java
@@ -26,22 +26,17 @@
 import com.android.launcher3.BubbleTextView;
 import com.android.launcher3.CellLayout;
 import com.android.launcher3.Hotseat;
-import com.android.launcher3.InvariantDeviceProfile;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.Workspace;
-import com.android.launcher3.config.FeatureFlags;
-import com.android.launcher3.model.data.FolderInfo;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
-import com.android.launcher3.util.GridOccupancy;
 import com.android.launcher3.util.IntArray;
 import com.android.launcher3.views.ArrowTipView;
 import com.android.launcher3.views.Snackbar;
 
-import java.util.ArrayDeque;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.IntStream;
@@ -74,102 +69,13 @@
      */
     void migrate() {
         HotseatRestoreHelper.createBackup(mLauncher);
-        if (FeatureFlags.HOTSEAT_MIGRATE_TO_FOLDER.get()) {
-            migrateToFolder();
-        } else {
-            migrateHotseatWhole();
-        }
+        migrateHotseatWhole();
         Snackbar.show(mLauncher, R.string.hotsaet_tip_prediction_enabled,
                 R.string.hotseat_prediction_settings, null,
                 () -> mLauncher.startActivity(getSettingsIntent()));
     }
 
     /**
-     * This migration places all non folder items in the hotseat into a folder and then moves
-     * all folders in the hotseat to a workspace page that has enough empty spots.
-     *
-     * @return pageId that has accepted the items.
-     */
-    private int migrateToFolder() {
-        ArrayDeque<FolderInfo> folders = new ArrayDeque<>();
-        ArrayList<WorkspaceItemInfo> putIntoFolder = new ArrayList<>();
-
-        //separate folders and items that can get in folders
-        for (int i = 0; i < mLauncher.getDeviceProfile().numShownHotseatIcons; i++) {
-            View view = mHotseat.getChildAt(i, 0);
-            if (view == null) continue;
-            ItemInfo info = (ItemInfo) view.getTag();
-            if (info.itemType == LauncherSettings.Favorites.ITEM_TYPE_FOLDER) {
-                folders.add((FolderInfo) info);
-            } else if (info instanceof WorkspaceItemInfo && info.container == LauncherSettings
-                    .Favorites.CONTAINER_HOTSEAT) {
-                putIntoFolder.add((WorkspaceItemInfo) info);
-            }
-        }
-
-        // create a temp folder and add non folder items to it
-        if (!putIntoFolder.isEmpty()) {
-            ItemInfo firstItem = putIntoFolder.get(0);
-            FolderInfo folderInfo = new FolderInfo();
-            mLauncher.getModelWriter().addItemToDatabase(folderInfo, firstItem.container,
-                    firstItem.screenId, firstItem.cellX, firstItem.cellY);
-            folderInfo.setTitle("", mLauncher.getModelWriter());
-            folderInfo.contents.addAll(putIntoFolder);
-            for (int i = 0; i < folderInfo.contents.size(); i++) {
-                ItemInfo item = folderInfo.contents.get(i);
-                item.rank = i;
-                mLauncher.getModelWriter().moveItemInDatabase(item, folderInfo.id, 0,
-                        item.cellX, item.cellY);
-            }
-            folders.add(folderInfo);
-        }
-        mNewItems.addAll(folders);
-
-        return placeFoldersInWorkspace(folders);
-    }
-
-    private int placeFoldersInWorkspace(ArrayDeque<FolderInfo> folders) {
-        if (folders.isEmpty()) return 0;
-
-        Workspace<?> workspace = mLauncher.getWorkspace();
-        InvariantDeviceProfile idp = mLauncher.getDeviceProfile().inv;
-
-        GridOccupancy[] occupancyList = new GridOccupancy[workspace.getChildCount()];
-        for (int i = 0; i < occupancyList.length; i++) {
-            occupancyList[i] = ((CellLayout) workspace.getChildAt(i)).cloneGridOccupancy();
-        }
-        //scan every screen to find available spots to place folders
-        int occupancyIndex = 0;
-        int[] itemXY = new int[2];
-        while (occupancyIndex < occupancyList.length && !folders.isEmpty()) {
-            GridOccupancy occupancy = occupancyList[occupancyIndex];
-            if (occupancy.findVacantCell(itemXY, 1, 1)) {
-                FolderInfo info = folders.poll();
-                mLauncher.getModelWriter().moveItemInDatabase(info,
-                        LauncherSettings.Favorites.CONTAINER_DESKTOP,
-                        workspace.getScreenIdForPageIndex(occupancyIndex), itemXY[0], itemXY[1]);
-                occupancy.markCells(info, true);
-            } else {
-                occupancyIndex++;
-            }
-        }
-        if (folders.isEmpty()) return workspace.getScreenIdForPageIndex(occupancyIndex);
-        int screenId = LauncherSettings.Settings.call(mLauncher.getContentResolver(),
-                LauncherSettings.Settings.METHOD_NEW_SCREEN_ID)
-                .getInt(LauncherSettings.Settings.EXTRA_VALUE);
-        // if all screens are full and we still have folders left, put those on a new page
-        FolderInfo folderInfo;
-        int col = 0;
-        while ((folderInfo = folders.poll()) != null) {
-            mLauncher.getModelWriter().moveItemInDatabase(folderInfo,
-                    LauncherSettings.Favorites.CONTAINER_DESKTOP, screenId, col++,
-                    idp.numRows - 1);
-        }
-        mNewScreens = IntArray.wrap(screenId);
-        return workspace.getPageCount();
-    }
-
-    /**
      * This migration option attempts to move the entire hotseat up to the first workspace that
      * has space to host items. If no such page is found, it moves items to a new page.
      *
diff --git a/quickstep/src/com/android/launcher3/hybridhotseat/HotseatEduDialog.java b/quickstep/src/com/android/launcher3/hybridhotseat/HotseatEduDialog.java
index 119ae90..80bdb6f 100644
--- a/quickstep/src/com/android/launcher3/hybridhotseat/HotseatEduDialog.java
+++ b/quickstep/src/com/android/launcher3/hybridhotseat/HotseatEduDialog.java
@@ -15,8 +15,7 @@
  */
 package com.android.launcher3.hybridhotseat;
 
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent
-        .LAUNCHER_HOTSEAT_EDU_ACCEPT;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_HOTSEAT_EDU_ACCEPT;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_HOTSEAT_EDU_DENY;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_HOTSEAT_EDU_SEEN;
 
@@ -39,9 +38,8 @@
 import com.android.launcher3.Launcher;
 import com.android.launcher3.R;
 import com.android.launcher3.anim.Interpolators;
-import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.celllayout.CellLayoutLayoutParams;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
-import com.android.launcher3.uioverrides.ApiWrapper;
 import com.android.launcher3.uioverrides.PredictedAppIcon;
 import com.android.launcher3.views.AbstractSlideInView;
 
@@ -107,19 +105,12 @@
         mDismissBtn.setOnClickListener(this::onDismiss);
 
         LinearLayout buttonContainer = findViewById(R.id.button_container);
-        int adjustedMarginEnd = ApiWrapper.getHotseatEndOffset(context)
-                - buttonContainer.getPaddingEnd();
+        int adjustedMarginEnd = grid.hotseatBarEndOffset - buttonContainer.getPaddingEnd();
         if (InvariantDeviceProfile.INSTANCE.get(context)
                 .getDeviceProfile(context).isTaskbarPresent && adjustedMarginEnd > 0) {
             ((LinearLayout.LayoutParams) buttonContainer.getLayoutParams()).setMarginEnd(
                     adjustedMarginEnd);
         }
-
-        // update ui to reflect which migration method is going to be used
-        if (FeatureFlags.HOTSEAT_MIGRATE_TO_FOLDER.get()) {
-            ((TextView) findViewById(R.id.hotseat_edu_content)).setText(
-                    R.string.hotseat_edu_message_migrate_alt);
-        }
     }
 
     private void onAccept(View v) {
@@ -202,7 +193,7 @@
             icon.setEnabled(false);
             icon.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
             icon.verifyHighRes();
-            CellLayout.LayoutParams lp = new CellLayout.LayoutParams(i, 0, 1, 1);
+            CellLayoutLayoutParams lp = new CellLayoutLayoutParams(i, 0, 1, 1);
             mSampleHotseat.addViewToCellLayout(icon, i, info.getViewId(), lp, true);
         }
     }
diff --git a/quickstep/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java b/quickstep/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java
index 05b8167..85d0ab5 100644
--- a/quickstep/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java
+++ b/quickstep/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java
@@ -33,6 +33,7 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
 
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.DragSource;
@@ -41,7 +42,6 @@
 import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.R;
 import com.android.launcher3.anim.AnimationSuccessListener;
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.dragndrop.DragController;
 import com.android.launcher3.dragndrop.DragOptions;
 import com.android.launcher3.graphics.DragPreviewProvider;
@@ -52,6 +52,8 @@
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
 import com.android.launcher3.popup.SystemShortcut;
+import com.android.launcher3.testing.TestLogging;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.touch.ItemLongClickListener;
 import com.android.launcher3.uioverrides.PredictedAppIcon;
 import com.android.launcher3.uioverrides.QuickstepLauncher;
@@ -90,10 +92,14 @@
 
     private List<PredictedAppIcon.PredictedIconOutlineDrawing> mOutlineDrawings = new ArrayList<>();
 
+    private boolean mEnableHotseatLongPressTipForTesting = true;
+
     private final View.OnLongClickListener mPredictionLongClickListener = v -> {
         if (!ItemLongClickListener.canStartDrag(mLauncher)) return false;
         if (mLauncher.getWorkspace().isSwitchingState()) return false;
-        if (!mLauncher.getOnboardingPrefs().getBoolean(
+
+        TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "onWorkspaceItemLongClick");
+        if (mEnableHotseatLongPressTipForTesting && !mLauncher.getOnboardingPrefs().getBoolean(
                 OnboardingPrefs.HOTSEAT_LONGPRESS_TIP_SEEN)) {
             Snackbar.show(mLauncher, R.string.hotseat_tip_gaps_filled,
                     R.string.hotseat_prediction_settings, null,
@@ -133,6 +139,12 @@
         onHotseatHierarchyChanged();
     }
 
+    /** Enables/disabled the hotseat prediction icon long press edu for testing. */
+    @VisibleForTesting
+    public void enableHotseatEdu(boolean enable) {
+        mEnableHotseatLongPressTipForTesting = enable;
+    }
+
     private void onHotseatHierarchyChanged() {
         if (mPauseFlags == 0 && !mLauncher.isWorkspaceLoading()) {
             // Post update after a single frame to avoid layout within layout
@@ -279,33 +291,7 @@
      * Sets or updates the predicted items
      */
     public void setPredictedItems(FixedContainerItems items) {
-        boolean shouldIgnoreVisibility = FeatureFlags.ENABLE_APP_PREDICTIONS_WHILE_VISIBLE.get()
-                || mLauncher.isWorkspaceLoading()
-                || mPredictedItems.equals(items.items)
-                || mHotseat.getShortcutsAndWidgets().getChildCount() < mHotSeatItemsCount;
-        if (!shouldIgnoreVisibility
-                && mHotseat.isShown()
-                && mHotseat.getWindowVisibility() == View.VISIBLE) {
-            mHotseat.setOnVisibilityAggregatedCallback((isVisible) -> {
-                if (isVisible) {
-                    return;
-                }
-                mHotseat.setOnVisibilityAggregatedCallback(null);
-
-                applyPredictedItems(items);
-            });
-        } else {
-            mHotseat.setOnVisibilityAggregatedCallback(null);
-
-            applyPredictedItems(items);
-        }
-    }
-
-    /**
-     * Sets or updates the predicted items only once the hotseat becomes hidden to the user
-     */
-    private void applyPredictedItems(FixedContainerItems items) {
-        mPredictedItems = items.items;
+        mPredictedItems = new ArrayList(items.items);
         if (mPredictedItems.isEmpty()) {
             HotseatRestoreHelper.restoreBackup(mLauncher);
         }
diff --git a/quickstep/src/com/android/launcher3/hybridhotseat/HotseatRestoreHelper.java b/quickstep/src/com/android/launcher3/hybridhotseat/HotseatRestoreHelper.java
index 4956fa1..726abff 100644
--- a/quickstep/src/com/android/launcher3/hybridhotseat/HotseatRestoreHelper.java
+++ b/quickstep/src/com/android/launcher3/hybridhotseat/HotseatRestoreHelper.java
@@ -21,7 +21,6 @@
 
 import android.content.Context;
 
-import com.android.launcher3.InvariantDeviceProfile;
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.model.GridBackupTable;
@@ -42,10 +41,7 @@
                             context.getContentResolver(),
                             LauncherSettings.Settings.METHOD_NEW_TRANSACTION)
                             .getBinder(LauncherSettings.Settings.EXTRA_VALUE)) {
-                InvariantDeviceProfile idp = LauncherAppState.getIDP(context);
-                GridBackupTable backupTable = new GridBackupTable(context,
-                        transaction.getDb(), idp.numDatabaseHotseatIcons, idp.numColumns,
-                        idp.numRows);
+                GridBackupTable backupTable = new GridBackupTable(context, transaction.getDb());
                 backupTable.createCustomBackupTable(HYBRID_HOTSEAT_BACKUP_TABLE);
                 transaction.commit();
                 LauncherSettings.Settings.call(context.getContentResolver(),
@@ -67,10 +63,7 @@
                 if (!tableExists(transaction.getDb(), HYBRID_HOTSEAT_BACKUP_TABLE)) {
                     return;
                 }
-                InvariantDeviceProfile idp = LauncherAppState.getIDP(context);
-                GridBackupTable backupTable = new GridBackupTable(context,
-                        transaction.getDb(), idp.numDatabaseHotseatIcons, idp.numColumns,
-                        idp.numRows);
+                GridBackupTable backupTable = new GridBackupTable(context, transaction.getDb());
                 backupTable.restoreFromCustomBackupTable(HYBRID_HOTSEAT_BACKUP_TABLE, true);
                 transaction.commit();
                 LauncherAppState.getInstance(context).getModel().forceReload();
diff --git a/quickstep/src/com/android/launcher3/model/AppEventProducer.java b/quickstep/src/com/android/launcher3/model/AppEventProducer.java
index 9f3be69..0dde1bd 100644
--- a/quickstep/src/com/android/launcher3/model/AppEventProducer.java
+++ b/quickstep/src/com/android/launcher3/model/AppEventProducer.java
@@ -118,7 +118,7 @@
     private void sendEvent(AppTarget target, LauncherAtom.ItemInfo locationInfo, int eventId,
             int targetPredictor) {
         // TODO: remove the running test check when b/231648228 is fixed.
-        if (target != null && !Utilities.IS_RUNNING_IN_TEST_HARNESS) {
+        if (target != null && !Utilities.isRunningInTestHarness()) {
             AppTargetEvent event = new AppTargetEvent.Builder(target, eventId)
                     .setLaunchLocation(getContainer(locationInfo))
                     .build();
diff --git a/quickstep/src/com/android/launcher3/model/PredictionUpdateTask.java b/quickstep/src/com/android/launcher3/model/PredictionUpdateTask.java
index 7e3ee7d..e504141 100644
--- a/quickstep/src/com/android/launcher3/model/PredictionUpdateTask.java
+++ b/quickstep/src/com/android/launcher3/model/PredictionUpdateTask.java
@@ -27,13 +27,17 @@
 import android.content.pm.ShortcutInfo;
 import android.os.UserHandle;
 
+import androidx.annotation.NonNull;
+
 import com.android.launcher3.LauncherAppState;
-import com.android.launcher3.Utilities;
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.model.BgDataModel.FixedContainerItems;
 import com.android.launcher3.model.QuickstepModelDelegate.PredictorState;
 import com.android.launcher3.model.data.AppInfo;
+import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
@@ -52,11 +56,12 @@
     }
 
     @Override
-    public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) {
+    public void execute(@NonNull final LauncherAppState app, @NonNull final BgDataModel dataModel,
+            @NonNull final AllAppsList apps) {
         Context context = app.getContext();
 
         // TODO: remove this
-        Utilities.getDevicePrefs(context).edit()
+        LauncherPrefs.getDevicePrefs(context).edit()
                 .putBoolean(LAST_PREDICTION_ENABLED_STATE, !mTargets.isEmpty()).apply();
 
         Set<UserHandle> usersForChangedShortcuts =
@@ -65,7 +70,7 @@
                         .map(info -> info.user)
                         .collect(Collectors.toSet());
 
-        FixedContainerItems fci = new FixedContainerItems(mPredictorState.containerId);
+        List<ItemInfo> items = new ArrayList<>(mTargets.size());
         for (AppTarget target : mTargets) {
             WorkspaceItemInfo itemInfo;
             ShortcutInfo si = target.getShortcutInfo();
@@ -104,10 +109,11 @@
                 }
             }
 
-            itemInfo.container = fci.containerId;
-            fci.items.add(itemInfo);
+            itemInfo.container = mPredictorState.containerId;
+            items.add(itemInfo);
         }
 
+        FixedContainerItems fci = new FixedContainerItems(mPredictorState.containerId, items);
         dataModel.extraItems.put(fci.containerId, fci);
         bindExtraContainerItems(fci);
         usersForChangedShortcuts.forEach(
diff --git a/quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java b/quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java
index 770dfb2..bc97df1 100644
--- a/quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java
+++ b/quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java
@@ -18,12 +18,12 @@
 import static android.text.format.DateUtils.DAY_IN_MILLIS;
 import static android.text.format.DateUtils.formatElapsedTime;
 
+import static com.android.launcher3.LauncherPrefs.getDevicePrefs;
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_HOTSEAT_PREDICTION;
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_PREDICTION;
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_WIDGETS_PREDICTION;
 import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION;
 import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT;
-import static com.android.launcher3.Utilities.getDevicePrefs;
 import static com.android.launcher3.hybridhotseat.HotseatPredictionModel.convertDataModelToAppTargetBundle;
 import static com.android.launcher3.model.PredictionHelper.getAppTargetFromItemInfo;
 import static com.android.launcher3.model.PredictionHelper.wrapAppTargetWithItemLocation;
@@ -48,11 +48,15 @@
 import android.util.Log;
 import android.util.StatsEvent;
 
+import androidx.annotation.AnyThread;
+import androidx.annotation.CallSuper;
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.WorkerThread;
 
 import com.android.launcher3.InvariantDeviceProfile;
 import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.logger.LauncherAtom;
 import com.android.launcher3.logging.InstanceId;
 import com.android.launcher3.logging.InstanceIdSequence;
@@ -62,6 +66,7 @@
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
 import com.android.launcher3.shortcuts.ShortcutKey;
+import com.android.launcher3.util.Executors;
 import com.android.launcher3.util.IntSparseArrayMap;
 import com.android.launcher3.util.PersistedItemArray;
 import com.android.quickstep.logging.SettingsChangeLogger;
@@ -111,27 +116,82 @@
         mStatsManager = context.getSystemService(StatsManager.class);
     }
 
+    @CallSuper
     @Override
+    public void loadAndBindWorkspaceItems(@NonNull UserManagerState ums,
+            @NonNull BgDataModel.Callbacks[] callbacks,
+            @NonNull Map<ShortcutKey, ShortcutInfo> pinnedShortcuts) {
+        loadAndBindItems(ums, pinnedShortcuts, callbacks, mIDP.numDatabaseHotseatIcons,
+                mHotseatState);
+    }
+
+    @CallSuper
+    @Override
+    public void loadAndBindAllAppsItems(@NonNull UserManagerState ums,
+            @NonNull BgDataModel.Callbacks[] callbacks,
+            @NonNull Map<ShortcutKey, ShortcutInfo> pinnedShortcuts) {
+        loadAndBindItems(ums, pinnedShortcuts, callbacks, mIDP.numDatabaseAllAppsColumns,
+                mAllAppsState);
+    }
+
     @WorkerThread
-    public void loadItems(UserManagerState ums, Map<ShortcutKey, ShortcutInfo> pinnedShortcuts) {
+    private void loadAndBindItems(@NonNull UserManagerState ums,
+            @NonNull Map<ShortcutKey, ShortcutInfo> pinnedShortcuts,
+            @NonNull BgDataModel.Callbacks[] callbacks,
+            int numColumns, @NonNull PredictorState state) {
         // TODO: Implement caching and preloading
-        super.loadItems(ums, pinnedShortcuts);
 
-        WorkspaceItemFactory allAppsFactory = new WorkspaceItemFactory(
-                mApp, ums, pinnedShortcuts, mIDP.numDatabaseAllAppsColumns);
-        FixedContainerItems allAppsItems = new FixedContainerItems(mAllAppsState.containerId,
-                mAllAppsState.storage.read(mApp.getContext(), allAppsFactory, ums.allUsers::get));
-        mDataModel.extraItems.put(mAllAppsState.containerId, allAppsItems);
+        WorkspaceItemFactory factory =
+                new WorkspaceItemFactory(mApp, ums, pinnedShortcuts, numColumns, state.containerId);
+        FixedContainerItems fci = new FixedContainerItems(state.containerId,
+                state.storage.read(mApp.getContext(), factory, ums.allUsers::get));
+        if (FeatureFlags.CHANGE_MODEL_DELEGATE_LOADING_ORDER.get()) {
+            bindPredictionItems(callbacks, fci);
+        }
+        mDataModel.extraItems.put(state.containerId, fci);
+    }
 
-        WorkspaceItemFactory hotseatFactory =
-                new WorkspaceItemFactory(mApp, ums, pinnedShortcuts, mIDP.numDatabaseHotseatIcons);
-        FixedContainerItems hotseatItems = new FixedContainerItems(mHotseatState.containerId,
-                mHotseatState.storage.read(mApp.getContext(), hotseatFactory, ums.allUsers::get));
-        mDataModel.extraItems.put(mHotseatState.containerId, hotseatItems);
+    @CallSuper
+    @Override
+    public void loadAndBindOtherItems(@NonNull BgDataModel.Callbacks[] callbacks) {
+        FixedContainerItems widgetPredictionFCI = new FixedContainerItems(
+                mWidgetsRecommendationState.containerId, new ArrayList<>());
 
         // Widgets prediction isn't used frequently. And thus, it is not persisted on disk.
-        mDataModel.extraItems.put(mWidgetsRecommendationState.containerId,
-                new FixedContainerItems(mWidgetsRecommendationState.containerId));
+        mDataModel.extraItems.put(mWidgetsRecommendationState.containerId, widgetPredictionFCI);
+
+        bindPredictionItems(callbacks, widgetPredictionFCI);
+        loadStringCache(mDataModel.stringCache);
+    }
+
+    @AnyThread
+    private void bindPredictionItems(@NonNull BgDataModel.Callbacks[] callbacks,
+            @NonNull FixedContainerItems fci) {
+        Executors.MAIN_EXECUTOR.execute(() -> {
+            for (BgDataModel.Callbacks c : callbacks) {
+                c.bindExtraContainerItems(fci);
+            }
+        });
+    }
+
+    @Override
+    @WorkerThread
+    public void bindAllModelExtras(@NonNull BgDataModel.Callbacks[] callbacks) {
+        Iterable<FixedContainerItems> containerItems;
+        synchronized (mDataModel.extraItems) {
+            containerItems = mDataModel.extraItems.clone();
+        }
+        Executors.MAIN_EXECUTOR.execute(() -> {
+            for (BgDataModel.Callbacks c : callbacks) {
+                for (FixedContainerItems fci : containerItems) {
+                    c.bindExtraContainerItems(fci);
+                }
+            }
+        });
+    }
+
+    public void markActive() {
+        super.markActive();
         mActive = true;
     }
 
@@ -304,6 +364,7 @@
     }
 
     private void registerPredictor(PredictorState state, AppPredictor predictor) {
+        state.setTargets(Collections.emptyList());
         state.predictor = predictor;
         state.predictor.registerPredictionUpdates(
                 MODEL_EXECUTOR, t -> handleUpdate(state, t));
@@ -432,15 +493,17 @@
         private final UserManagerState mUMS;
         private final Map<ShortcutKey, ShortcutInfo> mPinnedShortcuts;
         private final int mMaxCount;
+        private final int mContainer;
 
         private int mReadCount = 0;
 
         protected WorkspaceItemFactory(LauncherAppState appState, UserManagerState ums,
-                Map<ShortcutKey, ShortcutInfo> pinnedShortcuts, int maxCount) {
+                Map<ShortcutKey, ShortcutInfo> pinnedShortcuts, int maxCount, int container) {
             mAppState = appState;
             mUMS = ums;
             mPinnedShortcuts = pinnedShortcuts;
             mMaxCount = maxCount;
+            mContainer = container;
         }
 
         @Nullable
@@ -458,6 +521,7 @@
                         return null;
                     }
                     AppInfo info = new AppInfo(lai, user, mUMS.isUserQuiet(user));
+                    info.container = mContainer;
                     mAppState.getIconCache().getTitleAndIcon(info, lai, false);
                     mReadCount++;
                     return info.makeWorkspaceItem(mAppState.getContext());
@@ -472,6 +536,7 @@
                         return null;
                     }
                     WorkspaceItemInfo wii = new WorkspaceItemInfo(si, mAppState.getContext());
+                    wii.container = mContainer;
                     mAppState.getIconCache().getShortcutIcon(wii, si);
                     mReadCount++;
                     return wii;
diff --git a/quickstep/src/com/android/launcher3/model/WellbeingModel.java b/quickstep/src/com/android/launcher3/model/WellbeingModel.java
index 68ed682..003c2fc 100644
--- a/quickstep/src/com/android/launcher3/model/WellbeingModel.java
+++ b/quickstep/src/com/android/launcher3/model/WellbeingModel.java
@@ -18,7 +18,7 @@
 
 import static android.content.ContentResolver.SCHEME_CONTENT;
 
-import static com.android.launcher3.Utilities.newContentObserver;
+import static com.android.launcher3.util.SimpleBroadcastReceiver.getPackageFilter;
 
 import android.annotation.TargetApi;
 import android.app.RemoteAction;
@@ -47,17 +47,12 @@
 import androidx.annotation.WorkerThread;
 
 import com.android.launcher3.BaseDraggingActivity;
-import com.android.launcher3.InvariantDeviceProfile;
-import com.android.launcher3.LauncherProvider;
-import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.R;
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.popup.RemoteActionShortcut;
 import com.android.launcher3.popup.SystemShortcut;
 import com.android.launcher3.util.BgObjectWithLooper;
 import com.android.launcher3.util.MainThreadInitializedObject;
-import com.android.launcher3.util.PackageManagerHelper;
 import com.android.launcher3.util.Preconditions;
 import com.android.launcher3.util.SimpleBroadcastReceiver;
 
@@ -74,21 +69,14 @@
     private static final int[] RETRY_TIMES_MS = {5000, 15000, 30000};
     private static final boolean DEBUG = false;
 
-    private static final int UNKNOWN_MINIMAL_DEVICE_STATE = 0;
-    private static final int IN_MINIMAL_DEVICE = 2;
-
     // Welbeing contract
     private static final String PATH_ACTIONS = "actions";
-    private static final String PATH_MINIMAL_DEVICE = "minimal_device";
-    private static final String METHOD_GET_MINIMAL_DEVICE_CONFIG = "get_minimal_device_config";
     private static final String METHOD_GET_ACTIONS = "get_actions";
     private static final String EXTRA_ACTIONS = "actions";
     private static final String EXTRA_ACTION = "action";
     private static final String EXTRA_MAX_NUM_ACTIONS_SHOWN = "max_num_actions_shown";
     private static final String EXTRA_PACKAGES = "packages";
     private static final String EXTRA_SUCCESS = "success";
-    private static final String EXTRA_MINIMAL_DEVICE_STATE = "minimal_device_state";
-    private static final String DB_NAME_MINIMAL_DEVICE = "minimal.db";
 
     public static final MainThreadInitializedObject<WellbeingModel> INSTANCE =
             new MainThreadInitializedObject<>(WellbeingModel::new);
@@ -119,7 +107,7 @@
         if (!TextUtils.isEmpty(mWellbeingProviderPkg)) {
             mContext.registerReceiver(
                     new SimpleBroadcastReceiver(t -> restartObserver()),
-                    PackageManagerHelper.getPackageFilter(mWellbeingProviderPkg,
+                    getPackageFilter(mWellbeingProviderPkg,
                             Intent.ACTION_PACKAGE_ADDED, Intent.ACTION_PACKAGE_CHANGED,
                             Intent.ACTION_PACKAGE_REMOVED, Intent.ACTION_PACKAGE_DATA_CLEARED,
                             Intent.ACTION_PACKAGE_RESTARTED),
@@ -138,36 +126,7 @@
     @WorkerThread
     private void onWellbeingUriChanged(Uri uri) {
         Preconditions.assertNonUiThread();
-        if (DEBUG || mIsInTest) {
-            Log.d(TAG, "ContentObserver.onChange() called with: uri = [" + uri + "]");
-        }
-        if (uri.getPath().contains(PATH_ACTIONS)) {
-            // Wellbeing reports that app actions have changed.
-            updateAllPackages();
-        } else if (uri.getPath().contains(PATH_MINIMAL_DEVICE)) {
-            // Wellbeing reports that minimal device state or config is changed.
-            if (!FeatureFlags.ENABLE_MINIMAL_DEVICE.get()) {
-                return;
-            }
-
-            // Temporary bug fix for b/169771796. Wellbeing provides the layout configuration when
-            // minimal device is enabled. We always want to reload the configuration from Wellbeing
-            // since the layout configuration might have changed.
-            mContext.deleteDatabase(DB_NAME_MINIMAL_DEVICE);
-
-            final Bundle extras = new Bundle();
-            String dbFile;
-            if (isInMinimalDeviceMode()) {
-                dbFile = DB_NAME_MINIMAL_DEVICE;
-                extras.putString(LauncherProvider.KEY_LAYOUT_PROVIDER_AUTHORITY,
-                        mWellbeingProviderPkg + ".api");
-            } else {
-                dbFile = InvariantDeviceProfile.INSTANCE.get(mContext).dbFile;
-            }
-            LauncherSettings.Settings.call(mContext.getContentResolver(),
-                    LauncherSettings.Settings.METHOD_SWITCH_DATABASE,
-                    dbFile, extras);
-        }
+        updateAllPackages();
     }
 
     public void setInTest(boolean inTest) {
@@ -179,12 +138,9 @@
         final ContentResolver resolver = mContext.getContentResolver();
         resolver.unregisterContentObserver(mContentObserver);
         Uri actionsUri = apiBuilder().path(PATH_ACTIONS).build();
-        Uri minimalDeviceUri = apiBuilder().path(PATH_MINIMAL_DEVICE).build();
         try {
             resolver.registerContentObserver(
                     actionsUri, true /* notifyForDescendants */, mContentObserver);
-            resolver.registerContentObserver(
-                    minimalDeviceUri, true /* notifyForDescendants */, mContentObserver);
         } catch (Exception e) {
             Log.e(TAG, "Failed to register content observer for " + actionsUri + ": " + e);
             if (mIsInTest) throw new RuntimeException(e);
@@ -229,32 +185,6 @@
     }
 
     @WorkerThread
-    private boolean isInMinimalDeviceMode() {
-        if (!FeatureFlags.ENABLE_MINIMAL_DEVICE.get()) {
-            return false;
-        }
-        if (DEBUG || mIsInTest) {
-            Log.d(TAG, "isInMinimalDeviceMode() called");
-        }
-        Preconditions.assertNonUiThread();
-
-        final Uri contentUri = apiBuilder().build();
-        try (ContentProviderClient client = mContext.getContentResolver()
-                .acquireUnstableContentProviderClient(contentUri)) {
-            final Bundle remoteBundle = client == null ? null : client.call(
-                    METHOD_GET_MINIMAL_DEVICE_CONFIG, null /* args */, null /* extras */);
-            return remoteBundle != null
-                    && remoteBundle.getInt(EXTRA_MINIMAL_DEVICE_STATE,
-                    UNKNOWN_MINIMAL_DEVICE_STATE) == IN_MINIMAL_DEVICE;
-        } catch (Exception e) {
-            Log.e(TAG, "Failed to retrieve data from " + contentUri + ": " + e);
-            if (mIsInTest) throw new RuntimeException(e);
-        }
-        if (DEBUG || mIsInTest) Log.i(TAG, "isInMinimalDeviceMode(): finished");
-        return false;
-    }
-
-    @WorkerThread
     private boolean updateActions(String[] packageNames) {
         if (packageNames.length == 0) {
             return true;
diff --git a/quickstep/src/com/android/launcher3/model/WidgetsPredictionUpdateTask.java b/quickstep/src/com/android/launcher3/model/WidgetsPredictionUpdateTask.java
index 9cd9d85..6160378 100644
--- a/quickstep/src/com/android/launcher3/model/WidgetsPredictionUpdateTask.java
+++ b/quickstep/src/com/android/launcher3/model/WidgetsPredictionUpdateTask.java
@@ -18,20 +18,23 @@
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_WIDGETS_PREDICTION;
 
 import android.app.prediction.AppTarget;
-import android.content.ComponentName;
 import android.text.TextUtils;
 
+import androidx.annotation.NonNull;
+
 import com.android.launcher3.LauncherAppState;
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.model.BgDataModel.FixedContainerItems;
 import com.android.launcher3.model.QuickstepModelDelegate.PredictorState;
+import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.util.ComponentKey;
 import com.android.launcher3.util.PackageUserKey;
 import com.android.launcher3.widget.PendingAddWidgetInfo;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
 /** Task to update model as a result of predicted widgets update */
@@ -52,54 +55,50 @@
      * workspace.
      */
     @Override
-    public void execute(LauncherAppState appState, BgDataModel dataModel, AllAppsList apps) {
+    public void execute(@NonNull final LauncherAppState appState,
+            @NonNull final BgDataModel dataModel, @NonNull final AllAppsList apps) {
         Set<ComponentKey> widgetsInWorkspace = dataModel.appWidgets.stream().map(
                 widget -> new ComponentKey(widget.providerName, widget.user)).collect(
                 Collectors.toSet());
+        Predicate<WidgetItem> notOnWorkspace = w -> !widgetsInWorkspace.contains(w);
         Map<PackageUserKey, List<WidgetItem>> allWidgets =
                 dataModel.widgetsModel.getAllWidgetsWithoutShortcuts();
 
-        FixedContainerItems fixedContainerItems =
-                new FixedContainerItems(mPredictorState.containerId);
+        List<WidgetItem> servicePredictedItems = new ArrayList<>();
+        List<WidgetItem> localFilteredWidgets = new ArrayList<>();
 
-        if (FeatureFlags.ENABLE_LOCAL_RECOMMENDED_WIDGETS_FILTER.get()) {
-            for (AppTarget app : mTargets) {
-                PackageUserKey packageUserKey = new PackageUserKey(app.getPackageName(),
-                        app.getUser());
-                if (allWidgets.containsKey(packageUserKey)) {
-                    List<WidgetItem> notAddedWidgets = allWidgets.get(packageUserKey).stream()
-                            .filter(item ->
-                                    !widgetsInWorkspace.contains(
-                                            new ComponentKey(item.componentName, item.user)))
-                            .collect(Collectors.toList());
-                    if (notAddedWidgets.size() > 0) {
-                        // Even an apps have more than one widgets, we only include one widget.
-                        fixedContainerItems.items.add(
-                                new PendingAddWidgetInfo(
-                                        notAddedWidgets.get(0).widgetInfo,
-                                        CONTAINER_WIDGETS_PREDICTION));
-                    }
-                }
+        for (AppTarget app : mTargets) {
+            PackageUserKey packageUserKey = new PackageUserKey(app.getPackageName(), app.getUser());
+            List<WidgetItem> widgets = allWidgets.get(packageUserKey);
+            if (widgets == null || widgets.isEmpty()) {
+                continue;
             }
-        } else {
-            Map<ComponentKey, WidgetItem> widgetItems =
-                    allWidgets.values().stream().flatMap(List::stream).distinct()
-                            .collect(Collectors.toMap(widget -> (ComponentKey) widget,
-                                    widget -> widget));
-            for (AppTarget app : mTargets) {
-                if (TextUtils.isEmpty(app.getClassName())) {
+            String className = app.getClassName();
+            if (!TextUtils.isEmpty(className)) {
+                WidgetItem item = widgets.stream()
+                        .filter(w -> className.equals(w.componentName.getClassName()))
+                        .filter(notOnWorkspace)
+                        .findFirst()
+                        .orElse(null);
+                if (item != null) {
+                    servicePredictedItems.add(item);
                     continue;
                 }
-                ComponentKey targetWidget = new ComponentKey(
-                        new ComponentName(app.getPackageName(), app.getClassName()), app.getUser());
-                if (widgetItems.containsKey(targetWidget)) {
-                    fixedContainerItems.items.add(
-                            new PendingAddWidgetInfo(widgetItems.get(
-                                    targetWidget).widgetInfo,
-                                    CONTAINER_WIDGETS_PREDICTION));
-                }
             }
+            // No widget was added by the service, try local filtering
+            widgets.stream().filter(notOnWorkspace).findFirst()
+                    .ifPresent(localFilteredWidgets::add);
         }
+        if (servicePredictedItems.isEmpty()) {
+            servicePredictedItems.addAll(localFilteredWidgets);
+        }
+
+        List<ItemInfo> items = servicePredictedItems.stream()
+                .map(it -> new PendingAddWidgetInfo(it.widgetInfo, CONTAINER_WIDGETS_PREDICTION))
+                .collect(Collectors.toList());
+        FixedContainerItems fixedContainerItems =
+                new FixedContainerItems(mPredictorState.containerId, items);
+
         dataModel.extraItems.put(mPredictorState.containerId, fixedContainerItems);
         bindExtraContainerItems(fixedContainerItems);
 
diff --git a/quickstep/src/com/android/launcher3/popup/QuickstepSystemShortcut.java b/quickstep/src/com/android/launcher3/popup/QuickstepSystemShortcut.java
index 4e59790..184ea71 100644
--- a/quickstep/src/com/android/launcher3/popup/QuickstepSystemShortcut.java
+++ b/quickstep/src/com/android/launcher3/popup/QuickstepSystemShortcut.java
@@ -15,79 +15,31 @@
  */
 package com.android.launcher3.popup;
 
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
-import android.util.Log;
 import android.view.View;
 
-import com.android.launcher3.BaseQuickstepLauncher;
 import com.android.launcher3.model.data.ItemInfo;
-import com.android.launcher3.model.data.WorkspaceItemInfo;
+import com.android.launcher3.splitscreen.SplitShortcut;
+import com.android.launcher3.uioverrides.QuickstepLauncher;
 import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption;
-import com.android.quickstep.views.RecentsView;
 
+/** {@link SystemShortcut.Factory} implementation to create workspace split shortcuts */
 public interface QuickstepSystemShortcut {
 
     String TAG = QuickstepSystemShortcut.class.getSimpleName();
 
-    static SystemShortcut.Factory<BaseQuickstepLauncher> getSplitSelectShortcutByPosition(
+    static SystemShortcut.Factory<QuickstepLauncher> getSplitSelectShortcutByPosition(
             SplitPositionOption position) {
         return (activity, itemInfo, originalView) ->
                 new QuickstepSystemShortcut.SplitSelectSystemShortcut(activity, itemInfo,
                         originalView, position);
     }
 
-    class SplitSelectSystemShortcut extends SystemShortcut<BaseQuickstepLauncher> {
+    class SplitSelectSystemShortcut extends SplitShortcut<QuickstepLauncher> {
 
-        private final SplitPositionOption mPosition;
-
-        public SplitSelectSystemShortcut(BaseQuickstepLauncher launcher, ItemInfo itemInfo,
+        public SplitSelectSystemShortcut(QuickstepLauncher launcher, ItemInfo itemInfo,
                 View originalView, SplitPositionOption position) {
-            super(position.iconResId, position.textResId, launcher, itemInfo, originalView);
-
-            mPosition = position;
-        }
-
-        @Override
-        public void onClick(View view) {
-            Bitmap bitmap;
-            Intent intent;
-            if (mItemInfo instanceof WorkspaceItemInfo) {
-                final WorkspaceItemInfo workspaceItemInfo = (WorkspaceItemInfo) mItemInfo;
-                bitmap = workspaceItemInfo.bitmap.icon;
-                intent = workspaceItemInfo.intent;
-            } else if (mItemInfo instanceof com.android.launcher3.model.data.AppInfo) {
-                final com.android.launcher3.model.data.AppInfo appInfo =
-                        (com.android.launcher3.model.data.AppInfo) mItemInfo;
-                bitmap = appInfo.bitmap.icon;
-                intent = appInfo.intent;
-            } else {
-                Log.e(TAG, "unknown item type");
-                return;
-            }
-
-            RecentsView recentsView = mTarget.getOverviewPanel();
-            recentsView.initiateSplitSelect(
-                    new SplitSelectSource(mOriginalView, new BitmapDrawable(bitmap), intent,
-                            mPosition));
-        }
-    }
-
-    class SplitSelectSource {
-
-        public final View view;
-        public final Drawable drawable;
-        public final Intent intent;
-        public final SplitPositionOption position;
-
-        public SplitSelectSource(View view, Drawable drawable, Intent intent,
-                SplitPositionOption position) {
-            this.view = view;
-            this.drawable = drawable;
-            this.intent = intent;
-            this.position = position;
+            super(position.iconResId, position.textResId, launcher, itemInfo, originalView,
+                    position);
         }
     }
 }
diff --git a/quickstep/src/com/android/launcher3/secondarydisplay/SecondaryDisplayPredictionsImpl.java b/quickstep/src/com/android/launcher3/secondarydisplay/SecondaryDisplayPredictionsImpl.java
new file mode 100644
index 0000000..8720bd8
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/secondarydisplay/SecondaryDisplayPredictionsImpl.java
@@ -0,0 +1,67 @@
+/*
+ * 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.launcher3.secondarydisplay;
+
+import static com.android.launcher3.util.OnboardingPrefs.ALL_APPS_VISITED_COUNT;
+
+import android.content.Context;
+import android.view.View;
+
+import com.android.launcher3.allapps.ActivityAllAppsContainerView;
+import com.android.launcher3.appprediction.AppsDividerView;
+import com.android.launcher3.appprediction.PredictionRowView;
+import com.android.launcher3.model.BgDataModel;
+import com.android.launcher3.util.OnboardingPrefs;
+import com.android.launcher3.views.ActivityContext;
+
+/**
+ * Implementation of SecondaryDisplayPredictions.
+ */
+@SuppressWarnings("unused")
+public final class SecondaryDisplayPredictionsImpl extends SecondaryDisplayPredictions {
+    private final ActivityContext mActivityContext;
+
+    public SecondaryDisplayPredictionsImpl(Context context) {
+        mActivityContext = ActivityContext.lookupContext(context);
+    }
+
+    @Override
+    void updateAppDivider() {
+        OnboardingPrefs<?> onboardingPrefs = mActivityContext.getOnboardingPrefs();
+        if (onboardingPrefs != null) {
+            mActivityContext.getAppsView().getFloatingHeaderView()
+                    .findFixedRowByType(AppsDividerView.class)
+                    .setShowAllAppsLabel(
+                            !onboardingPrefs.hasReachedMaxCount(ALL_APPS_VISITED_COUNT));
+            onboardingPrefs.incrementEventCount(ALL_APPS_VISITED_COUNT);
+        }
+    }
+
+    @Override
+    public void setPredictedApps(BgDataModel.FixedContainerItems item) {
+        mActivityContext.getAppsView().getFloatingHeaderView()
+                .findFixedRowByType(PredictionRowView.class)
+                .setPredictedApps(item.items);
+    }
+
+    @Override
+    public void setLongClickListener(ActivityAllAppsContainerView<?> appsView,
+            View.OnLongClickListener onIconLongClickListener) {
+        appsView.getFloatingHeaderView()
+                .findFixedRowByType(PredictionRowView.class)
+                .setOnIconLongClickListener(onIconLongClickListener);
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/splitscreen/SplitShortcut.kt b/quickstep/src/com/android/launcher3/splitscreen/SplitShortcut.kt
new file mode 100644
index 0000000..2b6f77f
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/splitscreen/SplitShortcut.kt
@@ -0,0 +1,93 @@
+/*
+ * 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.launcher3.splitscreen
+
+import android.content.Context
+import android.content.Intent
+import android.graphics.Bitmap
+import android.graphics.drawable.BitmapDrawable
+import android.util.Log
+import android.view.View
+import com.android.launcher3.model.data.ItemInfo
+import com.android.launcher3.model.data.WorkspaceItemInfo
+import com.android.launcher3.popup.QuickstepSystemShortcut
+import com.android.launcher3.popup.SystemShortcut
+import com.android.launcher3.util.SplitConfigurationOptions
+import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption
+import com.android.launcher3.util.SplitConfigurationOptions.SplitSelectSource
+import com.android.launcher3.views.ActivityContext
+
+/**
+ * Shortcut to allow starting split. Default interaction for [onClick] is to launch split selection
+ * mode
+ */
+abstract class SplitShortcut<T>(
+    iconResId: Int,
+    labelResId: Int,
+    target: T,
+    itemInfo: ItemInfo?,
+    originalView: View?,
+    protected val position: SplitPositionOption
+) : SystemShortcut<T>(iconResId, labelResId, target, itemInfo, originalView) where
+T : Context?,
+T : ActivityContext? {
+    private val TAG = SystemShortcut::class.java.simpleName
+
+    // Initiate splitscreen from the Home screen or Home All Apps
+    protected val splitSelectSource: SplitSelectSource?
+        get() {
+            // Initiate splitscreen from the Home screen or Home All Apps
+            val bitmap: Bitmap
+            val intent: Intent
+            when (mItemInfo) {
+                is WorkspaceItemInfo -> {
+                    val workspaceItemInfo = mItemInfo
+                    bitmap = workspaceItemInfo.bitmap.icon
+                    intent = workspaceItemInfo.intent
+                }
+                is com.android.launcher3.model.data.AppInfo -> {
+                    val appInfo = mItemInfo
+                    bitmap = appInfo.bitmap.icon
+                    intent = appInfo.intent
+                }
+                else -> {
+                    Log.e(TAG, "unknown item type")
+                    return null
+                }
+            }
+            val splitEvent =
+                SplitConfigurationOptions.getLogEventForPosition(position.stagePosition)
+            return SplitSelectSource(
+                mOriginalView,
+                BitmapDrawable(bitmap),
+                intent,
+                position,
+                mItemInfo,
+                splitEvent
+            )
+        }
+
+    /** Starts split selection on the provided [mTarget] */
+    override fun onClick(view: View?) {
+        val splitSelectSource = splitSelectSource
+        if (splitSelectSource == null) {
+            Log.w(QuickstepSystemShortcut.TAG, "no split selection source")
+            return
+        }
+        mTarget!!.startSplitSelection(splitSelectSource)
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/statehandlers/BackButtonAlphaHandler.java b/quickstep/src/com/android/launcher3/statehandlers/BackButtonAlphaHandler.java
deleted file mode 100644
index 07d3a51..0000000
--- a/quickstep/src/com/android/launcher3/statehandlers/BackButtonAlphaHandler.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2018 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.launcher3.statehandlers;
-
-import static com.android.launcher3.anim.Interpolators.LINEAR;
-import static com.android.launcher3.util.DisplayController.NavigationMode.TWO_BUTTONS;
-import static com.android.quickstep.AnimatedFloat.VALUE;
-
-import com.android.launcher3.BaseQuickstepLauncher;
-import com.android.launcher3.LauncherState;
-import com.android.launcher3.anim.PendingAnimation;
-import com.android.launcher3.statemanager.StateManager.StateHandler;
-import com.android.launcher3.states.StateAnimationConfig;
-import com.android.launcher3.util.DisplayController;
-import com.android.launcher3.util.UiThreadHelper;
-import com.android.quickstep.AnimatedFloat;
-import com.android.quickstep.SystemUiProxy;
-
-/**
- * State handler for animating back button alpha in two-button nav mode.
- */
-public class BackButtonAlphaHandler implements StateHandler<LauncherState> {
-
-    private final BaseQuickstepLauncher mLauncher;
-    private final AnimatedFloat mBackAlpha = new AnimatedFloat(this::updateBackAlpha);
-
-    public BackButtonAlphaHandler(BaseQuickstepLauncher launcher) {
-        mLauncher = launcher;
-    }
-
-    @Override
-    public void setState(LauncherState state) { }
-
-    @Override
-    public void setStateWithAnimation(LauncherState toState, StateAnimationConfig config,
-            PendingAnimation animation) {
-        if (DisplayController.getNavigationMode(mLauncher) != TWO_BUTTONS) {
-            return;
-        }
-
-        mBackAlpha.value = SystemUiProxy.INSTANCE.get(mLauncher).getLastNavButtonAlpha();
-        animation.setFloat(mBackAlpha, VALUE,
-                mLauncher.shouldBackButtonBeHidden(toState) ? 0 : 1, LINEAR);
-    }
-
-    private void updateBackAlpha() {
-        UiThreadHelper.setBackButtonAlphaAsync(mLauncher,
-                BaseQuickstepLauncher.SET_BACK_BUTTON_ALPHA, mBackAlpha.value, false /* animate */);
-    }
-}
diff --git a/quickstep/src/com/android/launcher3/statehandlers/DepthController.java b/quickstep/src/com/android/launcher3/statehandlers/DepthController.java
index eda0823..7c62763 100644
--- a/quickstep/src/com/android/launcher3/statehandlers/DepthController.java
+++ b/quickstep/src/com/android/launcher3/statehandlers/DepthController.java
@@ -19,17 +19,12 @@
 import static com.android.launcher3.anim.Interpolators.LINEAR;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_DEPTH;
 import static com.android.launcher3.states.StateAnimationConfig.SKIP_DEPTH_CONTROLLER;
+import static com.android.launcher3.util.MultiPropertyFactory.MULTI_PROPERTY_VALUE;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ObjectAnimator;
-import android.app.WallpaperManager;
-import android.os.IBinder;
-import android.os.SystemProperties;
-import android.util.FloatProperty;
-import android.view.AttachedSurfaceControl;
 import android.view.CrossWindowBlurListeners;
-import android.view.SurfaceControl;
 import android.view.View;
 import android.view.ViewRootImpl;
 import android.view.ViewTreeObserver;
@@ -37,12 +32,10 @@
 import com.android.launcher3.BaseActivity;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherState;
-import com.android.launcher3.R;
-import com.android.launcher3.Utilities;
 import com.android.launcher3.anim.PendingAnimation;
 import com.android.launcher3.statemanager.StateManager.StateHandler;
 import com.android.launcher3.states.StateAnimationConfig;
-import com.android.systemui.shared.system.BlurUtils;
+import com.android.quickstep.util.BaseDepthController;
 
 import java.io.PrintWriter;
 import java.util.function.Consumer;
@@ -50,161 +43,76 @@
 /**
  * Controls blur and wallpaper zoom, for the Launcher surface only.
  */
-public class DepthController implements StateHandler<LauncherState>,
+public class DepthController extends BaseDepthController implements StateHandler<LauncherState>,
         BaseActivity.MultiWindowModeChangedListener {
 
-    private static final boolean OVERLAY_SCROLL_ENABLED = false;
-    public static final FloatProperty<DepthController> DEPTH =
-            new FloatProperty<DepthController>("depth") {
-                @Override
-                public void setValue(DepthController depthController, float depth) {
-                    depthController.setDepth(depth);
-                }
+    private final ViewTreeObserver.OnDrawListener mOnDrawListener = this::onLauncherDraw;
 
-                @Override
-                public Float get(DepthController depthController) {
-                    return depthController.mDepth;
-                }
-            };
+    private final Consumer<Boolean> mCrossWindowBlurListener = this::setCrossWindowBlursEnabled;
 
-    /**
-     * A property that updates the background blur within a given range of values (ie. even if the
-     * animator goes beyond 0..1, the interpolated value will still be bounded).
-     */
-    public static class ClampedDepthProperty extends FloatProperty<DepthController> {
-        private final float mMinValue;
-        private final float mMaxValue;
-
-        public ClampedDepthProperty(float minValue, float maxValue) {
-            super("depthClamped");
-            mMinValue = minValue;
-            mMaxValue = maxValue;
-        }
-
-        @Override
-        public void setValue(DepthController depthController, float depth) {
-            depthController.setDepth(Utilities.boundToRange(depth, mMinValue, mMaxValue));
-        }
-
-        @Override
-        public Float get(DepthController depthController) {
-            return depthController.mDepth;
-        }
-    }
-
-    private final ViewTreeObserver.OnDrawListener mOnDrawListener =
-            new ViewTreeObserver.OnDrawListener() {
-                @Override
-                public void onDraw() {
-                    View view = mLauncher.getDragLayer();
-                    ViewRootImpl viewRootImpl = view.getViewRootImpl();
-                    boolean applied = setSurface(
-                            viewRootImpl != null ? viewRootImpl.getSurfaceControl() : null);
-                    if (!applied) {
-                        dispatchTransactionSurface(mDepth);
-                    }
-                    view.post(() -> view.getViewTreeObserver().removeOnDrawListener(this));
-                }
-            };
-
-    private final Consumer<Boolean> mCrossWindowBlurListener = new Consumer<Boolean>() {
-        @Override
-        public void accept(Boolean enabled) {
-            mCrossWindowBlursEnabled = enabled;
-            dispatchTransactionSurface(mDepth);
-        }
-    };
-
-    private final Runnable mOpaquenessListener = new Runnable() {
-        @Override
-        public void run() {
-            dispatchTransactionSurface(mDepth);
-        }
-    };
-
-    private final Launcher mLauncher;
-    /**
-     * Blur radius when completely zoomed out, in pixels.
-     */
-    private int mMaxBlurRadius;
-    private boolean mCrossWindowBlursEnabled;
-    private WallpaperManager mWallpaperManager;
-    private SurfaceControl mSurface;
-    /**
-     * How visible the -1 overlay is, from 0 to 1.
-     */
-    private float mOverlayScrollProgress;
-    /**
-     * Ratio from 0 to 1, where 0 is fully zoomed out, and 1 is zoomed in.
-     * @see android.service.wallpaper.WallpaperService.Engine#onZoomChanged(float)
-     */
-    private float mDepth;
-    /**
-     * Last blur value, in pixels, that was applied.
-     * For debugging purposes.
-     */
-    private int mCurrentBlur;
-    /**
-     * If we're launching and app and should not be blurring the screen for performance reasons.
-     */
-    private boolean mBlurDisabledForAppLaunch;
-    /**
-     * If we requested early wake-up offsets to SurfaceFlinger.
-     */
-    private boolean mInEarlyWakeUp;
+    private final Runnable mOpaquenessListener = this::applyDepthAndBlur;
 
     // Workaround for animating the depth when multiwindow mode changes.
     private boolean mIgnoreStateChangesDuringMultiWindowAnimation = false;
 
-    // Hints that there is potentially content behind Launcher and that we shouldn't optimize by
-    // marking the launcher surface as opaque.  Only used in certain Launcher states.
-    private boolean mHasContentBehindLauncher;
-
     private View.OnAttachStateChangeListener mOnAttachListener;
 
     public DepthController(Launcher l) {
-        mLauncher = l;
+        super(l);
+    }
+
+    private void onLauncherDraw() {
+        View view = mLauncher.getDragLayer();
+        ViewRootImpl viewRootImpl = view.getViewRootImpl();
+        setSurface(viewRootImpl != null ? viewRootImpl.getSurfaceControl() : null);
+        view.post(() -> view.getViewTreeObserver().removeOnDrawListener(mOnDrawListener));
     }
 
     private void ensureDependencies() {
-        if (mWallpaperManager == null) {
-            mMaxBlurRadius = mLauncher.getResources().getInteger(R.integer.max_depth_blur_radius);
-            mWallpaperManager = mLauncher.getSystemService(WallpaperManager.class);
-        }
-
         if (mLauncher.getRootView() != null && mOnAttachListener == null) {
+            View rootView = mLauncher.getRootView();
             mOnAttachListener = new View.OnAttachStateChangeListener() {
                 @Override
                 public void onViewAttachedToWindow(View view) {
+                    CrossWindowBlurListeners.getInstance().addListener(mLauncher.getMainExecutor(),
+                            mCrossWindowBlurListener);
+                    mLauncher.getScrimView().addOpaquenessListener(mOpaquenessListener);
+
                     // To handle the case where window token is invalid during last setDepth call.
-                    IBinder windowToken = mLauncher.getRootView().getWindowToken();
-                    if (windowToken != null) {
-                        mWallpaperManager.setWallpaperZoomOut(windowToken, mDepth);
-                    }
-                    onAttached();
+                    applyDepthAndBlur();
                 }
 
                 @Override
                 public void onViewDetachedFromWindow(View view) {
-                    CrossWindowBlurListeners.getInstance().removeListener(mCrossWindowBlurListener);
-                    mLauncher.getScrimView().removeOpaquenessListener(mOpaquenessListener);
+                    removeSecondaryListeners();
                 }
             };
-            mLauncher.getRootView().addOnAttachStateChangeListener(mOnAttachListener);
-            if (mLauncher.getRootView().isAttachedToWindow()) {
-                onAttached();
+            rootView.addOnAttachStateChangeListener(mOnAttachListener);
+            if (rootView.isAttachedToWindow()) {
+                mOnAttachListener.onViewAttachedToWindow(rootView);
             }
         }
     }
 
-    private void onAttached() {
-        CrossWindowBlurListeners.getInstance().addListener(mLauncher.getMainExecutor(),
-                mCrossWindowBlurListener);
-        mLauncher.getScrimView().addOpaquenessListener(mOpaquenessListener);
+    /**
+     * Cleans up after this controller so it can be garbage collected without leaving traces.
+     */
+    public void dispose() {
+        removeSecondaryListeners();
+
+        if (mLauncher.getRootView() != null && mOnAttachListener != null) {
+            mLauncher.getRootView().removeOnAttachStateChangeListener(mOnAttachListener);
+            mOnAttachListener = null;
+        }
     }
 
-    public void setHasContentBehindLauncher(boolean hasContentBehindLauncher) {
-        mHasContentBehindLauncher = hasContentBehindLauncher;
+    private void removeSecondaryListeners() {
+        if (mCrossWindowBlurListener != null) {
+            CrossWindowBlurListeners.getInstance().removeListener(mCrossWindowBlurListener);
+        }
+        if (mOpaquenessListener != null) {
+            mLauncher.getScrimView().removeOpaquenessListener(mOpaquenessListener);
+        }
     }
 
     /**
@@ -219,38 +127,14 @@
         }
     }
 
-    /**
-     * Sets the specified app target surface to apply the blur to.
-     * @return true when surface was valid and transaction was dispatched.
-     */
-    public boolean setSurface(SurfaceControl surface) {
-        // Set launcher as the SurfaceControl when we don't need an external target anymore.
-        if (surface == null) {
-            ViewRootImpl viewRootImpl = mLauncher.getDragLayer().getViewRootImpl();
-            surface = viewRootImpl != null ? viewRootImpl.getSurfaceControl() : null;
-        }
-        if (mSurface != surface) {
-            mSurface = surface;
-            if (surface != null) {
-                dispatchTransactionSurface(mDepth);
-                return true;
-            }
-        }
-        return false;
-    }
-
     @Override
     public void setState(LauncherState toState) {
-        if (mSurface == null || mIgnoreStateChangesDuringMultiWindowAnimation) {
+        if (mIgnoreStateChangesDuringMultiWindowAnimation) {
             return;
         }
 
-        float toDepth = toState.getDepth(mLauncher);
-        if (Float.compare(mDepth, toDepth) != 0) {
-            setDepth(toDepth);
-        } else if (toState == LauncherState.OVERVIEW) {
-            dispatchTransactionSurface(mDepth);
-        } else if (toState == LauncherState.BACKGROUND_APP) {
+        stateDepth.setValue(toState.getDepth(mLauncher));
+        if (toState == LauncherState.BACKGROUND_APP) {
             mLauncher.getDragLayer().getViewTreeObserver().addOnDrawListener(mOnDrawListener);
         }
     }
@@ -264,102 +148,21 @@
         }
 
         float toDepth = toState.getDepth(mLauncher);
-        if (Float.compare(mDepth, toDepth) != 0) {
-            animation.setFloat(this, DEPTH, toDepth, config.getInterpolator(ANIM_DEPTH, LINEAR));
-        }
+        animation.setFloat(stateDepth, MULTI_PROPERTY_VALUE, toDepth,
+                config.getInterpolator(ANIM_DEPTH, LINEAR));
     }
 
-    /**
-     * If we're launching an app from the home screen.
-     */
-    public void setIsInLaunchTransition(boolean inLaunchTransition) {
-        boolean blurEnabled = SystemProperties.getBoolean("ro.launcher.blur.appLaunch", true);
-        mBlurDisabledForAppLaunch = inLaunchTransition && !blurEnabled;
-        if (!inLaunchTransition) {
-            // Reset depth at the end of the launch animation, so the wallpaper won't be
-            // zoomed out if an app crashes.
-            setDepth(0f);
-        }
-    }
-
-    private void setDepth(float depth) {
-        depth = Utilities.boundToRange(depth, 0, 1);
-        // Round out the depth to dedupe frequent, non-perceptable updates
-        int depthI = (int) (depth * 256);
-        float depthF = depthI / 256f;
-        if (Float.compare(mDepth, depthF) == 0) {
-            return;
-        }
-        dispatchTransactionSurface(depthF);
-        mDepth = depthF;
-    }
-
-    public void onOverlayScrollChanged(float progress) {
-        if (!OVERLAY_SCROLL_ENABLED) {
-            return;
-        }
-        // Add some padding to the progress, such we don't change the depth on the last frames of
-        // the animation. It's possible that a user flinging the feed quickly would scroll
-        // horizontally by accident, causing the device to enter client composition unnecessarily.
-        progress = Math.min(progress * 1.1f, 1f);
-
-        // Round out the progress to dedupe frequent, non-perceptable updates
-        int progressI = (int) (progress * 256);
-        float progressF = Utilities.boundToRange(progressI / 256f, 0f, 1f);
-        if (Float.compare(mOverlayScrollProgress, progressF) == 0) {
-            return;
-        }
-        mOverlayScrollProgress = progressF;
-        dispatchTransactionSurface(mDepth);
-    }
-
-    private boolean dispatchTransactionSurface(float depth) {
-        boolean supportsBlur = BlurUtils.supportsBlursOnWindows();
-        if (supportsBlur && (mSurface == null || !mSurface.isValid())) {
-            return false;
-        }
+    @Override
+    protected void applyDepthAndBlur() {
         ensureDependencies();
-        depth = Math.max(depth, mOverlayScrollProgress);
-        IBinder windowToken = mLauncher.getRootView().getWindowToken();
-        if (windowToken != null) {
-            mWallpaperManager.setWallpaperZoomOut(windowToken, depth);
-        }
-
-        if (supportsBlur) {
-            boolean hasOpaqueBg = mLauncher.getScrimView().isFullyOpaque();
-            boolean isSurfaceOpaque = !mHasContentBehindLauncher && hasOpaqueBg;
-
-            mCurrentBlur = !mCrossWindowBlursEnabled || mBlurDisabledForAppLaunch || hasOpaqueBg
-                    ? 0 : (int) (depth * mMaxBlurRadius);
-            SurfaceControl.Transaction transaction = new SurfaceControl.Transaction()
-                    .setBackgroundBlurRadius(mSurface, mCurrentBlur)
-                    .setOpaque(mSurface, isSurfaceOpaque);
-
-            // Set early wake-up flags when we know we're executing an expensive operation, this way
-            // SurfaceFlinger will adjust its internal offsets to avoid jank.
-            boolean wantsEarlyWakeUp = depth > 0 && depth < 1;
-            if (wantsEarlyWakeUp && !mInEarlyWakeUp) {
-                transaction.setEarlyWakeupStart();
-                mInEarlyWakeUp = true;
-            } else if (!wantsEarlyWakeUp && mInEarlyWakeUp) {
-                transaction.setEarlyWakeupEnd();
-                mInEarlyWakeUp = false;
-            }
-
-            AttachedSurfaceControl rootSurfaceControl =
-                    mLauncher.getRootView().getRootSurfaceControl();
-            if (rootSurfaceControl != null) {
-                rootSurfaceControl.applyTransactionOnDraw(transaction);
-            }
-        }
-        return true;
+        super.applyDepthAndBlur();
     }
 
     @Override
     public void onMultiWindowModeChanged(boolean isInMultiWindowMode) {
         mIgnoreStateChangesDuringMultiWindowAnimation = true;
 
-        ObjectAnimator mwAnimation = ObjectAnimator.ofFloat(this, DEPTH,
+        ObjectAnimator mwAnimation = ObjectAnimator.ofFloat(stateDepth, MULTI_PROPERTY_VALUE,
                 mLauncher.getStateManager().getState().getDepth(mLauncher, isInMultiWindowMode))
                 .setDuration(300);
         mwAnimation.addListener(new AnimatorListenerAdapter() {
@@ -377,12 +180,12 @@
         writer.println(prefix + "\tmMaxBlurRadius=" + mMaxBlurRadius);
         writer.println(prefix + "\tmCrossWindowBlursEnabled=" + mCrossWindowBlursEnabled);
         writer.println(prefix + "\tmSurface=" + mSurface);
-        writer.println(prefix + "\tmOverlayScrollProgress=" + mOverlayScrollProgress);
-        writer.println(prefix + "\tmDepth=" + mDepth);
+        writer.println(prefix + "\tmStateDepth=" + stateDepth.getValue());
+        writer.println(prefix + "\tmWidgetDepth=" + widgetDepth.getValue());
         writer.println(prefix + "\tmCurrentBlur=" + mCurrentBlur);
-        writer.println(prefix + "\tmBlurDisabledForAppLaunch=" + mBlurDisabledForAppLaunch);
         writer.println(prefix + "\tmInEarlyWakeUp=" + mInEarlyWakeUp);
         writer.println(prefix + "\tmIgnoreStateChangesDuringMultiWindowAnimation="
                 + mIgnoreStateChangesDuringMultiWindowAnimation);
+        writer.println(prefix + "\tmPauseBlurs=" + mPauseBlurs);
     }
 }
diff --git a/quickstep/src/com/android/launcher3/statehandlers/DesktopVisibilityController.java b/quickstep/src/com/android/launcher3/statehandlers/DesktopVisibilityController.java
new file mode 100644
index 0000000..d087d39
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/statehandlers/DesktopVisibilityController.java
@@ -0,0 +1,171 @@
+/*
+ * 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.launcher3.statehandlers;
+
+import android.os.SystemProperties;
+import android.util.Log;
+import android.view.View;
+
+import com.android.launcher3.Launcher;
+import com.android.launcher3.LauncherState;
+import com.android.launcher3.statemanager.StatefulActivity;
+import com.android.launcher3.uioverrides.QuickstepLauncher;
+
+/**
+ * Controls the visibility of the workspace and the resumed / paused state when desktop mode
+ * is enabled.
+ */
+public class DesktopVisibilityController {
+
+    private static final String TAG = "DesktopVisController";
+    private static final boolean DEBUG = false;
+
+    private final Launcher mLauncher;
+
+    private boolean mFreeformTasksVisible;
+    private boolean mInOverviewState;
+    private boolean mGestureInProgress;
+
+    public DesktopVisibilityController(Launcher launcher) {
+        mLauncher = launcher;
+    }
+
+    /**
+     * Whether desktop mode is supported.
+     */
+    private boolean isDesktopModeSupported() {
+        return SystemProperties.getBoolean("persist.wm.debug.desktop_mode", false)
+                || SystemProperties.getBoolean("persist.wm.debug.desktop_mode_2", false);
+    }
+
+    /**
+     * Whether freeform windows are visible in desktop mode.
+     */
+    public boolean areFreeformTasksVisible() {
+        return mFreeformTasksVisible;
+    }
+
+    /**
+     * Sets whether freeform windows are visible and updates launcher visibility based on that.
+     */
+    public void setFreeformTasksVisible(boolean freeformTasksVisible) {
+        if (DEBUG) {
+            Log.d(TAG, "setFreeformTasksVisible: visible=" + freeformTasksVisible);
+        }
+        if (!isDesktopModeSupported()) {
+            return;
+        }
+        if (freeformTasksVisible != mFreeformTasksVisible) {
+            mFreeformTasksVisible = freeformTasksVisible;
+            if (mFreeformTasksVisible) {
+                setLauncherViewsVisibility(View.INVISIBLE);
+                if (!mInOverviewState) {
+                    // When freeform is visible & we're not in overview, we want launcher to appear
+                    // paused, this ensures that taskbar displays.
+                    markLauncherPaused();
+                }
+            } else {
+                setLauncherViewsVisibility(View.VISIBLE);
+                // If freeform isn't visible ensure that launcher appears resumed to behave
+                // normally.
+                markLauncherResumed();
+            }
+        }
+    }
+
+    /**
+     * Sets whether the overview is visible and updates launcher visibility based on that.
+     */
+    public void setOverviewStateEnabled(boolean overviewStateEnabled) {
+        if (DEBUG) {
+            Log.d(TAG, "setOverviewStateEnabled: enabled=" + overviewStateEnabled);
+        }
+        if (!isDesktopModeSupported()) {
+            return;
+        }
+        if (overviewStateEnabled != mInOverviewState) {
+            mInOverviewState = overviewStateEnabled;
+            if (mInOverviewState) {
+                setLauncherViewsVisibility(View.VISIBLE);
+                markLauncherResumed();
+            } else if (mFreeformTasksVisible) {
+                setLauncherViewsVisibility(View.INVISIBLE);
+                markLauncherPaused();
+            }
+        }
+    }
+
+    /**
+     * Whether recents gesture is currently in progress.
+     */
+    public boolean isGestureInProgress() {
+        return mGestureInProgress;
+    }
+
+    /**
+     * Sets whether recents gesture is in progress.
+     */
+    public void setGestureInProgress(boolean gestureInProgress) {
+        if (DEBUG) {
+            Log.d(TAG, "setGestureInProgress: inProgress=" + gestureInProgress);
+        }
+        if (!isDesktopModeSupported()) {
+            return;
+        }
+        if (gestureInProgress != mGestureInProgress) {
+            mGestureInProgress = gestureInProgress;
+        }
+    }
+
+    private void setLauncherViewsVisibility(int visibility) {
+        if (DEBUG) {
+            Log.d(TAG, "setLauncherViewsVisibility: visibility=" + visibility);
+        }
+        View workspaceView = mLauncher.getWorkspace();
+        if (workspaceView != null) {
+            workspaceView.setVisibility(visibility);
+        }
+        View dragLayer = mLauncher.getDragLayer();
+        if (dragLayer != null) {
+            dragLayer.setVisibility(visibility);
+        }
+    }
+
+    private void markLauncherPaused() {
+        if (DEBUG) {
+            Log.d(TAG, "markLauncherPaused");
+        }
+        StatefulActivity<LauncherState> activity =
+                QuickstepLauncher.ACTIVITY_TRACKER.getCreatedActivity();
+        if (activity != null) {
+            activity.setPaused();
+        }
+    }
+
+    private void markLauncherResumed() {
+        if (DEBUG) {
+            Log.d(TAG, "markLauncherResumed");
+        }
+        StatefulActivity<LauncherState> activity =
+                QuickstepLauncher.ACTIVITY_TRACKER.getCreatedActivity();
+        // Check activity state before calling setResumed(). Launcher may have been actually
+        // paused (eg fullscreen task moved to front).
+        // In this case we should not mark the activity as resumed.
+        if (activity != null && activity.isResumed()) {
+            activity.setResumed();
+        }
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/BaseTaskbarContext.java b/quickstep/src/com/android/launcher3/taskbar/BaseTaskbarContext.java
index b4052e3..331184a 100644
--- a/quickstep/src/com/android/launcher3/taskbar/BaseTaskbarContext.java
+++ b/quickstep/src/com/android/launcher3/taskbar/BaseTaskbarContext.java
@@ -19,25 +19,27 @@
 import android.view.ContextThemeWrapper;
 import android.view.LayoutInflater;
 
-import com.android.launcher3.DeviceProfile.DeviceProfileListenable;
 import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
+import com.android.launcher3.LauncherPrefs;
+import com.android.launcher3.util.OnboardingPrefs;
 import com.android.launcher3.util.Themes;
-import com.android.launcher3.views.AppLauncher;
+import com.android.launcher3.views.ActivityContext;
 
 import java.util.ArrayList;
 import java.util.List;
 
 // TODO(b/218912746): Share more behavior to avoid all apps context depending directly on taskbar.
 /** Base for common behavior between taskbar window contexts. */
-public abstract class BaseTaskbarContext extends ContextThemeWrapper implements AppLauncher,
-        DeviceProfileListenable {
+public abstract class BaseTaskbarContext extends ContextThemeWrapper implements ActivityContext {
 
     protected final LayoutInflater mLayoutInflater;
     private final List<OnDeviceProfileChangeListener> mDPChangeListeners = new ArrayList<>();
+    private final OnboardingPrefs<BaseTaskbarContext> mOnboardingPrefs;
 
     public BaseTaskbarContext(Context windowContext) {
         super(windowContext, Themes.getActivityThemeRes(windowContext));
         mLayoutInflater = LayoutInflater.from(this).cloneInContext(this);
+        mOnboardingPrefs = new OnboardingPrefs<>(this, LauncherPrefs.getPrefs(this));
     }
 
     @Override
@@ -50,6 +52,11 @@
         return mDPChangeListeners;
     }
 
+    @Override
+    public OnboardingPrefs<BaseTaskbarContext> getOnboardingPrefs() {
+        return mOnboardingPrefs;
+    }
+
     /** Callback invoked when a drag is initiated within this context. */
     public abstract void onDragStart();
 
@@ -58,4 +65,10 @@
 
     /** Callback invoked when a popup is shown or closed within this context. */
     public abstract void onPopupVisibilityChanged(boolean isVisible);
+
+    /**
+     * Callback invoked when user attempts to split the screen through a long-press menu in Taskbar
+     * or AllApps.
+     */
+    public abstract void onSplitScreenMenuButtonClicked();
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/DesktopNavbarButtonsViewController.java b/quickstep/src/com/android/launcher3/taskbar/DesktopNavbarButtonsViewController.java
index 0ab3cfd5..885afff 100644
--- a/quickstep/src/com/android/launcher3/taskbar/DesktopNavbarButtonsViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/DesktopNavbarButtonsViewController.java
@@ -18,6 +18,8 @@
 import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_NOTIFICATIONS;
 import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_QUICK_SETTINGS;
 
+import android.view.LayoutInflater;
+import android.view.View;
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
 
@@ -31,6 +33,8 @@
     private final TaskbarActivityContext mContext;
     private final FrameLayout mNavButtonsView;
     private final ViewGroup mNavButtonContainer;
+    private final ViewGroup mStartContextualContainer;
+    private final View mAllAppsButton;
 
     private TaskbarControllers mControllers;
 
@@ -40,6 +44,10 @@
         mContext = context;
         mNavButtonsView = navButtonsView;
         mNavButtonContainer = mNavButtonsView.findViewById(R.id.end_nav_buttons);
+        mStartContextualContainer = mNavButtonsView.findViewById(R.id.start_contextual_buttons);
+        mAllAppsButton = LayoutInflater.from(context)
+                .inflate(R.layout.taskbar_all_apps_button, mStartContextualContainer, false);
+        mAllAppsButton.setOnClickListener(v -> mControllers.taskbarAllAppsController.toggle());
     }
 
     /**
@@ -48,7 +56,7 @@
     @Override
     public void init(TaskbarControllers controllers) {
         mControllers = controllers;
-        mNavButtonsView.getLayoutParams().height = mContext.getDeviceProfile().taskbarSize;
+        mNavButtonsView.getLayoutParams().height = mContext.getDeviceProfile().taskbarHeight;
 
         // Quick settings and notifications buttons
         addButton(R.drawable.ic_sysbar_quick_settings, BUTTON_QUICK_SETTINGS,
@@ -57,6 +65,8 @@
         addButton(R.drawable.ic_sysbar_notifications, BUTTON_NOTIFICATIONS,
                 mNavButtonContainer, mControllers.navButtonController,
                 R.id.notifications_button);
+        // All apps button
+        mStartContextualContainer.addView(mAllAppsButton);
     }
 
     /** Cleans up on destroy */
diff --git a/quickstep/src/com/android/launcher3/taskbar/DesktopTaskbarRecentAppsController.java b/quickstep/src/com/android/launcher3/taskbar/DesktopTaskbarRecentAppsController.java
new file mode 100644
index 0000000..acfbea3
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/DesktopTaskbarRecentAppsController.java
@@ -0,0 +1,153 @@
+/*
+ * 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.launcher3.taskbar;
+
+import android.app.ActivityManager;
+import android.content.ComponentName;
+import android.util.SparseArray;
+
+import com.android.launcher3.model.data.AppInfo;
+import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.model.data.WorkspaceItemInfo;
+import com.android.quickstep.RecentsModel;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Provides recent apps functionality specifically in a desktop environment.
+ */
+public class DesktopTaskbarRecentAppsController extends TaskbarRecentAppsController {
+
+    private final TaskbarActivityContext mContext;
+    private ArrayList<ItemInfo> mRunningApps = new ArrayList<>();
+    private AppInfo[] mApps;
+
+    public DesktopTaskbarRecentAppsController(TaskbarActivityContext context) {
+        mContext = context;
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        mApps = null;
+    }
+
+    @Override
+    protected void setApps(AppInfo[] apps) {
+        mApps = apps;
+    }
+
+    @Override
+    protected boolean isEnabled() {
+        return true;
+    }
+
+    /**
+     * Set mRunningApps to hold currently running applications using the list of currently running
+     * tasks. Filtering is also done to ignore applications that are already on the taskbar in the
+     * original hotseat.
+     */
+    @Override
+    protected void updateRunningApps(SparseArray<ItemInfo> hotseatItems) {
+        ArrayList<AppInfo> runningApps = getRunningAppsFromTasks();
+        ArrayList<ItemInfo> filteredRunningApps = new ArrayList<>();
+        for (AppInfo runningApp : runningApps) {
+            boolean shouldAddOnTaskbar = true;
+            for (int i = 0; i < hotseatItems.size(); i++) {
+                if (hotseatItems.keyAt(i) >= mControllers.taskbarActivityContext.getDeviceProfile()
+                        .numShownHotseatIcons) {
+                    break;
+                }
+                if (hotseatItems.valueAt(i).getTargetPackage()
+                        .equals(runningApp.getTargetPackage())) {
+                    shouldAddOnTaskbar = false;
+                    break;
+                }
+            }
+            if (shouldAddOnTaskbar) {
+                filteredRunningApps.add(new WorkspaceItemInfo(runningApp));
+            }
+        }
+        mRunningApps = filteredRunningApps;
+        mControllers.taskbarViewController.commitRunningAppsToUI();
+    }
+
+    /**
+     * Returns a copy of hotseatItems with the addition of currently running applications.
+     */
+    @Override
+    protected ItemInfo[] updateHotseatItemInfos(ItemInfo[] hotseatItemInfos) {
+        // hotseatItemInfos.length would be 0 if deviceProfile.numShownHotseatIcons is 0, so we
+        // don't want to show anything in the hotseat
+        if (hotseatItemInfos.length == 0) return hotseatItemInfos;
+
+        int runningAppsIndex = 0;
+        ItemInfo[] newHotseatItemsInfo = Arrays.copyOf(
+                hotseatItemInfos, hotseatItemInfos.length + mRunningApps.size());
+        for (int i = hotseatItemInfos.length; i < newHotseatItemsInfo.length; i++) {
+            newHotseatItemsInfo[i] = mRunningApps.get(runningAppsIndex);
+            runningAppsIndex++;
+        }
+        return newHotseatItemsInfo;
+    }
+
+
+    /**
+     * Returns a list of running applications from the list of currently running tasks.
+     */
+    private ArrayList<AppInfo> getRunningAppsFromTasks() {
+        ArrayList<ActivityManager.RunningTaskInfo> tasks =
+                RecentsModel.INSTANCE.get(mContext).getRunningTasks();
+        ArrayList<AppInfo> runningApps = new ArrayList<>();
+        // early return if apps is empty, since we would have no AppInfo to compare
+        if (mApps == null)  {
+            return runningApps;
+        }
+
+        Set<String> seenPackages = new HashSet<>();
+        for (ActivityManager.RunningTaskInfo taskInfo : tasks) {
+            if (taskInfo.realActivity == null) continue;
+
+            // If a different task for the same package has already been handled, skip this one
+            String taskPackage = taskInfo.realActivity.getPackageName();
+            if (seenPackages.contains(taskPackage)) continue;
+
+            // Otherwise, get the corresponding AppInfo and add it to the list
+            seenPackages.add(taskPackage);
+            AppInfo app = getAppInfo(taskInfo.realActivity);
+            if (app == null) continue;
+            runningApps.add(app);
+        }
+        return runningApps;
+    }
+
+    /**
+     * Retrieves the corresponding AppInfo for the activity.
+     */
+    private AppInfo getAppInfo(ComponentName activity) {
+        String packageName = activity.getPackageName();
+        for (AppInfo app : mApps) {
+            if (!packageName.equals(app.getTargetPackage())) {
+                continue;
+            }
+            return app;
+        }
+        return null;
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/DesktopTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/DesktopTaskbarUIController.java
index e2359c0..633325b 100644
--- a/quickstep/src/com/android/launcher3/taskbar/DesktopTaskbarUIController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/DesktopTaskbarUIController.java
@@ -16,7 +16,7 @@
 
 package com.android.launcher3.taskbar;
 
-import com.android.launcher3.BaseQuickstepLauncher;
+import com.android.launcher3.uioverrides.QuickstepLauncher;
 
 /**
  * A data source which integrates with a Launcher instance, used specifically for a
@@ -24,24 +24,29 @@
  */
 public class DesktopTaskbarUIController extends TaskbarUIController {
 
-    private final BaseQuickstepLauncher mLauncher;
+    private final QuickstepLauncher mLauncher;
 
-    public DesktopTaskbarUIController(BaseQuickstepLauncher launcher) {
+    public DesktopTaskbarUIController(QuickstepLauncher launcher) {
         mLauncher = launcher;
     }
 
+    @SuppressWarnings("MissingSuperCall") // TODO: Fix me
     @Override
     protected void init(TaskbarControllers taskbarControllers) {
+        super.init(taskbarControllers);
         mLauncher.getHotseat().setIconsAlpha(0f);
+        mControllers.taskbarViewController.updateRunningApps();
     }
 
+    @SuppressWarnings("MissingSuperCall") // TODO: Fix me
     @Override
     protected void onDestroy() {
+        super.onDestroy();
         mLauncher.getHotseat().setIconsAlpha(1f);
     }
 
-    @Override
     /** Disable taskbar stashing in desktop environment. */
+    @Override
     public boolean supportsVisualStashing() {
         return false;
     }
diff --git a/quickstep/src/com/android/launcher3/taskbar/FallbackTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/FallbackTaskbarUIController.java
index f1e6747..f981610 100644
--- a/quickstep/src/com/android/launcher3/taskbar/FallbackTaskbarUIController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/FallbackTaskbarUIController.java
@@ -15,17 +15,21 @@
  */
 package com.android.launcher3.taskbar;
 
+import static com.android.launcher3.Utilities.isRunningInTestHarness;
 import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_APP;
 import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_STASHED_LAUNCHER_STATE;
-import static com.android.launcher3.taskbar.TaskbarStashController.TASKBAR_STASH_DURATION;
 
 import android.animation.Animator;
 
+import com.android.launcher3.popup.SystemShortcut;
 import com.android.launcher3.statemanager.StateManager;
 import com.android.quickstep.RecentsActivity;
+import com.android.quickstep.TopTaskTracker;
 import com.android.quickstep.fallback.RecentsState;
 import com.android.quickstep.views.RecentsView;
 
+import java.util.stream.Stream;
+
 /**
  * A data source which integrates with the fallback RecentsActivity instance (for 3P launchers).
  */
@@ -40,10 +44,20 @@
                     animateToRecentsState(toState);
 
                     // Handle tapping on live tile.
-                    RecentsView recentsView = mRecentsActivity.getOverviewPanel();
-                    recentsView.setTaskLaunchListener(toState == RecentsState.DEFAULT
+                    getRecentsView().setTaskLaunchListener(toState == RecentsState.DEFAULT
                             ? (() -> animateToRecentsState(RecentsState.BACKGROUND_APP)) : null);
                 }
+
+                @Override
+                public void onStateTransitionComplete(RecentsState finalState) {
+                    boolean finalStateDefault = finalState == RecentsState.DEFAULT;
+                    // TODO(b/268120202) Taskbar shows up on 3P home, currently we don't go to
+                    //  overview from 3P home. Either implement that or it'll change w/ contextual?
+                    boolean disallowLongClick = finalState == RecentsState.OVERVIEW_SPLIT_SELECT;
+                    Utilities.setOverviewDragState(mControllers,
+                            finalStateDefault /*disallowGlobalDrag*/, disallowLongClick,
+                            finalStateDefault /*allowInitialSplitSelection*/);
+                }
             };
 
     public FallbackTaskbarUIController(RecentsActivity recentsActivity) {
@@ -70,19 +84,44 @@
      * Currently this animation just force stashes the taskbar in Overview.
      */
     public Animator createAnimToRecentsState(RecentsState toState, long duration) {
-        boolean forceStashed = toState.hasOverviewActions();
-        TaskbarStashController controller = mControllers.taskbarStashController;
+        // Force stash taskbar (disallow unstashing) when:
+        // - in a 3P launcher or overview task.
+        // - not running in a test harness (unstash is needed for tests)
+        boolean forceStash = isIn3pHomeOrRecents() && !isRunningInTestHarness();
+        TaskbarStashController stashController = mControllers.taskbarStashController;
         // Set both FLAG_IN_STASHED_LAUNCHER_STATE and FLAG_IN_APP to ensure the state is respected.
         // For all other states, just use the current stashed-in-app setting (e.g. if long clicked).
-        controller.updateStateForFlag(FLAG_IN_STASHED_LAUNCHER_STATE, forceStashed);
-        controller.updateStateForFlag(FLAG_IN_APP, !forceStashed);
-        return controller.applyStateWithoutStart(duration);
+        stashController.updateStateForFlag(FLAG_IN_STASHED_LAUNCHER_STATE, forceStash);
+        stashController.updateStateForFlag(FLAG_IN_APP, !forceStash);
+        return stashController.createApplyStateAnimator(duration);
     }
 
     private void animateToRecentsState(RecentsState toState) {
-        Animator anim = createAnimToRecentsState(toState, TASKBAR_STASH_DURATION);
+        Animator anim = createAnimToRecentsState(toState,
+                mControllers.taskbarStashController.getStashDuration());
         if (anim != null) {
             anim.start();
         }
     }
+
+    @Override
+    public RecentsView getRecentsView() {
+        return mRecentsActivity.getOverviewPanel();
+    }
+
+    @Override
+    Stream<SystemShortcut.Factory<BaseTaskbarContext>> getSplitMenuOptions() {
+        if (isIn3pHomeOrRecents()) {
+            // Split from Taskbar is not supported in fallback launcher, so return empty stream
+            return Stream.empty();
+        } else {
+            return super.getSplitMenuOptions();
+        }
+    }
+
+    private boolean isIn3pHomeOrRecents() {
+        TopTaskTracker.CachedTaskInfo topTask = TopTaskTracker.INSTANCE
+                .get(mControllers.taskbarActivityContext).getCachedTopTask(true);
+        return topTask.isHomeTask() || topTask.isRecentsTask();
+    }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java
new file mode 100644
index 0000000..7f655cf
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchController.java
@@ -0,0 +1,192 @@
+/*
+ * 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.launcher3.taskbar;
+
+import android.content.ComponentName;
+import android.content.pm.ActivityInfo;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.launcher3.R;
+import com.android.launcher3.taskbar.overlay.TaskbarOverlayContext;
+import com.android.quickstep.RecentsModel;
+import com.android.quickstep.util.GroupTask;
+import com.android.systemui.shared.recents.model.Task;
+import com.android.systemui.shared.recents.model.ThumbnailData;
+
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.function.Consumer;
+import java.util.stream.Collectors;
+
+/**
+ * Handles initialization of the {@link KeyboardQuickSwitchViewController}.
+ */
+public final class KeyboardQuickSwitchController implements
+        TaskbarControllers.LoggableTaskbarController {
+
+    static final int MAX_TASKS = 6;
+
+    @NonNull private final ControllerCallbacks mControllerCallbacks = new ControllerCallbacks();
+
+    // Initialized on init
+    @Nullable private RecentsModel mModel;
+
+    // Used to keep track of the last requested task list id, so that we do not request to load the
+    // tasks again if we have already requested it and the task list has not changed
+    private int mTaskListChangeId = -1;
+    // Only empty before the recent tasks list has been loaded the first time
+    @NonNull private List<GroupTask> mTasks = new ArrayList<>();
+    private int mNumHiddenTasks = 0;
+
+    // Initialized in init
+    private TaskbarControllers mControllers;
+
+    @Nullable private KeyboardQuickSwitchViewController mQuickSwitchViewController;
+
+    /** Initialize the controller. */
+    public void init(@NonNull TaskbarControllers controllers) {
+        mControllers = controllers;
+        mModel = RecentsModel.INSTANCE.get(controllers.taskbarActivityContext);
+    }
+
+    void onConfigurationChanged(@ActivityInfo.Config int configChanges) {
+        if (mQuickSwitchViewController == null) {
+            return;
+        }
+        if ((configChanges & (ActivityInfo.CONFIG_KEYBOARD
+                | ActivityInfo.CONFIG_KEYBOARD_HIDDEN)) != 0) {
+            mQuickSwitchViewController.closeQuickSwitchView(true);
+            return;
+        }
+        int currentFocusedIndex = mQuickSwitchViewController.getCurrentFocusedIndex();
+        onDestroy();
+        if (currentFocusedIndex != -1) {
+            mControllers.taskbarActivityContext.getMainThreadHandler().post(
+                    () -> openQuickSwitchView(currentFocusedIndex));
+        }
+    }
+
+    void openQuickSwitchView() {
+        openQuickSwitchView(-1);
+    }
+
+    private void openQuickSwitchView(int currentFocusedIndex) {
+        if (mQuickSwitchViewController != null) {
+            return;
+        }
+        TaskbarOverlayContext overlayContext =
+                mControllers.taskbarOverlayController.requestWindow();
+        KeyboardQuickSwitchView keyboardQuickSwitchView =
+                (KeyboardQuickSwitchView) overlayContext.getLayoutInflater()
+                        .inflate(
+                                R.layout.keyboard_quick_switch_view,
+                                overlayContext.getDragLayer(),
+                                /* attachToRoot= */ false);
+        mQuickSwitchViewController = new KeyboardQuickSwitchViewController(
+                mControllers, overlayContext, keyboardQuickSwitchView, mControllerCallbacks);
+
+        if (mModel.isTaskListValid(mTaskListChangeId)) {
+            mQuickSwitchViewController.openQuickSwitchView(
+                    mTasks, mNumHiddenTasks, /* updateTasks= */ false, currentFocusedIndex);
+            return;
+        }
+        mTaskListChangeId = mModel.getTasks((tasks) -> {
+            // Only store MAX_TASK tasks, from most to least recent
+            Collections.reverse(tasks);
+            mTasks = tasks.stream().limit(MAX_TASKS).collect(Collectors.toList());
+            mNumHiddenTasks = Math.max(0, tasks.size() - MAX_TASKS);
+            mQuickSwitchViewController.openQuickSwitchView(
+                    mTasks, mNumHiddenTasks, /* updateTasks= */ true, currentFocusedIndex);
+        });
+    }
+
+    void closeQuickSwitchView() {
+        if (mQuickSwitchViewController == null) {
+            return;
+        }
+        mQuickSwitchViewController.closeQuickSwitchView(true);
+    }
+
+    /**
+     * See {@link TaskbarUIController#launchFocusedTask()}
+     */
+    int launchFocusedTask() {
+        // Return -1 so that the RecentsView is not incorrectly opened when the user closes the
+        // quick switch view by tapping the screen or when there are no recent tasks.
+        return mQuickSwitchViewController == null || mTasks.isEmpty()
+                ? -1 : mQuickSwitchViewController.launchFocusedTask();
+    }
+
+    void onDestroy() {
+        if (mQuickSwitchViewController != null) {
+            mQuickSwitchViewController.onDestroy();
+        }
+    }
+
+    @Override
+    public void dumpLogs(String prefix, PrintWriter pw) {
+        pw.println(prefix + "KeyboardQuickSwitchController:");
+
+        pw.println(prefix + "\tisOpen=" + (mQuickSwitchViewController != null));
+        pw.println(prefix + "\tmNumHiddenTasks=" + mNumHiddenTasks);
+        pw.println(prefix + "\tmTaskListChangeId=" + mTaskListChangeId);
+        pw.println(prefix + "\tmTasks=[");
+        for (GroupTask task : mTasks) {
+            Task task1 = task.task1;
+            Task task2 = task.task2;
+            ComponentName cn1 = task1.getTopComponent();
+            ComponentName cn2 = task2 != null ? task2.getTopComponent() : null;
+            pw.println(prefix + "\t\tt1: (id=" + task1.key.id
+                    + "; package=" + (cn1 != null ? cn1.getPackageName() + ")" : "no package)")
+                    + " t2: (id=" + (task2 != null ? task2.key.id : "-1")
+                    + "; package=" + (cn2 != null ? cn2.getPackageName() + ")"
+                    : "no package)"));
+        }
+        pw.println(prefix + "\t]");
+
+        if (mQuickSwitchViewController != null) {
+            mQuickSwitchViewController.dumpLogs(prefix + '\t', pw);
+        }
+    }
+
+    class ControllerCallbacks {
+
+        int getTaskCount() {
+            return mNumHiddenTasks == 0 ? mTasks.size() : MAX_TASKS + 1;
+        }
+
+        @Nullable
+        GroupTask getTaskAt(int index) {
+            return index < 0 || index >= mTasks.size() ? null : mTasks.get(index);
+        }
+
+        void updateThumbnailInBackground(Task task, Consumer<ThumbnailData> callback) {
+            mModel.getThumbnailCache().updateThumbnailInBackground(task, callback);
+        }
+
+        void updateIconInBackground(Task task, Consumer<Task> callback) {
+            mModel.getIconCache().updateIconInBackground(task, callback);
+        }
+
+        void onCloseComplete() {
+            mQuickSwitchViewController = null;
+        }
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchTaskView.java b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchTaskView.java
new file mode 100644
index 0000000..8a11b57
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchTaskView.java
@@ -0,0 +1,206 @@
+/*
+ * 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.launcher3.taskbar;
+
+import static com.android.quickstep.util.BorderAnimator.DEFAULT_BORDER_COLOR;
+
+import android.animation.Animator;
+import android.content.Context;
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.ImageView;
+
+import androidx.annotation.ColorInt;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.constraintlayout.widget.ConstraintLayout;
+
+import com.android.launcher3.R;
+import com.android.launcher3.util.Preconditions;
+import com.android.quickstep.util.BorderAnimator;
+import com.android.systemui.shared.recents.model.Task;
+import com.android.systemui.shared.recents.model.ThumbnailData;
+
+import java.util.function.Consumer;
+
+/**
+ * A view that displays a recent task during a keyboard quick switch.
+ */
+public class KeyboardQuickSwitchTaskView extends ConstraintLayout {
+
+    @ColorInt private final int mBorderColor;
+
+    @Nullable private BorderAnimator mBorderAnimator;
+
+    @Nullable private ImageView mThumbnailView1;
+    @Nullable private ImageView mThumbnailView2;
+    @Nullable private ImageView mIcon1;
+    @Nullable private ImageView mIcon2;
+    @Nullable private View mContent;
+
+    public KeyboardQuickSwitchTaskView(@NonNull Context context) {
+        this(context, null);
+    }
+
+    public KeyboardQuickSwitchTaskView(@NonNull Context context, @Nullable AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public KeyboardQuickSwitchTaskView(
+            @NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
+        this(context, attrs, defStyleAttr, 0);
+    }
+
+    public KeyboardQuickSwitchTaskView(
+            @NonNull Context context,
+            @Nullable AttributeSet attrs,
+            int defStyleAttr,
+            int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        TypedArray ta = context.obtainStyledAttributes(
+                attrs, R.styleable.TaskView, defStyleAttr, defStyleRes);
+
+        setWillNotDraw(false);
+
+        mBorderColor = ta.getColor(
+                R.styleable.TaskView_borderColor, DEFAULT_BORDER_COLOR);
+        ta.recycle();
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+        mThumbnailView1 = findViewById(R.id.thumbnail1);
+        mThumbnailView2 = findViewById(R.id.thumbnail2);
+        mIcon1 = findViewById(R.id.icon1);
+        mIcon2 = findViewById(R.id.icon2);
+        mContent = findViewById(R.id.content);
+
+        Resources resources = mContext.getResources();
+
+        Preconditions.assertNotNull(mContent);
+        mBorderAnimator = new BorderAnimator(
+                /* borderRadiusPx= */ resources.getDimensionPixelSize(
+                        R.dimen.keyboard_quick_switch_task_view_radius),
+                /* borderColor= */ mBorderColor,
+                /* borderAnimationParams= */ new BorderAnimator.ScalingParams(
+                        /* borderWidthPx= */ resources.getDimensionPixelSize(
+                                R.dimen.keyboard_quick_switch_border_width),
+                        /* boundsBuilder= */ bounds -> bounds.set(
+                                0, 0, getWidth(), getHeight()),
+                        /* targetView= */ this,
+                        /* contentView= */ mContent));
+    }
+
+    @Nullable
+    protected Animator getFocusAnimator(boolean focused) {
+        return mBorderAnimator == null ? null : mBorderAnimator.buildAnimator(focused);
+    }
+
+    @Override
+    public void draw(Canvas canvas) {
+        super.draw(canvas);
+        if (mBorderAnimator != null) {
+            mBorderAnimator.drawBorder(canvas);
+        }
+    }
+
+    protected void setThumbnails(
+            @NonNull Task task1,
+            @Nullable Task task2,
+            @Nullable ThumbnailUpdateFunction thumbnailUpdateFunction,
+            @Nullable IconUpdateFunction iconUpdateFunction) {
+        applyThumbnail(mThumbnailView1, task1, thumbnailUpdateFunction);
+        applyThumbnail(mThumbnailView2, task2, thumbnailUpdateFunction);
+
+        if (iconUpdateFunction == null) {
+            applyIcon(mIcon1, task1);
+            applyIcon(mIcon2, task2);
+            setContentDescription(task2 == null
+                    ? task1.titleDescription
+                    : getContext().getString(
+                            R.string.quick_switch_split_task,
+                            task1.titleDescription,
+                            task2.titleDescription));
+            return;
+        }
+        iconUpdateFunction.updateIconInBackground(task1, t -> {
+            applyIcon(mIcon1, task1);
+            if (task2 != null) {
+                return;
+            }
+            setContentDescription(task1.titleDescription);
+        });
+        if (task2 == null) {
+            return;
+        }
+        iconUpdateFunction.updateIconInBackground(task2, t -> {
+            applyIcon(mIcon2, task2);
+            setContentDescription(getContext().getString(
+                    R.string.quick_switch_split_task,
+                    task1.titleDescription,
+                    task2.titleDescription));
+        });
+    }
+
+    private void applyThumbnail(
+            @Nullable ImageView thumbnailView,
+            @Nullable Task task,
+            @Nullable ThumbnailUpdateFunction updateFunction) {
+        if (thumbnailView == null) {
+            return;
+        }
+        if (task == null) {
+            return;
+        }
+        if (updateFunction == null) {
+            applyThumbnail(thumbnailView, task.thumbnail);
+            return;
+        }
+        updateFunction.updateThumbnailInBackground(
+                task, thumbnailData -> applyThumbnail(thumbnailView, thumbnailData));
+    }
+
+    private void applyThumbnail(
+            @NonNull ImageView thumbnailView, ThumbnailData thumbnailData) {
+        Bitmap bm = thumbnailData == null ? null : thumbnailData.thumbnail;
+
+        thumbnailView.setVisibility(VISIBLE);
+        thumbnailView.setImageBitmap(bm);
+    }
+
+    private void applyIcon(@Nullable ImageView iconView, @Nullable Task task) {
+        if (iconView == null || task == null) {
+            return;
+        }
+        iconView.setVisibility(VISIBLE);
+        iconView.setImageDrawable(task.icon);
+    }
+
+    protected interface ThumbnailUpdateFunction {
+
+        void updateThumbnailInBackground(Task task, Consumer<ThumbnailData> callback);
+    }
+
+    protected interface IconUpdateFunction {
+
+        void updateIconInBackground(Task task, Consumer<Task> callback);
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchView.java b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchView.java
new file mode 100644
index 0000000..2cdfb18
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchView.java
@@ -0,0 +1,518 @@
+/*
+ * 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.launcher3.taskbar;
+
+import static androidx.constraintlayout.widget.ConstraintLayout.LayoutParams.PARENT_ID;
+
+import static com.android.launcher3.taskbar.KeyboardQuickSwitchController.MAX_TASKS;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.AnimatorSet;
+import android.animation.ObjectAnimator;
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Outline;
+import android.graphics.Rect;
+import android.icu.text.MessageFormat;
+import android.util.AttributeSet;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewOutlineProvider;
+import android.view.ViewTreeObserver;
+import android.view.animation.Interpolator;
+import android.widget.HorizontalScrollView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.constraintlayout.widget.ConstraintLayout;
+
+import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.AnimatedFloat;
+import com.android.launcher3.anim.Interpolators;
+import com.android.quickstep.util.GroupTask;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * View that allows quick switching between recent tasks through keyboard alt-tab and alt-shift-tab
+ * commands.
+ */
+public class KeyboardQuickSwitchView extends ConstraintLayout {
+
+    private static final long OUTLINE_ANIMATION_DURATION_MS = 333;
+    private static final float OUTLINE_START_HEIGHT_FACTOR = 0.45f;
+    private static final float OUTLINE_START_RADIUS_FACTOR = 0.25f;
+    private static final Interpolator OPEN_OUTLINE_INTERPOLATOR =
+            Interpolators.EMPHASIZED_DECELERATE;
+    private static final Interpolator CLOSE_OUTLINE_INTERPOLATOR =
+            Interpolators.EMPHASIZED_ACCELERATE;
+
+    private static final long ALPHA_ANIMATION_DURATION_MS = 83;
+    private static final long ALPHA_ANIMATION_START_DELAY_MS = 67;
+
+    private static final long CONTENT_TRANSLATION_X_ANIMATION_DURATION_MS = 500;
+    private static final long CONTENT_TRANSLATION_Y_ANIMATION_DURATION_MS = 333;
+    private static final float CONTENT_START_TRANSLATION_X_DP = 32;
+    private static final float CONTENT_START_TRANSLATION_Y_DP = 40;
+    private static final Interpolator OPEN_TRANSLATION_X_INTERPOLATOR = Interpolators.EMPHASIZED;
+    private static final Interpolator OPEN_TRANSLATION_Y_INTERPOLATOR =
+            Interpolators.EMPHASIZED_DECELERATE;
+    private static final Interpolator CLOSE_TRANSLATION_Y_INTERPOLATOR =
+            Interpolators.EMPHASIZED_ACCELERATE;
+
+    private static final long CONTENT_ALPHA_ANIMATION_DURATION_MS = 83;
+    private static final long CONTENT_ALPHA_ANIMATION_START_DELAY_MS = 83;
+
+    private final AnimatedFloat mOutlineAnimationProgress = new AnimatedFloat(
+            this::invalidateOutline);
+
+    private boolean mDisplayingRecentTasks;
+    private View mNoRecentItemsPane;
+    private HorizontalScrollView mScrollView;
+    private ConstraintLayout mContent;
+
+    private int mTaskViewHeight;
+    private int mSpacing;
+    private int mOutlineRadius;
+    private boolean mIsRtl;
+
+    @Nullable private AnimatorSet mOpenAnimation;
+
+    @Nullable private KeyboardQuickSwitchViewController.ViewCallbacks mViewCallbacks;
+
+    public KeyboardQuickSwitchView(@NonNull Context context) {
+        this(context, null);
+    }
+
+    public KeyboardQuickSwitchView(@NonNull Context context, @Nullable AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public KeyboardQuickSwitchView(@NonNull Context context, @Nullable AttributeSet attrs,
+            int defStyleAttr) {
+        this(context, attrs, defStyleAttr, 0);
+    }
+
+    public KeyboardQuickSwitchView(@NonNull Context context, @Nullable AttributeSet attrs,
+            int defStyleAttr,
+            int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+        mNoRecentItemsPane = findViewById(R.id.no_recent_items_pane);
+        mScrollView = findViewById(R.id.scroll_view);
+        mContent = findViewById(R.id.content);
+
+        Resources resources = getResources();
+        mTaskViewHeight = resources.getDimensionPixelSize(
+                R.dimen.keyboard_quick_switch_taskview_height);
+        mSpacing = resources.getDimensionPixelSize(R.dimen.keyboard_quick_switch_view_spacing);
+        mOutlineRadius = resources.getDimensionPixelSize(R.dimen.keyboard_quick_switch_view_radius);
+        mIsRtl = Utilities.isRtl(resources);
+    }
+
+    @NonNull
+    private KeyboardQuickSwitchTaskView createAndAddTaskView(
+            int index,
+            int width,
+            boolean isFinalView,
+            boolean updateTasks,
+            @NonNull LayoutInflater layoutInflater,
+            @Nullable View previousView,
+            @NonNull List<GroupTask> groupTasks) {
+        KeyboardQuickSwitchTaskView taskView = (KeyboardQuickSwitchTaskView) layoutInflater.inflate(
+                R.layout.keyboard_quick_switch_taskview, mContent, false);
+        taskView.setId(View.generateViewId());
+        taskView.setOnClickListener(v -> mViewCallbacks.launchTappedTask(index));
+
+        LayoutParams lp = new LayoutParams(width, mTaskViewHeight);
+        // Create a left-to-right ordering of views (or right-to-left in RTL locales)
+        if (previousView != null) {
+            lp.startToEnd = previousView.getId();
+        } else {
+            lp.startToStart = PARENT_ID;
+        }
+        lp.topToTop = PARENT_ID;
+        lp.bottomToBottom = PARENT_ID;
+        // Add spacing between views
+        lp.setMarginStart(mSpacing);
+        if (isFinalView) {
+            // Add spacing to the end of the final view so that scrolling ends with some padding.
+            lp.endToEnd = PARENT_ID;
+            lp.setMarginEnd(mSpacing);
+            lp.horizontalBias = 1f;
+        }
+
+        GroupTask groupTask = groupTasks.get(index);
+        taskView.setThumbnails(
+                groupTask.task1,
+                groupTask.task2,
+                updateTasks ? mViewCallbacks::updateThumbnailInBackground : null,
+                updateTasks ? mViewCallbacks::updateIconInBackground : null);
+
+        mContent.addView(taskView, lp);
+        return taskView;
+    }
+
+    private void createAndAddOverviewButton(
+            int width,
+            @NonNull LayoutInflater layoutInflater,
+            @Nullable View previousView,
+            @NonNull String overflowString) {
+        KeyboardQuickSwitchTaskView overviewButton =
+                (KeyboardQuickSwitchTaskView) layoutInflater.inflate(
+                        R.layout.keyboard_quick_switch_overview, this, false);
+        overviewButton.setOnClickListener(v -> mViewCallbacks.launchTappedTask(MAX_TASKS));
+
+        overviewButton.<TextView>findViewById(R.id.text).setText(overflowString);
+
+        ConstraintLayout.LayoutParams lp = new ConstraintLayout.LayoutParams(
+                width, mTaskViewHeight);
+        lp.endToEnd = PARENT_ID;
+        lp.startToEnd = previousView.getId();
+        lp.topToTop = PARENT_ID;
+        lp.bottomToBottom = PARENT_ID;
+        lp.setMarginEnd(mSpacing);
+        lp.setMarginStart(mSpacing);
+
+        mContent.addView(overviewButton, lp);
+    }
+
+    protected void applyLoadPlan(
+            @NonNull Context context,
+            @NonNull List<GroupTask> groupTasks,
+            int numHiddenTasks,
+            boolean updateTasks,
+            int currentFocusIndexOverride,
+            @NonNull KeyboardQuickSwitchViewController.ViewCallbacks viewCallbacks) {
+        mViewCallbacks = viewCallbacks;
+        Resources resources = context.getResources();
+        int width = resources.getDimensionPixelSize(R.dimen.keyboard_quick_switch_taskview_width);
+        View previousView = null;
+
+        LayoutInflater layoutInflater = LayoutInflater.from(context);
+        int tasksToDisplay = Math.min(MAX_TASKS, groupTasks.size());
+        for (int i = 0; i < tasksToDisplay; i++) {
+            previousView = createAndAddTaskView(
+                    i,
+                    width,
+                    /* isFinalView= */ i == tasksToDisplay - 1 && numHiddenTasks == 0,
+                    updateTasks,
+                    layoutInflater,
+                    previousView,
+                    groupTasks);
+        }
+
+        if (numHiddenTasks > 0) {
+            HashMap<String, Integer> args = new HashMap<>();
+            args.put("count", numHiddenTasks);
+            createAndAddOverviewButton(
+                    width,
+                    layoutInflater,
+                    previousView,
+                    new MessageFormat(
+                            resources.getString(R.string.quick_switch_overflow),
+                            Locale.getDefault()).format(args));
+        }
+        mDisplayingRecentTasks = !groupTasks.isEmpty();
+
+        getViewTreeObserver().addOnGlobalLayoutListener(
+                new ViewTreeObserver.OnGlobalLayoutListener() {
+                    @Override
+                    public void onGlobalLayout() {
+                        animateOpen(currentFocusIndexOverride);
+
+                        getViewTreeObserver().removeOnGlobalLayoutListener(this);
+                    }
+                });
+    }
+
+    protected Animator getCloseAnimation() {
+        AnimatorSet closeAnimation = new AnimatorSet();
+
+        Animator outlineAnimation = mOutlineAnimationProgress.animateToValue(0f);
+        outlineAnimation.setDuration(OUTLINE_ANIMATION_DURATION_MS);
+        outlineAnimation.setInterpolator(CLOSE_OUTLINE_INTERPOLATOR);
+        closeAnimation.play(outlineAnimation);
+
+        Animator alphaAnimation = ObjectAnimator.ofFloat(this, ALPHA, 1f, 0f);
+        alphaAnimation.setStartDelay(ALPHA_ANIMATION_START_DELAY_MS);
+        alphaAnimation.setDuration(ALPHA_ANIMATION_DURATION_MS);
+        closeAnimation.play(alphaAnimation);
+
+        View displayedContent = mDisplayingRecentTasks ? mScrollView : mNoRecentItemsPane;
+        Animator translationYAnimation = ObjectAnimator.ofFloat(
+                displayedContent,
+                TRANSLATION_Y,
+                0, -Utilities.dpToPx(CONTENT_START_TRANSLATION_Y_DP));
+        translationYAnimation.setDuration(CONTENT_TRANSLATION_Y_ANIMATION_DURATION_MS);
+        translationYAnimation.setInterpolator(CLOSE_TRANSLATION_Y_INTERPOLATOR);
+        closeAnimation.play(translationYAnimation);
+
+        Animator contentAlphaAnimation = ObjectAnimator.ofFloat(displayedContent, ALPHA, 1f, 0f);
+        contentAlphaAnimation.setDuration(CONTENT_ALPHA_ANIMATION_DURATION_MS);
+        closeAnimation.play(contentAlphaAnimation);
+
+        closeAnimation.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationStart(Animator animation) {
+                super.onAnimationStart(animation);
+                if (mOpenAnimation != null) {
+                    mOpenAnimation.cancel();
+                }
+            }
+        });
+
+        return closeAnimation;
+    }
+
+    private void animateOpen(int currentFocusIndexOverride) {
+        if (mOpenAnimation != null) {
+            // Restart animation since currentFocusIndexOverride can change the initial scroll.
+            mOpenAnimation.cancel();
+        }
+        mOpenAnimation = new AnimatorSet();
+
+        Animator outlineAnimation = mOutlineAnimationProgress.animateToValue(1f);
+        outlineAnimation.setDuration(OUTLINE_ANIMATION_DURATION_MS);
+        mOpenAnimation.play(outlineAnimation);
+
+        Animator alphaAnimation = ObjectAnimator.ofFloat(this, ALPHA, 0f, 1f);
+        alphaAnimation.setDuration(ALPHA_ANIMATION_DURATION_MS);
+        mOpenAnimation.play(alphaAnimation);
+
+        View displayedContent = mDisplayingRecentTasks ? mScrollView : mNoRecentItemsPane;
+        Animator translationXAnimation = ObjectAnimator.ofFloat(
+                displayedContent,
+                TRANSLATION_X,
+                -Utilities.dpToPx(CONTENT_START_TRANSLATION_X_DP), 0);
+        translationXAnimation.setDuration(CONTENT_TRANSLATION_X_ANIMATION_DURATION_MS);
+        translationXAnimation.setInterpolator(OPEN_TRANSLATION_X_INTERPOLATOR);
+        mOpenAnimation.play(translationXAnimation);
+
+        Animator translationYAnimation = ObjectAnimator.ofFloat(
+                displayedContent,
+                TRANSLATION_Y,
+                -Utilities.dpToPx(CONTENT_START_TRANSLATION_Y_DP), 0);
+        translationYAnimation.setDuration(CONTENT_TRANSLATION_Y_ANIMATION_DURATION_MS);
+        translationYAnimation.setInterpolator(OPEN_TRANSLATION_Y_INTERPOLATOR);
+        mOpenAnimation.play(translationYAnimation);
+
+        Animator contentAlphaAnimation = ObjectAnimator.ofFloat(displayedContent, ALPHA, 0f, 1f);
+        contentAlphaAnimation.setStartDelay(CONTENT_ALPHA_ANIMATION_START_DELAY_MS);
+        contentAlphaAnimation.setDuration(CONTENT_ALPHA_ANIMATION_DURATION_MS);
+        mOpenAnimation.play(contentAlphaAnimation);
+
+        ViewOutlineProvider outlineProvider = getOutlineProvider();
+        mOpenAnimation.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationStart(Animator animation) {
+                super.onAnimationStart(animation);
+                setClipToPadding(false);
+                setOutlineProvider(new ViewOutlineProvider() {
+                    @Override
+                    public void getOutline(View view, Outline outline) {
+                        outline.setRoundRect(
+                                /* rect= */ new Rect(
+                                        /* left= */ 0,
+                                        /* top= */ 0,
+                                        /* right= */ getWidth(),
+                                        /* bottom= */
+                                        (int) (getHeight() * Utilities.mapBoundToRange(
+                                                mOutlineAnimationProgress.value,
+                                                /* lowerBound= */ 0f,
+                                                /* upperBound= */ 1f,
+                                                /* toMin= */ OUTLINE_START_HEIGHT_FACTOR,
+                                                /* toMax= */ 1f,
+                                                OPEN_OUTLINE_INTERPOLATOR))),
+                                /* radius= */ mOutlineRadius * Utilities.mapBoundToRange(
+                                        mOutlineAnimationProgress.value,
+                                        /* lowerBound= */ 0f,
+                                        /* upperBound= */ 1f,
+                                        /* toMin= */ OUTLINE_START_RADIUS_FACTOR,
+                                        /* toMax= */ 1f,
+                                        OPEN_OUTLINE_INTERPOLATOR));
+                    }
+                });
+                if (currentFocusIndexOverride == -1) {
+                    initializeScroll(/* index= */ 0, /* shouldTruncateTarget= */ false);
+                } else {
+                    animateFocusMove(-1, currentFocusIndexOverride);
+                }
+                displayedContent.setVisibility(VISIBLE);
+                setVisibility(VISIBLE);
+                requestFocus();
+            }
+
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                super.onAnimationEnd(animation);
+                setClipToPadding(true);
+                setOutlineProvider(outlineProvider);
+                invalidateOutline();
+                mOpenAnimation = null;
+            }
+        });
+
+        mOpenAnimation.start();
+    }
+
+    protected void animateFocusMove(int fromIndex, int toIndex) {
+        if (!mDisplayingRecentTasks) {
+            return;
+        }
+        KeyboardQuickSwitchTaskView focusedTask = getTaskAt(toIndex);
+        if (focusedTask == null) {
+            return;
+        }
+        AnimatorSet focusAnimation = new AnimatorSet();
+        focusAnimation.play(focusedTask.getFocusAnimator(true));
+
+        KeyboardQuickSwitchTaskView previouslyFocusedTask = getTaskAt(fromIndex);
+        if (previouslyFocusedTask != null) {
+            focusAnimation.play(previouslyFocusedTask.getFocusAnimator(false));
+        }
+
+        focusAnimation.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationStart(Animator animation) {
+                super.onAnimationStart(animation);
+                focusedTask.requestAccessibilityFocus();
+                if (fromIndex == -1) {
+                    int firstVisibleTaskIndex = toIndex == 0
+                            ? toIndex
+                            : getTaskAt(toIndex - 1) == null
+                                    ? toIndex : toIndex - 1;
+                    // Scroll so that the previous task view is truncated as a visual hint that
+                    // there are more tasks
+                    initializeScroll(
+                            firstVisibleTaskIndex,
+                            /* shouldTruncateTarget= */ firstVisibleTaskIndex != toIndex);
+                } else if (toIndex > fromIndex || toIndex == 0) {
+                    // Scrolling to next task view
+                    if (mIsRtl) {
+                        scrollLeftTo(focusedTask);
+                    } else {
+                        scrollRightTo(focusedTask);
+                    }
+                } else {
+                    // Scrolling to previous task view
+                    if (mIsRtl) {
+                        scrollRightTo(focusedTask);
+                    } else {
+                        scrollLeftTo(focusedTask);
+                    }
+                }
+                if (mViewCallbacks != null) {
+                    mViewCallbacks.updateCurrentFocusIndex(toIndex);
+                }
+            }
+        });
+
+        focusAnimation.start();
+    }
+
+    @Override
+    public boolean onKeyUp(int keyCode, KeyEvent event) {
+        return (mViewCallbacks != null
+                && mViewCallbacks.onKeyUp(keyCode, event, mIsRtl, mDisplayingRecentTasks))
+                || super.onKeyUp(keyCode, event);
+    }
+
+    private void initializeScroll(int index, boolean shouldTruncateTarget) {
+        if (!mDisplayingRecentTasks) {
+            return;
+        }
+        View task = getTaskAt(index);
+        if (task == null) {
+            return;
+        }
+        if (mIsRtl) {
+            scrollRightTo(
+                    task, shouldTruncateTarget, /* smoothScroll= */ false);
+        } else {
+            scrollLeftTo(
+                    task, shouldTruncateTarget, /* smoothScroll= */ false);
+        }
+    }
+
+    private void scrollRightTo(@NonNull View targetTask) {
+        scrollRightTo(targetTask, /* shouldTruncateTarget= */ false, /* smoothScroll= */ true);
+    }
+
+    private void scrollRightTo(
+            @NonNull View targetTask, boolean shouldTruncateTarget, boolean smoothScroll) {
+        if (!mDisplayingRecentTasks) {
+            return;
+        }
+        if (smoothScroll && !shouldScroll(targetTask, shouldTruncateTarget)) {
+            return;
+        }
+        int scrollTo = targetTask.getLeft() - mSpacing
+                + (shouldTruncateTarget ? targetTask.getWidth() / 2 : 0);
+        // Scroll so that the focused task is to the left of the list
+        if (smoothScroll) {
+            mScrollView.smoothScrollTo(scrollTo, 0);
+        } else {
+            mScrollView.scrollTo(scrollTo, 0);
+        }
+    }
+
+    private void scrollLeftTo(@NonNull View targetTask) {
+        scrollLeftTo(targetTask, /* shouldTruncateTarget= */ false, /* smoothScroll= */ true);
+    }
+
+    private void scrollLeftTo(
+            @NonNull View targetTask, boolean shouldTruncateTarget, boolean smoothScroll) {
+        if (!mDisplayingRecentTasks) {
+            return;
+        }
+        if (smoothScroll && !shouldScroll(targetTask, shouldTruncateTarget)) {
+            return;
+        }
+        int scrollTo = targetTask.getRight() + mSpacing - mScrollView.getWidth()
+                - (shouldTruncateTarget ? targetTask.getWidth() / 2 : 0);
+        // Scroll so that the focused task is to the right of the list
+        if (smoothScroll) {
+            mScrollView.smoothScrollTo(scrollTo, 0);
+        } else {
+            mScrollView.scrollTo(scrollTo, 0);
+        }
+    }
+
+    private boolean shouldScroll(@NonNull View targetTask, boolean shouldTruncateTarget) {
+        boolean isTargetTruncated =
+                targetTask.getRight() + mSpacing > mScrollView.getScrollX() + mScrollView.getWidth()
+                        || Math.max(0, targetTask.getLeft() - mSpacing) < mScrollView.getScrollX();
+
+        return isTargetTruncated && !shouldTruncateTarget;
+    }
+
+    @Nullable
+    protected KeyboardQuickSwitchTaskView getTaskAt(int index) {
+        return !mDisplayingRecentTasks || index < 0 || index >= mContent.getChildCount()
+                ? null : (KeyboardQuickSwitchTaskView) mContent.getChildAt(index);
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchViewController.java b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchViewController.java
new file mode 100644
index 0000000..3230c66
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchViewController.java
@@ -0,0 +1,226 @@
+/*
+ * 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.launcher3.taskbar;
+
+import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
+
+import android.animation.Animator;
+import android.view.KeyEvent;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.launcher3.anim.AnimationSuccessListener;
+import com.android.launcher3.taskbar.overlay.TaskbarOverlayContext;
+import com.android.launcher3.taskbar.overlay.TaskbarOverlayDragLayer;
+import com.android.quickstep.util.GroupTask;
+import com.android.systemui.shared.recents.model.Task;
+import com.android.systemui.shared.recents.model.ThumbnailData;
+import com.android.systemui.shared.system.ActivityManagerWrapper;
+
+import java.io.PrintWriter;
+import java.util.List;
+import java.util.function.Consumer;
+
+/**
+ * Handles initialization of the {@link KeyboardQuickSwitchView} and supplies it with the list of
+ * tasks.
+ */
+public class KeyboardQuickSwitchViewController {
+
+    @NonNull private final ViewCallbacks mViewCallbacks = new ViewCallbacks();
+    @NonNull private final TaskbarControllers mControllers;
+    @NonNull private final TaskbarOverlayContext mOverlayContext;
+    @NonNull private final KeyboardQuickSwitchView mKeyboardQuickSwitchView;
+    @NonNull private final KeyboardQuickSwitchController.ControllerCallbacks mControllerCallbacks;
+
+    @Nullable private Animator mCloseAnimation;
+
+    private int mCurrentFocusIndex = -1;
+
+    protected KeyboardQuickSwitchViewController(
+            @NonNull TaskbarControllers controllers,
+            @NonNull TaskbarOverlayContext overlayContext,
+            @NonNull KeyboardQuickSwitchView keyboardQuickSwitchView,
+            @NonNull KeyboardQuickSwitchController.ControllerCallbacks controllerCallbacks) {
+        mControllers = controllers;
+        mOverlayContext = overlayContext;
+        mKeyboardQuickSwitchView = keyboardQuickSwitchView;
+        mControllerCallbacks = controllerCallbacks;
+    }
+
+    protected int getCurrentFocusedIndex() {
+        return mCurrentFocusIndex;
+    }
+
+    protected void openQuickSwitchView(
+            @NonNull List<GroupTask> tasks,
+            int numHiddenTasks,
+            boolean updateTasks,
+            int currentFocusIndexOverride) {
+        TaskbarOverlayDragLayer dragLayer = mOverlayContext.getDragLayer();
+        dragLayer.addView(mKeyboardQuickSwitchView);
+        dragLayer.runOnClickOnce(v -> closeQuickSwitchView(true));
+
+        mKeyboardQuickSwitchView.applyLoadPlan(
+                mOverlayContext,
+                tasks,
+                numHiddenTasks,
+                updateTasks,
+                currentFocusIndexOverride,
+                mViewCallbacks);
+    }
+
+    protected void closeQuickSwitchView(boolean animate) {
+        if (mCloseAnimation != null) {
+            if (animate) {
+                // Let currently-running animation finish.
+                return;
+            } else {
+                mCloseAnimation.cancel();
+            }
+        }
+        if (!animate) {
+            mCloseAnimation = null;
+            onCloseComplete();
+            return;
+        }
+        mCloseAnimation = mKeyboardQuickSwitchView.getCloseAnimation();
+
+        mCloseAnimation.addListener(new AnimationSuccessListener() {
+            @Override
+            public void onAnimationSuccess(Animator animator) {
+                mCloseAnimation = null;
+                onCloseComplete();
+            }
+        });
+        mCloseAnimation.start();
+    }
+
+    /**
+     * Launched the currently-focused task.
+     *
+     * Returns index -1 iff the RecentsView shouldn't be opened.
+     *
+     * If the index is not -1, then the {@link com.android.quickstep.views.TaskView} at the returned
+     * index will be focused.
+     */
+    protected int launchFocusedTask() {
+        // Launch the second-most recent task if the user quick switches too quickly, if possible.
+        return launchTaskAt(mCurrentFocusIndex == -1
+                ? (mControllerCallbacks.getTaskCount() > 1 ? 1 : 0) : mCurrentFocusIndex);
+    }
+
+    private int launchTaskAt(int index) {
+        if (mCloseAnimation != null) {
+            // Ignore taps on task views and alt key unpresses while the close animation is running.
+            return -1;
+        }
+        // Even with a valid index, this can be null if the user tries to quick switch before the
+        // views have been added in the KeyboardQuickSwitchView.
+        View taskView = mKeyboardQuickSwitchView.getTaskAt(index);
+        GroupTask task = mControllerCallbacks.getTaskAt(index);
+        if (task == null) {
+            return Math.max(0, index);
+        } else if (task.task2 == null) {
+            UI_HELPER_EXECUTOR.execute(() ->
+                    ActivityManagerWrapper.getInstance().startActivityFromRecents(
+                            task.task1.key,
+                            mControllers.taskbarActivityContext.getActivityLaunchOptions(
+                                    taskView == null ? mKeyboardQuickSwitchView : taskView, null)
+                                    .options));
+        } else {
+            mControllers.uiController.launchSplitTasks(
+                    taskView == null ? mKeyboardQuickSwitchView : taskView, task);
+        }
+        return -1;
+    }
+
+    private void onCloseComplete() {
+        mOverlayContext.getDragLayer().removeView(mKeyboardQuickSwitchView);
+        mControllerCallbacks.onCloseComplete();
+    }
+
+    protected void onDestroy() {
+        closeQuickSwitchView(false);
+    }
+
+    public void dumpLogs(String prefix, PrintWriter pw) {
+        pw.println(prefix + "KeyboardQuickSwitchViewController:");
+
+        pw.println(prefix + "\thasFocus=" + mKeyboardQuickSwitchView.hasFocus());
+        pw.println(prefix + "\tcloseAnimationRunning=" + (mCloseAnimation != null));
+        pw.println(prefix + "\tmCurrentFocusIndex=" + mCurrentFocusIndex);
+    }
+
+    class ViewCallbacks {
+
+        boolean onKeyUp(int keyCode, KeyEvent event, boolean isRTL, boolean allowTraversal) {
+            if (keyCode != KeyEvent.KEYCODE_TAB
+                    && keyCode != KeyEvent.KEYCODE_DPAD_RIGHT
+                    && keyCode != KeyEvent.KEYCODE_DPAD_LEFT
+                    && keyCode != KeyEvent.KEYCODE_GRAVE
+                    && keyCode != KeyEvent.KEYCODE_ESCAPE) {
+                return false;
+            }
+            if (keyCode == KeyEvent.KEYCODE_GRAVE || keyCode == KeyEvent.KEYCODE_ESCAPE) {
+                closeQuickSwitchView(true);
+                return true;
+            }
+            if (!allowTraversal) {
+                return false;
+            }
+            boolean traverseBackwards = (keyCode == KeyEvent.KEYCODE_TAB && event.isShiftPressed())
+                    || (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT && isRTL)
+                    || (keyCode == KeyEvent.KEYCODE_DPAD_LEFT && !isRTL);
+            int taskCount = mControllerCallbacks.getTaskCount();
+            int toIndex = mCurrentFocusIndex == -1
+                    // Focus the second-most recent app if possible
+                    ? (taskCount > 1 ? 1 : 0)
+                    : (traverseBackwards
+                            // focus a more recent task or loop back to the opposite end
+                            ? Math.max(0, mCurrentFocusIndex == 0
+                                    ? taskCount - 1 : mCurrentFocusIndex - 1)
+                            // focus a less recent app or loop back to the opposite end
+                            : ((mCurrentFocusIndex + 1) % taskCount));
+
+            if (mCurrentFocusIndex == toIndex) {
+                return true;
+            }
+            mKeyboardQuickSwitchView.animateFocusMove(mCurrentFocusIndex, toIndex);
+
+            return true;
+        }
+
+        void updateCurrentFocusIndex(int index) {
+            mCurrentFocusIndex = index;
+        }
+
+        void launchTappedTask(int index) {
+            KeyboardQuickSwitchViewController.this.launchTaskAt(index);
+            closeQuickSwitchView(true);
+        }
+
+        void updateThumbnailInBackground(Task task, Consumer<ThumbnailData> callback) {
+            mControllerCallbacks.updateThumbnailInBackground(task, callback);
+        }
+
+        void updateIconInBackground(Task task, Consumer<Task> callback) {
+            mControllerCallbacks.updateIconInBackground(task, callback);
+        }
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java
index ca30e72..ba6f165 100644
--- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java
@@ -15,41 +15,41 @@
  */
 package com.android.launcher3.taskbar;
 
+import static com.android.launcher3.QuickstepTransitionManager.TRANSIENT_TASKBAR_TRANSITION_DURATION;
+import static com.android.launcher3.statemanager.BaseState.FLAG_NON_INTERACTIVE;
+import static com.android.launcher3.taskbar.TaskbarEduTooltipControllerKt.TOOLTIP_STEP_FEATURES;
 import static com.android.launcher3.taskbar.TaskbarLauncherStateController.FLAG_RESUMED;
-import static com.android.systemui.shared.system.WindowManagerWrapper.ITYPE_EXTRA_NAVIGATION_BAR;
+import static com.android.quickstep.TaskAnimationManager.ENABLE_SHELL_TRANSITIONS;
 
 import android.animation.Animator;
 import android.animation.AnimatorSet;
-import android.annotation.ColorInt;
 import android.os.RemoteException;
 import android.util.Log;
-import android.util.SparseArray;
-import android.view.MotionEvent;
 import android.view.TaskTransitionSpec;
+import android.view.View;
 import android.view.WindowManagerGlobal;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.annotation.VisibleForTesting;
 
-import com.android.launcher3.BaseQuickstepLauncher;
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.LauncherState;
 import com.android.launcher3.QuickstepTransitionManager;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.logging.InstanceId;
 import com.android.launcher3.logging.InstanceIdSequence;
 import com.android.launcher3.model.data.ItemInfo;
-import com.android.launcher3.model.data.ItemInfoWithIcon;
+import com.android.launcher3.uioverrides.QuickstepLauncher;
+import com.android.launcher3.util.DisplayController;
+import com.android.launcher3.util.MultiPropertyFactory;
 import com.android.launcher3.util.OnboardingPrefs;
-import com.android.quickstep.AnimatedFloat;
 import com.android.quickstep.RecentsAnimationCallbacks;
+import com.android.quickstep.util.GroupTask;
+import com.android.quickstep.views.RecentsView;
 
 import java.io.PrintWriter;
-import java.util.Arrays;
-import java.util.Set;
-import java.util.stream.Stream;
 
 /**
  * A data source which integrates with a Launcher instance
@@ -63,9 +63,15 @@
     public static final int WIDGETS_PAGE_PROGRESS_INDEX = 2;
     public static final int SYSUI_SURFACE_PROGRESS_INDEX = 3;
 
-    private final SparseArray<Float> mTaskbarInAppDisplayProgress = new SparseArray<>(4);
+    public static final int DISPLAY_PROGRESS_COUNT = 4;
 
-    private final BaseQuickstepLauncher mLauncher;
+    private final AnimatedFloat mTaskbarInAppDisplayProgress = new AnimatedFloat(
+            this::onInAppDisplayProgressChanged);
+    private final MultiPropertyFactory<AnimatedFloat> mTaskbarInAppDisplayProgressMultiProp =
+            new MultiPropertyFactory<>(mTaskbarInAppDisplayProgress,
+                    AnimatedFloat.VALUE, DISPLAY_PROGRESS_COUNT, Float::max);
+
+    private final QuickstepLauncher mLauncher;
 
     private final DeviceProfile.OnDeviceProfileChangeListener mOnDeviceProfileChangeListener =
             dp -> {
@@ -76,12 +82,10 @@
             };
 
     // Initialized in init.
-    private AnimatedFloat mTaskbarOverrideBackgroundAlpha;
-    private TaskbarKeyguardController mKeyguardController;
     private final TaskbarLauncherStateController
             mTaskbarLauncherStateController = new TaskbarLauncherStateController();
 
-    public LauncherTaskbarUIController(BaseQuickstepLauncher launcher) {
+    public LauncherTaskbarUIController(QuickstepLauncher launcher) {
         mLauncher = launcher;
     }
 
@@ -89,17 +93,21 @@
     protected void init(TaskbarControllers taskbarControllers) {
         super.init(taskbarControllers);
 
-        mTaskbarLauncherStateController.init(mControllers, mLauncher);
-        mTaskbarOverrideBackgroundAlpha = mControllers.taskbarDragLayerController
-                .getOverrideBackgroundAlpha();
+        mTaskbarLauncherStateController.init(mControllers, mLauncher,
+                mControllers.getSharedState().sysuiStateFlags);
 
         mLauncher.setTaskbarUIController(this);
-        mKeyguardController = taskbarControllers.taskbarKeyguardController;
 
         onLauncherResumedOrPaused(mLauncher.hasBeenResumed(), true /* fromInit */);
 
         onStashedInAppChanged(mLauncher.getDeviceProfile());
         mLauncher.addOnDeviceProfileChangeListener(mOnDeviceProfileChangeListener);
+
+        // Restore the in-app display progress from before Taskbar was recreated.
+        float[] prevProgresses = mControllers.getSharedState().inAppDisplayProgressMultiPropValues;
+        for (int i = 0; i < prevProgresses.length; i++) {
+            mTaskbarInAppDisplayProgressMultiProp.get(i).setValue(prevProgresses[i]);
+        }
     }
 
     @Override
@@ -113,9 +121,22 @@
         updateTaskTransitionSpec(true);
     }
 
+    private void onInAppDisplayProgressChanged() {
+        if (mControllers != null) {
+            // Update our shared state so we can restore it if taskbar gets recreated.
+            for (int i = 0; i < DISPLAY_PROGRESS_COUNT; i++) {
+                mControllers.getSharedState().inAppDisplayProgressMultiPropValues[i] =
+                        mTaskbarInAppDisplayProgressMultiProp.get(i).getValue();
+            }
+            // Ensure nav buttons react to our latest state if necessary.
+            mControllers.navbarButtonsViewController.updateNavButtonTranslationY();
+        }
+    }
+
     @Override
     protected boolean isTaskbarTouchable() {
-        return !mTaskbarLauncherStateController.isAnimatingToLauncher();
+        return !(mTaskbarLauncherStateController.isAnimatingToLauncher()
+                && mTaskbarLauncherStateController.isTaskbarAlignedWithHotseat());
     }
 
     public void setShouldDelayLauncherStateAnim(boolean shouldDelayLauncherStateAnim) {
@@ -124,24 +145,6 @@
     }
 
     /**
-     * Enables manual taskbar stashing. This method should only be used for tests that need to
-     * stash/unstash the taskbar.
-     */
-    @VisibleForTesting
-    public void enableManualStashingForTests(boolean enableManualStashing) {
-        mControllers.taskbarStashController.enableManualStashingForTests(enableManualStashing);
-    }
-
-    /**
-     * Unstashes the Taskbar if it is stashed. This method should only be used to unstash the
-     * taskbar at the end of a test.
-     */
-    @VisibleForTesting
-    public void unstashTaskbarIfStashed() {
-        mControllers.taskbarStashController.onLongPressToUnstashTaskbar();
-    }
-
-    /**
      * Adds the Launcher resume animator to the given animator set.
      *
      * This should be used to run a Launcher resume animation whose progress matches a
@@ -171,25 +174,33 @@
                 isResumed,
                 fromInit,
                 /* startAnimation= */ true,
-                QuickstepTransitionManager.CONTENT_ALPHA_DURATION);
+                DisplayController.isTransientTaskbar(mLauncher)
+                        ? TRANSIENT_TASKBAR_TRANSITION_DURATION
+                        : (!isResumed
+                                ? QuickstepTransitionManager.TASKBAR_TO_APP_DURATION
+                                : QuickstepTransitionManager.TASKBAR_TO_HOME_DURATION));
     }
 
     @Nullable
     private Animator onLauncherResumedOrPaused(
             boolean isResumed, boolean fromInit, boolean startAnimation, int duration) {
-        if (mKeyguardController.isScreenOff()) {
-            if (!isResumed) {
-                return null;
-            } else {
-                // Resuming implicitly means device unlocked
-                mKeyguardController.setScreenOn();
-            }
+        // Launcher is resumed during the swipe-to-overview gesture under shell-transitions, so
+        // avoid updating taskbar state in that situation (when it's non-interactive -- or
+        // "background") to avoid premature animations.
+        if (ENABLE_SHELL_TRANSITIONS && isResumed
+                && mLauncher.getStateManager().getState().hasFlag(FLAG_NON_INTERACTIVE)
+                && !mLauncher.getStateManager().getState().isTaskbarAlignedWithHotseat(mLauncher)) {
+            return null;
         }
 
         mTaskbarLauncherStateController.updateStateForFlag(FLAG_RESUMED, isResumed);
         return mTaskbarLauncherStateController.applyState(fromInit ? 0 : duration, startAnimation);
     }
 
+    public void refreshResumedState() {
+        onLauncherResumedOrPaused(mLauncher.hasBeenResumed());
+    }
+
     /**
      * Create Taskbar animation when going from an app to Launcher as part of recents transition.
      * @param toState If known, the state we will end up in when reaching Launcher.
@@ -201,15 +212,6 @@
         return mTaskbarLauncherStateController.createAnimToLauncher(toState, callbacks, duration);
     }
 
-    /**
-     * @param ev MotionEvent in screen coordinates.
-     * @return Whether any Taskbar item could handle the given MotionEvent if given the chance.
-     */
-    public boolean isEventOverAnyTaskbarItem(MotionEvent ev) {
-        return mControllers.taskbarViewController.isEventOverAnyItem(ev)
-                || mControllers.navbarButtonsViewController.isEventOverAnyItem(ev);
-    }
-
     public boolean isDraggingItem() {
         return mControllers.taskbarDragController.isDragging();
     }
@@ -232,15 +234,9 @@
                 WindowManagerGlobal.getWindowManagerService().clearTaskTransitionSpec();
             } else {
                 // Adjust task transition spec to account for taskbar being visible
-                @ColorInt int taskAnimationBackgroundColor =
-                        mLauncher.getColor(R.color.taskbar_background);
-
-                TaskTransitionSpec customTaskAnimationSpec = new TaskTransitionSpec(
-                        taskAnimationBackgroundColor,
-                        Set.of(ITYPE_EXTRA_NAVIGATION_BAR)
-                );
-                WindowManagerGlobal.getWindowManagerService()
-                        .setTaskTransitionSpec(customTaskAnimationSpec);
+                WindowManagerGlobal.getWindowManagerService().setTaskTransitionSpec(
+                        new TaskTransitionSpec(
+                                mLauncher.getColor(R.color.taskbar_background)));
             }
         } catch (RemoteException e) {
             // This shouldn't happen but if it does task animations won't look good until the
@@ -251,59 +247,49 @@
     }
 
     /**
-     * Sets whether the background behind the taskbar/nav bar should be hidden.
+     * Starts a Taskbar EDU flow, if the user should see one upon launching an application.
      */
-    public void forceHideBackground(boolean forceHide) {
-        mTaskbarOverrideBackgroundAlpha.updateValue(forceHide ? 0 : 1);
-    }
-
-    @Override
-    public Stream<ItemInfoWithIcon> getAppIconsForEdu() {
-        return Arrays.stream(mLauncher.getAppsView().getAppsStore().getApps());
-    }
-
-    /**
-     * Starts the taskbar education flow, if the user hasn't seen it yet.
-     */
-    public void showEdu() {
-        if (!shouldShowEdu()) {
+    public void showEduOnAppLaunch() {
+        if (!shouldShowEduOnAppLaunch()) {
             return;
         }
-        mLauncher.getOnboardingPrefs().markChecked(OnboardingPrefs.TASKBAR_EDU_SEEN);
 
-        mControllers.taskbarEduController.showEdu();
+        // Persistent features EDU tooltip.
+        if (!DisplayController.isTransientTaskbar(mLauncher)) {
+            mControllers.taskbarEduTooltipController.maybeShowFeaturesEdu();
+            return;
+        }
+
+        // Transient swipe EDU tooltip.
+        mControllers.taskbarEduTooltipController.maybeShowSwipeEdu();
     }
 
     /**
-     * Whether the taskbar education should be shown.
+     * Returns {@code true} if a Taskbar education should be shown on application launch.
      */
-    public boolean shouldShowEdu() {
-        return !Utilities.IS_RUNNING_IN_TEST_HARNESS
-                && !mLauncher.getOnboardingPrefs().getBoolean(OnboardingPrefs.TASKBAR_EDU_SEEN);
-    }
+    public boolean shouldShowEduOnAppLaunch() {
+        if (Utilities.isRunningInTestHarness()) {
+            return false;
+        }
 
-    /**
-     * Manually ends the taskbar education flow.
-     */
-    public void hideEdu() {
-        mControllers.taskbarEduController.hideEdu();
+        // Persistent features EDU tooltip.
+        if (!DisplayController.isTransientTaskbar(mLauncher)) {
+            return !mLauncher.getOnboardingPrefs().hasReachedMaxCount(
+                    OnboardingPrefs.TASKBAR_EDU_TOOLTIP_STEP);
+        }
+
+        // Transient swipe EDU tooltip.
+        return mControllers.taskbarEduTooltipController.getTooltipStep() < TOOLTIP_STEP_FEATURES;
     }
 
     @Override
     public void onTaskbarIconLaunched(ItemInfo item) {
+        super.onTaskbarIconLaunched(item);
         InstanceId instanceId = new InstanceIdSequence().newInstanceId();
         mLauncher.logAppLaunch(mControllers.taskbarActivityContext.getStatsLogManager(), item,
                 instanceId);
     }
 
-    @Override
-    public void setSystemGestureInProgress(boolean inProgress) {
-        super.setSystemGestureInProgress(inProgress);
-        // Launcher's ScrimView will draw the background throughout the gesture. But once the
-        // gesture ends, start drawing taskbar's background again since launcher might stop drawing.
-        forceHideBackground(inProgress);
-    }
-
     /**
      * Animates Taskbar elements during a transition to a Launcher state that should use in-app
      * layouts.
@@ -313,74 +299,85 @@
      *                 1 => use in-app layout
      */
     public void onTaskbarInAppDisplayProgressUpdate(float progress, int progressIndex) {
+        mTaskbarInAppDisplayProgressMultiProp.get(progressIndex).setValue(progress);
         if (mControllers == null) {
             // This method can be called before init() is called.
             return;
         }
-        mTaskbarInAppDisplayProgress.put(progressIndex, progress);
-        if (!mControllers.taskbarStashController.isInApp()
+        if (mControllers.uiController.isIconAlignedWithHotseat()
                 && !mTaskbarLauncherStateController.isAnimatingToLauncher()) {
             // Only animate the nav buttons while home and not animating home, otherwise let
             // the TaskbarViewController handle it.
             mControllers.navbarButtonsViewController
                     .getTaskbarNavButtonTranslationYForInAppDisplay()
                     .updateValue(mLauncher.getDeviceProfile().getTaskbarOffsetY()
-                            * getInAppDisplayProgress());
+                            * mTaskbarInAppDisplayProgress.value);
         }
     }
 
     /** Returns true iff any in-app display progress > 0. */
     public boolean shouldUseInAppLayout() {
-        return getInAppDisplayProgress() > 0;
+        return mTaskbarInAppDisplayProgress.value > 0;
     }
 
-    private float getInAppDisplayProgress(int index) {
-        if (!mTaskbarInAppDisplayProgress.contains(index)) {
-            mTaskbarInAppDisplayProgress.put(index, 0f);
-        }
-        return mTaskbarInAppDisplayProgress.get(index);
+    @Override
+    public void onExpandPip() {
+        super.onExpandPip();
+        mTaskbarLauncherStateController.updateStateForFlag(FLAG_RESUMED, false);
+        mTaskbarLauncherStateController.applyState();
     }
 
-    private float getInAppDisplayProgress() {
-        return Stream.of(
-                getInAppDisplayProgress(MINUS_ONE_PAGE_PROGRESS_INDEX),
-                getInAppDisplayProgress(ALL_APPS_PAGE_PROGRESS_INDEX),
-                getInAppDisplayProgress(WIDGETS_PAGE_PROGRESS_INDEX),
-                getInAppDisplayProgress(SYSUI_SURFACE_PROGRESS_INDEX))
-                .max(Float::compareTo)
-                .get();
+    @Override
+    public void updateStateForSysuiFlags(int sysuiFlags) {
+        mTaskbarLauncherStateController.updateStateForSysuiFlags(sysuiFlags);
+    }
+
+    @Override
+    public boolean isIconAlignedWithHotseat() {
+        return mTaskbarLauncherStateController.isIconAlignedWithHotseat();
+    }
+
+    @Override
+    public boolean isHotseatIconOnTopWhenAligned() {
+        return mTaskbarLauncherStateController.isInHotseatOnTopStates()
+                && mTaskbarInAppDisplayProgressMultiProp.get(MINUS_ONE_PAGE_PROGRESS_INDEX)
+                    .getValue() == 0;
+    }
+
+    @Override
+    protected boolean isInOverview() {
+        return mTaskbarLauncherStateController.isInOverview();
+    }
+
+    @Override
+    public RecentsView getRecentsView() {
+        return mLauncher.getOverviewPanel();
+    }
+
+    @Override
+    public void launchSplitTasks(@NonNull View taskView, @NonNull GroupTask groupTask) {
+        mLauncher.launchSplitTasks(taskView, groupTask);
+    }
+
+    @Override
+    protected void onIconLayoutBoundsChanged() {
+        mTaskbarLauncherStateController.resetIconAlignment();
     }
 
     @Override
     public void dumpLogs(String prefix, PrintWriter pw) {
         super.dumpLogs(prefix, pw);
 
-        pw.println(String.format(
-                "%s\tmTaskbarOverrideBackgroundAlpha=%.2f",
-                prefix,
-                mTaskbarOverrideBackgroundAlpha.value));
-
-        pw.println(String.format("%s\tTaskbar in-app display progress:", prefix));
-        if (mControllers == null) {
-            pw.println(String.format("%s\t\tMissing mControllers", prefix));
-        } else {
-            pw.println(String.format(
-                    "%s\t\tprogress at MINUS_ONE_PAGE_PROGRESS_INDEX=%.2f",
-                    prefix,
-                    getInAppDisplayProgress(MINUS_ONE_PAGE_PROGRESS_INDEX)));
-            pw.println(String.format(
-                    "%s\t\tprogress at ALL_APPS_PAGE_PROGRESS_INDEX=%.2f",
-                    prefix,
-                    getInAppDisplayProgress(ALL_APPS_PAGE_PROGRESS_INDEX)));
-            pw.println(String.format(
-                    "%s\t\tprogress at WIDGETS_PAGE_PROGRESS_INDEX=%.2f",
-                    prefix,
-                    getInAppDisplayProgress(WIDGETS_PAGE_PROGRESS_INDEX)));
-            pw.println(String.format(
-                    "%s\t\tprogress at SYSUI_SURFACE_PROGRESS_INDEX=%.2f",
-                    prefix,
-                    getInAppDisplayProgress(SYSUI_SURFACE_PROGRESS_INDEX)));
-        }
+        pw.println(String.format("%s\tTaskbar in-app display progress: %.2f", prefix,
+                mTaskbarInAppDisplayProgress.value));
+        mTaskbarInAppDisplayProgressMultiProp.dump(
+                prefix + "\t\t",
+                pw,
+                "mTaskbarInAppDisplayProgressMultiProp",
+                "MINUS_ONE_PAGE_PROGRESS_INDEX",
+                "ALL_APPS_PAGE_PROGRESS_INDEX",
+                "WIDGETS_PAGE_PROGRESS_INDEX",
+                "SYSUI_SURFACE_PROGRESS_INDEX");
 
         mTaskbarLauncherStateController.dumpLogs(prefix + "\t", pw);
     }
diff --git a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java
index 5d576f7..9a9e0ba 100644
--- a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java
@@ -15,16 +15,25 @@
  */
 package com.android.launcher3.taskbar;
 
+import static android.view.View.AccessibilityDelegate;
+import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
+import static android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_REGION;
+import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL;
+
+import static com.android.launcher3.LauncherAnimUtils.ROTATION_DRAWABLE_PERCENT;
 import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_X;
 import static com.android.launcher3.Utilities.getDescendantCoordRelativeToAncestor;
 import static com.android.launcher3.taskbar.LauncherTaskbarUIController.SYSUI_SURFACE_PROGRESS_INDEX;
+import static com.android.launcher3.taskbar.TaskbarManager.isPhoneButtonNavMode;
 import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_A11Y;
 import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_BACK;
 import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_HOME;
 import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_IME_SWITCH;
 import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_RECENTS;
 import static com.android.launcher3.taskbar.TaskbarViewController.ALPHA_INDEX_KEYGUARD;
-import static com.android.launcher3.taskbar.Utilities.appendFlag;
+import static com.android.launcher3.taskbar.TaskbarViewController.ALPHA_INDEX_SMALL_SCREEN;
+import static com.android.launcher3.util.FlagDebugUtils.appendFlag;
+import static com.android.launcher3.util.MultiPropertyFactory.MULTI_PROPERTY_VALUE;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_CLICKABLE;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BACK_DISABLED;
@@ -35,7 +44,7 @@
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_OVERVIEW_DISABLED;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_QUICK_SETTINGS_EXPANDED;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_PINNING;
-import static com.android.systemui.shared.system.ViewTreeObserverWrapper.InsetsInfo.TOUCHABLE_INSETS_REGION;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING;
 
 import android.animation.ArgbEvaluator;
 import android.animation.ObjectAnimator;
@@ -44,13 +53,15 @@
 import android.annotation.LayoutRes;
 import android.content.pm.ActivityInfo.Config;
 import android.content.res.ColorStateList;
-import android.content.res.Configuration;
+import android.content.res.Resources;
 import android.graphics.Color;
+import android.graphics.Point;
 import android.graphics.Rect;
 import android.graphics.Region;
 import android.graphics.Region.Op;
 import android.graphics.drawable.AnimatedVectorDrawable;
 import android.graphics.drawable.PaintDrawable;
+import android.graphics.drawable.RotateDrawable;
 import android.inputmethodservice.InputMethodService;
 import android.os.Handler;
 import android.util.Property;
@@ -61,25 +72,30 @@
 import android.view.View.OnClickListener;
 import android.view.View.OnHoverListener;
 import android.view.ViewGroup;
+import android.view.ViewTreeObserver;
 import android.view.WindowManager;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 
+import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.LauncherAnimUtils;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.anim.AlphaUpdateListener;
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.taskbar.TaskbarNavButtonController.TaskbarButton;
+import com.android.launcher3.taskbar.navbutton.NavButtonLayoutFactory;
+import com.android.launcher3.taskbar.navbutton.NavButtonLayoutFactory.NavButtonLayoutter;
+import com.android.launcher3.util.DimensionUtils;
+import com.android.launcher3.util.MultiPropertyFactory.MultiProperty;
 import com.android.launcher3.util.MultiValueAlpha;
 import com.android.launcher3.util.TouchController;
 import com.android.launcher3.views.BaseDragLayer;
-import com.android.quickstep.AnimatedFloat;
 import com.android.systemui.shared.rotation.FloatingRotationButton;
 import com.android.systemui.shared.rotation.RotationButton;
 import com.android.systemui.shared.rotation.RotationButtonController;
 import com.android.systemui.shared.system.QuickStepContract;
-import com.android.systemui.shared.system.ViewTreeObserverWrapper;
 
 import java.io.PrintWriter;
 import java.util.ArrayList;
@@ -93,7 +109,7 @@
 
     private final Rect mTempRect = new Rect();
 
-    private static final int FLAG_SWITCHER_SUPPORTED = 1 << 0;
+    private static final int FLAG_SWITCHER_SHOWING = 1 << 0;
     private static final int FLAG_IME_VISIBLE = 1 << 1;
     private static final int FLAG_ROTATION_BUTTON_VISIBLE = 1 << 2;
     private static final int FLAG_A11Y_VISIBLE = 1 << 3;
@@ -105,14 +121,22 @@
     private static final int FLAG_DISABLE_BACK = 1 << 9;
     private static final int FLAG_NOTIFICATION_SHADE_EXPANDED = 1 << 10;
     private static final int FLAG_SCREEN_PINNING_ACTIVE = 1 << 11;
+    private static final int FLAG_VOICE_INTERACTION_WINDOW_SHOWING = 1 << 12;
+    private static final int FLAG_SMALL_SCREEN = 1 << 13;
+    private static final int FLAG_SLIDE_IN_VIEW_VISIBLE = 1 << 14;
 
-    private static final int MASK_IME_SWITCHER_VISIBLE = FLAG_SWITCHER_SUPPORTED | FLAG_IME_VISIBLE;
+    /**
+     * Flags where a UI could be over Taskbar surfaces, so the color override should be disabled.
+     */
+    private static final int FLAGS_ON_BACKGROUND_COLOR_OVERRIDE_DISABLED =
+            FLAG_NOTIFICATION_SHADE_EXPANDED | FLAG_VOICE_INTERACTION_WINDOW_SHOWING;
 
     private static final String NAV_BUTTONS_SEPARATE_WINDOW_TITLE = "Taskbar Nav Buttons";
 
     public static final int ALPHA_INDEX_IMMERSIVE_MODE = 0;
     public static final int ALPHA_INDEX_KEYGUARD_OR_DISABLE = 1;
-    private static final int NUM_ALPHA_CHANNELS = 2;
+    public static final int ALPHA_INDEX_SUW = 2;
+    private static final int NUM_ALPHA_CHANNELS = 3;
 
     private final ArrayList<StatePropertyHolder> mPropertyHolders = new ArrayList<>();
     private final ArrayList<ImageView> mAllButtons = new ArrayList<>();
@@ -120,12 +144,14 @@
 
     private final TaskbarActivityContext mContext;
     private final FrameLayout mNavButtonsView;
-    private final ViewGroup mNavButtonContainer;
+    private final LinearLayout mNavButtonContainer;
     // Used for IME+A11Y buttons
     private final ViewGroup mEndContextualContainer;
     private final ViewGroup mStartContextualContainer;
     private final int mLightIconColor;
     private final int mDarkIconColor;
+    /** Color to use for navigation bar buttons, if they are on on a Taskbar surface background. */
+    private final int mOnBackgroundIconColor;
 
     private final AnimatedFloat mTaskbarNavButtonTranslationY = new AnimatedFloat(
             this::updateNavButtonTranslationY);
@@ -133,13 +159,22 @@
             this::updateNavButtonTranslationY);
     private final AnimatedFloat mTaskbarNavButtonTranslationYForIme = new AnimatedFloat(
             this::updateNavButtonTranslationY);
+    private float mLastSetNavButtonTranslationY;
     // Used for System UI state updates that should translate the nav button for in-app display.
     private final AnimatedFloat mNavButtonInAppDisplayProgressForSysui = new AnimatedFloat(
             this::updateNavButtonInAppDisplayProgressForSysui);
+    /** Expected nav button dark intensity communicated via the framework. */
     private final AnimatedFloat mTaskbarNavButtonDarkIntensity = new AnimatedFloat(
-            this::updateNavButtonDarkIntensity);
-    private final AnimatedFloat mNavButtonDarkIntensityMultiplier = new AnimatedFloat(
-            this::updateNavButtonDarkIntensity);
+            this::updateNavButtonColor);
+    /** {@code 1} if the Taskbar background color is fully opaque. */
+    private final AnimatedFloat mOnTaskbarBackgroundNavButtonColorOverride = new AnimatedFloat(
+            this::updateNavButtonColor);
+    /** {@code 1} if a Taskbar slide in overlay is visible over Taskbar. */
+    private final AnimatedFloat mSlideInViewVisibleNavButtonColorOverride = new AnimatedFloat(
+            this::updateNavButtonColor);
+    /** Disables the {@link #mOnBackgroundIconColor} override if {@code 0}. */
+    private final AnimatedFloat mOnBackgroundNavButtonColorOverrideMultiplier = new AnimatedFloat(
+            this::updateNavButtonColor);
     private final RotationButtonListener mRotationButtonListener = new RotationButtonListener();
 
     private final Rect mFloatingRotationButtonBounds = new Rect();
@@ -147,10 +182,10 @@
     // Initialized in init.
     private TaskbarControllers mControllers;
     private boolean mIsImeRenderingNavButtons;
-    private View mA11yButton;
+    private ImageView mA11yButton;
     private int mSysuiStateFlags;
-    private View mBackButton;
-    private View mHomeButton;
+    private ImageView mBackButton;
+    private ImageView mHomeButton;
     private MultiValueAlpha mBackButtonAlpha;
     private MultiValueAlpha mHomeButtonAlpha;
     private FloatingRotationButton mFloatingRotationButton;
@@ -158,9 +193,10 @@
     // Variables for moving nav buttons to a separate window above IME
     private boolean mAreNavButtonsInSeparateWindow = false;
     private BaseDragLayer<TaskbarActivityContext> mSeparateWindowParent; // Initialized in init.
-    private final ViewTreeObserverWrapper.OnComputeInsetsListener mSeparateWindowInsetsComputer =
+    private final ViewTreeObserver.OnComputeInternalInsetsListener mSeparateWindowInsetsComputer =
             this::onComputeInsetsForSeparateWindow;
     private final RecentsHitboxExtender mHitboxExtender = new RecentsHitboxExtender();
+    private ImageView mRecentsButton;
 
     public NavbarButtonsViewController(TaskbarActivityContext context, FrameLayout navButtonsView) {
         mContext = context;
@@ -171,6 +207,7 @@
 
         mLightIconColor = context.getColor(R.color.taskbar_nav_icon_light_color);
         mDarkIconColor = context.getColor(R.color.taskbar_nav_icon_dark_color);
+        mOnBackgroundIconColor = Utilities.isDarkTheme(context) ? mLightIconColor : mDarkIconColor;
     }
 
     /**
@@ -178,9 +215,15 @@
      */
     public void init(TaskbarControllers controllers) {
         mControllers = controllers;
-        mNavButtonsView.getLayoutParams().height = mContext.getDeviceProfile().taskbarSize;
-
         boolean isThreeButtonNav = mContext.isThreeButtonNav();
+        DeviceProfile deviceProfile = mContext.getDeviceProfile();
+        Resources resources = mContext.getResources();
+        Point p = !mContext.isUserSetupComplete()
+                ? new Point(0, controllers.taskbarActivityContext.getSetupWindowHeight())
+                : DimensionUtils.getTaskbarPhoneDimensions(deviceProfile, resources,
+                        TaskbarManager.isPhoneMode(deviceProfile));
+        mNavButtonsView.getLayoutParams().height = p.y;
+
         mIsImeRenderingNavButtons =
                 InputMethodService.canImeRenderGesturalNavButtons() && mContext.imeDrawsImeNavBar();
         if (!mIsImeRenderingNavButtons) {
@@ -189,16 +232,21 @@
                     isThreeButtonNav ? mStartContextualContainer : mEndContextualContainer,
                     mControllers.navButtonController, R.id.ime_switcher);
             mPropertyHolders.add(new StatePropertyHolder(imeSwitcherButton,
-                    flags -> ((flags & MASK_IME_SWITCHER_VISIBLE) == MASK_IME_SWITCHER_VISIBLE)
+                    flags -> ((flags & FLAG_SWITCHER_SHOWING) != 0)
                             && ((flags & FLAG_ROTATION_BUTTON_VISIBLE) == 0)));
         }
 
         mPropertyHolders.add(new StatePropertyHolder(
                 mControllers.taskbarViewController.getTaskbarIconAlpha()
-                        .getProperty(ALPHA_INDEX_KEYGUARD),
+                        .get(ALPHA_INDEX_KEYGUARD),
                 flags -> (flags & FLAG_KEYGUARD_VISIBLE) == 0
                         && (flags & FLAG_SCREEN_PINNING_ACTIVE) == 0));
 
+        mPropertyHolders.add(new StatePropertyHolder(
+                mControllers.taskbarViewController.getTaskbarIconAlpha()
+                        .get(ALPHA_INDEX_SMALL_SCREEN),
+                flags -> (flags & FLAG_SMALL_SCREEN) == 0));
+
         mPropertyHolders.add(new StatePropertyHolder(mControllers.taskbarDragLayerController
                 .getKeyguardBgTaskbar(), flags -> (flags & FLAG_KEYGUARD_VISIBLE) == 0));
 
@@ -207,14 +255,17 @@
         boolean isInKidsMode = mContext.isNavBarKidsModeActive();
         boolean alwaysShowButtons = isThreeButtonNav || isInSetup;
 
-        // Make sure to remove nav bar buttons translation when notification shade is expanded or
-        // IME is showing (add separate translation for IME).
-        int flagsToRemoveTranslation = FLAG_NOTIFICATION_SHADE_EXPANDED | FLAG_IME_VISIBLE;
+        // Make sure to remove nav bar buttons translation when any of the following occur:
+        // - Notification shade is expanded
+        // - IME is showing (add separate translation for IME)
+        // - VoiceInteractionWindow (assistant) is showing
+        int flagsToRemoveTranslation = FLAG_NOTIFICATION_SHADE_EXPANDED | FLAG_IME_VISIBLE
+                | FLAG_VOICE_INTERACTION_WINDOW_SHOWING;
         mPropertyHolders.add(new StatePropertyHolder(mNavButtonInAppDisplayProgressForSysui,
                 flags -> (flags & flagsToRemoveTranslation) != 0, AnimatedFloat.VALUE,
                 1, 0));
         // Center nav buttons in new height for IME.
-        float transForIme = (mContext.getDeviceProfile().taskbarSize
+        float transForIme = (mContext.getDeviceProfile().taskbarHeight
                 - mControllers.taskbarInsetsController.getTaskbarHeightForIme()) / 2f;
         // For gesture nav, nav buttons only show for IME anyway so keep them translated down.
         float defaultButtonTransY = alwaysShowButtons ? 0 : transForIme;
@@ -222,96 +273,25 @@
                 flags -> (flags & FLAG_IME_VISIBLE) != 0 && !isInKidsMode, AnimatedFloat.VALUE,
                 transForIme, defaultButtonTransY));
 
+        // Start at 1 because relevant flags are unset at init.
+        mOnBackgroundNavButtonColorOverrideMultiplier.value = 1;
+        mPropertyHolders.add(new StatePropertyHolder(
+                mOnBackgroundNavButtonColorOverrideMultiplier,
+                flags -> (flags & FLAGS_ON_BACKGROUND_COLOR_OVERRIDE_DISABLED) == 0));
+
+        mPropertyHolders.add(new StatePropertyHolder(
+                mSlideInViewVisibleNavButtonColorOverride,
+                flags -> (flags & FLAG_SLIDE_IN_VIEW_VISIBLE) != 0));
+
         if (alwaysShowButtons) {
             initButtons(mNavButtonContainer, mEndContextualContainer,
                     mControllers.navButtonController);
+            updateButtonLayoutSpacing();
+            updateStateForFlag(FLAG_SMALL_SCREEN, isPhoneButtonNavMode(mContext));
 
-            if (isInSetup) {
-                // Since setup wizard only has back button enabled, it looks strange to be
-                // end-aligned, so start-align instead.
-                FrameLayout.LayoutParams navButtonsLayoutParams = (FrameLayout.LayoutParams)
-                        mNavButtonContainer.getLayoutParams();
-                navButtonsLayoutParams.setMarginStart(navButtonsLayoutParams.getMarginEnd());
-                navButtonsLayoutParams.setMarginEnd(0);
-                navButtonsLayoutParams.gravity = Gravity.START;
-                mNavButtonContainer.requestLayout();
-
-                // TODO(b/210906568) Dark intensity is currently not propagated during setup, so set
-                //  it based on dark theme for now.
-                int mode = mContext.getResources().getConfiguration().uiMode
-                        & Configuration.UI_MODE_NIGHT_MASK;
-                boolean isDarkTheme = mode == Configuration.UI_MODE_NIGHT_YES;
-                mTaskbarNavButtonDarkIntensity.updateValue(isDarkTheme ? 0 : 1);
-            } else if (isInKidsMode) {
-                int iconSize = mContext.getResources().getDimensionPixelSize(
-                        R.dimen.taskbar_icon_size_kids);
-                int buttonWidth = mContext.getResources().getDimensionPixelSize(
-                        R.dimen.taskbar_nav_buttons_width_kids);
-                int buttonHeight = mContext.getResources().getDimensionPixelSize(
-                        R.dimen.taskbar_nav_buttons_height_kids);
-                int buttonRadius = mContext.getResources().getDimensionPixelSize(
-                        R.dimen.taskbar_nav_buttons_corner_radius_kids);
-                int paddingleft = (buttonWidth - iconSize) / 2;
-                int paddingRight = paddingleft;
-                int paddingTop = (buttonHeight - iconSize) / 2;
-                int paddingBottom = paddingTop;
-
-                // Update icons
-                ((ImageView) mBackButton).setImageDrawable(
-                        mBackButton.getContext().getDrawable(R.drawable.ic_sysbar_back_kids));
-                ((ImageView) mBackButton).setScaleType(ImageView.ScaleType.FIT_CENTER);
-                mBackButton.setPadding(paddingleft, paddingTop, paddingRight, paddingBottom);
-                ((ImageView) mHomeButton).setImageDrawable(
-                        mHomeButton.getContext().getDrawable(R.drawable.ic_sysbar_home_kids));
-                ((ImageView) mHomeButton).setScaleType(ImageView.ScaleType.FIT_CENTER);
-                mHomeButton.setPadding(paddingleft, paddingTop, paddingRight, paddingBottom);
-
-                // Home button layout
-                LinearLayout.LayoutParams homeLayoutparams = new LinearLayout.LayoutParams(
-                        buttonWidth,
-                        buttonHeight
-                );
-                int homeButtonLeftMargin = mContext.getResources().getDimensionPixelSize(
-                        R.dimen.taskbar_home_button_left_margin_kids);
-                homeLayoutparams.setMargins(homeButtonLeftMargin, 0, 0, 0);
-                mHomeButton.setLayoutParams(homeLayoutparams);
-
-                // Back button layout
-                LinearLayout.LayoutParams backLayoutParams = new LinearLayout.LayoutParams(
-                        buttonWidth,
-                        buttonHeight
-                );
-                int backButtonLeftMargin = mContext.getResources().getDimensionPixelSize(
-                        R.dimen.taskbar_back_button_left_margin_kids);
-                backLayoutParams.setMargins(backButtonLeftMargin, 0, 0, 0);
-                mBackButton.setLayoutParams(backLayoutParams);
-
-                // Button backgrounds
-                int whiteWith10PctAlpha = Color.argb(0.1f, 1, 1, 1);
-                PaintDrawable buttonBackground = new PaintDrawable(whiteWith10PctAlpha);
-                buttonBackground.setCornerRadius(buttonRadius);
-                mHomeButton.setBackground(buttonBackground);
-                mBackButton.setBackground(buttonBackground);
-
-                // Update alignment within taskbar
-                FrameLayout.LayoutParams navButtonsLayoutParams = (FrameLayout.LayoutParams)
-                        mNavButtonContainer.getLayoutParams();
-                navButtonsLayoutParams.setMarginStart(navButtonsLayoutParams.getMarginEnd() / 2);
-                navButtonsLayoutParams.setMarginEnd(navButtonsLayoutParams.getMarginStart());
-                navButtonsLayoutParams.gravity = Gravity.CENTER;
-                mNavButtonContainer.requestLayout();
-
-                mHomeButton.setOnLongClickListener(null);
-            }
-
-            // Animate taskbar background when either..
-            // notification shade expanded AND not on keyguard
-            // back is visible for bouncer
             mPropertyHolders.add(new StatePropertyHolder(
                     mControllers.taskbarDragLayerController.getNavbarBackgroundAlpha(),
-                    flags -> ((flags & FLAG_NOTIFICATION_SHADE_EXPANDED) != 0
-                                && (flags & FLAG_KEYGUARD_VISIBLE) == 0)
-                            || (flags & FLAG_ONLY_BACK_FOR_BOUNCER_VISIBLE) != 0));
+                    flags -> (flags & FLAG_ONLY_BACK_FOR_BOUNCER_VISIBLE) != 0));
 
             // Rotation button
             RotationButton rotationButton = new RotationButtonImpl(
@@ -329,14 +309,15 @@
                     R.dimen.floating_rotation_button_taskbar_left_margin,
                     R.dimen.floating_rotation_button_taskbar_bottom_margin,
                     R.dimen.floating_rotation_button_diameter,
-                    R.dimen.key_button_ripple_max_width);
+                    R.dimen.key_button_ripple_max_width,
+                    R.bool.floating_rotation_button_position_left);
             mControllers.rotationButtonController.setRotationButton(mFloatingRotationButton,
                     mRotationButtonListener);
 
             if (!mIsImeRenderingNavButtons) {
                 View imeDownButton = addButton(R.drawable.ic_sysbar_back, BUTTON_BACK,
                         mStartContextualContainer, mControllers.navButtonController, R.id.back);
-                imeDownButton.setRotation(Utilities.isRtl(mContext.getResources()) ? 90 : -90);
+                imeDownButton.setRotation(Utilities.isRtl(resources) ? 90 : -90);
                 // Only show when IME is visible.
                 mPropertyHolders.add(new StatePropertyHolder(imeDownButton,
                         flags -> (flags & FLAG_IME_VISIBLE) != 0));
@@ -371,7 +352,7 @@
         mBackButtonAlpha = new MultiValueAlpha(mBackButton, NUM_ALPHA_CHANNELS);
         mBackButtonAlpha.setUpdateVisibility(true);
         mPropertyHolders.add(new StatePropertyHolder(
-                mBackButtonAlpha.getProperty(ALPHA_INDEX_KEYGUARD_OR_DISABLE),
+                mBackButtonAlpha.get(ALPHA_INDEX_KEYGUARD_OR_DISABLE),
                 flags -> {
                     // Show only if not disabled, and if not on the keyguard or otherwise only when
                     // the bouncer or a lockscreen app is showing above the keyguard
@@ -381,13 +362,13 @@
                     return (flags & FLAG_DISABLE_BACK) == 0
                             && ((flags & FLAG_KEYGUARD_VISIBLE) == 0 || showingOnKeyguard);
                 }));
-        boolean isRtl = Utilities.isRtl(mContext.getResources());
         mPropertyHolders.add(new StatePropertyHolder(mBackButton,
-                flags -> (flags & FLAG_IME_VISIBLE) != 0 && !mContext.isNavBarKidsModeActive(),
-                View.ROTATION, isRtl ? 90 : -90, 0));
+                flags -> (flags & FLAG_IME_VISIBLE) != 0,
+                ROTATION_DRAWABLE_PERCENT, 1f, 0f));
         // Translate back button to be at end/start of other buttons for keyguard
         int navButtonSize = mContext.getResources().getDimensionPixelSize(
                 R.dimen.taskbar_nav_buttons_size);
+        boolean isRtl = Utilities.isRtl(mContext.getResources());
         mPropertyHolders.add(new StatePropertyHolder(
                 mBackButton, flags -> (flags & FLAG_ONLY_BACK_FOR_BOUNCER_VISIBLE) != 0
                         || (flags & FLAG_KEYGUARD_VISIBLE) != 0,
@@ -399,26 +380,26 @@
         mHomeButtonAlpha = new MultiValueAlpha(mHomeButton, NUM_ALPHA_CHANNELS);
         mHomeButtonAlpha.setUpdateVisibility(true);
         mPropertyHolders.add(
-                new StatePropertyHolder(mHomeButtonAlpha.getProperty(
+                new StatePropertyHolder(mHomeButtonAlpha.get(
                         ALPHA_INDEX_KEYGUARD_OR_DISABLE),
                 flags -> (flags & FLAG_KEYGUARD_VISIBLE) == 0 &&
                         (flags & FLAG_DISABLE_HOME) == 0));
 
         // Recents button
-        View recentsButton = addButton(R.drawable.ic_sysbar_recent, BUTTON_RECENTS,
+        mRecentsButton = addButton(R.drawable.ic_sysbar_recent, BUTTON_RECENTS,
                 navContainer, navButtonController, R.id.recent_apps);
-        mHitboxExtender.init(recentsButton, mNavButtonsView, mContext.getDeviceProfile(),
+        mHitboxExtender.init(mRecentsButton, mNavButtonsView, mContext.getDeviceProfile(),
                 () -> {
                     float[] recentsCoords = new float[2];
-                    getDescendantCoordRelativeToAncestor(recentsButton, mNavButtonsView,
+                    getDescendantCoordRelativeToAncestor(mRecentsButton, mNavButtonsView,
                             recentsCoords, false);
                     return recentsCoords;
                 }, new Handler());
-        recentsButton.setOnClickListener(v -> {
-            navButtonController.onButtonClick(BUTTON_RECENTS);
+        mRecentsButton.setOnClickListener(v -> {
+            navButtonController.onButtonClick(BUTTON_RECENTS, v);
             mHitboxExtender.onRecentsButtonClicked();
         });
-        mPropertyHolders.add(new StatePropertyHolder(recentsButton,
+        mPropertyHolders.add(new StatePropertyHolder(mRecentsButton,
                 flags -> (flags & FLAG_KEYGUARD_VISIBLE) == 0 && (flags & FLAG_DISABLE_RECENTS) == 0
                         && !mContext.isNavBarKidsModeActive()));
 
@@ -443,22 +424,26 @@
                 | SYSUI_STATE_QUICK_SETTINGS_EXPANDED;
         boolean isNotificationShadeExpanded = (sysUiStateFlags & shadeExpandedFlags) != 0;
         boolean isScreenPinningActive = (sysUiStateFlags & SYSUI_STATE_SCREEN_PINNING) != 0;
+        boolean isVoiceInteractionWindowShowing =
+                (sysUiStateFlags & SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING) != 0;
 
         // TODO(b/202218289) we're getting IME as not visible on lockscreen from system
         updateStateForFlag(FLAG_IME_VISIBLE, isImeVisible);
-        updateStateForFlag(FLAG_SWITCHER_SUPPORTED, isImeSwitcherShowing);
+        updateStateForFlag(FLAG_SWITCHER_SHOWING, isImeSwitcherShowing);
         updateStateForFlag(FLAG_A11Y_VISIBLE, a11yVisible);
         updateStateForFlag(FLAG_DISABLE_HOME, isHomeDisabled);
         updateStateForFlag(FLAG_DISABLE_RECENTS, isRecentsDisabled);
         updateStateForFlag(FLAG_DISABLE_BACK, isBackDisabled);
         updateStateForFlag(FLAG_NOTIFICATION_SHADE_EXPANDED, isNotificationShadeExpanded);
         updateStateForFlag(FLAG_SCREEN_PINNING_ACTIVE, isScreenPinningActive);
+        updateStateForFlag(FLAG_VOICE_INTERACTION_WINDOW_SHOWING, isVoiceInteractionWindowShowing);
 
         if (mA11yButton != null) {
             // Only used in 3 button
             boolean a11yLongClickable =
                     (sysUiStateFlags & SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE) != 0;
             mA11yButton.setLongClickable(a11yLongClickable);
+            updateButtonLayoutSpacing();
         }
     }
 
@@ -474,6 +459,13 @@
     }
 
     /**
+     * @return {@code true} if A11y is showing in 3 button nav taskbar
+     */
+    private boolean isContextualButtonShowing() {
+        return mContext.isThreeButtonNav() && (mState & FLAG_A11Y_VISIBLE) != 0;
+    }
+
+    /**
      * Should be called when we need to show back button for bouncer
      */
     public void setBackForBouncer(boolean isBouncerVisible) {
@@ -491,6 +483,12 @@
         applyState();
     }
 
+    /** {@code true} if a slide in view is currently visible over taskbar. */
+    public void setSlideInViewVisible(boolean isSlideInViewVisible) {
+        updateStateForFlag(FLAG_SLIDE_IN_VIEW_VISIBLE, isSlideInViewVisible);
+        applyState();
+    }
+
     /**
      * Returns true if IME bar is visible
      */
@@ -543,6 +541,26 @@
         return mHomeButtonAlpha;
     }
 
+    /**
+     * Sets the AccessibilityDelegate for the home button.
+     */
+    public void setHomeButtonAccessibilityDelegate(AccessibilityDelegate accessibilityDelegate) {
+        if (mHomeButton == null) {
+            return;
+        }
+        mHomeButton.setAccessibilityDelegate(accessibilityDelegate);
+    }
+
+    /**
+     * Sets the AccessibilityDelegate for the back button.
+     */
+    public void setBackButtonAccessibilityDelegate(AccessibilityDelegate accessibilityDelegate) {
+        if (mBackButton == null) {
+            return;
+        }
+        mBackButton.setAccessibilityDelegate(accessibilityDelegate);
+    }
+
     /** Use to set the translationY for the all nav+contextual buttons */
     public AnimatedFloat getTaskbarNavButtonTranslationY() {
         return mTaskbarNavButtonTranslationY;
@@ -558,9 +576,9 @@
         return mTaskbarNavButtonDarkIntensity;
     }
 
-    /** Use to determine whether to use the dark intensity requested by the underlying app */
-    public AnimatedFloat getNavButtonDarkIntensityMultiplier() {
-        return mNavButtonDarkIntensityMultiplier;
+    /** Use to override the nav button color with {@link #mOnBackgroundIconColor}. */
+    public AnimatedFloat getOnTaskbarBackgroundNavButtonColorOverride() {
+        return mOnTaskbarBackgroundNavButtonColorOverride;
     }
 
     /**
@@ -589,7 +607,13 @@
         }
     }
 
-    private void updateNavButtonTranslationY() {
+    /**
+     * Sets the translationY of the nav buttons based on the current device state.
+     */
+    public void updateNavButtonTranslationY() {
+        if (isPhoneButtonNavMode(mContext)) {
+            return;
+        }
         final float normalTranslationY = mTaskbarNavButtonTranslationY.value;
         final float imeAdjustmentTranslationY = mTaskbarNavButtonTranslationYForIme.value;
         TaskbarUIController uiController = mControllers.uiController;
@@ -598,16 +622,26 @@
                         && ((LauncherTaskbarUIController) uiController).shouldUseInAppLayout())
                         ? mTaskbarNavButtonTranslationYForInAppDisplay.value : 0;
 
-        mNavButtonsView.setTranslationY(normalTranslationY
+        mLastSetNavButtonTranslationY = normalTranslationY
                 + imeAdjustmentTranslationY
-                + inAppDisplayAdjustmentTranslationY);
+                + inAppDisplayAdjustmentTranslationY;
+        mNavButtonsView.setTranslationY(mLastSetNavButtonTranslationY);
     }
 
-    private void updateNavButtonDarkIntensity() {
-        float darkIntensity = mTaskbarNavButtonDarkIntensity.value
-                * mNavButtonDarkIntensityMultiplier.value;
-        int iconColor = (int) ArgbEvaluator.getInstance().evaluate(darkIntensity, mLightIconColor,
+    private void updateNavButtonColor() {
+        final ArgbEvaluator argbEvaluator = ArgbEvaluator.getInstance();
+        final int sysUiNavButtonIconColor = (int) argbEvaluator.evaluate(
+                mTaskbarNavButtonDarkIntensity.value,
+                mLightIconColor,
                 mDarkIconColor);
+        // Override the color from framework if nav buttons are over an opaque Taskbar surface.
+        final int iconColor = (int) argbEvaluator.evaluate(
+                mOnBackgroundNavButtonColorOverrideMultiplier.value
+                        * Math.max(
+                                mOnTaskbarBackgroundNavButtonColorOverride.value,
+                                mSlideInViewVisibleNavButtonColorOverride.value),
+                sysUiNavButtonIconColor,
+                mOnBackgroundIconColor);
         for (ImageView button : mAllButtons) {
             button.setImageTintList(ColorStateList.valueOf(iconColor));
         }
@@ -626,9 +660,9 @@
         buttonView.setImageResource(drawableId);
         buttonView.setContentDescription(parent.getContext().getString(
                 navButtonController.getButtonContentDescription(buttonType)));
-        buttonView.setOnClickListener(view -> navButtonController.onButtonClick(buttonType));
+        buttonView.setOnClickListener(view -> navButtonController.onButtonClick(buttonType, view));
         buttonView.setOnLongClickListener(view ->
-                navButtonController.onButtonLongClick(buttonType));
+                navButtonController.onButtonLongClick(buttonType, view));
         return buttonView;
     }
 
@@ -649,6 +683,174 @@
         if (mFloatingRotationButton != null) {
             mFloatingRotationButton.onConfigurationChanged(configChanges);
         }
+        if (!mContext.isUserSetupComplete()) {
+            handleSetupUi();
+        }
+        updateButtonLayoutSpacing();
+    }
+
+    private void handleSetupUi() {
+        // Since setup wizard only has back button enabled, it looks strange to be
+        // end-aligned, so start-align instead.
+        FrameLayout.LayoutParams navButtonsLayoutParams = (FrameLayout.LayoutParams)
+                mNavButtonContainer.getLayoutParams();
+        Resources resources = mContext.getResources();
+        DeviceProfile deviceProfile = mContext.getDeviceProfile();
+        int setupMargin = resources.getDimensionPixelSize(R.dimen.taskbar_contextual_button_margin);
+        navButtonsLayoutParams.setMarginStart(setupMargin);
+        navButtonsLayoutParams.bottomMargin = !deviceProfile.isLandscape
+                ? 0
+                : setupMargin -
+                        (resources.getDimensionPixelSize(R.dimen.taskbar_nav_buttons_size) / 2);
+        navButtonsLayoutParams.setMarginEnd(0);
+        navButtonsLayoutParams.gravity = Gravity.START;
+        mNavButtonsView.getLayoutParams().height =
+                mControllers.taskbarActivityContext.getSetupWindowHeight();
+        mNavButtonContainer.setLayoutParams(navButtonsLayoutParams);
+    }
+
+    /**
+     * Adds the correct spacing to 3 button nav container depending on if device is in kids mode,
+     * setup wizard, or normal 3 button nav.
+     */
+    private void updateButtonLayoutSpacing() {
+        boolean isThreeButtonNav = mContext.isThreeButtonNav();
+
+        DeviceProfile dp = mContext.getDeviceProfile();
+        Resources res = mContext.getResources();
+        boolean isInSetup = !mContext.isUserSetupComplete();
+        // TODO(b/244231596) we're getting the incorrect kidsMode value in small-screen
+        boolean isInKidsMode = mContext.isNavBarKidsModeActive();
+
+        if (TaskbarManager.FLAG_HIDE_NAVBAR_WINDOW) {
+            if (!isThreeButtonNav) {
+                return;
+            }
+
+            NavButtonLayoutter navButtonLayoutter =
+                    NavButtonLayoutFactory.Companion.getUiLayoutter(
+                            dp, mNavButtonsView, res, isInKidsMode, isInSetup, isThreeButtonNav,
+                            TaskbarManager.isPhoneMode(dp));
+            navButtonLayoutter.layoutButtons(dp, isContextualButtonShowing());
+            return;
+        }
+
+        if (isInSetup) {
+            handleSetupUi();
+
+            // Hide back button in SUW if keyboard is showing (IME draws its own back).
+            mPropertyHolders.add(new StatePropertyHolder(
+                    mBackButtonAlpha.get(ALPHA_INDEX_SUW),
+                    flags -> (flags & FLAG_IME_VISIBLE) == 0));
+        } else if (isInKidsMode) {
+            int iconSize = res.getDimensionPixelSize(
+                    R.dimen.taskbar_icon_size_kids);
+            int buttonWidth = res.getDimensionPixelSize(
+                    R.dimen.taskbar_nav_buttons_width_kids);
+            int buttonHeight = res.getDimensionPixelSize(
+                    R.dimen.taskbar_nav_buttons_height_kids);
+            int buttonRadius = res.getDimensionPixelSize(
+                    R.dimen.taskbar_nav_buttons_corner_radius_kids);
+            int paddingleft = (buttonWidth - iconSize) / 2;
+            int paddingRight = paddingleft;
+            int paddingTop = (buttonHeight - iconSize) / 2;
+            int paddingBottom = paddingTop;
+
+            // Update icons
+            final RotateDrawable rotateDrawable = new RotateDrawable();
+            rotateDrawable.setDrawable(mContext.getDrawable(R.drawable.ic_sysbar_back_kids));
+            rotateDrawable.setFromDegrees(0f);
+            rotateDrawable.setToDegrees(-90f);
+            mBackButton.setImageDrawable(rotateDrawable);
+            mBackButton.setScaleType(ImageView.ScaleType.FIT_CENTER);
+            mBackButton.setPadding(paddingleft, paddingTop, paddingRight, paddingBottom);
+
+            mHomeButton.setImageDrawable(
+                    mHomeButton.getContext().getDrawable(R.drawable.ic_sysbar_home_kids));
+            mHomeButton.setScaleType(ImageView.ScaleType.FIT_CENTER);
+            mHomeButton.setPadding(paddingleft, paddingTop, paddingRight, paddingBottom);
+
+            // Home button layout
+            LinearLayout.LayoutParams homeLayoutparams = new LinearLayout.LayoutParams(
+                    buttonWidth,
+                    buttonHeight
+            );
+            int homeButtonLeftMargin = res.getDimensionPixelSize(
+                    R.dimen.taskbar_home_button_left_margin_kids);
+            homeLayoutparams.setMargins(homeButtonLeftMargin, 0, 0, 0);
+            mHomeButton.setLayoutParams(homeLayoutparams);
+
+            // Back button layout
+            LinearLayout.LayoutParams backLayoutParams = new LinearLayout.LayoutParams(
+                    buttonWidth,
+                    buttonHeight
+            );
+            int backButtonLeftMargin = res.getDimensionPixelSize(
+                    R.dimen.taskbar_back_button_left_margin_kids);
+            backLayoutParams.setMargins(backButtonLeftMargin, 0, 0, 0);
+            mBackButton.setLayoutParams(backLayoutParams);
+
+            // Button backgrounds
+            int whiteWith10PctAlpha = Color.argb(0.1f, 1, 1, 1);
+            PaintDrawable buttonBackground = new PaintDrawable(whiteWith10PctAlpha);
+            buttonBackground.setCornerRadius(buttonRadius);
+            mHomeButton.setBackground(buttonBackground);
+            mBackButton.setBackground(buttonBackground);
+
+            // Update alignment within taskbar
+            FrameLayout.LayoutParams navButtonsLayoutParams = (FrameLayout.LayoutParams)
+                    mNavButtonContainer.getLayoutParams();
+            navButtonsLayoutParams.setMarginStart(
+                    navButtonsLayoutParams.getMarginEnd() / 2);
+            navButtonsLayoutParams.setMarginEnd(navButtonsLayoutParams.getMarginStart());
+            navButtonsLayoutParams.gravity = Gravity.CENTER;
+            mNavButtonContainer.requestLayout();
+
+            mHomeButton.setOnLongClickListener(null);
+        } else if (isThreeButtonNav) {
+            final RotateDrawable rotateDrawable = new RotateDrawable();
+            rotateDrawable.setDrawable(mContext.getDrawable(R.drawable.ic_sysbar_back));
+            rotateDrawable.setFromDegrees(0f);
+            rotateDrawable.setToDegrees(Utilities.isRtl(mContext.getResources()) ? 90f : -90f);
+            mBackButton.setImageDrawable(rotateDrawable);
+
+            // Setup normal 3 button
+            // Add spacing after the end of the last nav button
+            FrameLayout.LayoutParams navButtonParams =
+                    (FrameLayout.LayoutParams) mNavButtonContainer.getLayoutParams();
+            navButtonParams.gravity = Gravity.END;
+            navButtonParams.width = FrameLayout.LayoutParams.WRAP_CONTENT;
+            navButtonParams.height = MATCH_PARENT;
+
+            int navMarginEnd = (int) res.getDimension(dp.inv.inlineNavButtonsEndSpacing);
+            int contextualWidth = mEndContextualContainer.getWidth();
+            // If contextual buttons are showing, we check if the end margin is enough for the
+            // contextual button to be showing - if not, move the nav buttons over a smidge
+            if (isContextualButtonShowing() && navMarginEnd < contextualWidth) {
+                // Additional spacing, eat up half of space between last icon and nav button
+                navMarginEnd += res.getDimensionPixelSize(R.dimen.taskbar_hotseat_nav_spacing) / 2;
+            }
+            navButtonParams.setMarginEnd(navMarginEnd);
+            mNavButtonContainer.setLayoutParams(navButtonParams);
+
+            // Add the spaces in between the nav buttons
+            int spaceInBetween = res.getDimensionPixelSize(R.dimen.taskbar_button_space_inbetween);
+            for (int i = 0; i < mNavButtonContainer.getChildCount(); i++) {
+                View navButton = mNavButtonContainer.getChildAt(i);
+                LinearLayout.LayoutParams buttonLayoutParams =
+                        (LinearLayout.LayoutParams) navButton.getLayoutParams();
+                buttonLayoutParams.weight = 0;
+                if (i == 0) {
+                    buttonLayoutParams.setMarginEnd(spaceInBetween / 2);
+                } else if (i == mNavButtonContainer.getChildCount() - 1) {
+                    buttonLayoutParams.setMarginStart(spaceInBetween / 2);
+                } else {
+                    buttonLayoutParams.setMarginStart(spaceInBetween / 2);
+                    buttonLayoutParams.setMarginEnd(spaceInBetween / 2);
+                }
+            }
+        }
+
     }
 
     public void onDestroy() {
@@ -659,6 +861,10 @@
         }
 
         moveNavButtonsBackToTaskbarWindow();
+        mNavButtonContainer.removeAllViews();
+        mEndContextualContainer.removeAllViews();
+        mStartContextualContainer.removeAllViews();
+        mAllButtons.clear();
     }
 
     /**
@@ -677,14 +883,14 @@
         mSeparateWindowParent.addOnAttachStateChangeListener(new OnAttachStateChangeListener() {
             @Override
             public void onViewAttachedToWindow(View view) {
-                ViewTreeObserverWrapper.addOnComputeInsetsListener(
-                        mSeparateWindowParent.getViewTreeObserver(), mSeparateWindowInsetsComputer);
+                mSeparateWindowParent.getViewTreeObserver().addOnComputeInternalInsetsListener(
+                        mSeparateWindowInsetsComputer);
             }
 
             @Override
             public void onViewDetachedFromWindow(View view) {
                 mSeparateWindowParent.removeOnAttachStateChangeListener(this);
-                ViewTreeObserverWrapper.removeOnComputeInsetsListener(
+                mSeparateWindowParent.getViewTreeObserver().removeOnComputeInternalInsetsListener(
                         mSeparateWindowInsetsComputer);
             }
         });
@@ -692,8 +898,8 @@
         mAreNavButtonsInSeparateWindow = true;
         mContext.getDragLayer().removeView(mNavButtonsView);
         mSeparateWindowParent.addView(mNavButtonsView);
-        WindowManager.LayoutParams windowLayoutParams = mContext.createDefaultWindowLayoutParams();
-        windowLayoutParams.setTitle(NAV_BUTTONS_SEPARATE_WINDOW_TITLE);
+        WindowManager.LayoutParams windowLayoutParams = mContext.createDefaultWindowLayoutParams(
+                TYPE_NAVIGATION_BAR_PANEL, NAV_BUTTONS_SEPARATE_WINDOW_TITLE);
         mContext.addWindowView(mSeparateWindowParent, windowLayoutParams);
 
     }
@@ -712,7 +918,7 @@
         mContext.getDragLayer().addView(mNavButtonsView);
     }
 
-    private void onComputeInsetsForSeparateWindow(ViewTreeObserverWrapper.InsetsInfo insetsInfo) {
+    private void onComputeInsetsForSeparateWindow(ViewTreeObserver.InternalInsetsInfo insetsInfo) {
         addVisibleButtonsRegion(mSeparateWindowParent, insetsInfo.touchableRegion);
         insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION);
     }
@@ -721,22 +927,24 @@
     public void dumpLogs(String prefix, PrintWriter pw) {
         pw.println(prefix + "NavbarButtonsViewController:");
 
-        pw.println(String.format("%s\tmState=%s", prefix, getStateString(mState)));
-        pw.println(String.format(
-                "%s\tmLightIconColor=0x%s", prefix, Integer.toHexString(mLightIconColor)));
-        pw.println(String.format(
-                "%s\tmDarkIconColor=0x%s", prefix, Integer.toHexString(mDarkIconColor)));
-        pw.println(String.format(
-                "%s\tmFloatingRotationButtonBounds=%s", prefix, mFloatingRotationButtonBounds));
-        pw.println(String.format(
-                "%s\tmSysuiStateFlags=%s",
-                prefix,
-                QuickStepContract.getSystemUiStateString(mSysuiStateFlags)));
+        pw.println(prefix + "\tmState=" + getStateString(mState));
+        pw.println(prefix + "\tmLightIconColor=" + Integer.toHexString(mLightIconColor));
+        pw.println(prefix + "\tmDarkIconColor=" + Integer.toHexString(mDarkIconColor));
+        pw.println(prefix + "\tmFloatingRotationButtonBounds=" + mFloatingRotationButtonBounds);
+        pw.println(prefix + "\tmSysuiStateFlags=" + QuickStepContract.getSystemUiStateString(
+                mSysuiStateFlags));
+        pw.println(prefix + "\tLast set nav button translationY=" + mLastSetNavButtonTranslationY);
+        pw.println(prefix + "\t\tmTaskbarNavButtonTranslationY="
+                + mTaskbarNavButtonTranslationY.value);
+        pw.println(prefix + "\t\tmTaskbarNavButtonTranslationYForInAppDisplay="
+                + mTaskbarNavButtonTranslationYForInAppDisplay.value);
+        pw.println(prefix + "\t\tmTaskbarNavButtonTranslationYForIme="
+                + mTaskbarNavButtonTranslationYForIme.value);
     }
 
     private static String getStateString(int flags) {
         StringJoiner str = new StringJoiner("|");
-        appendFlag(str, flags, FLAG_SWITCHER_SUPPORTED, "FLAG_SWITCHER_SUPPORTED");
+        appendFlag(str, flags, FLAG_SWITCHER_SHOWING, "FLAG_SWITCHER_SHOWING");
         appendFlag(str, flags, FLAG_IME_VISIBLE, "FLAG_IME_VISIBLE");
         appendFlag(str, flags, FLAG_ROTATION_BUTTON_VISIBLE, "FLAG_ROTATION_BUTTON_VISIBLE");
         appendFlag(str, flags, FLAG_A11Y_VISIBLE, "FLAG_A11Y_VISIBLE");
@@ -750,6 +958,8 @@
         appendFlag(str, flags, FLAG_NOTIFICATION_SHADE_EXPANDED,
                 "FLAG_NOTIFICATION_SHADE_EXPANDED");
         appendFlag(str, flags, FLAG_SCREEN_PINNING_ACTIVE, "FLAG_SCREEN_PINNING_ACTIVE");
+        appendFlag(str, flags, FLAG_VOICE_INTERACTION_WINDOW_SHOWING,
+                "FLAG_VOICE_INTERACTION_WINDOW_SHOWING");
         return str.toString();
     }
 
@@ -866,9 +1076,9 @@
             mAnimator.addListener(new AlphaUpdateListener(view));
         }
 
-        StatePropertyHolder(MultiValueAlpha.AlphaProperty alphaProperty,
+        StatePropertyHolder(MultiProperty alphaProperty,
                 IntPredicate enableCondition) {
-            this(alphaProperty, enableCondition, MultiValueAlpha.VALUE, 1, 0);
+            this(alphaProperty, enableCondition, MULTI_PROPERTY_VALUE, 1, 0);
         }
 
         StatePropertyHolder(AnimatedFloat animatedFloat, IntPredicate enableCondition) {
diff --git a/quickstep/src/com/android/launcher3/taskbar/StashedHandleView.java b/quickstep/src/com/android/launcher3/taskbar/StashedHandleView.java
index 6db5839..83e4571 100644
--- a/quickstep/src/com/android/launcher3/taskbar/StashedHandleView.java
+++ b/quickstep/src/com/android/launcher3/taskbar/StashedHandleView.java
@@ -30,6 +30,10 @@
 import com.android.launcher3.LauncherAnimUtils;
 import com.android.launcher3.R;
 
+/**
+ * View to render a handle that changes color based on the background to ensure contrast. Used for
+ * the taskbar when stashed as well as the bubble bar when stashed.
+ */
 public class StashedHandleView extends View {
 
     private static final long COLOR_CHANGE_DURATION = 120;
@@ -69,6 +73,10 @@
      */
     public void updateSampledRegion(Rect stashedHandleBounds) {
         getLocationOnScreen(mTmpArr);
+        // Translations are temporary due to animations, remove them for the purpose of determining
+        // the final region we want sampled.
+        mTmpArr[0] -= Math.round(getTranslationX());
+        mTmpArr[1] -= Math.round(getTranslationY());
         mSampledRegion.set(stashedHandleBounds);
         mSampledRegion.offset(mTmpArr[0], mTmpArr[1]);
     }
diff --git a/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java b/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java
index b797807..c4255bf 100644
--- a/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java
@@ -15,6 +15,8 @@
  */
 package com.android.launcher3.taskbar;
 
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NAV_BAR_HIDDEN;
+
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ValueAnimator;
@@ -25,13 +27,16 @@
 import android.view.View;
 import android.view.ViewOutlineProvider;
 
+import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.R;
-import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.anim.RevealOutlineAnimation;
 import com.android.launcher3.anim.RoundedRectRevealOutlineProvider;
+import com.android.launcher3.util.DisplayController;
 import com.android.launcher3.util.Executors;
+import com.android.launcher3.util.MultiPropertyFactory;
 import com.android.launcher3.util.MultiValueAlpha;
-import com.android.quickstep.AnimatedFloat;
 import com.android.systemui.shared.navigationbar.RegionSamplingHelper;
 
 import java.io.PrintWriter;
@@ -43,7 +48,9 @@
 
     public static final int ALPHA_INDEX_STASHED = 0;
     public static final int ALPHA_INDEX_HOME_DISABLED = 1;
-    private static final int NUM_ALPHA_CHANNELS = 2;
+    public static final int ALPHA_INDEX_ASSISTANT_INVOKED = 2;
+    public static final int ALPHA_INDEX_HIDDEN_WHILE_DREAMING = 3;
+    private static final int NUM_ALPHA_CHANNELS = 4;
 
     /**
      * The SharedPreferences key for whether the stashed handle region is dark.
@@ -54,15 +61,16 @@
     private final TaskbarActivityContext mActivity;
     private final SharedPreferences mPrefs;
     private final StashedHandleView mStashedHandleView;
-    private final int mStashedHandleWidth;
+    private int mStashedHandleWidth;
     private final int mStashedHandleHeight;
-    private final RegionSamplingHelper mRegionSamplingHelper;
+    private RegionSamplingHelper mRegionSamplingHelper;
     private final MultiValueAlpha mTaskbarStashedHandleAlpha;
     private final AnimatedFloat mTaskbarStashedHandleHintScale = new AnimatedFloat(
             this::updateStashedHandleHintScale);
 
     // Initialized in init.
     private TaskbarControllers mControllers;
+    private int mTaskbarSize;
 
     // The bounds we want to clip to in the settled state when showing the stashed handle.
     private final Rect mStashedHandleBounds = new Rect();
@@ -73,10 +81,17 @@
     private float mStartProgressForNextRevealAnim;
     private boolean mWasLastRevealAnimReversed;
 
+    // States that affect whether region sampling is enabled or not
+    private boolean mIsStashed;
+    private boolean mTaskbarHidden;
+
+    private float mTranslationYForSwipe;
+    private float mTranslationYForStash;
+
     public StashedHandleViewController(TaskbarActivityContext activity,
             StashedHandleView stashedHandleView) {
         mActivity = activity;
-        mPrefs = Utilities.getPrefs(mActivity);
+        mPrefs = LauncherPrefs.getPrefs(mActivity);
         mStashedHandleView = stashedHandleView;
         mTaskbarStashedHandleAlpha = new MultiValueAlpha(mStashedHandleView, NUM_ALPHA_CHANNELS);
         mTaskbarStashedHandleAlpha.setUpdateVisibility(true);
@@ -84,30 +99,28 @@
                 mPrefs.getBoolean(SHARED_PREFS_STASHED_HANDLE_REGION_DARK_KEY, false),
                 false /* animate */);
         final Resources resources = mActivity.getResources();
-        mStashedHandleWidth = resources.getDimensionPixelSize(R.dimen.taskbar_stashed_handle_width);
         mStashedHandleHeight = resources.getDimensionPixelSize(
                 R.dimen.taskbar_stashed_handle_height);
-        mRegionSamplingHelper = new RegionSamplingHelper(mStashedHandleView,
-                new RegionSamplingHelper.SamplingCallback() {
-                    @Override
-                    public void onRegionDarknessChanged(boolean isRegionDark) {
-                        mStashedHandleView.updateHandleColor(isRegionDark, true /* animate */);
-                        mPrefs.edit().putBoolean(SHARED_PREFS_STASHED_HANDLE_REGION_DARK_KEY,
-                                isRegionDark).apply();
-                    }
-
-                    @Override
-                    public Rect getSampledRegion(View sampledView) {
-                        return mStashedHandleView.getSampledRegion();
-                    }
-                }, Executors.UI_HELPER_EXECUTOR);
     }
 
     public void init(TaskbarControllers controllers) {
         mControllers = controllers;
-        mStashedHandleView.getLayoutParams().height = mActivity.getDeviceProfile().taskbarSize;
+        DeviceProfile deviceProfile = mActivity.getDeviceProfile();
+        Resources resources = mActivity.getResources();
+        if (isPhoneGestureNavMode(mActivity.getDeviceProfile())) {
+            mTaskbarSize = resources.getDimensionPixelSize(R.dimen.taskbar_size);
+            mStashedHandleWidth =
+                    resources.getDimensionPixelSize(R.dimen.taskbar_stashed_small_screen);
+        } else {
+            mTaskbarSize = deviceProfile.taskbarHeight;
+            mStashedHandleWidth = resources
+                    .getDimensionPixelSize(R.dimen.taskbar_stashed_handle_width);
+        }
+        int taskbarBottomMargin = deviceProfile.taskbarBottomMargin;
+        mStashedHandleView.getLayoutParams().height = mTaskbarSize + taskbarBottomMargin;
 
-        mTaskbarStashedHandleAlpha.getProperty(ALPHA_INDEX_STASHED).setValue(0);
+        mTaskbarStashedHandleAlpha.get(ALPHA_INDEX_STASHED).setValue(
+                isPhoneGestureNavMode(deviceProfile) ? 1 : 0);
         mTaskbarStashedHandleHintScale.updateValue(1f);
 
         final int stashedTaskbarHeight = mControllers.taskbarStashController.getStashedHeight();
@@ -134,13 +147,48 @@
             view.setPivotX(stashedCenterX);
             view.setPivotY(stashedCenterY);
         });
+        initRegionSampler();
+        if (isPhoneGestureNavMode(deviceProfile)) {
+            onIsStashedChanged(true);
+        }
     }
 
+    /**
+     * Returns the stashed handle bounds.
+     * @param out The destination rect.
+     */
+    public void getStashedHandleBounds(Rect out) {
+        out.set(mStashedHandleBounds);
+    }
+
+    private void initRegionSampler() {
+        mRegionSamplingHelper = new RegionSamplingHelper(mStashedHandleView,
+                new RegionSamplingHelper.SamplingCallback() {
+                    @Override
+                    public void onRegionDarknessChanged(boolean isRegionDark) {
+                        mStashedHandleView.updateHandleColor(isRegionDark, true /* animate */);
+                        mPrefs.edit().putBoolean(SHARED_PREFS_STASHED_HANDLE_REGION_DARK_KEY,
+                                isRegionDark).apply();
+                    }
+
+                    @Override
+                    public Rect getSampledRegion(View sampledView) {
+                        return mStashedHandleView.getSampledRegion();
+                    }
+                }, Executors.UI_HELPER_EXECUTOR);
+    }
+
+
     public void onDestroy() {
         mRegionSamplingHelper.stopAndDestroy();
+        mRegionSamplingHelper = null;
     }
 
-    public MultiValueAlpha getStashedHandleAlpha() {
+    private boolean isPhoneGestureNavMode(DeviceProfile deviceProfile) {
+        return TaskbarManager.isPhoneMode(deviceProfile) && !mActivity.isThreeButtonNav();
+    }
+
+    public MultiPropertyFactory<View> getStashedHandleAlpha() {
         return mTaskbarStashedHandleAlpha;
     }
 
@@ -154,9 +202,20 @@
      * morphs into the size of where the taskbar icons will be.
      */
     public Animator createRevealAnimToIsStashed(boolean isStashed) {
+        Rect visualBounds = new Rect(mControllers.taskbarViewController.getIconLayoutBounds());
+        float startRadius = mStashedHandleRadius;
+
+        if (DisplayController.isTransientTaskbar(mActivity)) {
+            // Account for the full visual height of the transient taskbar.
+            int heightDiff = (mTaskbarSize - visualBounds.height()) / 2;
+            visualBounds.top -= heightDiff;
+            visualBounds.bottom += heightDiff;
+
+            startRadius = visualBounds.height() / 2f;
+        }
+
         final RevealOutlineAnimation handleRevealProvider = new RoundedRectRevealOutlineProvider(
-                mStashedHandleRadius, mStashedHandleRadius,
-                mControllers.taskbarViewController.getIconLayoutBounds(), mStashedHandleBounds);
+                startRadius, mStashedHandleRadius, visualBounds, mStashedHandleBounds);
 
         boolean isReversed = !isStashed;
         boolean changingDirection = mWasLastRevealAnimReversed != isReversed;
@@ -178,7 +237,8 @@
 
     /** Called when taskbar is stashed or unstashed. */
     public void onIsStashedChanged(boolean isStashed) {
-        mRegionSamplingHelper.setWindowVisible(isStashed);
+        mIsStashed = isStashed;
+        updateRegionSamplingWindowVisibility();
         if (isStashed) {
             mStashedHandleView.updateSampledRegion(mStashedHandleBounds);
             mRegionSamplingHelper.start(mStashedHandleView.getSampledRegion());
@@ -193,13 +253,42 @@
     }
 
     /**
+     * Sets the translation of the stashed handle during the swipe up gesture.
+     */
+    protected void setTranslationYForSwipe(float transY) {
+        mTranslationYForSwipe = transY;
+        updateTranslationY();
+    }
+
+    /**
+     * Sets the translation of the stashed handle during the spring on stash animation.
+     */
+    protected void setTranslationYForStash(float transY) {
+        mTranslationYForStash = transY;
+        updateTranslationY();
+    }
+
+    private void updateTranslationY() {
+        mStashedHandleView.setTranslationY(mTranslationYForSwipe + mTranslationYForStash);
+    }
+
+    /**
      * Should be called when the home button is disabled, so we can hide this handle as well.
      */
     public void setIsHomeButtonDisabled(boolean homeDisabled) {
-        mTaskbarStashedHandleAlpha.getProperty(ALPHA_INDEX_HOME_DISABLED).setValue(
+        mTaskbarStashedHandleAlpha.get(ALPHA_INDEX_HOME_DISABLED).setValue(
                 homeDisabled ? 0 : 1);
     }
 
+    public void updateStateForSysuiFlags(int systemUiStateFlags) {
+        mTaskbarHidden = (systemUiStateFlags & SYSUI_STATE_NAV_BAR_HIDDEN) != 0;
+        updateRegionSamplingWindowVisibility();
+    }
+
+    private void updateRegionSamplingWindowVisibility() {
+        mRegionSamplingHelper.setWindowVisible(mIsStashed && !mTaskbarHidden);
+    }
+
     public boolean isStashedHandleVisible() {
         return mStashedHandleView.getVisibility() == View.VISIBLE;
     }
@@ -208,10 +297,9 @@
     public void dumpLogs(String prefix, PrintWriter pw) {
         pw.println(prefix + "StashedHandleViewController:");
 
-        pw.println(String.format(
-                "%s\tisStashedHandleVisible=%b", prefix, isStashedHandleVisible()));
-        pw.println(String.format("%s\tmStashedHandleWidth=%dpx", prefix, mStashedHandleWidth));
-        pw.println(String.format("%s\tmStashedHandleHeight=%dpx", prefix, mStashedHandleHeight));
+        pw.println(prefix + "\tisStashedHandleVisible=" + isStashedHandleVisible());
+        pw.println(prefix + "\tmStashedHandleWidth=" + mStashedHandleWidth);
+        pw.println(prefix + "\tmStashedHandleHeight=" + mStashedHandleHeight);
         mRegionSamplingHelper.dump(prefix, pw);
     }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
index dc2e3b6..a1c9f05 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
@@ -16,17 +16,24 @@
 package com.android.launcher3.taskbar;
 
 import static android.content.pm.PackageManager.FEATURE_PC;
+import static android.os.Trace.TRACE_TAG_APP;
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
 import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
 import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
 import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL;
+import static android.window.SplashScreen.SPLASH_SCREEN_STYLE_UNDEFINED;
 
 import static com.android.launcher3.AbstractFloatingView.TYPE_ALL;
 import static com.android.launcher3.AbstractFloatingView.TYPE_REBIND_SAFE;
-import static com.android.launcher3.ResourceUtils.getBoolByName;
+import static com.android.launcher3.AbstractFloatingView.TYPE_TASKBAR_OVERLAY_PROXY;
+import static com.android.launcher3.Utilities.isRunningInTestHarness;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_FOLDER_OPEN;
-import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED;
-import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_QUICK_SETTINGS_EXPANDED;
+import static com.android.launcher3.taskbar.TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_DRAGGING;
+import static com.android.launcher3.taskbar.TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_FULLSCREEN;
+import static com.android.launcher3.taskbar.TaskbarManager.FLAG_HIDE_NAVBAR_WINDOW;
+import static com.android.launcher3.testing.shared.ResourceUtils.getBoolByName;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING;
 
 import android.animation.AnimatorSet;
 import android.animation.ValueAnimator;
@@ -37,10 +44,13 @@
 import android.content.pm.ActivityInfo.Config;
 import android.content.pm.LauncherApps;
 import android.content.res.Resources;
+import android.graphics.Color;
 import android.graphics.PixelFormat;
 import android.graphics.Rect;
+import android.hardware.display.DisplayManager;
 import android.os.Process;
 import android.os.SystemProperties;
+import android.os.Trace;
 import android.provider.Settings;
 import android.util.Log;
 import android.view.Display;
@@ -48,7 +58,6 @@
 import android.view.RoundedCorner;
 import android.view.View;
 import android.view.WindowManager;
-import android.view.WindowManagerGlobal;
 import android.widget.FrameLayout;
 import android.widget.Toast;
 
@@ -72,24 +81,44 @@
 import com.android.launcher3.model.data.FolderInfo;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
+import com.android.launcher3.popup.PopupContainerWithArrow;
 import com.android.launcher3.popup.PopupDataProvider;
+import com.android.launcher3.taskbar.TaskbarAutohideSuspendController.AutohideSuspendFlag;
+import com.android.launcher3.taskbar.TaskbarTranslationController.TransitionCallback;
 import com.android.launcher3.taskbar.allapps.TaskbarAllAppsController;
+import com.android.launcher3.taskbar.bubbles.BubbleBarController;
+import com.android.launcher3.taskbar.bubbles.BubbleBarView;
+import com.android.launcher3.taskbar.bubbles.BubbleBarViewController;
+import com.android.launcher3.taskbar.bubbles.BubbleControllers;
+import com.android.launcher3.taskbar.bubbles.BubbleStashController;
+import com.android.launcher3.taskbar.bubbles.BubbleStashedHandleViewController;
+import com.android.launcher3.taskbar.overlay.TaskbarOverlayController;
 import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.touch.ItemClickHandler;
+import com.android.launcher3.touch.ItemClickHandler.ItemClickProxy;
+import com.android.launcher3.util.ActivityOptionsWrapper;
+import com.android.launcher3.util.ComponentKey;
 import com.android.launcher3.util.DisplayController;
-import com.android.launcher3.util.DisplayController.NavigationMode;
+import com.android.launcher3.util.Executors;
+import com.android.launcher3.util.NavigationMode;
 import com.android.launcher3.util.PackageManagerHelper;
+import com.android.launcher3.util.RunnableList;
 import com.android.launcher3.util.SettingsCache;
+import com.android.launcher3.util.SplitConfigurationOptions.SplitSelectSource;
 import com.android.launcher3.util.TraceHelper;
 import com.android.launcher3.util.ViewCache;
 import com.android.launcher3.views.ActivityContext;
+import com.android.quickstep.views.RecentsView;
+import com.android.quickstep.views.TaskView;
 import com.android.systemui.shared.recents.model.Task;
 import com.android.systemui.shared.rotation.RotationButtonController;
 import com.android.systemui.shared.system.ActivityManagerWrapper;
+import com.android.systemui.unfold.updates.RotationChangeProvider;
 import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider;
 
 import java.io.PrintWriter;
+import java.util.Optional;
 
 /**
  * The {@link ActivityContext} with which we inflate Taskbar-related Views. This allows UI elements
@@ -117,7 +146,7 @@
     // The size we should return to when we call setTaskbarWindowFullscreen(false)
     private int mLastRequestedNonFullscreenHeight;
 
-    private final NavigationMode mNavMode;
+    private NavigationMode mNavMode;
     private final boolean mImeDrawsImeNavBar;
     private final ViewCache mViewCache = new ViewCache();
 
@@ -125,33 +154,40 @@
     private final boolean mIsUserSetupComplete;
     private final boolean mIsNavBarForceVisible;
     private final boolean mIsNavBarKidsMode;
+
     private boolean mIsDestroyed = false;
     // The flag to know if the window is excluded from magnification region computation.
     private boolean mIsExcludeFromMagnificationRegion = false;
     private boolean mBindingItems = false;
+    private boolean mAddedWindow = false;
+
+    // The bounds of the taskbar items relative to TaskbarDragLayer
+    private final Rect mTransientTaskbarBounds = new Rect();
 
     private final TaskbarShortcutMenuAccessibilityDelegate mAccessibilityDelegate;
 
-    public TaskbarActivityContext(Context windowContext, DeviceProfile dp,
+    public TaskbarActivityContext(Context windowContext, DeviceProfile launcherDp,
             TaskbarNavButtonController buttonController, ScopedUnfoldTransitionProgressProvider
             unfoldTransitionProgressProvider) {
         super(windowContext);
-        mDeviceProfile = dp.copy(this);
-
         final Resources resources = getResources();
 
+        matchDeviceProfile(launcherDp, getResources());
+
         mNavMode = DisplayController.getNavigationMode(windowContext);
         mImeDrawsImeNavBar = getBoolByName(IME_DRAWS_IME_NAV_BAR_RES_NAME, resources, false);
         mIsSafeModeEnabled = TraceHelper.allowIpcs("isSafeMode",
                 () -> getPackageManager().isSafeMode());
-        mIsUserSetupComplete = SettingsCache.INSTANCE.get(this).getValue(
+        SettingsCache settingsCache = SettingsCache.INSTANCE.get(this);
+        mIsUserSetupComplete = settingsCache.getValue(
                 Settings.Secure.getUriFor(Settings.Secure.USER_SETUP_COMPLETE), 0);
-        mIsNavBarForceVisible = SettingsCache.INSTANCE.get(this).getValue(
-                Settings.Secure.getUriFor(Settings.Secure.NAV_BAR_KIDS_MODE), 0);
-        mIsNavBarKidsMode = SettingsCache.INSTANCE.get(this).getValue(
+        mIsNavBarForceVisible = settingsCache.getValue(
                 Settings.Secure.getUriFor(Settings.Secure.NAV_BAR_KIDS_MODE), 0);
 
-        updateIconSize(resources);
+        // TODO(b/244231596) For shared Taskbar window, update this value in init() instead so
+        //  to get correct value when recreating the taskbar
+        mIsNavBarKidsMode = settingsCache.getValue(
+                Settings.Secure.getUriFor(Settings.Secure.NAV_BAR_KIDS_MODE), 0);
 
         // Get display and corners first, as views might use them in constructor.
         Display display = windowContext.getDisplay();
@@ -163,22 +199,39 @@
         mRightCorner = display.getRoundedCorner(RoundedCorner.POSITION_BOTTOM_RIGHT);
 
         // Inflate views.
-        mDragLayer = (TaskbarDragLayer) mLayoutInflater.inflate(
-                R.layout.taskbar, null, false);
+        boolean phoneMode = TaskbarManager.isPhoneMode(mDeviceProfile);
+        int taskbarLayout = DisplayController.isTransientTaskbar(this) && !phoneMode
+                ? R.layout.transient_taskbar
+                : R.layout.taskbar;
+        mDragLayer = (TaskbarDragLayer) mLayoutInflater.inflate(taskbarLayout, null, false);
         TaskbarView taskbarView = mDragLayer.findViewById(R.id.taskbar_view);
         TaskbarScrimView taskbarScrimView = mDragLayer.findViewById(R.id.taskbar_scrim);
         FrameLayout navButtonsView = mDragLayer.findViewById(R.id.navbuttons_view);
         StashedHandleView stashedHandleView = mDragLayer.findViewById(R.id.stashed_handle);
+        BubbleBarView bubbleBarView = mDragLayer.findViewById(R.id.taskbar_bubbles);
+        StashedHandleView bubbleHandleView = mDragLayer.findViewById(R.id.stashed_bubble_handle);
 
         mAccessibilityDelegate = new TaskbarShortcutMenuAccessibilityDelegate(this);
 
+        final boolean isDesktopMode = getPackageManager().hasSystemFeature(FEATURE_PC);
+
+        // If Bubble bar is present, TaskbarControllers depends on it so build it first.
+        Optional<BubbleControllers> bubbleControllersOptional = Optional.empty();
+        if (BubbleBarController.BUBBLE_BAR_ENABLED) {
+            bubbleControllersOptional = Optional.of(new BubbleControllers(
+                    new BubbleBarController(this, bubbleBarView),
+                    new BubbleBarViewController(this, bubbleBarView),
+                    new BubbleStashController(this),
+                    new BubbleStashedHandleViewController(this, bubbleHandleView)));
+        }
+
         // Construct controllers.
         mControllers = new TaskbarControllers(this,
                 new TaskbarDragController(this),
                 buttonController,
-                getPackageManager().hasSystemFeature(FEATURE_PC)
-                        ? new DesktopNavbarButtonsViewController(this, navButtonsView) :
-                        new NavbarButtonsViewController(this, navButtonsView),
+                isDesktopMode
+                        ? new DesktopNavbarButtonsViewController(this, navButtonsView)
+                        : new NavbarButtonsViewController(this, navButtonsView),
                 new RotationButtonController(this,
                         c.getColor(R.color.taskbar_nav_icon_light_color),
                         c.getColor(R.color.taskbar_nav_icon_dark_color),
@@ -191,27 +244,64 @@
                 new TaskbarViewController(this, taskbarView),
                 new TaskbarScrimViewController(this, taskbarScrimView),
                 new TaskbarUnfoldAnimationController(this, unfoldTransitionProgressProvider,
-                        mWindowManager, WindowManagerGlobal.getWindowManagerService()),
+                    mWindowManager,
+                    new RotationChangeProvider(c.getSystemService(DisplayManager.class), this,
+                        getMainThreadHandler())),
                 new TaskbarKeyguardController(this),
                 new StashedHandleViewController(this, stashedHandleView),
                 new TaskbarStashController(this),
-                new TaskbarEduController(this),
                 new TaskbarAutohideSuspendController(this),
                 new TaskbarPopupController(this),
                 new TaskbarForceVisibleImmersiveController(this),
-                new TaskbarAllAppsController(this, dp),
-                new TaskbarInsetsController(this));
+                new TaskbarOverlayController(this, launcherDp),
+                new TaskbarAllAppsController(),
+                new TaskbarInsetsController(this),
+                new VoiceInteractionWindowController(this),
+                new TaskbarTranslationController(this),
+                new TaskbarSpringOnStashController(this),
+                isDesktopMode
+                        ? new DesktopTaskbarRecentAppsController(this)
+                        : TaskbarRecentAppsController.DEFAULT,
+                new TaskbarEduTooltipController(this),
+                new KeyboardQuickSwitchController(),
+                new TaskbarDividerPopupController(this),
+                bubbleControllersOptional);
     }
 
     public void init(@NonNull TaskbarSharedState sharedState) {
         mLastRequestedNonFullscreenHeight = getDefaultTaskbarWindowHeight();
-        mWindowLayoutParams = createDefaultWindowLayoutParams();
+        mWindowLayoutParams =
+                createDefaultWindowLayoutParams(TYPE_NAVIGATION_BAR_PANEL, WINDOW_TITLE);
 
         // Initialize controllers after all are constructed.
         mControllers.init(sharedState);
         updateSysuiStateFlags(sharedState.sysuiStateFlags, true /* fromInit */);
+        disableNavBarElements(sharedState.disableNavBarDisplayId, sharedState.disableNavBarState1,
+                sharedState.disableNavBarState2, false /* animate */);
+        onSystemBarAttributesChanged(sharedState.systemBarAttrsDisplayId,
+                sharedState.systemBarAttrsBehavior);
+        onNavButtonsDarkIntensityChanged(sharedState.navButtonsDarkIntensity);
 
-        mWindowManager.addView(mDragLayer, mWindowLayoutParams);
+        if (FLAG_HIDE_NAVBAR_WINDOW) {
+            // W/ the flag not set this entire class gets re-created, which resets the value of
+            // mIsDestroyed. We re-use the class for small-screen, so we explicitly have to mark
+            // this class as non-destroyed
+            mIsDestroyed = false;
+        }
+
+        if (!mAddedWindow) {
+            mWindowManager.addView(mDragLayer, mWindowLayoutParams);
+            mAddedWindow = true;
+        } else {
+            mWindowManager.updateViewLayout(mDragLayer, mWindowLayoutParams);
+        }
+    }
+
+    /**
+     * Show Taskbar upon receiving broadcast
+     */
+    public void showTaskbarFromBroadcast() {
+        mControllers.taskbarStashController.showTaskbarFromBroadcast();
     }
 
     @Override
@@ -220,10 +310,10 @@
     }
 
     /** Updates {@link DeviceProfile} instances for any Taskbar windows. */
-    public void updateDeviceProfile(DeviceProfile dp) {
-        mControllers.taskbarAllAppsController.updateDeviceProfile(dp);
-        mDeviceProfile = dp.copy(this);
-        updateIconSize(getResources());
+    public void updateDeviceProfile(DeviceProfile launcherDp, NavigationMode navMode) {
+        mNavMode = navMode;
+        mControllers.taskbarOverlayController.updateLauncherDeviceProfile(launcherDp);
+        matchDeviceProfile(launcherDp, getResources());
 
         AbstractFloatingView.closeAllOpenViewsExcept(this, false, TYPE_REBIND_SAFE);
         // Reapply fullscreen to take potential new screen size into account.
@@ -232,43 +322,92 @@
         dispatchDeviceProfileChanged();
     }
 
-    private void updateIconSize(Resources resources) {
-        float taskbarIconSize = resources.getDimension(R.dimen.taskbar_icon_size);
-        mDeviceProfile.updateIconSize(1, resources);
-        float iconScale = taskbarIconSize / mDeviceProfile.iconSizePx;
-        mDeviceProfile.updateIconSize(iconScale, resources);
+    @Override
+    public void dispatchDeviceProfileChanged() {
+        super.dispatchDeviceProfileChanged();
+        Trace.instantForTrack(TRACE_TAG_APP, "TaskbarActivityContext#DeviceProfileChanged",
+                getDeviceProfile().toSmallString());
     }
 
-    @VisibleForTesting
+    /**
+     * Copy the original DeviceProfile, match the number of hotseat icons and qsb width and update
+     * the icon size
+     */
+    private void matchDeviceProfile(DeviceProfile originDeviceProfile, Resources resources) {
+        mDeviceProfile = originDeviceProfile.toBuilder(this)
+                .withDimensionsOverride(deviceProfile -> {
+                    // Taskbar should match the number of icons of hotseat
+                    deviceProfile.numShownHotseatIcons = originDeviceProfile.numShownHotseatIcons;
+                    // Same QSB width to have a smooth animation
+                    deviceProfile.hotseatQsbWidth = originDeviceProfile.hotseatQsbWidth;
+
+                    // Update icon size
+                    deviceProfile.iconSizePx = deviceProfile.taskbarIconSize;
+                    deviceProfile.updateIconSize(1f, resources);
+                }).build();
+    }
+
+    /**
+     * Returns the View bounds of transient taskbar.
+     */
+    public Rect getTransientTaskbarBounds() {
+        return mTransientTaskbarBounds;
+    }
+
     @Override
     public StatsLogManager getStatsLogManager() {
         // Used to mock, can't mock a default interface method directly
         return super.getStatsLogManager();
     }
 
-    /** Creates LayoutParams for adding a view directly to WindowManager as a new window */
-    public WindowManager.LayoutParams createDefaultWindowLayoutParams() {
+    /**
+     * Creates LayoutParams for adding a view directly to WindowManager as a new window.
+     * @param type The window type to pass to the created WindowManager.LayoutParams.
+     * @param title The window title to pass to the created WindowManager.LayoutParams.
+     */
+    public WindowManager.LayoutParams createDefaultWindowLayoutParams(int type, String title) {
+        DeviceProfile deviceProfile = getDeviceProfile();
+        // Taskbar is on the logical bottom of the screen
+        boolean isVerticalBarLayout = TaskbarManager.isPhoneButtonNavMode(this) &&
+                deviceProfile.isLandscape;
+
+        int windowFlags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
+                | WindowManager.LayoutParams.FLAG_SLIPPERY
+                | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH;
+        if (DisplayController.isTransientTaskbar(this) && !isRunningInTestHarness()) {
+            windowFlags |= WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
+                    | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;
+        }
         WindowManager.LayoutParams windowLayoutParams = new WindowManager.LayoutParams(
-                MATCH_PARENT,
-                mLastRequestedNonFullscreenHeight,
-                TYPE_NAVIGATION_BAR_PANEL,
-                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
-                        | WindowManager.LayoutParams.FLAG_SLIPPERY,
+                isVerticalBarLayout ? mLastRequestedNonFullscreenHeight : MATCH_PARENT,
+                isVerticalBarLayout ? MATCH_PARENT : mLastRequestedNonFullscreenHeight,
+                type,
+                windowFlags,
                 PixelFormat.TRANSLUCENT);
-        windowLayoutParams.setTitle(WINDOW_TITLE);
+        windowLayoutParams.setTitle(title);
         windowLayoutParams.packageName = getPackageName();
-        windowLayoutParams.gravity = Gravity.BOTTOM;
+        windowLayoutParams.gravity = !isVerticalBarLayout ?
+                Gravity.BOTTOM :
+                Gravity.END; // TODO(b/230394142): seascape
+
         windowLayoutParams.setFitInsetsTypes(0);
         windowLayoutParams.receiveInsetsIgnoringZOrder = true;
         windowLayoutParams.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING;
         windowLayoutParams.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
         windowLayoutParams.privateFlags =
                 WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION;
+        windowLayoutParams.accessibilityTitle = getString(
+                TaskbarManager.isPhoneMode(mDeviceProfile)
+                        ? R.string.taskbar_phone_a11y_title
+                        : R.string.taskbar_a11y_title);
         return windowLayoutParams;
     }
 
     public void onConfigurationChanged(@Config int configChanges) {
         mControllers.onConfigurationChanged(configChanges);
+        if (!mIsUserSetupComplete) {
+            setTaskbarWindowHeight(getSetupWindowHeight());
+        }
     }
 
     public boolean isThreeButtonNav() {
@@ -330,11 +469,16 @@
         }
         LauncherAtom.ContainerInfo oldContainer = itemInfoBuilder.getContainerInfo();
 
+        LauncherAtom.TaskBarContainer.Builder taskbarBuilder =
+                LauncherAtom.TaskBarContainer.newBuilder();
+        if (mControllers.uiController.isInOverview()) {
+            taskbarBuilder.setTaskSwitcherContainer(
+                    LauncherAtom.TaskSwitcherContainer.newBuilder());
+        }
+
         if (oldContainer.hasPredictedHotseatContainer()) {
             LauncherAtom.PredictedHotseatContainer predictedHotseat =
                     oldContainer.getPredictedHotseatContainer();
-            LauncherAtom.TaskBarContainer.Builder taskbarBuilder =
-                    LauncherAtom.TaskBarContainer.newBuilder();
 
             if (predictedHotseat.hasIndex()) {
                 taskbarBuilder.setIndex(predictedHotseat.getIndex());
@@ -347,8 +491,6 @@
                     .setTaskBarContainer(taskbarBuilder));
         } else if (oldContainer.hasHotseat()) {
             LauncherAtom.HotseatContainer hotseat = oldContainer.getHotseat();
-            LauncherAtom.TaskBarContainer.Builder taskbarBuilder =
-                    LauncherAtom.TaskBarContainer.newBuilder();
 
             if (hotseat.hasIndex()) {
                 taskbarBuilder.setIndex(hotseat.getIndex());
@@ -360,8 +502,6 @@
             LauncherAtom.FolderContainer.Builder folderBuilder = oldContainer.getFolder()
                     .toBuilder();
             LauncherAtom.HotseatContainer hotseat = folderBuilder.getHotseat();
-            LauncherAtom.TaskBarContainer.Builder taskbarBuilder =
-                    LauncherAtom.TaskBarContainer.newBuilder();
 
             if (hotseat.hasIndex()) {
                 taskbarBuilder.setIndex(hotseat.getIndex());
@@ -374,11 +514,11 @@
         } else if (oldContainer.hasAllAppsContainer()) {
             itemInfoBuilder.setContainerInfo(LauncherAtom.ContainerInfo.newBuilder()
                     .setAllAppsContainer(oldContainer.getAllAppsContainer().toBuilder()
-                            .setTaskbarContainer(LauncherAtom.TaskBarContainer.newBuilder())));
+                            .setTaskbarContainer(taskbarBuilder)));
         } else if (oldContainer.hasPredictionContainer()) {
             itemInfoBuilder.setContainerInfo(LauncherAtom.ContainerInfo.newBuilder()
                     .setPredictionContainer(oldContainer.getPredictionContainer().toBuilder()
-                            .setTaskbarContainer(LauncherAtom.TaskBarContainer.newBuilder())));
+                            .setTaskbarContainer(taskbarBuilder)));
         }
     }
 
@@ -414,7 +554,7 @@
 
     @Override
     public void onDragEnd() {
-        maybeSetTaskbarWindowNotFullscreen();
+        onDragEndOrViewRemoved();
     }
 
     @Override
@@ -422,6 +562,32 @@
         setTaskbarWindowFocusable(isVisible);
     }
 
+    @Override
+    public void onSplitScreenMenuButtonClicked() {
+        PopupContainerWithArrow popup = PopupContainerWithArrow.getOpen(this);
+        if (popup != null) {
+            popup.addOnCloseCallback(() -> {
+                mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(true);
+            });
+        }
+    }
+
+    @Override
+    public ActivityOptionsWrapper makeDefaultActivityOptions(int splashScreenStyle) {
+        RunnableList callbacks = new RunnableList();
+        ActivityOptions options = ActivityOptions.makeCustomAnimation(
+                this, 0, 0, Color.TRANSPARENT,
+                Executors.MAIN_EXECUTOR.getHandler(), null,
+                elapsedRealTime -> callbacks.executeAllAndDestroy());
+        options.setSplashScreenStyle(splashScreenStyle);
+        return new ActivityOptionsWrapper(options, callbacks);
+    }
+
+    @Override
+    public ActivityOptionsWrapper getActivityLaunchOptions(View v, @Nullable ItemInfo item) {
+        return makeDefaultActivityOptions(SPLASH_SCREEN_STYLE_UNDEFINED);
+    }
+
     /**
      * Sets a new data-source for this taskbar instance
      */
@@ -445,22 +611,27 @@
         mIsDestroyed = true;
         setUIController(TaskbarUIController.DEFAULT);
         mControllers.onDestroy();
-        mWindowManager.removeViewImmediate(mDragLayer);
+        if (!FLAG_HIDE_NAVBAR_WINDOW) {
+            mWindowManager.removeViewImmediate(mDragLayer);
+            mAddedWindow = false;
+        }
+    }
+
+    public boolean isDestroyed() {
+        return mIsDestroyed;
     }
 
     public void updateSysuiStateFlags(int systemUiStateFlags, boolean fromInit) {
         mControllers.navbarButtonsViewController.updateStateForSysuiFlags(systemUiStateFlags,
                 fromInit);
-        mControllers.taskbarViewController.setImeIsVisible(
-                mControllers.navbarButtonsViewController.isImeVisible());
-        int shadeExpandedFlags = SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED
-                | SYSUI_STATE_QUICK_SETTINGS_EXPANDED;
-        onNotificationShadeExpandChanged((systemUiStateFlags & shadeExpandedFlags) != 0, fromInit);
+        boolean isShadeVisible = (systemUiStateFlags & SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE) != 0;
+        onNotificationShadeExpandChanged(isShadeVisible, fromInit);
         mControllers.taskbarViewController.setRecentsButtonDisabled(
                 mControllers.navbarButtonsViewController.isRecentsDisabled()
                         || isNavBarKidsModeActive());
         mControllers.stashedHandleViewController.setIsHomeButtonDisabled(
                 mControllers.navbarButtonsViewController.isHomeDisabled());
+        mControllers.stashedHandleViewController.updateStateForSysuiFlags(systemUiStateFlags);
         mControllers.taskbarKeyguardController.updateStateForSysuiFlags(systemUiStateFlags);
         mControllers.taskbarStashController.updateStateForSysuiFlags(
                 systemUiStateFlags, fromInit || !isUserSetupComplete());
@@ -468,6 +639,10 @@
                 fromInit);
         mControllers.navButtonController.updateSysuiFlags(systemUiStateFlags);
         mControllers.taskbarForceVisibleImmersiveController.updateSysuiFlags(systemUiStateFlags);
+        mControllers.voiceInteractionWindowController.setIsVoiceInteractionWindowVisible(
+                (systemUiStateFlags & SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING) != 0, fromInit);
+
+        mControllers.uiController.updateStateForSysuiFlags(systemUiStateFlags);
     }
 
     /**
@@ -476,12 +651,10 @@
     private void onNotificationShadeExpandChanged(boolean isExpanded, boolean skipAnim) {
         float alpha = isExpanded ? 0 : 1;
         AnimatorSet anim = new AnimatorSet();
-        anim.play(mControllers.taskbarViewController.getTaskbarIconAlpha().getProperty(
+        anim.play(mControllers.taskbarViewController.getTaskbarIconAlpha().get(
                 TaskbarViewController.ALPHA_INDEX_NOTIFICATION_EXPANDED).animateToValue(alpha));
-        if (!isThreeButtonNav()) {
-            anim.play(mControllers.taskbarDragLayerController.getNotificationShadeBgTaskbar()
-                    .animateToValue(alpha));
-        }
+        anim.play(mControllers.taskbarDragLayerController.getNotificationShadeBgTaskbar()
+                .animateToValue(alpha));
         anim.start();
         if (skipAnim) {
             anim.end();
@@ -504,32 +677,41 @@
     }
 
     public void onNavButtonsDarkIntensityChanged(float darkIntensity) {
-        if (!isUserSetupComplete()) {
-            return;
-        }
         mControllers.navbarButtonsViewController.getTaskbarNavButtonDarkIntensity()
                 .updateValue(darkIntensity);
     }
 
     /**
+     * Called to update a {@link AutohideSuspendFlag} with a new value.
+     */
+    public void setAutohideSuspendFlag(@AutohideSuspendFlag int flag, boolean newValue) {
+        mControllers.taskbarAutohideSuspendController.updateFlag(flag, newValue);
+    }
+
+    /**
      * Updates the TaskbarContainer to MATCH_PARENT vs original Taskbar size.
      */
     public void setTaskbarWindowFullscreen(boolean fullscreen) {
-        mControllers.taskbarAutohideSuspendController.updateFlag(
-                TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_FULLSCREEN, fullscreen);
+        setAutohideSuspendFlag(FLAG_AUTOHIDE_SUSPEND_FULLSCREEN, fullscreen);
         mIsFullscreen = fullscreen;
         setTaskbarWindowHeight(fullscreen ? MATCH_PARENT : mLastRequestedNonFullscreenHeight);
     }
 
     /**
-     * Reverts Taskbar window to its original size, if all floating views are closed and there is
-     * no system drag operation in progress.
+     * Called when drag ends or when a view is removed from the DragLayer.
      */
-    void maybeSetTaskbarWindowNotFullscreen() {
-        if (AbstractFloatingView.getAnyView(this, TYPE_ALL) == null
-                && !mControllers.taskbarDragController.isSystemDragInProgress()) {
+    void onDragEndOrViewRemoved() {
+        boolean isDragInProgress = mControllers.taskbarDragController.isSystemDragInProgress();
+
+        // Overlay AFVs are in a separate window and do not require Taskbar to be fullscreen.
+        if (!isDragInProgress
+                && !AbstractFloatingView.hasOpenView(
+                        this, TYPE_ALL & ~TYPE_TASKBAR_OVERLAY_PROXY)) {
+            // Reverts Taskbar window to its original size
             setTaskbarWindowFullscreen(false);
         }
+
+        setAutohideSuspendFlag(FLAG_AUTOHIDE_SUSPEND_DRAGGING, isDragInProgress);
     }
 
     public boolean isTaskbarWindowFullscreen() {
@@ -537,18 +719,6 @@
     }
 
     /**
-     * Notify system to inset the rounded corner frame based on the task bar insets.
-     */
-    public void updateInsetRoundedCornerFrame(boolean shouldInsetsRoundedCorner) {
-        if (!mDragLayer.isAttachedToWindow()
-                || mWindowLayoutParams.insetsRoundedCornerFrame == shouldInsetsRoundedCorner) {
-            return;
-        }
-        mWindowLayoutParams.insetsRoundedCornerFrame = shouldInsetsRoundedCorner;
-        mWindowManager.updateViewLayout(mDragLayer, mWindowLayoutParams);
-    }
-
-    /**
      * Updates the TaskbarContainer height (pass {@link #getDefaultTaskbarWindowHeight()} to reset).
      */
     public void setTaskbarWindowHeight(int height) {
@@ -576,7 +746,30 @@
      * Returns the default height of the window, including the static corner radii above taskbar.
      */
     public int getDefaultTaskbarWindowHeight() {
-        return mDeviceProfile.taskbarSize + Math.max(getLeftCornerRadius(), getRightCornerRadius());
+        Resources resources = getResources();
+
+        if (FLAG_HIDE_NAVBAR_WINDOW && mDeviceProfile.isPhone) {
+            return isThreeButtonNav() ?
+                    resources.getDimensionPixelSize(R.dimen.taskbar_size) :
+                    resources.getDimensionPixelSize(R.dimen.taskbar_stashed_size);
+        }
+
+        if (!isUserSetupComplete()) {
+            return getSetupWindowHeight();
+        }
+
+        if (DisplayController.isTransientTaskbar(this)) {
+            return mDeviceProfile.taskbarHeight
+                    + (2 * mDeviceProfile.taskbarBottomMargin)
+                    + resources.getDimensionPixelSize(R.dimen.transient_taskbar_shadow_blur);
+        }
+
+        return mDeviceProfile.taskbarHeight
+                + Math.max(getLeftCornerRadius(), getRightCornerRadius());
+    }
+
+    public int getSetupWindowHeight() {
+        return getResources().getDimensionPixelSize(R.dimen.taskbar_suw_frame);
     }
 
     /**
@@ -607,21 +800,33 @@
 
     /** Adds the given view to WindowManager with the provided LayoutParams (creates new window). */
     public void addWindowView(View view, WindowManager.LayoutParams windowLayoutParams) {
-        mWindowManager.addView(view, windowLayoutParams);
+        if (!view.isAttachedToWindow()) {
+            mWindowManager.addView(view, windowLayoutParams);
+        }
     }
 
     /** Removes the given view from WindowManager. See {@link #addWindowView}. */
     public void removeWindowView(View view) {
-        mWindowManager.removeViewImmediate(view);
+        if (view.isAttachedToWindow()) {
+            mWindowManager.removeViewImmediate(view);
+        }
+    }
+
+    @Override
+    public void startSplitSelection(SplitSelectSource splitSelectSource) {
+        mControllers.uiController.startSplitSelection(splitSelectSource);
     }
 
     protected void onTaskbarIconClicked(View view) {
+        boolean shouldCloseAllOpenViews = true;
         Object tag = view.getTag();
         if (tag instanceof Task) {
             Task task = (Task) tag;
             ActivityManagerWrapper.getInstance().startActivityFromRecents(task.key,
                     ActivityOptions.makeBasic());
+            mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(true);
         } else if (tag instanceof FolderInfo) {
+            shouldCloseAllOpenViews = false;
             FolderIcon folderIcon = (FolderIcon) view;
             Folder folder = folderIcon.getFolder();
 
@@ -650,50 +855,107 @@
                 });
             });
         } else if (tag instanceof WorkspaceItemInfo) {
+            // Tapping a launchable icon on Taskbar
             WorkspaceItemInfo info = (WorkspaceItemInfo) tag;
-            if (info.isDisabled()) {
-                ItemClickHandler.handleDisabledItemClicked(info, this);
-            } else {
-                Intent intent = new Intent(info.getIntent())
-                        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-                try {
-                    if (mIsSafeModeEnabled && !PackageManagerHelper.isSystemApp(this, intent)) {
-                        Toast.makeText(this, R.string.safemode_shortcut_error,
-                                Toast.LENGTH_SHORT).show();
-                    } else  if (info.isPromise()) {
-                        TestLogging.recordEvent(
-                                TestProtocol.SEQUENCE_MAIN, "start: taskbarPromiseIcon");
-                        intent = new PackageManagerHelper(this)
-                                .getMarketIntent(info.getTargetPackage())
-                                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-                        startActivity(intent);
+            if (!info.isDisabled() || !ItemClickHandler.handleDisabledItemClicked(info, this)) {
+                TaskbarUIController taskbarUIController = mControllers.uiController;
+                RecentsView recents = taskbarUIController.getRecentsView();
+                if (recents != null && recents.isSplitSelectionActive()) {
+                    // If we are selecting a second app for split, launch the split tasks
+                    taskbarUIController.triggerSecondAppForSplit(info, info.intent, view);
+                } else {
+                    // Else launch the selected task
+                    Intent intent = new Intent(info.getIntent())
+                            .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                    try {
+                        if (mIsSafeModeEnabled && !PackageManagerHelper.isSystemApp(this, intent)) {
+                            Toast.makeText(this, R.string.safemode_shortcut_error,
+                                    Toast.LENGTH_SHORT).show();
+                        } else if (info.isPromise()) {
+                            TestLogging.recordEvent(
+                                    TestProtocol.SEQUENCE_MAIN, "start: taskbarPromiseIcon");
+                            intent = new PackageManagerHelper(this)
+                                    .getMarketIntent(info.getTargetPackage())
+                                    .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                            startActivity(intent);
 
-                    } else if (info.itemType == Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
-                        TestLogging.recordEvent(
-                                TestProtocol.SEQUENCE_MAIN, "start: taskbarDeepShortcut");
-                        String id = info.getDeepShortcutId();
-                        String packageName = intent.getPackage();
-                        getSystemService(LauncherApps.class)
-                                .startShortcut(packageName, id, null, null, info.user);
-                    } else {
-                        startItemInfoActivity(info);
+                        } else if (info.itemType == Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
+                            TestLogging.recordEvent(
+                                    TestProtocol.SEQUENCE_MAIN, "start: taskbarDeepShortcut");
+                            String id = info.getDeepShortcutId();
+                            String packageName = intent.getPackage();
+                            getSystemService(LauncherApps.class)
+                                    .startShortcut(packageName, id, null, null, info.user);
+                        } else {
+                            launchFromTaskbarPreservingSplitIfVisible(recents, info);
+                        }
+
+                    } catch (NullPointerException
+                            | ActivityNotFoundException
+                            | SecurityException e) {
+                        Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT)
+                                .show();
+                        Log.e(TAG, "Unable to launch. tag=" + info + " intent=" + intent, e);
+                        return;
                     }
 
-                    mControllers.uiController.onTaskbarIconLaunched(info);
-                } catch (NullPointerException | ActivityNotFoundException | SecurityException e) {
-                    Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT)
-                            .show();
-                    Log.e(TAG, "Unable to launch. tag=" + info + " intent=" + intent, e);
                 }
+                mControllers.uiController.onTaskbarIconLaunched(info);
+                mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(true);
             }
         } else if (tag instanceof AppInfo) {
-            startItemInfoActivity((AppInfo) tag);
-            mControllers.uiController.onTaskbarIconLaunched((AppInfo) tag);
+            // Tapping an item in AllApps
+            AppInfo info = (AppInfo) tag;
+            TaskbarUIController taskbarUIController = mControllers.uiController;
+            RecentsView recents = taskbarUIController.getRecentsView();
+            if (recents != null
+                    && taskbarUIController.getRecentsView().isSplitSelectionActive()) {
+                // If we are selecting a second app for split, launch the split tasks
+                taskbarUIController.triggerSecondAppForSplit(info, info.intent, view);
+            } else {
+                launchFromTaskbarPreservingSplitIfVisible(recents, info);
+            }
+            mControllers.uiController.onTaskbarIconLaunched(info);
+            mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(true);
+        } else if (tag instanceof ItemClickProxy) {
+            ((ItemClickProxy) tag).onItemClicked(view);
         } else {
             Log.e(TAG, "Unknown type clicked: " + tag);
         }
 
-        AbstractFloatingView.closeAllOpenViews(this);
+        if (shouldCloseAllOpenViews) {
+            AbstractFloatingView.closeAllOpenViews(this);
+        }
+    }
+
+    /**
+     * Run when the user taps a Taskbar icon while in Overview. If the tapped app is currently
+     * visible to the user in Overview, or is part of a visible split pair, we expand the TaskView
+     * as if the user tapped on it (preserving the split pair). Otherwise, launch it normally
+     * (potentially breaking a split pair).
+     */
+    private void launchFromTaskbarPreservingSplitIfVisible(@Nullable RecentsView recents,
+            ItemInfo info) {
+        if (recents == null) {
+            return;
+        }
+        ComponentKey componentToBeLaunched = new ComponentKey(info.getTargetComponent(), info.user);
+        recents.getSplitSelectController().findLastActiveTaskAndRunCallback(
+                componentToBeLaunched,
+                foundTask -> {
+                    if (foundTask != null) {
+                        TaskView foundTaskView =
+                                recents.getTaskViewByTaskId(foundTask.key.id);
+                        if (foundTaskView != null
+                                && foundTaskView.isVisibleToUser()) {
+                            TestLogging.recordEvent(
+                                    TestProtocol.SEQUENCE_MAIN, "start: taskbarAppIcon");
+                            foundTaskView.launchTasks();
+                            return;
+                        }
+                    }
+                    startItemInfoActivity(info);
+                });
     }
 
     private void startItemInfoActivity(ItemInfo info) {
@@ -716,6 +978,13 @@
     }
 
     /**
+     * Returns whether the taskbar is currently visually stashed.
+     */
+    public boolean isTaskbarStashed() {
+        return mControllers.taskbarStashController.isStashed();
+    }
+
+    /**
      * Called when we detect a long press in the nav region before passing the gesture slop.
      * @return Whether taskbar handled the long press, and thus should cancel the gesture.
      */
@@ -724,18 +993,101 @@
     }
 
     /**
+     * Called when we want to unstash taskbar when user performs swipes up gesture.
+     */
+    public void onSwipeToUnstashTaskbar() {
+        mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(false);
+        mControllers.taskbarEduTooltipController.hide();
+    }
+
+    /** Returns {@code true} if Taskbar All Apps is open. */
+    public boolean isTaskbarAllAppsOpen() {
+        return mControllers.taskbarAllAppsController.isOpen();
+    }
+
+    /** Toggles the Taskbar's stash state. */
+    public void toggleTaskbarStash() {
+        mControllers.taskbarStashController.toggleTaskbarStash();
+    }
+
+    /**
+     * Called to start the taskbar translation spring to its settled translation (0).
+     */
+    public void startTranslationSpring() {
+        mControllers.taskbarTranslationController.startSpring();
+    }
+
+    /**
+     * Returns a callback to help monitor the swipe gesture.
+     */
+    public TransitionCallback getTranslationCallbacks() {
+        return mControllers.taskbarTranslationController.getTransitionCallback();
+    }
+
+    /**
+     * Called when a transient Autohide flag suspend status changes.
+     */
+    public void onTransientAutohideSuspendFlagChanged(boolean isSuspended) {
+        mControllers.taskbarStashController.updateTaskbarTimeout(isSuspended);
+    }
+
+    /**
      * Called when we detect a motion down or up/cancel in the nav region while stashed.
+     *
      * @param animateForward Whether to animate towards the unstashed hint state or back to stashed.
      */
     public void startTaskbarUnstashHint(boolean animateForward) {
-        mControllers.taskbarStashController.startUnstashHint(animateForward);
+        // TODO(b/270395798): Clean up forceUnstash after removing long-press unstashing code.
+        startTaskbarUnstashHint(animateForward, /* forceUnstash = */ false);
+    }
+
+    /**
+     * Called when we detect a motion down or up/cancel in the nav region while stashed.
+     *
+     * @param animateForward Whether to animate towards the unstashed hint state or back to stashed.
+     * @param forceUnstash Whether we force the unstash hint.
+     */
+    public void startTaskbarUnstashHint(boolean animateForward, boolean forceUnstash) {
+        // TODO(b/270395798): Clean up forceUnstash after removing long-press unstashing code.
+        mControllers.taskbarStashController.startUnstashHint(animateForward, forceUnstash);
+    }
+
+    /**
+     * Enables manual taskbar stashing. This method should only be used for tests that need to
+     * stash/unstash the taskbar.
+     */
+    @VisibleForTesting
+    public void enableManualStashingDuringTests(boolean enableManualStashing) {
+        mControllers.taskbarStashController.enableManualStashingDuringTests(enableManualStashing);
+    }
+
+    /**
+     * Enables the auto timeout for taskbar stashing. This method should only be used for taskbar
+     * testing.
+     */
+    @VisibleForTesting
+    public void enableBlockingTimeoutDuringTests(boolean enableBlockingTimeout) {
+        mControllers.taskbarStashController.enableBlockingTimeoutDuringTests(enableBlockingTimeout);
+    }
+
+    /**
+     * Unstashes the Taskbar if it is stashed. This method should only be used to unstash the
+     * taskbar at the end of a test.
+     */
+    @VisibleForTesting
+    public void unstashTaskbarIfStashed() {
+        if (DisplayController.isTransientTaskbar(this)) {
+            mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(false);
+        } else {
+            mControllers.taskbarStashController.onLongPressToUnstashTaskbar();
+        }
     }
 
     protected boolean isUserSetupComplete() {
         return mIsUserSetupComplete;
     }
 
-    protected boolean isNavBarKidsModeActive() {
+    public boolean isNavBarKidsModeActive() {
         return mIsNavBarKidsMode && isThreeButtonNav();
     }
 
@@ -769,12 +1121,13 @@
         }
         mControllers.taskbarStashController.addUnstashToHotseatAnimation(fullAnimation, duration);
 
-        if (!FeatureFlags.ENABLE_ALL_APPS_BUTTON_IN_HOTSEAT.get()) {
+        View allAppsButton = mControllers.taskbarViewController.getAllAppsButtonView();
+        if (allAppsButton != null && !FeatureFlags.ENABLE_ALL_APPS_BUTTON_IN_HOTSEAT.get()) {
             ValueAnimator alphaOverride = ValueAnimator.ofFloat(0, 1);
             alphaOverride.setDuration(duration);
             alphaOverride.addUpdateListener(a -> {
                 // Override the alpha updates in the icon alignment animation.
-                mControllers.taskbarViewController.getAllAppsButtonView().setAlpha(0);
+                allAppsButton.setAlpha(0);
             });
             fullAnimation.play(alphaOverride);
         }
@@ -803,11 +1156,25 @@
         mWindowManager.updateViewLayout(mDragLayer, mWindowLayoutParams);
     }
 
+    void notifyUpdateLayoutParams() {
+        if (mDragLayer.isAttachedToWindow()) {
+            mWindowManager.updateViewLayout(mDragLayer, mWindowLayoutParams);
+        }
+    }
+
     public void showPopupMenuForIcon(BubbleTextView btv) {
         setTaskbarWindowFullscreen(true);
         btv.post(() -> mControllers.taskbarPopupController.showForIcon(btv));
     }
 
+    public boolean isInApp() {
+        return mControllers.taskbarStashController.isInApp();
+    }
+
+    public boolean isInStashedLauncherState() {
+        return mControllers.taskbarStashController.isInStashedLauncherState();
+    }
+
     protected void dumpLogs(String prefix, PrintWriter pw) {
         pw.println(prefix + "TaskbarActivityContext:");
 
@@ -822,6 +1189,21 @@
         pw.println(String.format(
                 "%s\tmBindInProgress=%b", prefix, mBindingItems));
         mControllers.dumpLogs(prefix + "\t", pw);
-        mDeviceProfile.dump(prefix, pw);
+        mDeviceProfile.dump(this, prefix, pw);
+    }
+
+    @VisibleForTesting
+    public int getTaskbarAllAppsTopPadding() {
+        return mControllers.taskbarAllAppsController.getTaskbarAllAppsTopPadding();
+    }
+
+    @VisibleForTesting
+    public int getTaskbarAllAppsScroll() {
+        return mControllers.taskbarAllAppsController.getTaskbarAllAppsScroll();
+    }
+
+    @VisibleForTesting
+    public float getStashedTaskbarScale() {
+        return mControllers.stashedHandleViewController.getStashedHandleHintScale().value;
     }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarAutohideSuspendController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarAutohideSuspendController.java
index c5615c7..2517ff6 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarAutohideSuspendController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarAutohideSuspendController.java
@@ -15,7 +15,7 @@
  */
 package com.android.launcher3.taskbar;
 
-import static com.android.launcher3.taskbar.Utilities.appendFlag;
+import static com.android.launcher3.util.FlagDebugUtils.appendFlag;
 
 import androidx.annotation.IntDef;
 
@@ -33,21 +33,34 @@
 public class TaskbarAutohideSuspendController implements
         TaskbarControllers.LoggableTaskbarController {
 
+    // Taskbar window is fullscreen.
     public static final int FLAG_AUTOHIDE_SUSPEND_FULLSCREEN = 1 << 0;
+    // User is dragging item.
     public static final int FLAG_AUTOHIDE_SUSPEND_DRAGGING = 1 << 1;
+    // User has touched down but has not lifted finger.
+    public static final int FLAG_AUTOHIDE_SUSPEND_TOUCHING = 1 << 2;
+    // Taskbar EDU overlay is open above the Taskbar. */
+    public static final int FLAG_AUTOHIDE_SUSPEND_EDU_OPEN = 1 << 3;
+    // Taskbar in immersive mode in overview
+    public static final int FLAG_AUTOHIDE_SUSPEND_IN_LAUNCHER = 1 << 4;
 
     @IntDef(flag = true, value = {
             FLAG_AUTOHIDE_SUSPEND_FULLSCREEN,
             FLAG_AUTOHIDE_SUSPEND_DRAGGING,
+            FLAG_AUTOHIDE_SUSPEND_TOUCHING,
+            FLAG_AUTOHIDE_SUSPEND_EDU_OPEN,
+            FLAG_AUTOHIDE_SUSPEND_IN_LAUNCHER,
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface AutohideSuspendFlag {}
 
+    private final TaskbarActivityContext mActivity;
     private final SystemUiProxy mSystemUiProxy;
 
     private @AutohideSuspendFlag int mAutohideSuspendFlags = 0;
 
     public TaskbarAutohideSuspendController(TaskbarActivityContext activity) {
+        mActivity = activity;
         mSystemUiProxy = SystemUiProxy.INSTANCE.get(activity);
     }
 
@@ -59,20 +72,38 @@
      * Adds or removes the given flag, then notifies system UI proxy whether to suspend auto-hide.
      */
     public void updateFlag(@AutohideSuspendFlag int flag, boolean enabled) {
+        int flagsBefore = mAutohideSuspendFlags;
         if (enabled) {
             mAutohideSuspendFlags |= flag;
         } else {
             mAutohideSuspendFlags &= ~flag;
         }
-        mSystemUiProxy.notifyTaskbarAutohideSuspend(mAutohideSuspendFlags != 0);
+        if (flagsBefore == mAutohideSuspendFlags) {
+            // Nothing has changed, no need to notify.
+            return;
+        }
+
+        boolean isSuspended = isSuspended();
+        mSystemUiProxy.notifyTaskbarAutohideSuspend(isSuspended);
+        mActivity.onTransientAutohideSuspendFlagChanged(isSuspended);
+    }
+
+    /**
+     * Returns true iff taskbar autohide is currently suspended.
+     */
+    public boolean isSuspended() {
+        return mAutohideSuspendFlags != 0;
+    }
+
+    public boolean isSuspendedForTransientTaskbarInOverview() {
+        return (mAutohideSuspendFlags & FLAG_AUTOHIDE_SUSPEND_IN_LAUNCHER) != 0;
     }
 
     @Override
     public void dumpLogs(String prefix, PrintWriter pw) {
         pw.println(prefix + "TaskbarAutohideSuspendController:");
 
-        pw.println(String.format(
-                "%s\tmAutohideSuspendFlags=%s", prefix, getStateString(mAutohideSuspendFlags)));
+        pw.println(prefix + "\tmAutohideSuspendFlags=" + getStateString(mAutohideSuspendFlags));
     }
 
     private static String getStateString(int flags) {
@@ -80,6 +111,10 @@
         appendFlag(str, flags, FLAG_AUTOHIDE_SUSPEND_FULLSCREEN,
                 "FLAG_AUTOHIDE_SUSPEND_FULLSCREEN");
         appendFlag(str, flags, FLAG_AUTOHIDE_SUSPEND_DRAGGING, "FLAG_AUTOHIDE_SUSPEND_DRAGGING");
+        appendFlag(str, flags, FLAG_AUTOHIDE_SUSPEND_TOUCHING, "FLAG_AUTOHIDE_SUSPEND_TOUCHING");
+        appendFlag(str, flags, FLAG_AUTOHIDE_SUSPEND_EDU_OPEN, "FLAG_AUTOHIDE_SUSPEND_EDU_OPEN");
+        appendFlag(str, flags, FLAG_AUTOHIDE_SUSPEND_IN_LAUNCHER,
+                "FLAG_AUTOHIDE_SUSPEND_IN_LAUNCHER");
         return str.toString();
     }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarBackgroundRenderer.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarBackgroundRenderer.kt
index 1177bdb..ca2d1f8 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarBackgroundRenderer.kt
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarBackgroundRenderer.kt
@@ -16,36 +16,107 @@
 
 package com.android.launcher3.taskbar
 
+import android.content.res.Resources
 import android.graphics.Canvas
+import android.graphics.Color
 import android.graphics.Paint
 import android.graphics.Path
+import android.graphics.RectF
+import com.android.launcher3.DeviceProfile
 import com.android.launcher3.R
+import com.android.launcher3.Utilities
+import com.android.launcher3.Utilities.mapRange
+import com.android.launcher3.Utilities.mapToRange
+import com.android.launcher3.anim.Interpolators
+import com.android.launcher3.icons.GraphicsUtils.setColorAlphaBound
+import com.android.launcher3.util.DisplayController
 
-/**
- * Helps draw the taskbar background, made up of a rectangle plus two inverted rounded corners.
- */
+/** Helps draw the taskbar background, made up of a rectangle plus two inverted rounded corners. */
 class TaskbarBackgroundRenderer(context: TaskbarActivityContext) {
 
-    val paint: Paint = Paint()
-    var backgroundHeight = context.deviceProfile.taskbarSize.toFloat()
+    private val isInSetup: Boolean = !context.isUserSetupComplete
+    private val DARK_THEME_SHADOW_ALPHA = 51f
+    private val LIGHT_THEME_SHADOW_ALPHA = 25f
 
-    private val leftCornerRadius = context.leftCornerRadius.toFloat()
-    private val rightCornerRadius = context.rightCornerRadius.toFloat()
+    val paint = Paint()
+    val lastDrawnTransientRect = RectF()
+    var backgroundHeight = context.deviceProfile.taskbarHeight.toFloat()
+    var translationYForSwipe = 0f
+    var translationYForStash = 0f
+
+    private var maxBackgroundHeight = context.deviceProfile.taskbarHeight.toFloat()
+    private val transientBackgroundBounds = context.transientTaskbarBounds
+
+    private val isTransientTaskbar = DisplayController.isTransientTaskbar(context)
+
+    private val shadowAlpha: Float
+    private var shadowBlur = 0f
+    private var keyShadowDistance = 0f
+    private var bottomMargin = 0
+
+    private val fullLeftCornerRadius = context.leftCornerRadius.toFloat()
+    private val fullRightCornerRadius = context.rightCornerRadius.toFloat()
+    private var leftCornerRadius = fullLeftCornerRadius
+    private var rightCornerRadius = fullRightCornerRadius
+    private var widthInsetPercentage = 0f
+    private val square: Path = Path()
+    private val circle: Path = Path()
     private val invertedLeftCornerPath: Path = Path()
     private val invertedRightCornerPath: Path = Path()
 
+    private var stashedHandleWidth =
+        context.resources.getDimensionPixelSize(R.dimen.taskbar_stashed_handle_width)
+
+    private val stashedHandleHeight =
+        context.resources.getDimensionPixelSize(R.dimen.taskbar_stashed_handle_height)
+
     init {
         paint.color = context.getColor(R.color.taskbar_background)
         paint.flags = Paint.ANTI_ALIAS_FLAG
         paint.style = Paint.Style.FILL
 
+        if (isTransientTaskbar) {
+            val res = context.resources
+            bottomMargin = res.getDimensionPixelSize(R.dimen.transient_taskbar_bottom_margin)
+            shadowBlur = res.getDimension(R.dimen.transient_taskbar_shadow_blur)
+            keyShadowDistance = res.getDimension(R.dimen.transient_taskbar_key_shadow_distance)
+        }
+
+        shadowAlpha =
+            if (Utilities.isDarkTheme(context)) DARK_THEME_SHADOW_ALPHA
+            else LIGHT_THEME_SHADOW_ALPHA
+
+        setCornerRoundness(DEFAULT_ROUNDNESS)
+    }
+
+    fun updateStashedHandleWidth(dp: DeviceProfile, res: Resources) {
+        stashedHandleWidth = res.getDimensionPixelSize(
+                if (TaskbarManager.isPhoneMode(dp)) R.dimen.taskbar_stashed_small_screen
+                else R.dimen.taskbar_stashed_handle_width
+        )
+    }
+
+    /**
+     * Sets the roundness of the round corner above Taskbar. No effect on transient Taskkbar.
+     *
+     * @param cornerRoundness 0 has no round corner, 1 has complete round corner.
+     */
+    fun setCornerRoundness(cornerRoundness: Float) {
+        if (isTransientTaskbar && !transientBackgroundBounds.isEmpty) {
+            return
+        }
+
+        leftCornerRadius = fullLeftCornerRadius * cornerRoundness
+        rightCornerRadius = fullRightCornerRadius * cornerRoundness
+
         // Create the paths for the inverted rounded corners above the taskbar. Start with a filled
         // square, and then subtract out a circle from the appropriate corner.
-        val square = Path()
+        square.reset()
         square.addRect(0f, 0f, leftCornerRadius, leftCornerRadius, Path.Direction.CW)
-        val circle = Path()
+        circle.reset()
         circle.addCircle(leftCornerRadius, 0f, leftCornerRadius, Path.Direction.CW)
         invertedLeftCornerPath.op(square, circle, Path.Op.DIFFERENCE)
+
         square.reset()
         square.addRect(0f, 0f, rightCornerRadius, rightCornerRadius, Path.Direction.CW)
         circle.reset()
@@ -53,23 +124,76 @@
         invertedRightCornerPath.op(square, circle, Path.Op.DIFFERENCE)
     }
 
-    /**
-     * Draws the background with the given paint and height, on the provided canvas.
-     */
+    /** Draws the background with the given paint and height, on the provided canvas. */
     fun draw(canvas: Canvas) {
         canvas.save()
-        canvas.translate(0f, canvas.height - backgroundHeight)
+        if (!isTransientTaskbar || transientBackgroundBounds.isEmpty) {
+            canvas.translate(0f, canvas.height - backgroundHeight - bottomMargin)
+            // Draw the background behind taskbar content.
+            canvas.drawRect(0f, 0f, canvas.width.toFloat(), backgroundHeight, paint)
 
-        // Draw the background behind taskbar content.
-        canvas.drawRect(0f, 0f, canvas.width.toFloat(), backgroundHeight, paint)
+            // Draw the inverted rounded corners above the taskbar.
+            canvas.translate(0f, -leftCornerRadius)
+            canvas.drawPath(invertedLeftCornerPath, paint)
+            canvas.translate(0f, leftCornerRadius)
+            canvas.translate(canvas.width - rightCornerRadius, -rightCornerRadius)
+            canvas.drawPath(invertedRightCornerPath, paint)
+        } else if (!isInSetup) {
+            // backgroundHeight is a value from [0...maxBackgroundHeight], so we can use it as a
+            // proxy to figure out the animation progress of the stash/unstash animation.
+            val progress = backgroundHeight / maxBackgroundHeight
 
-        // Draw the inverted rounded corners above the taskbar.
-        canvas.translate(0f, -leftCornerRadius)
-        canvas.drawPath(invertedLeftCornerPath, paint)
-        canvas.translate(0f, leftCornerRadius)
-        canvas.translate(canvas.width - rightCornerRadius, -rightCornerRadius)
-        canvas.drawPath(invertedRightCornerPath, paint)
+            // At progress 0, we draw the background as the stashed handle.
+            // At progress 1, we draw the background as the full taskbar.
+            val newBackgroundHeight =
+                mapRange(progress, stashedHandleHeight.toFloat(), maxBackgroundHeight)
+            val fullWidth = transientBackgroundBounds.width()
+            val newWidth = mapRange(progress, stashedHandleWidth.toFloat(), fullWidth.toFloat())
+            val halfWidthDelta = (fullWidth - newWidth) / 2f
+            val radius = newBackgroundHeight / 2f
+            val bottomMarginProgress = bottomMargin * ((1f - progress) / 2f)
 
+            // Aligns the bottom with the bottom of the stashed handle.
+            val bottom =
+                canvas.height - bottomMargin +
+                    bottomMarginProgress +
+                    translationYForSwipe +
+                    translationYForStash +
+                    -mapRange(1f - progress, 0f, stashedHandleHeight / 2f)
+
+            // Draw shadow.
+            val newShadowAlpha =
+                mapToRange(paint.alpha.toFloat(), 0f, 255f, 0f, shadowAlpha, Interpolators.LINEAR)
+            paint.setShadowLayer(
+                shadowBlur,
+                0f,
+                keyShadowDistance,
+                setColorAlphaBound(Color.BLACK, Math.round(newShadowAlpha))
+            )
+
+            lastDrawnTransientRect.set(
+                transientBackgroundBounds.left + halfWidthDelta,
+                bottom - newBackgroundHeight,
+                transientBackgroundBounds.right - halfWidthDelta,
+                bottom
+            )
+            val horizontalInset = fullWidth * widthInsetPercentage
+            lastDrawnTransientRect.inset(horizontalInset, 0f)
+
+            canvas.drawRoundRect(lastDrawnTransientRect, radius, radius, paint)
+        }
         canvas.restore()
     }
+
+    /**
+     * Sets the width percentage to inset the transient taskbar's background from the left and from
+     * the right.
+     */
+    fun setBackgroundHorizontalInsets(insetPercentage: Float) {
+        widthInsetPercentage = insetPercentage
+    }
+
+    companion object {
+        const val DEFAULT_ROUNDNESS = 1f
+    }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java
index 449e0a7..66c2eb3 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java
@@ -21,12 +21,16 @@
 import androidx.annotation.Nullable;
 import androidx.annotation.VisibleForTesting;
 
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.taskbar.allapps.TaskbarAllAppsController;
+import com.android.launcher3.taskbar.bubbles.BubbleControllers;
+import com.android.launcher3.taskbar.overlay.TaskbarOverlayController;
 import com.android.systemui.shared.rotation.RotationButtonController;
 
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * Hosts various taskbar controllers to facilitate passing between one another.
@@ -46,14 +50,23 @@
     public final TaskbarKeyguardController taskbarKeyguardController;
     public final StashedHandleViewController stashedHandleViewController;
     public final TaskbarStashController taskbarStashController;
-    public final TaskbarEduController taskbarEduController;
     public final TaskbarAutohideSuspendController taskbarAutohideSuspendController;
     public final TaskbarPopupController taskbarPopupController;
     public final TaskbarForceVisibleImmersiveController taskbarForceVisibleImmersiveController;
     public final TaskbarAllAppsController taskbarAllAppsController;
     public final TaskbarInsetsController taskbarInsetsController;
+    public final VoiceInteractionWindowController voiceInteractionWindowController;
+    public final TaskbarRecentAppsController taskbarRecentAppsController;
+    public final TaskbarTranslationController taskbarTranslationController;
+    public final TaskbarSpringOnStashController taskbarSpringOnStashController;
+    public final TaskbarOverlayController taskbarOverlayController;
+    public final TaskbarEduTooltipController taskbarEduTooltipController;
+    public final KeyboardQuickSwitchController keyboardQuickSwitchController;
+    public final TaskbarDividerPopupController taskbarPinningController;
+    public final Optional<BubbleControllers> bubbleControllers;
 
     @Nullable private LoggableTaskbarController[] mControllersToLog = null;
+    @Nullable private BackgroundRendererController[] mBackgroundRendererControllers = null;
 
     /** Do not store this controller, as it may change at runtime. */
     @NonNull public TaskbarUIController uiController = TaskbarUIController.DEFAULT;
@@ -63,6 +76,16 @@
 
     @Nullable private TaskbarSharedState mSharedState = null;
 
+    // Roundness property for round corner above taskbar .
+    private final AnimatedFloat mCornerRoundness = new AnimatedFloat(this::updateCornerRoundness);
+
+    /**
+     * Want to add a new controller? Don't forget to:
+     *   * Call init
+     *   * Call onDestroy
+     *   * Add to mControllersToLog
+     *   * Add tests by adding this controller to TaskbarBaseTestCase.kt and extending that class
+     */
     public TaskbarControllers(TaskbarActivityContext taskbarActivityContext,
             TaskbarDragController taskbarDragController,
             TaskbarNavButtonController navButtonController,
@@ -75,12 +98,20 @@
             TaskbarKeyguardController taskbarKeyguardController,
             StashedHandleViewController stashedHandleViewController,
             TaskbarStashController taskbarStashController,
-            TaskbarEduController taskbarEduController,
             TaskbarAutohideSuspendController taskbarAutoHideSuspendController,
             TaskbarPopupController taskbarPopupController,
             TaskbarForceVisibleImmersiveController taskbarForceVisibleImmersiveController,
+            TaskbarOverlayController taskbarOverlayController,
             TaskbarAllAppsController taskbarAllAppsController,
-            TaskbarInsetsController taskbarInsetsController) {
+            TaskbarInsetsController taskbarInsetsController,
+            VoiceInteractionWindowController voiceInteractionWindowController,
+            TaskbarTranslationController taskbarTranslationController,
+            TaskbarSpringOnStashController taskbarSpringOnStashController,
+            TaskbarRecentAppsController taskbarRecentAppsController,
+            TaskbarEduTooltipController taskbarEduTooltipController,
+            KeyboardQuickSwitchController keyboardQuickSwitchController,
+            TaskbarDividerPopupController taskbarPinningController,
+            Optional<BubbleControllers> bubbleControllers) {
         this.taskbarActivityContext = taskbarActivityContext;
         this.taskbarDragController = taskbarDragController;
         this.navButtonController = navButtonController;
@@ -93,12 +124,20 @@
         this.taskbarKeyguardController = taskbarKeyguardController;
         this.stashedHandleViewController = stashedHandleViewController;
         this.taskbarStashController = taskbarStashController;
-        this.taskbarEduController = taskbarEduController;
         this.taskbarAutohideSuspendController = taskbarAutoHideSuspendController;
         this.taskbarPopupController = taskbarPopupController;
         this.taskbarForceVisibleImmersiveController = taskbarForceVisibleImmersiveController;
+        this.taskbarOverlayController = taskbarOverlayController;
         this.taskbarAllAppsController = taskbarAllAppsController;
         this.taskbarInsetsController = taskbarInsetsController;
+        this.voiceInteractionWindowController = voiceInteractionWindowController;
+        this.taskbarTranslationController = taskbarTranslationController;
+        this.taskbarSpringOnStashController = taskbarSpringOnStashController;
+        this.taskbarRecentAppsController = taskbarRecentAppsController;
+        this.taskbarEduTooltipController = taskbarEduTooltipController;
+        this.keyboardQuickSwitchController = keyboardQuickSwitchController;
+        this.taskbarPinningController = taskbarPinningController;
+        this.bubbleControllers = bubbleControllers;
     }
 
     /**
@@ -118,22 +157,37 @@
         taskbarScrimViewController.init(this);
         taskbarUnfoldAnimationController.init(this);
         taskbarKeyguardController.init(navbarButtonsViewController);
+        taskbarSpringOnStashController.init(this);
         stashedHandleViewController.init(this);
-        taskbarStashController.init(this, sharedState.setupUIVisible);
-        taskbarEduController.init(this);
+        taskbarStashController.init(this, sharedState.setupUIVisible, mSharedState);
         taskbarPopupController.init(this);
         taskbarForceVisibleImmersiveController.init(this);
+        taskbarOverlayController.init(this);
         taskbarAllAppsController.init(this, sharedState.allAppsVisible);
         navButtonController.init(this);
         taskbarInsetsController.init(this);
+        voiceInteractionWindowController.init(this);
+        taskbarRecentAppsController.init(this);
+        taskbarTranslationController.init(this);
+        taskbarEduTooltipController.init(this);
+        keyboardQuickSwitchController.init(this);
+        taskbarPinningController.init(this);
+        bubbleControllers.ifPresent(controllers -> controllers.init(this));
 
         mControllersToLog = new LoggableTaskbarController[] {
                 taskbarDragController, navButtonController, navbarButtonsViewController,
                 taskbarDragLayerController, taskbarScrimViewController, taskbarViewController,
                 taskbarUnfoldAnimationController, taskbarKeyguardController,
-                stashedHandleViewController, taskbarStashController, taskbarEduController,
-                taskbarAutohideSuspendController, taskbarPopupController, taskbarInsetsController
+                stashedHandleViewController, taskbarStashController,
+                taskbarAutohideSuspendController, taskbarPopupController, taskbarInsetsController,
+                voiceInteractionWindowController, taskbarTranslationController,
+                taskbarEduTooltipController, keyboardQuickSwitchController, taskbarPinningController
         };
+        mBackgroundRendererControllers = new BackgroundRendererController[] {
+                taskbarDragLayerController, taskbarScrimViewController,
+                voiceInteractionWindowController
+        };
+        mCornerRoundness.updateValue(TaskbarBackgroundRenderer.DEFAULT_ROUNDNESS);
 
         mAreAllControllersInitialized = true;
         for (Runnable postInitCallback : mPostInitCallbacks) {
@@ -150,30 +204,38 @@
 
     public void onConfigurationChanged(@Config int configChanges) {
         navbarButtonsViewController.onConfigurationChanged(configChanges);
+        taskbarDragLayerController.onConfigurationChanged();
+        keyboardQuickSwitchController.onConfigurationChanged(configChanges);
     }
 
     /**
      * Cleans up all controllers.
      */
     public void onDestroy() {
+        mAreAllControllersInitialized = false;
         mSharedState = null;
 
         navbarButtonsViewController.onDestroy();
         uiController.onDestroy();
         rotationButtonController.onDestroy();
         taskbarDragLayerController.onDestroy();
-        taskbarKeyguardController.onDestroy();
         taskbarUnfoldAnimationController.onDestroy();
         taskbarViewController.onDestroy();
         stashedHandleViewController.onDestroy();
         taskbarAutohideSuspendController.onDestroy();
         taskbarPopupController.onDestroy();
         taskbarForceVisibleImmersiveController.onDestroy();
-        taskbarAllAppsController.onDestroy();
+        taskbarOverlayController.onDestroy();
         navButtonController.onDestroy();
         taskbarInsetsController.onDestroy();
+        voiceInteractionWindowController.onDestroy();
+        taskbarRecentAppsController.onDestroy();
+        keyboardQuickSwitchController.onDestroy();
+        taskbarStashController.onDestroy();
+        bubbleControllers.ifPresent(controllers -> controllers.onDestroy());
 
         mControllersToLog = null;
+        mBackgroundRendererControllers = null;
     }
 
     /**
@@ -207,6 +269,23 @@
         rotationButtonController.dumpLogs(prefix + "\t", pw);
     }
 
+    /**
+     * Returns a float property that animates roundness of the round corner above Taskbar.
+     */
+    public AnimatedFloat getTaskbarCornerRoundness() {
+        return mCornerRoundness;
+    }
+
+    private void updateCornerRoundness() {
+        if (mBackgroundRendererControllers == null) {
+            return;
+        }
+
+        for (BackgroundRendererController controller : mBackgroundRendererControllers) {
+            controller.setCornerRoundness(mCornerRoundness.value);
+        }
+    }
+
     @VisibleForTesting
     TaskbarActivityContext getTaskbarActivityContext() {
         // Used to mock
@@ -216,4 +295,12 @@
     protected interface LoggableTaskbarController {
         void dumpLogs(String prefix, PrintWriter pw);
     }
+
+    protected interface BackgroundRendererController {
+        /**
+         * Sets the roundness of the round corner above Taskbar.
+         * @param cornerRoundness 0 has no round corner, 1 has complete round corner.
+         */
+        void setCornerRoundness(float cornerRoundness);
+    }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDividerPopupController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarDividerPopupController.kt
new file mode 100644
index 0000000..83a3343
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDividerPopupController.kt
@@ -0,0 +1,73 @@
+/*
+ * 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.launcher3.taskbar
+
+import android.view.View
+import com.android.launcher3.LauncherPrefs
+import com.android.launcher3.LauncherPrefs.Companion.TASKBAR_PINNING
+import com.android.launcher3.taskbar.TaskbarDividerPopupView.Companion.createAndPopulate
+import java.io.PrintWriter
+
+/** Controls taskbar pinning through a popup view. */
+class TaskbarDividerPopupController(private val context: TaskbarActivityContext) :
+    TaskbarControllers.LoggableTaskbarController {
+
+    private lateinit var controllers: TaskbarControllers
+    private val launcherPrefs = LauncherPrefs.get(context)
+
+    fun init(taskbarControllers: TaskbarControllers) {
+        controllers = taskbarControllers
+    }
+
+    fun showPinningView(view: View) {
+        context.isTaskbarWindowFullscreen = true
+
+        view.post {
+            val popupView = createAndPopulate(view, context)
+            popupView.requestFocus()
+
+            popupView.onCloseCallback =
+                callback@{ didPreferenceChange ->
+                    context.dragLayer.post { context.onPopupVisibilityChanged(false) }
+
+                    if (!didPreferenceChange) {
+                        return@callback
+                    }
+
+                    if (launcherPrefs.get(TASKBAR_PINNING)) {
+                        animateTransientToPersistentTaskbar()
+                    } else {
+                        animatePersistentToTransientTaskbar()
+                    }
+                }
+            popupView.changePreference = {
+                launcherPrefs.put(TASKBAR_PINNING, !launcherPrefs.get(TASKBAR_PINNING))
+            }
+            context.onPopupVisibilityChanged(true)
+            popupView.show()
+        }
+    }
+
+    // TODO(b/265436799): provide animation/transition from transient taskbar to persistent one
+    private fun animateTransientToPersistentTaskbar() {}
+
+    // TODO(b/265436799): provide animation/transition from persistent taskbar to transient one
+    private fun animatePersistentToTransientTaskbar() {}
+
+    override fun dumpLogs(prefix: String, pw: PrintWriter) {
+        pw.println(prefix + "TaskbarPinningController:")
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDividerPopupView.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarDividerPopupView.kt
new file mode 100644
index 0000000..a347908
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDividerPopupView.kt
@@ -0,0 +1,203 @@
+/*
+ * 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.launcher3.taskbar
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.content.Intent
+import android.graphics.Rect
+import android.graphics.drawable.GradientDrawable
+import android.util.AttributeSet
+import android.view.Gravity
+import android.view.MotionEvent
+import android.view.View
+import android.widget.LinearLayout
+import android.widget.Switch
+import androidx.core.view.postDelayed
+import com.android.launcher3.R
+import com.android.launcher3.popup.ArrowPopup
+import com.android.launcher3.popup.RoundedArrowDrawable
+import com.android.launcher3.util.DisplayController
+import com.android.launcher3.util.Themes
+
+/** Popup view with arrow for taskbar pinning */
+class TaskbarDividerPopupView<T : TaskbarActivityContext>
+@JvmOverloads
+constructor(
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0,
+) : ArrowPopup<T>(context, attrs, defStyleAttr) {
+    companion object {
+        private const val TAG = "TaskbarDividerPopupView"
+        private const val DIVIDER_POPUP_CLOSING_DELAY = 500L
+        private const val SETTINGS_PACKAGE_NAME = "com.android.settings"
+        private const val CHANGE_NAVIGATION_MODE_ACTION =
+            "com.android.settings.NAVIGATION_MODE_SETTINGS"
+
+        @JvmStatic
+        fun createAndPopulate(
+            view: View,
+            taskbarActivityContext: TaskbarActivityContext,
+        ): TaskbarDividerPopupView<*> {
+            val taskMenuViewWithArrow =
+                taskbarActivityContext.layoutInflater.inflate(
+                    R.layout.taskbar_divider_popup_menu,
+                    taskbarActivityContext.dragLayer,
+                    false
+                ) as TaskbarDividerPopupView<*>
+
+            return taskMenuViewWithArrow.populateForView(view)
+        }
+    }
+    private lateinit var dividerView: View
+
+    private val menuWidth =
+        context.resources.getDimensionPixelSize(R.dimen.taskbar_pinning_popup_menu_width)
+    private val popupCornerRadius = Themes.getDialogCornerRadius(context)
+    private val arrowWidth = resources.getDimension(R.dimen.popup_arrow_width)
+    private val arrowHeight = resources.getDimension(R.dimen.popup_arrow_height)
+    private val arrowPointRadius = resources.getDimension(R.dimen.popup_arrow_corner_radius)
+
+    private var alwaysShowTaskbarOn = !DisplayController.isTransientTaskbar(context)
+    private var didPreferenceChange = false
+
+    /** Callback invoked when the pinning popup view is closing. */
+    var onCloseCallback: (preferenceChanged: Boolean) -> Unit = {}
+
+    /**
+     * Callback invoked when the user preference changes in popup view. Preference change will be
+     * based upon current value stored in [LauncherPrefs] for `TASKBAR_PINNING`
+     */
+    var changePreference: () -> Unit = {}
+
+    init {
+        // This synchronizes the arrow and menu to open at the same time
+        mOpenChildFadeStartDelay = mOpenFadeStartDelay
+        mOpenChildFadeDuration = mOpenFadeDuration
+        mCloseFadeStartDelay = mCloseChildFadeStartDelay
+        mCloseFadeDuration = mCloseChildFadeDuration
+    }
+
+    override fun isOfType(type: Int): Boolean = type and TYPE_TASKBAR_PINNING_POPUP != 0
+
+    override fun getTargetObjectLocation(outPos: Rect) {
+        popupContainer.getDescendantRectRelativeToSelf(dividerView, outPos)
+    }
+
+    @SuppressLint("UseSwitchCompatOrMaterialCode")
+    override fun onFinishInflate() {
+        super.onFinishInflate()
+        val taskbarSwitchOption = findViewById<LinearLayout>(R.id.taskbar_switch_option)
+        val alwaysShowTaskbarSwitch = findViewById<Switch>(R.id.taskbar_pinning_switch)
+        val navigationModeChangeOption =
+            findViewById<LinearLayout>(R.id.navigation_mode_switch_option)
+        alwaysShowTaskbarSwitch.isChecked = alwaysShowTaskbarOn
+        taskbarSwitchOption.setOnClickListener {
+            alwaysShowTaskbarSwitch.isClickable = true
+            alwaysShowTaskbarSwitch.isChecked = !alwaysShowTaskbarOn
+            onClickAlwaysShowTaskbarSwitchOption()
+        }
+        navigationModeChangeOption.setOnClickListener {
+            context.startActivity(
+                Intent(CHANGE_NAVIGATION_MODE_ACTION)
+                    .setPackage(SETTINGS_PACKAGE_NAME)
+                    .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            )
+        }
+    }
+
+    /** Orient object as usual and then center object horizontally. */
+    override fun orientAboutObject() {
+        super.orientAboutObject()
+        x = mTempRect.centerX() - menuWidth / 2f
+    }
+
+    override fun onControllerInterceptTouchEvent(ev: MotionEvent?): Boolean {
+        if (ev?.action == MotionEvent.ACTION_DOWN) {
+            if (!popupContainer.isEventOverView(this, ev)) {
+                close(true)
+            }
+        } else if (popupContainer.isEventOverView(dividerView, ev)) {
+            return true
+        }
+        return false
+    }
+
+    private fun populateForView(view: View): TaskbarDividerPopupView<*> {
+        dividerView = view
+        tryUpdateBackground()
+        return this
+    }
+
+    /** Updates the text background to match the shape of this background (when applicable). */
+    private fun tryUpdateBackground() {
+        if (background !is GradientDrawable) {
+            return
+        }
+        val background = background as GradientDrawable
+        val color = context.getColor(R.color.popup_shade_first)
+        val backgroundMask = GradientDrawable()
+        backgroundMask.setColor(color)
+        backgroundMask.shape = GradientDrawable.RECTANGLE
+        if (background.cornerRadii != null) {
+            backgroundMask.cornerRadii = background.cornerRadii
+        } else {
+            backgroundMask.cornerRadius = background.cornerRadius
+        }
+
+        setBackground(backgroundMask)
+    }
+
+    override fun addArrow() {
+        super.addArrow()
+        // Change arrow location to the middle of popup.
+        mArrow.x = (dividerView.x + dividerView.width / 2) - (mArrowWidth / 2)
+    }
+
+    override fun updateArrowColor() {
+        if (!Gravity.isVertical(mGravity)) {
+            mArrow.background =
+                RoundedArrowDrawable(
+                    arrowWidth,
+                    arrowHeight,
+                    arrowPointRadius,
+                    popupCornerRadius,
+                    measuredWidth.toFloat(),
+                    measuredHeight.toFloat(),
+                    (measuredWidth - arrowWidth) / 2, // arrowOffsetX
+                    0f, // arrowOffsetY
+                    false, // isPointingUp
+                    true, // leftAligned
+                    context.getColor(R.color.popup_shade_first),
+                )
+            elevation = mElevation
+            mArrow.elevation = mElevation
+        }
+    }
+
+    override fun closeComplete() {
+        onCloseCallback(didPreferenceChange)
+        super.closeComplete()
+    }
+
+    private fun onClickAlwaysShowTaskbarSwitchOption() {
+        didPreferenceChange = true
+        changePreference()
+        // Allow switch animation to finish and then close the popup.
+        postDelayed(DIVIDER_POPUP_CLOSING_DELAY) { close(true) }
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java
index c522888..040b8f7 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragController.java
@@ -15,12 +15,16 @@
  */
 package com.android.launcher3.taskbar;
 
+import static com.android.launcher3.AbstractFloatingView.TYPE_TASKBAR_ALL_APPS;
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_ALL_APPS;
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_PREDICTION;
 import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT;
+import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ValueAnimator;
+import android.annotation.NonNull;
 import android.content.ClipData;
 import android.content.ClipDescription;
 import android.content.Intent;
@@ -29,29 +33,29 @@
 import android.graphics.Canvas;
 import android.graphics.Point;
 import android.graphics.Rect;
+import android.graphics.RectF;
 import android.graphics.drawable.Drawable;
 import android.os.UserHandle;
+import android.util.Log;
+import android.util.Pair;
 import android.view.DragEvent;
 import android.view.MotionEvent;
 import android.view.SurfaceControl;
 import android.view.View;
 import android.view.ViewRootImpl;
-import android.window.SurfaceSyncer;
+import android.window.SurfaceSyncGroup;
 
 import androidx.annotation.Nullable;
 
 import com.android.internal.logging.InstanceId;
-import com.android.internal.logging.InstanceIdSequence;
 import com.android.launcher3.AbstractFloatingView;
 import com.android.launcher3.BubbleTextView;
 import com.android.launcher3.DragSource;
 import com.android.launcher3.DropTarget;
 import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.R;
-import com.android.launcher3.Utilities;
 import com.android.launcher3.accessibility.DragViewStateAnnouncer;
 import com.android.launcher3.anim.Interpolators;
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.dragndrop.DragController;
 import com.android.launcher3.dragndrop.DragDriver;
 import com.android.launcher3.dragndrop.DragOptions;
@@ -65,10 +69,14 @@
 import com.android.launcher3.shortcuts.DeepShortcutView;
 import com.android.launcher3.shortcuts.ShortcutDragPreviewProvider;
 import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
+import com.android.launcher3.util.DisplayController;
 import com.android.launcher3.util.IntSet;
 import com.android.launcher3.util.ItemInfoMatcher;
+import com.android.quickstep.util.LogUtils;
+import com.android.quickstep.util.MultiValueUpdateListener;
 import com.android.systemui.shared.recents.model.Task;
+import com.android.wm.shell.draganddrop.DragAndDropConstants;
 
 import java.io.PrintWriter;
 import java.util.Arrays;
@@ -80,8 +88,10 @@
  */
 public class TaskbarDragController extends DragController<BaseTaskbarContext> implements
         TaskbarControllers.LoggableTaskbarController {
+    private static final String TAG = "TaskbarDragController";
 
-    private static boolean DEBUG_DRAG_SHADOW_SURFACE = false;
+    private static final boolean DEBUG_DRAG_SHADOW_SURFACE = false;
+    private static final int ANIM_DURATION_RETURN_ICON_TO_TASKBAR = 300;
 
     private final int mDragIconSize;
     private final int[] mTempXY = new int[2];
@@ -97,6 +107,8 @@
 
     // Animation for the drag shadow back into position after an unsuccessful drag
     private ValueAnimator mReturnAnimator;
+    private boolean mDisallowGlobalDrag;
+    private boolean mDisallowLongClick;
 
     public TaskbarDragController(BaseTaskbarContext activity) {
         super(activity);
@@ -108,6 +120,14 @@
         mControllers = controllers;
     }
 
+    public void setDisallowGlobalDrag(boolean disallowGlobalDrag) {
+        mDisallowGlobalDrag = disallowGlobalDrag;
+    }
+
+    public void setDisallowLongClick(boolean disallowLongClick) {
+        mDisallowLongClick = disallowLongClick;
+    }
+
     /**
      * Attempts to start a system drag and drop operation for the given View, using its tag to
      * generate the ClipDescription and Intent.
@@ -129,10 +149,15 @@
             View view,
             @Nullable DragPreviewProvider dragPreviewProvider,
             @Nullable Point iconShift) {
-        if (!(view instanceof BubbleTextView)) {
+        if (!(view instanceof BubbleTextView) || mDisallowLongClick) {
             return false;
         }
         TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "onTaskbarItemLongClick");
+        if (TestProtocol.sDebugTracing) {
+            Log.d(TestProtocol.TWO_TASKBAR_LONG_CLICKS,
+                    "TaskbarDragController.startDragOnLongClick",
+                    new Throwable());
+        }
         BubbleTextView btv = (BubbleTextView) view;
         mActivity.onDragStart();
         btv.post(() -> {
@@ -140,7 +165,7 @@
             if (iconShift != null) {
                 dragView.animateShift(-iconShift.x, -iconShift.y);
             }
-            btv.getIcon().setIsDisabled(true);
+            btv.setIconDisabled(true);
             mControllers.taskbarAutohideSuspendController.updateFlag(
                     TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_DRAGGING, true);
         });
@@ -169,12 +194,10 @@
 
         DragOptions dragOptions = new DragOptions();
         dragOptions.preDragCondition = null;
-        if (FeatureFlags.ENABLE_TASKBAR_POPUP_MENU.get()) {
-            PopupContainerWithArrow<BaseTaskbarContext> popupContainer =
-                    mControllers.taskbarPopupController.showForIcon(btv);
-            if (popupContainer != null) {
-                dragOptions.preDragCondition = popupContainer.createPreDragCondition(false);
-            }
+        PopupContainerWithArrow<BaseTaskbarContext> popupContainer =
+                mControllers.taskbarPopupController.showForIcon(btv);
+        if (popupContainer != null) {
+            dragOptions.preDragCondition = popupContainer.createPreDragCondition(false);
         }
         if (dragOptions.preDragCondition == null) {
             dragOptions.preDragCondition = new DragOptions.PreDragCondition() {
@@ -182,17 +205,21 @@
 
                 @Override
                 public boolean shouldStartDrag(double distanceDragged) {
-                    return mDragView != null && mDragView.isAnimationFinished();
+                    return mDragView != null && mDragView.isScaleAnimationFinished();
                 }
 
                 @Override
                 public void onPreDragStart(DropTarget.DragObject dragObject) {
                     mDragView = dragObject.dragView;
 
-                    if (FeatureFlags.ENABLE_TASKBAR_POPUP_MENU.get()
-                            && !shouldStartDrag(0)) {
-                        // Immediately close the popup menu.
-                        mDragView.setOnAnimationEndCallback(() -> callOnDragStart());
+                    if (!shouldStartDrag(0)) {
+                        mDragView.setOnAnimationEndCallback(() -> {
+                            // Drag might be cancelled during the DragView animation, so check
+                            // mIsPreDrag again.
+                            if (mIsInPreDrag) {
+                                callOnDragStart();
+                            }
+                        });
                     }
                 }
 
@@ -211,7 +238,6 @@
                 dragLayerY,
                 (View target, DropTarget.DragObject d, boolean success) -> {} /* DragSource */,
                 (ItemInfo) btv.getTag(),
-                /* dragVisualizeOffset = */ null,
                 dragRect,
                 scale * iconScale,
                 scale,
@@ -221,7 +247,7 @@
     @Override
     protected DragView startDrag(@Nullable Drawable drawable, @Nullable View view,
             DraggableView originalView, int dragLayerX, int dragLayerY, DragSource source,
-            ItemInfo dragInfo, Point dragOffset, Rect dragRegion, float initialDragViewScale,
+            ItemInfo dragInfo, Rect dragRegion, float initialDragViewScale,
             float dragViewScaleOnDrop, DragOptions options) {
         mOptions = options;
 
@@ -286,7 +312,10 @@
     protected void callOnDragStart() {
         super.callOnDragStart();
         // Pre-drag has ended, start the global system drag.
-        AbstractFloatingView.closeAllOpenViews(mActivity);
+        if (mDisallowGlobalDrag) {
+            AbstractFloatingView.closeAllOpenViewsExcept(mActivity, TYPE_TASKBAR_ALL_APPS);
+            return;
+        }
         startSystemDrag((BubbleTextView) mDragObject.originalView);
     }
 
@@ -296,12 +325,26 @@
             @Override
             public void onProvideShadowMetrics(Point shadowSize, Point shadowTouchPoint) {
                 int iconSize = Math.max(mDragIconSize, btv.getWidth());
-                shadowSize.set(iconSize, iconSize);
+                if (iconSize > 0) {
+                    shadowSize.set(iconSize, iconSize);
+                } else {
+                    Log.d(TAG, "Invalid icon size, dragSize=" + mDragIconSize
+                            + " viewWidth=" + btv.getWidth());
+                }
+
                 // The registration point was taken before the icon scaled to mDragIconSize, so
                 // offset the registration to where the touch is on the new size.
                 int offsetX = (mDragIconSize - mDragObject.dragView.getDragRegionWidth()) / 2;
                 int offsetY = (mDragIconSize - mDragObject.dragView.getDragRegionHeight()) / 2;
-                shadowTouchPoint.set(mRegistrationX + offsetX, mRegistrationY + offsetY);
+                int touchX = mRegistrationX + offsetX;
+                int touchY = mRegistrationY + offsetY;
+                if (touchX >= 0 && touchY >= 0) {
+                    shadowTouchPoint.set(touchX, touchY);
+                } else {
+                    Log.d(TAG, "Invalid touch point, "
+                            + "registrationXY=(" + mRegistrationX + ", " + mRegistrationY + ") "
+                            + "offsetXY=(" + offsetX + ", " + offsetY + ")");
+                }
             }
 
             @Override
@@ -310,7 +353,7 @@
                 if (DEBUG_DRAG_SHADOW_SURFACE) {
                     canvas.drawColor(0xffff0000);
                 }
-                float scale = mDragObject.dragView.getScaleX();
+                float scale = mDragObject.dragView.getEndScale();
                 canvas.scale(scale, scale);
                 mDragObject.dragView.draw(canvas);
                 canvas.restore();
@@ -358,13 +401,22 @@
         }
 
         if (clipDescription != null && intent != null) {
+            Pair<InstanceId, com.android.launcher3.logging.InstanceId> instanceIds =
+                    LogUtils.getShellShareableInstanceId();
             // Need to share the same InstanceId between launcher3 and WM Shell (internal).
-            InstanceId internalInstanceId = new InstanceIdSequence(
-                    com.android.launcher3.logging.InstanceId.INSTANCE_ID_MAX).newInstanceId();
-            com.android.launcher3.logging.InstanceId launcherInstanceId =
-                    new com.android.launcher3.logging.InstanceId(internalInstanceId.getId());
+            InstanceId internalInstanceId = instanceIds.first;
+            com.android.launcher3.logging.InstanceId launcherInstanceId = instanceIds.second;
 
             intent.putExtra(ClipDescription.EXTRA_LOGGING_INSTANCE_ID, internalInstanceId);
+            if (DisplayController.isTransientTaskbar(mActivity)) {
+                // Tell WM Shell to ignore drag events in the provided transient taskbar region.
+                TaskbarDragLayer dragLayer = mControllers.taskbarActivityContext.getDragLayer();
+                int[] locationOnScreen = dragLayer.getLocationOnScreen();
+                RectF disallowExternalDropRegion = new RectF(dragLayer.getLastDrawnTransientRect());
+                disallowExternalDropRegion.offset(locationOnScreen[0], locationOnScreen[1]);
+                intent.putExtra(DragAndDropConstants.EXTRA_DISALLOW_HIT_REGION,
+                        disallowExternalDropRegion);
+            }
 
             ClipData clipData = new ClipData(clipDescription, new ClipData.Item(intent));
             if (btv.startDragAndDrop(clipData, shadowBuilder, null /* localState */,
@@ -377,6 +429,9 @@
                         .log(StatsLogManager.LauncherEvent.LAUNCHER_ITEM_DRAG_STARTED);
             }
         }
+
+        // Wait to close until after system drag has started, if applicable.
+        AbstractFloatingView.closeAllOpenViews(mActivity);
     }
 
     private void onSystemDragStarted(BubbleTextView btv) {
@@ -394,6 +449,8 @@
                         // This will take care of calling maybeOnDragEnd() after the animation
                         animateGlobalDragViewToOriginalPosition(btv, dragEvent);
                     }
+                    mActivity.getDragLayer().setOnDragListener(null);
+
                     return true;
             }
             return false;
@@ -412,14 +469,60 @@
 
     private void maybeOnDragEnd() {
         if (!isDragging()) {
-            ((BubbleTextView) mDragObject.originalView).getIcon().setIsDisabled(false);
+            ((BubbleTextView) mDragObject.originalView).setIconDisabled(false);
             mControllers.taskbarAutohideSuspendController.updateFlag(
                     TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_DRAGGING, false);
             mActivity.onDragEnd();
+            if (mReturnAnimator == null) {
+                // Upon successful drag, immediately stash taskbar.
+                // Note, this must be done last to ensure no AutohideSuspendFlags are active, as
+                // that will prevent us from stashing until the timeout.
+                mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(true);
+            }
         }
     }
 
     @Override
+    protected void endDrag() {
+        if (mDisallowGlobalDrag) {
+            // We need to explicitly set deferDragViewCleanupPostAnimation to true here so the
+            // super call doesn't remove it from the drag layer before the animation completes.
+            // This variable gets set in to false in super.dispatchDropComplete() because it
+            // (rightfully so, perhaps) thinks this drag operation has failed, and does its own
+            // internal cleanup.
+            // Another way to approach this would be to make all of overview a drop target and
+            // accept the drop as successful and then run the setupReturnDragAnimator to simulate
+            // drop failure to the user
+            mDragObject.deferDragViewCleanupPostAnimation = true;
+
+            float fromX = mDragObject.x - mDragObject.xOffset;
+            float fromY = mDragObject.y - mDragObject.yOffset;
+            DragView dragView = mDragObject.dragView;
+            setupReturnDragAnimator(fromX, fromY, (View) mDragObject.originalView,
+                    (x, y, scale, alpha) -> {
+                        dragView.setTranslationX(x);
+                        dragView.setTranslationY(y);
+                        dragView.setScaleX(scale);
+                        dragView.setScaleY(scale);
+                        dragView.setAlpha(alpha);
+                    });
+            mReturnAnimator.addListener(new AnimatorListenerAdapter() {
+                @Override
+                public void onAnimationEnd(Animator animation) {
+                    callOnDragEnd();
+                    dragView.remove();
+                    dragView.clearAnimation();
+                    // Do this after callOnDragEnd(), because we use mReturnAnimator != null to
+                    // imply the drag was canceled rather than successful.
+                    mReturnAnimator = null;
+                }
+            });
+            mReturnAnimator.start();
+        }
+        super.endDrag();
+    }
+
+    @Override
     protected void callOnDragEnd() {
         super.callOnDragEnd();
         maybeOnDragEnd();
@@ -430,56 +533,20 @@
         SurfaceControl dragSurface = dragEvent.getDragSurface();
 
         // For top level icons, the target is the icon itself
-        View target = btv;
-        Object tag = btv.getTag();
-        if (tag instanceof ItemInfo) {
-            ItemInfo item = (ItemInfo) tag;
-            TaskbarViewController taskbarViewController = mControllers.taskbarViewController;
-            if (item.container == CONTAINER_ALL_APPS) {
-                // Since all apps closes when the drag starts, target the all apps button instead.
-                target = taskbarViewController.getAllAppsButtonView();
-            } else if (item.container >= 0) {
-                // Since folders close when the drag starts, target the folder icon instead.
-                Predicate<ItemInfo> matcher = ItemInfoMatcher.forFolderMatch(
-                        ItemInfoMatcher.ofItemIds(IntSet.wrap(item.id)));
-                target = taskbarViewController.getFirstIconMatch(matcher);
-            } else if (item.itemType == ITEM_TYPE_DEEP_SHORTCUT) {
-                // Find first icon with same package/user as the deep shortcut.
-                Predicate<ItemInfo> packageUserMatcher = ItemInfoMatcher.ofPackages(
-                        Collections.singleton(item.getTargetPackage()), item.user);
-                target = taskbarViewController.getFirstIconMatch(packageUserMatcher);
-            }
-        }
-
-        // Finish any pending return animation before starting a new drag
-        if (mReturnAnimator != null) {
-            mReturnAnimator.end();
-        }
+        View target = findTaskbarTargetForIconView(btv);
 
         float fromX = dragEvent.getX() - dragEvent.getOffsetX();
         float fromY = dragEvent.getY() - dragEvent.getOffsetY();
-        int[] toPosition = target.getLocationOnScreen();
-        float toScale = (float) target.getWidth() / mDragIconSize;
-        float toAlpha = (target == btv) ? 1f : 0f;
         final ViewRootImpl viewRoot = target.getViewRootImpl();
         SurfaceControl.Transaction tx = new SurfaceControl.Transaction();
-        mReturnAnimator = ValueAnimator.ofFloat(0f, 1f);
-        mReturnAnimator.setDuration(300);
-        mReturnAnimator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN);
-        mReturnAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
-            @Override
-            public void onAnimationUpdate(ValueAnimator animation) {
-                float t = animation.getAnimatedFraction();
-                float accelT = Interpolators.ACCEL_2.getInterpolation(t);
-                float scale = 1f - t * (1f - toScale);
-                float alpha = 1f - accelT * (1f - toAlpha);
-                tx.setPosition(dragSurface, Utilities.mapRange(t, fromX, toPosition[0]),
-                        Utilities.mapRange(t, fromY, toPosition[1]));
-                tx.setScale(dragSurface, scale, scale);
-                tx.setAlpha(dragSurface, alpha);
-                tx.apply();
-            }
-        });
+        setupReturnDragAnimator(fromX, fromY, btv,
+                (x, y, scale, alpha) -> {
+                    tx.setPosition(dragSurface, x, y);
+                    tx.setScale(dragSurface, scale, scale);
+                    tx.setAlpha(dragSurface, alpha);
+                    tx.apply();
+                });
+
         mReturnAnimator.addListener(new AnimatorListenerAdapter() {
             private boolean mCanceled = false;
 
@@ -504,17 +571,89 @@
                 // maybeOnDragEnd()
                 SurfaceControl.Transaction transaction = new SurfaceControl.Transaction();
                 transaction.remove(dragSurface);
-                SurfaceSyncer syncer = new SurfaceSyncer();
-                int syncId = syncer.setupSync(transaction::close);
-                syncer.addToSync(syncId, viewRoot.getView());
-                syncer.addTransactionToSync(syncId, transaction);
-                syncer.markSyncReady(syncId);
+                SurfaceSyncGroup syncGroup = new SurfaceSyncGroup("TaskBarController");
+                syncGroup.addSyncCompleteCallback(mActivity.getMainExecutor(), transaction::close);
+                syncGroup.add(viewRoot, null /* runnable */);
+                syncGroup.addTransaction(transaction);
+                syncGroup.markSyncReady();
+                // Do this after maybeOnDragEnd(), because we use mReturnAnimator != null to imply
+                // the drag was canceled rather than successful.
                 mReturnAnimator = null;
             }
         });
         mReturnAnimator.start();
     }
 
+    private View findTaskbarTargetForIconView(@NonNull View iconView) {
+        Object tag = iconView.getTag();
+        TaskbarViewController taskbarViewController = mControllers.taskbarViewController;
+
+        if (tag instanceof ItemInfo) {
+            ItemInfo item = (ItemInfo) tag;
+            if (item.container == CONTAINER_ALL_APPS || item.container == CONTAINER_PREDICTION) {
+                if (mDisallowGlobalDrag) {
+                    // We're dragging in taskbarAllApps, we don't have folders or shortcuts
+                    return iconView;
+                }
+                // Since all apps closes when the drag starts, target the all apps button instead.
+                return taskbarViewController.getAllAppsButtonView();
+            } else if (item.container >= 0) {
+                // Since folders close when the drag starts, target the folder icon instead.
+                Predicate<ItemInfo> matcher = ItemInfoMatcher.forFolderMatch(
+                        ItemInfoMatcher.ofItemIds(IntSet.wrap(item.id)));
+                return taskbarViewController.getFirstIconMatch(matcher);
+            } else if (item.itemType == ITEM_TYPE_DEEP_SHORTCUT) {
+                // Find first icon with same package/user as the deep shortcut.
+                Predicate<ItemInfo> packageUserMatcher = ItemInfoMatcher.ofPackages(
+                        Collections.singleton(item.getTargetPackage()), item.user);
+                return taskbarViewController.getFirstIconMatch(packageUserMatcher);
+            }
+        }
+        return iconView;
+    }
+
+    private void setupReturnDragAnimator(float fromX, float fromY, View originalView,
+            TaskbarReturnPropertiesListener animListener) {
+        // Finish any pending return animation before starting a new return
+        if (mReturnAnimator != null) {
+            mReturnAnimator.end();
+        }
+
+        // For top level icons, the target is the icon itself
+        View target = findTaskbarTargetForIconView(originalView);
+
+        int[] toPosition = target.getLocationOnScreen();
+        float iconSize = target.getWidth();
+        if (target instanceof BubbleTextView) {
+            Rect bounds = new Rect();
+            ((BubbleTextView) target).getSourceVisualDragBounds(bounds);
+            toPosition[0] += bounds.left;
+            toPosition[1] += bounds.top;
+            iconSize = bounds.width();
+        }
+        float toScale = iconSize / mDragIconSize;
+        float toAlpha = (target == originalView) ? 1f : 0f;
+        MultiValueUpdateListener listener = new MultiValueUpdateListener() {
+            final FloatProp mDx = new FloatProp(fromX, toPosition[0], 0,
+                    ANIM_DURATION_RETURN_ICON_TO_TASKBAR, Interpolators.FAST_OUT_SLOW_IN);
+            final FloatProp mDy = new FloatProp(fromY, toPosition[1], 0,
+                    ANIM_DURATION_RETURN_ICON_TO_TASKBAR,
+                    FAST_OUT_SLOW_IN);
+            final FloatProp mScale = new FloatProp(1f, toScale, 0,
+                    ANIM_DURATION_RETURN_ICON_TO_TASKBAR, FAST_OUT_SLOW_IN);
+            final FloatProp mAlpha = new FloatProp(1f, toAlpha, 0,
+                    ANIM_DURATION_RETURN_ICON_TO_TASKBAR, Interpolators.ACCEL_2);
+            @Override
+            public void onUpdate(float percent, boolean initOnly) {
+                animListener.updateDragShadow(mDx.value, mDy.value, mScale.value, mAlpha.value);
+            }
+        };
+        mReturnAnimator = ValueAnimator.ofFloat(0f, 1f);
+        mReturnAnimator.setDuration(ANIM_DURATION_RETURN_ICON_TO_TASKBAR);
+        mReturnAnimator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN);
+        mReturnAnimator.addUpdateListener(listener);
+    }
+
     @Override
     protected float getX(MotionEvent ev) {
         // We will resize to fill the screen while dragging, so use screen coordinates. This ensures
@@ -538,7 +677,7 @@
 
     @Override
     protected void exitDrag() {
-        if (mDragObject != null) {
+        if (mDragObject != null && !mDisallowGlobalDrag) {
             mActivity.getDragLayer().removeView(mDragObject.dragView);
         }
     }
@@ -554,17 +693,21 @@
         return null;
     }
 
+    interface TaskbarReturnPropertiesListener {
+        void updateDragShadow(float x, float y, float scale, float alpha);
+    }
+
     @Override
     public void dumpLogs(String prefix, PrintWriter pw) {
         pw.println(prefix + "TaskbarDragController:");
 
-        pw.println(String.format("%s\tmDragIconSize=%dpx", prefix, mDragIconSize));
-        pw.println(String.format("%s\tmTempXY=%s", prefix, Arrays.toString(mTempXY)));
-        pw.println(String.format("%s\tmRegistrationX=%d", prefix, mRegistrationX));
-        pw.println(String.format("%s\tmRegistrationY=%d", prefix, mRegistrationY));
-        pw.println(String.format(
-                "%s\tmIsSystemDragInProgress=%b", prefix, mIsSystemDragInProgress));
-        pw.println(String.format(
-                "%s\tisInternalDragInProgess=%b", prefix, super.isDragging()));
+        pw.println(prefix + "\tmDragIconSize=" + mDragIconSize);
+        pw.println(prefix + "\tmTempXY=" + Arrays.toString(mTempXY));
+        pw.println(prefix + "\tmRegistrationX=" + mRegistrationX);
+        pw.println(prefix + "\tmRegistrationY=" + mRegistrationY);
+        pw.println(prefix + "\tmIsSystemDragInProgress=" + mIsSystemDragInProgress);
+        pw.println(prefix + "\tisInternalDragInProgess=" + super.isDragging());
+        pw.println(prefix + "\tmDisallowGlobalDrag=" + mDisallowGlobalDrag);
+        pw.println(prefix + "\tmDisallowLongClick=" + mDisallowLongClick);
     }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java
index c1a6185..7681fe0 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java
@@ -20,21 +20,20 @@
 
 import android.content.Context;
 import android.graphics.Canvas;
+import android.graphics.RectF;
 import android.util.AttributeSet;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.ViewTreeObserver;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import com.android.launcher3.AbstractFloatingView;
 import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.views.BaseDragLayer;
-import com.android.systemui.shared.system.ViewTreeObserverWrapper;
-import com.android.systemui.shared.system.ViewTreeObserverWrapper.InsetsInfo;
-import com.android.systemui.shared.system.ViewTreeObserverWrapper.OnComputeInsetsListener;
 
 /**
  * Top-level ViewGroup that hosts the TaskbarView as well as Views created by it such as Folder.
@@ -42,7 +41,8 @@
 public class TaskbarDragLayer extends BaseDragLayer<TaskbarActivityContext> {
 
     private final TaskbarBackgroundRenderer mBackgroundRenderer;
-    private final OnComputeInsetsListener mTaskbarInsetsComputer = this::onComputeTaskbarInsets;
+    private final ViewTreeObserver.OnComputeInternalInsetsListener mTaskbarInsetsComputer =
+            this::onComputeTaskbarInsets;
 
     // Initialized in init.
     private TaskbarDragLayerController.TaskbarDragLayerCallbacks mControllerCallbacks;
@@ -71,7 +71,7 @@
 
     public void init(TaskbarDragLayerController.TaskbarDragLayerCallbacks callbacks) {
         mControllerCallbacks = callbacks;
-
+        mBackgroundRenderer.updateStashedHandleWidth(mActivity.getDeviceProfile(), getResources());
         recreateControllers();
     }
 
@@ -80,28 +80,33 @@
         mControllers = mControllerCallbacks.getTouchControllers();
     }
 
-    private void onComputeTaskbarInsets(InsetsInfo insetsInfo) {
+    private void onComputeTaskbarInsets(ViewTreeObserver.InternalInsetsInfo insetsInfo) {
         if (mControllerCallbacks != null) {
             mControllerCallbacks.updateInsetsTouchability(insetsInfo);
         }
     }
 
+    protected void onDestroy(boolean forceDestroy) {
+        if (forceDestroy) {
+            getViewTreeObserver().removeOnComputeInternalInsetsListener(mTaskbarInsetsComputer);
+        }
+    }
+
     protected void onDestroy() {
-        ViewTreeObserverWrapper.removeOnComputeInsetsListener(mTaskbarInsetsComputer);
+        onDestroy(!TaskbarManager.FLAG_HIDE_NAVBAR_WINDOW);
     }
 
     @Override
     protected void onAttachedToWindow() {
         super.onAttachedToWindow();
-        ViewTreeObserverWrapper.addOnComputeInsetsListener(getViewTreeObserver(),
-                mTaskbarInsetsComputer);
+        getViewTreeObserver().addOnComputeInternalInsetsListener(mTaskbarInsetsComputer);
     }
 
     @Override
     protected void onDetachedFromWindow() {
         super.onDetachedFromWindow();
 
-        onDestroy();
+        onDestroy(true);
     }
 
     @Override
@@ -146,6 +151,36 @@
         invalidate();
     }
 
+    /**
+     * Sets the roundness of the round corner above Taskbar.
+     * @param cornerRoundness 0 has no round corner, 1 has complete round corner.
+     */
+    protected void setCornerRoundness(float cornerRoundness) {
+        mBackgroundRenderer.setCornerRoundness(cornerRoundness);
+        invalidate();
+    }
+
+    /*
+     * Sets the translation of the background during the swipe up gesture.
+     */
+    protected void setBackgroundTranslationYForSwipe(float translationY) {
+        mBackgroundRenderer.setTranslationYForSwipe(translationY);
+        invalidate();
+    }
+
+    /*
+     * Sets the translation of the background during the spring on stash animation.
+     */
+    protected void setBackgroundTranslationYForStash(float translationY) {
+        mBackgroundRenderer.setTranslationYForStash(translationY);
+        invalidate();
+    }
+
+    /** Returns the bounds in DragLayer coordinates of where the transient background was drawn. */
+    protected RectF getLastDrawnTransientRect() {
+        return mBackgroundRenderer.getLastDrawnTransientRect();
+    }
+
     @Override
     public boolean dispatchTouchEvent(MotionEvent ev) {
         TestLogging.recordMotionEvent(TestProtocol.SEQUENCE_MAIN, "Touch event", ev);
@@ -157,11 +192,21 @@
     public boolean dispatchKeyEvent(KeyEvent event) {
         if (event.getAction() == ACTION_UP && event.getKeyCode() == KEYCODE_BACK) {
             AbstractFloatingView topView = AbstractFloatingView.getTopOpenView(mActivity);
-            if (topView != null && topView.onBackPressed()) {
+            if (topView != null && topView.canHandleBack()) {
+                topView.onBackInvoked();
                 // Handled by the floating view.
                 return true;
             }
         }
         return super.dispatchKeyEvent(event);
     }
+
+    /**
+     * Sets the width percentage to inset the transient taskbar's background from the left and from
+     * the right.
+     */
+    public void setBackgroundHorizontalInsets(float insetPercentage) {
+        mBackgroundRenderer.setBackgroundHorizontalInsets(insetPercentage);
+        invalidate();
+    }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java
index 99c59a8..888d535 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java
@@ -16,19 +16,23 @@
 package com.android.launcher3.taskbar;
 
 import android.content.res.Resources;
+import android.graphics.Point;
 import android.graphics.Rect;
+import android.view.ViewTreeObserver;
 
+import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.R;
+import com.android.launcher3.anim.AnimatedFloat;
+import com.android.launcher3.util.DimensionUtils;
 import com.android.launcher3.util.TouchController;
-import com.android.quickstep.AnimatedFloat;
-import com.android.systemui.shared.system.ViewTreeObserverWrapper.InsetsInfo;
 
 import java.io.PrintWriter;
 
 /**
  * Handles properties/data collection, then passes the results to TaskbarDragLayer to render.
  */
-public class TaskbarDragLayerController implements TaskbarControllers.LoggableTaskbarController {
+public class TaskbarDragLayerController implements TaskbarControllers.LoggableTaskbarController,
+        TaskbarControllers.BackgroundRendererController {
 
     private final TaskbarActivityContext mActivity;
     private final TaskbarDragLayer mTaskbarDragLayer;
@@ -41,15 +45,22 @@
     private final AnimatedFloat mNotificationShadeBgTaskbar = new AnimatedFloat(
             this::updateBackgroundAlpha);
     private final AnimatedFloat mImeBgTaskbar = new AnimatedFloat(this::updateBackgroundAlpha);
+    private final AnimatedFloat mAssistantBgTaskbar = new AnimatedFloat(
+            this::updateBackgroundAlpha);
     // Used to hide our background color when someone else (e.g. ScrimView) is handling it.
     private final AnimatedFloat mBgOverride = new AnimatedFloat(this::updateBackgroundAlpha);
 
     // Translation property for taskbar background.
     private final AnimatedFloat mBgOffset = new AnimatedFloat(this::updateBackgroundOffset);
 
+    // Used to fade in/out the entirety of the taskbar, for a smooth transition before/after sysui
+    // changes the inset visibility.
+    private final AnimatedFloat mTaskbarAlpha = new AnimatedFloat(this::updateTaskbarAlpha);
+
     // Initialized in init.
     private TaskbarControllers mControllers;
-    private AnimatedFloat mNavButtonDarkIntensityMultiplier;
+    private TaskbarStashViaTouchController mTaskbarStashViaTouchController;
+    private AnimatedFloat mOnBackgroundNavButtonColorIntensity;
 
     private float mLastSetBackgroundAlpha;
 
@@ -63,17 +74,22 @@
 
     public void init(TaskbarControllers controllers) {
         mControllers = controllers;
+        mTaskbarStashViaTouchController = new TaskbarStashViaTouchController(mControllers);
         mTaskbarDragLayer.init(new TaskbarDragLayerCallbacks());
 
-        mNavButtonDarkIntensityMultiplier = mControllers.navbarButtonsViewController
-                .getNavButtonDarkIntensityMultiplier();
+        mOnBackgroundNavButtonColorIntensity = mControllers.navbarButtonsViewController
+                .getOnTaskbarBackgroundNavButtonColorOverride();
 
         mBgTaskbar.value = 1;
         mKeyguardBgTaskbar.value = 1;
         mNotificationShadeBgTaskbar.value = 1;
         mImeBgTaskbar.value = 1;
+        mAssistantBgTaskbar.value = 1;
         mBgOverride.value = 1;
         updateBackgroundAlpha();
+
+        mTaskbarAlpha.value = 1;
+        updateTaskbarAlpha();
     }
 
     public void onDestroy() {
@@ -85,7 +101,8 @@
      */
     public Rect getFolderBoundingBox() {
         Rect boundingBox = new Rect(0, 0, mTaskbarDragLayer.getWidth(),
-                mTaskbarDragLayer.getHeight() - mActivity.getDeviceProfile().taskbarSize);
+                mTaskbarDragLayer.getHeight() - mActivity.getDeviceProfile().taskbarHeight
+                        - mActivity.getDeviceProfile().taskbarBottomMargin);
         boundingBox.inset(mFolderMargin, mFolderMargin);
         return boundingBox;
     }
@@ -110,44 +127,102 @@
         return mImeBgTaskbar;
     }
 
-    public AnimatedFloat getOverrideBackgroundAlpha() {
-        return mBgOverride;
+    public AnimatedFloat getAssistantBgTaskbar() {
+        return mAssistantBgTaskbar;
     }
 
     public AnimatedFloat getTaskbarBackgroundOffset() {
         return mBgOffset;
     }
 
+    public AnimatedFloat getTaskbarAlpha() {
+        return mTaskbarAlpha;
+    }
+
+    /**
+     * Make updates when configuration changes.
+     */
+    public void onConfigurationChanged() {
+        mTaskbarStashViaTouchController.updateGestureHeight();
+    }
+
     private void updateBackgroundAlpha() {
         final float bgNavbar = mBgNavbar.value;
         final float bgTaskbar = mBgTaskbar.value * mKeyguardBgTaskbar.value
-                * mNotificationShadeBgTaskbar.value * mImeBgTaskbar.value;
+                * mNotificationShadeBgTaskbar.value * mImeBgTaskbar.value
+                * mAssistantBgTaskbar.value;
         mLastSetBackgroundAlpha = mBgOverride.value * Math.max(bgNavbar, bgTaskbar);
         mTaskbarDragLayer.setTaskbarBackgroundAlpha(mLastSetBackgroundAlpha);
 
-        updateNavBarDarkIntensityMultiplier();
+        updateOnBackgroundNavButtonColorIntensity();
+    }
+
+    /**
+     * Sets the translation of the background during the swipe up gesture.
+     */
+    public void setTranslationYForSwipe(float transY) {
+        mTaskbarDragLayer.setBackgroundTranslationYForSwipe(transY);
+    }
+
+    /**
+     * Sets the translation of the background during the spring on stash animation.
+     */
+    public void setTranslationYForStash(float transY) {
+        mTaskbarDragLayer.setBackgroundTranslationYForStash(transY);
     }
 
     private void updateBackgroundOffset() {
         mTaskbarDragLayer.setTaskbarBackgroundOffset(mBgOffset.value);
 
-        updateNavBarDarkIntensityMultiplier();
+        updateOnBackgroundNavButtonColorIntensity();
     }
 
-    private void updateNavBarDarkIntensityMultiplier() {
-        // Zero out the app-requested dark intensity when we're drawing our own background.
-        float effectiveBgAlpha = mLastSetBackgroundAlpha * (1 - mBgOffset.value);
-        mNavButtonDarkIntensityMultiplier.updateValue(1 - effectiveBgAlpha);
+    private void updateTaskbarAlpha() {
+        mTaskbarDragLayer.setAlpha(mTaskbarAlpha.value);
+    }
+
+    @Override
+    public void setCornerRoundness(float cornerRoundness) {
+        mTaskbarDragLayer.setCornerRoundness(cornerRoundness);
+    }
+
+    /**
+     * Set if another controller is temporarily handling background drawing. In this case we
+     * override our background alpha to be {@code 0}.
+     */
+    public void setIsBackgroundDrawnElsewhere(boolean isBackgroundDrawnElsewhere) {
+        mBgOverride.updateValue(isBackgroundDrawnElsewhere ? 0 : 1);
+    }
+
+    private void updateOnBackgroundNavButtonColorIntensity() {
+        mOnBackgroundNavButtonColorIntensity.updateValue(
+                mLastSetBackgroundAlpha * (1 - mBgOffset.value));
+    }
+
+    /**
+     * Sets the width percentage to inset the transient taskbar's background from the left and from
+     * the right.
+     */
+    public void setBackgroundHorizontalInsets(float insetPercentage) {
+        mTaskbarDragLayer.setBackgroundHorizontalInsets(insetPercentage);
+
     }
 
     @Override
     public void dumpLogs(String prefix, PrintWriter pw) {
         pw.println(prefix + "TaskbarDragLayerController:");
 
-        pw.println(String.format("%s\tmBgOffset=%.2f", prefix, mBgOffset.value));
-        pw.println(String.format("%s\tmFolderMargin=%dpx", prefix, mFolderMargin));
-        pw.println(String.format(
-                "%s\tmLastSetBackgroundAlpha=%.2f", prefix, mLastSetBackgroundAlpha));
+        pw.println(prefix + "\tmBgOffset=" + mBgOffset.value);
+        pw.println(prefix + "\tmTaskbarAlpha=" + mTaskbarAlpha.value);
+        pw.println(prefix + "\tmFolderMargin=" + mFolderMargin);
+        pw.println(prefix + "\tmLastSetBackgroundAlpha=" + mLastSetBackgroundAlpha);
+        pw.println(prefix + "\t\tmBgOverride=" + mBgOverride.value);
+        pw.println(prefix + "\t\tmBgNavbar=" + mBgNavbar.value);
+        pw.println(prefix + "\t\tmBgTaskbar=" + mBgTaskbar.value);
+        pw.println(prefix + "\t\tmKeyguardBgTaskbar=" + mKeyguardBgTaskbar.value);
+        pw.println(prefix + "\t\tmNotificationShadeBgTaskbar=" + mNotificationShadeBgTaskbar.value);
+        pw.println(prefix + "\t\tmImeBgTaskbar=" + mImeBgTaskbar.value);
+        pw.println(prefix + "\t\tmAssistantBgTaskbar=" + mAssistantBgTaskbar.value);
     }
 
     /**
@@ -157,9 +232,9 @@
 
         /**
          * Called to update the touchable insets.
-         * @see InsetsInfo#setTouchableInsets(int)
+         * @see ViewTreeObserver.InternalInsetsInfo#setTouchableInsets(int)
          */
-        public void updateInsetsTouchability(InsetsInfo insetsInfo) {
+        public void updateInsetsTouchability(ViewTreeObserver.InternalInsetsInfo insetsInfo) {
             mControllers.taskbarInsetsController.updateInsetsTouchability(insetsInfo);
         }
 
@@ -167,23 +242,37 @@
          * Called when a child is removed from TaskbarDragLayer.
          */
         public void onDragLayerViewRemoved() {
-            mActivity.maybeSetTaskbarWindowNotFullscreen();
+            mActivity.onDragEndOrViewRemoved();
         }
 
         /**
          * Returns how tall the background should be drawn at the bottom of the screen.
          */
         public int getTaskbarBackgroundHeight() {
-            return mActivity.getDeviceProfile().taskbarSize;
+            DeviceProfile deviceProfile = mActivity.getDeviceProfile();
+            if (TaskbarManager.isPhoneMode(deviceProfile)) {
+                Resources resources = mActivity.getResources();
+                Point taskbarDimensions =
+                        DimensionUtils.getTaskbarPhoneDimensions(deviceProfile, resources,
+                                TaskbarManager.isPhoneMode(deviceProfile));
+                return taskbarDimensions.y == -1 ?
+                        deviceProfile.getDisplayInfo().currentSize.y :
+                        taskbarDimensions.y;
+            } else {
+                return deviceProfile.taskbarHeight;
+            }
         }
 
         /**
          * Returns touch controllers.
          */
         public TouchController[] getTouchControllers() {
-            return new TouchController[]{mActivity.getDragController(),
+            return new TouchController[] {
+                    mActivity.getDragController(),
                     mControllers.taskbarForceVisibleImmersiveController,
-                    mControllers.navbarButtonsViewController.getTouchController()};
+                    mControllers.navbarButtonsViewController.getTouchController(),
+                    mTaskbarStashViaTouchController,
+            };
         }
     }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduController.java
deleted file mode 100644
index e29b14b..0000000
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduController.java
+++ /dev/null
@@ -1,223 +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.launcher3.taskbar;
-
-import static com.android.launcher3.LauncherAnimUtils.SCALE_PROPERTY;
-import static com.android.launcher3.anim.Interpolators.ACCEL_2;
-import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL;
-import static com.android.launcher3.anim.Interpolators.DEACCEL;
-import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
-
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.animation.AnimatorSet;
-import android.animation.Keyframe;
-import android.animation.ObjectAnimator;
-import android.animation.PropertyValuesHolder;
-import android.animation.TimeInterpolator;
-import android.content.res.Resources;
-import android.text.TextUtils;
-import android.view.View;
-
-import com.android.launcher3.R;
-import com.android.launcher3.icons.BitmapInfo;
-import com.android.launcher3.model.data.ItemInfo;
-import com.android.launcher3.uioverrides.PredictedAppIcon;
-
-import java.io.PrintWriter;
-import java.util.Collections;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/** Handles the Taskbar Education flow. */
-public class TaskbarEduController implements TaskbarControllers.LoggableTaskbarController {
-
-    private static final long WAVE_ANIM_DELAY = 250;
-    private static final long WAVE_ANIM_STAGGER = 50;
-    private static final long WAVE_ANIM_EACH_ICON_DURATION = 633;
-    private static final long WAVE_ANIM_SLOT_MACHINE_DURATION = 1085;
-    // The fraction of each icon's animation at which we reach the top point of the wave.
-    private static final float WAVE_ANIM_FRACTION_TOP = 0.4f;
-    // The fraction of each icon's animation at which we reach the bottom, before overshooting.
-    private static final float WAVE_ANIM_FRACTION_BOTTOM = 0.9f;
-    private static final TimeInterpolator WAVE_ANIM_TO_TOP_INTERPOLATOR = FAST_OUT_SLOW_IN;
-    private static final TimeInterpolator WAVE_ANIM_TO_BOTTOM_INTERPOLATOR = ACCEL_2;
-    private static final TimeInterpolator WAVE_ANIM_OVERSHOOT_INTERPOLATOR = DEACCEL;
-    private static final TimeInterpolator WAVE_ANIM_OVERSHOOT_RETURN_INTERPOLATOR = ACCEL_DEACCEL;
-    private static final float WAVE_ANIM_ICON_SCALE = 1.2f;
-    // How many icons to cycle through in the slot machine (+ the original icon at each end).
-    private static final int WAVE_ANIM_SLOT_MACHINE_NUM_ICONS = 3;
-
-    private final TaskbarActivityContext mActivity;
-    private final float mWaveAnimTranslationY;
-    private final float mWaveAnimTranslationYReturnOvershoot;
-
-    // Initialized in init.
-    TaskbarControllers mControllers;
-
-    private TaskbarEduView mTaskbarEduView;
-    private Animator mAnim;
-
-    public TaskbarEduController(TaskbarActivityContext activity) {
-        mActivity = activity;
-
-        final Resources resources = activity.getResources();
-        mWaveAnimTranslationY = resources.getDimension(R.dimen.taskbar_edu_wave_anim_trans_y);
-        mWaveAnimTranslationYReturnOvershoot = resources.getDimension(
-                R.dimen.taskbar_edu_wave_anim_trans_y_return_overshoot);
-    }
-
-    public void init(TaskbarControllers controllers) {
-        mControllers = controllers;
-    }
-
-    void showEdu() {
-        mActivity.setTaskbarWindowFullscreen(true);
-        mActivity.getDragLayer().post(() -> {
-            mTaskbarEduView = (TaskbarEduView) mActivity.getLayoutInflater().inflate(
-                    R.layout.taskbar_edu, mActivity.getDragLayer(), false);
-            mTaskbarEduView.init(new TaskbarEduCallbacks());
-            mTaskbarEduView.addOnCloseListener(() -> mTaskbarEduView = null);
-            mTaskbarEduView.show();
-            startAnim(createWaveAnim());
-        });
-    }
-
-    void hideEdu() {
-        if (mTaskbarEduView != null) {
-            mTaskbarEduView.close(true /* animate */);
-        }
-    }
-
-    /**
-     * Starts the given animation, ending the previous animation first if it's still playing.
-     */
-    private void startAnim(Animator anim) {
-        if (mAnim != null) {
-            mAnim.end();
-        }
-        mAnim = anim;
-        mAnim.addListener(new AnimatorListenerAdapter() {
-            @Override
-            public void onAnimationEnd(Animator animation) {
-                mAnim = null;
-            }
-        });
-        mAnim.start();
-    }
-
-    /**
-     * Creates a staggered "wave" animation where each icon translates and scales up in succession.
-     */
-    private Animator createWaveAnim() {
-        AnimatorSet waveAnim = new AnimatorSet();
-        View[] icons = mControllers.taskbarViewController.getIconViews();
-        for (int i = 0; i < icons.length; i++) {
-            View icon = icons[i];
-            AnimatorSet iconAnim = new AnimatorSet();
-
-            Keyframe[] scaleKeyframes = new Keyframe[] {
-                    Keyframe.ofFloat(0, 1f),
-                    Keyframe.ofFloat(WAVE_ANIM_FRACTION_TOP, WAVE_ANIM_ICON_SCALE),
-                    Keyframe.ofFloat(WAVE_ANIM_FRACTION_BOTTOM, 1f),
-                    Keyframe.ofFloat(1f, 1f)
-            };
-            scaleKeyframes[1].setInterpolator(WAVE_ANIM_TO_TOP_INTERPOLATOR);
-            scaleKeyframes[2].setInterpolator(WAVE_ANIM_TO_BOTTOM_INTERPOLATOR);
-
-            Keyframe[] translationYKeyframes = new Keyframe[] {
-                    Keyframe.ofFloat(0, 0f),
-                    Keyframe.ofFloat(WAVE_ANIM_FRACTION_TOP, -mWaveAnimTranslationY),
-                    Keyframe.ofFloat(WAVE_ANIM_FRACTION_BOTTOM, 0f),
-                    // Half of the remaining fraction overshoots, then the other half returns to 0.
-                    Keyframe.ofFloat(
-                            WAVE_ANIM_FRACTION_BOTTOM + (1 - WAVE_ANIM_FRACTION_BOTTOM) / 2f,
-                            mWaveAnimTranslationYReturnOvershoot),
-                    Keyframe.ofFloat(1f, 0f)
-            };
-            translationYKeyframes[1].setInterpolator(WAVE_ANIM_TO_TOP_INTERPOLATOR);
-            translationYKeyframes[2].setInterpolator(WAVE_ANIM_TO_BOTTOM_INTERPOLATOR);
-            translationYKeyframes[3].setInterpolator(WAVE_ANIM_OVERSHOOT_INTERPOLATOR);
-            translationYKeyframes[4].setInterpolator(WAVE_ANIM_OVERSHOOT_RETURN_INTERPOLATOR);
-
-            iconAnim.play(ObjectAnimator.ofPropertyValuesHolder(icon,
-                    PropertyValuesHolder.ofKeyframe(SCALE_PROPERTY, scaleKeyframes))
-                    .setDuration(WAVE_ANIM_EACH_ICON_DURATION));
-            iconAnim.play(ObjectAnimator.ofPropertyValuesHolder(icon,
-                    PropertyValuesHolder.ofKeyframe(View.TRANSLATION_Y, translationYKeyframes))
-                    .setDuration(WAVE_ANIM_EACH_ICON_DURATION));
-
-            if (icon instanceof PredictedAppIcon) {
-                // Play slot machine animation through random icons from AllAppsList.
-                PredictedAppIcon predictedAppIcon = (PredictedAppIcon) icon;
-                ItemInfo itemInfo = (ItemInfo) icon.getTag();
-                List<BitmapInfo> iconsToAnimate = mControllers.uiController.getAppIconsForEdu()
-                        .filter(appInfo -> !TextUtils.equals(appInfo.title, itemInfo.title))
-                        .map(appInfo -> appInfo.bitmap)
-                        .filter(bitmap -> !bitmap.isNullOrLowRes())
-                        .collect(Collectors.toList());
-                // Pick n icons at random.
-                Collections.shuffle(iconsToAnimate);
-                if (iconsToAnimate.size() > WAVE_ANIM_SLOT_MACHINE_NUM_ICONS) {
-                    iconsToAnimate = iconsToAnimate.subList(0, WAVE_ANIM_SLOT_MACHINE_NUM_ICONS);
-                }
-                Animator slotMachineAnim = predictedAppIcon.createSlotMachineAnim(iconsToAnimate);
-                if (slotMachineAnim != null) {
-                    iconAnim.play(slotMachineAnim.setDuration(WAVE_ANIM_SLOT_MACHINE_DURATION));
-                }
-            }
-
-            iconAnim.setStartDelay(WAVE_ANIM_STAGGER * i);
-            waveAnim.play(iconAnim);
-        }
-        waveAnim.setStartDelay(WAVE_ANIM_DELAY);
-        return waveAnim;
-    }
-
-    @Override
-    public void dumpLogs(String prefix, PrintWriter pw) {
-        pw.println(prefix + "TaskbarEduController:");
-
-        pw.println(String.format("%s\tisShowingEdu=%b", prefix, mTaskbarEduView != null));
-        pw.println(String.format("%s\tmWaveAnimTranslationY=%.2f", prefix, mWaveAnimTranslationY));
-        pw.println(String.format(
-                "%s\tmWaveAnimTranslationYReturnOvershoot=%.2f",
-                prefix,
-                mWaveAnimTranslationYReturnOvershoot));
-    }
-
-    /**
-     * Callbacks for {@link TaskbarEduView} to interact with its controller.
-     */
-    class TaskbarEduCallbacks {
-        void onPageChanged(int currentPage, int pageCount) {
-            if (currentPage == 0) {
-                mTaskbarEduView.updateStartButton(R.string.taskbar_edu_close,
-                        v -> mTaskbarEduView.close(true /* animate */));
-            } else {
-                mTaskbarEduView.updateStartButton(R.string.taskbar_edu_previous,
-                        v -> mTaskbarEduView.snapToPage(currentPage - 1));
-            }
-            if (currentPage == pageCount - 1) {
-                mTaskbarEduView.updateEndButton(R.string.taskbar_edu_done,
-                        v -> mTaskbarEduView.close(true /* animate */));
-            } else {
-                mTaskbarEduView.updateEndButton(R.string.taskbar_edu_next,
-                        v -> mTaskbarEduView.snapToPage(currentPage + 1));
-            }
-        }
-    }
-}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduPagedView.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduPagedView.java
deleted file mode 100644
index 8e57ea6..0000000
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduPagedView.java
+++ /dev/null
@@ -1,79 +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.launcher3.taskbar;
-
-import static com.android.launcher3.AbstractFloatingView.TYPE_ALL;
-import static com.android.launcher3.AbstractFloatingView.TYPE_TASKBAR_EDUCATION_DIALOG;
-
-import android.content.Context;
-import android.util.AttributeSet;
-
-import com.android.launcher3.AbstractFloatingView;
-import com.android.launcher3.PagedView;
-import com.android.launcher3.R;
-import com.android.launcher3.pageindicators.PageIndicatorDots;
-import com.android.launcher3.taskbar.TaskbarEduController.TaskbarEduCallbacks;
-import com.android.launcher3.views.ActivityContext;
-
-/** Horizontal carousel of tutorial screens for Taskbar Edu. */
-public class TaskbarEduPagedView extends PagedView<PageIndicatorDots> {
-
-    private TaskbarEduView mTaskbarEduView;
-    private TaskbarEduCallbacks mControllerCallbacks;
-
-    public TaskbarEduPagedView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES);
-    }
-
-    void setTaskbarEduView(TaskbarEduView taskbarEduView) {
-        mTaskbarEduView = taskbarEduView;
-        mPageIndicator = taskbarEduView.findViewById(R.id.content_page_indicator);
-        initParentViews(taskbarEduView);
-    }
-
-    void setControllerCallbacks(TaskbarEduCallbacks controllerCallbacks) {
-        mControllerCallbacks = controllerCallbacks;
-        mControllerCallbacks.onPageChanged(getCurrentPage(), getPageCount());
-    }
-
-    @Override
-    protected int getChildGap(int fromIndex, int toIndex) {
-        return mTaskbarEduView.getPaddingLeft() + mTaskbarEduView.getPaddingRight();
-    }
-
-    @Override
-    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
-        super.onScrollChanged(l, t, oldl, oldt);
-        if (mMaxScroll > 0) {
-            mPageIndicator.setScroll(l, mMaxScroll);
-        }
-    }
-
-    @Override
-    protected void notifyPageSwitchListener(int prevPage) {
-        super.notifyPageSwitchListener(prevPage);
-        mControllerCallbacks.onPageChanged(getCurrentPage(), getPageCount());
-    }
-
-    @Override
-    protected boolean canScroll(float absVScroll, float absHScroll) {
-        return AbstractFloatingView.getTopOpenViewWithType(
-                ActivityContext.lookupContext(getContext()),
-                TYPE_ALL & ~TYPE_TASKBAR_EDUCATION_DIALOG) == null;
-    }
-}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltip.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltip.kt
new file mode 100644
index 0000000..9b50c5d
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltip.kt
@@ -0,0 +1,201 @@
+/*
+ * 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.launcher3.taskbar
+
+import android.animation.AnimatorSet
+import android.animation.ValueAnimator
+import android.content.Context
+import android.provider.Settings
+import android.provider.Settings.Secure.LAUNCHER_TASKBAR_EDUCATION_SHOWING
+import android.util.AttributeSet
+import android.view.MotionEvent
+import android.view.MotionEvent.ACTION_DOWN
+import android.view.View
+import android.view.ViewGroup
+import android.view.ViewGroup.LayoutParams.MATCH_PARENT
+import android.view.animation.Interpolator
+import androidx.core.view.updateLayoutParams
+import com.android.app.animation.Interpolators.EMPHASIZED_ACCELERATE
+import com.android.app.animation.Interpolators.EMPHASIZED_DECELERATE
+import com.android.app.animation.Interpolators.STANDARD
+import com.android.launcher3.AbstractFloatingView
+import com.android.launcher3.R
+import com.android.launcher3.anim.AnimatorListeners
+import com.android.launcher3.popup.RoundedArrowDrawable
+import com.android.launcher3.util.Themes
+import com.android.launcher3.views.ActivityContext
+
+private const val ENTER_DURATION_MS = 300L
+private const val EXIT_DURATION_MS = 150L
+
+/** Floating tooltip for Taskbar education. */
+class TaskbarEduTooltip
+@JvmOverloads
+constructor(
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0,
+) : AbstractFloatingView(context, attrs, defStyleAttr) {
+
+    private val activityContext: ActivityContext = ActivityContext.lookupContext(context)
+
+    private val backgroundColor =
+        Themes.getAttrColor(context, com.android.internal.R.attr.materialColorSurfaceBright)
+
+    private val tooltipCornerRadius = Themes.getDialogCornerRadius(context)
+    private val arrowWidth = resources.getDimension(R.dimen.popup_arrow_width)
+    private val arrowHeight = resources.getDimension(R.dimen.popup_arrow_height)
+    private val arrowPointRadius = resources.getDimension(R.dimen.popup_arrow_corner_radius)
+
+    private val enterYDelta = resources.getDimension(R.dimen.taskbar_edu_tooltip_enter_y_delta)
+    private val exitYDelta = resources.getDimension(R.dimen.taskbar_edu_tooltip_exit_y_delta)
+
+    /** Container where the tooltip's body should be inflated. */
+    lateinit var content: ViewGroup
+        private set
+    private lateinit var arrow: View
+
+    /** Callback invoked when the tooltip is being closed. */
+    var onCloseCallback: () -> Unit = {}
+    private var openCloseAnimator: AnimatorSet? = null
+
+    /** Animates the tooltip into view. */
+    fun show() {
+        if (isOpen) {
+            return
+        }
+        mIsOpen = true
+        activityContext.dragLayer.addView(this)
+
+        // Make sure we have enough height to display all of the content, which can be an issue on
+        // large text and display scaling configurations. If we run out of height, remove the width
+        // constraint to reduce the number of lines of text and hopefully free up some height.
+        activityContext.dragLayer.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED)
+        if (
+            measuredHeight + activityContext.deviceProfile.taskbarHeight >=
+                activityContext.deviceProfile.availableHeightPx
+        ) {
+            updateLayoutParams { width = MATCH_PARENT }
+        }
+
+        openCloseAnimator = createOpenCloseAnimator(isOpening = true).apply { start() }
+    }
+
+    override fun onFinishInflate() {
+        super.onFinishInflate()
+
+        content = findViewById(R.id.content)
+        arrow = findViewById(R.id.arrow)
+        arrow.background =
+            RoundedArrowDrawable(
+                arrowWidth,
+                arrowHeight,
+                arrowPointRadius,
+                tooltipCornerRadius,
+                measuredWidth.toFloat(),
+                measuredHeight.toFloat(),
+                (measuredWidth - arrowWidth) / 2, // arrowOffsetX
+                0f, // arrowOffsetY
+                false, // isPointingUp
+                true, // leftAligned
+                backgroundColor,
+            )
+    }
+
+    override fun handleClose(animate: Boolean) {
+        if (!isOpen) {
+            return
+        }
+
+        onCloseCallback()
+        if (!animate) {
+            return closeComplete()
+        }
+
+        openCloseAnimator?.cancel()
+        openCloseAnimator = createOpenCloseAnimator(isOpening = false)
+        openCloseAnimator?.addListener(AnimatorListeners.forEndCallback(this::closeComplete))
+        openCloseAnimator?.start()
+    }
+
+    override fun isOfType(type: Int): Boolean = type and TYPE_TASKBAR_EDUCATION_DIALOG != 0
+
+    override fun onControllerInterceptTouchEvent(ev: MotionEvent?): Boolean {
+        if (ev?.action == ACTION_DOWN && !activityContext.dragLayer.isEventOverView(this, ev)) {
+            close(true)
+        }
+        return false
+    }
+
+    override fun onDetachedFromWindow() {
+        super.onDetachedFromWindow()
+        Settings.Secure.putInt(mContext.contentResolver, LAUNCHER_TASKBAR_EDUCATION_SHOWING, 0)
+    }
+
+    private fun closeComplete() {
+        openCloseAnimator?.cancel()
+        openCloseAnimator = null
+        mIsOpen = false
+        activityContext.dragLayer.removeView(this)
+    }
+
+    private fun createOpenCloseAnimator(isOpening: Boolean): AnimatorSet {
+        val duration: Long
+        val alphaValues: FloatArray
+        val translateYValues: FloatArray
+        val fadeInterpolator: Interpolator
+        val translateYInterpolator: Interpolator
+
+        if (isOpening) {
+            duration = ENTER_DURATION_MS
+            alphaValues = floatArrayOf(0f, 1f)
+            translateYValues = floatArrayOf(enterYDelta, 0f)
+            fadeInterpolator = STANDARD
+            translateYInterpolator = EMPHASIZED_DECELERATE
+        } else {
+            duration = EXIT_DURATION_MS
+            alphaValues = floatArrayOf(1f, 0f)
+            translateYValues = floatArrayOf(0f, exitYDelta)
+            fadeInterpolator = EMPHASIZED_ACCELERATE
+            translateYInterpolator = EMPHASIZED_ACCELERATE
+        }
+
+        val fade =
+            ValueAnimator.ofFloat(*alphaValues).apply {
+                interpolator = fadeInterpolator
+                addUpdateListener {
+                    val alpha = it.animatedValue as Float
+                    content.alpha = alpha
+                    arrow.alpha = alpha
+                }
+            }
+
+        val translateY =
+            ValueAnimator.ofFloat(*translateYValues).apply {
+                interpolator = translateYInterpolator
+                addUpdateListener {
+                    val translationY = it.animatedValue as Float
+                    content.translationY = translationY
+                    arrow.translationY = translationY
+                }
+            }
+
+        return AnimatorSet().apply {
+            this.duration = duration
+            playTogether(fade, translateY)
+        }
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt
new file mode 100644
index 0000000..e99fa50
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt
@@ -0,0 +1,255 @@
+/*
+ * 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.launcher3.taskbar
+
+import android.os.Bundle
+import android.view.View
+import android.view.View.GONE
+import android.view.View.VISIBLE
+import android.view.ViewGroup.LayoutParams.MATCH_PARENT
+import android.view.ViewGroup.MarginLayoutParams
+import android.view.accessibility.AccessibilityEvent
+import android.view.accessibility.AccessibilityNodeInfo
+import androidx.annotation.IntDef
+import androidx.annotation.LayoutRes
+import androidx.core.view.updateLayoutParams
+import com.airbnb.lottie.LottieAnimationView
+import com.android.launcher3.R
+import com.android.launcher3.Utilities
+import com.android.launcher3.taskbar.TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_EDU_OPEN
+import com.android.launcher3.taskbar.TaskbarControllers.LoggableTaskbarController
+import com.android.launcher3.util.DisplayController
+import com.android.launcher3.util.OnboardingPrefs.TASKBAR_EDU_TOOLTIP_STEP
+import com.android.quickstep.util.LottieAnimationColorUtils
+import java.io.PrintWriter
+
+/** First EDU step for swiping up to show transient Taskbar. */
+const val TOOLTIP_STEP_SWIPE = 0
+/** Second EDU step for explaining Taskbar functionality when unstashed. */
+const val TOOLTIP_STEP_FEATURES = 1
+/**
+ * EDU is completed.
+ *
+ * This value should match the maximum count for [TASKBAR_EDU_TOOLTIP_STEP].
+ */
+const val TOOLTIP_STEP_NONE = 2
+
+/** Current step in the tooltip EDU flow. */
+@Retention(AnnotationRetention.SOURCE)
+@IntDef(TOOLTIP_STEP_SWIPE, TOOLTIP_STEP_FEATURES, TOOLTIP_STEP_NONE)
+annotation class TaskbarEduTooltipStep
+
+/** Controls stepping through the Taskbar tooltip EDU. */
+class TaskbarEduTooltipController(val activityContext: TaskbarActivityContext) :
+    LoggableTaskbarController {
+
+    private val isTooltipEnabled: Boolean
+        get() = !Utilities.isRunningInTestHarness()
+    private val isOpen: Boolean
+        get() = tooltip?.isOpen ?: false
+    val isBeforeTooltipFeaturesStep: Boolean
+        get() = isTooltipEnabled && tooltipStep <= TOOLTIP_STEP_FEATURES
+    private lateinit var controllers: TaskbarControllers
+
+    @TaskbarEduTooltipStep
+    var tooltipStep: Int
+        get() {
+            return activityContext.onboardingPrefs?.getCount(TASKBAR_EDU_TOOLTIP_STEP)
+                ?: TOOLTIP_STEP_NONE
+        }
+        private set(step) {
+            activityContext.onboardingPrefs?.setEventCount(step, TASKBAR_EDU_TOOLTIP_STEP)
+        }
+
+    private var tooltip: TaskbarEduTooltip? = null
+
+    fun init(controllers: TaskbarControllers) {
+        this.controllers = controllers
+    }
+
+    /** Shows swipe EDU tooltip if it is the current [tooltipStep]. */
+    fun maybeShowSwipeEdu() {
+        if (
+            !isTooltipEnabled ||
+                !DisplayController.isTransientTaskbar(activityContext) ||
+                tooltipStep > TOOLTIP_STEP_SWIPE
+        ) {
+            return
+        }
+
+        tooltipStep = TOOLTIP_STEP_FEATURES
+        inflateTooltip(R.layout.taskbar_edu_swipe)
+        tooltip?.run {
+            findViewById<LottieAnimationView>(R.id.swipe_animation).supportLightTheme()
+            show()
+        }
+    }
+
+    /**
+     * Shows feature EDU tooltip if this step has not been seen.
+     *
+     * If [TOOLTIP_STEP_SWIPE] has not been seen at this point, the first step is skipped because a
+     * swipe up is necessary to show this step.
+     */
+    fun maybeShowFeaturesEdu() {
+        if (!isTooltipEnabled || tooltipStep > TOOLTIP_STEP_FEATURES) {
+            return
+        }
+
+        tooltipStep = TOOLTIP_STEP_NONE
+        inflateTooltip(R.layout.taskbar_edu_features)
+        tooltip?.run {
+            val splitscreenAnim = findViewById<LottieAnimationView>(R.id.splitscreen_animation)
+            val suggestionsAnim = findViewById<LottieAnimationView>(R.id.suggestions_animation)
+            val settingsAnim = findViewById<LottieAnimationView>(R.id.settings_animation)
+            val settingsEdu = findViewById<View>(R.id.settings_edu)
+            splitscreenAnim.supportLightTheme()
+            suggestionsAnim.supportLightTheme()
+            settingsAnim.supportLightTheme()
+            if (DisplayController.isTransientTaskbar(activityContext)) {
+                splitscreenAnim.setAnimation(R.raw.taskbar_edu_splitscreen_transient)
+                suggestionsAnim.setAnimation(R.raw.taskbar_edu_suggestions_transient)
+                settingsEdu.visibility = GONE
+            } else {
+                splitscreenAnim.setAnimation(R.raw.taskbar_edu_splitscreen_persistent)
+                suggestionsAnim.setAnimation(R.raw.taskbar_edu_suggestions_persistent)
+                settingsEdu.visibility = VISIBLE
+            }
+
+            // Set up layout parameters.
+            content.updateLayoutParams { width = MATCH_PARENT }
+            updateLayoutParams<MarginLayoutParams> {
+                if (DisplayController.isTransientTaskbar(activityContext)) {
+                    width =
+                        resources.getDimensionPixelSize(
+                            R.dimen.taskbar_edu_features_tooltip_width_transient
+                        )
+                    bottomMargin += activityContext.deviceProfile.taskbarHeight
+                } else {
+                    width =
+                        resources.getDimensionPixelSize(
+                            R.dimen.taskbar_edu_features_tooltip_width_persistent
+                        )
+                }
+            }
+
+            findViewById<View>(R.id.done_button)?.setOnClickListener { hide() }
+            show()
+        }
+    }
+
+    /** Closes the current [tooltip]. */
+    fun hide() = tooltip?.close(true)
+
+    /** Initializes [tooltip] with content from [contentResId]. */
+    private fun inflateTooltip(@LayoutRes contentResId: Int) {
+        val overlayContext = controllers.taskbarOverlayController.requestWindow()
+        val tooltip =
+            overlayContext.layoutInflater.inflate(
+                R.layout.taskbar_edu_tooltip,
+                overlayContext.dragLayer,
+                false
+            ) as TaskbarEduTooltip
+
+        controllers.taskbarAutohideSuspendController.updateFlag(
+            FLAG_AUTOHIDE_SUSPEND_EDU_OPEN,
+            true
+        )
+
+        tooltip.onCloseCallback = {
+            this.tooltip = null
+            controllers.taskbarAutohideSuspendController.updateFlag(
+                FLAG_AUTOHIDE_SUSPEND_EDU_OPEN,
+                false
+            )
+            controllers.taskbarStashController.updateAndAnimateTransientTaskbar(true)
+        }
+        tooltip.accessibilityDelegate = createAccessibilityDelegate()
+
+        overlayContext.layoutInflater.inflate(contentResId, tooltip.content, true)
+        this.tooltip = tooltip
+    }
+
+    private fun createAccessibilityDelegate() =
+        object : View.AccessibilityDelegate() {
+            override fun performAccessibilityAction(
+                host: View?,
+                action: Int,
+                args: Bundle?
+            ): Boolean {
+                if (action == R.id.close) {
+                    hide()
+                    return true
+                }
+                return super.performAccessibilityAction(host, action, args)
+            }
+
+            override fun onPopulateAccessibilityEvent(host: View?, event: AccessibilityEvent?) {
+                super.onPopulateAccessibilityEvent(host, event)
+                if (event?.eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
+                    event.text?.add(host?.context?.getText(R.string.taskbar_edu_a11y_title))
+                }
+            }
+
+            override fun onInitializeAccessibilityNodeInfo(
+                host: View?,
+                info: AccessibilityNodeInfo?
+            ) {
+                super.onInitializeAccessibilityNodeInfo(host, info)
+                info?.addAction(
+                    AccessibilityNodeInfo.AccessibilityAction(
+                        R.id.close,
+                        host?.context?.getText(R.string.taskbar_edu_close)
+                    )
+                )
+            }
+        }
+
+    override fun dumpLogs(prefix: String?, pw: PrintWriter?) {
+        pw?.println(prefix + "TaskbarEduTooltipController:")
+        pw?.println("$prefix\tisTooltipEnabled=$isTooltipEnabled")
+        pw?.println("$prefix\tisOpen=$isOpen")
+        pw?.println("$prefix\ttooltipStep=$tooltipStep")
+    }
+}
+
+/**
+ * Maps colors in the dark-themed Lottie assets to their light-themed equivalents.
+ *
+ * For instance, `".blue100" to R.color.lottie_blue400` means objects that are material blue100 in
+ * dark theme should be changed to material blue400 in light theme.
+ */
+private val DARK_TO_LIGHT_COLORS =
+    mapOf(
+        ".blue100" to R.color.lottie_blue400,
+        ".blue400" to R.color.lottie_blue600,
+        ".green100" to R.color.lottie_green400,
+        ".green400" to R.color.lottie_green600,
+        ".grey300" to R.color.lottie_grey600,
+        ".grey400" to R.color.lottie_grey700,
+        ".grey800" to R.color.lottie_grey200,
+        ".red400" to R.color.lottie_red600,
+        ".yellow100" to R.color.lottie_yellow400,
+        ".yellow400" to R.color.lottie_yellow600,
+    )
+
+private fun LottieAnimationView.supportLightTheme() {
+    if (Utilities.isDarkTheme(context)) {
+        return
+    }
+
+    LottieAnimationColorUtils.updateColors(this, DARK_TO_LIGHT_COLORS, context.theme)
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduView.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduView.java
deleted file mode 100644
index 89d67be..0000000
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduView.java
+++ /dev/null
@@ -1,159 +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.launcher3.taskbar;
-
-import static com.android.launcher3.anim.Interpolators.AGGRESSIVE_EASE;
-
-import android.animation.PropertyValuesHolder;
-import android.content.Context;
-import android.graphics.Rect;
-import android.provider.Settings;
-import android.util.AttributeSet;
-import android.util.Pair;
-import android.view.View;
-import android.widget.Button;
-
-import com.android.launcher3.Insettable;
-import com.android.launcher3.R;
-import com.android.launcher3.views.AbstractSlideInView;
-
-/** Education view about the Taskbar. */
-public class TaskbarEduView extends AbstractSlideInView<TaskbarActivityContext>
-        implements Insettable {
-
-    private static final int DEFAULT_OPEN_DURATION = 500;
-    private static final int DEFAULT_CLOSE_DURATION = 200;
-
-    private final Rect mInsets = new Rect();
-
-    private Button mStartButton;
-    private Button mEndButton;
-    private TaskbarEduPagedView mPagedView;
-
-    public TaskbarEduView(Context context, AttributeSet attr) {
-        this(context, attr, 0);
-    }
-
-    public TaskbarEduView(Context context, AttributeSet attrs,
-            int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
-    }
-
-    protected void init(TaskbarEduController.TaskbarEduCallbacks callbacks) {
-        if (mPagedView != null) {
-            mPagedView.setControllerCallbacks(callbacks);
-        }
-    }
-
-    @Override
-    protected void handleClose(boolean animate) {
-        handleClose(animate, DEFAULT_CLOSE_DURATION);
-    }
-
-    @Override
-    protected boolean isOfType(int type) {
-        return (type & TYPE_TASKBAR_EDUCATION_DIALOG) != 0;
-    }
-
-    @Override
-    protected void onFinishInflate() {
-        super.onFinishInflate();
-        mContent = findViewById(R.id.edu_view);
-        mStartButton = findViewById(R.id.edu_start_button);
-        mEndButton = findViewById(R.id.edu_end_button);
-        mPagedView = findViewById(R.id.content);
-        mPagedView.setTaskbarEduView(this);
-    }
-
-    @Override
-    public void setInsets(Rect insets) {
-        mInsets.set(insets);
-        mContent.setPadding(mContent.getPaddingStart(),
-                mContent.getPaddingTop(), mContent.getPaddingEnd(), insets.bottom);
-    }
-
-    @Override
-    protected void attachToContainer() {
-        if (mColorScrim != null) {
-            getPopupContainer().addView(mColorScrim, 0);
-        }
-        getPopupContainer().addView(this, 1);
-    }
-
-    @Override
-    protected void onDetachedFromWindow() {
-        super.onDetachedFromWindow();
-
-        Settings.Secure.putInt(mContext.getContentResolver(),
-                Settings.Secure.LAUNCHER_TASKBAR_EDUCATION_SHOWING, 0);
-    }
-
-    /** Show the Education flow. */
-    public void show() {
-        attachToContainer();
-        animateOpen();
-    }
-
-    @Override
-    protected Pair<View, String> getAccessibilityTarget() {
-        return Pair.create(mContent, mIsOpen ? getContext().getString(R.string.taskbar_edu_opened)
-                : getContext().getString(R.string.taskbar_edu_closed));
-    }
-
-    @Override
-    protected int getScrimColor(Context context) {
-        return context.getResources().getColor(R.color.widgets_picker_scrim);
-    }
-
-    @Override
-    protected void onLayout(boolean changed, int l, int t, int r, int b) {
-        int width = r - l;
-        int height = b - t;
-
-        // Lay out the content as center bottom aligned.
-        int contentWidth = mContent.getMeasuredWidth();
-        int contentLeft = (width - contentWidth - mInsets.left - mInsets.right) / 2 + mInsets.left;
-        mContent.layout(contentLeft, height - mContent.getMeasuredHeight(),
-                contentLeft + contentWidth, height);
-
-        setTranslationShift(mTranslationShift);
-    }
-
-    private void animateOpen() {
-        if (mIsOpen || mOpenCloseAnimator.isRunning()) {
-            return;
-        }
-        mIsOpen = true;
-        mOpenCloseAnimator.setValues(
-                PropertyValuesHolder.ofFloat(TRANSLATION_SHIFT, TRANSLATION_SHIFT_OPENED));
-        mOpenCloseAnimator.setInterpolator(AGGRESSIVE_EASE);
-        mOpenCloseAnimator.setDuration(DEFAULT_OPEN_DURATION).start();
-    }
-
-    void snapToPage(int page) {
-        mPagedView.snapToPage(page);
-    }
-
-    void updateStartButton(int textResId, OnClickListener onClickListener) {
-        mStartButton.setText(textResId);
-        mStartButton.setOnClickListener(onClickListener);
-    }
-
-    void updateEndButton(int textResId, OnClickListener onClickListener) {
-        mEndButton.setText(textResId);
-        mEndButton.setOnClickListener(onClickListener);
-    }
-}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarForceVisibleImmersiveController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarForceVisibleImmersiveController.java
index c99cebb..ffaee45 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarForceVisibleImmersiveController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarForceVisibleImmersiveController.java
@@ -18,21 +18,22 @@
 
 import static android.view.accessibility.AccessibilityManager.FLAG_CONTENT_CONTROLS;
 import static android.view.accessibility.AccessibilityManager.FLAG_CONTENT_ICONS;
+import static android.view.accessibility.AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS;
+import static android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK;
 
 import static com.android.launcher3.taskbar.NavbarButtonsViewController.ALPHA_INDEX_IMMERSIVE_MODE;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IMMERSIVE_MODE;
 
+import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
 import android.view.MotionEvent;
+import android.view.View;
 
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.compat.AccessibilityManagerCompat;
-import com.android.launcher3.util.MultiValueAlpha;
+import com.android.launcher3.util.MultiPropertyFactory;
 import com.android.launcher3.util.TouchController;
-import com.android.quickstep.AnimatedFloat;
-
-import java.util.Optional;
-import java.util.function.Consumer;
 
 /**
  * Controller for taskbar when force visible in immersive mode is set.
@@ -50,8 +51,21 @@
     private final Runnable mUndimmingRunnable = this::undimIcons;
     private final AnimatedFloat mIconAlphaForDimming = new AnimatedFloat(
             this::updateIconDimmingAlpha);
-    private final Consumer<MultiValueAlpha> mImmersiveModeAlphaUpdater = alpha -> alpha.getProperty(
-            ALPHA_INDEX_IMMERSIVE_MODE).setValue(mIconAlphaForDimming.value);
+    private final View.AccessibilityDelegate mKidsModeAccessibilityDelegate =
+            new View.AccessibilityDelegate() {
+                @Override
+                public boolean performAccessibilityAction(View host, int action, Bundle args) {
+                    if (action == ACTION_ACCESSIBILITY_FOCUS || action == ACTION_CLICK) {
+                        // Animate undimming of icons on an a11y event, followed by starting the
+                        // dimming animation (after its timeout has expired). Both can be called in
+                        // succession, as the playing of the two animations in a row is managed by
+                        // mHandler's message queue.
+                        startIconUndimming();
+                        startIconDimming();
+                    }
+                    return super.performAccessibilityAction(host, action, args);
+                }
+            };
 
     // Initialized in init.
     private TaskbarControllers mControllers;
@@ -77,12 +91,21 @@
             } else {
                 startIconUndimming();
             }
+            mControllers.navbarButtonsViewController.setHomeButtonAccessibilityDelegate(
+                    mKidsModeAccessibilityDelegate);
+            mControllers.navbarButtonsViewController.setBackButtonAccessibilityDelegate(
+                    mKidsModeAccessibilityDelegate);
+        } else {
+            mControllers.navbarButtonsViewController.setHomeButtonAccessibilityDelegate(null);
+            mControllers.navbarButtonsViewController.setBackButtonAccessibilityDelegate(null);
         }
     }
 
     /** Clean up animations. */
     public void onDestroy() {
         startIconUndimming();
+        mControllers.navbarButtonsViewController.setHomeButtonAccessibilityDelegate(null);
+        mControllers.navbarButtonsViewController.setBackButtonAccessibilityDelegate(null);
     }
 
     private void startIconUndimming() {
@@ -117,22 +140,20 @@
     }
 
     private void updateIconDimmingAlpha() {
-        getBackButtonAlphaOptional().ifPresent(mImmersiveModeAlphaUpdater);
-        getHomeButtonAlphaOptional().ifPresent(mImmersiveModeAlphaUpdater);
-    }
-
-    private Optional<MultiValueAlpha> getBackButtonAlphaOptional() {
         if (mControllers == null || mControllers.navbarButtonsViewController == null) {
-            return Optional.empty();
+            return;
         }
-        return Optional.ofNullable(mControllers.navbarButtonsViewController.getBackButtonAlpha());
-    }
 
-    private Optional<MultiValueAlpha> getHomeButtonAlphaOptional() {
-        if (mControllers == null || mControllers.navbarButtonsViewController == null) {
-            return Optional.empty();
+        MultiPropertyFactory<View> ba =
+                mControllers.navbarButtonsViewController.getBackButtonAlpha();
+        if (ba != null) {
+            ba.get(ALPHA_INDEX_IMMERSIVE_MODE).setValue(mIconAlphaForDimming.value);
         }
-        return Optional.ofNullable(mControllers.navbarButtonsViewController.getHomeButtonAlpha());
+        MultiPropertyFactory<View> ha =
+                mControllers.navbarButtonsViewController.getHomeButtonAlpha();
+        if (ba != null) {
+            ha.get(ALPHA_INDEX_IMMERSIVE_MODE).setValue(mIconAlphaForDimming.value);
+        }
     }
 
     @Override
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt
index 6a6a693..d6e559a 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt
@@ -17,31 +17,52 @@
 
 import android.graphics.Insets
 import android.graphics.Region
-import android.view.InsetsState.ITYPE_BOTTOM_MANDATORY_GESTURES
+import android.os.Binder
+import android.os.IBinder
+import android.view.InsetsFrameProvider
+import android.view.InsetsFrameProvider.SOURCE_DISPLAY
+import android.view.InsetsSource.FLAG_SUPPRESS_SCRIM
+import android.view.ViewTreeObserver
+import android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_FRAME
+import android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_REGION
+import android.view.WindowInsets
+import android.view.WindowInsets.Type.mandatorySystemGestures
+import android.view.WindowInsets.Type.navigationBars
+import android.view.WindowInsets.Type.systemGestures
+import android.view.WindowInsets.Type.tappableElement
 import android.view.WindowManager
-import com.android.launcher3.AbstractFloatingView
-import com.android.launcher3.AbstractFloatingView.TYPE_TASKBAR_ALL_APPS
+import android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD
+import android.view.WindowManager.LayoutParams.TYPE_VOICE_INTERACTION
+import androidx.core.graphics.toRegion
+import com.android.internal.policy.GestureNavigationSettingsObserver
 import com.android.launcher3.DeviceProfile
+import com.android.launcher3.R
 import com.android.launcher3.anim.AlphaUpdateListener
 import com.android.launcher3.taskbar.TaskbarControllers.LoggableTaskbarController
-import com.android.quickstep.KtR
-import com.android.systemui.shared.system.ViewTreeObserverWrapper.InsetsInfo
-import com.android.systemui.shared.system.WindowManagerWrapper
-import com.android.systemui.shared.system.WindowManagerWrapper.*
+import com.android.launcher3.util.DisplayController
 import java.io.PrintWriter
 
-/**
- * Handles the insets that Taskbar provides to underlying apps and the IME.
- */
-class TaskbarInsetsController(val context: TaskbarActivityContext): LoggableTaskbarController {
+/** Handles the insets that Taskbar provides to underlying apps and the IME. */
+class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTaskbarController {
+
+    companion object {
+        private const val INDEX_LEFT = 0
+        private const val INDEX_RIGHT = 1
+    }
 
     /** The bottom insets taskbar provides to the IME when IME is visible. */
-    val taskbarHeightForIme: Int = context.resources.getDimensionPixelSize(
-        KtR.dimen.taskbar_ime_size)
-    private val contentRegion: Region = Region()
+    val taskbarHeightForIme: Int = context.resources.getDimensionPixelSize(R.dimen.taskbar_ime_size)
+    private val touchableRegion: Region = Region()
+    private val insetsOwner: IBinder = Binder()
     private val deviceProfileChangeListener = { _: DeviceProfile ->
         onTaskbarWindowHeightOrInsetsChanged()
     }
+    private val gestureNavSettingsObserver =
+        GestureNavigationSettingsObserver(
+            context.mainThreadHandler,
+            context,
+            this::onTaskbarWindowHeightOrInsetsChanged
+        )
 
     // Initialized in init.
     private lateinit var controllers: TaskbarControllers
@@ -50,100 +71,171 @@
     fun init(controllers: TaskbarControllers) {
         this.controllers = controllers
         windowLayoutParams = context.windowLayoutParams
-
-        val wmWrapper: WindowManagerWrapper = getInstance()
-        wmWrapper.setProvidesInsetsTypes(
-            windowLayoutParams,
-            intArrayOf(
-                ITYPE_EXTRA_NAVIGATION_BAR,
-                ITYPE_BOTTOM_TAPPABLE_ELEMENT,
-                ITYPE_BOTTOM_MANDATORY_GESTURES
-            )
-        )
-
-        windowLayoutParams.providedInternalInsets = arrayOfNulls<Insets>(ITYPE_SIZE)
-        windowLayoutParams.providedInternalImeInsets = arrayOfNulls<Insets>(ITYPE_SIZE)
-
         onTaskbarWindowHeightOrInsetsChanged()
 
-        windowLayoutParams.insetsRoundedCornerFrame = true
         context.addOnDeviceProfileChangeListener(deviceProfileChangeListener)
+        gestureNavSettingsObserver.registerForCallingUser()
     }
 
     fun onDestroy() {
         context.removeOnDeviceProfileChangeListener(deviceProfileChangeListener)
+        gestureNavSettingsObserver.unregister()
     }
 
     fun onTaskbarWindowHeightOrInsetsChanged() {
-        var reducingSize = getReducingInsetsForTaskbarInsetsHeight(
-            controllers.taskbarStashController.contentHeightToReportToApps)
+        if (context.isGestureNav) {
+            windowLayoutParams.providedInsets =
+                arrayOf(
+                    InsetsFrameProvider(insetsOwner, 0, navigationBars())
+                        .setFlags(FLAG_SUPPRESS_SCRIM, FLAG_SUPPRESS_SCRIM),
+                    InsetsFrameProvider(insetsOwner, 0, tappableElement()),
+                    InsetsFrameProvider(insetsOwner, 0, mandatorySystemGestures()),
+                    InsetsFrameProvider(insetsOwner, INDEX_LEFT, systemGestures())
+                        .setSource(SOURCE_DISPLAY),
+                    InsetsFrameProvider(insetsOwner, INDEX_RIGHT, systemGestures())
+                        .setSource(SOURCE_DISPLAY)
+                )
+        } else {
+            windowLayoutParams.providedInsets =
+                arrayOf(
+                    InsetsFrameProvider(insetsOwner, 0, navigationBars()),
+                    InsetsFrameProvider(insetsOwner, 0, tappableElement()),
+                    InsetsFrameProvider(insetsOwner, 0, mandatorySystemGestures())
+                )
+        }
 
-        contentRegion.set(0, reducingSize.top,
-                context.deviceProfile.widthPx, windowLayoutParams.height)
-        windowLayoutParams.providedInternalInsets[ITYPE_EXTRA_NAVIGATION_BAR] = reducingSize
-        windowLayoutParams.providedInternalInsets[ITYPE_BOTTOM_MANDATORY_GESTURES] = reducingSize
-        reducingSize = getReducingInsetsForTaskbarInsetsHeight(
-            controllers.taskbarStashController.tappableHeightToReportToApps)
-        windowLayoutParams.providedInternalInsets[ITYPE_BOTTOM_TAPPABLE_ELEMENT] = reducingSize
-        windowLayoutParams.providedInternalInsets[ITYPE_BOTTOM_MANDATORY_GESTURES] = reducingSize
+        val touchableHeight = controllers.taskbarStashController.touchableHeight
+        touchableRegion.set(
+            0,
+            windowLayoutParams.height - touchableHeight,
+            context.deviceProfile.widthPx,
+            windowLayoutParams.height
+        )
+        val contentHeight = controllers.taskbarStashController.contentHeightToReportToApps
+        val tappableHeight = controllers.taskbarStashController.tappableHeightToReportToApps
+        val res = context.resources
+        for (provider in windowLayoutParams.providedInsets) {
+            if (provider.type == navigationBars() || provider.type == mandatorySystemGestures()) {
+                provider.insetsSize = getInsetsByNavMode(contentHeight)
+            } else if (provider.type == tappableElement()) {
+                provider.insetsSize = getInsetsByNavMode(tappableHeight)
+            } else if (provider.type == systemGestures() && provider.index == INDEX_LEFT) {
+                provider.insetsSize =
+                    Insets.of(
+                        gestureNavSettingsObserver.getLeftSensitivityForCallingUser(res),
+                        0,
+                        0,
+                        0
+                    )
+            } else if (provider.type == systemGestures() && provider.index == INDEX_RIGHT) {
+                provider.insetsSize =
+                    Insets.of(
+                        0,
+                        0,
+                        gestureNavSettingsObserver.getRightSensitivityForCallingUser(res),
+                        0
+                    )
+            }
+        }
 
-        reducingSize = getReducingInsetsForTaskbarInsetsHeight(taskbarHeightForIme)
-        windowLayoutParams.providedInternalImeInsets[ITYPE_EXTRA_NAVIGATION_BAR] = reducingSize
-        windowLayoutParams.providedInternalImeInsets[ITYPE_BOTTOM_TAPPABLE_ELEMENT] = reducingSize
-        windowLayoutParams.providedInternalImeInsets[ITYPE_BOTTOM_MANDATORY_GESTURES] = reducingSize
+        val imeInsetsSize = getInsetsByNavMode(taskbarHeightForIme)
+        val insetsSizeOverride =
+            arrayOf(
+                InsetsFrameProvider.InsetsSizeOverride(TYPE_INPUT_METHOD, imeInsetsSize),
+            )
+        // Use 0 tappableElement insets for the VoiceInteractionWindow when gesture nav is enabled.
+        val visInsetsSizeForGestureNavTappableElement = getInsetsByNavMode(0)
+        val insetsSizeOverrideForGestureNavTappableElement =
+            arrayOf(
+                InsetsFrameProvider.InsetsSizeOverride(TYPE_INPUT_METHOD, imeInsetsSize),
+                InsetsFrameProvider.InsetsSizeOverride(
+                    TYPE_VOICE_INTERACTION,
+                    visInsetsSizeForGestureNavTappableElement
+                ),
+            )
+        for (provider in windowLayoutParams.providedInsets) {
+            if (context.isGestureNav && provider.type == tappableElement()) {
+                provider.insetsSizeOverrides = insetsSizeOverrideForGestureNavTappableElement
+            } else if (provider.type != systemGestures()) {
+                // We only override insets at the bottom of the screen
+                provider.insetsSizeOverrides = insetsSizeOverride
+            }
+        }
+
+        // We only report tappableElement height for unstashed, persistent taskbar,
+        // which is also when we draw the rounded corners above taskbar.
+        windowLayoutParams.insetsRoundedCornerFrame = tappableHeight > 0
+
+        context.notifyUpdateLayoutParams()
     }
 
     /**
-     * WindowLayoutParams.providedInternal*Insets expects Insets that subtract from the window frame
-     * height (i.e. WindowLayoutParams#height). So for Taskbar to report bottom insets to apps, it
-     * actually provides insets from the top of its window frame.
-     * @param height The number of pixels from the bottom of the screen that Taskbar insets.
+     * @return [Insets] where the [bottomInset] is either used as a bottom inset or
+     *
+     * ```
+     *         right/left inset if using 3 button nav
+     * ```
      */
-    private fun getReducingInsetsForTaskbarInsetsHeight(height: Int): Insets {
-        return Insets.of(0, windowLayoutParams.height - height, 0, 0)
+    private fun getInsetsByNavMode(bottomInset: Int): Insets {
+        val devicePortrait = !context.deviceProfile.isLandscape
+        if (!TaskbarManager.isPhoneButtonNavMode(context) || devicePortrait) {
+            // Taskbar or portrait phone mode
+            return Insets.of(0, 0, 0, bottomInset)
+        }
+
+        // TODO(b/230394142): seascape
+        return Insets.of(0, 0, bottomInset, 0)
     }
 
     /**
      * Called to update the touchable insets.
-     * @see InsetsInfo.setTouchableInsets
+     *
+     * @see ViewTreeObserver.InternalInsetsInfo.setTouchableInsets
      */
-    fun updateInsetsTouchability(insetsInfo: InsetsInfo) {
+    fun updateInsetsTouchability(insetsInfo: ViewTreeObserver.InternalInsetsInfo) {
         insetsInfo.touchableRegion.setEmpty()
         // Always have nav buttons be touchable
         controllers.navbarButtonsViewController.addVisibleButtonsRegion(
-            context.dragLayer, insetsInfo.touchableRegion
+            context.dragLayer,
+            insetsInfo.touchableRegion
         )
         var insetsIsTouchableRegion = true
         if (context.dragLayer.alpha < AlphaUpdateListener.ALPHA_CUTOFF_THRESHOLD) {
             // Let touches pass through us.
-            insetsInfo.setTouchableInsets(InsetsInfo.TOUCHABLE_INSETS_REGION)
-        } else if (controllers.navbarButtonsViewController.isImeVisible) {
-            insetsInfo.setTouchableInsets(InsetsInfo.TOUCHABLE_INSETS_REGION)
+            insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION)
+        } else if (
+            controllers.navbarButtonsViewController.isImeVisible &&
+                controllers.taskbarStashController.isStashed
+        ) {
+            insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION)
         } else if (!controllers.uiController.isTaskbarTouchable) {
             // Let touches pass through us.
-            insetsInfo.setTouchableInsets(InsetsInfo.TOUCHABLE_INSETS_REGION)
+            insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION)
         } else if (controllers.taskbarDragController.isSystemDragInProgress) {
             // Let touches pass through us.
-            insetsInfo.setTouchableInsets(InsetsInfo.TOUCHABLE_INSETS_REGION)
-        } else if (AbstractFloatingView.hasOpenView(context, TYPE_TASKBAR_ALL_APPS)) {
-            // Let touches pass through us.
-            insetsInfo.setTouchableInsets(InsetsInfo.TOUCHABLE_INSETS_REGION)
-        } else if (controllers.taskbarViewController.areIconsVisible()
-            || AbstractFloatingView.hasOpenView(context, AbstractFloatingView.TYPE_ALL)
-            || context.isNavBarKidsModeActive
+            insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION)
+        } else if (context.isTaskbarWindowFullscreen) {
+            // Intercept entire fullscreen window.
+            insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_FRAME)
+            insetsIsTouchableRegion = false
+        } else if (
+            controllers.taskbarViewController.areIconsVisible() || context.isNavBarKidsModeActive
         ) {
             // Taskbar has some touchable elements, take over the full taskbar area
-            insetsInfo.setTouchableInsets(
-                if (context.isTaskbarWindowFullscreen) {
-                    InsetsInfo.TOUCHABLE_INSETS_FRAME
-                } else {
-                    insetsInfo.touchableRegion.set(contentRegion)
-                    InsetsInfo.TOUCHABLE_INSETS_REGION
-                }
-            )
+            if (
+                controllers.uiController.isInOverview &&
+                    DisplayController.isTransientTaskbar(context)
+            ) {
+                insetsInfo.touchableRegion.set(
+                    controllers.taskbarActivityContext.dragLayer.lastDrawnTransientRect.toRegion()
+                )
+            } else {
+                insetsInfo.touchableRegion.set(touchableRegion)
+            }
+            insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION)
             insetsIsTouchableRegion = false
         } else {
-            insetsInfo.setTouchableInsets(InsetsInfo.TOUCHABLE_INSETS_REGION)
+            insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION)
         }
         context.excludeFromMagnificationRegion(insetsIsTouchableRegion)
     }
@@ -151,13 +243,22 @@
     override fun dumpLogs(prefix: String, pw: PrintWriter) {
         pw.println(prefix + "TaskbarInsetsController:")
         pw.println("$prefix\twindowHeight=${windowLayoutParams.height}")
-        pw.println("$prefix\tprovidedInternalInsets[ITYPE_EXTRA_NAVIGATION_BAR]=" +
-                "${windowLayoutParams.providedInternalInsets[ITYPE_EXTRA_NAVIGATION_BAR]}")
-        pw.println("$prefix\tprovidedInternalInsets[ITYPE_BOTTOM_TAPPABLE_ELEMENT]=" +
-                "${windowLayoutParams.providedInternalInsets[ITYPE_BOTTOM_TAPPABLE_ELEMENT]}")
-        pw.println("$prefix\tprovidedInternalImeInsets[ITYPE_EXTRA_NAVIGATION_BAR]=" +
-                "${windowLayoutParams.providedInternalImeInsets[ITYPE_EXTRA_NAVIGATION_BAR]}")
-        pw.println("$prefix\tprovidedInternalImeInsets[ITYPE_BOTTOM_TAPPABLE_ELEMENT]=" +
-                "${windowLayoutParams.providedInternalImeInsets[ITYPE_BOTTOM_TAPPABLE_ELEMENT]}")
+        for (provider in windowLayoutParams.providedInsets) {
+            pw.print(
+                "$prefix\tprovidedInsets: (type=" +
+                    WindowInsets.Type.toString(provider.type) +
+                    " insetsSize=" +
+                    provider.insetsSize
+            )
+            if (provider.insetsSizeOverrides != null) {
+                pw.print(" insetsSizeOverrides={")
+                for ((i, overrideSize) in provider.insetsSizeOverrides.withIndex()) {
+                    if (i > 0) pw.print(", ")
+                    pw.print(overrideSize)
+                }
+                pw.print("})")
+            }
+            pw.println()
+        }
     }
-}
\ No newline at end of file
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarKeyguardController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarKeyguardController.java
index 56648ea..03d08eb 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarKeyguardController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarKeyguardController.java
@@ -1,19 +1,19 @@
 package com.android.launcher3.taskbar;
 
 import static com.android.launcher3.AbstractFloatingView.TYPE_ALL;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_AWAKE;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BACK_DISABLED;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BOUNCER_SHOWING;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_DEVICE_DOZING;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_DEVICE_DREAMING;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_HOME_DISABLED;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_OVERVIEW_DISABLED;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_WAKEFULNESS_MASK;
+import static com.android.systemui.shared.system.QuickStepContract.WAKEFULNESS_ASLEEP;
 
 import android.app.KeyguardManager;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
 
 import com.android.launcher3.AbstractFloatingView;
 import com.android.systemui.shared.system.QuickStepContract;
@@ -25,25 +25,24 @@
  */
 public class TaskbarKeyguardController implements TaskbarControllers.LoggableTaskbarController {
 
-    private static final int KEYGUARD_SYSUI_FLAGS = SYSUI_STATE_BOUNCER_SHOWING |
-            SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING | SYSUI_STATE_DEVICE_DOZING |
-            SYSUI_STATE_OVERVIEW_DISABLED | SYSUI_STATE_HOME_DISABLED |
-            SYSUI_STATE_BACK_DISABLED | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED;
+    private static final int KEYGUARD_SYSUI_FLAGS = SYSUI_STATE_BOUNCER_SHOWING
+            | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING | SYSUI_STATE_DEVICE_DOZING
+            | SYSUI_STATE_OVERVIEW_DISABLED | SYSUI_STATE_HOME_DISABLED
+            | SYSUI_STATE_BACK_DISABLED | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED
+            | SYSUI_STATE_WAKEFULNESS_MASK;
+
+    // If any of these SysUi flags (via QuickstepContract) is set, the device to be considered
+    // locked.
+    public static final int MASK_ANY_SYSUI_LOCKED = SYSUI_STATE_BOUNCER_SHOWING
+            | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING
+            | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED
+            | SYSUI_STATE_DEVICE_DREAMING;
 
     private final TaskbarActivityContext mContext;
     private int mKeyguardSysuiFlags;
     private boolean mBouncerShowing;
     private NavbarButtonsViewController mNavbarButtonsViewController;
     private final KeyguardManager mKeyguardManager;
-    private boolean mIsScreenOff;
-
-    private final BroadcastReceiver mScreenOffReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            mIsScreenOff = true;
-            AbstractFloatingView.closeOpenViews(mContext, false, TYPE_ALL);
-        }
-    };
 
     public TaskbarKeyguardController(TaskbarActivityContext context) {
         mContext = context;
@@ -52,10 +51,16 @@
 
     public void init(NavbarButtonsViewController navbarButtonUIController) {
         mNavbarButtonsViewController = navbarButtonUIController;
-        mContext.registerReceiver(mScreenOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
     }
 
     public void updateStateForSysuiFlags(int systemUiStateFlags) {
+        int interestingKeyguardFlags = systemUiStateFlags & KEYGUARD_SYSUI_FLAGS;
+        if (interestingKeyguardFlags == mKeyguardSysuiFlags) {
+            // No change in keyguard relevant flags
+            return;
+        }
+        mKeyguardSysuiFlags = interestingKeyguardFlags;
+
         boolean bouncerShowing = (systemUiStateFlags & SYSUI_STATE_BOUNCER_SHOWING) != 0;
         boolean keyguardShowing = (systemUiStateFlags & SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING)
                 != 0;
@@ -63,11 +68,6 @@
                 (systemUiStateFlags & SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED) != 0;
         boolean dozing = (systemUiStateFlags & SYSUI_STATE_DEVICE_DOZING) != 0;
 
-        int interestingKeyguardFlags = systemUiStateFlags & KEYGUARD_SYSUI_FLAGS;
-        if (interestingKeyguardFlags == mKeyguardSysuiFlags) {
-            return;
-        }
-        mKeyguardSysuiFlags = interestingKeyguardFlags;
 
         mBouncerShowing = bouncerShowing;
 
@@ -75,47 +75,34 @@
                 keyguardOccluded);
         updateIconsForBouncer();
 
-        if (keyguardShowing) {
-            AbstractFloatingView.closeOpenViews(mContext, true, TYPE_ALL);
+        boolean asleepOrGoingToSleep = (systemUiStateFlags & SYSUI_STATE_AWAKE) == 0;
+        boolean closeFloatingViews = keyguardShowing || asleepOrGoingToSleep;
+
+        if (closeFloatingViews) {
+            // animate the closing of the views, unless the screen is already asleep.
+            boolean animateViewClosing =
+                    (systemUiStateFlags & SYSUI_STATE_WAKEFULNESS_MASK) != WAKEFULNESS_ASLEEP;
+            AbstractFloatingView.closeOpenViews(mContext, animateViewClosing, TYPE_ALL);
         }
     }
 
-    public boolean isScreenOff() {
-        return mIsScreenOff;
-    }
-
-    public void setScreenOn() {
-        mIsScreenOff = false;
-    }
-
     /**
      * Hides/shows taskbar when keyguard is up
      */
     private void updateIconsForBouncer() {
         boolean disableBack = (mKeyguardSysuiFlags & SYSUI_STATE_BACK_DISABLED) != 0;
-        boolean disableRecent = (mKeyguardSysuiFlags & SYSUI_STATE_OVERVIEW_DISABLED) != 0;
-        boolean disableHome = (mKeyguardSysuiFlags & SYSUI_STATE_HOME_DISABLED) != 0;
-        boolean onlyBackEnabled = !disableBack && disableRecent && disableHome;
-
-        boolean showBackForBouncer = onlyBackEnabled &&
-                mKeyguardManager.isDeviceSecure() &&
-                mBouncerShowing;
+        boolean showBackForBouncer =
+                !disableBack && mKeyguardManager.isDeviceSecure() && mBouncerShowing;
         mNavbarButtonsViewController.setBackForBouncer(showBackForBouncer);
     }
 
-    public void onDestroy() {
-        mContext.unregisterReceiver(mScreenOffReceiver);
-    }
 
     @Override
     public void dumpLogs(String prefix, PrintWriter pw) {
         pw.println(prefix + "TaskbarKeyguardController:");
 
-        pw.println(String.format(
-                "%s\tmKeyguardSysuiFlags=%s",
-                prefix,
-                QuickStepContract.getSystemUiStateString(mKeyguardSysuiFlags)));
-        pw.println(String.format("%s\tmBouncerShowing=%b", prefix, mBouncerShowing));
-        pw.println(String.format("%s\tmIsScreenOff=%b", prefix, mIsScreenOff));
+        pw.println(prefix + "\tmKeyguardSysuiFlags=" + QuickStepContract.getSystemUiStateString(
+                mKeyguardSysuiFlags));
+        pw.println(prefix + "\tmBouncerShowing=" + mBouncerShowing);
     }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java
index dc0ef27..008f5f6 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java
@@ -15,26 +15,38 @@
  */
 package com.android.launcher3.taskbar;
 
+import static com.android.app.animation.Interpolators.EMPHASIZED;
+import static com.android.launcher3.taskbar.TaskbarKeyguardController.MASK_ANY_SYSUI_LOCKED;
 import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_APP;
 import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_STASHED_LAUNCHER_STATE;
-import static com.android.launcher3.taskbar.TaskbarStashController.TASKBAR_STASH_DURATION;
 import static com.android.launcher3.taskbar.TaskbarViewController.ALPHA_INDEX_HOME;
+import static com.android.launcher3.util.FlagDebugUtils.appendFlag;
+import static com.android.launcher3.util.FlagDebugUtils.formatFlagChange;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_AWAKE;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_DEVICE_DREAMING;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_WAKEFULNESS_MASK;
+import static com.android.systemui.shared.system.QuickStepContract.WAKEFULNESS_AWAKE;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.AnimatorSet;
 import android.animation.ObjectAnimator;
+import android.os.SystemClock;
+import android.util.Log;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import com.android.launcher3.AbstractFloatingView;
-import com.android.launcher3.BaseQuickstepLauncher;
+import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.LauncherState;
+import com.android.launcher3.QuickstepTransitionManager;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.AnimatedFloat;
+import com.android.launcher3.anim.AnimatorListeners;
 import com.android.launcher3.statemanager.StateManager;
-import com.android.launcher3.util.MultiValueAlpha;
-import com.android.quickstep.AnimatedFloat;
+import com.android.launcher3.uioverrides.QuickstepLauncher;
+import com.android.launcher3.util.MultiPropertyFactory.MultiProperty;
 import com.android.quickstep.RecentsAnimationCallbacks;
 import com.android.quickstep.RecentsAnimationController;
 import com.android.quickstep.views.RecentsView;
@@ -44,113 +56,208 @@
 import java.io.PrintWriter;
 import java.util.HashMap;
 import java.util.StringJoiner;
-import java.util.function.Consumer;
-import java.util.function.Supplier;
 
 /**
  * Track LauncherState, RecentsAnimation, resumed state for task bar in one place here and animate
  * the task bar accordingly.
  */
- public class TaskbarLauncherStateController {
+public class TaskbarLauncherStateController {
 
+    private static final String TAG = TaskbarLauncherStateController.class.getSimpleName();
+    private static final boolean DEBUG = false;
+
+    /** Launcher activity is resumed and focused. */
     public static final int FLAG_RESUMED = 1 << 0;
-    public static final int FLAG_RECENTS_ANIMATION_RUNNING = 1 << 1;
-    public static final int FLAG_TRANSITION_STATE_RUNNING = 1 << 2;
 
+    /**
+     * A external transition / animation is running that will result in FLAG_RESUMED being set.
+     **/
+    public static final int FLAG_TRANSITION_TO_RESUMED = 1 << 1;
+
+    /**
+     * Set while the launcher state machine is performing a state transition, see {@link
+     * StateManager.StateListener}.
+     */
+    public static final int FLAG_LAUNCHER_IN_STATE_TRANSITION = 1 << 2;
+
+    /**
+     * Whether the screen is currently on, or is transitioning to be on.
+     *
+     * This is cleared as soon as the screen begins to transition off.
+     */
+    private static final int FLAG_AWAKE = 1 << 3;
+
+    /**
+     * Captures whether the launcher was active at the time the FLAG_AWAKE was cleared.
+     * Always cleared when FLAG_AWAKE is set.
+     * <p>
+     * FLAG_RESUMED will be cleared when the device is asleep, since all apps get paused at this
+     * point. Thus, this flag indicates whether the launcher will be shown when the device wakes up
+     * again.
+     */
+    private static final int FLAG_LAUNCHER_WAS_ACTIVE_WHILE_AWAKE = 1 << 4;
+
+    /**
+     * Whether the device is currently locked.
+     * <ul>
+     *  <li>While locked, the taskbar is always stashed.<li/>
+     *  <li>Navbar animations on FLAG_DEVICE_LOCKED transitions will get special treatment.</li>
+     * </ul>
+     */
+    private static final int FLAG_DEVICE_LOCKED = 1 << 5;
+
+    /**
+     * Whether the complete taskbar is completely hidden (neither visible stashed or unstashed).
+     * This is tracked to allow a nice transition of the taskbar before SysUI forces it away by
+     * hiding the inset.
+     *
+     * This flag is predominanlty set while FLAG_DEVICE_LOCKED is set, thus the taskbar's invisible
+     * resting state while hidden is stashed.
+     */
+    private static final int FLAG_TASKBAR_HIDDEN = 1 << 6;
+
+    private static final int FLAGS_LAUNCHER_ACTIVE = FLAG_RESUMED | FLAG_TRANSITION_TO_RESUMED;
     /** Equivalent to an int with all 1s for binary operation purposes */
     private static final int FLAGS_ALL = ~0;
 
-    private final AnimatedFloat mIconAlignmentForResumedState =
-            new AnimatedFloat(this::onIconAlignmentRatioChangedForAppAndHomeTransition);
-    private final AnimatedFloat mIconAlignmentForGestureState =
-            new AnimatedFloat(this::onIconAlignmentRatioChangedForAppAndHomeTransition);
-    private final AnimatedFloat mIconAlignmentForLauncherState =
-            new AnimatedFloat(this::onIconAlignmentRatioChangedForStateTransition);
+    private static final float TASKBAR_BG_ALPHA_LAUNCHER_NOT_ALIGNED_DELAY_MULT = 0.33f;
+    private static final float TASKBAR_BG_ALPHA_NOT_LAUNCHER_NOT_ALIGNED_DELAY_MULT = 0.33f;
+    private static final float TASKBAR_BG_ALPHA_LAUNCHER_IS_ALIGNED_DURATION_MULT = 0.25f;
+
+    /**
+     * Delay for the taskbar fade-in.
+     *
+     * Helps to avoid visual noise when unlocking successfully via SFPS, and the device transitions
+     * to launcher directly. The delay avoids the navbar to become briefly visible. The duration
+     * is the same as in SysUI, see http://shortn/_uNSbDoRUSr.
+     */
+    private static final long TASKBAR_SHOW_DELAY_MS = 250;
+
+    private final AnimatedFloat mIconAlignment =
+            new AnimatedFloat(this::onIconAlignmentRatioChanged);
 
     private TaskbarControllers mControllers;
     private AnimatedFloat mTaskbarBackgroundAlpha;
-    private MultiValueAlpha.AlphaProperty mIconAlphaForHome;
-    private BaseQuickstepLauncher mLauncher;
+    private AnimatedFloat mTaskbarAlpha;
+    private AnimatedFloat mTaskbarCornerRoundness;
+    private MultiProperty mIconAlphaForHome;
+    private QuickstepLauncher mLauncher;
 
     private Integer mPrevState;
     private int mState;
     private LauncherState mLauncherState = LauncherState.NORMAL;
 
+    // Time when FLAG_TASKBAR_HIDDEN was last cleared, SystemClock.elapsedRealtime (milliseconds).
+    private long mLastUnlockTimeMs = 0;
+
     private @Nullable TaskBarRecentsAnimationListener mTaskBarRecentsAnimationListener;
 
-    private boolean mIsAnimatingToLauncherViaGesture;
-    private boolean mIsAnimatingToLauncherViaResume;
+    private boolean mIsAnimatingToLauncher;
 
     private boolean mShouldDelayLauncherStateAnim;
 
     // We skip any view synchronizations during init/destroy.
     private boolean mCanSyncViews;
 
+    private boolean mIsQsbInline;
+
+    private final DeviceProfile.OnDeviceProfileChangeListener mOnDeviceProfileChangeListener =
+            new DeviceProfile.OnDeviceProfileChangeListener() {
+                @Override
+                public void onDeviceProfileChanged(DeviceProfile dp) {
+                    if (mIsQsbInline && !dp.isQsbInline) {
+                        // We only modify QSB alpha if isQsbInline = true. If we switch to a DP
+                        // where isQsbInline = false, then we need to reset the alpha.
+                        mLauncher.getHotseat().setQsbAlpha(1f);
+                    }
+                    mIsQsbInline = dp.isQsbInline;
+                    TaskbarLauncherStateController.this.updateIconAlphaForHome(
+                            mIconAlphaForHome.getValue());
+                }
+            };
+
     private final StateManager.StateListener<LauncherState> mStateListener =
             new StateManager.StateListener<LauncherState>() {
 
                 @Override
                 public void onStateTransitionStart(LauncherState toState) {
                     if (toState != mLauncherState) {
-                        // Treat FLAG_TRANSITION_STATE_RUNNING as a changed flag even if a previous
-                        // state transition was already running, so we update the new target.
-                        mPrevState &= ~FLAG_TRANSITION_STATE_RUNNING;
+                        // Treat FLAG_LAUNCHER_IN_STATE_TRANSITION as a changed flag even if a
+                        // previous state transition was already running, so we update the new
+                        // target.
+                        mPrevState &= ~FLAG_LAUNCHER_IN_STATE_TRANSITION;
                         mLauncherState = toState;
                     }
-                    updateStateForFlag(FLAG_TRANSITION_STATE_RUNNING, true);
+                    updateStateForFlag(FLAG_LAUNCHER_IN_STATE_TRANSITION, true);
                     if (!mShouldDelayLauncherStateAnim) {
-                        applyState();
+                        if (toState == LauncherState.NORMAL) {
+                            applyState(QuickstepTransitionManager.TASKBAR_TO_HOME_DURATION);
+                        } else {
+                            applyState();
+                        }
                     }
                 }
 
                 @Override
                 public void onStateTransitionComplete(LauncherState finalState) {
                     mLauncherState = finalState;
-                    updateStateForFlag(FLAG_TRANSITION_STATE_RUNNING, false);
+                    updateStateForFlag(FLAG_LAUNCHER_IN_STATE_TRANSITION, false);
                     applyState();
+                    boolean disallowLongClick = finalState == LauncherState.OVERVIEW_SPLIT_SELECT;
+                    com.android.launcher3.taskbar.Utilities.setOverviewDragState(
+                            mControllers, finalState.disallowTaskbarGlobalDrag(),
+                            disallowLongClick, finalState.allowTaskbarInitialSplitSelection());
                 }
             };
 
-    public void init(TaskbarControllers controllers, BaseQuickstepLauncher launcher) {
+    /** Initializes the controller instance, and applies the initial state immediately. */
+    public void init(TaskbarControllers controllers, QuickstepLauncher launcher,
+            int sysuiStateFlags) {
         mCanSyncViews = false;
 
         mControllers = controllers;
         mLauncher = launcher;
 
+        mIsQsbInline = mLauncher.getDeviceProfile().isQsbInline;
+
         mTaskbarBackgroundAlpha = mControllers.taskbarDragLayerController
                 .getTaskbarBackgroundAlpha();
-        MultiValueAlpha taskbarIconAlpha = mControllers.taskbarViewController.getTaskbarIconAlpha();
-        mIconAlphaForHome = taskbarIconAlpha.getProperty(ALPHA_INDEX_HOME);
-        mIconAlphaForHome.setConsumer(
-                (Consumer<Float>) alpha -> mLauncher.getHotseat().setIconsAlpha(alpha > 0 ? 0 : 1));
+        mTaskbarAlpha = mControllers.taskbarDragLayerController.getTaskbarAlpha();
+        mTaskbarCornerRoundness = mControllers.getTaskbarCornerRoundness();
+        mIconAlphaForHome = mControllers.taskbarViewController
+                .getTaskbarIconAlpha().get(ALPHA_INDEX_HOME);
 
-        mIconAlignmentForResumedState.finishAnimation();
-        onIconAlignmentRatioChangedForAppAndHomeTransition();
+        resetIconAlignment();
 
         mLauncher.getStateManager().addStateListener(mStateListener);
-
-        // Initialize to the current launcher state
-        updateStateForFlag(FLAG_RESUMED, launcher.hasBeenResumed());
         mLauncherState = launcher.getStateManager().getState();
+        updateStateForSysuiFlags(sysuiStateFlags, /*applyState*/ false);
+
         applyState(0);
 
         mCanSyncViews = true;
+        mLauncher.addOnDeviceProfileChangeListener(mOnDeviceProfileChangeListener);
     }
 
     public void onDestroy() {
         mCanSyncViews = false;
 
-        mIconAlignmentForResumedState.finishAnimation();
-        mIconAlignmentForGestureState.finishAnimation();
-        mIconAlignmentForLauncherState.finishAnimation();
+        mIconAlignment.finishAnimation();
 
-        mIconAlphaForHome.setConsumer(null);
+        Log.d("b/260135164", "onDestroy - updateIconAlphaForHome(1)");
         mLauncher.getHotseat().setIconsAlpha(1f);
         mLauncher.getStateManager().removeStateListener(mStateListener);
 
         mCanSyncViews = true;
+        mLauncher.removeOnDeviceProfileChangeListener(mOnDeviceProfileChangeListener);
     }
 
+    /**
+     * Creates a transition animation to the launcher activity.
+     *
+     * Warning: the resulting animation must be played, since this method has side effects on this
+     * controller's state.
+     */
     public Animator createAnimToLauncher(@NonNull LauncherState toState,
             @NonNull RecentsAnimationCallbacks callbacks, long duration) {
         // If going to overview, stash the task bar
@@ -161,23 +268,28 @@
         TaskbarStashController stashController = mControllers.taskbarStashController;
         stashController.updateStateForFlag(FLAG_IN_STASHED_LAUNCHER_STATE,
                 toState.isTaskbarStashed(mLauncher));
+        if (DEBUG) {
+            Log.d(TAG, "createAnimToLauncher - FLAG_IN_APP: " + false);
+        }
         stashController.updateStateForFlag(FLAG_IN_APP, false);
 
-        updateStateForFlag(FLAG_RECENTS_ANIMATION_RUNNING, true);
-        animatorSet.play(stashController.applyStateWithoutStart(duration));
+        updateStateForFlag(FLAG_TRANSITION_TO_RESUMED, true);
+        animatorSet.play(stashController.createApplyStateAnimator(duration));
         animatorSet.play(applyState(duration, false));
 
+        if (mTaskBarRecentsAnimationListener != null) {
+            mTaskBarRecentsAnimationListener.endGestureStateOverride(
+                    !mLauncher.isInState(LauncherState.OVERVIEW));
+        }
         mTaskBarRecentsAnimationListener = new TaskBarRecentsAnimationListener(callbacks);
         callbacks.addListener(mTaskBarRecentsAnimationListener);
-        RecentsView recentsView = mLauncher.getOverviewPanel();
-        recentsView.setTaskLaunchListener(() -> {
-            mTaskBarRecentsAnimationListener.endGestureStateOverride(true);
-        });
+        ((RecentsView) mLauncher.getOverviewPanel()).setTaskLaunchListener(() ->
+                mTaskBarRecentsAnimationListener.endGestureStateOverride(true));
         return animatorSet;
     }
 
     public boolean isAnimatingToLauncher() {
-        return mIsAnimatingToLauncherViaResume || mIsAnimatingToLauncherViaGesture;
+        return mIsAnimatingToLauncher;
     }
 
     public void setShouldDelayLauncherStateAnim(boolean shouldDelayLauncherStateAnim) {
@@ -189,12 +301,46 @@
         mShouldDelayLauncherStateAnim = shouldDelayLauncherStateAnim;
     }
 
+    /** SysUI flags updated, see QuickStepContract.SYSUI_STATE_* values. */
+    public void updateStateForSysuiFlags(int systemUiStateFlags) {
+        updateStateForSysuiFlags(systemUiStateFlags, /* applyState */ true);
+    }
+
+    private  void updateStateForSysuiFlags(int systemUiStateFlags, boolean applyState) {
+        final boolean prevIsAwake = hasAnyFlag(FLAG_AWAKE);
+        final boolean currIsAwake = hasAnyFlag(systemUiStateFlags, SYSUI_STATE_AWAKE);
+
+        updateStateForFlag(FLAG_AWAKE, currIsAwake);
+        if (prevIsAwake != currIsAwake) {
+            // The screen is switching between on/off. When turning off, capture whether the
+            // launcher is active and memoize this state.
+            updateStateForFlag(FLAG_LAUNCHER_WAS_ACTIVE_WHILE_AWAKE,
+                    prevIsAwake && hasAnyFlag(FLAGS_LAUNCHER_ACTIVE));
+        }
+
+        boolean isDeviceLocked = hasAnyFlag(systemUiStateFlags, MASK_ANY_SYSUI_LOCKED);
+        updateStateForFlag(FLAG_DEVICE_LOCKED, isDeviceLocked);
+
+        // Taskbar is hidden whenever the device is dreaming. The dreaming state includes the
+        // interactive dreams, AoD, screen off. Since the SYSUI_STATE_DEVICE_DREAMING only kicks in
+        // when the device is asleep, the second condition extends ensures that the transition from
+        // and to the WAKEFULNESS_ASLEEP state also hide the taskbar, and improves the taskbar
+        // hide/reveal animation timings.
+        boolean isTaskbarHidden = hasAnyFlag(systemUiStateFlags, SYSUI_STATE_DEVICE_DREAMING)
+                || (systemUiStateFlags & SYSUI_STATE_WAKEFULNESS_MASK) != WAKEFULNESS_AWAKE;
+        updateStateForFlag(FLAG_TASKBAR_HIDDEN, isTaskbarHidden);
+
+        if (applyState) {
+            applyState();
+        }
+    }
+
     /**
      * Updates the proper flag to change the state of the task bar.
      *
      * Note that this only updates the flag. {@link #applyState()} needs to be called separately.
      *
-     * @param flag The flag to update.
+     * @param flag    The flag to update.
      * @param enabled Whether to enable the flag
      */
     public void updateStateForFlag(int flag, boolean enabled) {
@@ -214,22 +360,34 @@
     }
 
     public void applyState() {
-        applyState(TASKBAR_STASH_DURATION);
+        applyState(mControllers.taskbarStashController.getStashDuration());
     }
 
     public void applyState(long duration) {
         applyState(duration, true);
     }
 
-    public Animator applyState(boolean start) {
-        return applyState(TASKBAR_STASH_DURATION, start);
-    }
-
     public Animator applyState(long duration, boolean start) {
+        if (mControllers.taskbarActivityContext.isDestroyed()) {
+            return null;
+        }
         Animator animator = null;
         if (mPrevState == null || mPrevState != mState) {
             // If this is our initial state, treat all flags as changed.
             int changedFlags = mPrevState == null ? FLAGS_ALL : mPrevState ^ mState;
+
+            if (DEBUG) {
+                String stateString;
+                if (mPrevState == null) {
+                    stateString = getStateString(mState) + "(initial update)";
+                } else {
+                    stateString = formatFlagChange(mState, mPrevState,
+                            TaskbarLauncherStateController::getStateString);
+                }
+                Log.d(TAG, "applyState: " + stateString
+                        + ", duration: " + duration
+                        + ", start: " + start);
+            }
             mPrevState = mState;
             animator = onStateChangeApplied(changedFlags, duration, start);
         }
@@ -237,124 +395,238 @@
     }
 
     private Animator onStateChangeApplied(int changedFlags, long duration, boolean start) {
+        final boolean isInLauncher = isInLauncher();
+        final boolean isIconAlignedWithHotseat = isIconAlignedWithHotseat();
+        final float toAlignment = isIconAlignedWithHotseat ? 1 : 0;
+        boolean handleOpenFloatingViews = false;
+        if (DEBUG) {
+            Log.d(TAG, "onStateChangeApplied - isInLauncher: " + isInLauncher
+                    + ", mLauncherState: " + mLauncherState
+                    + ", toAlignment: " + toAlignment);
+        }
         AnimatorSet animatorSet = new AnimatorSet();
 
-        // Add the state animation first to ensure FLAG_IN_STASHED_LAUNCHER_STATE is set and we can
-        // determine whether goingToUnstashedLauncherStateChanged.
-        boolean wasGoingToUnstashedLauncherState = goingToUnstashedLauncherState();
-        if (hasAnyFlag(changedFlags, FLAG_TRANSITION_STATE_RUNNING)) {
-            boolean committed = !hasAnyFlag(FLAG_TRANSITION_STATE_RUNNING);
-            playStateTransitionAnim(animatorSet, duration, committed);
+        if (hasAnyFlag(changedFlags, FLAG_LAUNCHER_IN_STATE_TRANSITION)) {
+            boolean launcherTransitionCompleted = !hasAnyFlag(FLAG_LAUNCHER_IN_STATE_TRANSITION);
+            playStateTransitionAnim(animatorSet, duration, launcherTransitionCompleted);
 
-            if (committed && mLauncherState == LauncherState.QUICK_SWITCH) {
+            if (launcherTransitionCompleted
+                    && mLauncherState == LauncherState.QUICK_SWITCH_FROM_HOME) {
                 // We're about to be paused, set immediately to ensure seamless handoff.
                 updateStateForFlag(FLAG_RESUMED, false);
                 applyState(0 /* duration */);
             }
+            if (mLauncherState == LauncherState.NORMAL) {
+                // We're changing state to home, should close open popups e.g. Taskbar AllApps
+                handleOpenFloatingViews = true;
+            }
+            if (mLauncherState == LauncherState.OVERVIEW) {
+                // Calling to update the insets in TaskbarInsetController#updateInsetsTouchability
+                mControllers.taskbarActivityContext.notifyUpdateLayoutParams();
+            }
         }
-        boolean goingToUnstashedLauncherStateChanged = wasGoingToUnstashedLauncherState
-                != goingToUnstashedLauncherState();
 
-        boolean launcherStateChangedDuringAnimToResumeAlignment =
-                mIconAlignmentForResumedState.isAnimating() && goingToUnstashedLauncherStateChanged;
-        if (hasAnyFlag(changedFlags, FLAG_RESUMED)
-                || launcherStateChangedDuringAnimToResumeAlignment) {
-            boolean isResumed = isResumed();
-            // If launcher is resumed, we show the icons when going to an unstashed launcher state
-            // or launcher state is not changed (e.g. in overview, launcher is paused and resumed).
-            float toAlignmentForResumedState = isResumed && (goingToUnstashedLauncherState()
-                    || !goingToUnstashedLauncherStateChanged) ? 1 : 0;
-            // If we're already animating to the value, just leave it be instead of restarting it.
-            if (!mIconAlignmentForResumedState.isAnimatingToValue(toAlignmentForResumedState)) {
-                ObjectAnimator resumeAlignAnim = mIconAlignmentForResumedState
-                        .animateToValue(toAlignmentForResumedState)
-                        .setDuration(duration);
+        if (hasAnyFlag(changedFlags, FLAGS_LAUNCHER_ACTIVE)) {
+            animatorSet.addListener(new AnimatorListenerAdapter() {
+                @Override
+                public void onAnimationStart(Animator animation) {
+                    mIsAnimatingToLauncher = isInLauncher;
 
-                resumeAlignAnim.addListener(new AnimatorListenerAdapter() {
+                    TaskbarStashController stashController =
+                            mControllers.taskbarStashController;
+                    if (DEBUG) {
+                        Log.d(TAG, "onAnimationStart - FLAG_IN_APP: " + !isInLauncher);
+                    }
+                    stashController.updateStateForFlag(FLAG_IN_APP, !isInLauncher);
+                    stashController.applyState(duration);
+                }
+
+                @Override
+                public void onAnimationEnd(Animator animation) {
+                    mIsAnimatingToLauncher = false;
+                }
+            });
+
+            // Handle closing open popups when going home/overview
+            handleOpenFloatingViews = true;
+        }
+
+        if (handleOpenFloatingViews && isInLauncher) {
+            AbstractFloatingView.closeAllOpenViews(mControllers.taskbarActivityContext);
+        }
+
+        if (hasAnyFlag(changedFlags, FLAG_TASKBAR_HIDDEN) && !hasAnyFlag(FLAG_TASKBAR_HIDDEN)) {
+            // Take note of the current time, as the taskbar is made visible again.
+            mLastUnlockTimeMs = SystemClock.elapsedRealtime();
+        }
+
+        boolean isHidden = hasAnyFlag(FLAG_TASKBAR_HIDDEN);
+        float taskbarAlpha = isHidden ? 0 : 1;
+        if (mTaskbarAlpha.isAnimating() || mTaskbarAlpha.value != taskbarAlpha) {
+            Animator taskbarVisibility = mTaskbarAlpha.animateToValue(taskbarAlpha);
+
+            taskbarVisibility.setDuration(duration);
+            if (isHidden) {
+                // Stash the transient taskbar once the taskbar is not visible. This reduces
+                // visual noise when unlocking the device afterwards.
+                animatorSet.addListener(new AnimatorListenerAdapter() {
                     @Override
                     public void onAnimationEnd(Animator animation) {
-                        mIsAnimatingToLauncherViaResume = false;
-                    }
-
-                    @Override
-                    public void onAnimationStart(Animator animation) {
-                        mIsAnimatingToLauncherViaResume = isResumed;
-
                         TaskbarStashController stashController =
                                 mControllers.taskbarStashController;
-                        stashController.updateStateForFlag(FLAG_IN_APP, !isResumed);
-                        stashController.applyState(duration);
+                        stashController.updateAndAnimateTransientTaskbar(/* stash */ true);
                     }
                 });
-                animatorSet.play(resumeAlignAnim);
+            } else {
+                // delay the fade in animation a bit to reduce visual noise when waking up a device
+                // with a fingerprint reader. This should only be done when the device was woken
+                // up via fingerprint reader, however since this information is currently not
+                // available, opting to always delay the fade-in a bit.
+                long durationSinceLastUnlockMs = SystemClock.elapsedRealtime() - mLastUnlockTimeMs;
+                taskbarVisibility.setStartDelay(
+                        Math.max(0, TASKBAR_SHOW_DELAY_MS - durationSinceLastUnlockMs));
             }
+            animatorSet.play(taskbarVisibility);
         }
 
+        float backgroundAlpha = isInLauncher && isTaskbarAlignedWithHotseat() ? 0 : 1;
 
-        boolean launcherStateChangedDuringAnimToGestureAlignment =
-                mIconAlignmentForGestureState.isAnimating() && goingToUnstashedLauncherStateChanged;
-        if (hasAnyFlag(changedFlags, FLAG_RECENTS_ANIMATION_RUNNING)
-                || launcherStateChangedDuringAnimToGestureAlignment) {
-            boolean isRecentsAnimationRunning = isRecentsAnimationRunning();
-            float toAlignmentForGestureState = isRecentsAnimationRunning
-                    && goingToUnstashedLauncherState() ? 1 : 0;
-            // If we're already animating to the value, just leave it be instead of restarting it.
-            if (!mIconAlignmentForGestureState.isAnimatingToValue(toAlignmentForGestureState)) {
-                Animator gestureAlignAnim = mIconAlignmentForGestureState
-                        .animateToValue(toAlignmentForGestureState);
-                if (isRecentsAnimationRunning) {
-                    gestureAlignAnim.setDuration(duration);
-                }
-                gestureAlignAnim.addListener(new AnimatorListenerAdapter() {
-                    @Override
-                    public void onAnimationEnd(Animator animation) {
-                        mIsAnimatingToLauncherViaGesture = false;
-                    }
-
-                    @Override
-                    public void onAnimationStart(Animator animation) {
-                        mIsAnimatingToLauncherViaGesture = isRecentsAnimationRunning();
-                    }
-                });
-                animatorSet.play(gestureAlignAnim);
+        // Don't animate if background has reached desired value.
+        if (mTaskbarBackgroundAlpha.isAnimating()
+                || mTaskbarBackgroundAlpha.value != backgroundAlpha) {
+            mTaskbarBackgroundAlpha.cancelAnimation();
+            if (DEBUG) {
+                Log.d(TAG, "onStateChangeApplied - taskbarBackgroundAlpha - "
+                        + mTaskbarBackgroundAlpha.value
+                        + " -> " + backgroundAlpha + ": " + duration);
             }
+
+            boolean isInLauncherIconNotAligned = isInLauncher && !isIconAlignedWithHotseat;
+            boolean notInLauncherIconNotAligned = !isInLauncher && !isIconAlignedWithHotseat;
+            boolean isInLauncherIconIsAligned = isInLauncher && isIconAlignedWithHotseat;
+
+            float startDelay = 0;
+            // We want to delay the background from fading in so that the icons have time to move
+            // into the bounds of the background before it appears.
+            if (isInLauncherIconNotAligned) {
+                startDelay = duration * TASKBAR_BG_ALPHA_LAUNCHER_NOT_ALIGNED_DELAY_MULT;
+            } else if (notInLauncherIconNotAligned) {
+                startDelay = duration * TASKBAR_BG_ALPHA_NOT_LAUNCHER_NOT_ALIGNED_DELAY_MULT;
+            }
+            float newDuration = duration - startDelay;
+            if (isInLauncherIconIsAligned) {
+                // Make the background fade out faster so that it is gone by the time the
+                // icons move outside of the bounds of the background.
+                newDuration = duration * TASKBAR_BG_ALPHA_LAUNCHER_IS_ALIGNED_DURATION_MULT;
+            }
+            Animator taskbarBackgroundAlpha = mTaskbarBackgroundAlpha
+                    .animateToValue(backgroundAlpha)
+                    .setDuration((long) newDuration);
+            taskbarBackgroundAlpha.setStartDelay((long) startDelay);
+            animatorSet.play(taskbarBackgroundAlpha);
         }
 
-        if (hasAnyFlag(changedFlags, FLAG_RESUMED | FLAG_RECENTS_ANIMATION_RUNNING)) {
-            boolean goingToLauncher = hasAnyFlag(FLAG_RESUMED | FLAG_RECENTS_ANIMATION_RUNNING);
-            if (goingToLauncher) {
-                // Handle closing open popups when going home/overview
-                AbstractFloatingView.closeAllOpenViews(mControllers.taskbarActivityContext);
+        float cornerRoundness = isInLauncher ? 0 : 1;
+
+        // Don't animate if corner roundness has reached desired value.
+        if (mTaskbarCornerRoundness.isAnimating()
+                || mTaskbarCornerRoundness.value != cornerRoundness) {
+            mTaskbarCornerRoundness.cancelAnimation();
+            if (DEBUG) {
+                Log.d(TAG, "onStateChangeApplied - taskbarCornerRoundness - "
+                        + mTaskbarCornerRoundness.value
+                        + " -> " + cornerRoundness + ": " + duration);
             }
-            animatorSet.play(mTaskbarBackgroundAlpha.animateToValue(goingToLauncher ? 0 : 1)
-                    .setDuration(duration));
+            animatorSet.play(mTaskbarCornerRoundness.animateToValue(cornerRoundness));
         }
 
+        // Keep isUnlockTransition in sync with its counterpart in
+        // TaskbarStashController#createAnimToIsStashed.
+        boolean isUnlockTransition =
+                hasAnyFlag(changedFlags, FLAG_DEVICE_LOCKED) && !hasAnyFlag(FLAG_DEVICE_LOCKED);
+        if (isUnlockTransition) {
+            // When transitioning to unlocked, ensure the hotseat is fully visible from the
+            // beginning. The hotseat itself is animated by LauncherUnlockAnimationController.
+            mIconAlignment.cancelAnimation();
+            // updateValue ensures onIconAlignmentRatioChanged will be called if there is an actual
+            // change in value
+            mIconAlignment.updateValue(toAlignment);
+        } else if (mIconAlignment.isAnimatingToValue(toAlignment)
+                || mIconAlignment.isSettledOnValue(toAlignment)) {
+            // Already at desired value, but make sure we run the callback at the end.
+            animatorSet.addListener(AnimatorListeners.forEndCallback(
+                    this::onIconAlignmentRatioChanged));
+        } else {
+            mIconAlignment.cancelAnimation();
+            ObjectAnimator iconAlignAnim = mIconAlignment
+                    .animateToValue(toAlignment)
+                    .setDuration(duration);
+            if (DEBUG) {
+                Log.d(TAG, "onStateChangeApplied - iconAlignment - "
+                        + mIconAlignment.value
+                        + " -> " + toAlignment + ": " + duration);
+            }
+            animatorSet.play(iconAlignAnim);
+        }
+
+        animatorSet.setInterpolator(EMPHASIZED);
+
         if (start) {
             animatorSet.start();
         }
         return animatorSet;
     }
 
-    /** Returns whether we're going to a state where taskbar icons should align with launcher. */
-    private boolean goingToUnstashedLauncherState() {
-        return !mControllers.taskbarStashController.isInStashedLauncherState();
+    /**
+     * Whether the taskbar is aligned with the hotseat in the current/target launcher state.
+     *
+     * This refers to the intended state - a transition to this state might be in progress.
+     */
+    public boolean isTaskbarAlignedWithHotseat() {
+        return mLauncherState.isTaskbarAlignedWithHotseat(mLauncher);
+    }
+
+    /**
+     * Returns if icons should be aligned to hotseat in the current transition
+     */
+    public boolean isIconAlignedWithHotseat() {
+        if (isInLauncher()) {
+            boolean isInStashedState = mLauncherState.isTaskbarStashed(mLauncher);
+            boolean willStashVisually = isInStashedState
+                    && mControllers.taskbarStashController.supportsVisualStashing();
+            boolean isTaskbarAlignedWithHotseat =
+                    mLauncherState.isTaskbarAlignedWithHotseat(mLauncher);
+            return isTaskbarAlignedWithHotseat && !willStashVisually;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Returns if the current Launcher state has hotseat on top of other elemnets.
+     */
+    public boolean isInHotseatOnTopStates() {
+        return mLauncherState != LauncherState.ALL_APPS;
+    }
+
+    boolean isInOverview() {
+        return mLauncherState == LauncherState.OVERVIEW;
     }
 
     private void playStateTransitionAnim(AnimatorSet animatorSet, long duration,
             boolean committed) {
         boolean isInStashedState = mLauncherState.isTaskbarStashed(mLauncher);
-        float toAlignment = mLauncherState.isTaskbarAlignedWithHotseat(mLauncher) ? 1 : 0;
-
-        TaskbarStashController controller = mControllers.taskbarStashController;
-        controller.updateStateForFlag(FLAG_IN_STASHED_LAUNCHER_STATE, isInStashedState);
-        Animator stashAnimator = controller.applyStateWithoutStart(duration);
+        TaskbarStashController stashController = mControllers.taskbarStashController;
+        stashController.updateStateForFlag(FLAG_IN_STASHED_LAUNCHER_STATE, isInStashedState);
+        Animator stashAnimator = stashController.createApplyStateAnimator(duration);
         if (stashAnimator != null) {
             stashAnimator.addListener(new AnimatorListenerAdapter() {
                 @Override
                 public void onAnimationEnd(Animator animation) {
                     if (isInStashedState && committed) {
                         // Reset hotseat alpha to default
+                        Log.d("b/260135164",
+                                "playStateTransitionAnim#onAnimationEnd - setIconsAlpha(1)");
                         mLauncher.getHotseat().setIconsAlpha(1);
                     }
                 }
@@ -362,79 +634,85 @@
                 @Override
                 public void onAnimationStart(Animator animation) {
                     if (mLauncher.getHotseat().getIconsAlpha() > 0) {
-                        mIconAlphaForHome.setValue(mLauncher.getHotseat().getIconsAlpha());
+                        updateIconAlphaForHome(mLauncher.getHotseat().getIconsAlpha());
                     }
                 }
             });
             animatorSet.play(stashAnimator);
         }
 
-        // If we're already animating to the value, just leave it be instead of restarting it.
-        if (!mIconAlignmentForLauncherState.isAnimatingToValue(toAlignment)) {
-            mIconAlignmentForLauncherState.finishAnimation();
-            animatorSet.play(mIconAlignmentForLauncherState.animateToValue(toAlignment)
-                    .setDuration(duration));
+        // Translate back to 0 at a shorter or same duration as the icon alignment animation.
+        // This ensures there is no jump after switching to hotseat, e.g. when swiping up from
+        // overview to home. When not in app, we do duration / 2 just to make it feel snappier.
+        long resetDuration = mControllers.taskbarStashController.isInApp()
+                ? duration
+                : duration / 2;
+        if (!mControllers.taskbarTranslationController.willAnimateToZeroBefore(resetDuration)
+                && (isAnimatingToLauncher() || mLauncherState == LauncherState.NORMAL)) {
+            animatorSet.play(mControllers.taskbarTranslationController
+                    .createAnimToResetTranslation(resetDuration));
         }
     }
 
-    private boolean isResumed() {
-        return (mState & FLAG_RESUMED) != 0;
-    }
-
-    private boolean isRecentsAnimationRunning() {
-        return (mState & FLAG_RECENTS_ANIMATION_RUNNING) != 0;
-    }
-
-    private void onIconAlignmentRatioChangedForStateTransition() {
-        if (!isResumed() && mTaskBarRecentsAnimationListener == null) {
-            return;
+    /** Whether the launcher is considered active. */
+    private boolean isInLauncher() {
+        if (hasAnyFlag(FLAG_AWAKE)) {
+            return hasAnyFlag(FLAGS_LAUNCHER_ACTIVE);
+        } else {
+            return hasAnyFlag(FLAG_LAUNCHER_WAS_ACTIVE_WHILE_AWAKE);
         }
-        onIconAlignmentRatioChanged(this::getCurrentIconAlignmentRatioForLauncherState);
     }
 
-    private void onIconAlignmentRatioChangedForAppAndHomeTransition() {
-        onIconAlignmentRatioChanged(this::getCurrentIconAlignmentRatioBetweenAppAndHome);
+    /**
+     * Resets and updates the icon alignment.
+     */
+    protected void resetIconAlignment() {
+        mIconAlignment.finishAnimation();
+        onIconAlignmentRatioChanged();
     }
 
-    private void onIconAlignmentRatioChanged(Supplier<Float> alignmentSupplier) {
-        if (mControllers == null) {
-            return;
-        }
-        float alignment = alignmentSupplier.get();
+    private void onIconAlignmentRatioChanged() {
         float currentValue = mIconAlphaForHome.getValue();
-        boolean taskbarWillBeVisible = alignment < 1;
+        boolean taskbarWillBeVisible = mIconAlignment.value < 1;
         boolean firstFrameVisChanged = (taskbarWillBeVisible && Float.compare(currentValue, 1) != 0)
                 || (!taskbarWillBeVisible && Float.compare(currentValue, 0) != 0);
 
-        updateIconAlignment(alignment);
+        mControllers.taskbarViewController.setLauncherIconAlignment(
+                mIconAlignment.value, mLauncher.getDeviceProfile());
+        mControllers.navbarButtonsViewController.updateTaskbarAlignment(mIconAlignment.value);
+        // Switch taskbar and hotseat in last frame
+        updateIconAlphaForHome(taskbarWillBeVisible ? 1 : 0);
 
         // Sync the first frame where we swap taskbar and hotseat.
-        if (firstFrameVisChanged && mCanSyncViews && !Utilities.IS_RUNNING_IN_TEST_HARNESS) {
+        if (firstFrameVisChanged && mCanSyncViews && !Utilities.isRunningInTestHarness()) {
             ViewRootSync.synchronizeNextDraw(mLauncher.getHotseat(),
                     mControllers.taskbarActivityContext.getDragLayer(),
-                    () -> {});
+                    () -> {
+                    });
         }
     }
 
-    private void updateIconAlignment(float alignment) {
-        mControllers.taskbarViewController.setLauncherIconAlignment(
-                alignment, mLauncher.getDeviceProfile());
-
-        // Switch taskbar and hotseat in last frame
-        setTaskbarViewVisible(alignment < 1);
-        mControllers.navbarButtonsViewController.updateTaskbarAlignment(alignment);
-    }
-
-    private float getCurrentIconAlignmentRatioBetweenAppAndHome() {
-        return Math.max(mIconAlignmentForResumedState.value, mIconAlignmentForGestureState.value);
-    }
-
-    private float getCurrentIconAlignmentRatioForLauncherState() {
-        return mIconAlignmentForLauncherState.value;
-    }
-
-    private void setTaskbarViewVisible(boolean isVisible) {
-        mIconAlphaForHome.setValue(isVisible ? 1 : 0);
+    private void updateIconAlphaForHome(float alpha) {
+        if (mControllers.taskbarActivityContext.isDestroyed()) {
+            Log.e("b/260135164", "updateIconAlphaForHome is called after Taskbar is destroyed",
+                    new Exception());
+            return;
+        }
+        mIconAlphaForHome.setValue(alpha);
+        boolean hotseatVisible = alpha == 0
+                || (!mControllers.uiController.isHotseatIconOnTopWhenAligned()
+                && mIconAlignment.value > 0);
+        /*
+         * Hide Launcher Hotseat icons when Taskbar icons have opacity. Both icon sets
+         * should not be visible at the same time.
+         */
+        Log.d("b/260135164",
+                "updateIconAlphaForHome - setIconsAlpha(" + (hotseatVisible ? 1 : 0)
+                        + "), isTaskbarPresent: " + mLauncher.getDeviceProfile().isTaskbarPresent);
+        mLauncher.getHotseat().setIconsAlpha(hotseatVisible ? 1 : 0);
+        if (mIsQsbInline) {
+            mLauncher.getHotseat().setQsbAlpha(hotseatVisible ? 1 : 0);
+        }
     }
 
     private final class TaskBarRecentsAnimationListener implements
@@ -459,47 +737,42 @@
         private void endGestureStateOverride(boolean finishedToApp) {
             mCallbacks.removeListener(this);
             mTaskBarRecentsAnimationListener = null;
+            ((RecentsView) mLauncher.getOverviewPanel()).setTaskLaunchListener(null);
 
             // Update the resumed state immediately to ensure a seamless handoff
             boolean launcherResumed = !finishedToApp;
-            updateStateForFlag(FLAG_RECENTS_ANIMATION_RUNNING, false);
+            updateStateForFlag(FLAG_TRANSITION_TO_RESUMED, false);
             updateStateForFlag(FLAG_RESUMED, launcherResumed);
             applyState();
-            // Set this last because applyState() might also animate it.
-            mIconAlignmentForResumedState.cancelAnimation();
-            mIconAlignmentForResumedState.updateValue(launcherResumed ? 1 : 0);
 
             TaskbarStashController controller = mControllers.taskbarStashController;
+            if (DEBUG) {
+                Log.d(TAG, "endGestureStateOverride - FLAG_IN_APP: " + finishedToApp);
+            }
             controller.updateStateForFlag(FLAG_IN_APP, finishedToApp);
             controller.applyState();
         }
     }
 
     private static String getStateString(int flags) {
-        StringJoiner str = new StringJoiner("|");
-        str.add((flags & FLAG_RESUMED) != 0 ? "FLAG_RESUMED" : "");
-        str.add((flags & FLAG_RECENTS_ANIMATION_RUNNING) != 0
-                ? "FLAG_RECENTS_ANIMATION_RUNNING" : "");
-        str.add((flags & FLAG_TRANSITION_STATE_RUNNING) != 0
-                ? "FLAG_TRANSITION_STATE_RUNNING" : "");
-        return str.toString();
+        StringJoiner result = new StringJoiner("|");
+        appendFlag(result, flags, FLAG_RESUMED, "resumed");
+        appendFlag(result, flags, FLAG_TRANSITION_TO_RESUMED, "transition_to_resumed");
+        appendFlag(result, flags, FLAG_LAUNCHER_IN_STATE_TRANSITION,
+                "launcher_in_state_transition");
+        appendFlag(result, flags, FLAG_AWAKE, "awake");
+        appendFlag(result, flags, FLAG_LAUNCHER_WAS_ACTIVE_WHILE_AWAKE,
+                "was_active_while_awake");
+        appendFlag(result, flags, FLAG_DEVICE_LOCKED, "device_locked");
+        return result.toString();
     }
 
     protected void dumpLogs(String prefix, PrintWriter pw) {
         pw.println(prefix + "TaskbarLauncherStateController:");
-
         pw.println(String.format(
-                "%s\tmIconAlignmentForResumedState=%.2f",
+                "%s\tmIconAlignment=%.2f",
                 prefix,
-                mIconAlignmentForResumedState.value));
-        pw.println(String.format(
-                "%s\tmIconAlignmentForGestureState=%.2f",
-                prefix,
-                mIconAlignmentForGestureState.value));
-        pw.println(String.format(
-                "%s\tmIconAlignmentForLauncherState=%.2f",
-                prefix,
-                mIconAlignmentForLauncherState.value));
+                mIconAlignment.value));
         pw.println(String.format(
                 "%s\tmTaskbarBackgroundAlpha=%.2f", prefix, mTaskbarBackgroundAlpha.value));
         pw.println(String.format(
@@ -508,13 +781,9 @@
         pw.println(String.format("%s\tmState=%s", prefix, getStateString(mState)));
         pw.println(String.format("%s\tmLauncherState=%s", prefix, mLauncherState));
         pw.println(String.format(
-                "%s\tmIsAnimatingToLauncherViaGesture=%b",
+                "%s\tmIsAnimatingToLauncher=%b",
                 prefix,
-                mIsAnimatingToLauncherViaGesture));
-        pw.println(String.format(
-                "%s\tmIsAnimatingToLauncherViaResume=%b",
-                prefix,
-                mIsAnimatingToLauncherViaResume));
+                mIsAnimatingToLauncher));
         pw.println(String.format(
                 "%s\tmShouldDelayLauncherStateAnim=%b", prefix, mShouldDelayLauncherStateAnim));
     }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java
index 06262c0..738ff87 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java
@@ -15,48 +15,70 @@
  */
 package com.android.launcher3.taskbar;
 
+import static android.content.Context.RECEIVER_NOT_EXPORTED;
 import static android.content.pm.PackageManager.FEATURE_PC;
 import static android.view.Display.DEFAULT_DISPLAY;
 import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL;
 
+import static com.android.launcher3.LauncherPrefs.TASKBAR_PINNING;
+import static com.android.launcher3.LauncherPrefs.TASKBAR_PINNING_KEY;
 import static com.android.launcher3.util.DisplayController.CHANGE_DENSITY;
 import static com.android.launcher3.util.DisplayController.CHANGE_NAVIGATION_MODE;
+import static com.android.launcher3.util.DisplayController.TASKBAR_NOT_DESTROYED_TAG;
+import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
+import static com.android.launcher3.util.FlagDebugUtils.formatFlagChange;
 
+import android.annotation.SuppressLint;
+import android.app.PendingIntent;
 import android.content.ComponentCallbacks;
 import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.SharedPreferences;
 import android.content.pm.ActivityInfo;
 import android.content.res.Configuration;
 import android.hardware.display.DisplayManager;
 import android.net.Uri;
 import android.os.Handler;
+import android.os.SystemProperties;
 import android.provider.Settings;
+import android.util.Log;
 import android.view.Display;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
 
-import com.android.launcher3.BaseQuickstepLauncher;
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.anim.AnimatorPlaybackController;
 import com.android.launcher3.statemanager.StatefulActivity;
 import com.android.launcher3.taskbar.unfold.NonDestroyableScopedUnfoldTransitionProgressProvider;
+import com.android.launcher3.uioverrides.QuickstepLauncher;
 import com.android.launcher3.util.DisplayController;
+import com.android.launcher3.util.NavigationMode;
 import com.android.launcher3.util.SettingsCache;
 import com.android.launcher3.util.SimpleBroadcastReceiver;
 import com.android.quickstep.RecentsActivity;
 import com.android.quickstep.SystemUiProxy;
 import com.android.quickstep.TouchInteractionService;
+import com.android.systemui.shared.system.QuickStepContract;
 import com.android.systemui.unfold.UnfoldTransitionProgressProvider;
 import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider;
 
 import java.io.PrintWriter;
+import java.util.StringJoiner;
 
 /**
  * Class to manage taskbar lifecycle
  */
 public class TaskbarManager {
+    private static final String TAG = "TaskbarManager";
+    private static final boolean DEBUG = false;
+
+    public static final boolean FLAG_HIDE_NAVBAR_WINDOW =
+            SystemProperties.getBoolean("persist.wm.debug.hide_navbar_window", false);
 
     private static final Uri USER_SETUP_COMPLETE_URI = Settings.Secure.getUriFor(
             Settings.Secure.USER_SETUP_COMPLETE);
@@ -78,6 +100,7 @@
     // It's destruction/creation will be managed by the activity.
     private final ScopedUnfoldTransitionProgressProvider mUnfoldProgressProvider =
             new NonDestroyableScopedUnfoldTransitionProgressProvider();
+    private NavigationMode mNavMode;
 
     private TaskbarActivityContext mTaskbarActivityContext;
     private StatefulActivity mActivity;
@@ -104,6 +127,24 @@
 
     private boolean mUserUnlocked = false;
 
+    public static final int SYSTEM_ACTION_ID_TASKBAR = 499;
+
+    /**
+     * For Taskbar broadcast intent filter.
+     */
+    public static final String ACTION_SHOW_TASKBAR = "ACTION_SHOW_TASKBAR";
+
+    private final SimpleBroadcastReceiver mTaskbarBroadcastReceiver =
+            new SimpleBroadcastReceiver(this::showTaskbarFromBroadcast);
+
+    private final SharedPreferences.OnSharedPreferenceChangeListener
+            mTaskbarPinningPreferenceChangeListener = (sharedPreferences, key) -> {
+                if (TASKBAR_PINNING_KEY.equals(key)) {
+                    recreateTaskbar();
+                }
+            };
+
+    @SuppressLint("WrongConstant")
     public TaskbarManager(TouchInteractionService service) {
         mDisplayController = DisplayController.INSTANCE.get(service);
         Display display =
@@ -119,38 +160,61 @@
 
             @Override
             public void onConfigurationChanged(Configuration newConfig) {
+                debugWhyTaskbarNotDestroyed(
+                        "TaskbarManager#mComponentCallbacks.onConfigurationChanged: " + newConfig);
                 DeviceProfile dp = mUserUnlocked
                         ? LauncherAppState.getIDP(mContext).getDeviceProfile(mContext)
                         : null;
                 int configDiff = mOldConfig.diff(newConfig);
+                int configDiffForRecreate = configDiff;
                 int configsRequiringRecreate = ActivityInfo.CONFIG_ASSETS_PATHS
                         | ActivityInfo.CONFIG_LAYOUT_DIRECTION | ActivityInfo.CONFIG_UI_MODE
                         | ActivityInfo.CONFIG_SCREEN_SIZE;
-                boolean requiresRecreate = (configDiff & configsRequiringRecreate) != 0;
                 if ((configDiff & ActivityInfo.CONFIG_SCREEN_SIZE) != 0
-                        && mTaskbarActivityContext != null && dp != null) {
+                        && mTaskbarActivityContext != null && dp != null
+                        && !isPhoneMode(dp)) {
                     // Additional check since this callback gets fired multiple times w/o
                     // screen size changing, or when simply rotating the device.
+                    // In the case of phone device rotation, we do want to call recreateTaskbar()
                     DeviceProfile oldDp = mTaskbarActivityContext.getDeviceProfile();
                     boolean isOrientationChange =
                             (configDiff & ActivityInfo.CONFIG_ORIENTATION) != 0;
+
+                    int newOrientation = newConfig.windowConfiguration.getRotation();
+                    int oldOrientation = mOldConfig.windowConfiguration.getRotation();
                     int oldWidth = isOrientationChange ? oldDp.heightPx : oldDp.widthPx;
                     int oldHeight = isOrientationChange ? oldDp.widthPx : oldDp.heightPx;
-                    if (dp.widthPx == oldWidth && dp.heightPx == oldHeight) {
-                        configDiff &= ~ActivityInfo.CONFIG_SCREEN_SIZE;
-                        requiresRecreate = (configDiff & configsRequiringRecreate) != 0;
+
+                    if ((dp.widthPx == oldWidth && dp.heightPx == oldHeight)
+                            || (newOrientation == oldOrientation)) {
+                        configDiffForRecreate &= ~ActivityInfo.CONFIG_SCREEN_SIZE;
+                    }
+                }
+                if ((configDiff & ActivityInfo.CONFIG_UI_MODE) != 0) {
+                    // Only recreate for theme changes, not other UI mode changes such as docking.
+                    int oldUiNightMode = (mOldConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK);
+                    int newUiNightMode = (newConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK);
+                    if (oldUiNightMode == newUiNightMode) {
+                        configDiffForRecreate &= ~ActivityInfo.CONFIG_UI_MODE;
                     }
                 }
 
-                if (requiresRecreate) {
+                debugWhyTaskbarNotDestroyed("ComponentCallbacks#onConfigurationChanged() "
+                        + "configDiffForRecreate="
+                        + Configuration.configurationDiffToString(configDiffForRecreate));
+                if ((configDiffForRecreate & configsRequiringRecreate) != 0) {
                     recreateTaskbar();
                 } else {
                     // Config change might be handled without re-creating the taskbar
                     if (mTaskbarActivityContext != null) {
-                        if (dp != null && dp.isTaskbarPresent) {
-                            mTaskbarActivityContext.updateDeviceProfile(dp);
+                        if (dp != null && !isTaskbarPresent(dp)) {
+                            destroyExistingTaskbar();
+                        } else {
+                            if (dp != null && isTaskbarPresent(dp)) {
+                                mTaskbarActivityContext.updateDeviceProfile(dp, mNavMode);
+                            }
+                            mTaskbarActivityContext.onConfigurationChanged(configDiff);
                         }
-                        mTaskbarActivityContext.onConfigurationChanged(configDiff);
                     }
                 }
                 mOldConfig = newConfig;
@@ -159,12 +223,17 @@
             @Override
             public void onLowMemory() { }
         };
-        mShutdownReceiver = new SimpleBroadcastReceiver(i -> destroyExistingTaskbar());
+        mShutdownReceiver = new SimpleBroadcastReceiver(i ->
+                destroyExistingTaskbar());
         mDispInfoChangeListener = (context, info, flags) -> {
             if ((flags & CHANGE_FLAGS) != 0) {
+                mNavMode = info.navigationMode;
                 recreateTaskbar();
             }
+            debugWhyTaskbarNotDestroyed("DisplayInfoChangeListener#"
+                    + mDisplayController.getChangeFlagsString(flags));
         };
+        mNavMode = mDisplayController.getInfo().navigationMode;
         mDisplayController.addChangeListener(mDispInfoChangeListener);
         SettingsCache.INSTANCE.get(mContext).register(USER_SETUP_COMPLETE_URI,
                 mUserSetupCompleteListener);
@@ -172,14 +241,40 @@
                 mNavBarKidsModeListener);
         mContext.registerComponentCallbacks(mComponentCallbacks);
         mShutdownReceiver.register(mContext, Intent.ACTION_SHUTDOWN);
+        UI_HELPER_EXECUTOR.execute(() -> {
+            mSharedState.taskbarSystemActionPendingIntent = PendingIntent.getBroadcast(
+                    mContext,
+                    SYSTEM_ACTION_ID_TASKBAR,
+                    new Intent(ACTION_SHOW_TASKBAR).setPackage(mContext.getPackageName()),
+                    PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
+            mContext.registerReceiver(
+                    mTaskbarBroadcastReceiver,
+                    new IntentFilter(ACTION_SHOW_TASKBAR),
+                    RECEIVER_NOT_EXPORTED);
+        });
 
+        debugWhyTaskbarNotDestroyed("TaskbarManager created");
         recreateTaskbar();
     }
 
     private void destroyExistingTaskbar() {
+        debugWhyTaskbarNotDestroyed("destroyExistingTaskbar: " + mTaskbarActivityContext);
         if (mTaskbarActivityContext != null) {
+            LauncherPrefs.get(mContext).removeListener(mTaskbarPinningPreferenceChangeListener,
+                    TASKBAR_PINNING);
             mTaskbarActivityContext.onDestroy();
-            mTaskbarActivityContext = null;
+            if (!FLAG_HIDE_NAVBAR_WINDOW) {
+                mTaskbarActivityContext = null;
+            }
+        }
+    }
+
+    /**
+     * Show Taskbar upon receiving broadcast
+     */
+    private void showTaskbarFromBroadcast(Intent intent) {
+        if (ACTION_SHOW_TASKBAR.equals(intent.getAction()) && mTaskbarActivityContext != null) {
+            mTaskbarActivityContext.showTaskbarFromBroadcast();
         }
     }
 
@@ -209,9 +304,15 @@
         if (mActivity == activity) {
             return;
         }
+        if (mActivity != null) {
+            mActivity.removeOnDeviceProfileChangeListener(mDebugActivityDeviceProfileChanged);
+        }
         mActivity = activity;
-        mUnfoldProgressProvider.setSourceProvider(getUnfoldTransitionProgressProviderForActivity(
-                activity));
+        debugWhyTaskbarNotDestroyed("Set mActivity=" + mActivity);
+        mActivity.addOnDeviceProfileChangeListener(mDebugActivityDeviceProfileChanged);
+        UnfoldTransitionProgressProvider unfoldTransitionProgressProvider =
+                getUnfoldTransitionProgressProviderForActivity(activity);
+        mUnfoldProgressProvider.setSourceProvider(unfoldTransitionProgressProvider);
 
         if (mTaskbarActivityContext != null) {
             mTaskbarActivityContext.setUIController(
@@ -225,8 +326,8 @@
      */
     private UnfoldTransitionProgressProvider getUnfoldTransitionProgressProviderForActivity(
             StatefulActivity activity) {
-        if (activity instanceof BaseQuickstepLauncher) {
-            return ((BaseQuickstepLauncher) activity).getUnfoldTransitionProgressProvider();
+        if (activity instanceof QuickstepLauncher) {
+            return ((QuickstepLauncher) activity).getUnfoldTransitionProgressProvider();
         }
         return null;
     }
@@ -235,11 +336,11 @@
      * Creates a {@link TaskbarUIController} to use while the given StatefulActivity is active.
      */
     private TaskbarUIController createTaskbarUIControllerForActivity(StatefulActivity activity) {
-        if (activity instanceof BaseQuickstepLauncher) {
+        if (activity instanceof QuickstepLauncher) {
             if (mTaskbarActivityContext.getPackageManager().hasSystemFeature(FEATURE_PC)) {
-                return new DesktopTaskbarUIController((BaseQuickstepLauncher) activity);
+                return new DesktopTaskbarUIController((QuickstepLauncher) activity);
             }
-            return new LauncherTaskbarUIController((BaseQuickstepLauncher) activity);
+            return new LauncherTaskbarUIController((QuickstepLauncher) activity);
         }
         if (activity instanceof RecentsActivity) {
             return new FallbackTaskbarUIController((RecentsActivity) activity);
@@ -252,7 +353,9 @@
      */
     public void clearActivity(@NonNull StatefulActivity activity) {
         if (mActivity == activity) {
+            mActivity.removeOnDeviceProfileChangeListener(mDebugActivityDeviceProfileChanged);
             mActivity = null;
+            debugWhyTaskbarNotDestroyed("clearActivity");
             if (mTaskbarActivityContext != null) {
                 mTaskbarActivityContext.setUIController(TaskbarUIController.DEFAULT);
             }
@@ -260,37 +363,64 @@
         }
     }
 
-    private void recreateTaskbar() {
+    /**
+     * This method is called multiple times (ex. initial init, then when user unlocks) in which case
+     * we fully want to destroy an existing taskbar and create a new one.
+     * In other case (folding/unfolding) we don't need to remove and add window.
+     */
+    @VisibleForTesting
+    public void recreateTaskbar() {
+        DeviceProfile dp = mUserUnlocked ?
+                LauncherAppState.getIDP(mContext).getDeviceProfile(mContext) : null;
+
         destroyExistingTaskbar();
 
-        DeviceProfile dp =
-                mUserUnlocked ? LauncherAppState.getIDP(mContext).getDeviceProfile(mContext) : null;
-
-        boolean isTaskBarEnabled = dp != null && dp.isTaskbarPresent;
-
-        if (!isTaskBarEnabled) {
+        boolean isTaskbarEnabled = dp != null && isTaskbarPresent(dp);
+        debugWhyTaskbarNotDestroyed("recreateTaskbar: isTaskbarEnabled=" + isTaskbarEnabled
+                + " [dp != null (i.e. mUserUnlocked)]=" + (dp != null)
+                + " FLAG_HIDE_NAVBAR_WINDOW=" + FLAG_HIDE_NAVBAR_WINDOW
+                + " dp.isTaskbarPresent=" + (dp == null ? "null" : dp.isTaskbarPresent));
+        if (!isTaskbarEnabled) {
             SystemUiProxy.INSTANCE.get(mContext)
                     .notifyTaskbarStatus(/* visible */ false, /* stashed */ false);
             return;
         }
 
-        mTaskbarActivityContext = new TaskbarActivityContext(mContext, dp, mNavButtonController,
-                mUnfoldProgressProvider);
-
+        if (mTaskbarActivityContext == null) {
+            mTaskbarActivityContext = new TaskbarActivityContext(mContext, dp, mNavButtonController,
+                    mUnfoldProgressProvider);
+        } else {
+            mTaskbarActivityContext.updateDeviceProfile(dp, mNavMode);
+        }
         mTaskbarActivityContext.init(mSharedState);
+
         if (mActivity != null) {
             mTaskbarActivityContext.setUIController(
                     createTaskbarUIControllerForActivity(mActivity));
         }
+
+        // We to wait until user unlocks the device to attach listener.
+        LauncherPrefs.get(mContext).addListener(mTaskbarPinningPreferenceChangeListener,
+                TASKBAR_PINNING);
     }
 
     public void onSystemUiFlagsChanged(int systemUiStateFlags) {
+        if (DEBUG) {
+            Log.d(TAG, "SysUI flags changed: " + formatFlagChange(systemUiStateFlags,
+                    mSharedState.sysuiStateFlags, QuickStepContract::getSystemUiStateString));
+        }
         mSharedState.sysuiStateFlags = systemUiStateFlags;
         if (mTaskbarActivityContext != null) {
             mTaskbarActivityContext.updateSysuiStateFlags(systemUiStateFlags, false /* fromInit */);
         }
     }
 
+    public void onLongPressHomeEnabled(boolean assistantLongPressEnabled) {
+        if (mNavButtonController != null) {
+            mNavButtonController.setAssistantLongPressEnabled(assistantLongPressEnabled);
+        }
+    }
+
     /**
      * Sets the flag indicating setup UI is visible
      */
@@ -301,6 +431,26 @@
         }
     }
 
+    /**
+     * @return {@code true} if provided device profile isn't a large screen profile
+     *                      and we are using a single window for taskbar and navbar.
+     */
+    public static boolean isPhoneMode(DeviceProfile deviceProfile) {
+        return TaskbarManager.FLAG_HIDE_NAVBAR_WINDOW && deviceProfile.isPhone;
+    }
+
+    /**
+     * @return {@code true} if {@link #isPhoneMode(DeviceProfile)} is true and we're using
+     *                      3 button-nav
+     */
+    public static boolean isPhoneButtonNavMode(TaskbarActivityContext context) {
+        return isPhoneMode(context.getDeviceProfile()) && context.isThreeButtonNav();
+    }
+
+    private boolean isTaskbarPresent(DeviceProfile deviceProfile) {
+        return FLAG_HIDE_NAVBAR_WINDOW || deviceProfile.isTaskbarPresent;
+    }
+
     public void onRotationProposal(int rotation, boolean isValid) {
         if (mTaskbarActivityContext != null) {
             mTaskbarActivityContext.onRotationProposal(rotation, isValid);
@@ -308,18 +458,24 @@
     }
 
     public void disableNavBarElements(int displayId, int state1, int state2, boolean animate) {
+        mSharedState.disableNavBarDisplayId = displayId;
+        mSharedState.disableNavBarState1 = state1;
+        mSharedState.disableNavBarState2 = state2;
         if (mTaskbarActivityContext != null) {
             mTaskbarActivityContext.disableNavBarElements(displayId, state1, state2, animate);
         }
     }
 
     public void onSystemBarAttributesChanged(int displayId, int behavior) {
+        mSharedState.systemBarAttrsDisplayId = displayId;
+        mSharedState.systemBarAttrsBehavior = behavior;
         if (mTaskbarActivityContext != null) {
             mTaskbarActivityContext.onSystemBarAttributesChanged(displayId, behavior);
         }
     }
 
     public void onNavButtonsDarkIntensityChanged(float darkIntensity) {
+        mSharedState.navButtonsDarkIntensity = darkIntensity;
         if (mTaskbarActivityContext != null) {
             mTaskbarActivityContext.onNavButtonsDarkIntensityChanged(darkIntensity);
         }
@@ -329,6 +485,13 @@
      * Called when the manager is no longer needed
      */
     public void destroy() {
+        debugWhyTaskbarNotDestroyed("TaskbarManager#destroy()");
+        if (mActivity != null) {
+            mActivity.removeOnDeviceProfileChangeListener(mDebugActivityDeviceProfileChanged);
+        }
+
+        UI_HELPER_EXECUTOR.execute(
+                () -> mTaskbarBroadcastReceiver.unregisterReceiverSafely(mContext));
         destroyExistingTaskbar();
         mDisplayController.removeChangeListener(mDispInfoChangeListener);
         SettingsCache.INSTANCE.get(mContext).unregister(USER_SETUP_COMPLETE_URI,
@@ -351,4 +514,46 @@
             mTaskbarActivityContext.dumpLogs(prefix + "\t", pw);
         }
     }
+
+    /** Temp logs for b/254119092. */
+    public void debugWhyTaskbarNotDestroyed(String debugReason) {
+        StringJoiner log = new StringJoiner("\n");
+        log.add(debugReason);
+
+        boolean activityTaskbarPresent = mActivity != null
+                && mActivity.getDeviceProfile().isTaskbarPresent;
+        boolean contextTaskbarPresent = mUserUnlocked
+                && LauncherAppState.getIDP(mContext).getDeviceProfile(mContext).isTaskbarPresent;
+        if (activityTaskbarPresent == contextTaskbarPresent) {
+            log.add("mActivity and mContext agree taskbarIsPresent=" + contextTaskbarPresent);
+            Log.d(TASKBAR_NOT_DESTROYED_TAG, log.toString());
+            return;
+        }
+
+        log.add("mActivity and mContext device profiles have different values, add more logs.");
+
+        log.add("\tmActivity logs:");
+        log.add("\t\tmActivity=" + mActivity);
+        if (mActivity != null) {
+            log.add("\t\tmActivity.getResources().getConfiguration()="
+                    + mActivity.getResources().getConfiguration());
+            log.add("\t\tmActivity.getDeviceProfile().isTaskbarPresent="
+                    + activityTaskbarPresent);
+        }
+        log.add("\tmContext logs:");
+        log.add("\t\tmContext=" + mContext);
+        log.add("\t\tmContext.getResources().getConfiguration()="
+                + mContext.getResources().getConfiguration());
+        if (mUserUnlocked) {
+            log.add("\t\tLauncherAppState.getIDP().getDeviceProfile(mContext).isTaskbarPresent="
+                    + contextTaskbarPresent);
+        } else {
+            log.add("\t\tCouldn't get DeviceProfile because !mUserUnlocked");
+        }
+
+        Log.d(TASKBAR_NOT_DESTROYED_TAG, log.toString());
+    }
+
+    private final DeviceProfile.OnDeviceProfileChangeListener mDebugActivityDeviceProfileChanged =
+            dp -> debugWhyTaskbarNotDestroyed("mActivity onDeviceProfileChanged");
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarModelCallbacks.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarModelCallbacks.java
index 75881a3..6cf63a9 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarModelCallbacks.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarModelCallbacks.java
@@ -18,6 +18,8 @@
 import android.util.SparseArray;
 import android.view.View;
 
+import androidx.annotation.UiThread;
+
 import com.android.launcher3.LauncherSettings.Favorites;
 import com.android.launcher3.model.BgDataModel;
 import com.android.launcher3.model.BgDataModel.FixedContainerItems;
@@ -29,6 +31,9 @@
 import com.android.launcher3.util.IntSet;
 import com.android.launcher3.util.ItemInfoMatcher;
 import com.android.launcher3.util.LauncherBindableItemsContainer;
+import com.android.launcher3.util.PackageUserKey;
+import com.android.launcher3.util.Preconditions;
+import com.android.quickstep.RecentsModel;
 
 import java.io.PrintWriter;
 import java.util.ArrayList;
@@ -36,13 +41,14 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.function.Predicate;
 
 /**
  * Launcher model Callbacks for rendering taskbar.
  */
 public class TaskbarModelCallbacks implements
-        BgDataModel.Callbacks, LauncherBindableItemsContainer {
+        BgDataModel.Callbacks, LauncherBindableItemsContainer, RecentsModel.RunningTasksListener {
 
     private final SparseArray<ItemInfo> mHotseatItems = new SparseArray<>();
     private List<ItemInfo> mPredictedItems = Collections.emptyList();
@@ -53,6 +59,10 @@
     // Initialized in init.
     private TaskbarControllers mControllers;
 
+    // Used to defer any UI updates during the SUW unstash animation.
+    private boolean mDeferUpdatesForSUW;
+    private Runnable mDeferredUpdates;
+
     public TaskbarModelCallbacks(
             TaskbarActivityContext context, TaskbarView container) {
         mContext = context;
@@ -61,6 +71,16 @@
 
     public void init(TaskbarControllers controllers) {
         mControllers = controllers;
+        if (mControllers.taskbarRecentAppsController.isEnabled()) {
+            RecentsModel.INSTANCE.get(mContext).registerRunningTasksListener(this);
+        }
+    }
+
+    /**
+     * Unregisters listeners in this class.
+     */
+    public void unregisterListeners() {
+        RecentsModel.INSTANCE.get(mContext).unregisterRunningTasksListener();
     }
 
     @Override
@@ -173,7 +193,6 @@
         int predictionSize = mPredictedItems.size();
         int predictionNextIndex = 0;
 
-        boolean isHotseatEmpty = true;
         for (int i = 0; i < hotseatItemInfos.length; i++) {
             hotseatItemInfos[i] = mHotseatItems.get(i);
             if (hotseatItemInfos[i] == null && predictionNextIndex < predictionSize) {
@@ -181,18 +200,54 @@
                 hotseatItemInfos[i].screenId = i;
                 predictionNextIndex++;
             }
-            if (hotseatItemInfos[i] != null) {
-                isHotseatEmpty = false;
+        }
+        hotseatItemInfos = mControllers.taskbarRecentAppsController
+                .updateHotseatItemInfos(hotseatItemInfos);
+
+        if (mDeferUpdatesForSUW) {
+            ItemInfo[] finalHotseatItemInfos = hotseatItemInfos;
+            mDeferredUpdates = () -> {
+                updateHotseatItemsAndBackground(finalHotseatItemInfos);
+            };
+        } else {
+            updateHotseatItemsAndBackground(hotseatItemInfos);
+        }
+    }
+
+    private void updateHotseatItemsAndBackground(ItemInfo[] hotseatItemInfos) {
+        mContainer.updateHotseatItems(hotseatItemInfos);
+        mControllers.taskbarViewController.updateIconsBackground();
+    }
+
+    /**
+     * This is used to defer UI updates after SUW builds the unstash animation.
+     * @param defer if true, defers updates to the UI
+     *              if false, posts updates (if any) to the UI
+     */
+    public void setDeferUpdatesForSUW(boolean defer) {
+        mDeferUpdatesForSUW = defer;
+
+        if (!mDeferUpdatesForSUW) {
+            if (mDeferredUpdates != null) {
+                mContainer.post(mDeferredUpdates);
+                mDeferredUpdates = null;
             }
         }
-        mContainer.updateHotseatItems(hotseatItemInfos);
+    }
 
-        final boolean finalIsHotseatEmpty = isHotseatEmpty;
-        mControllers.runAfterInit(() -> {
-            mControllers.taskbarStashController.updateStateForFlag(
-                    TaskbarStashController.FLAG_STASHED_IN_APP_EMPTY, finalIsHotseatEmpty);
-            mControllers.taskbarStashController.applyState();
-        });
+    @Override
+    public void onRunningTasksChanged() {
+        updateRunningApps();
+    }
+
+    /** Called when there's a change in running apps to update the UI. */
+    public void commitRunningAppsToUI() {
+        commitItemsToUI();
+    }
+
+    /** Call TaskbarRecentAppsController to update running apps with mHotseatItems. */
+    public void updateRunningApps() {
+        mControllers.taskbarRecentAppsController.updateRunningApps(mHotseatItems);
     }
 
     @Override
@@ -200,9 +255,13 @@
         mControllers.taskbarPopupController.setDeepShortcutMap(deepShortcutMapCopy);
     }
 
+    @UiThread
     @Override
-    public void bindAllApplications(AppInfo[] apps, int flags) {
-        mControllers.taskbarAllAppsController.setApps(apps, flags);
+    public void bindAllApplications(AppInfo[] apps, int flags,
+            Map<PackageUserKey, Integer> packageUserKeytoUidMap) {
+        Preconditions.assertUIThread();
+        mControllers.taskbarAllAppsController.setApps(apps, flags, packageUserKeytoUidMap);
+        mControllers.taskbarRecentAppsController.setApps(apps);
     }
 
     protected void dumpLogs(String prefix, PrintWriter pw) {
@@ -213,5 +272,7 @@
             pw.println(
                     String.format("%s\tpredicted items count=%s", prefix, mPredictedItems.size()));
         }
+        pw.println(String.format("%s\tmDeferUpdatesForSUW=%b", prefix, mDeferUpdatesForSUW));
+        pw.println(String.format("%s\tupdates pending=%b", prefix, (mDeferredUpdates != null)));
     }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java
index 4ff0649..610efeb 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java
@@ -18,7 +18,6 @@
 
 import static com.android.internal.app.AssistUtils.INVOCATION_TYPE_HOME_BUTTON_LONG_PRESS;
 import static com.android.internal.app.AssistUtils.INVOCATION_TYPE_KEY;
-import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_A11Y_BUTTON_LONGPRESS;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_A11Y_BUTTON_TAP;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_BACK_BUTTON_LONGPRESS;
@@ -28,11 +27,15 @@
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_IME_SWITCHER_BUTTON_TAP;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_OVERVIEW_BUTTON_LONGPRESS;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_OVERVIEW_BUTTON_TAP;
+import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_HOME_KEY;
+import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_PINNING;
 
 import android.os.Bundle;
 import android.os.Handler;
 import android.util.Log;
+import android.view.HapticFeedbackConstants;
+import android.view.View;
 
 import androidx.annotation.IntDef;
 import androidx.annotation.Nullable;
@@ -41,7 +44,7 @@
 import com.android.launcher3.R;
 import com.android.launcher3.logging.StatsLogManager;
 import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.quickstep.OverviewCommandHelper;
 import com.android.quickstep.SystemUiProxy;
 import com.android.quickstep.TaskUtils;
@@ -65,14 +68,14 @@
 
     private long mLastScreenPinLongPress;
     private boolean mScreenPinned;
+    private boolean mAssistantLongPressEnabled;
 
     @Override
     public void dumpLogs(String prefix, PrintWriter pw) {
         pw.println(prefix + "TaskbarNavButtonController:");
 
-        pw.println(String.format(
-                "%s\tmLastScreenPinLongPress=%dms", prefix, mLastScreenPinLongPress));
-        pw.println(String.format("%s\tmScreenPinned=%b", prefix, mScreenPinned));
+        pw.println(prefix + "\tmLastScreenPinLongPress=" + mLastScreenPinLongPress);
+        pw.println(prefix + "\tmScreenPinned=" + mScreenPinned);
     }
 
     @Retention(RetentionPolicy.SOURCE)
@@ -113,7 +116,9 @@
         mHandler = handler;
     }
 
-    public void onButtonClick(@TaskbarButton int buttonType) {
+    public void onButtonClick(@TaskbarButton int buttonType, View view) {
+        // Provide the same haptic feedback that the system offers for virtual keys.
+        view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
         switch (buttonType) {
             case BUTTON_BACK:
                 logEvent(LAUNCHER_TASKBAR_BACK_BUTTON_TAP);
@@ -144,7 +149,9 @@
         }
     }
 
-    public boolean onButtonLongClick(@TaskbarButton int buttonType) {
+    public boolean onButtonLongClick(@TaskbarButton int buttonType, View view) {
+        // Provide the same haptic feedback that the system offers for virtual keys.
+        view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
         switch (buttonType) {
             case BUTTON_HOME:
                 logEvent(LAUNCHER_TASKBAR_HOME_BUTTON_LONGPRESS);
@@ -246,6 +253,10 @@
         mStatsLogManager = null;
     }
 
+    public void setAssistantLongPressEnabled(boolean assistantLongPressEnabled) {
+        mAssistantLongPressEnabled = assistantLongPressEnabled;
+    }
+
     private void logEvent(StatsLogManager.LauncherEvent event) {
         if (mStatsLogManager == null) {
             Log.w(TAG, "No stats log manager to log taskbar button event");
@@ -255,6 +266,7 @@
     }
 
     private void navigateHome() {
+        TaskUtils.closeSystemWindowsAsync(CLOSE_SYSTEM_WINDOWS_REASON_HOME_KEY);
         mService.getOverviewCommandHelper().addCommand(OverviewCommandHelper.TYPE_HOME);
     }
 
@@ -284,7 +296,7 @@
     }
 
     private void startAssistant() {
-        if (mScreenPinned) {
+        if (mScreenPinned || !mAssistantLongPressEnabled) {
             return;
         }
         Bundle args = new Bundle();
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java
index 7b4501a..5eec726 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java
@@ -15,19 +15,23 @@
  */
 package com.android.launcher3.taskbar;
 
+import static com.android.launcher3.config.FeatureFlags.ENABLE_MATERIAL_U_POPUP;
+import static com.android.launcher3.util.SplitConfigurationOptions.getLogEventForPosition;
+
 import android.content.Intent;
 import android.content.pm.LauncherApps;
 import android.graphics.Point;
+import android.util.Pair;
 import android.view.MotionEvent;
 import android.view.View;
 
 import androidx.annotation.NonNull;
 
+import com.android.internal.logging.InstanceId;
 import com.android.launcher3.AbstractFloatingView;
 import com.android.launcher3.BubbleTextView;
 import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.R;
-import com.android.launcher3.Utilities;
 import com.android.launcher3.dot.FolderDotInfo;
 import com.android.launcher3.folder.Folder;
 import com.android.launcher3.folder.FolderIcon;
@@ -40,6 +44,7 @@
 import com.android.launcher3.popup.PopupLiveUpdateHandler;
 import com.android.launcher3.popup.SystemShortcut;
 import com.android.launcher3.shortcuts.DeepShortcutView;
+import com.android.launcher3.splitscreen.SplitShortcut;
 import com.android.launcher3.util.ComponentKey;
 import com.android.launcher3.util.LauncherBindableItemsContainer;
 import com.android.launcher3.util.PackageUserKey;
@@ -47,9 +52,11 @@
 import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption;
 import com.android.launcher3.views.ActivityContext;
 import com.android.quickstep.SystemUiProxy;
+import com.android.quickstep.util.LogUtils;
 
 import java.io.PrintWriter;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Objects;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
@@ -57,6 +64,7 @@
 
 /**
  * Implements interfaces required to show and allow interacting with a PopupContainerWithArrow.
+ * Controls the long-press menu on Taskbar and AllApps icons.
  */
 public class TaskbarPopupController implements TaskbarControllers.LoggableTaskbarController {
 
@@ -68,6 +76,7 @@
 
     // Initialized in init.
     private TaskbarControllers mControllers;
+    private boolean mAllowInitialSplitSelection;
 
     public TaskbarPopupController(TaskbarActivityContext context) {
         mContext = context;
@@ -93,6 +102,10 @@
         mPopupDataProvider.setDeepShortcutMap(deepShortcutMapCopy);
     }
 
+    public void setAllowInitialSplitSelection(boolean allowInitialSplitSelection) {
+        mAllowInitialSplitSelection = allowInitialSplitSelection;
+    }
+
     private void updateNotificationDots(Predicate<PackageUserKey> updatedDots) {
         final PackageUserKey packageUserKey = new PackageUserKey(null, null);
         Predicate<ItemInfo> matcher = info -> !packageUserKey.updateFromItemInfo(info)
@@ -123,6 +136,7 @@
         if (folder != null) {
             folder.iterateOverItems(op);
         }
+        mControllers.taskbarAllAppsController.updateNotificationDots(updatedDots);
     }
 
     /**
@@ -141,9 +155,29 @@
             return null;
         }
 
-        final PopupContainerWithArrow<BaseTaskbarContext> container =
-                (PopupContainerWithArrow<BaseTaskbarContext>) context.getLayoutInflater().inflate(
-                        R.layout.popup_container, context.getDragLayer(), false);
+        PopupContainerWithArrow<BaseTaskbarContext> container;
+        int deepShortcutCount = mPopupDataProvider.getShortcutCountForItem(item);
+        // TODO(b/198438631): add support for INSTALL shortcut factory
+        List<SystemShortcut> systemShortcuts = getSystemShortcuts()
+                .map(s -> s.getShortcut(context, item, icon))
+                .filter(Objects::nonNull)
+                .collect(Collectors.toList());
+
+        if (ENABLE_MATERIAL_U_POPUP.get()) {
+            container = (PopupContainerWithArrow) context.getLayoutInflater().inflate(
+                    R.layout.popup_container_material_u, context.getDragLayer(), false);
+            container.populateAndShowRowsMaterialU(icon, deepShortcutCount, systemShortcuts);
+        } else {
+            container = (PopupContainerWithArrow) context.getLayoutInflater().inflate(
+                    R.layout.popup_container, context.getDragLayer(), false);
+            container.populateAndShow(
+                    icon,
+                    deepShortcutCount,
+                    mPopupDataProvider.getNotificationKeysForItem(item),
+                    systemShortcuts);
+        }
+
+        icon.clearAccessibilityFocus();
         container.addOnAttachStateChangeListener(
                 new PopupLiveUpdateHandler<BaseTaskbarContext>(context, container) {
                     @Override
@@ -154,36 +188,23 @@
         // TODO (b/198438631): configure for taskbar/context
         container.setPopupItemDragHandler(new TaskbarPopupItemDragHandler());
         mControllers.taskbarDragController.addDragListener(container);
-
-        container.populateAndShow(icon,
-                mPopupDataProvider.getShortcutCountForItem(item),
-                mPopupDataProvider.getNotificationKeysForItem(item),
-                // TODO (b/198438631): add support for INSTALL shortcut factory
-                getSystemShortcuts()
-                        .map(s -> s.getShortcut(context, item, icon))
-                        .filter(Objects::nonNull)
-                        .collect(Collectors.toList()));
         container.requestFocus();
 
         // Make focusable to receive back events
         context.onPopupVisibilityChanged(true);
-        container.setOnCloseCallback(() -> {
+        container.addOnCloseCallback(() -> {
             context.getDragLayer().post(() -> context.onPopupVisibilityChanged(false));
-            container.setOnCloseCallback(null);
         });
 
         return container;
     }
 
     // Create a Stream of all applicable system shortcuts
-    // TODO(b/227800345): Add "Split bottom" option when tablet is in portrait mode.
     private Stream<SystemShortcut.Factory> getSystemShortcuts() {
-        // concat a Stream of split options with a Stream of APP_INFO
+        // append split options to APP_INFO shortcut, the order here will reflect in the popup
         return Stream.concat(
-                Utilities.getSplitPositionOptions(mContext.getDeviceProfile())
-                        .stream()
-                        .map(this::createSplitShortcutFactory),
-                Stream.of(APP_INFO)
+                Stream.of(APP_INFO),
+                mControllers.uiController.getSplitMenuOptions()
         );
     }
 
@@ -225,7 +246,7 @@
             // Move the icon to align with the center-top of the touch point
             Point iconShift = new Point();
             iconShift.x = mIconLastTouchPos.x - sv.getIconCenter().x;
-            iconShift.y = mIconLastTouchPos.y - mContext.getDeviceProfile().iconSizePx;
+            iconShift.y = mIconLastTouchPos.y - mContext.getDeviceProfile().taskbarIconSize;
 
             ((TaskbarDragController) ActivityContext.lookupContext(
                     v.getContext()).getDragController()).startDragOnLongClick(sv, iconShift);
@@ -241,10 +262,10 @@
      *                 right.
      * @return A factory function to be used in populating the long-press menu.
      */
-    private SystemShortcut.Factory<BaseTaskbarContext> createSplitShortcutFactory(
+    SystemShortcut.Factory<BaseTaskbarContext> createSplitShortcutFactory(
             SplitPositionOption position) {
         return (context, itemInfo, originalView) -> new TaskbarSplitShortcut(context, itemInfo,
-                originalView, position);
+                originalView, position, mAllowInitialSplitSelection);
     }
 
      /**
@@ -252,36 +273,63 @@
      * from the taskbar, as if the user performed a drag and drop split.
      * Includes an onClick method that initiates the actual split.
      */
-    private static class TaskbarSplitShortcut extends SystemShortcut<BaseTaskbarContext> {
-        private final SplitPositionOption mPosition;
+    private static class TaskbarSplitShortcut extends
+             SplitShortcut<BaseTaskbarContext> {
+         /**
+          * If {@code true}, clicking this shortcut will not attempt to start a split app directly,
+          * but be the first app in split selection mode
+          */
+         private final boolean mAllowInitialSplitSelection;
 
-        TaskbarSplitShortcut(BaseTaskbarContext context, ItemInfo itemInfo, View originalView,
-                SplitPositionOption position) {
-            super(position.iconResId, position.textResId, context, itemInfo, originalView);
-            mPosition = position;
-        }
+         TaskbarSplitShortcut(BaseTaskbarContext context, ItemInfo itemInfo, View originalView,
+                SplitPositionOption position, boolean allowInitialSplitSelection) {
+             super(position.iconResId, position.textResId, context, itemInfo, originalView,
+                     position);
+             mAllowInitialSplitSelection = allowInitialSplitSelection;
+         }
 
         @Override
         public void onClick(View view) {
+            // Add callbacks depending on what type of Taskbar context we're in (Taskbar or AllApps)
+            mTarget.onSplitScreenMenuButtonClicked();
             AbstractFloatingView.closeAllOpenViews(mTarget);
 
+            // Depending on what app state we're in, we either want to initiate the split screen
+            // staging process or immediately launch a split with an existing app.
+            // - Initiate the split screen staging process
+             if (mAllowInitialSplitSelection) {
+                 super.onClick(view);
+                 return;
+             }
+
+            // - Immediately launch split with the running app
+            Pair<InstanceId, com.android.launcher3.logging.InstanceId> instanceIds =
+                    LogUtils.getShellShareableInstanceId();
+            mTarget.getStatsLogManager().logger()
+                    .withItemInfo(mItemInfo)
+                    .withInstanceId(instanceIds.second)
+                    .log(getLogEventForPosition(getPosition().stagePosition));
+
             if (mItemInfo.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
                 WorkspaceItemInfo workspaceItemInfo = (WorkspaceItemInfo) mItemInfo;
                 SystemUiProxy.INSTANCE.get(mTarget).startShortcut(
                         workspaceItemInfo.getIntent().getPackage(),
                         workspaceItemInfo.getDeepShortcutId(),
-                        mPosition.stagePosition,
+                        getPosition().stagePosition,
                         null,
-                        workspaceItemInfo.user);
+                        workspaceItemInfo.user,
+                        instanceIds.first);
             } else {
                 SystemUiProxy.INSTANCE.get(mTarget).startIntent(
                         mTarget.getSystemService(LauncherApps.class).getMainActivityLaunchIntent(
                                 mItemInfo.getIntent().getComponent(),
                                 null,
                                 mItemInfo.user),
+                        mItemInfo.user.getIdentifier(),
                         new Intent(),
-                        mPosition.stagePosition,
-                        null);
+                        getPosition().stagePosition,
+                        null,
+                        instanceIds.first);
             }
         }
     }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarRecentAppsController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarRecentAppsController.java
new file mode 100644
index 0000000..8445cff
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarRecentAppsController.java
@@ -0,0 +1,63 @@
+/*
+ * 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.launcher3.taskbar;
+
+import android.util.SparseArray;
+
+import androidx.annotation.CallSuper;
+
+import com.android.launcher3.model.data.AppInfo;
+import com.android.launcher3.model.data.ItemInfo;
+
+/**
+ * Base class for providing recent apps functionality
+ */
+public class TaskbarRecentAppsController {
+
+    public static final TaskbarRecentAppsController DEFAULT = new TaskbarRecentAppsController();
+
+    // Initialized in init.
+    protected TaskbarControllers mControllers;
+
+    @CallSuper
+    protected void init(TaskbarControllers taskbarControllers) {
+        mControllers = taskbarControllers;
+    }
+
+    @CallSuper
+    protected void onDestroy() {
+        mControllers = null;
+    }
+
+    /** Stores the current {@link AppInfo} instances, no-op except in desktop environment. */
+    protected void setApps(AppInfo[] apps) { }
+
+    /**
+     * Indicates whether recent apps functionality is enabled, should return false except in
+     * desktop environment.
+     */
+    protected boolean isEnabled() {
+        return false;
+    }
+
+    /** Called to update hotseatItems, no-op except in desktop environment. */
+    protected ItemInfo[] updateHotseatItemInfos(ItemInfo[] hotseatItems) {
+        return hotseatItems;
+    }
+
+    /** Called to update the list of currently running apps, no-op except in desktop environment. */
+    protected void updateRunningApps(SparseArray<ItemInfo> hotseatItems) { }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimView.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimView.java
index 1d3757f..cdc6d59 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimView.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimView.java
@@ -69,4 +69,13 @@
         mRenderer.getPaint().setAlpha((int) (alpha * 255));
         invalidate();
     }
+
+    /**
+     * Sets the roundness of the round corner above Taskbar.
+     * @param cornerRoundness 0 has no round corner, 1 has complete round corner.
+     */
+    protected void setCornerRoundness(float cornerRoundness) {
+        mRenderer.setCornerRoundness(cornerRoundness);
+        invalidate();
+    }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java
index 58ace17..5ea00cf 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java
@@ -22,7 +22,7 @@
 import android.view.animation.Interpolator;
 import android.view.animation.PathInterpolator;
 
-import com.android.quickstep.AnimatedFloat;
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.quickstep.SystemUiProxy;
 
 import java.io.PrintWriter;
@@ -30,7 +30,8 @@
 /**
  * Handles properties/data collection, and passes the results to {@link TaskbarScrimView} to render.
  */
-public class TaskbarScrimViewController implements TaskbarControllers.LoggableTaskbarController {
+public class TaskbarScrimViewController implements TaskbarControllers.LoggableTaskbarController,
+        TaskbarControllers.BackgroundRendererController {
 
     private static final float SCRIM_ALPHA = 0.6f;
 
@@ -66,7 +67,8 @@
         final boolean manageMenuExpanded =
                 (stateFlags & SYSUI_STATE_BUBBLES_MANAGE_MENU_EXPANDED) != 0;
         final boolean showScrim = !mControllers.navbarButtonsViewController.isImeVisible()
-                && bubblesExpanded && mControllers.taskbarStashController.isInAppAndNotStashed();
+                && bubblesExpanded
+                && mControllers.taskbarStashController.isTaskbarVisibleAndNotStashing();
         final float scrimAlpha = manageMenuExpanded
                 // When manage menu shows there's the first scrim and second scrim so figure out
                 // what the total transparency would be.
@@ -95,9 +97,14 @@
     }
 
     @Override
+    public void setCornerRoundness(float cornerRoundness) {
+        mScrimView.setCornerRoundness(cornerRoundness);
+    }
+
+    @Override
     public void dumpLogs(String prefix, PrintWriter pw) {
         pw.println(prefix + "TaskbarScrimViewController:");
 
-        pw.println(String.format("%s\tmScrimAlpha.value=%.2f", prefix, mScrimAlpha.value));
+        pw.println(prefix + "\tmScrimAlpha.value=" + mScrimAlpha.value);
     }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java
index 87b3789..66ca7d9 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java
@@ -15,14 +15,37 @@
  */
 package com.android.launcher3.taskbar;
 
+import static com.android.launcher3.taskbar.LauncherTaskbarUIController.DISPLAY_PROGRESS_COUNT;
+
+import android.app.PendingIntent;
+
 /**
  * State shared across different taskbar instance
  */
 public class TaskbarSharedState {
 
+    // TaskbarManager#onSystemUiFlagsChanged
     public int sysuiStateFlags;
 
+    // TaskbarManager#disableNavBarElements()
+    public int disableNavBarDisplayId;
+    public int disableNavBarState1;
+    public int disableNavBarState2;
+
+    // TaskbarManager#onSystemBarAttributesChanged()
+    public int systemBarAttrsDisplayId;
+    public int systemBarAttrsBehavior;
+
+    // TaskbarManager#onNavButtonsDarkIntensityChanged()
+    public float navButtonsDarkIntensity;
+
     public boolean setupUIVisible = false;
 
     public boolean allAppsVisible = false;
+
+    // LauncherTaskbarUIController#mTaskbarInAppDisplayProgressMultiProp
+    public float[] inAppDisplayProgressMultiPropValues = new float[DISPLAY_PROGRESS_COUNT];
+
+    // Taskbar System Action
+    public PendingIntent taskbarSystemActionPendingIntent;
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarShortcutMenuAccessibilityDelegate.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarShortcutMenuAccessibilityDelegate.java
index f131595..e8c8fc4 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarShortcutMenuAccessibilityDelegate.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarShortcutMenuAccessibilityDelegate.java
@@ -17,24 +17,28 @@
 
 import static com.android.launcher3.accessibility.LauncherAccessibilityDelegate.DEEP_SHORTCUTS;
 import static com.android.launcher3.accessibility.LauncherAccessibilityDelegate.SHORTCUTS_AND_NOTIFICATIONS;
-import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT;
-import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_TOP_OR_LEFT;
+import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_BOTTOM_OR_RIGHT;
+import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT;
+import static com.android.launcher3.util.SplitConfigurationOptions.getLogEventForPosition;
 
 import android.content.Intent;
 import android.content.pm.LauncherApps;
+import android.util.Pair;
 import android.view.KeyEvent;
 import android.view.View;
 
+import com.android.internal.logging.InstanceId;
 import com.android.launcher3.BubbleTextView;
 import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.R;
 import com.android.launcher3.accessibility.BaseAccessibilityDelegate;
-import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.logging.StatsLogManager;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
 import com.android.launcher3.notification.NotificationListener;
 import com.android.launcher3.util.ShortcutUtil;
 import com.android.quickstep.SystemUiProxy;
+import com.android.quickstep.util.LogUtils;
 
 import java.util.List;
 
@@ -49,10 +53,12 @@
     public static final int MOVE_TO_BOTTOM_OR_RIGHT = R.id.action_move_to_bottom_or_right;
 
     private final LauncherApps mLauncherApps;
+    private final StatsLogManager mStatsLogManager;
 
     public TaskbarShortcutMenuAccessibilityDelegate(TaskbarActivityContext context) {
         super(context);
         mLauncherApps = context.getSystemService(LauncherApps.class);
+        mStatsLogManager = context.getStatsLogManager();
 
         mActions.put(DEEP_SHORTCUTS, new LauncherAction(DEEP_SHORTCUTS,
                 R.string.action_deep_shortcut, KeyEvent.KEYCODE_S));
@@ -68,7 +74,7 @@
 
     @Override
     protected void getSupportedActions(View host, ItemInfo item, List<LauncherAction> out) {
-        if (ShortcutUtil.supportsShortcuts(item) && FeatureFlags.ENABLE_TASKBAR_POPUP_MENU.get()) {
+        if (ShortcutUtil.supportsShortcuts(item)) {
             out.add(mActions.get(NotificationListener.getInstanceIfConnected() != null
                     ? SHORTCUTS_AND_NOTIFICATIONS : DEEP_SHORTCUTS));
         }
@@ -82,7 +88,14 @@
                 && (action == MOVE_TO_TOP_OR_LEFT || action == MOVE_TO_BOTTOM_OR_RIGHT)) {
             WorkspaceItemInfo info = (WorkspaceItemInfo) item;
             int side = action == MOVE_TO_TOP_OR_LEFT
-                    ? SPLIT_POSITION_TOP_OR_LEFT : SPLIT_POSITION_BOTTOM_OR_RIGHT;
+                    ? STAGE_POSITION_TOP_OR_LEFT : STAGE_POSITION_BOTTOM_OR_RIGHT;
+
+            Pair<InstanceId, com.android.launcher3.logging.InstanceId> instanceIds =
+                    LogUtils.getShellShareableInstanceId();
+            mStatsLogManager.logger()
+                    .withItemInfo(item)
+                    .withInstanceId(instanceIds.second)
+                    .log(getLogEventForPosition(side));
 
             if (info.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
                 SystemUiProxy.INSTANCE.get(mContext).startShortcut(
@@ -90,14 +103,16 @@
                         info.getDeepShortcutId(),
                         side,
                         /* bundleOpts= */ null,
-                        info.user);
+                        info.user,
+                        instanceIds.first);
             } else {
                 SystemUiProxy.INSTANCE.get(mContext).startIntent(
                         mLauncherApps.getMainActivityLaunchIntent(
                                 item.getIntent().getComponent(),
                                 /* startActivityOptions= */null,
                                 item.user),
-                        new Intent(), side, null);
+                        item.user.getIdentifier(), new Intent(), side, null,
+                        instanceIds.first);
             }
             return true;
         } else if (action == DEEP_SHORTCUTS || action == SHORTCUTS_AND_NOTIFICATIONS) {
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarSpringOnStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarSpringOnStashController.java
new file mode 100644
index 0000000..f87c21e
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarSpringOnStashController.java
@@ -0,0 +1,107 @@
+/*
+ * 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.launcher3.taskbar;
+
+import static com.android.launcher3.anim.AnimatedFloat.VALUE;
+
+import android.animation.ObjectAnimator;
+import android.animation.ValueAnimator;
+
+import androidx.annotation.Nullable;
+import androidx.dynamicanimation.animation.SpringForce;
+
+import com.android.launcher3.R;
+import com.android.launcher3.anim.AnimatedFloat;
+import com.android.launcher3.anim.SpringAnimationBuilder;
+import com.android.launcher3.taskbar.TaskbarControllers.LoggableTaskbarController;
+import com.android.launcher3.util.DisplayController;
+
+import java.io.PrintWriter;
+
+/**
+ * Manages the spring animation when stashing the transient taskbar.
+ */
+public class TaskbarSpringOnStashController implements LoggableTaskbarController {
+
+    private final TaskbarActivityContext mContext;
+    private TaskbarControllers mControllers;
+    private final AnimatedFloat mTranslationForStash = new AnimatedFloat(
+            this::updateTranslationYForStash);
+
+    private final boolean mIsTransientTaskbar;
+
+    private final float mStartVelocityPxPerS;
+
+    public TaskbarSpringOnStashController(TaskbarActivityContext context) {
+        mContext = context;
+        mIsTransientTaskbar = DisplayController.isTransientTaskbar(mContext);
+        mStartVelocityPxPerS = context.getResources()
+                .getDimension(R.dimen.transient_taskbar_stash_spring_velocity_dp_per_s);
+    }
+
+    /**
+     * Initialization method.
+     */
+    public void init(TaskbarControllers controllers) {
+        mControllers = controllers;
+    }
+
+    private void updateTranslationYForStash() {
+        if (!mIsTransientTaskbar) {
+            return;
+        }
+
+        float transY = mTranslationForStash.value;
+        mControllers.stashedHandleViewController.setTranslationYForStash(transY);
+        mControllers.taskbarViewController.setTranslationYForStash(transY);
+        mControllers.taskbarDragLayerController.setTranslationYForStash(transY);
+    }
+
+    /**
+     * Returns a spring animation to be used when stashing the transient taskbar.
+     */
+    public @Nullable ValueAnimator createSpringToStash() {
+        if (!mIsTransientTaskbar) {
+            return null;
+        }
+        return new SpringAnimationBuilder(mContext)
+                .setStartValue(mTranslationForStash.value)
+                .setEndValue(0)
+                .setDampingRatio(SpringForce.DAMPING_RATIO_MEDIUM_BOUNCY)
+                .setStiffness(SpringForce.STIFFNESS_LOW)
+                .setStartVelocity(mStartVelocityPxPerS)
+                .build(mTranslationForStash, VALUE);
+    }
+
+    /**
+     * Returns an animation to reset the stash translation back to 0 when unstashing.
+     */
+    public @Nullable ObjectAnimator createResetAnimForUnstash() {
+        if (!mIsTransientTaskbar) {
+            return null;
+        }
+        return mTranslationForStash.animateToValue(0);
+    }
+
+    @Override
+    public void dumpLogs(String prefix, PrintWriter pw) {
+        pw.println(prefix + "TaskbarSpringOnStashController:");
+
+        pw.println(prefix + "\tmTranslationForStash=" + mTranslationForStash.value);
+        pw.println(prefix + "\tmStartVelocityPxPerS=" + mStartVelocityPxPerS);
+    }
+}
+
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
index fc9f9d0..00e14ad 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
@@ -16,34 +16,63 @@
 package com.android.launcher3.taskbar;
 
 import static android.view.HapticFeedbackConstants.LONG_PRESS;
+import static android.view.accessibility.AccessibilityManager.FLAG_CONTENT_CONTROLS;
 
-import static com.android.launcher3.LauncherState.ALL_APPS;
+import static com.android.launcher3.LauncherPrefs.TASKBAR_PINNING_KEY;
+import static com.android.launcher3.anim.Interpolators.EMPHASIZED;
+import static com.android.launcher3.anim.Interpolators.FINAL_FRAME;
+import static com.android.launcher3.anim.Interpolators.INSTANT;
+import static com.android.launcher3.anim.Interpolators.LINEAR;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_PINNING;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_LONGPRESS_HIDE;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_LONGPRESS_SHOW;
-import static com.android.launcher3.taskbar.Utilities.appendFlag;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TRANSIENT_TASKBAR_HIDE;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TRANSIENT_TASKBAR_SHOW;
+import static com.android.launcher3.taskbar.TaskbarKeyguardController.MASK_ANY_SYSUI_LOCKED;
+import static com.android.launcher3.taskbar.TaskbarManager.SYSTEM_ACTION_ID_TASKBAR;
+import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
+import static com.android.launcher3.util.FlagDebugUtils.appendFlag;
+import static com.android.launcher3.util.FlagDebugUtils.formatFlagChange;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SHOWING;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SWITCHER_SHOWING;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_PINNING;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_GOING_AWAY;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.AnimatorSet;
-import android.annotation.Nullable;
+import android.app.RemoteAction;
 import android.content.SharedPreferences;
+import android.graphics.drawable.Icon;
+import android.os.SystemClock;
 import android.util.Log;
+import android.view.InsetsController;
+import android.view.View;
 import android.view.ViewConfiguration;
-import android.view.WindowInsets;
+import android.view.accessibility.AccessibilityManager;
+import android.view.animation.Interpolator;
 
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+
+import com.android.internal.jank.InteractionJankMonitor;
+import com.android.launcher3.Alarm;
 import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.LauncherPrefs;
+import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.anim.AnimatorListeners;
-import com.android.launcher3.taskbar.allapps.TaskbarAllAppsSlideInView;
-import com.android.launcher3.testing.TestProtocol;
-import com.android.launcher3.util.MultiValueAlpha.AlphaProperty;
-import com.android.quickstep.AnimatedFloat;
+import com.android.launcher3.util.DisplayController;
+import com.android.launcher3.util.MultiPropertyFactory.MultiProperty;
 import com.android.quickstep.SystemUiProxy;
-import com.android.systemui.shared.system.WindowManagerWrapper;
 
 import java.io.PrintWriter;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.util.StringJoiner;
 import java.util.function.IntPredicate;
 
@@ -52,40 +81,56 @@
  * create a cohesive animation between stashed/unstashed states.
  */
 public class TaskbarStashController implements TaskbarControllers.LoggableTaskbarController {
+    private static final String TAG = TaskbarStashController.class.getSimpleName();
+    private static final boolean DEBUG = false;
 
     public static final int FLAG_IN_APP = 1 << 0;
     public static final int FLAG_STASHED_IN_APP_MANUAL = 1 << 1; // long press, persisted
-    public static final int FLAG_STASHED_IN_APP_PINNED = 1 << 2; // app pinning
-    public static final int FLAG_STASHED_IN_APP_EMPTY = 1 << 3; // no hotseat icons
-    public static final int FLAG_STASHED_IN_APP_SETUP = 1 << 4; // setup wizard and AllSetActivity
-    public static final int FLAG_STASHED_IN_APP_IME = 1 << 5; // IME is visible
-    public static final int FLAG_IN_STASHED_LAUNCHER_STATE = 1 << 6;
-    public static final int FLAG_STASHED_IN_APP_ALL_APPS = 1 << 7; // All apps is visible.
-    public static final int FLAG_IN_SETUP = 1 << 8; // In the Setup Wizard
+    public static final int FLAG_STASHED_IN_APP_SYSUI = 1 << 2; // shade open, ...
+    public static final int FLAG_STASHED_IN_APP_SETUP = 1 << 3; // setup wizard and AllSetActivity
+    public static final int FLAG_STASHED_IN_APP_IME = 1 << 4; // IME is visible
+    public static final int FLAG_IN_STASHED_LAUNCHER_STATE = 1 << 5;
+    public static final int FLAG_STASHED_IN_TASKBAR_ALL_APPS = 1 << 6; // All apps is visible.
+    public static final int FLAG_IN_SETUP = 1 << 7; // In the Setup Wizard
+    public static final int FLAG_STASHED_SMALL_SCREEN = 1 << 8; // phone screen gesture nav, stashed
+    public static final int FLAG_STASHED_IN_APP_AUTO = 1 << 9; // Autohide (transient taskbar).
+    public static final int FLAG_STASHED_SYSUI = 1 << 10; //  app pinning,...
+    public static final int FLAG_STASHED_DEVICE_LOCKED = 1 << 11; // device is locked: keyguard, ...
 
     // If any of these flags are enabled, isInApp should return true.
     private static final int FLAGS_IN_APP = FLAG_IN_APP | FLAG_IN_SETUP;
 
     // If we're in an app and any of these flags are enabled, taskbar should be stashed.
     private static final int FLAGS_STASHED_IN_APP = FLAG_STASHED_IN_APP_MANUAL
-            | FLAG_STASHED_IN_APP_PINNED | FLAG_STASHED_IN_APP_EMPTY | FLAG_STASHED_IN_APP_SETUP
-            | FLAG_STASHED_IN_APP_IME | FLAG_STASHED_IN_APP_ALL_APPS;
-
-    private static final int FLAGS_STASHED_IN_APP_IGNORING_IME =
-            FLAGS_STASHED_IN_APP & ~FLAG_STASHED_IN_APP_IME;
+            | FLAG_STASHED_IN_APP_SYSUI | FLAG_STASHED_IN_APP_SETUP
+            | FLAG_STASHED_IN_APP_IME | FLAG_STASHED_IN_TASKBAR_ALL_APPS
+            | FLAG_STASHED_SMALL_SCREEN | FLAG_STASHED_IN_APP_AUTO;
 
     // If any of these flags are enabled, inset apps by our stashed height instead of our unstashed
     // height. This way the reported insets are consistent even during transitions out of the app.
     // Currently any flag that causes us to stash in an app is included, except for IME or All Apps
     // since those cover the underlying app anyway and thus the app shouldn't change insets.
     private static final int FLAGS_REPORT_STASHED_INSETS_TO_APP = FLAGS_STASHED_IN_APP
-            & ~FLAG_STASHED_IN_APP_IME & ~FLAG_STASHED_IN_APP_ALL_APPS;
+            & ~FLAG_STASHED_IN_APP_IME & ~FLAG_STASHED_IN_TASKBAR_ALL_APPS;
+
+    // If any of these flags are enabled, the taskbar must be stashed.
+    private static final int FLAGS_FORCE_STASHED = FLAG_STASHED_SYSUI | FLAG_STASHED_DEVICE_LOCKED
+            | FLAG_STASHED_IN_TASKBAR_ALL_APPS | FLAG_STASHED_SMALL_SCREEN;
 
     /**
      * How long to stash/unstash when manually invoked via long press.
+     *
+     * Use {@link #getStashDuration()} to query duration
      */
-    public static final long TASKBAR_STASH_DURATION =
-            WindowManagerWrapper.ANIMATION_DURATION_RESIZE;
+    private static final long TASKBAR_STASH_DURATION =
+            InsetsController.ANIMATION_DURATION_RESIZE;
+
+    /**
+     * How long to stash/unstash transient taskbar.
+     *
+     * Use {@link #getStashDuration()} to query duration.
+     */
+    private static final long TRANSIENT_TASKBAR_STASH_DURATION = 417;
 
     /**
      * How long to stash/unstash when keyboard is appearing/disappearing.
@@ -95,7 +140,7 @@
     /**
      * The scale TaskbarView animates to when being stashed.
      */
-    private static final float STASHED_TASKBAR_SCALE = 0.5f;
+    protected static final float STASHED_TASKBAR_SCALE = 0.5f;
 
     /**
      * How long the hint animation plays, starting on motion down.
@@ -104,6 +149,21 @@
             ViewConfiguration.DEFAULT_LONG_PRESS_TIMEOUT;
 
     /**
+     * How long to delay the icon/stash handle alpha.
+     */
+    private static final long TASKBAR_STASH_ALPHA_START_DELAY = 33;
+
+    /**
+     * How long the icon/stash handle alpha animation plays.
+     */
+    private static final long TASKBAR_STASH_ALPHA_DURATION = 50;
+
+    /**
+     * How long to delay the icon/stash handle alpha for the home to app taskbar animation.
+     */
+    private static final long TASKBAR_STASH_ICON_ALPHA_HOME_TO_APP_START_DELAY = 66;
+
+    /**
      * The scale that TaskbarView animates to when hinting towards the stashed state.
      */
     private static final float STASHED_TASKBAR_HINT_SCALE = 0.9f;
@@ -123,6 +183,43 @@
      */
     private static final boolean DEFAULT_STASHED_PREF = false;
 
+    // Auto stashes when user has not interacted with the Taskbar after X ms.
+    private static final long NO_TOUCH_TIMEOUT_TO_STASH_MS = 5000;
+
+    // Duration for which an unlock event is considered "current", as other events are received
+    // asynchronously.
+    private static final long UNLOCK_TRANSITION_MEMOIZATION_MS = 200;
+
+    /**
+     * The default stash animation, morphing the taskbar into the navbar.
+     */
+    private static final int TRANSITION_DEFAULT = 0;
+    /**
+     * Transitioning from launcher to app. Same as TRANSITION_DEFAULT, differs in internal
+     * animation timings.
+     */
+    private static final int TRANSITION_HOME_TO_APP = 1;
+    /**
+     * Fading the navbar in and out, where the taskbar jumpcuts in and out at the very begin/end of
+     * the transition. Used to transition between the hotseat and navbar` without the stash/unstash
+     * transition.
+     */
+    private static final int TRANSITION_HANDLE_FADE = 2;
+    /**
+     * Same as TRANSITION_DEFAULT, but exclusively used during an "navbar unstash to hotseat
+     * animation" bound to the progress of a swipe gesture. It differs from TRANSITION_DEFAULT
+     * by not scaling the height of the taskbar background.
+     */
+    private static final int TRANSITION_UNSTASH_SUW_MANUAL = 3;
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(value = {
+            TRANSITION_DEFAULT,
+            TRANSITION_HOME_TO_APP,
+            TRANSITION_HANDLE_FADE,
+            TRANSITION_UNSTASH_SUW_MANUAL,
+    })
+    private @interface StashAnimation {}
+
     private final TaskbarActivityContext mActivity;
     private final SharedPreferences mPrefs;
     private final int mStashedHeight;
@@ -135,12 +232,13 @@
     private AnimatedFloat mTaskbarBackgroundOffset;
     private AnimatedFloat mTaskbarImeBgAlpha;
     // TaskbarView icon properties.
-    private AlphaProperty mIconAlphaForStash;
+    private MultiProperty mIconAlphaForStash;
     private AnimatedFloat mIconScaleForStash;
     private AnimatedFloat mIconTranslationYForStash;
     // Stashed handle properties.
-    private AlphaProperty mTaskbarStashedHandleAlpha;
+    private MultiProperty mTaskbarStashedHandleAlpha;
     private AnimatedFloat mTaskbarStashedHandleHintScale;
+    private final AccessibilityManager mAccessibilityManager;
 
     /** Whether we are currently visually stashed (might change based on launcher state). */
     private boolean mIsStashed = false;
@@ -149,8 +247,12 @@
     private @Nullable AnimatorSet mAnimator;
     private boolean mIsSystemGestureInProgress;
     private boolean mIsImeShowing;
+    private boolean mIsImeSwitcherShowing;
 
-    private boolean mEnableManualStashingForTests = false;
+    private boolean mEnableManualStashingDuringTests = false;
+
+    private final Alarm mTimeoutAlarm = new Alarm();
+    private boolean mEnableBlockingTimeoutDuringTests = false;
 
     // Evaluate whether the handle should be stashed
     private final StatePropertyHolder mStatePropertyHolder = new StatePropertyHolder(
@@ -158,43 +260,80 @@
                 boolean inApp = hasAnyFlag(flags, FLAGS_IN_APP);
                 boolean stashedInApp = hasAnyFlag(flags, FLAGS_STASHED_IN_APP);
                 boolean stashedLauncherState = hasAnyFlag(flags, FLAG_IN_STASHED_LAUNCHER_STATE);
-                return (inApp && stashedInApp) || (!inApp && stashedLauncherState);
+                boolean forceStashed = hasAnyFlag(flags, FLAGS_FORCE_STASHED);
+                return (inApp && stashedInApp) || (!inApp && stashedLauncherState) || forceStashed;
             });
 
+    private boolean mIsTaskbarSystemActionRegistered = false;
+    private TaskbarSharedState mTaskbarSharedState;
+
     public TaskbarStashController(TaskbarActivityContext activity) {
         mActivity = activity;
-        mPrefs = Utilities.getPrefs(mActivity);
+        mPrefs = LauncherPrefs.getPrefs(mActivity);
         mSystemUiProxy = SystemUiProxy.INSTANCE.get(activity);
-        mUnstashedHeight = mActivity.getDeviceProfile().taskbarSize;
-        mStashedHeight = mActivity.getDeviceProfile().stashedTaskbarSize;
+        mAccessibilityManager = mActivity.getSystemService(AccessibilityManager.class);
+
+        mUnstashedHeight = mActivity.getDeviceProfile().taskbarHeight;
+        mStashedHeight = mActivity.getDeviceProfile().stashedTaskbarHeight;
     }
 
-    public void init(TaskbarControllers controllers, boolean setupUIVisible) {
+    /**
+     * Show Taskbar upon receiving broadcast
+     */
+    public void showTaskbarFromBroadcast() {
+        // If user is in middle of taskbar education handle go to next step of education
+        if (mControllers.taskbarEduTooltipController.isBeforeTooltipFeaturesStep()) {
+            mControllers.taskbarEduTooltipController.hide();
+            mControllers.taskbarEduTooltipController.maybeShowFeaturesEdu();
+        }
+        updateAndAnimateTransientTaskbar(false);
+    }
+
+    /**
+     * Initializes the controller
+     */
+    public void init(
+            TaskbarControllers controllers,
+            boolean setupUIVisible,
+            TaskbarSharedState sharedState) {
         mControllers = controllers;
+        mTaskbarSharedState = sharedState;
 
         TaskbarDragLayerController dragLayerController = controllers.taskbarDragLayerController;
         mTaskbarBackgroundOffset = dragLayerController.getTaskbarBackgroundOffset();
         mTaskbarImeBgAlpha = dragLayerController.getImeBgTaskbar();
 
         TaskbarViewController taskbarViewController = controllers.taskbarViewController;
-        mIconAlphaForStash = taskbarViewController.getTaskbarIconAlpha().getProperty(
+        mIconAlphaForStash = taskbarViewController.getTaskbarIconAlpha().get(
                 TaskbarViewController.ALPHA_INDEX_STASH);
         mIconScaleForStash = taskbarViewController.getTaskbarIconScaleForStash();
         mIconTranslationYForStash = taskbarViewController.getTaskbarIconTranslationYForStash();
 
         StashedHandleViewController stashedHandleController =
                 controllers.stashedHandleViewController;
-        mTaskbarStashedHandleAlpha = stashedHandleController.getStashedHandleAlpha().getProperty(
+        mTaskbarStashedHandleAlpha = stashedHandleController.getStashedHandleAlpha().get(
                 StashedHandleViewController.ALPHA_INDEX_STASHED);
         mTaskbarStashedHandleHintScale = stashedHandleController.getStashedHandleHintScale();
 
-        boolean isManuallyStashedInApp = supportsManualStashing()
+        boolean isTransientTaskbar = DisplayController.isTransientTaskbar(mActivity);
+        // We use supportsVisualStashing() here instead of supportsManualStashing() because we want
+        // it to work properly for tests that recreate taskbar. This check is here just to ensure
+        // that taskbar unstashes when going to 3 button mode (supportsVisualStashing() false).
+        boolean isManuallyStashedInApp = supportsVisualStashing()
+                && !isTransientTaskbar
+                && !ENABLE_TASKBAR_PINNING.get()
                 && mPrefs.getBoolean(SHARED_PREFS_STASHED_KEY, DEFAULT_STASHED_PREF);
         boolean isInSetup = !mActivity.isUserSetupComplete() || setupUIVisible;
         updateStateForFlag(FLAG_STASHED_IN_APP_MANUAL, isManuallyStashedInApp);
+        updateStateForFlag(FLAG_STASHED_IN_APP_AUTO, isTransientTaskbar);
         updateStateForFlag(FLAG_STASHED_IN_APP_SETUP, isInSetup);
         updateStateForFlag(FLAG_IN_SETUP, isInSetup);
-        applyState();
+        updateStateForFlag(FLAG_STASHED_SMALL_SCREEN, isPhoneMode()
+                && !mActivity.isThreeButtonNav());
+        // For now, assume we're in an app, since LauncherTaskbarUIController won't be able to tell
+        // us that we're paused until a bit later. This avoids flickering upon recreating taskbar.
+        updateStateForFlag(FLAG_IN_APP, true);
+        applyState(/* duration = */ 0);
 
         notifyStashChange(/* visible */ false, /* stashed */ isStashedInApp());
     }
@@ -204,23 +343,38 @@
      * state.
      */
     public boolean supportsVisualStashing() {
-        return mControllers.uiController.supportsVisualStashing();
+        return !mActivity.isThreeButtonNav() && mControllers.uiController.supportsVisualStashing();
     }
 
     /**
      * Returns whether the user can manually stash the taskbar based on the current device state.
      */
     protected boolean supportsManualStashing() {
+        if (ENABLE_TASKBAR_PINNING.get() && mPrefs.getBoolean(TASKBAR_PINNING_KEY, false)) {
+            return false;
+        }
         return supportsVisualStashing()
-                && (!Utilities.IS_RUNNING_IN_TEST_HARNESS || mEnableManualStashingForTests);
+                && isInApp()
+                && (!Utilities.isRunningInTestHarness() || mEnableManualStashingDuringTests)
+                && !DisplayController.isTransientTaskbar(mActivity);
     }
 
     /**
      * Enables support for manual stashing. This should only be used to add this functionality
      * to Launcher specific tests.
      */
-    public void enableManualStashingForTests(boolean enableManualStashing) {
-        mEnableManualStashingForTests = enableManualStashing;
+    @VisibleForTesting
+    public void enableManualStashingDuringTests(boolean enableManualStashing) {
+        mEnableManualStashingDuringTests = enableManualStashing;
+    }
+
+    /**
+     * Enables the auto timeout for taskbar stashing. This method should only be used for taskbar
+     * testing.
+     */
+    @VisibleForTesting
+    public void enableBlockingTimeoutDuringTests(boolean enableBlockingTimeout) {
+        mEnableBlockingTimeoutDuringTests = enableBlockingTimeout;
     }
 
     /**
@@ -230,7 +384,16 @@
         boolean hideTaskbar = isVisible || !mActivity.isUserSetupComplete();
         updateStateForFlag(FLAG_IN_SETUP, hideTaskbar);
         updateStateForFlag(FLAG_STASHED_IN_APP_SETUP, hideTaskbar);
-        applyState(hideTaskbar ? 0 : TASKBAR_STASH_DURATION);
+        applyState(hideTaskbar ? 0 : getStashDuration());
+    }
+
+    /**
+     * Returns how long the stash/unstash animation should play.
+     */
+    public long getStashDuration() {
+        return DisplayController.isTransientTaskbar(mActivity)
+                ? TRANSIENT_TASKBAR_STASH_DURATION
+                : TASKBAR_STASH_DURATION;
     }
 
     /**
@@ -248,17 +411,17 @@
     }
 
     /**
-     * Returns whether the taskbar should be stashed in apps regardless of the IME visibility.
-     */
-    public boolean isStashedInAppIgnoringIme() {
-        return hasAnyFlag(FLAGS_STASHED_IN_APP_IGNORING_IME);
-    }
-
-    /**
      * Returns whether the taskbar should be stashed in the current LauncherState.
      */
     public boolean isInStashedLauncherState() {
-        return hasAnyFlag(FLAG_IN_STASHED_LAUNCHER_STATE) && supportsVisualStashing();
+        return (hasAnyFlag(FLAG_IN_STASHED_LAUNCHER_STATE) && supportsVisualStashing());
+    }
+
+    /**
+     * @return {@code true} if we're not on a large screen AND using gesture nav
+     */
+    private boolean isPhoneMode() {
+        return TaskbarManager.isPhoneMode(mActivity.getDeviceProfile());
     }
 
     private boolean hasAnyFlag(int flagMask) {
@@ -271,10 +434,10 @@
 
 
     /**
-     * Returns whether the taskbar is currently visible and in an app.
+     * Returns whether the taskbar is currently visible and not in the process of being stashed.
      */
-    public boolean isInAppAndNotStashed() {
-        return !mIsStashed && isInApp();
+    public boolean isTaskbarVisibleAndNotStashing() {
+        return !mIsStashed && mControllers.taskbarViewController.areIconsVisible();
     }
 
     public boolean isInApp() {
@@ -282,18 +445,32 @@
     }
 
     /**
+     * Returns the height that taskbar will be touchable.
+     */
+    public int getTouchableHeight() {
+        return mIsStashed
+                ? mStashedHeight
+                : (mUnstashedHeight + mActivity.getDeviceProfile().taskbarBottomMargin);
+    }
+
+    /**
      * Returns the height that taskbar will inset when inside apps.
-     * @see WindowInsets.Type#navigationBars()
-     * @see WindowInsets.Type#systemBars()
+     * @see android.view.WindowInsets.Type#navigationBars()
+     * @see android.view.WindowInsets.Type#systemBars()
      */
     public int getContentHeightToReportToApps() {
+        if ((isPhoneMode() && !mActivity.isThreeButtonNav())
+                || DisplayController.isTransientTaskbar(mActivity)) {
+            return getStashedHeight();
+        }
+
         if (supportsVisualStashing() && hasAnyFlag(FLAGS_REPORT_STASHED_INSETS_TO_APP)) {
             DeviceProfile dp = mActivity.getDeviceProfile();
-            if (hasAnyFlag(FLAG_STASHED_IN_APP_SETUP) && dp.isTaskbarPresent && !dp.isLandscape) {
+            if (hasAnyFlag(FLAG_STASHED_IN_APP_SETUP) && dp.isTaskbarPresent) {
                 // We always show the back button in SUW but in portrait the SUW layout may not
-                // be wide enough to support overlapping the nav bar with its content.  For now,
-                // just inset by the bar height.
-                return mUnstashedHeight;
+                // be wide enough to support overlapping the nav bar with its content.
+                // We're sending different res values in portrait vs landscape
+                return mActivity.getResources().getDimensionPixelSize(R.dimen.taskbar_suw_insets);
             }
             boolean isAnimating = mAnimator != null && mAnimator.isStarted();
             if (!mControllers.stashedHandleViewController.isStashedHandleVisible()
@@ -306,12 +483,13 @@
             }
             return mStashedHeight;
         }
+
         return mUnstashedHeight;
     }
 
     /**
      * Returns the height that taskbar will inset when inside apps.
-     * @see WindowInsets.Type#tappableElement()
+     * @see android.view.WindowInsets.Type#tappableElement()
      */
     public int getTappableHeightToReportToApps() {
         int contentHeight = getContentHeightToReportToApps();
@@ -323,6 +501,27 @@
     }
 
     /**
+     * Stash or unstashes the transient taskbar.
+     */
+    public void updateAndAnimateTransientTaskbar(boolean stash) {
+        if (!DisplayController.isTransientTaskbar(mActivity)) {
+            return;
+        }
+
+        if (stash && mControllers.taskbarAutohideSuspendController.isSuspended()
+                && !mControllers.taskbarAutohideSuspendController
+                .isSuspendedForTransientTaskbarInOverview()) {
+            // Avoid stashing if autohide is currently suspended.
+            return;
+        }
+
+        if (hasAnyFlag(FLAG_STASHED_IN_APP_AUTO) != stash) {
+            updateStateForFlag(FLAG_STASHED_IN_APP_AUTO, stash);
+            applyState();
+        }
+    }
+
+    /**
      * Should be called when long pressing the nav region when taskbar is present.
      * @return Whether taskbar was stashed and now is unstashed.
      */
@@ -369,6 +568,12 @@
         return false;
     }
 
+    /** Toggles the Taskbar's stash state. */
+    public void toggleTaskbarStash() {
+        if (!DisplayController.isTransientTaskbar(mActivity) || !hasAnyFlag(FLAGS_IN_APP)) return;
+        updateAndAnimateTransientTaskbar(!hasAnyFlag(FLAG_STASHED_IN_APP_AUTO));
+    }
+
     /**
      * Adds the Taskbar unstash to Hotseat animator to the animator set.
      *
@@ -380,11 +585,14 @@
      *                            actually be used since this animation tracks a swipe progress.
      */
     protected void addUnstashToHotseatAnimation(AnimatorSet animation, int placeholderDuration) {
+        // Defer any UI updates now to avoid the UI becoming stale when the animation plays.
+        mControllers.taskbarViewController.setDeferUpdatesForSUW(true);
         createAnimToIsStashed(
                 /* isStashed= */ false,
                 placeholderDuration,
-                /* startDelay= */ 0,
-                /* animateBg= */ false);
+                TRANSITION_UNSTASH_SUW_MANUAL);
+        animation.addListener(AnimatorListeners.forEndCallback(
+                () -> mControllers.taskbarViewController.setDeferUpdatesForSUW(false)));
         animation.play(mAnimator);
     }
 
@@ -392,32 +600,73 @@
      * Create a stash animation and save to {@link #mAnimator}.
      * @param isStashed whether it's a stash animation or an unstash animation
      * @param duration duration of the animation
-     * @param startDelay how many milliseconds to delay the animation after starting it.
-     * @param animateBg whether the taskbar's background should be animated
+     * @param animationType what transition type to play.
      */
-    private void createAnimToIsStashed(
-            boolean isStashed, long duration, long startDelay, boolean animateBg) {
+    private void createAnimToIsStashed(boolean isStashed, long duration,
+            @StashAnimation int animationType) {
+        if (animationType == TRANSITION_UNSTASH_SUW_MANUAL && isStashed) {
+            // The STASH_ANIMATION_SUW_MANUAL must only be used during an unstash animation.
+            Log.e(TAG, "Illegal arguments:Using TRANSITION_UNSTASH_SUW_MANUAL to stash taskbar");
+        }
+
         if (mAnimator != null) {
             mAnimator.cancel();
         }
         mAnimator = new AnimatorSet();
+        addJankMonitorListener(mAnimator, /* appearing= */ !mIsStashed);
+        boolean isTransientTaskbar = DisplayController.isTransientTaskbar(mActivity);
+        final float stashTranslation = isPhoneMode() || isTransientTaskbar
+                ? 0
+                : (mUnstashedHeight - mStashedHeight);
 
         if (!supportsVisualStashing()) {
             // Just hide/show the icons and background instead of stashing into a handle.
             mAnimator.play(mIconAlphaForStash.animateToValue(isStashed ? 0 : 1)
                     .setDuration(duration));
+            mAnimator.playTogether(mTaskbarBackgroundOffset.animateToValue(isStashed ? 1 : 0)
+                    .setDuration(duration));
+            mAnimator.playTogether(mIconTranslationYForStash.animateToValue(isStashed
+                            ? stashTranslation : 0)
+                    .setDuration(duration));
             mAnimator.play(mTaskbarImeBgAlpha.animateToValue(
                     hasAnyFlag(FLAG_STASHED_IN_APP_IME) ? 0 : 1).setDuration(duration));
-            mAnimator.setStartDelay(startDelay);
-            mAnimator.addListener(new AnimatorListenerAdapter() {
-                @Override
-                public void onAnimationEnd(Animator animation) {
-                    mAnimator = null;
-                }
-            });
+            mAnimator.addListener(AnimatorListeners.forEndCallback(() -> mAnimator = null));
             return;
         }
 
+        if (isTransientTaskbar) {
+            createTransientAnimToIsStashed(mAnimator, isStashed, duration, animationType);
+        } else {
+            createAnimToIsStashed(mAnimator, isStashed, duration, stashTranslation, animationType);
+        }
+
+        mAnimator.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationStart(Animator animation) {
+                mIsStashed = isStashed;
+                onIsStashedChanged(mIsStashed);
+
+                cancelTimeoutIfExists();
+            }
+
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                mAnimator = null;
+
+                if (!mIsStashed) {
+                    tryStartTaskbarTimeout();
+                }
+
+                // only announce if we are actually animating
+                if (duration > 0 && isInApp()) {
+                    mControllers.taskbarViewController.announceForAccessibility();
+                }
+            }
+        });
+    }
+
+    private void createAnimToIsStashed(AnimatorSet as, boolean isStashed, long duration,
+            float stashTranslation, @StashAnimation int animationType) {
         AnimatorSet fullLengthAnimatorSet = new AnimatorSet();
         // Not exactly half and may overlap. See [first|second]HalfDurationScale below.
         AnimatorSet firstHalfAnimatorSet = new AnimatorSet();
@@ -429,23 +678,23 @@
         if (isStashed) {
             firstHalfDurationScale = 0.75f;
             secondHalfDurationScale = 0.5f;
-            final float stashTranslation = (mUnstashedHeight - mStashedHeight) / 2f;
 
             fullLengthAnimatorSet.play(mIconTranslationYForStash.animateToValue(stashTranslation));
-            if (animateBg) {
-                fullLengthAnimatorSet.play(mTaskbarBackgroundOffset.animateToValue(1));
-            } else {
-                fullLengthAnimatorSet.addListener(AnimatorListeners.forEndCallback(
-                        () -> mTaskbarBackgroundOffset.updateValue(1)));
-            }
+            fullLengthAnimatorSet.play(mTaskbarBackgroundOffset.animateToValue(1));
 
             firstHalfAnimatorSet.playTogether(
                     mIconAlphaForStash.animateToValue(0),
-                    mIconScaleForStash.animateToValue(STASHED_TASKBAR_SCALE)
+                    mIconScaleForStash.animateToValue(isPhoneMode() ?
+                            0 : STASHED_TASKBAR_SCALE)
             );
             secondHalfAnimatorSet.playTogether(
                     mTaskbarStashedHandleAlpha.animateToValue(1)
             );
+
+            if (animationType == TRANSITION_HANDLE_FADE) {
+                fullLengthAnimatorSet.setInterpolator(INSTANT);
+                firstHalfAnimatorSet.setInterpolator(INSTANT);
+            }
         } else  {
             firstHalfDurationScale = 0.5f;
             secondHalfDurationScale = 0.75f;
@@ -453,6 +702,8 @@
             fullLengthAnimatorSet.playTogether(
                     mIconScaleForStash.animateToValue(1),
                     mIconTranslationYForStash.animateToValue(0));
+
+            final boolean animateBg = animationType != TRANSITION_UNSTASH_SUW_MANUAL;
             if (animateBg) {
                 fullLengthAnimatorSet.play(mTaskbarBackgroundOffset.animateToValue(0));
             } else {
@@ -466,6 +717,11 @@
             secondHalfAnimatorSet.playTogether(
                     mIconAlphaForStash.animateToValue(1)
             );
+
+            if (animationType == TRANSITION_HANDLE_FADE) {
+                fullLengthAnimatorSet.setInterpolator(FINAL_FRAME);
+                secondHalfAnimatorSet.setInterpolator(FINAL_FRAME);
+            }
         }
 
         fullLengthAnimatorSet.play(mControllers.stashedHandleViewController
@@ -479,23 +735,114 @@
         secondHalfAnimatorSet.setDuration((long) (duration * secondHalfDurationScale));
         secondHalfAnimatorSet.setStartDelay((long) (duration * (1 - secondHalfDurationScale)));
 
-        mAnimator.playTogether(fullLengthAnimatorSet, firstHalfAnimatorSet,
+        as.playTogether(fullLengthAnimatorSet, firstHalfAnimatorSet,
                 secondHalfAnimatorSet);
-        mAnimator.setStartDelay(startDelay);
-        mAnimator.addListener(new AnimatorListenerAdapter() {
+
+    }
+
+    private void createTransientAnimToIsStashed(AnimatorSet as, boolean isStashed, long duration,
+            @StashAnimation int animationType) {
+        // Target values of the properties this is going to set
+        final float backgroundOffsetTarget = isStashed ? 1 : 0;
+        final float iconAlphaTarget = isStashed ? 0 : 1;
+        final float stashedHandleAlphaTarget = isStashed ? 1 : 0;
+
+        // Timing for the alpha values depend on the animation played
+        long iconAlphaStartDelay = 0, iconAlphaDuration = 0, stashedHandleAlphaDelay = 0,
+                stashedHandleAlphaDuration = 0;
+        if (duration > 0) {
+            if (animationType == TRANSITION_HANDLE_FADE) {
+                // When fading, the handle fades in/out at the beginning of the transition with
+                // TASKBAR_STASH_ALPHA_DURATION.
+                stashedHandleAlphaDuration = TASKBAR_STASH_ALPHA_DURATION;
+                // The iconAlphaDuration must be set to duration for the skippable interpolators
+                // below to work.
+                iconAlphaDuration = duration;
+            } else {
+                iconAlphaStartDelay = TASKBAR_STASH_ALPHA_START_DELAY;
+                iconAlphaDuration = TASKBAR_STASH_ALPHA_DURATION;
+                stashedHandleAlphaDuration = TASKBAR_STASH_ALPHA_DURATION;
+
+                if (isStashed) {
+                    if (animationType == TRANSITION_HOME_TO_APP) {
+                        iconAlphaStartDelay = TASKBAR_STASH_ICON_ALPHA_HOME_TO_APP_START_DELAY;
+                    }
+                    stashedHandleAlphaDelay = iconAlphaStartDelay;
+                    stashedHandleAlphaDuration = Math.max(0, duration - iconAlphaStartDelay);
+                }
+
+            }
+        }
+
+        play(as, mTaskbarStashedHandleAlpha.animateToValue(stashedHandleAlphaTarget),
+                stashedHandleAlphaDelay,
+                stashedHandleAlphaDuration, LINEAR);
+
+        // The rest of the animations might be "skipped" in TRANSITION_HANDLE_FADE transitions.
+        AnimatorSet skippable = as;
+        if (animationType == TRANSITION_HANDLE_FADE) {
+            skippable = new AnimatorSet();
+            as.play(skippable);
+            skippable.setInterpolator(isStashed ? INSTANT : FINAL_FRAME);
+        }
+
+        final boolean animateBg = animationType != TRANSITION_UNSTASH_SUW_MANUAL;
+        if (animateBg) {
+            play(skippable, mTaskbarBackgroundOffset.animateToValue(backgroundOffsetTarget), 0,
+                    duration, EMPHASIZED);
+        } else {
+            skippable.addListener(AnimatorListeners.forEndCallback(
+                    () -> mTaskbarBackgroundOffset.updateValue(backgroundOffsetTarget)));
+        }
+
+        play(skippable, mIconAlphaForStash.animateToValue(iconAlphaTarget), iconAlphaStartDelay,
+                iconAlphaDuration,
+                LINEAR);
+
+        if (isStashed) {
+            play(skippable, mControllers.taskbarSpringOnStashController.createSpringToStash(),
+                    0, duration, LINEAR);
+        } else {
+            play(skippable, mControllers.taskbarSpringOnStashController.createResetAnimForUnstash(),
+                    0, duration, LINEAR);
+        }
+
+        mControllers.taskbarViewController.addRevealAnimToIsStashed(skippable, isStashed, duration,
+                EMPHASIZED, animationType == TRANSITION_UNSTASH_SUW_MANUAL);
+
+        play(skippable, mControllers.stashedHandleViewController
+                .createRevealAnimToIsStashed(isStashed), 0, duration, EMPHASIZED);
+
+        // Return the stashed handle to its default scale in case it was changed as part of the
+        // feedforward hint. Note that the reveal animation above also visually scales it.
+        skippable.play(mTaskbarStashedHandleHintScale.animateToValue(1f)
+                .setDuration(isStashed ? duration / 2 : duration));
+    }
+
+    private static void play(AnimatorSet as, Animator a, long startDelay, long duration,
+            Interpolator interpolator) {
+        a.setDuration(duration);
+        a.setStartDelay(startDelay);
+        a.setInterpolator(interpolator);
+        as.play(a);
+    }
+
+    private void addJankMonitorListener(AnimatorSet animator, boolean expanding) {
+        View v = mControllers.taskbarActivityContext.getDragLayer();
+        int action = expanding ? InteractionJankMonitor.CUJ_TASKBAR_EXPAND :
+                InteractionJankMonitor.CUJ_TASKBAR_COLLAPSE;
+        animator.addListener(new AnimatorListenerAdapter() {
             @Override
-            public void onAnimationStart(Animator animation) {
-                mIsStashed = isStashed;
-                onIsStashedChanged(mIsStashed);
+            public void onAnimationStart(@NonNull Animator animation) {
+                InteractionJankMonitor.getInstance().begin(v, action);
             }
 
             @Override
-            public void onAnimationEnd(Animator animation) {
-                mAnimator = null;
+            public void onAnimationEnd(@NonNull Animator animation) {
+                InteractionJankMonitor.getInstance().end(action);
             }
         });
     }
-
     /**
      * Creates and starts a partial stash animation, hinting at the new state that will trigger when
      * long press is detected.
@@ -515,15 +862,18 @@
     /**
      * Creates and starts a partial unstash animation, hinting at the new state that will trigger
      * when long press is detected.
+     *
      * @param animateForward Whether we are going towards the new unstashed state or returning to
      *                       the stashed state.
+     * @param forceUnstash Whether we force the unstash hint to animate.
      */
-    public void startUnstashHint(boolean animateForward) {
+    protected void startUnstashHint(boolean animateForward, boolean forceUnstash) {
         if (!isStashed()) {
             // Already unstashed, no need to hint in that direction.
             return;
         }
-        if (!canCurrentlyManuallyUnstash()) {
+        // TODO(b/270395798): Clean up after removing long-press unstashing code path.
+        if (!canCurrentlyManuallyUnstash() && !forceUnstash) {
             // If any other flags are causing us to be stashed, long press won't cause us to
             // unstash, so don't hint that it will.
             return;
@@ -545,19 +895,27 @@
     }
 
     public void applyState(long duration) {
-        mStatePropertyHolder.setState(mState, duration, true);
+        Animator animator = createApplyStateAnimator(duration);
+        if (animator != null) {
+            animator.start();
+        }
     }
 
     public void applyState(long duration, long startDelay) {
-        mStatePropertyHolder.setState(mState, duration, startDelay, true);
+        Animator animator = createApplyStateAnimator(duration);
+        if (animator != null) {
+            animator.setStartDelay(startDelay);
+            animator.start();
+        }
     }
 
-    public Animator applyStateWithoutStart() {
-        return applyStateWithoutStart(TASKBAR_STASH_DURATION);
-    }
-
-    public Animator applyStateWithoutStart(long duration) {
-        return mStatePropertyHolder.setState(mState, duration, false);
+    /**
+     * Returns an animator which applies the latest state if mIsStashed is changed, or {@code null}
+     * otherwise.
+     */
+    @Nullable
+    public Animator createApplyStateAnimator(long duration) {
+        return mStatePropertyHolder.createSetStateAnimator(mState, duration);
     }
 
     /**
@@ -571,33 +929,13 @@
         }
 
         // Only update the following flags when system gesture is not in progress.
-        maybeResetStashedInAppAllApps(hasAnyFlag(FLAG_STASHED_IN_APP_IME) == mIsImeShowing);
-        if (hasAnyFlag(FLAG_STASHED_IN_APP_IME) != mIsImeShowing) {
-            updateStateForFlag(FLAG_STASHED_IN_APP_IME, mIsImeShowing);
+        boolean shouldStashForIme = shouldStashForIme();
+        updateStateForFlag(FLAG_STASHED_IN_TASKBAR_ALL_APPS, false);
+        if (hasAnyFlag(FLAG_STASHED_IN_APP_IME) != shouldStashForIme) {
+            updateStateForFlag(FLAG_STASHED_IN_APP_IME, shouldStashForIme);
             applyState(TASKBAR_STASH_DURATION_FOR_IME, getTaskbarStashStartDelayForIme());
-        }
-    }
-
-    /**
-     * Reset stashed in all apps only if no system gesture is in progress.
-     * <p>
-     * Otherwise, the reset should be deferred until after the gesture is finished.
-     *
-     * @see #setSystemGestureInProgress
-     */
-    public void maybeResetStashedInAppAllApps() {
-        maybeResetStashedInAppAllApps(true);
-    }
-
-    private void maybeResetStashedInAppAllApps(boolean applyState) {
-        if (mIsSystemGestureInProgress) {
-            return;
-        }
-
-        updateStateForFlag(FLAG_STASHED_IN_APP_ALL_APPS, false);
-        if (applyState) {
-            applyState(ALL_APPS.getTransitionDuration(
-                    mControllers.taskbarActivityContext, false /* isToState */));
+        } else {
+            applyState(mControllers.taskbarOverlayController.getCloseDuration());
         }
     }
 
@@ -620,13 +958,21 @@
         long animDuration = TASKBAR_STASH_DURATION;
         long startDelay = 0;
 
-        updateStateForFlag(FLAG_STASHED_IN_APP_PINNED,
+        updateStateForFlag(FLAG_STASHED_IN_APP_SYSUI, hasAnyFlag(systemUiStateFlags,
+                SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE));
+        updateStateForFlag(FLAG_STASHED_SYSUI,
                 hasAnyFlag(systemUiStateFlags, SYSUI_STATE_SCREEN_PINNING));
 
+        boolean isLocked = hasAnyFlag(systemUiStateFlags, MASK_ANY_SYSUI_LOCKED)
+                && !hasAnyFlag(systemUiStateFlags, SYSUI_STATE_STATUS_BAR_KEYGUARD_GOING_AWAY);
+        updateStateForFlag(FLAG_STASHED_DEVICE_LOCKED, isLocked);
+
         // Only update FLAG_STASHED_IN_APP_IME when system gesture is not in progress.
         mIsImeShowing = hasAnyFlag(systemUiStateFlags, SYSUI_STATE_IME_SHOWING);
+        mIsImeSwitcherShowing = hasAnyFlag(systemUiStateFlags, SYSUI_STATE_IME_SWITCHER_SHOWING);
+
         if (!mIsSystemGestureInProgress) {
-            updateStateForFlag(FLAG_STASHED_IN_APP_IME, mIsImeShowing);
+            updateStateForFlag(FLAG_STASHED_IN_APP_IME, shouldStashForIme());
             animDuration = TASKBAR_STASH_DURATION_FOR_IME;
             startDelay = getTaskbarStashStartDelayForIme();
         }
@@ -635,6 +981,22 @@
     }
 
     /**
+     * We stash when IME or IME switcher is showing AND NOT
+     *  * in small screen AND
+     *  * 3 button nav AND
+     *  * landscape (or seascape)
+     * We do not stash if taskbar is transient
+     */
+    private boolean shouldStashForIme() {
+        if (DisplayController.isTransientTaskbar(mActivity)) {
+            return false;
+        }
+        return (mIsImeShowing || mIsImeSwitcherShowing) &&
+                !(isPhoneMode() && mActivity.isThreeButtonNav()
+                        && mActivity.getDeviceProfile().isLandscape);
+    }
+
+    /**
      * Updates the proper flag to indicate whether the task bar should be stashed.
      *
      * Note that this only updates the flag. {@link #applyState()} needs to be called separately.
@@ -644,10 +1006,6 @@
      *                unstashed.
      */
     public void updateStateForFlag(int flag, boolean enabled) {
-        if (flag == FLAG_IN_APP && TestProtocol.sDebugTracing) {
-            Log.d(TestProtocol.TASKBAR_IN_APP_STATE, String.format(
-                    "setting flag FLAG_IN_APP to: %b", enabled), new Exception());
-        }
         if (enabled) {
             mState |= flag;
         } else {
@@ -666,6 +1024,8 @@
         if (hasAnyFlag(changedFlags, FLAGS_STASHED_IN_APP | FLAGS_IN_APP)) {
             notifyStashChange(/* visible */ hasAnyFlag(FLAGS_IN_APP),
                             /* stashed */ isStashedInApp());
+            mControllers.taskbarAutohideSuspendController.updateFlag(
+                    TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_IN_LAUNCHER, !isInApp());
         }
         if (hasAnyFlag(changedFlags, FLAG_STASHED_IN_APP_MANUAL)) {
             if (hasAnyFlag(FLAG_STASHED_IN_APP_MANUAL)) {
@@ -674,99 +1034,245 @@
                 mActivity.getStatsLogManager().logger().log(LAUNCHER_TASKBAR_LONGPRESS_SHOW);
             }
         }
+        if (hasAnyFlag(changedFlags, FLAG_STASHED_IN_APP_AUTO)) {
+            mActivity.getStatsLogManager().logger().log(hasAnyFlag(FLAG_STASHED_IN_APP_AUTO)
+                    ? LAUNCHER_TRANSIENT_TASKBAR_HIDE
+                    : LAUNCHER_TRANSIENT_TASKBAR_SHOW);
+        }
     }
 
     private void notifyStashChange(boolean visible, boolean stashed) {
         mSystemUiProxy.notifyTaskbarStatus(visible, stashed);
-        // If stashing taskbar is caused by IME visibility, we could just skip updating rounded
-        // corner insets since the rounded corners will be covered by IME during IME is showing and
-        // taskbar will be restored back to unstashed when IME is hidden.
-        mControllers.taskbarActivityContext.updateInsetRoundedCornerFrame(
-                    visible && !isStashedInAppIgnoringIme());
+        setUpTaskbarSystemAction(visible);
         mControllers.rotationButtonController.onTaskbarStateChange(visible, stashed);
     }
 
+    /**
+     * Setup system action for showing Taskbar depending on its visibility.
+     */
+    public void setUpTaskbarSystemAction(boolean visible) {
+        UI_HELPER_EXECUTOR.execute(() -> {
+            if (!visible || !DisplayController.isTransientTaskbar(mActivity)) {
+                mAccessibilityManager.unregisterSystemAction(SYSTEM_ACTION_ID_TASKBAR);
+                mIsTaskbarSystemActionRegistered = false;
+                return;
+            }
+
+            if (!mIsTaskbarSystemActionRegistered) {
+                RemoteAction taskbarRemoteAction = new RemoteAction(
+                        Icon.createWithResource(mActivity, R.drawable.ic_info_no_shadow),
+                        mActivity.getString(R.string.taskbar_a11y_title),
+                        mActivity.getString(R.string.taskbar_a11y_title),
+                        mTaskbarSharedState.taskbarSystemActionPendingIntent);
+
+                mAccessibilityManager.registerSystemAction(taskbarRemoteAction,
+                        SYSTEM_ACTION_ID_TASKBAR);
+                mIsTaskbarSystemActionRegistered = true;
+            }
+        });
+    }
+
+    /**
+     * Clean up on destroy from TaskbarControllers
+     */
+    public void onDestroy() {
+        UI_HELPER_EXECUTOR.execute(
+                () -> mAccessibilityManager.unregisterSystemAction(SYSTEM_ACTION_ID_TASKBAR));
+    }
+
+    /**
+     * Cancels a timeout if any exists.
+     */
+    public void cancelTimeoutIfExists() {
+        if (mTimeoutAlarm.alarmPending()) {
+            mTimeoutAlarm.cancelAlarm();
+        }
+    }
+
+    /**
+     * Updates the status of the taskbar timeout.
+     * @param isAutohideSuspended If true, cancels any existing timeout
+     *                            If false, attempts to re/start the timeout
+     */
+    public void updateTaskbarTimeout(boolean isAutohideSuspended) {
+        if (!DisplayController.isTransientTaskbar(mActivity)) {
+            return;
+        }
+        if (isAutohideSuspended) {
+            cancelTimeoutIfExists();
+        } else {
+            tryStartTaskbarTimeout();
+        }
+    }
+
+    /**
+     * Attempts to start timer to auto hide the taskbar based on time.
+     */
+    public void tryStartTaskbarTimeout() {
+        if (!DisplayController.isTransientTaskbar(mActivity)
+                || mIsStashed
+                || mEnableBlockingTimeoutDuringTests) {
+            return;
+        }
+
+        cancelTimeoutIfExists();
+
+        mTimeoutAlarm.setOnAlarmListener(this::onTaskbarTimeout);
+        mTimeoutAlarm.setAlarm(getTaskbarAutoHideTimeout());
+    }
+
+    /**
+     * returns appropriate timeout for taskbar to stash depending on accessibility being on/off.
+     */
+    private long getTaskbarAutoHideTimeout() {
+        return mAccessibilityManager.getRecommendedTimeoutMillis((int) NO_TOUCH_TIMEOUT_TO_STASH_MS,
+                FLAG_CONTENT_CONTROLS);
+    }
+
+    private void onTaskbarTimeout(Alarm alarm) {
+        if (mControllers.taskbarAutohideSuspendController.isSuspended()) {
+            return;
+        }
+        updateAndAnimateTransientTaskbar(true);
+    }
+
     @Override
     public void dumpLogs(String prefix, PrintWriter pw) {
         pw.println(prefix + "TaskbarStashController:");
 
-        pw.println(String.format("%s\tmStashedHeight=%dpx", prefix, mStashedHeight));
-        pw.println(String.format("%s\tmUnstashedHeight=%dpx", prefix, mUnstashedHeight));
-        pw.println(String.format("%s\tmIsStashed=%b", prefix, mIsStashed));
-        pw.println(String.format(
-                "%s\tappliedState=%s", prefix, getStateString(mStatePropertyHolder.mPrevFlags)));
-        pw.println(String.format("%s\tmState=%s", prefix, getStateString(mState)));
-        pw.println(String.format(
-                "%s\tmIsSystemGestureInProgress=%b", prefix, mIsSystemGestureInProgress));
-        pw.println(String.format("%s\tmIsImeShowing=%b", prefix, mIsImeShowing));
+        pw.println(prefix + "\tmStashedHeight=" + mStashedHeight);
+        pw.println(prefix + "\tmUnstashedHeight=" + mUnstashedHeight);
+        pw.println(prefix + "\tmIsStashed=" + mIsStashed);
+        pw.println(prefix + "\tappliedState=" + getStateString(mStatePropertyHolder.mPrevFlags));
+        pw.println(prefix + "\tmState=" + getStateString(mState));
+        pw.println(prefix + "\tmIsSystemGestureInProgress=" + mIsSystemGestureInProgress);
+        pw.println(prefix + "\tmIsImeShowing=" + mIsImeShowing);
+        pw.println(prefix + "\tmIsImeSwitcherShowing=" + mIsImeSwitcherShowing);
     }
 
     private static String getStateString(int flags) {
-        StringJoiner str = new StringJoiner("|");
-        appendFlag(str, flags, FLAGS_IN_APP, "FLAG_IN_APP");
-        appendFlag(str, flags, FLAG_STASHED_IN_APP_MANUAL, "FLAG_STASHED_IN_APP_MANUAL");
-        appendFlag(str, flags, FLAG_STASHED_IN_APP_PINNED, "FLAG_STASHED_IN_APP_PINNED");
-        appendFlag(str, flags, FLAG_STASHED_IN_APP_EMPTY, "FLAG_STASHED_IN_APP_EMPTY");
-        appendFlag(str, flags, FLAG_STASHED_IN_APP_SETUP, "FLAG_STASHED_IN_APP_SETUP");
-        appendFlag(str, flags, FLAG_STASHED_IN_APP_IME, "FLAG_STASHED_IN_APP_IME");
-        appendFlag(str, flags, FLAG_IN_STASHED_LAUNCHER_STATE, "FLAG_IN_STASHED_LAUNCHER_STATE");
-        appendFlag(str, flags, FLAG_STASHED_IN_APP_ALL_APPS, "FLAG_STASHED_IN_APP_ALL_APPS");
-        appendFlag(str, flags, FLAG_IN_SETUP, "FLAG_IN_SETUP");
-        return str.toString();
+        StringJoiner sj = new StringJoiner("|");
+        appendFlag(sj, flags, FLAGS_IN_APP, "FLAG_IN_APP");
+        appendFlag(sj, flags, FLAG_STASHED_IN_APP_MANUAL, "FLAG_STASHED_IN_APP_MANUAL");
+        appendFlag(sj, flags, FLAG_STASHED_IN_APP_SYSUI, "FLAG_STASHED_IN_APP_SYSUI");
+        appendFlag(sj, flags, FLAG_STASHED_IN_APP_SETUP, "FLAG_STASHED_IN_APP_SETUP");
+        appendFlag(sj, flags, FLAG_STASHED_IN_APP_IME, "FLAG_STASHED_IN_APP_IME");
+        appendFlag(sj, flags, FLAG_IN_STASHED_LAUNCHER_STATE, "FLAG_IN_STASHED_LAUNCHER_STATE");
+        appendFlag(sj, flags, FLAG_STASHED_IN_TASKBAR_ALL_APPS, "FLAG_STASHED_IN_TASKBAR_ALL_APPS");
+        appendFlag(sj, flags, FLAG_IN_SETUP, "FLAG_IN_SETUP");
+        appendFlag(sj, flags, FLAG_STASHED_IN_APP_AUTO, "FLAG_STASHED_IN_APP_AUTO");
+        appendFlag(sj, flags, FLAG_STASHED_SYSUI, "FLAG_STASHED_SYSUI");
+        appendFlag(sj, flags, FLAG_STASHED_DEVICE_LOCKED, "FLAG_STASHED_DEVICE_LOCKED");
+        return sj.toString();
     }
 
     private class StatePropertyHolder {
         private final IntPredicate mStashCondition;
 
         private boolean mIsStashed;
+        private @StashAnimation int mLastStartedTransitionType = TRANSITION_DEFAULT;
         private int mPrevFlags;
 
+        private long mLastUnlockTransitionTimeout = 0;
+
         StatePropertyHolder(IntPredicate stashCondition) {
             mStashCondition = stashCondition;
         }
 
         /**
-         * @see #setState(int, long, long, boolean) with a default startDelay = 0.
-         */
-        public Animator setState(int flags, long duration, boolean start) {
-            return setState(flags, duration, 0 /* startDelay */, start);
-        }
-
-        /**
-         * Applies the latest state, potentially calling onStateChangeApplied() and creating a new
-         * animation (stored in mAnimator) which is started if {@param start} is true.
+         * Creates an animator (stored in mAnimator) which applies the latest state, potentially
+         * creating a new animation (stored in mAnimator).
          * @param flags The latest flags to apply (see the top of this file).
          * @param duration The length of the animation.
-         * @param startDelay How long to delay the animation after calling start().
-         * @param start Whether to start mAnimator immediately.
-         * @return mAnimator if mIsStashed changed, else null.
+         * @return mAnimator if mIsStashed changed, or {@code null} otherwise.
          */
-        public Animator setState(int flags, long duration, long startDelay, boolean start) {
+        @Nullable
+        public Animator createSetStateAnimator(int flags, long duration) {
+            boolean isStashed = mStashCondition.test(flags);
+
+            if (DEBUG) {
+                String stateString = formatFlagChange(flags, mPrevFlags,
+                        TaskbarStashController::getStateString);
+                Log.d(TAG, "createSetStateAnimator: flags: " + stateString
+                        + ", duration: " + duration
+                        + ", isStashed: " + isStashed
+                        + ", mIsStashed: " + mIsStashed);
+            }
+
             int changedFlags = mPrevFlags ^ flags;
             if (mPrevFlags != flags) {
                 onStateChangeApplied(changedFlags);
                 mPrevFlags = flags;
             }
-            boolean isStashed = mStashCondition.test(flags);
-            if (mIsStashed != isStashed) {
-                if (TestProtocol.sDebugTracing) {
-                    Log.d(TestProtocol.TASKBAR_IN_APP_STATE, String.format(
-                            "setState: mIsStashed=%b, isStashed=%b, duration=%d, start=:%b",
-                            mIsStashed,
-                            isStashed,
-                            duration,
-                            start));
-                }
+
+            boolean isUnlockTransition = hasAnyFlag(changedFlags, FLAG_STASHED_DEVICE_LOCKED)
+                    && !hasAnyFlag(FLAG_STASHED_DEVICE_LOCKED);
+            if (isUnlockTransition) {
+                // the launcher might not be resumed at the time the device is considered
+                // unlocked (when the keyguard goes away), but possibly shortly afterwards.
+                // To play the unlock transition at the time the unstash animation actually happens,
+                // this memoizes the state transition for UNLOCK_TRANSITION_MEMOIZATION_MS.
+                mLastUnlockTransitionTimeout =
+                        SystemClock.elapsedRealtime() + UNLOCK_TRANSITION_MEMOIZATION_MS;
+            }
+
+            @StashAnimation int animationType = computeTransitionType(changedFlags);
+
+            // Allow re-starting animation if upgrading from default animation type, otherwise
+            // stick with the already started transition.
+            boolean transitionTypeChanged = mAnimator != null && mAnimator.isStarted()
+                    && mLastStartedTransitionType == TRANSITION_DEFAULT
+                    && animationType != TRANSITION_DEFAULT;
+
+            // It is possible for stash=false to be requested by TRANSITION_HOME_TO_APP and
+            // TRANSITION_DEFAULT in quick succession. In this case, we should ignore
+            // transitionTypeChanged because the animations are exactly the same.
+            if (transitionTypeChanged
+                    && (!mIsStashed && !isStashed)
+                    && animationType == TRANSITION_HOME_TO_APP) {
+                transitionTypeChanged = false;
+            }
+
+            if (mIsStashed != isStashed || transitionTypeChanged) {
                 mIsStashed = isStashed;
+                mLastStartedTransitionType = animationType;
 
                 // This sets mAnimator.
-                createAnimToIsStashed(mIsStashed, duration, startDelay, /* animateBg= */ true);
-                if (start) {
-                    mAnimator.start();
-                }
+                createAnimToIsStashed(mIsStashed, duration, animationType);
                 return mAnimator;
             }
             return null;
         }
+
+        private @StashAnimation int computeTransitionType(int changedFlags) {
+
+            boolean hotseatHiddenDuringAppLaunch =
+                    !mControllers.uiController.isHotseatIconOnTopWhenAligned()
+                            && hasAnyFlag(changedFlags, FLAG_IN_APP);
+            if (hotseatHiddenDuringAppLaunch) {
+                // When launching an app from the all-apps drawer, the hotseat is hidden behind the
+                // drawer. In this case, the navbar must just fade in, without a stash transition,
+                // as the taskbar stash animation would otherwise be visible above the all-apps
+                // drawer once the hotseat is detached.
+                return TRANSITION_HANDLE_FADE;
+            }
+
+            boolean isUnlockTransition =
+                    SystemClock.elapsedRealtime() < mLastUnlockTransitionTimeout;
+            if (isUnlockTransition) {
+                // When transitioning to unlocked device, the  hotseat will already be visible on
+                // the homescreen, thus do not play an un-stash animation.
+                // Keep isUnlockTransition in sync with its counterpart in
+                // TaskbarLauncherStateController#onStateChangeApplied.
+                return TRANSITION_HANDLE_FADE;
+            }
+
+            boolean homeToApp = hasAnyFlag(changedFlags, FLAG_IN_APP) && hasAnyFlag(FLAG_IN_APP);
+            if (homeToApp) {
+                return TRANSITION_HOME_TO_APP;
+            }
+
+            return TRANSITION_DEFAULT;
+        }
     }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashViaTouchController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashViaTouchController.kt
new file mode 100644
index 0000000..1cc6672
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashViaTouchController.kt
@@ -0,0 +1,133 @@
+/*
+ * 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.launcher3.taskbar
+
+import android.view.MotionEvent
+import com.android.launcher3.R
+import com.android.launcher3.Utilities
+import com.android.launcher3.anim.Interpolators.LINEAR
+import com.android.launcher3.testing.shared.ResourceUtils
+import com.android.launcher3.touch.SingleAxisSwipeDetector
+import com.android.launcher3.touch.SingleAxisSwipeDetector.DIRECTION_NEGATIVE
+import com.android.launcher3.touch.SingleAxisSwipeDetector.VERTICAL
+import com.android.launcher3.util.DisplayController
+import com.android.launcher3.util.TouchController
+import com.android.quickstep.inputconsumers.TaskbarUnstashInputConsumer
+
+/**
+ * A helper [TouchController] for [TaskbarDragLayerController], specifically to handle touch events
+ * to stash Transient Taskbar. There are two cases to handle:
+ * - A touch outside of Transient Taskbar bounds will immediately stash on [MotionEvent.ACTION_DOWN]
+ *   or [MotionEvent.ACTION_OUTSIDE].
+ * - Touches inside Transient Taskbar bounds will stash if it is detected as a swipe down gesture.
+ *
+ * Note: touches to *unstash* Taskbar are handled by [TaskbarUnstashInputConsumer].
+ */
+class TaskbarStashViaTouchController(val controllers: TaskbarControllers) : TouchController {
+
+    private val activity: TaskbarActivityContext = controllers.taskbarActivityContext
+    private val enabled = DisplayController.isTransientTaskbar(activity)
+    private val swipeDownDetector: SingleAxisSwipeDetector
+    private val translationCallback = controllers.taskbarTranslationController.transitionCallback
+    /** Interpolator to apply resistance as user swipes down to the bottom of the screen. */
+    private val displacementInterpolator = LINEAR
+    /** How far we can translate the TaskbarView before it's offscreen. */
+    private val maxVisualDisplacement =
+        activity.resources.getDimensionPixelSize(R.dimen.transient_taskbar_bottom_margin).toFloat()
+    /** How far the swipe could go, if user swiped from the very top of TaskbarView. */
+    private val maxTouchDisplacement = maxVisualDisplacement + activity.deviceProfile.taskbarHeight
+    private val touchDisplacementToStash =
+        activity.resources.getDimensionPixelSize(R.dimen.taskbar_to_nav_threshold).toFloat()
+
+    /** The height of the system gesture region, so we don't stash when touching down there. */
+    private var gestureHeightYThreshold = 0f
+
+    init {
+        updateGestureHeight()
+        swipeDownDetector = SingleAxisSwipeDetector(activity, createSwipeListener(), VERTICAL)
+        swipeDownDetector.setDetectableScrollConditions(DIRECTION_NEGATIVE, false)
+    }
+
+    fun updateGestureHeight() {
+        if (!enabled) return
+
+        val gestureHeight: Int =
+            ResourceUtils.getNavbarSize(
+                ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE,
+                activity.resources
+            )
+        gestureHeightYThreshold = (activity.deviceProfile.heightPx - gestureHeight).toFloat()
+    }
+
+    private fun createSwipeListener() =
+        object : SingleAxisSwipeDetector.Listener {
+            private var lastDisplacement = 0f
+
+            override fun onDragStart(start: Boolean, startDisplacement: Float) {}
+
+            override fun onDrag(displacement: Float): Boolean {
+                lastDisplacement = displacement
+                if (displacement < 0) return false
+                // Apply resistance so that the visual displacement doesn't go beyond the screen.
+                translationCallback.onActionMove(
+                    Utilities.mapToRange(
+                        displacement,
+                        0f,
+                        maxTouchDisplacement,
+                        0f,
+                        maxVisualDisplacement,
+                        displacementInterpolator
+                    )
+                )
+                return false
+            }
+
+            override fun onDragEnd(velocity: Float) {
+                val isFlingDown = swipeDownDetector.isFling(velocity) && velocity > 0
+                val isSignificantDistance = lastDisplacement > touchDisplacementToStash
+                if (isFlingDown || isSignificantDistance) {
+                    // Successfully triggered stash.
+                    controllers.taskbarStashController.updateAndAnimateTransientTaskbar(true)
+                }
+                translationCallback.onActionEnd()
+                swipeDownDetector.finishedScrolling()
+            }
+        }
+
+    override fun onControllerInterceptTouchEvent(ev: MotionEvent): Boolean {
+        if (!enabled || controllers.taskbarStashController.isStashed) {
+            return false
+        }
+
+        val screenCoordinatesEv = MotionEvent.obtain(ev)
+        screenCoordinatesEv.setLocation(ev.rawX, ev.rawY)
+        if (ev.action == MotionEvent.ACTION_OUTSIDE) {
+            controllers.taskbarStashController.updateAndAnimateTransientTaskbar(true)
+        } else if (controllers.taskbarViewController.isEventOverAnyItem(screenCoordinatesEv)) {
+            swipeDownDetector.onTouchEvent(ev)
+            if (swipeDownDetector.isDraggingState) {
+                return true
+            }
+        } else if (ev.action == MotionEvent.ACTION_DOWN) {
+            if (screenCoordinatesEv.y < gestureHeightYThreshold) {
+                controllers.taskbarStashController.updateAndAnimateTransientTaskbar(true)
+            }
+        }
+        return false
+    }
+
+    override fun onControllerTouchEvent(ev: MotionEvent) = swipeDownDetector.onTouchEvent(ev)
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java
new file mode 100644
index 0000000..065d111
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java
@@ -0,0 +1,229 @@
+/*
+ * 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.launcher3.taskbar;
+
+import static com.android.launcher3.anim.AnimatedFloat.VALUE;
+import static com.android.launcher3.anim.AnimatorListeners.forEndCallback;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.ObjectAnimator;
+import android.animation.ValueAnimator;
+
+import androidx.annotation.Nullable;
+import androidx.dynamicanimation.animation.SpringForce;
+
+import com.android.launcher3.anim.AnimatedFloat;
+import com.android.launcher3.anim.Interpolators;
+import com.android.launcher3.anim.SpringAnimationBuilder;
+import com.android.launcher3.util.DisplayController;
+
+import java.io.PrintWriter;
+
+/**
+ * Class responsible for translating the transient taskbar UI during a swipe gesture.
+ *
+ * The translation is controlled, in priority order:
+ * - animation to home
+ * - a spring animation
+ * - controlled by user
+ *
+ * The spring animation will play start once the user lets go or when user pauses to go to overview.
+ * When the user goes home, the stash animation will play.
+ */
+public class TaskbarTranslationController implements TaskbarControllers.LoggableTaskbarController {
+
+    private final TaskbarActivityContext mContext;
+    private TaskbarControllers mControllers;
+    private final AnimatedFloat mTranslationYForSwipe = new AnimatedFloat(
+            this::updateTranslationYForSwipe);
+
+    private boolean mHasSprungOnceThisGesture;
+    private @Nullable ValueAnimator mSpringBounce;
+    private boolean mGestureEnded;
+    private boolean mAnimationToHomeRunning;
+
+    private final boolean mIsTransientTaskbar;
+
+    private final TransitionCallback mCallback;
+
+    public TaskbarTranslationController(TaskbarActivityContext context) {
+        mContext = context;
+        mIsTransientTaskbar = DisplayController.isTransientTaskbar(mContext);
+        mCallback = new TransitionCallback();
+    }
+
+    /**
+     * Initialization method.
+     */
+    public void init(TaskbarControllers controllers) {
+        mControllers = controllers;
+    }
+
+    /**
+     * Called to cancel any existing animations.
+     */
+    public void cancelSpringIfExists() {
+        if (mSpringBounce != null) {
+            mSpringBounce.cancel();
+            mSpringBounce = null;
+        }
+    }
+
+    private void updateTranslationYForSwipe() {
+        if (!mIsTransientTaskbar) {
+            return;
+        }
+
+        float transY = mTranslationYForSwipe.value;
+        mControllers.stashedHandleViewController.setTranslationYForSwipe(transY);
+        mControllers.taskbarViewController.setTranslationYForSwipe(transY);
+        mControllers.taskbarDragLayerController.setTranslationYForSwipe(transY);
+    }
+
+    /**
+     * Starts a spring aniamtion to set the views back to the resting state.
+     */
+    public void startSpring() {
+        if (mHasSprungOnceThisGesture || mAnimationToHomeRunning) {
+            return;
+        }
+        mSpringBounce = new SpringAnimationBuilder(mContext)
+                .setStartValue(mTranslationYForSwipe.value)
+                .setEndValue(0)
+                .setDampingRatio(SpringForce.DAMPING_RATIO_MEDIUM_BOUNCY)
+                .setStiffness(SpringForce.STIFFNESS_LOW)
+                .build(mTranslationYForSwipe, VALUE);
+        mSpringBounce.addListener(forEndCallback(() -> {
+            if (!mGestureEnded) {
+                return;
+            }
+            reset();
+            if (mControllers.taskbarStashController.isInApp()
+                    && mControllers.taskbarStashController.isTaskbarVisibleAndNotStashing()) {
+                mControllers.taskbarEduTooltipController.maybeShowFeaturesEdu();
+            }
+        }));
+        mSpringBounce.start();
+        mHasSprungOnceThisGesture = true;
+    }
+
+    private void reset() {
+        mGestureEnded = false;
+        mHasSprungOnceThisGesture = false;
+    }
+
+    /**
+     * Returns a callback to help monitor the swipe gesture.
+     */
+    public TransitionCallback getTransitionCallback() {
+        return mCallback;
+    }
+
+    /**
+     * Returns true if we will animate to zero before the input duration.
+     */
+    public boolean willAnimateToZeroBefore(long duration) {
+        if (mSpringBounce != null && mSpringBounce.isRunning()) {
+            long springDuration = mSpringBounce.getDuration();
+            long current = mSpringBounce.getCurrentPlayTime();
+            return (springDuration - current < duration);
+        }
+        if (mTranslationYForSwipe.isAnimatingToValue(0)) {
+            return mTranslationYForSwipe.getRemainingTime() < duration;
+        }
+        return false;
+    }
+
+    /**
+     * Returns an animation to reset the taskbar translation to {@code 0}.
+     */
+    public ObjectAnimator createAnimToResetTranslation(long duration) {
+        ObjectAnimator animator = mTranslationYForSwipe.animateToValue(0);
+        animator.setInterpolator(Interpolators.LINEAR);
+        animator.setDuration(duration);
+        animator.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationStart(Animator animation) {
+                cancelSpringIfExists();
+                reset();
+                mAnimationToHomeRunning = true;
+            }
+
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                mAnimationToHomeRunning = false;
+                reset();
+            }
+        });
+        return animator;
+    }
+
+    /**
+     * Helper class to communicate to/from  the input consumer.
+     */
+    public class TransitionCallback {
+
+        /**
+         * Clears any existing animations so that user
+         * can take control over the movement of the taskbaer.
+         */
+        public void onActionDown() {
+            if (mAnimationToHomeRunning) {
+                mTranslationYForSwipe.cancelAnimation();
+            }
+            mAnimationToHomeRunning = false;
+            cancelSpringIfExists();
+            reset();
+        }
+        /**
+         * Called when there is movement to move the taskbar.
+         */
+        public void onActionMove(float dY) {
+            if (mAnimationToHomeRunning
+                    || (mHasSprungOnceThisGesture && !mGestureEnded)) {
+                return;
+            }
+
+            mTranslationYForSwipe.updateValue(dY);
+        }
+
+        /**
+         * Called when swipe gesture has ended.
+         */
+        public void onActionEnd() {
+            if (mHasSprungOnceThisGesture) {
+                reset();
+            } else {
+                mGestureEnded = true;
+                startSpring();
+            }
+        }
+    }
+
+    @Override
+    public void dumpLogs(String prefix, PrintWriter pw) {
+        pw.println(prefix + "TaskbarTranslationController:");
+
+        pw.println(prefix + "\tmTranslationYForSwipe=" + mTranslationYForSwipe.value);
+        pw.println(prefix + "\tmHasSprungOnceThisGesture=" + mHasSprungOnceThisGesture);
+        pw.println(prefix + "\tmAnimationToHomeRunning=" + mAnimationToHomeRunning);
+        pw.println(prefix + "\tmGestureEnded=" + mGestureEnded);
+        pw.println(prefix + "\tmSpringBounce is running=" + (mSpringBounce != null
+                && mSpringBounce.isRunning()));
+    }
+}
+
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java
index fcc34c6..be5cbac 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java
@@ -15,12 +15,32 @@
  */
 package com.android.launcher3.taskbar;
 
+import static android.app.ActivityTaskManager.INVALID_TASK_ID;
+
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_HOTSEAT;
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_HOTSEAT_PREDICTION;
+import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_APP;
+
+import android.content.Intent;
+import android.graphics.drawable.BitmapDrawable;
+import android.view.MotionEvent;
 import android.view.View;
 
 import androidx.annotation.CallSuper;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 
+import com.android.launcher3.Utilities;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.ItemInfoWithIcon;
+import com.android.launcher3.popup.SystemShortcut;
+import com.android.launcher3.util.ComponentKey;
+import com.android.launcher3.util.DisplayController;
+import com.android.launcher3.util.SplitConfigurationOptions;
+import com.android.quickstep.util.GroupTask;
+import com.android.quickstep.views.RecentsView;
+import com.android.quickstep.views.TaskView;
+import com.android.quickstep.views.TaskView.TaskIdAttributeContainer;
 
 import java.io.PrintWriter;
 import java.util.stream.Stream;
@@ -49,19 +69,30 @@
         return true;
     }
 
+    /**
+     * This should only be called by TaskbarStashController so that a TaskbarUIController can
+     * disable stashing. All other controllers should use
+     * {@link TaskbarStashController#supportsVisualStashing()} as the source of truth.
+     */
     public boolean supportsVisualStashing() {
-        if (mControllers == null) return false;
-        return !mControllers.taskbarActivityContext.isThreeButtonNav();
+        return true;
     }
 
     protected void onStashedInAppChanged() { }
 
-    public Stream<ItemInfoWithIcon> getAppIconsForEdu() {
-        return Stream.empty();
-    }
+    /**
+     * Called when taskbar icon layout bounds change.
+     */
+    protected void onIconLayoutBoundsChanged() { }
 
     /** Called when an icon is launched. */
-    public void onTaskbarIconLaunched(ItemInfo item) { }
+    @CallSuper
+    public void onTaskbarIconLaunched(ItemInfo item) {
+        // When launching from Taskbar, e.g. from Overview, set FLAG_IN_APP immediately instead of
+        // waiting for onPause, to reduce potential visual noise during the app open transition.
+        mControllers.taskbarStashController.updateStateForFlag(FLAG_IN_APP, true);
+        mControllers.taskbarStashController.applyState();
+    }
 
     public View getRootView() {
         return mControllers.taskbarActivityContext.getDragLayer();
@@ -76,10 +107,13 @@
     }
 
     /**
-     * Manually closes the all apps window.
+     * Manually closes the overlay window.
      */
-    public void hideAllApps() {
-        mControllers.taskbarAllAppsController.hide();
+    public void hideOverlayWindow() {
+        if (!DisplayController.isTransientTaskbar(mControllers.taskbarActivityContext)
+                || mControllers.taskbarAllAppsController.isOpen()) {
+            mControllers.taskbarOverlayController.hideWindow();
+        }
     }
 
     /**
@@ -88,11 +122,66 @@
     public void onExpandPip() {
         if (mControllers != null) {
             final TaskbarStashController stashController = mControllers.taskbarStashController;
-            stashController.updateStateForFlag(TaskbarStashController.FLAG_IN_APP, true);
+            stashController.updateStateForFlag(FLAG_IN_APP, true);
             stashController.applyState();
         }
     }
 
+    /**
+     * SysUI flags updated, see QuickStepContract.SYSUI_STATE_* values.
+     */
+    public void updateStateForSysuiFlags(int sysuiFlags) {
+    }
+
+    /**
+     * Returns {@code true} iff taskbar is stashed.
+     */
+    public boolean isTaskbarStashed() {
+        return mControllers.taskbarStashController.isStashed();
+    }
+
+    /**
+     * Returns {@code true} iff taskbar All Apps is open.
+     */
+    public boolean isTaskbarAllAppsOpen() {
+        return mControllers.taskbarAllAppsController.isOpen();
+    }
+
+    /**
+     * Called at the end of the swipe gesture on Transient taskbar.
+     */
+    public void startTranslationSpring() {
+        mControllers.taskbarActivityContext.startTranslationSpring();
+    }
+
+    /*
+     * @param ev MotionEvent in screen coordinates.
+     * @return Whether any Taskbar item could handle the given MotionEvent if given the chance.
+     */
+    public boolean isEventOverAnyTaskbarItem(MotionEvent ev) {
+        return mControllers.taskbarViewController.isEventOverAnyItem(ev)
+                || mControllers.navbarButtonsViewController.isEventOverAnyItem(ev);
+    }
+
+    /**
+     * Returns true if icons should be aligned to hotseat in the current transition.
+     */
+    public boolean isIconAlignedWithHotseat() {
+        return false;
+    }
+
+    /**
+     * Returns true if hotseat icons are on top of view hierarchy when aligned in the current state.
+     */
+    public boolean isHotseatIconOnTopWhenAligned() {
+        return true;
+    }
+
+    /** Returns {@code true} if Taskbar is currently within overview. */
+    protected boolean isInOverview() {
+        return false;
+    }
+
     @CallSuper
     protected void dumpLogs(String prefix, PrintWriter pw) {
         pw.println(String.format(
@@ -100,4 +189,151 @@
                 prefix,
                 getClass().getSimpleName()));
     }
+
+    /**
+     * Returns RecentsView. Overwritten in LauncherTaskbarUIController and
+     * FallbackTaskbarUIController with Launcher-specific implementations. Returns null for other
+     * UI controllers (like DesktopTaskbarUIController) that don't have a RecentsView.
+     */
+    public @Nullable RecentsView getRecentsView() {
+        return null;
+    }
+
+    public void startSplitSelection(SplitConfigurationOptions.SplitSelectSource splitSelectSource) {
+        RecentsView recentsView = getRecentsView();
+        if (recentsView == null) {
+            return;
+        }
+
+        ComponentKey componentToBeStaged = new ComponentKey(
+                splitSelectSource.itemInfo.getTargetComponent(),
+                splitSelectSource.itemInfo.user);
+        recentsView.getSplitSelectController().findLastActiveTaskAndRunCallback(
+                componentToBeStaged,
+                foundTask -> {
+                    splitSelectSource.alreadyRunningTaskId = foundTask == null
+                            ? INVALID_TASK_ID
+                            : foundTask.key.id;
+                    splitSelectSource.animateCurrentTaskDismissal = foundTask != null;
+                    recentsView.initiateSplitSelect(splitSelectSource);
+                }
+        );
+    }
+
+    /**
+     * Uses the clicked Taskbar icon to launch a second app for splitscreen.
+     */
+    public void triggerSecondAppForSplit(ItemInfoWithIcon info, Intent intent, View startingView) {
+        RecentsView recents = getRecentsView();
+        ComponentKey secondAppComponent = new ComponentKey(info.getTargetComponent(), info.user);
+        recents.getSplitSelectController().findLastActiveTaskAndRunCallback(
+                secondAppComponent,
+                foundTask -> {
+                    if (foundTask != null) {
+                        TaskView foundTaskView = recents.getTaskViewByTaskId(foundTask.key.id);
+                        // TODO (b/266482558): This additional null check is needed because there
+                        // are times when our Tasks list doesn't match our TaskViews list (like when
+                        // a tile is removed during {@link RecentsView#applyLoadPlan()}. A clearer
+                        // state management system is in the works so that we don't need to rely on
+                        // null checks as much. See comments at ag/21152798.
+                        if (foundTaskView != null) {
+                            // There is already a running app of this type, use that as second app.
+                            // Get index of task (0 or 1), in case it's a GroupedTaskView
+                            TaskIdAttributeContainer taskAttributes =
+                                    foundTaskView.getTaskAttributesById(foundTask.key.id);
+                            recents.confirmSplitSelect(
+                                    foundTaskView,
+                                    foundTask,
+                                    taskAttributes.getIconView().getDrawable(),
+                                    taskAttributes.getThumbnailView(),
+                                    taskAttributes.getThumbnailView().getThumbnail(),
+                                    null /* intent */,
+                                    null /* user */);
+                            return;
+                        }
+                    }
+
+                    // No running app of that type, create a new instance as second app.
+                    recents.confirmSplitSelect(
+                            null /* containerTaskView */,
+                            null /* task */,
+                            new BitmapDrawable(info.bitmap.icon),
+                            startingView,
+                            null /* thumbnail */,
+                            intent,
+                            info.user);
+                }
+        );
+    }
+
+    /**
+     * Opens the Keyboard Quick Switch View.
+     *
+     * This will set the focus to the first task from the right (from the left in RTL)
+     */
+    public void openQuickSwitchView() {
+        mControllers.keyboardQuickSwitchController.openQuickSwitchView();
+    }
+
+    /**
+     * Launches the focused task and closes the Keyboard Quick Switch View.
+     *
+     * If the overlay or view are closed, or the overview task is focused, then Overview is
+     * launched. If the overview task is launched, then the first hidden task is focused.
+     *
+     * @return the index of what task should be focused in ; -1 iff Overview shouldn't be launched
+     */
+    public int launchFocusedTask() {
+        int focusedTaskIndex = mControllers.keyboardQuickSwitchController.launchFocusedTask();
+        mControllers.keyboardQuickSwitchController.closeQuickSwitchView();
+        return focusedTaskIndex;
+    }
+
+    /**
+     * Launches the focused task in splitscreen.
+     *
+     * No-op if the view is not yet open.
+     */
+    public void launchSplitTasks(@NonNull View taskview, @NonNull GroupTask groupTask) { }
+
+    /**
+     * Returns the matching view (if any) in the taskbar.
+     * @param view The view to match.
+     */
+    public @Nullable View findMatchingView(View view) {
+        if (!(view.getTag() instanceof ItemInfo)) {
+            return null;
+        }
+        ItemInfo info = (ItemInfo) view.getTag();
+        if (info.container != CONTAINER_HOTSEAT && info.container != CONTAINER_HOTSEAT_PREDICTION) {
+            return null;
+        }
+
+        // Taskbar has the same items as the hotseat and we can use screenId to find the match.
+        int screenId = info.screenId;
+        View[] views = mControllers.taskbarViewController.getIconViews();
+        for (int i = views.length - 1; i >= 0; --i) {
+            if (views[i] != null
+                    && views[i].getTag() instanceof ItemInfo
+                    && ((ItemInfo) views[i].getTag()).screenId == screenId) {
+                return views[i];
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Refreshes the resumed state of this ui controller.
+     */
+    public void refreshResumedState() {}
+
+    /**
+     * Returns a stream of split screen menu options appropriate to the device.
+     */
+    Stream<SystemShortcut.Factory<BaseTaskbarContext>> getSplitMenuOptions() {
+        return Utilities
+                .getSplitPositionOptions(mControllers.taskbarActivityContext.getDeviceProfile())
+                .stream()
+                .map(mControllers.taskbarPopupController::createSplitShortcutFactory);
+    }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarUnfoldAnimationController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarUnfoldAnimationController.java
index 64a4fa7..f12d518 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarUnfoldAnimationController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarUnfoldAnimationController.java
@@ -15,13 +15,13 @@
  */
 package com.android.launcher3.taskbar;
 
-import android.view.IWindowManager;
 import android.view.View;
 import android.view.WindowManager;
 
 import com.android.quickstep.util.LauncherViewsMoveFromCenterTranslationApplier;
 import com.android.systemui.shared.animation.UnfoldMoveFromCenterAnimator;
 import com.android.systemui.unfold.UnfoldTransitionProgressProvider.TransitionProgressListener;
+import com.android.systemui.unfold.updates.RotationChangeProvider;
 import com.android.systemui.unfold.util.NaturalRotationUnfoldProgressProvider;
 import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider;
 
@@ -33,24 +33,31 @@
 public class TaskbarUnfoldAnimationController implements
         TaskbarControllers.LoggableTaskbarController {
 
+    private static final float MAX_WIDTH_INSET_FRACTION = 0.035f;
+
     private final ScopedUnfoldTransitionProgressProvider mScopedUnfoldTransitionProgressProvider;
     private final NaturalRotationUnfoldProgressProvider mNaturalUnfoldTransitionProgressProvider;
     private final UnfoldMoveFromCenterAnimator mMoveFromCenterAnimator;
     private final TransitionListener mTransitionListener = new TransitionListener();
     private TaskbarViewController mTaskbarViewController;
+    private TaskbarDragLayerController mTaskbarDragLayerController;
 
     public TaskbarUnfoldAnimationController(BaseTaskbarContext context,
             ScopedUnfoldTransitionProgressProvider source,
-            WindowManager windowManager, IWindowManager iWindowManager) {
+            WindowManager windowManager,
+            RotationChangeProvider rotationChangeProvider) {
         mScopedUnfoldTransitionProgressProvider = source;
         mNaturalUnfoldTransitionProgressProvider =
-                new NaturalRotationUnfoldProgressProvider(context, iWindowManager, source);
+                new NaturalRotationUnfoldProgressProvider(context,
+                        rotationChangeProvider,
+                        source);
         mMoveFromCenterAnimator = new UnfoldMoveFromCenterAnimator(windowManager,
                 new LauncherViewsMoveFromCenterTranslationApplier());
     }
 
     /**
      * Initializes the controller
+     *
      * @param taskbarControllers references to all other taskbar controllers
      */
     public void init(TaskbarControllers taskbarControllers) {
@@ -59,6 +66,7 @@
         mTaskbarViewController.addOneTimePreDrawListener(() ->
                 mScopedUnfoldTransitionProgressProvider.setReadyToHandleTransition(true));
         mNaturalUnfoldTransitionProgressProvider.addCallback(mTransitionListener);
+        mTaskbarDragLayerController = taskbarControllers.taskbarDragLayerController;
     }
 
     /**
@@ -95,11 +103,14 @@
         public void onTransitionFinished() {
             mMoveFromCenterAnimator.onTransitionFinished();
             mMoveFromCenterAnimator.clearRegisteredViews();
+            mTaskbarDragLayerController.setBackgroundHorizontalInsets(0f);
         }
 
         @Override
         public void onTransitionProgress(float progress) {
             mMoveFromCenterAnimator.onTransitionProgress(progress);
+            float insetPercentage = (1 - progress) * MAX_WIDTH_INSET_FRACTION;
+            mTaskbarDragLayerController.setBackgroundHorizontalInsets(insetPercentage);
         }
     }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java
index 6f88d64..bc1a2c8 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java
@@ -15,22 +15,27 @@
  */
 package com.android.launcher3.taskbar;
 
+import static android.content.pm.PackageManager.FEATURE_PC;
+import static android.view.accessibility.AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED;
+
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.Canvas;
 import android.graphics.Rect;
+import android.os.Bundle;
 import android.util.AttributeSet;
+import android.view.LayoutInflater;
 import android.view.MotionEvent;
 import android.view.View;
-import android.view.ViewGroup;
+import android.view.accessibility.AccessibilityNodeInfo;
 import android.widget.FrameLayout;
 
 import androidx.annotation.LayoutRes;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.core.graphics.ColorUtils;
 
 import com.android.launcher3.BubbleTextView;
+import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Insettable;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
@@ -40,27 +45,31 @@
 import com.android.launcher3.model.data.FolderInfo;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
-import com.android.launcher3.uioverrides.ApiWrapper;
+import com.android.launcher3.util.DisplayController;
 import com.android.launcher3.util.LauncherBindableItemsContainer;
+import com.android.launcher3.util.Themes;
 import com.android.launcher3.views.ActivityContext;
-import com.android.launcher3.views.AllAppsButton;
 import com.android.launcher3.views.DoubleShadowBubbleTextView;
+import com.android.launcher3.views.IconButtonView;
 
 import java.util.function.Predicate;
 
 /**
  * Hosts the Taskbar content such as Hotseat and Recent Apps. Drawn on top of other apps.
  */
-public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconParent, Insettable {
+public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconParent, Insettable,
+        DeviceProfile.OnDeviceProfileChangeListener {
+    private static final String TAG = TaskbarView.class.getSimpleName();
 
-    private static final float TASKBAR_BACKGROUND_LUMINANCE = 0.30f;
-    public int mThemeIconsBackground;
+    private static final Rect sTmpRect = new Rect();
 
     private final int[] mTempOutLocation = new int[2];
-    private final Rect mIconLayoutBounds = new Rect();
+    private final Rect mIconLayoutBounds;
     private final int mIconTouchSize;
     private final int mItemMarginLeftRight;
     private final int mItemPadding;
+    private final int mFolderLeaveBehindColor;
+    private final boolean mIsRtl;
 
     private final TaskbarActivityContext mActivityContext;
 
@@ -69,14 +78,22 @@
     private View.OnClickListener mIconClickListener;
     private View.OnLongClickListener mIconLongClickListener;
 
-    // Prevents dispatching touches to children if true
-    private boolean mTouchEnabled = true;
-
     // Only non-null when the corresponding Folder is open.
     private @Nullable FolderIcon mLeaveBehindFolderIcon;
 
     // Only non-null when device supports having an All Apps button.
-    private @Nullable AllAppsButton mAllAppsButton;
+    private @Nullable IconButtonView mAllAppsButton;
+
+    // Only non-null when device supports having an All Apps button.
+    private @Nullable View mTaskbarDivider;
+
+    private View mQsb;
+
+    private float mTransientTaskbarMinWidth;
+
+    private float mTransientTaskbarAllAppsButtonTranslationXOffset;
+
+    private boolean mShouldTryStartAlign;
 
     public TaskbarView(@NonNull Context context) {
         this(context, null);
@@ -95,43 +112,99 @@
             int defStyleRes) {
         super(context, attrs, defStyleAttr, defStyleRes);
         mActivityContext = ActivityContext.lookupContext(context);
-
+        mIconLayoutBounds = mActivityContext.getTransientTaskbarBounds();
         Resources resources = getResources();
-        mIconTouchSize = resources.getDimensionPixelSize(R.dimen.taskbar_icon_touch_size);
+        boolean isTransientTaskbar = DisplayController.isTransientTaskbar(mActivityContext)
+                && !TaskbarManager.isPhoneMode(mActivityContext.getDeviceProfile());
+        mIsRtl = Utilities.isRtl(resources);
+        mTransientTaskbarMinWidth = mContext.getResources().getDimension(
+                R.dimen.transient_taskbar_min_width);
+        mTransientTaskbarAllAppsButtonTranslationXOffset =
+                resources.getDimension(isTransientTaskbar
+                        ? R.dimen.transient_taskbar_all_apps_button_translation_x_offset
+                        : R.dimen.taskbar_all_apps_button_translation_x_offset);
+
+        onDeviceProfileChanged(mActivityContext.getDeviceProfile());
 
         int actualMargin = resources.getDimensionPixelSize(R.dimen.taskbar_icon_spacing);
-        int actualIconSize = mActivityContext.getDeviceProfile().iconSizePx;
+        int actualIconSize = mActivityContext.getDeviceProfile().taskbarIconSize;
+
+        mIconTouchSize = Math.max(actualIconSize,
+                resources.getDimensionPixelSize(R.dimen.taskbar_icon_min_touch_size));
 
         // We layout the icons to be of mIconTouchSize in width and height
         mItemMarginLeftRight = actualMargin - (mIconTouchSize - actualIconSize) / 2;
         mItemPadding = (mIconTouchSize - actualIconSize) / 2;
 
+        mFolderLeaveBehindColor = Themes.getAttrColor(mActivityContext,
+                android.R.attr.textColorTertiary);
+
         // Needed to draw folder leave-behind when opening one.
         setWillNotDraw(false);
 
-        mThemeIconsBackground = calculateThemeIconsBackground();
-
-        if (FeatureFlags.ENABLE_ALL_APPS_IN_TASKBAR.get()) {
-            mAllAppsButton = new AllAppsButton(context);
-            mAllAppsButton.setLayoutParams(
-                    new ViewGroup.LayoutParams(mIconTouchSize, mIconTouchSize));
+        if (!mActivityContext.getPackageManager().hasSystemFeature(FEATURE_PC)) {
+            mAllAppsButton = (IconButtonView) LayoutInflater.from(context)
+                    .inflate(R.layout.taskbar_all_apps_button, this, false);
+            mAllAppsButton.setIconDrawable(resources.getDrawable(isTransientTaskbar
+                    ? R.drawable.ic_transient_taskbar_all_apps_button
+                    : R.drawable.ic_taskbar_all_apps_button));
+            mAllAppsButton.setScaleX(mIsRtl ? -1 : 1);
             mAllAppsButton.setPadding(mItemPadding, mItemPadding, mItemPadding, mItemPadding);
+            mAllAppsButton.setForegroundTint(
+                    mActivityContext.getColor(R.color.all_apps_button_color));
+
+            if (FeatureFlags.ENABLE_TASKBAR_PINNING.get()) {
+                mTaskbarDivider = LayoutInflater.from(context).inflate(R.layout.taskbar_divider,
+                        this, false);
+            }
         }
+
+        // TODO: Disable touch events on QSB otherwise it can crash.
+        mQsb = LayoutInflater.from(context).inflate(R.layout.search_container_hotseat, this, false);
     }
 
-    private int getColorWithGivenLuminance(int color, float luminance) {
-        float[] colorHSL = new float[3];
-        ColorUtils.colorToHSL(color, colorHSL);
-        colorHSL[2] = luminance;
-        return ColorUtils.HSLToColor(colorHSL);
+    @Override
+    protected void onAttachedToWindow() {
+        super.onAttachedToWindow();
+        mActivityContext.addOnDeviceProfileChangeListener(this);
     }
 
-    private int calculateThemeIconsBackground() {
-        int color = ThemedIconDrawable.getColors(mContext)[0];
-        if (Utilities.isDarkTheme(mContext)) {
-            return getColorWithGivenLuminance(color, TASKBAR_BACKGROUND_LUMINANCE);
+    @Override
+    protected void onDetachedFromWindow() {
+        super.onDetachedFromWindow();
+        mActivityContext.removeOnDeviceProfileChangeListener(this);
+    }
+
+    @Override
+    public void onDeviceProfileChanged(DeviceProfile dp) {
+        mShouldTryStartAlign = mActivityContext.isThreeButtonNav() && dp.startAlignTaskbar;
+    }
+
+    @Override
+    public boolean performAccessibilityActionInternal(int action, Bundle arguments) {
+        if (action == AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS) {
+            announceForAccessibility(mContext.getString(R.string.taskbar_a11y_shown_title));
+        } else if (action == AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS) {
+            announceForAccessibility(mContext.getString(R.string.taskbar_a11y_hidden_title));
         }
-        return color;
+        return super.performAccessibilityActionInternal(action, arguments);
+
+    }
+
+    protected void announceAccessibilityChanges() {
+        this.performAccessibilityAction(
+                isVisibleToUser() ? AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS
+                        : AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null);
+
+        ActivityContext.lookupContext(getContext()).getDragLayer()
+                .sendAccessibilityEvent(TYPE_WINDOW_CONTENT_CHANGED);
+    }
+
+    /**
+     * Returns the icon touch size.
+     */
+    public int getIconTouchSize() {
+        return mIconTouchSize;
     }
 
     protected void init(TaskbarViewController.TaskbarViewCallbacks callbacks) {
@@ -144,6 +217,10 @@
         if (mAllAppsButton != null) {
             mAllAppsButton.setOnClickListener(mControllerCallbacks.getAllAppsButtonClickListener());
         }
+        if (mTaskbarDivider != null) {
+            mTaskbarDivider.setOnLongClickListener(
+                    mControllerCallbacks.getTaskbarDividerLongClickListener());
+        }
     }
 
     private void removeAndRecycle(View view) {
@@ -165,7 +242,13 @@
 
         if (mAllAppsButton != null) {
             removeView(mAllAppsButton);
+
+            if (mTaskbarDivider != null) {
+                removeView(mTaskbarDivider);
+            }
         }
+        removeView(mQsb);
+
 
         for (int i = 0; i < hotseatItemInfos.length; i++) {
             ItemInfo hotseatItemInfo = hotseatItemInfos[i];
@@ -239,12 +322,20 @@
         }
 
         if (mAllAppsButton != null) {
-            int index = Utilities.isRtl(getResources()) ? 0 : getChildCount();
-            addView(mAllAppsButton, index);
-        }
+            mAllAppsButton.setTranslationXForTaskbarAllAppsIcon(getChildCount() > 0
+                    ? mTransientTaskbarAllAppsButtonTranslationXOffset : 0f);
+            addView(mAllAppsButton, mIsRtl ? getChildCount() : 0);
 
-        mThemeIconsBackground = calculateThemeIconsBackground();
-        setThemedIconsBackgroundColor(mThemeIconsBackground);
+            // if only all apps button present, don't include divider view.
+            if (mTaskbarDivider != null && getChildCount() > 1) {
+                addView(mTaskbarDivider, mIsRtl ? (getChildCount() - 1) : 1);
+            }
+        }
+        if (mActivityContext.getDeviceProfile().isQsbInline) {
+            addView(mQsb, mIsRtl ? getChildCount() : 0);
+            // Always set QSB to invisible after re-adding.
+            mQsb.setVisibility(View.INVISIBLE);
+        }
     }
 
     /**
@@ -273,46 +364,93 @@
     @Override
     protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
         int count = getChildCount();
-        int spaceNeeded = count * (mItemMarginLeftRight * 2 + mIconTouchSize);
-        int navSpaceNeeded = ApiWrapper.getHotseatEndOffset(getContext());
-        boolean layoutRtl = isLayoutRtl();
-        int iconEnd = right - (right - left - spaceNeeded) / 2;
-        boolean needMoreSpaceForNav = layoutRtl ?
-                navSpaceNeeded > (iconEnd - spaceNeeded) :
-                iconEnd > (right - navSpaceNeeded);
-        if (needMoreSpaceForNav) {
-            int offset = layoutRtl ?
-                    navSpaceNeeded - (iconEnd - spaceNeeded) :
-                    (right - navSpaceNeeded) - iconEnd;
-            iconEnd += offset;
+        DeviceProfile deviceProfile = mActivityContext.getDeviceProfile();
+        int spaceNeeded = getIconLayoutWidth();
+        // We are removing the margin from taskbar divider item in taskbar,
+        // so remove it from spacing also.
+        if (FeatureFlags.ENABLE_TASKBAR_PINNING.get() && count > 1) {
+            spaceNeeded -= mIconTouchSize;
         }
+        int navSpaceNeeded = deviceProfile.hotseatBarEndOffset;
+        boolean layoutRtl = isLayoutRtl();
+        int centerAlignIconEnd = right - (right - left - spaceNeeded) / 2;
+        int iconEnd;
+
+        if (mShouldTryStartAlign) {
+            // Taskbar is aligned to the start
+            int startSpacingPx = deviceProfile.inlineNavButtonsEndSpacingPx;
+
+            if (layoutRtl) {
+                iconEnd = right - startSpacingPx;
+            } else {
+                iconEnd = startSpacingPx + spaceNeeded;
+            }
+        } else {
+            iconEnd = centerAlignIconEnd;
+        }
+
+        boolean needMoreSpaceForNav = layoutRtl
+                ? navSpaceNeeded > (iconEnd - spaceNeeded)
+                : iconEnd > (right - navSpaceNeeded);
+        if (needMoreSpaceForNav) {
+            // Add offset to account for nav bar when taskbar is centered
+            int offset = layoutRtl
+                    ? navSpaceNeeded - (centerAlignIconEnd - spaceNeeded)
+                    : (right - navSpaceNeeded) - centerAlignIconEnd;
+
+            iconEnd = centerAlignIconEnd + offset;
+        }
+
+        sTmpRect.set(mIconLayoutBounds);
+
         // Layout the children
         mIconLayoutBounds.right = iconEnd;
         mIconLayoutBounds.top = (bottom - top - mIconTouchSize) / 2;
         mIconLayoutBounds.bottom = mIconLayoutBounds.top + mIconTouchSize;
         for (int i = count; i > 0; i--) {
             View child = getChildAt(i - 1);
-            iconEnd -= mItemMarginLeftRight;
-            int iconStart = iconEnd - mIconTouchSize;
-            child.layout(iconStart, mIconLayoutBounds.top, iconEnd, mIconLayoutBounds.bottom);
-            iconEnd = iconStart - mItemMarginLeftRight;
+            if (child == mQsb) {
+                int qsbStart;
+                int qsbEnd;
+                if (layoutRtl) {
+                    qsbStart = iconEnd + mItemMarginLeftRight;
+                    qsbEnd = qsbStart + deviceProfile.hotseatQsbWidth;
+                } else {
+                    qsbEnd = iconEnd - mItemMarginLeftRight;
+                    qsbStart = qsbEnd - deviceProfile.hotseatQsbWidth;
+                }
+                int qsbTop = (bottom - top - deviceProfile.hotseatQsbHeight) / 2;
+                int qsbBottom = qsbTop + deviceProfile.hotseatQsbHeight;
+                child.layout(qsbStart, qsbTop, qsbEnd, qsbBottom);
+            } else if (child == mTaskbarDivider) {
+                iconEnd += mItemMarginLeftRight;
+                int iconStart = iconEnd - mIconTouchSize;
+                child.layout(iconStart, mIconLayoutBounds.top, iconEnd, mIconLayoutBounds.bottom);
+                iconEnd = iconStart + mItemMarginLeftRight;
+            } else {
+                iconEnd -= mItemMarginLeftRight;
+                int iconStart = iconEnd - mIconTouchSize;
+                child.layout(iconStart, mIconLayoutBounds.top, iconEnd, mIconLayoutBounds.bottom);
+                iconEnd = iconStart - mItemMarginLeftRight;
+            }
         }
-        mIconLayoutBounds.left = iconEnd;
-    }
 
-    @Override
-    public boolean dispatchTouchEvent(MotionEvent ev) {
-        if (!mTouchEnabled) {
-            return true;
+        mIconLayoutBounds.left = iconEnd;
+
+        if (mIconLayoutBounds.right - mIconLayoutBounds.left < mTransientTaskbarMinWidth) {
+            int center = mIconLayoutBounds.centerX();
+            int distanceFromCenter = (int) mTransientTaskbarMinWidth / 2;
+            mIconLayoutBounds.right = center + distanceFromCenter;
+            mIconLayoutBounds.left = center - distanceFromCenter;
         }
-        return super.dispatchTouchEvent(ev);
+
+        if (!sTmpRect.equals(mIconLayoutBounds)) {
+            mControllerCallbacks.notifyIconLayoutBoundsChanged();
+        }
     }
 
     @Override
     public boolean onTouchEvent(MotionEvent event) {
-        if (!mTouchEnabled) {
-            return true;
-        }
         if (mIconLayoutBounds.left <= event.getX() && event.getX() <= mIconLayoutBounds.right) {
             // Don't allow long pressing between icons, or above/below them.
             return true;
@@ -329,10 +467,6 @@
         return super.onTouchEvent(event);
     }
 
-    public void setTouchesEnabled(boolean touchEnabled) {
-        this.mTouchEnabled = touchEnabled;
-    }
-
     /**
      * Returns whether the given MotionEvent, *in screen coorindates*, is within any Taskbar item's
      * touch bounds.
@@ -349,6 +483,18 @@
     }
 
     /**
+     * Returns the space used by the icons
+     */
+    public int getIconLayoutWidth() {
+        int countExcludingQsb = getChildCount();
+        DeviceProfile deviceProfile = mActivityContext.getDeviceProfile();
+        if (deviceProfile.isQsbInline) {
+            countExcludingQsb--;
+        }
+        return countExcludingQsb * (mItemMarginLeftRight * 2 + mIconTouchSize);
+    }
+
+    /**
      * Returns the app icons currently shown in the taskbar.
      */
     public View[] getIconViews() {
@@ -363,10 +509,26 @@
     /**
      * Returns the all apps button in the taskbar.
      */
+    @Nullable
     public View getAllAppsButtonView() {
         return mAllAppsButton;
     }
 
+    /**
+     * Returns the taskbar divider in the taskbar.
+     */
+    @Nullable
+    public View getTaskbarDividerView() {
+        return mTaskbarDivider;
+    }
+
+    /**
+     * Returns the QSB in the taskbar.
+     */
+    public View getQsb() {
+        return mQsb;
+    }
+
     // FolderIconParent implemented methods.
 
     @Override
@@ -389,7 +551,8 @@
         if (mLeaveBehindFolderIcon != null) {
             canvas.save();
             canvas.translate(mLeaveBehindFolderIcon.getLeft(), mLeaveBehindFolderIcon.getTop());
-            mLeaveBehindFolderIcon.getFolderBackground().drawLeaveBehind(canvas);
+            mLeaveBehindFolderIcon.getFolderBackground().drawLeaveBehind(canvas,
+                    mFolderLeaveBehindColor);
             canvas.restore();
         }
     }
@@ -423,6 +586,7 @@
 
     /**
      * Finds the first icon to match one of the given matchers, from highest to lowest priority.
+     *
      * @return The first match, or All Apps button if no match was found.
      */
     public View getFirstMatch(Predicate<ItemInfo>... matchers) {
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java
index 3562f5b..4abd995 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java
@@ -16,35 +16,55 @@
 package com.android.launcher3.taskbar;
 
 import static com.android.launcher3.LauncherAnimUtils.SCALE_PROPERTY;
+import static com.android.launcher3.LauncherAnimUtils.VIEW_ALPHA;
+import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_X;
+import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_Y;
 import static com.android.launcher3.Utilities.squaredHypot;
+import static com.android.launcher3.anim.AnimatedFloat.VALUE;
+import static com.android.launcher3.anim.AnimatorListeners.forEndCallback;
+import static com.android.launcher3.anim.Interpolators.FINAL_FRAME;
 import static com.android.launcher3.anim.Interpolators.LINEAR;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_ALLAPPS_BUTTON_TAP;
-import static com.android.quickstep.AnimatedFloat.VALUE;
+import static com.android.launcher3.taskbar.TaskbarManager.isPhoneMode;
+import static com.android.launcher3.util.MultiPropertyFactory.MULTI_PROPERTY_VALUE;
+import static com.android.launcher3.util.MultiTranslateDelegate.INDEX_TASKBAR_ALIGNMENT_ANIM;
+import static com.android.launcher3.util.MultiTranslateDelegate.INDEX_TASKBAR_REVEAL_ANIM;
 
+import android.animation.Animator;
+import android.animation.AnimatorSet;
+import android.animation.ObjectAnimator;
+import android.animation.ValueAnimator;
 import android.annotation.NonNull;
 import android.graphics.Rect;
-import android.util.FloatProperty;
 import android.util.Log;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.animation.Interpolator;
 
+import androidx.annotation.Nullable;
 import androidx.core.graphics.ColorUtils;
 import androidx.core.view.OneShotPreDrawListener;
 
-import com.android.launcher3.BubbleTextView;
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.R;
+import com.android.launcher3.Reorderable;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.AlphaUpdateListener;
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.anim.AnimatorPlaybackController;
+import com.android.launcher3.anim.Interpolators;
 import com.android.launcher3.anim.PendingAnimation;
+import com.android.launcher3.anim.RevealOutlineAnimation;
+import com.android.launcher3.anim.RoundedRectRevealOutlineProvider;
 import com.android.launcher3.config.FeatureFlags;
-import com.android.launcher3.folder.FolderIcon;
 import com.android.launcher3.icons.ThemedIconDrawable;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.util.ItemInfoMatcher;
 import com.android.launcher3.util.LauncherBindableItemsContainer;
+import com.android.launcher3.util.MultiPropertyFactory;
+import com.android.launcher3.util.MultiTranslateDelegate;
 import com.android.launcher3.util.MultiValueAlpha;
-import com.android.quickstep.AnimatedFloat;
 
 import java.io.PrintWriter;
 import java.util.function.Predicate;
@@ -63,7 +83,11 @@
     public static final int ALPHA_INDEX_STASH = 2;
     public static final int ALPHA_INDEX_RECENTS_DISABLED = 3;
     public static final int ALPHA_INDEX_NOTIFICATION_EXPANDED = 4;
-    private static final int NUM_ALPHA_CHANNELS = 5;
+    public static final int ALPHA_INDEX_ASSISTANT_INVOKED = 5;
+    public static final int ALPHA_INDEX_SMALL_SCREEN = 6;
+    private static final int NUM_ALPHA_CHANNELS = 7;
+
+    private static final float TASKBAR_DARK_THEME_ICONS_BACKGROUND_LUMINANCE = 0.30f;
 
     private final TaskbarActivityContext mActivity;
     private final TaskbarView mTaskbarView;
@@ -75,8 +99,16 @@
             this::updateTranslationY);
     private AnimatedFloat mTaskbarNavButtonTranslationY;
     private AnimatedFloat mTaskbarNavButtonTranslationYForInAppDisplay;
+    private float mTaskbarIconTranslationYForSwipe;
+    private float mTaskbarIconTranslationYForSpringOnStash;
 
-    private final AnimatedFloat mThemeIconsBackground = new AnimatedFloat(
+    private final int mTaskbarBottomMargin;
+    private final int mStashedHandleHeight;
+    private final int mLauncherThemedIconsBackgroundColor;
+    private final int mTaskbarThemedIconsBackgroundColor;
+
+    /** Progress from {@code 0} for Launcher's color to {@code 1} for Taskbar's color. */
+    private final AnimatedFloat mThemedIconsBackgroundProgress = new AnimatedFloat(
             this::updateIconsBackground);
 
     private final TaskbarModelCallbacks mModelCallbacks;
@@ -89,7 +121,12 @@
     private AnimatorPlaybackController mIconAlignControllerLazy = null;
     private Runnable mOnControllerPreCreateCallback = NO_OP;
 
-    private int mThemeIconsColor;
+    private boolean mIsHotseatIconOnTopWhenAligned;
+
+    private final DeviceProfile.OnDeviceProfileChangeListener mDeviceProfileChangeListener =
+            dp -> commitRunningAppsToUI();
+
+    private final boolean mIsRtl;
 
     public TaskbarViewController(TaskbarActivityContext activity, TaskbarView taskbarView) {
         mActivity = activity;
@@ -97,13 +134,28 @@
         mTaskbarIconAlpha = new MultiValueAlpha(mTaskbarView, NUM_ALPHA_CHANNELS);
         mTaskbarIconAlpha.setUpdateVisibility(true);
         mModelCallbacks = new TaskbarModelCallbacks(activity, mTaskbarView);
+        mTaskbarBottomMargin = activity.getDeviceProfile().taskbarBottomMargin;
+        mStashedHandleHeight = activity.getResources()
+                .getDimensionPixelSize(R.dimen.taskbar_stashed_handle_height);
+        mLauncherThemedIconsBackgroundColor = ThemedIconDrawable.getColors(mActivity)[0];
+        if (!Utilities.isDarkTheme(mActivity)) {
+            mTaskbarThemedIconsBackgroundColor = mLauncherThemedIconsBackgroundColor;
+        } else {
+            // Increase luminance for dark themed icons given they are on a dark Taskbar background.
+            float[] colorHSL = new float[3];
+            ColorUtils.colorToHSL(mLauncherThemedIconsBackgroundColor, colorHSL);
+            colorHSL[2] = TASKBAR_DARK_THEME_ICONS_BACKGROUND_LUMINANCE;
+            mTaskbarThemedIconsBackgroundColor = ColorUtils.HSLToColor(colorHSL);
+        }
+        mIsRtl = Utilities.isRtl(mTaskbarView.getResources());
     }
 
     public void init(TaskbarControllers controllers) {
         mControllers = controllers;
         mTaskbarView.init(new TaskbarViewCallbacks());
-        mTaskbarView.getLayoutParams().height = mActivity.getDeviceProfile().taskbarSize;
-        mThemeIconsColor = ThemedIconDrawable.getColors(mTaskbarView.getContext())[0];
+        mTaskbarView.getLayoutParams().height = isPhoneMode(mActivity.getDeviceProfile())
+                ? mActivity.getResources().getDimensionPixelSize(R.dimen.taskbar_size)
+                : mActivity.getDeviceProfile().taskbarHeight;
 
         mTaskbarIconScaleForStash.updateValue(1f);
 
@@ -116,33 +168,37 @@
                 controllers.navbarButtonsViewController.getTaskbarNavButtonTranslationY();
         mTaskbarNavButtonTranslationYForInAppDisplay = controllers.navbarButtonsViewController
                 .getTaskbarNavButtonTranslationYForInAppDisplay();
+
+        mActivity.addOnDeviceProfileChangeListener(mDeviceProfileChangeListener);
+    }
+
+    /**
+     * Announcement for Accessibility when Taskbar stashes/unstashes.
+     */
+    public void announceForAccessibility() {
+        mTaskbarView.announceAccessibilityChanges();
     }
 
     public void onDestroy() {
         LauncherAppState.getInstance(mActivity).getModel().removeCallbacks(mModelCallbacks);
+        mActivity.removeOnDeviceProfileChangeListener(mDeviceProfileChangeListener);
+        mModelCallbacks.unregisterListeners();
     }
 
     public boolean areIconsVisible() {
         return mTaskbarView.areIconsVisible();
     }
 
-    public MultiValueAlpha getTaskbarIconAlpha() {
+    public MultiPropertyFactory<View> getTaskbarIconAlpha() {
         return mTaskbarIconAlpha;
     }
 
     /**
-     * Should be called when the IME visibility changes, so we can make Taskbar not steal touches.
-     */
-    public void setImeIsVisible(boolean isImeVisible) {
-        mTaskbarView.setTouchesEnabled(!isImeVisible);
-    }
-
-    /**
-     * Should be called when the recents button is disabled, so we can hide taskbar icons as well.
+     * Should be called when the recents button is disabled, so we can hide Taskbar icons as well.
      */
     public void setRecentsButtonDisabled(boolean isDisabled) {
         // TODO: check TaskbarStashController#supportsStashing(), to stash instead of setting alpha.
-        mTaskbarIconAlpha.getProperty(ALPHA_INDEX_RECENTS_DISABLED).setValue(isDisabled ? 0 : 1);
+        mTaskbarIconAlpha.get(ALPHA_INDEX_RECENTS_DISABLED).setValue(isDisabled ? 0 : 1);
     }
 
     /**
@@ -153,7 +209,7 @@
     }
 
     /**
-     * Adds one time pre draw listener to the taskbar view, it is called before
+     * Adds one time pre draw listener to the Taskbar view, it is called before
      * drawing a frame and invoked only once
      * @param listener callback that will be invoked before drawing the next frame
      */
@@ -165,10 +221,15 @@
         return mTaskbarView.getIconLayoutBounds();
     }
 
+    public int getIconLayoutWidth() {
+        return mTaskbarView.getIconLayoutWidth();
+    }
+
     public View[] getIconViews() {
         return mTaskbarView.getIconViews();
     }
 
+    @Nullable
     public View getAllAppsButtonView() {
         return mTaskbarView.getAllAppsButtonView();
     }
@@ -190,28 +251,185 @@
         mTaskbarView.setScaleY(scale);
     }
 
-    private void updateTranslationY() {
-        mTaskbarView.setTranslationY(mTaskbarIconTranslationYForHome.value
-                + mTaskbarIconTranslationYForStash.value);
-    }
-
-    private void updateIconsBackground() {
-        mTaskbarView.setThemedIconsBackgroundColor(
-                ColorUtils.blendARGB(
-                        mThemeIconsColor,
-                        mTaskbarView.mThemeIconsBackground,
-                        mThemeIconsBackground.value
-                ));
+    /**
+     * Sets the translation of the TaskbarView during the swipe up gesture.
+     */
+    public void setTranslationYForSwipe(float transY) {
+        mTaskbarIconTranslationYForSwipe = transY;
+        updateTranslationY();
     }
 
     /**
-     * Sets the taskbar icon alignment relative to Launcher hotseat icons
+     * Sets the translation of the TaskbarView during the spring on stash animation.
+     */
+    public void setTranslationYForStash(float transY) {
+        mTaskbarIconTranslationYForSpringOnStash = transY;
+        updateTranslationY();
+    }
+
+    private void updateTranslationY() {
+        mTaskbarView.setTranslationY(mTaskbarIconTranslationYForHome.value
+                + mTaskbarIconTranslationYForStash.value
+                + mTaskbarIconTranslationYForSwipe
+                + mTaskbarIconTranslationYForSpringOnStash);
+    }
+
+    /**
+     * Updates the Taskbar's themed icons background according to the progress between in-app/home.
+     */
+    protected void updateIconsBackground() {
+        mTaskbarView.setThemedIconsBackgroundColor(
+                ColorUtils.blendARGB(
+                        mLauncherThemedIconsBackgroundColor,
+                        mTaskbarThemedIconsBackgroundColor,
+                        mThemedIconsBackgroundProgress.value
+                ));
+    }
+
+    private ValueAnimator createRevealAnimForView(View view, boolean isStashed, float newWidth,
+            boolean isQsb, boolean dispatchOnAnimationStart) {
+        Rect viewBounds = new Rect(0, 0, view.getWidth(), view.getHeight());
+        int centerY = viewBounds.centerY();
+        int halfHandleHeight = mStashedHandleHeight / 2;
+        final int top = centerY - halfHandleHeight;
+        final int bottom = centerY + halfHandleHeight;
+
+        final int left;
+        final int right;
+        // QSB will crop from the 'start' whereas all other icons will crop from the center.
+        if (isQsb) {
+            if (mIsRtl) {
+                right = viewBounds.right;
+                left = (int) (right - newWidth);
+            } else {
+                left = viewBounds.left;
+                right = (int) (left + newWidth);
+            }
+        } else {
+            int widthDelta = (int) ((viewBounds.width() - newWidth) / 2);
+
+            left = viewBounds.left + widthDelta;
+            right = viewBounds.right - widthDelta;
+        }
+
+        Rect stashedRect = new Rect(left, top, right, bottom);
+        // QSB radius can be > 0 since it does not have any UI elements outside of it bounds.
+        float radius = isQsb
+                ? viewBounds.height() / 2f
+                : 0f;
+        float stashedRadius = stashedRect.height() / 2f;
+
+        ValueAnimator reveal = new RoundedRectRevealOutlineProvider(radius,
+                stashedRadius, viewBounds, stashedRect)
+                .createRevealAnimator(view, !isStashed, 0);
+        // SUW animation does not dispatch animation start until *after* the animation is complete.
+        // In order to work properly, the reveal animation start needs to be called immediately.
+        if (dispatchOnAnimationStart) {
+            for (Animator.AnimatorListener listener : reveal.getListeners()) {
+                listener.onAnimationStart(reveal);
+            }
+        }
+        return reveal;
+    }
+
+    /**
+     * Defers any updates to the UI for the setup wizard animation.
+     */
+    public void setDeferUpdatesForSUW(boolean defer) {
+        mModelCallbacks.setDeferUpdatesForSUW(defer);
+    }
+
+    /**
+     * Creates and returns a {@link RevealOutlineAnimation} Animator that updates the icon shape
+     * and size.
+     * @param as The AnimatorSet to add all animations to.
+     * @param isStashed When true, the icon crops vertically to the size of the stashed handle.
+     *                  When false, the reverse happens.
+     * @param duration The duration of the animation.
+     * @param interpolator The interpolator to use for all animations.
+     */
+    public void addRevealAnimToIsStashed(AnimatorSet as, boolean isStashed, long duration,
+            Interpolator interpolator, boolean dispatchOnAnimationStart) {
+        AnimatorSet reveal = new AnimatorSet();
+
+        Rect stashedBounds = new Rect();
+        mControllers.stashedHandleViewController.getStashedHandleBounds(stashedBounds);
+
+        int numIcons = mTaskbarView.getChildCount();
+        float newChildWidth = stashedBounds.width() / (float) numIcons;
+
+        // All children move the same y-amount since they will be cropped to the same centerY.
+        float croppedTransY = mTaskbarView.getIconTouchSize() - stashedBounds.height();
+
+        for (int i = mTaskbarView.getChildCount() - 1; i >= 0; i--) {
+            View child = mTaskbarView.getChildAt(i);
+            boolean isQsb = child == mTaskbarView.getQsb();
+
+            // Crop the icons to/from the nav handle shape.
+            reveal.play(createRevealAnimForView(child, isStashed, newChildWidth, isQsb,
+                    dispatchOnAnimationStart).setDuration(duration));
+
+            // Translate the icons to/from their locations as the "nav handle."
+
+            // All of the Taskbar icons will overlap the entirety of the stashed handle
+            // And the QSB, if inline, will overlap part of stashed handle as well.
+            float currentPosition = isQsb ? child.getX() : child.getLeft();
+            float newPosition = stashedBounds.left + (newChildWidth * i);
+            final float croppedTransX;
+            // We look at 'left' and 'right' values to ensure that the children stay within the
+            // bounds of the stashed handle since the new width only occurs at the end of the anim.
+            if (currentPosition > newPosition) {
+                float newRight = stashedBounds.right - (newChildWidth
+                        * (numIcons - 1 - i));
+                croppedTransX = -(currentPosition + child.getWidth() - newRight);
+            } else {
+                croppedTransX = newPosition - currentPosition;
+            }
+            float[] transX = isStashed
+                    ? new float[] {croppedTransX}
+                    : new float[] {croppedTransX, 0};
+            float[] transY = isStashed
+                    ? new float[] {croppedTransY}
+                    : new float[] {croppedTransY, 0};
+
+            if (child instanceof Reorderable) {
+                MultiTranslateDelegate mtd = ((Reorderable) child).getTranslateDelegate();
+
+                reveal.play(ObjectAnimator.ofFloat(mtd.getTranslationX(INDEX_TASKBAR_REVEAL_ANIM),
+                        MULTI_PROPERTY_VALUE, transX)
+                        .setDuration(duration));
+                reveal.play(ObjectAnimator.ofFloat(mtd.getTranslationY(INDEX_TASKBAR_REVEAL_ANIM),
+                        MULTI_PROPERTY_VALUE, transY));
+                as.addListener(forEndCallback(() ->
+                        mtd.setTranslation(INDEX_TASKBAR_REVEAL_ANIM, 0, 0)));
+            } else {
+                reveal.play(ObjectAnimator.ofFloat(child, VIEW_TRANSLATE_X, transX)
+                        .setDuration(duration));
+                reveal.play(ObjectAnimator.ofFloat(child, VIEW_TRANSLATE_Y, transY));
+                as.addListener(forEndCallback(() -> {
+                    child.setTranslationX(0);
+                    child.setTranslationY(0);
+                }));
+            }
+        }
+
+        reveal.setInterpolator(interpolator);
+        as.play(reveal);
+    }
+
+    /**
+     * Sets the Taskbar icon alignment relative to Launcher hotseat icons
      * @param alignmentRatio [0, 1]
      *                       0 => not aligned
      *                       1 => fully aligned
      */
     public void setLauncherIconAlignment(float alignmentRatio, DeviceProfile launcherDp) {
-        if (mIconAlignControllerLazy == null) {
+        boolean isHotseatIconOnTopWhenAligned =
+                mControllers.uiController.isHotseatIconOnTopWhenAligned();
+        // When mIsHotseatIconOnTopWhenAligned changes, animation needs to be re-created.
+        if (mIconAlignControllerLazy == null
+                || mIsHotseatIconOnTopWhenAligned != isHotseatIconOnTopWhenAligned) {
+            mIsHotseatIconOnTopWhenAligned = isHotseatIconOnTopWhenAligned;
             mIconAlignControllerLazy = createIconAlignmentController(launcherDp);
         }
         mIconAlignControllerLazy.setPlayFraction(alignmentRatio);
@@ -222,49 +440,109 @@
     }
 
     /**
-     * Creates an animation for aligning the taskbar icons with the provided Launcher device profile
+     * Creates an animation for aligning the Taskbar icons with the provided Launcher device profile
      */
     private AnimatorPlaybackController createIconAlignmentController(DeviceProfile launcherDp) {
         mOnControllerPreCreateCallback.run();
         PendingAnimation setter = new PendingAnimation(100);
+        DeviceProfile taskbarDp = mActivity.getDeviceProfile();
         Rect hotseatPadding = launcherDp.getHotseatLayoutPadding(mActivity);
-        float scaleUp = ((float) launcherDp.iconSizePx) / mActivity.getDeviceProfile().iconSizePx;
+        float scaleUp = ((float) launcherDp.iconSizePx) / taskbarDp.taskbarIconSize;
         int borderSpacing = launcherDp.hotseatBorderSpace;
         int hotseatCellSize = DeviceProfile.calculateCellWidth(
                 launcherDp.availableWidthPx - hotseatPadding.left - hotseatPadding.right,
                 borderSpacing,
                 launcherDp.numShownHotseatIcons);
 
+        boolean isToHome = mControllers.uiController.isIconAlignedWithHotseat();
+        // If Hotseat is not the top element, Taskbar should maintain in-app state as it fades out,
+        // or fade in while already in in-app state.
+        Interpolator interpolator = mIsHotseatIconOnTopWhenAligned ? LINEAR : FINAL_FRAME;
+
         int offsetY = launcherDp.getTaskbarOffsetY();
-        setter.setFloat(mTaskbarIconTranslationYForHome, VALUE, -offsetY, LINEAR);
-        setter.setFloat(mTaskbarNavButtonTranslationY, VALUE, -offsetY, LINEAR);
-        setter.setFloat(mTaskbarNavButtonTranslationYForInAppDisplay, VALUE, offsetY, LINEAR);
+        setter.setFloat(mTaskbarIconTranslationYForHome, VALUE, -offsetY, interpolator);
+        setter.setFloat(mTaskbarNavButtonTranslationY, VALUE, -offsetY, interpolator);
+        setter.setFloat(mTaskbarNavButtonTranslationYForInAppDisplay, VALUE, offsetY, interpolator);
 
         if (Utilities.isDarkTheme(mTaskbarView.getContext())) {
-            setter.addFloat(mThemeIconsBackground, VALUE, 0f, 1f, LINEAR);
+            setter.addFloat(mThemedIconsBackgroundProgress, VALUE, 1f, 0f, LINEAR);
         }
 
         int collapsedHeight = mActivity.getDefaultTaskbarWindowHeight();
-        int expandedHeight = Math.max(collapsedHeight,
-                mActivity.getDeviceProfile().taskbarSize + offsetY);
+        int expandedHeight = Math.max(collapsedHeight, taskbarDp.taskbarHeight + offsetY);
         setter.addOnFrameListener(anim -> mActivity.setTaskbarWindowHeight(
                 anim.getAnimatedFraction() > 0 ? expandedHeight : collapsedHeight));
 
         for (int i = 0; i < mTaskbarView.getChildCount(); i++) {
             View child = mTaskbarView.getChildAt(i);
+            boolean isAllAppsButton = child == mTaskbarView.getAllAppsButtonView();
+            boolean isTaskbarDividerView = child == mTaskbarView.getTaskbarDividerView();
+            if (!mIsHotseatIconOnTopWhenAligned) {
+                // When going to home, the EMPHASIZED interpolator in TaskbarLauncherStateController
+                // plays iconAlignment to 1 really fast, therefore moving the fading towards the end
+                // to avoid icons disappearing rather than fading out visually.
+                setter.setViewAlpha(child, 0, Interpolators.clampToProgress(LINEAR, 0.8f, 1f));
+            } else if ((isAllAppsButton && !FeatureFlags.ENABLE_ALL_APPS_BUTTON_IN_HOTSEAT.get())
+                    || (isTaskbarDividerView && FeatureFlags.ENABLE_TASKBAR_PINNING.get())) {
+                if (!isToHome
+                        && mIsHotseatIconOnTopWhenAligned
+                        && mControllers.taskbarStashController.isStashed()) {
+                    // Prevent All Apps icon from appearing when going from hotseat to nav handle.
+                    setter.setViewAlpha(child, 0, Interpolators.clampToProgress(LINEAR, 0f, 0f));
+                } else {
+                    setter.setViewAlpha(child, 0,
+                            isToHome
+                                    ? Interpolators.clampToProgress(LINEAR, 0f, 0.17f)
+                                    : Interpolators.clampToProgress(LINEAR, 0.72f, 0.84f));
+                }
+            }
+
+            if (child == mTaskbarView.getQsb()) {
+                boolean isRtl = Utilities.isRtl(child.getResources());
+                float hotseatIconCenter = isRtl
+                        ? launcherDp.widthPx - hotseatPadding.right + borderSpacing
+                        + launcherDp.hotseatQsbWidth / 2f
+                        : hotseatPadding.left - borderSpacing - launcherDp.hotseatQsbWidth / 2f;
+                float childCenter = (child.getLeft() + child.getRight()) / 2f;
+                float halfQsbIconWidthDiff =
+                        (launcherDp.hotseatQsbWidth - taskbarDp.taskbarIconSize) / 2f;
+                float scale = ((float) taskbarDp.taskbarIconSize)
+                        / launcherDp.hotseatQsbVisualHeight;
+                setter.addFloat(child, SCALE_PROPERTY, scale, 1f, interpolator);
+
+                float fromX = isRtl ? -halfQsbIconWidthDiff : halfQsbIconWidthDiff;
+                float toX = hotseatIconCenter - childCenter;
+                if (child instanceof Reorderable) {
+                    MultiTranslateDelegate mtd = ((Reorderable) child).getTranslateDelegate();
+
+                    setter.addFloat(mtd.getTranslationX(INDEX_TASKBAR_ALIGNMENT_ANIM),
+                            MULTI_PROPERTY_VALUE, fromX, toX, interpolator);
+                    setter.setFloat(mtd.getTranslationY(INDEX_TASKBAR_ALIGNMENT_ANIM),
+                            MULTI_PROPERTY_VALUE, mTaskbarBottomMargin, interpolator);
+                } else {
+                    setter.addFloat(child, VIEW_TRANSLATE_X, fromX, toX, interpolator);
+                    setter.setFloat(child, VIEW_TRANSLATE_Y, mTaskbarBottomMargin, interpolator);
+                }
+
+                if (mIsHotseatIconOnTopWhenAligned) {
+                    setter.addFloat(child, VIEW_ALPHA, 0f, 1f,
+                            isToHome
+                                    ? Interpolators.clampToProgress(LINEAR, 0f, 0.35f)
+                                    : mActivity.getDeviceProfile().isQsbInline
+                                            ? Interpolators.clampToProgress(LINEAR, 0f, 1f)
+                                            : Interpolators.clampToProgress(LINEAR, 0.84f, 1f));
+                }
+                setter.addOnFrameListener(animator -> AlphaUpdateListener.updateVisibility(child));
+                continue;
+            }
 
             int positionInHotseat;
-            if (FeatureFlags.ENABLE_ALL_APPS_IN_TASKBAR.get()
-                    && child == mTaskbarView.getAllAppsButtonView()) {
+            if (isAllAppsButton) {
                 // Note that there is no All Apps button in the hotseat, this position is only used
                 // as its convenient for animation purposes.
                 positionInHotseat = Utilities.isRtl(child.getResources())
-                        ? -1
-                        : mActivity.getDeviceProfile().numShownHotseatIcons;
-
-                if (!FeatureFlags.ENABLE_ALL_APPS_BUTTON_IN_HOTSEAT.get()) {
-                    setter.setViewAlpha(child, 0, LINEAR);
-                }
+                        ? taskbarDp.numShownHotseatIcons
+                        : -1;
             } else if (child.getTag() instanceof ItemInfo) {
                 positionInHotseat = ((ItemInfo) child.getTag()).screenId;
             } else {
@@ -275,11 +553,20 @@
             float hotseatIconCenter = hotseatPadding.left
                     + (hotseatCellSize + borderSpacing) * positionInHotseat
                     + hotseatCellSize / 2f;
-
             float childCenter = (child.getLeft() + child.getRight()) / 2f;
-            setter.setFloat(child, ICON_TRANSLATE_X, hotseatIconCenter - childCenter, LINEAR);
+            float toX = hotseatIconCenter - childCenter;
+            if (child instanceof Reorderable) {
+                MultiTranslateDelegate mtd = ((Reorderable) child).getTranslateDelegate();
 
-            setter.setFloat(child, SCALE_PROPERTY, scaleUp, LINEAR);
+                setter.setFloat(mtd.getTranslationX(INDEX_TASKBAR_ALIGNMENT_ANIM),
+                        MULTI_PROPERTY_VALUE, toX, interpolator);
+                setter.setFloat(mtd.getTranslationY(INDEX_TASKBAR_ALIGNMENT_ANIM),
+                        MULTI_PROPERTY_VALUE, mTaskbarBottomMargin, interpolator);
+            } else {
+                setter.setFloat(child, VIEW_TRANSLATE_X, toX, interpolator);
+                setter.setFloat(child, VIEW_TRANSLATE_Y, mTaskbarBottomMargin, interpolator);
+            }
+            setter.setFloat(child, SCALE_PROPERTY, scaleUp, interpolator);
         }
 
         AnimatorPlaybackController controller = setter.createPlaybackController();
@@ -288,12 +575,12 @@
     }
 
     public void onRotationChanged(DeviceProfile deviceProfile) {
-        if (mControllers.taskbarStashController.isInApp()) {
-            // We only translate on rotation when on home
+        if (!mControllers.uiController.isIconAlignedWithHotseat()) {
+            // We only translate on rotation when icon is aligned with hotseat
             return;
         }
         mActivity.setTaskbarWindowHeight(
-                deviceProfile.taskbarSize + deviceProfile.getTaskbarOffsetY());
+                deviceProfile.taskbarHeight + deviceProfile.getTaskbarOffsetY());
         mTaskbarNavButtonTranslationY.updateValue(-deviceProfile.getTaskbarOffsetY());
     }
 
@@ -326,9 +613,33 @@
     @Override
     public void dumpLogs(String prefix, PrintWriter pw) {
         pw.println(prefix + "TaskbarViewController:");
+
+        mTaskbarIconAlpha.dump(
+                prefix + "\t",
+                pw,
+                "mTaskbarIconAlpha",
+                "ALPHA_INDEX_HOME",
+                "ALPHA_INDEX_KEYGUARD",
+                "ALPHA_INDEX_STASH",
+                "ALPHA_INDEX_RECENTS_DISABLED",
+                "ALPHA_INDEX_NOTIFICATION_EXPANDED",
+                "ALPHA_INDEX_ASSISTANT_INVOKED",
+                "ALPHA_INDEX_IME_BUTTON_NAV",
+                "ALPHA_INDEX_SMALL_SCREEN");
+
         mModelCallbacks.dumpLogs(prefix + "\t", pw);
     }
 
+    /** Called when there's a change in running apps to update the UI. */
+    public void commitRunningAppsToUI() {
+        mModelCallbacks.commitRunningAppsToUI();
+    }
+
+    /** Call TaskbarModelCallbacks to update running apps. */
+    public void updateRunningApps() {
+        mModelCallbacks.updateRunningApps();
+    }
+
     /**
      * Callbacks for {@link TaskbarView} to interact with its controller.
      */
@@ -345,7 +656,14 @@
         public View.OnClickListener getAllAppsButtonClickListener() {
             return v -> {
                 mActivity.getStatsLogManager().logger().log(LAUNCHER_TASKBAR_ALLAPPS_BUTTON_TAP);
-                mControllers.taskbarAllAppsController.show();
+                mControllers.taskbarAllAppsController.toggle();
+            };
+        }
+
+        public View.OnLongClickListener getTaskbarDividerLongClickListener() {
+            return v -> {
+                mControllers.taskbarPinningController.showPinningView(v);
+                return true;
             };
         }
 
@@ -361,6 +679,7 @@
         /**
          * Get the first chance to handle TaskbarView#onTouchEvent, and return whether we want to
          * consume the touch so TaskbarView treats it as an ACTION_CANCEL.
+         * TODO(b/270395798): We can remove this entirely once we remove the Transient Taskbar flag.
          */
         public boolean onTouchEvent(MotionEvent motionEvent) {
             final float x = motionEvent.getRawX();
@@ -389,33 +708,15 @@
                     }
                     break;
             }
+
             return false;
         }
+
+        /**
+         * Notifies launcher to update icon alignment.
+         */
+        public void notifyIconLayoutBoundsChanged() {
+            mControllers.uiController.onIconLayoutBoundsChanged();
+        }
     }
-
-    public static final FloatProperty<View> ICON_TRANSLATE_X =
-            new FloatProperty<View>("taskbarAligmentTranslateX") {
-
-                @Override
-                public void setValue(View view, float v) {
-                    if (view instanceof BubbleTextView) {
-                        ((BubbleTextView) view).setTranslationXForTaskbarAlignmentAnimation(v);
-                    } else if (view instanceof FolderIcon) {
-                        ((FolderIcon) view).setTranslationForTaskbarAlignmentAnimation(v);
-                    } else {
-                        view.setTranslationX(v);
-                    }
-                }
-
-                @Override
-                public Float get(View view) {
-                    if (view instanceof BubbleTextView) {
-                        return ((BubbleTextView) view)
-                                .getTranslationXForTaskbarAlignmentAnimation();
-                    } else if (view instanceof FolderIcon) {
-                        return ((FolderIcon) view).getTranslationXForTaskbarAlignmentAnimation();
-                    }
-                    return view.getTranslationX();
-                }
-            };
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/Utilities.java b/quickstep/src/com/android/launcher3/taskbar/Utilities.java
index fda6453..47d6684 100644
--- a/quickstep/src/com/android/launcher3/taskbar/Utilities.java
+++ b/quickstep/src/com/android/launcher3/taskbar/Utilities.java
@@ -16,8 +16,6 @@
 
 package com.android.launcher3.taskbar;
 
-import java.util.StringJoiner;
-
 /**
  * Various utilities shared amongst the Taskbar's classes.
  */
@@ -25,9 +23,17 @@
 
     private Utilities() {}
 
-    static void appendFlag(StringJoiner str, int flags, int flag, String flagName) {
-        if ((flags & flag) != 0) {
-            str.add(flagName);
-        }
+    /**
+     * Sets drag, long-click, and split selection behavior on 1P and 3P launchers with Taskbar
+     */
+    static void setOverviewDragState(TaskbarControllers controllers,
+            boolean disallowGlobalDrag, boolean disallowLongClick,
+            boolean allowInitialSplitSelection) {
+        controllers.taskbarDragController.setDisallowGlobalDrag(disallowGlobalDrag);
+        controllers.taskbarDragController.setDisallowLongClick(disallowLongClick);
+        controllers.taskbarAllAppsController.setDisallowGlobalDrag(disallowGlobalDrag);
+        controllers.taskbarAllAppsController.setDisallowLongClick(disallowLongClick);
+        controllers.taskbarPopupController.setAllowInitialSplitSelection(
+                allowInitialSplitSelection);
     }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/VoiceInteractionWindowController.kt b/quickstep/src/com/android/launcher3/taskbar/VoiceInteractionWindowController.kt
new file mode 100644
index 0000000..5eb240e
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/VoiceInteractionWindowController.kt
@@ -0,0 +1,223 @@
+/*
+ * 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.launcher3.taskbar
+
+import android.animation.AnimatorSet
+import android.graphics.Canvas
+import android.view.View
+import android.view.ViewTreeObserver
+import android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_REGION
+import android.view.WindowManager
+import android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
+import com.android.launcher3.util.DisplayController
+import com.android.launcher3.views.BaseDragLayer
+import com.android.systemui.animation.ViewRootSync
+import java.io.PrintWriter
+
+private const val TASKBAR_ICONS_FADE_DURATION = 300L
+private const val STASHED_HANDLE_FADE_DURATION = 180L
+private const val TEMP_BACKGROUND_WINDOW_TITLE = "VoiceInteractionTaskbarBackground"
+
+/**
+ * Controls Taskbar behavior while Voice Interaction Window (assistant) is showing. Specifically:
+ * - We always hide the taskbar icons or stashed handle, whichever is currently showing.
+ * - For persistent taskbar, we also move the taskbar background to a new window/layer
+ *   (TYPE_APPLICATION_OVERLAY) which is behind the assistant.
+ * - For transient taskbar, we hide the real taskbar background (if it's showing).
+ */
+class VoiceInteractionWindowController(val context: TaskbarActivityContext) :
+    TaskbarControllers.LoggableTaskbarController, TaskbarControllers.BackgroundRendererController {
+
+    private val isSeparateBackgroundEnabled = !DisplayController.isTransientTaskbar(context)
+    private val taskbarBackgroundRenderer = TaskbarBackgroundRenderer(context)
+    private val nonTouchableInsetsComputer =
+        ViewTreeObserver.OnComputeInternalInsetsListener {
+            it.touchableRegion.setEmpty()
+            it.setTouchableInsets(TOUCHABLE_INSETS_REGION)
+        }
+
+    // Initialized in init.
+    private lateinit var controllers: TaskbarControllers
+    // Only initialized if isSeparateBackgroundEnabled
+    private var separateWindowForTaskbarBackground: BaseDragLayer<TaskbarActivityContext>? = null
+    private var separateWindowLayoutParams: WindowManager.LayoutParams? = null
+
+    private var isVoiceInteractionWindowVisible: Boolean = false
+    private var pendingAttachedToWindowListener: View.OnAttachStateChangeListener? = null
+
+    fun init(controllers: TaskbarControllers) {
+        this.controllers = controllers
+
+        if (!isSeparateBackgroundEnabled) {
+            return
+        }
+
+        separateWindowForTaskbarBackground =
+            object : BaseDragLayer<TaskbarActivityContext>(context, null, 0) {
+                override fun recreateControllers() {
+                    mControllers = emptyArray()
+                }
+
+                override fun draw(canvas: Canvas) {
+                    super.draw(canvas)
+                    if (controllers.taskbarStashController.isTaskbarVisibleAndNotStashing) {
+                        taskbarBackgroundRenderer.draw(canvas)
+                    }
+                }
+
+                override fun onAttachedToWindow() {
+                    super.onAttachedToWindow()
+                    viewTreeObserver.addOnComputeInternalInsetsListener(nonTouchableInsetsComputer)
+                }
+
+                override fun onDetachedFromWindow() {
+                    super.onDetachedFromWindow()
+                    viewTreeObserver.removeOnComputeInternalInsetsListener(
+                        nonTouchableInsetsComputer
+                    )
+                }
+            }
+        separateWindowForTaskbarBackground?.recreateControllers()
+        separateWindowForTaskbarBackground?.setWillNotDraw(false)
+
+        separateWindowLayoutParams =
+            context.createDefaultWindowLayoutParams(
+                TYPE_APPLICATION_OVERLAY,
+                TEMP_BACKGROUND_WINDOW_TITLE
+            )
+        separateWindowLayoutParams?.isSystemApplicationOverlay = true
+    }
+
+    fun onDestroy() {
+        setIsVoiceInteractionWindowVisible(visible = false, skipAnim = true)
+        separateWindowForTaskbarBackground?.removeOnAttachStateChangeListener(
+            pendingAttachedToWindowListener
+        )
+    }
+
+    fun setIsVoiceInteractionWindowVisible(visible: Boolean, skipAnim: Boolean) {
+        if (isVoiceInteractionWindowVisible == visible) {
+            return
+        }
+        isVoiceInteractionWindowVisible = visible
+
+        // Fade out taskbar icons and stashed handle.
+        val taskbarIconAlpha = if (isVoiceInteractionWindowVisible) 0f else 1f
+        val fadeTaskbarIcons =
+            controllers.taskbarViewController.taskbarIconAlpha
+                .get(TaskbarViewController.ALPHA_INDEX_ASSISTANT_INVOKED)
+                .animateToValue(taskbarIconAlpha)
+                .setDuration(TASKBAR_ICONS_FADE_DURATION)
+        val fadeStashedHandle =
+            controllers.stashedHandleViewController.stashedHandleAlpha
+                .get(StashedHandleViewController.ALPHA_INDEX_ASSISTANT_INVOKED)
+                .animateToValue(taskbarIconAlpha)
+                .setDuration(STASHED_HANDLE_FADE_DURATION)
+        val animSet = AnimatorSet()
+        animSet.play(fadeTaskbarIcons)
+        animSet.play(fadeStashedHandle)
+        if (!isSeparateBackgroundEnabled) {
+            val fadeTaskbarBackground =
+                controllers.taskbarDragLayerController.assistantBgTaskbar
+                    .animateToValue(taskbarIconAlpha)
+                    .setDuration(TASKBAR_ICONS_FADE_DURATION)
+            animSet.play(fadeTaskbarBackground)
+        }
+        animSet.start()
+        if (skipAnim) {
+            animSet.end()
+        }
+
+        if (isSeparateBackgroundEnabled) {
+            moveTaskbarBackgroundToAppropriateLayer(skipAnim)
+        }
+    }
+
+    /**
+     * Either:
+     *
+     * Hides the TaskbarDragLayer background and creates a new window to draw just that background.
+     *
+     * OR
+     *
+     * Removes the temporary window and show the TaskbarDragLayer background again.
+     */
+    private fun moveTaskbarBackgroundToAppropriateLayer(skipAnim: Boolean) {
+        val moveToLowerLayer = isVoiceInteractionWindowVisible
+        val onWindowsSynchronized =
+            if (moveToLowerLayer) {
+                // First add the temporary window, then hide the overlapping taskbar background.
+                context.addWindowView(
+                    separateWindowForTaskbarBackground,
+                    separateWindowLayoutParams
+                );
+                { controllers.taskbarDragLayerController.setIsBackgroundDrawnElsewhere(true) }
+            } else {
+                // First reapply the original taskbar background, then remove the temporary window.
+                controllers.taskbarDragLayerController.setIsBackgroundDrawnElsewhere(false);
+                { context.removeWindowView(separateWindowForTaskbarBackground) }
+            }
+
+        if (skipAnim) {
+            onWindowsSynchronized()
+        } else {
+            separateWindowForTaskbarBackground?.runWhenAttachedToWindow {
+                ViewRootSync.synchronizeNextDraw(
+                    separateWindowForTaskbarBackground!!,
+                    context.dragLayer,
+                    onWindowsSynchronized
+                )
+            }
+        }
+    }
+
+    private fun View.runWhenAttachedToWindow(onAttachedToWindow: () -> Unit) {
+        if (isAttachedToWindow) {
+            onAttachedToWindow()
+            return
+        }
+        removeOnAttachStateChangeListener(pendingAttachedToWindowListener)
+        pendingAttachedToWindowListener =
+            object : View.OnAttachStateChangeListener {
+                override fun onViewAttachedToWindow(v: View?) {
+                    onAttachedToWindow()
+                    removeOnAttachStateChangeListener(this)
+                    pendingAttachedToWindowListener = null
+                }
+
+                override fun onViewDetachedFromWindow(v: View?) {}
+            }
+        addOnAttachStateChangeListener(pendingAttachedToWindowListener)
+    }
+
+    override fun setCornerRoundness(cornerRoundness: Float) {
+        if (!isSeparateBackgroundEnabled) {
+            return
+        }
+        taskbarBackgroundRenderer.setCornerRoundness(cornerRoundness)
+        separateWindowForTaskbarBackground?.invalidate()
+    }
+
+    override fun dumpLogs(prefix: String, pw: PrintWriter) {
+        pw.println(prefix + "VoiceInteractionWindowController:")
+        pw.println("$prefix\tisSeparateBackgroundEnabled=$isSeparateBackgroundEnabled")
+        pw.println("$prefix\tisVoiceInteractionWindowVisible=$isVoiceInteractionWindowVisible")
+        pw.println(
+            "$prefix\tisSeparateTaskbarBackgroundAttachedToWindow=" +
+                "${separateWindowForTaskbarBackground?.isAttachedToWindow}"
+        )
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsContainerView.java b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsContainerView.java
index 51fa4d9..b4b83f6 100644
--- a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsContainerView.java
+++ b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsContainerView.java
@@ -17,17 +17,22 @@
 
 import android.content.Context;
 import android.util.AttributeSet;
-import android.view.WindowInsets;
+import android.view.View;
 
+import androidx.annotation.Nullable;
+
+import com.android.launcher3.R;
 import com.android.launcher3.allapps.ActivityAllAppsContainerView;
-import com.android.launcher3.allapps.AllAppsGridAdapter;
-import com.android.launcher3.allapps.AlphabeticalAppsList;
-import com.android.launcher3.allapps.BaseAdapterProvider;
-import com.android.launcher3.allapps.BaseAllAppsAdapter;
+import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.taskbar.overlay.TaskbarOverlayContext;
+
+import java.util.Optional;
 
 /** All apps container accessible from taskbar. */
 public class TaskbarAllAppsContainerView extends
-        ActivityAllAppsContainerView<TaskbarAllAppsContext> {
+        ActivityAllAppsContainerView<TaskbarOverlayContext> {
+
+    private @Nullable OnInvalidateHeaderListener mOnInvalidateHeaderListener;
 
     public TaskbarAllAppsContainerView(Context context, AttributeSet attrs) {
         this(context, attrs, 0);
@@ -37,17 +42,46 @@
         super(context, attrs, defStyleAttr);
     }
 
-    @Override
-    public WindowInsets onApplyWindowInsets(WindowInsets insets) {
-        setInsets(insets.getInsets(WindowInsets.Type.systemBars()).toRect());
-        return super.onApplyWindowInsets(insets);
+    void setOnInvalidateHeaderListener(OnInvalidateHeaderListener onInvalidateHeaderListener) {
+        mOnInvalidateHeaderListener = onInvalidateHeaderListener;
     }
 
     @Override
-    protected BaseAllAppsAdapter<TaskbarAllAppsContext> createAdapter(
-            AlphabeticalAppsList<TaskbarAllAppsContext> appsList,
-            BaseAdapterProvider[] adapterProviders) {
-        return new AllAppsGridAdapter<>(mActivityContext, getLayoutInflater(), appsList,
-                adapterProviders);
+    protected View inflateSearchBox() {
+        if (isSearchSupported()) {
+            return super.inflateSearchBox();
+        }
+
+        // Remove top padding of header, since we do not have any search
+        mHeader.setPadding(mHeader.getPaddingLeft(), 0,
+                mHeader.getPaddingRight(), mHeader.getPaddingBottom());
+
+        TaskbarAllAppsFallbackSearchContainer searchView =
+                new TaskbarAllAppsFallbackSearchContainer(getContext(), null);
+        searchView.setId(R.id.search_container_all_apps);
+        searchView.setVisibility(GONE);
+        return searchView;
+    }
+
+    @Override
+    public void invalidateHeader() {
+        super.invalidateHeader();
+        Optional.ofNullable(mOnInvalidateHeaderListener).ifPresent(
+                OnInvalidateHeaderListener::onInvalidateHeader);
+    }
+
+    @Override
+    protected boolean isSearchSupported() {
+        return FeatureFlags.ENABLE_ALL_APPS_SEARCH_IN_TASKBAR.get();
+    }
+
+    @Override
+    public boolean isInAllApps() {
+        // All apps is always open
+        return true;
+    }
+
+    interface OnInvalidateHeaderListener {
+        void onInvalidateHeader();
     }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsContext.java b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsContext.java
deleted file mode 100644
index e2f7522..0000000
--- a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsContext.java
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * 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.launcher3.taskbar.allapps;
-
-import static android.view.KeyEvent.ACTION_UP;
-import static android.view.KeyEvent.KEYCODE_BACK;
-import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
-
-import static com.android.systemui.shared.system.ViewTreeObserverWrapper.InsetsInfo.TOUCHABLE_INSETS_REGION;
-
-import android.content.Context;
-import android.graphics.Insets;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.WindowInsets;
-
-import com.android.launcher3.AbstractFloatingView;
-import com.android.launcher3.DeviceProfile;
-import com.android.launcher3.R;
-import com.android.launcher3.Utilities;
-import com.android.launcher3.allapps.ActivityAllAppsContainerView;
-import com.android.launcher3.allapps.search.DefaultSearchAdapterProvider;
-import com.android.launcher3.allapps.search.SearchAdapterProvider;
-import com.android.launcher3.dot.DotInfo;
-import com.android.launcher3.model.data.ItemInfo;
-import com.android.launcher3.popup.PopupDataProvider;
-import com.android.launcher3.taskbar.BaseTaskbarContext;
-import com.android.launcher3.taskbar.TaskbarActivityContext;
-import com.android.launcher3.taskbar.TaskbarDragController;
-import com.android.launcher3.taskbar.TaskbarStashController;
-import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
-import com.android.launcher3.util.OnboardingPrefs;
-import com.android.launcher3.util.TouchController;
-import com.android.launcher3.views.BaseDragLayer;
-import com.android.systemui.shared.system.ViewTreeObserverWrapper;
-import com.android.systemui.shared.system.ViewTreeObserverWrapper.InsetsInfo;
-import com.android.systemui.shared.system.ViewTreeObserverWrapper.OnComputeInsetsListener;
-
-/**
- * Window context for the taskbar all apps overlay.
- * <p>
- * All apps has its own window and needs a window context. Some properties are delegated to the
- * {@link TaskbarActivityContext} such as {@link DeviceProfile} and {@link PopupDataProvider}.
- */
-class TaskbarAllAppsContext extends BaseTaskbarContext {
-    private final TaskbarActivityContext mTaskbarContext;
-    private final OnboardingPrefs<TaskbarAllAppsContext> mOnboardingPrefs;
-
-    private final TaskbarAllAppsController mWindowController;
-    private final TaskbarAllAppsViewController mAllAppsViewController;
-    private final TaskbarDragController mDragController;
-    private final TaskbarAllAppsDragLayer mDragLayer;
-    private final TaskbarAllAppsContainerView mAppsView;
-
-    // We automatically stash taskbar when all apps is opened in gesture navigation mode.
-    private final boolean mWillTaskbarBeVisuallyStashed;
-    private final int mStashedTaskbarHeight;
-
-    TaskbarAllAppsContext(
-            TaskbarActivityContext taskbarContext,
-            TaskbarAllAppsController windowController,
-            TaskbarStashController taskbarStashController) {
-        super(taskbarContext.createWindowContext(TYPE_APPLICATION_OVERLAY, null));
-        mTaskbarContext = taskbarContext;
-        mWindowController = windowController;
-        mDragController = new TaskbarDragController(this);
-        mOnboardingPrefs = new OnboardingPrefs<>(this, Utilities.getPrefs(this));
-
-        mDragLayer = new TaskbarAllAppsDragLayer(this);
-        TaskbarAllAppsSlideInView slideInView = (TaskbarAllAppsSlideInView) mLayoutInflater.inflate(
-                R.layout.taskbar_all_apps, mDragLayer, false);
-        mAllAppsViewController = new TaskbarAllAppsViewController(
-                this,
-                slideInView,
-                windowController,
-                taskbarStashController);
-        mAppsView = slideInView.getAppsView();
-
-        mWillTaskbarBeVisuallyStashed = taskbarStashController.supportsVisualStashing();
-        mStashedTaskbarHeight = taskbarStashController.getStashedHeight();
-    }
-
-    TaskbarAllAppsViewController getAllAppsViewController() {
-        return mAllAppsViewController;
-    }
-
-    @Override
-    public DeviceProfile getDeviceProfile() {
-        return mWindowController.getDeviceProfile();
-    }
-
-    @Override
-    public TaskbarDragController getDragController() {
-        return mDragController;
-    }
-
-    @Override
-    public TaskbarAllAppsDragLayer getDragLayer() {
-        return mDragLayer;
-    }
-
-    @Override
-    public TaskbarAllAppsContainerView getAppsView() {
-        return mAppsView;
-    }
-
-    @Override
-    public OnboardingPrefs<TaskbarAllAppsContext> getOnboardingPrefs() {
-        return mOnboardingPrefs;
-    }
-
-    @Override
-    public boolean isBindingItems() {
-        return mTaskbarContext.isBindingItems();
-    }
-
-    @Override
-    public View.OnClickListener getItemOnClickListener() {
-        return mTaskbarContext.getItemOnClickListener();
-    }
-
-    @Override
-    public PopupDataProvider getPopupDataProvider() {
-        return mTaskbarContext.getPopupDataProvider();
-    }
-
-    @Override
-    public DotInfo getDotInfoForItem(ItemInfo info) {
-        return mTaskbarContext.getDotInfoForItem(info);
-    }
-
-    @Override
-    public void onDragStart() {}
-
-    @Override
-    public void onDragEnd() {
-        mWindowController.maybeCloseWindow();
-    }
-
-    @Override
-    public void onPopupVisibilityChanged(boolean isVisible) {}
-
-    @Override
-    public SearchAdapterProvider<?> createSearchAdapterProvider(
-            ActivityAllAppsContainerView<?> appsView) {
-        return new DefaultSearchAdapterProvider(this);
-    }
-
-    /** Root drag layer for this context. */
-    private static class TaskbarAllAppsDragLayer extends
-            BaseDragLayer<TaskbarAllAppsContext> implements OnComputeInsetsListener {
-
-        private TaskbarAllAppsDragLayer(Context context) {
-            super(context, null, 1);
-            setClipChildren(false);
-            recreateControllers();
-        }
-
-        @Override
-        protected void onAttachedToWindow() {
-            super.onAttachedToWindow();
-            ViewTreeObserverWrapper.addOnComputeInsetsListener(
-                    getViewTreeObserver(), this);
-        }
-
-        @Override
-        protected void onDetachedFromWindow() {
-            super.onDetachedFromWindow();
-            ViewTreeObserverWrapper.removeOnComputeInsetsListener(this);
-        }
-
-        @Override
-        public void recreateControllers() {
-            mControllers = new TouchController[]{mActivity.mDragController};
-        }
-
-        @Override
-        public boolean dispatchTouchEvent(MotionEvent ev) {
-            TestLogging.recordMotionEvent(TestProtocol.SEQUENCE_MAIN, "Touch event", ev);
-            return super.dispatchTouchEvent(ev);
-        }
-
-        @Override
-        public boolean dispatchKeyEvent(KeyEvent event) {
-            if (event.getAction() == ACTION_UP && event.getKeyCode() == KEYCODE_BACK) {
-                AbstractFloatingView topView = AbstractFloatingView.getTopOpenView(mActivity);
-                if (topView != null && topView.onBackPressed()) {
-                    return true;
-                }
-            }
-            return super.dispatchKeyEvent(event);
-        }
-
-        @Override
-        public void onComputeInsets(InsetsInfo inoutInfo) {
-            if (mActivity.mDragController.isSystemDragInProgress()) {
-                inoutInfo.touchableRegion.setEmpty();
-                inoutInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION);
-            }
-        }
-
-        @Override
-        public WindowInsets onApplyWindowInsets(WindowInsets insets) {
-            return updateInsetsDueToStashing(insets);
-        }
-
-        /**
-         * Taskbar automatically stashes when opening all apps, but we don't report the insets as
-         * changing to avoid moving the underlying app. But internally, the apps view should still
-         * layout according to the stashed insets rather than the unstashed insets. So this method
-         * does two things:
-         * 1) Sets navigationBars bottom inset to stashedHeight.
-         * 2) Sets tappableInsets bottom inset to 0.
-         */
-        private WindowInsets updateInsetsDueToStashing(WindowInsets oldInsets) {
-            if (!mActivity.mWillTaskbarBeVisuallyStashed) {
-                return oldInsets;
-            }
-            WindowInsets.Builder updatedInsetsBuilder = new WindowInsets.Builder(oldInsets);
-
-            Insets oldNavInsets = oldInsets.getInsets(WindowInsets.Type.navigationBars());
-            Insets newNavInsets = Insets.of(oldNavInsets.left, oldNavInsets.top, oldNavInsets.right,
-                    mActivity.mStashedTaskbarHeight);
-            updatedInsetsBuilder.setInsets(WindowInsets.Type.navigationBars(), newNavInsets);
-
-            Insets oldTappableInsets = oldInsets.getInsets(WindowInsets.Type.tappableElement());
-            Insets newTappableInsets = Insets.of(oldTappableInsets.left, oldTappableInsets.top,
-                    oldTappableInsets.right, 0);
-            updatedInsetsBuilder.setInsets(WindowInsets.Type.tappableElement(), newTappableInsets);
-
-            return updatedInsetsBuilder.build();
-        }
-    }
-}
diff --git a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java
index 6fd98db..e0a502b 100644
--- a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java
@@ -15,34 +15,21 @@
  */
 package com.android.launcher3.taskbar.allapps;
 
-import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
-import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
-
-import static com.android.launcher3.AbstractFloatingView.TYPE_ALL;
-import static com.android.launcher3.AbstractFloatingView.TYPE_REBIND_SAFE;
-
-import android.content.Context;
-import android.graphics.PixelFormat;
-import android.view.Gravity;
-import android.view.MotionEvent;
-import android.view.WindowManager;
-import android.view.WindowManager.LayoutParams;
-
 import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
 
-import com.android.launcher3.AbstractFloatingView;
-import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.R;
 import com.android.launcher3.appprediction.PredictionRowView;
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.model.data.AppInfo;
 import com.android.launcher3.model.data.ItemInfo;
-import com.android.launcher3.taskbar.TaskbarActivityContext;
 import com.android.launcher3.taskbar.TaskbarControllers;
-import com.android.systemui.shared.system.TaskStackChangeListener;
-import com.android.systemui.shared.system.TaskStackChangeListeners;
+import com.android.launcher3.taskbar.overlay.TaskbarOverlayContext;
+import com.android.launcher3.util.PackageUserKey;
 
+import java.util.Collections;
 import java.util.List;
-import java.util.Optional;
+import java.util.Map;
+import java.util.function.Predicate;
 
 /**
  * Handles the all apps overlay window initialization, updates, and its data.
@@ -57,41 +44,21 @@
  */
 public final class TaskbarAllAppsController {
 
-    private static final String WINDOW_TITLE = "Taskbar All Apps";
-
-    private final TaskbarActivityContext mTaskbarContext;
-    private final TaskbarAllAppsProxyView mProxyView;
-    private final LayoutParams mLayoutParams;
-
-    private final TaskStackChangeListener mTaskStackListener = new TaskStackChangeListener() {
-        @Override
-        public void onTaskStackChanged() {
-            mProxyView.close(false);
-        }
-    };
-
-    private DeviceProfile mDeviceProfile;
     private TaskbarControllers mControllers;
-    /** Window context for all apps if it is open. */
-    private @Nullable TaskbarAllAppsContext mAllAppsContext;
+    private @Nullable TaskbarAllAppsSlideInView mSlideInView;
+    private @Nullable TaskbarAllAppsContainerView mAppsView;
 
     // Application data models.
     private AppInfo[] mApps;
     private int mAppsModelFlags;
     private List<ItemInfo> mPredictedApps;
+    private boolean mDisallowGlobalDrag;
+    private boolean mDisallowLongClick;
 
-    public TaskbarAllAppsController(TaskbarActivityContext context, DeviceProfile dp) {
-        mDeviceProfile = dp;
-        mTaskbarContext = context;
-        mProxyView = new TaskbarAllAppsProxyView(mTaskbarContext);
-        mLayoutParams = createLayoutParams();
-    }
+    private Map<PackageUserKey, Integer> mPackageUserKeytoUidMap = Collections.emptyMap();
 
     /** Initialize the controller. */
     public void init(TaskbarControllers controllers, boolean allAppsVisible) {
-        if (!FeatureFlags.ENABLE_ALL_APPS_IN_TASKBAR.get()) {
-            return;
-        }
         mControllers = controllers;
 
         /*
@@ -104,154 +71,97 @@
     }
 
     /** Updates the current {@link AppInfo} instances. */
-    public void setApps(AppInfo[] apps, int flags) {
-        if (!FeatureFlags.ENABLE_ALL_APPS_IN_TASKBAR.get()) {
-            return;
-        }
-
+    public void setApps(AppInfo[] apps, int flags, Map<PackageUserKey, Integer> map) {
         mApps = apps;
         mAppsModelFlags = flags;
-        if (mAllAppsContext != null) {
-            mAllAppsContext.getAppsView().getAppsStore().setApps(mApps, mAppsModelFlags);
+        mPackageUserKeytoUidMap = map;
+        if (mAppsView != null) {
+            mAppsView.getAppsStore().setApps(mApps, mAppsModelFlags, mPackageUserKeytoUidMap);
         }
     }
 
+    public void setDisallowGlobalDrag(boolean disableDragForOverviewState) {
+        mDisallowGlobalDrag = disableDragForOverviewState;
+    }
+
+    public void setDisallowLongClick(boolean disallowLongClick) {
+        mDisallowLongClick = disallowLongClick;
+    }
+
     /** Updates the current predictions. */
     public void setPredictedApps(List<ItemInfo> predictedApps) {
-        if (!FeatureFlags.ENABLE_ALL_APPS_IN_TASKBAR.get()) {
-            return;
-        }
-
         mPredictedApps = predictedApps;
-        if (mAllAppsContext != null) {
-            mAllAppsContext.getAppsView().getFloatingHeaderView()
+        if (mAppsView != null) {
+            mAppsView.getFloatingHeaderView()
                     .findFixedRowByType(PredictionRowView.class)
                     .setPredictedApps(mPredictedApps);
         }
     }
 
-    /** Opens the {@link TaskbarAllAppsContainerView} in a new window. */
-    public void show() {
-        show(true);
+    /** Updates the current notification dots. */
+    public void updateNotificationDots(Predicate<PackageUserKey> updatedDots) {
+        if (mAppsView != null) {
+            mAppsView.getAppsStore().updateNotificationDots(updatedDots);
+        }
+    }
+
+    /** Toggles visibility of {@link TaskbarAllAppsContainerView} in the overlay window. */
+    public void toggle() {
+        if (isOpen()) {
+            mSlideInView.close(true);
+        } else {
+            show(true);
+        }
+    }
+
+    /** Returns {@code true} if All Apps is open. */
+    public boolean isOpen() {
+        return mSlideInView != null && mSlideInView.isOpen();
     }
 
     private void show(boolean animate) {
-        if (mProxyView.isOpen()) {
+        if (mAppsView != null) {
             return;
         }
-        mProxyView.show();
         // mControllers and getSharedState should never be null here. Do not handle null-pointer
         // to catch invalid states.
         mControllers.getSharedState().allAppsVisible = true;
 
-        mAllAppsContext = new TaskbarAllAppsContext(mTaskbarContext,
-                this,
-                mControllers.taskbarStashController);
-        mAllAppsContext.getDragController().init(mControllers);
-        TaskStackChangeListeners.getInstance().registerTaskStackListener(mTaskStackListener);
-        Optional.ofNullable(mAllAppsContext.getSystemService(WindowManager.class))
-                .ifPresent(m -> m.addView(mAllAppsContext.getDragLayer(), mLayoutParams));
+        TaskbarOverlayContext overlayContext =
+                mControllers.taskbarOverlayController.requestWindow();
+        mSlideInView = (TaskbarAllAppsSlideInView) overlayContext.getLayoutInflater().inflate(
+                R.layout.taskbar_all_apps, overlayContext.getDragLayer(), false);
+        mSlideInView.addOnCloseListener(() -> {
+            mControllers.getSharedState().allAppsVisible = false;
+            mSlideInView = null;
+            mAppsView = null;
+        });
+        TaskbarAllAppsViewController viewController = new TaskbarAllAppsViewController(
+                overlayContext, mSlideInView, mControllers);
 
-        mAllAppsContext.getAppsView().getAppsStore().setApps(mApps, mAppsModelFlags);
-        mAllAppsContext.getAppsView().getFloatingHeaderView()
+        viewController.show(animate);
+        mAppsView = overlayContext.getAppsView();
+        mAppsView.getAppsStore().setApps(mApps, mAppsModelFlags, mPackageUserKeytoUidMap);
+        mAppsView.getFloatingHeaderView()
                 .findFixedRowByType(PredictionRowView.class)
                 .setPredictedApps(mPredictedApps);
-        mAllAppsContext.getAllAppsViewController().show(animate);
+        // 1 alternative that would be more work:
+        // Create a shared drag layer between taskbar and taskbarAllApps so that when dragging
+        // starts and taskbarAllApps can close, but the drag layer that the view is being dragged in
+        // doesn't also close
+        overlayContext.getDragController().setDisallowGlobalDrag(mDisallowGlobalDrag);
+        overlayContext.getDragController().setDisallowLongClick(mDisallowLongClick);
     }
 
-    /** Closes the {@link TaskbarAllAppsContainerView}. */
-    public void hide() {
-        mProxyView.close(true);
+    @VisibleForTesting
+    public int getTaskbarAllAppsTopPadding() {
+        // Allow null-pointer since this should only be null if the apps view is not showing.
+        return mAppsView.getActiveRecyclerView().getClipBounds().top;
     }
 
-    /**
-     * Removes the all apps window from the hierarchy, if all floating views are closed and there is
-     * no system drag operation in progress.
-     * <p>
-     * This method should be called after an exit animation finishes, if applicable.
-     */
-    void maybeCloseWindow() {
-        if (AbstractFloatingView.getOpenView(mAllAppsContext, TYPE_ALL) != null
-                || mAllAppsContext.getDragController().isSystemDragInProgress()) {
-            return;
-        }
-        mProxyView.close(false);
-        // mControllers and getSharedState should never be null here. Do not handle null-pointer
-        // to catch invalid states.
-        mControllers.getSharedState().allAppsVisible = false;
-        onDestroy();
-    }
-
-    /** Destroys the controller and any All Apps window if present. */
-    public void onDestroy() {
-        TaskStackChangeListeners.getInstance().unregisterTaskStackListener(mTaskStackListener);
-        Optional.ofNullable(mAllAppsContext)
-                .map(c -> c.getSystemService(WindowManager.class))
-                .ifPresent(m -> m.removeView(mAllAppsContext.getDragLayer()));
-        mAllAppsContext = null;
-    }
-
-    /** Updates {@link DeviceProfile} instance for Taskbar's All Apps window. */
-    public void updateDeviceProfile(DeviceProfile dp) {
-        mDeviceProfile = dp;
-        Optional.ofNullable(mAllAppsContext).ifPresent(c -> {
-            AbstractFloatingView.closeAllOpenViewsExcept(c, false, TYPE_REBIND_SAFE);
-            c.dispatchDeviceProfileChanged();
-        });
-    }
-
-    DeviceProfile getDeviceProfile() {
-        return mDeviceProfile;
-    }
-
-    private LayoutParams createLayoutParams() {
-        LayoutParams layoutParams = new LayoutParams(
-                TYPE_APPLICATION_OVERLAY,
-                0,
-                PixelFormat.TRANSLUCENT);
-        layoutParams.setTitle(WINDOW_TITLE);
-        layoutParams.gravity = Gravity.BOTTOM;
-        layoutParams.packageName = mTaskbarContext.getPackageName();
-        layoutParams.setFitInsetsTypes(0); // Handled by container view.
-        layoutParams.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
-        layoutParams.setSystemApplicationOverlay(true);
-        return layoutParams;
-    }
-
-    /**
-     * Proxy view connecting taskbar drag layer to the all apps window.
-     * <p>
-     * The all apps view is in a separate window and has its own drag layer, but this proxy lets it
-     * behave as though its in the taskbar drag layer. For instance, when the taskbar closes all
-     * {@link AbstractFloatingView} instances, the all apps window will also close.
-     */
-    private class TaskbarAllAppsProxyView extends AbstractFloatingView {
-
-        private TaskbarAllAppsProxyView(Context context) {
-            super(context, null);
-        }
-
-        private void show() {
-            mIsOpen = true;
-            mTaskbarContext.getDragLayer().addView(this);
-        }
-
-        @Override
-        protected void handleClose(boolean animate) {
-            mTaskbarContext.getDragLayer().removeView(this);
-            Optional.ofNullable(mAllAppsContext)
-                    .map(TaskbarAllAppsContext::getAllAppsViewController)
-                    .ifPresent(v -> v.close(animate));
-        }
-
-        @Override
-        protected boolean isOfType(int type) {
-            return (type & TYPE_TASKBAR_ALL_APPS) != 0;
-        }
-
-        @Override
-        public boolean onControllerInterceptTouchEvent(MotionEvent ev) {
-            return false;
-        }
+    @VisibleForTesting
+    public int getTaskbarAllAppsScroll() {
+        // Allow null-pointer since this should only be null if the apps view is not showing.
+        return mAppsView.getActiveRecyclerView().computeVerticalScrollOffset();
     }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java
index c4837a0..cfa1027 100644
--- a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java
+++ b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsSlideInView.java
@@ -15,31 +15,34 @@
  */
 package com.android.launcher3.taskbar.allapps;
 
-import static com.android.launcher3.LauncherState.ALL_APPS;
-import static com.android.launcher3.anim.Interpolators.AGGRESSIVE_EASE;
-import static com.android.systemui.animation.Interpolators.EMPHASIZED_ACCELERATE;
+import static com.android.launcher3.anim.Interpolators.EMPHASIZED;
 
 import android.animation.PropertyValuesHolder;
 import android.content.Context;
+import android.graphics.Canvas;
 import android.graphics.Rect;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.animation.Interpolator;
+import android.window.OnBackInvokedDispatcher;
 
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Insettable;
 import com.android.launcher3.R;
+import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.taskbar.allapps.TaskbarAllAppsViewController.TaskbarAllAppsCallbacks;
+import com.android.launcher3.taskbar.overlay.TaskbarOverlayContext;
 import com.android.launcher3.views.AbstractSlideInView;
 
-import java.util.Optional;
-
 /** Wrapper for taskbar all apps with slide-in behavior. */
-public class TaskbarAllAppsSlideInView extends AbstractSlideInView<TaskbarAllAppsContext>
+public class TaskbarAllAppsSlideInView extends AbstractSlideInView<TaskbarOverlayContext>
         implements Insettable, DeviceProfile.OnDeviceProfileChangeListener {
     private TaskbarAllAppsContainerView mAppsView;
-    private OnCloseListener mOnCloseBeginListener;
     private float mShiftRange;
 
+    // Initialized in init.
+    private TaskbarAllAppsCallbacks mAllAppsCallbacks;
+
     public TaskbarAllAppsSlideInView(Context context, AttributeSet attrs) {
         this(context, attrs, 0);
     }
@@ -49,6 +52,10 @@
         super(context, attrs, defStyleAttr);
     }
 
+    void init(TaskbarAllAppsCallbacks callbacks) {
+        mAllAppsCallbacks = callbacks;
+    }
+
     /** Opens the all apps view. */
     void show(boolean animate) {
         if (mIsOpen || mOpenCloseAnimator.isRunning()) {
@@ -60,9 +67,8 @@
         if (animate) {
             mOpenCloseAnimator.setValues(
                     PropertyValuesHolder.ofFloat(TRANSLATION_SHIFT, TRANSLATION_SHIFT_OPENED));
-            mOpenCloseAnimator.setInterpolator(AGGRESSIVE_EASE);
-            mOpenCloseAnimator.setDuration(
-                    ALL_APPS.getTransitionDuration(mActivityContext, true /* isToState */)).start();
+            mOpenCloseAnimator.setInterpolator(EMPHASIZED);
+            mOpenCloseAnimator.setDuration(mAllAppsCallbacks.getOpenDuration()).start();
         } else {
             mTranslationShift = TRANSLATION_SHIFT_OPENED;
         }
@@ -73,21 +79,14 @@
         return mAppsView;
     }
 
-    /** Callback invoked when the view is beginning to close (e.g. close animation is started). */
-    void setOnCloseBeginListener(OnCloseListener onCloseBeginListener) {
-        mOnCloseBeginListener = onCloseBeginListener;
-    }
-
     @Override
     protected void handleClose(boolean animate) {
-        Optional.ofNullable(mOnCloseBeginListener).ifPresent(OnCloseListener::onSlideInViewClosed);
-        handleClose(animate,
-                ALL_APPS.getTransitionDuration(mActivityContext, false /* isToState */));
+        handleClose(animate, mAllAppsCallbacks.getCloseDuration());
     }
 
     @Override
     protected Interpolator getIdleInterpolator() {
-        return EMPHASIZED_ACCELERATE;
+        return EMPHASIZED;
     }
 
     @Override
@@ -101,10 +100,55 @@
         mAppsView = findViewById(R.id.apps_view);
         mContent = mAppsView;
 
+        // Setup header protection for search bar, if enabled.
+        if (FeatureFlags.ENABLE_ALL_APPS_SEARCH_IN_TASKBAR.get()) {
+            mAppsView.setOnInvalidateHeaderListener(this::invalidate);
+        }
+
         DeviceProfile dp = mActivityContext.getDeviceProfile();
         setShiftRange(dp.allAppsShiftRange);
+    }
 
+    @Override
+    protected void onAttachedToWindow() {
+        super.onAttachedToWindow();
         mActivityContext.addOnDeviceProfileChangeListener(this);
+        if (FeatureFlags.ENABLE_BACK_SWIPE_LAUNCHER_ANIMATION.get()) {
+            mAppsView.getAppsRecyclerViewContainer().setOutlineProvider(mViewOutlineProvider);
+            mAppsView.getAppsRecyclerViewContainer().setClipToOutline(true);
+            OnBackInvokedDispatcher dispatcher = findOnBackInvokedDispatcher();
+            if (dispatcher != null) {
+                dispatcher.registerOnBackInvokedCallback(
+                        OnBackInvokedDispatcher.PRIORITY_DEFAULT, this);
+            }
+        }
+    }
+
+    @Override
+    protected void onDetachedFromWindow() {
+        super.onDetachedFromWindow();
+        mActivityContext.removeOnDeviceProfileChangeListener(this);
+        if (FeatureFlags.ENABLE_BACK_SWIPE_LAUNCHER_ANIMATION.get()) {
+            mAppsView.getAppsRecyclerViewContainer().setOutlineProvider(null);
+            mAppsView.getAppsRecyclerViewContainer().setClipToOutline(false);
+            OnBackInvokedDispatcher dispatcher = findOnBackInvokedDispatcher();
+            if (dispatcher != null) {
+                dispatcher.unregisterOnBackInvokedCallback(this);
+            }
+        }
+    }
+
+    @Override
+    protected void dispatchDraw(Canvas canvas) {
+        mAppsView.drawOnScrimWithScale(canvas, mSlideInViewScale.value);
+        super.dispatchDraw(canvas);
+    }
+
+    @Override
+    protected void onScaleProgressChanged() {
+        super.onScaleProgressChanged();
+        mAppsView.setClipChildren(!mIsBackProgressing);
+        mAppsView.getAppsRecyclerViewContainer().setClipChildren(!mIsBackProgressing);
     }
 
     @Override
diff --git a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsViewController.java b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsViewController.java
index a39e872..01342af 100644
--- a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsViewController.java
@@ -15,14 +15,18 @@
  */
 package com.android.launcher3.taskbar.allapps;
 
-import static com.android.launcher3.LauncherState.ALL_APPS;
-import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_STASHED_IN_APP_ALL_APPS;
+import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_STASHED_IN_TASKBAR_ALL_APPS;
 import static com.android.launcher3.util.OnboardingPrefs.ALL_APPS_VISITED_COUNT;
 
 import com.android.launcher3.AbstractFloatingView;
 import com.android.launcher3.appprediction.AppsDividerView;
 import com.android.launcher3.appprediction.PredictionRowView;
+import com.android.launcher3.taskbar.NavbarButtonsViewController;
+import com.android.launcher3.taskbar.TaskbarControllers;
 import com.android.launcher3.taskbar.TaskbarStashController;
+import com.android.launcher3.taskbar.overlay.TaskbarOverlayContext;
+import com.android.launcher3.taskbar.overlay.TaskbarOverlayController;
+import com.android.launcher3.util.DisplayController;
 
 /**
  * Handles the {@link TaskbarAllAppsContainerView} behavior and synchronizes its transitions with
@@ -30,26 +34,29 @@
  */
 final class TaskbarAllAppsViewController {
 
-    private final TaskbarAllAppsContext mContext;
+    private final TaskbarOverlayContext mContext;
     private final TaskbarAllAppsSlideInView mSlideInView;
     private final TaskbarAllAppsContainerView mAppsView;
     private final TaskbarStashController mTaskbarStashController;
+    private final NavbarButtonsViewController mNavbarButtonsViewController;
+    private final TaskbarOverlayController mOverlayController;
 
     TaskbarAllAppsViewController(
-            TaskbarAllAppsContext context,
+            TaskbarOverlayContext context,
             TaskbarAllAppsSlideInView slideInView,
-            TaskbarAllAppsController windowController,
-            TaskbarStashController taskbarStashController) {
+            TaskbarControllers taskbarControllers) {
 
         mContext = context;
         mSlideInView = slideInView;
         mAppsView = mSlideInView.getAppsView();
-        mTaskbarStashController = taskbarStashController;
+        mTaskbarStashController = taskbarControllers.taskbarStashController;
+        mNavbarButtonsViewController = taskbarControllers.navbarButtonsViewController;
+        mOverlayController = taskbarControllers.taskbarOverlayController;
 
+        mSlideInView.init(new TaskbarAllAppsCallbacks());
         setUpIconLongClick();
         setUpAppDivider();
         setUpTaskbarStashing();
-        mSlideInView.addOnCloseListener(windowController::maybeCloseWindow);
     }
 
     /** Starts the {@link TaskbarAllAppsSlideInView} enter transition. */
@@ -80,15 +87,31 @@
     }
 
     private void setUpTaskbarStashing() {
-        mTaskbarStashController.updateStateForFlag(FLAG_STASHED_IN_APP_ALL_APPS, true);
-        mTaskbarStashController.applyState(
-                ALL_APPS.getTransitionDuration(mContext, true /* isToState */));
+        if (DisplayController.isTransientTaskbar(mContext)) {
+            mTaskbarStashController.updateStateForFlag(FLAG_STASHED_IN_TASKBAR_ALL_APPS, true);
+            mTaskbarStashController.applyState(mOverlayController.getOpenDuration());
+        }
+
+        mNavbarButtonsViewController.setSlideInViewVisible(true);
         mSlideInView.setOnCloseBeginListener(() -> {
+            mNavbarButtonsViewController.setSlideInViewVisible(false);
             AbstractFloatingView.closeOpenContainer(
                     mContext, AbstractFloatingView.TYPE_ACTION_POPUP);
-            // Post in case view is closing due to gesture navigation. If a gesture is in progress,
-            // wait to unstash until after the gesture is finished.
-            mSlideInView.post(mTaskbarStashController::maybeResetStashedInAppAllApps);
+
+            if (DisplayController.isTransientTaskbar(mContext)) {
+                mTaskbarStashController.updateStateForFlag(FLAG_STASHED_IN_TASKBAR_ALL_APPS, false);
+                mTaskbarStashController.applyState(mOverlayController.getCloseDuration());
+            }
         });
     }
+
+    class TaskbarAllAppsCallbacks {
+        int getOpenDuration() {
+            return mOverlayController.getOpenDuration();
+        }
+
+        int getCloseDuration() {
+            return mOverlayController.getCloseDuration();
+        }
+    }
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarBackground.kt b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarBackground.kt
new file mode 100644
index 0000000..7397159
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarBackground.kt
@@ -0,0 +1,135 @@
+/*
+ * 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.launcher3.taskbar.bubbles
+
+import android.graphics.Canvas
+import android.graphics.Color
+import android.graphics.ColorFilter
+import android.graphics.Paint
+import android.graphics.drawable.Drawable
+import android.graphics.drawable.ShapeDrawable
+import com.android.launcher3.R
+import com.android.launcher3.Utilities
+import com.android.launcher3.Utilities.mapToRange
+import com.android.launcher3.anim.Interpolators
+import com.android.launcher3.icons.GraphicsUtils.setColorAlphaBound
+import com.android.launcher3.taskbar.TaskbarActivityContext
+import com.android.wm.shell.common.TriangleShape
+
+/** Drawable for the background of the bubble bar. */
+class BubbleBarBackground(context: TaskbarActivityContext, private val backgroundHeight: Float) :
+    Drawable() {
+
+    private val DARK_THEME_SHADOW_ALPHA = 51f
+    private val LIGHT_THEME_SHADOW_ALPHA = 25f
+
+    private val paint: Paint = Paint()
+    private val pointerSize: Float
+
+    private val shadowAlpha: Float
+    private var shadowBlur = 0f
+    private var keyShadowDistance = 0f
+
+    var arrowPositionX: Float = 0f
+        private set
+    private var showingArrow: Boolean = false
+    private var arrowDrawable: ShapeDrawable
+
+    init {
+        paint.color = context.getColor(R.color.taskbar_background)
+        paint.flags = Paint.ANTI_ALIAS_FLAG
+        paint.style = Paint.Style.FILL
+
+        val res = context.resources
+        shadowBlur = res.getDimension(R.dimen.transient_taskbar_shadow_blur)
+        keyShadowDistance = res.getDimension(R.dimen.transient_taskbar_key_shadow_distance)
+        pointerSize = res.getDimension(R.dimen.bubblebar_pointer_size)
+
+        shadowAlpha =
+            if (Utilities.isDarkTheme(context)) DARK_THEME_SHADOW_ALPHA
+            else LIGHT_THEME_SHADOW_ALPHA
+
+        arrowDrawable =
+            ShapeDrawable(TriangleShape.create(pointerSize, pointerSize, /* pointUp= */ true))
+        arrowDrawable.setBounds(0, 0, pointerSize.toInt(), pointerSize.toInt())
+        arrowDrawable.paint.flags = Paint.ANTI_ALIAS_FLAG
+        arrowDrawable.paint.style = Paint.Style.FILL
+        arrowDrawable.paint.color = context.getColor(R.color.taskbar_background)
+    }
+
+    fun showArrow(show: Boolean) {
+        showingArrow = show
+    }
+
+    fun setArrowPosition(x: Float) {
+        arrowPositionX = x
+    }
+
+    /** Draws the background with the given paint and height, on the provided canvas. */
+    override fun draw(canvas: Canvas) {
+        canvas.save()
+
+        // TODO (b/277359345): Should animate the alpha similar to taskbar (see TaskbarDragLayer)
+        // Draw shadows.
+        val newShadowAlpha =
+            mapToRange(paint.alpha.toFloat(), 0f, 255f, 0f, shadowAlpha, Interpolators.LINEAR)
+        paint.setShadowLayer(
+            shadowBlur,
+            0f,
+            keyShadowDistance,
+            setColorAlphaBound(Color.BLACK, Math.round(newShadowAlpha))
+        )
+        arrowDrawable.paint.setShadowLayer(
+            shadowBlur,
+            0f,
+            keyShadowDistance,
+            setColorAlphaBound(Color.BLACK, Math.round(newShadowAlpha))
+        )
+
+        // Draw background.
+        val radius = backgroundHeight / 2f
+        canvas.drawRoundRect(
+            0f,
+            0f,
+            canvas.width.toFloat(),
+            canvas.height.toFloat(),
+            radius,
+            radius,
+            paint
+        )
+
+        if (showingArrow) {
+            // Draw arrow.
+            val transX = arrowPositionX - pointerSize / 2f
+            canvas.translate(transX, -pointerSize)
+            arrowDrawable.draw(canvas)
+        }
+
+        canvas.restore()
+    }
+
+    override fun getOpacity(): Int {
+        return paint.alpha
+    }
+
+    override fun setAlpha(alpha: Int) {
+        paint.alpha = alpha
+    }
+
+    override fun setColorFilter(colorFilter: ColorFilter?) {
+        paint.colorFilter = colorFilter
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarBubble.kt b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarBubble.kt
new file mode 100644
index 0000000..3cd5f75
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarBubble.kt
@@ -0,0 +1,34 @@
+/*
+ * 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.launcher3.taskbar.bubbles
+
+import android.graphics.Bitmap
+import android.graphics.Path
+import com.android.wm.shell.common.bubbles.BubbleInfo
+
+/** Contains state info about a bubble in the bubble bar as well as presentation information. */
+data class BubbleBarBubble(
+    val info: BubbleInfo,
+    val view: BubbleView,
+    val badge: Bitmap,
+    val icon: Bitmap,
+    val dotColor: Int,
+    val dotPath: Path,
+    val appName: String
+) {
+
+    val key: String = info.key
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarController.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarController.java
new file mode 100644
index 0000000..6d19692
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarController.java
@@ -0,0 +1,437 @@
+/*
+ * 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.launcher3.taskbar.bubbles;
+
+import static android.content.pm.LauncherApps.ShortcutQuery.FLAG_GET_PERSONS_DATA;
+import static android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_CACHED;
+import static android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_DYNAMIC;
+import static android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_PINNED_BY_ANY_LAUNCHER;
+import static android.os.Process.THREAD_PRIORITY_BACKGROUND;
+
+import static com.android.launcher3.icons.FastBitmapDrawable.WHITE_SCRIM_ALPHA;
+import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BOUNCER_SHOWING;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SHOWING;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SWITCHER_SHOWING;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_QUICK_SETTINGS_EXPANDED;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED;
+
+import android.annotation.BinderThread;
+import android.annotation.Nullable;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.LauncherApps;
+import android.content.pm.PackageManager;
+import android.content.pm.ShortcutInfo;
+import android.graphics.Bitmap;
+import android.graphics.Color;
+import android.graphics.Matrix;
+import android.graphics.Path;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.os.SystemProperties;
+import android.os.UserHandle;
+import android.util.ArrayMap;
+import android.util.Log;
+import android.util.PathParser;
+import android.view.LayoutInflater;
+
+import com.android.internal.graphics.ColorUtils;
+import com.android.launcher3.R;
+import com.android.launcher3.icons.BitmapInfo;
+import com.android.launcher3.icons.BubbleIconFactory;
+import com.android.launcher3.shortcuts.ShortcutRequest;
+import com.android.launcher3.taskbar.TaskbarControllers;
+import com.android.launcher3.util.Executors.SimpleThreadFactory;
+import com.android.quickstep.SystemUiProxy;
+import com.android.wm.shell.bubbles.IBubblesListener;
+import com.android.wm.shell.common.bubbles.BubbleBarUpdate;
+import com.android.wm.shell.common.bubbles.BubbleInfo;
+import com.android.wm.shell.common.bubbles.RemovedBubble;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
+
+/**
+ * This registers a listener with SysUIProxy to get information about changes to the bubble
+ * stack state from WMShell (SysUI). The controller is also responsible for loading the necessary
+ * information to render each of the bubbles & dispatches changes to
+ * {@link BubbleBarViewController} which will then update {@link BubbleBarView} as needed.
+ *
+ * For details around the behavior of the bubble bar, see {@link BubbleBarView}.
+ */
+public class BubbleBarController extends IBubblesListener.Stub {
+
+    private static final String TAG = BubbleBarController.class.getSimpleName();
+    private static final boolean DEBUG = false;
+
+    // Whether bubbles are showing in the bubble bar from launcher
+    public static final boolean BUBBLE_BAR_ENABLED =
+            SystemProperties.getBoolean("persist.wm.debug.bubble_bar", false);
+
+    private static final int MASK_HIDE_BUBBLE_BAR = SYSUI_STATE_BOUNCER_SHOWING
+            | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING
+            | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED
+            | SYSUI_STATE_IME_SHOWING
+            | SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED
+            | SYSUI_STATE_QUICK_SETTINGS_EXPANDED
+            | SYSUI_STATE_IME_SWITCHER_SHOWING;
+
+    private static final int MASK_HIDE_HANDLE_VIEW = SYSUI_STATE_BOUNCER_SHOWING
+            | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING
+            | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED;
+
+    private static final int MASK_SYSUI_LOCKED = SYSUI_STATE_BOUNCER_SHOWING
+            | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING
+            | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED;
+
+    private final Context mContext;
+    private final BubbleBarView mBarView;
+    private final ArrayMap<String, BubbleBarBubble> mBubbles = new ArrayMap<>();
+
+    private static final Executor BUBBLE_STATE_EXECUTOR = Executors.newSingleThreadExecutor(
+            new SimpleThreadFactory("BubbleStateUpdates-", THREAD_PRIORITY_BACKGROUND));
+    private final Executor mMainExecutor;
+    private final LauncherApps mLauncherApps;
+    private final BubbleIconFactory mIconFactory;
+
+    private BubbleBarBubble mSelectedBubble;
+
+    private BubbleBarViewController mBubbleBarViewController;
+    private BubbleStashController mBubbleStashController;
+    private BubbleStashedHandleViewController mBubbleStashedHandleViewController;
+
+    /**
+     * Similar to {@link BubbleBarUpdate} but rather than {@link BubbleInfo}s it uses
+     * {@link BubbleBarBubble}s so that it can be used to update the views.
+     */
+    private static class BubbleBarViewUpdate {
+        boolean expandedChanged;
+        boolean expanded;
+        String selectedBubbleKey;
+        String suppressedBubbleKey;
+        String unsuppressedBubbleKey;
+        List<RemovedBubble> removedBubbles;
+        List<String> bubbleKeysInOrder;
+
+        // These need to be loaded in the background
+        BubbleBarBubble addedBubble;
+        BubbleBarBubble updatedBubble;
+        List<BubbleBarBubble> currentBubbles;
+
+        BubbleBarViewUpdate(BubbleBarUpdate update) {
+            expandedChanged = update.expandedChanged;
+            expanded = update.expanded;
+            selectedBubbleKey = update.selectedBubbleKey;
+            suppressedBubbleKey = update.suppressedBubbleKey;
+            unsuppressedBubbleKey = update.unsupressedBubbleKey;
+            removedBubbles = update.removedBubbles;
+            bubbleKeysInOrder = update.bubbleKeysInOrder;
+        }
+    }
+
+    public BubbleBarController(Context context, BubbleBarView bubbleView) {
+        mContext = context;
+        mBarView = bubbleView; // Need the view for inflating bubble views.
+
+        if (BUBBLE_BAR_ENABLED) {
+            SystemUiProxy.INSTANCE.get(context).setBubblesListener(this);
+        }
+        mMainExecutor = MAIN_EXECUTOR;
+        mLauncherApps = context.getSystemService(LauncherApps.class);
+        mIconFactory = new BubbleIconFactory(context,
+                context.getResources().getDimensionPixelSize(R.dimen.bubblebar_icon_size),
+                context.getResources().getDimensionPixelSize(R.dimen.bubblebar_badge_size),
+                context.getResources().getColor(R.color.important_conversation),
+                context.getResources().getDimensionPixelSize(
+                        com.android.internal.R.dimen.importance_ring_stroke_width));
+    }
+
+    public void onDestroy() {
+        SystemUiProxy.INSTANCE.get(mContext).setBubblesListener(null);
+    }
+
+    public void init(TaskbarControllers controllers, BubbleControllers bubbleControllers) {
+        mBubbleBarViewController = bubbleControllers.bubbleBarViewController;
+        mBubbleStashController = bubbleControllers.bubbleStashController;
+        mBubbleStashedHandleViewController = bubbleControllers.bubbleStashedHandleViewController;
+
+        bubbleControllers.runAfterInit(() -> {
+            mBubbleBarViewController.setHiddenForBubbles(!BUBBLE_BAR_ENABLED);
+            mBubbleStashedHandleViewController.setHiddenForBubbles(!BUBBLE_BAR_ENABLED);
+        });
+    }
+
+    /**
+     * Updates the bubble bar, handle bar, and stash controllers based on sysui state flags.
+     */
+    public void updateStateForSysuiFlags(int flags) {
+        boolean hideBubbleBar = (flags & MASK_HIDE_BUBBLE_BAR) != 0;
+        mBubbleBarViewController.setHiddenForSysui(hideBubbleBar);
+
+        boolean hideHandleView = (flags & MASK_HIDE_HANDLE_VIEW) != 0;
+        mBubbleStashedHandleViewController.setHiddenForSysui(hideHandleView);
+
+        boolean sysuiLocked = (flags & MASK_SYSUI_LOCKED) != 0;
+        mBubbleStashController.onSysuiLockedStateChange(sysuiLocked);
+    }
+
+    //
+    // Bubble data changes
+    //
+
+    @BinderThread
+    @Override
+    public void onBubbleStateChange(Bundle bundle) {
+        bundle.setClassLoader(BubbleBarUpdate.class.getClassLoader());
+        BubbleBarUpdate update = bundle.getParcelable("update", BubbleBarUpdate.class);
+        BubbleBarViewUpdate viewUpdate = new BubbleBarViewUpdate(update);
+        if (update.addedBubble != null
+                || update.updatedBubble != null
+                || !update.currentBubbleList.isEmpty()) {
+            // We have bubbles to load
+            BUBBLE_STATE_EXECUTOR.execute(() -> {
+                if (update.addedBubble != null) {
+                    viewUpdate.addedBubble = populateBubble(update.addedBubble, mContext, mBarView);
+                }
+                if (update.updatedBubble != null) {
+                    viewUpdate.updatedBubble =
+                            populateBubble(update.updatedBubble, mContext, mBarView);
+                }
+                if (update.currentBubbleList != null && !update.currentBubbleList.isEmpty()) {
+                    List<BubbleBarBubble> currentBubbles = new ArrayList<>();
+                    for (int i = 0; i < update.currentBubbleList.size(); i++) {
+                        BubbleBarBubble b =
+                                populateBubble(update.currentBubbleList.get(i), mContext, mBarView);
+                        currentBubbles.add(b);
+                    }
+                    viewUpdate.currentBubbles = currentBubbles;
+                }
+                mMainExecutor.execute(() -> applyViewChanges(viewUpdate));
+            });
+        } else {
+            // No bubbles to load, immediately apply the changes.
+            BUBBLE_STATE_EXECUTOR.execute(
+                    () -> mMainExecutor.execute(() -> applyViewChanges(viewUpdate)));
+        }
+    }
+
+    private void applyViewChanges(BubbleBarViewUpdate update) {
+        final boolean isCollapsed = (update.expandedChanged && !update.expanded)
+                || (!update.expandedChanged && !mBubbleBarViewController.isExpanded());
+        BubbleBarBubble bubbleToSelect = null;
+        if (!update.removedBubbles.isEmpty()) {
+            for (int i = 0; i < update.removedBubbles.size(); i++) {
+                RemovedBubble removedBubble = update.removedBubbles.get(i);
+                BubbleBarBubble bubble = mBubbles.remove(removedBubble.getKey());
+                if (bubble != null) {
+                    mBubbleBarViewController.removeBubble(bubble);
+                } else {
+                    Log.w(TAG, "trying to remove bubble that doesn't exist: "
+                            + removedBubble.getKey());
+                }
+            }
+        }
+        if (update.addedBubble != null) {
+            mBubbles.put(update.addedBubble.getKey(), update.addedBubble);
+            mBubbleBarViewController.addBubble(update.addedBubble);
+            if (isCollapsed) {
+                // If we're collapsed, the most recently added bubble will be selected.
+                bubbleToSelect = update.addedBubble;
+            }
+
+        }
+        if (update.currentBubbles != null && !update.currentBubbles.isEmpty()) {
+            // Iterate in reverse because new bubbles are added in front and the list is in order.
+            for (int i = update.currentBubbles.size() - 1; i >= 0; i--) {
+                BubbleBarBubble bubble = update.currentBubbles.get(i);
+                if (bubble != null) {
+                    mBubbles.put(bubble.getKey(), bubble);
+                    mBubbleBarViewController.addBubble(bubble);
+                    if (isCollapsed) {
+                        // If we're collapsed, the most recently added bubble will be selected.
+                        bubbleToSelect = bubble;
+                    }
+                } else {
+                    Log.w(TAG, "trying to add bubble but null after loading! "
+                            + update.addedBubble.getKey());
+                }
+            }
+        }
+
+        // Adds and removals have happened, update visibility before any other visual changes.
+        mBubbleBarViewController.setHiddenForBubbles(mBubbles.isEmpty());
+        mBubbleStashedHandleViewController.setHiddenForBubbles(mBubbles.isEmpty());
+
+        if (update.updatedBubble != null) {
+            // TODO: (b/269670235) handle updates:
+            //  (1) if content / icons change -- requires reload & add back in place
+            //  (2) if showing update dot changes -- tell the view to hide / show the dot
+        }
+        if (update.bubbleKeysInOrder != null && !update.bubbleKeysInOrder.isEmpty()) {
+            // Create the new list
+            List<BubbleBarBubble> newOrder = update.bubbleKeysInOrder.stream()
+                    .map(mBubbles::get).filter(Objects::nonNull).toList();
+            if (!newOrder.isEmpty()) {
+                mBubbleBarViewController.reorderBubbles(newOrder);
+            }
+        }
+        if (update.suppressedBubbleKey != null) {
+            // TODO: (b/273316505) handle suppression
+        }
+        if (update.unsuppressedBubbleKey != null) {
+            // TODO: (b/273316505) handle suppression
+        }
+        if (update.selectedBubbleKey != null) {
+            if (mSelectedBubble != null
+                    && !update.selectedBubbleKey.equals(mSelectedBubble.getKey())) {
+                BubbleBarBubble newlySelected = mBubbles.get(update.selectedBubbleKey);
+                if (newlySelected != null) {
+                    bubbleToSelect = newlySelected;
+                } else {
+                    Log.w(TAG, "trying to select bubble that doesn't exist:"
+                            + update.selectedBubbleKey);
+                }
+            }
+        }
+        if (bubbleToSelect != null) {
+            setSelectedBubble(bubbleToSelect);
+        }
+        if (update.expandedChanged) {
+            if (update.expanded != mBubbleBarViewController.isExpanded()) {
+                mBubbleBarViewController.setExpandedFromSysui(update.expanded);
+            } else {
+                Log.w(TAG, "expansion was changed but is the same");
+            }
+        }
+    }
+
+    /**
+     * Sets the bubble that should be selected. This notifies the views, it does not notify
+     * WMShell that the selection has changed, that should go through
+     * {@link SystemUiProxy#showBubble}.
+     */
+    public void setSelectedBubble(BubbleBarBubble b) {
+        if (!Objects.equals(b, mSelectedBubble)) {
+            if (DEBUG) Log.w(TAG, "selectingBubble: " + b.getKey());
+            mSelectedBubble = b;
+            mBubbleBarViewController.updateSelectedBubble(mSelectedBubble);
+        }
+    }
+
+    /**
+     * Returns the selected bubble or null if no bubble is selected.
+     */
+    @Nullable
+    public String getSelectedBubbleKey() {
+        if (mSelectedBubble != null) {
+            return mSelectedBubble.getKey();
+        }
+        return null;
+    }
+
+    //
+    // Loading data for the bubbles
+    //
+
+    @Nullable
+    private BubbleBarBubble populateBubble(BubbleInfo b, Context context, BubbleBarView bbv) {
+        String appName;
+        Bitmap badgeBitmap;
+        Bitmap bubbleBitmap;
+        Path dotPath;
+        int dotColor;
+
+        boolean isImportantConvo = b.isImportantConversation();
+
+        ShortcutRequest.QueryResult result = new ShortcutRequest(context,
+                new UserHandle(b.getUserId()))
+                .forPackage(b.getPackageName(), b.getShortcutId())
+                .query(FLAG_MATCH_DYNAMIC
+                        | FLAG_MATCH_PINNED_BY_ANY_LAUNCHER
+                        | FLAG_MATCH_CACHED
+                        | FLAG_GET_PERSONS_DATA);
+
+        ShortcutInfo shortcutInfo = result.size() > 0 ? result.get(0) : null;
+        if (shortcutInfo == null) {
+            Log.w(TAG, "No shortcutInfo found for bubble: " + b.getKey()
+                    + " with shortcutId: " + b.getShortcutId());
+        }
+
+        ApplicationInfo appInfo;
+        try {
+            appInfo = mLauncherApps.getApplicationInfo(
+                    b.getPackageName(),
+                    0,
+                    new UserHandle(b.getUserId()));
+        } catch (PackageManager.NameNotFoundException e) {
+            // If we can't find package... don't think we should show the bubble.
+            Log.w(TAG, "Unable to find packageName: " + b.getPackageName());
+            return null;
+        }
+        if (appInfo == null) {
+            Log.w(TAG, "Unable to find appInfo: " + b.getPackageName());
+            return null;
+        }
+        PackageManager pm = context.getPackageManager();
+        appName = String.valueOf(appInfo.loadLabel(pm));
+        Drawable appIcon = appInfo.loadUnbadgedIcon(pm);
+        Drawable badgedIcon = pm.getUserBadgedIcon(appIcon, new UserHandle(b.getUserId()));
+
+        // Badged bubble image
+        Drawable bubbleDrawable = mIconFactory.getBubbleDrawable(context, shortcutInfo,
+                b.getIcon());
+        if (bubbleDrawable == null) {
+            // Default to app icon
+            bubbleDrawable = appIcon;
+        }
+
+        BitmapInfo badgeBitmapInfo = mIconFactory.getBadgeBitmap(badgedIcon, isImportantConvo);
+        badgeBitmap = badgeBitmapInfo.icon;
+
+        float[] bubbleBitmapScale = new float[1];
+        bubbleBitmap = mIconFactory.getBubbleBitmap(bubbleDrawable, bubbleBitmapScale);
+
+        // Dot color & placement
+        Path iconPath = PathParser.createPathFromPathData(
+                context.getResources().getString(
+                        com.android.internal.R.string.config_icon_mask));
+        Matrix matrix = new Matrix();
+        float scale = bubbleBitmapScale[0];
+        float radius = BubbleView.DEFAULT_PATH_SIZE / 2f;
+        matrix.setScale(scale /* x scale */, scale /* y scale */, radius /* pivot x */,
+                radius /* pivot y */);
+        iconPath.transform(matrix);
+        dotPath = iconPath;
+        dotColor = ColorUtils.blendARGB(badgeBitmapInfo.color,
+                Color.WHITE, WHITE_SCRIM_ALPHA);
+
+
+        LayoutInflater inflater = LayoutInflater.from(context);
+        BubbleView bubbleView = (BubbleView) inflater.inflate(
+                R.layout.bubblebar_item_view, bbv, false /* attachToRoot */);
+
+        BubbleBarBubble bubble = new BubbleBarBubble(b, bubbleView,
+                badgeBitmap, bubbleBitmap, dotColor, dotPath, appName);
+        bubbleView.setBubble(bubble);
+        return bubble;
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarView.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarView.java
new file mode 100644
index 0000000..0e1e0e1
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarView.java
@@ -0,0 +1,324 @@
+/*
+ * 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.launcher3.taskbar.bubbles;
+
+import android.animation.ValueAnimator;
+import android.annotation.Nullable;
+import android.content.Context;
+import android.graphics.Rect;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+
+import com.android.launcher3.R;
+import com.android.launcher3.taskbar.TaskbarActivityContext;
+import com.android.launcher3.views.ActivityContext;
+
+import java.util.List;
+
+/**
+ * The view that holds all the bubble views. Modifying this view should happen through
+ * {@link BubbleBarViewController}. Updates to the bubbles themselves (adds, removes, updates,
+ * selection) should happen through {@link BubbleBarController} which is the source of truth
+ * for state information about the bubbles.
+ * <p>
+ * The bubble bar has a couple of visual states:
+ * - stashed as a handle
+ * - unstashed but collapsed, in this state the bar is showing but the bubbles are stacked within it
+ * - unstashed and expanded, in this state the bar is showing and the bubbles are shown in a row
+ * with one of the bubbles being selected. Additionally, WMShell will display the expanded bubble
+ * view above the bar.
+ * <p>
+ * The bubble bar has some behavior related to taskbar:
+ * - When taskbar is unstashed, bubble bar will also become unstashed (but in its "collapsed"
+ * state)
+ * - When taskbar is stashed, bubble bar will also become stashed (unless bubble bar is in its
+ * "expanded" state)
+ * - When bubble bar is in its "expanded" state, taskbar becomes stashed
+ * <p>
+ * If there are no bubbles, the bubble bar and bubble stashed handle are not shown. Additionally
+ * the bubble bar and stashed handle are not shown on lockscreen.
+ * <p>
+ * When taskbar is in persistent or 3 button nav mode, the bubble bar is not available, and instead
+ * the bubbles are shown fully by WMShell in their floating mode.
+ */
+public class BubbleBarView extends FrameLayout {
+
+    private static final String TAG = BubbleBarView.class.getSimpleName();
+
+    // TODO: (b/273594744) calculate the amount of space we have and base the max on that
+    //  if it's smaller than 5.
+    private static final int MAX_BUBBLES = 5;
+    private static final int ARROW_POSITION_ANIMATION_DURATION_MS = 200;
+
+    private final TaskbarActivityContext mActivityContext;
+    private final BubbleBarBackground mBubbleBarBackground;
+
+    // The current bounds of all the bubble bar.
+    private final Rect mBubbleBarBounds = new Rect();
+    // The amount the bubbles overlap when they are stacked in the bubble bar
+    private final float mIconOverlapAmount;
+    // The spacing between the bubbles when they are expanded in the bubble bar
+    private final float mIconSpacing;
+    // The size of a bubble in the bar
+    private final float mIconSize;
+    // The elevation of the bubbles within the bar
+    private final float mBubbleElevation;
+
+    // Whether the bar is expanded (i.e. the bubble activity is being displayed).
+    private boolean mIsBarExpanded = false;
+    // The currently selected bubble view.
+    private BubbleView mSelectedBubbleView;
+    // The click listener when the bubble bar is collapsed.
+    private View.OnClickListener mOnClickListener;
+
+    private final Rect mTempRect = new Rect();
+
+    // We don't reorder the bubbles when they are expanded as it could be jarring for the user
+    // this runnable will be populated with any reordering of the bubbles that should be applied
+    // once they are collapsed.
+    @Nullable
+    private Runnable mReorderRunnable;
+
+    public BubbleBarView(Context context) {
+        this(context, null);
+    }
+
+    public BubbleBarView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public BubbleBarView(Context context, AttributeSet attrs, int defStyleAttr) {
+        this(context, attrs, defStyleAttr, 0);
+    }
+
+    public BubbleBarView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        mActivityContext = ActivityContext.lookupContext(context);
+
+        mIconOverlapAmount = getResources().getDimensionPixelSize(R.dimen.bubblebar_icon_overlap);
+        mIconSpacing = getResources().getDimensionPixelSize(R.dimen.bubblebar_icon_spacing);
+        mIconSize = getResources().getDimensionPixelSize(R.dimen.bubblebar_icon_size);
+        mBubbleElevation = getResources().getDimensionPixelSize(R.dimen.bubblebar_icon_elevation);
+        setClipToPadding(false);
+
+        mBubbleBarBackground = new BubbleBarBackground(mActivityContext,
+                getResources().getDimensionPixelSize(R.dimen.bubblebar_size));
+        setBackgroundDrawable(mBubbleBarBackground);
+    }
+
+    @Override
+    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+        super.onLayout(changed, left, top, right, bottom);
+        mBubbleBarBounds.left = left;
+        mBubbleBarBounds.top = top;
+        mBubbleBarBounds.right = right;
+        mBubbleBarBounds.bottom = bottom;
+
+        // The bubble bar handle is aligned to the bottom edge of the screen so scale towards that.
+        setPivotX(getWidth());
+        setPivotY(getHeight());
+
+        // Position the views
+        updateChildrenRenderNodeProperties();
+    }
+
+    /**
+     * Returns the bounds of the bubble bar.
+     */
+    public Rect getBubbleBarBounds() {
+        return mBubbleBarBounds;
+    }
+
+    // TODO: (b/273592694) animate it
+    @Override
+    public void addView(View child, int index, ViewGroup.LayoutParams params) {
+        if (getChildCount() + 1 > MAX_BUBBLES) {
+            removeViewInLayout(getChildAt(getChildCount() - 1));
+        }
+        super.addView(child, index, params);
+    }
+
+    /**
+     * Updates the z order, positions, and badge visibility of the bubble views in the bar based
+     * on the expanded state.
+     */
+    // TODO: (b/273592694) animate it
+    private void updateChildrenRenderNodeProperties() {
+        int bubbleCount = getChildCount();
+        final float ty = (mBubbleBarBounds.height() - mIconSize) / 2f;
+        for (int i = 0; i < bubbleCount; i++) {
+            BubbleView bv = (BubbleView) getChildAt(i);
+            bv.setTranslationY(ty);
+            if (mIsBarExpanded) {
+                final float tx = i * (mIconSize + mIconSpacing);
+                bv.setTranslationX(tx);
+                bv.setZ(0);
+                bv.showBadge();
+            } else {
+                bv.setZ((MAX_BUBBLES * mBubbleElevation) - i);
+                bv.setTranslationX(i * mIconOverlapAmount);
+                if (i > 0) {
+                    bv.hideBadge();
+                } else {
+                    bv.showBadge();
+                }
+            }
+        }
+    }
+
+    /**
+     * Reorders the views to match the provided list.
+     */
+    public void reorder(List<BubbleView> viewOrder) {
+        if (isExpanded()) {
+            mReorderRunnable = () -> doReorder(viewOrder);
+        } else {
+            doReorder(viewOrder);
+        }
+    }
+
+    // TODO: (b/273592694) animate it
+    private void doReorder(List<BubbleView> viewOrder) {
+        if (!isExpanded()) {
+            for (int i = 0; i < viewOrder.size(); i++) {
+                View child = viewOrder.get(i);
+                if (child != null) {
+                    removeViewInLayout(child);
+                    addViewInLayout(child, i, child.getLayoutParams());
+                }
+            }
+            updateChildrenRenderNodeProperties();
+        }
+    }
+
+    /**
+     * Sets which bubble view should be shown as selected.
+     */
+    public void setSelectedBubble(BubbleView view) {
+        mSelectedBubbleView = view;
+        updateArrowForSelected(/* shouldAnimate= */ true);
+    }
+
+    /**
+     * Update the arrow position to match the selected bubble.
+     *
+     * @param shouldAnimate whether or not to animate the arrow. If the bar was just expanded, this
+     *                      should be set to {@code false}. Otherwise set this to {@code true}.
+     */
+    private void updateArrowForSelected(boolean shouldAnimate) {
+        if (mSelectedBubbleView == null) {
+            Log.w(TAG, "trying to update selection arrow without a selected view!");
+            return;
+        }
+        final int index = indexOfChild(mSelectedBubbleView);
+        // Find the center of the bubble when it's expanded, set the arrow position to it.
+        final float tx = getPaddingStart() + index * (mIconSize + mIconSpacing) + mIconSize / 2f;
+
+        if (shouldAnimate) {
+            final float currentArrowPosition = mBubbleBarBackground.getArrowPositionX();
+            ValueAnimator animator = ValueAnimator.ofFloat(currentArrowPosition, tx);
+            animator.setDuration(ARROW_POSITION_ANIMATION_DURATION_MS);
+            animator.addUpdateListener(animation -> {
+                float x = (float) animation.getAnimatedValue();
+                mBubbleBarBackground.setArrowPosition(x);
+                invalidate();
+            });
+            animator.start();
+        } else {
+            mBubbleBarBackground.setArrowPosition(tx);
+            invalidate();
+        }
+    }
+
+    @Override
+    public void setOnClickListener(View.OnClickListener listener) {
+        mOnClickListener = listener;
+        setOrUnsetClickListener();
+    }
+
+    /**
+     * The click listener used for the bubble view gets added / removed depending on whether
+     * the bar is expanded or collapsed, this updates whether the listener is set based on state.
+     */
+    private void setOrUnsetClickListener() {
+        super.setOnClickListener(mIsBarExpanded ? null : mOnClickListener);
+    }
+
+    /**
+     * Sets whether the bubble bar is expanded or collapsed.
+     */
+    // TODO: (b/273592694) animate it
+    public void setExpanded(boolean isBarExpanded) {
+        if (mIsBarExpanded != isBarExpanded) {
+            mIsBarExpanded = isBarExpanded;
+            updateArrowForSelected(/* shouldAnimate= */ false);
+            setOrUnsetClickListener();
+            if (!isBarExpanded && mReorderRunnable != null) {
+                mReorderRunnable.run();
+                mReorderRunnable = null;
+            }
+            mBubbleBarBackground.showArrow(mIsBarExpanded);
+            requestLayout(); // trigger layout to reposition views & update size for expansion
+        }
+    }
+
+    /**
+     * Returns whether the bubble bar is expanded.
+     */
+    public boolean isExpanded() {
+        return mIsBarExpanded;
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        final int childCount = getChildCount();
+        final float iconWidth = mIsBarExpanded
+                ? (childCount * (mIconSize + mIconSpacing))
+                : mIconSize + ((childCount - 1) * mIconOverlapAmount);
+        final int totalWidth = (int) iconWidth + getPaddingStart() + getPaddingEnd();
+        setMeasuredDimension(totalWidth, MeasureSpec.getSize(heightMeasureSpec));
+
+        for (int i = 0; i < childCount; i++) {
+            View child = getChildAt(i);
+            measureChild(child, (int) mIconSize, (int) mIconSize);
+        }
+    }
+
+    /**
+     * Returns whether the given MotionEvent, *in screen coordinates*, is within bubble bar
+     * touch bounds.
+     */
+    public boolean isEventOverAnyItem(MotionEvent ev) {
+        if (getVisibility() == View.VISIBLE) {
+            getBoundsOnScreen(mTempRect);
+            return mTempRect.contains((int) ev.getX(), (int) ev.getY());
+        }
+        return false;
+    }
+
+    @Override
+    public boolean onInterceptTouchEvent(MotionEvent ev) {
+        if (!mIsBarExpanded) {
+            // When the bar is collapsed, all taps on it should expand it.
+            return true;
+        }
+        return super.onInterceptTouchEvent(ev);
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarViewController.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarViewController.java
new file mode 100644
index 0000000..82494c6
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarViewController.java
@@ -0,0 +1,302 @@
+/*
+ * 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.launcher3.taskbar.bubbles;
+
+import static android.view.View.INVISIBLE;
+import static android.view.View.VISIBLE;
+
+import android.graphics.Rect;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.FrameLayout;
+
+import com.android.launcher3.R;
+import com.android.launcher3.anim.AnimatedFloat;
+import com.android.launcher3.taskbar.TaskbarActivityContext;
+import com.android.launcher3.taskbar.TaskbarControllers;
+import com.android.launcher3.util.MultiPropertyFactory;
+import com.android.launcher3.util.MultiValueAlpha;
+import com.android.quickstep.SystemUiProxy;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Controller for {@link BubbleBarView}. Manages the visibility of the bubble bar as well as
+ * responding to changes in bubble state provided by BubbleBarController.
+ */
+public class BubbleBarViewController {
+
+    private static final String TAG = BubbleBarViewController.class.getSimpleName();
+
+    private final SystemUiProxy mSystemUiProxy;
+    private final TaskbarActivityContext mActivity;
+    private final BubbleBarView mBarView;
+    private final int mIconSize;
+
+    // Initialized in init.
+    private BubbleStashController mBubbleStashController;
+    private BubbleBarController mBubbleBarController;
+    private View.OnClickListener mBubbleClickListener;
+    private View.OnClickListener mBubbleBarClickListener;
+
+    // These are exposed to {@link BubbleStashController} to animate for stashing/un-stashing
+    private final MultiValueAlpha mBubbleBarAlpha;
+    private final AnimatedFloat mBubbleBarScale = new AnimatedFloat(this::updateScale);
+    private final AnimatedFloat mBubbleBarTranslationY = new AnimatedFloat(
+            this::updateTranslationY);
+
+    // Modified when swipe up is happening on the bubble bar or task bar.
+    private float mBubbleBarSwipeUpTranslationY;
+
+    // Whether the bar is hidden for a sysui state.
+    private boolean mHiddenForSysui;
+    // Whether the bar is hidden because there are no bubbles.
+    private boolean mHiddenForNoBubbles;
+
+    public BubbleBarViewController(TaskbarActivityContext activity, BubbleBarView barView) {
+        mActivity = activity;
+        mBarView = barView;
+        mSystemUiProxy = SystemUiProxy.INSTANCE.get(mActivity);
+        mBubbleBarAlpha = new MultiValueAlpha(mBarView, 1 /* num alpha channels */);
+        mBubbleBarAlpha.setUpdateVisibility(true);
+        mIconSize = activity.getResources().getDimensionPixelSize(R.dimen.bubblebar_icon_size);
+    }
+
+    public void init(TaskbarControllers controllers, BubbleControllers bubbleControllers) {
+        mBubbleStashController = bubbleControllers.bubbleStashController;
+        mBubbleBarController = bubbleControllers.bubbleBarController;
+
+        mActivity.addOnDeviceProfileChangeListener(dp ->
+                mBarView.getLayoutParams().height = mActivity.getDeviceProfile().taskbarHeight
+        );
+        mBarView.getLayoutParams().height = mActivity.getDeviceProfile().taskbarHeight;
+        mBubbleBarScale.updateValue(1f);
+        mBubbleClickListener = v -> onBubbleClicked(v);
+        mBubbleBarClickListener = v -> setExpanded(true);
+        mBarView.setOnClickListener(mBubbleBarClickListener);
+        // TODO: when barView layout changes tell taskbarInsetsController the insets have changed.
+    }
+
+    private void onBubbleClicked(View v) {
+        BubbleBarBubble bubble = ((BubbleView) v).getBubble();
+        if (bubble == null) {
+            Log.e(TAG, "bubble click listener, bubble was null");
+        }
+        final String currentlySelected = mBubbleBarController.getSelectedBubbleKey();
+        if (mBarView.isExpanded() && Objects.equals(bubble.getKey(), currentlySelected)) {
+            // Tapping the currently selected bubble while expanded collapses the view.
+            setExpanded(false);
+            mBubbleStashController.stashBubbleBar();
+        } else {
+            mBubbleBarController.setSelectedBubble(bubble);
+            mSystemUiProxy.showBubble(bubble.getKey(),
+                    mBubbleStashController.isBubblesShowingOnHome());
+        }
+    }
+
+    //
+    // The below animators are exposed to BubbleStashController so it can manage the stashing
+    // animation.
+    //
+
+    public MultiPropertyFactory<View> getBubbleBarAlpha() {
+        return mBubbleBarAlpha;
+    }
+
+    public AnimatedFloat getBubbleBarScale() {
+        return mBubbleBarScale;
+    }
+
+    public AnimatedFloat getBubbleBarTranslationY() {
+        return mBubbleBarTranslationY;
+    }
+
+    /**
+     * Whether the bubble bar is visible or not.
+     */
+    public boolean isBubbleBarVisible() {
+        return mBarView.getVisibility() == VISIBLE;
+    }
+
+    /**
+     * The bounds of the bubble bar.
+     */
+    public Rect getBubbleBarBounds() {
+        return mBarView.getBubbleBarBounds();
+    }
+
+    /**
+     * When the bubble bar is not stashed, it can be collapsed (the icons are in a stack) or
+     * expanded (the icons are in a row). This indicates whether the bubble bar is expanded.
+     */
+    public boolean isExpanded() {
+        return mBarView.isExpanded();
+    }
+
+    /**
+     * Whether the motion event is within the bounds of the bubble bar.
+     */
+    public boolean isEventOverAnyItem(MotionEvent ev) {
+        return mBarView.isEventOverAnyItem(ev);
+    }
+
+    //
+    // Visibility of the bubble bar
+    //
+
+    /**
+     * Returns whether the bubble bar is hidden because there are no bubbles.
+     */
+    public boolean isHiddenForNoBubbles() {
+        return mHiddenForNoBubbles;
+    }
+
+    /**
+     * Sets whether the bubble bar should be hidden because there are no bubbles.
+     */
+    public void setHiddenForBubbles(boolean hidden) {
+        if (mHiddenForNoBubbles != hidden) {
+            mHiddenForNoBubbles = hidden;
+            updateVisibilityForStateChange();
+        }
+    }
+
+    /**
+     * Sets whether the bubble bar should be hidden due to SysUI state (e.g. on lockscreen).
+     */
+    public void setHiddenForSysui(boolean hidden) {
+        if (mHiddenForSysui != hidden) {
+            mHiddenForSysui = hidden;
+            updateVisibilityForStateChange();
+        }
+    }
+
+    // TODO: (b/273592694) animate it
+    private void updateVisibilityForStateChange() {
+        if (!mHiddenForSysui && !mBubbleStashController.isStashed() && !mHiddenForNoBubbles) {
+            mBarView.setVisibility(VISIBLE);
+        } else {
+            mBarView.setVisibility(INVISIBLE);
+        }
+    }
+
+    //
+    // Modifying view related properties.
+    //
+
+    /**
+     * Sets the translation of the bubble bar during the swipe up gesture.
+     */
+    public void setTranslationYForSwipe(float transY) {
+        mBubbleBarSwipeUpTranslationY = transY;
+        updateTranslationY();
+    }
+
+    private void updateTranslationY() {
+        mBarView.setTranslationY(mBubbleBarTranslationY.value
+                + mBubbleBarSwipeUpTranslationY);
+    }
+
+    /**
+     * Applies scale properties for the entire bubble bar.
+     */
+    private void updateScale() {
+        float scale = mBubbleBarScale.value;
+        mBarView.setScaleX(scale);
+        mBarView.setScaleY(scale);
+    }
+
+    //
+    // Manipulating the specific bubble views in the bar
+    //
+
+    /**
+     * Removes the provided bubble from the bubble bar.
+     */
+    public void removeBubble(BubbleBarBubble b) {
+        if (b != null) {
+            mBarView.removeView(b.getView());
+        } else {
+            Log.w(TAG, "removeBubble, bubble was null!");
+        }
+    }
+
+    /**
+     * Adds the provided bubble to the bubble bar.
+     */
+    public void addBubble(BubbleBarBubble b) {
+        if (b != null) {
+            mBarView.addView(b.getView(), 0, new FrameLayout.LayoutParams(mIconSize, mIconSize));
+            b.getView().setOnClickListener(mBubbleClickListener);
+        } else {
+            Log.w(TAG, "addBubble, bubble was null!");
+        }
+    }
+
+    /**
+     * Reorders the bubbles based on the provided list.
+     */
+    public void reorderBubbles(List<BubbleBarBubble> newOrder) {
+        List<BubbleView> viewList = newOrder.stream().filter(Objects::nonNull)
+                .map(BubbleBarBubble::getView).toList();
+        mBarView.reorder(viewList);
+    }
+
+    /**
+     * Updates the selected bubble.
+     */
+    public void updateSelectedBubble(BubbleBarBubble newlySelected) {
+        mBarView.setSelectedBubble(newlySelected.getView());
+    }
+
+    /**
+     * Sets whether the bubble bar should be expanded (not unstashed, but have the contents
+     * within it expanded). This method notifies SystemUI that the bubble bar is expanded and
+     * showing a selected bubble. This method should ONLY be called from UI events originating
+     * from Launcher.
+     */
+    public void setExpanded(boolean isExpanded) {
+        if (isExpanded != mBarView.isExpanded()) {
+            mBarView.setExpanded(isExpanded);
+            if (!isExpanded) {
+                mSystemUiProxy.collapseBubbles();
+            } else {
+                final String selectedKey = mBubbleBarController.getSelectedBubbleKey();
+                if (selectedKey != null) {
+                    mSystemUiProxy.showBubble(selectedKey,
+                            mBubbleStashController.isBubblesShowingOnHome());
+                } else {
+                    Log.w(TAG, "trying to expand bubbles when there isn't one selected");
+                }
+                // TODO: Tell taskbar stash controller to stash without bubbles following
+            }
+        }
+    }
+
+    /**
+     * Sets whether the bubble bar should be expanded. This method is used in response to UI events
+     * from SystemUI.
+     */
+    public void setExpandedFromSysui(boolean isExpanded) {
+        if (!isExpanded) {
+            mBubbleStashController.stashBubbleBar();
+        } else {
+            mBubbleStashController.showBubbleBar(true /* expand the bubbles */);
+        }
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleControllers.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleControllers.java
new file mode 100644
index 0000000..6417f3c
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleControllers.java
@@ -0,0 +1,80 @@
+/*
+ * 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.launcher3.taskbar.bubbles;
+
+import com.android.launcher3.taskbar.TaskbarControllers;
+import com.android.launcher3.util.RunnableList;
+
+/**
+ * Hosts various bubble controllers to facilitate passing between one another.
+ */
+public class BubbleControllers {
+
+    public final BubbleBarController bubbleBarController;
+    public final BubbleBarViewController bubbleBarViewController;
+    public final BubbleStashController bubbleStashController;
+    public final BubbleStashedHandleViewController bubbleStashedHandleViewController;
+
+    private final RunnableList mPostInitRunnables = new RunnableList();
+
+    /**
+     * Want to add a new controller? Don't forget to:
+     *   * Call init
+     *   * Call onDestroy
+     */
+    public BubbleControllers(
+            BubbleBarController bubbleBarController,
+            BubbleBarViewController bubbleBarViewController,
+            BubbleStashController bubbleStashController,
+            BubbleStashedHandleViewController bubbleStashedHandleViewController) {
+        this.bubbleBarController = bubbleBarController;
+        this.bubbleBarViewController = bubbleBarViewController;
+        this.bubbleStashController = bubbleStashController;
+        this.bubbleStashedHandleViewController = bubbleStashedHandleViewController;
+    }
+
+    /**
+     * Initializes all controllers. Note that controllers can now reference each other through this
+     * BubbleControllers instance, but should be careful to only access things that were created
+     * in constructors for now, as some controllers may still be waiting for init().
+     */
+    public void init(TaskbarControllers taskbarControllers) {
+        bubbleBarController.init(taskbarControllers, this);
+        bubbleBarViewController.init(taskbarControllers, this);
+        bubbleStashedHandleViewController.init(taskbarControllers, this);
+        bubbleStashController.init(taskbarControllers, this);
+
+        mPostInitRunnables.executeAllAndDestroy();
+    }
+
+    /**
+     * If all controllers are already initialized, runs the given callback immediately. Otherwise,
+     * queues it to run after calling init() on all controllers. This should likely be used in any
+     * case where one controller is telling another controller to do something inside init().
+     */
+    public void runAfterInit(Runnable runnable) {
+        // If this has been executed in init, it automatically runs adds to it.
+        mPostInitRunnables.add(runnable);
+    }
+
+    /**
+     * Cleans up all controllers.
+     */
+    public void onDestroy() {
+        bubbleStashedHandleViewController.onDestroy();
+        bubbleBarController.onDestroy();
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleStashController.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleStashController.java
new file mode 100644
index 0000000..0ab53b0
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleStashController.java
@@ -0,0 +1,277 @@
+/*
+ * 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.launcher3.taskbar.bubbles;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.AnimatorSet;
+import android.annotation.Nullable;
+import android.view.InsetsController;
+
+import com.android.launcher3.anim.AnimatedFloat;
+import com.android.launcher3.taskbar.StashedHandleViewController;
+import com.android.launcher3.taskbar.TaskbarActivityContext;
+import com.android.launcher3.taskbar.TaskbarControllers;
+import com.android.launcher3.taskbar.TaskbarStashController;
+import com.android.launcher3.util.MultiPropertyFactory;
+
+/**
+ * Coordinates between controllers such as BubbleBarView and BubbleHandleViewController to
+ * create a cohesive animation between stashed/unstashed states.
+ */
+public class BubbleStashController {
+
+    private static final String TAG = BubbleStashController.class.getSimpleName();
+
+    /**
+     * How long to stash/unstash.
+     */
+    public static final long BAR_STASH_DURATION = InsetsController.ANIMATION_DURATION_RESIZE;
+
+    /**
+     * The scale bubble bar animates to when being stashed.
+     */
+    private static final float STASHED_BAR_SCALE = 0.5f;
+
+    protected final TaskbarActivityContext mActivity;
+
+    // Initialized in init.
+    private TaskbarControllers mControllers;
+    private BubbleBarViewController mBarViewController;
+    private BubbleStashedHandleViewController mHandleViewController;
+    private TaskbarStashController mTaskbarStashController;
+
+    private MultiPropertyFactory.MultiProperty mIconAlphaForStash;
+    private AnimatedFloat mIconScaleForStash;
+    private AnimatedFloat mIconTranslationYForStash;
+    private MultiPropertyFactory.MultiProperty mBubbleStashedHandleAlpha;
+
+    private boolean mRequestedStashState;
+    private boolean mRequestedExpandedState;
+
+    private boolean mIsStashed;
+    private int mStashedHeight;
+    private int mUnstashedHeight;
+    private boolean mBubblesShowingOnHome;
+    private boolean mBubblesShowingOnOverview;
+
+    @Nullable
+    private AnimatorSet mAnimator;
+
+    public BubbleStashController(TaskbarActivityContext activity) {
+        mActivity = activity;
+    }
+
+    public void init(TaskbarControllers controllers, BubbleControllers bubbleControllers) {
+        mControllers = controllers;
+        mBarViewController = bubbleControllers.bubbleBarViewController;
+        mHandleViewController = bubbleControllers.bubbleStashedHandleViewController;
+        mTaskbarStashController = controllers.taskbarStashController;
+
+        mIconAlphaForStash = mBarViewController.getBubbleBarAlpha().get(0);
+        mIconScaleForStash = mBarViewController.getBubbleBarScale();
+        mIconTranslationYForStash = mBarViewController.getBubbleBarTranslationY();
+
+        mBubbleStashedHandleAlpha = mHandleViewController.getStashedHandleAlpha().get(
+                StashedHandleViewController.ALPHA_INDEX_STASHED);
+
+        mStashedHeight = mHandleViewController.getStashedHeight();
+        mUnstashedHeight = mHandleViewController.getUnstashedHeight();
+
+        bubbleControllers.runAfterInit(() -> {
+            if (mTaskbarStashController.isStashed()) {
+                stashBubbleBar();
+            } else {
+                showBubbleBar(false /* expandBubbles */);
+            }
+        });
+    }
+
+    /**
+     * Returns the touchable height of the bubble bar based on it's stashed state.
+     */
+    public int getTouchableHeight() {
+        return mIsStashed ? mStashedHeight : mUnstashedHeight;
+    }
+
+    /**
+     * Returns whether the bubble bar is currently stashed.
+     */
+    public boolean isStashed() {
+        return mIsStashed;
+    }
+
+    /**
+     * Called when launcher enters or exits the home page. Bubbles are unstashed on home.
+     */
+    public void setBubblesShowingOnHome(boolean onHome) {
+        if (mBubblesShowingOnHome != onHome) {
+            mBubblesShowingOnHome = onHome;
+            if (mBubblesShowingOnHome) {
+                showBubbleBar(/* expanded= */ false);
+            } else if (!mBarViewController.isExpanded()) {
+                stashBubbleBar();
+            }
+        }
+    }
+
+    /** Whether bubbles are showing on the launcher home page. */
+    public boolean isBubblesShowingOnHome() {
+        return mBubblesShowingOnHome;
+    }
+
+    // TODO: when tapping on an app in overview, this is a bit delayed compared to taskbar stashing
+    /** Called when launcher enters or exits overview. Bubbles are unstashed on overview. */
+    public void setBubblesShowingOnOverview(boolean onOverview) {
+        if (mBubblesShowingOnOverview != onOverview) {
+            mBubblesShowingOnOverview = onOverview;
+            if (!mBubblesShowingOnOverview && !mBarViewController.isExpanded()) {
+                stashBubbleBar();
+            }
+        }
+    }
+
+    /** Called when sysui locked state changes, when locked, bubble bar is stashed. */
+    public void onSysuiLockedStateChange(boolean isSysuiLocked) {
+        if (isSysuiLocked) {
+            // TODO: should the normal path flip mBubblesOnHome / check if this is needed
+            // If we're locked, we're no longer showing on home.
+            mBubblesShowingOnHome = false;
+            mBubblesShowingOnOverview = false;
+            stashBubbleBar();
+        }
+    }
+
+    /**
+     * Stashes the bubble bar if allowed based on other state (e.g. on home and overview the
+     * bar does not stash).
+     */
+    public void stashBubbleBar() {
+        mRequestedStashState = true;
+        mRequestedExpandedState = false;
+        updateStashedAndExpandedState();
+    }
+
+    /**
+     * Shows the bubble bar, and expands bubbles depending on {@param expandBubbles}.
+     */
+    public void showBubbleBar(boolean expandBubbles) {
+        mRequestedStashState = false;
+        mRequestedExpandedState = expandBubbles;
+        updateStashedAndExpandedState();
+    }
+
+    private void updateStashedAndExpandedState() {
+        if (mBarViewController.isHiddenForNoBubbles()) {
+            // If there are no bubbles the bar and handle are invisible, nothing to do here.
+            return;
+        }
+        boolean isStashed = mRequestedStashState
+                && !mBubblesShowingOnHome
+                && !mBubblesShowingOnOverview;
+        if (mIsStashed != isStashed) {
+            mIsStashed = isStashed;
+            if (mAnimator != null) {
+                mAnimator.cancel();
+            }
+            mAnimator = createStashAnimator(mIsStashed, BAR_STASH_DURATION);
+            mAnimator.start();
+            onIsStashedChanged();
+        }
+        if (mBarViewController.isExpanded() != mRequestedExpandedState) {
+            mBarViewController.setExpanded(mRequestedExpandedState);
+        }
+    }
+
+    /**
+     * Create a stash animation.
+     *
+     * @param isStashed whether it's a stash animation or an unstash animation
+     * @param duration duration of the animation
+     * @return the animation
+     */
+    private AnimatorSet createStashAnimator(boolean isStashed, long duration) {
+        AnimatorSet animatorSet = new AnimatorSet();
+        final float stashTranslation = (mUnstashedHeight - mStashedHeight) / 2f;
+
+        AnimatorSet fullLengthAnimatorSet = new AnimatorSet();
+        // Not exactly half and may overlap. See [first|second]HalfDurationScale below.
+        AnimatorSet firstHalfAnimatorSet = new AnimatorSet();
+        AnimatorSet secondHalfAnimatorSet = new AnimatorSet();
+
+        final float firstHalfDurationScale;
+        final float secondHalfDurationScale;
+
+        if (isStashed) {
+            firstHalfDurationScale = 0.75f;
+            secondHalfDurationScale = 0.5f;
+
+            fullLengthAnimatorSet.play(mIconTranslationYForStash.animateToValue(stashTranslation));
+
+            firstHalfAnimatorSet.playTogether(
+                    mIconAlphaForStash.animateToValue(0),
+                    mIconScaleForStash.animateToValue(STASHED_BAR_SCALE));
+            secondHalfAnimatorSet.playTogether(
+                    mBubbleStashedHandleAlpha.animateToValue(1));
+        } else  {
+            firstHalfDurationScale = 0.5f;
+            secondHalfDurationScale = 0.75f;
+
+            // If we're on home, adjust the translation so the bubble bar aligns with hotseat.
+            final float hotseatTransY = mActivity.getDeviceProfile().getTaskbarOffsetY();
+            final float translationY = mBubblesShowingOnHome ? hotseatTransY : 0;
+            fullLengthAnimatorSet.playTogether(
+                    mIconScaleForStash.animateToValue(1),
+                    mIconTranslationYForStash.animateToValue(translationY));
+
+            firstHalfAnimatorSet.playTogether(
+                    mBubbleStashedHandleAlpha.animateToValue(0)
+            );
+            secondHalfAnimatorSet.playTogether(
+                    mIconAlphaForStash.animateToValue(1)
+            );
+        }
+
+        fullLengthAnimatorSet.play(mHandleViewController.createRevealAnimToIsStashed(isStashed));
+
+        fullLengthAnimatorSet.setDuration(duration);
+        firstHalfAnimatorSet.setDuration((long) (duration * firstHalfDurationScale));
+        secondHalfAnimatorSet.setDuration((long) (duration * secondHalfDurationScale));
+        secondHalfAnimatorSet.setStartDelay((long) (duration * (1 - secondHalfDurationScale)));
+
+        animatorSet.playTogether(fullLengthAnimatorSet, firstHalfAnimatorSet,
+                secondHalfAnimatorSet);
+        animatorSet.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                mAnimator = null;
+                mControllers.runAfterInit(() -> {
+                    if (isStashed) {
+                        mBarViewController.setExpanded(false);
+                    }
+                });
+            }
+        });
+        return animatorSet;
+    }
+
+    private void onIsStashedChanged() {
+        mControllers.runAfterInit(() -> {
+            mHandleViewController.onIsStashedChanged();
+            // TODO: when stash changes tell taskbarInsetsController the insets have changed.
+        });
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleStashedHandleViewController.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleStashedHandleViewController.java
new file mode 100644
index 0000000..2170a5d
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleStashedHandleViewController.java
@@ -0,0 +1,262 @@
+/*
+ * 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.launcher3.taskbar.bubbles;
+
+import static android.view.View.INVISIBLE;
+import static android.view.View.VISIBLE;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.ValueAnimator;
+import android.content.res.Resources;
+import android.graphics.Outline;
+import android.graphics.Rect;
+import android.view.View;
+import android.view.ViewOutlineProvider;
+
+import com.android.launcher3.R;
+import com.android.launcher3.anim.RevealOutlineAnimation;
+import com.android.launcher3.anim.RoundedRectRevealOutlineProvider;
+import com.android.launcher3.taskbar.StashedHandleView;
+import com.android.launcher3.taskbar.TaskbarActivityContext;
+import com.android.launcher3.taskbar.TaskbarControllers;
+import com.android.launcher3.util.Executors;
+import com.android.launcher3.util.MultiPropertyFactory;
+import com.android.launcher3.util.MultiValueAlpha;
+import com.android.systemui.shared.navigationbar.RegionSamplingHelper;
+
+/**
+ * Handles properties/data collection, then passes the results to our stashed handle View to render.
+ */
+public class BubbleStashedHandleViewController {
+
+    private final TaskbarActivityContext mActivity;
+    private final StashedHandleView mStashedHandleView;
+    private final MultiValueAlpha mTaskbarStashedHandleAlpha;
+
+    // Initialized in init.
+    private BubbleBarViewController mBarViewController;
+    private BubbleStashController mBubbleStashController;
+    private RegionSamplingHelper mRegionSamplingHelper;
+    private int mBarSize;
+    private int mStashedHandleWidth;
+    private int mStashedHandleHeight;
+
+    // The bounds we want to clip to in the settled state when showing the stashed handle.
+    private final Rect mStashedHandleBounds = new Rect();
+
+    // When the reveal animation is cancelled, we can assume it's about to create a new animation,
+    // which should start off at the same point the cancelled one left off.
+    private float mStartProgressForNextRevealAnim;
+    private boolean mWasLastRevealAnimReversed;
+
+    // XXX: if there are more of these maybe do state flags instead
+    private boolean mHiddenForSysui;
+    private boolean mHiddenForNoBubbles;
+    private boolean mHiddenForHomeButtonDisabled;
+
+    public BubbleStashedHandleViewController(TaskbarActivityContext activity,
+            StashedHandleView stashedHandleView) {
+        mActivity = activity;
+        mStashedHandleView = stashedHandleView;
+        mTaskbarStashedHandleAlpha = new MultiValueAlpha(mStashedHandleView, 1);
+    }
+
+    public void init(TaskbarControllers controllers, BubbleControllers bubbleControllers) {
+        mBarViewController = bubbleControllers.bubbleBarViewController;
+        mBubbleStashController = bubbleControllers.bubbleStashController;
+
+        Resources resources = mActivity.getResources();
+        mStashedHandleHeight = resources.getDimensionPixelSize(
+                R.dimen.bubblebar_stashed_handle_height);
+        mStashedHandleWidth = resources.getDimensionPixelSize(
+                R.dimen.bubblebar_stashed_handle_width);
+        mBarSize = resources.getDimensionPixelSize(R.dimen.bubblebar_size);
+
+        final int bottomMargin = resources.getDimensionPixelSize(
+                R.dimen.transient_taskbar_bottom_margin);
+        mStashedHandleView.getLayoutParams().height = mBarSize + bottomMargin;
+
+        mTaskbarStashedHandleAlpha.get(0).setValue(0);
+
+        final int stashedTaskbarHeight = resources.getDimensionPixelSize(
+                R.dimen.bubblebar_stashed_size);
+        mStashedHandleView.setOutlineProvider(new ViewOutlineProvider() {
+            @Override
+            public void getOutline(View view, Outline outline) {
+                float stashedHandleRadius = view.getHeight() / 2f;
+                outline.setRoundRect(mStashedHandleBounds, stashedHandleRadius);
+            }
+        });
+
+        mRegionSamplingHelper = new RegionSamplingHelper(mStashedHandleView,
+                new RegionSamplingHelper.SamplingCallback() {
+                    @Override
+                    public void onRegionDarknessChanged(boolean isRegionDark) {
+                        mStashedHandleView.updateHandleColor(isRegionDark, true /* animate */);
+                    }
+
+                    @Override
+                    public Rect getSampledRegion(View sampledView) {
+                        return mStashedHandleView.getSampledRegion();
+                    }
+                }, Executors.UI_HELPER_EXECUTOR);
+
+        mStashedHandleView.addOnLayoutChangeListener((view, i, i1, i2, i3, i4, i5, i6, i7) -> {
+            // As more bubbles get added, the icon bounds become larger. To ensure a consistent
+            // handle bar position, we pin it to the edge of the screen.
+            Rect bubblebarRect = mBarViewController.getBubbleBarBounds();
+            final int stashedCenterY = view.getHeight() - stashedTaskbarHeight / 2;
+
+            mStashedHandleBounds.set(
+                    bubblebarRect.right - mStashedHandleWidth,
+                    stashedCenterY - mStashedHandleHeight / 2,
+                    bubblebarRect.right,
+                    stashedCenterY + mStashedHandleHeight / 2);
+            mStashedHandleView.updateSampledRegion(mStashedHandleBounds);
+
+            view.setPivotX(view.getWidth());
+            view.setPivotY(view.getHeight() - stashedTaskbarHeight / 2f);
+        });
+    }
+
+    public void onDestroy() {
+        mRegionSamplingHelper.stopAndDestroy();
+        mRegionSamplingHelper = null;
+    }
+
+    /**
+     * Returns the height of the stashed handle.
+     */
+    public int getStashedHeight() {
+        return mStashedHandleHeight;
+    }
+
+    /**
+     * Returns the height when the bubble bar is unstashed (so the height of the bubble bar).
+     */
+    public int getUnstashedHeight() {
+        return mBarSize;
+    }
+
+    /**
+     * Called when system ui state changes. Bubbles don't show when the device is locked.
+     */
+    public void setHiddenForSysui(boolean hidden) {
+        if (mHiddenForSysui != hidden) {
+            mHiddenForSysui = hidden;
+            updateVisibilityForStateChange();
+        }
+    }
+
+    /**
+     * Called when the handle should be hidden (or shown) because there are no bubbles
+     * (or 1+ bubbles).
+     */
+    public void setHiddenForBubbles(boolean hidden) {
+        if (mHiddenForNoBubbles != hidden) {
+            mHiddenForNoBubbles = hidden;
+            updateVisibilityForStateChange();
+        }
+    }
+
+    /**
+     * Called when the home button is enabled / disabled. Bubbles don't show if home is disabled.
+     */
+    // TODO: is this needed for bubbles?
+    public void setIsHomeButtonDisabled(boolean homeDisabled) {
+        mHiddenForHomeButtonDisabled = homeDisabled;
+        updateVisibilityForStateChange();
+    }
+
+    // TODO: (b/273592694) animate it?
+    private void updateVisibilityForStateChange() {
+        if (!mHiddenForSysui && !mHiddenForHomeButtonDisabled && !mHiddenForNoBubbles) {
+            mStashedHandleView.setVisibility(VISIBLE);
+        } else {
+            mStashedHandleView.setVisibility(INVISIBLE);
+        }
+        updateRegionSampling();
+    }
+
+    /**
+     * Called when bubble bar is stash state changes so that updates to the stashed handle color
+     * can be started or stopped.
+     */
+    public void onIsStashedChanged() {
+        updateRegionSampling();
+    }
+
+    private void updateRegionSampling() {
+        boolean handleVisible = mStashedHandleView.getVisibility() == VISIBLE
+                && mBubbleStashController.isStashed();
+        mRegionSamplingHelper.setWindowVisible(handleVisible);
+        if (handleVisible) {
+            mStashedHandleView.updateSampledRegion(mStashedHandleBounds);
+            mRegionSamplingHelper.start(mStashedHandleView.getSampledRegion());
+        } else {
+            mRegionSamplingHelper.stop();
+        }
+    }
+
+    /**
+     * Sets the translation of the stashed handle during the swipe up gesture.
+     */
+    public void setTranslationYForSwipe(float transY) {
+        mStashedHandleView.setTranslationY(transY);
+    }
+
+    /**
+     * Used by {@link BubbleStashController} to animate the handle when stashing or un stashing.
+     */
+    public MultiPropertyFactory<View> getStashedHandleAlpha() {
+        return mTaskbarStashedHandleAlpha;
+    }
+
+    /**
+     * Creates and returns an Animator that updates the stashed handle  shape and size.
+     * When stashed, the shape is a thin rounded pill. When unstashed, the shape morphs into
+     * the size of where the bubble bar icons will be.
+     */
+    public Animator createRevealAnimToIsStashed(boolean isStashed) {
+        Rect bubbleBarBounds = new Rect(mBarViewController.getBubbleBarBounds());
+
+        // Account for the full visual height of the bubble bar
+        int heightDiff = (mBarSize - bubbleBarBounds.height()) / 2;
+        bubbleBarBounds.top -= heightDiff;
+        bubbleBarBounds.bottom += heightDiff;
+        float stashedHandleRadius = mStashedHandleView.getHeight() / 2f;
+        final RevealOutlineAnimation handleRevealProvider = new RoundedRectRevealOutlineProvider(
+                stashedHandleRadius, stashedHandleRadius, bubbleBarBounds, mStashedHandleBounds);
+
+        boolean isReversed = !isStashed;
+        boolean changingDirection = mWasLastRevealAnimReversed != isReversed;
+        mWasLastRevealAnimReversed = isReversed;
+        if (changingDirection) {
+            mStartProgressForNextRevealAnim = 1f - mStartProgressForNextRevealAnim;
+        }
+
+        ValueAnimator revealAnim = handleRevealProvider.createRevealAnimator(mStashedHandleView,
+                isReversed, mStartProgressForNextRevealAnim);
+        revealAnim.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                mStartProgressForNextRevealAnim = ((ValueAnimator) animation).getAnimatedFraction();
+            }
+        });
+        return revealAnim;
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleView.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleView.java
new file mode 100644
index 0000000..e22e63a
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleView.java
@@ -0,0 +1,134 @@
+/*
+ * 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.launcher3.taskbar.bubbles;
+
+import android.annotation.Nullable;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Outline;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewOutlineProvider;
+import android.widget.ImageView;
+
+import androidx.constraintlayout.widget.ConstraintLayout;
+
+import com.android.launcher3.R;
+import com.android.launcher3.icons.IconNormalizer;
+
+// TODO: (b/276978250) This is will be similar to WMShell's BadgedImageView, it'd be nice to share.
+// TODO: (b/269670235) currently this doesn't show the 'update dot'
+/**
+ * View that displays a bubble icon, along with an app badge on either the left or
+ * right side of the view.
+ */
+public class BubbleView extends ConstraintLayout {
+
+    // TODO: (b/269670235) currently we don't render the 'update dot', this will be used for that.
+    public static final int DEFAULT_PATH_SIZE = 100;
+
+    private final ImageView mBubbleIcon;
+    private final ImageView mAppIcon;
+    private final int mBubbleSize;
+
+    // TODO: (b/273310265) handle RTL
+    private boolean mOnLeft = false;
+
+    private BubbleBarBubble mBubble;
+
+    public BubbleView(Context context) {
+        this(context, null);
+    }
+
+    public BubbleView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public BubbleView(Context context, AttributeSet attrs, int defStyleAttr) {
+        this(context, attrs, defStyleAttr, 0);
+    }
+
+    public BubbleView(Context context, AttributeSet attrs, int defStyleAttr,
+            int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        // We manage positioning the badge ourselves
+        setLayoutDirection(LAYOUT_DIRECTION_LTR);
+
+        LayoutInflater.from(context).inflate(R.layout.bubble_view, this);
+
+        mBubbleSize = getResources().getDimensionPixelSize(R.dimen.bubblebar_icon_size);
+        mBubbleIcon = findViewById(R.id.icon_view);
+        mAppIcon = findViewById(R.id.app_icon_view);
+
+        setFocusable(true);
+        setClickable(true);
+        setOutlineProvider(new ViewOutlineProvider() {
+            @Override
+            public void getOutline(View view, Outline outline) {
+                BubbleView.this.getOutline(outline);
+            }
+        });
+    }
+
+    private void getOutline(Outline outline) {
+        final int normalizedSize = IconNormalizer.getNormalizedCircleSize(mBubbleSize);
+        final int inset = (mBubbleSize - normalizedSize) / 2;
+        outline.setOval(inset, inset, inset + normalizedSize, inset + normalizedSize);
+    }
+
+    /** Sets the bubble being rendered in this view. */
+    void setBubble(BubbleBarBubble bubble) {
+        mBubble = bubble;
+        mBubbleIcon.setImageBitmap(bubble.getIcon());
+        mAppIcon.setImageBitmap(bubble.getBadge());
+    }
+
+    /** Returns the bubble being rendered in this view. */
+    @Nullable
+    BubbleBarBubble getBubble() {
+        return mBubble;
+    }
+
+    /** Shows the app badge on this bubble. */
+    void showBadge() {
+        Bitmap appBadgeBitmap = mBubble.getBadge();
+        if (appBadgeBitmap == null) {
+            mAppIcon.setVisibility(GONE);
+            return;
+        }
+
+        int translationX;
+        if (mOnLeft) {
+            translationX = -(mBubble.getIcon().getWidth() - appBadgeBitmap.getWidth());
+        } else {
+            translationX = 0;
+        }
+
+        mAppIcon.setTranslationX(translationX);
+        mAppIcon.setVisibility(VISIBLE);
+    }
+
+    /** Hides the app badge on this bubble. */
+    void hideBadge() {
+        mAppIcon.setVisibility(GONE);
+    }
+
+    @Override
+    public String toString() {
+        return "BubbleView{" + mBubble + "}";
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/AbstractNavButtonLayoutter.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/AbstractNavButtonLayoutter.kt
new file mode 100644
index 0000000..27a4988
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/AbstractNavButtonLayoutter.kt
@@ -0,0 +1,46 @@
+/*
+ * 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.launcher3.taskbar.navbutton
+
+import android.content.res.Resources
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.LinearLayout
+import com.android.launcher3.R
+import com.android.launcher3.taskbar.navbutton.NavButtonLayoutFactory.NavButtonLayoutter
+
+/**
+ * Meant to be a simple container for data subclasses will need
+ *
+ * Assumes that the 3 navigation buttons (back/home/recents) have already been added to
+ * [navButtonContainer]
+ *
+ * @property navButtonContainer ViewGroup that holds the 3 navigation buttons.
+ * @property endContextualContainer ViewGroup that holds the end contextual button (ex, IME
+ *   dismiss).
+ * @property startContextualContainer ViewGroup that holds the start contextual button (ex, A11y).
+ */
+abstract class AbstractNavButtonLayoutter(
+    val resources: Resources,
+    val navButtonContainer: LinearLayout,
+    protected val endContextualContainer: ViewGroup,
+    protected val startContextualContainer: ViewGroup
+) : NavButtonLayoutter {
+    protected val homeButton: ImageView = navButtonContainer.findViewById(R.id.home)
+    protected val recentsButton: ImageView = navButtonContainer.findViewById(R.id.recent_apps)
+    protected val backButton: ImageView = navButtonContainer.findViewById(R.id.back)
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/KidsNavLayoutter.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/KidsNavLayoutter.kt
new file mode 100644
index 0000000..468a1a7
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/KidsNavLayoutter.kt
@@ -0,0 +1,93 @@
+/*
+ * 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.launcher3.taskbar.navbutton
+
+import android.content.res.Resources
+import android.graphics.Color
+import android.graphics.drawable.PaintDrawable
+import android.view.Gravity
+import android.view.ViewGroup
+import android.widget.FrameLayout
+import android.widget.ImageView
+import android.widget.LinearLayout
+import com.android.launcher3.DeviceProfile
+import com.android.launcher3.taskbar.navbutton.LayoutResourceHelper.*
+
+class KidsNavLayoutter(
+    resources: Resources,
+    navBarContainer: LinearLayout,
+    endContextualContainer: ViewGroup,
+    startContextualContainer: ViewGroup
+) :
+    AbstractNavButtonLayoutter(
+        resources,
+        navBarContainer,
+        endContextualContainer,
+        startContextualContainer
+    ) {
+
+    override fun layoutButtons(dp: DeviceProfile, isContextualButtonShowing: Boolean) {
+        val iconSize: Int = resources.getDimensionPixelSize(DIMEN_TASKBAR_ICON_SIZE_KIDS)
+        val buttonWidth: Int = resources.getDimensionPixelSize(DIMEN_TASKBAR_NAV_BUTTONS_WIDTH_KIDS)
+        val buttonHeight: Int =
+            resources.getDimensionPixelSize(DIMEN_TASKBAR_NAV_BUTTONS_HEIGHT_KIDS)
+        val buttonRadius: Int =
+            resources.getDimensionPixelSize(DIMEN_TASKBAR_NAV_BUTTONS_CORNER_RADIUS_KIDS)
+        val paddingLeft = (buttonWidth - iconSize) / 2
+        val paddingTop = (buttonHeight - iconSize) / 2
+
+        // Update icons
+        backButton.setImageDrawable(backButton.context.getDrawable(DRAWABLE_SYSBAR_BACK_KIDS))
+        backButton.scaleType = ImageView.ScaleType.FIT_CENTER
+        backButton.setPadding(paddingLeft, paddingTop, paddingLeft, paddingTop)
+        homeButton.setImageDrawable(homeButton.getContext().getDrawable(DRAWABLE_SYSBAR_HOME_KIDS))
+        homeButton.scaleType = ImageView.ScaleType.FIT_CENTER
+        homeButton.setPadding(paddingLeft, paddingTop, paddingLeft, paddingTop)
+
+        // Home button layout
+        val homeLayoutparams = LinearLayout.LayoutParams(buttonWidth, buttonHeight)
+        val homeButtonLeftMargin: Int =
+            resources.getDimensionPixelSize(DIMEN_TASKBAR_HOME_BUTTON_LEFT_MARGIN_KIDS)
+        homeLayoutparams.setMargins(homeButtonLeftMargin, 0, 0, 0)
+        homeButton.layoutParams = homeLayoutparams
+
+        // Back button layout
+        val backLayoutParams = LinearLayout.LayoutParams(buttonWidth, buttonHeight)
+        val backButtonLeftMargin: Int =
+            resources.getDimensionPixelSize(DIMEN_TASKBAR_BACK_BUTTON_LEFT_MARGIN_KIDS)
+        backLayoutParams.setMargins(backButtonLeftMargin, 0, 0, 0)
+        backButton.layoutParams = backLayoutParams
+
+        // Button backgrounds
+        val whiteWith10PctAlpha = Color.argb(0.1f, 1f, 1f, 1f)
+        val buttonBackground = PaintDrawable(whiteWith10PctAlpha)
+        buttonBackground.setCornerRadius(buttonRadius.toFloat())
+        homeButton.background = buttonBackground
+        backButton.background = buttonBackground
+
+        // Update alignment within taskbar
+        val navButtonsLayoutParams = navButtonContainer.layoutParams as FrameLayout.LayoutParams
+        navButtonsLayoutParams.apply {
+            marginStart = navButtonsLayoutParams.marginEnd / 2
+            marginEnd = navButtonsLayoutParams.marginStart
+            gravity = Gravity.CENTER
+        }
+        navButtonContainer.requestLayout()
+
+        homeButton.onLongClickListener = null
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/LayoutResourceHelper.java b/quickstep/src/com/android/launcher3/taskbar/navbutton/LayoutResourceHelper.java
new file mode 100644
index 0000000..0d9b855
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/LayoutResourceHelper.java
@@ -0,0 +1,68 @@
+/*
+ * 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.launcher3.taskbar.navbutton;
+
+import android.annotation.DimenRes;
+import android.annotation.DrawableRes;
+import android.annotation.IdRes;
+
+import com.android.launcher3.R;
+
+/**
+ * A class for retrieving resources in Kotlin.
+ *
+ * This class should be removed once the build system supports resources loading in Kotlin.
+ */
+public final class LayoutResourceHelper {
+
+    // --------------------------
+    // Kids Nav Layout
+    @DimenRes
+    public static final int DIMEN_TASKBAR_ICON_SIZE_KIDS = R.dimen.taskbar_icon_size_kids;
+    @DrawableRes
+    public static final int DRAWABLE_SYSBAR_BACK_KIDS = R.drawable.ic_sysbar_back_kids;
+    @DrawableRes
+    public static final int DRAWABLE_SYSBAR_HOME_KIDS = R.drawable.ic_sysbar_home_kids;
+    @DimenRes
+    public static final int DIMEN_TASKBAR_HOME_BUTTON_LEFT_MARGIN_KIDS =
+            R.dimen.taskbar_home_button_left_margin_kids;
+    @DimenRes
+    public static final int DIMEN_TASKBAR_BACK_BUTTON_LEFT_MARGIN_KIDS =
+            R.dimen.taskbar_back_button_left_margin_kids;
+    @DimenRes
+    public static final int DIMEN_TASKBAR_NAV_BUTTONS_WIDTH_KIDS =
+            R.dimen.taskbar_nav_buttons_width_kids;
+    @DimenRes
+    public static final int DIMEN_TASKBAR_NAV_BUTTONS_HEIGHT_KIDS =
+            R.dimen.taskbar_nav_buttons_height_kids;
+    @DimenRes
+    public static final int DIMEN_TASKBAR_NAV_BUTTONS_CORNER_RADIUS_KIDS =
+            R.dimen.taskbar_nav_buttons_corner_radius_kids;
+
+    // --------------------------
+    // Nav Layout Factory
+    @IdRes
+    public static final int ID_START_CONTEXTUAL_BUTTONS = R.id.start_contextual_buttons;
+    @IdRes
+    public static final int ID_END_CONTEXTUAL_BUTTONS = R.id.end_contextual_buttons;
+    @IdRes
+    public static final int ID_END_NAV_BUTTONS = R.id.end_nav_buttons;
+
+    private LayoutResourceHelper() {
+
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactory.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactory.kt
new file mode 100644
index 0000000..0668da9
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactory.kt
@@ -0,0 +1,121 @@
+/*
+ * 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.launcher3.taskbar.navbutton
+
+import android.content.res.Resources
+import android.view.ViewGroup
+import android.widget.FrameLayout
+import android.widget.LinearLayout
+import com.android.launcher3.DeviceProfile
+import com.android.launcher3.taskbar.navbutton.LayoutResourceHelper.*
+import com.android.launcher3.taskbar.navbutton.NavButtonLayoutFactory.Companion
+import com.android.launcher3.taskbar.navbutton.NavButtonLayoutFactory.NavButtonLayoutter
+
+/**
+ * Select the correct layout for nav buttons
+ *
+ * Since layouts are done dynamically for the nav buttons on Taskbar, this class returns a
+ * corresponding [NavButtonLayoutter] via [Companion.getUiLayoutter] that can help position the
+ * buttons based on the current [DeviceProfile]
+ */
+class NavButtonLayoutFactory {
+    companion object {
+        /**
+         * Get the correct instance of [NavButtonLayoutter]
+         *
+         * No layouts supported for configurations where:
+         * * taskbar isn't showing AND
+         * * the device is not in [phoneMode] OR
+         * * phone is showing
+         * * device is using gesture navigation
+         *
+         * @param navButtonsView ViewGroup that contains start, end, nav button ViewGroups
+         * @param isKidsMode no-op when taskbar is hidden/not showing
+         * @param isInSetup no-op when taskbar is hidden/not showing
+         * @param phoneMode refers to the device using the taskbar window on phones
+         * @param isThreeButtonNav are no-ops when taskbar is present/showing
+         */
+        fun getUiLayoutter(
+            deviceProfile: DeviceProfile,
+            navButtonsView: FrameLayout,
+            resources: Resources,
+            isKidsMode: Boolean,
+            isInSetup: Boolean,
+            isThreeButtonNav: Boolean,
+            phoneMode: Boolean
+        ): NavButtonLayoutter {
+            val navButtonContainer = navButtonsView.findViewById<LinearLayout>(ID_END_NAV_BUTTONS)
+            val endContextualContainer =
+                navButtonsView.findViewById<ViewGroup>(ID_END_CONTEXTUAL_BUTTONS)
+            val startContextualContainer =
+                navButtonsView.findViewById<ViewGroup>(ID_START_CONTEXTUAL_BUTTONS)
+            val isPhoneNavMode = phoneMode && isThreeButtonNav
+            return when {
+                isPhoneNavMode -> {
+                    if (!deviceProfile.isLandscape) {
+                        PhonePortraitNavLayoutter(
+                            resources,
+                            navButtonContainer,
+                            endContextualContainer,
+                            startContextualContainer
+                        )
+                    } else {
+                        PhoneLandscapeNavLayoutter(
+                            resources,
+                            navButtonContainer,
+                            endContextualContainer,
+                            startContextualContainer
+                        )
+                    }
+                }
+                deviceProfile.isTaskbarPresent -> {
+                    return when {
+                        isInSetup -> {
+                            SetupNavLayoutter(
+                                resources,
+                                navButtonContainer,
+                                endContextualContainer,
+                                startContextualContainer
+                            )
+                        }
+                        isKidsMode -> {
+                            KidsNavLayoutter(
+                                resources,
+                                navButtonContainer,
+                                endContextualContainer,
+                                startContextualContainer
+                            )
+                        }
+                        else ->
+                            TaskbarNavLayoutter(
+                                resources,
+                                navButtonContainer,
+                                endContextualContainer,
+                                startContextualContainer
+                            )
+                    }
+                }
+                else -> error("No layoutter found")
+            }
+        }
+    }
+
+    /** Lays out and provides access to the home, recents, and back buttons for various mischief */
+    interface NavButtonLayoutter {
+        fun layoutButtons(dp: DeviceProfile, isContextualButtonShowing: Boolean)
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/PhoneLandscapeNavLayoutter.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/PhoneLandscapeNavLayoutter.kt
new file mode 100644
index 0000000..201895f
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/PhoneLandscapeNavLayoutter.kt
@@ -0,0 +1,89 @@
+/*
+ * 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.launcher3.taskbar.navbutton
+
+import android.content.res.Resources
+import android.view.Gravity
+import android.view.ViewGroup
+import android.widget.FrameLayout
+import android.widget.LinearLayout
+import androidx.core.view.children
+import com.android.launcher3.DeviceProfile
+import com.android.launcher3.R
+import com.android.launcher3.taskbar.TaskbarManager
+import com.android.launcher3.util.DimensionUtils
+
+class PhoneLandscapeNavLayoutter(
+    resources: Resources,
+    navBarContainer: LinearLayout,
+    endContextualContainer: ViewGroup,
+    startContextualContainer: ViewGroup
+) :
+    AbstractNavButtonLayoutter(
+        resources,
+        navBarContainer,
+        endContextualContainer,
+        startContextualContainer
+    ) {
+
+    override fun layoutButtons(dp: DeviceProfile, isContextualButtonShowing: Boolean) {
+        // TODO(b/230395757): Polish pending, this is just to make it usable
+        val navContainerParams = navButtonContainer.layoutParams as FrameLayout.LayoutParams
+        val endStartMargins = resources.getDimensionPixelSize(R.dimen.taskbar_nav_buttons_size)
+        val taskbarDimensions =
+            DimensionUtils.getTaskbarPhoneDimensions(dp, resources, TaskbarManager.isPhoneMode(dp))
+        navButtonContainer.removeAllViews()
+        navButtonContainer.orientation = LinearLayout.VERTICAL
+
+        navContainerParams.apply {
+            width = taskbarDimensions.x
+            height = ViewGroup.LayoutParams.MATCH_PARENT
+            gravity = Gravity.CENTER
+            topMargin = endStartMargins
+            bottomMargin = endStartMargins
+            marginEnd = 0
+            marginStart = 0
+        }
+
+        // Swap recents and back button
+        navButtonContainer.addView(recentsButton)
+        navButtonContainer.addView(homeButton)
+        navButtonContainer.addView(backButton)
+
+        navButtonContainer.layoutParams = navContainerParams
+
+        // Add the spaces in between the nav buttons
+        val spaceInBetween: Int =
+            resources.getDimensionPixelSize(R.dimen.taskbar_button_space_inbetween_phone)
+        navButtonContainer.children.forEachIndexed { i, navButton ->
+            val buttonLayoutParams = navButton.layoutParams as LinearLayout.LayoutParams
+            buttonLayoutParams.weight = 1f
+            when (i) {
+                0 -> {
+                    buttonLayoutParams.bottomMargin = spaceInBetween / 2
+                }
+                navButtonContainer.childCount - 1 -> {
+                    buttonLayoutParams.topMargin = spaceInBetween / 2
+                }
+                else -> {
+                    buttonLayoutParams.bottomMargin = spaceInBetween / 2
+                    buttonLayoutParams.topMargin = spaceInBetween / 2
+                }
+            }
+        }
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/PhonePortraitNavLayoutter.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/PhonePortraitNavLayoutter.kt
new file mode 100644
index 0000000..f7ac974
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/PhonePortraitNavLayoutter.kt
@@ -0,0 +1,90 @@
+/*
+ * 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.launcher3.taskbar.navbutton
+
+import android.content.res.Resources
+import android.view.Gravity
+import android.view.ViewGroup
+import android.widget.FrameLayout
+import android.widget.LinearLayout
+import com.android.launcher3.DeviceProfile
+import com.android.launcher3.R
+import com.android.launcher3.taskbar.TaskbarManager
+import com.android.launcher3.util.DimensionUtils
+
+class PhonePortraitNavLayoutter(
+    resources: Resources,
+    navBarContainer: LinearLayout,
+    endContextualContainer: ViewGroup,
+    startContextualContainer: ViewGroup
+) :
+    AbstractNavButtonLayoutter(
+        resources,
+        navBarContainer,
+        endContextualContainer,
+        startContextualContainer
+    ) {
+
+    override fun layoutButtons(dp: DeviceProfile, isContextualButtonShowing: Boolean) {
+        // TODO(b/230395757): Polish pending, this is just to make it usable
+        val navContainerParams = navButtonContainer.layoutParams as FrameLayout.LayoutParams
+        val taskbarDimensions =
+            DimensionUtils.getTaskbarPhoneDimensions(dp, resources, TaskbarManager.isPhoneMode(dp))
+        val endStartMargins = resources.getDimensionPixelSize(R.dimen.taskbar_nav_buttons_size)
+        navContainerParams.width = taskbarDimensions.x
+        navContainerParams.height = ViewGroup.LayoutParams.MATCH_PARENT
+        navContainerParams.gravity = Gravity.CENTER_VERTICAL
+
+        // Ensure order of buttons is correct
+        navButtonContainer.removeAllViews()
+        navButtonContainer.orientation = LinearLayout.HORIZONTAL
+        navContainerParams.topMargin = 0
+        navContainerParams.bottomMargin = 0
+        navContainerParams.marginEnd = endStartMargins
+        navContainerParams.marginStart = endStartMargins
+        // Swap recents and back button in case we were landscape prior to this
+        navButtonContainer.addView(backButton)
+        navButtonContainer.addView(homeButton)
+        navButtonContainer.addView(recentsButton)
+
+        navButtonContainer.layoutParams = navContainerParams
+
+        // Add the spaces in between the nav buttons
+        val spaceInBetween =
+            resources.getDimensionPixelSize(R.dimen.taskbar_button_space_inbetween_phone)
+        for (i in 0 until navButtonContainer.childCount) {
+            val navButton = navButtonContainer.getChildAt(i)
+            val buttonLayoutParams = navButton.layoutParams as LinearLayout.LayoutParams
+            buttonLayoutParams.weight = 1f
+            when (i) {
+                0 -> {
+                    // First button
+                    buttonLayoutParams.marginEnd = spaceInBetween / 2
+                }
+                navButtonContainer.childCount - 1 -> {
+                    // Last button
+                    buttonLayoutParams.marginStart = spaceInBetween / 2
+                }
+                else -> {
+                    // other buttons
+                    buttonLayoutParams.marginStart = spaceInBetween / 2
+                    buttonLayoutParams.marginEnd = spaceInBetween / 2
+                }
+            }
+        }
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/SetupNavLayoutter.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/SetupNavLayoutter.kt
new file mode 100644
index 0000000..a24002c
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/SetupNavLayoutter.kt
@@ -0,0 +1,50 @@
+/*
+ * 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.launcher3.taskbar.navbutton
+
+import android.content.res.Resources
+import android.view.Gravity
+import android.view.ViewGroup
+import android.widget.FrameLayout
+import android.widget.LinearLayout
+import com.android.launcher3.DeviceProfile
+
+class SetupNavLayoutter(
+    resources: Resources,
+    navButtonContainer: LinearLayout,
+    endContextualContainer: ViewGroup,
+    startContextualContainer: ViewGroup
+) :
+    AbstractNavButtonLayoutter(
+        resources,
+        navButtonContainer,
+        endContextualContainer,
+        startContextualContainer
+    ) {
+
+    override fun layoutButtons(dp: DeviceProfile, isContextualButtonShowing: Boolean) {
+        // Since setup wizard only has back button enabled, it looks strange to be
+        // end-aligned, so start-align instead.
+        val navButtonsLayoutParams = navButtonContainer.layoutParams as FrameLayout.LayoutParams
+        navButtonsLayoutParams.apply {
+            marginStart = navButtonsLayoutParams.marginEnd
+            marginEnd = 0
+            gravity = Gravity.START
+        }
+        navButtonContainer.requestLayout()
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/TaskbarNavLayoutter.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/TaskbarNavLayoutter.kt
new file mode 100644
index 0000000..5ec7ca0
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/TaskbarNavLayoutter.kt
@@ -0,0 +1,82 @@
+/*
+ * 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.launcher3.taskbar.navbutton
+
+import android.content.res.Resources
+import android.view.Gravity
+import android.view.ViewGroup
+import android.widget.FrameLayout
+import android.widget.LinearLayout
+import com.android.launcher3.DeviceProfile
+import com.android.launcher3.R
+
+/** Layoutter for showing 3 button navigation on large screen */
+class TaskbarNavLayoutter(
+    resources: Resources,
+    navBarContainer: LinearLayout,
+    endContextualContainer: ViewGroup,
+    startContextualContainer: ViewGroup
+) :
+    AbstractNavButtonLayoutter(
+        resources,
+        navBarContainer,
+        endContextualContainer,
+        startContextualContainer
+    ) {
+
+    override fun layoutButtons(dp: DeviceProfile, isContextualButtonShowing: Boolean) {
+        // Add spacing after the end of the last nav button
+        val navButtonParams = navButtonContainer.layoutParams as FrameLayout.LayoutParams
+        var navMarginEnd = resources.getDimension(dp.inv.inlineNavButtonsEndSpacing).toInt()
+        val contextualWidth = endContextualContainer.width
+        // If contextual buttons are showing, we check if the end margin is enough for the
+        // contextual button to be showing - if not, move the nav buttons over a smidge
+        if (isContextualButtonShowing && navMarginEnd < contextualWidth) {
+            // Additional spacing, eat up half of space between last icon and nav button
+            navMarginEnd += resources.getDimensionPixelSize(R.dimen.taskbar_hotseat_nav_spacing) / 2
+        }
+
+        navButtonParams.apply {
+            gravity = Gravity.END
+            width = FrameLayout.LayoutParams.WRAP_CONTENT
+            height = ViewGroup.LayoutParams.MATCH_PARENT
+            marginEnd = navMarginEnd
+        }
+        navButtonContainer.orientation = LinearLayout.HORIZONTAL
+        navButtonContainer.layoutParams = navButtonParams
+
+        // Add the spaces in between the nav buttons
+        val spaceInBetween = resources.getDimensionPixelSize(R.dimen.taskbar_button_space_inbetween)
+        for (i in 0 until navButtonContainer.childCount) {
+            val navButton = navButtonContainer.getChildAt(i)
+            val buttonLayoutParams = navButton.layoutParams as LinearLayout.LayoutParams
+            buttonLayoutParams.weight = 0f
+            when (i) {
+                0 -> {
+                    buttonLayoutParams.marginEnd = spaceInBetween / 2
+                }
+                navButtonContainer.childCount - 1 -> {
+                    buttonLayoutParams.marginStart = spaceInBetween / 2
+                }
+                else -> {
+                    buttonLayoutParams.marginStart = spaceInBetween / 2
+                    buttonLayoutParams.marginEnd = spaceInBetween / 2
+                }
+            }
+        }
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayContext.java b/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayContext.java
new file mode 100644
index 0000000..a642693
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayContext.java
@@ -0,0 +1,143 @@
+/*
+ * 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.launcher3.taskbar.overlay;
+
+import android.content.Context;
+import android.view.View;
+
+import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.R;
+import com.android.launcher3.dot.DotInfo;
+import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.popup.PopupDataProvider;
+import com.android.launcher3.taskbar.BaseTaskbarContext;
+import com.android.launcher3.taskbar.TaskbarActivityContext;
+import com.android.launcher3.taskbar.TaskbarControllers;
+import com.android.launcher3.taskbar.TaskbarDragController;
+import com.android.launcher3.taskbar.TaskbarUIController;
+import com.android.launcher3.taskbar.allapps.TaskbarAllAppsContainerView;
+import com.android.launcher3.util.SplitConfigurationOptions.SplitSelectSource;
+
+/**
+ * Window context for the taskbar overlays such as All Apps and EDU.
+ * <p>
+ * Overlays have their own window and need a window context. Some properties are delegated to the
+ * {@link TaskbarActivityContext} such as {@link PopupDataProvider}.
+ */
+public class TaskbarOverlayContext extends BaseTaskbarContext {
+    private final TaskbarActivityContext mTaskbarContext;
+
+    private final TaskbarOverlayController mOverlayController;
+    private final TaskbarDragController mDragController;
+    private final TaskbarOverlayDragLayer mDragLayer;
+
+    private final int mStashedTaskbarHeight;
+    private final TaskbarUIController mUiController;
+
+    public TaskbarOverlayContext(
+            Context windowContext,
+            TaskbarActivityContext taskbarContext,
+            TaskbarControllers controllers) {
+        super(windowContext);
+        mTaskbarContext = taskbarContext;
+        mOverlayController = controllers.taskbarOverlayController;
+        mDragController = new TaskbarDragController(this);
+        mDragController.init(controllers);
+        mDragLayer = new TaskbarOverlayDragLayer(this);
+        mStashedTaskbarHeight = controllers.taskbarStashController.getStashedHeight();
+
+        mUiController = controllers.uiController;
+    }
+
+    int getStashedTaskbarHeight() {
+        return mStashedTaskbarHeight;
+    }
+
+    public TaskbarOverlayController getOverlayController() {
+        return mOverlayController;
+    }
+
+    /** Returns {@code true} if overlay or Taskbar windows are handling a system drag. */
+    boolean isAnySystemDragInProgress() {
+        return mDragController.isSystemDragInProgress()
+                || mTaskbarContext.getDragController().isSystemDragInProgress();
+    }
+
+    @Override
+    public DeviceProfile getDeviceProfile() {
+        return mOverlayController.getLauncherDeviceProfile();
+    }
+
+    @Override
+    public View.AccessibilityDelegate getAccessibilityDelegate() {
+        return mTaskbarContext.getAccessibilityDelegate();
+    }
+
+    @Override
+    public TaskbarDragController getDragController() {
+        return mDragController;
+    }
+
+    @Override
+    public TaskbarOverlayDragLayer getDragLayer() {
+        return mDragLayer;
+    }
+
+    @Override
+    public TaskbarAllAppsContainerView getAppsView() {
+        return mDragLayer.findViewById(R.id.apps_view);
+    }
+
+    @Override
+    public boolean isBindingItems() {
+        return mTaskbarContext.isBindingItems();
+    }
+
+    @Override
+    public View.OnClickListener getItemOnClickListener() {
+        return mTaskbarContext.getItemOnClickListener();
+    }
+
+    @Override
+    public PopupDataProvider getPopupDataProvider() {
+        return mTaskbarContext.getPopupDataProvider();
+    }
+
+    @Override
+    public void startSplitSelection(SplitSelectSource splitSelectSource) {
+        mUiController.startSplitSelection(splitSelectSource);
+    }
+
+    @Override
+    public DotInfo getDotInfoForItem(ItemInfo info) {
+        return mTaskbarContext.getDotInfoForItem(info);
+    }
+
+    @Override
+    public void onDragStart() {}
+
+    @Override
+    public void onDragEnd() {
+        mOverlayController.maybeCloseWindow();
+    }
+
+    @Override
+    public void onPopupVisibilityChanged(boolean isVisible) {}
+
+    @Override
+    public void onSplitScreenMenuButtonClicked() {
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayController.java b/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayController.java
new file mode 100644
index 0000000..d4e2be9
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayController.java
@@ -0,0 +1,216 @@
+/*
+ * 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.launcher3.taskbar.overlay;
+
+import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
+
+import static com.android.launcher3.AbstractFloatingView.TYPE_ALL;
+import static com.android.launcher3.AbstractFloatingView.TYPE_REBIND_SAFE;
+import static com.android.launcher3.LauncherState.ALL_APPS;
+
+import android.annotation.SuppressLint;
+import android.content.ComponentName;
+import android.content.Context;
+import android.graphics.PixelFormat;
+import android.view.Gravity;
+import android.view.MotionEvent;
+import android.view.WindowManager;
+import android.view.WindowManager.LayoutParams;
+
+import androidx.annotation.Nullable;
+
+import com.android.launcher3.AbstractFloatingView;
+import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.taskbar.TaskbarActivityContext;
+import com.android.launcher3.taskbar.TaskbarControllers;
+import com.android.systemui.shared.system.TaskStackChangeListener;
+import com.android.systemui.shared.system.TaskStackChangeListeners;
+
+import java.util.Optional;
+
+/**
+ * Handles the Taskbar overlay window lifecycle.
+ * <p>
+ * Overlays need to be inflated in a separate window so that have the correct hierarchy. For
+ * instance, they need to be below the notification tray. If there are multiple overlays open, the
+ * same window is used.
+ */
+public final class TaskbarOverlayController {
+
+    private static final String WINDOW_TITLE = "Taskbar Overlay";
+
+    private final TaskbarActivityContext mTaskbarContext;
+    private final Context mWindowContext;
+    private final TaskbarOverlayProxyView mProxyView;
+    private final LayoutParams mLayoutParams;
+
+    private final TaskStackChangeListener mTaskStackListener = new TaskStackChangeListener() {
+        @Override
+        public void onTaskCreated(int taskId, ComponentName componentName) {
+            // Created task will be below existing overlay, so move out of the way.
+            hideWindow();
+        }
+
+        @Override
+        public void onTaskMovedToFront(int taskId) {
+            // New front task will be below existing overlay, so move out of the way.
+            hideWindow();
+        }
+    };
+
+    private DeviceProfile mLauncherDeviceProfile;
+    private @Nullable TaskbarOverlayContext mOverlayContext;
+    private TaskbarControllers mControllers; // Initialized in init.
+
+    public TaskbarOverlayController(
+            TaskbarActivityContext taskbarContext, DeviceProfile launcherDeviceProfile) {
+        mTaskbarContext = taskbarContext;
+        mWindowContext = mTaskbarContext.createWindowContext(TYPE_APPLICATION_OVERLAY, null);
+        mProxyView = new TaskbarOverlayProxyView();
+        mLayoutParams = createLayoutParams();
+        mLauncherDeviceProfile = launcherDeviceProfile;
+    }
+
+    /** Initialize the controller. */
+    public void init(TaskbarControllers controllers) {
+        mControllers = controllers;
+    }
+
+    /**
+     * Creates a window for Taskbar overlays, if it does not already exist. Returns the window
+     * context for the current overlay window.
+     */
+    public TaskbarOverlayContext requestWindow() {
+        if (mOverlayContext == null) {
+            mOverlayContext = new TaskbarOverlayContext(
+                    mWindowContext, mTaskbarContext, mControllers);
+        }
+
+        if (!mProxyView.isOpen()) {
+            mProxyView.show();
+            Optional.ofNullable(mOverlayContext.getSystemService(WindowManager.class))
+                    .ifPresent(m -> m.addView(mOverlayContext.getDragLayer(), mLayoutParams));
+            TaskStackChangeListeners.getInstance().registerTaskStackListener(mTaskStackListener);
+        }
+
+        return mOverlayContext;
+    }
+
+    /** Hides the current overlay window with animation. */
+    public void hideWindow() {
+        mProxyView.close(true);
+    }
+
+    /**
+     * Removes the overlay window from the hierarchy, if all floating views are closed and there is
+     * no system drag operation in progress.
+     * <p>
+     * This method should be called after an exit animation finishes, if applicable.
+     */
+    @SuppressLint("WrongConstant")
+    void maybeCloseWindow() {
+        if (mOverlayContext != null && (AbstractFloatingView.hasOpenView(mOverlayContext, TYPE_ALL)
+                || mOverlayContext.getDragController().isSystemDragInProgress())) {
+            return;
+        }
+        mProxyView.close(false);
+        onDestroy();
+    }
+
+    /** Destroys the controller and any overlay window if present. */
+    public void onDestroy() {
+        TaskStackChangeListeners.getInstance().unregisterTaskStackListener(mTaskStackListener);
+        Optional.ofNullable(mOverlayContext)
+                .map(c -> c.getSystemService(WindowManager.class))
+                .ifPresent(m -> m.removeViewImmediate(mOverlayContext.getDragLayer()));
+        mOverlayContext = null;
+    }
+
+    /** The current device profile for the overlay window. */
+    public DeviceProfile getLauncherDeviceProfile() {
+        return mLauncherDeviceProfile;
+    }
+
+    /** Updates {@link DeviceProfile} instance for Taskbar's overlay window. */
+    public void updateLauncherDeviceProfile(DeviceProfile dp) {
+        mLauncherDeviceProfile = dp;
+        Optional.ofNullable(mOverlayContext).ifPresent(c -> {
+            AbstractFloatingView.closeAllOpenViewsExcept(c, false, TYPE_REBIND_SAFE);
+            c.dispatchDeviceProfileChanged();
+        });
+    }
+
+    /** The default open duration for overlays. */
+    public int getOpenDuration() {
+        return ALL_APPS.getTransitionDuration(mTaskbarContext, true);
+    }
+
+    /** The default close duration for overlays. */
+    public int getCloseDuration() {
+        return ALL_APPS.getTransitionDuration(mTaskbarContext, false);
+    }
+
+    @SuppressLint("WrongConstant")
+    private LayoutParams createLayoutParams() {
+        LayoutParams layoutParams = new LayoutParams(
+                TYPE_APPLICATION_OVERLAY,
+                LayoutParams.FLAG_SPLIT_TOUCH,
+                PixelFormat.TRANSLUCENT);
+        layoutParams.setTitle(WINDOW_TITLE);
+        layoutParams.gravity = Gravity.BOTTOM;
+        layoutParams.packageName = mTaskbarContext.getPackageName();
+        layoutParams.setFitInsetsTypes(0); // Handled by container view.
+        layoutParams.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
+        layoutParams.setSystemApplicationOverlay(true);
+        return layoutParams;
+    }
+
+    /**
+     * Proxy view connecting taskbar drag layer to the overlay window.
+     *
+     * Overlays are in a separate window and has its own drag layer, but this proxy lets its views
+     * behave as though they are in the taskbar drag layer. For instance, when the taskbar closes
+     * all {@link AbstractFloatingView} instances, the overlay window will also close.
+     */
+    private class TaskbarOverlayProxyView extends AbstractFloatingView {
+
+        private TaskbarOverlayProxyView() {
+            super(mTaskbarContext, null);
+        }
+
+        private void show() {
+            mIsOpen = true;
+            mTaskbarContext.getDragLayer().addView(this);
+        }
+
+        @Override
+        protected void handleClose(boolean animate) {
+            mTaskbarContext.getDragLayer().removeView(this);
+            Optional.ofNullable(mOverlayContext).ifPresent(c -> closeAllOpenViews(c, animate));
+        }
+
+        @Override
+        protected boolean isOfType(int type) {
+            return (type & TYPE_TASKBAR_OVERLAY_PROXY) != 0;
+        }
+
+        @Override
+        public boolean onControllerInterceptTouchEvent(MotionEvent ev) {
+            return false;
+        }
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayDragLayer.java b/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayDragLayer.java
new file mode 100644
index 0000000..add7279
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/taskbar/overlay/TaskbarOverlayDragLayer.java
@@ -0,0 +1,206 @@
+/*
+ * 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.launcher3.taskbar.overlay;
+
+import static android.view.KeyEvent.ACTION_UP;
+import static android.view.KeyEvent.KEYCODE_BACK;
+import static android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_REGION;
+
+import android.content.Context;
+import android.graphics.Insets;
+import android.view.KeyEvent;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewTreeObserver;
+import android.view.WindowInsets;
+
+import androidx.annotation.NonNull;
+
+import com.android.launcher3.AbstractFloatingView;
+import com.android.launcher3.testing.TestLogging;
+import com.android.launcher3.testing.shared.TestProtocol;
+import com.android.launcher3.util.DisplayController;
+import com.android.launcher3.util.TouchController;
+import com.android.launcher3.views.BaseDragLayer;
+
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+/** Root drag layer for the Taskbar overlay window. */
+public class TaskbarOverlayDragLayer extends
+        BaseDragLayer<TaskbarOverlayContext> implements
+        ViewTreeObserver.OnComputeInternalInsetsListener {
+
+    private final List<OnClickListener> mOnClickListeners = new CopyOnWriteArrayList<>();
+    private final TouchController mClickListenerTouchController = new TouchController() {
+        @Override
+        public boolean onControllerTouchEvent(MotionEvent ev) {
+            if (ev.getActionMasked() == MotionEvent.ACTION_UP) {
+                for (OnClickListener listener : mOnClickListeners) {
+                    listener.onClick(TaskbarOverlayDragLayer.this);
+                }
+            }
+            return false;
+        }
+
+        @Override
+        public boolean onControllerInterceptTouchEvent(MotionEvent ev) {
+            for (int i = 0; i < getChildCount(); i++) {
+                if (isEventOverView(getChildAt(i), ev)) {
+                    return false;
+                }
+            }
+            return true;
+        }
+    };
+
+    TaskbarOverlayDragLayer(Context context) {
+        super(context, null, 1);
+        setClipChildren(false);
+        recreateControllers();
+    }
+
+    @Override
+    protected void onAttachedToWindow() {
+        super.onAttachedToWindow();
+        getViewTreeObserver().addOnComputeInternalInsetsListener(this);
+    }
+
+    @Override
+    protected void onDetachedFromWindow() {
+        super.onDetachedFromWindow();
+        getViewTreeObserver().removeOnComputeInternalInsetsListener(this);
+    }
+
+    @Override
+    public void recreateControllers() {
+        mControllers = mOnClickListeners.isEmpty()
+                ? new TouchController[]{mActivity.getDragController()}
+                : new TouchController[] {
+                        mActivity.getDragController(), mClickListenerTouchController};
+    }
+
+    @Override
+    public boolean dispatchTouchEvent(MotionEvent ev) {
+        TestLogging.recordMotionEvent(TestProtocol.SEQUENCE_MAIN, "Touch event", ev);
+        return super.dispatchTouchEvent(ev);
+    }
+
+    @Override
+    public boolean dispatchKeyEvent(KeyEvent event) {
+        if (event.getAction() == ACTION_UP && event.getKeyCode() == KEYCODE_BACK) {
+            AbstractFloatingView topView = AbstractFloatingView.getTopOpenView(mActivity);
+            if (topView != null && topView.canHandleBack()) {
+                topView.onBackInvoked();
+                return true;
+            }
+        }
+        return super.dispatchKeyEvent(event);
+    }
+
+    @Override
+    public void onComputeInternalInsets(ViewTreeObserver.InternalInsetsInfo inoutInfo) {
+        if (mActivity.isAnySystemDragInProgress()) {
+            inoutInfo.touchableRegion.setEmpty();
+            inoutInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION);
+        }
+    }
+
+    @Override
+    public WindowInsets onApplyWindowInsets(WindowInsets insets) {
+        insets = updateInsetsDueToStashing(insets);
+        setInsets(insets.getInsets(WindowInsets.Type.systemBars()).toRect());
+        return insets;
+    }
+
+    @Override
+    public void onViewRemoved(View child) {
+        super.onViewRemoved(child);
+        mActivity.getOverlayController().maybeCloseWindow();
+    }
+
+    /**
+     * Adds the given callback to clicks to this drag layer.
+     * <p>
+     * Clicks are only accepted on this drag layer if they fall within this drag layer's bounds and
+     * outside the bounds of all child views.
+     * <p>
+     * If the click falls within the bounds of a child view, then this callback does not run and
+     * that child can optionally handle it.
+     */
+    private void addOnClickListener(@NonNull OnClickListener listener) {
+        boolean wasEmpty = mOnClickListeners.isEmpty();
+        mOnClickListeners.add(listener);
+        if (wasEmpty) {
+            recreateControllers();
+        }
+    }
+
+    /**
+     * Removes the given on click callback.
+     * <p>
+     * No-op if the callback was never added.
+     */
+    private void removeOnClickListener(@NonNull OnClickListener listener) {
+        boolean wasEmpty = mOnClickListeners.isEmpty();
+        mOnClickListeners.remove(listener);
+        if (!wasEmpty && mOnClickListeners.isEmpty()) {
+            recreateControllers();
+        }
+    }
+
+    /**
+     * Queues the given callback on the next click on this drag layer.
+     * <p>
+     * Once run, this callback is immediately removed.
+     */
+    public void runOnClickOnce(@NonNull OnClickListener listener) {
+        addOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                listener.onClick(v);
+                removeOnClickListener(this);
+            }
+        });
+    }
+
+    /**
+     * Taskbar automatically stashes when opening all apps, but we don't report the insets as
+     * changing to avoid moving the underlying app. But internally, the apps view should still
+     * layout according to the stashed insets rather than the unstashed insets. So this method
+     * does two things:
+     * 1) Sets navigationBars bottom inset to stashedHeight.
+     * 2) Sets tappableInsets bottom inset to 0.
+     */
+    private WindowInsets updateInsetsDueToStashing(WindowInsets oldInsets) {
+        if (!DisplayController.isTransientTaskbar(mActivity)) {
+            return oldInsets;
+        }
+        WindowInsets.Builder updatedInsetsBuilder = new WindowInsets.Builder(oldInsets);
+
+        Insets oldNavInsets = oldInsets.getInsets(WindowInsets.Type.navigationBars());
+        Insets newNavInsets = Insets.of(oldNavInsets.left, oldNavInsets.top, oldNavInsets.right,
+                mActivity.getStashedTaskbarHeight());
+        updatedInsetsBuilder.setInsets(WindowInsets.Type.navigationBars(), newNavInsets);
+
+        Insets oldTappableInsets = oldInsets.getInsets(WindowInsets.Type.tappableElement());
+        Insets newTappableInsets = Insets.of(oldTappableInsets.left, oldTappableInsets.top,
+                oldTappableInsets.right, 0);
+        updatedInsetsBuilder.setInsets(WindowInsets.Type.tappableElement(), newTappableInsets);
+
+        return updatedInsetsBuilder.build();
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java b/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java
index 2f8e4d9..a53dc15 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java
@@ -18,14 +18,17 @@
 
 import android.app.Person;
 import android.content.Context;
+import android.content.pm.LauncherActivityInfo;
+import android.content.pm.LauncherApps;
 import android.content.pm.ShortcutInfo;
-import android.content.res.Resources;
 
-import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
-import com.android.launcher3.util.DisplayController;
-import com.android.launcher3.util.DisplayController.NavigationMode;
 
+import java.util.Map;
+
+/**
+ * A wrapper for the hidden API calls
+ */
 public class ApiWrapper {
 
     public static final boolean TASKBAR_DRAWN_IN_PROCESS = true;
@@ -35,23 +38,7 @@
         return persons == null ? Utilities.EMPTY_PERSON_ARRAY : persons;
     }
 
-    /**
-     * Returns the minimum space that should be left empty at the end of hotseat
-     */
-    public static int getHotseatEndOffset(Context context) {
-        if (DisplayController.getNavigationMode(context) == NavigationMode.THREE_BUTTONS) {
-            Resources res = context.getResources();
-            /*
-            * 3 nav buttons +
-            * Little space at the end for contextual buttons +
-            * Little space between icons and nav buttons
-            */
-            return 3 * res.getDimensionPixelSize(R.dimen.taskbar_nav_buttons_size)
-                    + res.getDimensionPixelSize(R.dimen.taskbar_contextual_button_margin)
-                    + res.getDimensionPixelSize(R.dimen.taskbar_hotseat_nav_spacing);
-        } else {
-            return 0;
-        }
-
+    public static Map<String, LauncherActivityInfo> getActivityOverrides(Context context) {
+        return context.getSystemService(LauncherApps.class).getActivityOverrides();
     }
 }
diff --git a/quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java b/quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java
index 84b3839..955440b 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/BaseRecentsViewStateController.java
@@ -16,6 +16,7 @@
 
 package com.android.launcher3.uioverrides;
 
+import static com.android.launcher3.LauncherState.QUICK_SWITCH_FROM_HOME;
 import static com.android.launcher3.anim.Interpolators.AGGRESSIVE_EASE_IN_OUT;
 import static com.android.launcher3.anim.Interpolators.FINAL_FRAME;
 import static com.android.launcher3.anim.Interpolators.INSTANT;
@@ -23,25 +24,32 @@
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_FADE;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_MODAL;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_SCALE;
+import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_SPLIT_SELECT_FLOATING_TASK_TRANSLATE_OFFSCREEN;
+import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_SPLIT_SELECT_INSTRUCTIONS_FADE;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_TRANSLATE_X;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_TRANSLATE_Y;
 import static com.android.launcher3.states.StateAnimationConfig.SKIP_OVERVIEW;
-import static com.android.launcher3.testing.TestProtocol.BAD_STATE;
+import static com.android.quickstep.views.FloatingTaskView.PRIMARY_TRANSLATE_OFFSCREEN;
 import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET;
 import static com.android.quickstep.views.RecentsView.RECENTS_GRID_PROGRESS;
 import static com.android.quickstep.views.RecentsView.RECENTS_SCALE_PROPERTY;
 import static com.android.quickstep.views.RecentsView.TASK_SECONDARY_TRANSLATION;
+import static com.android.quickstep.views.RecentsView.TASK_THUMBNAIL_SPLASH_ALPHA;
 
+import android.graphics.Rect;
+import android.graphics.RectF;
 import android.util.FloatProperty;
-import android.util.Log;
+import android.view.animation.Interpolator;
 
 import androidx.annotation.NonNull;
 
-import com.android.launcher3.BaseQuickstepLauncher;
 import com.android.launcher3.LauncherState;
+import com.android.launcher3.Utilities;
 import com.android.launcher3.anim.PendingAnimation;
+import com.android.launcher3.dragndrop.DragLayer;
 import com.android.launcher3.statemanager.StateManager.StateHandler;
 import com.android.launcher3.states.StateAnimationConfig;
+import com.android.quickstep.views.FloatingTaskView;
 import com.android.quickstep.views.RecentsView;
 
 /**
@@ -53,9 +61,9 @@
 public abstract class BaseRecentsViewStateController<T extends RecentsView>
         implements StateHandler<LauncherState> {
     protected final T mRecentsView;
-    protected final BaseQuickstepLauncher mLauncher;
+    protected final QuickstepLauncher mLauncher;
 
-    public BaseRecentsViewStateController(@NonNull BaseQuickstepLauncher launcher) {
+    public BaseRecentsViewStateController(@NonNull QuickstepLauncher launcher) {
         mLauncher = launcher;
         mRecentsView = launcher.getOverviewPanel();
     }
@@ -67,24 +75,25 @@
         ADJACENT_PAGE_HORIZONTAL_OFFSET.set(mRecentsView, scaleAndOffset[1]);
         TASK_SECONDARY_TRANSLATION.set(mRecentsView, 0f);
 
-        float recentsAlpha = state.overviewUi ? 1f : 0;
-        Log.d(BAD_STATE, "BaseRecentsViewStateController setState state=" + state
-                + ", alpha=" + recentsAlpha);
-        getContentAlphaProperty().set(mRecentsView, recentsAlpha);
+        getContentAlphaProperty().set(mRecentsView, state.overviewUi ? 1f : 0);
         getTaskModalnessProperty().set(mRecentsView, state.getOverviewModalness());
         RECENTS_GRID_PROGRESS.set(mRecentsView,
                 state.displayOverviewTasksAsGrid(mLauncher.getDeviceProfile()) ? 1f : 0f);
+        TASK_THUMBNAIL_SPLASH_ALPHA.set(mRecentsView, state.showTaskThumbnailSplash() ? 1f : 0f);
     }
 
     @Override
     public void setStateWithAnimation(LauncherState toState, StateAnimationConfig config,
             PendingAnimation builder) {
-        Log.d(BAD_STATE, "BaseRecentsViewStateController setStateWithAnimation state=" + toState
-                + ", config.skipOverview=" + config.hasAnimationFlag(SKIP_OVERVIEW));
         if (config.hasAnimationFlag(SKIP_OVERVIEW)) {
             return;
         }
         setStateWithAnimationInternal(toState, config, builder);
+        builder.addEndListener(success -> {
+            if (!success) {
+                mRecentsView.reset();
+            }
+        });
     }
 
     /**
@@ -104,19 +113,70 @@
         setter.setFloat(mRecentsView, TASK_SECONDARY_TRANSLATION, 0f,
                 config.getInterpolator(ANIM_OVERVIEW_TRANSLATE_Y, LINEAR));
 
-        float recentsAlpha = toState.overviewUi ? 1 : 0;
-        Log.d(BAD_STATE, "BaseRecentsViewStateController setStateWithAnimationInternal toState="
-                + toState + ", alpha=" + recentsAlpha);
-        setter.setFloat(mRecentsView, getContentAlphaProperty(), recentsAlpha,
+        if (mRecentsView.isSplitSelectionActive()) {
+            // TODO (b/238651489): Refactor state management to avoid need for double check
+            FloatingTaskView floatingTask = mRecentsView.getFirstFloatingTaskView();
+            if (floatingTask != null) {
+                // We are in split selection state currently, transitioning to another state
+                DragLayer dragLayer = mLauncher.getDragLayer();
+                RectF onScreenRectF = new RectF();
+                Utilities.getBoundsForViewInDragLayer(mLauncher.getDragLayer(), floatingTask,
+                        new Rect(0, 0, floatingTask.getWidth(), floatingTask.getHeight()),
+                        false, null, onScreenRectF);
+                // Get the part of the floatingTask that intersects with the DragLayer (i.e. the
+                // on-screen portion)
+                onScreenRectF.intersect(
+                        dragLayer.getLeft(),
+                        dragLayer.getTop(),
+                        dragLayer.getRight(),
+                        dragLayer.getBottom()
+                );
+
+                setter.setFloat(
+                        mRecentsView.getFirstFloatingTaskView(),
+                        PRIMARY_TRANSLATE_OFFSCREEN,
+                        mRecentsView.getPagedOrientationHandler()
+                                .getFloatingTaskOffscreenTranslationTarget(
+                                        floatingTask,
+                                        onScreenRectF,
+                                        floatingTask.getStagePosition(),
+                                        mLauncher.getDeviceProfile()
+                                ),
+                        config.getInterpolator(
+                                ANIM_OVERVIEW_SPLIT_SELECT_FLOATING_TASK_TRANSLATE_OFFSCREEN,
+                                LINEAR
+                        ));
+                setter.setViewAlpha(
+                        mRecentsView.getSplitInstructionsView(),
+                        0,
+                        config.getInterpolator(
+                                ANIM_OVERVIEW_SPLIT_SELECT_INSTRUCTIONS_FADE,
+                                LINEAR
+                        )
+                );
+            }
+        }
+
+        setter.setFloat(mRecentsView, getContentAlphaProperty(), toState.overviewUi ? 1 : 0,
                 config.getInterpolator(ANIM_OVERVIEW_FADE, AGGRESSIVE_EASE_IN_OUT));
 
         setter.setFloat(
                 mRecentsView, getTaskModalnessProperty(),
                 toState.getOverviewModalness(),
                 config.getInterpolator(ANIM_OVERVIEW_MODAL, LINEAR));
+
+        LauncherState fromState = mLauncher.getStateManager().getState();
+        setter.setFloat(mRecentsView, TASK_THUMBNAIL_SPLASH_ALPHA,
+                toState.showTaskThumbnailSplash() ? 1f : 0f,
+                !toState.showTaskThumbnailSplash() && fromState == QUICK_SWITCH_FROM_HOME
+                        ? LINEAR : INSTANT);
+
         boolean showAsGrid = toState.displayOverviewTasksAsGrid(mLauncher.getDeviceProfile());
+        Interpolator gridProgressInterpolator = showAsGrid
+                ? fromState == QUICK_SWITCH_FROM_HOME ? LINEAR : INSTANT
+                : FINAL_FRAME;
         setter.setFloat(mRecentsView, RECENTS_GRID_PROGRESS, showAsGrid ? 1f : 0f,
-                showAsGrid ? INSTANT : FINAL_FRAME);
+                gridProgressInterpolator);
     }
 
     abstract FloatProperty getTaskModalnessProperty();
diff --git a/quickstep/src/com/android/launcher3/uioverrides/DeviceFlag.java b/quickstep/src/com/android/launcher3/uioverrides/DeviceFlag.java
deleted file mode 100644
index c46809a..0000000
--- a/quickstep/src/com/android/launcher3/uioverrides/DeviceFlag.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2019 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.launcher3.uioverrides;
-
-import android.annotation.TargetApi;
-import android.os.Build;
-import android.provider.DeviceConfig;
-
-import com.android.launcher3.config.FeatureFlags.DebugFlag;
-
-@TargetApi(Build.VERSION_CODES.P)
-public class DeviceFlag extends DebugFlag {
-
-    public static final String NAMESPACE_LAUNCHER = "launcher";
-
-    private final boolean mDefaultValueInCode;
-
-    public DeviceFlag(String key, boolean defaultValue, String description) {
-        super(key, getDeviceValue(key, defaultValue), description);
-        mDefaultValueInCode = defaultValue;
-    }
-
-    @Override
-    protected StringBuilder appendProps(StringBuilder src) {
-        return super.appendProps(src).append(", mDefaultValueInCode=").append(mDefaultValueInCode);
-    }
-
-    @Override
-    public boolean get() {
-        // Override this method in order to let Robolectric ShadowDeviceFlag to stub it.
-        return super.get();
-    }
-
-    protected static boolean getDeviceValue(String key, boolean defaultValue) {
-        return DeviceConfig.getBoolean(NAMESPACE_LAUNCHER, key, defaultValue);
-    }
-}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/PredictedAppIcon.java b/quickstep/src/com/android/launcher3/uioverrides/PredictedAppIcon.java
index 5f3a990..a8b7698 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/PredictedAppIcon.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/PredictedAppIcon.java
@@ -17,6 +17,7 @@
 
 import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL;
 import static com.android.launcher3.icons.BitmapInfo.FLAG_THEMED;
+import static com.android.launcher3.icons.FastBitmapDrawable.getDisabledColorFilter;
 
 import android.animation.Animator;
 import android.animation.AnimatorSet;
@@ -49,12 +50,13 @@
 import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.R;
 import com.android.launcher3.anim.AnimatorListeners;
+import com.android.launcher3.celllayout.CellLayoutLayoutParams;
 import com.android.launcher3.icons.BitmapInfo;
 import com.android.launcher3.icons.GraphicsUtils;
 import com.android.launcher3.icons.IconNormalizer;
 import com.android.launcher3.icons.LauncherIcons;
+import com.android.launcher3.model.data.ItemInfoWithIcon;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
-import com.android.launcher3.touch.ItemClickHandler;
 import com.android.launcher3.touch.ItemLongClickListener;
 import com.android.launcher3.util.SafeCloseable;
 import com.android.launcher3.views.ActivityContext;
@@ -123,7 +125,7 @@
         int shadowSize = context.getResources().getDimensionPixelSize(
                 R.dimen.blur_size_thin_outline);
         mShadowFilter = new BlurMaskFilter(shadowSize, BlurMaskFilter.Blur.OUTER);
-        mShapePath = GraphicsUtils.getShapePath(mNormalizedIconSize);
+        mShapePath = GraphicsUtils.getShapePath(context, mNormalizedIconSize);
     }
 
     @Override
@@ -180,7 +182,16 @@
                 : null;
         super.applyFromWorkspaceItem(info, animate, staggerIndex);
         int oldPlateColor = mPlateColor;
-        int newPlateColor = ColorUtils.setAlphaComponent(mDotParams.appColor, 200);
+
+        int newPlateColor;
+        if (getIcon().isThemed()) {
+            newPlateColor = getResources().getColor(android.R.color.system_accent1_300);
+        } else {
+            float[] hctPlateColor = new float[3];
+            ColorUtils.colorToM3HCT(mDotParams.appColor, hctPlateColor);
+            newPlateColor = ColorUtils.M3HCTtoColor(hctPlateColor[0], 36, 85);
+        }
+
         if (!animate) {
             mPlateColor = newPlateColor;
         }
@@ -271,7 +282,7 @@
         mIsPinned = true;
         applyFromWorkspaceItem(info);
         setOnLongClickListener(ItemLongClickListener.INSTANCE_WORKSPACE);
-        ((CellLayout.LayoutParams) getLayoutParams()).canReorder = true;
+        ((CellLayoutLayoutParams) getLayoutParams()).canReorder = true;
         invalidate();
     }
 
@@ -280,7 +291,7 @@
      */
     public void finishBinding(OnLongClickListener longClickListener) {
         setOnLongClickListener(longClickListener);
-        ((CellLayout.LayoutParams) getLayoutParams()).canReorder = false;
+        ((CellLayoutLayoutParams) getLayoutParams()).canReorder = false;
         setTextVisibility(false);
         verifyHighRes();
     }
@@ -360,6 +371,19 @@
     }
 
     @Override
+    public void setIconDisabled(boolean isDisabled) {
+        super.setIconDisabled(isDisabled);
+        mIconRingPaint.setColorFilter(isDisabled ? getDisabledColorFilter() : null);
+        invalidate();
+    }
+
+    @Override
+    protected void setItemInfo(ItemInfoWithIcon itemInfo) {
+        super.setItemInfo(itemInfo);
+        setIconDisabled(itemInfo.isDisabled());
+    }
+
+    @Override
     public void getSourceVisualDragBounds(Rect bounds) {
         super.getSourceVisualDragBounds(bounds);
         if (!mIsPinned) {
@@ -386,8 +410,9 @@
         PredictedAppIcon icon = (PredictedAppIcon) LayoutInflater.from(parent.getContext())
                 .inflate(R.layout.predicted_app_icon, parent, false);
         icon.applyFromWorkspaceItem(info);
-        icon.setOnClickListener(ItemClickHandler.INSTANCE);
-        icon.setOnFocusChangeListener(Launcher.getLauncher(parent.getContext()).getFocusHandler());
+        Launcher launcher = Launcher.getLauncher(parent.getContext());
+        icon.setOnClickListener(launcher.getItemOnClickListener());
+        icon.setOnFocusChangeListener(launcher.getFocusHandler());
         return icon;
     }
 
diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepAppWidgetHost.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepAppWidgetHost.java
new file mode 100644
index 0000000..6659fa0
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepAppWidgetHost.java
@@ -0,0 +1,70 @@
+/**
+ * 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.launcher3.uioverrides;
+
+import static com.android.launcher3.widget.LauncherWidgetHolder.APPWIDGET_HOST_ID;
+
+import android.appwidget.AppWidgetHost;
+import android.appwidget.AppWidgetProviderInfo;
+import android.content.Context;
+import android.os.Looper;
+
+import androidx.annotation.NonNull;
+
+import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
+import com.android.launcher3.widget.LauncherWidgetHolder;
+
+import java.util.function.IntConsumer;
+
+/**
+ * {@link AppWidgetHost} that is used to receive the changes to the widgets without
+ * storing any {@code Activity} info like that of the launcher.
+ */
+final class QuickstepAppWidgetHost extends AppWidgetHost {
+    private final @NonNull Context mContext;
+    private final @NonNull IntConsumer mAppWidgetRemovedCallback;
+    private final @NonNull LauncherWidgetHolder.ProviderChangedListener mProvidersChangedListener;
+
+    QuickstepAppWidgetHost(@NonNull Context context, @NonNull IntConsumer appWidgetRemovedCallback,
+            @NonNull LauncherWidgetHolder.ProviderChangedListener listener,
+            @NonNull Looper looper) {
+        super(context, APPWIDGET_HOST_ID, null, looper);
+        mContext = context;
+        mAppWidgetRemovedCallback = appWidgetRemovedCallback;
+        mProvidersChangedListener = listener;
+    }
+
+    @Override
+    protected void onProvidersChanged() {
+        mProvidersChangedListener.notifyWidgetProvidersChanged();
+    }
+
+    @Override
+    public void onAppWidgetRemoved(int appWidgetId) {
+        mAppWidgetRemovedCallback.accept(appWidgetId);
+    }
+
+    @Override
+    protected void onProviderChanged(int appWidgetId, @NonNull AppWidgetProviderInfo appWidget) {
+        LauncherAppWidgetProviderInfo info = LauncherAppWidgetProviderInfo.fromProviderInfo(
+                mContext, appWidget);
+        super.onProviderChanged(appWidgetId, info);
+        // The super method updates the dimensions of the providerInfo. Update the
+        // launcher spans accordingly.
+        info.initSpans(mContext, LauncherAppState.getIDP(mContext));
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java
index 08d147f..f5ba8f9 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java
@@ -56,6 +56,10 @@
             return RemoteViews.startPendingIntent(hostView, pendingIntent,
                     remoteResponse.getLaunchOptions(view));
         }
+        if (mLauncher.getSplitToWorkspaceController().handleSecondWidgetSelectionForSplit(view,
+                pendingIntent)) {
+            return true;
+        }
         Pair<Intent, ActivityOptions> options = remoteResponse.getLaunchOptions(view);
         ActivityOptionsWrapper activityOptions = mLauncher.getAppTransitionManager()
                 .getActivityLaunchOptions(hostView);
@@ -80,6 +84,8 @@
         }
         activityOptions.options.setPendingIntentLaunchFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         activityOptions.options.setSplashScreenStyle(SplashScreen.SPLASH_SCREEN_STYLE_SOLID_COLOR);
+        activityOptions.options.setPendingIntentBackgroundActivityStartMode(
+                ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED);
         options = Pair.create(options.first, activityOptions.options);
         if (pendingIntent.isActivity()) {
             logAppLaunch(itemInfo);
diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
index 4bb4343..e4e8880 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * 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.
@@ -15,49 +15,122 @@
  */
 package com.android.launcher3.uioverrides;
 
+import static android.app.ActivityTaskManager.INVALID_TASK_ID;
+import static android.os.Trace.TRACE_TAG_APP;
+import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_OPTIMIZE_MEASURE;
 import static android.view.accessibility.AccessibilityEvent.TYPE_VIEW_FOCUSED;
 
+import static com.android.launcher3.LauncherSettings.Animation.DEFAULT_NO_ICON;
+import static com.android.launcher3.LauncherSettings.Animation.VIEW_BACKGROUND;
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_HOTSEAT;
 import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION;
 import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT;
 import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT;
 import static com.android.launcher3.LauncherState.ALL_APPS;
 import static com.android.launcher3.LauncherState.NORMAL;
+import static com.android.launcher3.LauncherState.NO_OFFSET;
 import static com.android.launcher3.LauncherState.OVERVIEW;
 import static com.android.launcher3.LauncherState.OVERVIEW_MODAL_TASK;
+import static com.android.launcher3.LauncherState.OVERVIEW_SPLIT_SELECT;
+import static com.android.launcher3.anim.Interpolators.EMPHASIZED;
 import static com.android.launcher3.compat.AccessibilityManagerCompat.sendCustomAccessibilityEvent;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_WIDGET_APP_START;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_SPLIT_FROM_WORKSPACE;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_SPLIT_FROM_WORKSPACE_TO_WORKSPACE;
+import static com.android.launcher3.config.FeatureFlags.RECEIVE_UNFOLD_EVENTS_FROM_SYSUI;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_APP_LAUNCH_TAP;
-import static com.android.launcher3.testing.TestProtocol.HINT_STATE_ORDINAL;
-import static com.android.launcher3.testing.TestProtocol.HINT_STATE_TWO_BUTTON_ORDINAL;
-import static com.android.launcher3.testing.TestProtocol.OVERVIEW_STATE_ORDINAL;
-import static com.android.launcher3.testing.TestProtocol.QUICK_SWITCH_STATE_ORDINAL;
+import static com.android.launcher3.model.data.ItemInfo.NO_MATCHING_ID;
+import static com.android.launcher3.popup.QuickstepSystemShortcut.getSplitSelectShortcutByPosition;
+import static com.android.launcher3.popup.SystemShortcut.APP_INFO;
+import static com.android.launcher3.popup.SystemShortcut.INSTALL;
+import static com.android.launcher3.popup.SystemShortcut.WIDGETS;
+import static com.android.launcher3.taskbar.LauncherTaskbarUIController.ALL_APPS_PAGE_PROGRESS_INDEX;
+import static com.android.launcher3.taskbar.LauncherTaskbarUIController.MINUS_ONE_PAGE_PROGRESS_INDEX;
+import static com.android.launcher3.taskbar.LauncherTaskbarUIController.WIDGETS_PAGE_PROGRESS_INDEX;
+import static com.android.launcher3.testing.shared.TestProtocol.HINT_STATE_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.HINT_STATE_TWO_BUTTON_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.OVERVIEW_STATE_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.QUICK_SWITCH_STATE_ORDINAL;
+import static com.android.launcher3.util.DisplayController.CHANGE_ACTIVE_SCREEN;
+import static com.android.launcher3.util.DisplayController.CHANGE_NAVIGATION_MODE;
+import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
+import static com.android.launcher3.util.SplitConfigurationOptions.DEFAULT_SPLIT_RATIO;
+import static com.android.quickstep.util.SplitAnimationTimings.TABLET_HOME_TO_SPLIT;
 import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_HOME_KEY;
 
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.AnimatorSet;
+import android.animation.ValueAnimator;
+import android.app.ActivityManager;
+import android.app.ActivityOptions;
+import android.content.Context;
 import android.content.Intent;
+import android.content.IntentSender;
 import android.content.SharedPreferences;
 import android.content.res.Configuration;
+import android.graphics.Color;
+import android.graphics.Rect;
+import android.graphics.RectF;
+import android.hardware.SensorManager;
+import android.hardware.devicestate.DeviceStateManager;
+import android.hardware.display.DisplayManager;
+import android.media.permission.SafeCloseable;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.CancellationSignal;
+import android.os.IBinder;
+import android.os.SystemProperties;
+import android.os.Trace;
+import android.view.Display;
 import android.view.HapticFeedbackConstants;
+import android.view.RemoteAnimationTarget;
 import android.view.View;
+import android.window.BackEvent;
+import android.window.OnBackAnimationCallback;
+import android.window.OnBackInvokedDispatcher;
+import android.window.SplashScreen;
 
-import com.android.launcher3.BaseQuickstepLauncher;
+import androidx.annotation.BinderThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+
+import com.android.app.viewcapture.SettingsAwareViewCapture;
+import com.android.launcher3.AbstractFloatingView;
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherSettings.Favorites;
 import com.android.launcher3.LauncherState;
 import com.android.launcher3.QuickstepAccessibilityDelegate;
+import com.android.launcher3.QuickstepTransitionManager;
+import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
 import com.android.launcher3.Workspace;
 import com.android.launcher3.accessibility.LauncherAccessibilityDelegate;
 import com.android.launcher3.anim.AnimatorPlaybackController;
+import com.android.launcher3.anim.PendingAnimation;
 import com.android.launcher3.appprediction.PredictionRowView;
+import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.dragndrop.DragOptions;
 import com.android.launcher3.hybridhotseat.HotseatPredictionController;
 import com.android.launcher3.logging.InstanceId;
 import com.android.launcher3.logging.StatsLogManager;
 import com.android.launcher3.logging.StatsLogManager.StatsLogger;
 import com.android.launcher3.model.BgDataModel.FixedContainerItems;
+import com.android.launcher3.model.WellbeingModel;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.popup.SystemShortcut;
+import com.android.launcher3.proxy.ProxyActivityStarter;
+import com.android.launcher3.proxy.StartActivityParams;
+import com.android.launcher3.statehandlers.DepthController;
+import com.android.launcher3.statehandlers.DesktopVisibilityController;
 import com.android.launcher3.statemanager.StateManager.AtomicAnimationFactory;
+import com.android.launcher3.statemanager.StateManager.StateHandler;
+import com.android.launcher3.taskbar.LauncherTaskbarUIController;
+import com.android.launcher3.taskbar.TaskbarManager;
+import com.android.launcher3.testing.TestLogging;
+import com.android.launcher3.testing.shared.TestProtocol;
+import com.android.launcher3.uioverrides.QuickstepWidgetHolder.QuickstepHolderFactory;
 import com.android.launcher3.uioverrides.states.QuickstepAtomicAnimationFactory;
 import com.android.launcher3.uioverrides.touchcontrollers.NavBarToHomeTouchController;
 import com.android.launcher3.uioverrides.touchcontrollers.NoButtonNavbarToOverviewTouchController;
@@ -68,42 +141,129 @@
 import com.android.launcher3.uioverrides.touchcontrollers.TaskViewTouchController;
 import com.android.launcher3.uioverrides.touchcontrollers.TransposedQuickSwitchTouchController;
 import com.android.launcher3.uioverrides.touchcontrollers.TwoButtonNavbarTouchController;
+import com.android.launcher3.util.ActivityOptionsWrapper;
+import com.android.launcher3.util.ComponentKey;
 import com.android.launcher3.util.DisplayController;
-import com.android.launcher3.util.DisplayController.NavigationMode;
+import com.android.launcher3.util.Executors;
+import com.android.launcher3.util.IntSet;
+import com.android.launcher3.util.NavigationMode;
+import com.android.launcher3.util.ObjectWrapper;
 import com.android.launcher3.util.PendingRequestArgs;
+import com.android.launcher3.util.PendingSplitSelectInfo;
+import com.android.launcher3.util.RunnableList;
+import com.android.launcher3.util.SplitConfigurationOptions;
+import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption;
+import com.android.launcher3.util.SplitConfigurationOptions.SplitSelectSource;
 import com.android.launcher3.util.TouchController;
-import com.android.launcher3.util.UiThreadHelper;
-import com.android.launcher3.util.UiThreadHelper.AsyncCommand;
-import com.android.launcher3.widget.LauncherAppWidgetHost;
+import com.android.launcher3.widget.LauncherWidgetHolder;
+import com.android.quickstep.OverviewCommandHelper;
+import com.android.quickstep.RecentsModel;
 import com.android.quickstep.SystemUiProxy;
 import com.android.quickstep.TaskUtils;
+import com.android.quickstep.TouchInteractionService.TISBinder;
+import com.android.quickstep.util.GroupTask;
+import com.android.quickstep.util.LauncherUnfoldAnimationController;
+import com.android.quickstep.util.ProxyScreenStatusProvider;
 import com.android.quickstep.util.QuickstepOnboardingPrefs;
+import com.android.quickstep.util.RemoteAnimationProvider;
+import com.android.quickstep.util.RemoteFadeOutAnimationListener;
+import com.android.quickstep.util.SplitSelectStateController;
+import com.android.quickstep.util.SplitToWorkspaceController;
+import com.android.quickstep.util.SplitWithKeyboardShortcutController;
+import com.android.quickstep.util.TISBindHelper;
+import com.android.quickstep.views.DesktopTaskView;
+import com.android.quickstep.views.FloatingTaskView;
+import com.android.quickstep.views.OverviewActionsView;
 import com.android.quickstep.views.RecentsView;
 import com.android.quickstep.views.TaskView;
+import com.android.systemui.shared.system.ActivityManagerWrapper;
+import com.android.systemui.unfold.RemoteUnfoldSharedComponent;
+import com.android.systemui.unfold.UnfoldSharedComponent;
+import com.android.systemui.unfold.UnfoldTransitionFactory;
+import com.android.systemui.unfold.UnfoldTransitionProgressProvider;
+import com.android.systemui.unfold.config.ResourceUnfoldTransitionConfig;
+import com.android.systemui.unfold.config.UnfoldTransitionConfig;
+import com.android.systemui.unfold.progress.RemoteUnfoldTransitionReceiver;
+import com.android.systemui.unfold.system.ActivityManagerActivityTypeProvider;
+import com.android.systemui.unfold.system.DeviceStateManagerFoldProvider;
+import com.android.systemui.unfold.updates.RotationChangeProvider;
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
 import java.util.Objects;
 import java.util.function.Predicate;
 import java.util.stream.Stream;
 
-public class QuickstepLauncher extends BaseQuickstepLauncher {
+public class QuickstepLauncher extends Launcher {
+
+    public static final boolean ENABLE_PIP_KEEP_CLEAR_ALGORITHM =
+            SystemProperties.getBoolean("persist.wm.debug.enable_pip_keep_clear_algorithm", true);
 
     public static final boolean GO_LOW_RAM_RECENTS_ENABLED = false;
-    /**
-     * Reusable command for applying the shelf height on the background thread.
-     */
-    public static final AsyncCommand SET_SHELF_HEIGHT = (context, arg1, arg2) ->
-            SystemUiProxy.INSTANCE.get(context).setShelfHeight(arg1 != 0, arg2);
 
     private FixedContainerItems mAllAppsPredictions;
     private HotseatPredictionController mHotseatPredictionController;
+    private DepthController mDepthController;
+    private DesktopVisibilityController mDesktopVisibilityController;
+    private QuickstepTransitionManager mAppTransitionManager;
+    private OverviewActionsView mActionsView;
+    private TISBindHelper mTISBindHelper;
+    private @Nullable TaskbarManager mTaskbarManager;
+    private @Nullable OverviewCommandHelper mOverviewCommandHelper;
+    private @Nullable LauncherTaskbarUIController mTaskbarUIController;
+    // Will be updated when dragging from taskbar.
+    private @Nullable DragOptions mNextWorkspaceDragOptions = null;
+    private @Nullable UnfoldTransitionProgressProvider mUnfoldTransitionProgressProvider;
+    private @Nullable LauncherUnfoldAnimationController mLauncherUnfoldAnimationController;
+
+    private SplitSelectStateController mSplitSelectStateController;
+    private SplitWithKeyboardShortcutController mSplitWithKeyboardShortcutController;
+    private SplitToWorkspaceController mSplitToWorkspaceController;
+
+    /**
+     * If Launcher restarted while in the middle of an Overview split select, it needs this data to
+     * recover. In all other cases this will remain null.
+     */
+    private PendingSplitSelectInfo mPendingSplitSelectInfo = null;
+
+    private SafeCloseable mViewCapture;
+
+    private boolean mEnableWidgetDepth;
 
     @Override
     protected void setupViews() {
         super.setupViews();
+
+        mActionsView = findViewById(R.id.overview_actions_view);
+        RecentsView overviewPanel = getOverviewPanel();
+        mSplitSelectStateController =
+                new SplitSelectStateController(this, mHandler, getStateManager(),
+                        getDepthController(), getStatsLogManager(),
+                        SystemUiProxy.INSTANCE.get(this), RecentsModel.INSTANCE.get(this));
+        overviewPanel.init(mActionsView, mSplitSelectStateController);
+        mSplitWithKeyboardShortcutController = new SplitWithKeyboardShortcutController(this,
+                mSplitSelectStateController);
+        mSplitToWorkspaceController = new SplitToWorkspaceController(this,
+                mSplitSelectStateController);
+        mActionsView.updateDimension(getDeviceProfile(), overviewPanel.getLastComputedTaskSize());
+        mActionsView.updateVerticalMargin(DisplayController.getNavigationMode(this));
+
+        mAppTransitionManager = buildAppTransitionManager();
+        mAppTransitionManager.registerRemoteAnimations();
+        mAppTransitionManager.registerRemoteTransitions();
+
+        mTISBindHelper = new TISBindHelper(this, this::onTISConnected);
+        mDepthController = new DepthController(this);
+        mDesktopVisibilityController = new DesktopVisibilityController(this);
         mHotseatPredictionController = new HotseatPredictionController(this);
+
+        mEnableWidgetDepth = SystemProperties.getBoolean("ro.launcher.depth.widget", true);
+        getWorkspace().addOverlayCallback(progress ->
+                onTaskbarInAppDisplayProgressUpdate(progress, MINUS_ONE_PAGE_PROGRESS_INDEX));
     }
 
     @Override
@@ -161,6 +321,19 @@
     }
 
     @Override
+    public void enableHotseatEdu(boolean enable) {
+        super.enableHotseatEdu(enable);
+        mHotseatPredictionController.enableHotseatEdu(enable);
+    }
+
+    /**
+     * Builds the {@link QuickstepTransitionManager} instance to use for managing transitions.
+     */
+    protected QuickstepTransitionManager buildAppTransitionManager() {
+        return new QuickstepTransitionManager(this);
+    }
+
+    @Override
     protected QuickstepOnboardingPrefs createOnboardingPrefs(SharedPreferences sharedPrefs) {
         return new QuickstepOnboardingPrefs(this, sharedPrefs);
     }
@@ -172,28 +345,35 @@
     }
 
     @Override
-    public boolean startActivitySafely(View v, Intent intent, ItemInfo item) {
+    public RunnableList startActivitySafely(View v, Intent intent, ItemInfo item) {
         // Only pause is taskbar controller is not present
         mHotseatPredictionController.setPauseUIUpdate(getTaskbarUIController() == null);
-        boolean started = super.startActivitySafely(v, intent, item);
-        if (getTaskbarUIController() == null && !started) {
+        RunnableList result = super.startActivitySafely(v, intent, item);
+        if (getTaskbarUIController() == null && result == null) {
             mHotseatPredictionController.setPauseUIUpdate(false);
+        } else {
+            result.add(() -> mHotseatPredictionController.setPauseUIUpdate(false));
         }
-        return started;
+        return result;
     }
 
     @Override
     protected void onActivityFlagsChanged(int changeBits) {
+        if ((changeBits & ACTIVITY_STATE_STARTED) != 0) {
+            mDepthController.setActivityStarted(isStarted());
+        }
+
+        if ((changeBits & ACTIVITY_STATE_RESUMED) != 0) {
+            if (mTaskbarUIController != null) {
+                mTaskbarUIController.onLauncherResumedOrPaused(hasBeenResumed());
+            }
+        }
+
         super.onActivityFlagsChanged(changeBits);
         if ((changeBits & (ACTIVITY_STATE_DEFERRED_RESUMED | ACTIVITY_STATE_STARTED
                 | ACTIVITY_STATE_USER_ACTIVE | ACTIVITY_STATE_TRANSITION_ACTIVE)) != 0) {
             onStateOrResumeChanging((getActivityFlags() & ACTIVITY_STATE_TRANSITION_ACTIVE) == 0);
         }
-
-        if (((changeBits & ACTIVITY_STATE_STARTED) != 0
-                || (changeBits & getActivityFlags() & ACTIVITY_STATE_DEFERRED_RESUMED) != 0)) {
-            mHotseatPredictionController.setPauseUIUpdate(false);
-        }
     }
 
     @Override
@@ -202,10 +382,43 @@
         super.showAllAppsFromIntent(alreadyOnHome);
     }
 
+    protected void onItemClicked(View view) {
+        if (!mSplitToWorkspaceController.handleSecondAppSelectionForSplit(view)) {
+            QuickstepLauncher.super.getItemOnClickListener().onClick(view);
+        }
+    }
+
+    @Override
+    public View.OnClickListener getItemOnClickListener() {
+        return this::onItemClicked;
+    }
+
     @Override
     public Stream<SystemShortcut.Factory> getSupportedShortcuts() {
-        return Stream.concat(
-                Stream.of(mHotseatPredictionController), super.getSupportedShortcuts());
+        // Order matters as it affects order of appearance in popup container
+        List<SystemShortcut.Factory> shortcuts = new ArrayList(Arrays.asList(
+                APP_INFO, WellbeingModel.SHORTCUT_FACTORY, mHotseatPredictionController));
+        shortcuts.addAll(getSplitShortcuts());
+        shortcuts.add(WIDGETS);
+        shortcuts.add(INSTALL);
+        return shortcuts.stream();
+    }
+
+    private List<SystemShortcut.Factory<QuickstepLauncher>> getSplitShortcuts() {
+
+        if (!ENABLE_SPLIT_FROM_WORKSPACE.get() || !mDeviceProfile.isTablet) {
+            return Collections.emptyList();
+        }
+        RecentsView recentsView = getOverviewPanel();
+        // TODO(b/266482558): Pull it out of PagedOrentationHandler for split from workspace.
+        List<SplitPositionOption> positions =
+                recentsView.getPagedOrientationHandler().getSplitPositionOptions(
+                        mDeviceProfile);
+        List<SystemShortcut.Factory<QuickstepLauncher>> splitShortcuts = new ArrayList<>();
+        for (SplitPositionOption position : positions) {
+            splitShortcuts.add(getSplitSelectShortcutByPosition(position));
+        }
+        return splitShortcuts;
     }
 
     /**
@@ -221,8 +434,12 @@
             boolean visible = (state == NORMAL || state == OVERVIEW)
                     && (willUserBeActive || isUserActive())
                     && !profile.isVerticalBarLayout();
-            UiThreadHelper.runAsyncCommand(this, SET_SHELF_HEIGHT, visible ? 1 : 0,
-                    profile.hotseatBarSizePx);
+            if (ENABLE_PIP_KEEP_CLEAR_ALGORITHM)  {
+                SystemUiProxy.INSTANCE.get(this)
+                        .setLauncherKeepClearAreaHeight(visible, profile.hotseatBarSizePx);
+            } else {
+                SystemUiProxy.INSTANCE.get(this).setShelfHeight(visible, profile.hotseatBarSizePx);
+            }
         }
         if (state == NORMAL && !inTransition) {
             ((RecentsView) getOverviewPanel()).setSwipeDownShouldLaunchApp(false);
@@ -252,13 +469,30 @@
 
     @Override
     public void onDestroy() {
+        mAppTransitionManager.onActivityDestroyed();
+        if (mUnfoldTransitionProgressProvider != null) {
+            mUnfoldTransitionProgressProvider.destroy();
+        }
+
+        mTISBindHelper.onDestroy();
+        if (mTaskbarManager != null) {
+            mTaskbarManager.clearActivity(this);
+        }
+
+        if (mLauncherUnfoldAnimationController != null) {
+            mLauncherUnfoldAnimationController.onDestroy();
+        }
+
         super.onDestroy();
         mHotseatPredictionController.destroy();
+        mSplitWithKeyboardShortcutController.onDestroy();
+        if (mViewCapture != null) mViewCapture.close();
     }
 
     @Override
     public void onStateSetEnd(LauncherState state) {
         super.onStateSetEnd(state);
+        handlePendingActivityRequest();
 
         switch (state.ordinal) {
             case HINT_STATE_ORDINAL: {
@@ -337,12 +571,731 @@
         return new QuickstepAtomicAnimationFactory(this);
     }
 
-    protected LauncherAppWidgetHost createAppWidgetHost() {
-        LauncherAppWidgetHost appWidgetHost = super.createAppWidgetHost();
-        if (ENABLE_QUICKSTEP_WIDGET_APP_START.get()) {
-            appWidgetHost.setInteractionHandler(new QuickstepInteractionHandler(this));
+    @Override
+    protected LauncherWidgetHolder createAppWidgetHolder() {
+        final QuickstepHolderFactory factory =
+                (QuickstepHolderFactory) LauncherWidgetHolder.HolderFactory.newFactory(this);
+        return factory.newInstance(this,
+                appWidgetId -> getWorkspace().removeWidget(appWidgetId),
+                new QuickstepInteractionHandler(this));
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        if (Utilities.ATLEAST_U && FeatureFlags.ENABLE_BACK_SWIPE_LAUNCHER_ANIMATION.get()) {
+            getApplicationInfo().setEnableOnBackInvokedCallback(true);
         }
-        return appWidgetHost;
+        if (savedInstanceState != null) {
+            mPendingSplitSelectInfo = ObjectWrapper.unwrap(
+                    savedInstanceState.getIBinder(PENDING_SPLIT_SELECT_INFO));
+        }
+        addMultiWindowModeChangedListener(mDepthController);
+        initUnfoldTransitionProgressProvider();
+        if (FeatureFlags.CONTINUOUS_VIEW_TREE_CAPTURE.get()) {
+            mViewCapture = SettingsAwareViewCapture.getInstance(this).startCapture(getWindow());
+        }
+        getWindow().addPrivateFlags(PRIVATE_FLAG_OPTIMIZE_MEASURE);
+    }
+
+    @Override
+    public void startSplitSelection(SplitSelectSource splitSelectSource) {
+        RecentsView recentsView = getOverviewPanel();
+        ComponentKey componentToBeStaged = new ComponentKey(
+                splitSelectSource.itemInfo.getTargetComponent(),
+                splitSelectSource.itemInfo.user);
+        // Check if there is already an instance of this app running, if so, initiate the split
+        // using that.
+        mSplitSelectStateController.findLastActiveTaskAndRunCallback(
+                componentToBeStaged,
+                foundTask -> {
+                    splitSelectSource.alreadyRunningTaskId = foundTask == null
+                            ? INVALID_TASK_ID
+                            : foundTask.key.id;
+                    if (ENABLE_SPLIT_FROM_WORKSPACE_TO_WORKSPACE.get()) {
+                        startSplitToHome(splitSelectSource);
+                    } else {
+                        recentsView.initiateSplitSelect(splitSelectSource);
+                    }
+                }
+        );
+    }
+
+    /** TODO(b/266482558) Migrate into SplitSelectStateController or someplace split specific. */
+    private void startSplitToHome(SplitSelectSource source) {
+        AbstractFloatingView.closeAllOpenViews(this);
+        int splitPlaceholderSize = getResources().getDimensionPixelSize(
+                R.dimen.split_placeholder_size);
+        int splitPlaceholderInset = getResources().getDimensionPixelSize(
+                R.dimen.split_placeholder_inset);
+        Rect tempRect = new Rect();
+
+        mSplitSelectStateController.setInitialTaskSelect(source.intent,
+                source.position.stagePosition, source.itemInfo, source.splitEvent,
+                source.alreadyRunningTaskId);
+
+        RecentsView recentsView = getOverviewPanel();
+        recentsView.getPagedOrientationHandler().getInitialSplitPlaceholderBounds(
+                splitPlaceholderSize, splitPlaceholderInset, getDeviceProfile(),
+                mSplitSelectStateController.getActiveSplitStagePosition(), tempRect);
+
+        PendingAnimation anim = new PendingAnimation(TABLET_HOME_TO_SPLIT.getDuration());
+        RectF startingTaskRect = new RectF();
+        final FloatingTaskView floatingTaskView = FloatingTaskView.getFloatingTaskView(this,
+                source.getView(), null /* thumbnail */, source.getDrawable(), startingTaskRect);
+        floatingTaskView.setAlpha(1);
+        floatingTaskView.addStagingAnimation(anim, startingTaskRect, tempRect,
+                false /* fadeWithThumbnail */, true /* isStagedTask */);
+        mSplitSelectStateController.setFirstFloatingTaskView(floatingTaskView);
+        anim.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationCancel(Animator animation) {
+                getDragLayer().removeView(floatingTaskView);
+                mSplitSelectStateController.resetState();
+            }
+        });
+        anim.buildAnim().start();
+    }
+
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+
+        if (mLauncherUnfoldAnimationController != null) {
+            mLauncherUnfoldAnimationController.onResume();
+        }
+    }
+
+    @Override
+    protected void onPause() {
+        if (mLauncherUnfoldAnimationController != null) {
+            mLauncherUnfoldAnimationController.onPause();
+        }
+
+        super.onPause();
+    }
+
+    @Override
+    protected void onNewIntent(Intent intent) {
+        super.onNewIntent(intent);
+
+        if (mOverviewCommandHelper != null) {
+            mOverviewCommandHelper.clearPendingCommands();
+        }
+    }
+
+    public QuickstepTransitionManager getAppTransitionManager() {
+        return mAppTransitionManager;
+    }
+
+    @Override
+    public void onEnterAnimationComplete() {
+        super.onEnterAnimationComplete();
+        // After the transition to home, enable the high-res thumbnail loader if it wasn't enabled
+        // as a part of quickstep, so that high-res thumbnails can load the next time we enter
+        // overview
+        RecentsModel.INSTANCE.get(this).getThumbnailCache()
+                .getHighResLoadingState().setVisible(true);
+    }
+
+    @Override
+    protected void handleGestureContract(Intent intent) {
+        if (FeatureFlags.SEPARATE_RECENTS_ACTIVITY.get()) {
+            super.handleGestureContract(intent);
+        }
+    }
+
+    @Override
+    public void onTrimMemory(int level) {
+        super.onTrimMemory(level);
+        RecentsModel.INSTANCE.get(this).onTrimMemory(level);
+    }
+
+    @Override
+    public void onUiChangedWhileSleeping() {
+        // Remove the snapshot because the content view may have obvious changes.
+        UI_HELPER_EXECUTOR.execute(
+                () -> ActivityManagerWrapper.getInstance().invalidateHomeTaskSnapshot(this));
+    }
+
+    @Override
+    protected void onScreenOnChanged(boolean isOn) {
+        super.onScreenOnChanged(isOn);
+        if (!isOn) {
+            RecentsView recentsView = getOverviewPanel();
+            recentsView.finishRecentsAnimation(true /* toRecents */, null);
+        }
+    }
+
+    @Override
+    public void onAllAppsTransition(float progress) {
+        super.onAllAppsTransition(progress);
+        onTaskbarInAppDisplayProgressUpdate(progress, ALL_APPS_PAGE_PROGRESS_INDEX);
+    }
+
+    @Override
+    public void onWidgetsTransition(float progress) {
+        super.onWidgetsTransition(progress);
+        onTaskbarInAppDisplayProgressUpdate(progress, WIDGETS_PAGE_PROGRESS_INDEX);
+        if (mEnableWidgetDepth) {
+            getDepthController().widgetDepth.setValue(Utilities.mapToRange(
+                    progress, 0f, 1f, 0f, getDeviceProfile().bottomSheetDepth, EMPHASIZED));
+        }
+    }
+
+    @Override
+    protected void registerBackDispatcher() {
+        if (!FeatureFlags.ENABLE_BACK_SWIPE_LAUNCHER_ANIMATION.get()) {
+            super.registerBackDispatcher();
+            return;
+        }
+        getOnBackInvokedDispatcher().registerOnBackInvokedCallback(
+                OnBackInvokedDispatcher.PRIORITY_DEFAULT,
+                new OnBackAnimationCallback() {
+
+                    @Nullable OnBackAnimationCallback mActiveOnBackAnimationCallback;
+
+                    @Override
+                    public void onBackStarted(@NonNull BackEvent backEvent) {
+                        if (mActiveOnBackAnimationCallback != null) {
+                            mActiveOnBackAnimationCallback.onBackCancelled();
+                        }
+                        mActiveOnBackAnimationCallback = getOnBackAnimationCallback();
+                        mActiveOnBackAnimationCallback.onBackStarted(backEvent);
+                    }
+
+                    @RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
+                    @Override
+                    public void onBackInvoked() {
+                        // Recreate mActiveOnBackAnimationCallback if necessary to avoid NPE
+                        // because:
+                        // 1. b/260636433: In 3-button-navigation mode, onBackStarted() is not
+                        // called on ACTION_DOWN before onBackInvoked() is called in ACTION_UP.
+                        // 2. Launcher#onBackPressed() will call onBackInvoked() without calling
+                        // onBackInvoked() beforehand.
+                        if (mActiveOnBackAnimationCallback == null) {
+                            mActiveOnBackAnimationCallback = getOnBackAnimationCallback();
+                        }
+                        mActiveOnBackAnimationCallback.onBackInvoked();
+                        mActiveOnBackAnimationCallback = null;
+                        TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "onBackInvoked");
+                    }
+
+                    @Override
+                    public void onBackProgressed(@NonNull BackEvent backEvent) {
+                        if (!FeatureFlags.IS_STUDIO_BUILD
+                                && mActiveOnBackAnimationCallback == null) {
+                            return;
+                        }
+                        mActiveOnBackAnimationCallback.onBackProgressed(backEvent);
+                    }
+
+                    @Override
+                    public void onBackCancelled() {
+                        if (!FeatureFlags.IS_STUDIO_BUILD
+                                && mActiveOnBackAnimationCallback == null) {
+                            return;
+                        }
+                        mActiveOnBackAnimationCallback.onBackCancelled();
+                        mActiveOnBackAnimationCallback = null;
+                    }
+                });
+    }
+
+    private void onTaskbarInAppDisplayProgressUpdate(float progress, int flag) {
+        if (mTaskbarManager == null
+                || mTaskbarManager.getCurrentActivityContext() == null
+                || mTaskbarUIController == null) {
+            return;
+        }
+        mTaskbarUIController.onTaskbarInAppDisplayProgressUpdate(progress, flag);
+    }
+
+    @Override
+    public void startIntentSenderForResult(IntentSender intent, int requestCode,
+            Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options) {
+        if (requestCode != -1) {
+            mPendingActivityRequestCode = requestCode;
+            StartActivityParams params = new StartActivityParams(this, requestCode);
+            params.intentSender = intent;
+            params.fillInIntent = fillInIntent;
+            params.flagsMask = flagsMask;
+            params.flagsValues = flagsValues;
+            params.extraFlags = extraFlags;
+            params.options = options;
+            startActivity(ProxyActivityStarter.getLaunchIntent(this, params));
+        } else {
+            super.startIntentSenderForResult(intent, requestCode, fillInIntent, flagsMask,
+                    flagsValues, extraFlags, options);
+        }
+    }
+
+    @Override
+    public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
+        if (requestCode != -1) {
+            mPendingActivityRequestCode = requestCode;
+            StartActivityParams params = new StartActivityParams(this, requestCode);
+            params.intent = intent;
+            params.options = options;
+            startActivity(ProxyActivityStarter.getLaunchIntent(this, params));
+        } else {
+            super.startActivityForResult(intent, requestCode, options);
+        }
+    }
+
+    @Override
+    public void setResumed() {
+        if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) {
+            DesktopVisibilityController controller = mDesktopVisibilityController;
+            if (controller != null && controller.areFreeformTasksVisible()
+                    && !controller.isGestureInProgress()) {
+                // Return early to skip setting activity to appear as resumed
+                // TODO(b/255649902): shouldn't be needed when we have a separate launcher state
+                //  for desktop that we can use to control other parts of launcher
+                return;
+            }
+        }
+        super.setResumed();
+    }
+
+    @Override
+    protected void onDeferredResumed() {
+        super.onDeferredResumed();
+        handlePendingActivityRequest();
+    }
+
+    private void handlePendingActivityRequest() {
+        if (mPendingActivityRequestCode != -1 && isInState(NORMAL)
+                && ((getActivityFlags() & ACTIVITY_STATE_DEFERRED_RESUMED) != 0)) {
+            // Remove any active ProxyActivityStarter task and send RESULT_CANCELED to Launcher.
+            onActivityResult(mPendingActivityRequestCode, RESULT_CANCELED, null);
+            // ProxyActivityStarter is started with clear task to reset the task after which it
+            // removes the task itself.
+            startActivity(ProxyActivityStarter.getLaunchIntent(this, null));
+        }
+    }
+
+    private void onTISConnected(TISBinder binder) {
+        mTaskbarManager = binder.getTaskbarManager();
+        if (mTaskbarManager != null) {
+            mTaskbarManager.setActivity(this);
+        }
+        mOverviewCommandHelper = binder.getOverviewCommandHelper();
+    }
+
+    @Override
+    public void runOnBindToTouchInteractionService(Runnable r) {
+        mTISBindHelper.runOnBindToTouchInteractionService(r);
+    }
+
+    private void initUnfoldTransitionProgressProvider() {
+        final UnfoldTransitionConfig config = new ResourceUnfoldTransitionConfig();
+        if (config.isEnabled()) {
+            if (RECEIVE_UNFOLD_EVENTS_FROM_SYSUI.get()) {
+                initRemotelyCalculatedUnfoldAnimation(config);
+            } else {
+                initLocallyCalculatedUnfoldAnimation(config);
+            }
+
+        }
+    }
+
+    /** Registers hinge angle listener and calculates the animation progress in this process. */
+    private void initLocallyCalculatedUnfoldAnimation(UnfoldTransitionConfig config) {
+        UnfoldSharedComponent unfoldComponent =
+                UnfoldTransitionFactory.createUnfoldSharedComponent(
+                        /* context= */ this,
+                        config,
+                        ProxyScreenStatusProvider.INSTANCE,
+                        new DeviceStateManagerFoldProvider(
+                                getSystemService(DeviceStateManager.class), /* context= */ this),
+                        new ActivityManagerActivityTypeProvider(
+                                getSystemService(ActivityManager.class)),
+                        getSystemService(SensorManager.class),
+                        getMainThreadHandler(),
+                        getMainExecutor(),
+                        /* backgroundExecutor= */ UI_HELPER_EXECUTOR,
+                        /* tracingTagPrefix= */ "launcher",
+                        getSystemService(DisplayManager.class)
+                );
+
+        mUnfoldTransitionProgressProvider = unfoldComponent.getUnfoldTransitionProvider()
+                .orElseThrow(() -> new IllegalStateException(
+                        "Trying to create UnfoldTransitionProgressProvider when the "
+                                + "transition is disabled"));
+
+        initUnfoldAnimationController(mUnfoldTransitionProgressProvider,
+                unfoldComponent.getRotationChangeProvider());
+    }
+
+    /** Receives animation progress from sysui process. */
+    private void initRemotelyCalculatedUnfoldAnimation(UnfoldTransitionConfig config) {
+        RemoteUnfoldSharedComponent unfoldComponent =
+                UnfoldTransitionFactory.createRemoteUnfoldSharedComponent(
+                        /* context= */ this,
+                        config,
+                        getMainExecutor(),
+                        getMainThreadHandler(),
+                        /* backgroundExecutor= */ UI_HELPER_EXECUTOR,
+                        /* tracingTagPrefix= */ "launcher",
+                        getSystemService(DisplayManager.class)
+                );
+
+        final RemoteUnfoldTransitionReceiver remoteUnfoldTransitionProgressProvider =
+                unfoldComponent.getRemoteTransitionProgress().orElseThrow(
+                        () -> new IllegalStateException(
+                                "Trying to create getRemoteTransitionProgress when the transition "
+                                        + "is disabled"));
+        mUnfoldTransitionProgressProvider = remoteUnfoldTransitionProgressProvider;
+
+        SystemUiProxy.INSTANCE.get(this).setUnfoldAnimationListener(
+                remoteUnfoldTransitionProgressProvider);
+
+        initUnfoldAnimationController(mUnfoldTransitionProgressProvider,
+                unfoldComponent.getRotationChangeProvider());
+    }
+
+    private void initUnfoldAnimationController(UnfoldTransitionProgressProvider progressProvider,
+            RotationChangeProvider rotationChangeProvider) {
+        mLauncherUnfoldAnimationController = new LauncherUnfoldAnimationController(
+                /* launcher= */ this,
+                getWindowManager(),
+                progressProvider,
+                rotationChangeProvider
+        );
+    }
+
+    public void setTaskbarUIController(LauncherTaskbarUIController taskbarUIController) {
+        mTaskbarUIController = taskbarUIController;
+    }
+
+    public @Nullable LauncherTaskbarUIController getTaskbarUIController() {
+        return mTaskbarUIController;
+    }
+
+    public SplitToWorkspaceController getSplitToWorkspaceController() {
+        return mSplitToWorkspaceController;
+    }
+
+    public <T extends OverviewActionsView> T getActionsView() {
+        return (T) mActionsView;
+    }
+
+    @Override
+    protected void closeOpenViews(boolean animate) {
+        super.closeOpenViews(animate);
+        TaskUtils.closeSystemWindowsAsync(CLOSE_SYSTEM_WINDOWS_REASON_HOME_KEY);
+    }
+
+    @Override
+    protected void collectStateHandlers(List<StateHandler> out) {
+        super.collectStateHandlers(out);
+        out.add(getDepthController());
+        out.add(new RecentsViewStateController(this));
+    }
+
+    public DepthController getDepthController() {
+        return mDepthController;
+    }
+
+    public DesktopVisibilityController getDesktopVisibilityController() {
+        return mDesktopVisibilityController;
+    }
+
+    @Nullable
+    public UnfoldTransitionProgressProvider getUnfoldTransitionProgressProvider() {
+        return mUnfoldTransitionProgressProvider;
+    }
+
+    @Override
+    public boolean supportsAdaptiveIconAnimation(View clickedView) {
+        return mAppTransitionManager.hasControlRemoteAppTransitionPermission();
+    }
+
+    @Override
+    public DragOptions getDefaultWorkspaceDragOptions() {
+        if (mNextWorkspaceDragOptions != null) {
+            DragOptions options = mNextWorkspaceDragOptions;
+            mNextWorkspaceDragOptions = null;
+            return options;
+        }
+        return super.getDefaultWorkspaceDragOptions();
+    }
+
+    public void setNextWorkspaceDragOptions(DragOptions dragOptions) {
+        mNextWorkspaceDragOptions = dragOptions;
+    }
+
+    @Override
+    public void useFadeOutAnimationForLauncherStart(CancellationSignal signal) {
+        QuickstepTransitionManager appTransitionManager = getAppTransitionManager();
+        appTransitionManager.setRemoteAnimationProvider(new RemoteAnimationProvider() {
+            @Override
+            public AnimatorSet createWindowAnimation(RemoteAnimationTarget[] appTargets,
+                    RemoteAnimationTarget[] wallpaperTargets) {
+
+                // On the first call clear the reference.
+                signal.cancel();
+
+                ValueAnimator fadeAnimation = ValueAnimator.ofFloat(1, 0);
+                fadeAnimation.addUpdateListener(new RemoteFadeOutAnimationListener(appTargets,
+                        wallpaperTargets));
+                AnimatorSet anim = new AnimatorSet();
+                anim.play(fadeAnimation);
+                return anim;
+            }
+        }, signal);
+    }
+
+    @Override
+    public float[] getNormalOverviewScaleAndOffset() {
+        return DisplayController.getNavigationMode(this).hasGestures
+                ? new float[] {1, 1} : new float[] {1.1f, NO_OFFSET};
+    }
+
+    @Override
+    public void finishBindingItems(IntSet pagesBoundFirst) {
+        super.finishBindingItems(pagesBoundFirst);
+        // Instantiate and initialize WellbeingModel now that its loading won't interfere with
+        // populating workspace.
+        // TODO: Find a better place for this
+        WellbeingModel.INSTANCE.get(this);
+    }
+
+    @Override
+    public void onInitialBindComplete(IntSet boundPages, RunnableList pendingTasks,
+            int workspaceItemCount, boolean isBindSync) {
+        pendingTasks.add(() -> {
+            // This is added in pending task as we need to wait for views to be positioned
+            // correctly before registering them for the animation.
+            if (mLauncherUnfoldAnimationController != null) {
+                // This is needed in case items are rebound while the unfold animation is in
+                // progress.
+                mLauncherUnfoldAnimationController.updateRegisteredViewsIfNeeded();
+            }
+        });
+        super.onInitialBindComplete(boundPages, pendingTasks, workspaceItemCount, isBindSync);
+    }
+
+    @Override
+    public ActivityOptionsWrapper getActivityLaunchOptions(View v, @Nullable ItemInfo item) {
+        ActivityOptionsWrapper activityOptions =
+                mAppTransitionManager.hasControlRemoteAppTransitionPermission()
+                        ? mAppTransitionManager.getActivityLaunchOptions(v)
+                        : super.getActivityLaunchOptions(v, item);
+        if (mLastTouchUpTime > 0) {
+            activityOptions.options.setSourceInfo(ActivityOptions.SourceInfo.TYPE_LAUNCHER,
+                    mLastTouchUpTime);
+        }
+        if (item != null && (item.animationType == DEFAULT_NO_ICON
+                || item.animationType == VIEW_BACKGROUND)) {
+            activityOptions.options.setSplashScreenStyle(
+                    SplashScreen.SPLASH_SCREEN_STYLE_SOLID_COLOR);
+        } else {
+            activityOptions.options.setSplashScreenStyle(SplashScreen.SPLASH_SCREEN_STYLE_ICON);
+        }
+        activityOptions.options.setLaunchDisplayId(
+                (v != null && v.getDisplay() != null) ? v.getDisplay().getDisplayId()
+                        : Display.DEFAULT_DISPLAY);
+        addLaunchCookie(item, activityOptions.options);
+        return activityOptions;
+    }
+
+    @Override
+    public ActivityOptionsWrapper makeDefaultActivityOptions(int splashScreenStyle) {
+        RunnableList callbacks = new RunnableList();
+        ActivityOptions options = ActivityOptions.makeCustomAnimation(
+                this, 0, 0, Color.TRANSPARENT,
+                Executors.MAIN_EXECUTOR.getHandler(), null,
+                elapsedRealTime -> callbacks.executeAllAndDestroy());
+        options.setSplashScreenStyle(splashScreenStyle);
+        return new ActivityOptionsWrapper(options, callbacks);
+    }
+
+    @Override
+    @BinderThread
+    public void enterStageSplitFromRunningApp(boolean leftOrTop) {
+        mSplitWithKeyboardShortcutController.enterStageSplit(leftOrTop);
+    }
+
+    /**
+     * Adds a new launch cookie for the activity launch if supported.
+     *
+     * @param info the item info for the launch
+     * @param opts the options to set the launchCookie on.
+     */
+    public void addLaunchCookie(ItemInfo info, ActivityOptions opts) {
+        IBinder launchCookie = getLaunchCookie(info);
+        if (launchCookie != null) {
+            opts.setLaunchCookie(launchCookie);
+        }
+    }
+
+    /**
+     * Return a new launch cookie for the activity launch if supported.
+     *
+     * @param info the item info for the launch
+     */
+    public IBinder getLaunchCookie(ItemInfo info) {
+        if (info == null) {
+            return null;
+        }
+        switch (info.container) {
+            case Favorites.CONTAINER_DESKTOP:
+            case Favorites.CONTAINER_HOTSEAT:
+                // Fall through and continue it's on the workspace (we don't support swiping back
+                // to other containers like all apps or the hotseat predictions (which can change)
+                break;
+            default:
+                if (info.container >= 0) {
+                    // Also allow swiping to folders
+                    break;
+                }
+                // Reset any existing launch cookies associated with the cookie
+                return ObjectWrapper.wrap(NO_MATCHING_ID);
+        }
+        switch (info.itemType) {
+            case Favorites.ITEM_TYPE_APPLICATION:
+            case Favorites.ITEM_TYPE_SHORTCUT:
+            case Favorites.ITEM_TYPE_DEEP_SHORTCUT:
+            case Favorites.ITEM_TYPE_APPWIDGET:
+                // Fall through and continue if it's an app, shortcut, or widget
+                break;
+            default:
+                // Reset any existing launch cookies associated with the cookie
+                return ObjectWrapper.wrap(NO_MATCHING_ID);
+        }
+        return ObjectWrapper.wrap(new Integer(info.id));
+    }
+
+    public void setHintUserWillBeActive() {
+        addActivityFlags(ACTIVITY_STATE_USER_WILL_BE_ACTIVE);
+    }
+
+    @Override
+    public void onDisplayInfoChanged(Context context, DisplayController.Info info, int flags) {
+        super.onDisplayInfoChanged(context, info, flags);
+        // When changing screens, force moving to rest state similar to StatefulActivity.onStop, as
+        // StatefulActivity isn't called consistently.
+        if ((flags & CHANGE_ACTIVE_SCREEN) != 0) {
+            // Do not animate moving to rest state, as it can clash with Launcher#onIdpChanged
+            // where reapplyUi calls StateManager's reapplyState during the state change animation,
+            // and cancel the state change unexpectedly. The screen will be off during screen
+            // transition, hiding the unanimated transition.
+            getStateManager().moveToRestState(/* isAnimated = */false);
+        }
+
+        if ((flags & CHANGE_NAVIGATION_MODE) != 0) {
+            getDragLayer().recreateControllers();
+            if (mActionsView != null) {
+                mActionsView.updateVerticalMargin(info.navigationMode);
+            }
+        }
+    }
+
+    @Override
+    public void tryClearAccessibilityFocus(View view) {
+        view.clearAccessibilityFocus();
+    }
+
+    @Override
+    protected void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+
+        // If Launcher shuts downs during split select, we save some extra data in the recovery
+        // bundle to allow graceful recovery. The normal LauncherState restore mechanism doesn't
+        // work in this case because restoring straight to OverviewSplitSelect without staging data,
+        // or before the tasks themselves have loaded into Overview, causes a crash. So we tell
+        // Launcher to first restore into Overview state, wait for the relevant tasks and icons to
+        // load in, and then proceed to OverviewSplitSelect.
+        if (isInState(OVERVIEW_SPLIT_SELECT)) {
+            // Launcher will restart in Overview and then transition to OverviewSplitSelect.
+            outState.putIBinder(PENDING_SPLIT_SELECT_INFO, ObjectWrapper.wrap(
+                    new PendingSplitSelectInfo(
+                            mSplitSelectStateController.getInitialTaskId(),
+                            mSplitSelectStateController.getActiveSplitStagePosition(),
+                            mSplitSelectStateController.getSplitEvent())
+            ));
+            outState.putInt(RUNTIME_STATE, OVERVIEW.ordinal);
+        }
+    }
+
+    /**
+     * When Launcher restarts, it sometimes needs to recover to a split selection state.
+     * This function checks if such a recovery is needed.
+     * @return a boolean representing whether the launcher is waiting to recover to
+     * OverviewSplitSelect state.
+     */
+    public boolean hasPendingSplitSelectInfo() {
+        return mPendingSplitSelectInfo != null;
+    }
+
+    /**
+     * See {@link #hasPendingSplitSelectInfo()}
+     */
+    public @Nullable PendingSplitSelectInfo getPendingSplitSelectInfo() {
+        return mPendingSplitSelectInfo;
+    }
+
+    /**
+     * When the launcher has successfully recovered to OverviewSplitSelect state, this function
+     * deletes the recovery data, returning it to a null state.
+     */
+    public void finishSplitSelectRecovery() {
+        mPendingSplitSelectInfo = null;
+    }
+
+    @Override
+    public boolean areFreeformTasksVisible() {
+        if (mDesktopVisibilityController != null) {
+            return mDesktopVisibilityController.areFreeformTasksVisible();
+        }
+        return false;
+    }
+
+    @Override
+    protected void onDeviceProfileInitiated() {
+        super.onDeviceProfileInitiated();
+        SystemUiProxy.INSTANCE.get(this).setLauncherAppIconSize(mDeviceProfile.iconSizePx);
+    }
+
+    @Override
+    public void dispatchDeviceProfileChanged() {
+        super.dispatchDeviceProfileChanged();
+        Trace.instantForTrack(TRACE_TAG_APP, "QuickstepLauncher#DeviceProfileChanged",
+                getDeviceProfile().toSmallString());
+        SystemUiProxy.INSTANCE.get(this).setLauncherAppIconSize(mDeviceProfile.iconSizePx);
+        if (mTaskbarManager != null) {
+            mTaskbarManager.debugWhyTaskbarNotDestroyed("QuickstepLauncher#onDeviceProfileChanged");
+        }
+    }
+
+    /**
+     * Launches the given {@link GroupTask} in splitscreen.
+     *
+     * If the second split task is missing, launches the first task normally.
+     */
+    public void launchSplitTasks(@NonNull View taskView, @NonNull GroupTask groupTask) {
+        if (groupTask.task2 == null) {
+            UI_HELPER_EXECUTOR.execute(() ->
+                    ActivityManagerWrapper.getInstance().startActivityFromRecents(
+                            groupTask.task1.key,
+                            getActivityLaunchOptions(taskView, null).options));
+            return;
+        }
+        mSplitSelectStateController.launchExistingSplitPair(
+                null /* launchingTaskView */,
+                groupTask.task1.key.id,
+                groupTask.task2.key.id,
+                SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT,
+                /* callback= */ success -> {},
+                /* freezeTaskList= */ true,
+                groupTask.mSplitBounds == null
+                        ? DEFAULT_SPLIT_RATIO
+                        : groupTask.mSplitBounds.appsStackedVertically
+                                ? groupTask.mSplitBounds.topTaskPercent
+                                : groupTask.mSplitBounds.leftTaskPercent);
     }
 
     private static final class LauncherTaskViewController extends
@@ -371,9 +1324,15 @@
     @Override
     public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) {
         super.dump(prefix, fd, writer, args);
+        if (mDepthController != null) {
+            mDepthController.dump(prefix, writer);
+        }
         RecentsView recentsView = getOverviewPanel();
         writer.println("\nQuickstepLauncher:");
         writer.println(prefix + "\tmOrientationState: " + (recentsView == null ? "recentsNull" :
                 recentsView.getPagedViewOrientedState()));
+        if (recentsView != null) {
+            recentsView.getSplitSelectController().dump(prefix, writer);
+        }
     }
 }
diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepWidgetHolder.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepWidgetHolder.java
new file mode 100644
index 0000000..39543b0
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepWidgetHolder.java
@@ -0,0 +1,368 @@
+/**
+ * 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.launcher3.uioverrides;
+
+import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
+import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
+
+import android.appwidget.AppWidgetHost;
+import android.appwidget.AppWidgetHostView;
+import android.appwidget.AppWidgetProviderInfo;
+import android.content.Context;
+import android.util.Log;
+import android.util.SparseArray;
+import android.widget.RemoteViews;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.UiThread;
+import androidx.annotation.WorkerThread;
+
+import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.model.WidgetsModel;
+import com.android.launcher3.util.IntSet;
+import com.android.launcher3.widget.LauncherAppWidgetHostView;
+import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
+import com.android.launcher3.widget.LauncherWidgetHolder;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+import java.util.WeakHashMap;
+import java.util.function.BiConsumer;
+import java.util.function.IntConsumer;
+
+/**
+ * {@link LauncherWidgetHolder} that puts the app widget host in the background
+ */
+public final class QuickstepWidgetHolder extends LauncherWidgetHolder {
+
+    private static final String TAG = "QuickstepWidgetHolder";
+
+    private static final UpdateKey<AppWidgetProviderInfo> KEY_PROVIDER_UPDATE =
+            AppWidgetHostView::onUpdateProviderInfo;
+    private static final UpdateKey<RemoteViews> KEY_VIEWS_UPDATE =
+            AppWidgetHostView::updateAppWidget;
+    private static final UpdateKey<Integer> KEY_VIEW_DATA_CHANGED =
+            AppWidgetHostView::onViewDataChanged;
+
+    private static final List<QuickstepWidgetHolder> sHolders = new ArrayList<>();
+    private static final SparseArray<QuickstepWidgetHolderListener> sListeners =
+            new SparseArray<>();
+
+    private static AppWidgetHost sWidgetHost = null;
+
+    private final SparseArray<AppWidgetHostView> mViews = new SparseArray<>();
+
+    private final @Nullable RemoteViews.InteractionHandler mInteractionHandler;
+
+    private final @NonNull IntConsumer mAppWidgetRemovedCallback;
+
+    private final ArrayList<ProviderChangedListener> mProviderChangedListeners = new ArrayList<>();
+    // Map to all pending updated keyed with appWidgetId;
+    private final SparseArray<PendingUpdate> mPendingUpdateMap = new SparseArray<>();
+
+    private QuickstepWidgetHolder(@NonNull Context context,
+            @Nullable IntConsumer appWidgetRemovedCallback,
+            @Nullable RemoteViews.InteractionHandler interactionHandler) {
+        super(context, appWidgetRemovedCallback);
+        mAppWidgetRemovedCallback = appWidgetRemovedCallback != null ? appWidgetRemovedCallback
+                : i -> {};
+        mInteractionHandler = interactionHandler;
+        MAIN_EXECUTOR.execute(() -> sHolders.add(this));
+    }
+
+    @Override
+    @NonNull
+    protected AppWidgetHost createHost(@NonNull Context context,
+            @Nullable IntConsumer appWidgetRemovedCallback) {
+        if (sWidgetHost == null) {
+            sWidgetHost = new QuickstepAppWidgetHost(context.getApplicationContext(),
+                    i -> MAIN_EXECUTOR.execute(() ->
+                            sHolders.forEach(h -> h.mAppWidgetRemovedCallback.accept(i))),
+                    () -> MAIN_EXECUTOR.execute(() ->
+                            sHolders.forEach(h ->
+                                    // Listeners might remove themselves from the list during the
+                                    // iteration. Creating a copy of the list to avoid exceptions
+                                    // for concurrent modification.
+                                    new ArrayList<>(h.mProviderChangedListeners).forEach(
+                                    ProviderChangedListener::notifyWidgetProvidersChanged))),
+                    UI_HELPER_EXECUTOR.getLooper());
+            if (!WidgetsModel.GO_DISABLE_WIDGETS) {
+                sWidgetHost.startListening();
+            }
+        }
+        return sWidgetHost;
+    }
+
+    @Override
+    protected void updateDeferredView() {
+        super.updateDeferredView();
+        int count = mPendingUpdateMap.size();
+        for (int i = 0; i < count; i++) {
+            int widgetId = mPendingUpdateMap.keyAt(i);
+            AppWidgetHostView view = mViews.get(widgetId);
+            if (view == null) {
+                continue;
+            }
+            PendingUpdate pendingUpdate = mPendingUpdateMap.valueAt(i);
+            if (pendingUpdate == null) {
+                continue;
+            }
+            if (pendingUpdate.providerInfo != null) {
+                KEY_PROVIDER_UPDATE.accept(view, pendingUpdate.providerInfo);
+            }
+            if (pendingUpdate.remoteViews != null) {
+                KEY_VIEWS_UPDATE.accept(view, pendingUpdate.remoteViews);
+            }
+            pendingUpdate.changedViews.forEach(
+                    viewId -> KEY_VIEW_DATA_CHANGED.accept(view, viewId));
+        }
+        mPendingUpdateMap.clear();
+    }
+
+    private <T> void onWidgetUpdate(int widgetId, UpdateKey<T> key, T data) {
+        if (isListening()) {
+            AppWidgetHostView view = mViews.get(widgetId);
+            if (view == null) {
+                return;
+            }
+            key.accept(view, data);
+            return;
+        }
+
+        PendingUpdate pendingUpdate = mPendingUpdateMap.get(widgetId);
+        if (pendingUpdate == null) {
+            pendingUpdate = new PendingUpdate();
+            mPendingUpdateMap.put(widgetId, pendingUpdate);
+        }
+
+        if (KEY_PROVIDER_UPDATE.equals(key)) {
+            // For provider change, remove all updates
+            pendingUpdate.providerInfo = (AppWidgetProviderInfo) data;
+            pendingUpdate.remoteViews = null;
+            pendingUpdate.changedViews.clear();
+        } else if (KEY_VIEWS_UPDATE.equals(key)) {
+            // For views update, remove all previous updates, except the provider
+            pendingUpdate.remoteViews = (RemoteViews) data;
+        } else if (KEY_VIEW_DATA_CHANGED.equals(key)) {
+            pendingUpdate.changedViews.add((Integer) data);
+        }
+    }
+
+    /**
+     * Delete the specified app widget from the host
+     * @param appWidgetId The ID of the app widget to be deleted
+     */
+    @Override
+    public void deleteAppWidgetId(int appWidgetId) {
+        super.deleteAppWidgetId(appWidgetId);
+        mViews.remove(appWidgetId);
+        sListeners.remove(appWidgetId);
+    }
+
+    /**
+     * Called when the launcher is destroyed
+     */
+    @Override
+    public void destroy() {
+        try {
+            MAIN_EXECUTOR.submit(() -> sHolders.remove(this)).get();
+        } catch (Exception e) {
+            Log.e(TAG, "Failed to remove self from holder list", e);
+        }
+    }
+
+    @Override
+    protected boolean shouldListen(int flags) {
+        return (flags & (FLAG_STATE_IS_NORMAL | FLAG_ACTIVITY_STARTED))
+                == (FLAG_STATE_IS_NORMAL | FLAG_ACTIVITY_STARTED);
+    }
+
+    /**
+     * Add a listener that is triggered when the providers of the widgets are changed
+     * @param listener The listener that notifies when the providers changed
+     */
+    @Override
+    public void addProviderChangeListener(
+            @NonNull LauncherWidgetHolder.ProviderChangedListener listener) {
+        MAIN_EXECUTOR.execute(() -> mProviderChangedListeners.add(listener));
+    }
+
+    /**
+     * Remove the specified listener from the host
+     * @param listener The listener that is to be removed from the host
+     */
+    @Override
+    public void removeProviderChangeListener(
+            LauncherWidgetHolder.ProviderChangedListener listener) {
+        MAIN_EXECUTOR.execute(() -> mProviderChangedListeners.remove(listener));
+    }
+
+    /**
+     * Stop the host from updating the widget views
+     */
+    @Override
+    public void stopListening() {
+        if (WidgetsModel.GO_DISABLE_WIDGETS) {
+            return;
+        }
+
+        sWidgetHost.setAppWidgetHidden();
+        setListeningFlag(false);
+    }
+
+    /**
+     * Create a view for the specified app widget
+     * @param context The activity context for which the view is created
+     * @param appWidgetId The ID of the widget
+     * @param appWidget The {@link LauncherAppWidgetProviderInfo} of the widget
+     * @return A view for the widget
+     */
+    @NonNull
+    @Override
+    public LauncherAppWidgetHostView createView(@NonNull Context context, int appWidgetId,
+            @NonNull LauncherAppWidgetProviderInfo appWidget) {
+        LauncherAppWidgetHostView widgetView = getPendingView(appWidgetId);
+        if (widgetView != null) {
+            removePendingView(appWidgetId);
+        } else {
+            widgetView = new LauncherAppWidgetHostView(context);
+        }
+        widgetView.setInteractionHandler(mInteractionHandler);
+        widgetView.setAppWidget(appWidgetId, appWidget);
+        mViews.put(appWidgetId, widgetView);
+
+        QuickstepWidgetHolderListener listener = sListeners.get(appWidgetId);
+        if (listener == null) {
+            listener = new QuickstepWidgetHolderListener(appWidgetId);
+            sWidgetHost.setListener(appWidgetId, listener);
+            sListeners.put(appWidgetId, listener);
+        }
+        RemoteViews remoteViews = listener.addHolder(this);
+        widgetView.updateAppWidget(remoteViews);
+
+        return widgetView;
+    }
+
+    /**
+     * Clears all the views from the host
+     */
+    @Override
+    public void clearViews() {
+        mViews.clear();
+        for (int i = sListeners.size() - 1; i >= 0; i--) {
+            sListeners.valueAt(i).mListeningHolders.remove(this);
+        }
+    }
+
+    private static class QuickstepWidgetHolderListener
+            implements AppWidgetHost.AppWidgetHostListener {
+
+        // Static listeners should use a set that is backed by WeakHashMap to avoid memory leak
+        private final Set<QuickstepWidgetHolder> mListeningHolders = Collections.newSetFromMap(
+                new WeakHashMap<>());
+
+        private final int mWidgetId;
+
+        private @Nullable RemoteViews mRemoteViews;
+
+        QuickstepWidgetHolderListener(int widgetId) {
+            mWidgetId = widgetId;
+        }
+
+        @UiThread
+        @Nullable
+        public RemoteViews addHolder(@NonNull QuickstepWidgetHolder holder) {
+            mListeningHolders.add(holder);
+            return mRemoteViews;
+        }
+
+        @Override
+        @WorkerThread
+        public void onUpdateProviderInfo(@Nullable AppWidgetProviderInfo info) {
+            mRemoteViews = null;
+            executeOnMainExecutor(KEY_PROVIDER_UPDATE, info);
+        }
+
+        @Override
+        @WorkerThread
+        public void updateAppWidget(@Nullable RemoteViews views) {
+            mRemoteViews = views;
+            executeOnMainExecutor(KEY_VIEWS_UPDATE, mRemoteViews);
+        }
+
+        @Override
+        @WorkerThread
+        public void onViewDataChanged(int viewId) {
+            executeOnMainExecutor(KEY_VIEW_DATA_CHANGED, viewId);
+        }
+
+        private <T> void executeOnMainExecutor(UpdateKey<T> key, T data) {
+            MAIN_EXECUTOR.execute(() -> mListeningHolders.forEach(holder ->
+                    holder.onWidgetUpdate(mWidgetId, key, data)));
+        }
+    }
+
+    /**
+     * {@code HolderFactory} subclass that takes an interaction handler as one of the parameters
+     * when creating a new instance.
+     */
+    public static class QuickstepHolderFactory extends HolderFactory {
+
+        @SuppressWarnings("unused")
+        public QuickstepHolderFactory(Context context) { }
+
+        @Override
+        public LauncherWidgetHolder newInstance(@NonNull Context context,
+                @Nullable IntConsumer appWidgetRemovedCallback) {
+            return newInstance(context, appWidgetRemovedCallback, null);
+        }
+
+        /**
+         * @param context The context of the caller
+         * @param appWidgetRemovedCallback The callback that is called when widgets are removed
+         * @param interactionHandler The interaction handler when the widgets are clicked
+         * @return A new {@link LauncherWidgetHolder} instance
+         */
+        public LauncherWidgetHolder newInstance(@NonNull Context context,
+                @Nullable IntConsumer appWidgetRemovedCallback,
+                @Nullable RemoteViews.InteractionHandler interactionHandler) {
+
+            if (!FeatureFlags.ENABLE_WIDGET_HOST_IN_BACKGROUND.get()) {
+                return new LauncherWidgetHolder(context, appWidgetRemovedCallback) {
+                    @Override
+                    protected AppWidgetHost createHost(Context context,
+                            @Nullable IntConsumer appWidgetRemovedCallback) {
+                        AppWidgetHost host = super.createHost(context, appWidgetRemovedCallback);
+                        host.setInteractionHandler(interactionHandler);
+                        return host;
+                    }
+                };
+            }
+            return new QuickstepWidgetHolder(context, appWidgetRemovedCallback, interactionHandler);
+        }
+    }
+
+    private static class PendingUpdate {
+        public final IntSet changedViews = new IntSet();
+        public AppWidgetProviderInfo providerInfo;
+        public RemoteViews remoteViews;
+    }
+
+    private interface UpdateKey<T> extends BiConsumer<AppWidgetHostView, T> { }
+}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java b/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java
index 00a98c0..f16b43d 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java
@@ -20,6 +20,7 @@
 import static com.android.launcher3.LauncherState.OVERVIEW_SPLIT_SELECT;
 import static com.android.launcher3.anim.Interpolators.LINEAR;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_ACTIONS_FADE;
+import static com.android.launcher3.util.MultiPropertyFactory.MULTI_PROPERTY_VALUE;
 import static com.android.quickstep.views.RecentsView.CONTENT_ALPHA;
 import static com.android.quickstep.views.RecentsView.FULLSCREEN_PROGRESS;
 import static com.android.quickstep.views.RecentsView.TASK_MODALNESS;
@@ -27,22 +28,24 @@
 import static com.android.quickstep.views.RecentsView.TASK_SECONDARY_SPLIT_TRANSLATION;
 import static com.android.quickstep.views.TaskView.FLAG_UPDATE_ALL;
 
+import android.animation.AnimatorSet;
 import android.annotation.TargetApi;
 import android.os.Build;
 import android.util.FloatProperty;
+import android.util.Log;
 import android.util.Pair;
 
 import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
 
-import com.android.launcher3.BaseQuickstepLauncher;
 import com.android.launcher3.LauncherState;
+import com.android.launcher3.Utilities;
 import com.android.launcher3.anim.AnimatorListeners;
 import com.android.launcher3.anim.PendingAnimation;
 import com.android.launcher3.anim.PropertySetter;
 import com.android.launcher3.states.StateAnimationConfig;
 import com.android.launcher3.touch.PagedOrientationHandler;
-import com.android.launcher3.util.MultiValueAlpha;
+import com.android.quickstep.util.AnimUtils;
+import com.android.quickstep.util.SplitAnimationTimings;
 import com.android.quickstep.views.ClearAllButton;
 import com.android.quickstep.views.LauncherRecentsView;
 import com.android.quickstep.views.RecentsView;
@@ -55,7 +58,7 @@
 public final class RecentsViewStateController extends
         BaseRecentsViewStateController<LauncherRecentsView> {
 
-    public RecentsViewStateController(BaseQuickstepLauncher launcher) {
+    public RecentsViewStateController(QuickstepLauncher launcher) {
         super(launcher);
     }
 
@@ -72,7 +75,10 @@
         // DepthController to prevent optimizations which might occlude the layers behind
         mLauncher.getDepthController().setHasContentBehindLauncher(state.overviewUi);
 
-        handleSplitSelectionState(state, null);
+        PendingAnimation builder =
+                new PendingAnimation(state.getTransitionDuration(mLauncher, true));
+
+        handleSplitSelectionState(state, builder, /* animate */false);
     }
 
     @Override
@@ -84,6 +90,13 @@
             // While animating into recents, update the visible task data as needed
             builder.addOnFrameCallback(() -> mRecentsView.loadVisibleTaskData(FLAG_UPDATE_ALL));
             mRecentsView.updateEmptyMessage();
+            // TODO(b/246283207): Remove logging once root cause of flake detected.
+            if (Utilities.isRunningInTestHarness()) {
+                Log.d("b/246283207", "RecentsView#setStateWithAnimationInternal getCurrentPage(): "
+                                + mRecentsView.getCurrentPage()
+                                + ", getScrollForPage(getCurrentPage())): "
+                                + mRecentsView.getScrollForPage(mRecentsView.getCurrentPage()));
+            }
         } else {
             builder.addListener(
                     AnimatorListeners.forSuccessCallback(mRecentsView::resetTaskVisuals));
@@ -93,7 +106,7 @@
         builder.addListener(AnimatorListeners.forSuccessCallback(() ->
                 mLauncher.getDepthController().setHasContentBehindLauncher(toState.overviewUi)));
 
-        handleSplitSelectionState(toState, builder);
+        handleSplitSelectionState(toState, builder, /* animate */true);
 
         setAlphas(builder, config, toState);
         builder.setFloat(mRecentsView, FULLSCREEN_PROGRESS,
@@ -106,8 +119,13 @@
      *                will add animations to builder.
      */
     private void handleSplitSelectionState(@NonNull LauncherState toState,
-            @Nullable PendingAnimation builder) {
-        boolean animate = builder != null;
+            @NonNull PendingAnimation builder, boolean animate) {
+        if (toState != OVERVIEW_SPLIT_SELECT) {
+            // Not going to split
+            return;
+        }
+
+        // Create transition animations to split select
         PagedOrientationHandler orientationHandler =
                 ((RecentsView) mLauncher.getOverviewPanel()).getPagedOrientationHandler();
         Pair<FloatProperty, FloatProperty> taskViewsFloat =
@@ -115,24 +133,24 @@
                         TASK_PRIMARY_SPLIT_TRANSLATION, TASK_SECONDARY_SPLIT_TRANSLATION,
                         mLauncher.getDeviceProfile());
 
-        if (toState == OVERVIEW_SPLIT_SELECT) {
-            // Animation to "dismiss" selected taskView
-            PendingAnimation splitSelectInitAnimation = mRecentsView.createSplitSelectInitAnimation(
-                    toState.getTransitionDuration(mLauncher, true /* isToState */));
-            // Add properties to shift remaining taskViews to get out of placeholder view
-            splitSelectInitAnimation.setFloat(mRecentsView, taskViewsFloat.first,
-                    toState.getSplitSelectTranslation(mLauncher), LINEAR);
-            splitSelectInitAnimation.setFloat(mRecentsView, taskViewsFloat.second, 0, LINEAR);
+        SplitAnimationTimings timings =
+                AnimUtils.getDeviceOverviewToSplitTimings(mLauncher.getDeviceProfile().isTablet);
 
-            if (!animate) {
-                splitSelectInitAnimation.buildAnim().start();
-            } else {
-                builder.add(splitSelectInitAnimation.buildAnim());
-            }
+        mRecentsView.createSplitSelectInitAnimation(builder,
+                toState.getTransitionDuration(mLauncher, true /* isToState */));
+        // Shift tasks vertically downward to get out of placeholder view
+        builder.setFloat(mRecentsView, taskViewsFloat.first,
+                toState.getSplitSelectTranslation(mLauncher),
+                timings.getGridSlidePrimaryInterpolator());
+        // Zero out horizontal translation
+        builder.setFloat(mRecentsView, taskViewsFloat.second,
+                0,
+                timings.getGridSlideSecondaryInterpolator());
 
-            mRecentsView.applySplitPrimaryScrollOffset();
-        } else {
-            mRecentsView.resetSplitPrimaryScrollOffset();
+        if (!animate) {
+            AnimatorSet as = builder.buildAnim();
+            as.start();
+            as.end();
         }
     }
 
@@ -143,7 +161,7 @@
                 clearAllButtonAlpha, LINEAR);
         float overviewButtonAlpha = state.areElementsVisible(mLauncher, OVERVIEW_ACTIONS) ? 1 : 0;
         propertySetter.setFloat(mLauncher.getActionsView().getVisibilityAlpha(),
-                MultiValueAlpha.VALUE, overviewButtonAlpha, config.getInterpolator(
+                MULTI_PROPERTY_VALUE, overviewButtonAlpha, config.getInterpolator(
                         ANIM_OVERVIEW_ACTIONS_FADE, LINEAR));
     }
 
diff --git a/quickstep/src/com/android/launcher3/uioverrides/flags/DebugFlag.java b/quickstep/src/com/android/launcher3/uioverrides/flags/DebugFlag.java
new file mode 100644
index 0000000..481e200
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/uioverrides/flags/DebugFlag.java
@@ -0,0 +1,42 @@
+/*
+ * 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.launcher3.uioverrides.flags;
+
+import androidx.annotation.NonNull;
+
+import com.android.launcher3.config.FeatureFlags.BooleanFlag;
+import com.android.launcher3.config.FeatureFlags.FlagState;
+
+class DebugFlag extends BooleanFlag {
+
+    public final String key;
+    public final String description;
+
+    @NonNull
+    public final FlagState defaultValue;
+
+    DebugFlag(String key, String description, FlagState defaultValue, boolean currentValue) {
+        super(currentValue);
+        this.key = key;
+        this.defaultValue = defaultValue;
+        this.description = description;
+    }
+
+    @Override
+    public String toString() {
+        return key + ": defaultValue=" + defaultValue + ", mCurrentValue=" + get();
+    }
+}
diff --git a/src/com/android/launcher3/settings/DeveloperOptionsFragment.java b/quickstep/src/com/android/launcher3/uioverrides/flags/DeveloperOptionsFragment.java
similarity index 84%
rename from src/com/android/launcher3/settings/DeveloperOptionsFragment.java
rename to quickstep/src/com/android/launcher3/uioverrides/flags/DeveloperOptionsFragment.java
index b06b8a1..b901a87 100644
--- a/src/com/android/launcher3/settings/DeveloperOptionsFragment.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/flags/DeveloperOptionsFragment.java
@@ -13,8 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.launcher3.settings;
+package com.android.launcher3.uioverrides.flags;
 
+import static android.content.Intent.ACTION_PACKAGE_ADDED;
+import static android.content.Intent.ACTION_PACKAGE_CHANGED;
+import static android.content.Intent.ACTION_PACKAGE_REMOVED;
 import static android.content.pm.PackageManager.GET_RESOLVED_FILTER;
 import static android.content.pm.PackageManager.MATCH_DISABLED_COMPONENTS;
 import static android.view.View.GONE;
@@ -25,11 +28,9 @@
 import static com.android.launcher3.uioverrides.plugins.PluginManagerWrapper.pluginEnabledKey;
 
 import android.annotation.TargetApi;
-import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
-import android.content.IntentFilter;
 import android.content.SharedPreferences;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
@@ -38,6 +39,7 @@
 import android.os.Bundle;
 import android.provider.Settings;
 import android.text.Editable;
+import android.text.TextUtils;
 import android.text.TextWatcher;
 import android.util.ArrayMap;
 import android.util.Pair;
@@ -59,12 +61,13 @@
 import androidx.preference.PreferenceViewHolder;
 import androidx.preference.SwitchPreference;
 
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.R;
-import com.android.launcher3.Utilities;
 import com.android.launcher3.config.FeatureFlags;
-import com.android.launcher3.config.FlagTogglerPrefUi;
+import com.android.launcher3.secondarydisplay.SecondaryDisplayLauncher;
 import com.android.launcher3.uioverrides.plugins.PluginManagerWrapper;
 import com.android.launcher3.util.OnboardingPrefs;
+import com.android.launcher3.util.SimpleBroadcastReceiver;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -82,12 +85,8 @@
     private static final String ACTION_PLUGIN_SETTINGS = "com.android.systemui.action.PLUGIN_SETTINGS";
     private static final String PLUGIN_PERMISSION = "com.android.systemui.permission.PLUGIN";
 
-    private final BroadcastReceiver mPluginReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            loadPluginPrefs();
-        }
-    };
+    private final SimpleBroadcastReceiver mPluginReceiver =
+            new SimpleBroadcastReceiver(i -> loadPluginPrefs());
 
     private PreferenceScreen mPreferenceScreen;
 
@@ -96,13 +95,9 @@
 
     @Override
     public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
-        IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
-        filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
-        filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
-        filter.addDataScheme("package");
-        getContext().registerReceiver(mPluginReceiver, filter);
-        getContext().registerReceiver(mPluginReceiver,
-                new IntentFilter(Intent.ACTION_USER_UNLOCKED));
+        mPluginReceiver.registerPkgActions(getContext(), null,
+                ACTION_PACKAGE_ADDED, ACTION_PACKAGE_CHANGED, ACTION_PACKAGE_REMOVED);
+        mPluginReceiver.register(getContext(), Intent.ACTION_USER_UNLOCKED);
 
         mPreferenceScreen = getPreferenceManager().createPreferenceScreen(getContext());
         setPreferenceScreen(mPreferenceScreen);
@@ -184,13 +179,20 @@
     @Override
     public void onDestroy() {
         super.onDestroy();
-        getContext().unregisterReceiver(mPluginReceiver);
+        mPluginReceiver.unregisterReceiverSafely(getContext());
     }
 
     private PreferenceCategory newCategory(String title) {
+        return newCategory(title, null);
+    }
+
+    private PreferenceCategory newCategory(String title, @Nullable String summary) {
         PreferenceCategory category = new PreferenceCategory(getContext());
         category.setOrder(Preference.DEFAULT_ORDER);
         category.setTitle(title);
+        if (!TextUtils.isEmpty(summary)) {
+            category.setSummary(summary);
+        }
         mPreferenceScreen.addPreference(category);
         return category;
     }
@@ -201,7 +203,7 @@
         }
 
         mFlagTogglerPrefUi = new FlagTogglerPrefUi(this);
-        mFlagTogglerPrefUi.applyTo(newCategory("Feature flags"));
+        mFlagTogglerPrefUi.applyTo(newCategory("Feature flags", "Long press to reset"));
     }
 
     @Override
@@ -300,17 +302,27 @@
         }
         PreferenceCategory sandboxCategory = newCategory("Gesture Navigation Sandbox");
         sandboxCategory.setSummary("Learn and practice navigation gestures");
+        Preference launchTutorialStepMenuPreference = new Preference(context);
+        launchTutorialStepMenuPreference.setKey("launchTutorialStepMenu");
+        launchTutorialStepMenuPreference.setTitle("Launch Gesture Tutorial Steps menu");
+        launchTutorialStepMenuPreference.setSummary("Select a gesture tutorial step.");
+        launchTutorialStepMenuPreference.setOnPreferenceClickListener(preference -> {
+            startActivity(launchSandboxIntent.putExtra("use_tutorial_menu", true));
+            return true;
+        });
+        sandboxCategory.addPreference(launchTutorialStepMenuPreference);
         Preference launchOnboardingTutorialPreference = new Preference(context);
         launchOnboardingTutorialPreference.setKey("launchOnboardingTutorial");
         launchOnboardingTutorialPreference.setTitle("Launch Onboarding Tutorial");
         launchOnboardingTutorialPreference.setSummary("Learn the basic navigation gestures.");
         launchOnboardingTutorialPreference.setOnPreferenceClickListener(preference -> {
-            startActivity(launchSandboxIntent.putExtra(
-                    "tutorial_steps",
-                    new String[] {
-                            "HOME_NAVIGATION",
-                            "BACK_NAVIGATION",
-                            "OVERVIEW_NAVIGATION"}));
+            startActivity(launchSandboxIntent
+                    .putExtra("use_tutorial_menu", false)
+                    .putExtra("tutorial_steps",
+                            new String[] {
+                                    "HOME_NAVIGATION",
+                                    "BACK_NAVIGATION",
+                                    "OVERVIEW_NAVIGATION"}));
             return true;
         });
         sandboxCategory.addPreference(launchOnboardingTutorialPreference);
@@ -319,9 +331,9 @@
         launchBackTutorialPreference.setTitle("Launch Back Tutorial");
         launchBackTutorialPreference.setSummary("Learn how to use the Back gesture");
         launchBackTutorialPreference.setOnPreferenceClickListener(preference -> {
-            startActivity(launchSandboxIntent.putExtra(
-                    "tutorial_steps",
-                    new String[] {"BACK_NAVIGATION"}));
+            startActivity(launchSandboxIntent
+                    .putExtra("use_tutorial_menu", false)
+                    .putExtra("tutorial_steps", new String[] {"BACK_NAVIGATION"}));
             return true;
         });
         sandboxCategory.addPreference(launchBackTutorialPreference);
@@ -330,9 +342,9 @@
         launchHomeTutorialPreference.setTitle("Launch Home Tutorial");
         launchHomeTutorialPreference.setSummary("Learn how to use the Home gesture");
         launchHomeTutorialPreference.setOnPreferenceClickListener(preference -> {
-            startActivity(launchSandboxIntent.putExtra(
-                    "tutorial_steps",
-                    new String[] {"HOME_NAVIGATION"}));
+            startActivity(launchSandboxIntent
+                    .putExtra("use_tutorial_menu", false)
+                    .putExtra("tutorial_steps", new String[] {"HOME_NAVIGATION"}));
             return true;
         });
         sandboxCategory.addPreference(launchHomeTutorialPreference);
@@ -341,34 +353,21 @@
         launchOverviewTutorialPreference.setTitle("Launch Overview Tutorial");
         launchOverviewTutorialPreference.setSummary("Learn how to use the Overview gesture");
         launchOverviewTutorialPreference.setOnPreferenceClickListener(preference -> {
-            startActivity(launchSandboxIntent.putExtra(
-                    "tutorial_steps",
-                    new String[] {"OVERVIEW_NAVIGATION"}));
+            startActivity(launchSandboxIntent
+                    .putExtra("use_tutorial_menu", false)
+                    .putExtra("tutorial_steps", new String[] {"OVERVIEW_NAVIGATION"}));
             return true;
         });
         sandboxCategory.addPreference(launchOverviewTutorialPreference);
-        Preference launchAssistantTutorialPreference = new Preference(context);
-        launchAssistantTutorialPreference.setKey("launchAssistantTutorial");
-        launchAssistantTutorialPreference.setTitle("Launch Assistant Tutorial");
-        launchAssistantTutorialPreference.setSummary("Learn how to use the Assistant gesture");
-        launchAssistantTutorialPreference.setOnPreferenceClickListener(preference -> {
-            startActivity(launchSandboxIntent.putExtra(
-                    "tutorial_steps",
-                    new String[] {"ASSISTANT"}));
+        Preference launchSecondaryDisplayPreference = new Preference(context);
+        launchSecondaryDisplayPreference.setKey("launchSecondaryDisplay");
+        launchSecondaryDisplayPreference.setTitle("Launch Secondary Display");
+        launchSecondaryDisplayPreference.setSummary("Launch secondary display activity");
+        launchSecondaryDisplayPreference.setOnPreferenceClickListener(preference -> {
+            startActivity(new Intent(context, SecondaryDisplayLauncher.class));
             return true;
         });
-        sandboxCategory.addPreference(launchAssistantTutorialPreference);
-        Preference launchSandboxModeTutorialPreference = new Preference(context);
-        launchSandboxModeTutorialPreference.setKey("launchSandboxMode");
-        launchSandboxModeTutorialPreference.setTitle("Launch Sandbox Mode");
-        launchSandboxModeTutorialPreference.setSummary("Practice navigation gestures");
-        launchSandboxModeTutorialPreference.setOnPreferenceClickListener(preference -> {
-            startActivity(launchSandboxIntent.putExtra(
-                    "tutorial_steps",
-                    new String[] {"SANDBOX_MODE"}));
-            return true;
-        });
-        sandboxCategory.addPreference(launchSandboxModeTutorialPreference);
+        sandboxCategory.addPreference(launchSecondaryDisplayPreference);
     }
 
     private void addOnboardingPrefsCatergory() {
@@ -381,7 +380,8 @@
             onboardingPref.setTitle(title);
             onboardingPref.setSummary("Tap to reset");
             onboardingPref.setOnPreferenceClickListener(preference -> {
-                SharedPreferences.Editor sharedPrefsEdit = Utilities.getPrefs(getContext()).edit();
+                SharedPreferences.Editor sharedPrefsEdit = LauncherPrefs.getPrefs(getContext())
+                        .edit();
                 for (String key : keys) {
                     sharedPrefsEdit.remove(key);
                 }
diff --git a/quickstep/src/com/android/launcher3/uioverrides/flags/DeviceFlag.java b/quickstep/src/com/android/launcher3/uioverrides/flags/DeviceFlag.java
new file mode 100644
index 0000000..035beb4
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/uioverrides/flags/DeviceFlag.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2019 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.launcher3.uioverrides.flags;
+
+import com.android.launcher3.config.FeatureFlags.FlagState;
+
+class DeviceFlag extends DebugFlag {
+
+    private final boolean mDefaultValueInCode;
+
+    DeviceFlag(String key, String description, FlagState defaultValue,
+            boolean currentValue, boolean defaultValueInCode) {
+        super(key, description, defaultValue, currentValue);
+        mDefaultValueInCode = defaultValueInCode;
+    }
+
+    @Override
+    public String toString() {
+        return super.toString() + ", mDefaultValueInCode=" + mDefaultValueInCode;
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/flags/FlagTogglerPrefUi.java b/quickstep/src/com/android/launcher3/uioverrides/flags/FlagTogglerPrefUi.java
new file mode 100644
index 0000000..87c836b
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/uioverrides/flags/FlagTogglerPrefUi.java
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2018 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.launcher3.uioverrides.flags;
+
+import static com.android.launcher3.config.FeatureFlags.FlagState.TEAMFOOD;
+import static com.android.launcher3.uioverrides.flags.FlagsFactory.TEAMFOOD_FLAG;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Process;
+import android.text.Html;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.widget.Toast;
+
+import androidx.preference.PreferenceDataStore;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceViewHolder;
+import androidx.preference.SwitchPreference;
+
+import com.android.launcher3.R;
+import com.android.launcher3.config.FeatureFlags;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Dev-build only UI allowing developers to toggle flag settings. See {@link FeatureFlags}.
+ */
+public final class FlagTogglerPrefUi {
+
+    private static final String TAG = "FlagTogglerPrefFrag";
+
+    private final PreferenceFragmentCompat mFragment;
+    private final Context mContext;
+    private final PreferenceDataStore mDataStore = new PreferenceDataStore() {
+
+        @Override
+        public void putBoolean(String key, boolean value) {
+            FlagsFactory.getSharedPreferences().edit().putBoolean(key, value).apply();
+            updateMenu();
+        }
+
+        @Override
+        public boolean getBoolean(String key, boolean defaultValue) {
+            return FlagsFactory.getSharedPreferences().getBoolean(key, defaultValue);
+        }
+    };
+
+    public FlagTogglerPrefUi(PreferenceFragmentCompat fragment) {
+        mFragment = fragment;
+        mContext = fragment.getActivity();
+    }
+
+    public void applyTo(PreferenceGroup parent) {
+        Set<String> modifiedPrefs = FlagsFactory.getSharedPreferences().getAll().keySet();
+        List<DebugFlag> flags = FlagsFactory.getDebugFlags();
+        flags.sort((f1, f2) -> {
+            // Sort first by any prefs that the user has changed, then alphabetically.
+            int changeComparison = Boolean.compare(
+                    modifiedPrefs.contains(f2.key), modifiedPrefs.contains(f1.key));
+            return changeComparison != 0
+                    ? changeComparison
+                    : f1.key.compareToIgnoreCase(f2.key);
+        });
+
+        // Ensure that teamfood flag comes on the top
+        if (flags.remove(TEAMFOOD_FLAG)) {
+            flags.add(0, (DebugFlag) TEAMFOOD_FLAG);
+        }
+
+        // For flag overrides we only want to store when the engineer chose to override the
+        // flag with a different value than the default. That way, when we flip flags in
+        // future, engineers will pick up the new value immediately. To accomplish this, we use a
+        // custom preference data store.
+        for (DebugFlag flag : flags) {
+            SwitchPreference switchPreference = new SwitchPreference(mContext) {
+                @Override
+                public void onBindViewHolder(PreferenceViewHolder holder) {
+                    super.onBindViewHolder(holder);
+                    holder.itemView.setOnLongClickListener(v -> {
+                        FlagsFactory.getSharedPreferences().edit().remove(flag.key).apply();
+                        setChecked(getFlagStateFromSharedPrefs(flag));
+                        updateSummary(this, flag);
+                        updateMenu();
+                        return true;
+                    });
+                }
+            };
+            switchPreference.setKey(flag.key);
+            switchPreference.setDefaultValue(FlagsFactory.getEnabledValue(flag.defaultValue));
+            switchPreference.setChecked(getFlagStateFromSharedPrefs(flag));
+            switchPreference.setTitle(flag.key);
+            updateSummary(switchPreference, flag);
+            switchPreference.setPreferenceDataStore(mDataStore);
+            switchPreference.setOnPreferenceChangeListener((p, v) -> {
+                new Handler().post(() -> updateSummary(switchPreference, flag));
+                return true;
+            });
+
+
+            parent.addPreference(switchPreference);
+        }
+        updateMenu();
+    }
+
+    /**
+     * Updates the summary to show the description and whether the flag overrides the default value.
+     */
+    private void updateSummary(SwitchPreference switchPreference, DebugFlag flag) {
+        String summary = flag.defaultValue == TEAMFOOD
+                ? "<font color='blue'><b>[TEAMFOOD]</b> </font>" : "";
+        if (FlagsFactory.getSharedPreferences().contains(flag.key)) {
+            summary += "<font color='red'><b>[OVERRIDDEN]</b> </font>";
+        }
+        if (!TextUtils.isEmpty(summary)) {
+            summary += "<br>";
+        }
+        switchPreference.setSummary(Html.fromHtml(summary + flag.description));
+    }
+
+    private void updateMenu() {
+        mFragment.setHasOptionsMenu(anyChanged());
+        mFragment.getActivity().invalidateOptionsMenu();
+    }
+
+    public void onCreateOptionsMenu(Menu menu) {
+        if (anyChanged()) {
+            menu.add(0, R.id.menu_apply_flags, 0, "Apply")
+                    .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
+        }
+    }
+
+    public void onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == R.id.menu_apply_flags) {
+            FlagsFactory.getSharedPreferences().edit().commit();
+            Log.e(TAG,
+                    "Killing launcher process " + Process.myPid() + " to apply new flag values");
+            System.exit(0);
+        }
+    }
+
+    public void onStop() {
+        if (anyChanged()) {
+            Toast.makeText(mContext, "Flag won't be applied until you restart launcher",
+                    Toast.LENGTH_LONG).show();
+        }
+    }
+
+    private boolean getFlagStateFromSharedPrefs(DebugFlag flag) {
+        boolean defaultValue = FlagsFactory.getEnabledValue(flag.defaultValue);
+        return mDataStore.getBoolean(flag.key, defaultValue);
+    }
+
+    private boolean anyChanged() {
+        for (DebugFlag flag : FlagsFactory.getDebugFlags()) {
+            if (getFlagStateFromSharedPrefs(flag) != flag.get()) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/flags/FlagsFactory.java b/quickstep/src/com/android/launcher3/uioverrides/flags/FlagsFactory.java
new file mode 100644
index 0000000..a68e753
--- /dev/null
+++ b/quickstep/src/com/android/launcher3/uioverrides/flags/FlagsFactory.java
@@ -0,0 +1,205 @@
+/*
+ * 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.launcher3.uioverrides.flags;
+
+import static android.app.ActivityThread.currentApplication;
+
+import static com.android.launcher3.BuildConfig.IS_DEBUG_DEVICE;
+import static com.android.launcher3.config.FeatureFlags.FlagState.DISABLED;
+import static com.android.launcher3.config.FeatureFlags.FlagState.ENABLED;
+import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.provider.DeviceConfig;
+import android.provider.DeviceConfig.Properties;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+
+import com.android.launcher3.config.FeatureFlags.BooleanFlag;
+import com.android.launcher3.config.FeatureFlags.FlagState;
+import com.android.launcher3.config.FeatureFlags.IntFlag;
+import com.android.launcher3.util.ScreenOnTracker;
+
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Helper class to create various flags for system build
+ */
+public class FlagsFactory {
+
+    private static final String TAG = "FlagsFactory";
+
+    private static final FlagsFactory INSTANCE = new FlagsFactory();
+    private static final boolean FLAG_AUTO_APPLY_ENABLED = true;
+
+    private static final String FLAGS_PREF_NAME = "featureFlags";
+    public static final String NAMESPACE_LAUNCHER = "launcher";
+
+    private static final List<DebugFlag> sDebugFlags = new ArrayList<>();
+    private static SharedPreferences sSharedPreferences;
+
+    static final BooleanFlag TEAMFOOD_FLAG = getReleaseFlag(
+            0, "LAUNCHER_TEAMFOOD", DISABLED, "Enable this flag to opt-in all team food flags");
+
+    private final Set<String> mKeySet = new HashSet<>();
+    private boolean mRestartRequested = false;
+
+    private FlagsFactory() {
+        if (!FLAG_AUTO_APPLY_ENABLED) {
+            return;
+        }
+        DeviceConfig.addOnPropertiesChangedListener(
+                NAMESPACE_LAUNCHER, UI_HELPER_EXECUTOR, this::onPropertiesChanged);
+    }
+
+    static boolean getEnabledValue(FlagState flagState) {
+        if (IS_DEBUG_DEVICE) {
+            switch (flagState) {
+                case ENABLED:
+                    return true;
+                case TEAMFOOD:
+                    return TEAMFOOD_FLAG.get();
+                default:
+                    return false;
+            }
+        } else {
+            return flagState == ENABLED;
+        }
+    }
+
+    /**
+     * Creates a new debug flag. Debug flags always take their default value in release builds. On
+     * dogfood builds, they can be manually turned on using the flag toggle UI.
+     */
+    public static BooleanFlag getDebugFlag(
+            int bugId, String key, FlagState flagState, String description) {
+        if (IS_DEBUG_DEVICE) {
+            boolean defaultValue = getEnabledValue(flagState);
+            boolean currentValue = getSharedPreferences().getBoolean(key, defaultValue);
+            DebugFlag flag = new DebugFlag(key, description, flagState, currentValue);
+            sDebugFlags.add(flag);
+            return flag;
+        } else {
+            return new BooleanFlag(getEnabledValue(flagState));
+        }
+    }
+
+    /**
+     * Creates a new release flag. Release flags can be rolled out using server configurations and
+     * also allow manual overrides on debug builds.
+     */
+    public static BooleanFlag getReleaseFlag(
+            int bugId, String key, FlagState flagState, String description) {
+        INSTANCE.mKeySet.add(key);
+        boolean defaultValueInCode = getEnabledValue(flagState);
+        boolean defaultValue = DeviceConfig.getBoolean(NAMESPACE_LAUNCHER, key, defaultValueInCode);
+        if (IS_DEBUG_DEVICE) {
+            boolean currentValue = getSharedPreferences().getBoolean(key, defaultValue);
+            DebugFlag flag = new DeviceFlag(key, description, flagState, currentValue,
+                    defaultValueInCode);
+            sDebugFlags.add(flag);
+            return flag;
+        } else {
+            return new BooleanFlag(defaultValue);
+        }
+    }
+
+    /**
+     * Creates a new integer flag. Integer flags are always release flags
+     */
+    public static IntFlag getIntFlag(
+            int bugId, String key, int defaultValueInCode, String description) {
+        INSTANCE.mKeySet.add(key);
+        return new IntFlag(DeviceConfig.getInt(NAMESPACE_LAUNCHER, key, defaultValueInCode));
+    }
+
+    static List<DebugFlag> getDebugFlags() {
+        if (!IS_DEBUG_DEVICE) {
+            return Collections.emptyList();
+        }
+        synchronized (sDebugFlags) {
+            return new ArrayList<>(sDebugFlags);
+        }
+    }
+
+    /** Returns the SharedPreferences instance backing Debug FeatureFlags. */
+    @NonNull
+    static SharedPreferences getSharedPreferences() {
+        if (sSharedPreferences == null) {
+            sSharedPreferences = currentApplication()
+                    .createDeviceProtectedStorageContext()
+                    .getSharedPreferences(FLAGS_PREF_NAME, Context.MODE_PRIVATE);
+        }
+        return sSharedPreferences;
+    }
+
+    /**
+     * Dumps the current flags state to the print writer
+     */
+    public static void dump(PrintWriter pw) {
+        if (!IS_DEBUG_DEVICE) {
+            return;
+        }
+        pw.println("DeviceFlags:");
+        synchronized (sDebugFlags) {
+            for (DebugFlag flag : sDebugFlags) {
+                if (flag instanceof DeviceFlag) {
+                    pw.println("  " + flag);
+                }
+            }
+        }
+        pw.println("DebugFlags:");
+        synchronized (sDebugFlags) {
+            for (DebugFlag flag : sDebugFlags) {
+                if (!(flag instanceof DeviceFlag)) {
+                    pw.println("  " + flag);
+                }
+            }
+        }
+    }
+
+    private void onPropertiesChanged(Properties properties) {
+        if (!Collections.disjoint(properties.getKeyset(), mKeySet)) {
+            // Schedule a restart
+            if (mRestartRequested) {
+                return;
+            }
+            Log.e(TAG, "Flag changed, scheduling restart");
+            mRestartRequested = true;
+            ScreenOnTracker sot = ScreenOnTracker.INSTANCE.get(currentApplication());
+            if (sot.isScreenOn()) {
+                sot.addListener(this::onScreenOnChanged);
+            } else {
+                onScreenOnChanged(false);
+            }
+        }
+    }
+
+    private void onScreenOnChanged(boolean isOn) {
+        if (mRestartRequested && !isOn) {
+            Log.e(TAG, "Restart requested, killing process");
+            System.exit(0);
+        }
+    }
+}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/plugins/PluginEnablerImpl.java b/quickstep/src/com/android/launcher3/uioverrides/plugins/PluginEnablerImpl.java
index 5afeca7..faa900b 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/plugins/PluginEnablerImpl.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/plugins/PluginEnablerImpl.java
@@ -18,11 +18,11 @@
 import android.content.Context;
 import android.content.SharedPreferences;
 
-import com.android.launcher3.Utilities;
-import com.android.systemui.shared.plugins.PluginEnabler;
-
 import androidx.preference.PreferenceDataStore;
 
+import com.android.launcher3.LauncherPrefs;
+import com.android.systemui.shared.plugins.PluginEnabler;
+
 public class PluginEnablerImpl extends PreferenceDataStore implements PluginEnabler {
 
     private static final String PREFIX_PLUGIN_ENABLED = "PLUGIN_ENABLED_";
@@ -30,7 +30,7 @@
     final private SharedPreferences mSharedPrefs;
 
     public PluginEnablerImpl(Context context) {
-        mSharedPrefs = Utilities.getDevicePrefs(context);
+        mSharedPrefs = LauncherPrefs.getDevicePrefs(context);
     }
 
     @Override
diff --git a/quickstep/src/com/android/launcher3/uioverrides/plugins/PluginManagerWrapper.java b/quickstep/src/com/android/launcher3/uioverrides/plugins/PluginManagerWrapper.java
index fe0bca6..7f78713 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/plugins/PluginManagerWrapper.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/plugins/PluginManagerWrapper.java
@@ -28,9 +28,9 @@
 import com.android.launcher3.util.MainThreadInitializedObject;
 import com.android.systemui.plugins.Plugin;
 import com.android.systemui.plugins.PluginListener;
+import com.android.systemui.plugins.PluginManager;
 import com.android.systemui.shared.plugins.PluginActionManager;
 import com.android.systemui.shared.plugins.PluginInstance;
-import com.android.systemui.shared.plugins.PluginManager;
 import com.android.systemui.shared.plugins.PluginManagerImpl;
 import com.android.systemui.shared.plugins.PluginPrefs;
 import com.android.systemui.shared.system.UncaughtExceptionPreHandlerManager;
@@ -61,7 +61,7 @@
         List<String> privilegedPlugins = Collections.emptyList();
         PluginInstance.Factory instanceFactory = new PluginInstance.Factory(
                 getClass().getClassLoader(), new PluginInstance.InstanceFactory<>(),
-                new PluginInstance.VersionChecker(), privilegedPlugins,
+                new PluginInstance.VersionCheckerImpl(), privilegedPlugins,
                 Utilities.IS_DEBUG_DEVICE);
         PluginActionManager.Factory instanceManagerFactory = new PluginActionManager.Factory(
                 c, c.getPackageManager(), c.getMainExecutor(), MODEL_EXECUTOR,
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java b/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java
index a74774c..2a42175 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/AllAppsState.java
@@ -20,19 +20,17 @@
 
 import android.content.Context;
 
-import com.android.launcher3.DeviceProfile.DeviceProfileListenable;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherState;
 import com.android.launcher3.R;
 import com.android.launcher3.util.Themes;
+import com.android.launcher3.views.ActivityContext;
 
 /**
  * Definition for AllApps state
  */
 public class AllAppsState extends LauncherState {
 
-    private static final float WORKSPACE_SCALE_FACTOR = 0.97f;
-
     private static final int STATE_FLAGS =
             FLAG_WORKSPACE_INACCESSIBLE | FLAG_CLOSE_POPUPS | FLAG_HOTSEAT_INACCESSIBLE;
 
@@ -41,11 +39,11 @@
     }
 
     @Override
-    public <DEVICE_PROFILE_CONTEXT extends Context & DeviceProfileListenable>
+    public <DEVICE_PROFILE_CONTEXT extends Context & ActivityContext>
     int getTransitionDuration(DEVICE_PROFILE_CONTEXT context, boolean isToState) {
-        return !context.getDeviceProfile().isTablet && isToState
-                ? 600
-                : isToState ? 500 : 300;
+        return isToState
+                ? context.getDeviceProfile().allAppsOpenDuration
+                : context.getDeviceProfile().allAppsCloseDuration;
     }
 
     @Override
@@ -60,7 +58,8 @@
 
     @Override
     public ScaleAndTranslation getWorkspaceScaleAndTranslation(Launcher launcher) {
-        return new ScaleAndTranslation(WORKSPACE_SCALE_FACTOR, NO_OFFSET, NO_OFFSET);
+        return new ScaleAndTranslation(launcher.getDeviceProfile().workspaceContentScale, NO_OFFSET,
+                NO_OFFSET);
     }
 
     @Override
@@ -71,17 +70,22 @@
             ScaleAndTranslation overviewScaleAndTranslation = LauncherState.OVERVIEW
                     .getWorkspaceScaleAndTranslation(launcher);
             return new ScaleAndTranslation(
-                    WORKSPACE_SCALE_FACTOR,
+                    launcher.getDeviceProfile().workspaceContentScale,
                     overviewScaleAndTranslation.translationX,
                     overviewScaleAndTranslation.translationY);
         }
     }
 
     @Override
-    protected float getDepthUnchecked(Context context) {
-        // The scrim fades in at approximately 50% of the swipe gesture.
-        // This means that the depth should be greater than 1, in order to fully zoom out.
-        return 2f;
+    protected <DEVICE_PROFILE_CONTEXT extends Context & ActivityContext>
+            float getDepthUnchecked(DEVICE_PROFILE_CONTEXT context) {
+        if (context.getDeviceProfile().isTablet) {
+            return context.getDeviceProfile().bottomSheetDepth;
+        } else {
+            // The scrim fades in at approximately 50% of the swipe gesture.
+            // This means that the depth should be greater than 1, in order to fully zoom out.
+            return 2f;
+        }
     }
 
     @Override
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java b/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java
index b733007..e578720 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/BackgroundAppState.java
@@ -16,6 +16,7 @@
 package com.android.launcher3.uioverrides.states;
 
 import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_BACKGROUND;
+import static com.android.quickstep.TaskAnimationManager.ENABLE_SHELL_TRANSITIONS;
 
 import android.content.Context;
 import android.graphics.Color;
@@ -23,9 +24,9 @@
 import com.android.launcher3.BaseDraggingActivity;
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Launcher;
-import com.android.launcher3.R;
 import com.android.launcher3.allapps.AllAppsTransitionController;
 import com.android.quickstep.util.LayoutUtils;
+import com.android.quickstep.views.DesktopTaskView;
 import com.android.quickstep.views.RecentsView;
 
 /**
@@ -83,19 +84,44 @@
     }
 
     @Override
+    public boolean showTaskThumbnailSplash() {
+        return true;
+    }
+
+    @Override
     protected float getDepthUnchecked(Context context) {
+        if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) {
+            if (Launcher.getLauncher(context).areFreeformTasksVisible()) {
+                // Don't blur the background while freeform tasks are visible
+                return 0;
+            }
+        }
         return 1;
     }
 
     @Override
     public int getWorkspaceScrimColor(Launcher launcher) {
-        DeviceProfile dp = launcher.getDeviceProfile();
-        if (dp.isTaskbarPresentInApps) {
-            return launcher.getColor(R.color.taskbar_background);
-        }
         return Color.TRANSPARENT;
     }
 
+    @Override
+    public boolean isTaskbarAlignedWithHotseat(Launcher launcher) {
+        if (ENABLE_SHELL_TRANSITIONS) return false;
+        return super.isTaskbarAlignedWithHotseat(launcher);
+    }
+
+    @Override
+    public boolean disallowTaskbarGlobalDrag() {
+        // Enable global drag in overview
+        return false;
+    }
+
+    @Override
+    public boolean allowTaskbarInitialSplitSelection() {
+        // Disallow split select from taskbar items in overview
+        return false;
+    }
+
     public static float[] getOverviewScaleAndOffsetForBackgroundState(
             BaseDraggingActivity activity) {
         return new float[] {
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewModalTaskState.java b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewModalTaskState.java
index 0c49e5f..b9221ee 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewModalTaskState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewModalTaskState.java
@@ -18,12 +18,12 @@
 import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_OVERVIEW;
 
 import android.content.Context;
-import android.graphics.Point;
 import android.graphics.Rect;
 
 import com.android.launcher3.BaseDraggingActivity;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherState;
+import com.android.launcher3.config.FeatureFlags;
 import com.android.quickstep.views.RecentsView;
 
 /**
@@ -70,13 +70,22 @@
         }
     }
 
-    public static float[] getOverviewScaleAndOffsetForModalState(BaseDraggingActivity activity) {
-        Point taskSize = activity.<RecentsView>getOverviewPanel().getSelectedTaskSize();
-        Rect modalTaskSize = new Rect();
-        activity.<RecentsView>getOverviewPanel().getModalTaskSize(modalTaskSize);
+    @Override
+    public boolean isTaskbarStashed(Launcher launcher) {
+        if (FeatureFlags.ENABLE_GRID_ONLY_OVERVIEW.get()) {
+            return true;
+        }
+        return super.isTaskbarStashed(launcher);
+    }
 
-        float scale = Math.min((float) modalTaskSize.height() / taskSize.y,
-                (float) modalTaskSize.width() / taskSize.x);
+    public static float[] getOverviewScaleAndOffsetForModalState(BaseDraggingActivity activity) {
+        RecentsView recentsView = activity.<RecentsView>getOverviewPanel();
+        Rect taskSize = recentsView.getSelectedTaskBounds();
+        Rect modalTaskSize = new Rect();
+        recentsView.getModalTaskSize(modalTaskSize);
+
+        float scale = Math.min((float) modalTaskSize.height() / taskSize.height(),
+                (float) modalTaskSize.width() / taskSize.width());
 
         return new float[] {scale, NO_OFFSET};
     }
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java
index 6427e09..214679a 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewState.java
@@ -22,12 +22,10 @@
 import android.graphics.Rect;
 import android.os.SystemProperties;
 
-import com.android.launcher3.BaseQuickstepLauncher;
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherState;
 import com.android.launcher3.R;
-import com.android.launcher3.taskbar.LauncherTaskbarUIController;
 import com.android.launcher3.util.DisplayController;
 import com.android.launcher3.util.Themes;
 import com.android.quickstep.util.LayoutUtils;
@@ -39,6 +37,10 @@
  */
 public class OverviewState extends LauncherState {
 
+    private static final int OVERVIEW_SLIDE_IN_DURATION = 380;
+    private static final int OVERVIEW_POP_IN_DURATION = 250;
+    private static final int OVERVIEW_EXIT_DURATION = 250;
+
     protected static final Rect sTempRect = new Rect();
 
     private static final int STATE_FLAGS = FLAG_WORKSPACE_ICONS_CAN_BE_DRAGGED
@@ -59,16 +61,31 @@
 
     @Override
     public int getTransitionDuration(Context context, boolean isToState) {
-        // In gesture modes, overview comes in all the way from the side, so give it more time.
-        return DisplayController.getNavigationMode(context).hasGestures ? 380 : 250;
+        if (isToState) {
+            // In gesture modes, overview comes in all the way from the side, so give it more time.
+            return DisplayController.getNavigationMode(context).hasGestures
+                    ? OVERVIEW_SLIDE_IN_DURATION
+                    : OVERVIEW_POP_IN_DURATION;
+        } else {
+            // When exiting Overview, exit quickly.
+            return OVERVIEW_EXIT_DURATION;
+        }
     }
 
     @Override
     public ScaleAndTranslation getWorkspaceScaleAndTranslation(Launcher launcher) {
         RecentsView recentsView = launcher.getOverviewPanel();
-        float workspacePageHeight = launcher.getDeviceProfile().getCellLayoutHeight();
         recentsView.getTaskSize(sTempRect);
-        float scale = (float) sTempRect.height() / workspacePageHeight;
+        float scale;
+        DeviceProfile deviceProfile = launcher.getDeviceProfile();
+        if (deviceProfile.isTwoPanels) {
+            // In two panel layout, width does not include both panels or space between them, so
+            // use height instead. We do not use height for handheld, as cell layout can be
+            // shorter than a task and we want the workspace to scale down to task size.
+            scale = (float) sTempRect.height() / deviceProfile.getCellLayoutHeight();
+        } else {
+            scale = (float) sTempRect.width() / deviceProfile.getCellLayoutWidth();
+        }
         float parallaxFactor = 0.5f;
         return new ScaleAndTranslation(scale, 0, -getDefaultSwipeHeight(launcher) * parallaxFactor);
     }
@@ -94,14 +111,8 @@
     }
 
     @Override
-    public boolean isTaskbarStashed(Launcher launcher) {
-        if (launcher instanceof BaseQuickstepLauncher) {
-            LauncherTaskbarUIController uiController =
-                    ((BaseQuickstepLauncher) launcher).getTaskbarUIController();
-
-            return uiController != null && uiController.supportsVisualStashing();
-        }
-        return super.isTaskbarStashed(launcher);
+    public boolean isTaskbarAlignedWithHotseat(Launcher launcher) {
+        return false;
     }
 
     @Override
@@ -115,6 +126,18 @@
     }
 
     @Override
+    public boolean disallowTaskbarGlobalDrag() {
+        // Disable global drag in overview
+        return true;
+    }
+
+    @Override
+    public boolean allowTaskbarInitialSplitSelection() {
+        // Allow split select from taskbar items in overview
+        return true;
+    }
+
+    @Override
     public String getDescription(Launcher launcher) {
         return launcher.getString(R.string.accessibility_recent_apps);
     }
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java b/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java
index 969abc2..7392469 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/QuickSwitchState.java
@@ -17,10 +17,13 @@
 
 import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_BACKGROUND;
 
+import android.graphics.Color;
+
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.R;
 import com.android.launcher3.util.Themes;
+import com.android.quickstep.views.DesktopTaskView;
 
 /**
  * State to indicate we are about to launch a recent task. Note that this state is only used when
@@ -43,6 +46,12 @@
 
     @Override
     public int getWorkspaceScrimColor(Launcher launcher) {
+        if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) {
+            if (launcher.areFreeformTasksVisible()) {
+                // No scrim while freeform tasks are visible
+                return Color.TRANSPARENT;
+            }
+        }
         DeviceProfile dp = launcher.getDeviceProfile();
         if (dp.isTaskbarPresentInApps) {
             return launcher.getColor(R.color.taskbar_background);
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java
index 2d7fe69..c7cd39c 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/QuickstepAtomicAnimationFactory.java
@@ -22,16 +22,21 @@
 import static com.android.launcher3.LauncherState.HINT_STATE_TWO_BUTTON;
 import static com.android.launcher3.LauncherState.NORMAL;
 import static com.android.launcher3.LauncherState.OVERVIEW;
+import static com.android.launcher3.LauncherState.OVERVIEW_SPLIT_SELECT;
+import static com.android.launcher3.QuickstepTransitionManager.TASKBAR_TO_HOME_DURATION;
 import static com.android.launcher3.WorkspaceStateTransitionAnimation.getWorkspaceSpringScaleAnimator;
 import static com.android.launcher3.anim.Interpolators.ACCEL;
 import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL;
 import static com.android.launcher3.anim.Interpolators.DEACCEL;
 import static com.android.launcher3.anim.Interpolators.DEACCEL_1_7;
 import static com.android.launcher3.anim.Interpolators.DEACCEL_3;
+import static com.android.launcher3.anim.Interpolators.EMPHASIZED_ACCELERATE;
+import static com.android.launcher3.anim.Interpolators.EMPHASIZED_DECELERATE;
 import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
 import static com.android.launcher3.anim.Interpolators.FINAL_FRAME;
 import static com.android.launcher3.anim.Interpolators.INSTANT;
 import static com.android.launcher3.anim.Interpolators.LINEAR;
+import static com.android.launcher3.anim.Interpolators.OVERSHOOT_0_75;
 import static com.android.launcher3.anim.Interpolators.OVERSHOOT_1_2;
 import static com.android.launcher3.anim.Interpolators.clampToProgress;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_ALL_APPS_FADE;
@@ -39,20 +44,15 @@
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_ACTIONS_FADE;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_FADE;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_SCALE;
+import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_SPLIT_SELECT_FLOATING_TASK_TRANSLATE_OFFSCREEN;
+import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_SPLIT_SELECT_INSTRUCTIONS_FADE;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_TRANSLATE_X;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_OVERVIEW_TRANSLATE_Y;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_SCRIM_FADE;
-import static com.android.launcher3.states.StateAnimationConfig.ANIM_VERTICAL_PROGRESS;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_WORKSPACE_FADE;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_WORKSPACE_SCALE;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_WORKSPACE_TRANSLATE;
-import static com.android.launcher3.uioverrides.touchcontrollers.PortraitStatesTouchController.ALL_APPS_CONTENT_FADE_MAX_CLAMPING_THRESHOLD;
-import static com.android.launcher3.uioverrides.touchcontrollers.PortraitStatesTouchController.ALL_APPS_CONTENT_FADE_MIN_CLAMPING_THRESHOLD;
-import static com.android.launcher3.uioverrides.touchcontrollers.PortraitStatesTouchController.ALL_APPS_SCRIM_OPAQUE_THRESHOLD;
-import static com.android.launcher3.uioverrides.touchcontrollers.PortraitStatesTouchController.ALL_APPS_SCRIM_VISIBLE_THRESHOLD;
 import static com.android.quickstep.views.RecentsView.RECENTS_SCALE_PROPERTY;
-import static com.android.systemui.animation.Interpolators.EMPHASIZED_ACCELERATE;
-import static com.android.systemui.animation.Interpolators.EMPHASIZED_DECELERATE;
 
 import android.animation.ValueAnimator;
 
@@ -60,11 +60,12 @@
 import com.android.launcher3.Hotseat;
 import com.android.launcher3.LauncherState;
 import com.android.launcher3.Workspace;
-import com.android.launcher3.anim.Interpolators;
 import com.android.launcher3.states.StateAnimationConfig;
+import com.android.launcher3.touch.AllAppsSwipeController;
 import com.android.launcher3.uioverrides.QuickstepLauncher;
 import com.android.launcher3.util.DisplayController;
 import com.android.quickstep.util.RecentsAtomicAnimationFactory;
+import com.android.quickstep.util.SplitAnimationTimings;
 import com.android.quickstep.views.RecentsView;
 
 /**
@@ -94,9 +95,19 @@
     public void prepareForAtomicAnimation(LauncherState fromState, LauncherState toState,
             StateAnimationConfig config) {
         RecentsView overview = mActivity.getOverviewPanel();
-        if (toState == NORMAL && fromState == OVERVIEW) {
+        if ((fromState == OVERVIEW || fromState == OVERVIEW_SPLIT_SELECT) && toState == NORMAL) {
+            if (fromState == OVERVIEW_SPLIT_SELECT) {
+                config.setInterpolator(ANIM_OVERVIEW_SPLIT_SELECT_FLOATING_TASK_TRANSLATE_OFFSCREEN,
+                        clampToProgress(EMPHASIZED_ACCELERATE, 0, 0.4f));
+                config.setInterpolator(ANIM_OVERVIEW_SPLIT_SELECT_INSTRUCTIONS_FADE,
+                        clampToProgress(LINEAR, 0, 0.33f));
+            }
+
             config.setInterpolator(ANIM_OVERVIEW_ACTIONS_FADE, clampToProgress(LINEAR, 0, 0.25f));
-            config.setInterpolator(ANIM_SCRIM_FADE, LINEAR);
+            config.setInterpolator(ANIM_SCRIM_FADE,
+                    fromState == OVERVIEW_SPLIT_SELECT
+                            ? clampToProgress(LINEAR, 0.33f, 1)
+                            : LINEAR);
             config.setInterpolator(ANIM_WORKSPACE_SCALE, DEACCEL);
             config.setInterpolator(ANIM_WORKSPACE_FADE, ACCEL);
 
@@ -106,21 +117,29 @@
                 config.setInterpolator(ANIM_OVERVIEW_SCALE, FINAL_FRAME);
                 config.setInterpolator(ANIM_OVERVIEW_FADE, FINAL_FRAME);
                 config.setInterpolator(ANIM_OVERVIEW_TRANSLATE_X,
-                        clampToProgress(FAST_OUT_SLOW_IN, 0, 0.75f));
+                        fromState == OVERVIEW_SPLIT_SELECT
+                                ? EMPHASIZED_DECELERATE
+                                : clampToProgress(FAST_OUT_SLOW_IN, 0, 0.75f));
                 config.setInterpolator(ANIM_OVERVIEW_TRANSLATE_Y, FINAL_FRAME);
+
+                // Scroll RecentsView to page 0 as it goes offscreen, if necessary.
+                int numPagesToScroll = overview.getNextPage() - DEFAULT_PAGE;
+                long scrollDuration = Math.min(MAX_PAGE_SCROLL_DURATION,
+                        numPagesToScroll * PER_PAGE_SCROLL_DURATION);
+                config.duration = Math.max(config.duration, scrollDuration);
+
+                // Sync scroll so that it ends before or at the same time as the taskbar animation.
+                if (DisplayController.isTransientTaskbar(mActivity)
+                        && mActivity.getDeviceProfile().isTaskbarPresent) {
+                    config.duration = Math.min(config.duration, TASKBAR_TO_HOME_DURATION);
+                }
+                overview.snapToPage(DEFAULT_PAGE, Math.toIntExact(config.duration));
             } else {
                 config.setInterpolator(ANIM_OVERVIEW_TRANSLATE_X, ACCEL_DEACCEL);
                 config.setInterpolator(ANIM_OVERVIEW_SCALE, clampToProgress(ACCEL, 0, 0.9f));
                 config.setInterpolator(ANIM_OVERVIEW_FADE, DEACCEL_1_7);
             }
 
-            // Scroll RecentsView to page 0 as it goes offscreen, if necessary.
-            int numPagesToScroll = overview.getNextPage() - DEFAULT_PAGE;
-            long scrollDuration = Math.min(MAX_PAGE_SCROLL_DURATION,
-                    numPagesToScroll * PER_PAGE_SCROLL_DURATION);
-            config.duration = Math.max(config.duration, scrollDuration);
-            overview.snapToPage(DEFAULT_PAGE, Math.toIntExact(config.duration));
-
             Workspace<?> workspace = mActivity.getWorkspace();
             // Start from a higher workspace scale, but only if we're invisible so we don't jump.
             boolean isWorkspaceVisible = workspace.getVisibility() == VISIBLE;
@@ -182,23 +201,25 @@
             }
             config.duration = Math.max(config.duration, mHintToNormalDuration);
         } else if (fromState == ALL_APPS && toState == NORMAL) {
-            boolean isTablet = mActivity.getDeviceProfile().isTablet;
-            config.setInterpolator(ANIM_ALL_APPS_FADE,
-                    isTablet ? FINAL_FRAME : Interpolators.clampToProgress(LINEAR,
-                            1 - ALL_APPS_CONTENT_FADE_MAX_CLAMPING_THRESHOLD,
-                            1 - ALL_APPS_CONTENT_FADE_MIN_CLAMPING_THRESHOLD));
-            config.setInterpolator(ANIM_SCRIM_FADE, Interpolators.clampToProgress(LINEAR,
-                    1 - ALL_APPS_SCRIM_OPAQUE_THRESHOLD,
-                    1 - ALL_APPS_SCRIM_VISIBLE_THRESHOLD));
-            config.setInterpolator(ANIM_VERTICAL_PROGRESS, EMPHASIZED_ACCELERATE);
-            if (!isTablet) {
-                config.setInterpolator(ANIM_WORKSPACE_FADE, INSTANT);
-            }
+            AllAppsSwipeController.applyAllAppsToNormalConfig(mActivity, config);
         } else if (fromState == NORMAL && toState == ALL_APPS) {
-            if (mActivity.getDeviceProfile().isTablet) {
-                config.setInterpolator(ANIM_VERTICAL_PROGRESS, EMPHASIZED_DECELERATE);
-            }
-            // TODO(b/231682175): centralize this setup in AllAppsSwipeController
+            AllAppsSwipeController.applyNormalToAllAppsAnimConfig(mActivity, config);
+        } else if (fromState == OVERVIEW && toState == OVERVIEW_SPLIT_SELECT) {
+            SplitAnimationTimings timings = mActivity.getDeviceProfile().isTablet
+                    ? SplitAnimationTimings.TABLET_OVERVIEW_TO_SPLIT
+                    : SplitAnimationTimings.PHONE_OVERVIEW_TO_SPLIT;
+            config.setInterpolator(ANIM_OVERVIEW_ACTIONS_FADE, clampToProgress(LINEAR,
+                    timings.getActionsFadeStartOffset(),
+                    timings.getActionsFadeEndOffset()));
+        } else if ((fromState == NORMAL || fromState == ALL_APPS)
+                && toState == OVERVIEW_SPLIT_SELECT) {
+            // Splitting from Home is currently only available on tablets
+            SplitAnimationTimings timings = SplitAnimationTimings.TABLET_HOME_TO_SPLIT;
+            config.setInterpolator(ANIM_SCRIM_FADE, clampToProgress(LINEAR,
+                    timings.getScrimFadeInStartOffset(),
+                    timings.getScrimFadeInEndOffset()));
+            config.setInterpolator(ANIM_OVERVIEW_TRANSLATE_X, OVERSHOOT_0_75);
+            config.setInterpolator(ANIM_OVERVIEW_TRANSLATE_Y, OVERSHOOT_0_75);
         }
     }
 }
diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/SplitScreenSelectState.java b/quickstep/src/com/android/launcher3/uioverrides/states/SplitScreenSelectState.java
index e79d56b..3ae221b 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/states/SplitScreenSelectState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/states/SplitScreenSelectState.java
@@ -16,7 +16,10 @@
 
 package com.android.launcher3.uioverrides.states;
 
+import android.content.Context;
+
 import com.android.launcher3.Launcher;
+import com.android.quickstep.util.SplitAnimationTimings;
 import com.android.quickstep.views.RecentsView;
 
 /**
@@ -38,4 +41,21 @@
         RecentsView recentsView = launcher.getOverviewPanel();
         return recentsView.getSplitSelectTranslation();
     }
+
+    @Override
+    public int getTransitionDuration(Context context, boolean isToState) {
+        boolean isTablet = ((Launcher) context).getDeviceProfile().isTablet;
+        if (isToState && isTablet) {
+            return SplitAnimationTimings.TABLET_ENTER_DURATION;
+        } else if (isToState && !isTablet) {
+            return SplitAnimationTimings.PHONE_ENTER_DURATION;
+        } else {
+            return SplitAnimationTimings.ABORT_DURATION;
+        }
+    }
+
+    @Override
+    public boolean shouldPreserveDataStateOnReapply() {
+        return true;
+    }
 }
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NavBarToHomeTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NavBarToHomeTouchController.java
index 34a6821..8cbd6e8 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NavBarToHomeTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NavBarToHomeTouchController.java
@@ -25,8 +25,6 @@
 import static com.android.launcher3.allapps.AllAppsTransitionController.ALL_APPS_PULL_BACK_TRANSLATION;
 import static com.android.launcher3.anim.AnimatorListeners.forSuccessCallback;
 import static com.android.launcher3.anim.Interpolators.DEACCEL_3;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_ALL_APPS_EDU;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_HOME_GESTURE;
 import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
 
@@ -43,11 +41,9 @@
 import com.android.launcher3.anim.AnimatorPlaybackController;
 import com.android.launcher3.anim.PendingAnimation;
 import com.android.launcher3.compat.AccessibilityManagerCompat;
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.touch.SingleAxisSwipeDetector;
 import com.android.launcher3.util.TouchController;
 import com.android.quickstep.TaskUtils;
-import com.android.quickstep.TopTaskTracker;
 import com.android.quickstep.util.AnimatorControllerWithResistance;
 import com.android.quickstep.util.OverviewToHomeAnim;
 import com.android.quickstep.views.RecentsView;
@@ -106,15 +102,10 @@
         if (mStartState.overviewUi || mStartState == ALL_APPS) {
             return true;
         }
-        int typeToClose = ENABLE_ALL_APPS_EDU.get() ? TYPE_ALL & ~TYPE_ALL_APPS_EDU : TYPE_ALL;
+        int typeToClose = TYPE_ALL & ~TYPE_ALL_APPS_EDU;
         if (AbstractFloatingView.getTopOpenViewWithType(mLauncher, typeToClose) != null) {
             return true;
         }
-        if (FeatureFlags.ASSISTANT_GIVES_LAUNCHER_FOCUS.get()
-                && TopTaskTracker.INSTANCE.get(mLauncher).getCachedTopTask(false)
-                        .isExcludedAssistant()) {
-            return true;
-        }
         return false;
     }
 
@@ -140,9 +131,7 @@
             AnimatorControllerWithResistance.createRecentsResistanceFromOverviewAnim(mLauncher,
                     builder);
 
-            if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
-                builder.addOnFrameCallback(recentsView::redrawLiveTile);
-            }
+            builder.addOnFrameCallback(recentsView::redrawLiveTile);
 
             AbstractFloatingView.closeOpenContainer(mLauncher, AbstractFloatingView.TYPE_TASK_MENU);
         } else if (mStartState == ALL_APPS) {
@@ -183,11 +172,9 @@
         boolean success = interpolatedProgress >= SUCCESS_TRANSITION_PROGRESS
                 || (velocity < 0 && fling);
         if (success) {
-            if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
-                RecentsView recentsView = mLauncher.getOverviewPanel();
-                recentsView.switchToScreenshot(null,
-                        () -> recentsView.finishRecentsAnimation(true /* toRecents */, null));
-            }
+            RecentsView recentsView = mLauncher.getOverviewPanel();
+            recentsView.switchToScreenshot(null,
+                    () -> recentsView.finishRecentsAnimation(true /* toRecents */, null));
             if (mStartState.overviewUi) {
                 new OverviewToHomeAnim(mLauncher, () -> onSwipeInteractionCompleted(mEndState))
                         .animateWithVelocity(velocity);
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonNavbarToOverviewTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonNavbarToOverviewTouchController.java
index 8faabc9..b7bafd8 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonNavbarToOverviewTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonNavbarToOverviewTouchController.java
@@ -25,7 +25,8 @@
 import static com.android.launcher3.Utilities.EDGE_NAV_BAR;
 import static com.android.launcher3.anim.AnimatorListeners.forSuccessCallback;
 import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL;
-import static com.android.quickstep.util.VibratorWrapper.OVERVIEW_HAPTIC;
+import static com.android.launcher3.util.VibratorWrapper.OVERVIEW_HAPTIC;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_ONE_HANDED_ACTIVE;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_OVERVIEW_DISABLED;
 
 import android.animation.ObjectAnimator;
@@ -34,18 +35,19 @@
 import android.view.MotionEvent;
 import android.view.ViewConfiguration;
 
-import com.android.launcher3.BaseQuickstepLauncher;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherState;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.anim.AnimatorPlaybackController;
+import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.states.StateAnimationConfig;
 import com.android.launcher3.taskbar.LauncherTaskbarUIController;
+import com.android.launcher3.uioverrides.QuickstepLauncher;
+import com.android.launcher3.util.VibratorWrapper;
 import com.android.quickstep.SystemUiProxy;
 import com.android.quickstep.util.AnimatorControllerWithResistance;
 import com.android.quickstep.util.MotionPauseDetector;
 import com.android.quickstep.util.OverviewToHomeAnim;
-import com.android.quickstep.util.VibratorWrapper;
 import com.android.quickstep.views.RecentsView;
 
 /**
@@ -61,6 +63,7 @@
     private static final long TRANSLATION_ANIM_MIN_DURATION_MS = 80;
     private static final float TRANSLATION_ANIM_VELOCITY_DP_PER_MS = 0.8f;
 
+    private final VibratorWrapper mVibratorWrapper;
     private final RecentsView mRecentsView;
     private final MotionPauseDetector mMotionPauseDetector;
     private final float mMotionPauseMinDisplacement;
@@ -81,11 +84,17 @@
         mRecentsView = l.getOverviewPanel();
         mMotionPauseDetector = new MotionPauseDetector(l);
         mMotionPauseMinDisplacement = ViewConfiguration.get(l).getScaledTouchSlop();
+        mVibratorWrapper = VibratorWrapper.INSTANCE.get(l.getApplicationContext());
     }
 
     @Override
     protected boolean canInterceptTouch(MotionEvent ev) {
         mDidTouchStartInNavBar = (ev.getEdgeFlags() & EDGE_NAV_BAR) != 0;
+        boolean isOneHandedModeActive = (SystemUiProxy.INSTANCE.get(mLauncher)
+                .getLastSystemUiStateFlags() & SYSUI_STATE_ONE_HANDED_ACTIVE) != 0;
+        // Reset touch slop multiplier to default 1.0f if one-handed-mode is not active
+        mDetector.setTouchSlopMultiplier(
+                isOneHandedModeActive ? ONE_HANDED_ACTIVATED_SLOP_MULTIPLIER : 1f /* default */);
         return super.canInterceptTouch(ev) && !mLauncher.isInState(HINT_STATE);
     }
 
@@ -114,7 +123,7 @@
     public void onDragStart(boolean start, float startDisplacement) {
         if (mLauncher.isInState(ALL_APPS)) {
             LauncherTaskbarUIController controller =
-                    ((BaseQuickstepLauncher) mLauncher).getTaskbarUIController();
+                    ((QuickstepLauncher) mLauncher).getTaskbarUIController();
             if (controller != null) {
                 controller.setShouldDelayLauncherStateAnim(true);
             }
@@ -151,7 +160,7 @@
     @Override
     public void onDragEnd(float velocity) {
         LauncherTaskbarUIController controller =
-                ((BaseQuickstepLauncher) mLauncher).getTaskbarUIController();
+                ((QuickstepLauncher) mLauncher).getTaskbarUIController();
         if (controller != null) {
             controller.setShouldDelayLauncherStateAnim(false);
         }
@@ -182,6 +191,11 @@
             // need to manually set the duration to a reasonable value.
             animator.setDuration(HINT_STATE.getTransitionDuration(mLauncher, true /* isToState */));
         }
+        if (FeatureFlags.ENABLE_PREMIUM_HAPTICS_ALL_APPS.get() &&
+                ((mFromState == NORMAL && mToState == ALL_APPS)
+                        || (mFromState == ALL_APPS && mToState == NORMAL)) && isFling) {
+            mVibratorWrapper.vibrateForDragBump();
+        }
     }
 
     private void onMotionPauseDetected() {
@@ -277,14 +291,4 @@
     private float dpiFromPx(float pixels) {
         return Utilities.dpiFromPx(pixels, mLauncher.getResources().getDisplayMetrics().densityDpi);
     }
-
-    @Override
-    public void onOneHandedModeStateChanged(boolean activated) {
-        if (activated) {
-            mDetector.setTouchSlopMultiplier(ONE_HANDED_ACTIVATED_SLOP_MULTIPLIER);
-        } else {
-            // Reset touch slop multiplier to default 1.0f
-            mDetector.setTouchSlopMultiplier(1f /* default */);
-        }
-    }
 }
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java
index 53dc9dd..80f5558 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java
@@ -15,11 +15,16 @@
  */
 package com.android.launcher3.uioverrides.touchcontrollers;
 
+import static android.view.MotionEvent.ACTION_DOWN;
+import static android.view.MotionEvent.ACTION_MOVE;
+
 import static com.android.launcher3.LauncherAnimUtils.newCancelListener;
 import static com.android.launcher3.LauncherState.NORMAL;
 import static com.android.launcher3.LauncherState.OVERVIEW;
 import static com.android.launcher3.LauncherState.OVERVIEW_ACTIONS;
-import static com.android.launcher3.LauncherState.QUICK_SWITCH;
+import static com.android.launcher3.LauncherState.QUICK_SWITCH_FROM_HOME;
+import static com.android.launcher3.MotionEventsUtils.isTrackpadFourFingerSwipe;
+import static com.android.launcher3.MotionEventsUtils.isTrackpadMultiFingerSwipe;
 import static com.android.launcher3.anim.AlphaUpdateListener.ALPHA_CUTOFF_THRESHOLD;
 import static com.android.launcher3.anim.AnimatorListeners.forEndCallback;
 import static com.android.launcher3.anim.Interpolators.ACCEL_0_75;
@@ -39,16 +44,16 @@
 import static com.android.launcher3.states.StateAnimationConfig.SKIP_ALL_ANIMATIONS;
 import static com.android.launcher3.states.StateAnimationConfig.SKIP_OVERVIEW;
 import static com.android.launcher3.states.StateAnimationConfig.SKIP_SCRIM;
-import static com.android.launcher3.testing.TestProtocol.BAD_STATE;
 import static com.android.launcher3.touch.BothAxesSwipeDetector.DIRECTION_RIGHT;
 import static com.android.launcher3.touch.BothAxesSwipeDetector.DIRECTION_UP;
+import static com.android.launcher3.util.VibratorWrapper.OVERVIEW_HAPTIC;
 import static com.android.launcher3.util.window.RefreshRateTracker.getSingleFrameMs;
-import static com.android.quickstep.util.VibratorWrapper.OVERVIEW_HAPTIC;
 import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET;
 import static com.android.quickstep.views.RecentsView.CONTENT_ALPHA;
 import static com.android.quickstep.views.RecentsView.FULLSCREEN_PROGRESS;
 import static com.android.quickstep.views.RecentsView.RECENTS_SCALE_PROPERTY;
 import static com.android.quickstep.views.RecentsView.TASK_SECONDARY_TRANSLATION;
+import static com.android.quickstep.views.RecentsView.TASK_THUMBNAIL_SPLASH_ALPHA;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_OVERVIEW_DISABLED;
 
 import android.animation.Animator;
@@ -56,27 +61,27 @@
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ValueAnimator;
 import android.graphics.PointF;
-import android.util.Log;
 import android.view.MotionEvent;
 import android.view.animation.Interpolator;
 
-import com.android.launcher3.BaseQuickstepLauncher;
 import com.android.launcher3.LauncherState;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.anim.AnimatorPlaybackController;
 import com.android.launcher3.anim.PendingAnimation;
 import com.android.launcher3.states.StateAnimationConfig;
 import com.android.launcher3.touch.BaseSwipeDetector;
 import com.android.launcher3.touch.BothAxesSwipeDetector;
+import com.android.launcher3.uioverrides.QuickstepLauncher;
 import com.android.launcher3.util.TouchController;
-import com.android.quickstep.AnimatedFloat;
+import com.android.launcher3.util.VibratorWrapper;
 import com.android.quickstep.SystemUiProxy;
 import com.android.quickstep.util.AnimatorControllerWithResistance;
 import com.android.quickstep.util.LayoutUtils;
 import com.android.quickstep.util.MotionPauseDetector;
-import com.android.quickstep.util.VibratorWrapper;
 import com.android.quickstep.util.WorkspaceRevealAnim;
+import com.android.quickstep.views.DesktopTaskView;
 import com.android.quickstep.views.LauncherRecentsView;
 import com.android.quickstep.views.RecentsView;
 
@@ -93,7 +98,7 @@
     private static final Interpolator SCALE_DOWN_INTERPOLATOR = LINEAR;
     private static final long ATOMIC_DURATION_FROM_PAUSED_TO_OVERVIEW = 300;
 
-    private final BaseQuickstepLauncher mLauncher;
+    private final QuickstepLauncher mLauncher;
     private final BothAxesSwipeDetector mSwipeDetector;
     private final float mXRange;
     private final float mYRange;
@@ -105,6 +110,7 @@
             newCancelListener(this::clearState);
 
     private boolean mNoIntercept;
+    private Boolean mIsTrackpadFourFingerSwipe;
     private LauncherState mStartState;
 
     private boolean mIsHomeScreenVisible = true;
@@ -115,7 +121,7 @@
     private AnimatorPlaybackController mXOverviewAnim;
     private AnimatedFloat mYOverviewAnim;
 
-    public NoButtonQuickSwitchTouchController(BaseQuickstepLauncher launcher) {
+    public NoButtonQuickSwitchTouchController(QuickstepLauncher launcher) {
         mLauncher = launcher;
         mSwipeDetector = new BothAxesSwipeDetector(mLauncher, this);
         mRecentsView = mLauncher.getOverviewPanel();
@@ -130,7 +136,9 @@
 
     @Override
     public boolean onControllerInterceptTouchEvent(MotionEvent ev) {
-        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+        int action = ev.getActionMasked();
+        if (action == ACTION_DOWN) {
+            mIsTrackpadFourFingerSwipe = null;
             mNoIntercept = !canInterceptTouch(ev);
             if (mNoIntercept) {
                 return false;
@@ -139,6 +147,13 @@
             // Only detect horizontal swipe for intercept, then we will allow swipe up as well.
             mSwipeDetector.setDetectableScrollConditions(DIRECTION_RIGHT,
                     false /* ignoreSlopWhenSettling */);
+        } else if (isTrackpadMultiFingerSwipe(ev) && mIsTrackpadFourFingerSwipe == null
+                && action == ACTION_MOVE) {
+            mIsTrackpadFourFingerSwipe = isTrackpadFourFingerSwipe(ev);
+            mNoIntercept = !mIsTrackpadFourFingerSwipe;
+            if (mNoIntercept) {
+                return false;
+            }
         }
 
         if (mNoIntercept) {
@@ -165,6 +180,10 @@
         if ((stateFlags & SYSUI_STATE_OVERVIEW_DISABLED) != 0) {
             return false;
         }
+        if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) {
+            // TODO(b/268075592): add support for quickswitch to/from desktop
+            return false;
+        }
         return true;
     }
 
@@ -196,7 +215,7 @@
         nonOverviewBuilder.setInterpolator(ANIM_WORKSPACE_SCALE, FADE_OUT_INTERPOLATOR);
         nonOverviewBuilder.setInterpolator(ANIM_DEPTH, FADE_OUT_INTERPOLATOR);
         nonOverviewBuilder.setInterpolator(ANIM_VERTICAL_PROGRESS, TRANSLATE_OUT_INTERPOLATOR);
-        updateNonOverviewAnim(QUICK_SWITCH, nonOverviewBuilder);
+        updateNonOverviewAnim(QUICK_SWITCH_FROM_HOME, nonOverviewBuilder);
         mNonOverviewAnim.dispatchOnStart();
 
         if (mRecentsView.getTaskViewCount() == 0) {
@@ -221,17 +240,18 @@
     }
 
     private void setupOverviewAnimators() {
-        final LauncherState fromState = QUICK_SWITCH;
+        final LauncherState fromState = QUICK_SWITCH_FROM_HOME;
         final LauncherState toState = OVERVIEW;
 
         // Set RecentView's initial properties.
         RECENTS_SCALE_PROPERTY.set(mRecentsView, fromState.getOverviewScaleAndOffset(mLauncher)[0]);
         ADJACENT_PAGE_HORIZONTAL_OFFSET.set(mRecentsView, 1f);
-        Log.d(BAD_STATE, "NBQSTC setupOverviewAnimators setContentAlpha=1");
+        TASK_THUMBNAIL_SPLASH_ALPHA.set(mRecentsView, fromState.showTaskThumbnailSplash() ? 1f : 0);
         mRecentsView.setContentAlpha(1);
         mRecentsView.setFullscreenProgress(fromState.getOverviewFullscreenProgress());
         mLauncher.getActionsView().getVisibilityAlpha().setValue(
                 (fromState.getVisibleElements(mLauncher) & OVERVIEW_ACTIONS) != 0 ? 1f : 0f);
+        mRecentsView.setTaskIconScaledDown(true);
 
         float[] scaleAndOffset = toState.getOverviewScaleAndOffset(mLauncher);
         // As we drag right, animate the following properties:
@@ -243,27 +263,9 @@
         // Use QuickSwitchState instead of OverviewState to determine scrim color,
         // since we need to take potential taskbar into account.
         xAnim.setViewBackgroundColor(mLauncher.getScrimView(),
-                QUICK_SWITCH.getWorkspaceScrimColor(mLauncher), LINEAR);
+                QUICK_SWITCH_FROM_HOME.getWorkspaceScrimColor(mLauncher), LINEAR);
         if (mRecentsView.getTaskViewCount() == 0) {
             xAnim.addFloat(mRecentsView, CONTENT_ALPHA, 0f, 1f, LINEAR);
-            Log.d(BAD_STATE, "NBQSTC setupOverviewAnimators from: 0 to: 1");
-            xAnim.addListener(new AnimatorListenerAdapter() {
-                @Override
-                public void onAnimationStart(Animator animation) {
-                    Log.d(BAD_STATE, "NBQSTC setupOverviewAnimators onStart");
-                }
-
-                @Override
-                public void onAnimationCancel(Animator animation) {
-                    float alpha = mRecentsView == null ? -1 : CONTENT_ALPHA.get(mRecentsView);
-                    Log.d(BAD_STATE, "NBQSTC setupOverviewAnimators onCancel, alpha=" + alpha);
-                }
-
-                @Override
-                public void onAnimationEnd(Animator animation) {
-                    Log.d(BAD_STATE, "NBQSTC setupOverviewAnimators onEnd");
-                }
-            });
         }
         mXOverviewAnim = xAnim.createPlaybackController();
         mXOverviewAnim.dispatchOnStart();
@@ -321,6 +323,7 @@
         boolean verticalFling = mSwipeDetector.isFling(velocity.y);
         boolean noFling = !horizontalFling && !verticalFling;
         if (mMotionPauseDetector.isPaused() && noFling) {
+            // Going to Overview.
             cancelAnimations();
 
             StateAnimationConfig config = new StateAnimationConfig();
@@ -331,6 +334,8 @@
                 @Override
                 public void onAnimationEnd(Animator animation) {
                     onAnimationToStateCompleted(OVERVIEW);
+                    // Animate the icon after onAnimationToStateCompleted() so it doesn't clobber.
+                    mRecentsView.animateUpTaskIconScale();
                 }
             });
             overviewAnim.start();
@@ -350,24 +355,24 @@
             } else {
                 if (velocity.y > 0) {
                     // Flinging right and down goes to quick switch.
-                    targetState = QUICK_SWITCH;
+                    targetState = QUICK_SWITCH_FROM_HOME;
                 } else {
                     // Flinging up and right could go either home or to quick switch.
                     // Determine the target based on the higher velocity.
                     targetState = Math.abs(velocity.x) > Math.abs(velocity.y)
-                        ? QUICK_SWITCH : NORMAL;
+                        ? QUICK_SWITCH_FROM_HOME : NORMAL;
                 }
             }
         } else if (horizontalFling) {
-            targetState = velocity.x > 0 ? QUICK_SWITCH : NORMAL;
+            targetState = velocity.x > 0 ? QUICK_SWITCH_FROM_HOME : NORMAL;
         } else if (verticalFling) {
-            targetState = velocity.y > 0 ? QUICK_SWITCH : NORMAL;
+            targetState = velocity.y > 0 ? QUICK_SWITCH_FROM_HOME : NORMAL;
         } else {
             // If user isn't flinging, just snap to the closest state.
             boolean passedHorizontalThreshold = mXOverviewAnim.getInterpolatedProgress() > 0.5f;
             boolean passedVerticalThreshold = mYOverviewAnim.value > 1f;
             targetState = passedHorizontalThreshold && !passedVerticalThreshold
-                    ? QUICK_SWITCH : NORMAL;
+                    ? QUICK_SWITCH_FROM_HOME : NORMAL;
         }
 
         // Animate the various components to the target state.
@@ -429,7 +434,7 @@
             nonOverviewAnim.setFloatValues(startProgress, endProgress);
             mNonOverviewAnim.dispatchOnStart();
         }
-        if (targetState == QUICK_SWITCH) {
+        if (targetState == QUICK_SWITCH_FROM_HOME) {
             // Navigating to quick switch, add scroll feedback since the first time is not
             // considered a scroll by the RecentsView.
             VibratorWrapper.INSTANCE.get(mLauncher).vibrate(
@@ -452,7 +457,7 @@
                 .withSrcState(LAUNCHER_STATE_HOME)
                 .withDstState(targetState.statsLogOrdinal)
                 .log(getLauncherAtomEvent(mStartState.statsLogOrdinal, targetState.statsLogOrdinal,
-                        targetState == QUICK_SWITCH
+                        targetState == QUICK_SWITCH_FROM_HOME
                                 ? LAUNCHER_QUICKSWITCH_RIGHT
                                 : targetState.ordinal > mStartState.ordinal
                                         ? LAUNCHER_UNKNOWN_SWIPEUP
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitStatesTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitStatesTouchController.java
index e56c90c..8368f9c 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitStatesTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/PortraitStatesTouchController.java
@@ -21,21 +21,8 @@
 import static com.android.launcher3.LauncherState.ALL_APPS;
 import static com.android.launcher3.LauncherState.NORMAL;
 import static com.android.launcher3.LauncherState.OVERVIEW;
-import static com.android.launcher3.anim.Interpolators.FINAL_FRAME;
-import static com.android.launcher3.anim.Interpolators.INSTANT;
-import static com.android.launcher3.anim.Interpolators.LINEAR;
-import static com.android.launcher3.states.StateAnimationConfig.ANIM_ALL_APPS_FADE;
-import static com.android.launcher3.states.StateAnimationConfig.ANIM_DEPTH;
-import static com.android.launcher3.states.StateAnimationConfig.ANIM_HOTSEAT_FADE;
-import static com.android.launcher3.states.StateAnimationConfig.ANIM_HOTSEAT_SCALE;
-import static com.android.launcher3.states.StateAnimationConfig.ANIM_HOTSEAT_TRANSLATE;
-import static com.android.launcher3.states.StateAnimationConfig.ANIM_SCRIM_FADE;
-import static com.android.launcher3.states.StateAnimationConfig.ANIM_VERTICAL_PROGRESS;
-import static com.android.launcher3.states.StateAnimationConfig.ANIM_WORKSPACE_FADE;
-import static com.android.launcher3.states.StateAnimationConfig.ANIM_WORKSPACE_SCALE;
 
 import android.view.MotionEvent;
-import android.view.animation.Interpolator;
 
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Launcher;
@@ -44,6 +31,7 @@
 import com.android.launcher3.anim.Interpolators;
 import com.android.launcher3.states.StateAnimationConfig;
 import com.android.launcher3.touch.AbstractStateChangeTouchController;
+import com.android.launcher3.touch.AllAppsSwipeController;
 import com.android.launcher3.touch.SingleAxisSwipeDetector;
 import com.android.launcher3.uioverrides.states.OverviewState;
 import com.android.quickstep.SystemUiProxy;
@@ -58,53 +46,6 @@
 
     private static final String TAG = "PortraitStatesTouchCtrl";
 
-    /**
-     * The progress at which all apps content will be fully visible.
-     */
-    public static final float ALL_APPS_CONTENT_FADE_MAX_CLAMPING_THRESHOLD = 0.8f;
-
-    /**
-     * Minimum clamping progress for fading in all apps content
-     */
-    public static final float ALL_APPS_CONTENT_FADE_MIN_CLAMPING_THRESHOLD = 0.5f;
-
-    /**
-     * Minimum clamping progress for fading in all apps scrim
-     */
-    public static final float ALL_APPS_SCRIM_VISIBLE_THRESHOLD = .1f;
-
-    /**
-     * Maximum clamping progress for opaque all apps scrim
-     */
-    public static final float ALL_APPS_SCRIM_OPAQUE_THRESHOLD = .5f;
-
-    // Custom timing for NORMAL -> ALL_APPS on phones only.
-    private static final float ALL_APPS_STATE_TRANSITION = 0.4f;
-    private static final float ALL_APPS_FULL_DEPTH_PROGRESS = 0.5f;
-
-    // Custom interpolators for NORMAL -> ALL_APPS on phones only.
-    private static final Interpolator LINEAR_EARLY =
-            Interpolators.clampToProgress(LINEAR, 0f, ALL_APPS_STATE_TRANSITION);
-    private static final Interpolator STEP_TRANSITION =
-            Interpolators.clampToProgress(FINAL_FRAME, 0f, ALL_APPS_STATE_TRANSITION);
-    // The blur to and from All Apps is set to be complete when the interpolator is at 0.5.
-    public static final Interpolator BLUR =
-            Interpolators.clampToProgress(
-                    Interpolators.mapToProgress(LINEAR, 0f, ALL_APPS_FULL_DEPTH_PROGRESS),
-                    0f, ALL_APPS_STATE_TRANSITION);
-    public static final Interpolator WORKSPACE_FADE = STEP_TRANSITION;
-    public static final Interpolator WORKSPACE_SCALE = LINEAR_EARLY;
-    public static final Interpolator HOTSEAT_FADE = STEP_TRANSITION;
-    public static final Interpolator HOTSEAT_SCALE = LINEAR_EARLY;
-    public static final Interpolator HOTSEAT_TRANSLATE = STEP_TRANSITION;
-    public static final Interpolator SCRIM_FADE = LINEAR_EARLY;
-    public static final Interpolator ALL_APPS_FADE =
-            Interpolators.clampToProgress(LINEAR, ALL_APPS_STATE_TRANSITION, 1f);
-    public static final Interpolator ALL_APPS_VERTICAL_PROGRESS =
-            Interpolators.clampToProgress(
-                    Interpolators.mapToProgress(LINEAR, ALL_APPS_STATE_TRANSITION, 1f),
-                    ALL_APPS_STATE_TRANSITION, 1f);
-
     private final PortraitOverviewStateTouchHelper mOverviewPortraitStateTouchHelper;
 
     public PortraitStatesTouchController(Launcher l) {
@@ -160,66 +101,15 @@
         return fromState;
     }
 
-    private StateAnimationConfig getNormalToAllAppsAnimation() {
-        StateAnimationConfig builder = new StateAnimationConfig();
-        if (mLauncher.getDeviceProfile().isTablet) {
-            builder.setInterpolator(ANIM_ALL_APPS_FADE, INSTANT);
-            builder.setInterpolator(ANIM_SCRIM_FADE,
-                    Interpolators.clampToProgress(LINEAR,
-                            ALL_APPS_SCRIM_VISIBLE_THRESHOLD,
-                            ALL_APPS_SCRIM_OPAQUE_THRESHOLD));
-        } else {
-            // TODO(b/231682175): centralize this setup in AllAppsSwipeController.
-            builder.setInterpolator(ANIM_DEPTH, BLUR);
-            builder.setInterpolator(ANIM_WORKSPACE_FADE, WORKSPACE_FADE);
-            builder.setInterpolator(ANIM_WORKSPACE_SCALE, WORKSPACE_SCALE);
-            builder.setInterpolator(ANIM_HOTSEAT_FADE, HOTSEAT_FADE);
-            builder.setInterpolator(ANIM_HOTSEAT_SCALE, HOTSEAT_SCALE);
-            builder.setInterpolator(ANIM_HOTSEAT_TRANSLATE, HOTSEAT_TRANSLATE);
-            builder.setInterpolator(ANIM_SCRIM_FADE, SCRIM_FADE);
-            builder.setInterpolator(ANIM_ALL_APPS_FADE, ALL_APPS_FADE);
-            builder.setInterpolator(ANIM_VERTICAL_PROGRESS, ALL_APPS_VERTICAL_PROGRESS);
-        }
-        return builder;
-    }
-
-    private StateAnimationConfig getAllAppsToNormalAnimation() {
-        StateAnimationConfig builder = new StateAnimationConfig();
-        if (mLauncher.getDeviceProfile().isTablet) {
-            builder.setInterpolator(ANIM_ALL_APPS_FADE, FINAL_FRAME);
-            builder.setInterpolator(ANIM_SCRIM_FADE,
-                    Interpolators.clampToProgress(LINEAR,
-                            1 - ALL_APPS_SCRIM_OPAQUE_THRESHOLD,
-                            1 - ALL_APPS_SCRIM_VISIBLE_THRESHOLD));
-        } else {
-            // These interpolators are the reverse of the ones used above, so swiping out of All
-            // Apps feels the same as swiping into it.
-            // TODO(b/231682175): centralize this setup in AllAppsSwipeController.
-            builder.setInterpolator(ANIM_DEPTH, Interpolators.reverse(BLUR));
-            builder.setInterpolator(ANIM_WORKSPACE_FADE, Interpolators.reverse(WORKSPACE_FADE));
-            builder.setInterpolator(ANIM_WORKSPACE_SCALE, Interpolators.reverse(WORKSPACE_SCALE));
-            builder.setInterpolator(ANIM_HOTSEAT_FADE, Interpolators.reverse(HOTSEAT_FADE));
-            builder.setInterpolator(ANIM_HOTSEAT_SCALE, Interpolators.reverse(HOTSEAT_SCALE));
-            builder.setInterpolator(ANIM_HOTSEAT_TRANSLATE,
-                    Interpolators.reverse(HOTSEAT_TRANSLATE));
-            builder.setInterpolator(ANIM_SCRIM_FADE, Interpolators.reverse(SCRIM_FADE));
-            builder.setInterpolator(ANIM_ALL_APPS_FADE, Interpolators.reverse(ALL_APPS_FADE));
-            builder.setInterpolator(ANIM_VERTICAL_PROGRESS,
-                    Interpolators.reverse(ALL_APPS_VERTICAL_PROGRESS));
-        }
-        return builder;
-    }
-
     @Override
     protected StateAnimationConfig getConfigForStates(
             LauncherState fromState, LauncherState toState) {
-        final StateAnimationConfig config;
+        final StateAnimationConfig config = new StateAnimationConfig();
+        config.userControlled = true;
         if (fromState == NORMAL && toState == ALL_APPS) {
-            config = getNormalToAllAppsAnimation();
+            AllAppsSwipeController.applyNormalToAllAppsAnimConfig(mLauncher, config);
         } else if (fromState == ALL_APPS && toState == NORMAL) {
-            config = getAllAppsToNormalAnimation();
-        } else {
-            config = new StateAnimationConfig();
+            AllAppsSwipeController.applyAllAppsToNormalConfig(mLauncher, config);
         }
         return config;
     }
@@ -296,12 +186,17 @@
             case MotionEvent.ACTION_DOWN:
                 InteractionJankMonitorWrapper.begin(
                         mLauncher.getRootView(), InteractionJankMonitorWrapper.CUJ_OPEN_ALL_APPS);
+                InteractionJankMonitorWrapper.begin(
+                        mLauncher.getRootView(),
+                        InteractionJankMonitorWrapper.CUJ_CLOSE_ALL_APPS_SWIPE);
                 break;
 
             case MotionEvent.ACTION_CANCEL:
             case MotionEvent.ACTION_UP:
                 InteractionJankMonitorWrapper.cancel(
                         InteractionJankMonitorWrapper.CUJ_OPEN_ALL_APPS);
+                InteractionJankMonitorWrapper.cancel(
+                        InteractionJankMonitorWrapper.CUJ_CLOSE_ALL_APPS_SWIPE);
                 break;
         }
         return super.onControllerInterceptTouchEvent(ev);
@@ -314,6 +209,10 @@
         if (newToState != ALL_APPS) {
             InteractionJankMonitorWrapper.cancel(InteractionJankMonitorWrapper.CUJ_OPEN_ALL_APPS);
         }
+        if (newToState != NORMAL) {
+            InteractionJankMonitorWrapper.cancel(
+                    InteractionJankMonitorWrapper.CUJ_CLOSE_ALL_APPS_SWIPE);
+        }
     }
 
     @Override
@@ -321,6 +220,9 @@
         super.onReachedFinalState(toState);
         if (toState == ALL_APPS) {
             InteractionJankMonitorWrapper.end(InteractionJankMonitorWrapper.CUJ_OPEN_ALL_APPS);
+        } else if (toState == NORMAL) {
+            InteractionJankMonitorWrapper.end(
+                    InteractionJankMonitorWrapper.CUJ_CLOSE_ALL_APPS_SWIPE);
         }
     }
 
@@ -328,5 +230,7 @@
     protected void clearState() {
         super.clearState();
         InteractionJankMonitorWrapper.cancel(InteractionJankMonitorWrapper.CUJ_OPEN_ALL_APPS);
+        InteractionJankMonitorWrapper.cancel(
+                InteractionJankMonitorWrapper.CUJ_CLOSE_ALL_APPS_SWIPE);
     }
 }
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java
index d1b0a9c..f941b02 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java
@@ -16,7 +16,7 @@
 package com.android.launcher3.uioverrides.touchcontrollers;
 
 import static com.android.launcher3.LauncherState.NORMAL;
-import static com.android.launcher3.LauncherState.QUICK_SWITCH;
+import static com.android.launcher3.LauncherState.QUICK_SWITCH_FROM_HOME;
 import static com.android.launcher3.anim.Interpolators.ACCEL_2;
 import static com.android.launcher3.anim.Interpolators.DEACCEL_2;
 import static com.android.launcher3.anim.Interpolators.INSTANT;
@@ -29,7 +29,6 @@
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_VERTICAL_PROGRESS;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_WORKSPACE_FADE;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_WORKSPACE_TRANSLATE;
-import static com.android.launcher3.testing.TestProtocol.BAD_STATE;
 import static com.android.launcher3.util.SystemUiController.UI_STATE_FULLSCREEN_TASK;
 import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET;
 import static com.android.quickstep.views.RecentsView.RECENTS_SCALE_PROPERTY;
@@ -37,7 +36,6 @@
 import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_OVERVIEW_DISABLED;
 
-import android.util.Log;
 import android.view.MotionEvent;
 
 import com.android.launcher3.Launcher;
@@ -47,9 +45,10 @@
 import com.android.launcher3.touch.AbstractStateChangeTouchController;
 import com.android.launcher3.touch.SingleAxisSwipeDetector;
 import com.android.launcher3.util.DisplayController;
-import com.android.launcher3.util.DisplayController.NavigationMode;
+import com.android.launcher3.util.NavigationMode;
 import com.android.quickstep.SystemUiProxy;
 import com.android.quickstep.TaskUtils;
+import com.android.quickstep.views.DesktopTaskView;
 import com.android.quickstep.views.RecentsView;
 import com.android.quickstep.views.TaskView;
 
@@ -80,6 +79,10 @@
         if ((ev.getEdgeFlags() & Utilities.EDGE_NAV_BAR) == 0) {
             return false;
         }
+        if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) {
+            // TODO(b/268075592): add support for quickswitch to/from desktop
+            return false;
+        }
         return true;
     }
 
@@ -89,7 +92,7 @@
         if ((stateFlags & SYSUI_STATE_OVERVIEW_DISABLED) != 0) {
             return NORMAL;
         }
-        return isDragTowardPositive ? QUICK_SWITCH : NORMAL;
+        return isDragTowardPositive ? QUICK_SWITCH_FROM_HOME : NORMAL;
     }
 
     @Override
@@ -112,9 +115,8 @@
 
         // Set RecentView's initial properties for coming in from the side.
         RECENTS_SCALE_PROPERTY.set(mOverviewPanel,
-                QUICK_SWITCH.getOverviewScaleAndOffset(mLauncher)[0] * 0.85f);
+                QUICK_SWITCH_FROM_HOME.getOverviewScaleAndOffset(mLauncher)[0] * 0.85f);
         ADJACENT_PAGE_HORIZONTAL_OFFSET.set(mOverviewPanel, 1f);
-        Log.d(BAD_STATE, "QuickSwitchTouchController initCurrentAnimation setContentAlpha=1");
         mOverviewPanel.setContentAlpha(1);
 
         mCurrentAnimation = mLauncher.getStateManager()
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java
index 1bc789b..395833f 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/StatusBarTouchController.java
@@ -90,10 +90,11 @@
             if (!mCanIntercept) {
                 return false;
             }
+            mDownEvents.clear();
             mDownEvents.put(pid, new PointF(ev.getX(), ev.getY()));
         } else if (ev.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN) {
-           // Check!! should only set it only when threshold is not entered.
-           mDownEvents.put(pid, new PointF(ev.getX(idx), ev.getY(idx)));
+            // Check!! should only set it only when threshold is not entered.
+            mDownEvents.put(pid, new PointF(ev.getX(idx), ev.getY(idx)));
         }
         if (!mCanIntercept) {
             return false;
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java
index ca7f633..eddc50c 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TaskViewTouchController.java
@@ -41,8 +41,9 @@
 import com.android.launcher3.util.DisplayController;
 import com.android.launcher3.util.FlingBlockCheck;
 import com.android.launcher3.util.TouchController;
+import com.android.launcher3.util.VibratorWrapper;
 import com.android.launcher3.views.BaseDragLayer;
-import com.android.quickstep.util.VibratorWrapper;
+import com.android.quickstep.util.VibrationConstants;
 import com.android.quickstep.views.RecentsView;
 import com.android.quickstep.views.TaskView;
 
@@ -61,7 +62,7 @@
             Utilities.ATLEAST_R ? VibrationEffect.Composition.PRIMITIVE_TICK : -1;
     public static final float TASK_DISMISS_VIBRATION_PRIMITIVE_SCALE = 1f;
     public static final VibrationEffect TASK_DISMISS_VIBRATION_FALLBACK =
-            VibratorWrapper.EFFECT_TEXTURE_TICK;
+            VibrationConstants.EFFECT_TEXTURE_TICK;
 
     protected final T mActivity;
     private final SingleAxisSwipeDetector mDetector;
@@ -236,7 +237,8 @@
         PendingAnimation pa;
         if (goingUp) {
             currentInterpolator = Interpolators.LINEAR;
-            pa = mRecentsView.createTaskDismissAnimation(mTaskBeingDragged,
+            pa = new PendingAnimation(maxDuration);
+            mRecentsView.createTaskDismissAnimation(pa, mTaskBeingDragged,
                     true /* animateTaskView */, true /* removeTask */, maxDuration,
                     false /* dismissingForSplitSelection*/);
 
diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TwoButtonNavbarTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TwoButtonNavbarTouchController.java
index e2747df..9f2c1d4 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TwoButtonNavbarTouchController.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/TwoButtonNavbarTouchController.java
@@ -24,13 +24,11 @@
 
 import android.animation.ValueAnimator;
 import android.os.SystemClock;
-import android.util.Log;
 import android.view.MotionEvent;
 
 import com.android.launcher3.AbstractFloatingView;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherState;
-import com.android.launcher3.testing.TestProtocol;
 import com.android.launcher3.touch.AbstractStateChangeTouchController;
 import com.android.launcher3.touch.SingleAxisSwipeDetector;
 import com.android.quickstep.SystemUiProxy;
diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
index 76f7718..3a6566a 100644
--- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
+++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
@@ -15,6 +15,7 @@
  */
 package com.android.quickstep;
 
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
 import static android.view.Surface.ROTATION_0;
 import static android.view.Surface.ROTATION_270;
 import static android.view.Surface.ROTATION_90;
@@ -26,17 +27,19 @@
 import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL;
 import static com.android.launcher3.anim.Interpolators.DEACCEL;
 import static com.android.launcher3.anim.Interpolators.OVERSHOOT_1_2;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
 import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_BACKGROUND;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.IGNORE;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_HOME_GESTURE;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_OVERVIEW_GESTURE;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_QUICKSWITCH_LEFT;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_QUICKSWITCH_RIGHT;
+import static com.android.launcher3.uioverrides.QuickstepLauncher.ENABLE_PIP_KEEP_CLEAR_ALGORITHM;
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
 import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
 import static com.android.launcher3.util.SystemUiController.UI_STATE_FULLSCREEN_TASK;
+import static com.android.launcher3.util.VibratorWrapper.OVERVIEW_HAPTIC;
 import static com.android.launcher3.util.window.RefreshRateTracker.getSingleFrameMs;
+import static com.android.quickstep.GestureState.GestureEndTarget.ALL_APPS;
 import static com.android.quickstep.GestureState.GestureEndTarget.HOME;
 import static com.android.quickstep.GestureState.GestureEndTarget.LAST_TASK;
 import static com.android.quickstep.GestureState.GestureEndTarget.NEW_TASK;
@@ -46,10 +49,12 @@
 import static com.android.quickstep.GestureState.STATE_RECENTS_ANIMATION_CANCELED;
 import static com.android.quickstep.GestureState.STATE_RECENTS_SCROLLING_FINISHED;
 import static com.android.quickstep.MultiStateCallback.DEBUG_STATES;
-import static com.android.quickstep.util.VibratorWrapper.OVERVIEW_HAPTIC;
+import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.CANCEL_RECENTS_ANIMATION;
+import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.EXPECTING_TASK_APPEARED;
+import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.LAUNCHER_DESTROYED;
+import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.ON_SETTLED_ON_END_TARGET;
 import static com.android.quickstep.views.RecentsView.UPDATE_SYSUI_FLAGS_THRESHOLD;
 import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
-import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
@@ -58,8 +63,11 @@
 import android.annotation.TargetApi;
 import android.app.Activity;
 import android.app.ActivityManager;
+import android.app.TaskInfo;
+import android.app.WindowConfiguration;
 import android.content.Context;
 import android.content.Intent;
+import android.content.res.Resources;
 import android.graphics.Matrix;
 import android.graphics.PointF;
 import android.graphics.Rect;
@@ -69,8 +77,10 @@
 import android.os.SystemClock;
 import android.util.Log;
 import android.view.MotionEvent;
+import android.view.RemoteAnimationTarget;
 import android.view.View;
 import android.view.View.OnApplyWindowInsetsListener;
+import android.view.ViewGroup;
 import android.view.ViewTreeObserver.OnDrawListener;
 import android.view.ViewTreeObserver.OnScrollChangedListener;
 import android.view.WindowInsets;
@@ -81,24 +91,31 @@
 import androidx.annotation.Nullable;
 import androidx.annotation.UiThread;
 
+import com.android.internal.util.LatencyTracker;
 import com.android.launcher3.AbstractFloatingView;
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.anim.AnimationSuccessListener;
 import com.android.launcher3.anim.AnimatorPlaybackController;
+import com.android.launcher3.dragndrop.DragView;
 import com.android.launcher3.logging.StatsLogManager;
 import com.android.launcher3.logging.StatsLogManager.StatsLogger;
 import com.android.launcher3.statemanager.BaseState;
 import com.android.launcher3.statemanager.StatefulActivity;
+import com.android.launcher3.taskbar.TaskbarUIController;
 import com.android.launcher3.tracing.InputConsumerProto;
 import com.android.launcher3.tracing.SwipeHandlerProto;
+import com.android.launcher3.uioverrides.QuickstepLauncher;
 import com.android.launcher3.util.ActivityLifecycleCallbacksAdapter;
+import com.android.launcher3.util.DisplayController;
 import com.android.launcher3.util.TraceHelper;
+import com.android.launcher3.util.VibratorWrapper;
 import com.android.launcher3.util.WindowBounds;
 import com.android.quickstep.BaseActivityInterface.AnimationFactory;
 import com.android.quickstep.GestureState.GestureEndTarget;
 import com.android.quickstep.RemoteTargetGluer.RemoteTargetHandle;
+import com.android.quickstep.util.ActiveGestureErrorDetector;
 import com.android.quickstep.util.ActiveGestureLog;
 import com.android.quickstep.util.ActivityInitListener;
 import com.android.quickstep.util.AnimatorControllerWithResistance;
@@ -109,10 +126,11 @@
 import com.android.quickstep.util.RecentsOrientedState;
 import com.android.quickstep.util.RectFSpringAnim;
 import com.android.quickstep.util.StaggeredWorkspaceAnim;
+import com.android.quickstep.util.SurfaceTransaction;
 import com.android.quickstep.util.SurfaceTransactionApplier;
 import com.android.quickstep.util.SwipePipToHomeAnimator;
 import com.android.quickstep.util.TaskViewSimulator;
-import com.android.quickstep.util.VibratorWrapper;
+import com.android.quickstep.views.DesktopTaskView;
 import com.android.quickstep.views.RecentsView;
 import com.android.quickstep.views.TaskView;
 import com.android.systemui.shared.recents.model.Task;
@@ -120,14 +138,17 @@
 import com.android.systemui.shared.system.ActivityManagerWrapper;
 import com.android.systemui.shared.system.InputConsumerController;
 import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
-import com.android.systemui.shared.system.LatencyTrackerCompat;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
+import com.android.systemui.shared.system.SysUiStatsLog;
 import com.android.systemui.shared.system.TaskStackChangeListener;
 import com.android.systemui.shared.system.TaskStackChangeListeners;
+import com.android.wm.shell.common.TransactionPool;
+import com.android.wm.shell.startingsurface.SplashScreenExitAnimationUtils;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
+import java.util.Objects;
+import java.util.Optional;
 import java.util.function.Consumer;
 
 /**
@@ -140,7 +161,10 @@
         RecentsAnimationCallbacks.RecentsAnimationListener {
     private static final String TAG = "AbsSwipeUpHandler";
 
-    private static final String[] STATE_NAMES = DEBUG_STATES ? new String[17] : null;
+    private static final ArrayList<String> STATE_NAMES = new ArrayList<>();
+
+    /** Shift distance to transition to All Apps if ENABLE_ALL_APPS_FROM_OVERVIEW. */
+    public static final float ALL_APPS_SHIFT_THRESHOLD = 2f;
 
     protected final BaseActivityInterface<S, T> mActivityInterface;
     protected final InputConsumerProxy mInputConsumerProxy;
@@ -154,7 +178,7 @@
     protected @Nullable RecentsAnimationController mDeferredCleanupRecentsAnimationController;
     protected RecentsAnimationTargets mRecentsAnimationTargets;
     protected T mActivity;
-    protected Q mRecentsView;
+    protected @Nullable Q mRecentsView;
     protected Runnable mGestureEndCallback;
     protected MultiStateCallback mStateCallback;
     protected boolean mCanceled;
@@ -166,71 +190,76 @@
                     if (mActivity != activity) {
                         return;
                     }
+                    ActiveGestureLog.INSTANCE.addLog("Launcher destroyed", LAUNCHER_DESTROYED);
                     mRecentsView = null;
                     mActivity = null;
                 }
             };
 
-    private static int getFlagForIndex(int index, String name) {
+    private static int FLAG_COUNT = 0;
+    private static int getNextStateFlag(String name) {
         if (DEBUG_STATES) {
-            STATE_NAMES[index] = name;
+            STATE_NAMES.add(name);
         }
-        return 1 << index;
+        int index = 1 << FLAG_COUNT;
+        FLAG_COUNT++;
+        return index;
     }
 
     // Launcher UI related states
     protected static final int STATE_LAUNCHER_PRESENT =
-            getFlagForIndex(0, "STATE_LAUNCHER_PRESENT");
+            getNextStateFlag("STATE_LAUNCHER_PRESENT");
     protected static final int STATE_LAUNCHER_STARTED =
-            getFlagForIndex(1, "STATE_LAUNCHER_STARTED");
+            getNextStateFlag("STATE_LAUNCHER_STARTED");
     protected static final int STATE_LAUNCHER_DRAWN =
-            getFlagForIndex(2, "STATE_LAUNCHER_DRAWN");
+            getNextStateFlag("STATE_LAUNCHER_DRAWN");
     // Called when the Launcher has connected to the touch interaction service (and the taskbar
     // ui controller is initialized)
     protected static final int STATE_LAUNCHER_BIND_TO_SERVICE =
-            getFlagForIndex(3, "STATE_LAUNCHER_BIND_TO_SERVICE");
+            getNextStateFlag("STATE_LAUNCHER_BIND_TO_SERVICE");
 
     // Internal initialization states
     private static final int STATE_APP_CONTROLLER_RECEIVED =
-            getFlagForIndex(4, "STATE_APP_CONTROLLER_RECEIVED");
+            getNextStateFlag("STATE_APP_CONTROLLER_RECEIVED");
 
     // Interaction finish states
     private static final int STATE_SCALED_CONTROLLER_HOME =
-            getFlagForIndex(5, "STATE_SCALED_CONTROLLER_HOME");
+            getNextStateFlag("STATE_SCALED_CONTROLLER_HOME");
     private static final int STATE_SCALED_CONTROLLER_RECENTS =
-            getFlagForIndex(6, "STATE_SCALED_CONTROLLER_RECENTS");
+            getNextStateFlag("STATE_SCALED_CONTROLLER_RECENTS");
 
     protected static final int STATE_HANDLER_INVALIDATED =
-            getFlagForIndex(7, "STATE_HANDLER_INVALIDATED");
+            getNextStateFlag("STATE_HANDLER_INVALIDATED");
     private static final int STATE_GESTURE_STARTED =
-            getFlagForIndex(8, "STATE_GESTURE_STARTED");
+            getNextStateFlag("STATE_GESTURE_STARTED");
     private static final int STATE_GESTURE_CANCELLED =
-            getFlagForIndex(9, "STATE_GESTURE_CANCELLED");
+            getNextStateFlag("STATE_GESTURE_CANCELLED");
     private static final int STATE_GESTURE_COMPLETED =
-            getFlagForIndex(10, "STATE_GESTURE_COMPLETED");
+            getNextStateFlag("STATE_GESTURE_COMPLETED");
 
     private static final int STATE_CAPTURE_SCREENSHOT =
-            getFlagForIndex(11, "STATE_CAPTURE_SCREENSHOT");
+            getNextStateFlag("STATE_CAPTURE_SCREENSHOT");
     protected static final int STATE_SCREENSHOT_CAPTURED =
-            getFlagForIndex(12, "STATE_SCREENSHOT_CAPTURED");
+            getNextStateFlag("STATE_SCREENSHOT_CAPTURED");
     private static final int STATE_SCREENSHOT_VIEW_SHOWN =
-            getFlagForIndex(13, "STATE_SCREENSHOT_VIEW_SHOWN");
+            getNextStateFlag("STATE_SCREENSHOT_VIEW_SHOWN");
 
     private static final int STATE_RESUME_LAST_TASK =
-            getFlagForIndex(14, "STATE_RESUME_LAST_TASK");
+            getNextStateFlag("STATE_RESUME_LAST_TASK");
     private static final int STATE_START_NEW_TASK =
-            getFlagForIndex(15, "STATE_START_NEW_TASK");
+            getNextStateFlag("STATE_START_NEW_TASK");
     private static final int STATE_CURRENT_TASK_FINISHED =
-            getFlagForIndex(16, "STATE_CURRENT_TASK_FINISHED");
+            getNextStateFlag("STATE_CURRENT_TASK_FINISHED");
     private static final int STATE_FINISH_WITH_NO_END =
-            getFlagForIndex(17, "STATE_FINISH_WITH_NO_END");
+            getNextStateFlag("STATE_FINISH_WITH_NO_END");
+    private static final int STATE_SETTLED_ON_ALL_APPS =
+            getNextStateFlag("STATE_SETTLED_ON_ALL_APPS");
 
     private static final int LAUNCHER_UI_STATES =
             STATE_LAUNCHER_PRESENT | STATE_LAUNCHER_DRAWN | STATE_LAUNCHER_STARTED |
                     STATE_LAUNCHER_BIND_TO_SERVICE;
 
     public static final long MAX_SWIPE_DURATION = 350;
-    public static final long HOME_DURATION = StaggeredWorkspaceAnim.DURATION_MS;
 
     public static final float MIN_PROGRESS_FOR_OVERVIEW = 0.7f;
     private static final float SWIPE_DURATION_MULTIPLIER =
@@ -241,6 +270,13 @@
 
     private static final float MAX_QUICK_SWITCH_RECENTS_SCALE_PROGRESS = 0.07f;
 
+    // Controls task thumbnail splash's reveal animation after landing on a task from quickswitch.
+    // These values match WindowManager/Shell starting_window_app_reveal_* config values.
+    private static final int SPLASH_FADE_OUT_DURATION = 133;
+    private static final int SPLASH_APP_REVEAL_DELAY = 83;
+    private static final int SPLASH_APP_REVEAL_DURATION = 266;
+    private static final int SPLASH_ANIMATION_DURATION = 349;
+
     /**
      * Used as the page index for logging when we return to the last task at the end of the gesture.
      */
@@ -252,8 +288,6 @@
     private RunningWindowAnim[] mRunningWindowAnim;
     // Possible second animation running at the same time as mRunningWindowAnim
     private Animator mParallelRunningAnim;
-    // Current running divider animation
-    private ValueAnimator mDividerAnimator;
     private boolean mIsMotionPaused;
     private boolean mHasMotionEverBeenPaused;
 
@@ -269,15 +303,16 @@
 
     private boolean mWasLauncherAlreadyVisible;
 
-    private boolean mPassedOverviewThreshold;
     private boolean mGestureStarted;
     private boolean mLogDirectionUpOrLeft = true;
-    private PointF mDownPos;
     private boolean mIsLikelyToStartNewTask;
+    private boolean mIsInAllAppsRegion;
 
     private final long mTouchTimeMs;
     private long mLauncherFrameDrawnTime;
 
+    private final int mSplashMainWindowShiftLength;
+
     private final Runnable mOnDeferredActivityLaunch = this::onDeferredActivityLaunch;
 
     private SwipePipToHomeAnimator mSwipePipToHomeAnimator;
@@ -290,6 +325,21 @@
     // Interpolate RecentsView scale from start of quick switch scroll until this scroll threshold
     private final float mQuickSwitchScaleScrollThreshold;
 
+    private final int mTaskbarAppWindowThreshold;
+    private final int mTaskbarHomeOverviewThreshold;
+    private final int mTaskbarCatchUpThreshold;
+    private final boolean mTaskbarAlreadyOpen;
+    private final boolean mIsTaskbarAllAppsOpen;
+    private final boolean mIsTransientTaskbar;
+    // May be set to false when mIsTransientTaskbar is true.
+    private boolean mCanSlowSwipeGoHome = true;
+    // Indicates whether the divider is shown, only used when split screen is activated.
+    private boolean mIsDividerShown = true;
+    private boolean mStartMovingTasks;
+
+    @Nullable
+    private RemoteAnimationTargets.ReleaseCheck mSwipePipToHomeReleaseCheck = null;
+
     public AbsSwipeUpHandler(Context context, RecentsAnimationDeviceState deviceState,
             TaskAnimationManager taskAnimationManager, GestureState gestureState,
             long touchTimeMs, boolean continuingLastGesture,
@@ -298,24 +348,67 @@
         mActivityInterface = gestureState.getActivityInterface();
         mActivityInitListener = mActivityInterface.createActivityInitListener(this::onActivityInit);
         mInputConsumerProxy =
-                new InputConsumerProxy(context,
-                        () -> mRecentsView.getPagedViewOrientedState().getRecentsActivityRotation(),
-                        inputConsumer, () -> {
+                new InputConsumerProxy(context, /* rotationSupplier = */ () -> {
+                    if (mRecentsView == null) {
+                        return ROTATION_0;
+                    }
+                    return mRecentsView.getPagedViewOrientedState().getRecentsActivityRotation();
+                }, inputConsumer, /* callback = */ () -> {
                     endRunningWindowAnim(mGestureState.getEndTarget() == HOME /* cancel */);
                     endLauncherTransitionController();
                 }, new InputProxyHandlerFactory(mActivityInterface, mGestureState));
         mTaskAnimationManager = taskAnimationManager;
         mTouchTimeMs = touchTimeMs;
         mContinuingLastGesture = continuingLastGesture;
-        mQuickSwitchScaleScrollThreshold = context.getResources().getDimension(
-                R.dimen.quick_switch_scaling_scroll_threshold);
 
-        initAfterSubclassConstructor();
+        Resources res = context.getResources();
+        mQuickSwitchScaleScrollThreshold = res
+                .getDimension(R.dimen.quick_switch_scaling_scroll_threshold);
+
+        mSplashMainWindowShiftLength = -res
+                .getDimensionPixelSize(R.dimen.starting_surface_exit_animation_window_shift_length);
+
+        initTransitionEndpoints(mRemoteTargetHandles[0].getTaskViewSimulator()
+                .getOrientationState().getLauncherDeviceProfile());
         initStateCallbacks();
+
+        mIsTransientTaskbar = mDp.isTaskbarPresent
+                && DisplayController.isTransientTaskbar(mActivity);
+        TaskbarUIController controller = mActivityInterface.getTaskbarController();
+        mTaskbarAlreadyOpen = controller != null && !controller.isTaskbarStashed();
+        mIsTaskbarAllAppsOpen = controller != null && controller.isTaskbarAllAppsOpen();
+        mTaskbarAppWindowThreshold =
+                res.getDimensionPixelSize(R.dimen.taskbar_app_window_threshold);
+        boolean swipeWillNotShowTaskbar = mTaskbarAlreadyOpen || mGestureState.isTrackpadGesture();
+        mTaskbarHomeOverviewThreshold = swipeWillNotShowTaskbar
+                ? 0
+                : res.getDimensionPixelSize(R.dimen.taskbar_home_overview_threshold);
+        mTaskbarCatchUpThreshold = res.getDimensionPixelSize(R.dimen.taskbar_catch_up_threshold);
+    }
+
+    @Nullable
+    private static ActiveGestureErrorDetector.GestureEvent getTrackedEventForState(int stateFlag) {
+        if (stateFlag == STATE_GESTURE_STARTED) {
+            return ActiveGestureErrorDetector.GestureEvent.STATE_GESTURE_STARTED;
+        } else if (stateFlag == STATE_GESTURE_COMPLETED) {
+            return ActiveGestureErrorDetector.GestureEvent.STATE_GESTURE_COMPLETED;
+        } else if (stateFlag == STATE_GESTURE_CANCELLED) {
+            return ActiveGestureErrorDetector.GestureEvent.STATE_GESTURE_CANCELLED;
+        } else if (stateFlag == STATE_SCREENSHOT_CAPTURED) {
+            return ActiveGestureErrorDetector.GestureEvent.STATE_SCREENSHOT_CAPTURED;
+        } else if (stateFlag == STATE_CAPTURE_SCREENSHOT) {
+            return ActiveGestureErrorDetector.GestureEvent.STATE_CAPTURE_SCREENSHOT;
+        } else if (stateFlag == STATE_HANDLER_INVALIDATED) {
+            return ActiveGestureErrorDetector.GestureEvent.STATE_HANDLER_INVALIDATED;
+        } else if (stateFlag == STATE_LAUNCHER_DRAWN) {
+            return ActiveGestureErrorDetector.GestureEvent.STATE_LAUNCHER_DRAWN;
+        }
+        return null;
     }
 
     private void initStateCallbacks() {
-        mStateCallback = new MultiStateCallback(STATE_NAMES);
+        mStateCallback = new MultiStateCallback(
+                STATE_NAMES.toArray(new String[0]), AbsSwipeUpHandler::getTrackedEventForState);
 
         mStateCallback.runOnceAtState(STATE_LAUNCHER_PRESENT | STATE_GESTURE_STARTED,
                 this::onLauncherPresentAndGestureStarted);
@@ -348,6 +441,9 @@
                 this::finishCurrentTransitionToHome);
         mStateCallback.runOnceAtState(STATE_SCALED_CONTROLLER_HOME | STATE_CURRENT_TASK_FINISHED,
                 this::reset);
+        mStateCallback.runOnceAtState(STATE_SETTLED_ON_ALL_APPS | STATE_SCREENSHOT_CAPTURED
+                        | STATE_GESTURE_COMPLETED,
+                this::finishCurrentTransitionToAllApps);
 
         mStateCallback.runOnceAtState(STATE_LAUNCHER_PRESENT | STATE_APP_CONTROLLER_RECEIVED
                         | STATE_LAUNCHER_DRAWN | STATE_SCALED_CONTROLLER_RECENTS
@@ -368,12 +464,6 @@
                 this::resetStateForAnimationCancel);
         mStateCallback.runOnceAtState(STATE_HANDLER_INVALIDATED | STATE_FINISH_WITH_NO_END,
                 this::resetStateForAnimationCancel);
-
-        if (!ENABLE_QUICKSTEP_LIVE_TILE.get()) {
-            mStateCallback.addChangeListener(STATE_APP_CONTROLLER_RECEIVED | STATE_LAUNCHER_PRESENT
-                            | STATE_SCREENSHOT_VIEW_SHOWN | STATE_CAPTURE_SCREENSHOT,
-                    (b) -> mRecentsView.setRunningTaskHidden(!b));
-        }
     }
 
     protected boolean onActivityInit(Boolean alreadyOnHome) {
@@ -442,7 +532,7 @@
             });
 
         setupRecentsViewUi();
-        linkRecentsViewScroll();
+        mRecentsView.runOnPageScrollsInitialized(this::linkRecentsViewScroll);
         activity.runOnBindToTouchInteractionService(this::onLauncherBindToService);
 
         mActivity.registerActivityLifecycleCallbacks(mLifecycleCallbacks);
@@ -547,18 +637,14 @@
                                     mActivityInterface);
                 });
 
-        notifyGestureStartedAsync();
+        notifyGestureStarted();
     }
 
     private void onDeferredActivityLaunch() {
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
-            mActivityInterface.switchRunningTaskViewToScreenshot(
-                    null, () -> {
-                        mTaskAnimationManager.finishRunningRecentsAnimation(true /* toHome */);
-                    });
-        } else {
-            mTaskAnimationManager.finishRunningRecentsAnimation(true /* toHome */);
-        }
+        mActivityInterface.switchRunningTaskViewToScreenshot(
+                null, () -> {
+                    mTaskAnimationManager.finishRunningRecentsAnimation(true /* toHome */);
+                });
     }
 
     private void setupRecentsViewUi() {
@@ -571,12 +657,20 @@
 
     protected void notifyGestureAnimationStartToRecents() {
         Task[] runningTasks;
-        if (mIsSwipeForStagedSplit) {
+        if (mIsSwipeForSplit) {
             int[] splitTaskIds = TopTaskTracker.INSTANCE.get(mContext).getRunningSplitTaskIds();
             runningTasks = mGestureState.getRunningTask().getPlaceholderTasks(splitTaskIds);
         } else {
             runningTasks = mGestureState.getRunningTask().getPlaceholderTasks();
         }
+
+        // Safeguard against any null tasks being sent to recents view, happens when quickswitching
+        // very quickly w/ split tasks because TopTaskTracker provides stale information compared to
+        // actual running tasks in the recents animation.
+        // TODO(b/236226779), Proper fix (ag/22237143)
+        if (Arrays.stream(runningTasks).anyMatch(Objects::isNull)) {
+            return;
+        }
         mRecentsView.onGestureAnimationStart(runningTasks, mDeviceState.getRotationTouchHelper());
     }
 
@@ -589,8 +683,8 @@
 
         Object traceToken = TraceHelper.INSTANCE.beginSection("logToggleRecents",
                 TraceHelper.FLAG_IGNORE_BINDERS);
-        LatencyTrackerCompat.logToggleRecents(
-                mContext, (int) (mLauncherFrameDrawnTime - mTouchTimeMs));
+        LatencyTracker.getInstance(mContext).logAction(LatencyTracker.ACTION_TOGGLE_RECENTS,
+                (int) (mLauncherFrameDrawnTime - mTouchTimeMs));
         TraceHelper.INSTANCE.endSection(traceToken);
 
         // This method is only called when STATE_GESTURE_STARTED is set, so we can enable the
@@ -604,8 +698,12 @@
             @Override
             public void onMotionPauseDetected() {
                 mHasMotionEverBeenPaused = true;
-                maybeUpdateRecentsAttachedState(true/* animate */, true/* moveFocusedTask */);
-                performHapticFeedback();
+                maybeUpdateRecentsAttachedState(true/* animate */, true/* moveRunningTask */);
+                Optional.ofNullable(mActivityInterface.getTaskbarController())
+                        .ifPresent(TaskbarUIController::startTranslationSpring);
+                if (!mIsInAllAppsRegion) {
+                    performHapticFeedback();
+                }
             }
 
             @Override
@@ -619,8 +717,8 @@
         maybeUpdateRecentsAttachedState(true /* animate */);
     }
 
-    private void maybeUpdateRecentsAttachedState(boolean animate) {
-        maybeUpdateRecentsAttachedState(animate, false /* moveFocusedTask */);
+    protected void maybeUpdateRecentsAttachedState(boolean animate) {
+        maybeUpdateRecentsAttachedState(animate, false /* moveRunningTask */);
     }
 
     /**
@@ -630,17 +728,19 @@
      *
      * Note this method has no effect unless the navigation mode is NO_BUTTON.
      * @param animate whether to animate when attaching RecentsView
-     * @param moveFocusedTask whether to move focused task to front when attaching
+     * @param moveRunningTask whether to move running task to front when attaching
      */
-    private void maybeUpdateRecentsAttachedState(boolean animate, boolean moveFocusedTask) {
+    private void maybeUpdateRecentsAttachedState(boolean animate, boolean moveRunningTask) {
         if (!mDeviceState.isFullyGesturalNavMode() || mRecentsView == null) {
             return;
         }
-        RemoteAnimationTargetCompat runningTaskTarget = mRecentsAnimationTargets != null
+        RemoteAnimationTarget runningTaskTarget = mRecentsAnimationTargets != null
                 ? mRecentsAnimationTargets.findTask(mGestureState.getRunningTaskId())
                 : null;
         final boolean recentsAttachedToAppWindow;
-        if (mGestureState.getEndTarget() != null) {
+        if (mIsInAllAppsRegion) {
+            recentsAttachedToAppWindow = false;
+        } else if (mGestureState.getEndTarget() != null) {
             recentsAttachedToAppWindow = mGestureState.getEndTarget().recentsAttachedToAppWindow;
         } else if (mContinuingLastGesture
                 && mRecentsView.getRunningTaskIndex() != mRecentsView.getNextPage()) {
@@ -651,11 +751,11 @@
         } else {
             recentsAttachedToAppWindow = mHasMotionEverBeenPaused || mIsLikelyToStartNewTask;
         }
-        if (moveFocusedTask && !mAnimationFactory.hasRecentsEverAttachedToAppWindow()
+        if (moveRunningTask && !mAnimationFactory.hasRecentsEverAttachedToAppWindow()
                 && recentsAttachedToAppWindow) {
-            // Only move focused task if RecentsView has never been attached before, to avoid
+            // Only move running task if RecentsView has never been attached before, to avoid
             // TaskView jumping to new position as we move the tasks.
-            mRecentsView.moveFocusedTaskToFront();
+            mRecentsView.moveRunningTaskToFront();
         }
         mAnimationFactory.setRecentsAttachedToAppWindow(recentsAttachedToAppWindow, animate);
 
@@ -676,6 +776,15 @@
         }
     }
 
+    /**
+     * Returns threshold that needs to be met in order for motion pause to be allowed.
+     */
+    public float getThresholdToAllowMotionPause() {
+        return mIsTransientTaskbar
+                ? mTaskbarHomeOverviewThreshold
+                : 0;
+    }
+
     public void setIsLikelyToStartNewTask(boolean isLikelyToStartNewTask) {
         setIsLikelyToStartNewTask(isLikelyToStartNewTask, true /* animate */);
     }
@@ -687,6 +796,26 @@
         }
     }
 
+    /**
+     * Update whether user is currently dragging in a region that will trigger all apps.
+     */
+    private void setIsInAllAppsRegion(boolean isInAllAppsRegion) {
+        if (mIsInAllAppsRegion == isInAllAppsRegion
+                || !mActivityInterface.allowAllAppsFromOverview()) {
+            return;
+        }
+        mIsInAllAppsRegion = isInAllAppsRegion;
+
+        // Newly entering or exiting the zone - do haptic and animate recent tasks.
+        VibratorWrapper.INSTANCE.get(mContext).vibrate(OVERVIEW_HAPTIC);
+        maybeUpdateRecentsAttachedState(true);
+
+        // Draw active task below Launcher so that All Apps can appear over it.
+        runActionOnRemoteHandles(remoteTargetHandle ->
+                remoteTargetHandle.getTaskViewSimulator().setDrawsBelowRecents(isInAllAppsRegion));
+    }
+
+
     private void buildAnimationController() {
         if (!canCreateNewOrUpdateExistingLauncherTransitionController()) {
             return;
@@ -707,10 +836,15 @@
     @Override
     public WindowInsets onApplyWindowInsets(View view, WindowInsets windowInsets) {
         WindowInsets result = view.onApplyWindowInsets(windowInsets);
+        // Don't rebuild animation when we are animating the IME, because it will cause a loop
+        // where the insets change -> animation changes (updating ime) -> insets change -> ...
+        if (windowInsets.isVisible(WindowInsets.Type.ime())) {
+            return result;
+        }
         buildAnimationController();
         // Reapply the current shift to ensure it takes new insets into account, e.g. when long
         // pressing to stash taskbar without moving the finger.
-        updateFinalShift();
+        onCurrentShiftUpdated();
         return result;
     }
 
@@ -737,15 +871,8 @@
      */
     @UiThread
     @Override
-    public void updateFinalShift() {
-        final boolean passed = mCurrentShift.value >= MIN_PROGRESS_FOR_OVERVIEW;
-        if (passed != mPassedOverviewThreshold) {
-            mPassedOverviewThreshold = passed;
-            if (mDeviceState.isTwoButtonNavMode() && !mGestureState.isHandlingAtomicEvent()) {
-                performHapticFeedback();
-            }
-        }
-
+    public void onCurrentShiftUpdated() {
+        setIsInAllAppsRegion(mCurrentShift.value >= ALL_APPS_SHIFT_THRESHOLD);
         updateSysUiFlags(mCurrentShift.value);
         applyScrollAndTransform();
 
@@ -794,15 +921,26 @@
     public void onRecentsAnimationStart(RecentsAnimationController controller,
             RecentsAnimationTargets targets) {
         super.onRecentsAnimationStart(controller, targets);
-        ActiveGestureLog.INSTANCE.addLog("startRecentsAnimationCallback", targets.apps.length);
-        mRemoteTargetHandles = mTargetGluer.assignTargetsForSplitScreen(mContext, targets);
+        if (DesktopTaskView.DESKTOP_MODE_SUPPORTED && targets.hasDesktopTasks()) {
+            mRemoteTargetHandles = mTargetGluer.assignTargetsForDesktop(targets);
+        } else {
+            int untrimmedAppCount = mRemoteTargetHandles.length;
+            mRemoteTargetHandles = mTargetGluer.assignTargetsForSplitScreen(targets);
+            if (mRemoteTargetHandles.length < untrimmedAppCount && mIsSwipeForSplit) {
+                updateIsGestureForSplit(mRemoteTargetHandles.length);
+                setupRecentsViewUi();
+            }
+        }
         mRecentsAnimationController = controller;
         mRecentsAnimationTargets = targets;
+        mSwipePipToHomeReleaseCheck = new RemoteAnimationTargets.ReleaseCheck();
+        mSwipePipToHomeReleaseCheck.setCanRelease(true);
+        mRecentsAnimationTargets.addReleaseCheck(mSwipePipToHomeReleaseCheck);
 
         // Only initialize the device profile, if it has not been initialized before, as in some
         // configurations targets.homeContentInsets may not be correct.
         if (mActivity == null) {
-            RemoteAnimationTargetCompat primaryTaskTarget = targets.apps[0];
+            RemoteAnimationTarget primaryTaskTarget = targets.apps[0];
             // orientation state is independent of which remote target handle we use since both
             // should be pointing to the same one. Just choose index 0 for now since that works for
             // both split and non-split
@@ -831,23 +969,18 @@
         mStateCallback.runOnceAtState(STATE_APP_CONTROLLER_RECEIVED | STATE_GESTURE_STARTED,
                 this::startInterceptingTouchesForGesture);
         mStateCallback.setStateOnUiThread(STATE_APP_CONTROLLER_RECEIVED);
-
-        mPassedOverviewThreshold = false;
     }
 
     @Override
     public void onRecentsAnimationCanceled(HashMap<Integer, ThumbnailData> thumbnailDatas) {
-        ActiveGestureLog.INSTANCE.addLog("cancelRecentsAnimation");
+        ActiveGestureLog.INSTANCE.addLog(
+                /* event= */ "cancelRecentsAnimation",
+                /* gestureEvent= */ CANCEL_RECENTS_ANIMATION);
         mActivityInitListener.unregister();
         // Cache the recents animation controller so we can defer its cleanup to after having
         // properly cleaned up the screenshot without accidentally using it.
         mDeferredCleanupRecentsAnimationController = mRecentsAnimationController;
         mStateCallback.setStateOnUiThread(STATE_GESTURE_CANCELLED | STATE_HANDLER_INVALIDATED);
-
-        if (mRecentsAnimationTargets != null) {
-            setDividerShown(true /* shown */, false /* immediate */);
-        }
-
         // Defer clearing the controller and the targets until after we've updated the state
         mRecentsAnimationController = null;
         mRecentsAnimationTargets = null;
@@ -862,6 +995,7 @@
         TaskUtils.closeSystemWindowsAsync(CLOSE_SYSTEM_WINDOWS_REASON_RECENTS);
 
         if (mRecentsView != null) {
+            final View rv = mRecentsView;
             mRecentsView.getViewTreeObserver().addOnDrawListener(new OnDrawListener() {
                 boolean mHandled = false;
 
@@ -876,24 +1010,47 @@
                             InteractionJankMonitorWrapper.CUJ_QUICK_SWITCH, 2000 /* ms timeout */);
                     InteractionJankMonitorWrapper.begin(mRecentsView,
                             InteractionJankMonitorWrapper.CUJ_APP_CLOSE_TO_HOME);
+                    InteractionJankMonitorWrapper.begin(mRecentsView,
+                            InteractionJankMonitorWrapper.CUJ_APP_SWIPE_TO_RECENTS);
 
-                    mRecentsView.post(() ->
-                            mRecentsView.getViewTreeObserver().removeOnDrawListener(this));
+                    rv.post(() -> rv.getViewTreeObserver().removeOnDrawListener(this));
                 }
             });
         }
-        notifyGestureStartedAsync();
+        notifyGestureStarted();
         setIsLikelyToStartNewTask(isLikelyToStartNewTask, false /* animate */);
+
+        if (mIsTransientTaskbar && !mTaskbarAlreadyOpen && !isLikelyToStartNewTask) {
+            setClampScrollOffset(true);
+        }
         mStateCallback.setStateOnUiThread(STATE_GESTURE_STARTED);
         mGestureStarted = true;
-        SystemUiProxy.INSTANCE.get(mContext).notifySwipeUpGestureStarted();
     }
 
     /**
+     * Sets whether or not we should clamp the scroll offset.
+     * This is used to avoid x-axis movement when swiping up transient taskbar.
+     * @param clampScrollOffset When true, we clamp the scroll to 0 before the clamp threshold is
+     *                          met.
+     */
+    private void setClampScrollOffset(boolean clampScrollOffset) {
+        if (!mIsTransientTaskbar) {
+            return;
+        }
+        if (mRecentsView == null) {
+            mStateCallback.runOnceAtState(STATE_LAUNCHER_PRESENT,
+                    () -> mRecentsView.setClampScrollOffset(clampScrollOffset));
+            return;
+        }
+        mRecentsView.setClampScrollOffset(clampScrollOffset);
+    }
+
+
+    /**
      * Notifies the launcher that the swipe gesture has started. This can be called multiple times.
      */
     @UiThread
-    private void notifyGestureStartedAsync() {
+    private void notifyGestureStarted() {
         final T curActivity = mActivity;
         if (curActivity != null) {
             // Once the gesture starts, we can no longer transition home through the button, so
@@ -913,26 +1070,25 @@
     }
 
     /**
-     * @param endVelocity The velocity in the direction of the nav bar to the middle of the screen.
-     * @param velocity The x and y components of the velocity when the gesture ends.
-     * @param downPos The x and y value of where the gesture started.
+     * @param endVelocityPxPerMs The velocity in the direction of the nav bar to the middle of the
+     *                           screen.
+     * @param velocityPxPerMs The x and y components of the velocity when the gesture ends.
      */
     @UiThread
-    public void onGestureEnded(float endVelocity, PointF velocity, PointF downPos) {
+    public void onGestureEnded(float endVelocityPxPerMs, PointF velocityPxPerMs) {
         float flingThreshold = mContext.getResources()
                 .getDimension(R.dimen.quickstep_fling_threshold_speed);
         boolean isFling = mGestureStarted && !mIsMotionPaused
-                && Math.abs(endVelocity) > flingThreshold;
+                && Math.abs(endVelocityPxPerMs) > flingThreshold;
         mStateCallback.setStateOnUiThread(STATE_GESTURE_COMPLETED);
-        boolean isVelocityVertical = Math.abs(velocity.y) > Math.abs(velocity.x);
+        boolean isVelocityVertical = Math.abs(velocityPxPerMs.y) > Math.abs(velocityPxPerMs.x);
         if (isVelocityVertical) {
-            mLogDirectionUpOrLeft = velocity.y < 0;
+            mLogDirectionUpOrLeft = velocityPxPerMs.y < 0;
         } else {
-            mLogDirectionUpOrLeft = velocity.x < 0;
+            mLogDirectionUpOrLeft = velocityPxPerMs.x < 0;
         }
-        mDownPos = downPos;
-        Runnable handleNormalGestureEndCallback = () ->
-                handleNormalGestureEnd(endVelocity, isFling, velocity, /* isCancel= */ false);
+        Runnable handleNormalGestureEndCallback = () -> handleNormalGestureEnd(
+                endVelocityPxPerMs, isFling, velocityPxPerMs, /* isCancel= */ false);
         if (mRecentsView != null) {
             mRecentsView.runOnPageScrollsInitialized(handleNormalGestureEndCallback);
         } else {
@@ -978,12 +1134,19 @@
             InteractionJankMonitorWrapper.cancel(
                     InteractionJankMonitorWrapper.CUJ_APP_CLOSE_TO_HOME);
         }
+        if (endTarget != RECENTS) {
+            InteractionJankMonitorWrapper.cancel(
+                    InteractionJankMonitorWrapper.CUJ_APP_SWIPE_TO_RECENTS);
+        }
 
         switch (endTarget) {
+            case ALL_APPS:
+                mStateCallback.setState(STATE_SETTLED_ON_ALL_APPS | STATE_CAPTURE_SCREENSHOT);
+                break;
             case HOME:
                 mStateCallback.setState(STATE_SCALED_CONTROLLER_HOME | STATE_CAPTURE_SCREENSHOT);
-                // Notify swipe-to-home (recents animation) is finished
-                SystemUiProxy.INSTANCE.get(mContext).notifySwipeToHomeFinished();
+                // Notify the SysUI to use fade-in animation when entering PiP
+                SystemUiProxy.INSTANCE.get(mContext).setPipAnimationTypeToAlpha();
                 break;
             case RECENTS:
                 mStateCallback.setState(STATE_SCALED_CONTROLLER_RECENTS | STATE_CAPTURE_SCREENSHOT
@@ -999,16 +1162,17 @@
                 } else {
                     mStateCallback.setState(STATE_RESUME_LAST_TASK);
                 }
-                if (mRecentsAnimationTargets != null) {
-                    setDividerShown(true /* shown */, true /* immediate */);
-                }
+                // Restore the divider as it resumes the last top-tasks.
+                setDividerShown(true);
                 break;
         }
-        ActiveGestureLog.INSTANCE.addLog("onSettledOnEndTarget " + endTarget);
+        ActiveGestureLog.INSTANCE.addLog(
+                /* event= */ "onSettledOnEndTarget " + endTarget,
+                /* gestureEvent= */ ON_SETTLED_ON_END_TARGET);
     }
 
     /** @return Whether this was the task we were waiting to appear, and thus handled it. */
-    protected boolean handleTaskAppeared(RemoteAnimationTargetCompat[] appearedTaskTarget) {
+    protected boolean handleTaskAppeared(RemoteAnimationTarget[] appearedTaskTarget) {
         if (mStateCallback.hasStates(STATE_HANDLER_INVALIDATED)) {
             return false;
         }
@@ -1021,89 +1185,122 @@
         return false;
     }
 
-    private GestureEndTarget calculateEndTarget(PointF velocity, float endVelocity,
-            boolean isFlingY, boolean isCancel) {
+    private float dpiFromPx(float pixels) {
+        return Utilities.dpiFromPx(pixels, mContext.getResources().getDisplayMetrics().densityDpi);
+    }
+
+    private GestureEndTarget calculateEndTarget(
+            PointF velocityPxPerMs, float endVelocityPxPerMs, boolean isFlingY, boolean isCancel) {
+        ActiveGestureLog.INSTANCE.addLog(
+                new ActiveGestureLog.CompoundString("calculateEndTarget: velocities=(x=")
+                        .append(Float.toString(dpiFromPx(velocityPxPerMs.x)))
+                        .append("dp/ms, y=")
+                        .append(Float.toString(dpiFromPx(velocityPxPerMs.y)))
+                        .append("dp/ms), angle=")
+                        .append(Double.toString(Math.toDegrees(Math.atan2(
+                                -velocityPxPerMs.y, velocityPxPerMs.x)))));
+
         if (mGestureState.isHandlingAtomicEvent()) {
-            // Button mode, this is only used to go to recents
+            // Button mode, this is only used to go to recents.
             return RECENTS;
         }
-        final GestureEndTarget endTarget;
-        final boolean goingToNewTask;
-        if (mRecentsView != null) {
-            if (!hasTargets()) {
-                // If there are no running tasks, then we can assume that this is a continuation of
-                // the last gesture, but after the recents animation has finished
-                goingToNewTask = true;
-            } else {
-                final int runningTaskIndex = mRecentsView.getRunningTaskIndex();
-                final int taskToLaunch = mRecentsView.getNextPage();
-                goingToNewTask = runningTaskIndex >= 0 && taskToLaunch != runningTaskIndex;
-            }
-        } else {
-            goingToNewTask = false;
-        }
-        final boolean reachedOverviewThreshold = mCurrentShift.value >= MIN_PROGRESS_FOR_OVERVIEW;
-        final boolean isFlingX = Math.abs(velocity.x) > mContext.getResources()
-                .getDimension(R.dimen.quickstep_fling_threshold_speed);
-        if (!isFlingY) {
-            if (isCancel) {
-                endTarget = LAST_TASK;
-            } else if (mDeviceState.isFullyGesturalNavMode()) {
-                if (goingToNewTask && isFlingX) {
-                    // Flinging towards new task takes precedence over mIsMotionPaused (which only
-                    // checks y-velocity).
-                    endTarget = NEW_TASK;
-                } else if (mIsMotionPaused) {
-                    endTarget = RECENTS;
-                } else if (goingToNewTask) {
-                    endTarget = NEW_TASK;
-                } else {
-                    endTarget = !reachedOverviewThreshold ? LAST_TASK : HOME;
-                }
-            } else {
-                endTarget = reachedOverviewThreshold && mGestureStarted
-                        ? RECENTS
-                        : goingToNewTask
-                                ? NEW_TASK
-                                : LAST_TASK;
-            }
-        } else {
-            // If swiping at a diagonal, base end target on the faster velocity.
-            boolean isSwipeUp = endVelocity < 0;
-            boolean willGoToNewTaskOnSwipeUp =
-                    goingToNewTask && Math.abs(velocity.x) > Math.abs(endVelocity);
 
-            if (mDeviceState.isFullyGesturalNavMode() && isSwipeUp && !willGoToNewTaskOnSwipeUp) {
-                endTarget = HOME;
-            } else if (mDeviceState.isFullyGesturalNavMode() && isSwipeUp) {
-                // If swiping at a diagonal, base end target on the faster velocity.
-                endTarget = NEW_TASK;
-            } else if (isSwipeUp) {
-                endTarget = !reachedOverviewThreshold && willGoToNewTaskOnSwipeUp
-                        ? NEW_TASK : RECENTS;
-            } else {
-                endTarget = goingToNewTask ? NEW_TASK : LAST_TASK;
-            }
+        GestureEndTarget endTarget;
+        if (isCancel) {
+            endTarget = LAST_TASK;
+        } else if (isFlingY) {
+            endTarget = calculateEndTargetForFlingY(velocityPxPerMs, endVelocityPxPerMs);
+        } else {
+            endTarget = calculateEndTargetForNonFling(velocityPxPerMs);
         }
 
-        if (mDeviceState.isOverviewDisabled() && (endTarget == RECENTS || endTarget == LAST_TASK)) {
+        if (mDeviceState.isOverviewDisabled() && endTarget == RECENTS) {
             return LAST_TASK;
         }
+
+        if (DesktopTaskView.DESKTOP_MODE_SUPPORTED && endTarget == NEW_TASK) {
+            // TODO(b/268075592): add support for quickswitch to/from desktop
+            return LAST_TASK;
+        }
+
         return endTarget;
     }
 
+    private GestureEndTarget calculateEndTargetForFlingY(PointF velocity, float endVelocity) {
+        // If swiping at a diagonal, base end target on the faster velocity direction.
+        final boolean willGoToNewTask =
+                isScrollingToNewTask() && Math.abs(velocity.x) > Math.abs(endVelocity);
+        final boolean isSwipeUp = endVelocity < 0;
+        if (mIsInAllAppsRegion) {
+            return isSwipeUp ? ALL_APPS : LAST_TASK;
+        }
+        if (!isSwipeUp) {
+            final boolean isCenteredOnNewTask =
+                    mRecentsView.getDestinationPage() != mRecentsView.getRunningTaskIndex();
+            return willGoToNewTask || isCenteredOnNewTask ? NEW_TASK : LAST_TASK;
+        }
+
+        return willGoToNewTask ? NEW_TASK : HOME;
+    }
+
+    private GestureEndTarget calculateEndTargetForNonFling(PointF velocity) {
+        final boolean isScrollingToNewTask = isScrollingToNewTask();
+
+        // Fully gestural mode.
+        final boolean isFlingX = Math.abs(velocity.x) > mContext.getResources()
+                .getDimension(R.dimen.quickstep_fling_threshold_speed);
+        if (mIsInAllAppsRegion) {
+            return ALL_APPS;
+        } else if (isScrollingToNewTask && isFlingX) {
+            // Flinging towards new task takes precedence over mIsMotionPaused (which only
+            // checks y-velocity).
+            return NEW_TASK;
+        } else if (mIsMotionPaused) {
+            return RECENTS;
+        } else if (isScrollingToNewTask) {
+            return NEW_TASK;
+        }
+        return velocity.y < 0 && mCanSlowSwipeGoHome ? HOME : LAST_TASK;
+    }
+
+    private boolean isScrollingToNewTask() {
+        if (mRecentsView == null) {
+            return false;
+        }
+        if (!hasTargets()) {
+            // If there are no running tasks, then we can assume that this is a continuation of
+            // the last gesture, but after the recents animation has finished.
+            return true;
+        }
+        int runningTaskIndex = mRecentsView.getRunningTaskIndex();
+        return runningTaskIndex >= 0 && mRecentsView.getNextPage() != runningTaskIndex;
+    }
+
+    /**
+     * Sets whether a slow swipe can go to the HOME end target when the user lets go. A slow swipe
+     * for this purpose must meet two criteria:
+     *   1) y-velocity is less than quickstep_fling_threshold_speed
+     *   AND
+     *   2) motion pause has not been detected (possibly because
+     *   {@link MotionPauseDetector#setDisallowPause} has been called with disallowPause == true)
+     */
+    public void setCanSlowSwipeGoHome(boolean canSlowSwipeGoHome) {
+        mCanSlowSwipeGoHome = canSlowSwipeGoHome;
+    }
+
     @UiThread
-    private void handleNormalGestureEnd(float endVelocity, boolean isFling, PointF velocity,
-            boolean isCancel) {
+    private void handleNormalGestureEnd(
+            float endVelocityPxPerMs, boolean isFling, PointF velocityPxPerMs, boolean isCancel) {
         long duration = MAX_SWIPE_DURATION;
         float currentShift = mCurrentShift.value;
-        final GestureEndTarget endTarget = calculateEndTarget(velocity, endVelocity,
-                isFling, isCancel);
+        final GestureEndTarget endTarget = calculateEndTarget(
+                velocityPxPerMs, endVelocityPxPerMs, isFling, isCancel);
         // Set the state, but don't notify until the animation completes
         mGestureState.setEndTarget(endTarget, false /* isAtomic */);
         mAnimationFactory.setEndTarget(endTarget);
 
-        float endShift = endTarget.isLauncher ? 1 : 0;
+        float endShift = endTarget == ALL_APPS ? mDragLengthFactor
+                : endTarget.isLauncher ? 1 : 0;
         final float startShift;
         if (!isFling) {
             long expectedDuration = Math.abs(Math.round((endShift - currentShift)
@@ -1111,16 +1308,16 @@
             duration = Math.min(MAX_SWIPE_DURATION, expectedDuration);
             startShift = currentShift;
         } else {
-            startShift = Utilities.boundToRange(currentShift - velocity.y
+            startShift = Utilities.boundToRange(currentShift - velocityPxPerMs.y
                     * getSingleFrameMs(mContext) / mTransitionDragLength, 0, mDragLengthFactor);
             if (mTransitionDragLength > 0) {
-                    float distanceToTravel = (endShift - currentShift) * mTransitionDragLength;
+                float distanceToTravel = (endShift - currentShift) * mTransitionDragLength;
 
-                    // we want the page's snap velocity to approximately match the velocity at
-                    // which the user flings, so we scale the duration by a value near to the
-                    // derivative of the scroll interpolator at zero, ie. 2.
-                    long baseDuration = Math.round(Math.abs(distanceToTravel / velocity.y));
-                    duration = Math.min(MAX_SWIPE_DURATION, 2 * baseDuration);
+                // we want the page's snap velocity to approximately match the velocity at
+                // which the user flings, so we scale the duration by a value near to the
+                // derivative of the scroll interpolator at zero, ie. 2.
+                long baseDuration = Math.round(Math.abs(distanceToTravel / velocityPxPerMs.y));
+                duration = Math.min(MAX_SWIPE_DURATION, 2 * baseDuration);
             }
         }
         Interpolator interpolator;
@@ -1137,7 +1334,9 @@
             mInputConsumerProxy.enable();
         }
         if (endTarget == HOME) {
-            duration = HOME_DURATION;
+            duration = mActivity != null && mActivity.getDeviceProfile().isTaskbarPresent
+                    ? StaggeredWorkspaceAnim.DURATION_TASKBAR_MS
+                    : StaggeredWorkspaceAnim.DURATION_MS;
             // Early detach the nav bar once the endTarget is determined as HOME
             if (mRecentsAnimationController != null) {
                 mRecentsAnimationController.detachNavigationBarFromApp(true);
@@ -1167,22 +1366,30 @@
                     duration = Math.max(duration, mRecentsView.getScroller().getDuration());
                 }
             }
+        } else if (endTarget == LAST_TASK && mRecentsView != null
+                && mRecentsView.getNextPage() != mRecentsView.getRunningTaskIndex()) {
+            mRecentsView.snapToPage(mRecentsView.getRunningTaskIndex(), Math.toIntExact(duration));
         }
 
         // Let RecentsView handle the scrolling to the task, which we launch in startNewTask()
         // or resumeLastTask().
-        if (mRecentsView != null) {
-            mRecentsView.setOnPageTransitionEndCallback(
-                    () -> mGestureState.setState(STATE_RECENTS_SCROLLING_FINISHED));
-        } else {
+        Runnable onPageTransitionEnd = () -> {
             mGestureState.setState(STATE_RECENTS_SCROLLING_FINISHED);
+            setClampScrollOffset(false);
+        };
+        if (mRecentsView != null) {
+            ActiveGestureLog.INSTANCE.trackEvent(ActiveGestureErrorDetector.GestureEvent
+                    .SET_ON_PAGE_TRANSITION_END_CALLBACK);
+            mRecentsView.setOnPageTransitionEndCallback(onPageTransitionEnd);
+        } else {
+            onPageTransitionEnd.run();
         }
 
-        animateToProgress(startShift, endShift, duration, interpolator, endTarget, velocity);
+        animateToProgress(startShift, endShift, duration, interpolator, endTarget, velocityPxPerMs);
     }
 
     private void doLogGesture(GestureEndTarget endTarget, @Nullable TaskView targetTask) {
-        if (mDp == null || !mDp.isGestureMode || mDownPos == null) {
+        if (mDp == null || !mDp.isGestureMode) {
             // We probably never received an animation controller, skip logging.
             return;
         }
@@ -1205,7 +1412,10 @@
         }
         StatsLogger logger = StatsLogManager.newInstance(mContext).logger()
                 .withSrcState(LAUNCHER_STATE_BACKGROUND)
-                .withDstState(endTarget.containerType);
+                .withDstState(endTarget.containerType)
+                .withInputType(mGestureState.isTrackpadGesture()
+                        ? SysUiStatsLog.LAUNCHER_UICHANGED__INPUT_TYPE__TRACKPAD
+                        : SysUiStatsLog.LAUNCHER_UICHANGED__INPUT_TYPE__TOUCH);
         if (targetTask != null) {
             logger.withItemInfo(targetTask.getItemInfo());
         }
@@ -1227,7 +1437,7 @@
 
     protected abstract HomeAnimationFactory createHomeAnimationFactory(
             ArrayList<IBinder> launchCookies, long duration, boolean isTargetTranslucent,
-            boolean appCanEnterPip, RemoteAnimationTargetCompat runningTaskTarget);
+            boolean appCanEnterPip, RemoteAnimationTarget runningTaskTarget);
 
     private final TaskStackChangeListener mActivityRestartListener = new TaskStackChangeListener() {
         @Override
@@ -1254,6 +1464,10 @@
         // If we are transitioning to launcher, then listen for the activity to be restarted while
         // the transition is in progress
         if (mGestureState.getEndTarget().isLauncher) {
+            // This is also called when the launcher is resumed, in order to clear the pending
+            // widgets that have yet to be configured.
+            DragView.removeAllViews(mActivity);
+
             TaskStackChangeListeners.getInstance().registerTaskStackListener(
                     mActivityRestartListener);
 
@@ -1273,30 +1487,40 @@
 
         if (mGestureState.getEndTarget() == HOME) {
             getOrientationHandler().adjustFloatingIconStartVelocity(velocityPxPerMs);
-            final RemoteAnimationTargetCompat runningTaskTarget = mRecentsAnimationTargets != null
+            final RemoteAnimationTarget runningTaskTarget = mRecentsAnimationTargets != null
                     ? mRecentsAnimationTargets.findTask(mGestureState.getRunningTaskId())
                     : null;
             final ArrayList<IBinder> cookies = runningTaskTarget != null
                     ? runningTaskTarget.taskInfo.launchCookies
                     : new ArrayList<>();
             boolean isTranslucent = runningTaskTarget != null && runningTaskTarget.isTranslucent;
+            boolean hasValidLeash = runningTaskTarget != null
+                    && runningTaskTarget.leash != null
+                    && runningTaskTarget.leash.isValid();
             boolean appCanEnterPip = !mDeviceState.isPipActive()
-                    && runningTaskTarget != null
+                    && hasValidLeash
                     && runningTaskTarget.allowEnterPip
                     && runningTaskTarget.taskInfo.pictureInPictureParams != null
                     && runningTaskTarget.taskInfo.pictureInPictureParams.isAutoEnterEnabled();
             HomeAnimationFactory homeAnimFactory =
                     createHomeAnimationFactory(cookies, duration, isTranslucent, appCanEnterPip,
                             runningTaskTarget);
-            mIsSwipingPipToHome = !mIsSwipeForStagedSplit && appCanEnterPip;
+            mIsSwipingPipToHome = !mIsSwipeForSplit && appCanEnterPip;
             final RectFSpringAnim[] windowAnim;
             if (mIsSwipingPipToHome) {
                 mSwipePipToHomeAnimator = createWindowAnimationToPip(
                         homeAnimFactory, runningTaskTarget, start);
                 mSwipePipToHomeAnimators[0] = mSwipePipToHomeAnimator;
+                if (mSwipePipToHomeReleaseCheck != null) {
+                    mSwipePipToHomeReleaseCheck.setCanRelease(false);
+                }
                 windowAnim = mSwipePipToHomeAnimators;
             } else {
                 mSwipePipToHomeAnimator = null;
+                if (mSwipePipToHomeReleaseCheck != null) {
+                    mSwipePipToHomeReleaseCheck.setCanRelease(true);
+                    mSwipePipToHomeReleaseCheck = null;
+                }
                 windowAnim = createWindowAnimationToHome(start, homeAnimFactory);
 
                 windowAnim[0].addAnimatorListener(new AnimationSuccessListener() {
@@ -1319,7 +1543,8 @@
                 if (windowAnimation == null) {
                     continue;
                 }
-                windowAnimation.start(mContext, velocityPxPerMs);
+                DeviceProfile dp = mActivity == null ? null : mActivity.getDeviceProfile();
+                windowAnimation.start(mContext, dp, velocityPxPerMs);
                 mRunningWindowAnim[i] = RunningWindowAnim.wrap(windowAnimation);
             }
             homeAnimFactory.setSwipeVelocity(velocityPxPerMs.y);
@@ -1379,7 +1604,7 @@
         }
     }
 
-    private int calculateWindowRotation(RemoteAnimationTargetCompat runningTaskTarget,
+    private int calculateWindowRotation(RemoteAnimationTarget runningTaskTarget,
             RecentsOrientedState orientationState) {
         if (runningTaskTarget.rotationChange != 0
                 && TaskAnimationManager.ENABLE_SHELL_TRANSITIONS) {
@@ -1390,11 +1615,9 @@
         }
     }
 
-    /**
-     * TODO(b/195473090) handle multiple task simulators (if needed) for PIP
-     */
+    @Nullable
     private SwipePipToHomeAnimator createWindowAnimationToPip(HomeAnimationFactory homeAnimFactory,
-            RemoteAnimationTargetCompat runningTaskTarget, float startProgress) {
+            RemoteAnimationTarget runningTaskTarget, float startProgress) {
         // Directly animate the app to PiP (picture-in-picture) mode
         final ActivityManager.RunningTaskInfo taskInfo = runningTaskTarget.taskInfo;
         final RecentsOrientedState orientationState = mRemoteTargetHandles[0].getTaskViewSimulator()
@@ -1411,20 +1634,36 @@
         homeToWindowPositionMap.invert(windowToHomePositionMap);
         windowToHomePositionMap.mapRect(startRect);
 
+        final Rect hotseatKeepClearArea = getKeepClearAreaForHotseat();
         final Rect destinationBounds = SystemUiProxy.INSTANCE.get(mContext)
                 .startSwipePipToHome(taskInfo.topActivity,
                         taskInfo.topActivityInfo,
                         runningTaskTarget.taskInfo.pictureInPictureParams,
                         homeRotation,
-                        mDp.hotseatBarSizePx);
+                        hotseatKeepClearArea);
+        if (destinationBounds == null) {
+            // No destination bounds returned from SystemUI, bail early.
+            return null;
+        }
+        final Rect appBounds = new Rect();
+        final WindowConfiguration winConfig = taskInfo.configuration.windowConfiguration;
+        // Adjust the appBounds for TaskBar by using the calculated window crop Rect
+        // from TaskViewSimulator and fallback to the bounds in TaskInfo when it's originated
+        // from windowing modes other than full-screen.
+        if (winConfig.getWindowingMode() == WindowConfiguration.WINDOWING_MODE_FULLSCREEN) {
+            mRemoteTargetHandles[0].getTaskViewSimulator().getCurrentCropRect().round(appBounds);
+        } else {
+            appBounds.set(winConfig.getBounds());
+        }
         final SwipePipToHomeAnimator.Builder builder = new SwipePipToHomeAnimator.Builder()
                 .setContext(mContext)
                 .setTaskId(runningTaskTarget.taskId)
-                .setComponentName(taskInfo.topActivity)
+                .setActivityInfo(taskInfo.topActivityInfo)
+                .setAppIconSizePx(mDp.iconSizePx)
                 .setLeash(runningTaskTarget.leash)
                 .setSourceRectHint(
                         runningTaskTarget.taskInfo.pictureInPictureParams.getSourceRectHint())
-                .setAppBounds(taskInfo.configuration.windowConfiguration.getBounds())
+                .setAppBounds(appBounds)
                 .setHomeToWindowPositionMap(homeToWindowPositionMap)
                 .setStartBounds(startRect)
                 .setDestinationBounds(destinationBounds)
@@ -1469,15 +1708,48 @@
         return swipePipToHomeAnimator;
     }
 
+    private Rect getKeepClearAreaForHotseat() {
+        Rect keepClearArea;
+        if (!ENABLE_PIP_KEEP_CLEAR_ALGORITHM) {
+            // make the height equal to hotseatBarSizePx only
+            keepClearArea = new Rect(0, 0, 0, mDp.hotseatBarSizePx);
+            return keepClearArea;
+        }
+        // the keep clear area in global screen coordinates, in pixels
+        if (mDp.isPhone) {
+            if (mDp.isSeascape()) {
+                // in seascape the Hotseat is on the left edge of the screen
+                keepClearArea = new Rect(0, 0, mDp.hotseatBarSizePx, mDp.heightPx);
+            } else if (mDp.isLandscape) {
+                // in landscape the Hotseat is on the right edge of the screen
+                keepClearArea = new Rect(mDp.widthPx - mDp.hotseatBarSizePx, 0,
+                        mDp.widthPx, mDp.heightPx);
+            } else {
+                // in portrait mode the Hotseat is at the bottom of the screen
+                keepClearArea = new Rect(0, mDp.heightPx - mDp.hotseatBarSizePx,
+                        mDp.widthPx, mDp.heightPx);
+            }
+        } else {
+            // large screens have Hotseat always at the bottom of the screen
+            keepClearArea = new Rect(0, mDp.heightPx - mDp.hotseatBarSizePx,
+                    mDp.widthPx, mDp.heightPx);
+        }
+        return keepClearArea;
+    }
+
+    /**
+     * Notifies to start intercepting touches in the app window and hide the divider bar if needed.
+     * @see RecentsAnimationController#enableInputConsumer()
+     */
     private void startInterceptingTouchesForGesture() {
-        if (mRecentsAnimationController == null) {
+        if (mRecentsAnimationController == null || !mStartMovingTasks) {
             return;
         }
 
         mRecentsAnimationController.enableInputConsumer();
 
-        // Start hiding the divider
-        setDividerShown(false /* shown */, true /* immediate */);
+        // Hide the divider as it starts intercepting touches in the app window.
+        setDividerShown(false);
     }
 
     private void computeRecentsScrollIfInvisible() {
@@ -1556,7 +1828,6 @@
     private void resumeLastTask() {
         if (mRecentsAnimationController != null) {
             mRecentsAnimationController.finish(false /* toRecents */, null);
-            ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimation", false);
         }
         doLogGesture(LAST_TASK, null);
         reset();
@@ -1593,6 +1864,12 @@
         reset();
     }
 
+    @UiThread
+    private void finishCurrentTransitionToAllApps() {
+        finishCurrentTransitionToHome();
+        reset();
+    }
+
     private void reset() {
         mStateCallback.setStateOnUiThread(STATE_HANDLER_INVALIDATED);
         if (mActivity != null) {
@@ -1605,19 +1882,22 @@
      * handler (in case of quick switch).
      */
     private void cancelCurrentAnimation() {
+        ActiveGestureLog.INSTANCE.addLog(
+                "AbsSwipeUpHandler.cancelCurrentAnimation",
+                ActiveGestureErrorDetector.GestureEvent.CANCEL_CURRENT_ANIMATION);
         mCanceled = true;
         mCurrentShift.cancelAnimation();
 
         // Cleanup when switching handlers
         mInputConsumerProxy.unregisterCallback();
         mActivityInitListener.unregister();
-        ActivityManagerWrapper.getInstance().unregisterTaskStackListener(mActivityRestartListener);
+        TaskStackChangeListeners.getInstance().unregisterTaskStackListener(
+                mActivityRestartListener);
         mTaskSnapshot = null;
     }
 
     private void invalidateHandler() {
-        if (!ENABLE_QUICKSTEP_LIVE_TILE.get() || !mActivityInterface.isInLiveTileMode()
-                || mGestureState.getEndTarget() != RECENTS) {
+        if (!mActivityInterface.isInLiveTileMode() || mGestureState.getEndTarget() != RECENTS) {
             mInputConsumerProxy.destroy();
             mTaskAnimationManager.setLiveTileCleanUpHandler(null);
         }
@@ -1637,7 +1917,9 @@
     private void invalidateHandlerWithLauncher() {
         endLauncherTransitionController();
 
-        mRecentsView.onGestureAnimationEnd();
+        if (mRecentsView != null) {
+            mRecentsView.onGestureAnimationEnd();
+        }
         resetLauncherListeners();
     }
 
@@ -1662,23 +1944,17 @@
      * continued quick switch gesture, which cancels the previous handler but doesn't invalidate it.
      */
     private void resetLauncherListeners() {
-        // Reset the callback for deferred activity launches
-        if (!ENABLE_QUICKSTEP_LIVE_TILE.get()) {
-            mActivityInterface.setOnDeferredActivityLaunchCallback(null);
-        }
         mActivity.getRootView().setOnApplyWindowInsetsListener(null);
 
-        mRecentsView.removeOnScrollChangedListener(mOnRecentsScrollListener);
+        if (mRecentsView != null) {
+            mRecentsView.removeOnScrollChangedListener(mOnRecentsScrollListener);
+        }
     }
 
     private void resetStateForAnimationCancel() {
         boolean wasVisible = mWasLauncherAlreadyVisible || mGestureStarted;
         mActivityInterface.onTransitionCancelled(wasVisible, mGestureState.getEndTarget());
 
-        if (mRecentsAnimationTargets != null) {
-            setDividerShown(true /* shown */, true /* immediate */);
-        }
-
         // Leave the pending invisible flag, as it may be used by wallpaper open animation.
         if (mActivity != null) {
             mActivity.clearForceInvisibleFlag(INVISIBLE_BY_STATE_HANDLER);
@@ -1691,7 +1967,6 @@
             mStateCallback.setStateOnUiThread(STATE_SCREENSHOT_CAPTURED);
         } else {
             final int runningTaskId = mGestureState.getRunningTaskId();
-            final boolean refreshView = !ENABLE_QUICKSTEP_LIVE_TILE.get() /* refreshView */;
             boolean finishTransitionPosted = false;
             if (mRecentsAnimationController != null) {
                 // Update the screenshot of the task
@@ -1700,16 +1975,27 @@
                         if (mRecentsAnimationController == null) return;
                         final ThumbnailData taskSnapshot =
                                 mRecentsAnimationController.screenshotTask(runningTaskId);
+                        // If split case, we should update all split tasks snapshot
+                        if (mIsSwipeForSplit) {
+                            int[] splitTaskIds = TopTaskTracker.INSTANCE.get(
+                                    mContext).getRunningSplitTaskIds();
+                            for (int i = 0; i < splitTaskIds.length; i++) {
+                                // Skip running one because done above.
+                                if (splitTaskIds[i] == runningTaskId) continue;
+
+                                mRecentsAnimationController.screenshotTask(splitTaskIds[i]);
+                            }
+                        }
                         MAIN_EXECUTOR.execute(() -> {
                             mTaskSnapshot = taskSnapshot;
-                            if (!updateThumbnail(runningTaskId, refreshView)) {
+                            if (!updateThumbnail(runningTaskId, false /* refreshView */)) {
                                 setScreenshotCapturedState();
                             }
                         });
                     });
                     return;
                 }
-                finishTransitionPosted = updateThumbnail(runningTaskId, refreshView);
+                finishTransitionPosted = updateThumbnail(runningTaskId, false /* refreshView */);
             }
             if (!finishTransitionPosted) {
                 setScreenshotCapturedState();
@@ -1721,7 +2007,10 @@
     private boolean updateThumbnail(int runningTaskId, boolean refreshView) {
         boolean finishTransitionPosted = false;
         final TaskView taskView;
-        if (mGestureState.getEndTarget() == HOME || mGestureState.getEndTarget() == NEW_TASK) {
+        if (mGestureState.getEndTarget() == HOME
+                || mGestureState.getEndTarget() == NEW_TASK
+                || mGestureState.getEndTarget() == ALL_APPS
+                || mRecentsView == null) {
             // Capture the screenshot before finishing the transition to home or quickswitching to
             // ensure it's taken in the correct orientation, but no need to update the thumbnail.
             taskView = null;
@@ -1747,40 +2036,57 @@
     }
 
     private void finishCurrentTransitionToRecents() {
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
+        if (mRecentsView != null
+                && mActivityInterface.getDesktopVisibilityController() != null
+                && mActivityInterface.getDesktopVisibilityController().areFreeformTasksVisible()) {
+            mRecentsView.switchToScreenshot(() -> {
+                mRecentsView.finishRecentsAnimation(true /* toRecents */, false /* shouldPip */,
+                        () -> mStateCallback.setStateOnUiThread(STATE_CURRENT_TASK_FINISHED));
+            });
+        } else {
             mStateCallback.setStateOnUiThread(STATE_CURRENT_TASK_FINISHED);
             if (mRecentsAnimationController != null) {
                 mRecentsAnimationController.detachNavigationBarFromApp(true);
             }
-        } else if (!hasTargets() || mRecentsAnimationController == null) {
-            // If there are no targets or the animation not started, then there is nothing to finish
-            mStateCallback.setStateOnUiThread(STATE_CURRENT_TASK_FINISHED);
-        } else {
-            mRecentsAnimationController.finish(true /* toRecents */,
-                    () -> mStateCallback.setStateOnUiThread(STATE_CURRENT_TASK_FINISHED));
         }
-        ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimation", true);
     }
 
     private void finishCurrentTransitionToHome() {
         if (!hasTargets() || mRecentsAnimationController == null) {
             // If there are no targets or the animation not started, then there is nothing to finish
             mStateCallback.setStateOnUiThread(STATE_CURRENT_TASK_FINISHED);
+            maybeAbortSwipePipToHome();
         } else {
-            maybeFinishSwipeToHome();
+            maybeFinishSwipePipToHome();
             finishRecentsControllerToHome(
                     () -> mStateCallback.setStateOnUiThread(STATE_CURRENT_TASK_FINISHED));
         }
-        ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimation", true);
+        if (mSwipePipToHomeReleaseCheck != null) {
+            mSwipePipToHomeReleaseCheck.setCanRelease(true);
+            mSwipePipToHomeReleaseCheck = null;
+        }
         doLogGesture(HOME, mRecentsView == null ? null : mRecentsView.getCurrentPageTaskView());
     }
 
     /**
+     * Notifies SysUI that transition is aborted if applicable and also pass leash transactions
+     * from Launcher to WM.
+     */
+    private void maybeAbortSwipePipToHome() {
+        if (mIsSwipingPipToHome && mSwipePipToHomeAnimators[0] != null) {
+            SystemUiProxy.INSTANCE.get(mContext).abortSwipePipToHome(
+                    mSwipePipToHomeAnimator.getTaskId(),
+                    mSwipePipToHomeAnimator.getComponentName());
+            mIsSwipingPipToHome = false;
+        }
+    }
+
+    /**
      * Notifies SysUI that transition is finished if applicable and also pass leash transactions
      * from Launcher to WM.
      * This should happen before {@link #finishRecentsControllerToHome(Runnable)}.
      */
-    private void maybeFinishSwipeToHome() {
+    private void maybeFinishSwipePipToHome() {
         if (mIsSwipingPipToHome && mSwipePipToHomeAnimators[0] != null) {
             SystemUiProxy.INSTANCE.get(mContext).stopSwipePipToHome(
                     mSwipePipToHomeAnimator.getTaskId(),
@@ -1792,12 +2098,13 @@
                     mSwipePipToHomeAnimator.getFinishTransaction(),
                     mSwipePipToHomeAnimator.getContentOverlay());
             mIsSwipingPipToHome = false;
-        } else if (mIsSwipeForStagedSplit) {
+        } else if (mIsSwipeForSplit) {
             // Transaction to hide the task to avoid flicker for entering PiP from split-screen.
             PictureInPictureSurfaceTransaction tx =
                     new PictureInPictureSurfaceTransaction.Builder()
                             .setAlpha(0f)
                             .build();
+            tx.setShouldDisableCanAffectSystemUiFlags(false);
             int[] taskIds = TopTaskTracker.INSTANCE.get(mContext).getRunningSplitTaskIds();
             for (int taskId : taskIds) {
                 mRecentsAnimationController.setFinishTaskTransaction(taskId,
@@ -1814,31 +2121,20 @@
         }
         endLauncherTransitionController();
         mRecentsView.onSwipeUpAnimationSuccess();
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
-            mTaskAnimationManager.setLiveTileCleanUpHandler(() -> {
-                mRecentsView.cleanupRemoteTargets();
-                mInputConsumerProxy.destroy();
-            });
-            mTaskAnimationManager.enableLiveTileRestartListener();
-        }
+        mTaskAnimationManager.setLiveTileCleanUpHandler(() -> {
+            mRecentsView.cleanupRemoteTargets();
+            mInputConsumerProxy.destroy();
+        });
+        mTaskAnimationManager.enableLiveTileRestartListener();
 
         SystemUiProxy.INSTANCE.get(mContext).onOverviewShown(false, TAG);
         doLogGesture(RECENTS, mRecentsView.getCurrentPageTaskView());
         reset();
     }
 
-    private static boolean isNotInRecents(RemoteAnimationTargetCompat app) {
+    private static boolean isNotInRecents(RemoteAnimationTarget app) {
         return app.isNotInRecents
-                || app.activityType == ACTIVITY_TYPE_HOME;
-    }
-
-    /**
-     * To be called at the end of constructor of subclasses. This calls various methods which can
-     * depend on proper class initialization.
-     */
-    protected void initAfterSubclassConstructor() {
-        initTransitionEndpoints(mRemoteTargetHandles[0].getTaskViewSimulator()
-                        .getOrientationState().getLauncherDeviceProfile());
+                || app.windowConfiguration.getActivityType() == ACTIVITY_TYPE_HOME;
     }
 
     protected void performHapticFeedback() {
@@ -1854,35 +2150,44 @@
     }
 
     protected void linkRecentsViewScroll() {
-        SurfaceTransactionApplier.create(mRecentsView, applier -> {
-            runActionOnRemoteHandles(remoteTargetHandle -> remoteTargetHandle.getTransformParams()
-                            .setSyncTransactionApplier(applier));
-            runOnRecentsAnimationAndLauncherBound(() ->
-                    mRecentsAnimationTargets.addReleaseCheck(applier));
-        });
+        SurfaceTransactionApplier applier = new SurfaceTransactionApplier(mRecentsView);
+        runActionOnRemoteHandles(remoteTargetHandle -> remoteTargetHandle.getTransformParams()
+                        .setSyncTransactionApplier(applier));
+        runOnRecentsAnimationAndLauncherBound(() ->
+                mRecentsAnimationTargets.addReleaseCheck(applier));
 
         mRecentsView.addOnScrollChangedListener(mOnRecentsScrollListener);
         runOnRecentsAnimationAndLauncherBound(() ->
                 mRecentsView.setRecentsAnimationTargets(mRecentsAnimationController,
                         mRecentsAnimationTargets));
-        mRecentsViewScrollLinked = true;
+
+        // Disable scrolling in RecentsView for trackpad 3-finger swipe up gesture.
+        if (!mGestureState.isThreeFingerTrackpadGesture()) {
+            mRecentsViewScrollLinked = true;
+        }
     }
 
     private void onRecentsViewScroll() {
         if (moveWindowWithRecentsScroll()) {
-            updateFinalShift();
+            onCurrentShiftUpdated();
         }
     }
 
     protected void startNewTask(Consumer<Boolean> resultCallback) {
         // Launch the task user scrolled to (mRecentsView.getNextPage()).
         if (!mCanceled) {
-            TaskView nextTask = mRecentsView.getNextPageTaskView();
+            TaskView nextTask = mRecentsView == null ? null : mRecentsView.getNextPageTaskView();
             if (nextTask != null) {
-                int taskId = nextTask.getTask().key.id;
+                Task.TaskKey nextTaskKey = nextTask.getTask().key;
+                int taskId = nextTaskKey.id;
                 mGestureState.updateLastStartedTaskId(taskId);
                 boolean hasTaskPreviouslyAppeared = mGestureState.getPreviouslyAppearedTaskIds()
                         .contains(taskId);
+                if (!hasTaskPreviouslyAppeared) {
+                    ActiveGestureLog.INSTANCE.trackEvent(EXPECTING_TASK_APPEARED);
+                }
+                ActiveGestureLog.INSTANCE.addLog("Launching task: id=" + taskId
+                        + " pkg=" + nextTaskKey.getPackageName());
                 nextTask.launchTask(success -> {
                     resultCallback.accept(success);
                     if (success) {
@@ -1941,9 +2246,6 @@
 
     @Override
     public void onRecentsAnimationFinished(RecentsAnimationController controller) {
-        if (!controller.getFinishTargetIsLauncher()) {
-            setDividerShown(true /* shown */, false /* immediate */);
-        }
         mRecentsAnimationController = null;
         mRecentsAnimationTargets = null;
         if (mRecentsView != null) {
@@ -1952,25 +2254,97 @@
     }
 
     @Override
-    public void onTasksAppeared(RemoteAnimationTargetCompat[] appearedTaskTargets) {
+    public void onTasksAppeared(RemoteAnimationTarget[] appearedTaskTargets) {
         if (mRecentsAnimationController != null) {
-            if (handleTaskAppeared(appearedTaskTargets)) {
-                mRecentsAnimationController.finish(false /* toRecents */,
-                        null /* onFinishComplete */);
-                mActivityInterface.onLaunchTaskSuccess();
-                ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimation", false);
+            boolean hasStartedTaskBefore = Arrays.stream(appearedTaskTargets).anyMatch(
+                    targetCompat -> targetCompat.taskId == mGestureState.getLastStartedTaskId());
+            if (!mStateCallback.hasStates(STATE_GESTURE_COMPLETED) && !hasStartedTaskBefore) {
+                // This is a special case, if a task is started mid-gesture that wasn't a part of a
+                // previous quickswitch task launch, then cancel the animation back to the app
+                RemoteAnimationTarget appearedTaskTarget = appearedTaskTargets[0];
+                TaskInfo taskInfo = appearedTaskTarget.taskInfo;
+                ActiveGestureLog.INSTANCE.addLog("Unexpected task appeared"
+                        + " id=" + taskInfo.taskId
+                        + " pkg=" + taskInfo.baseIntent.getComponent().getPackageName());
+                finishRecentsAnimationOnTasksAppeared(null /* onFinishComplete */);
+            } else if (handleTaskAppeared(appearedTaskTargets)) {
+                Optional<RemoteAnimationTarget> taskTargetOptional =
+                        Arrays.stream(appearedTaskTargets)
+                                .filter(targetCompat ->
+                                        targetCompat.taskId == mGestureState.getLastStartedTaskId())
+                                .findFirst();
+                if (!taskTargetOptional.isPresent()) {
+                    ActiveGestureLog.INSTANCE.addLog("No appeared task matching started task id");
+                    finishRecentsAnimationOnTasksAppeared(null /* onFinishComplete */);
+                    return;
+                }
+                RemoteAnimationTarget taskTarget = taskTargetOptional.get();
+                TaskView taskView = mRecentsView == null
+                        ? null : mRecentsView.getTaskViewByTaskId(taskTarget.taskId);
+                if (taskView == null || !taskView.getThumbnail().shouldShowSplashView()) {
+                    ActiveGestureLog.INSTANCE.addLog("Invalid task view splash state");
+                    finishRecentsAnimationOnTasksAppeared(null /* onFinishComplete */);
+                    return;
+                }
+
+                ViewGroup splashView = mActivity.getDragLayer();
+                final QuickstepLauncher quickstepLauncher = mActivity instanceof QuickstepLauncher
+                        ? (QuickstepLauncher) mActivity : null;
+                if (quickstepLauncher != null) {
+                    quickstepLauncher.getDepthController().pauseBlursOnWindows(true);
+                }
+
+                // When revealing the app with launcher splash screen, make the app visible
+                // and behind the splash view before the splash is animated away.
+                SurfaceTransactionApplier surfaceApplier =
+                        new SurfaceTransactionApplier(splashView);
+                SurfaceTransaction transaction = new SurfaceTransaction();
+                for (RemoteAnimationTarget target : appearedTaskTargets) {
+                    transaction.forSurface(target.leash).setAlpha(1).setLayer(-1).setShow();
+                }
+                surfaceApplier.scheduleApply(transaction);
+
+                SplashScreenExitAnimationUtils.startAnimations(splashView, taskTarget.leash,
+                        mSplashMainWindowShiftLength, new TransactionPool(), new Rect(),
+                        SPLASH_ANIMATION_DURATION, SPLASH_FADE_OUT_DURATION,
+                        /* iconStartAlpha= */ 0, /* brandingStartAlpha= */ 0,
+                        SPLASH_APP_REVEAL_DELAY, SPLASH_APP_REVEAL_DURATION,
+                        new AnimatorListenerAdapter() {
+                            @Override
+                            public void onAnimationEnd(Animator animation) {
+                                // Hiding launcher which shows the app surface behind, then
+                                // finishing recents to the app. After transition finish, showing
+                                // the views on launcher again, so it can be visible when next
+                                // animation starts.
+                                splashView.setAlpha(0);
+                                if (quickstepLauncher != null) {
+                                    quickstepLauncher.getDepthController()
+                                            .pauseBlursOnWindows(false);
+                                }
+                                finishRecentsAnimationOnTasksAppeared(() -> splashView.setAlpha(1));
+                            }
+                        });
             }
         }
     }
 
+    private void finishRecentsAnimationOnTasksAppeared(Runnable onFinishComplete) {
+        if (mRecentsAnimationController != null) {
+            mRecentsAnimationController.finish(false /* toRecents */, onFinishComplete);
+        }
+        ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimationOnTasksAppeared");
+    }
+
     /**
      * @return The index of the TaskView in RecentsView whose taskId matches the task that will
      * resume if we finish the controller.
      */
     protected int getLastAppearedTaskIndex() {
-        return mGestureState.getLastAppearedTaskId() != -1
-                ? mRecentsView.getTaskIndexForId(mGestureState.getLastAppearedTaskId())
-                : mRecentsView.getRunningTaskIndex();
+        return mRecentsView == null
+                ? -1
+                : mGestureState.getLastAppearedTaskId() != -1
+                        ? mRecentsView.getTaskIndexForId(mGestureState.getLastAppearedTaskId())
+                        : mRecentsView.getRunningTaskIndex();
     }
 
     /**
@@ -2001,18 +2375,23 @@
         boolean notSwipingToHome = mRecentsAnimationTargets != null
                 && mGestureState.getEndTarget() != HOME;
         boolean setRecentsScroll = mRecentsViewScrollLinked && mRecentsView != null;
+        float progress = Math.max(mCurrentShift.value, getScaleProgressDueToScroll());
+        int scrollOffset = setRecentsScroll ? mRecentsView.getScrollOffset() : 0;
+        if (!mStartMovingTasks && (progress > 0 || scrollOffset != 0)) {
+            mStartMovingTasks = true;
+            startInterceptingTouchesForGesture();
+        }
         for (RemoteTargetHandle remoteHandle : mRemoteTargetHandles) {
             AnimatorControllerWithResistance playbackController =
                     remoteHandle.getPlaybackController();
             if (playbackController != null) {
-                playbackController.setProgress(Math.max(mCurrentShift.value,
-                        getScaleProgressDueToScroll()), mDragLengthFactor);
+                playbackController.setProgress(progress, mDragLengthFactor);
             }
 
             if (notSwipingToHome) {
                 TaskViewSimulator taskViewSimulator = remoteHandle.getTaskViewSimulator();
                 if (setRecentsScroll) {
-                    taskViewSimulator.setScroll(mRecentsView.getScrollOffset());
+                    taskViewSimulator.setScroll(scrollOffset);
                 }
                 taskViewSimulator.apply(remoteHandle.getTransformParams());
             }
@@ -2049,17 +2428,42 @@
         return scaleProgress;
     }
 
-    private void setDividerShown(boolean shown, boolean immediate) {
-        if (mDividerAnimator != null) {
-            mDividerAnimator.cancel();
+    /**
+     * Overrides the gesture displacement to keep the app window at the bottom of the screen while
+     * the transient taskbar is being swiped in.
+     *
+     * There is also a catch up period so that the window can start moving 1:1 with the swipe.
+     */
+    @Override
+    protected float overrideDisplacementForTransientTaskbar(float displacement) {
+        if (!mIsTransientTaskbar) {
+            return displacement;
         }
-        mDividerAnimator = TaskViewUtils.createSplitAuxiliarySurfacesAnimator(
-                mRecentsAnimationTargets.nonApps, shown, (dividerAnimator) -> {
-                    dividerAnimator.start();
-                    if (immediate) {
-                        dividerAnimator.end();
-                    }
-                });
+
+        if (mTaskbarAlreadyOpen || mIsTaskbarAllAppsOpen || mGestureState.isTrackpadGesture()) {
+            return displacement;
+        }
+
+        if (displacement < mTaskbarAppWindowThreshold) {
+            return 0;
+        }
+
+        // "Catch up" with the displacement at mTaskbarCatchUpThreshold.
+        if (displacement < mTaskbarCatchUpThreshold) {
+            return Utilities.mapToRange(displacement, mTaskbarAppWindowThreshold,
+                    mTaskbarCatchUpThreshold, 0, mTaskbarCatchUpThreshold, ACCEL_DEACCEL);
+        }
+
+        return displacement;
+    }
+
+    private void setDividerShown(boolean shown) {
+        if (mRecentsAnimationTargets == null || mIsDividerShown == shown) {
+            return;
+        }
+        mIsDividerShown = shown;
+        TaskViewUtils.createSplitAuxiliarySurfacesAnimator(
+                mRecentsAnimationTargets.nonApps, shown, null /* animatorHandler */);
     }
 
     /**
diff --git a/quickstep/src/com/android/quickstep/BaseActivityInterface.java b/quickstep/src/com/android/quickstep/BaseActivityInterface.java
index 2fcd286..60083c6 100644
--- a/quickstep/src/com/android/quickstep/BaseActivityInterface.java
+++ b/quickstep/src/com/android/quickstep/BaseActivityInterface.java
@@ -16,10 +16,12 @@
 package com.android.quickstep;
 
 import static com.android.launcher3.LauncherAnimUtils.VIEW_BACKGROUND_COLOR;
+import static com.android.launcher3.MotionEventsUtils.isTrackpadMultiFingerSwipe;
 import static com.android.launcher3.anim.Interpolators.ACCEL_2;
 import static com.android.launcher3.anim.Interpolators.INSTANT;
 import static com.android.launcher3.anim.Interpolators.LINEAR;
 import static com.android.quickstep.AbsSwipeUpHandler.RECENTS_ATTACH_DURATION;
+import static com.android.quickstep.GestureState.GestureEndTarget.LAST_TASK;
 import static com.android.quickstep.GestureState.GestureEndTarget.RECENTS;
 import static com.android.quickstep.util.RecentsAtomicAnimationFactory.INDEX_RECENTS_FADE_ANIM;
 import static com.android.quickstep.util.RecentsAtomicAnimationFactory.INDEX_RECENTS_TRANSLATE_X_ANIM;
@@ -30,6 +32,7 @@
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
+import android.animation.AnimatorSet;
 import android.animation.ObjectAnimator;
 import android.annotation.TargetApi;
 import android.content.Context;
@@ -40,6 +43,7 @@
 import android.os.Build;
 import android.view.Gravity;
 import android.view.MotionEvent;
+import android.view.RemoteAnimationTarget;
 import android.view.View;
 
 import androidx.annotation.Nullable;
@@ -49,22 +53,21 @@
 import com.android.launcher3.R;
 import com.android.launcher3.anim.AnimatorPlaybackController;
 import com.android.launcher3.anim.PendingAnimation;
+import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.statehandlers.DepthController;
+import com.android.launcher3.statehandlers.DesktopVisibilityController;
 import com.android.launcher3.statemanager.BaseState;
 import com.android.launcher3.statemanager.StatefulActivity;
 import com.android.launcher3.taskbar.TaskbarUIController;
 import com.android.launcher3.touch.PagedOrientationHandler;
 import com.android.launcher3.util.DisplayController;
-import com.android.launcher3.util.DisplayController.NavigationMode;
-import com.android.launcher3.util.WindowBounds;
+import com.android.launcher3.util.NavigationMode;
 import com.android.launcher3.views.ScrimView;
 import com.android.quickstep.util.ActivityInitListener;
 import com.android.quickstep.util.AnimatorControllerWithResistance;
-import com.android.quickstep.util.SplitScreenBounds;
+import com.android.quickstep.views.DesktopTaskView;
 import com.android.quickstep.views.RecentsView;
-import com.android.quickstep.views.TaskView;
 import com.android.systemui.shared.recents.model.ThumbnailData;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
 
 import java.util.HashMap;
 import java.util.Optional;
@@ -108,6 +111,20 @@
         if (endTarget != null) {
             // We were on our way to this state when we got canceled, end there instead.
             startState = stateFromGestureEndTarget(endTarget);
+            if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) {
+                DesktopVisibilityController controller = getDesktopVisibilityController();
+                if (controller != null && controller.areFreeformTasksVisible()
+                        && endTarget == LAST_TASK) {
+                    // When we are cancelling the transition and going back to last task, move to
+                    // rest state instead when desktop tasks are visible.
+                    // If a fullscreen task is visible, launcher goes to normal state when the
+                    // activity is stopped. This does not happen when freeform tasks are visible
+                    // on top of launcher. Force the launcher state to rest state here.
+                    startState = activity.getStateManager().getRestState();
+                    // Do not animate the transition
+                    activityVisible = false;
+                }
+            }
         }
         activity.getStateManager().goToState(startState, activityVisible);
     }
@@ -121,9 +138,6 @@
 
     public abstract void onAssistantVisibilityChanged(float visibility);
 
-    /** Called when one handed mode activated or deactivated. */
-    public abstract void onOneHandedModeStateChanged(boolean activated);
-
     public abstract AnimationFactory prepareRecentsUI(RecentsAnimationDeviceState deviceState,
             boolean activityVisible, Consumer<AnimatorControllerWithResistance> callback);
 
@@ -144,6 +158,11 @@
     }
 
     @Nullable
+    public DesktopVisibilityController getDesktopVisibilityController() {
+        return null;
+    }
+
+    @Nullable
     public abstract TaskbarUIController getTaskbarController();
 
     public final boolean isResumed() {
@@ -164,12 +183,16 @@
     public abstract boolean switchToRecentsIfVisible(Runnable onCompleteCallback);
 
     public abstract Rect getOverviewWindowBounds(
-            Rect homeBounds, RemoteAnimationTargetCompat target);
+            Rect homeBounds, RemoteAnimationTarget target);
 
     public abstract boolean allowMinimizeSplitScreen();
 
+    /** @return whether to allow going to All Apps from Overview. */
+    public abstract boolean allowAllAppsFromOverview();
+
     public boolean deferStartingActivity(RecentsAnimationDeviceState deviceState, MotionEvent ev) {
-        return deviceState.isInDeferredGestureRegion(ev) || deviceState.isImeRenderingNavButtons();
+        return deviceState.isInDeferredGestureRegion(ev) || deviceState.isImeRenderingNavButtons()
+                || isTrackpadMultiFingerSwipe(ev);
     }
 
     /**
@@ -186,19 +209,12 @@
 
     public abstract void onLaunchTaskFailed();
 
-    public void onLaunchTaskSuccess() {
-        ACTIVITY_TYPE activity = getCreatedActivity();
-        if (activity == null) {
-            return;
-        }
-        activity.getStateManager().moveToRestState();
-    }
-
     /**
      * Closes any overlays.
      */
     public void closeOverlay() {
-        Optional.ofNullable(getTaskbarController()).ifPresent(TaskbarUIController::hideAllApps);
+        Optional.ofNullable(getTaskbarController()).ifPresent(
+                TaskbarUIController::hideOverlayWindow);
     }
 
     public void switchRunningTaskViewToScreenshot(HashMap<Integer, ThumbnailData> thumbnailDatas,
@@ -220,17 +236,21 @@
     /**
      * Calculates the taskView size for the provided device configuration.
      */
-    public final void calculateTaskSize(Context context, DeviceProfile dp, Rect outRect) {
-        Resources res = context.getResources();
-        float maxScale = res.getFloat(R.dimen.overview_max_scale);
+    public final void calculateTaskSize(Context context, DeviceProfile dp, Rect outRect,
+            PagedOrientationHandler orientedState) {
         if (dp.isTablet) {
-            Rect gridRect = new Rect();
-            calculateGridSize(dp, gridRect);
-
-            calculateTaskSizeInternal(context, dp, gridRect, maxScale, Gravity.CENTER, outRect);
+            if (FeatureFlags.ENABLE_GRID_ONLY_OVERVIEW.get()) {
+                calculateGridTaskSize(context, dp, outRect, orientedState);
+            } else {
+                calculateFocusTaskSize(context, dp, outRect);
+            }
         } else {
+            Resources res = context.getResources();
+            float maxScale = res.getFloat(R.dimen.overview_max_scale);
             int taskMargin = dp.overviewTaskMarginPx;
-            calculateTaskSizeInternal(context, dp,
+            calculateTaskSizeInternal(
+                    context,
+                    dp,
                     dp.overviewTaskThumbnailTopMarginPx,
                     dp.getOverviewActionsClaimedSpace(),
                     res.getDimensionPixelSize(R.dimen.overview_minimum_next_prev_size) + taskMargin,
@@ -240,6 +260,14 @@
         }
     }
 
+    private void calculateFocusTaskSize(Context context, DeviceProfile dp, Rect outRect) {
+        Resources res = context.getResources();
+        float maxScale = res.getFloat(R.dimen.overview_max_scale);
+        Rect gridRect = new Rect();
+        calculateGridSize(dp, gridRect);
+        calculateTaskSizeInternal(context, dp, gridRect, maxScale, Gravity.CENTER, outRect);
+    }
+
     private void calculateTaskSizeInternal(Context context, DeviceProfile dp, int claimedSpaceAbove,
             int claimedSpaceBelow, int minimumHorizontalPadding, float maxScale, int gravity,
             Rect outRect) {
@@ -280,37 +308,10 @@
      * Gets the dimension of the task in the current system state.
      */
     public static void getTaskDimension(Context context, DeviceProfile dp, PointF out) {
-        if (dp.isMultiWindowMode) {
-            WindowBounds bounds = SplitScreenBounds.INSTANCE.getSecondaryWindowBounds(context);
-            out.x = bounds.availableSize.x;
-            out.y = bounds.availableSize.y;
-            if (!TaskView.clipLeft(dp)) {
-                out.x += bounds.insets.left;
-            }
-            if (!TaskView.clipRight(dp)) {
-                out.x += bounds.insets.right;
-            }
-            if (!TaskView.clipTop(dp)) {
-                out.y += bounds.insets.top;
-            }
-            if (!TaskView.clipBottom(dp)) {
-                out.y += bounds.insets.bottom;
-            }
-        } else {
-            out.x = dp.widthPx;
-            out.y = dp.heightPx;
-            if (TaskView.clipLeft(dp)) {
-                out.x -= dp.getInsets().left;
-            }
-            if (TaskView.clipRight(dp)) {
-                out.x -= dp.getInsets().right;
-            }
-            if (TaskView.clipTop(dp)) {
-                out.y -= dp.getInsets().top;
-            }
-            if (TaskView.clipBottom(dp)) {
-                out.y -= Math.max(dp.getInsets().bottom, dp.taskbarSize);
-            }
+        out.x = dp.widthPx;
+        out.y = dp.heightPx;
+        if (dp.isTablet && !DisplayController.isTransientTaskbar(context)) {
+            out.y -= dp.taskbarHeight;
         }
     }
 
@@ -334,12 +335,15 @@
     public final void calculateGridTaskSize(Context context, DeviceProfile dp, Rect outRect,
             PagedOrientationHandler orientedState) {
         Resources res = context.getResources();
-        Rect taskRect = new Rect();
-        calculateTaskSize(context, dp, taskRect);
+        Rect potentialTaskRect = new Rect();
+        if (FeatureFlags.ENABLE_GRID_ONLY_OVERVIEW.get()) {
+            calculateGridSize(dp, potentialTaskRect);
+        } else {
+            calculateFocusTaskSize(context, dp, potentialTaskRect);
+        }
 
-        float rowHeight =
-                (taskRect.height() + dp.overviewTaskThumbnailTopMarginPx - dp.overviewRowSpacing)
-                        / 2f;
+        float rowHeight = (potentialTaskRect.height() + dp.overviewTaskThumbnailTopMarginPx
+                - dp.overviewRowSpacing) / 2f;
 
         PointF taskDimension = getTaskDimension(context, dp);
         float scale = (rowHeight - dp.overviewTaskThumbnailTopMarginPx) / taskDimension.y;
@@ -348,20 +352,38 @@
 
         int gravity = Gravity.TOP;
         gravity |= orientedState.getRecentsRtlSetting(res) ? Gravity.RIGHT : Gravity.LEFT;
-        Gravity.apply(gravity, outWidth, outHeight, taskRect, outRect);
+        Gravity.apply(gravity, outWidth, outHeight, potentialTaskRect, outRect);
+    }
+
+    /**
+     * Calculates the task size for the desktop task
+     */
+    public final void calculateDesktopTaskSize(Context context, DeviceProfile dp, Rect outRect) {
+        calculateFocusTaskSize(context, dp, outRect);
     }
 
     /**
      * Calculates the modal taskView size for the provided device configuration
      */
-    public final void calculateModalTaskSize(Context context, DeviceProfile dp, Rect outRect) {
-        calculateTaskSize(context, dp, outRect);
-        float maxScale = context.getResources().getFloat(R.dimen.overview_modal_max_scale);
+    public final void calculateModalTaskSize(Context context, DeviceProfile dp, Rect outRect,
+            PagedOrientationHandler orientedState) {
+        calculateTaskSize(context, dp, outRect, orientedState);
+        boolean isGridOnlyOverview = dp.isTablet && FeatureFlags.ENABLE_GRID_ONLY_OVERVIEW.get();
+        int claimedSpaceBelow = isGridOnlyOverview
+                ? dp.overviewActionsTopMarginPx + dp.overviewActionsHeight + dp.stashedTaskbarHeight
+                : (dp.heightPx - outRect.bottom - dp.getInsets().bottom);
+        int minimumHorizontalPadding = 0;
+        if (!isGridOnlyOverview) {
+            float maxScale = context.getResources().getFloat(R.dimen.overview_modal_max_scale);
+            minimumHorizontalPadding =
+                    Math.round((dp.availableWidthPx - outRect.width() * maxScale) / 2);
+        }
         calculateTaskSizeInternal(
-                context, dp,
+                context,
+                dp,
                 dp.overviewTaskMarginPx,
-                dp.heightPx - outRect.bottom - dp.getInsets().bottom,
-                Math.round((dp.availableWidthPx - outRect.width() * maxScale) / 2),
+                claimedSpaceBelow,
+                minimumHorizontalPadding,
                 1f /*maxScale*/,
                 Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM,
                 outRect);
@@ -512,33 +534,38 @@
             if (mIsAttachedToWindow == attached && animate) {
                 return;
             }
-            mIsAttachedToWindow = attached;
-            RecentsView recentsView = mActivity.getOverviewPanel();
-            if (attached) {
-                mHasEverAttachedToWindow = true;
-            }
-            Animator fadeAnim = mActivity.getStateManager()
-                    .createStateElementAnimation(INDEX_RECENTS_FADE_ANIM, attached ? 1 : 0);
-
-            float fromTranslation = attached ? 1 : 0;
-            float toTranslation = attached ? 0 : 1;
+            mActivity.getStateManager()
+                    .cancelStateElementAnimation(INDEX_RECENTS_FADE_ANIM);
             mActivity.getStateManager()
                     .cancelStateElementAnimation(INDEX_RECENTS_TRANSLATE_X_ANIM);
-            if (!recentsView.isShown() && animate) {
-                ADJACENT_PAGE_HORIZONTAL_OFFSET.set(recentsView, fromTranslation);
-            } else {
-                fromTranslation = ADJACENT_PAGE_HORIZONTAL_OFFSET.get(recentsView);
-            }
-            if (!animate) {
-                ADJACENT_PAGE_HORIZONTAL_OFFSET.set(recentsView, toTranslation);
-            } else {
-                mActivity.getStateManager().createStateElementAnimation(
-                        INDEX_RECENTS_TRANSLATE_X_ANIM,
-                        fromTranslation, toTranslation).start();
-            }
 
+            AnimatorSet animatorSet = new AnimatorSet();
+            animatorSet.addListener(new AnimatorListenerAdapter() {
+                @Override
+                public void onAnimationStart(Animator animation) {
+                    super.onAnimationStart(animation);
+                    mIsAttachedToWindow = attached;
+                    if (attached) {
+                        mHasEverAttachedToWindow = true;
+                    }
+                }});
+
+            long animationDuration = animate ? RECENTS_ATTACH_DURATION : 0;
+            Animator fadeAnim = mActivity.getStateManager()
+                    .createStateElementAnimation(INDEX_RECENTS_FADE_ANIM, attached ? 1 : 0);
             fadeAnim.setInterpolator(attached ? INSTANT : ACCEL_2);
-            fadeAnim.setDuration(animate ? RECENTS_ATTACH_DURATION : 0).start();
+            fadeAnim.setDuration(animationDuration);
+            animatorSet.play(fadeAnim);
+
+            float fromTranslation = ADJACENT_PAGE_HORIZONTAL_OFFSET.get(
+                    mActivity.getOverviewPanel());
+            float toTranslation = attached ? 0 : 1;
+
+            Animator translationAnimator = mActivity.getStateManager().createStateElementAnimation(
+                    INDEX_RECENTS_TRANSLATE_X_ANIM, fromTranslation, toTranslation);
+            translationAnimator.setDuration(animationDuration);
+            animatorSet.play(translationAnimator);
+            animatorSet.start();
         }
 
         @Override
diff --git a/quickstep/src/com/android/quickstep/BootAwarePreloader.kt b/quickstep/src/com/android/quickstep/BootAwarePreloader.kt
new file mode 100644
index 0000000..35404a9
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/BootAwarePreloader.kt
@@ -0,0 +1,51 @@
+/*
+ * 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.quickstep
+
+import android.content.Context
+import android.util.Log
+import com.android.launcher3.LauncherAppState
+import com.android.launcher3.LauncherPrefs
+import com.android.launcher3.isBootAwareStartupDataEnabled
+import com.android.launcher3.util.LockedUserState
+
+/**
+ * Loads expensive objects in memory before the user is unlocked. This decreases experienced latency
+ * when starting the launcher for the first time after a reboot.
+ */
+object BootAwarePreloader {
+    private const val TAG = "BootAwarePreloader"
+
+    @JvmStatic
+    fun start(context: Context) {
+        val lp = LauncherPrefs.get(context)
+        when {
+            LockedUserState.get(context).isUserUnlocked || !isBootAwareStartupDataEnabled -> {
+                /* No-Op */
+            }
+            lp.isStartupDataMigrated -> {
+                Log.d(TAG, "preloading start up data")
+                LauncherAppState.INSTANCE.get(context)
+            }
+            else -> {
+                Log.d(TAG, "queuing start up data migration to boot aware prefs")
+                LockedUserState.get(context).runOnUserUnlocked {
+                    lp.migrateStartupDataToDeviceProtectedStorage()
+                }
+            }
+        }
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/FallbackActivityInterface.java b/quickstep/src/com/android/quickstep/FallbackActivityInterface.java
index ba61574..5c96000 100644
--- a/quickstep/src/com/android/quickstep/FallbackActivityInterface.java
+++ b/quickstep/src/com/android/quickstep/FallbackActivityInterface.java
@@ -15,8 +15,7 @@
  */
 package com.android.quickstep;
 
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
-import static com.android.launcher3.util.DisplayController.NavigationMode.NO_BUTTON;
+import static com.android.launcher3.util.NavigationMode.NO_BUTTON;
 import static com.android.quickstep.fallback.RecentsState.BACKGROUND_APP;
 import static com.android.quickstep.fallback.RecentsState.DEFAULT;
 import static com.android.quickstep.fallback.RecentsState.HOME;
@@ -26,6 +25,7 @@
 import android.content.Context;
 import android.graphics.Rect;
 import android.view.MotionEvent;
+import android.view.RemoteAnimationTarget;
 
 import androidx.annotation.Nullable;
 
@@ -39,7 +39,6 @@
 import com.android.quickstep.util.ActivityInitListener;
 import com.android.quickstep.util.AnimatorControllerWithResistance;
 import com.android.quickstep.views.RecentsView;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
 
 import java.util.function.Consumer;
 import java.util.function.Predicate;
@@ -62,7 +61,7 @@
     @Override
     public int getSwipeUpDestinationAndLength(DeviceProfile dp, Context context, Rect outRect,
             PagedOrientationHandler orientationHandler) {
-        calculateTaskSize(context, dp, outRect);
+        calculateTaskSize(context, dp, outRect, orientationHandler);
         if (dp.isVerticalBarLayout() && DisplayController.getNavigationMode(context) != NO_BUTTON) {
             return dp.isSeascape() ? outRect.left : (dp.widthPx - outRect.right);
         } else {
@@ -78,11 +77,6 @@
         // set to zero prior to this class becoming active.
     }
 
-    @Override
-    public void onOneHandedModeStateChanged(boolean activated) {
-        // Do nothing for FallbackActivityInterface
-    }
-
     /** 6 */
     @Override
     public AnimationFactory prepareRecentsUI(RecentsAnimationDeviceState deviceState,
@@ -120,8 +114,7 @@
     public RecentsView getVisibleRecentsView() {
         RecentsActivity activity = getCreatedActivity();
         if (activity != null) {
-            if (activity.hasBeenResumed()
-                    || (ENABLE_QUICKSTEP_LIVE_TILE.get() && isInLiveTileMode())) {
+            if (activity.hasBeenResumed() || isInLiveTileMode()) {
                 return activity.getOverviewPanel();
             }
         }
@@ -134,7 +127,7 @@
     }
 
     @Override
-    public Rect getOverviewWindowBounds(Rect homeBounds, RemoteAnimationTargetCompat target) {
+    public Rect getOverviewWindowBounds(Rect homeBounds, RemoteAnimationTarget target) {
         // TODO: Remove this once b/77875376 is fixed
         return target.screenSpaceBounds;
     }
@@ -146,6 +139,11 @@
     }
 
     @Override
+    public boolean allowAllAppsFromOverview() {
+        return false;
+    }
+
+    @Override
     public boolean deferStartingActivity(RecentsAnimationDeviceState deviceState, MotionEvent ev) {
         // In non-gesture mode, user might be clicking on the home button which would directly
         // start the home activity instead of going through recents. In that case, defer starting
@@ -203,6 +201,7 @@
             case LAST_TASK:
                 return BACKGROUND_APP;
             case HOME:
+            case ALL_APPS:
             default:
                 return HOME;
         }
diff --git a/quickstep/src/com/android/quickstep/FallbackSwipeHandler.java b/quickstep/src/com/android/quickstep/FallbackSwipeHandler.java
index ee5bb44..1913091 100644
--- a/quickstep/src/com/android/quickstep/FallbackSwipeHandler.java
+++ b/quickstep/src/com/android/quickstep/FallbackSwipeHandler.java
@@ -15,6 +15,7 @@
  */
 package com.android.quickstep;
 
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
 import static android.content.Intent.EXTRA_COMPONENT_NAME;
 import static android.content.Intent.EXTRA_USER;
 
@@ -23,16 +24,14 @@
 import static com.android.launcher3.GestureNavContract.EXTRA_ICON_SURFACE;
 import static com.android.launcher3.GestureNavContract.EXTRA_ON_FINISH_CALLBACK;
 import static com.android.launcher3.GestureNavContract.EXTRA_REMOTE_CALLBACK;
-import static com.android.launcher3.Utilities.createHomeIntent;
 import static com.android.launcher3.anim.AnimatorListeners.forEndCallback;
 import static com.android.launcher3.anim.Interpolators.ACCEL;
-import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME;
+import static com.android.quickstep.OverviewComponentObserver.startHomeIntentSafely;
 
 import android.animation.ObjectAnimator;
 import android.annotation.TargetApi;
 import android.app.ActivityManager.RunningTaskInfo;
 import android.app.ActivityOptions;
-import android.content.ActivityNotFoundException;
 import android.content.Context;
 import android.content.Intent;
 import android.graphics.Matrix;
@@ -49,6 +48,7 @@
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.util.Log;
+import android.view.RemoteAnimationTarget;
 import android.view.Surface;
 import android.view.SurfaceControl;
 import android.view.SurfaceControl.Transaction;
@@ -58,6 +58,7 @@
 
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.anim.AnimatorPlaybackController;
 import com.android.launcher3.anim.PendingAnimation;
 import com.android.launcher3.anim.SpringAnimationBuilder;
@@ -66,12 +67,11 @@
 import com.android.quickstep.fallback.FallbackRecentsView;
 import com.android.quickstep.fallback.RecentsState;
 import com.android.quickstep.util.RectFSpringAnim;
+import com.android.quickstep.util.SurfaceTransaction.SurfaceProperties;
 import com.android.quickstep.util.TransformParams;
 import com.android.quickstep.util.TransformParams.BuilderProxy;
 import com.android.systemui.shared.recents.model.Task.TaskKey;
 import com.android.systemui.shared.system.InputConsumerController;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
-import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams;
 
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
@@ -108,7 +108,8 @@
         super(context, deviceState, taskAnimationManager, gestureState, touchTimeMs,
                 continuingLastGesture, inputConsumer);
 
-        mRunningOverHome = mGestureState.getRunningTask().isHomeTask();
+        mRunningOverHome = mGestureState.getRunningTask() != null
+                && mGestureState.getRunningTask().isHomeTask();
         if (mRunningOverHome) {
             runActionOnRemoteHandles(remoteTargetHandle ->
                     remoteTargetHandle.getTransformParams().setHomeBuilderProxy(
@@ -126,24 +127,24 @@
         }
     }
 
-    private void updateHomeActivityTransformDuringSwipeUp(SurfaceParams.Builder builder,
-            RemoteAnimationTargetCompat app, TransformParams params) {
+    private void updateHomeActivityTransformDuringSwipeUp(SurfaceProperties builder,
+            RemoteAnimationTarget app, TransformParams params) {
         setHomeScaleAndAlpha(builder, app, mCurrentShift.value,
                 Utilities.boundToRange(1 - mCurrentShift.value, 0, 1));
     }
 
-    private void setHomeScaleAndAlpha(SurfaceParams.Builder builder,
-            RemoteAnimationTargetCompat app, float verticalShift, float alpha) {
+    private void setHomeScaleAndAlpha(SurfaceProperties builder,
+            RemoteAnimationTarget app, float verticalShift, float alpha) {
         float scale = Utilities.mapRange(verticalShift, 1, mMaxLauncherScale);
         mTmpMatrix.setScale(scale, scale,
                 app.localBounds.exactCenterX(), app.localBounds.exactCenterY());
-        builder.withMatrix(mTmpMatrix).withAlpha(alpha);
+        builder.setMatrix(mTmpMatrix).setAlpha(alpha);
     }
 
     @Override
     protected HomeAnimationFactory createHomeAnimationFactory(ArrayList<IBinder> launchCookies,
             long duration, boolean isTargetTranslucent, boolean appCanEnterPip,
-            RemoteAnimationTargetCompat runningTaskTarget) {
+            RemoteAnimationTarget runningTaskTarget) {
         mAppCanEnterPip = appCanEnterPip;
         if (appCanEnterPip) {
             return new FallbackPipToHomeAnimationFactory();
@@ -155,21 +156,17 @@
 
     private void startHomeIntent(
             @Nullable FallbackHomeAnimationFactory gestureContractAnimationFactory,
-            @Nullable RemoteAnimationTargetCompat runningTaskTarget) {
+            @Nullable RemoteAnimationTarget runningTaskTarget) {
         ActivityOptions options = ActivityOptions.makeCustomAnimation(mContext, 0, 0);
         Intent intent = new Intent(mGestureState.getHomeIntent());
         if (gestureContractAnimationFactory != null && runningTaskTarget != null) {
             gestureContractAnimationFactory.addGestureContract(intent, runningTaskTarget.taskInfo);
         }
-        try {
-            mContext.startActivity(intent, options.toBundle());
-        } catch (NullPointerException | ActivityNotFoundException | SecurityException e) {
-            mContext.startActivity(createHomeIntent());
-        }
+        startHomeIntentSafely(mContext, intent, options.toBundle());
     }
 
     @Override
-    protected boolean handleTaskAppeared(RemoteAnimationTargetCompat[] appearedTaskTarget) {
+    protected boolean handleTaskAppeared(RemoteAnimationTarget[] appearedTaskTarget) {
         if (mActiveAnimationFactory != null
                 && mActiveAnimationFactory.handleHomeTaskAppeared(appearedTaskTarget)) {
             mActiveAnimationFactory = null;
@@ -284,13 +281,13 @@
             return mTargetRect;
         }
 
-        private void updateRecentsActivityTransformDuringHomeAnim(SurfaceParams.Builder builder,
-                RemoteAnimationTargetCompat app, TransformParams params) {
-            builder.withAlpha(mRecentsAlpha.value);
+        private void updateRecentsActivityTransformDuringHomeAnim(SurfaceProperties builder,
+                RemoteAnimationTarget app, TransformParams params) {
+            builder.setAlpha(mRecentsAlpha.value);
         }
 
-        private void updateHomeActivityTransformDuringHomeAnim(SurfaceParams.Builder builder,
-                RemoteAnimationTargetCompat app, TransformParams params) {
+        private void updateHomeActivityTransformDuringHomeAnim(SurfaceProperties builder,
+                RemoteAnimationTarget app, TransformParams params) {
             setHomeScaleAndAlpha(builder, app, mVerticalShiftForScale.value, mHomeAlpha.value);
         }
 
@@ -309,12 +306,12 @@
             }
         }
 
-        public boolean handleHomeTaskAppeared(RemoteAnimationTargetCompat[] appearedTaskTargets) {
-            RemoteAnimationTargetCompat appearedTaskTarget = appearedTaskTargets[0];
-            if (appearedTaskTarget.activityType == ACTIVITY_TYPE_HOME) {
+        public boolean handleHomeTaskAppeared(RemoteAnimationTarget[] appearedTaskTargets) {
+            RemoteAnimationTarget appearedTaskTarget = appearedTaskTargets[0];
+            if (appearedTaskTarget.windowConfiguration.getActivityType() == ACTIVITY_TYPE_HOME) {
                 RemoteAnimationTargets targets = new RemoteAnimationTargets(
-                        new RemoteAnimationTargetCompat[] {appearedTaskTarget},
-                        new RemoteAnimationTargetCompat[0], new RemoteAnimationTargetCompat[0],
+                        new RemoteAnimationTarget[] {appearedTaskTarget},
+                        new RemoteAnimationTarget[0], new RemoteAnimationTarget[0],
                         appearedTaskTarget.mode);
                 mHomeAlphaParams.setTargetSet(targets);
                 updateHomeAlpha();
diff --git a/quickstep/src/com/android/quickstep/GestureState.java b/quickstep/src/com/android/quickstep/GestureState.java
index 3b52e91..9d7ccb4 100644
--- a/quickstep/src/com/android/quickstep/GestureState.java
+++ b/quickstep/src/com/android/quickstep/GestureState.java
@@ -15,29 +15,40 @@
  */
 package com.android.quickstep;
 
+import static com.android.launcher3.MotionEventsUtils.isTrackpadFourFingerSwipe;
+import static com.android.launcher3.MotionEventsUtils.isTrackpadMultiFingerSwipe;
+import static com.android.launcher3.MotionEventsUtils.isTrackpadThreeFingerSwipe;
+import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_ALLAPPS;
 import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_BACKGROUND;
 import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_HOME;
 import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_OVERVIEW;
 import static com.android.quickstep.MultiStateCallback.DEBUG_STATES;
+import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.SET_END_TARGET;
+import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.SET_END_TARGET_ALL_APPS;
+import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.SET_END_TARGET_HOME;
+import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.SET_END_TARGET_NEW_TASK;
 
 import android.annotation.Nullable;
 import android.annotation.TargetApi;
 import android.content.Intent;
 import android.os.Build;
+import android.view.MotionEvent;
+import android.view.RemoteAnimationTarget;
 
 import com.android.launcher3.statemanager.BaseState;
 import com.android.launcher3.statemanager.StatefulActivity;
 import com.android.launcher3.tracing.GestureStateProto;
 import com.android.launcher3.tracing.SwipeHandlerProto;
 import com.android.quickstep.TopTaskTracker.CachedTaskInfo;
+import com.android.quickstep.util.ActiveGestureErrorDetector;
 import com.android.quickstep.util.ActiveGestureLog;
 import com.android.systemui.shared.recents.model.ThumbnailData;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
 
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -59,7 +70,9 @@
                 GestureStateProto.GestureEndTarget.NEW_TASK),
 
         LAST_TASK(false, LAUNCHER_STATE_BACKGROUND, true,
-                GestureStateProto.GestureEndTarget.LAST_TASK);
+                GestureStateProto.GestureEndTarget.LAST_TASK),
+
+        ALL_APPS(true, LAUNCHER_STATE_ALLAPPS, false, GestureStateProto.GestureEndTarget.ALL_APPS);
 
         GestureEndTarget(boolean isLauncher, int containerType, boolean recentsAttachedToAppWindow,
                 GestureStateProto.GestureEndTarget protoEndTarget) {
@@ -82,11 +95,11 @@
 
     private static final String TAG = "GestureState";
 
-    private static final ArrayList<String> STATE_NAMES = new ArrayList<>();
+    private static final List<String> STATE_NAMES = new ArrayList<>();
     public static final GestureState DEFAULT_STATE = new GestureState();
 
     private static int FLAG_COUNT = 0;
-    private static int getFlagForIndex(String name) {
+    private static int getNextStateFlag(String name) {
         if (DEBUG_STATES) {
             STATE_NAMES.add(name);
         }
@@ -97,36 +110,36 @@
 
     // Called when the end target as been set
     public static final int STATE_END_TARGET_SET =
-            getFlagForIndex("STATE_END_TARGET_SET");
+            getNextStateFlag("STATE_END_TARGET_SET");
 
     // Called when the end target animation has finished
     public static final int STATE_END_TARGET_ANIMATION_FINISHED =
-            getFlagForIndex("STATE_END_TARGET_ANIMATION_FINISHED");
+            getNextStateFlag("STATE_END_TARGET_ANIMATION_FINISHED");
 
     // Called when the recents animation has been requested to start
     public static final int STATE_RECENTS_ANIMATION_INITIALIZED =
-            getFlagForIndex("STATE_RECENTS_ANIMATION_INITIALIZED");
+            getNextStateFlag("STATE_RECENTS_ANIMATION_INITIALIZED");
 
     // Called when the recents animation is started and the TaskAnimationManager has been updated
     // with the controller and targets
     public static final int STATE_RECENTS_ANIMATION_STARTED =
-            getFlagForIndex("STATE_RECENTS_ANIMATION_STARTED");
+            getNextStateFlag("STATE_RECENTS_ANIMATION_STARTED");
 
     // Called when the recents animation is canceled
     public static final int STATE_RECENTS_ANIMATION_CANCELED =
-            getFlagForIndex("STATE_RECENTS_ANIMATION_CANCELED");
+            getNextStateFlag("STATE_RECENTS_ANIMATION_CANCELED");
 
     // Called when the recents animation finishes
     public static final int STATE_RECENTS_ANIMATION_FINISHED =
-            getFlagForIndex("STATE_RECENTS_ANIMATION_FINISHED");
+            getNextStateFlag("STATE_RECENTS_ANIMATION_FINISHED");
 
     // Always called when the recents animation ends (regardless of cancel or finish)
     public static final int STATE_RECENTS_ANIMATION_ENDED =
-            getFlagForIndex("STATE_RECENTS_ANIMATION_ENDED");
+            getNextStateFlag("STATE_RECENTS_ANIMATION_ENDED");
 
     // Called when RecentsView stops scrolling and settles on a TaskView.
     public static final int STATE_RECENTS_SCROLLING_FINISHED =
-            getFlagForIndex("STATE_RECENTS_SCROLLING_FINISHED");
+            getNextStateFlag("STATE_RECENTS_SCROLLING_FINISHED");
 
     // Needed to interact with the current activity
     private final Intent mHomeIntent;
@@ -135,9 +148,32 @@
     private final MultiStateCallback mStateCallback;
     private final int mGestureId;
 
+    public enum TrackpadGestureType {
+        NONE,
+        // Assigned before we know whether it's a 3-finger or 4-finger gesture.
+        MULTI_FINGER,
+        THREE_FINGER,
+        FOUR_FINGER;
+
+        public static TrackpadGestureType getTrackpadGestureType(MotionEvent event) {
+            if (!isTrackpadMultiFingerSwipe(event)) {
+                return TrackpadGestureType.NONE;
+            }
+            if (isTrackpadThreeFingerSwipe(event)) {
+                return TrackpadGestureType.THREE_FINGER;
+            }
+            if (isTrackpadFourFingerSwipe(event)) {
+                return TrackpadGestureType.FOUR_FINGER;
+            }
+
+            return TrackpadGestureType.MULTI_FINGER;
+        }
+    }
+
+    private TrackpadGestureType mTrackpadGestureType = TrackpadGestureType.NONE;
     private CachedTaskInfo mRunningTask;
     private GestureEndTarget mEndTarget;
-    private RemoteAnimationTargetCompat mLastAppearedTaskTarget;
+    private RemoteAnimationTarget mLastAppearedTaskTarget;
     private Set<Integer> mPreviouslyAppearedTaskIds = new HashSet<>();
     private int mLastStartedTaskId = -1;
     private RecentsAnimationController mRecentsAnimationController;
@@ -152,7 +188,8 @@
         mHomeIntent = componentObserver.getHomeIntent();
         mOverviewIntent = componentObserver.getOverviewIntent();
         mActivityInterface = componentObserver.getActivityInterface();
-        mStateCallback = new MultiStateCallback(STATE_NAMES.toArray(new String[0]));
+        mStateCallback = new MultiStateCallback(
+                STATE_NAMES.toArray(new String[0]), GestureState::getTrackedEventForState);
         mGestureId = gestureId;
     }
 
@@ -174,10 +211,23 @@
         mHomeIntent = new Intent();
         mOverviewIntent = new Intent();
         mActivityInterface = null;
-        mStateCallback = new MultiStateCallback(STATE_NAMES.toArray(new String[0]));
+        mStateCallback = new MultiStateCallback(
+                STATE_NAMES.toArray(new String[0]), GestureState::getTrackedEventForState);
         mGestureId = -1;
     }
 
+    @Nullable
+    private static ActiveGestureErrorDetector.GestureEvent getTrackedEventForState(int stateFlag) {
+        if (stateFlag == STATE_END_TARGET_ANIMATION_FINISHED) {
+            return ActiveGestureErrorDetector.GestureEvent.STATE_END_TARGET_ANIMATION_FINISHED;
+        } else if (stateFlag == STATE_RECENTS_SCROLLING_FINISHED) {
+            return ActiveGestureErrorDetector.GestureEvent.STATE_RECENTS_SCROLLING_FINISHED;
+        } else if (stateFlag == STATE_RECENTS_ANIMATION_CANCELED) {
+            return ActiveGestureErrorDetector.GestureEvent.STATE_RECENTS_ANIMATION_CANCELED;
+        }
+        return null;
+    }
+
     /**
      * @return whether the gesture state has the provided {@param stateMask} flags set.
      */
@@ -229,6 +279,25 @@
     }
 
     /**
+     * Sets if the gesture is is from the trackpad, if so, whether 3-finger, or 4-finger
+     */
+    public void setTrackpadGestureType(TrackpadGestureType trackpadGestureType) {
+        mTrackpadGestureType = trackpadGestureType;
+    }
+
+    public boolean isTrackpadGesture() {
+        return mTrackpadGestureType != TrackpadGestureType.NONE;
+    }
+
+    public boolean isThreeFingerTrackpadGesture() {
+        return mTrackpadGestureType == TrackpadGestureType.THREE_FINGER;
+    }
+
+    public boolean isFourFingerTrackpadGesture() {
+        return mTrackpadGestureType == TrackpadGestureType.FOUR_FINGER;
+    }
+
+    /**
      * @return the running task for this gesture.
      */
     public CachedTaskInfo getRunningTask() {
@@ -252,7 +321,7 @@
     /**
      * Updates the last task that appeared during this gesture.
      */
-    public void updateLastAppearedTaskTarget(RemoteAnimationTargetCompat lastAppearedTaskTarget) {
+    public void updateLastAppearedTaskTarget(RemoteAnimationTarget lastAppearedTaskTarget) {
         mLastAppearedTaskTarget = lastAppearedTaskTarget;
         if (lastAppearedTaskTarget != null) {
             mPreviouslyAppearedTaskIds.add(lastAppearedTaskTarget.taskId);
@@ -310,7 +379,24 @@
     public void setEndTarget(GestureEndTarget target, boolean isAtomic) {
         mEndTarget = target;
         mStateCallback.setState(STATE_END_TARGET_SET);
-        ActiveGestureLog.INSTANCE.addLog("setEndTarget " + mEndTarget);
+        ActiveGestureLog.INSTANCE.addLog(
+                /* event= */ "setEndTarget " + mEndTarget,
+                /* gestureEvent= */ SET_END_TARGET);
+        switch (mEndTarget) {
+            case HOME:
+                ActiveGestureLog.INSTANCE.trackEvent(SET_END_TARGET_HOME);
+                break;
+            case NEW_TASK:
+                ActiveGestureLog.INSTANCE.trackEvent(SET_END_TARGET_NEW_TASK);
+                break;
+            case ALL_APPS:
+                ActiveGestureLog.INSTANCE.trackEvent(SET_END_TARGET_ALL_APPS);
+                break;
+            case LAST_TASK:
+            case RECENTS:
+            default:
+                // No-Op
+        }
         if (isAtomic) {
             mStateCallback.setState(STATE_END_TARGET_ANIMATION_FINISHED);
         }
diff --git a/quickstep/src/com/android/quickstep/ImageActionsApi.java b/quickstep/src/com/android/quickstep/ImageActionsApi.java
index 154848d..2273806 100644
--- a/quickstep/src/com/android/quickstep/ImageActionsApi.java
+++ b/quickstep/src/com/android/quickstep/ImageActionsApi.java
@@ -78,16 +78,17 @@
         addImageAndSendIntent(crop, intent, true, exceptionCallback);
     }
 
-    @UiThread
     private void addImageAndSendIntent(@Nullable Rect crop, Intent intent, boolean setData,
             @Nullable Runnable exceptionCallback) {
-        if (mBitmapSupplier.get() == null) {
-            Log.e(TAG, "No snapshot available, not starting share.");
-            return;
-        }
 
-        UI_HELPER_EXECUTOR.execute(() -> persistBitmapAndStartActivity(mContext,
-                mBitmapSupplier.get(), crop, intent, (uri, intentForUri) -> {
+        UI_HELPER_EXECUTOR.execute(() -> {
+            Bitmap bitmap = mBitmapSupplier.get();
+            if (bitmap == null) {
+                Log.e(TAG, "No snapshot available, not starting share.");
+                return;
+            }
+            persistBitmapAndStartActivity(mContext,
+                    bitmap, crop, intent, (uri, intentForUri) -> {
                     intentForUri.addFlags(FLAG_GRANT_READ_URI_PERMISSION);
                     if (setData) {
                         intentForUri.setData(uri);
@@ -95,7 +96,8 @@
                         intentForUri.putExtra(EXTRA_STREAM, uri);
                     }
                     return new Intent[]{intentForUri};
-                }, TAG, exceptionCallback));
+                }, TAG, exceptionCallback);
+        });
     }
 
     /**
diff --git a/quickstep/src/com/android/quickstep/InputConsumer.java b/quickstep/src/com/android/quickstep/InputConsumer.java
index c455dc7..6b189cf 100644
--- a/quickstep/src/com/android/quickstep/InputConsumer.java
+++ b/quickstep/src/com/android/quickstep/InputConsumer.java
@@ -40,6 +40,8 @@
     int TYPE_SYSUI_OVERLAY = 1 << 10;
     int TYPE_ONE_HANDED = 1 << 11;
     int TYPE_TASKBAR_STASH = 1 << 12;
+    int TYPE_STATUS_BAR = 1 << 13;
+    int TYPE_CURSOR_HOVER = 1 << 14;
 
     String[] NAMES = new String[] {
            "TYPE_NO_OP",                    // 0
@@ -55,6 +57,8 @@
             "TYPE_SYSUI_OVERLAY",           // 10
             "TYPE_ONE_HANDED",              // 11
             "TYPE_TASKBAR_STASH",           // 12
+            "TYPE_STATUS_BAR",              // 13
+            "TYPE_CURSOR_HOVER",            // 14
     };
 
     InputConsumer NO_OP = () -> TYPE_NO_OP;
diff --git a/quickstep/src/com/android/quickstep/KtR.java b/quickstep/src/com/android/quickstep/KtR.java
deleted file mode 100644
index 758c6e0..0000000
--- a/quickstep/src/com/android/quickstep/KtR.java
+++ /dev/null
@@ -1,41 +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.quickstep;
-
-import com.android.launcher3.R;
-
-/**
- * Bridge class to allow using resources in Kotlin.
- * <br/>
- * TODO(b/204069723) Can't use resources directly in Kotlin
- */
-public class KtR {
-    public static final class id {
-        public static int menu_option_layout = R.id.menu_option_layout;
-    }
-
-    public static final class dimen {
-        public static int task_menu_spacing = R.dimen.task_menu_spacing;
-        public static int task_menu_horizontal_padding = R.dimen.task_menu_horizontal_padding;
-        public static int taskbar_ime_size = R.dimen.taskbar_ime_size;
-    }
-
-    public static final class layout {
-        public static int task_menu_with_arrow = R.layout.task_menu_with_arrow;
-        public static int task_view_menu_option = R.layout.task_view_menu_option;
-    }
-}
diff --git a/quickstep/src/com/android/quickstep/LauncherActivityInterface.java b/quickstep/src/com/android/quickstep/LauncherActivityInterface.java
index c13b95f..0e0b022 100644
--- a/quickstep/src/com/android/quickstep/LauncherActivityInterface.java
+++ b/quickstep/src/com/android/quickstep/LauncherActivityInterface.java
@@ -15,44 +15,46 @@
  */
 package com.android.quickstep;
 
+import static com.android.launcher3.LauncherState.ALL_APPS;
 import static com.android.launcher3.LauncherState.BACKGROUND_APP;
 import static com.android.launcher3.LauncherState.NORMAL;
 import static com.android.launcher3.LauncherState.OVERVIEW;
-import static com.android.launcher3.LauncherState.QUICK_SWITCH;
 import static com.android.launcher3.anim.AnimatorListeners.forEndCallback;
 import static com.android.launcher3.anim.Interpolators.LINEAR;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
+import static com.android.launcher3.util.MultiPropertyFactory.MULTI_PROPERTY_VALUE;
 
 import android.animation.Animator;
 import android.animation.AnimatorSet;
 import android.content.Context;
 import android.graphics.Rect;
 import android.view.MotionEvent;
+import android.view.RemoteAnimationTarget;
 
 import androidx.annotation.Nullable;
 import androidx.annotation.UiThread;
 
-import com.android.launcher3.BaseQuickstepLauncher;
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Launcher;
+import com.android.launcher3.LauncherAnimUtils;
 import com.android.launcher3.LauncherInitListener;
 import com.android.launcher3.LauncherState;
 import com.android.launcher3.anim.PendingAnimation;
+import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.statehandlers.DepthController;
-import com.android.launcher3.statehandlers.DepthController.ClampedDepthProperty;
+import com.android.launcher3.statehandlers.DesktopVisibilityController;
 import com.android.launcher3.statemanager.StateManager;
 import com.android.launcher3.taskbar.LauncherTaskbarUIController;
 import com.android.launcher3.touch.PagedOrientationHandler;
+import com.android.launcher3.uioverrides.QuickstepLauncher;
 import com.android.launcher3.util.DisplayController;
-import com.android.launcher3.util.DisplayController.NavigationMode;
+import com.android.launcher3.util.NavigationMode;
 import com.android.quickstep.GestureState.GestureEndTarget;
 import com.android.quickstep.util.ActivityInitListener;
 import com.android.quickstep.util.AnimatorControllerWithResistance;
 import com.android.quickstep.util.LayoutUtils;
 import com.android.quickstep.views.RecentsView;
 import com.android.systemui.plugins.shared.LauncherOverlayManager;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
 
 import java.util.function.Consumer;
 import java.util.function.Predicate;
@@ -61,7 +63,7 @@
  * {@link BaseActivityInterface} for the in-launcher recents.
  */
 public final class LauncherActivityInterface extends
-        BaseActivityInterface<LauncherState, BaseQuickstepLauncher> {
+        BaseActivityInterface<LauncherState, QuickstepLauncher> {
 
     public static final LauncherActivityInterface INSTANCE = new LauncherActivityInterface();
 
@@ -72,7 +74,7 @@
     @Override
     public int getSwipeUpDestinationAndLength(DeviceProfile dp, Context context, Rect outRect,
             PagedOrientationHandler orientationHandler) {
-        calculateTaskSize(context, dp, outRect);
+        calculateTaskSize(context, dp, outRect, orientationHandler);
         if (dp.isVerticalBarLayout()
                 && DisplayController.getNavigationMode(context) != NavigationMode.NO_BUTTON) {
             return dp.isSeascape() ? outRect.left : (dp.widthPx - outRect.right);
@@ -108,34 +110,26 @@
     }
 
     @Override
-    public void onOneHandedModeStateChanged(boolean activated) {
-        Launcher launcher = getCreatedActivity();
-        if (launcher == null) {
-            return;
-        }
-        launcher.onOneHandedStateChanged(activated);
-    }
-
-    @Override
     public AnimationFactory prepareRecentsUI(RecentsAnimationDeviceState deviceState,
             boolean activityVisible, Consumer<AnimatorControllerWithResistance> callback) {
         notifyRecentsOfOrientation(deviceState.getRotationTouchHelper());
         DefaultAnimationFactory factory = new DefaultAnimationFactory(callback) {
             @Override
-            protected void createBackgroundToOverviewAnim(BaseQuickstepLauncher activity,
+            protected void createBackgroundToOverviewAnim(QuickstepLauncher activity,
                     PendingAnimation pa) {
                 super.createBackgroundToOverviewAnim(activity, pa);
 
                 // Animate the blur and wallpaper zoom
                 float fromDepthRatio = BACKGROUND_APP.getDepth(activity);
                 float toDepthRatio = OVERVIEW.getDepth(activity);
-                pa.addFloat(getDepthController(),
-                        new ClampedDepthProperty(fromDepthRatio, toDepthRatio),
+                pa.addFloat(getDepthController().stateDepth,
+                        new LauncherAnimUtils.ClampedProperty<>(
+                                MULTI_PROPERTY_VALUE, fromDepthRatio, toDepthRatio),
                         fromDepthRatio, toDepthRatio, LINEAR);
             }
         };
 
-        BaseQuickstepLauncher launcher = factory.initBackgroundStateUI();
+        QuickstepLauncher launcher = factory.initBackgroundStateUI();
         // Since all apps is not visible, we can safely reset the scroll position.
         // This ensures then the next swipe up to all-apps starts from scroll 0.
         launcher.getAppsView().reset(false /* animate */);
@@ -159,14 +153,14 @@
 
     @Nullable
     @Override
-    public BaseQuickstepLauncher getCreatedActivity() {
-        return BaseQuickstepLauncher.ACTIVITY_TRACKER.getCreatedActivity();
+    public QuickstepLauncher getCreatedActivity() {
+        return QuickstepLauncher.ACTIVITY_TRACKER.getCreatedActivity();
     }
 
     @Nullable
     @Override
     public DepthController getDepthController() {
-        BaseQuickstepLauncher launcher = getCreatedActivity();
+        QuickstepLauncher launcher = getCreatedActivity();
         if (launcher == null) {
             return null;
         }
@@ -175,8 +169,18 @@
 
     @Nullable
     @Override
+    public DesktopVisibilityController getDesktopVisibilityController() {
+        QuickstepLauncher launcher = getCreatedActivity();
+        if (launcher == null) {
+            return null;
+        }
+        return launcher.getDesktopVisibilityController();
+    }
+
+    @Nullable
+    @Override
     public LauncherTaskbarUIController getTaskbarController() {
-        BaseQuickstepLauncher launcher = getCreatedActivity();
+        QuickstepLauncher launcher = getCreatedActivity();
         if (launcher == null) {
             return null;
         }
@@ -203,8 +207,7 @@
     private Launcher getVisibleLauncher() {
         Launcher launcher = getCreatedActivity();
         return (launcher != null) && launcher.isStarted()
-                && ((ENABLE_QUICKSTEP_LIVE_TILE.get() && isInLiveTileMode())
-                || launcher.hasBeenResumed()) ? launcher : null;
+                && (isInLiveTileMode() || launcher.hasBeenResumed()) ? launcher : null;
     }
 
     @Override
@@ -213,7 +216,7 @@
         if (launcher == null) {
             return false;
         }
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get() && isInLiveTileMode()) {
+        if (isInLiveTileMode()) {
             RecentsView recentsView = getVisibleRecentsView();
             if (recentsView == null) {
                 return false;
@@ -253,7 +256,7 @@
     }
 
     @Override
-    public Rect getOverviewWindowBounds(Rect homeBounds, RemoteAnimationTargetCompat target) {
+    public Rect getOverviewWindowBounds(Rect homeBounds, RemoteAnimationTarget target) {
         return homeBounds;
     }
 
@@ -263,6 +266,11 @@
     }
 
     @Override
+    public boolean allowAllAppsFromOverview() {
+        return FeatureFlags.ENABLE_ALL_APPS_FROM_OVERVIEW.get();
+    }
+
+    @Override
     public boolean isInLiveTileMode() {
         Launcher launcher = getCreatedActivity();
         return launcher != null && launcher.getStateManager().getState() == OVERVIEW &&
@@ -291,10 +299,6 @@
         } else {
             om.hideOverlay(150);
         }
-        LauncherTaskbarUIController taskbarController = getTaskbarController();
-        if (taskbarController != null) {
-            taskbarController.hideEdu();
-        }
     }
 
     @Override
@@ -318,7 +322,7 @@
     }
 
     @Override
-    protected int getOverviewScrimColorForState(BaseQuickstepLauncher launcher,
+    protected int getOverviewScrimColorForState(QuickstepLauncher launcher,
             LauncherState state) {
         return state.getWorkspaceScrimColor(launcher);
     }
@@ -349,7 +353,9 @@
                 return OVERVIEW;
             case NEW_TASK:
             case LAST_TASK:
-                return QUICK_SWITCH;
+                return BACKGROUND_APP;
+            case ALL_APPS:
+                return ALL_APPS;
             case HOME:
             default:
                 return NORMAL;
diff --git a/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java b/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java
index fd9f922..c18ad5a 100644
--- a/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java
+++ b/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java
@@ -16,6 +16,9 @@
 
 package com.android.quickstep;
 
+import static android.view.RemoteAnimationTarget.MODE_CLOSING;
+import static android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS;
+
 import static com.android.launcher3.AbstractFloatingView.TYPE_REBIND_SAFE;
 import static com.android.launcher3.BaseActivity.INVISIBLE_ALL;
 import static com.android.launcher3.BaseActivity.INVISIBLE_BY_PENDING_FLAGS;
@@ -30,23 +33,30 @@
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.os.Handler;
+import android.os.RemoteException;
+import android.util.Log;
 import android.util.Pair;
+import android.view.IRemoteAnimationFinishedCallback;
+import android.view.IRemoteAnimationRunner;
 import android.view.RemoteAnimationTarget;
 import android.view.SurfaceControl;
+import android.view.View;
+import android.view.ViewRootImpl;
 import android.view.animation.AnimationUtils;
 import android.view.animation.Interpolator;
 import android.window.BackEvent;
+import android.window.BackMotionEvent;
+import android.window.BackProgressAnimator;
 import android.window.IOnBackInvokedCallback;
 
+import com.android.internal.view.AppearanceRegion;
 import com.android.launcher3.AbstractFloatingView;
-import com.android.launcher3.BaseQuickstepLauncher;
 import com.android.launcher3.QuickstepTransitionManager;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.uioverrides.QuickstepLauncher;
 import com.android.quickstep.util.RectFSpringAnim;
 import com.android.systemui.shared.system.QuickStepContract;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
-import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat;
 
 /**
  * Controls the animation of swiping back and returning to launcher.
@@ -66,7 +76,12 @@
  */
 public class LauncherBackAnimationController {
     private static final int CANCEL_TRANSITION_DURATION = 233;
-    private static final float MIN_WINDOW_SCALE = 0.7f;
+    private static final int SCRIM_FADE_DURATION = 233;
+    private static final float MIN_WINDOW_SCALE = 0.85f;
+    private static final float MAX_SCRIM_ALPHA_DARK = 0.8f;
+    private static final float MAX_SCRIM_ALPHA_LIGHT = 0.2f;
+    private static final float UPDATE_SYSUI_FLAGS_THRESHOLD = 0.20f;
+
     private final QuickstepTransitionManager mQuickstepTransitionManager;
     private final Matrix mTransformMatrix = new Matrix();
     /** The window position at the beginning of the back animation. */
@@ -75,7 +90,7 @@
     private final RectF mCancelRect = new RectF();
     /** The current window position. */
     private final RectF mCurrentRect = new RectF();
-    private final BaseQuickstepLauncher mLauncher;
+    private final QuickstepLauncher mLauncher;
     private final int mWindowScaleMarginX;
     /** Max window translation in the Y axis. */
     private final int mWindowMaxDeltaY;
@@ -84,16 +99,22 @@
     private final Interpolator mCancelInterpolator;
     private final PointF mInitialTouchPos = new PointF();
 
-    private RemoteAnimationTargetCompat mBackTarget;
+    private RemoteAnimationTarget mBackTarget;
     private SurfaceControl.Transaction mTransaction = new SurfaceControl.Transaction();
     private boolean mSpringAnimationInProgress = false;
     private boolean mAnimatorSetInProgress = false;
     private float mBackProgress = 0;
     private boolean mBackInProgress = false;
     private IOnBackInvokedCallback mBackCallback;
+    private IRemoteAnimationFinishedCallback mAnimationFinishedCallback;
+    private BackProgressAnimator mProgressAnimator = new BackProgressAnimator();
+    private SurfaceControl mScrimLayer;
+    private ValueAnimator mScrimAlphaAnimator;
+    private float mScrimAlpha;
+    private boolean mOverridingStatusBarFlags;
 
     public LauncherBackAnimationController(
-            BaseQuickstepLauncher launcher,
+            QuickstepLauncher launcher,
             QuickstepTransitionManager quickstepTransitionManager) {
         mLauncher = launcher;
         mQuickstepTransitionManager = quickstepTransitionManager;
@@ -119,32 +140,62 @@
         mBackCallback = new IOnBackInvokedCallback.Stub() {
             @Override
             public void onBackCancelled() {
-                handler.post(() -> resetPositionAnimated());
+                handler.post(() -> {
+                    mProgressAnimator.onBackCancelled(
+                            LauncherBackAnimationController.this::resetPositionAnimated);
+                });
             }
 
             @Override
             public void onBackInvoked() {
-                handler.post(() -> startTransition());
+                handler.post(() -> {
+                    startTransition();
+                    mProgressAnimator.reset();
+                });
             }
 
             @Override
-            public void onBackProgressed(BackEvent backEvent) {
-                mBackProgress = backEvent.getProgress();
-                // TODO: Update once the interpolation curve spec is finalized.
-                mBackProgress =
-                        1 - (1 - mBackProgress) * (1 - mBackProgress) * (1
-                                - mBackProgress);
-                if (!mBackInProgress) {
+            public void onBackProgressed(BackMotionEvent backEvent) {
+                handler.post(() -> {
+                    mProgressAnimator.onBackProgressed(backEvent);
+                });
+            }
+
+            @Override
+            public void onBackStarted(BackMotionEvent backEvent) {
+                handler.post(() -> {
                     startBack(backEvent);
-                } else {
-                    updateBackProgress(mBackProgress, backEvent);
+                    mProgressAnimator.onBackStarted(backEvent, event -> {
+                        mBackProgress = event.getProgress();
+                        // TODO: Update once the interpolation curve spec is finalized.
+                        mBackProgress =
+                                1 - (1 - mBackProgress) * (1 - mBackProgress) * (1
+                                        - mBackProgress);
+                        updateBackProgress(mBackProgress, event);
+                    });
+                });
+            }
+        };
+
+        final IRemoteAnimationRunner runner = new IRemoteAnimationRunner.Stub() {
+            @Override
+            public void onAnimationStart(int transit, RemoteAnimationTarget[] apps,
+                    RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps,
+                    IRemoteAnimationFinishedCallback finishedCallback) {
+                for (final RemoteAnimationTarget target : apps) {
+                    if (MODE_CLOSING == target.mode) {
+                        mBackTarget = target;
+                        break;
+                    }
                 }
+                mAnimationFinishedCallback = finishedCallback;
             }
 
             @Override
-            public void onBackStarted() { }
+            public void onAnimationCancelled() {}
         };
-        SystemUiProxy.INSTANCE.get(mLauncher).setBackToLauncherCallback(mBackCallback);
+
+        SystemUiProxy.INSTANCE.get(mLauncher).setBackToLauncherCallback(mBackCallback, runner);
     }
 
     private void resetPositionAnimated() {
@@ -159,6 +210,8 @@
         cancelAnimator.addListener(new AnimatorListenerAdapter() {
             @Override
             public void onAnimationEnd(Animator animation) {
+                // Refresh the status bar appearance to the original one.
+                customizeStatusBarAppearance(false);
                 finishAnimation();
             }
         });
@@ -170,10 +223,11 @@
         if (mBackCallback != null) {
             SystemUiProxy.INSTANCE.get(mLauncher).clearBackToLauncherCallback(mBackCallback);
         }
+        mProgressAnimator.reset();
         mBackCallback = null;
     }
 
-    private void startBack(BackEvent backEvent) {
+    private void startBack(BackMotionEvent backEvent) {
         mBackInProgress = true;
         RemoteAnimationTarget appTarget = backEvent.getDepartingAnimationTarget();
 
@@ -181,35 +235,63 @@
             return;
         }
 
-        mTransaction.show(appTarget.leash).apply();
-        mTransaction.setAnimationTransaction();
-        mBackTarget = new RemoteAnimationTargetCompat(appTarget);
+        mTransaction
+                .show(appTarget.leash)
+                .setAnimationTransaction();
+        mBackTarget = appTarget;
         mInitialTouchPos.set(backEvent.getTouchX(), backEvent.getTouchY());
 
         // TODO(b/218916755): Offset start rectangle in multiwindow mode.
-        mStartRect.set(mBackTarget.windowConfiguration.getMaxBounds());
+        mStartRect.set(appTarget.windowConfiguration.getMaxBounds());
+        mCurrentRect.set(mStartRect);
+        addScrimLayer();
+        mTransaction.apply();
+    }
+
+    void addScrimLayer() {
+        ViewRootImpl viewRootImpl = mLauncher.getDragLayer().getViewRootImpl();
+        SurfaceControl parent = viewRootImpl != null
+                ? viewRootImpl.getSurfaceControl()
+                : null;
+        boolean isDarkTheme = Utilities.isDarkTheme(mLauncher);
+        mScrimLayer = new SurfaceControl.Builder()
+                .setName("Back to launcher background scrim")
+                .setCallsite("LauncherBackAnimationController")
+                .setColorLayer()
+                .setParent(parent)
+                .setOpaque(false)
+                .setHidden(false)
+                .build();
+        final float[] colorComponents = new float[] { 0f, 0f, 0f };
+        mScrimAlpha = (isDarkTheme)
+                ? MAX_SCRIM_ALPHA_DARK : MAX_SCRIM_ALPHA_LIGHT;
+        mTransaction
+                .setColor(mScrimLayer, colorComponents)
+                .setAlpha(mScrimLayer, mScrimAlpha)
+                .show(mScrimLayer);
+    }
+
+    void removeScrimLayer() {
+        if (mScrimLayer == null) {
+            return;
+        }
+        if (mScrimLayer.isValid()) {
+            mTransaction.remove(mScrimLayer).apply();
+        }
+        mScrimLayer = null;
     }
 
     private void updateBackProgress(float progress, BackEvent event) {
-        if (mBackTarget == null) {
+        if (!mBackInProgress || mBackTarget == null) {
             return;
         }
         float screenWidth = mStartRect.width();
         float screenHeight = mStartRect.height();
-        float dX = Math.abs(event.getTouchX() - mInitialTouchPos.x);
-        // The 'follow width' is the width of the window if it completely matches
-        // the gesture displacement.
-        float followWidth = screenWidth - dX;
-        // The 'progress width' is the width of the window if it strictly linearly interpolates
-        // to minimum scale base on progress.
-        float progressWidth = Utilities.mapRange(progress, 1, MIN_WINDOW_SCALE) * screenWidth;
-        // The final width is derived from interpolating between the follow with and progress width
-        // using gesture progress.
-        float width = Utilities.mapRange(progress, followWidth, progressWidth);
+        float width = Utilities.mapRange(progress, 1, MIN_WINDOW_SCALE) * screenWidth;
         float height = screenHeight / screenWidth * width;
         float deltaYRatio = (event.getTouchY() - mInitialTouchPos.y) / screenHeight;
         // Base the window movement in the Y axis on the touch movement in the Y axis.
-        float deltaY = (float) Math.sin(deltaYRatio * Math.PI * 0.5f) * mWindowMaxDeltaY;
+        float deltaY = (float) Math.sin(deltaYRatio * Math.PI * 0.5f) * mWindowMaxDeltaY * progress;
         // Move the window along the Y axis.
         float top = (screenHeight - height) * 0.5f + deltaY;
         // Move the window along the X axis.
@@ -221,6 +303,8 @@
         float cornerRadius = Utilities.mapRange(
                 progress, mWindowScaleStartCornerRadius, mWindowScaleEndCornerRadius);
         applyTransform(mCurrentRect, cornerRadius);
+
+        customizeStatusBarAppearance(progress > UPDATE_SYSUI_FLAGS_THRESHOLD);
     }
 
     private void updateCancelProgress(float progress) {
@@ -242,20 +326,17 @@
 
     /** Transform the target window to match the target rect. */
     private void applyTransform(RectF targetRect, float cornerRadius) {
-        SyncRtSurfaceTransactionApplierCompat.SurfaceParams.Builder builder =
-                new SyncRtSurfaceTransactionApplierCompat.SurfaceParams.Builder(mBackTarget.leash);
         final float scale = targetRect.width() / mStartRect.width();
         mTransformMatrix.reset();
         mTransformMatrix.setScale(scale, scale);
         mTransformMatrix.postTranslate(targetRect.left, targetRect.top);
-        builder.withMatrix(mTransformMatrix)
-                .withWindowCrop(mStartRect)
-                .withCornerRadius(cornerRadius);
-        SyncRtSurfaceTransactionApplierCompat.SurfaceParams surfaceParams = builder.build();
 
-        if (surfaceParams.surface.isValid()) {
-            surfaceParams.applyTo(mTransaction);
+        if (mBackTarget.leash.isValid()) {
+            mTransaction.setMatrix(mBackTarget.leash, mTransformMatrix, new float[9]);
+            mTransaction.setWindowCrop(mBackTarget.leash, mStartRect);
+            mTransaction.setCornerRadius(mBackTarget.leash, cornerRadius);
         }
+
         mTransaction.apply();
     }
 
@@ -284,11 +365,12 @@
                 mBackProgress, mWindowScaleStartCornerRadius, mWindowScaleEndCornerRadius);
         Pair<RectFSpringAnim, AnimatorSet> pair =
                 mQuickstepTransitionManager.createWallpaperOpenAnimations(
-                    new RemoteAnimationTargetCompat[]{mBackTarget},
-                    new RemoteAnimationTargetCompat[]{},
+                    new RemoteAnimationTarget[]{mBackTarget},
+                    new RemoteAnimationTarget[0],
                     false /* fromUnlock */,
                     mCurrentRect,
-                    cornerRadius);
+                    cornerRadius,
+                    mBackInProgress /* fromPredictiveBack */);
         startTransitionAnimations(pair.first, pair.second);
         mLauncher.clearForceInvisibleFlag(INVISIBLE_ALL);
     }
@@ -304,7 +386,21 @@
         mInitialTouchPos.set(0, 0);
         mAnimatorSetInProgress = false;
         mSpringAnimationInProgress = false;
-        SystemUiProxy.INSTANCE.get(mLauncher).onBackToLauncherAnimationFinished();
+        // We don't call customizeStatusBarAppearance here to prevent the status bar update with
+        // the legacy appearance. It should be refreshed after the transition done.
+        mOverridingStatusBarFlags = false;
+        if (mAnimationFinishedCallback != null) {
+            try {
+                mAnimationFinishedCallback.onAnimationFinished();
+            } catch (RemoteException e) {
+                Log.w("ShellBackPreview", "Failed call onBackAnimationFinished", e);
+            }
+            mAnimationFinishedCallback = null;
+        }
+        if (mScrimAlphaAnimator != null && mScrimAlphaAnimator.isRunning()) {
+            mScrimAlphaAnimator.cancel();
+            mScrimAlphaAnimator = null;
+        }
     }
 
     private void startTransitionAnimations(RectFSpringAnim springAnim, AnimatorSet anim) {
@@ -328,12 +424,48 @@
                 tryFinishBackAnimation();
             }
         });
+        mScrimAlphaAnimator = new ValueAnimator().ofFloat(1, 0);
+        mScrimAlphaAnimator.addUpdateListener(animation -> {
+            float value = (Float) animation.getAnimatedValue();
+            if (mScrimLayer.isValid()) {
+                mTransaction.setAlpha(mScrimLayer, value * mScrimAlpha);
+                mTransaction.apply();
+            }
+        });
+        mScrimAlphaAnimator.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                resetScrim();
+            }
+        });
+        mScrimAlphaAnimator.setDuration(SCRIM_FADE_DURATION).start();
         anim.start();
     }
 
+    private void resetScrim() {
+        removeScrimLayer();
+        mScrimAlpha = 0;
+    }
+
     private void tryFinishBackAnimation() {
         if (!mSpringAnimationInProgress && !mAnimatorSetInProgress) {
             finishAnimation();
         }
     }
+
+    private void customizeStatusBarAppearance(boolean overridingStatusBarFlags) {
+        if (mOverridingStatusBarFlags == overridingStatusBarFlags) {
+            return;
+        }
+
+        mOverridingStatusBarFlags = overridingStatusBarFlags;
+        final boolean isBackgroundDark =
+                (mLauncher.getWindow().getDecorView().getSystemUiVisibility()
+                        & View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) == 0;
+        final AppearanceRegion region = mOverridingStatusBarFlags
+                ? new AppearanceRegion(!isBackgroundDark ? APPEARANCE_LIGHT_STATUS_BARS : 0,
+                        mBackTarget.windowConfiguration.getBounds())
+                : null;
+        SystemUiProxy.INSTANCE.get(mLauncher).customizeStatusBarAppearance(region);
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java b/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java
index 50d1244..fd5c1a7 100644
--- a/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java
+++ b/quickstep/src/com/android/quickstep/LauncherSwipeHandlerV2.java
@@ -30,26 +30,28 @@
 import android.os.IBinder;
 import android.os.UserHandle;
 import android.util.Size;
+import android.view.RemoteAnimationTarget;
 import android.view.View;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
-import com.android.launcher3.BaseQuickstepLauncher;
 import com.android.launcher3.LauncherState;
 import com.android.launcher3.anim.AnimatorPlaybackController;
+import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.states.StateAnimationConfig;
+import com.android.launcher3.uioverrides.QuickstepLauncher;
 import com.android.launcher3.util.ObjectWrapper;
 import com.android.launcher3.views.FloatingIconView;
 import com.android.launcher3.views.FloatingView;
 import com.android.launcher3.widget.LauncherAppWidgetHostView;
 import com.android.quickstep.util.RectFSpringAnim;
 import com.android.quickstep.util.StaggeredWorkspaceAnim;
+import com.android.quickstep.util.TaskViewSimulator;
 import com.android.quickstep.views.FloatingWidgetView;
 import com.android.quickstep.views.RecentsView;
 import com.android.quickstep.views.TaskView;
 import com.android.systemui.shared.system.InputConsumerController;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
 
 import java.util.ArrayList;
 
@@ -57,7 +59,7 @@
  * Temporary class to allow easier refactoring
  */
 public class LauncherSwipeHandlerV2 extends
-        AbsSwipeUpHandler<BaseQuickstepLauncher, RecentsView, LauncherState> {
+        AbsSwipeUpHandler<QuickstepLauncher, RecentsView, LauncherState> {
 
     public LauncherSwipeHandlerV2(Context context, RecentsAnimationDeviceState deviceState,
             TaskAnimationManager taskAnimationManager, GestureState gestureState, long touchTimeMs,
@@ -70,7 +72,7 @@
     @Override
     protected HomeAnimationFactory createHomeAnimationFactory(ArrayList<IBinder> launchCookies,
             long duration, boolean isTargetTranslucent, boolean appCanEnterPip,
-            RemoteAnimationTargetCompat runningTaskTarget) {
+            RemoteAnimationTarget runningTaskTarget) {
         if (mActivity == null) {
             mStateCallback.addChangeListener(STATE_LAUNCHER_PRESENT | STATE_HANDLER_INVALIDATED,
                     isPresent -> mRecentsView.startHome());
@@ -84,14 +86,15 @@
 
         final View workspaceView = findWorkspaceView(launchCookies,
                 mRecentsView.getRunningTaskView());
-        boolean canUseWorkspaceView = workspaceView != null && workspaceView.isAttachedToWindow();
+        boolean canUseWorkspaceView = workspaceView != null && workspaceView.isAttachedToWindow()
+                && workspaceView.getHeight() > 0;
 
         mActivity.getRootView().setForceHideBackArrow(true);
         if (!TaskAnimationManager.ENABLE_SHELL_TRANSITIONS) {
             mActivity.setHintUserWillBeActive();
         }
 
-        if (!canUseWorkspaceView || appCanEnterPip || mIsSwipeForStagedSplit) {
+        if (!canUseWorkspaceView || appCanEnterPip || mIsSwipeForSplit) {
             return new LauncherHomeAnimationFactory();
         }
         if (workspaceView instanceof LauncherAppWidgetHostView) {
@@ -103,7 +106,10 @@
 
     private HomeAnimationFactory createIconHomeAnimationFactory(View workspaceView) {
         RectF iconLocation = new RectF();
-        FloatingIconView floatingIconView = getFloatingIconView(mActivity, workspaceView,
+        FloatingIconView floatingIconView = getFloatingIconView(mActivity, workspaceView, null,
+                mActivity.getTaskbarUIController() == null
+                        ? null
+                        : mActivity.getTaskbarUIController().findMatchingView(workspaceView),
                 true /* hideOriginal */, iconLocation, false /* isOpening */);
 
         // We want the window alpha to be 0 once this threshold is met, so that the
@@ -118,6 +124,12 @@
                 return workspaceView;
             }
 
+            @Override
+            public boolean isInHotseat() {
+                return workspaceView.getTag() instanceof ItemInfo
+                        && ((ItemInfo) workspaceView.getTag()).isInHotseat();
+            }
+
             @NonNull
             @Override
             public RectF getWindowTargetRect() {
@@ -135,27 +147,30 @@
             @Override
             public void update(RectF currentRect, float progress, float radius) {
                 super.update(currentRect, progress, radius);
-                floatingIconView.update(1f /* alpha */, 255 /* fgAlpha */, currentRect, progress,
-                        windowAlphaThreshold, radius, false);
+                floatingIconView.update(1f /* alpha */, currentRect, progress, windowAlphaThreshold,
+                        radius, false);
             }
         };
     }
 
     private HomeAnimationFactory createWidgetHomeAnimationFactory(
             LauncherAppWidgetHostView hostView, boolean isTargetTranslucent,
-            RemoteAnimationTargetCompat runningTaskTarget) {
+            RemoteAnimationTarget runningTaskTarget) {
         final float floatingWidgetAlpha = isTargetTranslucent ? 0 : 1;
         RectF backgroundLocation = new RectF();
         Rect crop = new Rect();
         // We can assume there is only one remote target here because staged split never animates
         // into the app icon, only into the homescreen
-        mRemoteTargetHandles[0].getTaskViewSimulator().getCurrentCropRect().roundOut(crop);
+        RemoteTargetGluer.RemoteTargetHandle remoteTargetHandle = mRemoteTargetHandles[0];
+        TaskViewSimulator tvs = remoteTargetHandle.getTaskViewSimulator();
+        // This is to set up the inverse matrix in the simulator
+        tvs.apply(remoteTargetHandle.getTransformParams());
+        tvs.getCurrentCropRect().roundOut(crop);
         Size windowSize = new Size(crop.width(), crop.height());
         int fallbackBackgroundColor =
                 FloatingWidgetView.getDefaultBackgroundColor(mContext, runningTaskTarget);
         FloatingWidgetView floatingWidgetView = FloatingWidgetView.getFloatingWidgetView(mActivity,
-                hostView, backgroundLocation, windowSize,
-                mRemoteTargetHandles[0].getTaskViewSimulator().getCurrentCornerRadius(),
+                hostView, backgroundLocation, windowSize, tvs.getCurrentCornerRadius(),
                 isTargetTranslucent, fallbackBackgroundColor);
 
         return new FloatingViewHomeAnimationFactory(floatingWidgetView) {
diff --git a/quickstep/src/com/android/quickstep/MultiStateCallback.java b/quickstep/src/com/android/quickstep/MultiStateCallback.java
index b3875ae..df42efc 100644
--- a/quickstep/src/com/android/quickstep/MultiStateCallback.java
+++ b/quickstep/src/com/android/quickstep/MultiStateCallback.java
@@ -22,7 +22,12 @@
 import android.util.Log;
 import android.util.SparseArray;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.launcher3.config.FeatureFlags;
+import com.android.quickstep.util.ActiveGestureErrorDetector;
+import com.android.quickstep.util.ActiveGestureLog;
 
 import java.util.ArrayList;
 import java.util.LinkedList;
@@ -41,17 +46,29 @@
     private final SparseArray<ArrayList<Consumer<Boolean>>> mStateChangeListeners =
             new SparseArray<>();
 
+    @NonNull private final TrackedEventsMapper mTrackedEventsMapper;
+
     private final String[] mStateNames;
 
     private int mState = 0;
 
     public MultiStateCallback(String[] stateNames) {
+        this(stateNames, stateFlag -> null);
+    }
+
+    public MultiStateCallback(
+            String[] stateNames,
+            @NonNull TrackedEventsMapper trackedEventsMapper) {
         mStateNames = DEBUG_STATES ? stateNames : null;
+        mTrackedEventsMapper = trackedEventsMapper;
     }
 
     /**
      * Adds the provided state flags to the global state on the UI thread and executes any callbacks
      * as a result.
+     *
+     * Also tracks the provided gesture events for error detection. Each provided event must be
+     * associated with one provided state flag.
      */
     public void setStateOnUiThread(int stateFlag) {
         if (Looper.myLooper() == Looper.getMainLooper()) {
@@ -69,7 +86,7 @@
             Log.d(TAG, "[" + System.identityHashCode(this) + "] Adding "
                     + convertToFlagNames(stateFlag) + " to " + convertToFlagNames(mState));
         }
-
+        trackGestureEvents(stateFlag);
         final int oldState = mState;
         mState = mState | stateFlag;
 
@@ -87,6 +104,26 @@
         notifyStateChangeListeners(oldState);
     }
 
+    private void trackGestureEvents(int stateFlags) {
+        for (int index = 0; (stateFlags >> index) != 0; index++) {
+            if ((stateFlags & (1 << index)) == 0) {
+                continue;
+            }
+            ActiveGestureErrorDetector.GestureEvent gestureEvent =
+                    mTrackedEventsMapper.getTrackedEventForState(1 << index);
+            if (gestureEvent == null) {
+                continue;
+            }
+            if (gestureEvent.mLogEvent && gestureEvent.mTrackEvent) {
+                ActiveGestureLog.INSTANCE.addLog(gestureEvent.name(), gestureEvent);
+            } else if (gestureEvent.mLogEvent) {
+                ActiveGestureLog.INSTANCE.addLog(gestureEvent.name());
+            } else if (gestureEvent.mTrackEvent) {
+                ActiveGestureLog.INSTANCE.trackEvent(gestureEvent);
+            }
+        }
+    }
+
     /**
      * Adds the provided state flags to the global state and executes any change handlers
      * as a result.
@@ -174,4 +211,7 @@
         return joiner.toString();
     }
 
+    public interface TrackedEventsMapper {
+        @Nullable ActiveGestureErrorDetector.GestureEvent getTrackedEventForState(int stateflag);
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/OrientationTouchTransformer.java b/quickstep/src/com/android/quickstep/OrientationTouchTransformer.java
index 895cf89..84f6b55 100644
--- a/quickstep/src/com/android/quickstep/OrientationTouchTransformer.java
+++ b/quickstep/src/com/android/quickstep/OrientationTouchTransformer.java
@@ -32,9 +32,10 @@
 import android.view.Surface;
 
 import com.android.launcher3.R;
-import com.android.launcher3.ResourceUtils;
+import com.android.launcher3.testing.shared.ResourceUtils;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.util.DisplayController.Info;
-import com.android.launcher3.util.DisplayController.NavigationMode;
+import com.android.launcher3.util.NavigationMode;
 import com.android.launcher3.util.window.CachedDisplayInfo;
 
 import java.io.PrintWriter;
@@ -119,7 +120,7 @@
     }
 
     void setNavigationMode(NavigationMode newMode, Info info, Resources newRes) {
-        if (DEBUG) {
+        if (enableLog()) {
             Log.d(TAG, "setNavigationMode new: " + newMode + " oldMode: " + mMode + " " + this);
         }
         if (mMode == newMode) {
@@ -206,7 +207,7 @@
      * Ok to call multiple times.
      */
     private void resetSwipeRegions(Info region) {
-        if (DEBUG) {
+        if (enableLog()) {
             Log.d(TAG, "clearing all regions except rotation: " + mCachedDisplayInfo.rotation);
         }
 
@@ -230,9 +231,11 @@
     }
 
     private OrientationRectF createRegionForDisplay(Info display) {
-        if (DEBUG) {
+        if (enableLog()) {
             Log.d(TAG, "creating rotation region for: " + mCachedDisplayInfo.rotation
-            + " with mode: " + mMode + " displayRotation: " + display.rotation);
+            + " with mode: " + mMode + " displayRotation: " + display.rotation +
+                    " displaySize: " + display.currentSize +
+                    " navBarHeight: " + mNavBarGesturalHeight);
         }
 
         Point size = display.currentSize;
@@ -296,9 +299,8 @@
     }
 
     boolean touchInValidSwipeRegions(float x, float y) {
-        if (DEBUG) {
-            Log.d(TAG, "touchInValidSwipeRegions " + x + "," + y + " in "
-                    + mLastRectTouched + " this: " + this);
+        if (enableLog()) {
+            Log.d(TAG, "touchInValidSwipeRegions " + x + "," + y + " in " + mLastRectTouched);
         }
         if (mLastRectTouched != null) {
             return mLastRectTouched.contains(x, y);
@@ -357,11 +359,17 @@
             }
             case ACTION_POINTER_DOWN:
             case ACTION_DOWN: {
+                if (enableLog()) {
+                    Log.d(TAG, "ACTION_DOWN mLastRectTouched: " + mLastRectTouched);
+                }
                 if (mLastRectTouched != null) {
                     return;
                 }
 
                 for (OrientationRectF rect : mSwipeTouchRegions.values()) {
+                    if (enableLog()) {
+                        Log.d(TAG, "ACTION_DOWN rect: " + rect);
+                    }
                     if (rect == null) {
                         continue;
                     }
@@ -376,7 +384,7 @@
                             mQuickStepStartingRotation = mLastRectTouched.getRotation();
                             resetSwipeRegions();
                         }
-                        if (DEBUG) {
+                        if (enableLog()) {
                             Log.d(TAG, "set active region: " + rect);
                         }
                         return;
@@ -387,6 +395,10 @@
         }
     }
 
+    private boolean enableLog() {
+        return DEBUG || TestProtocol.sDebugTracing;
+    }
+
     public void dump(PrintWriter pw) {
         pw.println("OrientationTouchTransformerState: ");
         pw.println("  currentActiveRotation=" + getCurrentActiveRotation());
diff --git a/quickstep/src/com/android/quickstep/OverviewCommandHelper.java b/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
index dffdc5a..07db194 100644
--- a/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
+++ b/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
@@ -24,14 +24,20 @@
 import android.os.Build;
 import android.os.SystemClock;
 import android.os.Trace;
+import android.view.View;
 
 import androidx.annotation.BinderThread;
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.UiThread;
 
+import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.statemanager.StatefulActivity;
+import com.android.launcher3.taskbar.TaskbarUIController;
 import com.android.launcher3.util.RunnableList;
 import com.android.quickstep.RecentsAnimationCallbacks.RecentsAnimationListener;
+import com.android.quickstep.views.DesktopTaskView;
 import com.android.quickstep.views.RecentsView;
 import com.android.quickstep.views.TaskView;
 import com.android.systemui.shared.recents.model.ThumbnailData;
@@ -48,7 +54,7 @@
 public class OverviewCommandHelper {
 
     public static final int TYPE_SHOW = 1;
-    public static final int TYPE_SHOW_NEXT_FOCUS = 2;
+    public static final int TYPE_KEYBOARD_INPUT = 2;
     public static final int TYPE_HIDE = 3;
     public static final int TYPE_TOGGLE = 4;
     public static final int TYPE_HOME = 5;
@@ -66,6 +72,13 @@
     private final TaskAnimationManager mTaskAnimationManager;
     private final ArrayList<CommandInfo> mPendingCommands = new ArrayList<>();
 
+    /**
+     * Index of the TaskView that should be focused when launching Overview. Persisted so that we
+     * do not lose the focus across multiple calls of
+     * {@link OverviewCommandHelper#executeCommand(CommandInfo)} for the same command
+     */
+    private int mTaskFocusIndexOverride = -1;
+
     public OverviewCommandHelper(TouchInteractionService service,
             OverviewComponentObserver observer,
             TaskAnimationManager taskAnimationManager) {
@@ -116,7 +129,7 @@
      */
     @BinderThread
     public void addCommand(int type) {
-        if (mPendingCommands.size() > MAX_QUEUE_SIZE) {
+        if (mPendingCommands.size() >= MAX_QUEUE_SIZE) {
             return;
         }
         CommandInfo cmd = new CommandInfo(type);
@@ -144,7 +157,7 @@
         RunnableList callbackList = null;
         if (taskView != null) {
             taskView.setEndQuickswitchCuj(true);
-            callbackList = taskView.launchTaskAnimated();
+            callbackList = taskView.launchTasks();
         }
 
         if (callbackList != null) {
@@ -165,8 +178,30 @@
                 mOverviewComponentObserver.getActivityInterface();
         RecentsView recents = activityInterface.getVisibleRecentsView();
         if (recents == null) {
+            T activity = activityInterface.getCreatedActivity();
+            DeviceProfile dp = activity == null ? null : activity.getDeviceProfile();
+            TaskbarUIController uiController = activityInterface.getTaskbarController();
+            boolean allowQuickSwitch = FeatureFlags.ENABLE_KEYBOARD_QUICK_SWITCH.get()
+                    && uiController != null
+                    && dp != null
+                    && (dp.isTablet || dp.isTwoPanels);
+
+            if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) {
+                // TODO(b/268075592): add support for quickswitch to/from desktop
+                allowQuickSwitch = false;
+            }
+
             if (cmd.type == TYPE_HIDE) {
-                // already hidden
+                if (!allowQuickSwitch) {
+                    return true;
+                }
+                mTaskFocusIndexOverride = uiController.launchFocusedTask();
+                if (mTaskFocusIndexOverride == -1) {
+                    return true;
+                }
+            }
+            if (cmd.type == TYPE_KEYBOARD_INPUT && allowQuickSwitch) {
+                uiController.openQuickSwitchView();
                 return true;
             }
             if (cmd.type == TYPE_HOME) {
@@ -179,6 +214,7 @@
                     // already visible
                     return true;
                 case TYPE_HIDE: {
+                    mTaskFocusIndexOverride = -1;
                     int currentPage = recents.getNextPage();
                     TaskView tv = (currentPage >= 0 && currentPage < recents.getTaskViewCount())
                             ? (TaskView) recents.getPageAt(currentPage)
@@ -193,7 +229,14 @@
             }
         }
 
-        if (activityInterface.switchToRecentsIfVisible(() -> scheduleNextTask(cmd))) {
+        final Runnable completeCallback = () -> {
+            RecentsView rv = activityInterface.getVisibleRecentsView();
+            if (rv != null && (cmd.type == TYPE_KEYBOARD_INPUT || cmd.type == TYPE_HIDE)) {
+                updateRecentsViewFocus(rv);
+            }
+            scheduleNextTask(cmd);
+        };
+        if (activityInterface.switchToRecentsIfVisible(completeCallback)) {
             // If successfully switched, wait until animation finishes
             return false;
         }
@@ -205,7 +248,8 @@
                     InteractionJankMonitorWrapper.CUJ_QUICK_SWITCH);
         }
 
-        GestureState gestureState = mService.createGestureState(GestureState.DEFAULT_STATE);
+        GestureState gestureState = mService.createGestureState(GestureState.DEFAULT_STATE,
+                GestureState.TrackpadGestureType.NONE);
         gestureState.setHandlingAtomicEvent(true);
         AbsSwipeUpHandler interactionHandler = mService.getSwipeUpHandlerFactory()
                 .newHandler(gestureState, cmd.createTime);
@@ -218,7 +262,7 @@
             public void onRecentsAnimationStart(RecentsAnimationController controller,
                     RecentsAnimationTargets targets) {
                 activityInterface.runOnInitBackgroundStateUI(() ->
-                        interactionHandler.onGestureEnded(0, new PointF(), new PointF()));
+                        interactionHandler.onGestureEnded(0, new PointF()));
                 cmd.removeListener(this);
             }
 
@@ -227,14 +271,21 @@
                 interactionHandler.onGestureCancelled();
                 cmd.removeListener(this);
 
-                RecentsView createdRecents =
-                        activityInterface.getCreatedActivity().getOverviewPanel();
+                T createdActivity = activityInterface.getCreatedActivity();
+                if (createdActivity == null) {
+                    return;
+                }
+                RecentsView createdRecents = createdActivity.getOverviewPanel();
                 if (createdRecents != null) {
                     createdRecents.onRecentsAnimationComplete();
                 }
             }
         };
 
+        RecentsView<?, ?> visibleRecentsView = activityInterface.getVisibleRecentsView();
+        if (visibleRecentsView != null) {
+            visibleRecentsView.moveRunningTaskToFront();
+        }
         if (mTaskAnimationManager.isRecentsAnimationRunning()) {
             cmd.mActiveCallbacks = mTaskAnimationManager.continueRecentsAnimation(gestureState);
             cmd.mActiveCallbacks.addListener(interactionHandler);
@@ -260,33 +311,55 @@
         cmd.removeListener(handler);
         Trace.endAsyncSection(TRANSITION_NAME, 0);
 
-        if (cmd.type == TYPE_SHOW_NEXT_FOCUS) {
-            RecentsView rv =
-                    mOverviewComponentObserver.getActivityInterface().getVisibleRecentsView();
-            if (rv != null) {
-                // Ensure that recents view has focus so that it receives the followup key inputs
-                TaskView taskView = rv.getNextTaskView();
-                if (taskView == null) {
-                    taskView = rv.getTaskViewAt(0);
-                    if (taskView != null) {
-                        taskView.requestFocus();
-                    } else {
-                        rv.requestFocus();
-                    }
-                } else {
-                    taskView.requestFocus();
-                }
-            }
+        RecentsView rv =
+                mOverviewComponentObserver.getActivityInterface().getVisibleRecentsView();
+        if (rv != null && (cmd.type == TYPE_KEYBOARD_INPUT || cmd.type == TYPE_HIDE)) {
+            updateRecentsViewFocus(rv);
         }
         scheduleNextTask(cmd);
     }
 
+    private void updateRecentsViewFocus(@NonNull RecentsView rv) {
+        // When the overview is launched via alt tab (cmd type is TYPE_KEYBOARD_INPUT),
+        // the touch mode somehow is not change to false by the Android framework.
+        // The subsequent tab to go through tasks in overview can only be dispatched to
+        // focuses views, while focus can only be requested in
+        // {@link View#requestFocusNoSearch(int, Rect)} when touch mode is false. To note,
+        // here we launch overview with live tile.
+        rv.getViewRootImpl().touchModeChanged(false);
+        // Ensure that recents view has focus so that it receives the followup key inputs
+        TaskView taskView = rv.getTaskViewAt(mTaskFocusIndexOverride);
+        if (taskView != null) {
+            requestFocus(taskView);
+            return;
+        }
+        taskView = rv.getNextTaskView();
+        if (taskView != null) {
+            requestFocus(taskView);
+            return;
+        }
+        taskView = rv.getTaskViewAt(0);
+        if (taskView != null) {
+            requestFocus(taskView);
+            return;
+        }
+        requestFocus(rv);
+    }
+
+    private void requestFocus(@NonNull View view) {
+        view.post(() -> {
+            view.requestFocus();
+            view.requestAccessibilityFocus();
+        });
+    }
+
     public void dump(PrintWriter pw) {
         pw.println("OverviewCommandHelper:");
         pw.println("  mPendingCommands=" + mPendingCommands.size());
         if (!mPendingCommands.isEmpty()) {
             pw.println("    pendingCommandType=" + mPendingCommands.get(0).type);
         }
+        pw.println("  mTaskFocusIndexOverride=" + mTaskFocusIndexOverride);
     }
 
     private static class CommandInfo {
diff --git a/quickstep/src/com/android/quickstep/OverviewComponentObserver.java b/quickstep/src/com/android/quickstep/OverviewComponentObserver.java
index 0efe666..a8f3c3a 100644
--- a/quickstep/src/com/android/quickstep/OverviewComponentObserver.java
+++ b/quickstep/src/com/android/quickstep/OverviewComponentObserver.java
@@ -20,21 +20,24 @@
 import static android.content.Intent.ACTION_PACKAGE_CHANGED;
 import static android.content.Intent.ACTION_PACKAGE_REMOVED;
 
-import static com.android.launcher3.Utilities.createHomeIntent;
 import static com.android.launcher3.config.FeatureFlags.SEPARATE_RECENTS_ACTIVITY;
-import static com.android.launcher3.util.PackageManagerHelper.getPackageFilter;
 import static com.android.systemui.shared.system.PackageManagerWrapper.ACTION_PREFERRED_ACTIVITY_CHANGED;
 
-import android.content.BroadcastReceiver;
+import android.content.ActivityNotFoundException;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
-import android.content.IntentFilter;
 import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
+import android.os.Bundle;
+import android.util.Log;
 import android.util.SparseIntArray;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.launcher3.R;
 import com.android.launcher3.tracing.OverviewComponentObserverProto;
 import com.android.launcher3.tracing.TouchInteractionServiceProto;
 import com.android.launcher3.util.SimpleBroadcastReceiver;
@@ -50,9 +53,11 @@
  * and provide callers the relevant classes.
  */
 public final class OverviewComponentObserver {
-    private final BroadcastReceiver mUserPreferenceChangeReceiver =
+    private static final String TAG = "OverviewComponentObserver";
+
+    private final SimpleBroadcastReceiver mUserPreferenceChangeReceiver =
             new SimpleBroadcastReceiver(this::updateOverviewTargets);
-    private final BroadcastReceiver mOtherHomeAppUpdateReceiver =
+    private final SimpleBroadcastReceiver mOtherHomeAppUpdateReceiver =
             new SimpleBroadcastReceiver(this::updateOverviewTargets);
 
     private final Context mContext;
@@ -61,6 +66,7 @@
     private final Intent mMyHomeIntent;
     private final Intent mFallbackIntent;
     private final SparseIntArray mConfigChangesMap = new SparseIntArray();
+    private final String mSetupWizardPkg;
 
     private Consumer<Boolean> mOverviewChangeListener = b -> { };
 
@@ -82,6 +88,7 @@
                 new ComponentName(context.getPackageName(), info.activityInfo.name);
         mMyHomeIntent.setComponent(myHomeComponent);
         mConfigChangesMap.append(myHomeComponent.hashCode(), info.activityInfo.configChanges);
+        mSetupWizardPkg = context.getString(R.string.setup_wizard_pkg);
 
         ComponentName fallbackComponent = new ComponentName(mContext, RecentsActivity.class);
         mFallbackIntent = new Intent(Intent.ACTION_MAIN)
@@ -95,8 +102,7 @@
             mConfigChangesMap.append(fallbackComponent.hashCode(), fallbackInfo.configChanges);
         } catch (PackageManager.NameNotFoundException ignored) { /* Impossible */ }
 
-        mContext.registerReceiver(mUserPreferenceChangeReceiver,
-                new IntentFilter(ACTION_PREFERRED_ACTIVITY_CHANGED));
+        mUserPreferenceChangeReceiver.register(mContext, ACTION_PREFERRED_ACTIVITY_CHANGED);
         updateOverviewTargets();
     }
 
@@ -111,11 +117,6 @@
         if (mDeviceState.isHomeDisabled() != mIsHomeDisabled) {
             updateOverviewTargets();
         }
-
-        // Notify ALL_APPS touch controller when one handed mode state activated or deactivated
-        if (mDeviceState.isOneHandedModeEnabled()) {
-            mActivityInterface.onOneHandedModeStateChanged(mDeviceState.isOneHandedModeActive());
-        }
     }
 
     private void updateOverviewTargets(Intent unused) {
@@ -129,6 +130,12 @@
     private void updateOverviewTargets() {
         ComponentName defaultHome = PackageManagerWrapper.getInstance()
                 .getHomeActivities(new ArrayList<>());
+        if (defaultHome != null && defaultHome.getPackageName().equals(mSetupWizardPkg)) {
+            // Treat setup wizard as null default home, because there is a period between setup and
+            // launcher being default home where it is briefly null. Otherwise, it would appear as
+            // if overview targets are changing twice, giving the listener an incorrect signal.
+            defaultHome = null;
+        }
 
         mIsHomeDisabled = mDeviceState.isHomeDisabled();
         mIsDefaultHome = Objects.equals(mMyHomeIntent.getComponent(), defaultHome);
@@ -147,7 +154,12 @@
             }
         }
 
-        if (!mDeviceState.isHomeDisabled() && (defaultHome == null || mIsDefaultHome)) {
+        // TODO(b/258022658): Remove temporary logging.
+        Log.i(TAG, "updateOverviewTargets: mIsHomeDisabled=" + mIsHomeDisabled
+                + ", isDefaultHomeNull=" + (defaultHome == null)
+                + ", mIsDefaultHome=" + mIsDefaultHome);
+
+        if (!mIsHomeDisabled && (defaultHome == null || mIsDefaultHome)) {
             // User default home is same as out home app. Use Overview integrated in Launcher.
             mActivityInterface = LauncherActivityInterface.INSTANCE;
             mIsHomeAndOverviewSame = true;
@@ -174,9 +186,8 @@
                 unregisterOtherHomeAppUpdateReceiver();
 
                 mUpdateRegisteredPackage = defaultHome.getPackageName();
-                mContext.registerReceiver(mOtherHomeAppUpdateReceiver, getPackageFilter(
-                        mUpdateRegisteredPackage, ACTION_PACKAGE_ADDED, ACTION_PACKAGE_CHANGED,
-                        ACTION_PACKAGE_REMOVED));
+                mOtherHomeAppUpdateReceiver.registerPkgActions(mContext, mUpdateRegisteredPackage,
+                        ACTION_PACKAGE_ADDED, ACTION_PACKAGE_CHANGED, ACTION_PACKAGE_REMOVED);
             }
         }
         mOverviewChangeListener.accept(mIsHomeAndOverviewSame);
@@ -276,4 +287,34 @@
         overviewComponentObserver.setOverviewActivityResumed(mActivityInterface.isResumed());
         serviceProto.setOverviewComponentObvserver(overviewComponentObserver);
     }
+
+    /**
+     * Starts the intent for the current home activity.
+     */
+    public static void startHomeIntentSafely(@NonNull Context context, @Nullable Bundle options) {
+        RecentsAnimationDeviceState deviceState = new RecentsAnimationDeviceState(context);
+        OverviewComponentObserver observer = new OverviewComponentObserver(context, deviceState);
+        Intent intent = observer.getHomeIntent();
+        observer.onDestroy();
+        deviceState.destroy();
+        startHomeIntentSafely(context, intent, options);
+    }
+
+    /**
+     * Starts the intent for the current home activity.
+     */
+    public static void startHomeIntentSafely(
+            @NonNull Context context, @NonNull Intent homeIntent, @Nullable Bundle options) {
+        try {
+            context.startActivity(homeIntent, options);
+        } catch (NullPointerException | ActivityNotFoundException | SecurityException e) {
+            context.startActivity(createHomeIntent(), options);
+        }
+    }
+
+    private static Intent createHomeIntent() {
+        return new Intent(Intent.ACTION_MAIN)
+                .addCategory(Intent.CATEGORY_HOME)
+                .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/QuickstepProcessInitializer.java b/quickstep/src/com/android/quickstep/QuickstepProcessInitializer.java
index 5521020..5f589bf 100644
--- a/quickstep/src/com/android/quickstep/QuickstepProcessInitializer.java
+++ b/quickstep/src/com/android/quickstep/QuickstepProcessInitializer.java
@@ -16,11 +16,9 @@
 package com.android.quickstep;
 
 import android.annotation.TargetApi;
-import android.app.ActivityManager;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.os.Build;
-import android.os.RemoteException;
 import android.os.UserManager;
 import android.util.Log;
 import android.view.ThreadedRenderer;
@@ -62,12 +60,5 @@
         // Elevate GPU priority for Quickstep and Remote animations.
         ThreadedRenderer.setContextPriority(
                 ThreadedRenderer.EGL_CONTEXT_PRIORITY_HIGH_IMG);
-
-        // Enable binder tracing on system server for calls originating from Launcher
-        try {
-            ActivityManager.getService().enableBinderTracing();
-        } catch (RemoteException e) {
-            Log.e(TAG, "Unable to enable binder tracing", e);
-        }
     }
 }
diff --git a/quickstep/src/com/android/quickstep/QuickstepTestInformationHandler.java b/quickstep/src/com/android/quickstep/QuickstepTestInformationHandler.java
index 528fb97..4c9cf8b 100644
--- a/quickstep/src/com/android/quickstep/QuickstepTestInformationHandler.java
+++ b/quickstep/src/com/android/quickstep/QuickstepTestInformationHandler.java
@@ -1,16 +1,28 @@
 package com.android.quickstep;
 
+import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
+
 import android.app.Activity;
 import android.content.Context;
+import android.content.res.Resources;
 import android.graphics.Rect;
 import android.os.Bundle;
 
 import androidx.annotation.Nullable;
 
+import com.android.launcher3.R;
+import com.android.launcher3.taskbar.TaskbarActivityContext;
 import com.android.launcher3.testing.TestInformationHandler;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.touch.PagedOrientationHandler;
+import com.android.launcher3.util.DisplayController;
 import com.android.quickstep.util.LayoutUtils;
+import com.android.quickstep.util.TISBindHelper;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutionException;
+import java.util.function.Consumer;
+import java.util.function.Function;
 
 public class QuickstepTestInformationHandler extends TestInformationHandler {
 
@@ -45,7 +57,7 @@
                 }
                 Rect focusedTaskRect = new Rect();
                 LauncherActivityInterface.INSTANCE.calculateTaskSize(mContext, mDeviceProfile,
-                        focusedTaskRect);
+                        focusedTaskRect, PagedOrientationHandler.PORTRAIT);
                 response.putInt(TestProtocol.TEST_INFO_RESPONSE_FIELD, focusedTaskRect.height());
                 return response;
             }
@@ -72,6 +84,86 @@
                         TestProtocol.REQUEST_HAS_TIS, true);
                 return response;
             }
+
+            case TestProtocol.REQUEST_ENABLE_MANUAL_TASKBAR_STASHING:
+                runOnTISBinder(tisBinder -> {
+                    enableManualTaskbarStashing(tisBinder, true);
+                });
+                return response;
+
+            case TestProtocol.REQUEST_DISABLE_MANUAL_TASKBAR_STASHING:
+                runOnTISBinder(tisBinder -> {
+                    enableManualTaskbarStashing(tisBinder, false);
+                });
+                return response;
+
+            case TestProtocol.REQUEST_UNSTASH_TASKBAR_IF_STASHED:
+                runOnTISBinder(tisBinder -> {
+                    enableManualTaskbarStashing(tisBinder, true);
+
+                    // Allow null-pointer to catch illegal states.
+                    tisBinder.getTaskbarManager().getCurrentActivityContext()
+                            .unstashTaskbarIfStashed();
+
+                    enableManualTaskbarStashing(tisBinder, false);
+                });
+                return response;
+
+            case TestProtocol.REQUEST_STASHED_TASKBAR_HEIGHT: {
+                final Resources resources = mContext.getResources();
+                response.putInt(TestProtocol.TEST_INFO_RESPONSE_FIELD,
+                        resources.getDimensionPixelSize(R.dimen.taskbar_stashed_size));
+                return response;
+            }
+
+            case TestProtocol.REQUEST_STASHED_TASKBAR_SCALE: {
+                runOnTISBinder(tisBinder -> {
+                    response.putFloat(TestProtocol.TEST_INFO_RESPONSE_FIELD,
+                            tisBinder.getTaskbarManager()
+                                    .getCurrentActivityContext()
+                                    .getStashedTaskbarScale());
+                });
+                return response;
+            }
+
+            case TestProtocol.REQUEST_TASKBAR_ALL_APPS_TOP_PADDING: {
+                return getTISBinderUIProperty(Bundle::putInt, tisBinder ->
+                        tisBinder.getTaskbarManager()
+                                .getCurrentActivityContext()
+                                .getTaskbarAllAppsTopPadding());
+            }
+
+            case TestProtocol.REQUEST_TASKBAR_APPS_LIST_SCROLL_Y: {
+                return getTISBinderUIProperty(Bundle::putInt, tisBinder ->
+                        tisBinder.getTaskbarManager()
+                                .getCurrentActivityContext()
+                                .getTaskbarAllAppsScroll());
+            }
+
+            case TestProtocol.REQUEST_ENABLE_BLOCK_TIMEOUT:
+                runOnTISBinder(tisBinder -> {
+                    enableBlockingTimeout(tisBinder, true);
+                });
+                return response;
+
+            case TestProtocol.REQUEST_DISABLE_BLOCK_TIMEOUT:
+                runOnTISBinder(tisBinder -> {
+                    enableBlockingTimeout(tisBinder, false);
+                });
+                return response;
+
+            case TestProtocol.REQUEST_ENABLE_TRANSIENT_TASKBAR:
+                enableTransientTaskbar(true);
+                return response;
+
+            case TestProtocol.REQUEST_DISABLE_TRANSIENT_TASKBAR:
+                enableTransientTaskbar(false);
+                return response;
+
+            case TestProtocol.REQUEST_SHELL_DRAG_READY:
+                response.putBoolean(TestProtocol.TEST_INFO_RESPONSE_FIELD,
+                        SystemUiProxy.INSTANCE.get(mContext).isDragAndDropReady());
+                return response;
         }
 
         return super.call(method, arg, extras);
@@ -93,4 +185,55 @@
     protected boolean isLauncherInitialized() {
         return super.isLauncherInitialized() && TouchInteractionService.isInitialized();
     }
+
+    private void enableManualTaskbarStashing(
+            TouchInteractionService.TISBinder tisBinder, boolean enable) {
+        // Allow null-pointer to catch illegal states.
+        tisBinder.getTaskbarManager().getCurrentActivityContext().enableManualStashingDuringTests(
+                enable);
+    }
+
+    private void enableBlockingTimeout(
+            TouchInteractionService.TISBinder tisBinder, boolean enable) {
+        TaskbarActivityContext context = tisBinder.getTaskbarManager().getCurrentActivityContext();
+        if (context == null) {
+            return;
+        }
+        context.enableBlockingTimeoutDuringTests(enable);
+    }
+
+    private void enableTransientTaskbar(boolean enable) {
+        DisplayController.INSTANCE.get(mContext).enableTransientTaskbarForTests(enable);
+    }
+
+    /**
+     * Runs the given command on the UI thread, after ensuring we are connected to
+     * TouchInteractionService.
+     */
+    protected void runOnTISBinder(Consumer<TouchInteractionService.TISBinder> connectionCallback) {
+        try {
+            CountDownLatch countDownLatch = new CountDownLatch(1);
+            TISBindHelper helper = MAIN_EXECUTOR.submit(() ->
+                    new TISBindHelper(mContext, tisBinder -> {
+                        connectionCallback.accept(tisBinder);
+                        countDownLatch.countDown();
+                    })).get();
+            countDownLatch.await();
+            MAIN_EXECUTOR.execute(helper::onDestroy);
+        } catch (ExecutionException | InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private <T> Bundle getTISBinderUIProperty(
+            BundleSetter<T> bundleSetter, Function<TouchInteractionService.TISBinder, T> provider) {
+        Bundle response = new Bundle();
+
+        runOnTISBinder(tisBinder -> bundleSetter.set(
+                response,
+                TestProtocol.TEST_INFO_RESPONSE_FIELD,
+                provider.apply(tisBinder)));
+
+        return response;
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/RecentTasksList.java b/quickstep/src/com/android/quickstep/RecentTasksList.java
index 097850f..38ac5bb 100644
--- a/quickstep/src/com/android/quickstep/RecentTasksList.java
+++ b/quickstep/src/com/android/quickstep/RecentTasksList.java
@@ -17,9 +17,14 @@
 package com.android.quickstep;
 
 import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
+import static com.android.quickstep.views.DesktopTaskView.DESKTOP_IS_PROTO2_ENABLED;
+import static com.android.wm.shell.util.GroupedRecentTaskInfo.TYPE_FREEFORM;
 
 import android.annotation.TargetApi;
 import android.app.ActivityManager;
+import android.app.KeyguardManager;
+import android.app.TaskInfo;
+import android.content.ComponentName;
 import android.os.Build;
 import android.os.Process;
 import android.os.RemoteException;
@@ -27,19 +32,21 @@
 
 import androidx.annotation.VisibleForTesting;
 
-import com.android.quickstep.util.GroupTask;
 import com.android.launcher3.util.LooperExecutor;
 import com.android.launcher3.util.SplitConfigurationOptions;
+import com.android.quickstep.util.DesktopTask;
+import com.android.quickstep.util.GroupTask;
 import com.android.systemui.shared.recents.model.Task;
-import com.android.systemui.shared.system.KeyguardManagerCompat;
 import com.android.wm.shell.recents.IRecentTasksListener;
 import com.android.wm.shell.util.GroupedRecentTaskInfo;
-import com.android.wm.shell.util.StagedSplitBounds;
+import com.android.wm.shell.util.SplitBounds;
 
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.function.Consumer;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
 
 /**
  * Manages the recent task list from the system, caching it as necessary.
@@ -49,7 +56,7 @@
 
     private static final TaskLoadResult INVALID_RESULT = new TaskLoadResult(-1, false, 0);
 
-    private final KeyguardManagerCompat mKeyguardManager;
+    private final KeyguardManager mKeyguardManager;
     private final LooperExecutor mMainThreadExecutor;
     private final SystemUiProxy mSysUiProxy;
 
@@ -62,8 +69,12 @@
     private TaskLoadResult mResultsBg = INVALID_RESULT;
     private TaskLoadResult mResultsUi = INVALID_RESULT;
 
-    public RecentTasksList(LooperExecutor mainThreadExecutor,
-            KeyguardManagerCompat keyguardManager, SystemUiProxy sysUiProxy) {
+    private RecentsModel.RunningTasksListener mRunningTasksListener;
+    // Tasks are stored in order of least recently launched to most recently launched.
+    private ArrayList<ActivityManager.RunningTaskInfo> mRunningTasks;
+
+    public RecentTasksList(LooperExecutor mainThreadExecutor, KeyguardManager keyguardManager,
+            SystemUiProxy sysUiProxy) {
         mMainThreadExecutor = mainThreadExecutor;
         mKeyguardManager = keyguardManager;
         mChangeId = 1;
@@ -73,7 +84,26 @@
             public void onRecentTasksChanged() throws RemoteException {
                 mMainThreadExecutor.execute(RecentTasksList.this::onRecentTasksChanged);
             }
+
+            @Override
+            public void onRunningTaskAppeared(ActivityManager.RunningTaskInfo taskInfo) {
+                mMainThreadExecutor.execute(() -> {
+                    RecentTasksList.this.onRunningTaskAppeared(taskInfo);
+                });
+            }
+
+            @Override
+            public void onRunningTaskVanished(ActivityManager.RunningTaskInfo taskInfo) {
+                mMainThreadExecutor.execute(() -> {
+                    RecentTasksList.this.onRunningTaskVanished(taskInfo);
+                });
+            }
         });
+        // We may receive onRunningTaskAppeared events later for tasks which have already been
+        // included in the list returned by mSysUiProxy.getRunningTasks(), or may receive
+        // onRunningTaskVanished for tasks not included in the returned list. These cases will be
+        // addressed when the tasks are added to/removed from mRunningTasks.
+        initRunningTasks(mSysUiProxy.getRunningTasks(Integer.MAX_VALUE));
     }
 
     @VisibleForTesting
@@ -101,14 +131,18 @@
      * @return The change id of the current task list
      */
     public synchronized int getTasks(boolean loadKeysOnly,
-            Consumer<ArrayList<GroupTask>> callback) {
+            Consumer<ArrayList<GroupTask>> callback, Predicate<GroupTask> filter) {
         final int requestLoadId = mChangeId;
         if (mResultsUi.isValidForRequest(requestLoadId, loadKeysOnly)) {
             // The list is up to date, send the callback on the next frame,
             // so that requestID can be returned first.
             if (callback != null) {
                 // Copy synchronously as the changeId might change by next frame
-                ArrayList<GroupTask> result = copyOf(mResultsUi);
+                // and filter GroupTasks
+                ArrayList<GroupTask> result = mResultsUi.stream().filter(filter)
+                        .map(GroupTask::copy)
+                        .collect(Collectors.toCollection(ArrayList<GroupTask>::new));
+
                 mMainThreadExecutor.post(() -> {
                     callback.accept(result);
                 });
@@ -128,7 +162,11 @@
                 mLoadingTasksInBackground = false;
                 mResultsUi = loadResult;
                 if (callback != null) {
-                    ArrayList<GroupTask> result = copyOf(mResultsUi);
+                    // filter the tasks if needed before passing them into the callback
+                    ArrayList<GroupTask> result = mResultsUi.stream().filter(filter)
+                            .map(GroupTask::copy)
+                            .collect(Collectors.toCollection(ArrayList<GroupTask>::new));
+
                     callback.accept(result);
                 }
             });
@@ -154,6 +192,59 @@
         mChangeId++;
     }
 
+     /**
+     * Registers a listener for running tasks
+     */
+    public void registerRunningTasksListener(RecentsModel.RunningTasksListener listener) {
+        mRunningTasksListener = listener;
+    }
+
+    /**
+     * Removes the previously registered running tasks listener
+     */
+    public void unregisterRunningTasksListener() {
+        mRunningTasksListener = null;
+    }
+
+    private void initRunningTasks(ArrayList<ActivityManager.RunningTaskInfo> runningTasks) {
+        // Tasks are retrieved in order of most recently launched/used to least recently launched.
+        mRunningTasks = new ArrayList<>(runningTasks);
+        Collections.reverse(mRunningTasks);
+    }
+
+    /**
+     * Gets the set of running tasks.
+     */
+    public ArrayList<ActivityManager.RunningTaskInfo> getRunningTasks() {
+        return mRunningTasks;
+    }
+
+    private void onRunningTaskAppeared(ActivityManager.RunningTaskInfo taskInfo) {
+        // Make sure this task is not already in the list
+        for (ActivityManager.RunningTaskInfo existingTask : mRunningTasks) {
+            if (taskInfo.taskId == existingTask.taskId) {
+                return;
+            }
+        }
+        mRunningTasks.add(taskInfo);
+        if (mRunningTasksListener != null) {
+            mRunningTasksListener.onRunningTasksChanged();
+        }
+    }
+
+    private void onRunningTaskVanished(ActivityManager.RunningTaskInfo taskInfo) {
+        // Find the task from the list of running tasks, if it exists
+        for (ActivityManager.RunningTaskInfo existingTask : mRunningTasks) {
+            if (existingTask.taskId != taskInfo.taskId) continue;
+
+            mRunningTasks.remove(existingTask);
+            if (mRunningTasksListener != null) {
+                mRunningTasksListener.onRunningTasksChanged();
+            }
+            return;
+        }
+    }
+
     /**
      * Loads and creates a list of all the recent tasks.
      */
@@ -177,9 +268,15 @@
         };
 
         TaskLoadResult allTasks = new TaskLoadResult(requestId, loadKeysOnly, rawTasks.size());
+
         for (GroupedRecentTaskInfo rawTask : rawTasks) {
-            ActivityManager.RecentTaskInfo taskInfo1 = rawTask.mTaskInfo1;
-            ActivityManager.RecentTaskInfo taskInfo2 = rawTask.mTaskInfo2;
+            if (DESKTOP_IS_PROTO2_ENABLED && rawTask.getType() == TYPE_FREEFORM) {
+                GroupTask desktopTask = createDesktopTask(rawTask);
+                allTasks.add(desktopTask);
+                continue;
+            }
+            ActivityManager.RecentTaskInfo taskInfo1 = rawTask.getTaskInfo1();
+            ActivityManager.RecentTaskInfo taskInfo2 = rawTask.getTaskInfo2();
             Task.TaskKey task1Key = new Task.TaskKey(taskInfo1);
             Task task1 = loadKeysOnly
                     ? new Task(task1Key)
@@ -195,19 +292,33 @@
                                 tmpLockedUsers.get(task2Key.userId) /* isLocked */);
                 task2.setLastSnapshotData(taskInfo2);
             }
-            final SplitConfigurationOptions.StagedSplitBounds launcherSplitBounds =
-                    convertSplitBounds(rawTask.mStagedSplitBounds);
+            final SplitConfigurationOptions.SplitBounds launcherSplitBounds =
+                    convertSplitBounds(rawTask.getSplitBounds());
             allTasks.add(new GroupTask(task1, task2, launcherSplitBounds));
         }
 
         return allTasks;
     }
 
-    private SplitConfigurationOptions.StagedSplitBounds convertSplitBounds(
-            StagedSplitBounds shellSplitBounds) {
+    private DesktopTask createDesktopTask(GroupedRecentTaskInfo recentTaskInfo) {
+        ArrayList<Task> tasks = new ArrayList<>(recentTaskInfo.getTaskInfoList().size());
+        for (ActivityManager.RecentTaskInfo taskInfo : recentTaskInfo.getTaskInfoList()) {
+            Task.TaskKey key = new Task.TaskKey(taskInfo);
+            Task task = Task.from(key, taskInfo, false);
+            task.setLastSnapshotData(taskInfo);
+            task.positionInParent = taskInfo.positionInParent;
+            task.appBounds = taskInfo.configuration.windowConfiguration.getAppBounds();
+            // TODO(b/244348395): tasks should be sorted from oldest to most recently used
+            tasks.add(task);
+        }
+        return new DesktopTask(tasks);
+    }
+
+    private SplitConfigurationOptions.SplitBounds convertSplitBounds(
+            SplitBounds shellSplitBounds) {
         return shellSplitBounds == null ?
                 null :
-                new SplitConfigurationOptions.StagedSplitBounds(
+                new SplitConfigurationOptions.SplitBounds(
                         shellSplitBounds.leftTopBounds, shellSplitBounds.rightBottomBounds,
                         shellSplitBounds.leftTopTaskId, shellSplitBounds.rightBottomTaskId);
     }
@@ -215,7 +326,7 @@
     private ArrayList<GroupTask> copyOf(ArrayList<GroupTask> tasks) {
         ArrayList<GroupTask> newTasks = new ArrayList<>();
         for (int i = 0; i < tasks.size(); i++) {
-            newTasks.add(new GroupTask(tasks.get(i)));
+            newTasks.add(tasks.get(i).copy());
         }
         return newTasks;
     }
@@ -225,8 +336,14 @@
         writer.println(prefix + "  mChangeId=" + mChangeId);
         writer.println(prefix + "  mResultsUi=[id=" + mResultsUi.mRequestId + ", tasks=");
         for (GroupTask task : mResultsUi) {
-            writer.println(prefix + "    t1=" + task.task1.key.id
-                    + " t2=" + (task.hasMultipleTasks() ? task.task2.key.id : "-1"));
+            Task task1 = task.task1;
+            Task task2 = task.task2;
+            ComponentName cn1 = task1.getTopComponent();
+            ComponentName cn2 = task2 != null ? task2.getTopComponent() : null;
+            writer.println(prefix + "    t1: (id=" + task1.key.id
+                    + "; package=" + (cn1 != null ? cn1.getPackageName() + ")" : "no package)")
+                    + " t2: (id=" + (task2 != null ? task2.key.id : "-1")
+                    + "; package=" + (cn2 != null ? cn2.getPackageName() + ")" : "no package)"));
         }
         writer.println(prefix + "  ]");
         int currentUserId = Process.myUserHandle().getIdentifier();
@@ -234,8 +351,14 @@
                 mSysUiProxy.getRecentTasks(Integer.MAX_VALUE, currentUserId);
         writer.println(prefix + "  rawTasks=[");
         for (GroupedRecentTaskInfo task : rawTasks) {
-            writer.println(prefix + "    t1=" + task.mTaskInfo1.taskId
-                    + " t2=" + (task.mTaskInfo2 != null ? task.mTaskInfo2.taskId : "-1"));
+            TaskInfo taskInfo1 = task.getTaskInfo1();
+            TaskInfo taskInfo2 = task.getTaskInfo2();
+            ComponentName cn1 = taskInfo1.topActivity;
+            ComponentName cn2 = taskInfo2 != null ? taskInfo2.topActivity : null;
+            writer.println(prefix + "    t1: (id=" + taskInfo1.taskId
+                    + "; package=" + (cn1 != null ? cn1.getPackageName() + ")" : "no package)")
+                    + " t2: (id=" + (taskInfo2 != null ? taskInfo2.taskId : "-1")
+                    + "; package=" + (cn2 != null ? cn2.getPackageName() + ")" : "no package)"));
         }
         writer.println(prefix + "  ]");
     }
diff --git a/quickstep/src/com/android/quickstep/RecentsActivity.java b/quickstep/src/com/android/quickstep/RecentsActivity.java
index 4f0b976..39af7fd 100644
--- a/quickstep/src/com/android/quickstep/RecentsActivity.java
+++ b/quickstep/src/com/android/quickstep/RecentsActivity.java
@@ -15,34 +15,35 @@
  */
 package com.android.quickstep;
 
-import static android.content.pm.ActivityInfo.CONFIG_ORIENTATION;
-import static android.content.pm.ActivityInfo.CONFIG_SCREEN_SIZE;
+import static android.os.Trace.TRACE_TAG_APP;
+import static android.view.RemoteAnimationTarget.MODE_CLOSING;
+import static android.view.RemoteAnimationTarget.MODE_OPENING;
 
 import static com.android.launcher3.QuickstepTransitionManager.RECENTS_LAUNCH_DURATION;
 import static com.android.launcher3.QuickstepTransitionManager.STATUS_BAR_TRANSITION_DURATION;
 import static com.android.launcher3.QuickstepTransitionManager.STATUS_BAR_TRANSITION_PRE_DELAY;
-import static com.android.launcher3.Utilities.createHomeIntent;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
 import static com.android.launcher3.graphics.SysUiScrim.SYSUI_PROGRESS;
-import static com.android.launcher3.testing.TestProtocol.BAD_STATE;
-import static com.android.launcher3.testing.TestProtocol.OVERVIEW_STATE_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.OVERVIEW_STATE_ORDINAL;
+import static com.android.quickstep.OverviewComponentObserver.startHomeIntentSafely;
 import static com.android.quickstep.TaskUtils.taskIsATargetWithMode;
 import static com.android.quickstep.TaskViewUtils.createRecentsWindowAnimator;
-import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_CLOSING;
-import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_OPENING;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.AnimatorSet;
+import android.app.ActivityOptions;
 import android.content.Intent;
 import android.content.res.Configuration;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.util.Log;
+import android.os.Trace;
 import android.view.Display;
+import android.view.RemoteAnimationAdapter;
+import android.view.RemoteAnimationTarget;
 import android.view.SurfaceControl.Transaction;
 import android.view.View;
+import android.window.RemoteTransition;
 import android.window.SplashScreen;
 
 import androidx.annotation.Nullable;
@@ -82,9 +83,6 @@
 import com.android.quickstep.views.OverviewActionsView;
 import com.android.quickstep.views.RecentsView;
 import com.android.quickstep.views.TaskView;
-import com.android.systemui.shared.system.ActivityOptionsCompat;
-import com.android.systemui.shared.system.RemoteAnimationAdapterCompat;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
@@ -112,8 +110,6 @@
     private @Nullable TaskbarManager mTaskbarManager;
     private @Nullable FallbackTaskbarUIController mTaskbarUIController;
 
-    private Configuration mOldConfig;
-
     private StateManager<RecentsState> mStateManager;
 
     // Strong refs to runners which are cleared when the activity is destroyed
@@ -138,7 +134,8 @@
 
         SplitSelectStateController controller =
                 new SplitSelectStateController(this, mHandler, getStateManager(),
-                        null /* depthController */);
+                         null /* depthController */, getStatsLogManager(),
+                        SystemUiProxy.INSTANCE.get(this), RecentsModel.INSTANCE.get(this));
         mDragLayer.recreateControllers();
         mFallbackRecentsView.init(mActionsView, controller);
 
@@ -147,7 +144,9 @@
 
     private void onTISConnected(TouchInteractionService.TISBinder binder) {
         mTaskbarManager = binder.getTaskbarManager();
-        mTaskbarManager.setActivity(this);
+        if (mTaskbarManager != null) {
+            mTaskbarManager.setActivity(this);
+        }
     }
 
     @Override
@@ -165,7 +164,7 @@
 
     @Override
     public void onMultiWindowModeChanged(boolean isInMultiWindowMode, Configuration newConfig) {
-        onHandleConfigChanged();
+        onHandleConfigurationChanged();
         super.onMultiWindowModeChanged(isInMultiWindowMode, newConfig);
     }
 
@@ -175,11 +174,8 @@
         ACTIVITY_TRACKER.handleNewIntent(this);
     }
 
-    /**
-         * Logic for when device configuration changes (rotation, screen size change, multi-window,
-         * etc.)
-         */
-    protected void onHandleConfigChanged() {
+    @Override
+    protected void onHandleConfigurationChanged() {
         initDeviceProfile();
 
         AbstractFloatingView.closeOpenViews(this, true,
@@ -249,9 +245,9 @@
 
         mActivityLaunchAnimationRunner = new RemoteAnimationFactory() {
             @Override
-            public void onCreateAnimation(int transit, RemoteAnimationTargetCompat[] appTargets,
-                    RemoteAnimationTargetCompat[] wallpaperTargets,
-                    RemoteAnimationTargetCompat[] nonAppTargets, AnimationResult result) {
+            public void onAnimationStart(int transit, RemoteAnimationTarget[] appTargets,
+                    RemoteAnimationTarget[] wallpaperTargets,
+                    RemoteAnimationTarget[] nonAppTargets, AnimationResult result) {
                 mHandler.removeCallbacks(mAnimationStartTimeoutRunnable);
                 AnimatorSet anim = composeRecentsLaunchAnimator(taskView, appTargets,
                         wallpaperTargets, nonAppTargets);
@@ -269,12 +265,13 @@
 
         final LauncherAnimationRunner wrapper = new LauncherAnimationRunner(
                 mUiHandler, mActivityLaunchAnimationRunner, true /* startAtFrontOfQueue */);
-        RemoteAnimationAdapterCompat adapterCompat = new RemoteAnimationAdapterCompat(
-                wrapper, RECENTS_LAUNCH_DURATION,
-                RECENTS_LAUNCH_DURATION - STATUS_BAR_TRANSITION_DURATION
-                        - STATUS_BAR_TRANSITION_PRE_DELAY, getIApplicationThread());
-        final ActivityOptionsWrapper activityOptions = new ActivityOptionsWrapper(
-                ActivityOptionsCompat.makeRemoteAnimation(adapterCompat),
+        final ActivityOptions options = ActivityOptions.makeRemoteAnimation(
+                new RemoteAnimationAdapter(wrapper, RECENTS_LAUNCH_DURATION,
+                        RECENTS_LAUNCH_DURATION - STATUS_BAR_TRANSITION_DURATION
+                                - STATUS_BAR_TRANSITION_PRE_DELAY),
+                new RemoteTransition(wrapper.toRemoteTransition(), getIApplicationThread(),
+                        "LaunchFromRecents"));
+        final ActivityOptionsWrapper activityOptions = new ActivityOptionsWrapper(options,
                 onEndCallback);
         activityOptions.options.setSplashScreenStyle(SplashScreen.SPLASH_SCREEN_STYLE_ICON);
         activityOptions.options.setLaunchDisplayId(
@@ -288,9 +285,9 @@
      * Composes the animations for a launch from the recents list if possible.
      */
     private AnimatorSet  composeRecentsLaunchAnimator(TaskView taskView,
-            RemoteAnimationTargetCompat[] appTargets,
-            RemoteAnimationTargetCompat[] wallpaperTargets,
-            RemoteAnimationTargetCompat[] nonAppTargets) {
+            RemoteAnimationTarget[] appTargets,
+            RemoteAnimationTarget[] wallpaperTargets,
+            RemoteAnimationTarget[] nonAppTargets) {
         AnimatorSet target = new AnimatorSet();
         boolean activityClosing = taskIsATargetWithMode(appTargets, getTaskId(), MODE_CLOSING);
         PendingAnimation pa = new PendingAnimation(RECENTS_LAUNCH_DURATION);
@@ -314,7 +311,6 @@
     protected void onStart() {
         // Set the alpha to 1 before calling super, as it may get set back to 0 due to
         // onActivityStart callback.
-        Log.d(BAD_STATE, "RecentsActivity onStart mFallbackRecentsView.setContentAlpha(1)");
         mFallbackRecentsView.setContentAlpha(1);
         super.onStart();
         mFallbackRecentsView.updateLocusId();
@@ -341,7 +337,6 @@
 
         mStateManager = new StateManager<>(this, RecentsState.BG_LAUNCHER);
 
-        mOldConfig = new Configuration(getResources().getConfiguration());
         initDeviceProfile();
         setupViews();
 
@@ -351,16 +346,6 @@
     }
 
     @Override
-    public void onConfigurationChanged(Configuration newConfig) {
-        int diff = newConfig.diff(mOldConfig);
-        if ((diff & (CONFIG_ORIENTATION | CONFIG_SCREEN_SIZE)) != 0) {
-            onHandleConfigChanged();
-        }
-        mOldConfig.setTo(newConfig);
-        super.onConfigurationChanged(newConfig);
-    }
-
-    @Override
     public void onStateSetEnd(RecentsState state) {
         super.onStateSetEnd(state);
 
@@ -413,48 +398,40 @@
     }
 
     public void startHome() {
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
-            RecentsView recentsView = getOverviewPanel();
-            recentsView.switchToScreenshot(() -> recentsView.finishRecentsAnimation(true,
-                    this::startHomeInternal));
-        } else {
-            startHomeInternal();
-        }
+        RecentsView recentsView = getOverviewPanel();
+        recentsView.switchToScreenshot(() -> recentsView.finishRecentsAnimation(true,
+                this::startHomeInternal));
     }
 
     private void startHomeInternal() {
         LauncherAnimationRunner runner = new LauncherAnimationRunner(
                 getMainThreadHandler(), mAnimationToHomeFactory, true);
-        RemoteAnimationAdapterCompat adapterCompat =
-                new RemoteAnimationAdapterCompat(runner, HOME_APPEAR_DURATION, 0,
-                        getIApplicationThread());
-        startActivity(createHomeIntent(),
-                ActivityOptionsCompat.makeRemoteAnimation(adapterCompat).toBundle());
+        ActivityOptions options = ActivityOptions.makeRemoteAnimation(
+                new RemoteAnimationAdapter(runner, HOME_APPEAR_DURATION, 0),
+                new RemoteTransition(runner.toRemoteTransition(), getIApplicationThread(),
+                        "StartHomeFromRecents"));
+        startHomeIntentSafely(this, options.toBundle());
     }
 
     private final RemoteAnimationFactory mAnimationToHomeFactory =
-            new RemoteAnimationFactory() {
-        @Override
-        public void onCreateAnimation(int transit, RemoteAnimationTargetCompat[] appTargets,
-                RemoteAnimationTargetCompat[] wallpaperTargets,
-                RemoteAnimationTargetCompat[] nonAppTargets, AnimationResult result) {
-            AnimatorPlaybackController controller = getStateManager()
-                    .createAnimationToNewWorkspace(RecentsState.BG_LAUNCHER, HOME_APPEAR_DURATION);
-            controller.dispatchOnStart();
+            (transit, appTargets, wallpaperTargets, nonAppTargets, result) -> {
+                AnimatorPlaybackController controller =
+                        getStateManager().createAnimationToNewWorkspace(
+                                RecentsState.BG_LAUNCHER, HOME_APPEAR_DURATION);
+                controller.dispatchOnStart();
 
-            RemoteAnimationTargets targets = new RemoteAnimationTargets(
-                    appTargets, wallpaperTargets, nonAppTargets, MODE_OPENING);
-            for (RemoteAnimationTargetCompat app : targets.apps) {
-                new Transaction().setAlpha(app.leash, 1).apply();
-            }
-            AnimatorSet anim = new AnimatorSet();
-            anim.play(controller.getAnimationPlayer());
-            anim.setDuration(HOME_APPEAR_DURATION);
-            result.setAnimation(anim, RecentsActivity.this,
-                    () -> getStateManager().goToState(RecentsState.HOME, false),
-                    true /* skipFirstFrame */);
-        }
-    };
+                RemoteAnimationTargets targets = new RemoteAnimationTargets(
+                        appTargets, wallpaperTargets, nonAppTargets, MODE_OPENING);
+                for (RemoteAnimationTarget app : targets.apps) {
+                    new Transaction().setAlpha(app.leash, 1).apply();
+                }
+                AnimatorSet anim = new AnimatorSet();
+                anim.play(controller.getAnimationPlayer());
+                anim.setDuration(HOME_APPEAR_DURATION);
+                result.setAnimation(anim, RecentsActivity.this,
+                        () -> getStateManager().goToState(RecentsState.HOME, false),
+                        true /* skipFirstFrame */);
+            };
 
     @Override
     protected void collectStateHandlers(List<StateHandler> out) {
@@ -478,6 +455,13 @@
         return new RecentsAtomicAnimationFactory<>(this);
     }
 
+    @Override
+    public void dispatchDeviceProfileChanged() {
+        super.dispatchDeviceProfileChanged();
+        Trace.instantForTrack(TRACE_TAG_APP, "RecentsActivity#DeviceProfileChanged",
+                getDeviceProfile().toSmallString());
+    }
+
     private AnimatorListenerAdapter resetStateListener() {
         return new AnimatorListenerAdapter() {
             @Override
diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationCallbacks.java b/quickstep/src/com/android/quickstep/RecentsAnimationCallbacks.java
index 51ae56b..523a98e 100644
--- a/quickstep/src/com/android/quickstep/RecentsAnimationCallbacks.java
+++ b/quickstep/src/com/android/quickstep/RecentsAnimationCallbacks.java
@@ -15,8 +15,11 @@
  */
 package com.android.quickstep;
 
+import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER;
+
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
-import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME;
+import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.CANCEL_RECENTS_ANIMATION;
+import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.START_RECENTS_ANIMATION;
 
 import android.graphics.Rect;
 import android.util.ArraySet;
@@ -28,11 +31,12 @@
 
 import com.android.launcher3.Utilities;
 import com.android.launcher3.util.Preconditions;
+import com.android.quickstep.util.ActiveGestureErrorDetector;
+import com.android.quickstep.util.ActiveGestureLog;
 import com.android.systemui.shared.recents.model.ThumbnailData;
 import com.android.systemui.shared.system.RecentsAnimationControllerCompat;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
 
-import java.util.Arrays;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Set;
 
@@ -85,30 +89,18 @@
     @BinderThread
     @Deprecated
     public final void onAnimationStart(RecentsAnimationControllerCompat controller,
-            RemoteAnimationTargetCompat[] appTargets, Rect homeContentInsets,
+            RemoteAnimationTarget[] appTargets, Rect homeContentInsets,
             Rect minimizedHomeBounds) {
-        onAnimationStart(controller, appTargets, new RemoteAnimationTargetCompat[0],
+        onAnimationStart(controller, appTargets, new RemoteAnimationTarget[0],
                 homeContentInsets, minimizedHomeBounds);
     }
 
     // Called only in R+ platform
     @BinderThread
     public final void onAnimationStart(RecentsAnimationControllerCompat animationController,
-            RemoteAnimationTargetCompat[] appTargets,
-            RemoteAnimationTargetCompat[] wallpaperTargets,
+            RemoteAnimationTarget[] appTargets,
+            RemoteAnimationTarget[] wallpaperTargets,
             Rect homeContentInsets, Rect minimizedHomeBounds) {
-        // Convert appTargets to type RemoteAnimationTarget for all apps except Home app
-        RemoteAnimationTarget[] nonHomeApps = Arrays.stream(appTargets)
-                .filter(remoteAnimationTarget ->
-                        remoteAnimationTarget.activityType != ACTIVITY_TYPE_HOME)
-                .map(RemoteAnimationTargetCompat::unwrap)
-                .toArray(RemoteAnimationTarget[]::new);
-
-        RemoteAnimationTarget[] nonAppTargets = mSystemUiProxy.onGoingToRecentsLegacy(nonHomeApps);
-
-        RecentsAnimationTargets targets = new RecentsAnimationTargets(appTargets,
-                wallpaperTargets, RemoteAnimationTargetCompat.wrap(nonAppTargets),
-                homeContentInsets, minimizedHomeBounds);
         mController = new RecentsAnimationController(animationController,
                 mAllowMinimizeSplitScreen, this::onAnimationFinished);
 
@@ -116,7 +108,27 @@
             Utilities.postAsyncCallback(MAIN_EXECUTOR.getHandler(),
                     mController::finishAnimationToApp);
         } else {
+            RemoteAnimationTarget[] nonAppTargets;
+            if (!TaskAnimationManager.ENABLE_SHELL_TRANSITIONS) {
+                nonAppTargets = mSystemUiProxy.onGoingToRecentsLegacy(appTargets);
+            } else {
+                final ArrayList<RemoteAnimationTarget> apps = new ArrayList<>();
+                final ArrayList<RemoteAnimationTarget> nonApps = new ArrayList<>();
+                classifyTargets(appTargets, apps, nonApps);
+                appTargets = apps.toArray(new RemoteAnimationTarget[apps.size()]);
+                nonAppTargets = nonApps.toArray(new RemoteAnimationTarget[nonApps.size()]);
+            }
+            if (nonAppTargets == null) {
+                nonAppTargets = new RemoteAnimationTarget[0];
+            }
+            final RecentsAnimationTargets targets = new RecentsAnimationTargets(appTargets,
+                    wallpaperTargets, nonAppTargets, homeContentInsets, minimizedHomeBounds);
+
             Utilities.postAsyncCallback(MAIN_EXECUTOR.getHandler(), () -> {
+                ActiveGestureLog.INSTANCE.addLog(
+                        /* event= */ "RecentsAnimationCallbacks.onAnimationStart",
+                        /* extras= */ targets.apps.length,
+                        /* gestureEvent= */ START_RECENTS_ANIMATION);
                 for (RecentsAnimationListener listener : getListeners()) {
                     listener.onRecentsAnimationStart(mController, targets);
                 }
@@ -128,6 +140,9 @@
     @Override
     public final void onAnimationCanceled(HashMap<Integer, ThumbnailData> thumbnailDatas) {
         Utilities.postAsyncCallback(MAIN_EXECUTOR.getHandler(), () -> {
+            ActiveGestureLog.INSTANCE.addLog(
+                    /* event= */ "RecentsAnimationCallbacks.onAnimationCanceled",
+                    /* gestureEvent= */ CANCEL_RECENTS_ANIMATION);
             for (RecentsAnimationListener listener : getListeners()) {
                 listener.onRecentsAnimationCanceled(thumbnailDatas);
             }
@@ -136,8 +151,10 @@
 
     @BinderThread
     @Override
-    public void onTasksAppeared(RemoteAnimationTargetCompat[] apps) {
+    public void onTasksAppeared(RemoteAnimationTarget[] apps) {
         Utilities.postAsyncCallback(MAIN_EXECUTOR.getHandler(), () -> {
+            ActiveGestureLog.INSTANCE.addLog("RecentsAnimationCallbacks.onTasksAppeared",
+                    ActiveGestureErrorDetector.GestureEvent.TASK_APPEARED);
             for (RecentsAnimationListener listener : getListeners()) {
                 listener.onTasksAppeared(apps);
             }
@@ -158,6 +175,8 @@
 
     private final void onAnimationFinished(RecentsAnimationController controller) {
         Utilities.postAsyncCallback(MAIN_EXECUTOR.getHandler(), () -> {
+            ActiveGestureLog.INSTANCE.addLog(
+                    /* event= */ "RecentsAnimationCallbacks.onAnimationFinished");
             for (RecentsAnimationListener listener : getListeners()) {
                 listener.onRecentsAnimationFinished(controller);
             }
@@ -168,6 +187,18 @@
         return mListeners.toArray(new RecentsAnimationListener[mListeners.size()]);
     }
 
+    private void classifyTargets(RemoteAnimationTarget[] appTargets,
+            ArrayList<RemoteAnimationTarget> apps, ArrayList<RemoteAnimationTarget> nonApps) {
+        for (int i = 0; i < appTargets.length; i++) {
+            RemoteAnimationTarget target = appTargets[i];
+            if (target.windowType == TYPE_DOCK_DIVIDER) {
+                nonApps.add(target);
+            } else {
+                apps.add(target);
+            }
+        }
+    }
+
     /**
      * Listener for the recents animation callbacks.
      */
@@ -190,7 +221,7 @@
         /**
          * Callback made when a task started from the recents is ready for an app transition.
          */
-        default void onTasksAppeared(@NonNull RemoteAnimationTargetCompat[] appearedTaskTarget) {}
+        default void onTasksAppeared(@NonNull RemoteAnimationTarget[] appearedTaskTarget) {}
 
         /**
          * @return whether this will call onFinished or not (onFinished should only be called once).
diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationController.java b/quickstep/src/com/android/quickstep/RecentsAnimationController.java
index 2007ee1..f8e09e1 100644
--- a/quickstep/src/com/android/quickstep/RecentsAnimationController.java
+++ b/quickstep/src/com/android/quickstep/RecentsAnimationController.java
@@ -18,11 +18,13 @@
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
 import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
 import static com.android.quickstep.TaskAnimationManager.ENABLE_SHELL_TRANSITIONS;
+import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.FINISH_RECENTS_ANIMATION;
 
 import android.content.Context;
 import android.os.RemoteException;
 import android.util.Log;
 import android.view.IRecentsAnimationController;
+import android.view.RemoteAnimationTarget;
 import android.view.SurfaceControl;
 import android.view.WindowManagerGlobal;
 import android.window.PictureInPictureSurfaceTransaction;
@@ -32,10 +34,11 @@
 
 import com.android.launcher3.util.Preconditions;
 import com.android.launcher3.util.RunnableList;
+import com.android.quickstep.util.ActiveGestureErrorDetector;
+import com.android.quickstep.util.ActiveGestureLog;
 import com.android.systemui.shared.recents.model.ThumbnailData;
 import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
 import com.android.systemui.shared.system.RecentsAnimationControllerCompat;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
 
 import java.util.function.Consumer;
 
@@ -104,8 +107,6 @@
         }
         if (mSplitScreenMinimized != splitScreenMinimized) {
             mSplitScreenMinimized = splitScreenMinimized;
-            UI_HELPER_EXECUTOR.execute(() -> SystemUiProxy.INSTANCE.get(context)
-                    .setSplitScreenMinimized(splitScreenMinimized));
         }
     }
 
@@ -114,7 +115,7 @@
      * {@link RecentsAnimationCallbacks#onTasksAppeared}}.
      */
     @UiThread
-    public void removeTaskTarget(@NonNull RemoteAnimationTargetCompat target) {
+    public void removeTaskTarget(@NonNull RemoteAnimationTarget target) {
         UI_HELPER_EXECUTOR.execute(() -> mController.removeTask(target.taskId));
     }
 
@@ -149,24 +150,41 @@
 
     @UiThread
     public void finishController(boolean toRecents, Runnable callback, boolean sendUserLeaveHint) {
-        if (mFinishRequested) {
-            // If finishing, add to pending finish callbacks, otherwise, if finished, adding to the
-            // destroyed RunnableList will just trigger the callback to be called immediately
-            mPendingFinishCallbacks.add(callback);
+        finishController(toRecents, callback, sendUserLeaveHint, false /* forceFinish */);
+    }
+
+    @UiThread
+    public void finishController(boolean toRecents, Runnable callback, boolean sendUserLeaveHint,
+            boolean forceFinish) {
+        mPendingFinishCallbacks.add(callback);
+        if (!forceFinish && mFinishRequested) {
+            // If finish has already been requested, then add the callback to the pending list.
+            // If already finished, then adding it to the destroyed RunnableList will just 
+            // trigger the callback to be called immediately
             return;
         }
+        ActiveGestureLog.INSTANCE.addLog(
+                /* event= */ "finishRecentsAnimation",
+                /* extras= */ toRecents,
+                /* gestureEvent= */ FINISH_RECENTS_ANIMATION);
 
         // Finish not yet requested
         mFinishRequested = true;
         mFinishTargetIsLauncher = toRecents;
         mOnFinishedListener.accept(this);
-        mPendingFinishCallbacks.add(callback);
-        UI_HELPER_EXECUTOR.execute(() -> {
+        Runnable finishCb = () -> {
             mController.finish(toRecents, sendUserLeaveHint);
             InteractionJankMonitorWrapper.end(InteractionJankMonitorWrapper.CUJ_QUICK_SWITCH);
             InteractionJankMonitorWrapper.end(InteractionJankMonitorWrapper.CUJ_APP_CLOSE_TO_HOME);
+            InteractionJankMonitorWrapper.end(
+                    InteractionJankMonitorWrapper.CUJ_APP_SWIPE_TO_RECENTS);
             MAIN_EXECUTOR.execute(mPendingFinishCallbacks::executeAllAndDestroy);
-        });
+        };
+        if (forceFinish) {
+            finishCb.run();
+        } else {
+            UI_HELPER_EXECUTOR.execute(finishCb);
+        }
     }
 
     /**
@@ -174,7 +192,12 @@
      */
     @UiThread
     public void cleanupScreenshot() {
-        UI_HELPER_EXECUTOR.execute(() -> mController.cleanupScreenshot());
+        UI_HELPER_EXECUTOR.execute(() -> {
+            ActiveGestureLog.INSTANCE.addLog(
+                    "cleanupScreenshot",
+                    ActiveGestureErrorDetector.GestureEvent.CLEANUP_SCREENSHOT);
+            mController.cleanupScreenshot();
+        });
     }
 
     /**
@@ -222,7 +245,6 @@
      */
     public void enableInputConsumer() {
         UI_HELPER_EXECUTOR.submit(() -> {
-            mController.hideCurrentInputMethod();
             mController.setInputConsumerEnabled(true);
         });
     }
diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java b/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java
index bb9fa5e..64ec1d8 100644
--- a/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java
+++ b/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java
@@ -23,9 +23,9 @@
 import static com.android.launcher3.util.DisplayController.CHANGE_ALL;
 import static com.android.launcher3.util.DisplayController.CHANGE_NAVIGATION_MODE;
 import static com.android.launcher3.util.DisplayController.CHANGE_ROTATION;
-import static com.android.launcher3.util.DisplayController.NavigationMode.NO_BUTTON;
-import static com.android.launcher3.util.DisplayController.NavigationMode.THREE_BUTTONS;
-import static com.android.launcher3.util.DisplayController.NavigationMode.TWO_BUTTONS;
+import static com.android.launcher3.util.NavigationMode.NO_BUTTON;
+import static com.android.launcher3.util.NavigationMode.THREE_BUTTONS;
+import static com.android.launcher3.util.NavigationMode.TWO_BUTTONS;
 import static com.android.launcher3.util.SettingsCache.ONE_HANDED_ENABLED;
 import static com.android.launcher3.util.SettingsCache.ONE_HANDED_SWIPE_BOTTOM_TO_NOTIFICATION_ENABLED;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_A11Y_BUTTON_CLICKABLE;
@@ -33,6 +33,7 @@
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_ALLOW_GESTURE_IGNORING_BAR_VISIBILITY;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_ASSIST_GESTURE_CONSTRAINED;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BUBBLES_EXPANDED;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_DEVICE_DREAMING;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_DIALOG_SHOWING;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_HOME_DISABLED;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SHOWING;
@@ -47,10 +48,7 @@
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED;
 
 import android.app.ActivityTaskManager;
-import android.content.BroadcastReceiver;
 import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
 import android.graphics.Region;
 import android.inputmethodservice.InputMethodService;
 import android.net.Uri;
@@ -60,15 +58,17 @@
 import android.os.UserManager;
 import android.provider.Settings;
 import android.view.MotionEvent;
+import android.view.ViewConfiguration;
 
 import androidx.annotation.BinderThread;
+import androidx.annotation.NonNull;
 
-import com.android.launcher3.Utilities;
 import com.android.launcher3.util.DisplayController;
 import com.android.launcher3.util.DisplayController.DisplayInfoChangeListener;
 import com.android.launcher3.util.DisplayController.Info;
-import com.android.launcher3.util.DisplayController.NavigationMode;
+import com.android.launcher3.util.NavigationMode;
 import com.android.launcher3.util.SettingsCache;
+import com.android.launcher3.util.SimpleBroadcastReceiver;
 import com.android.quickstep.TopTaskTracker.CachedTaskInfo;
 import com.android.quickstep.util.NavBarPosition;
 import com.android.systemui.shared.system.ActivityManagerWrapper;
@@ -88,6 +88,10 @@
 
     static final String SUPPORT_ONE_HANDED_MODE = "ro.support_one_handed_mode";
 
+    // TODO: Move to quickstep contract
+    private static final float QUICKSTEP_TOUCH_SLOP_RATIO_TWO_BUTTON = 9;
+    private static final float QUICKSTEP_TOUCH_SLOP_RATIO_GESTURAL = 2;
+
     private final Context mContext;
     private final DisplayController mDisplayController;
     private final int mDisplayId;
@@ -99,7 +103,7 @@
 
     private final ArrayList<Runnable> mOnDestroyActions = new ArrayList<>();
 
-    private @SystemUiStateFlags int mSystemUiStateFlags;
+    private @SystemUiStateFlags int mSystemUiStateFlags = QuickStepContract.SYSUI_STATE_AWAKE;
     private NavigationMode mMode = THREE_BUTTONS;
     private NavBarPosition mNavBarPosition;
 
@@ -114,18 +118,15 @@
 
     private boolean mIsUserUnlocked;
     private final ArrayList<Runnable> mUserUnlockedActions = new ArrayList<>();
-    private final BroadcastReceiver mUserUnlockedReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            if (ACTION_USER_UNLOCKED.equals(intent.getAction())) {
-                mIsUserUnlocked = true;
-                notifyUserUnlocked();
-            }
+    private final SimpleBroadcastReceiver mUserUnlockedReceiver = new SimpleBroadcastReceiver(i -> {
+        if (ACTION_USER_UNLOCKED.equals(i.getAction())) {
+            mIsUserUnlocked = true;
+            notifyUserUnlocked();
         }
-    };
+    });
 
     private int mGestureBlockingTaskId = -1;
-    private Region mExclusionRegion;
+    private @NonNull Region mExclusionRegion = new Region();
     private SystemGestureExclusionListenerCompat mExclusionListener;
 
     public RecentsAnimationDeviceState(Context context) {
@@ -153,16 +154,19 @@
         mIsUserUnlocked = context.getSystemService(UserManager.class)
                 .isUserUnlocked(Process.myUserHandle());
         if (!mIsUserUnlocked) {
-            mContext.registerReceiver(mUserUnlockedReceiver,
-                    new IntentFilter(ACTION_USER_UNLOCKED));
+            mUserUnlockedReceiver.register(mContext, ACTION_USER_UNLOCKED);
         }
-        runOnDestroy(() -> Utilities.unregisterReceiverSafely(mContext, mUserUnlockedReceiver));
+        runOnDestroy(() -> mUserUnlockedReceiver.unregisterReceiverSafely(mContext));
 
         // Register for exclusion updates
         mExclusionListener = new SystemGestureExclusionListenerCompat(mDisplayId) {
             @Override
             @BinderThread
             public void onExclusionChanged(Region region) {
+                if (region == null) {
+                    // Don't think this is possible but just in case, don't let it be null.
+                    region = new Region();
+                }
                 // Assignments are atomic, it should be safe on binder thread
                 mExclusionRegion = region;
             }
@@ -343,7 +347,7 @@
             action.run();
         }
         mUserUnlockedActions.clear();
-        Utilities.unregisterReceiverSafely(mContext, mUserUnlockedReceiver);
+        mUserUnlockedReceiver.unregisterReceiverSafely(mContext);
     }
 
     /**
@@ -388,7 +392,8 @@
                 && (mSystemUiStateFlags & SYSUI_STATE_QUICK_SETTINGS_EXPANDED) == 0
                 && (mSystemUiStateFlags & SYSUI_STATE_MAGNIFICATION_OVERLAP) == 0
                 && ((mSystemUiStateFlags & SYSUI_STATE_HOME_DISABLED) == 0
-                        || (mSystemUiStateFlags & SYSUI_STATE_OVERVIEW_DISABLED) == 0);
+                        || (mSystemUiStateFlags & SYSUI_STATE_OVERVIEW_DISABLED) == 0)
+                && (mSystemUiStateFlags & SYSUI_STATE_DEVICE_DREAMING) == 0;
     }
 
     /**
@@ -500,7 +505,7 @@
     public boolean isInExclusionRegion(MotionEvent event) {
         // mExclusionRegion can change on binder thread, use a local instance here.
         Region exclusionRegion = mExclusionRegion;
-        return mMode == NO_BUTTON && exclusionRegion != null
+        return mMode == NO_BUTTON
                 && exclusionRegion.contains((int) event.getX(), (int) event.getY());
     }
 
@@ -577,19 +582,36 @@
                 && ((mSystemUiStateFlags & SYSUI_STATE_IME_SHOWING) != 0);
     }
 
+    /**
+     * Returns the touch slop for {@link InputConsumer}s to compare against before pilfering
+     * pointers. Note that this is squared because it expects to be compared against
+     * {@link com.android.launcher3.Utilities#squaredHypot} (to avoid square root on each event).
+     */
+    public float getSquaredTouchSlop() {
+        float slopMultiplier = isFullyGesturalNavMode()
+                ? QUICKSTEP_TOUCH_SLOP_RATIO_GESTURAL
+                : QUICKSTEP_TOUCH_SLOP_RATIO_TWO_BUTTON;
+        float touchSlop = ViewConfiguration.get(mContext).getScaledTouchSlop();
+        return slopMultiplier * touchSlop * touchSlop;
+    }
+
+    public String getSystemUiStateString() {
+        return  QuickStepContract.getSystemUiStateString(mSystemUiStateFlags);
+    }
+
     public void dump(PrintWriter pw) {
         pw.println("DeviceState:");
         pw.println("  canStartSystemGesture=" + canStartSystemGesture());
         pw.println("  systemUiFlags=" + mSystemUiStateFlags);
-        pw.println("  systemUiFlagsDesc="
-                + QuickStepContract.getSystemUiStateString(mSystemUiStateFlags));
+        pw.println("  systemUiFlagsDesc=" + getSystemUiStateString());
         pw.println("  assistantAvailable=" + mAssistantAvailable);
         pw.println("  assistantDisabled="
                 + QuickStepContract.isAssistantGestureDisabled(mSystemUiStateFlags));
         pw.println("  isUserUnlocked=" + mIsUserUnlocked);
         pw.println("  isOneHandedModeEnabled=" + mIsOneHandedModeEnabled);
         pw.println("  isSwipeToNotificationEnabled=" + mIsSwipeToNotificationEnabled);
-        pw.println("  deferredGestureRegion=" + mDeferredGestureRegion);
+        pw.println("  deferredGestureRegion=" + mDeferredGestureRegion.getBounds());
+        pw.println("  exclusionRegion=" + mExclusionRegion.getBounds());
         pw.println("  pipIsActive=" + mPipIsActive);
         mRotationTouchHelper.dump(pw);
     }
diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationTargets.java b/quickstep/src/com/android/quickstep/RecentsAnimationTargets.java
index b6d9016..15e1365 100644
--- a/quickstep/src/com/android/quickstep/RecentsAnimationTargets.java
+++ b/quickstep/src/com/android/quickstep/RecentsAnimationTargets.java
@@ -15,11 +15,14 @@
  */
 package com.android.quickstep;
 
-import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_CLOSING;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
+import static android.view.RemoteAnimationTarget.MODE_CLOSING;
 
+import android.app.WindowConfiguration;
 import android.graphics.Rect;
+import android.view.RemoteAnimationTarget;
 
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
+import com.android.quickstep.views.DesktopTaskView;
 
 /**
  * Extension of {@link RemoteAnimationTargets} with additional information about swipe
@@ -30,8 +33,8 @@
     public final Rect homeContentInsets;
     public final Rect minimizedHomeBounds;
 
-    public RecentsAnimationTargets(RemoteAnimationTargetCompat[] apps,
-            RemoteAnimationTargetCompat[] wallpapers, RemoteAnimationTargetCompat[] nonApps,
+    public RecentsAnimationTargets(RemoteAnimationTarget[] apps,
+            RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps,
             Rect homeContentInsets, Rect minimizedHomeBounds) {
         super(apps, wallpapers, nonApps, MODE_CLOSING);
         this.homeContentInsets = homeContentInsets;
@@ -41,4 +44,22 @@
     public boolean hasTargets() {
         return unfilteredApps.length != 0;
     }
+
+    /**
+     * Check if target apps contain desktop tasks which have windowing mode set to {@link
+     * WindowConfiguration#WINDOWING_MODE_FREEFORM}
+     *
+     * @return {@code true} if at least one target app is a desktop task
+     */
+    public boolean hasDesktopTasks() {
+        if (!DesktopTaskView.DESKTOP_MODE_SUPPORTED) {
+            return false;
+        }
+        for (RemoteAnimationTarget target : apps) {
+            if (target.windowConfiguration.getWindowingMode() == WINDOWING_MODE_FREEFORM) {
+                return true;
+            }
+        }
+        return false;
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/RecentsFilterState.java b/quickstep/src/com/android/quickstep/RecentsFilterState.java
new file mode 100644
index 0000000..ff6951d
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/RecentsFilterState.java
@@ -0,0 +1,176 @@
+/*
+ * 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.quickstep;
+
+import androidx.annotation.Nullable;
+
+import com.android.quickstep.util.GroupTask;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.function.Predicate;
+
+/**
+ * Keeps track of the state of {@code RecentsView}.
+ *
+ * <p> More specifically, used for keeping track of the state of filters applied on tasks
+ * in {@code RecentsView} for multi-instance management.
+ */
+public class RecentsFilterState {
+    // the minimum number of tasks per package present to allow filtering
+    public static final int MIN_FILTERING_TASK_COUNT = 2;
+
+    // default filter that returns true for any input
+    public static final Predicate<GroupTask> DEFAULT_FILTER = (groupTask -> true);
+
+    // the package name to filter recent tasks by
+    @Nullable
+    private String mPackageNameToFilter = null;
+
+    // the callback that gets executed upon filter change
+    @Nullable
+    private Runnable mOnFilterUpdatedListener = null;
+
+    // map maintaining the count for each unique base activity package name currently in the recents
+    @Nullable
+    private Map<String, Integer> mInstanceCountMap;
+
+    /**
+     * Returns {@code true} if {@code RecentsView} filters tasks by some package name.
+     */
+    public boolean isFiltered() {
+        return mPackageNameToFilter != null;
+    }
+
+    /**
+     * Returns the package name that tasks are filtered by.
+     */
+    @Nullable
+    public String getPackageNameToFilter() {
+        return mPackageNameToFilter;
+    }
+
+
+    /**
+     * Sets a listener on any changes to the filter.
+     *
+     * @param callback listener to be executed upon filter updates
+     */
+    public void setOnFilterUpdatedListener(@Nullable Runnable callback) {
+        mOnFilterUpdatedListener = callback;
+    }
+
+    /**
+     * Updates the filter such that tasks are filtered by a certain package name.
+     *
+     * @param packageName package name of the base activity to filter tasks by;
+     *                    if null, filter is turned off
+     */
+    public void setFilterBy(@Nullable String packageName) {
+        if (Objects.equals(packageName, mPackageNameToFilter)) {
+            return;
+        }
+
+        mPackageNameToFilter = packageName;
+
+        if (mOnFilterUpdatedListener != null) {
+            mOnFilterUpdatedListener.run();
+        }
+    }
+
+    /**
+     * Updates the map of package names to their count in the most recent list of tasks.
+     *
+     * @param groupTaskList the list of tasks that map update is be based on
+     */
+    public void updateInstanceCountMap(List<GroupTask> groupTaskList) {
+        mInstanceCountMap = getInstanceCountMap(groupTaskList);
+    }
+
+    /**
+     * Returns the map of package names to their count in the most recent list of tasks.
+     */
+    @Nullable
+    public Map<String, Integer> getInstanceCountMap() {
+        return mInstanceCountMap;
+    }
+
+    /**
+     * Returns a predicate for filtering out GroupTasks by package name.
+     *
+     * @param packageName package name to filter GroupTasks by
+     *                    if null, Predicate always returns true.
+     */
+    public static Predicate<GroupTask> getFilter(@Nullable String packageName) {
+        if (packageName == null) {
+            return DEFAULT_FILTER;
+        }
+
+        return (groupTask) -> (groupTask.task2 != null
+                && groupTask.task2.key.getPackageName().equals(packageName))
+                || groupTask.task1.key.getPackageName().equals(packageName);
+    }
+
+    /**
+     * Returns a map of package names to their frequencies in a list of GroupTasks.
+     *
+     * @param groupTasks the list to go through to create the map
+     */
+    public static Map<String, Integer> getInstanceCountMap(List<GroupTask> groupTasks) {
+        Map<String, Integer> instanceCountMap = new HashMap<>();
+
+        for (GroupTask groupTask : groupTasks) {
+            final String firstTaskPkgName = groupTask.task1.key.getPackageName();
+            final String secondTaskPkgName =
+                    groupTask.task2 == null ? null : groupTask.task2.key.getPackageName();
+
+            // increment the instance count for the first task's base activity package name
+            incrementOrAddIfNotExists(instanceCountMap, firstTaskPkgName);
+
+            // check if second task is non existent
+            if (secondTaskPkgName != null) {
+                // increment the instance count for the second task's base activity package name
+                incrementOrAddIfNotExists(instanceCountMap, secondTaskPkgName);
+            }
+        }
+
+        return instanceCountMap;
+    }
+
+    /**
+     * Returns true if tasks of provided package name should show filter UI.
+     *
+     * @param taskPackageName package name of the task in question
+     */
+    public boolean shouldShowFilterUI(String taskPackageName) {
+        // number of occurrences in recents overview with the package name of this task
+        int instanceCount = getInstanceCountMap().get(taskPackageName);
+
+        // if the number of occurrences isn't enough make sure tasks can't be filtered by
+        // the package name of this task
+        return !(isFiltered() || instanceCount < MIN_FILTERING_TASK_COUNT);
+    }
+
+    private static void incrementOrAddIfNotExists(Map<String, Integer> map, String pkgName) {
+        if (!map.containsKey(pkgName)) {
+            map.put(pkgName, 0);
+        }
+        map.put(pkgName, map.get(pkgName) + 1);
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/RecentsModel.java b/quickstep/src/com/android/quickstep/RecentsModel.java
index 1634c08..d798e62 100644
--- a/quickstep/src/com/android/quickstep/RecentsModel.java
+++ b/quickstep/src/com/android/quickstep/RecentsModel.java
@@ -22,6 +22,7 @@
 
 import android.annotation.TargetApi;
 import android.app.ActivityManager;
+import android.app.KeyguardManager;
 import android.content.ComponentCallbacks2;
 import android.content.Context;
 import android.content.Intent;
@@ -36,10 +37,10 @@
 import com.android.launcher3.util.Executors.SimpleThreadFactory;
 import com.android.launcher3.util.MainThreadInitializedObject;
 import com.android.quickstep.util.GroupTask;
+import com.android.quickstep.util.TaskVisualsChangeListener;
 import com.android.systemui.shared.recents.model.Task;
 import com.android.systemui.shared.recents.model.ThumbnailData;
 import com.android.systemui.shared.system.ActivityManagerWrapper;
-import com.android.systemui.shared.system.KeyguardManagerCompat;
 import com.android.systemui.shared.system.TaskStackChangeListener;
 import com.android.systemui.shared.system.TaskStackChangeListeners;
 
@@ -49,12 +50,14 @@
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
 import java.util.function.Consumer;
+import java.util.function.Predicate;
 
 /**
  * Singleton class to load and manage recents model.
  */
 @TargetApi(Build.VERSION_CODES.O)
-public class RecentsModel implements IconChangeListener, TaskStackChangeListener {
+public class RecentsModel implements IconChangeListener, TaskStackChangeListener,
+        TaskVisualsChangeListener {
 
     // We do not need any synchronization for this variable as its only written on UI thread.
     public static final MainThreadInitializedObject<RecentsModel> INSTANCE =
@@ -73,10 +76,12 @@
     private RecentsModel(Context context) {
         mContext = context;
         mTaskList = new RecentTasksList(MAIN_EXECUTOR,
-                new KeyguardManagerCompat(context), SystemUiProxy.INSTANCE.get(context));
+                context.getSystemService(KeyguardManager.class),
+                SystemUiProxy.INSTANCE.get(context));
 
         IconProvider iconProvider = new IconProvider(context);
         mIconCache = new TaskIconCache(context, RECENTS_MODEL_EXECUTOR, iconProvider);
+        mIconCache.registerTaskVisualsChangeListener(this);
         mThumbnailCache = new TaskThumbnailCache(context, RECENTS_MODEL_EXECUTOR);
 
         TaskStackChangeListeners.getInstance().registerTaskStackListener(this);
@@ -92,14 +97,30 @@
     }
 
     /**
-     * Fetches the list of recent tasks.
+     * Fetches the list of recent tasks. Tasks are ordered by recency, with the latest active tasks
+     * at the end of the list.
      *
      * @param callback The callback to receive the task plan once its complete or null. This is
      *                always called on the UI thread.
      * @return the request id associated with this call.
      */
     public int getTasks(Consumer<ArrayList<GroupTask>> callback) {
-        return mTaskList.getTasks(false /* loadKeysOnly */, callback);
+        return mTaskList.getTasks(false /* loadKeysOnly */, callback,
+                RecentsFilterState.DEFAULT_FILTER);
+    }
+
+
+    /**
+     * Fetches the list of recent tasks, based on a filter
+     *
+     * @param callback The callback to receive the task plan once its complete or null. This is
+     *                always called on the UI thread.
+     * @param filter  Returns true if a GroupTask should be included into the list passed into
+     *                callback.
+     * @return the request id associated with this call.
+     */
+    public int getTasks(Consumer<ArrayList<GroupTask>> callback, Predicate<GroupTask> filter) {
+        return mTaskList.getTasks(false /* loadKeysOnly */, callback, filter);
     }
 
     /**
@@ -121,8 +142,12 @@
      * Checks if a task has been removed or not.
      *
      * @param callback Receives true if task is removed, false otherwise
+     * @param filter Returns true if GroupTask should be in the list of considerations
      */
-    public void isTaskRemoved(int taskId, Consumer<Boolean> callback) {
+    public void isTaskRemoved(int taskId, Consumer<Boolean> callback, Predicate<GroupTask> filter) {
+        // Invalidate the existing list before checking to ensure this reflects the current state in
+        // the system
+        mTaskList.onRecentTasksChanged();
         mTaskList.getTasks(true /* loadKeysOnly */, (taskGroups) -> {
             for (GroupTask group : taskGroups) {
                 if (group.containsTask(taskId)) {
@@ -131,7 +156,7 @@
                 }
             }
             callback.accept(true);
-        });
+        }, filter);
     }
 
     @Override
@@ -204,6 +229,13 @@
     }
 
     @Override
+    public void onTaskIconChanged(int taskId) {
+        for (TaskVisualsChangeListener listener : mThumbnailChangeListeners) {
+            listener.onTaskIconChanged(taskId);
+        }
+    }
+
+    @Override
     public void onSystemIconStateChanged(String iconState) {
         mIconCache.clearCache();
     }
@@ -228,18 +260,33 @@
     }
 
     /**
-     * Listener for receiving various task properties changes
+     * Registers a listener for running tasks
      */
-    public interface TaskVisualsChangeListener {
+    public void registerRunningTasksListener(RunningTasksListener listener) {
+        mTaskList.registerRunningTasksListener(listener);
+    }
 
-        /**
-         * Called whn the task thumbnail changes
-         */
-        Task onTaskThumbnailChanged(int taskId, ThumbnailData thumbnailData);
+    /**
+     * Removes the previously registered running tasks listener
+     */
+    public void unregisterRunningTasksListener() {
+        mTaskList.unregisterRunningTasksListener();
+    }
 
+    /**
+     * Gets the set of running tasks.
+     */
+    public ArrayList<ActivityManager.RunningTaskInfo> getRunningTasks() {
+        return mTaskList.getRunningTasks();
+    }
+
+    /**
+     * Listener for receiving running tasks changes
+     */
+    public interface RunningTasksListener {
         /**
-         * Called when the icon for a task changes
+         * Called when there's a change to running tasks
          */
-        void onTaskIconChanged(String pkg, UserHandle user);
+        void onRunningTasksChanged();
     }
 }
diff --git a/quickstep/src/com/android/quickstep/RemoteAnimationTargets.java b/quickstep/src/com/android/quickstep/RemoteAnimationTargets.java
index b20d488..80aaad0 100644
--- a/quickstep/src/com/android/quickstep/RemoteAnimationTargets.java
+++ b/quickstep/src/com/android/quickstep/RemoteAnimationTargets.java
@@ -15,11 +15,11 @@
  */
 package com.android.quickstep;
 
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
 import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR;
 
-import static com.android.quickstep.TaskAnimationManager.ENABLE_SHELL_TRANSITIONS;
-
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
+import android.view.RemoteAnimationTarget;
 
 import java.util.ArrayList;
 import java.util.concurrent.CopyOnWriteArrayList;
@@ -31,41 +31,40 @@
 
     private final CopyOnWriteArrayList<ReleaseCheck> mReleaseChecks = new CopyOnWriteArrayList<>();
 
-    public final RemoteAnimationTargetCompat[] unfilteredApps;
-    public final RemoteAnimationTargetCompat[] apps;
-    public final RemoteAnimationTargetCompat[] wallpapers;
-    public final RemoteAnimationTargetCompat[] nonApps;
+    public final RemoteAnimationTarget[] unfilteredApps;
+    public final RemoteAnimationTarget[] apps;
+    public final RemoteAnimationTarget[] wallpapers;
+    public final RemoteAnimationTarget[] nonApps;
     public final int targetMode;
     public final boolean hasRecents;
 
     private boolean mReleased = false;
 
-    public RemoteAnimationTargets(RemoteAnimationTargetCompat[] apps,
-            RemoteAnimationTargetCompat[] wallpapers, RemoteAnimationTargetCompat[] nonApps,
+    public RemoteAnimationTargets(RemoteAnimationTarget[] apps,
+            RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps,
             int targetMode) {
-        ArrayList<RemoteAnimationTargetCompat> filteredApps = new ArrayList<>();
+        ArrayList<RemoteAnimationTarget> filteredApps = new ArrayList<>();
         boolean hasRecents = false;
         if (apps != null) {
-            for (RemoteAnimationTargetCompat target : apps) {
+            for (RemoteAnimationTarget target : apps) {
                 if (target.mode == targetMode) {
                     filteredApps.add(target);
                 }
 
-                hasRecents |= target.activityType ==
-                        RemoteAnimationTargetCompat.ACTIVITY_TYPE_RECENTS;
+                hasRecents |= target.windowConfiguration.getActivityType() == ACTIVITY_TYPE_RECENTS;
             }
         }
 
         this.unfilteredApps = apps;
-        this.apps = filteredApps.toArray(new RemoteAnimationTargetCompat[filteredApps.size()]);
+        this.apps = filteredApps.toArray(new RemoteAnimationTarget[filteredApps.size()]);
         this.wallpapers = wallpapers;
         this.targetMode = targetMode;
         this.hasRecents = hasRecents;
         this.nonApps = nonApps;
     }
 
-    public RemoteAnimationTargetCompat findTask(int taskId) {
-        for (RemoteAnimationTargetCompat target : apps) {
+    public RemoteAnimationTarget findTask(int taskId) {
+        for (RemoteAnimationTarget target : apps) {
             if (target.taskId == taskId) {
                 return target;
             }
@@ -76,12 +75,12 @@
     /**
      * Gets the navigation bar remote animation target if exists.
      */
-    public RemoteAnimationTargetCompat getNavBarRemoteAnimationTarget() {
+    public RemoteAnimationTarget getNavBarRemoteAnimationTarget() {
         return getNonAppTargetOfType(TYPE_NAVIGATION_BAR);
     }
 
-    public RemoteAnimationTargetCompat getNonAppTargetOfType(int type) {
-        for (RemoteAnimationTargetCompat target : nonApps) {
+    public RemoteAnimationTarget getNonAppTargetOfType(int type) {
+        for (RemoteAnimationTarget target : nonApps) {
             if (target.windowType == type) {
                 return target;
             }
@@ -90,19 +89,19 @@
     }
 
     /** Returns the first opening app target. */
-    public RemoteAnimationTargetCompat getFirstAppTarget() {
+    public RemoteAnimationTarget getFirstAppTarget() {
         return apps.length > 0 ? apps[0] : null;
     }
 
     /** Returns the task id of the first opening app target, or -1 if none is found. */
     public int getFirstAppTargetTaskId() {
-        RemoteAnimationTargetCompat target = getFirstAppTarget();
+        RemoteAnimationTarget target = getFirstAppTarget();
         return target == null ? -1 : target.taskId;
     }
 
     public boolean isAnimatingHome() {
-        for (RemoteAnimationTargetCompat target : unfilteredApps) {
-            if (target.activityType == RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME) {
+        for (RemoteAnimationTarget target : unfilteredApps) {
+            if (target.windowConfiguration.getActivityType() == ACTIVITY_TYPE_HOME) {
                 return true;
             }
         }
@@ -114,10 +113,6 @@
     }
 
     public void release() {
-        if (ENABLE_SHELL_TRANSITIONS) {
-            mReleaseChecks.clear();
-            return;
-        }
         if (mReleased) {
             return;
         }
@@ -129,15 +124,19 @@
         }
         mReleaseChecks.clear();
         mReleased = true;
+        release(unfilteredApps);
+        release(wallpapers);
+        release(nonApps);
+    }
 
-        for (RemoteAnimationTargetCompat target : unfilteredApps) {
-            target.release();
-        }
-        for (RemoteAnimationTargetCompat target : wallpapers) {
-            target.release();
-        }
-        for (RemoteAnimationTargetCompat target : nonApps) {
-            target.release();
+    private static void release(RemoteAnimationTarget[] targets) {
+        for (RemoteAnimationTarget target : targets) {
+            if (target.leash != null) {
+                target.leash.release();
+            }
+            if (target.startLeash != null) {
+                target.startLeash.release();
+            }
         }
     }
 
diff --git a/quickstep/src/com/android/quickstep/RemoteTargetGluer.java b/quickstep/src/com/android/quickstep/RemoteTargetGluer.java
index c3ea256..84b90b9 100644
--- a/quickstep/src/com/android/quickstep/RemoteTargetGluer.java
+++ b/quickstep/src/com/android/quickstep/RemoteTargetGluer.java
@@ -17,31 +17,36 @@
 package com.android.quickstep;
 
 import android.content.Context;
+import android.graphics.Rect;
+import android.view.RemoteAnimationTarget;
 
 import androidx.annotation.Nullable;
 
-import com.android.launcher3.util.SplitConfigurationOptions.StagedSplitBounds;
+import com.android.launcher3.util.SplitConfigurationOptions.SplitBounds;
 import com.android.quickstep.util.AnimatorControllerWithResistance;
 import com.android.quickstep.util.TaskViewSimulator;
 import com.android.quickstep.util.TransformParams;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
+import com.android.quickstep.views.DesktopTaskView;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 
 /**
  * Glues together the necessary components to animate a remote target using a
  * {@link TaskViewSimulator}
  */
 public class RemoteTargetGluer {
+    private static final int DEFAULT_NUM_HANDLES = 2;
+
     private RemoteTargetHandle[] mRemoteTargetHandles;
-    private StagedSplitBounds mStagedSplitBounds;
+    private SplitBounds mSplitBounds;
 
     /**
      * Use this constructor if remote targets are split-screen independent
      */
     public RemoteTargetGluer(Context context, BaseActivityInterface sizingStrategy,
-            RemoteAnimationTargets targets) {
-        mRemoteTargetHandles = createHandles(context, sizingStrategy, targets.apps.length);
+            RemoteAnimationTargets targets, boolean forDesktop) {
+        init(context, sizingStrategy, targets.apps.length, forDesktop);
     }
 
     /**
@@ -49,15 +54,33 @@
      * running tasks
      */
     public RemoteTargetGluer(Context context, BaseActivityInterface sizingStrategy) {
-        int[] splitIds = TopTaskTracker.INSTANCE.get(context).getRunningSplitTaskIds();
-        mRemoteTargetHandles = createHandles(context, sizingStrategy, splitIds.length == 2 ? 2 : 1);
+        if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) {
+            // TODO(279931899): binder call, only for prototyping. Creating the gluer should be
+            //  postponed so we can create it when we have the remote animation targets ready.
+            int desktopTasks = SystemUiProxy.INSTANCE.get(context).getVisibleDesktopTaskCount(
+                    context.getDisplayId());
+            if (desktopTasks > 0) {
+                init(context, sizingStrategy, desktopTasks, true /* forDesktop */);
+                return;
+            }
+        }
+
+        // Assume 2 handles needed for split, scale down as needed later on when we actually
+        // get remote targets
+        init(context, sizingStrategy, DEFAULT_NUM_HANDLES, false /* forDesktop */);
+    }
+
+    private void init(Context context, BaseActivityInterface sizingStrategy, int numHandles,
+            boolean forDesktop) {
+        mRemoteTargetHandles = createHandles(context, sizingStrategy, numHandles, forDesktop);
     }
 
     private RemoteTargetHandle[] createHandles(Context context,
-            BaseActivityInterface sizingStrategy, int numHandles) {
+            BaseActivityInterface sizingStrategy, int numHandles, boolean forDesktop) {
         RemoteTargetHandle[] handles = new RemoteTargetHandle[numHandles];
         for (int i = 0; i < numHandles; i++) {
             TaskViewSimulator tvs = new TaskViewSimulator(context, sizingStrategy);
+            tvs.setIsDesktopTask(forDesktop);
             TransformParams transformParams = new TransformParams();
             handles[i] = new RemoteTargetHandle(tvs, transformParams);
         }
@@ -71,11 +94,11 @@
      * Length of targets.apps should match that of {@link #mRemoteTargetHandles}.
      *
      * If split screen may be active when this is called, you might want to use
-     * {@link #assignTargetsForSplitScreen(Context, RemoteAnimationTargets)}
+     * {@link #assignTargetsForSplitScreen(RemoteAnimationTargets)}
      */
     public RemoteTargetHandle[] assignTargets(RemoteAnimationTargets targets) {
         for (int i = 0; i < mRemoteTargetHandles.length; i++) {
-            RemoteAnimationTargetCompat primaryTaskTarget = targets.apps[i];
+            RemoteAnimationTarget primaryTaskTarget = targets.apps[i];
             mRemoteTargetHandles[i].mTransformParams.setTargetSet(
                     createRemoteAnimationTargetsForTarget(targets, null));
             mRemoteTargetHandles[i].mTaskViewSimulator.setPreview(primaryTaskTarget, null);
@@ -84,57 +107,88 @@
     }
 
     /**
-     * Similar to {@link #assignTargets(RemoteAnimationTargets)}, except this matches the
-     * apps in targets.apps to that of the _active_ split screened tasks.
-     * See {@link #assignTargetsForSplitScreen(RemoteAnimationTargets, int[])}
+     * Similar to {@link #assignTargets(RemoteAnimationTargets)}, except this assigns the
+     * apps in {@code targets.apps} to the {@link #mRemoteTargetHandles} with index 0 will being
+     * the left/top task, index 1 right/bottom.
      */
-    public RemoteTargetHandle[] assignTargetsForSplitScreen(
-            Context context, RemoteAnimationTargets targets) {
-        int[] splitIds = TopTaskTracker.INSTANCE.get(context).getRunningSplitTaskIds();
-        return assignTargetsForSplitScreen(targets, splitIds);
-    }
+    public RemoteTargetHandle[] assignTargetsForSplitScreen(RemoteAnimationTargets targets) {
+        // Resize the mRemoteTargetHandles array since we started assuming split screen, but
+        // targets.apps is the ultimate source of truth here
+        long appCount = Arrays.stream(targets.apps)
+                .filter(app -> app.mode == targets.targetMode)
+                .count();
+        if (appCount < mRemoteTargetHandles.length) {
+            RemoteTargetHandle[] newHandles = new RemoteTargetHandle[(int) appCount];
+            System.arraycopy(mRemoteTargetHandles, 0/*src*/, newHandles, 0/*dst*/, (int) appCount);
+            mRemoteTargetHandles = newHandles;
+        }
 
-    /**
-     * Assigns the provided splitIDs to the {@link #mRemoteTargetHandles}, with index 0 will being
-     * the left/top task, index 1 right/bottom
-     */
-    public RemoteTargetHandle[] assignTargetsForSplitScreen(RemoteAnimationTargets targets,
-            int[] splitIds) {
-        RemoteAnimationTargetCompat topLeftTarget; // only one set if single/fullscreen task
-        RemoteAnimationTargetCompat bottomRightTarget;
         if (mRemoteTargetHandles.length == 1) {
             // If we're not in split screen, the splitIds count doesn't really matter since we
             // should always hit this case.
             mRemoteTargetHandles[0].mTransformParams.setTargetSet(targets);
             if (targets.apps.length > 0) {
                 // Unclear why/when target.apps length == 0, but it sure does happen :(
-                topLeftTarget = targets.apps[0];
-                mRemoteTargetHandles[0].mTaskViewSimulator.setPreview(topLeftTarget, null);
+                mRemoteTargetHandles[0].mTaskViewSimulator.setPreview(targets.apps[0], null);
             }
         } else {
-            // split screen
-            topLeftTarget = targets.findTask(splitIds[0]);
-            bottomRightTarget = targets.findTask(splitIds[1]);
+            RemoteAnimationTarget topLeftTarget = targets.apps[0];
+
+            // Fetch the adjacent target for split screen.
+            RemoteAnimationTarget bottomRightTarget = null;
+            for (int i = 1; i < targets.apps.length; i++) {
+                final RemoteAnimationTarget target = targets.apps[i];
+                Rect topLeftBounds = getStartBounds(topLeftTarget);
+                Rect bounds = getStartBounds(target);
+                if (topLeftBounds.left > bounds.right || topLeftBounds.top > bounds.bottom) {
+                    bottomRightTarget = topLeftTarget;
+                    topLeftTarget = target;
+                    break;
+                } else if (topLeftBounds.right < bounds.left || topLeftBounds.bottom < bounds.top) {
+                    bottomRightTarget = target;
+                    break;
+                }
+            }
 
             // remoteTargetHandle[0] denotes topLeft task, so we pass in the bottomRight to exclude,
             // vice versa
-            mStagedSplitBounds = new StagedSplitBounds(
-                    topLeftTarget.startScreenSpaceBounds,
-                    bottomRightTarget.startScreenSpaceBounds, splitIds[0], splitIds[1]);
+            mSplitBounds = new SplitBounds(
+                    getStartBounds(topLeftTarget),
+                    getStartBounds(bottomRightTarget),
+                    topLeftTarget.taskId,
+                    bottomRightTarget.taskId);
             mRemoteTargetHandles[0].mTransformParams.setTargetSet(
                     createRemoteAnimationTargetsForTarget(targets, bottomRightTarget));
             mRemoteTargetHandles[0].mTaskViewSimulator.setPreview(topLeftTarget,
-                    mStagedSplitBounds);
+                    mSplitBounds);
 
             mRemoteTargetHandles[1].mTransformParams.setTargetSet(
                     createRemoteAnimationTargetsForTarget(targets, topLeftTarget));
             mRemoteTargetHandles[1].mTaskViewSimulator.setPreview(bottomRightTarget,
-                    mStagedSplitBounds);
+                    mSplitBounds);
         }
         return mRemoteTargetHandles;
     }
 
     /**
+     * Similar to {@link #assignTargets(RemoteAnimationTargets)}, except this creates distinct
+     * transform params per app in {@code targets.apps} list.
+     */
+    public RemoteTargetHandle[] assignTargetsForDesktop(RemoteAnimationTargets targets) {
+        for (int i = 0; i < mRemoteTargetHandles.length; i++) {
+            RemoteAnimationTarget primaryTaskTarget = targets.apps[i];
+            mRemoteTargetHandles[i].mTransformParams.setTargetSet(
+                    createRemoteAnimationTargetsForTaskId(targets, primaryTaskTarget.taskId));
+            mRemoteTargetHandles[i].mTaskViewSimulator.setPreview(primaryTaskTarget, null);
+        }
+        return mRemoteTargetHandles;
+    }
+
+    private Rect getStartBounds(RemoteAnimationTarget target) {
+        return target.startBounds == null ? target.screenSpaceBounds : target.startBounds;
+    }
+
+    /**
      * Ensures that we aren't excluding ancillary targets such as home/recents
      *
      * @param targetToExclude Will be excluded from the resulting return value.
@@ -144,11 +198,10 @@
      */
     private RemoteAnimationTargets createRemoteAnimationTargetsForTarget(
             RemoteAnimationTargets targets,
-            RemoteAnimationTargetCompat targetToExclude) {
-        ArrayList<RemoteAnimationTargetCompat> targetsWithoutExcluded =
-                new ArrayList<RemoteAnimationTargetCompat>();
+            RemoteAnimationTarget targetToExclude) {
+        ArrayList<RemoteAnimationTarget> targetsWithoutExcluded = new ArrayList<>();
 
-        for (RemoteAnimationTargetCompat targetCompat : targets.unfilteredApps) {
+        for (RemoteAnimationTarget targetCompat : targets.unfilteredApps) {
             if (targetCompat == targetToExclude) {
                 continue;
             }
@@ -162,19 +215,53 @@
 
             targetsWithoutExcluded.add(targetCompat);
         }
-        final RemoteAnimationTargetCompat[] filteredApps =
-                targetsWithoutExcluded.toArray(
-                        new RemoteAnimationTargetCompat[targetsWithoutExcluded.size()]);
+        final RemoteAnimationTarget[] filteredApps = targetsWithoutExcluded.toArray(
+                new RemoteAnimationTarget[targetsWithoutExcluded.size()]);
         return new RemoteAnimationTargets(
                 filteredApps, targets.wallpapers, targets.nonApps, targets.targetMode);
     }
 
+    /**
+     * Ensures that we only animate one specific app target. Includes ancillary targets such as
+     * home/recents
+     *
+     * @param targets remote animation targets to filter
+     * @param taskId  id for a task that we want this remote animation to apply to
+     * @return {@link RemoteAnimationTargets} where app target only includes the app that has the
+     * {@code taskId} that was passed in
+     */
+    private RemoteAnimationTargets createRemoteAnimationTargetsForTaskId(
+            RemoteAnimationTargets targets, int taskId) {
+        RemoteAnimationTarget[] targetApp = null;
+        for (RemoteAnimationTarget targetCompat : targets.unfilteredApps) {
+            if (targetCompat.taskId == taskId) {
+                targetApp = new RemoteAnimationTarget[]{targetCompat};
+                break;
+            }
+        }
+
+        if (targetApp == null) {
+            targetApp = new RemoteAnimationTarget[0];
+        }
+
+        return new RemoteAnimationTargets(targetApp, targets.wallpapers, targets.nonApps,
+                targets.targetMode);
+    }
+
+    /**
+     * The object returned by this is may be modified in
+     * {@link #assignTargetsForSplitScreen(RemoteAnimationTargets)}, specifically the length of the
+     * array may be shortened based on the number of RemoteAnimationTargets present.
+     * <p>
+     * This can be accessed at any time, however the count will be more accurate if accessed after
+     * calling one of the respective assignTargets*() methods
+     */
     public RemoteTargetHandle[] getRemoteTargetHandles() {
         return mRemoteTargetHandles;
     }
 
-    public StagedSplitBounds getStagedSplitBounds() {
-        return mStagedSplitBounds;
+    public SplitBounds getSplitBounds() {
+        return mSplitBounds;
     }
 
     /**
diff --git a/quickstep/src/com/android/quickstep/RotationTouchHelper.java b/quickstep/src/com/android/quickstep/RotationTouchHelper.java
index f1e20db..8626c40 100644
--- a/quickstep/src/com/android/quickstep/RotationTouchHelper.java
+++ b/quickstep/src/com/android/quickstep/RotationTouchHelper.java
@@ -18,25 +18,26 @@
 import static android.view.Display.DEFAULT_DISPLAY;
 import static android.view.Surface.ROTATION_0;
 
+import static com.android.launcher3.MotionEventsUtils.isTrackpadMultiFingerSwipe;
 import static com.android.launcher3.util.DisplayController.CHANGE_ACTIVE_SCREEN;
 import static com.android.launcher3.util.DisplayController.CHANGE_ALL;
 import static com.android.launcher3.util.DisplayController.CHANGE_NAVIGATION_MODE;
 import static com.android.launcher3.util.DisplayController.CHANGE_ROTATION;
 import static com.android.launcher3.util.DisplayController.CHANGE_SUPPORTED_BOUNDS;
-import static com.android.launcher3.util.DisplayController.NavigationMode.THREE_BUTTONS;
 import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
+import static com.android.launcher3.util.NavigationMode.THREE_BUTTONS;
 
 import android.content.Context;
 import android.content.res.Resources;
 import android.view.MotionEvent;
 import android.view.OrientationEventListener;
 
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.util.DisplayController;
 import com.android.launcher3.util.DisplayController.DisplayInfoChangeListener;
 import com.android.launcher3.util.DisplayController.Info;
-import com.android.launcher3.util.DisplayController.NavigationMode;
 import com.android.launcher3.util.MainThreadInitializedObject;
+import com.android.launcher3.util.NavigationMode;
 import com.android.quickstep.util.RecentsOrientedState;
 import com.android.systemui.shared.system.QuickStepContract;
 import com.android.systemui.shared.system.TaskStackChangeListener;
@@ -231,15 +232,19 @@
     /**
      * @return whether the coordinates of the {@param event} is in the swipe up gesture region.
      */
-    public boolean isInSwipeUpTouchRegion(MotionEvent event) {
-        return mOrientationTouchTransformer.touchInValidSwipeRegions(event.getX(), event.getY());
+    public boolean isInSwipeUpTouchRegion(MotionEvent event, BaseActivityInterface activity) {
+        return isInSwipeUpTouchRegion(event, 0, activity);
     }
 
     /**
      * @return whether the coordinates of the {@param event} with the given {@param pointerIndex}
      *         is in the swipe up gesture region.
      */
-    public boolean isInSwipeUpTouchRegion(MotionEvent event, int pointerIndex) {
+    public boolean isInSwipeUpTouchRegion(MotionEvent event, int pointerIndex,
+            BaseActivityInterface activity) {
+        if (isTrackpadMultiFingerSwipe(event)) {
+            return true;
+        }
         return mOrientationTouchTransformer.touchInValidSwipeRegions(event.getX(pointerIndex),
                 event.getY(pointerIndex));
     }
@@ -321,9 +326,9 @@
         if (enable && !mInOverview && !TestProtocol.sDisableSensorRotation) {
             // Clear any previous state from sensor manager
             mSensorRotation = mCurrentAppRotation;
-            mOrientationListener.enable();
+            UI_HELPER_EXECUTOR.execute(mOrientationListener::enable);
         } else {
-            mOrientationListener.disable();
+            UI_HELPER_EXECUTOR.execute(mOrientationListener::disable);
         }
     }
 
@@ -345,7 +350,8 @@
                 enableMultipleRegions(true);
             }
             activityInterface.onExitOverview(this, mExitOverviewRunnable);
-        } else if (endTarget == GestureState.GestureEndTarget.HOME) {
+        } else if (endTarget == GestureState.GestureEndTarget.HOME
+                || endTarget == GestureState.GestureEndTarget.ALL_APPS) {
             enableMultipleRegions(false);
         } else if (endTarget == GestureState.GestureEndTarget.NEW_TASK) {
             if (mOrientationTouchTransformer.getQuickStepStartingRotation() == -1) {
diff --git a/quickstep/src/com/android/quickstep/SwipeUpAnimationLogic.java b/quickstep/src/com/android/quickstep/SwipeUpAnimationLogic.java
index 9667108..25ac47a 100644
--- a/quickstep/src/com/android/quickstep/SwipeUpAnimationLogic.java
+++ b/quickstep/src/com/android/quickstep/SwipeUpAnimationLogic.java
@@ -17,7 +17,6 @@
 
 import static com.android.launcher3.anim.Interpolators.ACCEL_1_5;
 import static com.android.launcher3.anim.Interpolators.LINEAR;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_SPLIT_SELECT;
 
 import android.animation.Animator;
 import android.content.Context;
@@ -25,12 +24,14 @@
 import android.graphics.Matrix.ScaleToFit;
 import android.graphics.Rect;
 import android.graphics.RectF;
+import android.view.RemoteAnimationTarget;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.UiThread;
 
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.anim.AnimationSuccessListener;
 import com.android.launcher3.anim.AnimatorPlaybackController;
 import com.android.launcher3.anim.PendingAnimation;
@@ -38,11 +39,12 @@
 import com.android.quickstep.RemoteTargetGluer.RemoteTargetHandle;
 import com.android.quickstep.util.AnimatorControllerWithResistance;
 import com.android.quickstep.util.RectFSpringAnim;
+import com.android.quickstep.util.RectFSpringAnim.DefaultSpringConfig;
+import com.android.quickstep.util.RectFSpringAnim.TaskbarHotseatSpringConfig;
+import com.android.quickstep.util.SurfaceTransaction.SurfaceProperties;
 import com.android.quickstep.util.TaskViewSimulator;
 import com.android.quickstep.util.TransformParams;
 import com.android.quickstep.util.TransformParams.BuilderProxy;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
-import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams.Builder;
 
 import java.util.Arrays;
 import java.util.function.Consumer;
@@ -65,23 +67,23 @@
     // 0 => preview snapShot is completely visible, and hotseat is completely translated down
     // 1 => preview snapShot is completely aligned with the recents view and hotseat is completely
     // visible.
-    protected final AnimatedFloat mCurrentShift = new AnimatedFloat(this::updateFinalShift);
+    protected final AnimatedFloat mCurrentShift = new AnimatedFloat(this::onCurrentShiftUpdated);
+    protected float mCurrentDisplacement;
 
     // The distance needed to drag to reach the task size in recents.
     protected int mTransitionDragLength;
     // How much further we can drag past recents, as a factor of mTransitionDragLength.
     protected float mDragLengthFactor = 1;
 
-    protected boolean mIsSwipeForStagedSplit;
+    protected boolean mIsSwipeForSplit;
 
     public SwipeUpAnimationLogic(Context context, RecentsAnimationDeviceState deviceState,
             GestureState gestureState) {
         mContext = context;
         mDeviceState = deviceState;
         mGestureState = gestureState;
-
-        mIsSwipeForStagedSplit = ENABLE_SPLIT_SELECT.get() &&
-                TopTaskTracker.INSTANCE.get(context).getRunningSplitTaskIds().length > 1;
+        updateIsGestureForSplit(TopTaskTracker.INSTANCE.get(context)
+                .getRunningSplitTaskIds().length);
 
         mTargetGluer = new RemoteTargetGluer(mContext, mGestureState.getActivityInterface());
         mRemoteTargetHandles = mTargetGluer.getRemoteTargetHandles();
@@ -118,7 +120,9 @@
     @UiThread
     public void updateDisplacement(float displacement) {
         // We are moving in the negative x/y direction
-        displacement = -displacement;
+        displacement = overrideDisplacementForTransientTaskbar(-displacement);
+        mCurrentDisplacement = displacement;
+
         float shift;
         if (displacement > mTransitionDragLength * mDragLengthFactor && mTransitionDragLength > 0) {
             shift = mDragLengthFactor;
@@ -131,10 +135,21 @@
     }
 
     /**
+     * When Transient Taskbar is enabled, subclasses can override the displacement to keep the app
+     * window at the bottom of the screen while taskbar is being swiped in.
+     * @param displacement The distance the user has swiped up from the bottom of the screen. This
+     *                     value will be positive unless the user swipe downwards.
+     * @return the overridden displacement.
+     */
+    protected float overrideDisplacementForTransientTaskbar(float displacement) {
+        return displacement;
+    }
+
+    /**
      * Called when the value of {@link #mCurrentShift} changes
      */
     @UiThread
-    public abstract void updateFinalShift();
+    public abstract void onCurrentShiftUpdated();
 
     protected PagedOrientationHandler getOrientationHandler() {
         // OrientationHandler should be independent of remote target, can directly take one
@@ -145,6 +160,13 @@
     protected abstract class HomeAnimationFactory {
         protected float mSwipeVelocity;
 
+        /**
+         * Returns true if we know the home animation involves an item in the hotseat.
+         */
+        public boolean isInHotseat() {
+            return false;
+        }
+
         public @NonNull RectF getWindowTargetRect() {
             PagedOrientationHandler orientationHandler = getOrientationHandler();
             DeviceProfile dp = mDp;
@@ -259,6 +281,10 @@
         return out;
     }
 
+    protected void updateIsGestureForSplit(int targetCount) {
+        mIsSwipeForSplit = targetCount > 1;
+    }
+
     private RectFSpringAnim getWindowAnimationToHomeInternal(
             HomeAnimationFactory homeAnimationFactory, RectF targetRect,
             TransformParams transformParams, TaskViewSimulator taskViewSimulator,
@@ -276,7 +302,11 @@
         homeToWindowPositionMap.invert(windowToHomePositionMap);
         windowToHomePositionMap.mapRect(startRect);
 
-        RectFSpringAnim anim = new RectFSpringAnim(startRect, targetRect, mContext, mDp);
+        boolean useTaskbarHotseatParams = mDp.isTaskbarPresent
+                && homeAnimationFactory.isInHotseat();
+        RectFSpringAnim anim = new RectFSpringAnim(useTaskbarHotseatParams
+                ? new TaskbarHotseatSpringConfig(mContext, startRect, targetRect)
+                : new DefaultSpringConfig(mContext, mDp, startRect, targetRect));
         homeAnimationFactory.setAnimation(anim);
 
         SpringAnimationRunner runner = new SpringAnimationRunner(
@@ -338,11 +368,11 @@
         }
 
         @Override
-        public void onBuildTargetParams(
-                Builder builder, RemoteAnimationTargetCompat app, TransformParams params) {
-            builder.withMatrix(mMatrix)
-                    .withWindowCrop(mCropRect)
-                    .withCornerRadius(params.getCornerRadius());
+        public void onBuildTargetParams(SurfaceProperties builder, RemoteAnimationTarget app,
+                TransformParams params) {
+            builder.setMatrix(mMatrix)
+                    .setWindowCrop(mCropRect)
+                    .setCornerRadius(params.getCornerRadius());
         }
 
         @Override
diff --git a/quickstep/src/com/android/quickstep/SystemUiProxy.java b/quickstep/src/com/android/quickstep/SystemUiProxy.java
index 39d8b54..ba80951 100644
--- a/quickstep/src/com/android/quickstep/SystemUiProxy.java
+++ b/quickstep/src/com/android/quickstep/SystemUiProxy.java
@@ -17,41 +17,64 @@
 
 import static android.app.ActivityManager.RECENT_IGNORE_UNAVAILABLE;
 
-import static com.android.launcher3.util.DisplayController.CHANGE_NAVIGATION_MODE;
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
+import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
 
+import android.app.ActivityManager;
+import android.app.ActivityOptions;
 import android.app.PendingIntent;
 import android.app.PictureInPictureParams;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
-import android.graphics.Bitmap;
-import android.graphics.Insets;
+import android.content.pm.PackageManager;
+import android.content.pm.ShortcutInfo;
 import android.graphics.Rect;
 import android.os.Bundle;
+import android.os.Handler;
 import android.os.IBinder;
 import android.os.IBinder.DeathRecipient;
+import android.os.Message;
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.util.Log;
+import android.view.IRecentsAnimationController;
+import android.view.IRecentsAnimationRunner;
+import android.view.IRemoteAnimationRunner;
 import android.view.MotionEvent;
 import android.view.RemoteAnimationAdapter;
 import android.view.RemoteAnimationTarget;
 import android.view.SurfaceControl;
 import android.window.IOnBackInvokedCallback;
+import android.window.RemoteTransition;
+import android.window.TaskSnapshot;
+import android.window.TransitionFilter;
 
-import com.android.launcher3.util.DisplayController;
-import com.android.launcher3.util.DisplayController.Info;
+import androidx.annotation.MainThread;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
+import com.android.internal.logging.InstanceId;
+import com.android.internal.util.ScreenshotRequest;
+import com.android.internal.view.AppearanceRegion;
 import com.android.launcher3.util.MainThreadInitializedObject;
+import com.android.launcher3.util.Preconditions;
 import com.android.launcher3.util.SplitConfigurationOptions;
 import com.android.systemui.shared.recents.ISystemUiProxy;
-import com.android.systemui.shared.recents.model.Task;
-import com.android.systemui.shared.system.RemoteTransitionCompat;
+import com.android.systemui.shared.recents.model.ThumbnailData;
+import com.android.systemui.shared.system.RecentsAnimationControllerCompat;
+import com.android.systemui.shared.system.RecentsAnimationListener;
 import com.android.systemui.shared.system.smartspace.ILauncherUnlockAnimationController;
 import com.android.systemui.shared.system.smartspace.ISysuiUnlockAnimationController;
 import com.android.systemui.shared.system.smartspace.SmartspaceState;
+import com.android.systemui.unfold.progress.IUnfoldAnimation;
+import com.android.systemui.unfold.progress.IUnfoldTransitionListener;
 import com.android.wm.shell.back.IBackAnimation;
+import com.android.wm.shell.bubbles.IBubbles;
+import com.android.wm.shell.bubbles.IBubblesListener;
+import com.android.wm.shell.desktopmode.IDesktopMode;
+import com.android.wm.shell.draganddrop.IDragAndDrop;
 import com.android.wm.shell.onehanded.IOneHanded;
 import com.android.wm.shell.pip.IPip;
 import com.android.wm.shell.pip.IPipAnimationListener;
@@ -66,18 +89,23 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.LinkedHashMap;
 
 /**
  * Holds the reference to SystemUI.
  */
-public class SystemUiProxy implements ISystemUiProxy, DisplayController.DisplayInfoChangeListener {
+public class SystemUiProxy implements ISystemUiProxy {
     private static final String TAG = SystemUiProxy.class.getSimpleName();
 
     public static final MainThreadInitializedObject<SystemUiProxy> INSTANCE =
             new MainThreadInitializedObject<>(SystemUiProxy::new);
 
+    private static final int MSG_SET_SHELF_HEIGHT = 1;
+    private static final int MSG_SET_LAUNCHER_KEEP_CLEAR_AREA_HEIGHT = 2;
+
     private ISystemUiProxy mSystemUiProxy;
     private IPip mPip;
+    private IBubbles mBubbles;
     private ISysuiUnlockAnimationController mSysuiUnlockAnimationController;
     private ISplitScreen mSplitScreen;
     private IOneHanded mOneHanded;
@@ -85,6 +113,8 @@
     private IStartingWindow mStartingWindow;
     private IRecentTasks mRecentTasks;
     private IBackAnimation mBackAnimation;
+    private IDesktopMode mDesktopMode;
+    private IUnfoldAnimation mUnfoldAnimation;
     private final DeathRecipient mSystemUiProxyDeathRecipient = () -> {
         MAIN_EXECUTOR.execute(() -> clearProxy());
     };
@@ -94,34 +124,47 @@
     // up to the caller to clear the listeners to prevent leaks as these can be held indefinitely
     // in case SysUI needs to rebind.
     private IPipAnimationListener mPipAnimationListener;
+    private IBubblesListener mBubblesListener;
     private ISplitScreenListener mSplitScreenListener;
     private IStartingWindowListener mStartingWindowListener;
-    private ILauncherUnlockAnimationController mPendingLauncherUnlockAnimationController;
+    private ILauncherUnlockAnimationController mLauncherUnlockAnimationController;
     private IRecentTasksListener mRecentTasksListener;
-    private final ArrayList<RemoteTransitionCompat> mRemoteTransitions = new ArrayList<>();
+    private IUnfoldTransitionListener mUnfoldAnimationListener;
+    private final LinkedHashMap<RemoteTransition, TransitionFilter> mRemoteTransitions =
+            new LinkedHashMap<>();
+    private IBinder mOriginalTransactionToken = null;
     private IOnBackInvokedCallback mBackToLauncherCallback;
+    private IRemoteAnimationRunner mBackToLauncherRunner;
+    private IDragAndDrop mDragAndDrop;
 
     // Used to dedupe calls to SystemUI
     private int mLastShelfHeight;
     private boolean mLastShelfVisible;
-    private float mLastNavButtonAlpha;
-    private boolean mLastNavButtonAnimate;
-    private boolean mHasNavButtonAlphaBeenSet = false;
-    private Runnable mPendingSetNavButtonAlpha = null;
+
+    // Used to dedupe calls to SystemUI
+    private int mLastLauncherKeepClearAreaHeight;
+    private boolean mLastLauncherKeepClearAreaHeightVisible;
+
+    private final Context mContext;
+    private final Handler mAsyncHandler;
 
     // TODO(141886704): Find a way to remove this
     private int mLastSystemUiStateFlags;
 
-    public SystemUiProxy(Context context) {
-        DisplayController.INSTANCE.get(context).addChangeListener(this);
-    }
+    /**
+     * This is a singleton pending intent that is used to start recents via Shell (which is a
+     * different process). It is bare-bones, so it's expected that the component and options will
+     * be provided via fill-in intent.
+     */
+    private final PendingIntent mRecentsPendingIntent;
 
-    @Override
-    public void onDisplayInfoChanged(Context context, Info info, int flags) {
-        if ((flags & CHANGE_NAVIGATION_MODE) != 0) {
-            // Whenever the nav mode changes, force reset the nav button alpha
-            setNavBarButtonAlpha(1f, false);
-        }
+    public SystemUiProxy(Context context) {
+        mContext = context;
+        mAsyncHandler = new Handler(UI_HELPER_EXECUTOR.getLooper(), this::handleMessageAsync);
+        final Intent baseIntent = new Intent().setPackage(mContext.getPackageName());
+        mRecentsPendingIntent = PendingIntent.getActivity(mContext, 0, baseIntent,
+                PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT
+                        | Intent.FILL_IN_COMPONENT);
     }
 
     @Override
@@ -163,14 +206,21 @@
         return null;
     }
 
-    public void setProxy(ISystemUiProxy proxy, IPip pip, ISplitScreen splitScreen,
+    /**
+     * Sets proxy state, including death linkage, various listeners, and other configuration objects
+     */
+    @MainThread
+    public void setProxy(ISystemUiProxy proxy, IPip pip, IBubbles bubbles, ISplitScreen splitScreen,
             IOneHanded oneHanded, IShellTransitions shellTransitions,
             IStartingWindow startingWindow, IRecentTasks recentTasks,
             ISysuiUnlockAnimationController sysuiUnlockAnimationController,
-            IBackAnimation backAnimation) {
+            IBackAnimation backAnimation, IDesktopMode desktopMode,
+            IUnfoldAnimation unfoldAnimation, IDragAndDrop dragAndDrop) {
+        Preconditions.assertUIThread();
         unlinkToDeath();
         mSystemUiProxy = proxy;
         mPip = pip;
+        mBubbles = bubbles;
         mSplitScreen = splitScreen;
         mOneHanded = oneHanded;
         mShellTransitions = shellTransitions;
@@ -178,40 +228,29 @@
         mSysuiUnlockAnimationController = sysuiUnlockAnimationController;
         mRecentTasks = recentTasks;
         mBackAnimation = backAnimation;
+        mDesktopMode = desktopMode;
+        mUnfoldAnimation = unfoldAnimation;
+        mDragAndDrop = dragAndDrop;
         linkToDeath();
         // re-attach the listeners once missing due to setProxy has not been initialized yet.
-        if (mPipAnimationListener != null && mPip != null) {
-            setPinnedStackAnimationListener(mPipAnimationListener);
-        }
-        if (mSplitScreenListener != null && mSplitScreen != null) {
-            registerSplitScreenListener(mSplitScreenListener);
-        }
-        if (mStartingWindowListener != null && mStartingWindow != null) {
-            setStartingWindowListener(mStartingWindowListener);
-        }
-        if (mPendingLauncherUnlockAnimationController != null
-                && mSysuiUnlockAnimationController != null) {
-            setLauncherUnlockAnimationController(mPendingLauncherUnlockAnimationController);
-            mPendingLauncherUnlockAnimationController = null;
-        }
-        for (int i = mRemoteTransitions.size() - 1; i >= 0; --i) {
-            registerRemoteTransition(mRemoteTransitions.get(i));
-        }
-        if (mRecentTasksListener != null && mRecentTasks != null) {
-            registerRecentTasksListener(mRecentTasksListener);
-        }
-        if (mBackAnimation != null && mBackToLauncherCallback != null) {
-            setBackToLauncherCallback(mBackToLauncherCallback);
-        }
-
-        if (mPendingSetNavButtonAlpha != null) {
-            mPendingSetNavButtonAlpha.run();
-            mPendingSetNavButtonAlpha = null;
-        }
+        setPipAnimationListener(mPipAnimationListener);
+        setBubblesListener(mBubblesListener);
+        registerSplitScreenListener(mSplitScreenListener);
+        setStartingWindowListener(mStartingWindowListener);
+        setLauncherUnlockAnimationController(mLauncherUnlockAnimationController);
+        new LinkedHashMap<>(mRemoteTransitions).forEach(this::registerRemoteTransition);
+        setupTransactionQueue();
+        registerRecentTasksListener(mRecentTasksListener);
+        setBackToLauncherCallback(mBackToLauncherCallback, mBackToLauncherRunner);
+        setUnfoldAnimationListener(mUnfoldAnimationListener);
     }
 
+    /**
+     * Clear the proxy to release held resources and turn the majority of its operations into no-ops
+     */
+    @MainThread
     public void clearProxy() {
-        setProxy(null, null, null, null, null, null, null, null, null);
+        setProxy(null, null, null, null, null, null, null, null, null, null, null, null, null);
     }
 
     // TODO(141886704): Find a way to remove this
@@ -270,45 +309,10 @@
         }
     }
 
-    @Override
-    public Rect getNonMinimizedSplitScreenSecondaryBounds() {
-        if (mSystemUiProxy != null) {
-            try {
-                return mSystemUiProxy.getNonMinimizedSplitScreenSecondaryBounds();
-            } catch (RemoteException e) {
-                Log.w(TAG, "Failed call getNonMinimizedSplitScreenSecondaryBounds", e);
-            }
-        }
-        return null;
-    }
-
-    public float getLastNavButtonAlpha() {
-        return mLastNavButtonAlpha;
-    }
-
-    @Override
-    public void setNavBarButtonAlpha(float alpha, boolean animate) {
-        boolean changed = Float.compare(alpha, mLastNavButtonAlpha) != 0
-                || animate != mLastNavButtonAnimate
-                || !mHasNavButtonAlphaBeenSet;
-        if (changed) {
-            if (mSystemUiProxy == null) {
-                mPendingSetNavButtonAlpha = () -> setNavBarButtonAlpha(alpha, animate);
-            } else {
-                mLastNavButtonAlpha = alpha;
-                mLastNavButtonAnimate = animate;
-                mHasNavButtonAlphaBeenSet = true;
-                try {
-                    mSystemUiProxy.setNavBarButtonAlpha(alpha, animate);
-                } catch (RemoteException e) {
-                    Log.w(TAG, "Failed call setNavBarButtonAlpha", e);
-                }
-            }
-        }
-    }
-
+    @MainThread
     @Override
     public void onStatusBarMotionEvent(MotionEvent event) {
+        Preconditions.assertUIThread();
         if (mSystemUiProxy != null) {
             try {
                 mSystemUiProxy.onStatusBarMotionEvent(event);
@@ -385,53 +389,6 @@
     }
 
     @Override
-    public void handleImageAsScreenshot(Bitmap bitmap, Rect rect, Insets insets, int i) {
-        if (mSystemUiProxy != null) {
-            try {
-                mSystemUiProxy.handleImageAsScreenshot(bitmap, rect, insets, i);
-            } catch (RemoteException e) {
-                Log.w(TAG, "Failed call handleImageAsScreenshot", e);
-            }
-        }
-    }
-
-    @Override
-    public void setSplitScreenMinimized(boolean minimized) {
-        if (mSystemUiProxy != null) {
-            try {
-                mSystemUiProxy.setSplitScreenMinimized(minimized);
-            } catch (RemoteException e) {
-                Log.w(TAG, "Failed call setSplitScreenMinimized", e);
-            }
-        }
-    }
-
-    @Override
-    public void notifySwipeUpGestureStarted() {
-        if (mSystemUiProxy != null) {
-            try {
-                mSystemUiProxy.notifySwipeUpGestureStarted();
-            } catch (RemoteException e) {
-                Log.w(TAG, "Failed call notifySwipeUpGestureStarted", e);
-            }
-        }
-    }
-
-    /**
-     * Notifies that swipe-to-home action is finished.
-     */
-    @Override
-    public void notifySwipeToHomeFinished() {
-        if (mSystemUiProxy != null) {
-            try {
-                mSystemUiProxy.notifySwipeToHomeFinished();
-            } catch (RemoteException e) {
-                Log.w(TAG, "Failed call notifySwipeToHomeFinished", e);
-            }
-        }
-    }
-
-    @Override
     public void notifyPrioritizedRotation(int rotation) {
         if (mSystemUiProxy != null) {
             try {
@@ -471,14 +428,12 @@
     }
 
     @Override
-    public void handleImageBundleAsScreenshot(Bundle screenImageBundle, Rect locationInScreen,
-            Insets visibleInsets, Task.TaskKey task) {
+    public void takeScreenshot(ScreenshotRequest request) {
         if (mSystemUiProxy != null) {
             try {
-                mSystemUiProxy.handleImageBundleAsScreenshot(screenImageBundle, locationInScreen,
-                    visibleInsets, task);
+                mSystemUiProxy.takeScreenshot(request);
             } catch (RemoteException e) {
-                Log.w(TAG, "Failed call handleImageBundleAsScreenshot");
+                Log.w(TAG, "Failed call takeScreenshot");
             }
         }
     }
@@ -513,12 +468,20 @@
      * Sets the shelf height.
      */
     public void setShelfHeight(boolean visible, int shelfHeight) {
+        Message.obtain(mAsyncHandler, MSG_SET_SHELF_HEIGHT,
+                visible ? 1 : 0 , shelfHeight).sendToTarget();
+    }
+
+    @WorkerThread
+    private void setShelfHeightAsync(int visibleInt, int shelfHeight) {
+        boolean visible = visibleInt != 0;
         boolean changed = visible != mLastShelfVisible || shelfHeight != mLastShelfHeight;
-        if (mPip != null && changed) {
+        IPip pip = mPip;
+        if (pip != null && changed) {
             mLastShelfVisible = visible;
             mLastShelfHeight = shelfHeight;
             try {
-                mPip.setShelfHeight(visible, shelfHeight);
+                pip.setShelfHeight(visible, shelfHeight);
             } catch (RemoteException e) {
                 Log.w(TAG, "Failed call setShelfHeight visible: " + visible
                         + " height: " + shelfHeight, e);
@@ -527,12 +490,39 @@
     }
 
     /**
-     * Sets listener to get pinned stack animation callbacks.
+     * Sets the height of the keep clear area that is going to be reported by
+     * the Launcher for the Hotseat.
      */
-    public void setPinnedStackAnimationListener(IPipAnimationListener listener) {
+    public void setLauncherKeepClearAreaHeight(boolean visible, int height) {
+        Message.obtain(mAsyncHandler, MSG_SET_LAUNCHER_KEEP_CLEAR_AREA_HEIGHT,
+                visible ? 1 : 0 , height).sendToTarget();
+    }
+
+    @WorkerThread
+    private void setLauncherKeepClearAreaHeight(int visibleInt, int height) {
+        boolean visible = visibleInt != 0;
+        boolean changed = visible != mLastLauncherKeepClearAreaHeightVisible
+                || height != mLastLauncherKeepClearAreaHeight;
+        IPip pip = mPip;
+        if (pip != null && changed) {
+            mLastLauncherKeepClearAreaHeightVisible = visible;
+            mLastLauncherKeepClearAreaHeight = height;
+            try {
+                pip.setLauncherKeepClearAreaHeight(visible, height);
+            } catch (RemoteException e) {
+                Log.w(TAG, "Failed call setLauncherKeepClearAreaHeight visible: " + visible
+                        + " height: " + height, e);
+            }
+        }
+    }
+
+    /**
+     * Sets listener to get pip animation callbacks.
+     */
+    public void setPipAnimationListener(IPipAnimationListener listener) {
         if (mPip != null) {
             try {
-                mPip.setPinnedStackAnimationListener(listener);
+                mPip.setPipAnimationListener(listener);
             } catch (RemoteException e) {
                 Log.w(TAG, "Failed call setPinnedStackAnimationListener", e);
             }
@@ -540,12 +530,17 @@
         mPipAnimationListener = listener;
     }
 
+    /**
+     * @return Destination bounds of auto-pip animation, {@code null} if the animation is not ready.
+     */
+    @Nullable
     public Rect startSwipePipToHome(ComponentName componentName, ActivityInfo activityInfo,
-            PictureInPictureParams pictureInPictureParams, int launcherRotation, int shelfHeight) {
+            PictureInPictureParams pictureInPictureParams, int launcherRotation,
+            Rect hotseatKeepClearArea) {
         if (mPip != null) {
             try {
                 return mPip.startSwipePipToHome(componentName, activityInfo,
-                        pictureInPictureParams, launcherRotation, shelfHeight);
+                        pictureInPictureParams, launcherRotation, hotseatKeepClearArea);
             } catch (RemoteException e) {
                 Log.w(TAG, "Failed call startSwipePipToHome", e);
             }
@@ -569,6 +564,99 @@
         }
     }
 
+    /**
+     * Notifies WM Shell that launcher has aborted all the animation for swipe to home. WM Shell
+     * can use this callback to clean up its internal states.
+     */
+    public void abortSwipePipToHome(int taskId, ComponentName componentName) {
+        if (mPip != null) {
+            try {
+                mPip.abortSwipePipToHome(taskId, componentName);
+            } catch (RemoteException e) {
+                Log.w(TAG, "Failed call abortSwipePipToHome");
+            }
+        }
+    }
+
+    /**
+     * Sets the next pip animation type to be the alpha animation.
+     */
+    public void setPipAnimationTypeToAlpha() {
+        if (mPip != null) {
+            try {
+                mPip.setPipAnimationTypeToAlpha();
+            } catch (RemoteException e) {
+                Log.w(TAG, "Failed call setPipAnimationTypeToAlpha", e);
+            }
+        }
+    }
+
+    /**
+     * Sets the app icon size in pixel used by Launcher all apps.
+     */
+    public void setLauncherAppIconSize(int iconSizePx) {
+        if (mPip != null) {
+            try {
+                mPip.setLauncherAppIconSize(iconSizePx);
+            } catch (RemoteException e) {
+                Log.w(TAG, "Failed call setLauncherAppIconSize", e);
+            }
+        }
+    }
+
+    //
+    // Bubbles
+    //
+
+    /**
+     * Sets the listener to be notified of bubble state changes.
+     */
+    public void setBubblesListener(IBubblesListener listener) {
+        if (mBubbles != null) {
+            try {
+                if (mBubblesListener != null) {
+                    // Clear out any previous listener
+                    mBubbles.unregisterBubbleListener(mBubblesListener);
+                }
+                if (listener != null) {
+                    mBubbles.registerBubbleListener(listener);
+                }
+            } catch (RemoteException e) {
+                Log.w(TAG, "Failed call registerBubblesListener");
+            }
+        }
+        mBubblesListener = listener;
+    }
+
+    /**
+     * Tells SysUI to show the bubble with the provided key.
+     * @param key the key of the bubble to show.
+     * @param onLauncherHome whether the bubble is showing on launcher home or not (modifies where
+     *                       the expanded bubble view is placed).
+     */
+    public void showBubble(String key, boolean onLauncherHome) {
+        if (mBubbles != null) {
+            try {
+                mBubbles.showBubble(key, onLauncherHome);
+            } catch (RemoteException e) {
+                Log.w(TAG, "Failed call showBubble");
+            }
+        }
+    }
+
+    /**
+     * Tells SysUI to collapse the bubbles.
+     */
+    public void collapseBubbles() {
+        if (mBubbles != null) {
+            try {
+                mBubbles.collapseBubbles();
+            } catch (RemoteException e) {
+                Log.w(TAG, "Failed call collapseBubbles");
+            }
+        }
+    }
+
     //
     // Splitscreen
     //
@@ -596,15 +684,57 @@
     }
 
     /** Start multiple tasks in split-screen simultaneously. */
-    public void startTasks(int mainTaskId, Bundle mainOptions, int sideTaskId, Bundle sideOptions,
-            @SplitConfigurationOptions.StagePosition int sidePosition, float splitRatio,
-            RemoteTransitionCompat remoteTransition) {
+    public void startTasks(int taskId1, Bundle options1, int taskId2, Bundle options2,
+            @SplitConfigurationOptions.StagePosition int splitPosition, float splitRatio,
+            RemoteTransition remoteTransition, InstanceId instanceId) {
         if (mSystemUiProxy != null) {
             try {
-                mSplitScreen.startTasks(mainTaskId, mainOptions, sideTaskId, sideOptions,
-                        sidePosition, splitRatio, remoteTransition.getTransition());
+                mSplitScreen.startTasks(taskId1, options1, taskId2, options2, splitPosition,
+                        splitRatio, remoteTransition, instanceId);
             } catch (RemoteException e) {
-                Log.w(TAG, "Failed call startTask");
+                Log.w(TAG, "Failed call startTasks");
+            }
+        }
+    }
+
+    public void startIntentAndTask(PendingIntent pendingIntent, int userId1, Bundle options1,
+            int taskId, Bundle options2, @SplitConfigurationOptions.StagePosition int splitPosition,
+            float splitRatio, RemoteTransition remoteTransition, InstanceId instanceId) {
+        if (mSystemUiProxy != null) {
+            try {
+                mSplitScreen.startIntentAndTask(pendingIntent, userId1, options1, taskId, options2,
+                        splitPosition, splitRatio, remoteTransition, instanceId);
+            } catch (RemoteException e) {
+                Log.w(TAG, "Failed call startIntentAndTask");
+            }
+        }
+    }
+
+    public void startIntents(PendingIntent pendingIntent1, int userId1,
+            @Nullable ShortcutInfo shortcutInfo1, Bundle options1, PendingIntent pendingIntent2,
+            int userId2, @Nullable ShortcutInfo shortcutInfo2, Bundle options2,
+            @SplitConfigurationOptions.StagePosition int splitPosition, float splitRatio,
+            RemoteTransition remoteTransition, InstanceId instanceId) {
+        if (mSystemUiProxy != null) {
+            try {
+                mSplitScreen.startIntents(pendingIntent1, userId1, shortcutInfo1, options1,
+                        pendingIntent2, userId2, shortcutInfo2, options2, splitPosition, splitRatio,
+                        remoteTransition, instanceId);
+            } catch (RemoteException e) {
+                Log.w(TAG, "Failed call startIntents");
+            }
+        }
+    }
+
+    public void startShortcutAndTask(ShortcutInfo shortcutInfo, Bundle options1, int taskId,
+            Bundle options2, @SplitConfigurationOptions.StagePosition int splitPosition,
+            float splitRatio, RemoteTransition remoteTransition, InstanceId instanceId) {
+        if (mSystemUiProxy != null) {
+            try {
+                mSplitScreen.startShortcutAndTask(shortcutInfo, options1, taskId, options2,
+                        splitPosition, splitRatio, remoteTransition, instanceId);
+            } catch (RemoteException e) {
+                Log.w(TAG, "Failed call startShortcutAndTask");
             }
         }
     }
@@ -612,50 +742,84 @@
     /**
      * Start multiple tasks in split-screen simultaneously.
      */
-    public void startTasksWithLegacyTransition(int mainTaskId, Bundle mainOptions, int sideTaskId,
-            Bundle sideOptions, @SplitConfigurationOptions.StagePosition int sidePosition,
-            float splitRatio, RemoteAnimationAdapter adapter) {
+    public void startTasksWithLegacyTransition(int taskId1, Bundle options1, int taskId2,
+            Bundle options2, @SplitConfigurationOptions.StagePosition int splitPosition,
+            float splitRatio, RemoteAnimationAdapter adapter, InstanceId instanceId) {
         if (mSystemUiProxy != null) {
             try {
-                mSplitScreen.startTasksWithLegacyTransition(mainTaskId, mainOptions, sideTaskId,
-                        sideOptions, sidePosition, splitRatio, adapter);
+                mSplitScreen.startTasksWithLegacyTransition(taskId1, options1, taskId2, options2,
+                        splitPosition, splitRatio, adapter, instanceId);
             } catch (RemoteException e) {
                 Log.w(TAG, "Failed call startTasksWithLegacyTransition");
             }
         }
     }
 
-    public void startIntentAndTaskWithLegacyTransition(PendingIntent pendingIntent,
-            Intent fillInIntent, int taskId, Bundle mainOptions, Bundle sideOptions,
-            @SplitConfigurationOptions.StagePosition int sidePosition, float splitRatio,
-            RemoteAnimationAdapter adapter) {
+    public void startIntentAndTaskWithLegacyTransition(PendingIntent pendingIntent, int userId1,
+            Bundle options1, int taskId, Bundle options2,
+            @SplitConfigurationOptions.StagePosition int splitPosition, float splitRatio,
+            RemoteAnimationAdapter adapter, InstanceId instanceId) {
         if (mSystemUiProxy != null) {
             try {
-                mSplitScreen.startIntentAndTaskWithLegacyTransition(pendingIntent, fillInIntent,
-                        taskId, mainOptions, sideOptions, sidePosition, splitRatio, adapter);
+                mSplitScreen.startIntentAndTaskWithLegacyTransition(pendingIntent, userId1,
+                        options1, taskId, options2, splitPosition, splitRatio, adapter, instanceId);
             } catch (RemoteException e) {
-                Log.w(TAG, "Failed call startTasksWithLegacyTransition");
+                Log.w(TAG, "Failed call startIntentAndTaskWithLegacyTransition");
+            }
+        }
+    }
+
+    public void startShortcutAndTaskWithLegacyTransition(ShortcutInfo shortcutInfo, Bundle options1,
+            int taskId, Bundle options2, @SplitConfigurationOptions.StagePosition int splitPosition,
+            float splitRatio, RemoteAnimationAdapter adapter, InstanceId instanceId) {
+        if (mSystemUiProxy != null) {
+            try {
+                mSplitScreen.startShortcutAndTaskWithLegacyTransition(shortcutInfo, options1,
+                        taskId, options2, splitPosition, splitRatio, adapter, instanceId);
+            } catch (RemoteException e) {
+                Log.w(TAG, "Failed call startShortcutAndTaskWithLegacyTransition");
+            }
+        }
+    }
+
+    /**
+     * Starts a pair of intents or shortcuts in split-screen using legacy transition. Passing a
+     * non-null shortcut info means to start the app as a shortcut.
+     */
+    public void startIntentsWithLegacyTransition(PendingIntent pendingIntent1, int userId1,
+            @Nullable ShortcutInfo shortcutInfo1, @Nullable Bundle options1,
+            PendingIntent pendingIntent2, int userId2, @Nullable ShortcutInfo shortcutInfo2,
+            @Nullable Bundle options2, @SplitConfigurationOptions.StagePosition int sidePosition,
+            float splitRatio, RemoteAnimationAdapter adapter, InstanceId instanceId) {
+        if (mSystemUiProxy != null) {
+            try {
+                mSplitScreen.startIntentsWithLegacyTransition(pendingIntent1, userId1,
+                        shortcutInfo1, options1, pendingIntent2, userId2, shortcutInfo2, options2,
+                        sidePosition, splitRatio, adapter, instanceId);
+            } catch (RemoteException e) {
+                Log.w(TAG, "Failed call startIntentsWithLegacyTransition");
             }
         }
     }
 
     public void startShortcut(String packageName, String shortcutId, int position,
-            Bundle options, UserHandle user) {
+            Bundle options, UserHandle user, InstanceId instanceId) {
         if (mSplitScreen != null) {
             try {
                 mSplitScreen.startShortcut(packageName, shortcutId, position, options,
-                        user);
+                        user, instanceId);
             } catch (RemoteException e) {
                 Log.w(TAG, "Failed call startShortcut");
             }
         }
     }
 
-    public void startIntent(PendingIntent intent, Intent fillInIntent, int position,
-            Bundle options) {
+    public void startIntent(PendingIntent intent, int userId, Intent fillInIntent, int position,
+            Bundle options, InstanceId instanceId) {
         if (mSplitScreen != null) {
             try {
-                mSplitScreen.startIntent(intent, fillInIntent, position, options);
+                mSplitScreen.startIntent(intent, userId, fillInIntent, position, options,
+                        instanceId);
             } catch (RemoteException e) {
                 Log.w(TAG, "Failed call startIntent");
             }
@@ -678,8 +842,9 @@
      *
      * @return RemoteAnimationTargets of windows that need to animate but only exist in shell.
      */
+    @Nullable
     public RemoteAnimationTarget[] onGoingToRecentsLegacy(RemoteAnimationTarget[] apps) {
-        if (mSplitScreen != null) {
+        if (!TaskAnimationManager.ENABLE_SHELL_TRANSITIONS && mSplitScreen != null) {
             try {
                 return mSplitScreen.onGoingToRecentsLegacy(apps);
             } catch (RemoteException e) {
@@ -689,6 +854,7 @@
         return null;
     }
 
+    @Nullable
     public RemoteAnimationTarget[] onStartingSplitLegacy(RemoteAnimationTarget[] apps) {
         if (mSplitScreen != null) {
             try {
@@ -728,24 +894,24 @@
     // Remote transitions
     //
 
-    public void registerRemoteTransition(RemoteTransitionCompat remoteTransition) {
+    public void registerRemoteTransition(
+            RemoteTransition remoteTransition, TransitionFilter filter) {
         if (mShellTransitions != null) {
             try {
-                mShellTransitions.registerRemote(remoteTransition.getFilter(),
-                        remoteTransition.getTransition());
+                mShellTransitions.registerRemote(filter, remoteTransition);
             } catch (RemoteException e) {
                 Log.w(TAG, "Failed call registerRemoteTransition");
             }
         }
-        if (!mRemoteTransitions.contains(remoteTransition)) {
-            mRemoteTransitions.add(remoteTransition);
+        if (!mRemoteTransitions.containsKey(remoteTransition)) {
+            mRemoteTransitions.put(remoteTransition, filter);
         }
     }
 
-    public void unregisterRemoteTransition(RemoteTransitionCompat remoteTransition) {
+    public void unregisterRemoteTransition(RemoteTransition remoteTransition) {
         if (mShellTransitions != null) {
             try {
-                mShellTransitions.unregisterRemote(remoteTransition.getTransition());
+                mShellTransitions.unregisterRemote(remoteTransition);
             } catch (RemoteException e) {
                 Log.w(TAG, "Failed call registerRemoteTransition");
             }
@@ -753,6 +919,50 @@
         mRemoteTransitions.remove(remoteTransition);
     }
 
+    /**
+     * Use SystemUI's transaction-queue instead of Launcher's independent one. This is necessary
+     * if Launcher and SystemUI need to coordinate transactions (eg. for shell transitions).
+     */
+    public void shareTransactionQueue() {
+        if (mOriginalTransactionToken == null) {
+            mOriginalTransactionToken = SurfaceControl.Transaction.getDefaultApplyToken();
+        }
+        setupTransactionQueue();
+    }
+
+    /**
+     * Switch back to using Launcher's independent transaction queue.
+     */
+    public void unshareTransactionQueue() {
+        if (mOriginalTransactionToken == null) {
+            return;
+        }
+        SurfaceControl.Transaction.setDefaultApplyToken(mOriginalTransactionToken);
+        mOriginalTransactionToken = null;
+    }
+
+    private void setupTransactionQueue() {
+        if (mOriginalTransactionToken == null) {
+            return;
+        }
+        if (mShellTransitions == null) {
+            SurfaceControl.Transaction.setDefaultApplyToken(mOriginalTransactionToken);
+            return;
+        }
+        final IBinder shellApplyToken;
+        try {
+            shellApplyToken = mShellTransitions.getShellApplyToken();
+        } catch (RemoteException e) {
+            Log.e(TAG, "Error getting Shell's apply token", e);
+            return;
+        }
+        if (shellApplyToken == null) {
+            Log.e(TAG, "Didn't receive apply token from Shell");
+            return;
+        }
+        SurfaceControl.Transaction.setDefaultApplyToken(shellApplyToken);
+    }
+
     //
     // Starting window
     //
@@ -791,11 +1001,11 @@
                     controller.dispatchSmartspaceStateToSysui();
                 }
             } catch (RemoteException e) {
-                Log.w(TAG, "Failed call setStartingWindowListener", e);
+                Log.w(TAG, "Failed call setLauncherUnlockAnimationController", e);
             }
-        } else {
-            mPendingLauncherUnlockAnimationController = controller;
         }
+
+        mLauncherUnlockAnimationController = controller;
     }
 
     /**
@@ -844,13 +1054,15 @@
     //
 
     /** Sets the launcher {@link android.window.IOnBackInvokedCallback} to shell */
-    public void setBackToLauncherCallback(IOnBackInvokedCallback callback) {
+    public void setBackToLauncherCallback(IOnBackInvokedCallback callback,
+            IRemoteAnimationRunner runner) {
         mBackToLauncherCallback = callback;
-        if (mBackAnimation == null) {
+        mBackToLauncherRunner = runner;
+        if (mBackAnimation == null || mBackToLauncherCallback == null) {
             return;
         }
         try {
-            mBackAnimation.setBackToLauncherCallback(callback);
+            mBackAnimation.setBackToLauncherCallback(callback, runner);
         } catch (RemoteException e) {
             Log.e(TAG, "Failed call setBackToLauncherCallback", e);
         }
@@ -865,6 +1077,7 @@
             return;
         }
         mBackToLauncherCallback = null;
+        mBackToLauncherRunner = null;
         if (mBackAnimation == null) {
             return;
         }
@@ -876,16 +1089,16 @@
     }
 
     /**
-     * Notifies shell that all back to launcher animations have finished (including the transition
-     * that plays after the gesture is committed and before the app is closed.
+     * Called when the status bar color needs to be customized when back navigation.
      */
-    public void onBackToLauncherAnimationFinished() {
-        if (mBackAnimation != null) {
-            try {
-                mBackAnimation.onBackToLauncherAnimationFinished();
-            } catch (RemoteException e) {
-                Log.w(TAG, "Failed call onBackAnimationFinished", e);
-            }
+    public void customizeStatusBarAppearance(AppearanceRegion appearance) {
+        if (mBackAnimation == null) {
+            return;
+        }
+        try {
+            mBackAnimation.customizeStatusBarAppearance(appearance);
+        } catch (RemoteException e) {
+            Log.e(TAG, "Failed call useLauncherSysBarFlags", e);
         }
     }
 
@@ -904,4 +1117,140 @@
         }
         return new ArrayList<>();
     }
+
+    /**
+     * Gets the set of running tasks.
+     */
+    public ArrayList<ActivityManager.RunningTaskInfo> getRunningTasks(int numTasks) {
+        if (mRecentTasks != null
+                && mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_PC)) {
+            try {
+                return new ArrayList<>(Arrays.asList(mRecentTasks.getRunningTasks(numTasks)));
+            } catch (RemoteException e) {
+                Log.w(TAG, "Failed call getRunningTasks", e);
+            }
+        }
+        return new ArrayList<>();
+    }
+
+    private boolean handleMessageAsync(Message msg) {
+        switch (msg.what) {
+            case MSG_SET_SHELF_HEIGHT:
+                setShelfHeightAsync(msg.arg1, msg.arg2);
+                return true;
+            case MSG_SET_LAUNCHER_KEEP_CLEAR_AREA_HEIGHT:
+                setLauncherKeepClearAreaHeight(msg.arg1, msg.arg2);
+                return true;
+        }
+
+        return false;
+    }
+
+    //
+    // Desktop Mode
+    //
+
+    /** Call shell to show all apps active on the desktop */
+    public void showDesktopApps(int displayId) {
+        if (mDesktopMode != null) {
+            try {
+                mDesktopMode.showDesktopApps(displayId);
+            } catch (RemoteException e) {
+                Log.w(TAG, "Failed call showDesktopApps", e);
+            }
+        }
+    }
+
+    /** Call shell to get number of visible freeform tasks */
+    public int getVisibleDesktopTaskCount(int displayId) {
+        if (mDesktopMode != null) {
+            try {
+                return mDesktopMode.getVisibleTaskCount(displayId);
+            } catch (RemoteException e) {
+                Log.w(TAG, "Failed call getVisibleDesktopTaskCount", e);
+            }
+        }
+        return 0;
+    }
+
+    //
+    // Unfold transition
+    //
+
+    /** Sets the unfold animation lister to sysui. */
+    public void setUnfoldAnimationListener(IUnfoldTransitionListener callback) {
+        mUnfoldAnimationListener = callback;
+        if (mUnfoldAnimation == null) {
+            return;
+        }
+        try {
+            Log.d(TAG, "Registering unfold animation receiver");
+            mUnfoldAnimation.setListener(callback);
+        } catch (RemoteException e) {
+            Log.e(TAG, "Failed call setUnfoldAnimationListener", e);
+        }
+    }
+
+    //
+    // Recents
+    //
+
+    /**
+     * Starts the recents activity. The caller should manage the thread on which this is called.
+     */
+    public boolean startRecentsActivity(Intent intent, ActivityOptions options,
+            RecentsAnimationListener listener) {
+        if (mRecentTasks == null) {
+            return false;
+        }
+        final IRecentsAnimationRunner runner = new IRecentsAnimationRunner.Stub() {
+            @Override
+            public void onAnimationStart(IRecentsAnimationController controller,
+                    RemoteAnimationTarget[] apps, RemoteAnimationTarget[] wallpapers,
+                    Rect homeContentInsets, Rect minimizedHomeBounds) {
+                listener.onAnimationStart(new RecentsAnimationControllerCompat(controller), apps,
+                        wallpapers, homeContentInsets, minimizedHomeBounds);
+            }
+
+            @Override
+            public void onAnimationCanceled(int[] taskIds, TaskSnapshot[] taskSnapshots) {
+                listener.onAnimationCanceled(
+                        ThumbnailData.wrap(taskIds, taskSnapshots));
+            }
+
+            @Override
+            public void onTasksAppeared(RemoteAnimationTarget[] apps) {
+                listener.onTasksAppeared(apps);
+            }
+        };
+        final Bundle optsBundle = options.toBundle();
+        try {
+            mRecentTasks.startRecentsTransition(mRecentsPendingIntent, intent, optsBundle,
+                    mContext.getIApplicationThread(), runner);
+            return true;
+        } catch (RemoteException e) {
+            Log.e(TAG, "Error starting recents via shell", e);
+            return false;
+        }
+    }
+
+    //
+    // Drag and drop
+    //
+
+    /**
+     * For testing purposes.  Returns `true` only if the shell drop target has shown and
+     * drawn and is ready to handle drag events and the subsequent drop.
+     */
+    public boolean isDragAndDropReady() {
+        if (mDragAndDrop == null) {
+            return false;
+        }
+        try {
+            return mDragAndDrop.isReadyToHandleDrag();
+        } catch (RemoteException e) {
+            Log.e(TAG, "Error querying drag state", e);
+            return false;
+        }
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/TaskAnimationManager.java b/quickstep/src/com/android/quickstep/TaskAnimationManager.java
index 54f457d..410ba21 100644
--- a/quickstep/src/com/android/quickstep/TaskAnimationManager.java
+++ b/quickstep/src/com/android/quickstep/TaskAnimationManager.java
@@ -15,12 +15,14 @@
  */
 package com.android.quickstep;
 
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
+
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
 import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
+import static com.android.quickstep.GestureState.GestureEndTarget.RECENTS;
 import static com.android.quickstep.GestureState.STATE_RECENTS_ANIMATION_INITIALIZED;
 import static com.android.quickstep.GestureState.STATE_RECENTS_ANIMATION_STARTED;
-import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME;
+import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.START_RECENTS_ANIMATION;
 
 import android.app.ActivityManager;
 import android.app.ActivityOptions;
@@ -36,21 +38,19 @@
 import com.android.launcher3.Utilities;
 import com.android.launcher3.config.FeatureFlags;
 import com.android.quickstep.TopTaskTracker.CachedTaskInfo;
+import com.android.quickstep.util.ActiveGestureLog;
+import com.android.quickstep.views.DesktopTaskView;
 import com.android.quickstep.views.RecentsView;
 import com.android.systemui.shared.recents.model.ThumbnailData;
 import com.android.systemui.shared.system.ActivityManagerWrapper;
-import com.android.systemui.shared.system.ActivityOptionsCompat;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
-import com.android.systemui.shared.system.RemoteTransitionCompat;
 import com.android.systemui.shared.system.TaskStackChangeListener;
 import com.android.systemui.shared.system.TaskStackChangeListeners;
 
-import java.util.ArrayList;
 import java.util.HashMap;
 
 public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAnimationListener {
     public static final boolean ENABLE_SHELL_TRANSITIONS =
-            SystemProperties.getBoolean("persist.wm.debug.shell_transit", false);
+            SystemProperties.getBoolean("persist.wm.debug.shell_transit", true);
     public static final boolean SHELL_TRANSITIONS_ROTATION = ENABLE_SHELL_TRANSITIONS
             && SystemProperties.getBoolean("persist.wm.debug.shell_transit_rotate", false);
 
@@ -59,7 +59,7 @@
     private RecentsAnimationTargets mTargets;
     // Temporary until we can hook into gesture state events
     private GestureState mLastGestureState;
-    private RemoteAnimationTargetCompat mLastAppearedTaskTarget;
+    private RemoteAnimationTarget mLastAppearedTaskTarget;
     private Runnable mLiveTileCleanUpHandler;
     private Context mCtx;
 
@@ -73,7 +73,7 @@
                 return;
             }
             BaseActivityInterface activityInterface = mLastGestureState.getActivityInterface();
-            if (ENABLE_QUICKSTEP_LIVE_TILE.get() && activityInterface.isInLiveTileMode()
+            if (activityInterface.isInLiveTileMode()
                     && activityInterface.getCreatedActivity() != null) {
                 RecentsView recentsView = activityInterface.getCreatedActivity().getOverviewPanel();
                 if (recentsView != null) {
@@ -103,6 +103,9 @@
     @UiThread
     public RecentsAnimationCallbacks startRecentsAnimation(GestureState gestureState,
             Intent intent, RecentsAnimationCallbacks.RecentsAnimationListener listener) {
+        ActiveGestureLog.INSTANCE.addLog(
+                /* event= */ "startRecentsAnimation",
+                /* gestureEvent= */ START_RECENTS_ANIMATION);
         // Notify if recents animation is still running
         if (mController != null) {
             String msg = "New recents animation started before old animation completed";
@@ -113,7 +116,7 @@
             }
         }
         // But force-finish it anyways
-        finishRunningRecentsAnimation(false /* toHome */);
+        finishRunningRecentsAnimation(false /* toHome */, true /* forceFinish */);
 
         if (mCallbacks != null) {
             // If mCallbacks still != null, that means we are getting this startRecentsAnimation()
@@ -153,49 +156,44 @@
             }
 
             @Override
-            public void onTasksAppeared(RemoteAnimationTargetCompat[] appearedTaskTargets) {
-                RemoteAnimationTargetCompat appearedTaskTarget = appearedTaskTargets[0];
+            public void onTasksAppeared(RemoteAnimationTarget[] appearedTaskTargets) {
+                RemoteAnimationTarget appearedTaskTarget = appearedTaskTargets[0];
                 BaseActivityInterface activityInterface = mLastGestureState.getActivityInterface();
-                // Convert appTargets to type RemoteAnimationTarget for all apps except Home app
-                final ArrayList<RemoteAnimationTargetCompat> tmpNonHomeApps = new ArrayList<>();
-                final ArrayList<RemoteAnimationTargetCompat> tmpHomeApps = new ArrayList<>();
-                for (RemoteAnimationTargetCompat compat : appearedTaskTargets) {
-                    if (compat.activityType != ACTIVITY_TYPE_HOME) {
-                        tmpNonHomeApps.add(compat);
-                    } else {
-                        tmpHomeApps.add(compat);
+
+                for (RemoteAnimationTarget compat : appearedTaskTargets) {
+                    if (compat.windowConfiguration.getActivityType() == ACTIVITY_TYPE_HOME
+                            && activityInterface.getCreatedActivity() instanceof RecentsActivity) {
+                        // When receive opening home activity while recents is running, enter home
+                        // and dismiss recents.
+                        ((RecentsActivity) activityInterface.getCreatedActivity()).startHome();
+                        return;
                     }
                 }
-                RemoteAnimationTarget[] nonHomeApps = tmpNonHomeApps.stream()
-                        .map(RemoteAnimationTargetCompat::unwrap)
-                        .toArray(RemoteAnimationTarget[]::new);
-                RemoteAnimationTarget[] homeApps = tmpHomeApps.stream()
-                        .map(RemoteAnimationTargetCompat::unwrap)
-                        .toArray(RemoteAnimationTarget[]::new);
-                if (homeApps.length > 0
-                        && activityInterface.getCreatedActivity() instanceof RecentsActivity) {
-                    ((RecentsActivity) activityInterface.getCreatedActivity()).startHome();
-                    return;
+
+                RemoteAnimationTarget[] nonAppTargets = SystemUiProxy.INSTANCE.get(mCtx)
+                        .onStartingSplitLegacy(appearedTaskTargets);
+                if (nonAppTargets == null) {
+                    nonAppTargets = new RemoteAnimationTarget[0];
                 }
-
-                RemoteAnimationTarget[] nonAppTargets =
-                        SystemUiProxy.INSTANCE.getNoCreate().onStartingSplitLegacy(nonHomeApps);
-
-                if (ENABLE_QUICKSTEP_LIVE_TILE.get() && activityInterface.isInLiveTileMode()
+                if ((activityInterface.isInLiveTileMode()
+                            || mLastGestureState.getEndTarget() == RECENTS)
                         && activityInterface.getCreatedActivity() != null) {
                     RecentsView recentsView =
                             activityInterface.getCreatedActivity().getOverviewPanel();
                     if (recentsView != null) {
+                        ActiveGestureLog.INSTANCE.addLog("Launching side task id="
+                                + appearedTaskTarget.taskId);
                         recentsView.launchSideTaskInLiveTileMode(appearedTaskTarget.taskId,
                                 appearedTaskTargets,
-                                new RemoteAnimationTargetCompat[0] /* wallpaper */,
-                                RemoteAnimationTargetCompat.wrap(nonAppTargets) /* nonApps */);
+                                new RemoteAnimationTarget[0] /* wallpaper */,
+                                nonAppTargets /* nonApps */);
                         return;
+                    } else {
+                        ActiveGestureLog.INSTANCE.addLog("Unable to launch side task (no recents)");
                     }
-                } else if (nonAppTargets != null && nonAppTargets.length > 0) {
-                    TaskViewUtils.createSplitAuxiliarySurfacesAnimator(
-                            RemoteAnimationTargetCompat.wrap(nonAppTargets) /* nonApps */,
-                            true /*shown*/, dividerAnimator -> dividerAnimator.start());
+                } else if (nonAppTargets.length > 0) {
+                    TaskViewUtils.createSplitAuxiliarySurfacesAnimator(nonAppTargets /* nonApps */,
+                            true /*shown*/, null /* animatorHandler */);
                 }
                 if (mController != null) {
                     if (mLastAppearedTaskTarget == null
@@ -211,7 +209,7 @@
 
             @Override
             public boolean onSwitchToScreenshot(Runnable onFinished) {
-                if (!ENABLE_QUICKSTEP_LIVE_TILE.get() || !activityInterface.isInLiveTileMode()
+                if (!activityInterface.isInLiveTileMode()
                         || activityInterface.getCreatedActivity() == null) {
                     // No need to switch since tile is already a screenshot.
                     onFinished.run();
@@ -232,20 +230,26 @@
         mCallbacks.addListener(listener);
 
         if (ENABLE_SHELL_TRANSITIONS) {
-            RemoteTransitionCompat transition = new RemoteTransitionCompat(mCallbacks,
-                    mController != null ? mController.getController() : null,
-                    mCtx.getIApplicationThread());
-            final ActivityOptions options = ActivityOptionsCompat.makeRemoteTransition(transition);
+            final ActivityOptions options = ActivityOptions.makeBasic();
             // Allowing to pause Home if Home is top activity and Recents is not Home. So when user
             // start home when recents animation is playing, the home activity can be resumed again
             // to let the transition controller collect Home activity.
             CachedTaskInfo cti = gestureState.getRunningTask();
             boolean homeIsOnTop = cti != null && cti.isHomeTask();
+            if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) {
+                if (cti != null && cti.isFreeformTask()) {
+                    // No transient launch when desktop task is on top
+                    homeIsOnTop = true;
+                }
+            }
+            if (activityInterface.allowAllAppsFromOverview()) {
+                homeIsOnTop = true;
+            }
             if (!homeIsOnTop) {
                 options.setTransientLaunch();
             }
             options.setSourceInfo(ActivityOptions.SourceInfo.TYPE_RECENTS_ANIMATION, eventTime);
-            UI_HELPER_EXECUTOR.execute(() -> mCtx.startActivity(intent, options.toBundle()));
+            SystemUiProxy.INSTANCE.getNoCreate().startRecentsActivity(intent, options, mCallbacks);
         } else {
             UI_HELPER_EXECUTOR.execute(() -> ActivityManagerWrapper.getInstance()
                     .startRecentsActivity(intent, eventTime, mCallbacks, null, null));
@@ -258,6 +262,7 @@
      * Continues the existing running recents animation for a new gesture.
      */
     public RecentsAnimationCallbacks continueRecentsAnimation(GestureState gestureState) {
+        ActiveGestureLog.INSTANCE.addLog(/* event= */ "continueRecentsAnimation");
         mCallbacks.removeListener(mLastGestureState);
         mLastGestureState = gestureState;
         mCallbacks.addListener(gestureState);
@@ -272,7 +277,7 @@
             return;
         }
         BaseActivityInterface activityInterface = mLastGestureState.getActivityInterface();
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get() && activityInterface.isInLiveTileMode()
+        if (activityInterface.isInLiveTileMode()
                 && activityInterface.getCreatedActivity() != null) {
             RecentsView recentsView = activityInterface.getCreatedActivity().getOverviewPanel();
             if (recentsView != null) {
@@ -295,11 +300,26 @@
      * Finishes the running recents animation.
      */
     public void finishRunningRecentsAnimation(boolean toHome) {
+        finishRunningRecentsAnimation(toHome, false /* forceFinish */);
+    }
+
+    /**
+     * Finishes the running recents animation.
+     * @param forceFinish will synchronously finish the controller
+     */
+    private void finishRunningRecentsAnimation(boolean toHome, boolean forceFinish) {
         if (mController != null) {
+            ActiveGestureLog.INSTANCE.addLog(
+                    /* event= */ "finishRunningRecentsAnimation", toHome);
             mCallbacks.notifyAnimationCanceled();
-            Utilities.postAsyncCallback(MAIN_EXECUTOR.getHandler(), toHome
-                    ? mController::finishAnimationToHome
-                    : mController::finishAnimationToApp);
+            if (forceFinish) {
+                mController.finishController(toHome, null, false /* sendUserLeaveHint */,
+                        true /* forceFinish */);
+            } else {
+                Utilities.postAsyncCallback(MAIN_EXECUTOR.getHandler(), toHome
+                        ? mController::finishAnimationToHome
+                        : mController::finishAnimationToApp);
+            }
             cleanUpRecentsAnimation();
         }
     }
@@ -328,6 +348,7 @@
      * Cleans up the recents animation entirely.
      */
     private void cleanUpRecentsAnimation() {
+        ActiveGestureLog.INSTANCE.addLog(/* event= */ "cleanUpRecentsAnimation");
         if (mLiveTileCleanUpHandler != null) {
             mLiveTileCleanUpHandler.run();
             mLiveTileCleanUpHandler = null;
diff --git a/quickstep/src/com/android/quickstep/TaskIconCache.java b/quickstep/src/com/android/quickstep/TaskIconCache.java
index 3803f03..7c05a10 100644
--- a/quickstep/src/com/android/quickstep/TaskIconCache.java
+++ b/quickstep/src/com/android/quickstep/TaskIconCache.java
@@ -18,6 +18,7 @@
 import static com.android.launcher3.uioverrides.QuickstepLauncher.GO_LOW_RAM_RECENTS_ENABLED;
 import static com.android.launcher3.util.DisplayController.CHANGE_DENSITY;
 
+import android.annotation.Nullable;
 import android.app.ActivityManager;
 import android.app.ActivityManager.TaskDescription;
 import android.content.Context;
@@ -46,6 +47,7 @@
 import com.android.launcher3.util.Preconditions;
 import com.android.quickstep.util.CancellableTask;
 import com.android.quickstep.util.TaskKeyLruCache;
+import com.android.quickstep.util.TaskVisualsChangeListener;
 import com.android.systemui.shared.recents.model.Task;
 import com.android.systemui.shared.recents.model.Task.TaskKey;
 import com.android.systemui.shared.system.PackageManagerWrapper;
@@ -70,6 +72,9 @@
 
     private BaseIconFactory mIconFactory;
 
+    @Nullable
+    public TaskVisualsChangeListener mTaskVisualsChangeListener = null;
+
     public TaskIconCache(Context context, Executor bgExecutor, IconProvider iconProvider) {
         mContext = context;
         mBgExecutor = bgExecutor;
@@ -116,6 +121,7 @@
                 task.icon = result.icon;
                 task.titleDescription = result.contentDescription;
                 callback.accept(task);
+                dispatchIconUpdate(task.key.id);
             }
         };
         mBgExecutor.execute(request);
@@ -243,12 +249,13 @@
     private BitmapInfo getBitmapInfo(Drawable drawable, int userId,
             int primaryColor, boolean isInstantApp) {
         try (BaseIconFactory bif = getIconFactory()) {
-            bif.disableColorExtraction();
             bif.setWrapperBackgroundColor(primaryColor);
 
             // User version code O, so that the icon is always wrapped in an adaptive icon container
             return bif.createBadgedIconBitmap(drawable,
-                    new IconOptions().setUser(UserHandle.of(userId)).setInstantApp(isInstantApp));
+                    new IconOptions().setUser(UserHandle.of(userId))
+                            .setInstantApp(isInstantApp)
+                            .setExtractedColor(0));
         }
     }
 
@@ -257,7 +264,8 @@
         if (mIconFactory == null) {
             mIconFactory = new BaseIconFactory(mContext,
                     DisplayController.INSTANCE.get(mContext).getInfo().getDensityDpi(),
-                    mContext.getResources().getDimensionPixelSize(R.dimen.taskbar_icon_size));
+                    mContext.getResources().getDimensionPixelSize(
+                            R.dimen.task_icon_cache_default_icon_size));
         }
         return mIconFactory;
     }
@@ -272,4 +280,18 @@
         public Drawable icon;
         public String contentDescription = "";
     }
+
+    void registerTaskVisualsChangeListener(TaskVisualsChangeListener newListener) {
+        mTaskVisualsChangeListener = newListener;
+    }
+
+    void removeTaskVisualsChangeListener() {
+        mTaskVisualsChangeListener = null;
+    }
+
+    void dispatchIconUpdate(int taskId) {
+        if (mTaskVisualsChangeListener != null) {
+            mTaskVisualsChangeListener.onTaskIconChanged(taskId);
+        }
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/TaskOverlayFactory.java b/quickstep/src/com/android/quickstep/TaskOverlayFactory.java
index 3ef1332..1744b08 100644
--- a/quickstep/src/com/android/quickstep/TaskOverlayFactory.java
+++ b/quickstep/src/com/android/quickstep/TaskOverlayFactory.java
@@ -18,36 +18,30 @@
 
 import static android.view.Surface.ROTATION_0;
 
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
 import static com.android.quickstep.views.OverviewActionsView.DISABLED_NO_THUMBNAIL;
 import static com.android.quickstep.views.OverviewActionsView.DISABLED_ROTATED;
 
 import android.annotation.SuppressLint;
-import android.app.ActivityManager;
 import android.content.Context;
 import android.graphics.Insets;
 import android.graphics.Matrix;
 import android.graphics.Rect;
 import android.os.Build;
 import android.view.View;
-import android.widget.Toast;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.RequiresApi;
 
 import com.android.launcher3.BaseActivity;
 import com.android.launcher3.BaseDraggingActivity;
-import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.R;
 import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
 import com.android.launcher3.popup.SystemShortcut;
-import com.android.launcher3.touch.PagedOrientationHandler;
 import com.android.launcher3.util.ResourceBasedOverride;
-import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption;
 import com.android.launcher3.views.ActivityContext;
-import com.android.quickstep.TaskShortcutFactory.SplitSelectSystemShortcut;
+import com.android.launcher3.views.Snackbar;
 import com.android.quickstep.util.RecentsOrientedState;
 import com.android.quickstep.views.OverviewActionsView;
 import com.android.quickstep.views.RecentsView;
@@ -66,7 +60,7 @@
 public class TaskOverlayFactory implements ResourceBasedOverride {
 
     public static List<SystemShortcut> getEnabledShortcuts(TaskView taskView,
-            DeviceProfile deviceProfile, TaskIdAttributeContainer taskContainer) {
+            TaskIdAttributeContainer taskContainer) {
         final ArrayList<SystemShortcut> shortcuts = new ArrayList<>();
         final BaseDraggingActivity activity = BaseActivity.fromContext(taskView.getContext());
         boolean hasMultipleTasks = taskView.getTaskIds()[1] != -1;
@@ -75,80 +69,41 @@
                 continue;
             }
 
-            SystemShortcut shortcut = menuOption.getShortcut(activity, taskContainer);
-            if (shortcut == null) {
+            List<SystemShortcut> menuShortcuts = menuOption.getShortcuts(activity, taskContainer);
+            if (menuShortcuts == null) {
                 continue;
             }
-
-            if (menuOption == TaskShortcutFactory.SPLIT_SCREEN &&
-                    FeatureFlags.ENABLE_SPLIT_SELECT.get()) {
-                addSplitOptions(shortcuts, activity, taskView, deviceProfile);
-            } else {
-                shortcuts.add(shortcut);
-            }
+            shortcuts.addAll(menuShortcuts);
         }
         RecentsOrientedState orientedState = taskView.getRecentsView().getPagedViewOrientedState();
         boolean canLauncherRotate = orientedState.isRecentsActivityRotationAllowed();
         boolean isInLandscape = orientedState.getTouchRotation() != ROTATION_0;
+        boolean isTablet = activity.getDeviceProfile().isTablet;
 
-        // Add overview actions to the menu when in in-place rotate landscape mode.
-        if (!canLauncherRotate && isInLandscape) {
+        boolean isGridOnlyOverview = isTablet && FeatureFlags.ENABLE_GRID_ONLY_OVERVIEW.get();
+        // Add overview actions to the menu when in in-place rotate landscape mode, or in
+        // grid-only overview.
+        if ((!canLauncherRotate && isInLandscape) || isGridOnlyOverview) {
             // Add screenshot action to task menu.
-            SystemShortcut screenshotShortcut = TaskShortcutFactory.SCREENSHOT
-                    .getShortcut(activity, taskContainer);
-            if (screenshotShortcut != null) {
-                shortcuts.add(screenshotShortcut);
+            List<SystemShortcut> screenshotShortcuts = TaskShortcutFactory.SCREENSHOT
+                    .getShortcuts(activity, taskContainer);
+            if (screenshotShortcuts != null) {
+                shortcuts.addAll(screenshotShortcuts);
             }
 
-            // Add modal action only if display orientation is the same as the device orientation.
-            if (orientedState.getDisplayRotation() == ROTATION_0) {
-                SystemShortcut modalShortcut = TaskShortcutFactory.MODAL
-                        .getShortcut(activity, taskContainer);
-                if (modalShortcut != null) {
-                    shortcuts.add(modalShortcut);
+            // Add modal action only if display orientation is the same as the device orientation,
+            // or in grid-only overview.
+            if (orientedState.getDisplayRotation() == ROTATION_0 || isGridOnlyOverview) {
+                List<SystemShortcut> modalShortcuts = TaskShortcutFactory.MODAL
+                        .getShortcuts(activity, taskContainer);
+                if (modalShortcuts != null) {
+                    shortcuts.addAll(modalShortcuts);
                 }
             }
         }
         return shortcuts;
     }
 
-
-    /**
-     * Does NOT add split options in the following scenarios:
-     * * The taskView to add split options is already showing split screen tasks
-     * * There aren't at least 2 tasks in overview to show split options for
-     * * Device is in "Lock task mode"
-     * * The taskView to show split options for is the focused task AND we haven't started
-     * scrolling in overview (if we haven't scrolled, there's a split overview action button so
-     * we don't need this menu option)
-     */
-    private static void addSplitOptions(List<SystemShortcut> outShortcuts,
-            BaseDraggingActivity activity, TaskView taskView, DeviceProfile deviceProfile) {
-        RecentsView recentsView = taskView.getRecentsView();
-        PagedOrientationHandler orientationHandler = recentsView.getPagedOrientationHandler();
-        int[] taskViewTaskIds = taskView.getTaskIds();
-        boolean taskViewHasMultipleTasks = taskViewTaskIds[0] != -1 &&
-                taskViewTaskIds[1] != -1;
-        boolean notEnoughTasksToSplit = recentsView.getTaskViewCount() < 2;
-        boolean isFocusedTask = deviceProfile.isTablet && taskView.isFocusedTask();
-        boolean isTaskInExpectedScrollPosition =
-                recentsView.isTaskInExpectedScrollPosition(recentsView.indexOfChild(taskView));
-        ActivityManager activityManager =
-                (ActivityManager) taskView.getContext().getSystemService(Context.ACTIVITY_SERVICE);
-        boolean isLockTaskMode = activityManager.isInLockTaskMode();
-
-        if (taskViewHasMultipleTasks || notEnoughTasksToSplit || isLockTaskMode ||
-                (isFocusedTask && isTaskInExpectedScrollPosition)) {
-            return;
-        }
-
-        List<SplitPositionOption> positions =
-                orientationHandler.getSplitPositionOptions(deviceProfile);
-        for (SplitPositionOption option : positions) {
-            outShortcuts.add(new SplitSelectSystemShortcut(activity, taskView, option));
-        }
-    }
-
     public TaskOverlay createOverlay(TaskThumbnailView thumbnailView) {
         return new TaskOverlay(thumbnailView);
     }
@@ -170,11 +125,12 @@
     /** Note that these will be shown in order from top to bottom, if available for the task. */
     private static final TaskShortcutFactory[] MENU_OPTIONS = new TaskShortcutFactory[]{
             TaskShortcutFactory.APP_INFO,
-            TaskShortcutFactory.SPLIT_SCREEN,
+            TaskShortcutFactory.SPLIT_SELECT,
             TaskShortcutFactory.PIN,
             TaskShortcutFactory.INSTALL,
             TaskShortcutFactory.FREE_FORM,
-            TaskShortcutFactory.WELLBEING
+            TaskShortcutFactory.WELLBEING,
+            TaskShortcutFactory.SAVE_APP_PAIR
     };
 
     /**
@@ -223,14 +179,10 @@
          * @param callback callback to run, after switching to screenshot
          */
         public void endLiveTileMode(@NonNull Runnable callback) {
-            if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
-                RecentsView recentsView = mThumbnailView.getTaskView().getRecentsView();
-                recentsView.switchToScreenshot(
-                        () -> recentsView.finishRecentsAnimation(true /* toRecents */,
-                                false /* shouldPip */, callback));
-            } else {
-                callback.run();
-            }
+            RecentsView recentsView = mThumbnailView.getTaskView().getRecentsView();
+            recentsView.switchToScreenshot(
+                    () -> recentsView.finishRecentsAnimation(true /* toRecents */,
+                            false /* shouldPip */, callback));
         }
 
         /**
@@ -320,10 +272,8 @@
             String message = activityContext.getStringCache() != null
                     ? activityContext.getStringCache().disabledByAdminMessage
                     : mThumbnailView.getContext().getString(R.string.blocked_by_policy);
-            Toast.makeText(
-                    mThumbnailView.getContext(),
-                    message,
-                    Toast.LENGTH_LONG).show();
+
+            Snackbar.show(BaseActivity.fromContext(mThumbnailView.getContext()), message, null);
         }
 
         /** Called when the snapshot has updated its full screen drawing parameters. */
diff --git a/quickstep/src/com/android/quickstep/TaskShortcutFactory.java b/quickstep/src/com/android/quickstep/TaskShortcutFactory.java
index e807e26..208f99a 100644
--- a/quickstep/src/com/android/quickstep/TaskShortcutFactory.java
+++ b/quickstep/src/com/android/quickstep/TaskShortcutFactory.java
@@ -16,11 +16,10 @@
 
 package com.android.quickstep;
 
-import static android.view.Display.DEFAULT_DISPLAY;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
+import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS;
 
-import static com.android.launcher3.config.FeatureFlags.ENABLE_OVERVIEW_SELECTIONS;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_SYSTEM_SHORTCUT_FREE_FORM_TAP;
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_SYSTEM_SHORTCUT_SPLIT_SCREEN_TAP;
 
 import android.app.Activity;
 import android.app.ActivityOptions;
@@ -29,16 +28,25 @@
 import android.graphics.Rect;
 import android.os.Handler;
 import android.os.Looper;
+import android.os.RemoteException;
+import android.os.SystemProperties;
+import android.util.Log;
 import android.view.View;
+import android.view.WindowInsets;
+import android.view.WindowManagerGlobal;
 import android.window.SplashScreen;
 
+import androidx.annotation.Nullable;
+
 import com.android.launcher3.BaseDraggingActivity;
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.R;
+import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.logging.StatsLogManager.LauncherEvent;
 import com.android.launcher3.model.WellbeingModel;
 import com.android.launcher3.popup.SystemShortcut;
 import com.android.launcher3.popup.SystemShortcut.AppInfo;
+import com.android.launcher3.touch.PagedOrientationHandler;
 import com.android.launcher3.util.InstantAppResolver;
 import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption;
 import com.android.quickstep.views.RecentsView;
@@ -50,26 +58,39 @@
 import com.android.systemui.shared.recents.view.AppTransitionAnimationSpecsFuture;
 import com.android.systemui.shared.recents.view.RecentsTransition;
 import com.android.systemui.shared.system.ActivityManagerWrapper;
-import com.android.systemui.shared.system.ActivityOptionsCompat;
-import com.android.systemui.shared.system.WindowManagerWrapper;
 
 import java.util.Collections;
 import java.util.List;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
- * Represents a system shortcut that can be shown for a recent task.
+ * Represents a system shortcut that can be shown for a recent task. Appears as a single entry in
+ * the dropdown menu that shows up when you tap an app icon in Overview.
  */
 public interface TaskShortcutFactory {
-    SystemShortcut getShortcut(BaseDraggingActivity activity,
-            TaskIdAttributeContainer taskContainer);
+    @Nullable
+    default List<SystemShortcut> getShortcuts(BaseDraggingActivity activity,
+            TaskIdAttributeContainer taskContainer) {
+        return null;
+    }
 
     default boolean showForSplitscreen() {
         return false;
     }
 
+    /** @return a singleton list if the provided shortcut is non-null, null otherwise */
+    @Nullable
+    default List<SystemShortcut> createSingletonShortcutList(@Nullable SystemShortcut shortcut) {
+        if (shortcut != null) {
+            return Collections.singletonList(shortcut);
+        }
+        return null;
+    }
+
     TaskShortcutFactory APP_INFO = new TaskShortcutFactory() {
         @Override
-        public SystemShortcut getShortcut(BaseDraggingActivity activity,
+        public List<SystemShortcut> getShortcuts(BaseDraggingActivity activity,
                 TaskIdAttributeContainer taskContainer) {
             TaskView taskView = taskContainer.getTaskView();
             AppInfo.SplitAccessibilityInfo accessibilityInfo =
@@ -77,7 +98,8 @@
                             TaskUtils.getTitle(taskView.getContext(), taskContainer.getTask()),
                             taskContainer.getA11yNodeId()
                     );
-            return new AppInfo(activity, taskContainer.getItemInfo(), taskView, accessibilityInfo);
+            return Collections.singletonList(new AppInfo(activity, taskContainer.getItemInfo(),
+                    taskView, accessibilityInfo));
         }
 
         @Override
@@ -86,40 +108,10 @@
         }
     };
 
-    abstract class MultiWindowFactory implements TaskShortcutFactory {
-
-        private final int mIconRes;
-        private final int mTextRes;
-        private final LauncherEvent mLauncherEvent;
-
-        MultiWindowFactory(int iconRes, int textRes, LauncherEvent launcherEvent) {
-            mIconRes = iconRes;
-            mTextRes = textRes;
-            mLauncherEvent = launcherEvent;
-        }
-
-        protected abstract boolean isAvailable(BaseDraggingActivity activity, int displayId);
-        protected abstract ActivityOptions makeLaunchOptions(Activity activity);
-        protected abstract boolean onActivityStarted(BaseDraggingActivity activity);
-
-        @Override
-        public SystemShortcut getShortcut(BaseDraggingActivity activity,
-                TaskIdAttributeContainer taskContainer) {
-            final Task task  = taskContainer.getTask();
-            if (!task.isDockable) {
-                return null;
-            }
-            if (!isAvailable(activity, task.key.displayId)) {
-                return null;
-            }
-            return new MultiWindowSystemShortcut(mIconRes, mTextRes, activity, taskContainer, this,
-                    mLauncherEvent);
-        }
-    }
-
     class SplitSelectSystemShortcut extends SystemShortcut {
         private final TaskView mTaskView;
         private final SplitPositionOption mSplitPositionOption;
+
         public SplitSelectSystemShortcut(BaseDraggingActivity target, TaskView taskView,
                 SplitPositionOption option) {
             super(option.iconResId, option.textResId, target, taskView.getItemInfo(), taskView);
@@ -133,19 +125,38 @@
         }
     }
 
-    class MultiWindowSystemShortcut extends SystemShortcut<BaseDraggingActivity> {
+    /**
+     * A menu item, "Save app pair", that allows the user to preserve the current app combination as
+     * a single persistent icon on the Home screen, allowing for quick split screen initialization.
+     */
+    class SaveAppPairSystemShortcut extends SystemShortcut<BaseDraggingActivity> {
+        private final TaskView mTaskView;
+
+        public SaveAppPairSystemShortcut(BaseDraggingActivity activity, TaskView taskView) {
+            super(R.drawable.ic_save_app_pair, R.string.save_app_pair, activity,
+                    taskView.getItemInfo(), taskView);
+            mTaskView = taskView;
+        }
+
+        @Override
+        public void onClick(View view) {
+            ((RecentsView) mTarget.getOverviewPanel())
+                    .getSplitSelectController().getAppPairsController().saveAppPair(mTaskView);
+        }
+    }
+
+    class FreeformSystemShortcut extends SystemShortcut<BaseDraggingActivity> {
+        private static final String TAG = "FreeformSystemShortcut";
 
         private Handler mHandler;
 
         private final RecentsView mRecentsView;
         private final TaskThumbnailView mThumbnailView;
         private final TaskView mTaskView;
-        private final MultiWindowFactory mFactory;
         private final LauncherEvent mLauncherEvent;
 
-        public MultiWindowSystemShortcut(int iconRes, int textRes, BaseDraggingActivity activity,
-                TaskIdAttributeContainer taskContainer, MultiWindowFactory factory,
-                LauncherEvent launcherEvent) {
+        public FreeformSystemShortcut(int iconRes, int textRes, BaseDraggingActivity activity,
+                TaskIdAttributeContainer taskContainer, LauncherEvent launcherEvent) {
             super(iconRes, textRes, activity, taskContainer.getItemInfo(),
                     taskContainer.getTaskView());
             mLauncherEvent = launcherEvent;
@@ -153,55 +164,30 @@
             mTaskView = taskContainer.getTaskView();
             mRecentsView = activity.getOverviewPanel();
             mThumbnailView = taskContainer.getThumbnailView();
-            mFactory = factory;
         }
 
         @Override
         public void onClick(View view) {
-            Task.TaskKey taskKey = mTaskView.getTask().key;
-            final int taskId = taskKey.id;
-
-            final View.OnLayoutChangeListener onLayoutChangeListener =
-                    new View.OnLayoutChangeListener() {
-                        @Override
-                        public void onLayoutChange(View v, int l, int t, int r, int b,
-                                int oldL, int oldT, int oldR, int oldB) {
-                            mTaskView.getRootView().removeOnLayoutChangeListener(this);
-                            mRecentsView.clearIgnoreResetTask(taskId);
-
-                            // Start animating in the side pages once launcher has been resized
-                            mRecentsView.dismissTask(mTaskView, false, false);
-                        }
-                    };
-
-            final DeviceProfile.OnDeviceProfileChangeListener onDeviceProfileChangeListener =
-                    new DeviceProfile.OnDeviceProfileChangeListener() {
-                        @Override
-                        public void onDeviceProfileChanged(DeviceProfile dp) {
-                            mTarget.removeOnDeviceProfileChangeListener(this);
-                            if (dp.isMultiWindowMode) {
-                                mTaskView.getRootView().addOnLayoutChangeListener(
-                                        onLayoutChangeListener);
-                            }
-                        }
-                    };
-
             dismissTaskMenuView(mTarget);
+            RecentsView rv = mTarget.getOverviewPanel();
+            rv.switchToScreenshot(() -> {
+                rv.finishRecentsAnimation(true /* toHome */, () -> {
+                    mTarget.returnToHomescreen();
+                    rv.getHandler().post(this::startActivity);
+                });
+            });
+        }
 
-            ActivityOptions options = mFactory.makeLaunchOptions(mTarget);
+        private void startActivity() {
+            final Task.TaskKey taskKey = mTaskView.getTask().key;
+            final int taskId = taskKey.id;
+            final ActivityOptions options = makeLaunchOptions(mTarget);
             if (options != null) {
                 options.setSplashScreenStyle(SplashScreen.SPLASH_SCREEN_STYLE_ICON);
             }
             if (options != null
                     && ActivityManagerWrapper.getInstance().startActivityFromRecents(taskId,
                             options)) {
-                if (!mFactory.onActivityStarted(mTarget)) {
-                    return;
-                }
-                // Add a device profile change listener to kick off animating the side tasks
-                // once we enter multiwindow mode and relayout
-                mTarget.addOnDeviceProfileChangeListener(onDeviceProfileChangeListener);
-
                 final Runnable animStartedListener = () -> {
                     // Hide the task view and wait for the window to be resized
                     // TODO: Consider animating in launcher and do an in-place start activity
@@ -233,82 +219,153 @@
                                 taskId, thumbnail, taskBounds));
                     }
                 };
-                WindowManagerWrapper.getInstance().overridePendingAppTransitionMultiThumbFuture(
+                overridePendingAppTransitionMultiThumbFuture(
                         future, animStartedListener, mHandler, true /* scaleUp */,
                         taskKey.displayId);
                 mTarget.getStatsLogManager().logger().withItemInfo(mTaskView.getItemInfo())
                         .log(mLauncherEvent);
             }
         }
-    }
 
-    /** @Deprecated */
-    TaskShortcutFactory SPLIT_SCREEN = new MultiWindowFactory(R.drawable.ic_split_screen,
-            R.string.recent_task_option_split_screen, LAUNCHER_SYSTEM_SHORTCUT_SPLIT_SCREEN_TAP) {
-
-        @Override
-        protected boolean isAvailable(BaseDraggingActivity activity, int displayId) {
-            // Don't show menu-item if already in multi-window and the task is from
-            // the secondary display.
-            // TODO(b/118266305): Temporarily disable splitscreen for secondary display while new
-            // implementation is enabled
-            return !activity.getDeviceProfile().isMultiWindowMode
-                    && (displayId == -1 || displayId == DEFAULT_DISPLAY);
-        }
-
-        @Override
-        protected ActivityOptions makeLaunchOptions(Activity activity) {
-            final int navBarPosition = WindowManagerWrapper.getInstance().getNavBarPosition(
-                    activity.getDisplayId());
-            if (navBarPosition == WindowManagerWrapper.NAV_BAR_POS_INVALID) {
-                return null;
+        /**
+         * Overrides a pending app transition.
+         */
+        private void overridePendingAppTransitionMultiThumbFuture(
+                AppTransitionAnimationSpecsFuture animationSpecFuture, Runnable animStartedCallback,
+                Handler animStartedCallbackHandler, boolean scaleUp, int displayId) {
+            try {
+                WindowManagerGlobal.getWindowManagerService()
+                        .overridePendingAppTransitionMultiThumbFuture(
+                                animationSpecFuture.getFuture(),
+                                RecentsTransition.wrapStartedListener(animStartedCallbackHandler,
+                                        animStartedCallback), scaleUp, displayId);
+            } catch (RemoteException e) {
+                Log.w(TAG, "Failed to override pending app transition (multi-thumbnail future): ",
+                        e);
             }
-            boolean dockTopOrLeft = navBarPosition != WindowManagerWrapper.NAV_BAR_POS_LEFT;
-            return ActivityOptionsCompat.makeSplitScreenOptions(dockTopOrLeft);
         }
 
-        @Override
-        protected boolean onActivityStarted(BaseDraggingActivity activity) {
-            return true;
-        }
-    };
-
-    TaskShortcutFactory FREE_FORM = new MultiWindowFactory(R.drawable.ic_split_screen,
-            R.string.recent_task_option_freeform, LAUNCHER_SYSTEM_SHORTCUT_FREE_FORM_TAP) {
-
-        @Override
-        protected boolean isAvailable(BaseDraggingActivity activity, int displayId) {
-            return ActivityManagerWrapper.getInstance().supportsFreeformMultiWindow(activity);
-        }
-
-        @Override
-        protected ActivityOptions makeLaunchOptions(Activity activity) {
-            ActivityOptions activityOptions = ActivityOptionsCompat.makeFreeformOptions();
+        private ActivityOptions makeLaunchOptions(Activity activity) {
+            ActivityOptions activityOptions = ActivityOptions.makeBasic();
+            activityOptions.setLaunchWindowingMode(WINDOWING_MODE_FREEFORM);
             // Arbitrary bounds only because freeform is in dev mode right now
-            Rect r = new Rect(50, 50, 200, 200);
+            final View decorView = activity.getWindow().getDecorView();
+            final WindowInsets insets = decorView.getRootWindowInsets();
+            final Rect r = new Rect(0, 0, decorView.getWidth() / 2, decorView.getHeight() / 2);
+            r.offsetTo(insets.getSystemWindowInsetLeft() + 50,
+                    insets.getSystemWindowInsetTop() + 50);
             activityOptions.setLaunchBounds(r);
             return activityOptions;
         }
+    }
+
+    /**
+     * Does NOT add split options in the following scenarios:
+     * * The taskView to add split options is already showing split screen tasks
+     * * There aren't at least 2 tasks in overview to show split options for
+     * * Split isn't supported by the task itself (non resizable activity)
+     * * We aren't currently in multi-window
+     * * The taskView to show split options for is the focused task AND we haven't started
+     * scrolling in overview (if we haven't scrolled, there's a split overview action button so
+     * we don't need this menu option)
+     */
+    TaskShortcutFactory SPLIT_SELECT = new TaskShortcutFactory() {
+        @Override
+        public List<SystemShortcut> getShortcuts(BaseDraggingActivity activity,
+                TaskIdAttributeContainer taskContainer) {
+            DeviceProfile deviceProfile = activity.getDeviceProfile();
+            final Task task  = taskContainer.getTask();
+            final int intentFlags = task.key.baseIntent.getFlags();
+            final TaskView taskView = taskContainer.getTaskView();
+            final RecentsView recentsView = taskView.getRecentsView();
+            final PagedOrientationHandler orientationHandler =
+                    recentsView.getPagedOrientationHandler();
+
+            boolean notEnoughTasksToSplit = recentsView.getTaskViewCount() < 2;
+            boolean isFocusedTask = deviceProfile.isTablet && taskView.isFocusedTask();
+            boolean isTaskInExpectedScrollPosition =
+                    recentsView.isTaskInExpectedScrollPosition(recentsView.indexOfChild(taskView));
+            boolean isTaskSplitNotSupported = !task.isDockable ||
+                    (intentFlags & FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS) != 0;
+            boolean hideForExistingMultiWindow = activity.getDeviceProfile().isMultiWindowMode;
+
+            if (taskView.containsMultipleTasks()
+                    || notEnoughTasksToSplit
+                    || isTaskSplitNotSupported
+                    || hideForExistingMultiWindow
+                    || (isFocusedTask && isTaskInExpectedScrollPosition)) {
+                return null;
+            }
+
+            return orientationHandler.getSplitPositionOptions(deviceProfile)
+                    .stream()
+                    .map((Function<SplitPositionOption, SystemShortcut>) option ->
+                            new SplitSelectSystemShortcut(activity, taskView, option))
+                    .collect(Collectors.toList());
+        }
+    };
+
+    TaskShortcutFactory SAVE_APP_PAIR = new TaskShortcutFactory() {
+        @Nullable
+        @Override
+        public List<SystemShortcut> getShortcuts(BaseDraggingActivity activity,
+                TaskIdAttributeContainer taskContainer) {
+            final TaskView taskView = taskContainer.getTaskView();
+
+            if (!FeatureFlags.ENABLE_APP_PAIRS.get() || !taskView.containsMultipleTasks()) {
+                return null;
+            }
+
+            return Collections.singletonList(new SaveAppPairSystemShortcut(activity, taskView));
+        }
 
         @Override
-        protected boolean onActivityStarted(BaseDraggingActivity activity) {
-            activity.returnToHomescreen();
+        public boolean showForSplitscreen() {
             return true;
         }
     };
 
-    TaskShortcutFactory PIN = (activity, taskContainer) -> {
-        if (!SystemUiProxy.INSTANCE.get(activity).isActive()) {
-            return null;
+    TaskShortcutFactory FREE_FORM = new TaskShortcutFactory() {
+        @Override
+        public List<SystemShortcut> getShortcuts(BaseDraggingActivity activity,
+                TaskIdAttributeContainer taskContainer) {
+            final Task task  = taskContainer.getTask();
+            if (!task.isDockable) {
+                return null;
+            }
+            if (!isAvailable(activity, task.key.displayId)) {
+                return null;
+            }
+
+            return Collections.singletonList(new FreeformSystemShortcut(
+                    R.drawable.ic_caption_desktop_button_foreground,
+                    R.string.recent_task_option_freeform, activity, taskContainer,
+                    LAUNCHER_SYSTEM_SHORTCUT_FREE_FORM_TAP));
         }
-        if (!ActivityManagerWrapper.getInstance().isScreenPinningEnabled()) {
-            return null;
+
+        private boolean isAvailable(BaseDraggingActivity activity, int displayId) {
+            return ActivityManagerWrapper.getInstance().supportsFreeformMultiWindow(activity)
+                    && !SystemProperties.getBoolean("persist.wm.debug.desktop_mode", false)
+                    && !SystemProperties.getBoolean("persist.wm.debug.desktop_mode_2", false);
         }
-        if (ActivityManagerWrapper.getInstance().isLockToAppActive()) {
-            // We shouldn't be able to pin while an app is locked.
-            return null;
+    };
+
+    TaskShortcutFactory PIN = new TaskShortcutFactory() {
+        @Override
+        public List<SystemShortcut> getShortcuts(BaseDraggingActivity activity,
+                TaskIdAttributeContainer taskContainer) {
+            if (!SystemUiProxy.INSTANCE.get(activity).isActive()) {
+                return null;
+            }
+            if (!ActivityManagerWrapper.getInstance().isScreenPinningEnabled()) {
+                return null;
+            }
+            if (ActivityManagerWrapper.getInstance().isLockToAppActive()) {
+                // We shouldn't be able to pin while an app is locked.
+                return null;
+            }
+            return Collections.singletonList(new PinSystemShortcut(activity, taskContainer));
         }
-        return new PinSystemShortcut(activity, taskContainer);
     };
 
     class PinSystemShortcut extends SystemShortcut<BaseDraggingActivity> {
@@ -335,26 +392,49 @@
         }
     }
 
-    TaskShortcutFactory INSTALL = (activity, taskContainer) ->
-            InstantAppResolver.newInstance(activity).isInstantApp(activity,
-                    taskContainer.getTask().getTopComponent().getPackageName())
-                    ? new SystemShortcut.Install(activity, taskContainer.getItemInfo(),
-                    taskContainer.getTaskView()) : null;
+    TaskShortcutFactory INSTALL = new TaskShortcutFactory() {
+        @Override
+        public List<SystemShortcut> getShortcuts(BaseDraggingActivity activity,
+                TaskIdAttributeContainer taskContainer) {
+            return InstantAppResolver.newInstance(activity).isInstantApp(activity,
+                    taskContainer.getTask().getTopComponent().getPackageName()) ?
+                    Collections.singletonList(new SystemShortcut.Install(activity,
+                            taskContainer.getItemInfo(), taskContainer.getTaskView())) :
+                    null;
+        }
+    };
 
-    TaskShortcutFactory WELLBEING = (activity, taskContainer) ->
-            WellbeingModel.SHORTCUT_FACTORY.getShortcut(activity, taskContainer.getItemInfo(),
-                    taskContainer.getTaskView());
+    TaskShortcutFactory WELLBEING = new TaskShortcutFactory() {
+        @Override
+        public List<SystemShortcut> getShortcuts(BaseDraggingActivity activity,
+                TaskIdAttributeContainer taskContainer) {
+            SystemShortcut<BaseDraggingActivity> wellbeingShortcut =
+                    WellbeingModel.SHORTCUT_FACTORY.getShortcut(activity,
+                            taskContainer.getItemInfo(), taskContainer.getTaskView());
+            return createSingletonShortcutList(wellbeingShortcut);
+        }
+    };
 
-    TaskShortcutFactory SCREENSHOT = (activity, taskContainer) ->
-            taskContainer.getThumbnailView().getTaskOverlay()
+    TaskShortcutFactory SCREENSHOT = new TaskShortcutFactory() {
+        @Override
+        public List<SystemShortcut> getShortcuts(BaseDraggingActivity activity,
+                TaskIdAttributeContainer taskContainer) {
+            SystemShortcut screenshotShortcut = taskContainer.getThumbnailView().getTaskOverlay()
                     .getScreenshotShortcut(activity, taskContainer.getItemInfo(),
                             taskContainer.getTaskView());
-
-    TaskShortcutFactory MODAL = (activity, taskContainer) -> {
-        if (ENABLE_OVERVIEW_SELECTIONS.get()) {
-            return taskContainer.getThumbnailView().getTaskOverlay().getModalStateSystemShortcut(
-                    taskContainer.getItemInfo(), taskContainer.getTaskView());
+            return createSingletonShortcutList(screenshotShortcut);
         }
-        return null;
+    };
+
+    TaskShortcutFactory MODAL = new TaskShortcutFactory() {
+        @Override
+        public List<SystemShortcut> getShortcuts(BaseDraggingActivity activity,
+                TaskIdAttributeContainer taskContainer) {
+            SystemShortcut modalStateSystemShortcut =
+                    taskContainer.getThumbnailView().getTaskOverlay()
+                            .getModalStateSystemShortcut(
+                                    taskContainer.getItemInfo(), taskContainer.getTaskView());
+            return createSingletonShortcutList(modalStateSystemShortcut);
+        }
     };
 }
diff --git a/quickstep/src/com/android/quickstep/TaskUtils.java b/quickstep/src/com/android/quickstep/TaskUtils.java
index c9db153..67360c4 100644
--- a/quickstep/src/com/android/quickstep/TaskUtils.java
+++ b/quickstep/src/com/android/quickstep/TaskUtils.java
@@ -18,19 +18,23 @@
 
 import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
 
+import android.annotation.NonNull;
+import android.annotation.UserIdInt;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.os.UserHandle;
 import android.util.Log;
+import android.view.RemoteAnimationTarget;
+
+import androidx.annotation.Nullable;
 
 import com.android.launcher3.pm.UserCache;
 import com.android.launcher3.util.ComponentKey;
 import com.android.launcher3.util.PackageManagerHelper;
 import com.android.systemui.shared.recents.model.Task;
 import com.android.systemui.shared.system.ActivityManagerWrapper;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
 
 import java.util.List;
 
@@ -47,16 +51,32 @@
      * TODO: remove this once we switch to getting the icon and label from IconCache.
      */
     public static CharSequence getTitle(Context context, Task task) {
-        UserHandle user = UserHandle.of(task.key.userId);
+        return getTitle(context, task.key.userId, task.getTopComponent().getPackageName());
+    }
+
+    public static CharSequence getTitle(
+            @NonNull Context context,
+            @UserIdInt @Nullable Integer userId,
+            @Nullable String packageName) {
+        if (userId == null || packageName == null) {
+            if (userId == null) {
+                Log.e(TAG, "Failed to get title; missing userId");
+            }
+            if (packageName == null) {
+                Log.e(TAG, "Failed to get title; missing packageName");
+            }
+            return "";
+        }
+        UserHandle user = UserHandle.of(userId);
         ApplicationInfo applicationInfo = new PackageManagerHelper(context)
-                .getApplicationInfo(task.getTopComponent().getPackageName(), user, 0);
+                .getApplicationInfo(packageName, user, 0);
         if (applicationInfo == null) {
-            Log.e(TAG, "Failed to get title for task " + task);
+            Log.e(TAG, "Failed to get title for userId=" + userId + ", packageName=" + packageName);
             return "";
         }
         PackageManager packageManager = context.getPackageManager();
         return packageManager.getUserBadgedLabel(
-            applicationInfo.loadLabel(packageManager), user);
+                applicationInfo.loadLabel(packageManager), user);
     }
 
     public static ComponentKey getLaunchComponentKeyForTask(Task.TaskKey taskKey) {
@@ -67,9 +87,9 @@
     }
 
 
-    public static boolean taskIsATargetWithMode(RemoteAnimationTargetCompat[] targets,
+    public static boolean taskIsATargetWithMode(RemoteAnimationTarget[] targets,
             int taskId, int mode) {
-        for (RemoteAnimationTargetCompat target : targets) {
+        for (RemoteAnimationTarget target : targets) {
             if (target.mode == mode && target.taskId == taskId) {
                 return true;
             }
diff --git a/quickstep/src/com/android/quickstep/TaskViewUtils.java b/quickstep/src/com/android/quickstep/TaskViewUtils.java
index db402af..499a260 100644
--- a/quickstep/src/com/android/quickstep/TaskViewUtils.java
+++ b/quickstep/src/com/android/quickstep/TaskViewUtils.java
@@ -15,12 +15,15 @@
  */
 package com.android.quickstep;
 
-import static android.app.ActivityTaskManager.INVALID_TASK_ID;
+import static android.view.RemoteAnimationTarget.MODE_CLOSING;
+import static android.view.RemoteAnimationTarget.MODE_OPENING;
 import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER;
 import static android.view.WindowManager.TRANSIT_OPEN;
 import static android.view.WindowManager.TRANSIT_TO_FRONT;
 
 import static com.android.launcher3.LauncherAnimUtils.VIEW_ALPHA;
+import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_X;
+import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_Y;
 import static com.android.launcher3.LauncherState.BACKGROUND_APP;
 import static com.android.launcher3.LauncherState.NORMAL;
 import static com.android.launcher3.QuickstepTransitionManager.ANIMATION_DELAY_NAV_FADE_IN;
@@ -35,19 +38,14 @@
 import static com.android.launcher3.anim.Interpolators.LINEAR;
 import static com.android.launcher3.anim.Interpolators.TOUCH_RESPONSE_INTERPOLATOR;
 import static com.android.launcher3.anim.Interpolators.clampToProgress;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
-import static com.android.launcher3.statehandlers.DepthController.DEPTH;
-import static com.android.launcher3.testing.TestProtocol.BAD_STATE;
-import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_CLOSING;
-import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_OPENING;
+import static com.android.launcher3.util.MultiPropertyFactory.MULTI_PROPERTY_VALUE;
+import static com.android.quickstep.views.DesktopTaskView.DESKTOP_MODE_SUPPORTED;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.AnimatorSet;
-import android.animation.ObjectAnimator;
 import android.animation.ValueAnimator;
 import android.annotation.TargetApi;
-import android.app.PendingIntent;
 import android.content.ComponentName;
 import android.content.Context;
 import android.graphics.Matrix;
@@ -55,7 +53,7 @@
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.os.Build;
-import android.util.Log;
+import android.view.RemoteAnimationTarget;
 import android.view.SurfaceControl;
 import android.view.View;
 import android.window.TransitionInfo;
@@ -65,6 +63,7 @@
 
 import com.android.launcher3.BaseActivity;
 import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.anim.AnimationSuccessListener;
 import com.android.launcher3.anim.AnimatorPlaybackController;
 import com.android.launcher3.anim.Interpolators;
@@ -75,9 +74,12 @@
 import com.android.launcher3.util.DisplayController;
 import com.android.quickstep.RemoteTargetGluer.RemoteTargetHandle;
 import com.android.quickstep.util.MultiValueUpdateListener;
+import com.android.quickstep.util.SurfaceTransaction;
+import com.android.quickstep.util.SurfaceTransaction.SurfaceProperties;
 import com.android.quickstep.util.SurfaceTransactionApplier;
 import com.android.quickstep.util.TaskViewSimulator;
 import com.android.quickstep.util.TransformParams;
+import com.android.quickstep.views.DesktopTaskView;
 import com.android.quickstep.views.GroupedTaskView;
 import com.android.quickstep.views.RecentsView;
 import com.android.quickstep.views.TaskThumbnailView;
@@ -85,7 +87,6 @@
 import com.android.systemui.shared.recents.model.Task;
 import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
 import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
-import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -107,7 +108,7 @@
      * opening remote target (which we don't get until onAnimationStart) will resolve to a TaskView.
      */
     public static TaskView findTaskViewToLaunch(
-            RecentsView recentsView, View v, RemoteAnimationTargetCompat[] targets) {
+            RecentsView recentsView, View v, RemoteAnimationTarget[] targets) {
         if (v instanceof TaskView) {
             TaskView taskView = (TaskView) v;
             return recentsView.isTaskViewVisible(taskView) ? taskView : null;
@@ -137,7 +138,7 @@
         }
         // Resolve the opening task id
         int openingTaskId = -1;
-        for (RemoteAnimationTargetCompat target : targets) {
+        for (RemoteAnimationTarget target : targets) {
             if (target.mode == MODE_OPENING) {
                 openingTaskId = target.taskId;
                 break;
@@ -160,9 +161,9 @@
 
     public static void createRecentsWindowAnimator(
             @NonNull TaskView v, boolean skipViewChanges,
-            @NonNull RemoteAnimationTargetCompat[] appTargets,
-            @NonNull RemoteAnimationTargetCompat[] wallpaperTargets,
-            @NonNull RemoteAnimationTargetCompat[] nonAppTargets,
+            @NonNull RemoteAnimationTarget[] appTargets,
+            @NonNull RemoteAnimationTarget[] wallpaperTargets,
+            @NonNull RemoteAnimationTarget[] nonAppTargets,
             @Nullable DepthController depthController,
             PendingAnimation out) {
         RecentsView recentsView = v.getRecentsView();
@@ -172,7 +173,7 @@
         final RemoteAnimationTargets targets =
                 new RemoteAnimationTargets(appTargets, wallpaperTargets, nonAppTargets,
                         MODE_OPENING);
-        final RemoteAnimationTargetCompat navBarTarget = targets.getNavBarRemoteAnimationTarget();
+        final RemoteAnimationTarget navBarTarget = targets.getNavBarRemoteAnimationTarget();
 
         SurfaceTransactionApplier applier = new SurfaceTransactionApplier(v);
         targets.addReleaseCheck(applier);
@@ -183,10 +184,13 @@
             // Re-use existing handles
             remoteTargetHandles = recentsViewHandles;
         } else {
+            boolean forDesktop = DESKTOP_MODE_SUPPORTED && v instanceof DesktopTaskView;
             RemoteTargetGluer gluer = new RemoteTargetGluer(v.getContext(),
-                    recentsView.getSizeStrategy(), targets);
-            if (v.containsMultipleTasks()) {
-                remoteTargetHandles = gluer.assignTargetsForSplitScreen(targets, v.getTaskIds());
+                    recentsView.getSizeStrategy(), targets, forDesktop);
+            if (forDesktop) {
+                remoteTargetHandles = gluer.assignTargetsForDesktop(targets);
+            } else if (v.containsMultipleTasks()) {
+                remoteTargetHandles = gluer.assignTargetsForSplitScreen(targets);
             } else {
                 remoteTargetHandles = gluer.assignTargets(targets);
             }
@@ -197,10 +201,10 @@
 
         int taskIndex = recentsView.indexOfChild(v);
         Context context = v.getContext();
-        DeviceProfile dp = BaseActivity.fromContext(context).getDeviceProfile();
+        BaseActivity baseActivity = BaseActivity.fromContext(context);
+        DeviceProfile dp = baseActivity.getDeviceProfile();
         boolean showAsGrid = dp.isTablet;
-        boolean parallaxCenterAndAdjacentTask =
-                taskIndex != recentsView.getCurrentPage() && !showAsGrid;
+        boolean parallaxCenterAndAdjacentTask = taskIndex != recentsView.getCurrentPage();
         int taskRectTranslationPrimary = recentsView.getScrollOffset(taskIndex);
         int taskRectTranslationSecondary = showAsGrid ? (int) v.getGridTranslationY() : 0;
 
@@ -239,7 +243,17 @@
                     TOUCH_RESPONSE_INTERPOLATOR);
             out.setFloat(tvsLocal.recentsViewScroll, AnimatedFloat.VALUE, 0,
                     TOUCH_RESPONSE_INTERPOLATOR);
-
+            out.addListener(new AnimatorListenerAdapter() {
+                @Override
+                public void onAnimationStart(Animator animation) {
+                    super.onAnimationStart(animation);
+                    final SurfaceTransaction showTransaction = new SurfaceTransaction();
+                    for (int i = targets.apps.length - 1; i >= 0; --i) {
+                        showTransaction.getTransaction().show(targets.apps[i].leash);
+                    }
+                    applier.scheduleApply(showTransaction);
+                }
+            });
             out.addOnFrameCallback(() -> {
                 for (RemoteTargetHandle handle : remoteTargetHandles) {
                     handle.getTaskViewSimulator().apply(handle.getTransformParams());
@@ -255,21 +269,24 @@
 
                     @Override
                     public void onUpdate(float percent, boolean initOnly) {
-                        final SurfaceParams.Builder navBuilder =
-                                new SurfaceParams.Builder(navBarTarget.leash);
+
 
                         // TODO Do we need to operate over multiple TVSs for the navbar leash?
                         for (RemoteTargetHandle handle : remoteTargetHandles) {
+                            SurfaceTransaction transaction = new SurfaceTransaction();
+                            SurfaceProperties navBuilder =
+                                    transaction.forSurface(navBarTarget.leash);
+
                             if (mNavFadeIn.value > mNavFadeIn.getStartValue()) {
                                 TaskViewSimulator taskViewSimulator = handle.getTaskViewSimulator();
                                 taskViewSimulator.getCurrentCropRect().round(cropRect);
-                                navBuilder.withMatrix(taskViewSimulator.getCurrentMatrix())
-                                        .withWindowCrop(cropRect)
-                                        .withAlpha(mNavFadeIn.value);
+                                navBuilder.setMatrix(taskViewSimulator.getCurrentMatrix())
+                                        .setWindowCrop(cropRect)
+                                        .setAlpha(mNavFadeIn.value);
                             } else {
-                                navBuilder.withAlpha(mNavFadeOut.value);
+                                navBuilder.setAlpha(mNavFadeOut.value);
                             }
-                            handle.getTransformParams().applySurfaceParams(navBuilder.build());
+                            handle.getTransformParams().applySurfaceParams(transaction);
                         }
                     }
                 });
@@ -307,9 +324,15 @@
             // to follow the TaskViewSimulator. So the final matrix applied on the thumbnailView is:
             //    Mt K(0)` K(t) Mt`
             TaskThumbnailView[] thumbnails = v.getThumbnails();
-            Matrix[] mt = new Matrix[simulatorCopies.length];
-            Matrix[] mti = new Matrix[simulatorCopies.length];
-            for (int i = 0; i < thumbnails.length; i++) {
+
+            // In case simulator copies and thumbnail size do no match, ensure we get the lesser.
+            // This ensures we do not create arrays with empty elements or attempt to references
+            // indexes out of array bounds.
+            final int matrixSize = Math.min(simulatorCopies.length, thumbnails.length);
+
+            Matrix[] mt = new Matrix[matrixSize];
+            Matrix[] mti = new Matrix[matrixSize];
+            for (int i = 0; i < matrixSize; i++) {
                 TaskThumbnailView ttv = thumbnails[i];
                 RectF localBounds = new RectF(0, 0,  ttv.getWidth(), ttv.getHeight());
                 float[] tvBoundsMapped = new float[]{0, 0,  ttv.getWidth(), ttv.getHeight()};
@@ -324,16 +347,27 @@
                 Matrix localMti = new Matrix();
                 localMt.invert(localMti);
                 mti[i] = localMti;
+
+                // Translations for child thumbnails also get scaled as the parent taskView scales
+                // Add inverse scaling to keep translations the same
+                float translationY = ttv.getTranslationY();
+                float translationX = ttv.getTranslationX();
+                float fullScreenScale =
+                        topMostSimulators[i].getTaskViewSimulator().getFullScreenScale();
+                out.addFloat(ttv, VIEW_TRANSLATE_Y, translationY,
+                        translationY / fullScreenScale, TOUCH_RESPONSE_INTERPOLATOR);
+                out.addFloat(ttv, VIEW_TRANSLATE_X, translationX,
+                         translationX / fullScreenScale, TOUCH_RESPONSE_INTERPOLATOR);
             }
 
-            Matrix[] k0i = new Matrix[simulatorCopies.length];
-            for (int i = 0; i < simulatorCopies.length; i++) {
+            Matrix[] k0i = new Matrix[matrixSize];
+            for (int i = 0; i < matrixSize; i++) {
                 k0i[i] = new Matrix();
                 simulatorCopies[i].getTaskViewSimulator().getCurrentMatrix().invert(k0i[i]);
             }
             Matrix animationMatrix = new Matrix();
             out.addOnFrameCallback(() -> {
-                for (int i = 0; i < simulatorCopies.length; i++) {
+                for (int i = 0; i < matrixSize; i++) {
                     animationMatrix.set(mt[i]);
                     animationMatrix.postConcat(k0i[i]);
                     animationMatrix.postConcat(simulatorCopies[i]
@@ -370,8 +404,8 @@
         });
 
         if (depthController != null) {
-            out.setFloat(depthController, DEPTH, BACKGROUND_APP.getDepth(context),
-                    TOUCH_RESPONSE_INTERPOLATOR);
+            out.setFloat(depthController.stateDepth, MULTI_PROPERTY_VALUE,
+                    BACKGROUND_APP.getDepth(baseActivity), TOUCH_RESPONSE_INTERPOLATOR);
         }
     }
 
@@ -391,17 +425,47 @@
      * device is considered in multiWindowMode and things like insets and stuff change
      * and calculations have to be adjusted in the animations for that
      */
-    public static void composeRecentsSplitLaunchAnimator(int initialTaskId,
-            @Nullable PendingIntent initialTaskPendingIntent, int secondTaskId,
-            @NonNull TransitionInfo transitionInfo, SurfaceControl.Transaction t,
-            @NonNull Runnable finishCallback) {
+    public static void composeRecentsSplitLaunchAnimator(GroupedTaskView launchingTaskView,
+            @NonNull StateManager stateManager, @Nullable DepthController depthController,
+            int initialTaskId, int secondTaskId, @NonNull TransitionInfo transitionInfo,
+            SurfaceControl.Transaction t, @NonNull Runnable finishCallback) {
+        if (launchingTaskView != null) {
+            AnimatorSet animatorSet = new AnimatorSet();
+            animatorSet.addListener(new AnimatorListenerAdapter() {
+                @Override
+                public void onAnimationEnd(Animator animation) {
+                    finishCallback.run();
+                }
+            });
+
+            final RemoteAnimationTarget[] appTargets =
+                    RemoteAnimationTargetCompat.wrapApps(transitionInfo, t, null /* leashMap */);
+            final RemoteAnimationTarget[] wallpaperTargets =
+                    RemoteAnimationTargetCompat.wrapNonApps(
+                            transitionInfo, true /* wallpapers */, t, null /* leashMap */);
+            final RemoteAnimationTarget[] nonAppTargets =
+                    RemoteAnimationTargetCompat.wrapNonApps(
+                            transitionInfo, false /* wallpapers */, t, null /* leashMap */);
+            final RecentsView recentsView = launchingTaskView.getRecentsView();
+            composeRecentsLaunchAnimator(animatorSet, launchingTaskView,
+                    appTargets, wallpaperTargets, nonAppTargets,
+                    true, stateManager,
+                    recentsView, depthController);
+
+            t.apply();
+            animatorSet.start();
+            return;
+        }
+
         // TODO: consider initialTaskPendingIntent
         TransitionInfo.Change splitRoot1 = null;
         TransitionInfo.Change splitRoot2 = null;
         for (int i = 0; i < transitionInfo.getChanges().size(); ++i) {
             final TransitionInfo.Change change = transitionInfo.getChanges().get(i);
-            final int taskId = change.getTaskInfo() != null ? change.getTaskInfo().taskId : -1;
+            if (change.getTaskInfo() == null) continue;
+            final int taskId = change.getTaskInfo().taskId;
             final int mode = change.getMode();
+
             // Find the target tasks' root tasks since those are the split stages that need to
             // be animated (the tasks themselves are children and thus inherit animation).
             if (taskId == initialTaskId || taskId == secondTaskId) {
@@ -414,7 +478,7 @@
                             + "root of " + taskId + " is already visible or has broken hierarchy.");
                 }
             }
-            if (taskId == initialTaskId && initialTaskId != INVALID_TASK_ID) {
+            if (taskId == initialTaskId) {
                 splitRoot1 = transitionInfo.getChange(change.getParent());
             }
             if (taskId == secondTaskId) {
@@ -448,17 +512,16 @@
      * If {@param launchingTaskView} is not null, then this will play the tasks launch animation
      * from the position of the GroupedTaskView (when user taps on the TaskView to start it).
      * Technically this case should be taken care of by
-     * {@link #composeRecentsSplitLaunchAnimatorLegacy()} below, but the way we launch tasks whether
+     * {@link #composeRecentsSplitLaunchAnimatorLegacy} below, but the way we launch tasks whether
      * it's a single task or multiple tasks results in different entry-points.
      *
      * If it is null, then it will simply fade in the starting apps and fade out launcher (for the
      * case where launcher handles animating starting split tasks from app icon) */
     public static void composeRecentsSplitLaunchAnimatorLegacy(
-            @Nullable GroupedTaskView launchingTaskView, int initialTaskId,
-            @Nullable PendingIntent initialTaskPendingIntent, int secondTaskId,
-            @NonNull RemoteAnimationTargetCompat[] appTargets,
-            @NonNull RemoteAnimationTargetCompat[] wallpaperTargets,
-            @NonNull RemoteAnimationTargetCompat[] nonAppTargets,
+            @Nullable GroupedTaskView launchingTaskView, int initialTaskId, int secondTaskId,
+            @NonNull RemoteAnimationTarget[] appTargets,
+            @NonNull RemoteAnimationTarget[] wallpaperTargets,
+            @NonNull RemoteAnimationTarget[] nonAppTargets,
             @NonNull StateManager stateManager,
             @Nullable DepthController depthController,
             @NonNull Runnable finishCallback) {
@@ -468,7 +531,6 @@
             animatorSet.addListener(new AnimatorListenerAdapter() {
                 @Override
                 public void onAnimationEnd(Animator animation) {
-                    super.onAnimationEnd(animation);
                     finishCallback.run();
                 }
             });
@@ -482,7 +544,7 @@
 
         final ArrayList<SurfaceControl> openingTargets = new ArrayList<>();
         final ArrayList<SurfaceControl> closingTargets = new ArrayList<>();
-        for (RemoteAnimationTargetCompat appTarget : appTargets) {
+        for (RemoteAnimationTarget appTarget : appTargets) {
             final int taskId = appTarget.taskInfo != null ? appTarget.taskInfo.taskId : -1;
             final int mode = appTarget.mode;
             final SurfaceControl leash = appTarget.leash;
@@ -530,7 +592,6 @@
                 for (SurfaceControl leash: closingTargets) {
                     t.hide(leash);
                 }
-                super.onAnimationEnd(animation);
                 finishCallback.run();
             }
         });
@@ -538,9 +599,9 @@
     }
 
     public static void composeRecentsLaunchAnimator(@NonNull AnimatorSet anim, @NonNull View v,
-            @NonNull RemoteAnimationTargetCompat[] appTargets,
-            @NonNull RemoteAnimationTargetCompat[] wallpaperTargets,
-            @NonNull RemoteAnimationTargetCompat[] nonAppTargets, boolean launcherClosing,
+            @NonNull RemoteAnimationTarget[] appTargets,
+            @NonNull RemoteAnimationTarget[] wallpaperTargets,
+            @NonNull RemoteAnimationTarget[] nonAppTargets, boolean launcherClosing,
             @NonNull StateManager stateManager, @NonNull RecentsView recentsView,
             @Nullable DepthController depthController) {
         boolean skipLauncherChanges = !launcherClosing;
@@ -568,40 +629,27 @@
         Animator launcherAnim;
         final AnimatorListenerAdapter windowAnimEndListener;
         if (launcherClosing) {
-            Context context = v.getContext();
-            DeviceProfile dp = BaseActivity.fromContext(context).getDeviceProfile();
-            launcherAnim = dp.isTablet
-                    ? ObjectAnimator.ofFloat(recentsView, RecentsView.CONTENT_ALPHA, 0)
-                    : recentsView.createAdjacentPageAnimForTaskLaunch(taskView);
-            if (dp.isTablet) {
-                Log.d(BAD_STATE, "TVU composeRecentsLaunchAnimator alpha=" + 0);
-                launcherAnim.addListener(new AnimatorListenerAdapter() {
-                    @Override
-                    public void onAnimationStart(Animator animation) {
-                        Log.d(BAD_STATE, "TVU composeRecentsLaunchAnimator onStart");
-                    }
-
-                    @Override
-                    public void onAnimationCancel(Animator animation) {
-                        float alpha = recentsView == null
-                                ? -1
-                                : RecentsView.CONTENT_ALPHA.get(recentsView);
-                        Log.d(BAD_STATE, "TVU composeRecentsLaunchAnimator onCancel, alpha="
-                                + alpha);
-                    }
-
-                    @Override
-                    public void onAnimationEnd(Animator animation) {
-                        Log.d(BAD_STATE, "TVU composeRecentsLaunchAnimator onEnd");
-                    }
-                });
+            // Since Overview is in launcher, just opening overview sets willFinishToHome to true.
+            // Now that we are closing the launcher, we need to (re)set willFinishToHome back to
+            // false. Otherwise, RecentsAnimationController can't differentiate between closing
+            // overview to 3p home vs closing overview to app.
+            final RecentsAnimationController raController =
+                    recentsView.getRecentsAnimationController();
+            if (raController != null) {
+                raController.setWillFinishToHome(false);
             }
+            launcherAnim = recentsView.createAdjacentPageAnimForTaskLaunch(taskView);
             launcherAnim.setInterpolator(Interpolators.TOUCH_RESPONSE_INTERPOLATOR);
             launcherAnim.setDuration(RECENTS_LAUNCH_DURATION);
 
-            // Make sure recents gets fixed up by resetting task alphas and scales, etc.
             windowAnimEndListener = new AnimatorListenerAdapter() {
                 @Override
+                public void onAnimationStart(Animator animation) {
+                    recentsView.onTaskLaunchedInLiveTileMode();
+                }
+
+                // Make sure recents gets fixed up by resetting task alphas and scales, etc.
+                @Override
                 public void onAnimationEnd(Animator animation) {
                     recentsView.finishRecentsAnimation(false /* toRecents */, () -> {
                         recentsView.post(() -> {
@@ -626,7 +674,7 @@
             };
         }
         pa.add(launcherAnim);
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get() && recentsView.getRunningTaskIndex() != -1) {
+        if (recentsView.getRunningTaskIndex() != -1) {
             pa.addOnFrameCallback(recentsView::redrawLiveTile);
         }
         anim.play(pa.buildAnim());
@@ -641,28 +689,36 @@
     /**
      * Creates an animation to show/hide the auxiliary surfaces (aka. divider bar), only calling
      * {@param animatorHandler} if there are valid surfaces to animate.
+     * Passing null handler to apply the visibility immediately.
      *
      * @return the animator animating the surfaces
      */
     public static ValueAnimator createSplitAuxiliarySurfacesAnimator(
-            RemoteAnimationTargetCompat[] nonApps, boolean shown,
-            Consumer<ValueAnimator> animatorHandler) {
+            @Nullable RemoteAnimationTarget[] nonApps, boolean shown,
+            @Nullable Consumer<ValueAnimator> animatorHandler) {
         if (nonApps == null || nonApps.length == 0) {
             return null;
         }
 
-        SurfaceControl.Transaction t = new SurfaceControl.Transaction();
-        List<SurfaceControl> auxiliarySurfaces = new ArrayList<>(nonApps.length);
-        boolean hasSurfaceToAnimate = false;
-        for (int i = 0; i < nonApps.length; ++i) {
-            final RemoteAnimationTargetCompat targ = nonApps[i];
-            final SurfaceControl leash = targ.leash;
-            if (targ.windowType == TYPE_DOCK_DIVIDER && leash != null) {
+        List<SurfaceControl> auxiliarySurfaces = new ArrayList<>();
+        for (RemoteAnimationTarget target : nonApps) {
+            final SurfaceControl leash = target.leash;
+            if (target.windowType == TYPE_DOCK_DIVIDER && leash != null && leash.isValid()) {
                 auxiliarySurfaces.add(leash);
-                hasSurfaceToAnimate = true;
             }
         }
-        if (!hasSurfaceToAnimate) {
+        if (auxiliarySurfaces.isEmpty()) {
+            return null;
+        }
+
+        SurfaceControl.Transaction t = new SurfaceControl.Transaction();
+        if (animatorHandler == null) {
+            // Apply the visibility directly without fade animation.
+            for (SurfaceControl leash : auxiliarySurfaces) {
+                t.setVisibility(leash, shown);
+            }
+            t.apply();
+            t.close();
             return null;
         }
 
@@ -670,16 +726,18 @@
         dockFadeAnimator.addUpdateListener(valueAnimator -> {
             float progress = valueAnimator.getAnimatedFraction();
             for (SurfaceControl leash : auxiliarySurfaces) {
-                t.setAlpha(leash, shown ? progress : 1 - progress);
+                if (leash != null && leash.isValid()) {
+                    t.setAlpha(leash, shown ? progress : 1 - progress);
+                }
             }
             t.apply();
         });
         dockFadeAnimator.addListener(new AnimatorListenerAdapter() {
             @Override
             public void onAnimationStart(Animator animation) {
-                super.onAnimationStart(animation);
                 if (shown) {
                     for (SurfaceControl leash : auxiliarySurfaces) {
+                        t.setLayer(leash, Integer.MAX_VALUE);
                         t.setAlpha(leash, 0);
                         t.show(leash);
                     }
@@ -689,10 +747,11 @@
 
             @Override
             public void onAnimationEnd(Animator animation) {
-                super.onAnimationEnd(animation);
                 if (!shown) {
                     for (SurfaceControl leash : auxiliarySurfaces) {
-                        t.hide(leash);
+                        if (leash != null && leash.isValid()) {
+                            t.hide(leash);
+                        }
                     }
                     t.apply();
                 }
diff --git a/quickstep/src/com/android/quickstep/TopTaskTracker.java b/quickstep/src/com/android/quickstep/TopTaskTracker.java
index 723dc72..d34cddf 100644
--- a/quickstep/src/com/android/quickstep/TopTaskTracker.java
+++ b/quickstep/src/com/android/quickstep/TopTaskTracker.java
@@ -18,11 +18,15 @@
 import static android.app.ActivityTaskManager.INVALID_TASK_ID;
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
 import static android.content.Intent.ACTION_CHOOSER;
 import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS;
+import static android.view.Display.DEFAULT_DISPLAY;
 
 import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT;
 
+import android.annotation.UserIdInt;
 import android.app.ActivityManager.RunningTaskInfo;
 import android.content.Context;
 
@@ -31,9 +35,9 @@
 
 import com.android.launcher3.util.MainThreadInitializedObject;
 import com.android.launcher3.util.SplitConfigurationOptions;
+import com.android.launcher3.util.SplitConfigurationOptions.SplitStageInfo;
 import com.android.launcher3.util.SplitConfigurationOptions.StagePosition;
 import com.android.launcher3.util.SplitConfigurationOptions.StageType;
-import com.android.launcher3.util.SplitConfigurationOptions.StagedSplitTaskPosition;
 import com.android.launcher3.util.TraceHelper;
 import com.android.systemui.shared.recents.model.Task;
 import com.android.systemui.shared.recents.model.Task.TaskKey;
@@ -63,8 +67,9 @@
     // Ordered list with first item being the most recent task.
     private final LinkedList<RunningTaskInfo> mOrderedTaskList = new LinkedList<>();
 
-    private final StagedSplitTaskPosition mMainStagePosition = new StagedSplitTaskPosition();
-    private final StagedSplitTaskPosition mSideStagePosition = new StagedSplitTaskPosition();
+
+    private final SplitStageInfo mMainStagePosition = new SplitStageInfo();
+    private final SplitStageInfo mSideStagePosition = new SplitStageInfo();
     private int mPinnedTaskId = INVALID_TASK_ID;
 
     private TopTaskTracker(Context context) {
@@ -84,6 +89,19 @@
     public void onTaskMovedToFront(RunningTaskInfo taskInfo) {
         mOrderedTaskList.removeIf(rto -> rto.taskId == taskInfo.taskId);
         mOrderedTaskList.addFirst(taskInfo);
+
+        // Keep the home display's top running task in the first while adding a non-home
+        // display's task to the list, to avoid showing non-home display's task upon going to
+        // Recents animation.
+        if (taskInfo.displayId != DEFAULT_DISPLAY) {
+            final RunningTaskInfo topTaskOnHomeDisplay = mOrderedTaskList.stream()
+                    .filter(rto -> rto.displayId == DEFAULT_DISPLAY).findFirst().orElse(null);
+            if (topTaskOnHomeDisplay != null) {
+                mOrderedTaskList.removeIf(rto -> rto.taskId == topTaskOnHomeDisplay.taskId);
+                mOrderedTaskList.addFirst(topTaskOnHomeDisplay);
+            }
+        }
+
         if (mOrderedTaskList.size() >= HISTORY_SIZE) {
             // If we grow in size, remove the last taskInfo which is not part of the split task.
             Iterator<RunningTaskInfo> itr = mOrderedTaskList.descendingIterator();
@@ -110,23 +128,16 @@
 
     @Override
     public void onTaskStageChanged(int taskId, @StageType int stage, boolean visible) {
-        // If task is not visible but we are tracking it, stop tracking it
-        if (!visible) {
+        // If a task is not visible anymore or has been moved to undefined, stop tracking it.
+        if (!visible || stage == SplitConfigurationOptions.STAGE_TYPE_UNDEFINED) {
             if (mMainStagePosition.taskId == taskId) {
-                resetTaskId(mMainStagePosition);
+                mMainStagePosition.taskId = INVALID_TASK_ID;
             } else if (mSideStagePosition.taskId == taskId) {
-                resetTaskId(mSideStagePosition);
+                mSideStagePosition.taskId = INVALID_TASK_ID;
             } // else it's an un-tracked child
             return;
         }
 
-        // If stage has moved to undefined, stop tracking the task
-        if (stage == SplitConfigurationOptions.STAGE_TYPE_UNDEFINED) {
-            resetTaskId(taskId == mMainStagePosition.taskId
-                    ? mMainStagePosition : mSideStagePosition);
-            return;
-        }
-
         if (stage == SplitConfigurationOptions.STAGE_TYPE_MAIN) {
             mMainStagePosition.taskId = taskId;
         } else {
@@ -144,10 +155,6 @@
         mPinnedTaskId = INVALID_TASK_ID;
     }
 
-    private void resetTaskId(StagedSplitTaskPosition taskPosition) {
-        taskPosition.taskId = INVALID_TASK_ID;
-    }
-
     /**
      * @return index 0 will be task in left/top position, index 1 in right/bottom position.
      *         Will return empty array if device is not in staged split
@@ -238,6 +245,20 @@
                     .getActivityType() == ACTIVITY_TYPE_HOME;
         }
 
+        public boolean isRecentsTask() {
+            return mTopTask != null && mTopTask.configuration.windowConfiguration
+                    .getActivityType() == ACTIVITY_TYPE_RECENTS;
+        }
+
+        /**
+         * Returns {@code true} if this task windowing mode is set to {@link
+         * android.app.WindowConfiguration#WINDOWING_MODE_FREEFORM}
+         */
+        public boolean isFreeformTask() {
+            return mTopTask != null && mTopTask.configuration.windowConfiguration.getWindowingMode()
+                    == WINDOWING_MODE_FREEFORM;
+        }
+
         /**
          * Returns {@link Task} array which can be used as a placeholder until the true object
          * is loaded by the model
@@ -267,5 +288,19 @@
             }
             return result;
         }
+
+        @UserIdInt
+        @Nullable
+        public Integer getUserId() {
+            return mTopTask == null ? null : mTopTask.userId;
+        }
+
+        @Nullable
+        public String getPackageName() {
+            if (mTopTask == null || mTopTask.baseActivity == null) {
+                return null;
+            }
+            return mTopTask.baseActivity.getPackageName();
+        }
     }
 }
diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java
index 61d36fb..d6a468d 100644
--- a/quickstep/src/com/android/quickstep/TouchInteractionService.java
+++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * 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.
@@ -15,26 +15,42 @@
  */
 package com.android.quickstep;
 
+import static android.accessibilityservice.AccessibilityService.GLOBAL_ACTION_ACCESSIBILITY_ALL_APPS;
 import static android.view.MotionEvent.ACTION_CANCEL;
 import static android.view.MotionEvent.ACTION_DOWN;
+import static android.view.MotionEvent.ACTION_MOVE;
+import static android.view.MotionEvent.ACTION_POINTER_DOWN;
+import static android.view.MotionEvent.ACTION_POINTER_UP;
 import static android.view.MotionEvent.ACTION_UP;
 
-import static com.android.launcher3.config.FeatureFlags.ASSISTANT_GIVES_LAUNCHER_FOCUS;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
+import static com.android.launcher3.Launcher.INTENT_ACTION_ALL_APPS_TOGGLE;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_TRACKPAD_GESTURE;
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
 import static com.android.quickstep.GestureState.DEFAULT_STATE;
+import static com.android.quickstep.GestureState.TrackpadGestureType.getTrackpadGestureType;
+import static com.android.quickstep.InputConsumer.TYPE_CURSOR_HOVER;
+import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.FLAG_USING_OTHER_ACTIVITY_INPUT_CONSUMER;
+import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.MOTION_DOWN;
+import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.MOTION_MOVE;
+import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.MOTION_UP;
 import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
-import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_RECENT_TASKS;
-import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_BACK_ANIMATION;
-import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_ONE_HANDED;
-import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_PIP;
-import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_SHELL_TRANSITIONS;
-import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_SPLIT_SCREEN;
-import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_STARTING_WINDOW;
 import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SYSUI_PROXY;
+import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_UNFOLD_ANIMATION_FORWARDER;
 import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_UNLOCK_ANIMATION_CONTROLLER;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_FREEFORM_ACTIVE_IN_DESKTOP_MODE;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED;
+import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_QUICK_SETTINGS_EXPANDED;
 import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_TRACING_ENABLED;
+import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_BACK_ANIMATION;
+import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_BUBBLES;
+import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_DESKTOP_MODE;
+import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_DRAG_AND_DROP;
+import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_ONE_HANDED;
+import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_PIP;
+import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_RECENT_TASKS;
+import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_SHELL_TRANSITIONS;
+import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_SPLIT_SCREEN;
+import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_STARTING_WINDOW;
 
 import android.annotation.TargetApi;
 import android.app.PendingIntent;
@@ -43,7 +59,6 @@
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.content.res.Configuration;
-import android.graphics.Rect;
 import android.graphics.Region;
 import android.graphics.drawable.Icon;
 import android.os.Build;
@@ -55,6 +70,7 @@
 import android.view.Choreographer;
 import android.view.InputEvent;
 import android.view.MotionEvent;
+import android.view.SurfaceControl;
 import android.view.accessibility.AccessibilityManager;
 
 import androidx.annotation.BinderThread;
@@ -63,23 +79,27 @@
 import androidx.annotation.UiThread;
 
 import com.android.launcher3.BaseDraggingActivity;
+import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.R;
-import com.android.launcher3.ResourceUtils;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.provider.RestoreDbTask;
+import com.android.launcher3.statehandlers.DesktopVisibilityController;
 import com.android.launcher3.statemanager.StatefulActivity;
 import com.android.launcher3.taskbar.TaskbarActivityContext;
 import com.android.launcher3.taskbar.TaskbarManager;
 import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.ResourceUtils;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.tracing.LauncherTraceProto;
 import com.android.launcher3.tracing.TouchInteractionServiceProto;
+import com.android.launcher3.uioverrides.flags.FlagsFactory;
 import com.android.launcher3.uioverrides.plugins.PluginManagerWrapper;
 import com.android.launcher3.util.DisplayController;
 import com.android.launcher3.util.OnboardingPrefs;
 import com.android.launcher3.util.TraceHelper;
-import com.android.launcher3.util.WindowBounds;
 import com.android.quickstep.inputconsumers.AccessibilityInputConsumer;
 import com.android.quickstep.inputconsumers.AssistantInputConsumer;
 import com.android.quickstep.inputconsumers.DeviceLockedInputConsumer;
@@ -90,12 +110,13 @@
 import com.android.quickstep.inputconsumers.ProgressDelegateInputConsumer;
 import com.android.quickstep.inputconsumers.ResetGestureInputConsumer;
 import com.android.quickstep.inputconsumers.ScreenPinnedInputConsumer;
+import com.android.quickstep.inputconsumers.StatusBarInputConsumer;
 import com.android.quickstep.inputconsumers.SysUiOverlayInputConsumer;
-import com.android.quickstep.inputconsumers.TaskbarStashInputConsumer;
+import com.android.quickstep.inputconsumers.TaskbarUnstashInputConsumer;
 import com.android.quickstep.util.ActiveGestureLog;
+import com.android.quickstep.util.ActiveGestureLog.CompoundString;
 import com.android.quickstep.util.ProtoTracer;
 import com.android.quickstep.util.ProxyScreenStatusProvider;
-import com.android.quickstep.util.SplitScreenBounds;
 import com.android.systemui.shared.recents.IOverviewProxy;
 import com.android.systemui.shared.recents.ISystemUiProxy;
 import com.android.systemui.shared.system.ActivityManagerWrapper;
@@ -104,7 +125,11 @@
 import com.android.systemui.shared.system.InputMonitorCompat;
 import com.android.systemui.shared.system.smartspace.ISysuiUnlockAnimationController;
 import com.android.systemui.shared.tracing.ProtoTraceable;
+import com.android.systemui.unfold.progress.IUnfoldAnimation;
 import com.android.wm.shell.back.IBackAnimation;
+import com.android.wm.shell.bubbles.IBubbles;
+import com.android.wm.shell.desktopmode.IDesktopMode;
+import com.android.wm.shell.draganddrop.IDragAndDrop;
 import com.android.wm.shell.onehanded.IOneHanded;
 import com.android.wm.shell.pip.IPip;
 import com.android.wm.shell.recents.IRecentTasks;
@@ -114,8 +139,10 @@
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
+import java.lang.ref.WeakReference;
 import java.util.Arrays;
 import java.util.LinkedList;
+import java.util.function.Consumer;
 import java.util.function.Function;
 
 /**
@@ -125,35 +152,34 @@
 public class TouchInteractionService extends Service
         implements ProtoTraceable<LauncherTraceProto.Builder> {
 
+    private static final String SUBSTRING_PREFIX = "; ";
+    private static final String NEWLINE_PREFIX = "\n\t\t\t-> ";
+
     private static final String TAG = "TouchInteractionService";
 
-    private static final String KEY_BACK_NOTIFICATION_COUNT = "backNotificationCount";
-    private static final String NOTIFY_ACTION_BACK = "com.android.quickstep.action.BACK_GESTURE";
     private static final String HAS_ENABLED_QUICKSTEP_ONCE = "launcher.has_enabled_quickstep_once";
-    private static final int MAX_BACK_NOTIFICATION_COUNT = 3;
 
-    /**
-     * System Action ID to show all apps.
-     * TODO: Use AccessibilityService's corresponding global action constant in S
-     */
-    private static final int SYSTEM_ACTION_ID_ALL_APPS = 14;
-
-    private int mBackGestureNotificationCounter = -1;
-
-    private final TISBinder mTISBinder = new TISBinder();
+    private final TISBinder mTISBinder = new TISBinder(this);
 
     /**
      * Local IOverviewProxy implementation with some methods for local components
      */
-    public class TISBinder extends IOverviewProxy.Stub {
+    public static class TISBinder extends IOverviewProxy.Stub {
+
+        private final WeakReference<TouchInteractionService> mTis;
 
         @Nullable private Runnable mOnOverviewTargetChangeListener = null;
 
+        private TISBinder(TouchInteractionService tis) {
+            mTis = new WeakReference<>(tis);
+        }
+
         @BinderThread
         public void onInitialize(Bundle bundle) {
             ISystemUiProxy proxy = ISystemUiProxy.Stub.asInterface(
                     bundle.getBinder(KEY_EXTRA_SYSUI_PROXY));
             IPip pip = IPip.Stub.asInterface(bundle.getBinder(KEY_EXTRA_SHELL_PIP));
+            IBubbles bubbles = IBubbles.Stub.asInterface(bundle.getBinder(KEY_EXTRA_SHELL_BUBBLES));
             ISplitScreen splitscreen = ISplitScreen.Stub.asInterface(bundle.getBinder(
                     KEY_EXTRA_SHELL_SPLIT_SCREEN));
             IOneHanded onehanded = IOneHanded.Stub.asInterface(
@@ -166,98 +192,116 @@
                     ISysuiUnlockAnimationController.Stub.asInterface(
                             bundle.getBinder(KEY_EXTRA_UNLOCK_ANIMATION_CONTROLLER));
             IRecentTasks recentTasks = IRecentTasks.Stub.asInterface(
-                    bundle.getBinder(KEY_EXTRA_RECENT_TASKS));
+                    bundle.getBinder(KEY_EXTRA_SHELL_RECENT_TASKS));
             IBackAnimation backAnimation = IBackAnimation.Stub.asInterface(
                     bundle.getBinder(KEY_EXTRA_SHELL_BACK_ANIMATION));
-            MAIN_EXECUTOR.execute(() -> {
-                SystemUiProxy.INSTANCE.get(TouchInteractionService.this).setProxy(proxy, pip,
-                        splitscreen, onehanded, shellTransitions, startingWindow, recentTasks,
-                        launcherUnlockAnimationController, backAnimation);
-                TouchInteractionService.this.initInputMonitor("TISBinder#onInitialize()");
-                preloadOverview(true /* fromInit */);
-            });
+            IDesktopMode desktopMode = IDesktopMode.Stub.asInterface(
+                    bundle.getBinder(KEY_EXTRA_SHELL_DESKTOP_MODE));
+            IUnfoldAnimation unfoldTransition = IUnfoldAnimation.Stub.asInterface(
+                    bundle.getBinder(KEY_EXTRA_UNFOLD_ANIMATION_FORWARDER));
+            IDragAndDrop dragAndDrop = IDragAndDrop.Stub.asInterface(
+                    bundle.getBinder(KEY_EXTRA_SHELL_DRAG_AND_DROP));
+            MAIN_EXECUTOR.execute(() -> executeForTouchInteractionService(tis -> {
+                SystemUiProxy.INSTANCE.get(tis).setProxy(proxy, pip,
+                        bubbles, splitscreen, onehanded, shellTransitions, startingWindow,
+                        recentTasks, launcherUnlockAnimationController, backAnimation, desktopMode,
+                        unfoldTransition, dragAndDrop);
+                tis.initInputMonitor("TISBinder#onInitialize()");
+                tis.preloadOverview(true /* fromInit */);
+            }));
             sIsInitialized = true;
         }
 
         @BinderThread
+        @Override
+        public void onTaskbarToggled() {
+            if (!FeatureFlags.ENABLE_KEYBOARD_TASKBAR_TOGGLE.get()) return;
+            MAIN_EXECUTOR.execute(() -> executeForTouchInteractionService(tis -> {
+                TaskbarActivityContext activityContext =
+                        tis.mTaskbarManager.getCurrentActivityContext();
+
+                if (activityContext != null) {
+                    activityContext.toggleTaskbarStash();
+                }
+            }));
+        }
+
+        @BinderThread
         public void onOverviewToggle() {
             TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "onOverviewToggle");
-            // If currently screen pinning, do not enter overview
-            if (mDeviceState.isScreenPinningActive()) {
-                return;
-            }
-            TaskUtils.closeSystemWindowsAsync(CLOSE_SYSTEM_WINDOWS_REASON_RECENTS);
-            mOverviewCommandHelper.addCommand(OverviewCommandHelper.TYPE_TOGGLE);
+            executeForTouchInteractionService(tis -> {
+                // If currently screen pinning, do not enter overview
+                if (tis.mDeviceState.isScreenPinningActive()) {
+                    return;
+                }
+                TaskUtils.closeSystemWindowsAsync(CLOSE_SYSTEM_WINDOWS_REASON_RECENTS);
+                tis.mOverviewCommandHelper.addCommand(OverviewCommandHelper.TYPE_TOGGLE);
+            });
         }
 
         @BinderThread
         @Override
         public void onOverviewShown(boolean triggeredFromAltTab) {
-            if (triggeredFromAltTab) {
-                TaskUtils.closeSystemWindowsAsync(CLOSE_SYSTEM_WINDOWS_REASON_RECENTS);
-                mOverviewCommandHelper.addCommand(OverviewCommandHelper.TYPE_SHOW_NEXT_FOCUS);
-            } else {
-                mOverviewCommandHelper.addCommand(OverviewCommandHelper.TYPE_SHOW);
-            }
+            executeForTouchInteractionService(tis -> {
+                if (triggeredFromAltTab) {
+                    TaskUtils.closeSystemWindowsAsync(CLOSE_SYSTEM_WINDOWS_REASON_RECENTS);
+                    tis.mOverviewCommandHelper.addCommand(
+                            OverviewCommandHelper.TYPE_KEYBOARD_INPUT);
+                } else {
+                    tis.mOverviewCommandHelper.addCommand(OverviewCommandHelper.TYPE_SHOW);
+                }
+            });
         }
 
         @BinderThread
         @Override
         public void onOverviewHidden(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) {
-            if (triggeredFromAltTab && !triggeredFromHomeKey) {
-                // onOverviewShownFromAltTab hides the overview and ends at the target app
-                mOverviewCommandHelper.addCommand(OverviewCommandHelper.TYPE_HIDE);
-            }
-        }
-
-        @BinderThread
-        @Override
-        public void onTip(int actionType, int viewType) {
-            // Please delete this method from the interface
-        }
-
-        @BinderThread
-        @Override
-        public void onAssistantAvailable(boolean available) {
-            MAIN_EXECUTOR.execute(() -> {
-                mDeviceState.setAssistantAvailable(available);
-                TouchInteractionService.this.onAssistantVisibilityChanged();
+            executeForTouchInteractionService(tis -> {
+                if (triggeredFromAltTab && !triggeredFromHomeKey) {
+                    // onOverviewShownFromAltTab hides the overview and ends at the target app
+                    tis.mOverviewCommandHelper.addCommand(OverviewCommandHelper.TYPE_HIDE);
+                }
             });
         }
 
         @BinderThread
         @Override
+        public void onAssistantAvailable(boolean available, boolean longPressHomeEnabled) {
+            MAIN_EXECUTOR.execute(() -> executeForTouchInteractionService(tis -> {
+                tis.mDeviceState.setAssistantAvailable(available);
+                tis.onAssistantVisibilityChanged();
+                executeForTaskbarManager(taskbarManager -> taskbarManager
+                        .onLongPressHomeEnabled(longPressHomeEnabled));
+            }));
+        }
+
+        @BinderThread
+        @Override
         public void onAssistantVisibilityChanged(float visibility) {
-            MAIN_EXECUTOR.execute(() -> {
-                mDeviceState.setAssistantVisibility(visibility);
-                TouchInteractionService.this.onAssistantVisibilityChanged();
-            });
+            MAIN_EXECUTOR.execute(() -> executeForTouchInteractionService(tis -> {
+                tis.mDeviceState.setAssistantVisibility(visibility);
+                tis.onAssistantVisibilityChanged();
+            }));
         }
 
-        @BinderThread
-        public void onBackAction(boolean completed, int downX, int downY, boolean isButton,
-                boolean gestureSwipeLeft) {
-            // Remove this method from the interface
+        @Override
+        public void onNavigationBarSurface(SurfaceControl surface) {
+            // TODO: implement
         }
 
         @BinderThread
         public void onSystemUiStateChanged(int stateFlags) {
-            MAIN_EXECUTOR.execute(() -> {
-                int lastFlags = mDeviceState.getSystemUiStateFlags();
-                mDeviceState.setSystemUiFlags(stateFlags);
-                TouchInteractionService.this.onSystemUiFlagsChanged(lastFlags);
-            });
+            MAIN_EXECUTOR.execute(() -> executeForTouchInteractionService(tis -> {
+                int lastFlags = tis.mDeviceState.getSystemUiStateFlags();
+                tis.mDeviceState.setSystemUiFlags(stateFlags);
+                tis.onSystemUiFlagsChanged(lastFlags);
+            }));
         }
 
         @BinderThread
         public void onActiveNavBarRegionChanges(Region region) {
-            MAIN_EXECUTOR.execute(() -> mDeviceState.setDeferredGestureRegion(region));
-        }
-
-        @Override
-        public void onSplitScreenSecondaryBoundsChanged(Rect bounds, Rect insets) {
-            WindowBounds wb = new WindowBounds(bounds, insets);
-            MAIN_EXECUTOR.execute(() -> SplitScreenBounds.INSTANCE.setSecondaryWindowBounds(wb));
+            MAIN_EXECUTOR.execute(() -> executeForTouchInteractionService(
+                    tis -> tis.mDeviceState.setDeferredGestureRegion(region)));
         }
 
         @BinderThread
@@ -266,68 +310,120 @@
             MAIN_EXECUTOR.execute(ProxyScreenStatusProvider.INSTANCE::onScreenTurnedOn);
         }
 
+        @BinderThread
+        @Override
+        public void onScreenTurningOn() {
+            MAIN_EXECUTOR.execute(ProxyScreenStatusProvider.INSTANCE::onScreenTurningOn);
+        }
+
+        @BinderThread
+        @Override
+        public void onScreenTurningOff() {
+            MAIN_EXECUTOR.execute(ProxyScreenStatusProvider.INSTANCE::onScreenTurningOff);
+        }
+
+        @BinderThread
+        @Override
+        public void enterStageSplitFromRunningApp(boolean leftOrTop) {
+            executeForTouchInteractionService(tis -> {
+                StatefulActivity activity =
+                        tis.mOverviewComponentObserver.getActivityInterface().getCreatedActivity();
+                if (activity != null) {
+                    activity.enterStageSplitFromRunningApp(leftOrTop);
+                }
+            });
+        }
+
         /**
          * Preloads the Overview activity.
-         *
+         * <p>
          * This method should only be used when the All Set page of the SUW is reached to safely
          * preload the Launcher for the SUW first reveal.
          */
         public void preloadOverviewForSUWAllSet() {
-            preloadOverview(false, true);
+            executeForTouchInteractionService(tis -> tis.preloadOverview(false, true));
         }
 
         @Override
         public void onRotationProposal(int rotation, boolean isValid) {
-            executeForTaskbarManager(() -> mTaskbarManager.onRotationProposal(rotation, isValid));
+            executeForTaskbarManager(taskbarManager ->
+                    taskbarManager.onRotationProposal(rotation, isValid));
         }
 
         @Override
         public void disable(int displayId, int state1, int state2, boolean animate) {
-            executeForTaskbarManager(() -> mTaskbarManager
-                    .disableNavBarElements(displayId, state1, state2, animate));
+            executeForTaskbarManager(taskbarManager ->
+                    taskbarManager.disableNavBarElements(displayId, state1, state2, animate));
         }
 
         @Override
         public void onSystemBarAttributesChanged(int displayId, int behavior) {
-            executeForTaskbarManager(() -> mTaskbarManager
-                    .onSystemBarAttributesChanged(displayId, behavior));
+            executeForTaskbarManager(taskbarManager ->
+                    taskbarManager.onSystemBarAttributesChanged(displayId, behavior));
         }
 
         @Override
         public void onNavButtonsDarkIntensityChanged(float darkIntensity) {
-            executeForTaskbarManager(() -> mTaskbarManager
-                    .onNavButtonsDarkIntensityChanged(darkIntensity));
+            executeForTaskbarManager(taskbarManager ->
+                    taskbarManager.onNavButtonsDarkIntensityChanged(darkIntensity));
         }
 
-        private void executeForTaskbarManager(final Runnable r) {
-            MAIN_EXECUTOR.execute(() -> {
-                if (mTaskbarManager == null) {
-                    return;
-                }
-                r.run();
-            });
+        private void executeForTouchInteractionService(
+                @NonNull Consumer<TouchInteractionService> tisConsumer) {
+            TouchInteractionService tis = mTis.get();
+            if (tis == null) return;
+            tisConsumer.accept(tis);
         }
 
+        private void executeForTaskbarManager(
+                @NonNull Consumer<TaskbarManager> taskbarManagerConsumer) {
+            MAIN_EXECUTOR.execute(() -> executeForTouchInteractionService(tis -> {
+                TaskbarManager taskbarManager = tis.mTaskbarManager;
+                if (taskbarManager == null) return;
+                taskbarManagerConsumer.accept(taskbarManager);
+            }));
+        }
+
+        /**
+         * Returns the {@link TaskbarManager}.
+         * <p>
+         * Returns {@code null} if TouchInteractionService is not connected
+         */
+        @Nullable
         public TaskbarManager getTaskbarManager() {
-            return mTaskbarManager;
+            TouchInteractionService tis = mTis.get();
+            if (tis == null) return null;
+            return tis.mTaskbarManager;
         }
 
+        /**
+         * Returns the {@link OverviewCommandHelper}.
+         * <p>
+         * Returns {@code null} if TouchInteractionService is not connected
+         */
+        @Nullable
         public OverviewCommandHelper getOverviewCommandHelper() {
-            return mOverviewCommandHelper;
+            TouchInteractionService tis = mTis.get();
+            if (tis == null) return null;
+            return tis.mOverviewCommandHelper;
         }
 
         /**
          * Sets a proxy to bypass swipe up behavior
          */
         public void setSwipeUpProxy(Function<GestureState, AnimatedFloat> proxy) {
-            mSwipeUpProxyProvider = proxy != null ? proxy : (i -> null);
+            TouchInteractionService tis = mTis.get();
+            if (tis == null) return;
+            tis.mSwipeUpProxyProvider = proxy != null ? proxy : (i -> null);
         }
 
         /**
          * Sets the task id where gestures should be blocked
          */
         public void setGestureBlockedTaskId(int taskId) {
-            mDeviceState.setGestureBlockingTaskId(taskId);
+            TouchInteractionService tis = mTis.get();
+            if (tis == null) return;
+            tis.mDeviceState.setGestureBlockingTaskId(taskId);
         }
 
         /** Sets a listener to be run on Overview Target updates. */
@@ -389,6 +485,7 @@
         mDeviceState = new RecentsAnimationDeviceState(this, true);
         mTaskbarManager = new TaskbarManager(this);
         mRotationTouchHelper = mDeviceState.getRotationTouchHelper();
+        BootAwarePreloader.start(this);
 
         // Call runOnUserUnlocked() before any other callbacks to ensure everything is initialized.
         mDeviceState.runOnUserUnlocked(this::onUserUnlocked);
@@ -439,7 +536,8 @@
         mOverviewComponentObserver = new OverviewComponentObserver(this, mDeviceState);
         mOverviewCommandHelper = new OverviewCommandHelper(this,
                 mOverviewComponentObserver, mTaskAnimationManager);
-        mResetGestureInputConsumer = new ResetGestureInputConsumer(mTaskAnimationManager);
+        mResetGestureInputConsumer = new ResetGestureInputConsumer(
+                mTaskAnimationManager, mTaskbarManager::getCurrentActivityContext);
         mInputConsumer = InputConsumerController.getRecentsAnimationInputConsumer();
         mInputConsumer.registerInputConsumer();
         onSystemUiFlagsChanged(mDeviceState.getSystemUiStateFlags());
@@ -450,8 +548,6 @@
 
         // Temporarily disable model preload
         // new ModelPreload().start(this);
-        mBackGestureNotificationCounter = Math.max(0, Utilities.getDevicePrefs(this)
-                .getInt(KEY_BACK_NOTIFICATION_COUNT, MAX_BACK_NOTIFICATION_COUNT));
         resetHomeBounceSeenOnQuickstepEnabledFirstTime();
 
         mOverviewComponentObserver.setOverviewChangeListener(this::onOverviewTargetChange);
@@ -470,7 +566,7 @@
         }
 
         // Reset home bounce seen on quick step enabled for first time
-        SharedPreferences sharedPrefs = Utilities.getPrefs(this);
+        SharedPreferences sharedPrefs = LauncherPrefs.getPrefs(this);
         if (!sharedPrefs.getBoolean(HAS_ENABLED_QUICKSTEP_ONCE, true)) {
             sharedPrefs.edit()
                     .putBoolean(HAS_ENABLED_QUICKSTEP_ONCE, true)
@@ -484,16 +580,16 @@
 
         if (isHomeAndOverviewSame) {
             Intent intent = new Intent(mOverviewComponentObserver.getHomeIntent())
-                    .setAction(Intent.ACTION_ALL_APPS);
+                    .setAction(INTENT_ACTION_ALL_APPS_TOGGLE);
             RemoteAction allAppsAction = new RemoteAction(
                     Icon.createWithResource(this, R.drawable.ic_apps),
                     getString(R.string.all_apps_label),
                     getString(R.string.all_apps_label),
-                    PendingIntent.getActivity(this, SYSTEM_ACTION_ID_ALL_APPS, intent,
+                    PendingIntent.getActivity(this, GLOBAL_ACTION_ACCESSIBILITY_ALL_APPS, intent,
                             PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE));
-            am.registerSystemAction(allAppsAction, SYSTEM_ACTION_ID_ALL_APPS);
+            am.registerSystemAction(allAppsAction, GLOBAL_ACTION_ACCESSIBILITY_ALL_APPS);
         } else {
-            am.unregisterSystemAction(SYSTEM_ACTION_ID_ALL_APPS);
+            am.unregisterSystemAction(GLOBAL_ACTION_ACCESSIBILITY_ALL_APPS);
         }
 
         StatefulActivity newOverviewActivity = mOverviewComponentObserver.getActivityInterface()
@@ -512,9 +608,22 @@
             mOverviewComponentObserver.onSystemUiStateChanged();
             mTaskbarManager.onSystemUiFlagsChanged(systemUiStateFlags);
 
-            boolean wasExpanded = (lastSysUIFlags & SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED) != 0;
-            boolean isExpanded =
-                    (systemUiStateFlags & SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED) != 0;
+            boolean wasFreeformActive =
+                    (lastSysUIFlags & SYSUI_STATE_FREEFORM_ACTIVE_IN_DESKTOP_MODE) != 0;
+            boolean isFreeformActive =
+                    (systemUiStateFlags & SYSUI_STATE_FREEFORM_ACTIVE_IN_DESKTOP_MODE) != 0;
+            if (wasFreeformActive != isFreeformActive) {
+                DesktopVisibilityController controller =
+                        LauncherActivityInterface.INSTANCE.getDesktopVisibilityController();
+                if (controller != null) {
+                    controller.setFreeformTasksVisible(isFreeformActive);
+                }
+            }
+
+            int isShadeExpandedFlag =
+                    SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED | SYSUI_STATE_QUICK_SETTINGS_EXPANDED;
+            boolean wasExpanded = (lastSysUIFlags & isShadeExpandedFlag) != 0;
+            boolean isExpanded = (systemUiStateFlags & isShadeExpandedFlag) != 0;
             if (wasExpanded != isExpanded && isExpanded) {
                 // End live tile when expanding the notification panel for the first time from
                 // overview.
@@ -559,7 +668,7 @@
         ProtoTracer.INSTANCE.get(this).remove(this);
 
         getSystemService(AccessibilityManager.class)
-                .unregisterSystemAction(SYSTEM_ACTION_ID_ALL_APPS);
+                .unregisterSystemAction(GLOBAL_ACTION_ACCESSIBILITY_ALL_APPS);
 
         mTaskbarManager.destroy();
         sConnected = false;
@@ -589,31 +698,36 @@
         Object traceToken = TraceHelper.INSTANCE.beginFlagsOverride(
                 TraceHelper.FLAG_ALLOW_BINDER_TRACKING);
 
-        final int action = event.getAction();
-        if (action == ACTION_DOWN) {
+        final int action = event.getActionMasked();
+        // Note this will create a new consumer every mouse click, as after ACTION_UP from the click
+        // an ACTION_HOVER_ENTER will fire as well.
+        boolean isHoverActionWithoutConsumer =
+                event.isHoverEvent() && (mUncheckedConsumer.getType() & TYPE_CURSOR_HOVER) == 0;
+        if (action == ACTION_DOWN || isHoverActionWithoutConsumer) {
             mRotationTouchHelper.setOrientationTransformIfNeeded(event);
 
-            if (!mDeviceState.isOneHandedModeActive()
-                    && mRotationTouchHelper.isInSwipeUpTouchRegion(event)) {
+            if ((!mDeviceState.isOneHandedModeActive()
+                    && mRotationTouchHelper.isInSwipeUpTouchRegion(event,
+                    mOverviewComponentObserver.getActivityInterface()))
+                    || isHoverActionWithoutConsumer) {
                 // Clone the previous gesture state since onConsumerAboutToBeSwitched might trigger
                 // onConsumerInactive and wipe the previous gesture state
                 GestureState prevGestureState = new GestureState(mGestureState);
-                GestureState newGestureState = createGestureState(mGestureState);
+                GestureState newGestureState = createGestureState(mGestureState,
+                        getTrackpadGestureType(event));
                 newGestureState.setSwipeUpStartTimeMs(SystemClock.uptimeMillis());
                 mConsumer.onConsumerAboutToBeSwitched();
                 mGestureState = newGestureState;
                 mConsumer = newConsumer(prevGestureState, mGestureState, event);
-
-                ActiveGestureLog.INSTANCE.addLog("setInputConsumer: " + mConsumer.getName());
                 mUncheckedConsumer = mConsumer;
             } else if (mDeviceState.isUserUnlocked() && mDeviceState.isFullyGesturalNavMode()
                     && mDeviceState.canTriggerAssistantAction(event)) {
-                mGestureState = createGestureState(mGestureState);
+                mGestureState = createGestureState(mGestureState,
+                        getTrackpadGestureType(event));
                 // Do not change mConsumer as if there is an ongoing QuickSwitch gesture, we
                 // should not interrupt it. QuickSwitch assumes that interruption can only
                 // happen if the next gesture is also quick switch.
-                mUncheckedConsumer = tryCreateAssistantInputConsumer(
-                        InputConsumer.NO_OP, mGestureState, event);
+                mUncheckedConsumer = tryCreateAssistantInputConsumer(mGestureState, event);
             } else if (mDeviceState.canTriggerOneHandedAction(event)) {
                 // Consume gesture event for triggering one handed feature.
                 mUncheckedConsumer = new OneHandedModeInputConsumer(this, mDeviceState,
@@ -632,14 +746,28 @@
         if (mUncheckedConsumer != InputConsumer.NO_OP) {
             switch (event.getActionMasked()) {
                 case ACTION_DOWN:
+                    // fall through
                 case ACTION_UP:
-                    ActiveGestureLog.INSTANCE.addLog("onMotionEvent("
-                            + (int) event.getRawX() + ", " + (int) event.getRawY() + ")",
-                            event.getActionMasked());
+                    ActiveGestureLog.INSTANCE.addLog(
+                            /* event= */ "onMotionEvent(" + (int) event.getRawX() + ", "
+                                    + (int) event.getRawY() + "): "
+                                    + MotionEvent.actionToString(event.getActionMasked()) + ", "
+                                    + MotionEvent.classificationToString(event.getClassification()),
+                            /* gestureEvent= */ event.getActionMasked() == ACTION_DOWN
+                                    ? MOTION_DOWN
+                                    : MOTION_UP);
                     break;
-                default:
-                    ActiveGestureLog.INSTANCE.addLog("onMotionEvent", event.getActionMasked());
+                case ACTION_MOVE:
+                    ActiveGestureLog.INSTANCE.addLog("onMotionEvent: "
+                            + MotionEvent.actionToString(event.getActionMasked()) + ","
+                            + MotionEvent.classificationToString(event.getClassification())
+                            + ", pointerCount: " + event.getPointerCount(), MOTION_MOVE);
                     break;
+                default: {
+                    ActiveGestureLog.INSTANCE.addLog("onMotionEvent: "
+                            + MotionEvent.actionToString(event.getActionMasked()) + ","
+                            + MotionEvent.classificationToString(event.getClassification()));
+                }
             }
         }
 
@@ -651,7 +779,18 @@
         if (cancelGesture) {
             event.setAction(ACTION_CANCEL);
         }
-        mUncheckedConsumer.onMotionEvent(event);
+
+        if (mGestureState.isTrackpadGesture() && (action == ACTION_POINTER_DOWN
+                || action == ACTION_POINTER_UP)) {
+            // Skip ACTION_POINTER_DOWN and ACTION_POINTER_UP events from trackpad.
+            if (action == ACTION_POINTER_DOWN) {
+                mGestureState.setTrackpadGestureType(getTrackpadGestureType(event));
+            }
+        } else if (event.isHoverEvent()) {
+            mUncheckedConsumer.onHoverEvent(event);
+        } else {
+            mUncheckedConsumer.onMotionEvent(event);
+        }
 
         if (cleanUpConsumer) {
             reset();
@@ -660,118 +799,244 @@
         ProtoTracer.INSTANCE.get(this).scheduleFrameUpdate();
     }
 
-    private InputConsumer tryCreateAssistantInputConsumer(InputConsumer base,
+    private InputConsumer tryCreateAssistantInputConsumer(
             GestureState gestureState, MotionEvent motionEvent) {
-        return mDeviceState.isGestureBlockedTask(gestureState.getRunningTask())
-                ? base
-                : new AssistantInputConsumer(this, gestureState, base, mInputMonitorCompat,
-                        mDeviceState, motionEvent);
+        return tryCreateAssistantInputConsumer(
+                InputConsumer.NO_OP, gestureState, motionEvent, CompoundString.NO_OP);
     }
 
-    public GestureState createGestureState(GestureState previousGestureState) {
-        GestureState gestureState = new GestureState(mOverviewComponentObserver,
-                ActiveGestureLog.INSTANCE.generateAndSetLogId());
+    private InputConsumer tryCreateAssistantInputConsumer(
+            InputConsumer base,
+            GestureState gestureState,
+            MotionEvent motionEvent,
+            CompoundString reasonString) {
+        if (mDeviceState.isGestureBlockedTask(gestureState.getRunningTask())) {
+            reasonString.append(SUBSTRING_PREFIX)
+                    .append("is gesture-blocked task, using base input consumer");
+            return base;
+        } else {
+            reasonString.append(SUBSTRING_PREFIX).append("using AssistantInputConsumer");
+            return new AssistantInputConsumer(
+                    this, gestureState, base, mInputMonitorCompat, mDeviceState, motionEvent);
+        }
+    }
+
+    public GestureState createGestureState(GestureState previousGestureState,
+            GestureState.TrackpadGestureType trackpadGestureType) {
+        final GestureState gestureState;
+        TopTaskTracker.CachedTaskInfo taskInfo;
         if (mTaskAnimationManager.isRecentsAnimationRunning()) {
-            gestureState.updateRunningTask(previousGestureState.getRunningTask());
+            gestureState = new GestureState(mOverviewComponentObserver,
+                    ActiveGestureLog.INSTANCE.getLogId());
+            taskInfo = previousGestureState.getRunningTask();
+            gestureState.updateRunningTask(taskInfo);
             gestureState.updateLastStartedTaskId(previousGestureState.getLastStartedTaskId());
             gestureState.updatePreviouslyAppearedTaskIds(
                     previousGestureState.getPreviouslyAppearedTaskIds());
         } else {
-            gestureState.updateRunningTask(
-                    TopTaskTracker.INSTANCE.get(this).getCachedTopTask(false));
+            gestureState = new GestureState(mOverviewComponentObserver,
+                    ActiveGestureLog.INSTANCE.incrementLogId());
+            taskInfo = TopTaskTracker.INSTANCE.get(this).getCachedTopTask(false);
+            gestureState.updateRunningTask(taskInfo);
         }
+        gestureState.setTrackpadGestureType(trackpadGestureType);
+
+        // Log initial state for the gesture.
+        ActiveGestureLog.INSTANCE.addLog(new CompoundString("Current running task package name=")
+                .append(taskInfo == null ? "no running task" : taskInfo.getPackageName()));
+        ActiveGestureLog.INSTANCE.addLog(new CompoundString("Current SystemUi state flags=")
+                .append(mDeviceState.getSystemUiStateString()));
         return gestureState;
     }
 
-    private InputConsumer newConsumer(GestureState previousGestureState,
-            GestureState newGestureState, MotionEvent event) {
+    private InputConsumer newConsumer(
+            GestureState previousGestureState, GestureState newGestureState, MotionEvent event) {
         AnimatedFloat progressProxy = mSwipeUpProxyProvider.apply(mGestureState);
         if (progressProxy != null) {
-            return new ProgressDelegateInputConsumer(this, mTaskAnimationManager,
-                    mGestureState, mInputMonitorCompat, progressProxy);
+            InputConsumer consumer = new ProgressDelegateInputConsumer(
+                    this, mTaskAnimationManager, mGestureState, mInputMonitorCompat, progressProxy);
+
+            logInputConsumerSelectionReason(consumer, newCompoundString(
+                    "mSwipeUpProxyProvider has been set, using ProgressDelegateInputConsumer"));
+
+            return consumer;
         }
 
         boolean canStartSystemGesture = mDeviceState.canStartSystemGesture();
 
         if (!mDeviceState.isUserUnlocked()) {
+            CompoundString reasonString = newCompoundString("device locked");
+            InputConsumer consumer;
             if (canStartSystemGesture) {
                 // This handles apps launched in direct boot mode (e.g. dialer) as well as apps
                 // launched while device is locked even after exiting direct boot mode (e.g. camera).
-                return createDeviceLockedInputConsumer(newGestureState);
+                consumer = createDeviceLockedInputConsumer(
+                        newGestureState, reasonString.append(SUBSTRING_PREFIX)
+                                .append("can start system gesture"));
             } else {
-                return getDefaultInputConsumer();
+                consumer = getDefaultInputConsumer(
+                        reasonString.append(SUBSTRING_PREFIX)
+                                .append("cannot start system gesture"));
             }
+            logInputConsumerSelectionReason(consumer, reasonString);
+            return consumer;
         }
 
+        CompoundString reasonString;
+        InputConsumer base;
         // When there is an existing recents animation running, bypass systemState check as this is
         // a followup gesture and the first gesture started in a valid system state.
-        InputConsumer base = canStartSystemGesture
-                || previousGestureState.isRecentsAnimationRunning()
-                        ? newBaseConsumer(previousGestureState, newGestureState, event)
-                        : getDefaultInputConsumer();
+        if (canStartSystemGesture || previousGestureState.isRecentsAnimationRunning()) {
+            reasonString = newCompoundString(canStartSystemGesture
+                    ? "can start system gesture" : "recents animation was running")
+                    .append(", trying to use base consumer");
+            base = newBaseConsumer(previousGestureState, newGestureState, event, reasonString);
+        } else {
+            reasonString = newCompoundString(
+                    "cannot start system gesture and recents animation was not running")
+                    .append(", trying to use default input consumer");
+            base = getDefaultInputConsumer(reasonString);
+        }
         if (mDeviceState.isGesturalNavMode()) {
             handleOrientationSetup(base);
         }
         if (mDeviceState.isFullyGesturalNavMode()) {
+            String reasonPrefix = "device is in gesture navigation mode";
             if (mDeviceState.canTriggerAssistantAction(event)) {
-                base = tryCreateAssistantInputConsumer(base, newGestureState, event);
+                reasonString.append(NEWLINE_PREFIX)
+                        .append(reasonPrefix)
+                        .append(SUBSTRING_PREFIX)
+                        .append("gesture can trigger the assistant")
+                        .append(", trying to use assistant input consumer");
+                base = tryCreateAssistantInputConsumer(base, newGestureState, event, reasonString);
             }
 
-            // If Taskbar is present, we listen for long press to unstash it.
+            // If Taskbar is present, we listen for swipe or cursor hover events to unstash it.
             TaskbarActivityContext tac = mTaskbarManager.getCurrentActivityContext();
-            if (tac != null) {
-                base = new TaskbarStashInputConsumer(this, base, mInputMonitorCompat, tac);
+            if (tac != null && !(base instanceof AssistantInputConsumer)) {
+                // Present always on large screen or on small screen w/ flag
+                DeviceProfile dp = tac.getDeviceProfile();
+                boolean useTaskbarConsumer = dp.isTaskbarPresent && !TaskbarManager.isPhoneMode(dp)
+                        && !tac.isInStashedLauncherState();
+                if (canStartSystemGesture && useTaskbarConsumer) {
+                    reasonString.append(NEWLINE_PREFIX)
+                            .append(reasonPrefix)
+                            .append(SUBSTRING_PREFIX)
+                            .append("TaskbarActivityContext != null, "
+                                    + "using TaskbarUnstashInputConsumer");
+                    base = new TaskbarUnstashInputConsumer(this, base, mInputMonitorCompat, tac);
+                }
             }
 
-            // If Bubbles is expanded, use the overlay input consumer, which will close Bubbles
-            // instead of going all the way home when a swipe up is detected.
-            // Notification panel can be expanded on top of expanded bubbles. Bubbles remain
-            // expanded in the back. Make sure swipe up is not passed to bubbles in this case.
-            if ((mDeviceState.isBubblesExpanded() && !mDeviceState.isNotificationPanelExpanded())
-                    || mDeviceState.isSystemUiDialogShowing()) {
+            if (mDeviceState.isBubblesExpanded()) {
+                reasonString = newCompoundString(reasonPrefix)
+                        .append(SUBSTRING_PREFIX)
+                        .append("bubbles expanded, trying to use default input consumer");
+                // Bubbles can handle home gesture itself.
+                base = getDefaultInputConsumer(reasonString);
+            }
+
+            if (mDeviceState.isSystemUiDialogShowing()) {
+                reasonString = newCompoundString(reasonPrefix)
+                        .append(SUBSTRING_PREFIX)
+                        .append("system dialog is showing, using SysUiOverlayInputConsumer");
                 base = new SysUiOverlayInputConsumer(
                         getBaseContext(), mDeviceState, mInputMonitorCompat);
             }
 
+            if (ENABLE_TRACKPAD_GESTURE.get() && mGestureState.isTrackpadGesture()
+                    && !previousGestureState.isRecentsAnimationRunning()) {
+                reasonString = newCompoundString(reasonPrefix)
+                        .append(SUBSTRING_PREFIX)
+                        .append("Trackpad 3-finger gesture, using StatusBarInputConsumer");
+                base = new StatusBarInputConsumer(getBaseContext(), base, mInputMonitorCompat);
+            }
+
             if (mDeviceState.isScreenPinningActive()) {
+                reasonString = newCompoundString(reasonPrefix)
+                        .append(SUBSTRING_PREFIX)
+                        .append("screen pinning is active, using ScreenPinnedInputConsumer");
                 // Note: we only allow accessibility to wrap this, and it replaces the previous
                 // base input consumer (which should be NO_OP anyway since topTaskLocked == true).
                 base = new ScreenPinnedInputConsumer(this, newGestureState);
             }
 
             if (mDeviceState.canTriggerOneHandedAction(event)) {
-                base = new OneHandedModeInputConsumer(this, mDeviceState, base,
-                        mInputMonitorCompat);
+                reasonString.append(NEWLINE_PREFIX)
+                        .append(reasonPrefix)
+                        .append(SUBSTRING_PREFIX)
+                        .append("gesture can trigger one handed mode")
+                        .append(", using OneHandedModeInputConsumer");
+                base = new OneHandedModeInputConsumer(
+                        this, mDeviceState, base, mInputMonitorCompat);
             }
 
             if (mDeviceState.isAccessibilityMenuAvailable()) {
-                base = new AccessibilityInputConsumer(this, mDeviceState, base,
-                        mInputMonitorCompat);
+                reasonString.append(NEWLINE_PREFIX)
+                        .append(reasonPrefix)
+                        .append(SUBSTRING_PREFIX)
+                        .append("accessibility menu is available")
+                        .append(", using AccessibilityInputConsumer");
+                base = new AccessibilityInputConsumer(
+                        this, mDeviceState, mGestureState, base, mInputMonitorCompat);
             }
         } else {
+            String reasonPrefix = "device is not in gesture navigation mode";
             if (mDeviceState.isScreenPinningActive()) {
-                base = getDefaultInputConsumer();
+                reasonString = newCompoundString(reasonPrefix)
+                        .append(SUBSTRING_PREFIX)
+                        .append("screen pinning is active, trying to use default input consumer");
+                base = getDefaultInputConsumer(reasonString);
             }
 
             if (mDeviceState.canTriggerOneHandedAction(event)) {
-                base = new OneHandedModeInputConsumer(this, mDeviceState, base,
-                        mInputMonitorCompat);
+                reasonString.append(NEWLINE_PREFIX)
+                        .append(reasonPrefix)
+                        .append(SUBSTRING_PREFIX)
+                        .append("gesture can trigger one handed mode")
+                        .append(", using OneHandedModeInputConsumer");
+                base = new OneHandedModeInputConsumer(
+                        this, mDeviceState, base, mInputMonitorCompat);
             }
         }
+        logInputConsumerSelectionReason(base, reasonString);
         return base;
     }
 
+    private CompoundString newCompoundString(String substring) {
+        return new CompoundString(NEWLINE_PREFIX).append(substring);
+    }
+
+    private void logInputConsumerSelectionReason(
+            InputConsumer consumer, CompoundString reasonString) {
+        ActiveGestureLog.INSTANCE.addLog(new CompoundString("setInputConsumer: ")
+                .append(consumer.getName())
+                .append(". reason(s):")
+                .append(reasonString));
+        if ((consumer.getType() & InputConsumer.TYPE_OTHER_ACTIVITY) != 0) {
+            ActiveGestureLog.INSTANCE.trackEvent(FLAG_USING_OTHER_ACTIVITY_INPUT_CONSUMER);
+        }
+    }
+
     private void handleOrientationSetup(InputConsumer baseInputConsumer) {
         baseInputConsumer.notifyOrientationSetup();
     }
 
-    private InputConsumer newBaseConsumer(GestureState previousGestureState,
-            GestureState gestureState, MotionEvent event) {
+    private InputConsumer newBaseConsumer(
+            GestureState previousGestureState,
+            GestureState gestureState,
+            MotionEvent event,
+            CompoundString reasonString) {
         if (mDeviceState.isKeyguardShowingOccluded()) {
             // This handles apps showing over the lockscreen (e.g. camera)
-            return createDeviceLockedInputConsumer(gestureState);
+            return createDeviceLockedInputConsumer(
+                    gestureState,
+                    reasonString.append(SUBSTRING_PREFIX)
+                            .append("keyguard is showing occluded")
+                            .append(", trying to use device locked input consumer"));
         }
 
+        reasonString.append(SUBSTRING_PREFIX).append("keyguard is not showing occluded");
         // Use overview input consumer for sharesheets on top of home.
         boolean forceOverviewInputConsumer = gestureState.getActivityInterface().isStarted()
                 && gestureState.getRunningTask() != null
@@ -785,23 +1050,45 @@
             forceOverviewInputConsumer = gestureState.getRunningTask().isHomeTask();
         }
 
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get()
-                && gestureState.getActivityInterface().isInLiveTileMode()) {
+        boolean previousGestureAnimatedToLauncher =
+                previousGestureState.isRunningAnimationToLauncher();
+        // with shell-transitions, home is resumed during recents animation, so
+        // explicitly check against recents animation too.
+        boolean launcherResumedThroughShellTransition =
+                gestureState.getActivityInterface().isResumed()
+                        && !previousGestureState.isRecentsAnimationRunning();
+        if (gestureState.getActivityInterface().isInLiveTileMode()) {
             return createOverviewInputConsumer(
-                    previousGestureState, gestureState, event, forceOverviewInputConsumer);
+                    previousGestureState,
+                    gestureState,
+                    event,
+                    forceOverviewInputConsumer,
+                    reasonString.append(SUBSTRING_PREFIX)
+                            .append("is in live tile mode, trying to use overview input consumer"));
         } else if (gestureState.getRunningTask() == null) {
-            return getDefaultInputConsumer();
-        } else if (previousGestureState.isRunningAnimationToLauncher()
-                || (gestureState.getActivityInterface().isResumed()
-                        // with shell-transitions, home is resumed during recents animation, so
-                        // explicitly check against recents animation too.
-                        && !previousGestureState.isRecentsAnimationRunning())
+            return getDefaultInputConsumer(reasonString.append(SUBSTRING_PREFIX)
+                    .append("running task == null"));
+        } else if (previousGestureAnimatedToLauncher
+                || launcherResumedThroughShellTransition
                 || forceOverviewInputConsumer) {
             return createOverviewInputConsumer(
-                    previousGestureState, gestureState, event, forceOverviewInputConsumer);
+                    previousGestureState,
+                    gestureState,
+                    event,
+                    forceOverviewInputConsumer,
+                    reasonString.append(SUBSTRING_PREFIX)
+                            .append(previousGestureAnimatedToLauncher
+                                    ? "previous gesture animated to launcher"
+                                    : (launcherResumedThroughShellTransition
+                                            ? "launcher resumed through a shell transition"
+                                            : "forceOverviewInputConsumer == true"))
+                            .append(", trying to use overview input consumer"));
         } else if (mDeviceState.isGestureBlockedTask(gestureState.getRunningTask())) {
-            return getDefaultInputConsumer();
+            return getDefaultInputConsumer(reasonString.append(SUBSTRING_PREFIX)
+                    .append("is gesture-blocked task, trying to use default input consumer"));
         } else {
+            reasonString.append(SUBSTRING_PREFIX)
+                    .append("using OtherActivityInputConsumer");
             return createOtherActivityInputConsumer(gestureState, event);
         }
     }
@@ -823,32 +1110,58 @@
                 mInputMonitorCompat, mInputEventReceiver, disableHorizontalSwipe, factory);
     }
 
-    private InputConsumer createDeviceLockedInputConsumer(GestureState gestureState) {
+    private InputConsumer createDeviceLockedInputConsumer(
+            GestureState gestureState, CompoundString reasonString) {
         if (mDeviceState.isFullyGesturalNavMode() && gestureState.getRunningTask() != null) {
-            return new DeviceLockedInputConsumer(this, mDeviceState, mTaskAnimationManager,
-                    gestureState, mInputMonitorCompat);
+            reasonString.append(SUBSTRING_PREFIX)
+                    .append("device is in gesture nav mode and running task != null")
+                    .append(", using DeviceLockedInputConsumer");
+            return new DeviceLockedInputConsumer(
+                    this, mDeviceState, mTaskAnimationManager, gestureState, mInputMonitorCompat);
         } else {
-            return getDefaultInputConsumer();
+            return getDefaultInputConsumer(reasonString
+                    .append(SUBSTRING_PREFIX)
+                    .append(mDeviceState.isFullyGesturalNavMode()
+                        ? "running task == null" : "device is not in gesture nav mode")
+                    .append(", trying to use default input consumer"));
         }
     }
 
-    public InputConsumer createOverviewInputConsumer(GestureState previousGestureState,
-            GestureState gestureState, MotionEvent event,
-            boolean forceOverviewInputConsumer) {
+    public InputConsumer createOverviewInputConsumer(
+            GestureState previousGestureState,
+            GestureState gestureState,
+            MotionEvent event,
+            boolean forceOverviewInputConsumer,
+            CompoundString reasonString) {
         StatefulActivity activity = gestureState.getActivityInterface().getCreatedActivity();
         if (activity == null) {
-            return getDefaultInputConsumer();
+            return getDefaultInputConsumer(
+                    reasonString.append(SUBSTRING_PREFIX)
+                            .append("activity == null, trying to use default input consumer"));
         }
 
-        if (activity.getRootView().hasWindowFocus()
-                || previousGestureState.isRunningAnimationToLauncher()
-                || (ASSISTANT_GIVES_LAUNCHER_FOCUS.get()
-                    && forceOverviewInputConsumer)
-                || (ENABLE_QUICKSTEP_LIVE_TILE.get()
-                && gestureState.getActivityInterface().isInLiveTileMode())) {
+        boolean hasWindowFocus = activity.getRootView().hasWindowFocus();
+        boolean isPreviousGestureAnimatingToLauncher =
+                previousGestureState.isRunningAnimationToLauncher();
+        boolean isInLiveTileMode = gestureState.getActivityInterface().isInLiveTileMode();
+        reasonString.append(SUBSTRING_PREFIX)
+                .append(hasWindowFocus
+                        ? "activity has window focus"
+                        : (isPreviousGestureAnimatingToLauncher
+                                ? "previous gesture is still animating to launcher"
+                                : isInLiveTileMode
+                                        ? "device is in live mode"
+                                        : "all overview focus conditions failed"));
+        if (hasWindowFocus
+                || isPreviousGestureAnimatingToLauncher
+                || isInLiveTileMode) {
+            reasonString.append(SUBSTRING_PREFIX)
+                    .append("overview should have focus, using OverviewInputConsumer");
             return new OverviewInputConsumer(gestureState, activity, mInputMonitorCompat,
                     false /* startingInActivityBounds */);
         } else {
+            reasonString.append(SUBSTRING_PREFIX).append(
+                    "overview shouldn't have focus, using OverviewWithoutFocusInputConsumer");
             final boolean disableHorizontalSwipe = mDeviceState.isInExclusionRegion(event);
             return new OverviewWithoutFocusInputConsumer(activity, mDeviceState, gestureState,
                     mInputMonitorCompat, disableHorizontalSwipe);
@@ -876,13 +1189,21 @@
         }
     }
 
+    private @NonNull InputConsumer getDefaultInputConsumer() {
+        return getDefaultInputConsumer(CompoundString.NO_OP);
+    }
+
     /**
      * Returns the {@link ResetGestureInputConsumer} if user is unlocked, else NO_OP.
      */
-    private @NonNull InputConsumer getDefaultInputConsumer() {
+    private @NonNull InputConsumer getDefaultInputConsumer(@NonNull CompoundString reasonString) {
         if (mResetGestureInputConsumer != null) {
+            reasonString.append(SUBSTRING_PREFIX).append(
+                    "mResetGestureInputConsumer initialized, using ResetGestureInputConsumer");
             return mResetGestureInputConsumer;
         } else {
+            reasonString.append(SUBSTRING_PREFIX).append(
+                    "mResetGestureInputConsumer not initialized, using no-op input consumer");
             // mResetGestureInputConsumer isn't initialized until onUserUnlocked(), so reset to
             // NO_OP until then (we never want these to be null).
             return InputConsumer.NO_OP;
@@ -921,6 +1242,10 @@
             return;
         }
 
+        // TODO(b/258022658): Remove temporary logging.
+        Log.i(TAG, "preloadOverview: forSUWAllSet=" + forSUWAllSet
+                + ", isHomeAndOverviewSame=" + mOverviewComponentObserver.isHomeAndOverviewSame());
+
         mTaskAnimationManager.preloadRecentsAnimation(overviewIntent);
     }
 
@@ -966,7 +1291,7 @@
             }
         } else {
             // Dump everything
-            FeatureFlags.dump(pw);
+            FlagsFactory.dump(pw);
             if (mDeviceState.isUserUnlocked()) {
                 PluginManagerWrapper.INSTANCE.get(getBaseContext()).dump(pw);
             }
@@ -997,7 +1322,7 @@
             pw.println("ProtoTrace:");
             pw.println("  file=" + ProtoTracer.INSTANCE.get(this).getTraceFile());
             if (createdOverviewActivity != null) {
-                createdOverviewActivity.getDeviceProfile().dump("", pw);
+                createdOverviewActivity.getDeviceProfile().dump(this, "", pw);
             }
             mTaskbarManager.dumpLogs("", pw);
         }
@@ -1006,13 +1331,26 @@
     private void printAvailableCommands(PrintWriter pw) {
         pw.println("Available commands:");
         pw.println("  clear-touch-log: Clears the touch interaction log");
+        pw.println("  print-gesture-log: only prints the ActiveGestureLog dump");
     }
 
     private void onCommand(PrintWriter pw, LinkedList<String> args) {
-        switch (args.pollFirst()) {
+        String cmd = args.pollFirst();
+        if (cmd == null) {
+            pw.println("Command missing");
+            printAvailableCommands(pw);
+            return;
+        }
+        switch (cmd) {
             case "clear-touch-log":
                 ActiveGestureLog.INSTANCE.clear();
                 break;
+            case "print-gesture-log":
+                ActiveGestureLog.INSTANCE.dump("", pw);
+                break;
+            default:
+                pw.println("Command does not exist: " + cmd);
+                printAvailableCommands(pw);
         }
     }
 
diff --git a/quickstep/src/com/android/quickstep/ViewUtils.java b/quickstep/src/com/android/quickstep/ViewUtils.java
index 1fef544..b132067 100644
--- a/quickstep/src/com/android/quickstep/ViewUtils.java
+++ b/quickstep/src/com/android/quickstep/ViewUtils.java
@@ -17,6 +17,7 @@
 
 import android.graphics.HardwareRenderer;
 import android.os.Handler;
+import android.view.SurfaceControl;
 import android.view.View;
 import android.view.ViewRootImpl;
 
@@ -45,12 +46,15 @@
         return new FrameHandler(view, onFinishRunnable, canceled).schedule();
     }
 
-    private static class FrameHandler implements HardwareRenderer.FrameDrawingCallback {
+    private static class FrameHandler implements HardwareRenderer.FrameDrawingCallback,
+            ViewRootImpl.SurfaceChangedCallback {
 
         final ViewRootImpl mViewRoot;
         final Runnable mFinishCallback;
         final BooleanSupplier mCancelled;
         final Handler mHandler;
+        boolean mSurfaceCallbackRegistered = false;
+        boolean mFinished;
 
         int mDeferFrameCount = 1;
 
@@ -62,6 +66,23 @@
         }
 
         @Override
+        public void surfaceCreated(SurfaceControl.Transaction t) {
+            // Do nothing
+        }
+
+        @Override
+        public void surfaceReplaced(SurfaceControl.Transaction t) {
+            // Do nothing
+        }
+
+        @Override
+        public void surfaceDestroyed() {
+            // If the root view is detached, then the app won't get any scheduled frames so we need
+            // to force-run any pending callbacks
+            finish();
+        }
+
+        @Override
         public void onFrameDraw(long frame) {
             Utilities.postAsyncCallback(mHandler, this::onFrame);
         }
@@ -77,18 +98,35 @@
                 return;
             }
 
-            if (mFinishCallback != null) {
-                mFinishCallback.run();
-            }
+            finish();
         }
 
         private boolean schedule() {
             if (mViewRoot != null && mViewRoot.getView() != null) {
+                if (!mSurfaceCallbackRegistered) {
+                    mSurfaceCallbackRegistered = true;
+                    mViewRoot.addSurfaceChangedCallback(this);
+                }
                 mViewRoot.registerRtFrameCallback(this);
                 mViewRoot.getView().invalidate();
                 return true;
             }
             return false;
         }
+
+        private void finish() {
+            if (mFinished) {
+                return;
+            }
+            mFinished = true;
+            mDeferFrameCount = 0;
+            if (mFinishCallback != null) {
+                mFinishCallback.run();
+            }
+            if (mViewRoot != null) {
+                mViewRoot.removeSurfaceChangedCallback(this);
+                mSurfaceCallbackRegistered = false;
+            }
+        }
     }
 }
diff --git a/quickstep/src/com/android/quickstep/fallback/FallbackNavBarTouchController.java b/quickstep/src/com/android/quickstep/fallback/FallbackNavBarTouchController.java
index 3e01ed0..8a87f63 100644
--- a/quickstep/src/com/android/quickstep/fallback/FallbackNavBarTouchController.java
+++ b/quickstep/src/com/android/quickstep/fallback/FallbackNavBarTouchController.java
@@ -22,7 +22,7 @@
 
 import com.android.launcher3.Utilities;
 import com.android.launcher3.util.DisplayController;
-import com.android.launcher3.util.DisplayController.NavigationMode;
+import com.android.launcher3.util.NavigationMode;
 import com.android.launcher3.util.TouchController;
 import com.android.quickstep.RecentsActivity;
 import com.android.quickstep.util.NavBarPosition;
diff --git a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java
index f68bbbc..11b1ab8 100644
--- a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java
+++ b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsStateController.java
@@ -33,6 +33,7 @@
 import static com.android.quickstep.views.RecentsView.TASK_PRIMARY_SPLIT_TRANSLATION;
 import static com.android.quickstep.views.RecentsView.TASK_SECONDARY_SPLIT_TRANSLATION;
 import static com.android.quickstep.views.RecentsView.TASK_SECONDARY_TRANSLATION;
+import static com.android.quickstep.views.RecentsView.TASK_THUMBNAIL_SPLASH_ALPHA;
 import static com.android.quickstep.views.TaskView.FLAG_UPDATE_ALL;
 
 import android.util.FloatProperty;
@@ -44,7 +45,7 @@
 import com.android.launcher3.anim.PropertySetter;
 import com.android.launcher3.statemanager.StateManager.StateHandler;
 import com.android.launcher3.states.StateAnimationConfig;
-import com.android.launcher3.util.MultiValueAlpha;
+import com.android.launcher3.util.MultiPropertyFactory;
 import com.android.quickstep.RecentsActivity;
 import com.android.quickstep.views.ClearAllButton;
 
@@ -77,6 +78,11 @@
         }
         // While animating into recents, update the visible task data as needed
         setter.addOnFrameCallback(() -> mRecentsView.loadVisibleTaskData(FLAG_UPDATE_ALL));
+        setter.addEndListener(success -> {
+            if (!success) {
+                mRecentsView.reset();
+            }
+        });
         mRecentsView.updateEmptyMessage();
 
         setProperties(toState, config, setter);
@@ -89,7 +95,7 @@
                 clearAllButtonAlpha, LINEAR);
         float overviewButtonAlpha = state.hasOverviewActions() ? 1 : 0;
         setter.setFloat(mActivity.getActionsView().getVisibilityAlpha(),
-                MultiValueAlpha.VALUE, overviewButtonAlpha, LINEAR);
+                MultiPropertyFactory.MULTI_PROPERTY_VALUE, overviewButtonAlpha, LINEAR);
 
         float[] scaleAndOffset = state.getOverviewScaleAndOffset(mActivity);
         setter.setFloat(mRecentsView, RECENTS_SCALE_PROPERTY, scaleAndOffset[0],
@@ -105,29 +111,28 @@
         boolean showAsGrid = state.displayOverviewTasksAsGrid(mActivity.getDeviceProfile());
         setter.setFloat(mRecentsView, RECENTS_GRID_PROGRESS, showAsGrid ? 1f : 0f,
                 showAsGrid ? INSTANT : FINAL_FRAME);
+        setter.setFloat(mRecentsView, TASK_THUMBNAIL_SPLASH_ALPHA,
+                state.showTaskThumbnailSplash() ? 1f : 0f, INSTANT);
 
         setter.setViewBackgroundColor(mActivity.getScrimView(), state.getScrimColor(mActivity),
                 config.getInterpolator(ANIM_SCRIM_FADE, LINEAR));
 
         RecentsState currentState = mActivity.getStateManager().getState();
         if (isSplitSelectionState(state) && !isSplitSelectionState(currentState)) {
-            setter.add(mRecentsView.createSplitSelectInitAnimation(
-                    state.getTransitionDuration(mActivity, true /* isToState */)).buildAnim());
+            int duration = state.getTransitionDuration(mActivity, true /* isToState */);
+            // TODO (b/246851887): Pass in setter as a NO_ANIM PendingAnimation instead
+            PendingAnimation pa = new PendingAnimation(duration);
+            mRecentsView.createSplitSelectInitAnimation(pa, duration);
+            setter.add(pa.buildAnim());
         }
 
         Pair<FloatProperty, FloatProperty> taskViewsFloat =
                 mRecentsView.getPagedOrientationHandler().getSplitSelectTaskOffset(
                         TASK_PRIMARY_SPLIT_TRANSLATION, TASK_SECONDARY_SPLIT_TRANSLATION,
                         mActivity.getDeviceProfile());
+        setter.setFloat(mRecentsView, taskViewsFloat.first, isSplitSelectionState(state)
+                ? mRecentsView.getSplitSelectTranslation() : 0, LINEAR);
         setter.setFloat(mRecentsView, taskViewsFloat.second, 0, LINEAR);
-        if (isSplitSelectionState(state)) {
-            mRecentsView.applySplitPrimaryScrollOffset();
-            setter.setFloat(mRecentsView, taskViewsFloat.first,
-                    mRecentsView.getSplitSelectTranslation(), LINEAR);
-        } else {
-            mRecentsView.resetSplitPrimaryScrollOffset();
-            setter.setFloat(mRecentsView, taskViewsFloat.first, 0, LINEAR);
-        }
     }
 
     /**
diff --git a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java
index ab3201a..074aedd 100644
--- a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java
+++ b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java
@@ -15,7 +15,8 @@
  */
 package com.android.quickstep.fallback;
 
-import static com.android.launcher3.testing.TestProtocol.BAD_STATE;
+import static android.app.ActivityTaskManager.INVALID_TASK_ID;
+
 import static com.android.quickstep.GestureState.GestureEndTarget.RECENTS;
 import static com.android.quickstep.fallback.RecentsState.DEFAULT;
 import static com.android.quickstep.fallback.RecentsState.HOME;
@@ -27,7 +28,6 @@
 import android.content.Context;
 import android.os.Build;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.view.MotionEvent;
 
 import androidx.annotation.Nullable;
@@ -35,9 +35,10 @@
 import com.android.launcher3.AbstractFloatingView;
 import com.android.launcher3.anim.AnimatorPlaybackController;
 import com.android.launcher3.anim.PendingAnimation;
-import com.android.launcher3.popup.QuickstepSystemShortcut;
+import com.android.launcher3.logging.StatsLogManager;
 import com.android.launcher3.statemanager.StateManager.StateListener;
 import com.android.launcher3.util.SplitConfigurationOptions;
+import com.android.launcher3.util.SplitConfigurationOptions.SplitSelectSource;
 import com.android.quickstep.FallbackActivityInterface;
 import com.android.quickstep.GestureState;
 import com.android.quickstep.RecentsActivity;
@@ -56,6 +57,8 @@
 public class FallbackRecentsView extends RecentsView<RecentsActivity, RecentsState>
         implements StateListener<RecentsState> {
 
+    private static final int TASK_DISMISS_DURATION = 150;
+
     @Nullable
     private Task mHomeTask;
 
@@ -76,7 +79,7 @@
     }
 
     @Override
-    public void startHome() {
+    public void startHome(boolean animated) {
         mActivity.startHome();
         AbstractFloatingView.closeAllOpenViews(mActivity, mActivity.isStarted());
     }
@@ -107,8 +110,9 @@
         if (mHomeTask != null && endTarget == RECENTS && animatorSet != null) {
             TaskView tv = getTaskViewByTaskId(mHomeTask.key.id);
             if (tv != null) {
-                PendingAnimation pa = createTaskDismissAnimation(tv, true, false, 150,
-                        false /* dismissingForSplitSelection*/);
+                PendingAnimation pa = new PendingAnimation(TASK_DISMISS_DURATION);
+                createTaskDismissAnimation(pa, tv, true, false,
+                        TASK_DISMISS_DURATION, false /* dismissingForSplitSelection*/);
                 pa.addEndListener(e -> setCurrentTask(-1));
                 AnimatorPlaybackController controller = pa.createPlaybackController();
                 controller.dispatchOnStart();
@@ -198,13 +202,13 @@
     }
 
     @Override
-    public void setModalStateEnabled(boolean isModalState) {
-        super.setModalStateEnabled(isModalState);
-        if (isModalState) {
-            mActivity.getStateManager().goToState(RecentsState.MODAL_TASK);
+    public void setModalStateEnabled(int taskId, boolean animate) {
+        if (taskId != INVALID_TASK_ID) {
+            setSelectedTask(taskId);
+            mActivity.getStateManager().goToState(RecentsState.MODAL_TASK, animate);
         } else {
             if (mActivity.isInState(RecentsState.MODAL_TASK)) {
-                mActivity.getStateManager().goToState(DEFAULT);
+                mActivity.getStateManager().goToState(DEFAULT, animate);
                 resetModalVisuals();
             }
         }
@@ -212,8 +216,9 @@
 
     @Override
     public void initiateSplitSelect(TaskView taskView,
-            @SplitConfigurationOptions.StagePosition int stagePosition) {
-        super.initiateSplitSelect(taskView, stagePosition);
+            @SplitConfigurationOptions.StagePosition int stagePosition,
+            StatsLogManager.EventEnum splitEvent) {
+        super.initiateSplitSelect(taskView, stagePosition, splitEvent);
         mActivity.getStateManager().goToState(OVERVIEW_SPLIT_SELECT);
     }
 
@@ -225,7 +230,6 @@
         if (toState == MODAL_TASK) {
             setOverviewSelectEnabled(true);
         }
-        Log.d(BAD_STATE, "FRV onStateTransitionStart setFreezeVisibility=true, toState=" + toState);
         setFreezeViewVisibility(true);
     }
 
@@ -237,12 +241,13 @@
         }
         boolean isOverlayEnabled = finalState == DEFAULT || finalState == MODAL_TASK;
         setOverlayEnabled(isOverlayEnabled);
-        Log.d(BAD_STATE, "FRV onStateTransitionComplete setFreezeVisibility=false, finalState="
-                + finalState);
         setFreezeViewVisibility(false);
         if (finalState != MODAL_TASK) {
             setOverviewSelectEnabled(false);
         }
+        if (finalState != OVERVIEW_SPLIT_SELECT) {
+            resetFromSplitSelectionState();
+        }
 
         if (isOverlayEnabled) {
             runActionOnRemoteHandles(remoteTargetHandle ->
@@ -267,7 +272,7 @@
     }
 
     @Override
-    public void initiateSplitSelect(QuickstepSystemShortcut.SplitSelectSource splitSelectSource) {
+    public void initiateSplitSelect(SplitSelectSource splitSelectSource) {
         super.initiateSplitSelect(splitSelectSource);
         mActivity.getStateManager().goToState(OVERVIEW_SPLIT_SELECT);
     }
diff --git a/quickstep/src/com/android/quickstep/fallback/RecentsState.java b/quickstep/src/com/android/quickstep/fallback/RecentsState.java
index 77db6b7..8b5f091 100644
--- a/quickstep/src/com/android/quickstep/fallback/RecentsState.java
+++ b/quickstep/src/com/android/quickstep/fallback/RecentsState.java
@@ -15,6 +15,7 @@
  */
 package com.android.quickstep.fallback;
 
+import static com.android.launcher3.LauncherState.FLAG_CLOSE_POPUPS;
 import static com.android.launcher3.uioverrides.states.BackgroundAppState.getOverviewScaleAndOffsetForBackgroundState;
 import static com.android.launcher3.uioverrides.states.OverviewModalTaskState.getOverviewScaleAndOffsetForModalState;
 
@@ -40,6 +41,7 @@
     private static final int FLAG_SCRIM = BaseState.getFlag(5);
     private static final int FLAG_LIVE_TILE = BaseState.getFlag(6);
     private static final int FLAG_OVERVIEW_UI = BaseState.getFlag(7);
+    private static final int FLAG_TASK_THUMBNAIL_SPLASH = BaseState.getFlag(8);
 
     public static final RecentsState DEFAULT = new RecentsState(0,
             FLAG_DISABLE_RESTORE | FLAG_CLEAR_ALL_BUTTON | FLAG_OVERVIEW_ACTIONS | FLAG_SHOW_AS_GRID
@@ -48,11 +50,13 @@
             FLAG_DISABLE_RESTORE | FLAG_CLEAR_ALL_BUTTON | FLAG_OVERVIEW_ACTIONS | FLAG_MODAL
                     | FLAG_SHOW_AS_GRID | FLAG_SCRIM | FLAG_LIVE_TILE | FLAG_OVERVIEW_UI);
     public static final RecentsState BACKGROUND_APP = new BackgroundAppState(2,
-            FLAG_DISABLE_RESTORE | FLAG_NON_INTERACTIVE | FLAG_FULL_SCREEN | FLAG_OVERVIEW_UI);
+            FLAG_DISABLE_RESTORE | FLAG_NON_INTERACTIVE | FLAG_FULL_SCREEN | FLAG_OVERVIEW_UI
+                    | FLAG_TASK_THUMBNAIL_SPLASH);
     public static final RecentsState HOME = new RecentsState(3, 0);
     public static final RecentsState BG_LAUNCHER = new LauncherState(4, 0);
     public static final RecentsState OVERVIEW_SPLIT_SELECT = new RecentsState(5,
-            FLAG_SHOW_AS_GRID | FLAG_SCRIM | FLAG_OVERVIEW_UI);
+            FLAG_SHOW_AS_GRID | FLAG_SCRIM | FLAG_OVERVIEW_UI | FLAG_CLOSE_POPUPS
+                    | FLAG_DISABLE_RESTORE);
 
     public final int ordinal;
     private final int mFlags;
@@ -138,6 +142,11 @@
         return hasFlag(FLAG_SHOW_AS_GRID) && deviceProfile.isTablet;
     }
 
+    @Override
+    public boolean showTaskThumbnailSplash() {
+        return hasFlag(FLAG_TASK_THUMBNAIL_SPLASH);
+    }
+
     /**
      * True if the state has overview panel visible.
      */
diff --git a/quickstep/src/com/android/quickstep/fallback/RecentsTaskController.java b/quickstep/src/com/android/quickstep/fallback/RecentsTaskController.java
index eca61bb..db4927a 100644
--- a/quickstep/src/com/android/quickstep/fallback/RecentsTaskController.java
+++ b/quickstep/src/com/android/quickstep/fallback/RecentsTaskController.java
@@ -15,8 +15,6 @@
  */
 package com.android.quickstep.fallback;
 
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
-
 import com.android.launcher3.uioverrides.touchcontrollers.TaskViewTouchController;
 import com.android.quickstep.RecentsActivity;
 
@@ -28,8 +26,7 @@
 
     @Override
     protected boolean isRecentsInteractive() {
-        return mActivity.hasWindowFocus() || (ENABLE_QUICKSTEP_LIVE_TILE.get()
-                && mActivity.getStateManager().getState().hasLiveTile());
+        return mActivity.hasWindowFocus() || mActivity.getStateManager().getState().hasLiveTile();
     }
 
     @Override
diff --git a/quickstep/src/com/android/quickstep/inputconsumers/AccessibilityInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/AccessibilityInputConsumer.java
index 0c2c92c..6a36d9f 100644
--- a/quickstep/src/com/android/quickstep/inputconsumers/AccessibilityInputConsumer.java
+++ b/quickstep/src/com/android/quickstep/inputconsumers/AccessibilityInputConsumer.java
@@ -29,6 +29,7 @@
 import android.view.ViewConfiguration;
 
 import com.android.launcher3.R;
+import com.android.quickstep.GestureState;
 import com.android.quickstep.InputConsumer;
 import com.android.quickstep.RecentsAnimationDeviceState;
 import com.android.quickstep.SystemUiProxy;
@@ -46,6 +47,7 @@
     private final VelocityTracker mVelocityTracker;
     private final MotionPauseDetector mMotionPauseDetector;
     private final RecentsAnimationDeviceState mDeviceState;
+    private final GestureState mGestureState;
 
     private final float mMinGestureDistance;
     private final float mMinFlingVelocity;
@@ -55,7 +57,7 @@
     private float mTotalY;
 
     public AccessibilityInputConsumer(Context context, RecentsAnimationDeviceState deviceState,
-            InputConsumer delegate, InputMonitorCompat inputMonitor) {
+            GestureState gestureState, InputConsumer delegate, InputMonitorCompat inputMonitor) {
         super(delegate, inputMonitor);
         mContext = context;
         mVelocityTracker = VelocityTracker.obtain();
@@ -63,6 +65,7 @@
                 .getDimension(R.dimen.accessibility_gesture_min_swipe_distance);
         mMinFlingVelocity = ViewConfiguration.get(context).getScaledMinimumFlingVelocity();
         mDeviceState = deviceState;
+        mGestureState = gestureState;
 
         mMotionPauseDetector = new MotionPauseDetector(context);
     }
@@ -99,8 +102,8 @@
             case ACTION_POINTER_DOWN: {
                 if (mState == STATE_INACTIVE) {
                     int pointerIndex = ev.getActionIndex();
-                    if (mDeviceState.getRotationTouchHelper()
-                            .isInSwipeUpTouchRegion(ev, pointerIndex)
+                    if (mDeviceState.getRotationTouchHelper().isInSwipeUpTouchRegion(ev,
+                            pointerIndex, mGestureState.getActivityInterface())
                             && mDelegate.allowInterceptByParent()) {
                         setActive(ev);
 
diff --git a/quickstep/src/com/android/quickstep/inputconsumers/DelegateInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/DelegateInputConsumer.java
index 8da2fd3..03f8eef 100644
--- a/quickstep/src/com/android/quickstep/inputconsumers/DelegateInputConsumer.java
+++ b/quickstep/src/com/android/quickstep/inputconsumers/DelegateInputConsumer.java
@@ -3,7 +3,7 @@
 import android.view.MotionEvent;
 
 import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.tracing.InputConsumerProto;
 import com.android.quickstep.InputConsumer;
 import com.android.systemui.shared.system.InputMonitorCompat;
diff --git a/quickstep/src/com/android/quickstep/inputconsumers/DeviceLockedInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/DeviceLockedInputConsumer.java
index 3d737ca..59a9582 100644
--- a/quickstep/src/com/android/quickstep/inputconsumers/DeviceLockedInputConsumer.java
+++ b/quickstep/src/com/android/quickstep/inputconsumers/DeviceLockedInputConsumer.java
@@ -19,12 +19,12 @@
 import static android.view.MotionEvent.ACTION_POINTER_DOWN;
 import static android.view.MotionEvent.ACTION_UP;
 
-import static com.android.launcher3.Utilities.createHomeIntent;
 import static com.android.launcher3.Utilities.squaredHypot;
-import static com.android.launcher3.Utilities.squaredTouchSlop;
 import static com.android.launcher3.util.VelocityUtils.PX_PER_MS;
 import static com.android.quickstep.AbsSwipeUpHandler.MIN_PROGRESS_FOR_OVERVIEW;
 import static com.android.quickstep.MultiStateCallback.DEBUG_STATES;
+import static com.android.quickstep.OverviewComponentObserver.startHomeIntentSafely;
+import static com.android.quickstep.TaskAnimationManager.ENABLE_SHELL_TRANSITIONS;
 import static com.android.quickstep.util.ActiveGestureLog.INTENT_EXTRA_LOG_TRACE_ID;
 
 import android.animation.Animator;
@@ -36,14 +36,15 @@
 import android.graphics.Point;
 import android.graphics.PointF;
 import android.view.MotionEvent;
+import android.view.RemoteAnimationTarget;
 import android.view.VelocityTracker;
 
 import com.android.launcher3.R;
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.anim.Interpolators;
 import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.util.DisplayController;
-import com.android.quickstep.AnimatedFloat;
 import com.android.quickstep.GestureState;
 import com.android.quickstep.InputConsumer;
 import com.android.quickstep.MultiStateCallback;
@@ -51,14 +52,14 @@
 import com.android.quickstep.RecentsAnimationController;
 import com.android.quickstep.RecentsAnimationDeviceState;
 import com.android.quickstep.RecentsAnimationTargets;
+import com.android.quickstep.RemoteAnimationTargets;
 import com.android.quickstep.TaskAnimationManager;
+import com.android.quickstep.util.SurfaceTransaction.SurfaceProperties;
 import com.android.quickstep.util.TransformParams;
 import com.android.quickstep.util.TransformParams.BuilderProxy;
 import com.android.systemui.shared.recents.model.ThumbnailData;
 import com.android.systemui.shared.system.ActivityManagerWrapper;
 import com.android.systemui.shared.system.InputMonitorCompat;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
-import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams.Builder;
 
 import java.util.HashMap;
 
@@ -101,6 +102,8 @@
 
     private boolean mThresholdCrossed = false;
     private boolean mHomeLaunched = false;
+    private boolean mCancelWhenRecentsStart = false;
+    private boolean mDismissTask = false;
 
     private RecentsAnimationController mRecentsAnimationController;
 
@@ -111,7 +114,7 @@
         mDeviceState = deviceState;
         mTaskAnimationManager = taskAnimationManager;
         mGestureState = gestureState;
-        mTouchSlopSquared = squaredTouchSlop(context);
+        mTouchSlopSquared = mDeviceState.getSquaredTouchSlop();
         mTransformParams = new TransformParams();
         mInputMonitorCompat = inputMonitorCompat;
         mMaxTranslationY = context.getResources().getDimensionPixelSize(
@@ -150,7 +153,8 @@
                 if (!mThresholdCrossed) {
                     // Cancel interaction in case of multi-touch interaction
                     int ptrIdx = ev.getActionIndex();
-                    if (!mDeviceState.getRotationTouchHelper().isInSwipeUpTouchRegion(ev, ptrIdx)) {
+                    if (!mDeviceState.getRotationTouchHelper().isInSwipeUpTouchRegion(ev, ptrIdx,
+                            mGestureState.getActivityInterface())) {
                         int action = ev.getAction();
                         ev.setAction(ACTION_CANCEL);
                         finishTouchTracking(ev);
@@ -204,14 +208,29 @@
             animator.addListener(new AnimatorListenerAdapter() {
                 @Override
                 public void onAnimationEnd(Animator animation) {
-                    if (dismissTask) {
-                        // For now, just start the home intent so user is prompted to unlock the device.
-                        mContext.startActivity(createHomeIntent());
+                    if (ENABLE_SHELL_TRANSITIONS) {
+                        if (mTaskAnimationManager.getCurrentCallbacks() != null) {
+                            if (mRecentsAnimationController != null) {
+                                finishRecentsAnimationForShell(dismissTask);
+                            } else {
+                                // the transition of recents animation hasn't started, wait for it
+                                mCancelWhenRecentsStart = true;
+                                mDismissTask = dismissTask;
+                            }
+                        }
+                    } else if (dismissTask) {
+                        // For now, just start the home intent so user is prompted to
+                        // unlock the device.
+                        startHomeIntentSafely(mContext, mGestureState.getHomeIntent(), null);
                         mHomeLaunched = true;
                     }
                     mStateCallback.setState(STATE_HANDLER_INVALIDATED);
                 }
             });
+            RemoteAnimationTargets targets = mTransformParams.getTargetSet();
+            if (targets != null) {
+                targets.addReleaseCheck(new DeviceLockedReleaseCheck(animator));
+            }
             animator.start();
         } else {
             mStateCallback.setState(STATE_HANDLER_INVALIDATED);
@@ -238,12 +257,24 @@
         mTransformParams.setTargetSet(targets);
         applyTransform();
         mStateCallback.setState(STATE_TARGET_RECEIVED);
+        if (mCancelWhenRecentsStart) {
+            finishRecentsAnimationForShell(mDismissTask);
+        }
     }
 
     @Override
     public void onRecentsAnimationCanceled(HashMap<Integer, ThumbnailData> thumbnailDatas) {
         mRecentsAnimationController = null;
         mTransformParams.setTargetSet(null);
+        mCancelWhenRecentsStart = false;
+    }
+
+    private void finishRecentsAnimationForShell(boolean dismissTask) {
+        mCancelWhenRecentsStart = false;
+        mTaskAnimationManager.finishRunningRecentsAnimation(dismissTask /* toHome */);
+        if (dismissTask) {
+            mHomeLaunched = true;
+        }
     }
 
     private void endRemoteAnimation() {
@@ -264,9 +295,9 @@
 
     @Override
     public void onBuildTargetParams(
-            Builder builder, RemoteAnimationTargetCompat app, TransformParams params) {
+            SurfaceProperties builder, RemoteAnimationTarget app, TransformParams params) {
         mMatrix.setTranslate(0, mProgress.value * mMaxTranslationY);
-        builder.withMatrix(mMatrix);
+        builder.setMatrix(mMatrix);
     }
 
     @Override
@@ -278,4 +309,27 @@
     public boolean allowInterceptByParent() {
         return !mThresholdCrossed;
     }
+
+    private static final class DeviceLockedReleaseCheck extends
+            RemoteAnimationTargets.ReleaseCheck {
+
+        private DeviceLockedReleaseCheck(Animator animator) {
+            setCanRelease(true);
+
+            animator.addListener(new AnimatorListenerAdapter() {
+
+                @Override
+                public void onAnimationStart(Animator animation) {
+                    super.onAnimationStart(animation);
+                    setCanRelease(false);
+                }
+
+                @Override
+                public void onAnimationEnd(Animator animation) {
+                    super.onAnimationEnd(animation);
+                    setCanRelease(true);
+                }
+            });
+        }
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/inputconsumers/OneHandedModeInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/OneHandedModeInputConsumer.java
index bc20902..5387c8a 100644
--- a/quickstep/src/com/android/quickstep/inputconsumers/OneHandedModeInputConsumer.java
+++ b/quickstep/src/com/android/quickstep/inputconsumers/OneHandedModeInputConsumer.java
@@ -21,8 +21,8 @@
 import static android.view.MotionEvent.ACTION_MOVE;
 import static android.view.MotionEvent.ACTION_UP;
 
-import static com.android.launcher3.ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE;
 import static com.android.launcher3.Utilities.squaredHypot;
+import static com.android.launcher3.testing.shared.ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE;
 
 import android.content.Context;
 import android.graphics.Point;
@@ -30,8 +30,7 @@
 import android.view.MotionEvent;
 
 import com.android.launcher3.R;
-import com.android.launcher3.ResourceUtils;
-import com.android.launcher3.Utilities;
+import com.android.launcher3.testing.shared.ResourceUtils;
 import com.android.launcher3.util.DisplayController;
 import com.android.quickstep.InputConsumer;
 import com.android.quickstep.RecentsAnimationDeviceState;
@@ -69,7 +68,7 @@
         mDeviceState = deviceState;
         mDragDistThreshold = context.getResources().getDimensionPixelSize(
                 R.dimen.gestures_onehanded_drag_threshold);
-        mSquaredSlop = Utilities.squaredTouchSlop(context);
+        mSquaredSlop = mDeviceState.getSquaredTouchSlop();
         mDisplaySize = DisplayController.INSTANCE.get(mContext).getInfo().currentSize;
         mNavBarSize = ResourceUtils.getNavbarSize(NAVBAR_BOTTOM_GESTURE_SIZE,
                 mContext.getResources());
diff --git a/quickstep/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java
index e458c1f..f9cd4ee 100644
--- a/quickstep/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java
+++ b/quickstep/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java
@@ -27,6 +27,7 @@
 import static com.android.launcher3.PagedView.DEBUG_FAILED_QUICKSWITCH;
 import static com.android.launcher3.Utilities.EDGE_NAV_BAR;
 import static com.android.launcher3.Utilities.squaredHypot;
+import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
 import static com.android.launcher3.util.TraceHelper.FLAG_CHECK_FOR_RACE_CONDITIONS;
 import static com.android.launcher3.util.VelocityUtils.PX_PER_MS;
 import static com.android.quickstep.util.ActiveGestureLog.INTENT_EXTRA_LOG_TRACE_ID;
@@ -37,8 +38,6 @@
 import android.content.Intent;
 import android.graphics.PointF;
 import android.os.Build;
-import android.os.Handler;
-import android.os.Looper;
 import android.util.Log;
 import android.view.MotionEvent;
 import android.view.VelocityTracker;
@@ -47,8 +46,9 @@
 import androidx.annotation.UiThread;
 
 import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
 import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.tracing.InputConsumerProto;
 import com.android.launcher3.util.Preconditions;
 import com.android.launcher3.util.TraceHelper;
@@ -58,14 +58,14 @@
 import com.android.quickstep.GestureState;
 import com.android.quickstep.InputConsumer;
 import com.android.quickstep.RecentsAnimationCallbacks;
+import com.android.quickstep.RecentsAnimationController;
 import com.android.quickstep.RecentsAnimationDeviceState;
+import com.android.quickstep.RecentsAnimationTargets;
 import com.android.quickstep.RotationTouchHelper;
 import com.android.quickstep.TaskAnimationManager;
-import com.android.quickstep.util.ActiveGestureLog;
 import com.android.quickstep.util.CachedEventDispatcher;
 import com.android.quickstep.util.MotionPauseDetector;
 import com.android.quickstep.util.NavBarPosition;
-import com.android.systemui.shared.system.ActivityManagerWrapper;
 import com.android.systemui.shared.system.InputChannelCompat.InputEventReceiver;
 import com.android.systemui.shared.system.InputMonitorCompat;
 
@@ -80,10 +80,6 @@
     public static final String DOWN_EVT = "OtherActivityInputConsumer.DOWN";
     private static final String UP_EVT = "OtherActivityInputConsumer.UP";
 
-    // TODO: Move to quickstep contract
-    public static final float QUICKSTEP_TOUCH_SLOP_RATIO_TWO_BUTTON = 9;
-    public static final float QUICKSTEP_TOUCH_SLOP_RATIO_GESTURAL = 2;
-
     // Minimum angle of a gesture's coordinate where a release goes to overview.
     public static final int OVERVIEW_MIN_DEGREES = 15;
 
@@ -107,6 +103,7 @@
     private VelocityTracker mVelocityTracker;
 
     private AbsSwipeUpHandler mInteractionHandler;
+    private final FinishImmediatelyHandler mCleanupHandler = new FinishImmediatelyHandler();
 
     private final boolean mIsDeferredDownTarget;
     private final PointF mDownPos = new PointF();
@@ -130,12 +127,6 @@
     // Might be displacement in X or Y, depending on the direction we are swiping from the nav bar.
     private float mStartDisplacement;
 
-    private Handler mMainThreadHandler;
-    private Runnable mCancelRecentsAnimationRunnable = () -> {
-        ActivityManagerWrapper.getInstance().cancelRecentsAnimation(
-                true /* restoreHomeStackPosition */);
-    };
-
     public OtherActivityInputConsumer(Context base, RecentsAnimationDeviceState deviceState,
             TaskAnimationManager taskAnimationManager, GestureState gestureState,
             boolean isDeferredDownTarget, Consumer<OtherActivityInputConsumer> onCompleteCallback,
@@ -146,7 +137,6 @@
         mNavBarPosition = mDeviceState.getNavBarPosition();
         mTaskAnimationManager = taskAnimationManager;
         mGestureState = gestureState;
-        mMainThreadHandler = new Handler(Looper.getMainLooper());
         mHandlerFactory = handlerFactory;
         mActivityInterface = mGestureState.getActivityInterface();
 
@@ -163,11 +153,8 @@
         boolean continuingPreviousGesture = mTaskAnimationManager.isRecentsAnimationRunning();
         mIsDeferredDownTarget = !continuingPreviousGesture && isDeferredDownTarget;
 
-        float slopMultiplier = mDeviceState.isFullyGesturalNavMode()
-                ? QUICKSTEP_TOUCH_SLOP_RATIO_GESTURAL
-                : QUICKSTEP_TOUCH_SLOP_RATIO_TWO_BUTTON;
         mTouchSlop = ViewConfiguration.get(this).getScaledTouchSlop();
-        mSquaredTouchSlop = slopMultiplier * mTouchSlop * mTouchSlop;
+        mSquaredTouchSlop = mDeviceState.getSquaredTouchSlop();
 
         mPassedPilferInputSlop = mPassedWindowMoveSlop = continuingPreviousGesture;
         mDisableHorizontalSwipe = !mPassedPilferInputSlop && disableHorizontalSwipe;
@@ -209,7 +196,26 @@
         }
         int edgeFlags = ev.getEdgeFlags();
         ev.setEdgeFlags(edgeFlags | EDGE_NAV_BAR);
-        mRecentsViewDispatcher.dispatchEvent(ev);
+
+        if (mGestureState.isTrackpadGesture()) {
+            // Disable scrolling in RecentsView for 3-finger trackpad gesture. We don't know if a
+            // trackpad motion event is 3-finger or 4-finger with the U API until ACTION_MOVE (we
+            // skip ACTION_POINTER_UP events in TouchInteractionService), so in order to make sure
+            // that RecentsView always get a closed sequence of motion events and yet disable
+            // 3-finger scroll, we do the following (1) always dispatch ACTION_DOWN and ACTION_UP
+            // trackpad multi-finger motion events. (2) only dispatch 4-finger ACTION_MOVE motion
+            // events.
+            switch (ev.getActionMasked()) {
+                case ACTION_MOVE -> {
+                    if (mGestureState.isFourFingerTrackpadGesture()) {
+                        mRecentsViewDispatcher.dispatchEvent(ev);
+                    }
+                }
+                default -> mRecentsViewDispatcher.dispatchEvent(ev);
+            }
+        } else {
+            mRecentsViewDispatcher.dispatchEvent(ev);
+        }
         ev.setEdgeFlags(edgeFlags);
 
         mVelocityTracker.addMovement(ev);
@@ -242,7 +248,8 @@
                 if (!mPassedPilferInputSlop) {
                     // Cancel interaction in case of multi-touch interaction
                     int ptrIdx = ev.getActionIndex();
-                    if (!mRotationTouchHelper.isInSwipeUpTouchRegion(ev, ptrIdx)) {
+                    if (!mRotationTouchHelper.isInSwipeUpTouchRegion(ev, ptrIdx,
+                            mActivityInterface)) {
                         forceCancelGesture(ev);
                     }
                 }
@@ -286,6 +293,7 @@
                 float upDist = -displacement;
                 boolean passedSlop = squaredHypot(displacementX, displacementY)
                         >= mSquaredTouchSlop;
+
                 if (!mPassedSlopOnThisGesture && passedSlop) {
                     mPassedSlopOnThisGesture = true;
                 }
@@ -295,14 +303,30 @@
                 boolean haveNotPassedSlopOnContinuedGesture =
                         !mPassedSlopOnThisGesture && mPassedPilferInputSlop;
                 double degrees = Math.toDegrees(Math.atan(upDist / horizontalDist));
-                boolean isLikelyToStartNewTask = haveNotPassedSlopOnContinuedGesture
-                        || degrees <= OVERVIEW_MIN_DEGREES;
+
+                // Regarding degrees >= -OVERVIEW_MIN_DEGREES - Trackpad gestures can start anywhere
+                // on the screen, allowing downward swipes. We want to impose the same angle in that
+                // scenario.
+                boolean swipeWithinQuickSwitchRange = degrees <= OVERVIEW_MIN_DEGREES
+                        && (!mGestureState.isTrackpadGesture() || degrees >= -OVERVIEW_MIN_DEGREES);
+                boolean isLikelyToStartNewTask =
+                        haveNotPassedSlopOnContinuedGesture || swipeWithinQuickSwitchRange;
 
                 if (!mPassedPilferInputSlop) {
                     if (passedSlop) {
-                        if (mDisableHorizontalSwipe
-                                && Math.abs(displacementX) > Math.abs(displacementY)) {
-                            // Horizontal gesture is not allowed in this region
+                        // Horizontal gesture is not allowed in this region
+                        boolean isHorizontalSwipeWhenDisabled =
+                                (mDisableHorizontalSwipe && Math.abs(displacementX) > Math.abs(
+                                        displacementY));
+                        // Do not allow quick switch for trackpad 3-finger gestures
+                        // TODO(b/261815244): might need to impose stronger conditions for the swipe
+                        //  angle
+                        boolean noQuickSwitchForThreeFingerGesture = isLikelyToStartNewTask
+                                && mGestureState.isThreeFingerTrackpadGesture();
+                        boolean noQuickstepForFourFingerGesture = !isLikelyToStartNewTask
+                                && mGestureState.isFourFingerTrackpadGesture();
+                        if (isHorizontalSwipeWhenDisabled || noQuickSwitchForThreeFingerGesture
+                                || noQuickstepForFourFingerGesture) {
                             forceCancelGesture(ev);
                             break;
                         }
@@ -317,7 +341,6 @@
                         if (!mPassedWindowMoveSlop) {
                             mPassedWindowMoveSlop = true;
                             mStartDisplacement = Math.min(displacement, -mTouchSlop);
-
                         }
                         notifyGestureStarted(isLikelyToStartNewTask);
                     }
@@ -330,7 +353,10 @@
                     }
 
                     if (mDeviceState.isFullyGesturalNavMode()) {
-                        mMotionPauseDetector.setDisallowPause(upDist < mMotionPauseMinDisplacement
+                        boolean minSwipeMet = upDist >= Math.max(mMotionPauseMinDisplacement,
+                                mInteractionHandler.getThresholdToAllowMotionPause());
+                        mInteractionHandler.setCanSlowSwipeGoHome(minSwipeMet);
+                        mMotionPauseDetector.setDisallowPause(!minSwipeMet
                                 || isLikelyToStartNewTask);
                         mMotionPauseDetector.addPosition(ev);
                         mInteractionHandler.setIsLikelyToStartNewTask(isLikelyToStartNewTask);
@@ -354,7 +380,6 @@
     }
 
     private void notifyGestureStarted(boolean isLikelyToStartNewTask) {
-        ActiveGestureLog.INSTANCE.addLog("startQuickstep");
         if (mInteractionHandler == null) {
             return;
         }
@@ -368,8 +393,6 @@
     }
 
     private void startTouchTrackingForWindowAnimation(long touchTimeMs) {
-        ActiveGestureLog.INSTANCE.addLog("startRecentsAnimation");
-
         mInteractionHandler = mHandlerFactory.newHandler(mGestureState, touchTimeMs);
         mInteractionHandler.setGestureEndCallback(this::onInteractionGestureFinished);
         mMotionPauseDetector.setOnMotionPauseListener(mInteractionHandler.getMotionPauseListener());
@@ -377,6 +400,7 @@
 
         if (mTaskAnimationManager.isRecentsAnimationRunning()) {
             mActiveCallbacks = mTaskAnimationManager.continueRecentsAnimation(mGestureState);
+            mActiveCallbacks.removeListener(mCleanupHandler);
             mActiveCallbacks.addListener(mInteractionHandler);
             mTaskAnimationManager.notifyRecentsAnimationState(mInteractionHandler);
             notifyGestureStarted(true /*isLikelyToStartNewTask*/);
@@ -401,29 +425,34 @@
                 mInteractionHandler.onGestureCancelled();
             } else {
                 mVelocityTracker.computeCurrentVelocity(PX_PER_MS);
-                float velocityX = mVelocityTracker.getXVelocity(mActivePointerId);
-                float velocityY = mVelocityTracker.getYVelocity(mActivePointerId);
-                float velocity = mNavBarPosition.isRightEdge()
-                        ? velocityX
+                float velocityXPxPerMs = mVelocityTracker.getXVelocity(mActivePointerId);
+                float velocityYPxPerMs = mVelocityTracker.getYVelocity(mActivePointerId);
+                float velocityPxPerMs = mNavBarPosition.isRightEdge()
+                        ? velocityXPxPerMs
                         : mNavBarPosition.isLeftEdge()
-                                ? -velocityX
-                                : velocityY;
+                                ? -velocityXPxPerMs
+                                : velocityYPxPerMs;
                 mInteractionHandler.updateDisplacement(getDisplacement(ev) - mStartDisplacement);
-                mInteractionHandler.onGestureEnded(velocity, new PointF(velocityX, velocityY),
-                        mDownPos);
+                mInteractionHandler.onGestureEnded(velocityPxPerMs,
+                        new PointF(velocityXPxPerMs, velocityYPxPerMs));
             }
         } else {
             // Since we start touch tracking on DOWN, we may reach this state without actually
-            // starting the gesture. In that case, just cleanup immediately.
+            // starting the gesture. In that case, we need to clean-up an unfinished or un-started
+            // animation.
+            if (mActiveCallbacks != null && mInteractionHandler != null) {
+                if (mTaskAnimationManager.isRecentsAnimationRunning()) {
+                    // The animation started, but with no movement, in this case, there will be no
+                    // animateToProgress so we have to manually finish here.
+                    mTaskAnimationManager.finishRunningRecentsAnimation(false /* toHome */);
+                } else {
+                    // The animation hasn't started yet, so insert a replacement handler into the
+                    // callbacks which immediately finishes the animation after it starts.
+                    mActiveCallbacks.addListener(mCleanupHandler);
+                }
+            }
             onConsumerAboutToBeSwitched();
             onInteractionGestureFinished();
-
-            // Cancel the recents animation if SysUI happens to handle UP before we have a chance
-            // to start the recents animation. In addition, workaround for b/126336729 by delaying
-            // the cancel of the animation for a period, in case SysUI is slow to handle UP and we
-            // handle DOWN & UP and move the home stack before SysUI can start the activity
-            mMainThreadHandler.removeCallbacks(mCancelRecentsAnimationRunnable);
-            mMainThreadHandler.postDelayed(mCancelRecentsAnimationRunnable, 100);
         }
         cleanupAfterGesture();
         TraceHelper.INSTANCE.endSection(traceToken);
@@ -445,7 +474,6 @@
     @Override
     public void onConsumerAboutToBeSwitched() {
         Preconditions.assertUIThread();
-        mMainThreadHandler.removeCallbacks(mCancelRecentsAnimationRunnable);
         if (mInteractionHandler != null) {
             // The consumer is being switched while we are active. Set up the shared state to be
             // used by the next animation
@@ -464,7 +492,7 @@
     }
 
     private void removeListener() {
-        if (mActiveCallbacks != null) {
+        if (mActiveCallbacks != null && mInteractionHandler != null) {
             mActiveCallbacks.removeListener(mInteractionHandler);
         }
     }
@@ -490,4 +518,19 @@
             mInteractionHandler.writeToProto(inputConsumerProto);
         }
     }
+
+    /**
+     * A listener which just finishes the animation immediately after starting. Replaces
+     * AbsSwipeUpHandler if the gesture itself finishes before the animation even starts.
+     */
+    private static class FinishImmediatelyHandler
+            implements RecentsAnimationCallbacks.RecentsAnimationListener {
+
+        public void onRecentsAnimationStart(RecentsAnimationController controller,
+                RecentsAnimationTargets targets) {
+            Utilities.postAsyncCallback(MAIN_EXECUTOR.getHandler(), () -> {
+                controller.finish(false /* toRecents */, null);
+            });
+        }
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/inputconsumers/OverviewInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/OverviewInputConsumer.java
index 02ac48e..3388642 100644
--- a/quickstep/src/com/android/quickstep/inputconsumers/OverviewInputConsumer.java
+++ b/quickstep/src/com/android/quickstep/inputconsumers/OverviewInputConsumer.java
@@ -15,7 +15,6 @@
  */
 package com.android.quickstep.inputconsumers;
 
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
 import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
 
 import android.media.AudioManager;
@@ -29,13 +28,12 @@
 import com.android.launcher3.statemanager.BaseState;
 import com.android.launcher3.statemanager.StatefulActivity;
 import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.views.BaseDragLayer;
 import com.android.quickstep.BaseActivityInterface;
 import com.android.quickstep.GestureState;
 import com.android.quickstep.InputConsumer;
 import com.android.quickstep.TaskUtils;
-import com.android.quickstep.util.ActiveGestureLog;
 import com.android.systemui.shared.system.InputMonitorCompat;
 
 /**
@@ -53,6 +51,7 @@
 
     private final boolean mStartingInActivityBounds;
     private boolean mTargetHandledTouch;
+    private boolean mHasSetTouchModeForFirstDPadEvent;
 
     public OverviewInputConsumer(GestureState gestureState, T activity,
             @Nullable InputMonitorCompat inputMonitor, boolean startingInActivityBounds) {
@@ -91,38 +90,49 @@
             if (!mStartingInActivityBounds) {
                 mActivityInterface.closeOverlay();
                 TaskUtils.closeSystemWindowsAsync(CLOSE_SYSTEM_WINDOWS_REASON_RECENTS);
-                ActiveGestureLog.INSTANCE.addLog("startQuickstep");
             }
             if (mInputMonitor != null) {
                 TestLogging.recordEvent(TestProtocol.SEQUENCE_PILFER, "pilferPointers");
                 mInputMonitor.pilferPointers();
             }
         }
+        if (mHasSetTouchModeForFirstDPadEvent) {
+            mActivity.getRootView().clearFocus();
+        }
     }
 
     @Override
     public void onHoverEvent(MotionEvent ev) {
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
-            mActivity.dispatchGenericMotionEvent(ev);
-        }
+        mActivity.dispatchGenericMotionEvent(ev);
     }
 
     @Override
     public void onKeyEvent(KeyEvent ev) {
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
-            switch (ev.getKeyCode()) {
-                case KeyEvent.KEYCODE_VOLUME_DOWN:
-                case KeyEvent.KEYCODE_VOLUME_UP:
-                case KeyEvent.KEYCODE_VOLUME_MUTE:
-                    MediaSessionManager mgr = mActivity.getSystemService(MediaSessionManager.class);
-                    mgr.dispatchVolumeKeyEventAsSystemService(ev,
-                            AudioManager.USE_DEFAULT_STREAM_TYPE);
-                    break;
-                default:
-                    break;
-            }
-            mActivity.dispatchKeyEvent(ev);
+        switch (ev.getKeyCode()) {
+            case KeyEvent.KEYCODE_VOLUME_DOWN:
+            case KeyEvent.KEYCODE_VOLUME_UP:
+            case KeyEvent.KEYCODE_VOLUME_MUTE:
+                MediaSessionManager mgr = mActivity.getSystemService(MediaSessionManager.class);
+                mgr.dispatchVolumeKeyEventAsSystemService(ev,
+                        AudioManager.USE_DEFAULT_STREAM_TYPE);
+                break;
+            case KeyEvent.KEYCODE_DPAD_LEFT:
+            case KeyEvent.KEYCODE_DPAD_RIGHT:
+                if (!mHasSetTouchModeForFirstDPadEvent) {
+                    // When Overview is launched via meta+tab or swipe up from an app, the touch
+                    // mode somehow is not changed to false by the Android framework. The subsequent
+                    // key events (e.g. DPAD_LEFT, DPAD_RIGHT) can only be dispatched to focused
+                    // views, while focus can only be requested in
+                    // {@link View#requestFocusNoSearch(int, Rect)} when touch mode is false. To
+                    // note, here we launch overview with live tile.
+                    mHasSetTouchModeForFirstDPadEvent = true;
+                    mActivity.getRootView().getViewRootImpl().touchModeChanged(false);
+                }
+                break;
+            default:
+                break;
         }
+        mActivity.dispatchKeyEvent(ev);
     }
 }
 
diff --git a/quickstep/src/com/android/quickstep/inputconsumers/OverviewWithoutFocusInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/OverviewWithoutFocusInputConsumer.java
index 864e08d..b70fe8e 100644
--- a/quickstep/src/com/android/quickstep/inputconsumers/OverviewWithoutFocusInputConsumer.java
+++ b/quickstep/src/com/android/quickstep/inputconsumers/OverviewWithoutFocusInputConsumer.java
@@ -15,12 +15,11 @@
  */
 package com.android.quickstep.inputconsumers;
 
-import static com.android.launcher3.Utilities.createHomeIntent;
 import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_BACKGROUND;
 import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_HOME;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_HOME_GESTURE;
+import static com.android.quickstep.OverviewComponentObserver.startHomeIntentSafely;
 
-import android.content.ActivityNotFoundException;
 import android.content.Context;
 import android.graphics.PointF;
 import android.view.MotionEvent;
@@ -29,11 +28,10 @@
 import com.android.launcher3.BaseDraggingActivity;
 import com.android.launcher3.logger.LauncherAtom;
 import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.quickstep.GestureState;
 import com.android.quickstep.InputConsumer;
 import com.android.quickstep.RecentsAnimationDeviceState;
-import com.android.quickstep.util.ActiveGestureLog;
 import com.android.quickstep.util.TriggerSwipeUpTouchTracker;
 import com.android.systemui.shared.system.InputMonitorCompat;
 
@@ -79,12 +77,7 @@
 
     @Override
     public void onSwipeUp(boolean wasFling, PointF finalVelocity) {
-        try {
-            mContext.startActivity(mGestureState.getHomeIntent());
-        } catch (NullPointerException | ActivityNotFoundException | SecurityException e) {
-            mContext.startActivity(createHomeIntent());
-        }
-        ActiveGestureLog.INSTANCE.addLog("startQuickstep");
+        startHomeIntentSafely(mContext, mGestureState.getHomeIntent(), null);
         BaseActivity activity = BaseDraggingActivity.fromContext(mContext);
         int state = (mGestureState != null && mGestureState.getEndTarget() != null)
                 ? mGestureState.getEndTarget().containerType
diff --git a/quickstep/src/com/android/quickstep/inputconsumers/ProgressDelegateInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/ProgressDelegateInputConsumer.java
index 71dca66..ab70272 100644
--- a/quickstep/src/com/android/quickstep/inputconsumers/ProgressDelegateInputConsumer.java
+++ b/quickstep/src/com/android/quickstep/inputconsumers/ProgressDelegateInputConsumer.java
@@ -20,6 +20,7 @@
 import static com.android.launcher3.touch.SingleAxisSwipeDetector.DIRECTION_POSITIVE;
 import static com.android.launcher3.touch.SingleAxisSwipeDetector.VERTICAL;
 import static com.android.quickstep.MultiStateCallback.DEBUG_STATES;
+import static com.android.quickstep.OverviewComponentObserver.startHomeIntentSafely;
 import static com.android.quickstep.util.ActiveGestureLog.INTENT_EXTRA_LOG_TRACE_ID;
 
 import android.animation.ObjectAnimator;
@@ -28,12 +29,12 @@
 import android.graphics.Point;
 import android.view.MotionEvent;
 
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.anim.AnimatorListeners;
 import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.touch.SingleAxisSwipeDetector;
 import com.android.launcher3.util.DisplayController;
-import com.android.quickstep.AnimatedFloat;
 import com.android.quickstep.GestureState;
 import com.android.quickstep.InputConsumer;
 import com.android.quickstep.MultiStateCallback;
@@ -102,8 +103,7 @@
         mStateCallback = new MultiStateCallback(STATE_NAMES);
         mStateCallback.runOnceAtState(STATE_TARGET_RECEIVED | STATE_HANDLER_INVALIDATED,
                 this::endRemoteAnimation);
-        mStateCallback.runOnceAtState(STATE_TARGET_RECEIVED | STATE_FLING_FINISHED,
-                this::onFlingFinished);
+        mStateCallback.runOnceAtState(STATE_FLING_FINISHED, this::onFlingFinished);
 
         mSwipeDetector = new SingleAxisSwipeDetector(mContext, this, VERTICAL);
         mSwipeDetector.setDetectableScrollConditions(DIRECTION_POSITIVE, false);
@@ -159,10 +159,12 @@
     }
 
     private void onFlingFinished() {
+        boolean endToRecents = mFlingEndsOnHome == null ? true : mFlingEndsOnHome;
         if (mRecentsAnimationController != null) {
-            boolean endToRecents = mFlingEndsOnHome == null ? true : mFlingEndsOnHome;
             mRecentsAnimationController.finishController(endToRecents /* toRecents */,
                     null /* callback */, false /* sendUserLeaveHint */);
+        } else if (endToRecents) {
+            startHomeIntentSafely(mContext, null);
         }
     }
 
diff --git a/quickstep/src/com/android/quickstep/inputconsumers/ResetGestureInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/ResetGestureInputConsumer.java
index d34b40b..349f4d2 100644
--- a/quickstep/src/com/android/quickstep/inputconsumers/ResetGestureInputConsumer.java
+++ b/quickstep/src/com/android/quickstep/inputconsumers/ResetGestureInputConsumer.java
@@ -17,18 +17,25 @@
 
 import android.view.MotionEvent;
 
+import com.android.launcher3.taskbar.TaskbarActivityContext;
 import com.android.quickstep.InputConsumer;
 import com.android.quickstep.TaskAnimationManager;
 
+import java.util.function.Supplier;
+
 /**
  * A NO_OP input consumer which also resets any pending gesture
  */
 public class ResetGestureInputConsumer implements InputConsumer {
 
     private final TaskAnimationManager mTaskAnimationManager;
+    private final Supplier<TaskbarActivityContext> mActivityContextSupplier;
 
-    public ResetGestureInputConsumer(TaskAnimationManager taskAnimationManager) {
+    public ResetGestureInputConsumer(
+            TaskAnimationManager taskAnimationManager,
+            Supplier<TaskbarActivityContext> activityContextSupplier) {
         mTaskAnimationManager = taskAnimationManager;
+        mActivityContextSupplier = activityContextSupplier;
     }
 
     @Override
@@ -40,7 +47,9 @@
     public void onMotionEvent(MotionEvent ev) {
         if (ev.getAction() == MotionEvent.ACTION_DOWN
                 && mTaskAnimationManager.isRecentsAnimationRunning()) {
-            mTaskAnimationManager.finishRunningRecentsAnimation(false /* toHome */);
+            TaskbarActivityContext tac = mActivityContextSupplier.get();
+            mTaskAnimationManager.finishRunningRecentsAnimation(
+                    /* toHome= */ tac != null && !tac.isInApp());
         }
     }
 }
diff --git a/quickstep/src/com/android/quickstep/inputconsumers/StatusBarInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/StatusBarInputConsumer.java
new file mode 100644
index 0000000..898aa86
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/inputconsumers/StatusBarInputConsumer.java
@@ -0,0 +1,85 @@
+/*
+ * 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.quickstep.inputconsumers;
+
+import static android.view.MotionEvent.ACTION_DOWN;
+import static android.view.MotionEvent.ACTION_MOVE;
+
+import android.content.Context;
+import android.graphics.PointF;
+import android.view.MotionEvent;
+import android.view.ViewConfiguration;
+
+import com.android.quickstep.InputConsumer;
+import com.android.quickstep.SystemUiProxy;
+import com.android.systemui.shared.system.InputMonitorCompat;
+
+/** Allows the status bar to be pull down for notification shade */
+public class StatusBarInputConsumer extends DelegateInputConsumer {
+
+    private final SystemUiProxy mSystemUiProxy;
+    private final float mTouchSlop;
+    private final PointF mDown = new PointF();
+    private boolean mHasPassedTouchSlop;
+
+    public StatusBarInputConsumer(Context context, InputConsumer delegate,
+            InputMonitorCompat inputMonitor) {
+        super(delegate, inputMonitor);
+
+        mSystemUiProxy = SystemUiProxy.INSTANCE.get(context);
+        mTouchSlop = 2 * ViewConfiguration.get(context).getScaledTouchSlop();
+    }
+
+    @Override
+    public int getType() {
+        return TYPE_STATUS_BAR | mDelegate.getType();
+    }
+
+    @Override
+    public void onMotionEvent(MotionEvent ev) {
+        if (mState != STATE_ACTIVE) {
+            mDelegate.onMotionEvent(ev);
+
+            switch (ev.getActionMasked()) {
+                case ACTION_DOWN -> {
+                    mDown.set(ev.getX(), ev.getY());
+                    mHasPassedTouchSlop = false;
+                }
+                case ACTION_MOVE -> {
+                    if (!mHasPassedTouchSlop) {
+                        float displacementY = ev.getY() - mDown.y;
+                        if (Math.abs(displacementY) > mTouchSlop) {
+                            mHasPassedTouchSlop = true;
+                            if (displacementY > 0) {
+                                setActive(ev);
+                                ev.setAction(ACTION_DOWN);
+                                dispatchTouchEvent(ev);
+                            }
+                        }
+                    }
+                }
+            }
+        } else {
+            dispatchTouchEvent(ev);
+        }
+    }
+
+    private void dispatchTouchEvent(MotionEvent ev) {
+        if (mSystemUiProxy.isActive()) {
+            mSystemUiProxy.onStatusBarMotionEvent(ev);
+        }
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/inputconsumers/SysUiOverlayInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/SysUiOverlayInputConsumer.java
index 878f132..4806ac1 100644
--- a/quickstep/src/com/android/quickstep/inputconsumers/SysUiOverlayInputConsumer.java
+++ b/quickstep/src/com/android/quickstep/inputconsumers/SysUiOverlayInputConsumer.java
@@ -23,7 +23,7 @@
 import android.view.MotionEvent;
 
 import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.quickstep.InputConsumer;
 import com.android.quickstep.RecentsAnimationDeviceState;
 import com.android.quickstep.util.TriggerSwipeUpTouchTracker;
diff --git a/quickstep/src/com/android/quickstep/inputconsumers/TaskbarStashInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/TaskbarStashInputConsumer.java
deleted file mode 100644
index 3785de4..0000000
--- a/quickstep/src/com/android/quickstep/inputconsumers/TaskbarStashInputConsumer.java
+++ /dev/null
@@ -1,121 +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.quickstep.inputconsumers;
-
-import static com.android.launcher3.Utilities.squaredHypot;
-
-import android.content.Context;
-import android.view.GestureDetector;
-import android.view.GestureDetector.SimpleOnGestureListener;
-import android.view.MotionEvent;
-
-import com.android.launcher3.R;
-import com.android.launcher3.Utilities;
-import com.android.launcher3.taskbar.TaskbarActivityContext;
-import com.android.quickstep.InputConsumer;
-import com.android.systemui.shared.system.InputMonitorCompat;
-
-/**
- * Listens for a long press, and cancels the current gesture if that causes Taskbar to be unstashed.
- */
-public class TaskbarStashInputConsumer extends DelegateInputConsumer {
-
-    private final TaskbarActivityContext mTaskbarActivityContext;
-    private final GestureDetector mLongPressDetector;
-    private final float mSquaredTouchSlop;
-
-
-    private float mDownX, mDownY;
-    private boolean mCanceledUnstashHint;
-    private final float mUnstashArea;
-    private final float mScreenWidth;
-
-    public TaskbarStashInputConsumer(Context context, InputConsumer delegate,
-            InputMonitorCompat inputMonitor, TaskbarActivityContext taskbarActivityContext) {
-        super(delegate, inputMonitor);
-        mTaskbarActivityContext = taskbarActivityContext;
-        mSquaredTouchSlop = Utilities.squaredTouchSlop(context);
-        mScreenWidth = taskbarActivityContext.getDeviceProfile().widthPx;
-        mUnstashArea = context.getResources()
-                .getDimensionPixelSize(R.dimen.taskbar_unstash_input_area);
-
-        mLongPressDetector = new GestureDetector(context, new SimpleOnGestureListener() {
-            @Override
-            public void onLongPress(MotionEvent motionEvent) {
-                onLongPressDetected(motionEvent);
-            }
-        });
-    }
-
-    @Override
-    public int getType() {
-        return TYPE_TASKBAR_STASH | mDelegate.getType();
-    }
-
-    @Override
-    public void onMotionEvent(MotionEvent ev) {
-        mLongPressDetector.onTouchEvent(ev);
-        if (mState != STATE_ACTIVE) {
-            mDelegate.onMotionEvent(ev);
-
-            if (mTaskbarActivityContext != null) {
-                final float x = ev.getRawX();
-                final float y = ev.getRawY();
-                switch (ev.getAction()) {
-                    case MotionEvent.ACTION_DOWN:
-                        if (isInArea(x)) {
-                            mDownX = x;
-                            mDownY = y;
-                            mTaskbarActivityContext.startTaskbarUnstashHint(
-                                    /* animateForward = */ true);
-                            mCanceledUnstashHint = false;
-                        }
-                        break;
-                    case MotionEvent.ACTION_MOVE:
-                        if (!mCanceledUnstashHint
-                                && squaredHypot(mDownX - x, mDownY - y) > mSquaredTouchSlop) {
-                            mTaskbarActivityContext.startTaskbarUnstashHint(
-                                    /* animateForward = */ false);
-                            mCanceledUnstashHint = true;
-                        }
-                        break;
-                    case MotionEvent.ACTION_UP:
-                    case MotionEvent.ACTION_CANCEL:
-                        if (!mCanceledUnstashHint) {
-                            mTaskbarActivityContext.startTaskbarUnstashHint(
-                                    /* animateForward = */ false);
-                        }
-                        break;
-                }
-            }
-        }
-    }
-
-    private boolean isInArea(float x) {
-        float areaFromMiddle = mUnstashArea / 2.0f;
-        float distFromMiddle = Math.abs(mScreenWidth / 2.0f - x);
-        return distFromMiddle < areaFromMiddle;
-    }
-
-    private void onLongPressDetected(MotionEvent motionEvent) {
-        if (mTaskbarActivityContext != null && isInArea(motionEvent.getRawX())) {
-            boolean taskBarPressed = mTaskbarActivityContext.onLongPressToUnstashTaskbar();
-            if (taskBarPressed) {
-                setActive(motionEvent);
-            }
-        }
-    }
-}
diff --git a/quickstep/src/com/android/quickstep/inputconsumers/TaskbarUnstashInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/TaskbarUnstashInputConsumer.java
new file mode 100644
index 0000000..fbe7fde
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/inputconsumers/TaskbarUnstashInputConsumer.java
@@ -0,0 +1,302 @@
+/*
+ * 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.quickstep.inputconsumers;
+
+import static android.view.MotionEvent.INVALID_POINTER_ID;
+
+import static com.android.launcher3.MotionEventsUtils.isTrackpadMotionEvent;
+import static com.android.launcher3.Utilities.squaredHypot;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_CURSOR_HOVER_STATES;
+import static com.android.launcher3.taskbar.TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_TOUCHING;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.PointF;
+import android.graphics.Rect;
+import android.view.GestureDetector;
+import android.view.GestureDetector.SimpleOnGestureListener;
+import android.view.MotionEvent;
+
+import androidx.annotation.Nullable;
+
+import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
+import com.android.launcher3.taskbar.TaskbarActivityContext;
+import com.android.launcher3.taskbar.TaskbarTranslationController.TransitionCallback;
+import com.android.launcher3.touch.OverScroll;
+import com.android.launcher3.util.DisplayController;
+import com.android.quickstep.InputConsumer;
+import com.android.systemui.shared.system.InputMonitorCompat;
+
+/**
+ * Listens for touch and hover events to unstash the Taskbar.
+ *
+ * <p>Cancels the current gesture if the long press causes the Taskbar to be unstashed.
+ */
+public class TaskbarUnstashInputConsumer extends DelegateInputConsumer {
+
+    private final TaskbarActivityContext mTaskbarActivityContext;
+    private final GestureDetector mLongPressDetector;
+    private final float mSquaredTouchSlop;
+
+    private float mLongPressDownX, mLongPressDownY;
+    private boolean mCanceledUnstashHint;
+    private final float mUnstashArea;
+    private final float mScreenWidth;
+
+    private final int mTaskbarNavThreshold;
+    private final int mTaskbarNavThresholdY;
+    private final boolean mIsTaskbarAllAppsOpen;
+    private boolean mHasPassedTaskbarNavThreshold;
+
+    private final PointF mDownPos = new PointF();
+    private final PointF mLastPos = new PointF();
+    private int mActivePointerId = INVALID_POINTER_ID;
+
+    private final boolean mIsTransientTaskbar;
+
+    private boolean mIsStashedTaskbarHovered = false;
+    private final Rect mStashedTaskbarHandleBounds = new Rect();
+    private final Rect mBottomEdgeBounds = new Rect();
+    private final int mBottomScreenEdge;
+    private final int mStashedTaskbarBottomEdge;
+
+    private final @Nullable TransitionCallback mTransitionCallback;
+
+    public TaskbarUnstashInputConsumer(Context context, InputConsumer delegate,
+            InputMonitorCompat inputMonitor, TaskbarActivityContext taskbarActivityContext) {
+        super(delegate, inputMonitor);
+        mTaskbarActivityContext = taskbarActivityContext;
+        // TODO(b/270395798): remove this when cleaning up old Persistent Taskbar code.
+        mSquaredTouchSlop = Utilities.squaredTouchSlop(context);
+        mScreenWidth = taskbarActivityContext.getDeviceProfile().widthPx;
+
+        Resources res = context.getResources();
+        mUnstashArea = res.getDimensionPixelSize(R.dimen.taskbar_unstash_input_area);
+        mTaskbarNavThreshold = res.getDimensionPixelSize(R.dimen.taskbar_from_nav_threshold);
+        mTaskbarNavThresholdY = taskbarActivityContext.getDeviceProfile().heightPx
+                - mTaskbarNavThreshold;
+        mIsTaskbarAllAppsOpen =
+                mTaskbarActivityContext != null && mTaskbarActivityContext.isTaskbarAllAppsOpen();
+
+        mIsTransientTaskbar = DisplayController.isTransientTaskbar(context);
+
+        mLongPressDetector = new GestureDetector(context, new SimpleOnGestureListener() {
+            @Override
+            public void onLongPress(MotionEvent motionEvent) {
+                onLongPressDetected(motionEvent);
+            }
+        });
+
+        mBottomScreenEdge = res.getDimensionPixelSize(
+                R.dimen.taskbar_stashed_screen_edge_hover_deadzone_height);
+        mStashedTaskbarBottomEdge =
+                res.getDimensionPixelSize(R.dimen.taskbar_stashed_below_hover_deadzone_height);
+
+        mTransitionCallback = mIsTransientTaskbar
+                ? taskbarActivityContext.getTranslationCallbacks()
+                : null;
+    }
+
+    @Override
+    public int getType() {
+        return TYPE_TASKBAR_STASH | TYPE_CURSOR_HOVER | mDelegate.getType();
+    }
+
+    @Override
+    public void onMotionEvent(MotionEvent ev) {
+        mLongPressDetector.onTouchEvent(ev);
+        if (mState != STATE_ACTIVE) {
+            mDelegate.onMotionEvent(ev);
+
+            // Only show the transient task bar if the touch events are on the screen.
+            if (mTaskbarActivityContext != null && !isTrackpadMotionEvent(ev)) {
+                final float x = ev.getRawX();
+                final float y = ev.getRawY();
+                switch (ev.getAction()) {
+                    case MotionEvent.ACTION_DOWN:
+                        mActivePointerId = ev.getPointerId(0);
+                        mDownPos.set(ev.getX(), ev.getY());
+                        mLastPos.set(mDownPos);
+
+                        mHasPassedTaskbarNavThreshold = false;
+                        mTaskbarActivityContext.setAutohideSuspendFlag(
+                                FLAG_AUTOHIDE_SUSPEND_TOUCHING, true);
+                        if (isInArea(x)) {
+                            if (!mIsTransientTaskbar) {
+                                mLongPressDownX = x;
+                                mLongPressDownY = y;
+                                mTaskbarActivityContext.startTaskbarUnstashHint(
+                                        /* animateForward = */ true);
+                                mCanceledUnstashHint = false;
+                            }
+                        }
+
+                        if (mTransitionCallback != null && !mIsTaskbarAllAppsOpen) {
+                            mTransitionCallback.onActionDown();
+                        }
+                        break;
+                    case MotionEvent.ACTION_POINTER_UP:
+                        int ptrIdx = ev.getActionIndex();
+                        int ptrId = ev.getPointerId(ptrIdx);
+                        if (ptrId == mActivePointerId) {
+                            final int newPointerIdx = ptrIdx == 0 ? 1 : 0;
+                            mDownPos.set(
+                                    ev.getX(newPointerIdx) - (mLastPos.x - mDownPos.x),
+                                    ev.getY(newPointerIdx) - (mLastPos.y - mDownPos.y));
+                            mLastPos.set(ev.getX(newPointerIdx), ev.getY(newPointerIdx));
+                            mActivePointerId = ev.getPointerId(newPointerIdx);
+                        }
+                        break;
+                    case MotionEvent.ACTION_MOVE:
+                        if (!mIsTransientTaskbar
+                                && !mCanceledUnstashHint
+                                && squaredHypot(mLongPressDownX - x, mLongPressDownY - y)
+                                > mSquaredTouchSlop) {
+                            mTaskbarActivityContext.startTaskbarUnstashHint(
+                                    /* animateForward = */ false);
+                            mCanceledUnstashHint = true;
+                        }
+
+                        int pointerIndex = ev.findPointerIndex(mActivePointerId);
+                        if (pointerIndex == INVALID_POINTER_ID) {
+                            break;
+                        }
+                        mLastPos.set(ev.getX(pointerIndex), ev.getY(pointerIndex));
+
+                        if (mIsTransientTaskbar) {
+                            float dY = mLastPos.y - mDownPos.y;
+                            boolean passedTaskbarNavThreshold = dY < 0
+                                    && Math.abs(dY) >= mTaskbarNavThreshold;
+
+                            if (!mHasPassedTaskbarNavThreshold && passedTaskbarNavThreshold) {
+                                mHasPassedTaskbarNavThreshold = true;
+                                mTaskbarActivityContext.onSwipeToUnstashTaskbar();
+                            }
+
+                            if (dY < 0) {
+                                dY = -OverScroll.dampedScroll(-dY, mTaskbarNavThresholdY);
+                                if (mTransitionCallback != null && !mIsTaskbarAllAppsOpen) {
+                                    mTransitionCallback.onActionMove(dY);
+                                }
+                            }
+                        }
+                        break;
+                    case MotionEvent.ACTION_UP:
+                    case MotionEvent.ACTION_CANCEL:
+                        if (!mIsTransientTaskbar && !mCanceledUnstashHint) {
+                            mTaskbarActivityContext.startTaskbarUnstashHint(
+                                    /* animateForward = */ false);
+                        }
+                        mTaskbarActivityContext.setAutohideSuspendFlag(
+                                FLAG_AUTOHIDE_SUSPEND_TOUCHING, false);
+                        if (mTransitionCallback != null) {
+                            mTransitionCallback.onActionEnd();
+                        }
+                        mHasPassedTaskbarNavThreshold = false;
+                        break;
+                }
+            }
+        }
+    }
+
+    private boolean isInArea(float x) {
+        float areaFromMiddle = mUnstashArea / 2.0f;
+        float distFromMiddle = Math.abs(mScreenWidth / 2.0f - x);
+        return distFromMiddle < areaFromMiddle;
+    }
+
+    private void onLongPressDetected(MotionEvent motionEvent) {
+        if (mTaskbarActivityContext != null
+                && isInArea(motionEvent.getRawX())
+                && !mIsTransientTaskbar) {
+            boolean taskBarPressed = mTaskbarActivityContext.onLongPressToUnstashTaskbar();
+            if (taskBarPressed) {
+                setActive(motionEvent);
+            }
+        }
+    }
+
+    /**
+     * Listen for hover events for the stashed taskbar.
+     *
+     * <p>When hovered over the stashed taskbar handle, show the unstash hint.
+     * <p>When the cursor is touching the bottom edge below the stashed taskbar, unstash it.
+     * <p>When the cursor is within a defined threshold of the screen's bottom edge outside of
+     * the stashed taskbar, unstash it.
+     */
+    @Override
+    public void onHoverEvent(MotionEvent ev) {
+        if (!ENABLE_CURSOR_HOVER_STATES.get() || mTaskbarActivityContext == null
+                || !mTaskbarActivityContext.isTaskbarStashed()) {
+            return;
+        }
+
+        if (mIsStashedTaskbarHovered) {
+            updateHoveredTaskbarState((int) ev.getX(), (int) ev.getY());
+        } else {
+            updateUnhoveredTaskbarState((int) ev.getX(), (int) ev.getY());
+        }
+    }
+
+    private void updateHoveredTaskbarState(int x, int y) {
+        DeviceProfile dp = mTaskbarActivityContext.getDeviceProfile();
+        mStashedTaskbarHandleBounds.set(
+                (dp.widthPx - (int) mUnstashArea) / 2,
+                dp.heightPx - dp.stashedTaskbarHeight,
+                (int) (((dp.widthPx - mUnstashArea) / 2) + mUnstashArea),
+                dp.heightPx);
+        mBottomEdgeBounds.set(mStashedTaskbarHandleBounds);
+        mBottomEdgeBounds.top = dp.heightPx - mStashedTaskbarBottomEdge;
+
+        if (mBottomEdgeBounds.contains(x, y)) {
+            // If hovering stashed taskbar and then hover screen bottom edge, unstash it.
+            mTaskbarActivityContext.onSwipeToUnstashTaskbar();
+            mIsStashedTaskbarHovered = false;
+        } else if (!mStashedTaskbarHandleBounds.contains(x, y)) {
+            // If exit hovering stashed taskbar, remove hint.
+            startStashedTaskbarHover(/* isHovered = */ false);
+        }
+    }
+
+    private void updateUnhoveredTaskbarState(int x, int y) {
+        DeviceProfile dp = mTaskbarActivityContext.getDeviceProfile();
+        mStashedTaskbarHandleBounds.set(
+                (dp.widthPx - (int) mUnstashArea) / 2,
+                dp.heightPx - dp.stashedTaskbarHeight,
+                (int) (((dp.widthPx - mUnstashArea) / 2) + mUnstashArea),
+                dp.heightPx);
+        mBottomEdgeBounds.set(
+                0,
+                dp.heightPx - mBottomScreenEdge,
+                dp.widthPx,
+                dp.heightPx);
+
+        if (mStashedTaskbarHandleBounds.contains(x, y)) {
+            // If enter hovering stashed taskbar, start hint.
+            startStashedTaskbarHover(/* isHovered = */ true);
+        } else if (mBottomEdgeBounds.contains(x, y)) {
+            // If hover screen's bottom edge not below the stashed taskbar, unstash it.
+            mTaskbarActivityContext.onSwipeToUnstashTaskbar();
+        }
+    }
+
+    private void startStashedTaskbarHover(boolean isHovered) {
+        mTaskbarActivityContext.startTaskbarUnstashHint(isHovered, /* forceUnstash = */ true);
+        mIsStashedTaskbarHovered = isHovered;
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java b/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java
index 5680170..1868463 100644
--- a/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java
+++ b/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java
@@ -19,12 +19,14 @@
 import static com.android.launcher3.Utilities.mapRange;
 import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
 import static com.android.launcher3.anim.Interpolators.LINEAR;
+import static com.android.quickstep.OverviewComponentObserver.startHomeIntentSafely;
 
 import android.animation.Animator;
 import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.Configuration;
+import android.content.res.Resources;
 import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.ColorFilter;
@@ -41,6 +43,7 @@
 import android.os.Bundle;
 import android.os.VibrationEffect;
 import android.os.Vibrator;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
 import android.view.View.AccessibilityDelegate;
@@ -52,19 +55,23 @@
 import androidx.annotation.Nullable;
 import androidx.core.graphics.ColorUtils;
 
+import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.InvariantDeviceProfile;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.anim.AnimatorPlaybackController;
+import com.android.launcher3.taskbar.TaskbarManager;
 import com.android.launcher3.util.Executors;
-import com.android.quickstep.AnimatedFloat;
 import com.android.quickstep.GestureState;
 import com.android.quickstep.TouchInteractionService.TISBinder;
+import com.android.quickstep.util.LottieAnimationColorUtils;
 import com.android.quickstep.util.TISBindHelper;
 
 import com.airbnb.lottie.LottieAnimationView;
 
 import java.net.URISyntaxException;
+import java.util.Map;
 
 /**
  * A page shows after SUW flow to hint users to swipe up from the bottom of the screen to go home
@@ -77,13 +84,24 @@
             "#Intent;action=com.android.settings.SEARCH_RESULT_TRAMPOLINE;S.:settings:fragment_args_key=gesture_system_navigation_input_summary;S.:settings:show_fragment=com.android.settings.gestures.SystemNavigationGestureSettings;end";
     private static final String EXTRA_ACCENT_COLOR_DARK_MODE = "suwColorAccentDark";
     private static final String EXTRA_ACCENT_COLOR_LIGHT_MODE = "suwColorAccentLight";
+    private static final String EXTRA_DEVICE_NAME = "suwDeviceName";
+
+    private static final String LOTTIE_PRIMARY_COLOR_TOKEN = ".primary";
+    private static final String LOTTIE_TERTIARY_COLOR_TOKEN = ".tertiary";
 
     private static final float HINT_BOTTOM_FACTOR = 1 - .94f;
 
     private static final int MAX_SWIPE_DURATION = 350;
 
+    private static final float ANIMATION_PAUSE_ALPHA_THRESHOLD = 0.1f;
+
+    private final Rect mTempSettingsBounds = new Rect();
+    private final Rect mTempInclusionBounds = new Rect();
+    private final Rect mTempExclusionBounds = new Rect();
+
     private TISBindHelper mTISBindHelper;
     private TISBinder mBinder;
+    @Nullable private TaskbarManager mTaskbarManager = null;
 
     private final AnimatedFloat mSwipeProgress = new AnimatedFloat(this::onSwipeProgressUpdate);
     private BgDrawable mBackground;
@@ -104,9 +122,11 @@
                 | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                 | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
 
-        int mode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
+        Resources resources = getResources();
+        int mode = resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
         boolean isDarkTheme = mode == Configuration.UI_MODE_NIGHT_YES;
-        int accentColor = getIntent().getIntExtra(
+        Intent intent = getIntent();
+        int accentColor = intent.getIntExtra(
                 isDarkTheme ? EXTRA_ACCENT_COLOR_DARK_MODE : EXTRA_ACCENT_COLOR_LIGHT_MODE,
                 isDarkTheme ? Color.WHITE : Color.BLACK);
 
@@ -115,92 +135,154 @@
         mBackground = new BgDrawable(this);
         findViewById(R.id.root_view).setBackground(mBackground);
         mContentView = findViewById(R.id.content_view);
-        mSwipeUpShift = getResources().getDimension(R.dimen.allset_swipe_up_shift);
+        mSwipeUpShift = resources.getDimension(R.dimen.allset_swipe_up_shift);
 
-        boolean isTablet = InvariantDeviceProfile.INSTANCE.get(getApplicationContext())
-                .getDeviceProfile(this).isTablet;
         TextView subtitle = findViewById(R.id.subtitle);
-        subtitle.setText(isTablet
-                ? R.string.allset_description_tablet : R.string.allset_description);
+        String suwDeviceName = intent.getStringExtra(EXTRA_DEVICE_NAME);
+        subtitle.setText(getString(
+                R.string.allset_description_generic,
+                !TextUtils.isEmpty(suwDeviceName)
+                        ? suwDeviceName : getString(R.string.default_device_name)));
 
-        TextView tv = findViewById(R.id.navigation_settings);
-        tv.setTextColor(accentColor);
-        tv.setOnClickListener(v -> {
+        TextView settings = findViewById(R.id.navigation_settings);
+        settings.setTextColor(accentColor);
+        settings.setOnClickListener(v -> {
             try {
                 startActivityForResult(
                         Intent.parseUri(URI_SYSTEM_NAVIGATION_SETTING, 0), 0);
             } catch (URISyntaxException e) {
                 Log.e(LOG_TAG, "Failed to parse system nav settings intent", e);
             }
-            finish();
         });
 
-        findViewById(R.id.hint).setAccessibilityDelegate(new SkipButtonAccessibilityDelegate());
+        TextView hint = findViewById(R.id.hint);
+        DeviceProfile dp = InvariantDeviceProfile.INSTANCE.get(this).getDeviceProfile(this);
+        if (!dp.isGestureMode) {
+            hint.setText(R.string.allset_button_hint);
+        }
+        hint.setAccessibilityDelegate(new SkipButtonAccessibilityDelegate());
+
+        View textContent = findViewById(R.id.text_content_view);
+        textContent.addOnLayoutChangeListener(
+                (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
+                    mTempSettingsBounds.set(
+                            settings.getLeft(),
+                            settings.getTop(),
+                            settings.getRight(),
+                            settings.getBottom());
+                    mTempInclusionBounds.set(
+                            0,
+                            // Do not allow overlapping with the subtitle text
+                            subtitle.getBottom(),
+                            textContent.getWidth(),
+                            textContent.getHeight());
+                    mTempExclusionBounds.set(
+                            hint.getLeft(),
+                            hint.getTop(),
+                            hint.getRight(),
+                            hint.getBottom());
+
+                    Utilities.translateOverlappingView(
+                            settings,
+                            mTempSettingsBounds,
+                            mTempInclusionBounds,
+                            mTempExclusionBounds,
+                            Utilities.TRANSLATE_UP);
+                });
+
         mTISBindHelper = new TISBindHelper(this, this::onTISConnected);
 
         mVibrator = getSystemService(Vibrator.class);
         mAnimatedBackground = findViewById(R.id.animated_background);
+        // There's a bug in the currently used external Lottie library (v5.2.0), and it doesn't load
+        // the correct animation from the raw resources when configuration changes, so we need to
+        // manually load the resource and pass it to Lottie.
+        mAnimatedBackground.setAnimation(resources.openRawResource(R.raw.all_set_page_bg),
+                null);
+
+        LottieAnimationColorUtils.updateColors(
+                mAnimatedBackground,
+                Map.of(LOTTIE_PRIMARY_COLOR_TOKEN, R.color.all_set_bg_primary,
+                        LOTTIE_TERTIARY_COLOR_TOKEN, R.color.all_set_bg_tertiary),
+                getTheme());
+
         startBackgroundAnimation();
     }
 
     private void runOnUiHelperThread(Runnable runnable) {
+        if (!isResumed()
+                || getContentViewAlphaForSwipeProgress() <= ANIMATION_PAUSE_ALPHA_THRESHOLD) {
+            return;
+        }
         Executors.UI_HELPER_EXECUTOR.execute(runnable);
     }
 
     private void startBackgroundAnimation() {
-        if (Utilities.ATLEAST_S && mVibrator != null && mVibrator.areAllPrimitivesSupported(
-                VibrationEffect.Composition.PRIMITIVE_THUD)) {
-            if (mBackgroundAnimatorListener == null) {
-                mBackgroundAnimatorListener =
-                        new Animator.AnimatorListener() {
-                            @Override
-                            public void onAnimationStart(Animator animation) {
-                                runOnUiHelperThread(() -> mVibrator.vibrate(getVibrationEffect()));
-                            }
-
-                            @Override
-                            public void onAnimationRepeat(Animator animation) {
-                                runOnUiHelperThread(() -> mVibrator.vibrate(getVibrationEffect()));
-                            }
-
-                            @Override
-                            public void onAnimationEnd(Animator animation) {
-                                runOnUiHelperThread(mVibrator::cancel);
-                            }
-
-                            @Override
-                            public void onAnimationCancel(Animator animation) {
-                                runOnUiHelperThread(mVibrator::cancel);
-                            }
-                        };
-            }
-            mAnimatedBackground.addAnimatorListener(mBackgroundAnimatorListener);
+        if (!Utilities.ATLEAST_S || mVibrator == null) {
+            return;
         }
+        boolean supportsThud = mVibrator.areAllPrimitivesSupported(
+                VibrationEffect.Composition.PRIMITIVE_THUD);
+
+        if (!supportsThud && !mVibrator.areAllPrimitivesSupported(
+                VibrationEffect.Composition.PRIMITIVE_TICK)) {
+            return;
+        }
+        if (mBackgroundAnimatorListener == null) {
+            VibrationEffect vibrationEffect = VibrationEffect.startComposition()
+                    .addPrimitive(supportsThud
+                                    ? VibrationEffect.Composition.PRIMITIVE_THUD
+                                    : VibrationEffect.Composition.PRIMITIVE_TICK,
+                            /* scale= */ 1.0f,
+                            /* delay= */ 50)
+                    .compose();
+
+            mBackgroundAnimatorListener =
+                    new Animator.AnimatorListener() {
+                        @Override
+                        public void onAnimationStart(Animator animation) {
+                            runOnUiHelperThread(() -> mVibrator.vibrate(vibrationEffect));
+                        }
+
+                        @Override
+                        public void onAnimationRepeat(Animator animation) {
+                            runOnUiHelperThread(() -> mVibrator.vibrate(vibrationEffect));
+                        }
+
+                        @Override
+                        public void onAnimationEnd(Animator animation) {
+                            runOnUiHelperThread(mVibrator::cancel);
+                        }
+
+                        @Override
+                        public void onAnimationCancel(Animator animation) {
+                            runOnUiHelperThread(mVibrator::cancel);
+                        }
+                    };
+        }
+        mAnimatedBackground.addAnimatorListener(mBackgroundAnimatorListener);
         mAnimatedBackground.playAnimation();
     }
 
-    /**
-     * Sets up the vibration effect for the next round of animation. The parameters vary between
-     * different illustrations.
-     */
-    private VibrationEffect getVibrationEffect() {
-        return VibrationEffect.startComposition()
-                .addPrimitive(VibrationEffect.Composition.PRIMITIVE_THUD, 1.0f, 50)
-                .compose();
+    private void setSetupUIVisible(boolean visible) {
+        if (mBinder == null || mTaskbarManager == null) return;
+        mTaskbarManager.setSetupUIVisible(visible);
     }
 
     @Override
     protected void onResume() {
         super.onResume();
+        maybeResumeOrPauseBackgroundAnimation();
         if (mBinder != null) {
-            mBinder.getTaskbarManager().setSetupUIVisible(true);
+            setSetupUIVisible(true);
             mBinder.setSwipeUpProxy(this::createSwipeUpProxy);
         }
     }
 
     private void onTISConnected(TISBinder binder) {
         mBinder = binder;
-        mBinder.getTaskbarManager().setSetupUIVisible(isResumed());
+        mTaskbarManager = mBinder.getTaskbarManager();
+        setSetupUIVisible(isResumed());
         mBinder.setSwipeUpProxy(isResumed() ? this::createSwipeUpProxy : null);
         mBinder.setOverviewTargetChangeListener(mBinder::preloadOverviewForSUWAllSet);
         mBinder.preloadOverviewForSUWAllSet();
@@ -210,19 +292,33 @@
     protected void onPause() {
         super.onPause();
         clearBinderOverride();
+        maybeResumeOrPauseBackgroundAnimation();
         if (mSwipeProgress.value >= 1) {
             finishAndRemoveTask();
+            dispatchLauncherAnimStartEnd();
         }
     }
 
     private void clearBinderOverride() {
         if (mBinder != null) {
-            mBinder.getTaskbarManager().setSetupUIVisible(false);
+            setSetupUIVisible(false);
             mBinder.setSwipeUpProxy(null);
             mBinder.setOverviewTargetChangeListener(null);
         }
     }
 
+    /**
+     * Should be called when we have successfully reached Launcher, so we dispatch to animation
+     * listeners to ensure the state matches the visual animation that just occurred.
+      */
+    private void dispatchLauncherAnimStartEnd() {
+        if (mLauncherStartAnim != null) {
+            mLauncherStartAnim.dispatchOnStart();
+            mLauncherStartAnim.dispatchOnEnd();
+            mLauncherStartAnim = null;
+        }
+    }
+
     @Override
     protected void onDestroy() {
         super.onDestroy();
@@ -231,12 +327,10 @@
         if (mBackgroundAnimatorListener != null) {
             mAnimatedBackground.removeAnimatorListener(mBackgroundAnimatorListener);
         }
+        dispatchLauncherAnimStartEnd();
     }
 
     private AnimatedFloat createSwipeUpProxy(GestureState state) {
-        if (!state.getHomeIntent().getComponent().getPackageName().equals(getPackageName())) {
-            return null;
-        }
         if (state.getRunningTaskId() != getTaskId()) {
             return null;
         }
@@ -244,27 +338,36 @@
         return mSwipeProgress;
     }
 
+    private float getContentViewAlphaForSwipeProgress() {
+        return Utilities.mapBoundToRange(
+                mSwipeProgress.value, 0, HINT_BOTTOM_FACTOR, 1, 0, LINEAR);
+    }
+
+    private void maybeResumeOrPauseBackgroundAnimation() {
+        boolean shouldPlayAnimation =
+                getContentViewAlphaForSwipeProgress() > ANIMATION_PAUSE_ALPHA_THRESHOLD
+                        && isResumed();
+        if (mAnimatedBackground.isAnimating() && !shouldPlayAnimation) {
+            mAnimatedBackground.pauseAnimation();
+        } else if (!mAnimatedBackground.isAnimating() && shouldPlayAnimation) {
+            mAnimatedBackground.resumeAnimation();
+        }
+    }
+
     private void onSwipeProgressUpdate() {
         mBackground.setProgress(mSwipeProgress.value);
-        float alpha = Utilities.mapBoundToRange(
-                mSwipeProgress.value, 0, HINT_BOTTOM_FACTOR, 1, 0, LINEAR);
+        float alpha = getContentViewAlphaForSwipeProgress();
         mContentView.setAlpha(alpha);
         mContentView.setTranslationY((alpha - 1) * mSwipeUpShift);
 
-        if (mLauncherStartAnim == null) {
-            mLauncherStartAnim = mBinder.getTaskbarManager().createLauncherStartFromSuwAnim(
-                    MAX_SWIPE_DURATION);
+        if (mLauncherStartAnim == null && mTaskbarManager != null) {
+            mLauncherStartAnim = mTaskbarManager.createLauncherStartFromSuwAnim(MAX_SWIPE_DURATION);
         }
         if (mLauncherStartAnim != null) {
             mLauncherStartAnim.setPlayFraction(Utilities.mapBoundToRange(
                     mSwipeProgress.value, 0, 1, 0, 1, FAST_OUT_SLOW_IN));
         }
-
-        if (alpha == 0f) {
-            mAnimatedBackground.pauseAnimation();
-        } else if (!mAnimatedBackground.isAnimating()) {
-            mAnimatedBackground.resumeAnimation();
-        }
+        maybeResumeOrPauseBackgroundAnimation();
     }
 
     /**
@@ -284,7 +387,7 @@
         @Override
         public boolean performAccessibilityAction(View host, int action, Bundle args) {
             if (action == AccessibilityAction.ACTION_CLICK.getId()) {
-                startActivity(Utilities.createHomeIntent());
+                startHomeIntentSafely(AllSetActivity.this, null);
                 finish();
                 return true;
             }
diff --git a/quickstep/src/com/android/quickstep/interaction/AnimatedTaskView.java b/quickstep/src/com/android/quickstep/interaction/AnimatedTaskView.java
index 53ad138..742b0fc 100644
--- a/quickstep/src/com/android/quickstep/interaction/AnimatedTaskView.java
+++ b/quickstep/src/com/android/quickstep/interaction/AnimatedTaskView.java
@@ -15,6 +15,8 @@
  */
 package com.android.quickstep.interaction;
 
+import static com.android.launcher3.config.FeatureFlags.ENABLE_NEW_GESTURE_NAV_TUTORIAL;
+
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.AnimatorSet;
@@ -30,7 +32,6 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.cardview.widget.CardView;
 import androidx.constraintlayout.widget.ConstraintLayout;
 
 import com.android.launcher3.R;
@@ -46,25 +47,24 @@
 public class AnimatedTaskView extends ConstraintLayout {
 
     private View mFullTaskView;
-    private CardView mTopTaskView;
-    private CardView mBottomTaskView;
+    private View mTopTaskView;
+    private View mBottomTaskView;
 
     private ViewOutlineProvider mTaskViewOutlineProvider = null;
     private final Rect mTaskViewAnimatedRect = new Rect();
     private float mTaskViewAnimatedRadius;
 
     public AnimatedTaskView(@NonNull Context context) {
-        super(context);
+        this(context, null);
     }
 
-    public AnimatedTaskView(@NonNull Context context,
-            @Nullable AttributeSet attrs) {
-        super(context, attrs);
+    public AnimatedTaskView(@NonNull Context context, @Nullable AttributeSet attrs) {
+        this(context, attrs, 0);
     }
 
     public AnimatedTaskView(
             @NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
+        this(context, attrs, defStyleAttr, 0);
     }
 
     public AnimatedTaskView(
@@ -113,17 +113,7 @@
             @Override
             public void onAnimationStart(Animator animation) {
                 super.onAnimationStart(animation);
-
-                mTaskViewAnimatedRect.set(outlineStartRect);
-                mTaskViewAnimatedRadius = outlineStartRadius;
-
-                mFullTaskView.setClipToOutline(true);
-                mFullTaskView.setOutlineProvider(new ViewOutlineProvider() {
-                    @Override
-                    public void getOutline(View view, Outline outline) {
-                        outline.setRoundRect(mTaskViewAnimatedRect, mTaskViewAnimatedRadius);
-                    }
-                });
+                addAnimatedOutlineProvider(mFullTaskView, outlineStartRect, outlineStartRadius);
             }
 
             @Override
@@ -185,8 +175,11 @@
 
     void setFakeTaskViewFillColor(@ColorInt int colorResId) {
         mFullTaskView.setBackgroundColor(colorResId);
-        mTopTaskView.setCardBackgroundColor(colorResId);
-        mBottomTaskView.setCardBackgroundColor(colorResId);
+
+        if (ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()){
+            mTopTaskView.getBackground().setTint(colorResId);
+            mBottomTaskView.getBackground().setTint(colorResId);
+        }
     }
 
     @Override
@@ -199,4 +192,17 @@
         mTaskViewOutlineProvider = provider;
         mFullTaskView.setOutlineProvider(mTaskViewOutlineProvider);
     }
+
+    private void addAnimatedOutlineProvider(View view,
+            Rect outlineStartRect, float outlineStartRadius){
+        mTaskViewAnimatedRect.set(outlineStartRect);
+        mTaskViewAnimatedRadius = outlineStartRadius;
+        view.setClipToOutline(true);
+        view.setOutlineProvider(new ViewOutlineProvider() {
+            @Override
+            public void getOutline(View view, Outline outline) {
+                outline.setRoundRect(mTaskViewAnimatedRect, mTaskViewAnimatedRadius);
+            }
+        });
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/interaction/AnimatedTaskbarView.java b/quickstep/src/com/android/quickstep/interaction/AnimatedTaskbarView.java
index e8cc45b..d706711 100644
--- a/quickstep/src/com/android/quickstep/interaction/AnimatedTaskbarView.java
+++ b/quickstep/src/com/android/quickstep/interaction/AnimatedTaskbarView.java
@@ -43,12 +43,12 @@
 
     private View mBackground;
     private View mIconContainer;
+    private View mAllAppsButton;
     private View mIcon1;
     private View mIcon2;
     private View mIcon3;
     private View mIcon4;
     private View mIcon5;
-    private View mIcon6;
 
     @Nullable private Animator mRunningAnimator;
 
@@ -78,12 +78,12 @@
 
         mBackground = findViewById(R.id.taskbar_background);
         mIconContainer = findViewById(R.id.icon_container);
+        mAllAppsButton = findViewById(R.id.taskbar_all_apps);
         mIcon1 = findViewById(R.id.taskbar_icon_1);
         mIcon2 = findViewById(R.id.taskbar_icon_2);
         mIcon3 = findViewById(R.id.taskbar_icon_3);
         mIcon4 = findViewById(R.id.taskbar_icon_4);
         mIcon5 = findViewById(R.id.taskbar_icon_5);
-        mIcon6 = findViewById(R.id.taskbar_icon_6);
     }
 
     /**
@@ -92,22 +92,20 @@
     public void animateDisappearanceToHotseat(ViewGroup hotseat) {
         ArrayList<Animator> animators = new ArrayList<>();
         int hotseatTop = hotseat.getTop();
+        int hotseatLeft = hotseat.getLeft();
 
-        animators.add(ObjectAnimator.ofFloat(
-                mBackground, View.TRANSLATION_Y, 0, mBackground.getHeight()));
         animators.add(ObjectAnimator.ofFloat(mBackground, View.ALPHA, 1f, 0f));
+        animators.add(ObjectAnimator.ofFloat(mAllAppsButton, View.ALPHA, 1f, 0f));
         animators.add(createIconDisappearanceToHotseatAnimator(
-                mIcon1, hotseat.findViewById(R.id.hotseat_icon_1), hotseatTop));
+                mIcon1, hotseat.findViewById(R.id.hotseat_icon_1), hotseatTop, hotseatLeft));
         animators.add(createIconDisappearanceToHotseatAnimator(
-                mIcon2, hotseat.findViewById(R.id.hotseat_icon_2), hotseatTop));
+                mIcon2, hotseat.findViewById(R.id.hotseat_icon_2), hotseatTop, hotseatLeft));
         animators.add(createIconDisappearanceToHotseatAnimator(
-                mIcon3, hotseat.findViewById(R.id.hotseat_icon_3), hotseatTop));
+                mIcon3, hotseat.findViewById(R.id.hotseat_icon_3), hotseatTop, hotseatLeft));
         animators.add(createIconDisappearanceToHotseatAnimator(
-                mIcon4, hotseat.findViewById(R.id.hotseat_icon_4), hotseatTop));
+                mIcon4, hotseat.findViewById(R.id.hotseat_icon_4), hotseatTop, hotseatLeft));
         animators.add(createIconDisappearanceToHotseatAnimator(
-                mIcon5, hotseat.findViewById(R.id.hotseat_icon_5), hotseatTop));
-        animators.add(createIconDisappearanceToHotseatAnimator(
-                mIcon6, hotseat.findViewById(R.id.hotseat_icon_6), hotseatTop));
+                mIcon5, hotseat.findViewById(R.id.hotseat_icon_5), hotseatTop, hotseatLeft));
 
         AnimatorSet animatorSet = new AnimatorSet();
 
@@ -135,22 +133,20 @@
     public void animateAppearanceFromHotseat(ViewGroup hotseat) {
         ArrayList<Animator> animators = new ArrayList<>();
         int hotseatTop = hotseat.getTop();
+        int hotseatLeft = hotseat.getLeft();
 
-        animators.add(ObjectAnimator.ofFloat(
-                mBackground, View.TRANSLATION_Y, mBackground.getHeight(), 0));
         animators.add(ObjectAnimator.ofFloat(mBackground, View.ALPHA, 0f, 1f));
+        animators.add(ObjectAnimator.ofFloat(mAllAppsButton, View.ALPHA, 0f, 1f));
         animators.add(createIconAppearanceFromHotseatAnimator(
-                mIcon1, hotseat.findViewById(R.id.hotseat_icon_1), hotseatTop));
+                mIcon1, hotseat.findViewById(R.id.hotseat_icon_1), hotseatTop, hotseatLeft));
         animators.add(createIconAppearanceFromHotseatAnimator(
-                mIcon2, hotseat.findViewById(R.id.hotseat_icon_2), hotseatTop));
+                mIcon2, hotseat.findViewById(R.id.hotseat_icon_2), hotseatTop, hotseatLeft));
         animators.add(createIconAppearanceFromHotseatAnimator(
-                mIcon3, hotseat.findViewById(R.id.hotseat_icon_3), hotseatTop));
+                mIcon3, hotseat.findViewById(R.id.hotseat_icon_3), hotseatTop, hotseatLeft));
         animators.add(createIconAppearanceFromHotseatAnimator(
-                mIcon4, hotseat.findViewById(R.id.hotseat_icon_4), hotseatTop));
+                mIcon4, hotseat.findViewById(R.id.hotseat_icon_4), hotseatTop, hotseatLeft));
         animators.add(createIconAppearanceFromHotseatAnimator(
-                mIcon5, hotseat.findViewById(R.id.hotseat_icon_5), hotseatTop));
-        animators.add(createIconAppearanceFromHotseatAnimator(
-                mIcon6, hotseat.findViewById(R.id.hotseat_icon_6), hotseatTop));
+                mIcon5, hotseat.findViewById(R.id.hotseat_icon_5), hotseatTop, hotseatLeft));
 
         AnimatorSet animatorSet = new AnimatorSet();
 
@@ -166,98 +162,6 @@
         start(animatorSet);
     }
 
-    /**
-     * Animates this fake taskbar's disappearance to the bottom of the screen.
-     */
-    public void animateDisappearanceToBottom() {
-        ArrayList<Animator> animators = new ArrayList<>();
-
-        animators.add(ObjectAnimator.ofFloat(
-                mBackground, View.TRANSLATION_Y, 0, mBackground.getHeight()));
-        animators.add(ObjectAnimator.ofFloat(mBackground, View.ALPHA, 1f, 0f));
-        animators.add(ObjectAnimator.ofFloat(mIconContainer, View.SCALE_X, 1f, 0f));
-        animators.add(ObjectAnimator.ofFloat(mIconContainer, View.SCALE_Y, 1f, 0f));
-
-        initializeIconContainerPivot();
-
-        AnimatorSet animatorSet = new AnimatorSet();
-
-        animatorSet.playTogether(animators);
-        animatorSet.addListener(new AnimatorListenerAdapter() {
-            @Override
-            public void onAnimationEnd(Animator animation) {
-                super.onAnimationEnd(animation);
-                setVisibility(INVISIBLE);
-                resetIconContainerPivot();
-            }
-
-            @Override
-            public void onAnimationCancel(Animator animation) {
-                super.onAnimationCancel(animation);
-                resetIconContainerPivot();
-            }
-
-            @Override
-            public void onAnimationStart(Animator animation) {
-                super.onAnimationStart(animation);
-                setVisibility(VISIBLE);
-            }
-        });
-
-        start(animatorSet);
-    }
-
-    /**
-     * Animates this fake taskbar's appearance from the bottom of the screen.
-     */
-    public void animateAppearanceFromBottom() {
-        ArrayList<Animator> animators = new ArrayList<>();
-
-        animators.add(ObjectAnimator.ofFloat(
-                mBackground, View.TRANSLATION_Y, mBackground.getHeight(), 0));
-        animators.add(ObjectAnimator.ofFloat(mBackground, View.ALPHA, 0f, 1f));
-        animators.add(ObjectAnimator.ofFloat(mIconContainer, View.SCALE_X, 0f, 1f));
-        animators.add(ObjectAnimator.ofFloat(mIconContainer, View.SCALE_Y, 0f, 1f));
-
-        initializeIconContainerPivot();
-
-        AnimatorSet animatorSet = new AnimatorSet();
-
-        animatorSet.playTogether(animators);
-        animatorSet.addListener(new AnimatorListenerAdapter() {
-            @Override
-            public void onAnimationStart(Animator animation) {
-                super.onAnimationStart(animation);
-                setVisibility(VISIBLE);
-            }
-
-            @Override
-            public void onAnimationEnd(Animator animation) {
-                super.onAnimationEnd(animation);
-                resetIconContainerPivot();
-            }
-
-            @Override
-            public void onAnimationCancel(Animator animation) {
-                super.onAnimationCancel(animation);
-                resetIconContainerPivot();
-            }
-        });
-
-        start(animatorSet);
-    }
-
-    private void initializeIconContainerPivot() {
-        mIconContainer.setPivotX(getWidth() / 2f);
-        mIconContainer.setPivotY(getHeight() * 0.8f);
-    }
-
-    private void resetIconContainerPivot() {
-        mIconContainer.resetPivot();
-        mIconContainer.setScaleX(1f);
-        mIconContainer.setScaleY(1f);
-    }
-
     private void start(Animator animator) {
         if (mRunningAnimator != null) {
             mRunningAnimator.cancel();
@@ -287,7 +191,7 @@
     }
 
     private Animator createIconDisappearanceToHotseatAnimator(
-            View taskbarIcon, View hotseatIcon, int hotseatTop) {
+            View taskbarIcon, View hotseatIcon, int hotseatTop, int hotseatLeft) {
         ArrayList<Animator> animators = new ArrayList<>();
 
         animators.add(ObjectAnimator.ofFloat(
@@ -296,7 +200,10 @@
                 0,
                 (hotseatTop + hotseatIcon.getTop()) - (getTop() + taskbarIcon.getTop())));
         animators.add(ObjectAnimator.ofFloat(
-                taskbarIcon, View.TRANSLATION_X, 0, hotseatIcon.getLeft() - taskbarIcon.getLeft()));
+                taskbarIcon,
+                View.TRANSLATION_X,
+                0,
+                (hotseatLeft + hotseatIcon.getLeft()) - (getLeft() + taskbarIcon.getLeft())));
         animators.add(ObjectAnimator.ofFloat(
                 taskbarIcon,
                 View.SCALE_X,
@@ -330,7 +237,7 @@
     }
 
     private Animator createIconAppearanceFromHotseatAnimator(
-            View taskbarIcon, View hotseatIcon, int hotseatTop) {
+            View taskbarIcon, View hotseatIcon, int hotseatTop, int hotseatLeft) {
         ArrayList<Animator> animators = new ArrayList<>();
 
         animators.add(ObjectAnimator.ofFloat(
@@ -339,7 +246,10 @@
                 (hotseatTop + hotseatIcon.getTop()) - (getTop() + taskbarIcon.getTop()),
                 0));
         animators.add(ObjectAnimator.ofFloat(
-                taskbarIcon, View.TRANSLATION_X, hotseatIcon.getLeft() - taskbarIcon.getLeft(), 0));
+                taskbarIcon,
+                View.TRANSLATION_X,
+                (hotseatLeft + hotseatIcon.getLeft()) - (getLeft() + taskbarIcon.getLeft()),
+                0));
         animators.add(ObjectAnimator.ofFloat(
                 taskbarIcon,
                 View.SCALE_X,
diff --git a/quickstep/src/com/android/quickstep/interaction/AssistantGestureTutorialController.java b/quickstep/src/com/android/quickstep/interaction/AssistantGestureTutorialController.java
deleted file mode 100644
index 2f3a912..0000000
--- a/quickstep/src/com/android/quickstep/interaction/AssistantGestureTutorialController.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2020 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.quickstep.interaction;
-
-import static com.android.quickstep.interaction.TutorialController.TutorialType.ASSISTANT_COMPLETE;
-
-import android.graphics.PointF;
-
-import com.android.launcher3.R;
-import com.android.quickstep.interaction.EdgeBackGestureHandler.BackGestureResult;
-import com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult;
-
-/** A {@link TutorialController} for the Assistant tutorial. */
-final class AssistantGestureTutorialController extends TutorialController {
-
-    AssistantGestureTutorialController(AssistantGestureTutorialFragment fragment,
-                                       TutorialType tutorialType) {
-        super(fragment, tutorialType);
-    }
-
-    @Override
-    public void onBackGestureAttempted(BackGestureResult result) {
-        switch (mTutorialType) {
-            case ASSISTANT:
-                switch (result) {
-                    case BACK_COMPLETED_FROM_LEFT:
-                    case BACK_COMPLETED_FROM_RIGHT:
-                    case BACK_CANCELLED_FROM_LEFT:
-                    case BACK_CANCELLED_FROM_RIGHT:
-                        showFeedback(R.string.assistant_gesture_feedback_swipe_too_far_from_corner);
-                        break;
-                }
-                break;
-            case ASSISTANT_COMPLETE:
-                if (result == BackGestureResult.BACK_COMPLETED_FROM_LEFT
-                        || result == BackGestureResult.BACK_COMPLETED_FROM_RIGHT) {
-                    mTutorialFragment.closeTutorial();
-                }
-                break;
-        }
-    }
-
-
-    @Override
-    public void onNavBarGestureAttempted(NavBarGestureResult result, PointF finalVelocity) {
-        switch (mTutorialType) {
-            case ASSISTANT:
-                switch (result) {
-                    case HOME_GESTURE_COMPLETED:
-                    case OVERVIEW_GESTURE_COMPLETED:
-                    case HOME_NOT_STARTED_TOO_FAR_FROM_EDGE:
-                    case OVERVIEW_NOT_STARTED_TOO_FAR_FROM_EDGE:
-                    case HOME_OR_OVERVIEW_NOT_STARTED_WRONG_SWIPE_DIRECTION:
-                    case HOME_OR_OVERVIEW_CANCELLED:
-                        showFeedback(R.string.assistant_gesture_feedback_swipe_too_far_from_corner);
-                        break;
-                    case ASSISTANT_COMPLETED:
-                        showRippleEffect(null);
-                        showFeedback(R.string.assistant_gesture_tutorial_playground_subtitle);
-                        break;
-                    case ASSISTANT_NOT_STARTED_BAD_ANGLE:
-                        showFeedback(R.string.assistant_gesture_feedback_swipe_not_diagonal);
-                        break;
-                    case ASSISTANT_NOT_STARTED_SWIPE_TOO_SHORT:
-                        showFeedback(R.string.assistant_gesture_feedback_swipe_not_long_enough);
-                        break;
-                }
-                break;
-            case ASSISTANT_COMPLETE:
-                if (result == NavBarGestureResult.HOME_GESTURE_COMPLETED) {
-                    mTutorialFragment.closeTutorial();
-                }
-                break;
-        }
-    }
-
-    @Override
-    public void setAssistantProgress(float progress) {
-        // TODO: Create an animation.
-    }
-}
diff --git a/quickstep/src/com/android/quickstep/interaction/AssistantGestureTutorialFragment.java b/quickstep/src/com/android/quickstep/interaction/AssistantGestureTutorialFragment.java
deleted file mode 100644
index f440638..0000000
--- a/quickstep/src/com/android/quickstep/interaction/AssistantGestureTutorialFragment.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2020 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.quickstep.interaction;
-
-import android.view.MotionEvent;
-import android.view.View;
-
-import androidx.annotation.NonNull;
-
-import com.android.launcher3.logging.StatsLogManager;
-import com.android.quickstep.interaction.TutorialController.TutorialType;
-
-/** Shows the Home gesture interactive tutorial. */
-public class AssistantGestureTutorialFragment extends TutorialFragment {
-
-    public AssistantGestureTutorialFragment() {}
-
-    @Override
-    TutorialController createController(TutorialType type) {
-        return new AssistantGestureTutorialController(this, type);
-    }
-
-    @Override
-    Class<? extends TutorialController> getControllerClass() {
-        return AssistantGestureTutorialController.class;
-    }
-
-    @Override
-    public boolean onTouch(View view, MotionEvent motionEvent) {
-        if (motionEvent.getAction() == MotionEvent.ACTION_DOWN && mTutorialController != null) {
-            mTutorialController.setRippleHotspot(motionEvent.getX(), motionEvent.getY());
-        }
-        return super.onTouch(view, motionEvent);
-    }
-
-    @Override
-    void logTutorialStepShown(@NonNull StatsLogManager statsLogManager) {
-        // No-Op: tutorial step not currently shown to users
-    }
-
-    @Override
-    void logTutorialStepCompleted(@NonNull StatsLogManager statsLogManager) {
-        // No-Op: tutorial step not currently shown to users
-    }
-}
diff --git a/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialController.java b/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialController.java
index 35d9f22..54c441b 100644
--- a/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialController.java
+++ b/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialController.java
@@ -15,26 +15,53 @@
  */
 package com.android.quickstep.interaction;
 
+import static com.android.launcher3.config.FeatureFlags.ENABLE_NEW_GESTURE_NAV_TUTORIAL;
 import static com.android.quickstep.interaction.TutorialController.TutorialType.BACK_NAVIGATION;
 import static com.android.quickstep.interaction.TutorialController.TutorialType.BACK_NAVIGATION_COMPLETE;
 
 import android.annotation.LayoutRes;
 import android.graphics.PointF;
+import android.view.View;
 
 import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.Interpolators;
 import com.android.quickstep.interaction.EdgeBackGestureHandler.BackGestureResult;
 import com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult;
+import com.android.quickstep.util.LottieAnimationColorUtils;
+
+import java.util.Map;
 
 /** A {@link TutorialController} for the Back tutorial. */
 final class BackGestureTutorialController extends TutorialController {
+    private static final float Y_TRANSLATION_SMOOTHENING_FACTOR = .2f;
+    private static final float EXITING_APP_MIN_SIZE_PERCENTAGE = .8f;
 
     BackGestureTutorialController(BackGestureTutorialFragment fragment, TutorialType tutorialType) {
         super(fragment, tutorialType);
+        // Set the Lottie animation colors specifically for the Back gesture
+        if (ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) {
+            LottieAnimationColorUtils.updateColors(
+                    mAnimatedGestureDemonstration,
+                    Map.of(".onSurfaceBack", fragment.mRootView.mColorOnSurfaceBack,
+                            ".surfaceBack", fragment.mRootView.mColorSurfaceBack,
+                            ".secondaryBack", fragment.mRootView.mColorSecondaryBack));
+
+            LottieAnimationColorUtils.updateColors(
+                    mCheckmarkAnimation,
+                    Map.of(".checkmark",
+                            Utilities.isDarkTheme(mContext)
+                                    ? fragment.mRootView.mColorOnSurfaceBack
+                                    : fragment.mRootView.mColorSecondaryBack,
+                            ".checkmarkBackground", fragment.mRootView.mColorSurfaceBack));
+        }
     }
 
     @Override
     public int getIntroductionTitle() {
-        return R.string.back_gesture_intro_title;
+        return ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()
+                ? R.string.back_gesture_tutorial_title
+                : R.string.back_gesture_intro_title;
     }
 
     @Override
@@ -55,22 +82,67 @@
     }
 
     @Override
+    public int getTitleTextAppearance() {
+        return R.style.TextAppearance_GestureTutorial_MainTitle_Back;
+    }
+
+    @Override
+    public int getSuccessTitleTextAppearance() {
+        return R.style.TextAppearance_GestureTutorial_MainTitle_Success_Back;
+    }
+
+    @Override
+    public int getDoneButtonTextAppearance() {
+        return R.style.TextAppearance_GestureTutorial_ButtonLabel_Back;
+    }
+
+    @Override
+    public int getDoneButtonColor() {
+        return Utilities.isDarkTheme(mContext)
+                ? mTutorialFragment.mRootView.mColorOnSurfaceBack
+                : mTutorialFragment.mRootView.mColorSecondaryBack;
+    }
+
+    @Override
     protected int getMockAppTaskLayoutResId() {
         return getMockAppTaskCurrentPageLayoutResId();
     }
 
+    @Override
+    protected int getGestureLottieAnimationId() {
+        return mTutorialFragment.isLargeScreen()
+                ? mTutorialFragment.isFoldable()
+                    ? R.raw.back_gesture_tutorial_open_foldable_animation
+                    : R.raw.back_gesture_tutorial_tablet_animation
+                : R.raw.back_gesture_tutorial_animation;
+    }
+
     @LayoutRes
     int getMockAppTaskCurrentPageLayoutResId() {
-        return mTutorialFragment.isLargeScreen()
-                ? R.layout.gesture_tutorial_tablet_mock_conversation
-                : R.layout.gesture_tutorial_mock_conversation;
+        return ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()
+                ? R.layout.back_gesture_tutorial_background
+                : mTutorialFragment.isLargeScreen()
+                        ? R.layout.gesture_tutorial_tablet_mock_conversation
+                        : R.layout.gesture_tutorial_mock_conversation;
     }
 
     @LayoutRes
     int getMockAppTaskPreviousPageLayoutResId() {
-        return mTutorialFragment.isLargeScreen()
-                ? R.layout.gesture_tutorial_tablet_mock_conversation_list
-                : R.layout.gesture_tutorial_mock_conversation_list;
+        return ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()
+                ? R.layout.back_gesture_tutorial_background
+                : mTutorialFragment.isLargeScreen()
+                        ? R.layout.gesture_tutorial_tablet_mock_conversation_list
+                        : R.layout.gesture_tutorial_mock_conversation_list;
+    }
+
+    @Override
+    protected int getFakeLauncherColor() {
+        return mTutorialFragment.mRootView.mColorSurfaceContainer;
+    }
+
+    @Override
+    protected int getExitingAppColor() {
+        return mTutorialFragment.mRootView.mColorSurfaceBack;
     }
 
     @Override
@@ -85,17 +157,65 @@
             case BACK_NAVIGATION_COMPLETE:
                 if (result == BackGestureResult.BACK_COMPLETED_FROM_LEFT
                         || result == BackGestureResult.BACK_COMPLETED_FROM_RIGHT) {
-                    mTutorialFragment.closeTutorial();
+                    mTutorialFragment.close();
                 }
                 break;
         }
     }
 
+    @Override
+    public void onBackGestureProgress(float diffx, float diffy, boolean isLeftGesture) {
+        if (isGestureCompleted()) {
+            return;
+        }
+
+        float normalizedSwipeProgress = Math.abs(diffx / mScreenWidth);
+        float smoothedExitingAppScale = Utilities.mapBoundToRange(
+                normalizedSwipeProgress,
+                /* lowerBound = */ 0f,
+                /* upperBound = */ 1f,
+                /* toMin = */ 1f,
+                /* toMax = */ EXITING_APP_MIN_SIZE_PERCENTAGE,
+                Interpolators.DEACCEL);
+
+        // shrink the exiting app as we progress through the back gesture
+        mExitingAppView.setPivotX(isLeftGesture ? mScreenWidth : 0);
+        mExitingAppView.setPivotY(mScreenHeight / 2f);
+        mExitingAppView.setScaleX(smoothedExitingAppScale);
+        mExitingAppView.setScaleY(smoothedExitingAppScale);
+        mExitingAppView.setTranslationY(diffy * Y_TRANSLATION_SMOOTHENING_FACTOR);
+        mExitingAppView.setTranslationX(Utilities.mapBoundToRange(
+                normalizedSwipeProgress,
+                /* lowerBound = */ 0f,
+                /* upperBound = */ 1f,
+                /* toMin = */ 0,
+                /* toMax = */ mExitingAppMargin,
+                Interpolators.DEACCEL)
+                * (isLeftGesture ? -1 : 1));
+
+        // round the corners of the exiting app as we progress through the back gesture
+        mExitingAppRadius = (int) Utilities.mapBoundToRange(
+                normalizedSwipeProgress,
+                /* lowerBound = */ 0f,
+                /* upperBound = */ 1f,
+                /* toMin = */ mExitingAppStartingCornerRadius,
+                /* toMax = */ mExitingAppEndingCornerRadius,
+                Interpolators.EMPHASIZED_DECELERATE);
+        mExitingAppView.invalidateOutline();
+    }
+
     private void handleBackAttempt(BackGestureResult result) {
+        if (ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) {
+            resetViewsForBackGesture();
+        }
+
         switch (result) {
             case BACK_COMPLETED_FROM_LEFT:
             case BACK_COMPLETED_FROM_RIGHT:
                 mTutorialFragment.releaseFeedbackAnimation();
+                if (ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) {
+                    mExitingAppView.setVisibility(View.GONE);
+                }
                 updateFakeAppTaskViewLayout(getMockAppTaskPreviousPageLayoutResId());
                 showSuccessFeedback();
                 break;
@@ -119,7 +239,7 @@
         }
         if (mTutorialType == BACK_NAVIGATION_COMPLETE) {
             if (result == NavBarGestureResult.HOME_GESTURE_COMPLETED) {
-                mTutorialFragment.closeTutorial();
+                mTutorialFragment.close();
             }
         } else if (mTutorialType == BACK_NAVIGATION) {
             switch (result) {
@@ -131,9 +251,6 @@
                 case HOME_GESTURE_COMPLETED:
                 case OVERVIEW_GESTURE_COMPLETED:
                 case HOME_OR_OVERVIEW_NOT_STARTED_WRONG_SWIPE_DIRECTION:
-                case ASSISTANT_COMPLETED:
-                case ASSISTANT_NOT_STARTED_BAD_ANGLE:
-                case ASSISTANT_NOT_STARTED_SWIPE_TOO_SHORT:
                 default:
                     showFeedback(R.string.back_gesture_feedback_swipe_in_nav_bar);
 
diff --git a/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialFragment.java b/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialFragment.java
index 37253e2..a16b239 100644
--- a/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialFragment.java
+++ b/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialFragment.java
@@ -34,7 +34,13 @@
 /** Shows the Back gesture interactive tutorial. */
 public class BackGestureTutorialFragment extends TutorialFragment {
 
-    public BackGestureTutorialFragment() {}
+    public BackGestureTutorialFragment() {
+        this(false);
+    }
+
+    public BackGestureTutorialFragment(boolean fromTutorialMenu) {
+        super(fromTutorialMenu);
+    }
 
     @Nullable
     @Override
diff --git a/quickstep/src/com/android/quickstep/interaction/EdgeBackGestureHandler.java b/quickstep/src/com/android/quickstep/interaction/EdgeBackGestureHandler.java
index d059d82..1b12be8 100644
--- a/quickstep/src/com/android/quickstep/interaction/EdgeBackGestureHandler.java
+++ b/quickstep/src/com/android/quickstep/interaction/EdgeBackGestureHandler.java
@@ -15,6 +15,8 @@
  */
 package com.android.quickstep.interaction;
 
+import static com.android.launcher3.config.FeatureFlags.ENABLE_NEW_GESTURE_NAV_TUTORIAL;
+
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.Point;
@@ -29,8 +31,8 @@
 
 import androidx.annotation.Nullable;
 
-import com.android.launcher3.ResourceUtils;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.testing.shared.ResourceUtils;
 import com.android.launcher3.util.DisplayController;
 
 /**
@@ -207,7 +209,11 @@
                         mThresholdCrossed = true;
                     }
                 }
+            }
 
+            if (ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) {
+                mGestureCallback.onBackGestureProgress(ev.getX() - mDownPoint.x,
+                        ev.getY() - mDownPoint.y, mEdgeBackPanel.getIsLeftPanel());
             }
 
             // forward touch
@@ -242,5 +248,8 @@
     interface BackGestureAttemptCallback {
         /** Called whenever any touch is completed. */
         void onBackGestureAttempted(BackGestureResult result);
+
+        /** Called when the back gesture is recognized and is in progress. */
+        default void onBackGestureProgress(float diffx, float diffy, boolean isLeftGesture) {}
     }
 }
diff --git a/quickstep/src/com/android/quickstep/interaction/EdgeBackGesturePanel.java b/quickstep/src/com/android/quickstep/interaction/EdgeBackGesturePanel.java
index b2b2f59..8eb4059 100644
--- a/quickstep/src/com/android/quickstep/interaction/EdgeBackGesturePanel.java
+++ b/quickstep/src/com/android/quickstep/interaction/EdgeBackGesturePanel.java
@@ -41,9 +41,9 @@
 import androidx.dynamicanimation.animation.SpringForce;
 
 import com.android.launcher3.R;
-import com.android.launcher3.ResourceUtils;
 import com.android.launcher3.anim.Interpolators;
-import com.android.quickstep.util.VibratorWrapper;
+import com.android.launcher3.testing.shared.ResourceUtils;
+import com.android.launcher3.util.VibratorWrapper;
 
 /** Forked from platform/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarEdgePanel.java. */
 public class EdgeBackGesturePanel extends View {
diff --git a/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java b/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java
index bf7023c..aeac760 100644
--- a/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java
+++ b/quickstep/src/com/android/quickstep/interaction/GestureSandboxActivity.java
@@ -26,10 +26,12 @@
 import android.view.Window;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.fragment.app.FragmentActivity;
 
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.R;
-import com.android.launcher3.Utilities;
+import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.logging.StatsLogManager;
 import com.android.quickstep.TouchInteractionService.TISBinder;
 import com.android.quickstep.interaction.TutorialController.TutorialType;
@@ -42,11 +44,12 @@
 
     private static final String KEY_TUTORIAL_STEPS = "tutorial_steps";
     private static final String KEY_CURRENT_STEP = "current_step";
-    private static final String KEY_GESTURE_COMPLETE = "gesture_complete";
+    static final String KEY_TUTORIAL_TYPE = "tutorial_type";
+    static final String KEY_GESTURE_COMPLETE = "gesture_complete";
+    static final String KEY_USE_TUTORIAL_MENU = "use_tutorial_menu";
 
-    private TutorialType[] mTutorialSteps;
-    private TutorialType mCurrentTutorialStep;
-    private TutorialFragment mFragment;
+    @Nullable private TutorialType[] mTutorialSteps;
+    private GestureSandboxFragment mFragment;
 
     private int mCurrentStep;
     private int mNumSteps;
@@ -63,14 +66,30 @@
         requestWindowFeature(Window.FEATURE_NO_TITLE);
         setContentView(R.layout.gesture_tutorial_activity);
 
-        mSharedPrefs = Utilities.getPrefs(this);
+        mSharedPrefs = LauncherPrefs.getPrefs(this);
         mStatsLogManager = StatsLogManager.newInstance(getApplicationContext());
 
         Bundle args = savedInstanceState == null ? getIntent().getExtras() : savedInstanceState;
-        mTutorialSteps = getTutorialSteps(args);
-        mCurrentTutorialStep = mTutorialSteps[mCurrentStep - 1];
-        mFragment = TutorialFragment.newInstance(
-                mCurrentTutorialStep, args.getBoolean(KEY_GESTURE_COMPLETE, false));
+
+        boolean gestureComplete = args != null && args.getBoolean(KEY_GESTURE_COMPLETE, false);
+        if (FeatureFlags.ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()
+                && args != null
+                && args.getBoolean(KEY_USE_TUTORIAL_MENU, false)) {
+            mTutorialSteps = null;
+            TutorialType tutorialTypeOverride = (TutorialType) args.get(KEY_TUTORIAL_TYPE);
+            mFragment = tutorialTypeOverride == null
+                    ? new MenuFragment()
+                    : makeTutorialFragment(
+                            tutorialTypeOverride,
+                            gestureComplete,
+                            /* fromMenu= */ true);
+        } else {
+            mTutorialSteps = getTutorialSteps(args);
+            mFragment = makeTutorialFragment(
+                    mTutorialSteps[mCurrentStep - 1],
+                    gestureComplete,
+                    /* fromMenu= */ false);
+        }
         getSupportFragmentManager().beginTransaction()
                 .add(R.id.gesture_tutorial_fragment_container, mFragment)
                 .commit();
@@ -81,7 +100,9 @@
     @Override
     public void onAttachedToWindow() {
         super.onAttachedToWindow();
-        disableSystemGestures();
+        if (mFragment.shouldDisableSystemGestures()) {
+            disableSystemGestures();
+        }
         mFragment.onAttachedToWindow();
     }
 
@@ -103,7 +124,7 @@
     protected void onSaveInstanceState(@NonNull Bundle savedInstanceState) {
         savedInstanceState.putStringArray(KEY_TUTORIAL_STEPS, getTutorialStepNames());
         savedInstanceState.putInt(KEY_CURRENT_STEP, mCurrentStep);
-        savedInstanceState.putBoolean(KEY_GESTURE_COMPLETE, mFragment.isGestureComplete());
+        mFragment.onSaveInstanceState(savedInstanceState);
         super.onSaveInstanceState(savedInstanceState);
     }
 
@@ -134,21 +155,46 @@
      * If there is no following step, the tutorial is closed.
      */
     public void continueTutorial() {
-        if (isTutorialComplete()) {
-            mFragment.closeTutorial();
+        if (isTutorialComplete() || mTutorialSteps == null) {
+            mFragment.close();
             return;
         }
-        mCurrentTutorialStep = mTutorialSteps[mCurrentStep];
-        mFragment = TutorialFragment.newInstance(
-                mCurrentTutorialStep, /* gestureComplete= */ false);
+        launchTutorialStep(mTutorialSteps[mCurrentStep], false);
+        mCurrentStep++;
+    }
+
+    private TutorialFragment makeTutorialFragment(
+            @NonNull TutorialType tutorialType, boolean gestureComplete, boolean fromMenu) {
+        return TutorialFragment.newInstance(tutorialType, gestureComplete, fromMenu);
+    }
+
+    /**
+     * Launches the given gesture nav tutorial step.
+     *
+     * If the step is being launched from the gesture nav tutorial menu, then that step will launch
+     * the menu when complete.
+     */
+    public void launchTutorialStep(@NonNull TutorialType tutorialType, boolean fromMenu) {
+        mFragment = makeTutorialFragment(tutorialType, false, fromMenu);
         getSupportFragmentManager().beginTransaction()
                 .replace(R.id.gesture_tutorial_fragment_container, mFragment)
                 .runOnCommit(() -> mFragment.onAttachedToWindow())
                 .commit();
-        mCurrentStep++;
+    }
+
+    /** Launches the gesture nav tutorial menu page */
+    public void launchTutorialMenu() {
+        mFragment = new MenuFragment();
+        getSupportFragmentManager().beginTransaction()
+                .replace(R.id.gesture_tutorial_fragment_container, mFragment)
+                .runOnCommit(() -> mFragment.onAttachedToWindow())
+                .commit();
     }
 
     private String[] getTutorialStepNames() {
+        if (mTutorialSteps == null) {
+            return new String[0];
+        }
         String[] tutorialStepNames = new String[mTutorialSteps.length];
 
         int i = 0;
@@ -160,18 +206,19 @@
     }
 
     private TutorialType[] getTutorialSteps(Bundle extras) {
-        TutorialType[] defaultSteps = new TutorialType[] {TutorialType.BACK_NAVIGATION};
+        TutorialType[] defaultSteps = new TutorialType[] {
+                TutorialType.HOME_NAVIGATION,
+                TutorialType.BACK_NAVIGATION,
+                TutorialType.OVERVIEW_NAVIGATION};
         mCurrentStep = 1;
-        mNumSteps = 1;
+        mNumSteps = defaultSteps.length;
 
         if (extras == null || !extras.containsKey(KEY_TUTORIAL_STEPS)) {
             return defaultSteps;
         }
 
-        Object savedSteps = extras.get(KEY_TUTORIAL_STEPS);
-        int currentStep = extras.getInt(KEY_CURRENT_STEP, -1);
         String[] savedStepsNames;
-
+        Object savedSteps = extras.get(KEY_TUTORIAL_STEPS);
         if (savedSteps instanceof String) {
             savedStepsNames = TextUtils.isEmpty((String) savedSteps)
                     ? null : ((String) savedSteps).split(",");
@@ -181,7 +228,7 @@
             return defaultSteps;
         }
 
-        if (savedStepsNames == null) {
+        if (savedStepsNames == null || savedStepsNames.length == 0) {
             return defaultSteps;
         }
 
@@ -190,7 +237,7 @@
             tutorialSteps[i] = TutorialType.valueOf(savedStepsNames[i]);
         }
 
-        mCurrentStep = Math.max(currentStep, 1);
+        mCurrentStep = Math.max(extras.getInt(KEY_CURRENT_STEP, -1), 1);
         mNumSteps = tutorialSteps.length;
 
         return tutorialSteps;
diff --git a/quickstep/src/com/android/quickstep/interaction/GestureSandboxFragment.java b/quickstep/src/com/android/quickstep/interaction/GestureSandboxFragment.java
new file mode 100644
index 0000000..d52f19a
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/interaction/GestureSandboxFragment.java
@@ -0,0 +1,41 @@
+/*
+ * 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.quickstep.interaction;
+
+import android.app.Activity;
+
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+
+/** Displays one page of the gesture nav tutorial. */
+public abstract class GestureSandboxFragment extends Fragment {
+
+    void onAttachedToWindow() {}
+
+    void onDetachedFromWindow() {}
+
+    boolean shouldDisableSystemGestures() {
+        return true;
+    }
+
+    void close() {
+        FragmentActivity activity = getActivity();
+        if (activity != null) {
+            activity.setResult(Activity.RESULT_OK);
+            activity.finish();
+        }
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/interaction/HomeGestureTutorialController.java b/quickstep/src/com/android/quickstep/interaction/HomeGestureTutorialController.java
index f519d50..891f20e 100644
--- a/quickstep/src/com/android/quickstep/interaction/HomeGestureTutorialController.java
+++ b/quickstep/src/com/android/quickstep/interaction/HomeGestureTutorialController.java
@@ -15,13 +15,19 @@
  */
 package com.android.quickstep.interaction;
 
+import static com.android.launcher3.config.FeatureFlags.ENABLE_NEW_GESTURE_NAV_TUTORIAL;
+
 import android.annotation.TargetApi;
 import android.graphics.PointF;
 import android.os.Build;
 
 import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
 import com.android.quickstep.interaction.EdgeBackGestureHandler.BackGestureResult;
 import com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult;
+import com.android.quickstep.util.LottieAnimationColorUtils;
+
+import java.util.Map;
 
 /** A {@link TutorialController} for the Home tutorial. */
 @TargetApi(Build.VERSION_CODES.R)
@@ -29,16 +35,37 @@
 
     HomeGestureTutorialController(HomeGestureTutorialFragment fragment, TutorialType tutorialType) {
         super(fragment, tutorialType);
+
+        // Set the Lottie animation colors specifically for the Home gesture
+        if (ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) {
+            LottieAnimationColorUtils.updateColors(
+                    mAnimatedGestureDemonstration,
+                    Map.of(".onSurfaceHome", fragment.mRootView.mColorOnSurfaceHome,
+                            ".surfaceHome", fragment.mRootView.mColorSurfaceHome,
+                            ".secondaryHome", fragment.mRootView.mColorSecondaryHome));
+
+            LottieAnimationColorUtils.updateColors(
+                    mCheckmarkAnimation,
+                    Map.of(".checkmark",
+                            Utilities.isDarkTheme(mContext)
+                                    ? fragment.mRootView.mColorOnSurfaceHome
+                                    : fragment.mRootView.mColorSecondaryHome,
+                            ".checkmarkBackground", fragment.mRootView.mColorSurfaceHome));
+        }
     }
 
     @Override
     public int getIntroductionTitle() {
-        return R.string.home_gesture_intro_title;
+        return ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()
+                ? R.string.home_gesture_tutorial_title
+                : R.string.home_gesture_intro_title;
     }
 
     @Override
     public int getIntroductionSubtitle() {
-        return R.string.home_gesture_intro_subtitle;
+        return ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()
+                ? R.string.home_gesture_tutorial_subtitle
+                : R.string.home_gesture_intro_subtitle;
     }
 
     @Override
@@ -54,6 +81,28 @@
     }
 
     @Override
+    public int getTitleTextAppearance() {
+        return R.style.TextAppearance_GestureTutorial_MainTitle_Home;
+    }
+
+    @Override
+    public int getSuccessTitleTextAppearance() {
+        return R.style.TextAppearance_GestureTutorial_MainTitle_Success_Home;
+    }
+
+    @Override
+    public int getDoneButtonTextAppearance() {
+        return R.style.TextAppearance_GestureTutorial_ButtonLabel_Home;
+    }
+
+    @Override
+    public int getDoneButtonColor() {
+        return Utilities.isDarkTheme(mContext)
+                ? mTutorialFragment.mRootView.mColorOnSurfaceHome
+                : mTutorialFragment.mRootView.mColorSecondaryHome;
+    }
+
+    @Override
     protected int getMockAppTaskLayoutResId() {
         return mTutorialFragment.isLargeScreen()
                 ? R.layout.gesture_tutorial_tablet_mock_webpage
@@ -61,6 +110,35 @@
     }
 
     @Override
+    protected int getGestureLottieAnimationId() {
+        return mTutorialFragment.isLargeScreen()
+                ? mTutorialFragment.isFoldable()
+                    ? R.raw.home_gesture_tutorial_open_foldable_animation
+                    : R.raw.home_gesture_tutorial_tablet_animation
+                : R.raw.home_gesture_tutorial_animation;
+    }
+
+    @Override
+    protected int getFakeTaskViewColor() {
+        return isGestureCompleted() ? getFakeLauncherColor() : getExitingAppColor();
+    }
+
+    @Override
+    protected int getFakeLauncherColor() {
+        return mTutorialFragment.mRootView.mColorSurfaceContainer;
+    }
+
+    @Override
+    protected int getExitingAppColor() {
+        return mTutorialFragment.mRootView.mColorSurfaceHome;
+    }
+
+    @Override
+    protected int getHotseatIconColor() {
+        return getExitingAppColor();
+    }
+
+    @Override
     public void onBackGestureAttempted(BackGestureResult result) {
         if (isGestureCompleted()) {
             return;
@@ -72,6 +150,8 @@
                     case BACK_COMPLETED_FROM_RIGHT:
                     case BACK_CANCELLED_FROM_LEFT:
                     case BACK_CANCELLED_FROM_RIGHT:
+                    case BACK_NOT_STARTED_TOO_FAR_FROM_EDGE:
+                        resetTaskViews();
                         showFeedback(R.string.home_gesture_feedback_swipe_too_far_from_edge);
                         break;
                 }
@@ -79,7 +159,7 @@
             case HOME_NAVIGATION_COMPLETE:
                 if (result == BackGestureResult.BACK_COMPLETED_FROM_LEFT
                         || result == BackGestureResult.BACK_COMPLETED_FROM_RIGHT) {
-                    mTutorialFragment.closeTutorial();
+                    mTutorialFragment.close();
                 }
                 break;
         }
@@ -101,24 +181,25 @@
                     }
                     case HOME_NOT_STARTED_TOO_FAR_FROM_EDGE:
                     case OVERVIEW_NOT_STARTED_TOO_FAR_FROM_EDGE:
+                        resetTaskViews();
                         showFeedback(R.string.home_gesture_feedback_swipe_too_far_from_edge);
                         break;
                     case OVERVIEW_GESTURE_COMPLETED:
-                        fadeOutFakeTaskView(true, true, () -> {
+                        fadeOutFakeTaskView(true, () -> {
                             showFeedback(R.string.home_gesture_feedback_overview_detected);
                             showFakeTaskbar(/* animateFromHotseat= */ false);
                         });
                         break;
                     case HOME_OR_OVERVIEW_NOT_STARTED_WRONG_SWIPE_DIRECTION:
                     case HOME_OR_OVERVIEW_CANCELLED:
-                        fadeOutFakeTaskView(false, true, null);
+                        fadeOutFakeTaskView(false, null);
                         showFeedback(R.string.home_gesture_feedback_wrong_swipe_direction);
                         break;
                 }
                 break;
             case HOME_NAVIGATION_COMPLETE:
                 if (result == NavBarGestureResult.HOME_GESTURE_COMPLETED) {
-                    mTutorialFragment.closeTutorial();
+                    mTutorialFragment.close();
                 }
                 break;
         }
diff --git a/quickstep/src/com/android/quickstep/interaction/HomeGestureTutorialFragment.java b/quickstep/src/com/android/quickstep/interaction/HomeGestureTutorialFragment.java
index 95eafda..bced8c4 100644
--- a/quickstep/src/com/android/quickstep/interaction/HomeGestureTutorialFragment.java
+++ b/quickstep/src/com/android/quickstep/interaction/HomeGestureTutorialFragment.java
@@ -33,7 +33,13 @@
 /** Shows the Home gesture interactive tutorial. */
 public class HomeGestureTutorialFragment extends TutorialFragment {
 
-    public HomeGestureTutorialFragment() {}
+    public HomeGestureTutorialFragment() {
+        this(false);
+    }
+
+    public HomeGestureTutorialFragment(boolean fromTutorialMenu) {
+        super(fromTutorialMenu);
+    }
 
     @Nullable
     @Override
diff --git a/quickstep/src/com/android/quickstep/interaction/MenuFragment.java b/quickstep/src/com/android/quickstep/interaction/MenuFragment.java
new file mode 100644
index 0000000..46f79b1
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/interaction/MenuFragment.java
@@ -0,0 +1,86 @@
+/*
+ * 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.quickstep.interaction;
+
+import static com.android.quickstep.interaction.GestureSandboxActivity.KEY_GESTURE_COMPLETE;
+import static com.android.quickstep.interaction.GestureSandboxActivity.KEY_TUTORIAL_TYPE;
+import static com.android.quickstep.interaction.GestureSandboxActivity.KEY_USE_TUTORIAL_MENU;
+
+import android.graphics.Rect;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.launcher3.InvariantDeviceProfile;
+import com.android.launcher3.R;
+
+/** Displays the gesture nav tutorial menu. */
+public final class MenuFragment extends GestureSandboxFragment {
+
+    @NonNull private Rect mInsets = new Rect();
+
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mInsets = InvariantDeviceProfile.INSTANCE.get(getContext())
+                .getDeviceProfile(getContext()).getInsets();
+    }
+
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
+            @Nullable Bundle savedInstanceState) {
+        View root = inflater.inflate(
+                R.layout.gesture_tutorial_step_menu, container, false);
+
+        root.setPadding(
+                root.getPaddingLeft() + mInsets.left,
+                root.getPaddingTop() + mInsets.top,
+                root.getPaddingRight() + mInsets.right,
+                root.getPaddingBottom() + mInsets.bottom);
+
+        root.findViewById(R.id.gesture_tutorial_menu_home_button).setOnClickListener(
+                v -> launchTutorialStep(TutorialController.TutorialType.HOME_NAVIGATION));
+        root.findViewById(R.id.gesture_tutorial_menu_back_button).setOnClickListener(
+                v -> launchTutorialStep(TutorialController.TutorialType.BACK_NAVIGATION));
+        root.findViewById(R.id.gesture_tutorial_menu_overview_button).setOnClickListener(
+                v -> launchTutorialStep(TutorialController.TutorialType.OVERVIEW_NAVIGATION));
+        root.findViewById(R.id.gesture_tutorial_menu_done_button).setOnClickListener(
+                v -> close());
+
+        return root;
+    }
+
+    @Override
+    boolean shouldDisableSystemGestures() {
+        return false;
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle savedInstanceState) {
+        savedInstanceState.putBoolean(KEY_USE_TUTORIAL_MENU, true);
+        savedInstanceState.remove(KEY_TUTORIAL_TYPE);
+        savedInstanceState.remove(KEY_GESTURE_COMPLETE);
+        super.onSaveInstanceState(savedInstanceState);
+    }
+
+    private void launchTutorialStep(@NonNull TutorialController.TutorialType tutorialType) {
+        ((GestureSandboxActivity) getActivity()).launchTutorialStep(tutorialType, true);
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/interaction/NavBarGestureHandler.java b/quickstep/src/com/android/quickstep/interaction/NavBarGestureHandler.java
index f981860..6cee690 100644
--- a/quickstep/src/com/android/quickstep/interaction/NavBarGestureHandler.java
+++ b/quickstep/src/com/android/quickstep/interaction/NavBarGestureHandler.java
@@ -15,83 +15,50 @@
  */
 package com.android.quickstep.interaction;
 
-import static com.android.launcher3.Utilities.squaredHypot;
-import static com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult.ASSISTANT_COMPLETED;
-import static com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult.ASSISTANT_NOT_STARTED_BAD_ANGLE;
-import static com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult.ASSISTANT_NOT_STARTED_SWIPE_TOO_SHORT;
+import static com.android.launcher3.util.VibratorWrapper.OVERVIEW_HAPTIC;
 import static com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult.HOME_GESTURE_COMPLETED;
 import static com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult.HOME_NOT_STARTED_TOO_FAR_FROM_EDGE;
 import static com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult.HOME_OR_OVERVIEW_CANCELLED;
 import static com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult.HOME_OR_OVERVIEW_NOT_STARTED_WRONG_SWIPE_DIRECTION;
 import static com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult.OVERVIEW_GESTURE_COMPLETED;
 import static com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult.OVERVIEW_NOT_STARTED_TOO_FAR_FROM_EDGE;
-import static com.android.quickstep.util.VibratorWrapper.OVERVIEW_HAPTIC;
 
-import android.animation.ValueAnimator;
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.Point;
 import android.graphics.PointF;
-import android.graphics.RectF;
-import android.os.SystemClock;
-import android.view.Display;
-import android.view.GestureDetector;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.View.OnTouchListener;
-import android.view.ViewConfiguration;
 
 import androidx.annotation.Nullable;
 
-import com.android.launcher3.R;
-import com.android.launcher3.ResourceUtils;
-import com.android.launcher3.anim.Interpolators;
+import com.android.launcher3.testing.shared.ResourceUtils;
 import com.android.launcher3.util.DisplayController;
-import com.android.launcher3.util.DisplayController.NavigationMode;
+import com.android.launcher3.util.NavigationMode;
+import com.android.launcher3.util.VibratorWrapper;
 import com.android.quickstep.util.MotionPauseDetector;
 import com.android.quickstep.util.NavBarPosition;
 import com.android.quickstep.util.TriggerSwipeUpTouchTracker;
-import com.android.quickstep.util.VibratorWrapper;
-import com.android.systemui.shared.system.QuickStepContract;
 
-/** Utility class to handle Home and Assistant gestures. */
+/** Utility class to handle Home gesture. */
 public class NavBarGestureHandler implements OnTouchListener,
         TriggerSwipeUpTouchTracker.OnSwipeUpListener, MotionPauseDetector.OnMotionPauseListener {
 
     private static final String LOG_TAG = "NavBarGestureHandler";
-    private static final long RETRACT_GESTURE_ANIMATION_DURATION_MS = 300;
-
     private final Context mContext;
     private final Point mDisplaySize = new Point();
     private final TriggerSwipeUpTouchTracker mSwipeUpTouchTracker;
     private final int mBottomGestureHeight;
-    private final GestureDetector mAssistantGestureDetector;
-    private final int mAssistantAngleThreshold;
-    private final RectF mAssistantLeftRegion = new RectF();
-    private final RectF mAssistantRightRegion = new RectF();
-    private final float mAssistantDragDistThreshold;
-    private final float mAssistantFlingDistThreshold;
-    private final long mAssistantTimeThreshold;
-    private final float mAssistantSquaredSlop;
-    private final PointF mAssistantStartDragPos = new PointF();
     private final PointF mDownPos = new PointF();
     private final PointF mLastPos = new PointF();
     private final MotionPauseDetector mMotionPauseDetector;
-    private boolean mTouchCameFromAssistantCorner;
     private boolean mTouchCameFromNavBar;
-    private boolean mPassedAssistantSlop;
-    private boolean mAssistantGestureActive;
-    private boolean mLaunchedAssistant;
-    private long mAssistantDragStartTime;
-    private float mAssistantDistance;
-    private float mAssistantTimeFraction;
-    private float mAssistantLastProgress;
     @Nullable
     private NavBarGestureAttemptCallback mGestureCallback;
 
     NavBarGestureHandler(Context context) {
         mContext = context;
-        final Display display = mContext.getDisplay();
         DisplayController.Info displayInfo = DisplayController.INSTANCE.get(mContext).getInfo();
         final int displayRotation = displayInfo.rotation;
         Point currentSize = displayInfo.currentSize;
@@ -105,27 +72,6 @@
         final Resources resources = context.getResources();
         mBottomGestureHeight =
                 ResourceUtils.getNavbarSize(ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE, resources);
-        mAssistantDragDistThreshold =
-                resources.getDimension(R.dimen.gestures_assistant_drag_threshold);
-        mAssistantFlingDistThreshold =
-                resources.getDimension(R.dimen.gestures_assistant_fling_threshold);
-        mAssistantTimeThreshold =
-                resources.getInteger(R.integer.assistant_gesture_min_time_threshold);
-        mAssistantAngleThreshold =
-                resources.getInteger(R.integer.assistant_gesture_corner_deg_threshold);
-
-        mAssistantGestureDetector = new GestureDetector(context, new AssistantGestureListener());
-        int assistantWidth = resources.getDimensionPixelSize(R.dimen.gestures_assistant_width);
-        final float assistantHeight = Math.max(mBottomGestureHeight,
-                QuickStepContract.getWindowCornerRadius(context));
-        mAssistantLeftRegion.bottom = mAssistantRightRegion.bottom = mDisplaySize.y;
-        mAssistantLeftRegion.top = mAssistantRightRegion.top = mDisplaySize.y - assistantHeight;
-        mAssistantLeftRegion.left = 0;
-        mAssistantLeftRegion.right = assistantWidth;
-        mAssistantRightRegion.right = mDisplaySize.x;
-        mAssistantRightRegion.left = mDisplaySize.x - assistantWidth;
-        float slop = ViewConfiguration.get(context).getScaledTouchSlop();
-        mAssistantSquaredSlop = slop * slop;
     }
 
     void registerNavBarGestureAttemptCallback(NavBarGestureAttemptCallback callback) {
@@ -138,7 +84,7 @@
 
     @Override
     public void onSwipeUp(boolean wasFling, PointF finalVelocity) {
-        if (mGestureCallback == null || mAssistantGestureActive) {
+        if (mGestureCallback == null) {
             return;
         }
         if (mTouchCameFromNavBar) {
@@ -153,7 +99,7 @@
 
     @Override
     public void onSwipeUpCancelled() {
-        if (mGestureCallback != null && !mAssistantGestureActive) {
+        if (mGestureCallback != null) {
             mGestureCallback.onNavBarGestureAttempted(HOME_OR_OVERVIEW_CANCELLED, new PointF());
         }
     }
@@ -166,52 +112,16 @@
             case MotionEvent.ACTION_DOWN:
                 mDownPos.set(event.getX(), event.getY());
                 mLastPos.set(mDownPos);
-                mTouchCameFromAssistantCorner =
-                        mAssistantLeftRegion.contains(event.getX(), event.getY())
-                                || mAssistantRightRegion.contains(event.getX(), event.getY());
-                mAssistantGestureActive = mTouchCameFromAssistantCorner;
-                mTouchCameFromNavBar = !mTouchCameFromAssistantCorner
-                        && mDownPos.y >= mDisplaySize.y - mBottomGestureHeight;
+                mTouchCameFromNavBar = mDownPos.y >= mDisplaySize.y - mBottomGestureHeight;
                 if (!mTouchCameFromNavBar && mGestureCallback != null) {
                     mGestureCallback.setNavBarGestureProgress(null);
                 }
-                mLaunchedAssistant = false;
                 mSwipeUpTouchTracker.init();
                 mMotionPauseDetector.clear();
                 mMotionPauseDetector.setOnMotionPauseListener(this);
                 break;
             case MotionEvent.ACTION_MOVE:
                 mLastPos.set(event.getX(), event.getY());
-                if (!mAssistantGestureActive) {
-                    break;
-                }
-
-                if (!mPassedAssistantSlop) {
-                    // Normal gesture, ensure we pass the slop before we start tracking the gesture
-                    if (squaredHypot(mLastPos.x - mDownPos.x, mLastPos.y - mDownPos.y)
-                            > mAssistantSquaredSlop) {
-
-                        mPassedAssistantSlop = true;
-                        mAssistantStartDragPos.set(mLastPos.x, mLastPos.y);
-                        mAssistantDragStartTime = SystemClock.uptimeMillis();
-
-                        mAssistantGestureActive = isValidAssistantGestureAngle(
-                                mDownPos.x - mLastPos.x, mDownPos.y - mLastPos.y);
-                        if (!mAssistantGestureActive && mGestureCallback != null) {
-                            mGestureCallback.onNavBarGestureAttempted(
-                                    ASSISTANT_NOT_STARTED_BAD_ANGLE, new PointF());
-                        }
-                    }
-                } else {
-                    // Movement
-                    mAssistantDistance = (float) Math.hypot(mLastPos.x - mAssistantStartDragPos.x,
-                            mLastPos.y - mAssistantStartDragPos.y);
-                    if (mAssistantDistance >= 0) {
-                        final long diff = SystemClock.uptimeMillis() - mAssistantDragStartTime;
-                        mAssistantTimeFraction = Math.min(diff * 1f / mAssistantTimeThreshold, 1);
-                        updateAssistantProgress();
-                    }
-                }
                 break;
             case MotionEvent.ACTION_UP:
             case MotionEvent.ACTION_CANCEL:
@@ -222,35 +132,19 @@
                     intercepted = true;
                     break;
                 }
-                if (mAssistantGestureActive && !mLaunchedAssistant && mGestureCallback != null) {
-                    mGestureCallback.onNavBarGestureAttempted(
-                            ASSISTANT_NOT_STARTED_SWIPE_TOO_SHORT, new PointF());
-                    ValueAnimator animator = ValueAnimator.ofFloat(mAssistantLastProgress, 0)
-                            .setDuration(RETRACT_GESTURE_ANIMATION_DURATION_MS);
-                    animator.addUpdateListener(valueAnimator -> {
-                        float progress = (float) valueAnimator.getAnimatedValue();
-                        mGestureCallback.setAssistantProgress(progress);
-                    });
-                    animator.setInterpolator(Interpolators.DEACCEL_2);
-                    animator.start();
-                }
-                mPassedAssistantSlop = false;
                 break;
         }
         if (mTouchCameFromNavBar && mGestureCallback != null) {
             mGestureCallback.setNavBarGestureProgress(event.getY() - mDownPos.y);
         }
         mSwipeUpTouchTracker.onMotionEvent(event);
-        mAssistantGestureDetector.onTouchEvent(event);
         mMotionPauseDetector.addPosition(event);
         mMotionPauseDetector.setDisallowPause(mLastPos.y >= mDisplaySize.y - mBottomGestureHeight);
         return intercepted;
     }
 
     boolean onInterceptTouch(MotionEvent event) {
-        return mAssistantLeftRegion.contains(event.getX(), event.getY())
-                || mAssistantRightRegion.contains(event.getX(), event.getY())
-                || event.getY() >= mDisplaySize.y - mBottomGestureHeight;
+        return event.getY() >= mDisplaySize.y - mBottomGestureHeight;
     }
 
     @Override
@@ -263,39 +157,6 @@
         VibratorWrapper.INSTANCE.get(mContext).vibrate(OVERVIEW_HAPTIC);
     }
 
-    /**
-     * Determine if angle is larger than threshold for assistant detection
-     */
-    private boolean isValidAssistantGestureAngle(float deltaX, float deltaY) {
-        float angle = (float) Math.toDegrees(Math.atan2(deltaY, deltaX));
-
-        // normalize so that angle is measured clockwise from horizontal in the bottom right corner
-        // and counterclockwise from horizontal in the bottom left corner
-        angle = angle > 90 ? 180 - angle : angle;
-        return (angle > mAssistantAngleThreshold && angle < 90);
-    }
-
-    private void updateAssistantProgress() {
-        if (!mLaunchedAssistant) {
-            mAssistantLastProgress =
-                    Math.min(mAssistantDistance * 1f / mAssistantDragDistThreshold, 1)
-                            * mAssistantTimeFraction;
-            if (mAssistantDistance >= mAssistantDragDistThreshold && mAssistantTimeFraction >= 1) {
-                startAssistant(new PointF());
-            } else if (mGestureCallback != null) {
-                mGestureCallback.setAssistantProgress(mAssistantLastProgress);
-            }
-        }
-    }
-
-    private void startAssistant(PointF velocity) {
-        if (mGestureCallback != null) {
-            mGestureCallback.onNavBarGestureAttempted(ASSISTANT_COMPLETED, velocity);
-        }
-        VibratorWrapper.INSTANCE.get(mContext).vibrate(VibratorWrapper.EFFECT_CLICK);
-        mLaunchedAssistant = true;
-    }
-
     enum NavBarGestureResult {
         UNKNOWN,
         HOME_GESTURE_COMPLETED,
@@ -304,9 +165,6 @@
         OVERVIEW_NOT_STARTED_TOO_FAR_FROM_EDGE,
         HOME_OR_OVERVIEW_NOT_STARTED_WRONG_SWIPE_DIRECTION,  // Side swipe on nav bar.
         HOME_OR_OVERVIEW_CANCELLED,
-        ASSISTANT_COMPLETED,
-        ASSISTANT_NOT_STARTED_BAD_ANGLE,
-        ASSISTANT_NOT_STARTED_SWIPE_TOO_SHORT,
     }
 
     /** Callback to let the UI react to attempted nav bar gestures. */
@@ -319,27 +177,5 @@
 
         /** Indicates how far a touch originating in the nav bar has moved from the nav bar. */
         default void setNavBarGestureProgress(@Nullable Float displacement) {}
-
-        /** Indicates the progress of an Assistant gesture. */
-        default void setAssistantProgress(float progress) {}
-    }
-
-    private class AssistantGestureListener extends GestureDetector.SimpleOnGestureListener {
-        @Override
-        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
-            if (!mLaunchedAssistant && mTouchCameFromAssistantCorner) {
-                PointF velocity = new PointF(velocityX, velocityY);
-                if (!isValidAssistantGestureAngle(velocityX, -velocityY)) {
-                    if (mGestureCallback != null) {
-                        mGestureCallback.onNavBarGestureAttempted(ASSISTANT_NOT_STARTED_BAD_ANGLE,
-                                velocity);
-                    }
-                } else if (mAssistantDistance >= mAssistantFlingDistThreshold) {
-                    mAssistantLastProgress = 1;
-                    startAssistant(velocity);
-                }
-            }
-            return true;
-        }
     }
 }
diff --git a/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialController.java b/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialController.java
index 6b016ce..667fe4d 100644
--- a/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialController.java
+++ b/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialController.java
@@ -16,34 +16,63 @@
 package com.android.quickstep.interaction;
 
 import static com.android.launcher3.anim.Interpolators.ACCEL;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_NEW_GESTURE_NAV_TUTORIAL;
 
 import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
 import android.animation.AnimatorSet;
 import android.annotation.TargetApi;
 import android.graphics.PointF;
 import android.os.Build;
+import android.os.Handler;
+
+import androidx.annotation.ColorInt;
+import androidx.core.graphics.ColorUtils;
 
 import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.anim.PendingAnimation;
-import com.android.quickstep.AnimatedFloat;
 import com.android.quickstep.SwipeUpAnimationLogic;
 import com.android.quickstep.interaction.EdgeBackGestureHandler.BackGestureResult;
 import com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult;
+import com.android.quickstep.util.LottieAnimationColorUtils;
 
 import java.util.ArrayList;
+import java.util.Map;
 
 /** A {@link TutorialController} for the Overview tutorial. */
 @TargetApi(Build.VERSION_CODES.R)
 final class OverviewGestureTutorialController extends SwipeUpGestureTutorialController {
 
+    private static final float LAUNCHER_COLOR_BLENDING_RATIO = 0.4f;
+
     OverviewGestureTutorialController(OverviewGestureTutorialFragment fragment,
             TutorialType tutorialType) {
         super(fragment, tutorialType);
-    }
 
+        // Set the Lottie animation colors specifically for the Overview gesture
+        if (ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) {
+            LottieAnimationColorUtils.updateColors(
+                    mAnimatedGestureDemonstration,
+                    Map.of(".onSurfaceOverview", fragment.mRootView.mColorOnSurfaceOverview,
+                            ".surfaceOverview", fragment.mRootView.mColorSurfaceOverview,
+                            ".secondaryOverview", fragment.mRootView.mColorSecondaryOverview));
+
+            LottieAnimationColorUtils.updateColors(
+                    mCheckmarkAnimation,
+                    Map.of(".checkmark",
+                            Utilities.isDarkTheme(mContext)
+                                    ? fragment.mRootView.mColorOnSurfaceOverview
+                                    : fragment.mRootView.mColorSecondaryOverview,
+                            ".checkmarkBackground", fragment.mRootView.mColorSurfaceOverview));
+        }
+    }
     @Override
     public int getIntroductionTitle() {
-        return R.string.overview_gesture_intro_title;
+        return ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()
+                ? R.string.overview_gesture_tutorial_title
+                : R.string.overview_gesture_intro_title;
     }
 
     @Override
@@ -64,6 +93,28 @@
     }
 
     @Override
+    public int getTitleTextAppearance() {
+        return R.style.TextAppearance_GestureTutorial_MainTitle_Overview;
+    }
+
+    @Override
+    public int getSuccessTitleTextAppearance() {
+        return R.style.TextAppearance_GestureTutorial_MainTitle_Success_Overview;
+    }
+
+    @Override
+    public int getDoneButtonTextAppearance() {
+        return R.style.TextAppearance_GestureTutorial_ButtonLabel_Overview;
+    }
+
+    @Override
+    public int getDoneButtonColor() {
+        return Utilities.isDarkTheme(mContext)
+                ? mTutorialFragment.mRootView.mColorOnSurfaceOverview
+                : mTutorialFragment.mRootView.mColorSecondaryOverview;
+    }
+
+    @Override
     protected int getMockAppTaskLayoutResId() {
         return mTutorialFragment.isLargeScreen()
                 ? R.layout.gesture_tutorial_tablet_mock_conversation_list
@@ -71,6 +122,53 @@
     }
 
     @Override
+    protected int getGestureLottieAnimationId() {
+        return mTutorialFragment.isLargeScreen()
+                ? mTutorialFragment.isFoldable()
+                    ? R.raw.overview_gesture_tutorial_open_foldable_animation
+                    : R.raw.overview_gesture_tutorial_tablet_animation
+                : R.raw.overview_gesture_tutorial_animation;
+    }
+
+    @ColorInt
+    private int getFakeTaskViewStartColor() {
+        return mTutorialFragment.mRootView.mColorSurfaceOverview;
+    }
+
+    @ColorInt
+    private int getFakeTaskViewEndColor() {
+        return getMockPreviousAppTaskThumbnailColor();
+    }
+
+    @Override
+    protected int getFakeTaskViewColor() {
+        return isGestureCompleted()
+                ? getFakeTaskViewEndColor()
+                : getFakeTaskViewStartColor();
+    }
+
+    @Override
+    protected int getFakeLauncherColor() {
+        return ColorUtils.blendARGB(
+                mTutorialFragment.mRootView.mColorSurfaceContainer,
+                mTutorialFragment.mRootView.mColorOnSurfaceOverview,
+                LAUNCHER_COLOR_BLENDING_RATIO);
+    }
+
+    @Override
+    protected int getHotseatIconColor() {
+        return mTutorialFragment.mRootView.mColorOnSurfaceOverview;
+    }
+
+    @Override
+    protected int getMockPreviousAppTaskThumbnailColor() {
+        return ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()
+                ? mTutorialFragment.mRootView.mColorSurfaceContainer
+                : mContext.getResources().getColor(
+                        R.color.gesture_tutorial_fake_previous_task_view_color);
+    }
+
+    @Override
     public void onBackGestureAttempted(BackGestureResult result) {
         if (isGestureCompleted()) {
             return;
@@ -82,6 +180,8 @@
                     case BACK_COMPLETED_FROM_RIGHT:
                     case BACK_CANCELLED_FROM_LEFT:
                     case BACK_CANCELLED_FROM_RIGHT:
+                    case BACK_NOT_STARTED_TOO_FAR_FROM_EDGE:
+                        resetTaskViews();
                         showFeedback(R.string.overview_gesture_feedback_swipe_too_far_from_edge);
                         break;
                 }
@@ -89,7 +189,7 @@
             case OVERVIEW_NAVIGATION_COMPLETE:
                 if (result == BackGestureResult.BACK_COMPLETED_FROM_LEFT
                         || result == BackGestureResult.BACK_COMPLETED_FROM_RIGHT) {
-                    mTutorialFragment.closeTutorial();
+                    mTutorialFragment.close();
                 }
                 break;
         }
@@ -112,34 +212,64 @@
                     }
                     case HOME_NOT_STARTED_TOO_FAR_FROM_EDGE:
                     case OVERVIEW_NOT_STARTED_TOO_FAR_FROM_EDGE:
+                        resetTaskViews();
                         showFeedback(R.string.overview_gesture_feedback_swipe_too_far_from_edge);
                         break;
                     case OVERVIEW_GESTURE_COMPLETED:
+                        setGestureCompleted();
                         mTutorialFragment.releaseFeedbackAnimation();
-                        animateTaskViewToOverview();
+                        animateTaskViewToOverview(ENABLE_NEW_GESTURE_NAV_TUTORIAL.get());
                         onMotionPaused(true /*arbitrary value*/);
-                        showSuccessFeedback();
+                        if (!ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) {
+                            showSuccessFeedback();
+                        }
                         break;
                     case HOME_OR_OVERVIEW_NOT_STARTED_WRONG_SWIPE_DIRECTION:
                     case HOME_OR_OVERVIEW_CANCELLED:
-                        fadeOutFakeTaskView(false, true, null);
+                        fadeOutFakeTaskView(false, null);
                         showFeedback(R.string.overview_gesture_feedback_wrong_swipe_direction);
                         break;
                 }
                 break;
             case OVERVIEW_NAVIGATION_COMPLETE:
                 if (result == NavBarGestureResult.HOME_GESTURE_COMPLETED) {
-                    mTutorialFragment.closeTutorial();
+                    mTutorialFragment.close();
                 }
                 break;
         }
     }
 
-    public void animateTaskViewToOverview() {
+    /**
+     * runnable executed with slight delay to ease the swipe animation after landing on overview
+     */
+    public void animateTaskViewToOverview(boolean animateDelayedSuccessFeedback) {
         PendingAnimation anim = new PendingAnimation(TASK_VIEW_END_ANIMATION_DURATION_MILLIS);
         anim.setFloat(mTaskViewSwipeUpAnimation
                 .getCurrentShift(), AnimatedFloat.VALUE, 1, ACCEL);
 
+        if (animateDelayedSuccessFeedback) {
+            anim.addListener(new AnimatorListenerAdapter() {
+                @Override
+                public void onAnimationEnd(Animator animator) {
+                    new Handler().postDelayed(
+                            () -> fadeOutFakeTaskView(
+                                    /* toOverviewFirst= */ true,
+                                    /* animatePreviousTask= */ false,
+                                    /* resetViews= */ false,
+                                    /* updateListener= */ v -> mFakeTaskView.setBackgroundColor(
+                                            ColorUtils.blendARGB(
+                                                    getFakeTaskViewStartColor(),
+                                                    getFakeTaskViewEndColor(),
+                                                    v.getAnimatedFraction())),
+                                    /* onEndRunnable= */ () -> {
+                                        showSuccessFeedback();
+                                        resetTaskViews();
+                                    }),
+                            TASK_VIEW_FILL_SCREEN_ANIMATION_DELAY_MILLIS);
+                }
+            });
+        }
+
         ArrayList<Animator> animators = new ArrayList<>();
 
         if (mTutorialFragment.isLargeScreen()) {
@@ -154,7 +284,6 @@
 
         AnimatorSet animset = new AnimatorSet();
         animset.playTogether(animators);
-        hideFakeTaskbar(/* animateToHotseat= */ false);
         animset.start();
         mRunningWindowAnim = SwipeUpAnimationLogic.RunningWindowAnim.wrap(animset);
     }
diff --git a/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialFragment.java b/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialFragment.java
index 4e1521f..01074dd 100644
--- a/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialFragment.java
+++ b/quickstep/src/com/android/quickstep/interaction/OverviewGestureTutorialFragment.java
@@ -33,7 +33,13 @@
 /** Shows the Overview gesture interactive tutorial. */
 public class OverviewGestureTutorialFragment extends TutorialFragment {
 
-    public OverviewGestureTutorialFragment() {}
+    public OverviewGestureTutorialFragment() {
+        this(false);
+    }
+
+    public OverviewGestureTutorialFragment(boolean fromTutorialMenu) {
+        super(fromTutorialMenu);
+    }
 
     @Nullable
     @Override
@@ -67,7 +73,7 @@
             @Override
             public void onAnimationStart(Animator animation) {
                 super.onAnimationStart(animation);
-                controller.animateTaskViewToOverview();
+                controller.animateTaskViewToOverview(false);
             }
         });
 
@@ -76,7 +82,7 @@
             @Override
             public void onAnimationEnd(Animator animation) {
                 super.onAnimationEnd(animation);
-                controller.resetFakeTaskView(false);
+                controller.resetFakeTaskViewFromOverview();
             }
         });
         ArrayList<Animator> animators = new ArrayList<>();
diff --git a/quickstep/src/com/android/quickstep/interaction/RootSandboxLayout.java b/quickstep/src/com/android/quickstep/interaction/RootSandboxLayout.java
index ac0c17d..affedb9 100644
--- a/quickstep/src/com/android/quickstep/interaction/RootSandboxLayout.java
+++ b/quickstep/src/com/android/quickstep/interaction/RootSandboxLayout.java
@@ -15,27 +15,98 @@
  */
 package com.android.quickstep.interaction;
 
+import static com.android.launcher3.config.FeatureFlags.ENABLE_NEW_GESTURE_NAV_TUTORIAL;
+
 import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Color;
 import android.graphics.Insets;
+import android.graphics.Rect;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
+import android.view.View;
 import android.view.WindowInsets;
 import android.widget.RelativeLayout;
 
+import androidx.annotation.ColorInt;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.fragment.app.FragmentManager;
 
+import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
+
 /** Root layout that TutorialFragment uses to intercept motion events. */
 public class RootSandboxLayout extends RelativeLayout {
+
+    private final Rect mTempStepIndicatorBounds = new Rect();
+    private final Rect mTempInclusionBounds = new Rect();
+    private final Rect mTempExclusionBounds = new Rect();
+
+    @ColorInt final int mColorSurfaceContainer;
+    @ColorInt final int mColorOnSurfaceHome;
+    @ColorInt final int mColorSurfaceHome;
+    @ColorInt final int mColorSecondaryHome;
+    @ColorInt final int mColorOnSurfaceBack;
+    @ColorInt final int mColorSurfaceBack;
+    @ColorInt final int mColorSecondaryBack;
+    @ColorInt final int mColorOnSurfaceOverview;
+    @ColorInt final int mColorSurfaceOverview;
+    @ColorInt final int mColorSecondaryOverview;
+
+    private View mFeedbackView;
+    private View mTutorialStepView;
+    private View mSkipButton;
+    private View mDoneButton;
+
     public RootSandboxLayout(Context context) {
-        super(context);
+        this(context, null);
     }
 
     public RootSandboxLayout(Context context, AttributeSet attrs) {
-        super(context, attrs);
+        this(context, attrs, 0);
     }
 
     public RootSandboxLayout(Context context, AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
+        this(context, attrs, defStyleAttr, 0);
+    }
+
+    public RootSandboxLayout(
+            @NonNull Context context,
+            @Nullable AttributeSet attrs,
+            int defStyleAttr,
+            int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        TypedArray ta = context.obtainStyledAttributes(
+                attrs,
+                R.styleable.RootSandboxLayout,
+                defStyleAttr,
+                defStyleRes);
+        boolean isDarkTheme = Utilities.isDarkTheme(context);
+        int colorSurface = isDarkTheme ? Color.BLACK : Color.WHITE;
+        int colorOnSurface = isDarkTheme ? Color.WHITE : Color.BLACK;
+        int colorSecondary = Color.GRAY;
+
+        mColorSurfaceContainer = ta.getColor(
+                R.styleable.RootSandboxLayout_surfaceContainer, colorSurface);
+        mColorOnSurfaceHome = ta.getColor(
+                R.styleable.RootSandboxLayout_onSurfaceHome, colorOnSurface);
+        mColorSurfaceHome = ta.getColor(R.styleable.RootSandboxLayout_surfaceHome, colorSurface);
+        mColorSecondaryHome = ta.getColor(
+                R.styleable.RootSandboxLayout_secondaryHome, colorSecondary);
+        mColorOnSurfaceBack = ta.getColor(
+                R.styleable.RootSandboxLayout_onSurfaceBack, colorOnSurface);
+        mColorSurfaceBack = ta.getColor(R.styleable.RootSandboxLayout_surfaceBack, colorSurface);
+        mColorSecondaryBack = ta.getColor(
+                R.styleable.RootSandboxLayout_secondaryBack, colorSecondary);
+        mColorOnSurfaceOverview = ta.getColor(
+                R.styleable.RootSandboxLayout_onSurfaceOverview, colorOnSurface);
+        mColorSurfaceOverview = ta.getColor(
+                R.styleable.RootSandboxLayout_surfaceOverview, colorSurface);
+        mColorSecondaryOverview = ta.getColor(
+                R.styleable.RootSandboxLayout_secondaryOverview, colorSecondary);
+
+        ta.recycle();
     }
 
     @Override
@@ -52,4 +123,56 @@
 
         return getHeight() + insets.top + insets.bottom;
     }
+
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+        if (ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) {
+            return;
+        }
+        mFeedbackView = findViewById(R.id.gesture_tutorial_fragment_feedback_view);
+        mTutorialStepView =
+                mFeedbackView.findViewById(R.id.gesture_tutorial_fragment_feedback_tutorial_step);
+        mSkipButton = mFeedbackView.findViewById(R.id.gesture_tutorial_fragment_close_button);
+        mDoneButton = mFeedbackView.findViewById(R.id.gesture_tutorial_fragment_action_button);
+
+        mFeedbackView.addOnLayoutChangeListener(
+                (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
+                    if (mSkipButton.getVisibility() != VISIBLE
+                            && mDoneButton.getVisibility() != VISIBLE) {
+                        return;
+                    }
+                    // Either the skip or the done button is ever shown at once, never both.
+                    boolean showingSkipButton = mSkipButton.getVisibility() == VISIBLE;
+                    boolean isRTL = Utilities.isRtl(getContext().getResources());
+                    updateTutorialStepViewTranslation(
+                            showingSkipButton ? mSkipButton : mDoneButton,
+                            // Translate the step indicator away from whichever button is being
+                            // shown. The skip button in on the left in LTR or on the right in RTL.
+                            // The done button is on the right in LTR or left in RTL.
+                            (showingSkipButton && !isRTL) || (!showingSkipButton && isRTL));
+                });
+    }
+
+    private void updateTutorialStepViewTranslation(
+            @NonNull View anchorView, boolean translateToRight) {
+        mTempStepIndicatorBounds.set(
+                mTutorialStepView.getLeft(),
+                mTutorialStepView.getTop(),
+                mTutorialStepView.getRight(),
+                mTutorialStepView.getBottom());
+        mTempInclusionBounds.set(0, 0, mFeedbackView.getWidth(), mFeedbackView.getHeight());
+        mTempExclusionBounds.set(
+                anchorView.getLeft(),
+                anchorView.getTop(),
+                anchorView.getRight(),
+                anchorView.getBottom());
+
+        Utilities.translateOverlappingView(
+                mTutorialStepView,
+                mTempStepIndicatorBounds,
+                mTempInclusionBounds,
+                mTempExclusionBounds,
+                translateToRight ? Utilities.TRANSLATE_RIGHT : Utilities.TRANSLATE_LEFT);
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/interaction/SandboxModeTutorialController.java b/quickstep/src/com/android/quickstep/interaction/SandboxModeTutorialController.java
deleted file mode 100644
index 19b7933..0000000
--- a/quickstep/src/com/android/quickstep/interaction/SandboxModeTutorialController.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2020 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.quickstep.interaction;
-
-import android.graphics.PointF;
-
-import com.android.launcher3.R;
-import com.android.quickstep.interaction.EdgeBackGestureHandler.BackGestureResult;
-import com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureResult;
-
-/** A {@link TutorialController} for the Sandbox Mode. */
-public class SandboxModeTutorialController extends SwipeUpGestureTutorialController {
-
-    SandboxModeTutorialController(SandboxModeTutorialFragment fragment, TutorialType tutorialType) {
-        super(fragment, tutorialType);
-    }
-
-    @Override
-    public void onBackGestureAttempted(BackGestureResult result) {
-        switch (result) {
-            case BACK_COMPLETED_FROM_LEFT:
-            case BACK_COMPLETED_FROM_RIGHT:
-                showRippleEffect(null);
-                showFeedback(R.string.sandbox_mode_back_gesture_feedback_successful);
-                break;
-            case BACK_CANCELLED_FROM_LEFT:
-            case BACK_CANCELLED_FROM_RIGHT:
-                showFeedback(R.string.back_gesture_feedback_cancelled);
-                break;
-            case BACK_NOT_STARTED_TOO_FAR_FROM_EDGE:
-                showFeedback(R.string.sandbox_mode_back_gesture_feedback_swipe_too_far_from_edge);
-                break;
-        }
-    }
-
-    @Override
-    public void onNavBarGestureAttempted(NavBarGestureResult result, PointF finalVelocity) {
-        switch (result) {
-            case ASSISTANT_COMPLETED:
-                showRippleEffect(null);
-                showFeedback(R.string.sandbox_mode_assistant_gesture_feedback_successful);
-                break;
-            case HOME_GESTURE_COMPLETED:
-                animateFakeTaskViewHome(finalVelocity, () -> {
-                    showFeedback(R.string.sandbox_mode_home_gesture_feedback_successful);
-                });
-                break;
-            case OVERVIEW_GESTURE_COMPLETED:
-                fadeOutFakeTaskView(true, true, () -> {
-                    showFeedback(R.string.sandbox_mode_overview_gesture_feedback_successful);
-                });
-                break;
-            case HOME_OR_OVERVIEW_NOT_STARTED_WRONG_SWIPE_DIRECTION:
-            case HOME_OR_OVERVIEW_CANCELLED:
-            case HOME_NOT_STARTED_TOO_FAR_FROM_EDGE:
-            case OVERVIEW_NOT_STARTED_TOO_FAR_FROM_EDGE:
-                showFeedback(R.string.home_gesture_feedback_swipe_too_far_from_edge);
-                break;
-        }
-    }
-}
diff --git a/quickstep/src/com/android/quickstep/interaction/SandboxModeTutorialFragment.java b/quickstep/src/com/android/quickstep/interaction/SandboxModeTutorialFragment.java
deleted file mode 100644
index 5183e2c..0000000
--- a/quickstep/src/com/android/quickstep/interaction/SandboxModeTutorialFragment.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2020 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.quickstep.interaction;
-
-import android.view.MotionEvent;
-import android.view.View;
-
-import androidx.annotation.NonNull;
-
-import com.android.launcher3.logging.StatsLogManager;
-import com.android.quickstep.interaction.TutorialController.TutorialType;
-
-/** Shows the general navigation gesture sandbox environment. */
-public class SandboxModeTutorialFragment extends TutorialFragment {
-
-    public SandboxModeTutorialFragment() {}
-
-    @Override
-    TutorialController createController(TutorialType type) {
-        return new SandboxModeTutorialController(this, type);
-    }
-
-    @Override
-    Class<? extends TutorialController> getControllerClass() {
-        return SandboxModeTutorialController.class;
-    }
-
-    @Override
-    public boolean onTouch(View view, MotionEvent motionEvent) {
-        if (motionEvent.getAction() == MotionEvent.ACTION_DOWN && mTutorialController != null) {
-            mTutorialController.setRippleHotspot(motionEvent.getX(), motionEvent.getY());
-        }
-        return super.onTouch(view, motionEvent);
-    }
-
-    @Override
-    void logTutorialStepShown(@NonNull StatsLogManager statsLogManager) {
-        // No-Op: tutorial step not currently shown to users
-    }
-
-    @Override
-    void logTutorialStepCompleted(@NonNull StatsLogManager statsLogManager) {
-        // No-Op: tutorial step not currently shown to users
-    }
-}
diff --git a/quickstep/src/com/android/quickstep/interaction/SwipeUpGestureTutorialController.java b/quickstep/src/com/android/quickstep/interaction/SwipeUpGestureTutorialController.java
index b70c411..0bbf373 100644
--- a/quickstep/src/com/android/quickstep/interaction/SwipeUpGestureTutorialController.java
+++ b/quickstep/src/com/android/quickstep/interaction/SwipeUpGestureTutorialController.java
@@ -33,7 +33,6 @@
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.os.Build;
-import android.view.SurfaceControl;
 import android.view.View;
 import android.view.ViewOutlineProvider;
 
@@ -43,26 +42,29 @@
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.InvariantDeviceProfile;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.anim.AnimatorListeners;
 import com.android.launcher3.anim.AnimatorPlaybackController;
 import com.android.launcher3.anim.PendingAnimation;
-import com.android.quickstep.AnimatedFloat;
 import com.android.quickstep.GestureState;
 import com.android.quickstep.OverviewComponentObserver;
 import com.android.quickstep.RecentsAnimationDeviceState;
 import com.android.quickstep.RemoteTargetGluer;
 import com.android.quickstep.SwipeUpAnimationLogic;
 import com.android.quickstep.SwipeUpAnimationLogic.RunningWindowAnim;
+import com.android.quickstep.util.RecordingSurfaceTransaction;
 import com.android.quickstep.util.RectFSpringAnim;
+import com.android.quickstep.util.SurfaceTransaction;
+import com.android.quickstep.util.SurfaceTransaction.MockProperties;
 import com.android.quickstep.util.TransformParams;
-import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams;
 
 @TargetApi(Build.VERSION_CODES.R)
 abstract class SwipeUpGestureTutorialController extends TutorialController {
 
-    private static final int FAKE_PREVIOUS_TASK_MARGIN = Utilities.dpToPx(12);
+    private static final int FAKE_PREVIOUS_TASK_MARGIN = Utilities.dpToPx(24);
 
     protected static final long TASK_VIEW_END_ANIMATION_DURATION_MILLIS = 300;
+    protected static final long TASK_VIEW_FILL_SCREEN_ANIMATION_DELAY_MILLIS = 300;
     private static final long HOME_SWIPE_ANIMATION_DURATION_MILLIS = 625;
     private static final long OVERVIEW_SWIPE_ANIMATION_DURATION_MILLIS = 1000;
 
@@ -76,23 +78,7 @@
     private final AnimatorListenerAdapter mResetTaskView = new AnimatorListenerAdapter() {
         @Override
         public void onAnimationEnd(Animator animation) {
-            mFakeHotseatView.setVisibility(View.INVISIBLE);
-            mFakeIconView.setVisibility(View.INVISIBLE);
-            if (mTutorialFragment.getActivity() != null) {
-                int height = mTutorialFragment.getRootView().getFullscreenHeight();
-                int width = mTutorialFragment.getRootView().getWidth();
-                mFakeTaskViewRect.set(0, 0, width, height);
-            }
-            mFakeTaskViewRadius = 0;
-            mFakeTaskView.invalidateOutline();
-            mFakeTaskView.setVisibility(View.VISIBLE);
-            mFakeTaskView.setAlpha(1);
-            mFakePreviousTaskView.setVisibility(View.INVISIBLE);
-            mFakePreviousTaskView.setAlpha(1);
-            mFakePreviousTaskView.setToSingleRowLayout(false);
-            mShowTasks = false;
-            mShowPreviousTasks = false;
-            mRunningWindowAnim = null;
+            resetTaskViews();
         }
     };
 
@@ -136,9 +122,40 @@
         mRunningWindowAnim = null;
     }
 
+    void resetTaskViews() {
+        mFakeHotseatView.setVisibility(View.INVISIBLE);
+        mFakeIconView.setVisibility(View.INVISIBLE);
+        if (mTutorialFragment.getActivity() != null) {
+            int height = mTutorialFragment.getRootView().getFullscreenHeight();
+            int width = mTutorialFragment.getRootView().getWidth();
+            mFakeTaskViewRect.set(0, 0, width, height);
+        }
+        mFakeTaskViewRadius = 0;
+        mFakeTaskView.invalidateOutline();
+        mFakeTaskView.setVisibility(View.VISIBLE);
+        mFakeTaskView.setAlpha(1);
+        mFakePreviousTaskView.setVisibility(View.INVISIBLE);
+        mFakePreviousTaskView.setAlpha(1);
+        mFakePreviousTaskView.setToSingleRowLayout(false);
+        mShowTasks = false;
+        mShowPreviousTasks = false;
+        mRunningWindowAnim = null;
+    }
+    void fadeOutFakeTaskView(boolean toOverviewFirst, @Nullable Runnable onEndRunnable) {
+        fadeOutFakeTaskView(
+                toOverviewFirst,
+                /* animatePreviousTask= */ true,
+                /* resetViews= */ true,
+                /* updateListener= */ null,
+                onEndRunnable);
+    }
+
     /** Fades the task view, optionally after animating to a fake Overview. */
-    void fadeOutFakeTaskView(boolean toOverviewFirst, boolean reset,
-                             @Nullable Runnable onEndRunnable) {
+    void fadeOutFakeTaskView(boolean toOverviewFirst,
+            boolean animatePreviousTask,
+            boolean resetViews,
+            @Nullable ValueAnimator.AnimatorUpdateListener updateListener,
+            @Nullable Runnable onEndRunnable) {
         cancelRunningAnimation();
         PendingAnimation anim = new PendingAnimation(300);
         if (toOverviewFirst) {
@@ -149,20 +166,20 @@
                 public void onAnimationEnd(Animator animation, boolean isReverse) {
                     PendingAnimation fadeAnim =
                             new PendingAnimation(TASK_VIEW_END_ANIMATION_DURATION_MILLIS);
-                    if (reset) {
-                        fadeAnim.setFloat(mTaskViewSwipeUpAnimation
-                                .getCurrentShift(), AnimatedFloat.VALUE, 0, ACCEL);
+                    fadeAnim.setFloat(mTaskViewSwipeUpAnimation
+                            .getCurrentShift(), AnimatedFloat.VALUE, 0, ACCEL);
+                    if (resetViews) {
                         fadeAnim.addListener(mResetTaskView);
-                    } else {
-                        fadeAnim.setViewAlpha(mFakeTaskView, 0, ACCEL);
-                        fadeAnim.setViewAlpha(mFakePreviousTaskView, 0, ACCEL);
                     }
                     if (onEndRunnable != null) {
                         fadeAnim.addListener(AnimatorListeners.forSuccessCallback(onEndRunnable));
                     }
+                    if (updateListener != null) {
+                        fadeAnim.addOnFrameListener(updateListener);
+                    }
                     AnimatorSet animset = fadeAnim.buildAnim();
 
-                    if (reset && mTutorialFragment.isLargeScreen()) {
+                    if (animatePreviousTask && mTutorialFragment.isLargeScreen()) {
                         animset.addListener(new AnimatorListenerAdapter() {
                             @Override
                             public void onAnimationStart(Animator animation) {
@@ -184,13 +201,10 @@
                 }
             });
         } else {
-            if (reset) {
-                anim.setFloat(mTaskViewSwipeUpAnimation
-                        .getCurrentShift(), AnimatedFloat.VALUE, 0, ACCEL);
+            anim.setFloat(mTaskViewSwipeUpAnimation
+                    .getCurrentShift(), AnimatedFloat.VALUE, 0, ACCEL);
+            if (resetViews) {
                 anim.addListener(mResetTaskView);
-            } else {
-                anim.setViewAlpha(mFakeTaskView, 0, ACCEL);
-                anim.setViewAlpha(mFakePreviousTaskView, 0, ACCEL);
             }
             if (onEndRunnable != null) {
                 anim.addListener(AnimatorListeners.forSuccessCallback(onEndRunnable));
@@ -202,7 +216,15 @@
         mRunningWindowAnim = RunningWindowAnim.wrap(animset);
     }
 
+    void resetFakeTaskViewFromOverview() {
+        resetFakeTaskView(false, false);
+    }
+
     void resetFakeTaskView(boolean animateFromHome) {
+        resetFakeTaskView(animateFromHome, true);
+    }
+
+    void resetFakeTaskView(boolean animateFromHome, boolean animateTaskbar) {
         mFakeTaskView.setVisibility(View.VISIBLE);
         PendingAnimation anim = new PendingAnimation(300);
         anim.setFloat(mTaskViewSwipeUpAnimation
@@ -210,7 +232,9 @@
         anim.setViewAlpha(mFakeTaskView, 1, ACCEL);
         anim.addListener(mResetTaskView);
         AnimatorSet animset = anim.buildAnim();
-        showFakeTaskbar(animateFromHome);
+        if (animateTaskbar) {
+            showFakeTaskbar(animateFromHome);
+        }
         animset.start();
         mRunningWindowAnim = RunningWindowAnim.wrap(animset);
     }
@@ -298,7 +322,7 @@
         }
 
         @Override
-        public void updateFinalShift() {
+        public void onCurrentShiftUpdated() {
             mRemoteTargetHandles[0].getPlaybackController()
                     .setProgress(mCurrentShift.value, mDragLengthFactor);
             mRemoteTargetHandles[0].getTaskViewSimulator().apply(
@@ -343,7 +367,7 @@
                     mFakeIconView.setVisibility(View.VISIBLE);
                     mFakeIconView.update(rect, progress,
                             1f - SHAPE_PROGRESS_DURATION /* shapeProgressStart */,
-                            radius, 255,
+                            radius,
                             false, /* isOpening */
                             mFakeIconView, mDp);
                     mFakeIconView.setAlpha(1);
@@ -358,7 +382,7 @@
             };
             RectFSpringAnim windowAnim = createWindowAnimationToHome(startShift,
                     homeAnimFactory)[0];
-            windowAnim.start(mContext, velocityPxPerMs);
+            windowAnim.start(mContext, mDp, velocityPxPerMs);
             return windowAnim;
         }
     }
@@ -415,21 +439,23 @@
     private class FakeTransformParams extends TransformParams {
 
         @Override
-        public SurfaceParams[] createSurfaceParams(BuilderProxy proxy) {
-            SurfaceParams.Builder builder = new SurfaceParams.Builder((SurfaceControl) null);
-            proxy.onBuildTargetParams(builder, null, this);
-            return new SurfaceParams[] {builder.build()};
+        public SurfaceTransaction createSurfaceParams(BuilderProxy proxy) {
+            RecordingSurfaceTransaction transaction = new RecordingSurfaceTransaction();
+            proxy.onBuildTargetParams(transaction.mockProperties, null, this);
+            return transaction;
         }
 
         @Override
-        public void applySurfaceParams(SurfaceParams[] params) {
-            SurfaceParams p = params[0];
-            mFakeTaskView.setAnimationMatrix(p.matrix);
-            mFakePreviousTaskView.setAnimationMatrix(p.matrix);
-            mFakeTaskViewRect.set(p.windowCrop);
-            mFakeTaskViewRadius = p.cornerRadius;
-            mFakeTaskView.invalidateOutline();
-            mFakePreviousTaskView.invalidateOutline();
+        public void applySurfaceParams(SurfaceTransaction params) {
+            if (params instanceof RecordingSurfaceTransaction) {
+                MockProperties p = ((RecordingSurfaceTransaction) params).mockProperties;
+                mFakeTaskView.setAnimationMatrix(p.matrix);
+                mFakePreviousTaskView.setAnimationMatrix(p.matrix);
+                mFakeTaskViewRect.set(p.windowCrop);
+                mFakeTaskViewRadius = p.cornerRadius;
+                mFakeTaskView.invalidateOutline();
+                mFakePreviousTaskView.invalidateOutline();
+            }
         }
     }
 }
diff --git a/quickstep/src/com/android/quickstep/interaction/TutorialController.java b/quickstep/src/com/android/quickstep/interaction/TutorialController.java
index fa7d848..5ec92a6 100644
--- a/quickstep/src/com/android/quickstep/interaction/TutorialController.java
+++ b/quickstep/src/com/android/quickstep/interaction/TutorialController.java
@@ -19,20 +19,26 @@
 import static android.view.View.NO_ID;
 import static android.view.View.inflate;
 
+import static com.android.launcher3.config.FeatureFlags.ENABLE_NEW_GESTURE_NAV_TUTORIAL;
+
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.AnimatorSet;
 import android.animation.ObjectAnimator;
 import android.animation.ValueAnimator;
-import android.annotation.ColorRes;
+import android.annotation.RawRes;
 import android.content.Context;
 import android.content.pm.PackageManager;
+import android.graphics.Color;
+import android.graphics.Outline;
+import android.graphics.Rect;
 import android.graphics.drawable.AnimatedVectorDrawable;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.RippleDrawable;
 import android.util.Log;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.ViewOutlineProvider;
 import android.view.accessibility.AccessibilityEvent;
 import android.widget.Button;
 import android.widget.FrameLayout;
@@ -41,11 +47,13 @@
 import android.widget.TextView;
 
 import androidx.annotation.CallSuper;
+import androidx.annotation.ColorInt;
 import androidx.annotation.DrawableRes;
 import androidx.annotation.LayoutRes;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.StringRes;
+import androidx.annotation.StyleRes;
 import androidx.appcompat.app.AlertDialog;
 import androidx.appcompat.content.res.AppCompatResources;
 
@@ -56,6 +64,9 @@
 import com.android.launcher3.views.ClipIconView;
 import com.android.quickstep.interaction.EdgeBackGestureHandler.BackGestureAttemptCallback;
 import com.android.quickstep.interaction.NavBarGestureHandler.NavBarGestureAttemptCallback;
+import com.android.systemui.shared.system.QuickStepContract;
+
+import com.airbnb.lottie.LottieAnimationView;
 
 import java.util.ArrayList;
 
@@ -76,6 +87,11 @@
     private static final int GESTURE_ANIMATION_DELAY_MS = 1500;
     private static final int ADVANCE_TUTORIAL_TIMEOUT_MS = 2000;
     private static final long GESTURE_ANIMATION_PAUSE_DURATION_MILLIS = 1000;
+    protected float mExitingAppEndingCornerRadius;
+    protected float mExitingAppStartingCornerRadius;
+    protected int mScreenHeight;
+    protected float mScreenWidth;
+    protected float mExitingAppMargin;
 
     final TutorialFragment mTutorialFragment;
     TutorialType mTutorialType;
@@ -85,21 +101,28 @@
     final Button mDoneButton;
     final ViewGroup mFeedbackView;
     final TextView mFeedbackTitleView;
+    final TextView mFeedbackSubtitleView;
     final ImageView mEdgeGestureVideoView;
     final RelativeLayout mFakeLauncherView;
     final FrameLayout mFakeHotseatView;
     @Nullable View mHotseatIconView;
     final ClipIconView mFakeIconView;
     final FrameLayout mFakeTaskView;
-    final AnimatedTaskbarView mFakeTaskbarView;
+    @Nullable final AnimatedTaskbarView mFakeTaskbarView;
     final AnimatedTaskView mFakePreviousTaskView;
     final View mRippleView;
     final RippleDrawable mRippleDrawable;
     final TutorialStepIndicator mTutorialStepView;
     final ImageView mFingerDotView;
+    private final Rect mExitingAppRect = new Rect();
+    protected View mExitingAppView;
+    protected int mExitingAppRadius;
     private final AlertDialog mSkipTutorialDialog;
 
     private boolean mGestureCompleted = false;
+    protected LottieAnimationView mAnimatedGestureDemonstration;
+    protected LottieAnimationView mCheckmarkAnimation;
+    private RelativeLayout mFullGestureDemonstration;
 
     // These runnables  should be used when posting callbacks to their views and cleared from their
     // views before posting new callbacks.
@@ -120,12 +143,15 @@
         mFeedbackView = rootView.findViewById(R.id.gesture_tutorial_fragment_feedback_view);
         mFeedbackTitleView = mFeedbackView.findViewById(
                 R.id.gesture_tutorial_fragment_feedback_title);
+        mFeedbackSubtitleView = mFeedbackView.findViewById(
+                R.id.gesture_tutorial_fragment_feedback_subtitle);
         mEdgeGestureVideoView = rootView.findViewById(R.id.gesture_tutorial_edge_gesture_video);
         mFakeLauncherView = rootView.findViewById(R.id.gesture_tutorial_fake_launcher_view);
         mFakeHotseatView = rootView.findViewById(R.id.gesture_tutorial_fake_hotseat_view);
         mFakeIconView = rootView.findViewById(R.id.gesture_tutorial_fake_icon_view);
         mFakeTaskView = rootView.findViewById(R.id.gesture_tutorial_fake_task_view);
-        mFakeTaskbarView = rootView.findViewById(R.id.gesture_tutorial_fake_taskbar_view);
+        mFakeTaskbarView = ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()
+                ? null : rootView.findViewById(R.id.gesture_tutorial_fake_taskbar_view);
         mFakePreviousTaskView =
                 rootView.findViewById(R.id.gesture_tutorial_fake_previous_task_view);
         mRippleView = rootView.findViewById(R.id.gesture_tutorial_ripple_view);
@@ -136,6 +162,31 @@
         mFingerDotView = rootView.findViewById(R.id.gesture_tutorial_finger_dot);
         mSkipTutorialDialog = createSkipTutorialDialog();
 
+        if (ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) {
+            mFullGestureDemonstration = rootView.findViewById(R.id.full_gesture_demonstration);
+            mCheckmarkAnimation = rootView.findViewById(R.id.checkmark_animation);
+            mAnimatedGestureDemonstration = rootView.findViewById(
+                    R.id.gesture_demonstration_animations);
+            mExitingAppView = rootView.findViewById(R.id.exiting_app_back);
+            mScreenWidth = mTutorialFragment.getDeviceProfile().widthPx;
+            mScreenHeight = mTutorialFragment.getDeviceProfile().heightPx;
+            mExitingAppMargin = mContext.getResources().getDimensionPixelSize(
+                    R.dimen.gesture_tutorial_back_gesture_exiting_app_margin);
+            mExitingAppStartingCornerRadius = QuickStepContract.getWindowCornerRadius(mContext);
+            mExitingAppEndingCornerRadius = mContext.getResources().getDimensionPixelSize(
+                    R.dimen.gesture_tutorial_back_gesture_end_corner_radius);
+
+            mFeedbackTitleView.setText(getIntroductionTitle());
+            mFeedbackSubtitleView.setText(getIntroductionSubtitle());
+            mExitingAppView.setClipToOutline(true);
+            mExitingAppView.setOutlineProvider(new ViewOutlineProvider() {
+                @Override
+                public void getOutline(View view, Outline outline) {
+                    outline.setRoundRect(mExitingAppRect, mExitingAppRadius);
+                }
+            });
+        }
+
         mTitleViewCallback = () -> mFeedbackTitleView.sendAccessibilityEvent(
                 AccessibilityEvent.TYPE_VIEW_FOCUSED);
         mShowFeedbackRunnable = () -> {
@@ -185,26 +236,60 @@
 
     @LayoutRes
     protected int getMockHotseatResId() {
-        return mTutorialFragment.isLargeScreen()
-                ? (mTutorialFragment.isFoldable()
+        if (ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) {
+            return mTutorialFragment.isLargeScreen()
+                    ? mTutorialFragment.isFoldable()
+                        ? R.layout.redesigned_gesture_tutorial_foldable_mock_hotseat
+                        : R.layout.redesigned_gesture_tutorial_tablet_mock_hotseat
+                    : R.layout.redesigned_gesture_tutorial_mock_hotseat;
+        } else {
+            return mTutorialFragment.isLargeScreen()
+                    ? mTutorialFragment.isFoldable()
                         ? R.layout.gesture_tutorial_foldable_mock_hotseat
-                        : R.layout.gesture_tutorial_tablet_mock_hotseat)
-                : R.layout.gesture_tutorial_mock_hotseat;
+                        : R.layout.gesture_tutorial_tablet_mock_hotseat
+                    : R.layout.gesture_tutorial_mock_hotseat;
+        }
     }
 
     @LayoutRes
     protected int getMockAppTaskLayoutResId() {
-        return View.NO_ID;
+        return NO_ID;
     }
 
-    @ColorRes
-    protected int getMockPreviousAppTaskThumbnailColorResId() {
-        return R.color.gesture_tutorial_fake_previous_task_view_color;
+    @RawRes
+    protected int getGestureLottieAnimationId() {
+        return NO_ID;
+    }
+
+    @ColorInt
+    protected int getMockPreviousAppTaskThumbnailColor() {
+        return mContext.getResources().getColor(
+                R.color.gesture_tutorial_fake_previous_task_view_color);
+    }
+
+    @ColorInt
+    protected int getFakeTaskViewColor() {
+        return Color.TRANSPARENT;
+    }
+
+    @ColorInt
+    protected abstract int getFakeLauncherColor();
+
+    @ColorInt
+    protected int getExitingAppColor() {
+        return Color.TRANSPARENT;
+    }
+
+    @ColorInt
+    protected int getHotseatIconColor() {
+        return Color.TRANSPARENT;
     }
 
     @DrawableRes
     public int getMockAppIconResId() {
-        return R.drawable.default_sandbox_app_icon;
+        return ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()
+                ? R.drawable.redesigned_hotseat_icon
+                : R.drawable.default_sandbox_app_icon;
     }
 
     @DrawableRes
@@ -236,6 +321,24 @@
         return NO_ID;
     }
 
+    @StyleRes
+    public int getTitleTextAppearance() {
+        return NO_ID;
+    }
+
+    @StyleRes
+    public int getSuccessTitleTextAppearance() {
+        return NO_ID;
+    }
+
+    @StyleRes
+    public int getDoneButtonTextAppearance() {
+        return NO_ID;
+    }
+
+    @ColorInt
+    public abstract int getDoneButtonColor();
+
     void showFeedback() {
         if (mGestureCompleted) {
             mFeedbackView.setTranslationY(0);
@@ -249,6 +352,14 @@
     }
 
     /**
+     * Only use this when a gesture is completed, but the feedback shouldn't be shown immediately.
+     * In that case, call this method immediately instead.
+     */
+    public void setGestureCompleted() {
+        mGestureCompleted = true;
+    }
+
+    /**
      * Show feedback reflecting a successful gesture attempt.
      **/
     void showSuccessFeedback() {
@@ -301,12 +412,12 @@
         }
 
         mFeedbackTitleView.setText(titleResId);
-        TextView subtitle =
-                mFeedbackView.findViewById(R.id.gesture_tutorial_fragment_feedback_subtitle);
-        subtitle.setText(spokenSubtitleResId == NO_ID
-                ? mContext.getText(subtitleResId)
-                : Utilities.wrapForTts(
-                        mContext.getText(subtitleResId), mContext.getString(spokenSubtitleResId)));
+        mFeedbackSubtitleView.setText(
+                ENABLE_NEW_GESTURE_NAV_TUTORIAL.get() || spokenSubtitleResId == NO_ID
+                        ? mContext.getText(subtitleResId)
+                        : Utilities.wrapForTts(
+                                mContext.getText(subtitleResId),
+                                mContext.getString(spokenSubtitleResId)));
         if (isGestureSuccessful) {
             if (mTutorialFragment.isAtFinalStep()) {
                 showActionButton();
@@ -316,6 +427,10 @@
                 mFakeTaskView.removeCallbacks(mFakeTaskViewCallback);
                 mFakeTaskViewCallback = null;
             }
+
+            if (ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) {
+                showSuccessPage();
+            }
         }
         mGestureCompleted = isGestureSuccessful;
 
@@ -336,6 +451,13 @@
         mFeedbackView.post(mFeedbackViewCallback);
     }
 
+    private void showSuccessPage() {
+        pauseAndHideLottieAnimation();
+        mCheckmarkAnimation.setVisibility(View.VISIBLE);
+        mCheckmarkAnimation.playAnimation();
+        mFeedbackTitleView.setTextAppearance(mContext, getSuccessTitleTextAppearance());
+    }
+
     public boolean isGestureCompleted() {
         return mGestureCompleted;
     }
@@ -358,7 +480,7 @@
             mFakeTaskView.removeCallbacks(mFakeTaskViewCallback);
             mFakeTaskViewCallback = null;
         }
-        if (mFakeTaskbarViewCallback != null) {
+        if (mFakeTaskbarViewCallback != null && mFakeTaskbarView != null) {
             mFakeTaskbarView.removeCallbacks(mFakeTaskbarViewCallback);
             mFakeTaskbarViewCallback = null;
         }
@@ -371,6 +493,14 @@
             @NonNull Runnable onStartRunnable,
             boolean useGestureAnimationDelay) {
 
+        if (ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) {
+            mFeedbackView.setVisibility(View.VISIBLE);
+            mAnimatedGestureDemonstration.setVisibility(View.VISIBLE);
+            mFullGestureDemonstration.setVisibility(View.VISIBLE);
+            mAnimatedGestureDemonstration.playAnimation();
+            return;
+        }
+
         if (gestureAnimation.isRunning()) {
             gestureAnimation.cancel();
         }
@@ -436,19 +566,58 @@
 
     @CallSuper
     void transitToController() {
-        hideFeedback();
-        hideActionButton();
         updateCloseButton();
         updateSubtext();
         updateDrawables();
         updateLayout();
 
+        if (ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) {
+            mFeedbackTitleView.setTextAppearance(mContext, getTitleTextAppearance());
+            mDoneButton.setTextAppearance(mContext, getDoneButtonTextAppearance());
+            mDoneButton.getBackground().setTint(getDoneButtonColor());
+            mCheckmarkAnimation.setAnimation(mTutorialFragment.isAtFinalStep()
+                    ? R.raw.checkmark_animation_end
+                    : R.raw.checkmark_animation_in_progress);
+            if (!isGestureCompleted()) {
+                mCheckmarkAnimation.setVisibility(GONE);
+                startGestureAnimation();
+                if (mTutorialType == TutorialType.BACK_NAVIGATION) {
+                    resetViewsForBackGesture();
+                }
+
+            }
+        } else {
+            hideFeedback();
+            hideActionButton();
+        }
+
         mGestureCompleted = false;
         if (mFakeHotseatView != null) {
             mFakeHotseatView.setVisibility(View.INVISIBLE);
         }
     }
 
+    protected void resetViewsForBackGesture() {
+        mFakeTaskView.setVisibility(View.VISIBLE);
+        mFakeTaskView.setBackgroundColor(getFakeTaskViewColor());
+        mExitingAppView.setVisibility(View.VISIBLE);
+
+        // reset the exiting app's dimensions
+        mExitingAppRect.set(0, 0, (int) mScreenWidth, (int) mScreenHeight);
+        mExitingAppRadius = 0;
+        mExitingAppView.resetPivot();
+        mExitingAppView.setScaleX(1f);
+        mExitingAppView.setScaleY(1f);
+        mExitingAppView.setTranslationX(0);
+        mExitingAppView.setTranslationY(0);
+        mExitingAppView.invalidateOutline();
+    }
+
+    private void startGestureAnimation() {
+        mAnimatedGestureDemonstration.setAnimation(getGestureLottieAnimationId());
+        mAnimatedGestureDemonstration.playAnimation();
+    }
+
     void updateCloseButton() {
         mSkipButton.setTextAppearance(Utilities.isDarkTheme(mContext)
                 ? R.style.TextAppearance_GestureTutorial_Feedback_Subtext
@@ -469,7 +638,7 @@
     }
 
     void hideFakeTaskbar(boolean animateToHotseat) {
-        if (!mTutorialFragment.isLargeScreen()) {
+        if (!mTutorialFragment.isLargeScreen() || mFakeTaskbarView == null) {
             return;
         }
         if (mFakeTaskbarViewCallback != null) {
@@ -478,14 +647,12 @@
         if (animateToHotseat) {
             mFakeTaskbarViewCallback = () ->
                     mFakeTaskbarView.animateDisappearanceToHotseat(mFakeHotseatView);
-        } else {
-            mFakeTaskbarViewCallback = mFakeTaskbarView::animateDisappearanceToBottom;
         }
         mFakeTaskbarView.post(mFakeTaskbarViewCallback);
     }
 
     void showFakeTaskbar(boolean animateFromHotseat) {
-        if (!mTutorialFragment.isLargeScreen()) {
+        if (!mTutorialFragment.isLargeScreen() || mFakeTaskbarView == null) {
             return;
         }
         if (mFakeTaskbarViewCallback != null) {
@@ -494,8 +661,6 @@
         if (animateFromHotseat) {
             mFakeTaskbarViewCallback = () ->
                     mFakeTaskbarView.animateAppearanceFromHotseat(mFakeHotseatView);
-        } else {
-            mFakeTaskbarViewCallback = mFakeTaskbarView::animateAppearanceFromBottom;
         }
         mFakeTaskbarView.post(mFakeTaskbarViewCallback);
     }
@@ -516,8 +681,15 @@
     }
 
     private void updateSubtext() {
-        mTutorialStepView.setTutorialProgress(
-                mTutorialFragment.getCurrentStep(), mTutorialFragment.getNumSteps());
+        if (!ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) {
+            mTutorialStepView.setTutorialProgress(
+                    mTutorialFragment.getCurrentStep(), mTutorialFragment.getNumSteps());
+        }
+    }
+
+    private void updateHotseatChildViewColor(@Nullable View child) {
+        if (child == null) return;
+        child.getBackground().setTint(getHotseatIconColor());
     }
 
     private void updateDrawables() {
@@ -525,17 +697,29 @@
             mTutorialFragment.getRootView().setBackground(AppCompatResources.getDrawable(
                     mContext, getMockWallpaperResId()));
             mTutorialFragment.updateFeedbackAnimation();
-            mFakeLauncherView.setBackgroundColor(
-                    mContext.getColor(R.color.gesture_tutorial_fake_wallpaper_color));
+            mFakeLauncherView.setBackgroundColor(ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()
+                    ? getFakeLauncherColor()
+                    : mContext.getColor(R.color.gesture_tutorial_fake_wallpaper_color));
             updateFakeViewLayout(mFakeHotseatView, getMockHotseatResId());
             mHotseatIconView = mFakeHotseatView.findViewById(R.id.hotseat_icon_1);
-            updateFakeViewLayout(mFakeTaskView, getMockAppTaskLayoutResId());
             mFakeTaskView.animate().alpha(1).setListener(
                     AnimatorListeners.forSuccessCallback(() -> mFakeTaskView.animate().cancel()));
-            mFakePreviousTaskView.setFakeTaskViewFillColor(mContext.getResources().getColor(
-                    getMockPreviousAppTaskThumbnailColorResId()));
+            mFakePreviousTaskView.setFakeTaskViewFillColor(getMockPreviousAppTaskThumbnailColor());
             mFakeIconView.setBackground(AppCompatResources.getDrawable(
                     mContext, getMockAppIconResId()));
+
+            if (ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) {
+                mExitingAppView.setBackgroundColor(getExitingAppColor());
+                mFakeTaskView.setBackgroundColor(getFakeTaskViewColor());
+                updateHotseatChildViewColor(mFakeIconView);
+                updateHotseatChildViewColor(mFakeHotseatView.findViewById(R.id.hotseat_icon_2));
+                updateHotseatChildViewColor(mFakeHotseatView.findViewById(R.id.hotseat_icon_3));
+                updateHotseatChildViewColor(mFakeHotseatView.findViewById(R.id.hotseat_icon_4));
+                updateHotseatChildViewColor(mFakeHotseatView.findViewById(R.id.hotseat_icon_5));
+                updateHotseatChildViewColor(mFakeHotseatView.findViewById(R.id.hotseat_search_bar));
+            } else {
+                updateFakeViewLayout(mFakeTaskView, getMockAppTaskLayoutResId());
+            }
         }
     }
 
@@ -558,7 +742,10 @@
                         ? R.dimen.gesture_tutorial_tablet_feedback_margin_top
                         : R.dimen.gesture_tutorial_feedback_margin_top);
 
-        mFakeTaskbarView.setVisibility(mTutorialFragment.isLargeScreen() ? View.VISIBLE : GONE);
+        if (mFakeTaskbarView != null) {
+            mFakeTaskbarView.setVisibility(
+                    mTutorialFragment.isLargeScreen() ? View.VISIBLE : GONE);
+        }
 
         RelativeLayout.LayoutParams hotseatLayoutParams =
                 (RelativeLayout.LayoutParams) mFakeHotseatView.getLayoutParams();
@@ -582,66 +769,65 @@
     }
 
     private AlertDialog createSkipTutorialDialog() {
-        if (mContext instanceof GestureSandboxActivity) {
-            GestureSandboxActivity sandboxActivity = (GestureSandboxActivity) mContext;
-            View contentView = View.inflate(
-                    sandboxActivity, R.layout.gesture_tutorial_dialog, null);
-            AlertDialog tutorialDialog = new AlertDialog
-                    .Builder(sandboxActivity, R.style.Theme_AppCompat_Dialog_Alert)
-                    .setView(contentView)
-                    .create();
+        if (!(mContext instanceof GestureSandboxActivity)) {
+            return null;
+        }
+        GestureSandboxActivity sandboxActivity = (GestureSandboxActivity) mContext;
+        View contentView = View.inflate(
+                sandboxActivity, R.layout.gesture_tutorial_dialog, null);
+        AlertDialog tutorialDialog = new AlertDialog
+                .Builder(sandboxActivity, R.style.Theme_AppCompat_Dialog_Alert)
+                .setView(contentView)
+                .create();
 
-            PackageManager packageManager = mContext.getPackageManager();
-            CharSequence tipsAppName = DEFAULT_PIXEL_TIPS_APP_NAME;
+        PackageManager packageManager = mContext.getPackageManager();
+        CharSequence tipsAppName = DEFAULT_PIXEL_TIPS_APP_NAME;
 
-            try {
-                tipsAppName = packageManager.getApplicationLabel(
-                        packageManager.getApplicationInfo(
-                                PIXEL_TIPS_APP_PACKAGE_NAME, PackageManager.GET_META_DATA));
-            } catch (PackageManager.NameNotFoundException e) {
-                Log.e(LOG_TAG,
-                        "Could not find app label for package name: "
-                                + PIXEL_TIPS_APP_PACKAGE_NAME
-                                + ". Defaulting to 'Pixel Tips.'",
-                        e);
-            }
-
-            TextView subtitleTextView = (TextView) contentView.findViewById(
-                    R.id.gesture_tutorial_dialog_subtitle);
-            if (subtitleTextView != null) {
-                subtitleTextView.setText(
-                        mContext.getString(R.string.skip_tutorial_dialog_subtitle, tipsAppName));
-            } else {
-                Log.w(LOG_TAG, "No subtitle view in the skip tutorial dialog to update.");
-            }
-
-            Button cancelButton = (Button) contentView.findViewById(
-                    R.id.gesture_tutorial_dialog_cancel_button);
-            if (cancelButton != null) {
-                cancelButton.setOnClickListener(
-                        v -> tutorialDialog.dismiss());
-            } else {
-                Log.w(LOG_TAG, "No cancel button in the skip tutorial dialog to update.");
-            }
-
-            Button confirmButton = contentView.findViewById(
-                    R.id.gesture_tutorial_dialog_confirm_button);
-            if (confirmButton != null) {
-                confirmButton.setOnClickListener(v -> {
-                    mTutorialFragment.closeTutorial(true);
-                    tutorialDialog.dismiss();
-                });
-            } else {
-                Log.w(LOG_TAG, "No confirm button in the skip tutorial dialog to update.");
-            }
-
-            tutorialDialog.getWindow().setBackgroundDrawable(
-                    new ColorDrawable(sandboxActivity.getColor(android.R.color.transparent)));
-
-            return tutorialDialog;
+        try {
+            tipsAppName = packageManager.getApplicationLabel(
+                    packageManager.getApplicationInfo(
+                            PIXEL_TIPS_APP_PACKAGE_NAME, PackageManager.GET_META_DATA));
+        } catch (PackageManager.NameNotFoundException e) {
+            Log.e(LOG_TAG,
+                    "Could not find app label for package name: "
+                            + PIXEL_TIPS_APP_PACKAGE_NAME
+                            + ". Defaulting to 'Pixel Tips.'",
+                    e);
         }
 
-        return null;
+        TextView subtitleTextView = (TextView) contentView.findViewById(
+                R.id.gesture_tutorial_dialog_subtitle);
+        if (subtitleTextView != null) {
+            subtitleTextView.setText(
+                    mContext.getString(R.string.skip_tutorial_dialog_subtitle, tipsAppName));
+        } else {
+            Log.w(LOG_TAG, "No subtitle view in the skip tutorial dialog to update.");
+        }
+
+        Button cancelButton = (Button) contentView.findViewById(
+                R.id.gesture_tutorial_dialog_cancel_button);
+        if (cancelButton != null) {
+            cancelButton.setOnClickListener(
+                    v -> tutorialDialog.dismiss());
+        } else {
+            Log.w(LOG_TAG, "No cancel button in the skip tutorial dialog to update.");
+        }
+
+        Button confirmButton = contentView.findViewById(
+                R.id.gesture_tutorial_dialog_confirm_button);
+        if (confirmButton != null) {
+            confirmButton.setOnClickListener(v -> {
+                mTutorialFragment.closeTutorialStep(true);
+                tutorialDialog.dismiss();
+            });
+        } else {
+            Log.w(LOG_TAG, "No confirm button in the skip tutorial dialog to update.");
+        }
+
+        tutorialDialog.getWindow().setBackgroundDrawable(
+                new ColorDrawable(sandboxActivity.getColor(android.R.color.transparent)));
+
+        return tutorialDialog;
     }
 
     protected AnimatorSet createFingerDotAppearanceAnimatorSet() {
@@ -690,6 +876,12 @@
         return ValueAnimator.ofFloat(0f, 1f).setDuration(GESTURE_ANIMATION_PAUSE_DURATION_MILLIS);
     }
 
+    void pauseAndHideLottieAnimation() {
+        mAnimatedGestureDemonstration.pauseAnimation();
+        mAnimatedGestureDemonstration.setVisibility(View.INVISIBLE);
+        mFullGestureDemonstration.setVisibility(View.INVISIBLE);
+    }
+
     /** Denotes the type of the tutorial. */
     enum TutorialType {
         BACK_NAVIGATION,
@@ -697,9 +889,6 @@
         HOME_NAVIGATION,
         HOME_NAVIGATION_COMPLETE,
         OVERVIEW_NAVIGATION,
-        OVERVIEW_NAVIGATION_COMPLETE,
-        ASSISTANT,
-        ASSISTANT_COMPLETE,
-        SANDBOX_MODE
+        OVERVIEW_NAVIGATION_COMPLETE
     }
 }
diff --git a/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java b/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java
index 1599c8c..bfad643 100644
--- a/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java
+++ b/quickstep/src/com/android/quickstep/interaction/TutorialFragment.java
@@ -17,10 +17,14 @@
 
 import static android.view.View.NO_ID;
 
+import static com.android.launcher3.config.FeatureFlags.ENABLE_NEW_GESTURE_NAV_TUTORIAL;
+import static com.android.quickstep.interaction.GestureSandboxActivity.KEY_GESTURE_COMPLETE;
+import static com.android.quickstep.interaction.GestureSandboxActivity.KEY_TUTORIAL_TYPE;
+import static com.android.quickstep.interaction.GestureSandboxActivity.KEY_USE_TUTORIAL_MENU;
+
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.app.Activity;
-import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.graphics.Insets;
@@ -41,8 +45,6 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentActivity;
 
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.InvariantDeviceProfile;
@@ -52,16 +54,17 @@
 
 import java.util.Set;
 
-abstract class TutorialFragment extends Fragment implements OnTouchListener {
+/** Displays a gesture nav tutorial step. */
+abstract class TutorialFragment extends GestureSandboxFragment implements OnTouchListener {
 
     private static final String LOG_TAG = "TutorialFragment";
-    static final String KEY_TUTORIAL_TYPE = "tutorial_type";
-    static final String KEY_GESTURE_COMPLETE = "gesture_complete";
 
     private static final String TUTORIAL_SKIPPED_PREFERENCE_KEY = "pref_gestureTutorialSkipped";
     private static final String COMPLETED_TUTORIAL_STEPS_PREFERENCE_KEY =
             "pref_completedTutorialSteps";
 
+    private final boolean mFromTutorialMenu;
+
     TutorialType mTutorialType;
     boolean mGestureComplete = false;
     @Nullable TutorialController mTutorialController = null;
@@ -83,10 +86,10 @@
     private boolean mIsFoldable;
 
     public static TutorialFragment newInstance(
-            TutorialType tutorialType, boolean gestureComplete) {
-        TutorialFragment fragment = getFragmentForTutorialType(tutorialType);
+            TutorialType tutorialType, boolean gestureComplete, boolean fromTutorialMenu) {
+        TutorialFragment fragment = getFragmentForTutorialType(tutorialType, fromTutorialMenu);
         if (fragment == null) {
-            fragment = new BackGestureTutorialFragment();
+            fragment = new BackGestureTutorialFragment(fromTutorialMenu);
             tutorialType = TutorialType.BACK_NAVIGATION;
         }
 
@@ -97,23 +100,23 @@
         return fragment;
     }
 
+    TutorialFragment(boolean fromTutorialMenu) {
+        mFromTutorialMenu = fromTutorialMenu;
+    }
+
     @Nullable
-    private static TutorialFragment getFragmentForTutorialType(TutorialType tutorialType) {
+    private static TutorialFragment getFragmentForTutorialType(
+            TutorialType tutorialType, boolean fromTutorialMenu) {
         switch (tutorialType) {
             case BACK_NAVIGATION:
             case BACK_NAVIGATION_COMPLETE:
-                return new BackGestureTutorialFragment();
+                return new BackGestureTutorialFragment(fromTutorialMenu);
             case HOME_NAVIGATION:
             case HOME_NAVIGATION_COMPLETE:
-                return new HomeGestureTutorialFragment();
+                return new HomeGestureTutorialFragment(fromTutorialMenu);
             case OVERVIEW_NAVIGATION:
             case OVERVIEW_NAVIGATION_COMPLETE:
-                return new OverviewGestureTutorialFragment();
-            case ASSISTANT:
-            case ASSISTANT_COMPLETE:
-                return new AssistantGestureTutorialFragment();
-            case SANDBOX_MODE:
-                return new SandboxModeTutorialFragment();
+                return new OverviewGestureTutorialFragment(fromTutorialMenu);
             default:
                 Log.e(LOG_TAG, "Failed to find an appropriate fragment for " + tutorialType.name());
         }
@@ -140,6 +143,7 @@
         return null;
     }
 
+    @NonNull
     abstract TutorialController createController(TutorialType type);
 
     abstract Class<? extends TutorialController> getControllerClass();
@@ -184,7 +188,12 @@
         super.onCreateView(inflater, container, savedInstanceState);
 
         mRootView = (RootSandboxLayout) inflater.inflate(
-                R.layout.gesture_tutorial_fragment, container, false);
+                ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()
+                        ? R.layout.redesigned_gesture_tutorial_fragment
+                        : R.layout.gesture_tutorial_fragment,
+                container,
+                false);
+
         mRootView.setOnApplyWindowInsetsListener((view, insets) -> {
             Insets systemInsets = insets.getInsets(WindowInsets.Type.systemBars());
             mEdgeBackGestureHandler.setInsets(systemInsets.left, systemInsets.right);
@@ -195,6 +204,7 @@
         mFingerDotView = mRootView.findViewById(R.id.gesture_tutorial_finger_dot);
         mFakePreviousTaskView = mRootView.findViewById(
                 R.id.gesture_tutorial_fake_previous_task_view);
+
         return mRootView;
     }
 
@@ -305,7 +315,6 @@
         if (mEdgeAnimation != null && mEdgeAnimation.isRunning()) {
             mEdgeAnimation.stop();
         }
-
         mEdgeGestureVideoView.setVisibility(View.GONE);
     }
 
@@ -333,6 +342,11 @@
         if (mTutorialController != null && !isGestureComplete()) {
             mTutorialController.hideFeedback();
         }
+
+        if (ENABLE_NEW_GESTURE_NAV_TUTORIAL.get()) {
+            mTutorialController.pauseAndHideLottieAnimation();
+        }
+
         // Note: Using logical-or to ensure both functions get called.
         return mEdgeBackGestureHandler.onTouch(view, motionEvent)
                 | mNavBarGestureHandler.onTouch(view, motionEvent);
@@ -344,6 +358,7 @@
                 | mNavBarGestureHandler.onInterceptTouch(motionEvent);
     }
 
+    @Override
     void onAttachedToWindow() {
         StatsLogManager statsLogManager = getStatsLogManager();
         if (statsLogManager != null) {
@@ -352,6 +367,7 @@
         mEdgeBackGestureHandler.setViewGroupParent(getRootView());
     }
 
+    @Override
     void onDetachedFromWindow() {
         mEdgeBackGestureHandler.setViewGroupParent(null);
     }
@@ -359,9 +375,15 @@
     void changeController(TutorialType tutorialType) {
         if (getControllerClass().isInstance(mTutorialController)) {
             mTutorialController.setTutorialType(tutorialType);
+            if (isGestureComplete()) {
+                mTutorialController.setGestureCompleted();
+            }
             mTutorialController.fadeTaskViewAndRun(mTutorialController::transitToController);
         } else {
             mTutorialController = createController(tutorialType);
+            if (isGestureComplete()) {
+                mTutorialController.setGestureCompleted();
+            }
             mTutorialController.transitToController();
         }
         mEdgeBackGestureHandler.registerBackGestureAttemptCallback(mTutorialController);
@@ -374,6 +396,8 @@
     @Override
     public void onSaveInstanceState(Bundle savedInstanceState) {
         savedInstanceState.putSerializable(KEY_TUTORIAL_TYPE, mTutorialType);
+        savedInstanceState.putBoolean(KEY_GESTURE_COMPLETE, isGestureComplete());
+        savedInstanceState.putBoolean(KEY_USE_TUTORIAL_MENU, mFromTutorialMenu);
         super.onSaveInstanceState(savedInstanceState);
     }
 
@@ -399,17 +423,18 @@
 
         GestureSandboxActivity gestureSandboxActivity = getGestureSandboxActivity();
         if (gestureSandboxActivity == null) {
-            closeTutorial();
+            close();
             return;
         }
         gestureSandboxActivity.continueTutorial();
     }
 
-    void closeTutorial() {
-        closeTutorial(false);
+    @Override
+    void close() {
+        closeTutorialStep(false);
     }
 
-    void closeTutorial(boolean tutorialSkipped) {
+    void closeTutorialStep(boolean tutorialSkipped) {
         if (tutorialSkipped) {
             SharedPreferences sharedPrefs = getSharedPreferences();
             if (sharedPrefs != null) {
@@ -421,11 +446,12 @@
                         StatsLogManager.LauncherEvent.LAUNCHER_GESTURE_TUTORIAL_SKIPPED);
             }
         }
-        FragmentActivity activity = getActivity();
-        if (activity != null) {
-            activity.setResult(Activity.RESULT_OK);
-            activity.finish();
+        GestureSandboxActivity gestureSandboxActivity = getGestureSandboxActivity();
+        if (mFromTutorialMenu && gestureSandboxActivity != null) {
+            gestureSandboxActivity.launchTutorialMenu();
+            return;
         }
+        super.close();
     }
 
     void startSystemNavigationSetting() {
@@ -459,9 +485,10 @@
 
     @Nullable
     private GestureSandboxActivity getGestureSandboxActivity() {
-        Context context = getContext();
+        Activity activity = getActivity();
 
-        return context instanceof GestureSandboxActivity ? (GestureSandboxActivity) context : null;
+        return activity instanceof GestureSandboxActivity
+                ? (GestureSandboxActivity) activity : null;
     }
 
     @Nullable
diff --git a/quickstep/src/com/android/quickstep/logging/SettingsChangeLogger.java b/quickstep/src/com/android/quickstep/logging/SettingsChangeLogger.java
index bd0250d..d3a01f2 100644
--- a/quickstep/src/com/android/quickstep/logging/SettingsChangeLogger.java
+++ b/quickstep/src/com/android/quickstep/logging/SettingsChangeLogger.java
@@ -16,8 +16,9 @@
 
 package com.android.quickstep.logging;
 
-import static com.android.launcher3.Utilities.getDevicePrefs;
-import static com.android.launcher3.Utilities.getPrefs;
+import static com.android.launcher3.LauncherPrefs.THEMED_ICONS;
+import static com.android.launcher3.LauncherPrefs.getDevicePrefs;
+import static com.android.launcher3.LauncherPrefs.getPrefs;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_HOME_SCREEN_SUGGESTIONS_DISABLED;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_HOME_SCREEN_SUGGESTIONS_ENABLED;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_NOTIFICATION_DOT_DISABLED;
@@ -39,16 +40,17 @@
 import android.util.Xml;
 
 import com.android.launcher3.AutoInstallsLayout;
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.R;
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.logging.InstanceId;
 import com.android.launcher3.logging.StatsLogManager;
 import com.android.launcher3.logging.StatsLogManager.StatsLogger;
 import com.android.launcher3.model.DeviceGridState;
 import com.android.launcher3.util.DisplayController;
 import com.android.launcher3.util.DisplayController.Info;
-import com.android.launcher3.util.DisplayController.NavigationMode;
 import com.android.launcher3.util.MainThreadInitializedObject;
+import com.android.launcher3.util.NavigationMode;
+import com.android.launcher3.util.SafeCloseable;
 import com.android.launcher3.util.SettingsCache;
 
 import org.xmlpull.v1.XmlPullParser;
@@ -61,7 +63,8 @@
  * Utility class to log launcher settings changes
  */
 public class SettingsChangeLogger implements
-        DisplayController.DisplayInfoChangeListener, OnSharedPreferenceChangeListener {
+        DisplayController.DisplayInfoChangeListener, OnSharedPreferenceChangeListener,
+        SafeCloseable {
 
     /**
      * Singleton instance
@@ -179,16 +182,20 @@
                 logger::log);
 
         SharedPreferences prefs = getPrefs(mContext);
-        if (FeatureFlags.ENABLE_THEMED_ICONS.get()) {
-            logger.log(prefs.getBoolean(KEY_THEMED_ICONS, false)
-                    ? LAUNCHER_THEMED_ICON_ENABLED
-                    : LAUNCHER_THEMED_ICON_DISABLED);
-        }
+        logger.log(LauncherPrefs.get(mContext).get(THEMED_ICONS)
+                ? LAUNCHER_THEMED_ICON_ENABLED
+                : LAUNCHER_THEMED_ICON_DISABLED);
 
         mLoggablePrefs.forEach((key, lp) -> logger.log(() ->
                 prefs.getBoolean(key, lp.defaultValue) ? lp.eventIdOn : lp.eventIdOff));
     }
 
+    @Override
+    public void close() {
+        getPrefs(mContext).unregisterOnSharedPreferenceChangeListener(this);
+        getDevicePrefs(mContext).unregisterOnSharedPreferenceChangeListener(this);
+    }
+
     private static class LoggablePref {
         public boolean defaultValue;
         public int eventIdOn;
diff --git a/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java b/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java
index 45c8036..6288937 100644
--- a/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java
+++ b/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java
@@ -62,11 +62,14 @@
 import com.android.launcher3.model.data.FolderInfo;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.util.Executors;
+import com.android.launcher3.util.IntArray;
 import com.android.launcher3.util.LogConfig;
 import com.android.launcher3.views.ActivityContext;
 import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
 import com.android.systemui.shared.system.SysUiStatsLog;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Optional;
 import java.util.OptionalInt;
 import java.util.concurrent.CopyOnWriteArrayList;
@@ -85,6 +88,7 @@
 
     private static final String TAG = "StatsLog";
     private static final String LATENCY_TAG = "StatsLatencyLog";
+    private static final String IMPRESSION_TAG = "StatsImpressionLog";
     private static final boolean IS_VERBOSE = Utilities.isPropertyEnabled(LogConfig.STATSLOG);
     private static final InstanceId DEFAULT_INSTANCE_ID = InstanceId.fakeInstanceId(0);
     // LauncherAtom.ItemInfo.getDefaultInstance() should be used but until launcher proto migrates
@@ -119,7 +123,12 @@
 
     @Override
     protected StatsLatencyLogger createLatencyLogger() {
-        return new StatsCompatLatencyLogger(mContext, mActivityContext);
+        return new StatsCompatLatencyLogger();
+    }
+
+    @Override
+    protected StatsImpressionLogger createImpressionLogger() {
+        return new StatsCompatImpressionLogger();
     }
 
     /**
@@ -130,7 +139,7 @@
         if (IS_VERBOSE) {
             Log.d(TAG, String.format("\nwriteSnapshot(%d):\n%s", instanceId.getId(), info));
         }
-        if (!Utilities.ATLEAST_R || Utilities.IS_RUNNING_IN_TEST_HARNESS) {
+        if (!Utilities.ATLEAST_R || Utilities.isRunningInTestHarness()) {
             return;
         }
         SysUiStatsLog.write(SysUiStatsLog.LAUNCHER_SNAPSHOT,
@@ -190,7 +199,8 @@
                 getCardinality(info), // cardinality = 16;
                 info.getWidget().getSpanX(), // span_x = 17 [default = 1];
                 info.getWidget().getSpanY(), // span_y = 18 [default = 1];
-                getAttributes(info) /* attributes */
+                getAttributes(info) /* attributes = 19 [(log_mode) = MODE_BYTES] */,
+                info.getIsKidsMode() /* is_kids_mode = 20 */
         );
     }
 
@@ -216,6 +226,8 @@
         private Optional<String> mEditText = Optional.empty();
         private SliceItem mSliceItem;
         private LauncherAtom.Slice mSlice;
+        private Optional<Integer> mCardinality = Optional.empty();
+        private int mInputType = SysUiStatsLog.LAUNCHER_UICHANGED__INPUT_TYPE__UNKNOWN;
 
         StatsCompatLogger(Context context, ActivityContext activityContext) {
             mContext = context;
@@ -303,6 +315,18 @@
         }
 
         @Override
+        public StatsLogger withCardinality(int cardinality) {
+            this.mCardinality = Optional.of(cardinality);
+            return this;
+        }
+
+        @Override
+        public StatsLogger withInputType(int inputType) {
+            this.mInputType = inputType;
+            return this;
+        }
+
+        @Override
         public void log(EventEnum event) {
             if (!Utilities.ATLEAST_R) {
                 return;
@@ -325,6 +349,10 @@
                 return;
             }
 
+            if (mItemInfo == null) {
+                return;
+            }
+
             if (mItemInfo.container < 0 || appState == null) {
                 // Write log on the model thread so that logs do not go out of order
                 // (for eg: drop comes after drag)
@@ -336,8 +364,9 @@
                 appState.getModel().enqueueModelUpdateTask(
                         new BaseModelUpdateTask() {
                             @Override
-                            public void execute(LauncherAppState app, BgDataModel dataModel,
-                                    AllAppsList apps) {
+                            public void execute(@NonNull final LauncherAppState app,
+                                    @NonNull final BgDataModel dataModel,
+                                    @NonNull final AllAppsList apps) {
                                 FolderInfo folderInfo = dataModel.folders.get(mItemInfo.container);
                                 write(event, applyOverwrites(mItemInfo.buildProto(folderInfo)));
                             }
@@ -391,6 +420,7 @@
             InstanceId instanceId = mInstanceId;
             int srcState = mSrcState;
             int dstState = mDstState;
+            int inputType = mInputType;
             if (IS_VERBOSE) {
                 String name = (event instanceof Enum) ? ((Enum) event).name() :
                         event.getId() + "";
@@ -416,9 +446,10 @@
             }
 
             // TODO: remove this when b/231648228 is fixed.
-            if (Utilities.IS_RUNNING_IN_TEST_HARNESS) {
+            if (Utilities.isRunningInTestHarness()) {
                 return;
             }
+            int cardinality = mCardinality.orElseGet(() -> getCardinality(atomInfo));
             SysUiStatsLog.write(
                     SysUiStatsLog.LAUNCHER_EVENT,
                     SysUiStatsLog.LAUNCHER_UICHANGED__ACTION__DEFAULT_ACTION /* deprecated */,
@@ -444,10 +475,11 @@
                     atomInfo.getFolderIcon().getFromLabelState().getNumber() /* fromState */,
                     atomInfo.getFolderIcon().getToLabelState().getNumber() /* toState */,
                     atomInfo.getFolderIcon().getLabelInfo() /* edittext */,
-                    getCardinality(atomInfo) /* cardinality */,
+                    cardinality /* cardinality */,
                     getFeatures(atomInfo) /* features */,
                     getSearchAttributes(atomInfo) /* searchAttributes */,
-                    getAttributes(atomInfo) /* attributes */
+                    getAttributes(atomInfo) /* attributes */,
+                    inputType /* input_type */
             );
         }
     }
@@ -456,18 +488,13 @@
      * Helps to construct and log statsd compatible latency events.
      */
     private static class StatsCompatLatencyLogger implements StatsLatencyLogger {
-        private final Context mContext;
-        private final Optional<ActivityContext> mActivityContext;
         private InstanceId mInstanceId = DEFAULT_INSTANCE_ID;
         private LatencyType mType = LatencyType.UNKNOWN;
         private int mPackageId = 0;
         private long mLatencyInMillis;
         private int mQueryLength = -1;
-
-        StatsCompatLatencyLogger(Context context, ActivityContext activityContext) {
-            mContext = context;
-            mActivityContext = Optional.ofNullable(activityContext);
-        }
+        private int mSubEventType = 0;
+        private int mCardinality = -1;
 
         @Override
         public StatsLatencyLogger withInstanceId(InstanceId instanceId) {
@@ -500,6 +527,18 @@
         }
 
         @Override
+        public StatsLatencyLogger withSubEventType(int type) {
+            this.mSubEventType = type;
+            return this;
+        }
+
+        @Override
+        public StatsLatencyLogger withCardinality(int cardinality) {
+            this.mCardinality = cardinality;
+            return this;
+        }
+
+        @Override
         public void log(EventEnum event) {
             if (IS_VERBOSE) {
                 String name = (event instanceof Enum) ? ((Enum) event).name() :
@@ -516,13 +555,113 @@
                     mPackageId, // package_id
                     mLatencyInMillis, // latency_in_millis
                     mType.getId(), //type
-                    mQueryLength // query_length
+                    mQueryLength, // query_length
+                    mSubEventType, // sub_event_type
+                    mCardinality // cardinality
+            );
+        }
+    }
+
+    /**
+     * Helps to construct and log statsd compatible impression events.
+     */
+    private static class StatsCompatImpressionLogger implements StatsImpressionLogger {
+        private int[] mResultTypeList = new int[]{};
+        private int[] mResultCountList = new int[]{};
+        private final List<Boolean> mAboveKeyboardList = new ArrayList<>();
+        private int[] mUidList = new int[]{};
+        private InstanceId mInstanceId = DEFAULT_INSTANCE_ID;
+        private State mLauncherState = State.UNKNOWN;
+        private int mQueryLength = -1;
+
+        @Override
+        public StatsImpressionLogger withInstanceId(InstanceId instanceId) {
+            this.mInstanceId = instanceId;
+            return this;
+        }
+
+        @Override
+        public StatsImpressionLogger withState(State state) {
+            this.mLauncherState = state;
+            return this;
+        }
+
+        @Override
+        public StatsImpressionLogger withQueryLength(int queryLength) {
+            this.mQueryLength = queryLength;
+            return this;
+        }
+
+        @Override
+        public StatsImpressionLogger withResultType(IntArray resultType) {
+            mResultTypeList = resultType.toArray();
+            return this;
+        }
+
+        @Override
+        public StatsImpressionLogger withResultCount(IntArray resultCount) {
+            mResultCountList = resultCount.toArray();
+            return this;
+        }
+
+        @Override
+        public StatsImpressionLogger withAboveKeyboard(List<Boolean> aboveKeyboard) {
+            mAboveKeyboardList.clear();
+            this.mAboveKeyboardList.addAll(aboveKeyboard);
+            return this;
+        }
+
+        @Override
+        public StatsImpressionLogger withUids(IntArray uid) {
+            mUidList = uid.toArray();
+            return this;
+        }
+
+        @Override
+        public void log(EventEnum event) {
+            boolean[] mAboveKeyboard = new boolean[mAboveKeyboardList.size()];
+            for (int i = 0; i < mAboveKeyboardList.size(); i++) {
+                mAboveKeyboard[i] = mAboveKeyboardList.get(i);
+            }
+            if (IS_VERBOSE) {
+                String name = (event instanceof Enum) ? ((Enum) event).name() :
+                        event.getId() + "";
+                StringBuilder logStringBuilder = new StringBuilder("\n");
+                logStringBuilder.append(String.format("InstanceId:%s ", mInstanceId));
+                logStringBuilder.append(String.format("ImpressionEvent:%s ", name));
+                logStringBuilder.append(String.format("LauncherState = %s ", mLauncherState));
+                logStringBuilder.append(String.format("QueryLength = %s ", mQueryLength));
+                for (int i = 0; i < mResultTypeList.length; i++) {
+                    logStringBuilder.append(String.format(
+                            "\n ResultType = %s with ResultCount = %s with is_above_keyboard = %s"
+                                    + " with uid = %s",
+                            mResultTypeList[i], mResultCountList[i],
+                            mAboveKeyboard[i], mUidList[i]));
+                }
+                Log.d(IMPRESSION_TAG, logStringBuilder.toString());
+            }
+
+
+
+            SysUiStatsLog.write(SysUiStatsLog.LAUNCHER_IMPRESSION_EVENT,
+                    event.getId(), // event_id
+                    mInstanceId.getId(), // instance_id
+                    mLauncherState.getLauncherState(), // state
+                    mQueryLength, // query_length
+                    //result type list
+                    mResultTypeList,
+                    // result count list
+                    mResultCountList,
+                    // above keyboard list
+                    mAboveKeyboard,
+                    // uid list
+                    mUidList
             );
         }
     }
 
     private static int getCardinality(LauncherAtom.ItemInfo info) {
-        if (Utilities.IS_RUNNING_IN_TEST_HARNESS) {
+        if (Utilities.isRunningInTestHarness()) {
             return 0;
         }
         switch (info.getContainerInfo().getContainerCase()) {
@@ -644,7 +783,7 @@
     }
 
     private static int getHierarchy(LauncherAtom.ItemInfo info) {
-        if (Utilities.IS_RUNNING_IN_TEST_HARNESS) {
+        if (Utilities.isRunningInTestHarness()) {
             return 0;
         }
         if (info.getContainerInfo().getContainerCase() == FOLDER) {
@@ -687,7 +826,7 @@
     }
 
     private static int getSearchAttributes(LauncherAtom.ItemInfo info) {
-        if (Utilities.IS_RUNNING_IN_TEST_HARNESS) {
+        if (Utilities.isRunningInTestHarness()) {
             return 0;
         }
         ContainerInfo containerInfo = info.getContainerInfo();
diff --git a/quickstep/src/com/android/quickstep/util/ActiveGestureErrorDetector.java b/quickstep/src/com/android/quickstep/util/ActiveGestureErrorDetector.java
new file mode 100644
index 0000000..8335523
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/ActiveGestureErrorDetector.java
@@ -0,0 +1,366 @@
+/*
+ * 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.quickstep.util;
+
+import android.util.ArraySet;
+
+import androidx.annotation.NonNull;
+
+import java.io.PrintWriter;
+import java.util.Set;
+
+/**
+ * Utility class for tracking gesture navigation events as they happen, then detecting and reporting
+ * known issues at log dump time.
+ */
+public class ActiveGestureErrorDetector {
+
+    /**
+     * Enums associated to gesture navigation events.
+     */
+    public enum GestureEvent {
+        MOTION_DOWN, MOTION_UP, MOTION_MOVE, SET_END_TARGET, SET_END_TARGET_HOME,
+        SET_END_TARGET_NEW_TASK, SET_END_TARGET_ALL_APPS, ON_SETTLED_ON_END_TARGET,
+        START_RECENTS_ANIMATION, FINISH_RECENTS_ANIMATION, CANCEL_RECENTS_ANIMATION,
+        SET_ON_PAGE_TRANSITION_END_CALLBACK, CANCEL_CURRENT_ANIMATION, CLEANUP_SCREENSHOT,
+        SCROLLER_ANIMATION_ABORTED, TASK_APPEARED, EXPECTING_TASK_APPEARED,
+        FLAG_USING_OTHER_ACTIVITY_INPUT_CONSUMER, LAUNCHER_DESTROYED,
+
+        /**
+         * These GestureEvents are specifically associated to state flags that get set in
+         * {@link com.android.quickstep.MultiStateCallback}. If a state flag needs to be tracked
+         * for error detection, an enum should be added here and that state flag-enum pair should
+         * be added to the state flag's container class' {@code getTrackedEventForState} method.
+         */
+        STATE_GESTURE_STARTED, STATE_GESTURE_COMPLETED, STATE_GESTURE_CANCELLED,
+        STATE_END_TARGET_ANIMATION_FINISHED, STATE_RECENTS_SCROLLING_FINISHED,
+        STATE_CAPTURE_SCREENSHOT, STATE_SCREENSHOT_CAPTURED, STATE_HANDLER_INVALIDATED,
+        STATE_RECENTS_ANIMATION_CANCELED, STATE_LAUNCHER_DRAWN(true, false);
+
+        public final boolean mLogEvent;
+        public final boolean mTrackEvent;
+
+        GestureEvent() {
+            this(false, true);
+        }
+
+        GestureEvent(boolean logEvent, boolean trackEvent) {
+            mLogEvent = logEvent;
+            mTrackEvent = trackEvent;
+        }
+    }
+
+    private ActiveGestureErrorDetector() {}
+
+    protected static void analyseAndDump(
+            @NonNull String prefix,
+            @NonNull PrintWriter writer,
+            @NonNull ActiveGestureLog.EventLog eventLog) {
+        writer.println(prefix + "Error messages for gesture ID: " + eventLog.logId);
+
+        boolean errorDetected = false;
+        // Use a Set since the order is inherently checked in the loop.
+        final Set<GestureEvent> encounteredEvents = new ArraySet<>();
+        // Set flags and check order of operations.
+        for (ActiveGestureLog.EventEntry eventEntry : eventLog.eventEntries) {
+            GestureEvent gestureEvent = eventEntry.getGestureEvent();
+            if (gestureEvent == null) {
+                continue;
+            }
+            encounteredEvents.add(gestureEvent);
+
+            switch (gestureEvent) {
+                case MOTION_UP:
+                    errorDetected |= printErrorIfTrue(
+                            !encounteredEvents.contains(GestureEvent.MOTION_DOWN),
+                            prefix,
+                            /* errorMessage= */ "Motion up detected before/without"
+                                    + " motion down.",
+                            writer);
+                    break;
+                case ON_SETTLED_ON_END_TARGET:
+                    errorDetected |= printErrorIfTrue(
+                            !encounteredEvents.contains(GestureEvent.SET_END_TARGET),
+                            prefix,
+                            /* errorMessage= */ "onSettledOnEndTarget called "
+                                    + "before/without setEndTarget.",
+                            writer);
+                    break;
+                case FINISH_RECENTS_ANIMATION:
+                    errorDetected |= printErrorIfTrue(
+                            !encounteredEvents.contains(GestureEvent.START_RECENTS_ANIMATION),
+                            prefix,
+                            /* errorMessage= */ "finishRecentsAnimation called "
+                                    + "before/without startRecentsAnimation.",
+                            writer);
+                    break;
+                case CANCEL_RECENTS_ANIMATION:
+                    errorDetected |= printErrorIfTrue(
+                            !encounteredEvents.contains(GestureEvent.START_RECENTS_ANIMATION),
+                            prefix,
+                            /* errorMessage= */ "cancelRecentsAnimation called "
+                                    + "before/without startRecentsAnimation.",
+                            writer);
+                    break;
+                case CLEANUP_SCREENSHOT:
+                    errorDetected |= printErrorIfTrue(
+                            !encounteredEvents.contains(GestureEvent.STATE_SCREENSHOT_CAPTURED),
+                            prefix,
+                            /* errorMessage= */ "recents activity screenshot was "
+                                    + "cleaned up before/without STATE_SCREENSHOT_CAPTURED "
+                                    + "being set.",
+                            writer);
+                    break;
+                case SCROLLER_ANIMATION_ABORTED:
+                    errorDetected |= printErrorIfTrue(
+                            encounteredEvents.contains(GestureEvent.SET_END_TARGET_HOME)
+                                    && !encounteredEvents.contains(
+                                            GestureEvent.ON_SETTLED_ON_END_TARGET),
+                            prefix,
+                            /* errorMessage= */ "recents view scroller animation "
+                                    + "aborted after setting end target HOME, but before"
+                                    + " settling on end target.",
+                            writer);
+                    break;
+                case TASK_APPEARED:
+                    errorDetected |= printErrorIfTrue(
+                            !encounteredEvents.contains(GestureEvent.SET_END_TARGET_NEW_TASK),
+                            prefix,
+                            /* errorMessage= */ "onTasksAppeared called "
+                                    + "before/without setting end target to new task",
+                            writer);
+                    errorDetected |= printErrorIfTrue(
+                            !encounteredEvents.contains(GestureEvent.EXPECTING_TASK_APPEARED),
+                            prefix,
+                            /* errorMessage= */ "onTasksAppeared was not expected to be called",
+                            writer);
+                    break;
+                case EXPECTING_TASK_APPEARED:
+                    errorDetected |= printErrorIfTrue(
+                            !encounteredEvents.contains(GestureEvent.SET_END_TARGET_NEW_TASK),
+                            prefix,
+                            /* errorMessage= */ "expecting onTasksAppeared to be called "
+                                    + "before/without setting end target to new task",
+                            writer);
+                    break;
+                case LAUNCHER_DESTROYED:
+                    errorDetected |= printErrorIfTrue(
+                            true,
+                            prefix,
+                            /* errorMessage= */ "Launcher destroyed mid-gesture",
+                            writer);
+                    break;
+                case STATE_GESTURE_COMPLETED:
+                    errorDetected |= printErrorIfTrue(
+                            !encounteredEvents.contains(GestureEvent.MOTION_UP),
+                            prefix,
+                            /* errorMessage= */ "STATE_GESTURE_COMPLETED set "
+                                    + "before/without motion up.",
+                            writer);
+                    errorDetected |= printErrorIfTrue(
+                            !encounteredEvents.contains(GestureEvent.STATE_GESTURE_STARTED),
+                            prefix,
+                            /* errorMessage= */ "STATE_GESTURE_COMPLETED set "
+                                    + "before/without STATE_GESTURE_STARTED.",
+                            writer);
+                    break;
+                case STATE_GESTURE_CANCELLED:
+                    errorDetected |= printErrorIfTrue(
+                            !encounteredEvents.contains(GestureEvent.MOTION_UP),
+                            prefix,
+                            /* errorMessage= */ "STATE_GESTURE_CANCELLED set "
+                                    + "before/without motion up.",
+                            writer);
+                    errorDetected |= printErrorIfTrue(
+                            !encounteredEvents.contains(GestureEvent.STATE_GESTURE_STARTED),
+                            prefix,
+                            /* errorMessage= */ "STATE_GESTURE_CANCELLED set "
+                                    + "before/without STATE_GESTURE_STARTED.",
+                            writer);
+                    break;
+                case STATE_SCREENSHOT_CAPTURED:
+                    errorDetected |= printErrorIfTrue(
+                            !encounteredEvents.contains(GestureEvent.STATE_CAPTURE_SCREENSHOT),
+                            prefix,
+                            /* errorMessage= */ "STATE_SCREENSHOT_CAPTURED set "
+                                    + "before/without STATE_CAPTURE_SCREENSHOT.",
+                            writer);
+                    break;
+                case STATE_RECENTS_SCROLLING_FINISHED:
+                    errorDetected |= printErrorIfTrue(
+                            !encounteredEvents.contains(
+                                    GestureEvent.SET_ON_PAGE_TRANSITION_END_CALLBACK),
+                            prefix,
+                            /* errorMessage= */ "STATE_RECENTS_SCROLLING_FINISHED "
+                                    + "set before/without calling "
+                                    + "setOnPageTransitionEndCallback.",
+                            writer);
+                    break;
+                case STATE_RECENTS_ANIMATION_CANCELED:
+                    errorDetected |= printErrorIfTrue(
+                            !encounteredEvents.contains(
+                                    GestureEvent.START_RECENTS_ANIMATION),
+                            prefix,
+                            /* errorMessage= */ "STATE_RECENTS_ANIMATION_CANCELED "
+                                    + "set before/without startRecentsAnimation.",
+                            writer);
+                    break;
+                case MOTION_DOWN:
+                case SET_END_TARGET:
+                case SET_END_TARGET_HOME:
+                case SET_END_TARGET_ALL_APPS:
+                case SET_END_TARGET_NEW_TASK:
+                case START_RECENTS_ANIMATION:
+                case SET_ON_PAGE_TRANSITION_END_CALLBACK:
+                case CANCEL_CURRENT_ANIMATION:
+                case FLAG_USING_OTHER_ACTIVITY_INPUT_CONSUMER:
+                case STATE_GESTURE_STARTED:
+                case STATE_END_TARGET_ANIMATION_FINISHED:
+                case STATE_CAPTURE_SCREENSHOT:
+                case STATE_HANDLER_INVALIDATED:
+                case STATE_LAUNCHER_DRAWN:
+                default:
+                    // No-Op
+            }
+        }
+
+        // Check that all required events were found.
+        errorDetected |= printErrorIfTrue(
+                !encounteredEvents.contains(GestureEvent.MOTION_DOWN),
+                prefix,
+                /* errorMessage= */ "Motion down never detected.",
+                writer);
+        errorDetected |= printErrorIfTrue(
+                !encounteredEvents.contains(GestureEvent.MOTION_UP),
+                prefix,
+                /* errorMessage= */ "Motion up never detected.",
+                writer);
+
+        errorDetected |= printErrorIfTrue(
+                /* condition= */ encounteredEvents.contains(GestureEvent.SET_END_TARGET)
+                        && !encounteredEvents.contains(GestureEvent.ON_SETTLED_ON_END_TARGET),
+                prefix,
+                /* errorMessage= */ "setEndTarget was called, but "
+                        + "onSettledOnEndTarget wasn't.",
+                writer);
+        errorDetected |= printErrorIfTrue(
+                /* condition= */ encounteredEvents.contains(GestureEvent.SET_END_TARGET)
+                        && !encounteredEvents.contains(
+                                GestureEvent.STATE_END_TARGET_ANIMATION_FINISHED),
+                prefix,
+                /* errorMessage= */ "setEndTarget was called, but "
+                        + "STATE_END_TARGET_ANIMATION_FINISHED was never set.",
+                writer);
+        errorDetected |= printErrorIfTrue(
+                /* condition= */ encounteredEvents.contains(GestureEvent.SET_END_TARGET)
+                        && !encounteredEvents.contains(
+                                GestureEvent.STATE_RECENTS_SCROLLING_FINISHED),
+                prefix,
+                /* errorMessage= */ "setEndTarget was called, but "
+                        + "STATE_RECENTS_SCROLLING_FINISHED was never set.",
+                writer);
+        errorDetected |= printErrorIfTrue(
+                /* condition= */ encounteredEvents.contains(
+                        GestureEvent.STATE_END_TARGET_ANIMATION_FINISHED)
+                        && encounteredEvents.contains(
+                                GestureEvent.STATE_RECENTS_SCROLLING_FINISHED)
+                        && !encounteredEvents.contains(GestureEvent.ON_SETTLED_ON_END_TARGET),
+                prefix,
+                /* errorMessage= */ "STATE_END_TARGET_ANIMATION_FINISHED and "
+                        + "STATE_RECENTS_SCROLLING_FINISHED were set, but onSettledOnEndTarget "
+                        + "wasn't called.",
+                writer);
+
+        errorDetected |= printErrorIfTrue(
+                /* condition= */ encounteredEvents.contains(
+                        GestureEvent.START_RECENTS_ANIMATION)
+                        && !encounteredEvents.contains(GestureEvent.FINISH_RECENTS_ANIMATION)
+                        && !encounteredEvents.contains(GestureEvent.CANCEL_RECENTS_ANIMATION),
+                prefix,
+                /* errorMessage= */ "startRecentsAnimation was called, but "
+                        + "finishRecentsAnimation and cancelRecentsAnimation weren't.",
+                writer);
+
+        errorDetected |= printErrorIfTrue(
+                /* condition= */ encounteredEvents.contains(GestureEvent.STATE_GESTURE_STARTED)
+                        && !encounteredEvents.contains(GestureEvent.STATE_GESTURE_COMPLETED)
+                        && !encounteredEvents.contains(GestureEvent.STATE_GESTURE_CANCELLED),
+                prefix,
+                /* errorMessage= */ "STATE_GESTURE_STARTED was set, but "
+                        + "STATE_GESTURE_COMPLETED and STATE_GESTURE_CANCELLED weren't.",
+                writer);
+
+        errorDetected |= printErrorIfTrue(
+                /* condition= */ encounteredEvents.contains(
+                        GestureEvent.STATE_CAPTURE_SCREENSHOT)
+                        && !encounteredEvents.contains(GestureEvent.STATE_SCREENSHOT_CAPTURED),
+                prefix,
+                /* errorMessage= */ "STATE_CAPTURE_SCREENSHOT was set, but "
+                        + "STATE_SCREENSHOT_CAPTURED wasn't.",
+                writer);
+
+        errorDetected |= printErrorIfTrue(
+                /* condition= */ encounteredEvents.contains(
+                        GestureEvent.SET_ON_PAGE_TRANSITION_END_CALLBACK)
+                        && !encounteredEvents.contains(
+                                GestureEvent.STATE_RECENTS_SCROLLING_FINISHED),
+                prefix,
+                /* errorMessage= */ "setOnPageTransitionEndCallback called, but "
+                        + "STATE_RECENTS_SCROLLING_FINISHED wasn't set.",
+                writer);
+
+        errorDetected |= printErrorIfTrue(
+                /* condition= */ encounteredEvents.contains(
+                        GestureEvent.FLAG_USING_OTHER_ACTIVITY_INPUT_CONSUMER)
+                        && !encounteredEvents.contains(GestureEvent.CANCEL_CURRENT_ANIMATION)
+                        && !encounteredEvents.contains(GestureEvent.STATE_HANDLER_INVALIDATED),
+                prefix,
+                /* errorMessage= */ "AbsSwipeUpHandler.cancelCurrentAnimation "
+                        + "wasn't called and STATE_HANDLER_INVALIDATED wasn't set.",
+                writer);
+
+        errorDetected |= printErrorIfTrue(
+                /* condition= */ encounteredEvents.contains(
+                        GestureEvent.STATE_RECENTS_ANIMATION_CANCELED)
+                        && !encounteredEvents.contains(GestureEvent.CLEANUP_SCREENSHOT),
+                prefix,
+                /* errorMessage= */ "STATE_RECENTS_ANIMATION_CANCELED was set but "
+                        + "the task screenshot wasn't cleaned up.",
+                writer);
+
+        errorDetected |= printErrorIfTrue(
+                /* condition= */ encounteredEvents.contains(
+                        GestureEvent.EXPECTING_TASK_APPEARED)
+                        && !encounteredEvents.contains(GestureEvent.TASK_APPEARED),
+                prefix,
+                /* errorMessage= */ "onTaskAppeared was expected to be called but wasn't.",
+                writer);
+
+        if (!errorDetected) {
+            writer.println(prefix + "\tNo errors detected.");
+        }
+    }
+
+    private static boolean printErrorIfTrue(
+            boolean condition, String prefix, String errorMessage, PrintWriter writer) {
+        if (!condition) {
+            return false;
+        }
+        writer.println(prefix + "\t- " + errorMessage);
+
+        return true;
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/util/ActiveGestureLog.java b/quickstep/src/com/android/quickstep/util/ActiveGestureLog.java
index fabfc4b..409bf9c 100644
--- a/quickstep/src/com/android/quickstep/util/ActiveGestureLog.java
+++ b/quickstep/src/com/android/quickstep/util/ActiveGestureLog.java
@@ -15,15 +15,26 @@
  */
 package com.android.quickstep.util;
 
-import android.content.Context;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 
-import com.android.launcher3.logging.EventLogArray;
-import com.android.launcher3.util.MainThreadInitializedObject;
+import com.android.launcher3.config.FeatureFlags;
+
+import java.io.PrintWriter;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+import java.util.Objects;
 
 /**
  * A log to keep track of the active gesture.
  */
-public class ActiveGestureLog extends EventLogArray {
+public class ActiveGestureLog {
+
+    private static final int MAX_GESTURES_TRACKED = 10;
 
     public static final ActiveGestureLog INSTANCE = new ActiveGestureLog();
 
@@ -33,7 +44,308 @@
      */
     public static final String INTENT_EXTRA_LOG_TRACE_ID = "INTENT_EXTRA_LOG_TRACE_ID";
 
+    private static final int TYPE_ONE_OFF = 0;
+    private static final int TYPE_FLOAT = 1;
+    private static final int TYPE_INTEGER = 2;
+    private static final int TYPE_BOOL_TRUE = 3;
+    private static final int TYPE_BOOL_FALSE = 4;
+    private static final int TYPE_INPUT_CONSUMER = 5;
+    private static final int TYPE_GESTURE_EVENT = 6;
+
+    private final EventLog[] logs;
+    private int nextIndex;
+    private int mCurrentLogId = 100;
+
     private ActiveGestureLog() {
-        super("touch_interaction_log", 40);
+        this.logs = new EventLog[MAX_GESTURES_TRACKED];
+        this.nextIndex = 0;
+    }
+
+    /**
+     * Track the given event for error detection.
+     *
+     * @param gestureEvent GestureEvent representing an event during the current gesture's
+     *                   execution.
+     */
+    public void trackEvent(@Nullable ActiveGestureErrorDetector.GestureEvent gestureEvent) {
+        addLog(TYPE_GESTURE_EVENT, "", 0, CompoundString.NO_OP, gestureEvent);
+    }
+
+    public void addLog(String event) {
+        addLog(event, null);
+    }
+
+    public void addLog(String event, int extras) {
+        addLog(event, extras, null);
+    }
+
+    public void addLog(String event, boolean extras) {
+        addLog(event, extras, null);
+    }
+
+    public void addLog(CompoundString compoundString) {
+        addLog(TYPE_INPUT_CONSUMER, "", 0, compoundString, null);
+    }
+
+    /**
+     * Adds a log and track the associated event for error detection.
+     *
+     * @param gestureEvent GestureEvent representing the event being logged.
+     */
+    public void addLog(
+            String event, @Nullable ActiveGestureErrorDetector.GestureEvent gestureEvent) {
+        addLog(TYPE_ONE_OFF, event, 0, CompoundString.NO_OP, gestureEvent);
+    }
+
+    public void addLog(
+            String event,
+            int extras,
+            @Nullable ActiveGestureErrorDetector.GestureEvent gestureEvent) {
+        addLog(TYPE_INTEGER, event, extras, CompoundString.NO_OP, gestureEvent);
+    }
+
+    public void addLog(
+            String event,
+            boolean extras,
+            @Nullable ActiveGestureErrorDetector.GestureEvent gestureEvent) {
+        addLog(
+                extras ? TYPE_BOOL_TRUE : TYPE_BOOL_FALSE,
+                event,
+                0,
+                CompoundString.NO_OP,
+                gestureEvent);
+    }
+
+    private void addLog(
+            int type,
+            String event,
+            float extras,
+            CompoundString compoundString,
+            @Nullable ActiveGestureErrorDetector.GestureEvent gestureEvent) {
+        EventLog lastEventLog = logs[(nextIndex + logs.length - 1) % logs.length];
+        if (lastEventLog == null || mCurrentLogId != lastEventLog.logId) {
+            EventLog eventLog = new EventLog(mCurrentLogId);
+            EventEntry eventEntry = new EventEntry();
+
+            eventEntry.update(type, event, extras, compoundString, gestureEvent);
+            eventLog.eventEntries.add(eventEntry);
+            logs[nextIndex] = eventLog;
+            nextIndex = (nextIndex + 1) % logs.length;
+            return;
+        }
+
+        // Update the last EventLog
+        List<EventEntry> lastEventEntries = lastEventLog.eventEntries;
+        EventEntry lastEntry = lastEventEntries.size() > 0
+                ? lastEventEntries.get(lastEventEntries.size() - 1) : null;
+
+        // Update the last EventEntry if it's a duplicate
+        if (isEntrySame(lastEntry, type, event, extras, compoundString, gestureEvent)) {
+            lastEntry.duplicateCount++;
+            return;
+        }
+        EventEntry eventEntry = new EventEntry();
+
+        eventEntry.update(type, event, extras, compoundString, gestureEvent);
+        lastEventEntries.add(eventEntry);
+    }
+
+    public void clear() {
+        Arrays.fill(logs, null);
+    }
+
+    public void dump(String prefix, PrintWriter writer) {
+        writer.println(prefix + "ActiveGestureErrorDetector:");
+        for (int i = 0; i < logs.length; i++) {
+            EventLog eventLog = logs[(nextIndex + i) % logs.length];
+            if (eventLog == null) {
+                continue;
+            }
+            ActiveGestureErrorDetector.analyseAndDump(prefix + '\t', writer, eventLog);
+        }
+
+        writer.println(prefix + "ActiveGestureLog history:");
+        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.SSSZ  ", Locale.US);
+        Date date = new Date();
+        for (int i = 0; i < logs.length; i++) {
+            EventLog eventLog = logs[(nextIndex + i) % logs.length];
+            if (eventLog == null) {
+                continue;
+            }
+
+            writer.println(prefix + "\tLogs for logId: " + eventLog.logId);
+            for (EventEntry eventEntry : eventLog.eventEntries) {
+                date.setTime(eventEntry.time);
+
+                StringBuilder msg = new StringBuilder(prefix + "\t\t").append(sdf.format(date))
+                        .append(eventEntry.event);
+                switch (eventEntry.type) {
+                    case TYPE_BOOL_FALSE:
+                        msg.append(": false");
+                        break;
+                    case TYPE_BOOL_TRUE:
+                        msg.append(": true");
+                        break;
+                    case TYPE_FLOAT:
+                        msg.append(": ").append(eventEntry.extras);
+                        break;
+                    case TYPE_INTEGER:
+                        msg.append(": ").append((int) eventEntry.extras);
+                        break;
+                    case TYPE_INPUT_CONSUMER:
+                        msg.append(eventEntry.mCompoundString);
+                        break;
+                    case TYPE_GESTURE_EVENT:
+                        continue;
+                    default: // fall out
+                }
+                if (eventEntry.duplicateCount > 0) {
+                    msg.append(" & ").append(eventEntry.duplicateCount).append(" similar events");
+                }
+                writer.println(msg);
+            }
+        }
+    }
+
+    /**
+     * Increments and returns the current log ID. This should be used every time a new log trace
+     * is started.
+     */
+    public int incrementLogId() {
+        return mCurrentLogId++;
+    }
+
+    /** Returns the current log ID. This should be used when a log trace is being reused. */
+    public int getLogId() {
+        return mCurrentLogId;
+    }
+
+    private boolean isEntrySame(
+            EventEntry entry,
+            int type,
+            String event,
+            float extras,
+            CompoundString compoundString,
+            ActiveGestureErrorDetector.GestureEvent gestureEvent) {
+        return entry != null
+                && entry.type == type
+                && entry.event.equals(event)
+                && Float.compare(entry.extras, extras) == 0
+                && entry.mCompoundString.equals(compoundString)
+                && entry.gestureEvent == gestureEvent;
+    }
+
+    /** A single event entry. */
+    protected static class EventEntry {
+
+        private int type;
+        private String event;
+        private float extras;
+        @NonNull private CompoundString mCompoundString;
+        private ActiveGestureErrorDetector.GestureEvent gestureEvent;
+        private long time;
+        private int duplicateCount;
+
+        private EventEntry() {}
+
+        @Nullable
+        protected ActiveGestureErrorDetector.GestureEvent getGestureEvent() {
+            return gestureEvent;
+        }
+
+        private void update(
+                int type,
+                String event,
+                float extras,
+                @NonNull CompoundString compoundString,
+                ActiveGestureErrorDetector.GestureEvent gestureEvent) {
+            this.type = type;
+            this.event = event;
+            this.extras = extras;
+            this.mCompoundString = compoundString;
+            this.gestureEvent = gestureEvent;
+            time = System.currentTimeMillis();
+            duplicateCount = 0;
+        }
+    }
+
+    /** An entire log of entries associated with a single log ID */
+    protected static class EventLog {
+
+        protected final List<EventEntry> eventEntries = new ArrayList<>();
+        protected final int logId;
+
+        private EventLog(int logId) {
+            this.logId = logId;
+        }
+    }
+
+    /** A buildable string stored as an array for memory efficiency. */
+    public static class CompoundString {
+
+        public static final CompoundString NO_OP = new CompoundString();
+
+        private final List<String> mSubstrings;
+
+        private final boolean mIsNoOp;
+
+        private CompoundString() {
+            this(null);
+        }
+
+        public CompoundString(String substring) {
+            mIsNoOp = substring == null;
+            if (mIsNoOp) {
+                mSubstrings = null;
+                return;
+            }
+            mSubstrings = new ArrayList<>();
+            mSubstrings.add(substring);
+        }
+
+        public CompoundString append(CompoundString substring) {
+            if (mIsNoOp) {
+                return this;
+            }
+            mSubstrings.addAll(substring.mSubstrings);
+
+            return this;
+        }
+
+        public CompoundString append(String substring) {
+            if (mIsNoOp) {
+                return this;
+            }
+            mSubstrings.add(substring);
+
+            return this;
+        }
+
+        @Override
+        public String toString() {
+            if (mIsNoOp) {
+                return "ERROR: cannot use No-Op compound string";
+            }
+            StringBuilder sb = new StringBuilder();
+            for (String substring : mSubstrings) {
+                sb.append(substring);
+            }
+
+            return sb.toString();
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(mIsNoOp, mSubstrings);
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (!(obj instanceof CompoundString)) {
+                return false;
+            }
+            CompoundString other = (CompoundString) obj;
+            return (mIsNoOp == other.mIsNoOp) && Objects.equals(mSubstrings, other.mSubstrings);
+        }
     }
 }
diff --git a/quickstep/src/com/android/quickstep/util/AnimUtils.java b/quickstep/src/com/android/quickstep/util/AnimUtils.java
new file mode 100644
index 0000000..b7b7825
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/AnimUtils.java
@@ -0,0 +1,42 @@
+/*
+ * 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.quickstep.util;
+
+/**
+ * Utility class containing methods to help manage animations, interpolators, and timings.
+ */
+public class AnimUtils {
+    /**
+     * Fetches device-specific timings for the Overview > Split animation
+     * (splitscreen initiated from Overview).
+     */
+    public static SplitAnimationTimings getDeviceOverviewToSplitTimings(boolean isTablet) {
+        return isTablet
+                ? SplitAnimationTimings.TABLET_OVERVIEW_TO_SPLIT
+                : SplitAnimationTimings.PHONE_OVERVIEW_TO_SPLIT;
+    }
+
+    /**
+     * Fetches device-specific timings for the Split > Confirm animation
+     * (splitscreen confirmed by selecting a second app).
+     */
+    public static SplitAnimationTimings getDeviceSplitToConfirmTimings(boolean isTablet) {
+        return isTablet
+                ? SplitAnimationTimings.TABLET_SPLIT_TO_CONFIRM
+                : SplitAnimationTimings.PHONE_SPLIT_TO_CONFIRM;
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/util/AnimatorControllerWithResistance.java b/quickstep/src/com/android/quickstep/util/AnimatorControllerWithResistance.java
index 7c83833..a92ab2a 100644
--- a/quickstep/src/com/android/quickstep/util/AnimatorControllerWithResistance.java
+++ b/quickstep/src/com/android/quickstep/util/AnimatorControllerWithResistance.java
@@ -17,9 +17,11 @@
 
 import static com.android.launcher3.anim.Interpolators.DEACCEL;
 import static com.android.launcher3.anim.Interpolators.LINEAR;
+import static com.android.quickstep.AbsSwipeUpHandler.ALL_APPS_SHIFT_THRESHOLD;
 import static com.android.quickstep.views.RecentsView.RECENTS_SCALE_PROPERTY;
 import static com.android.quickstep.views.RecentsView.TASK_SECONDARY_TRANSLATION;
 
+import android.animation.AnimatorSet;
 import android.animation.TimeInterpolator;
 import android.content.Context;
 import android.graphics.Matrix;
@@ -32,11 +34,15 @@
 
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Launcher;
+import com.android.launcher3.LauncherState;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.anim.AnimatorPlaybackController;
 import com.android.launcher3.anim.PendingAnimation;
+import com.android.launcher3.statemanager.StateManager;
+import com.android.launcher3.statemanager.StatefulActivity;
+import com.android.launcher3.states.StateAnimationConfig;
+import com.android.launcher3.touch.AllAppsSwipeController;
 import com.android.launcher3.touch.PagedOrientationHandler;
-import com.android.quickstep.LauncherActivityInterface;
 import com.android.quickstep.views.RecentsView;
 
 /**
@@ -49,7 +55,9 @@
 
     private enum RecentsResistanceParams {
         FROM_APP(0.75f, 0.5f, 1f, false),
+        FROM_APP_TO_ALL_APPS(0.75f, 0.5f, 0.8f, false),
         FROM_APP_TABLET(1f, 0.7f, 1f, true),
+        FROM_APP_TO_ALL_APPS_TABLET(1f, 0.5f, 0.5f, false),
         FROM_OVERVIEW(1f, 0.75f, 0.5f, false);
 
         RecentsResistanceParams(float scaleStartResist, float scaleMaxResist,
@@ -86,6 +94,8 @@
     private static final TimeInterpolator RECENTS_SCALE_RESIST_INTERPOLATOR = DEACCEL;
     private static final TimeInterpolator RECENTS_TRANSLATE_RESIST_INTERPOLATOR = LINEAR;
 
+    private static final Rect TEMP_RECT = new Rect();
+
     private final AnimatorPlaybackController mNormalController;
     private final AnimatorPlaybackController mResistanceController;
 
@@ -145,10 +155,42 @@
                 scaleProperty, translationTarget, translationProperty);
         PendingAnimation resistAnim = createRecentsResistanceAnim(params);
 
+        // Apply All Apps animation during the resistance animation.
+        if (recentsOrientedState.getActivityInterface().allowAllAppsFromOverview()) {
+            StatefulActivity activity =
+                    recentsOrientedState.getActivityInterface().getCreatedActivity();
+            if (activity != null) {
+                StateManager<LauncherState> stateManager = activity.getStateManager();
+                if (stateManager.isInStableState(LauncherState.BACKGROUND_APP)
+                        && stateManager.isInTransition()) {
+
+                    // Calculate the resistance progress threshold where All Apps will trigger.
+                    float threshold = getAllAppsThreshold(context, recentsOrientedState, dp);
+
+                    StateAnimationConfig config = new StateAnimationConfig();
+                    AllAppsSwipeController.applyOverviewToAllAppsAnimConfig(dp, config, threshold);
+                    AnimatorSet allAppsAnimator = stateManager.createAnimationToNewWorkspace(
+                            LauncherState.ALL_APPS, config).getTarget();
+                    resistAnim.add(allAppsAnimator);
+                }
+            }
+        }
+
         AnimatorPlaybackController resistanceController = resistAnim.createPlaybackController();
         return new AnimatorControllerWithResistance(normalController, resistanceController);
     }
 
+    private static float getAllAppsThreshold(Context context,
+            RecentsOrientedState recentsOrientedState, DeviceProfile dp) {
+        int transitionDragLength =
+                recentsOrientedState.getActivityInterface().getSwipeUpDestinationAndLength(
+                        dp, context, TEMP_RECT,
+                        recentsOrientedState.getOrientationHandler());
+        float dragLengthFactor = (float) dp.heightPx / transitionDragLength;
+        // -1s are because 0-1 is reserved for the normal transition.
+        return (ALL_APPS_SHIFT_THRESHOLD - 1) / (dragLengthFactor - 1);
+    }
+
     /**
      * Creates the resistance animation for {@link #createForRecents}, or can be used separately
      * when starting from recents, i.e. {@link #createRecentsResistanceFromOverviewAnim}.
@@ -158,7 +200,8 @@
         Rect startRect = new Rect();
         PagedOrientationHandler orientationHandler = params.recentsOrientedState
                 .getOrientationHandler();
-        LauncherActivityInterface.INSTANCE.calculateTaskSize(params.context, params.dp, startRect);
+        params.recentsOrientedState.getActivityInterface()
+                .calculateTaskSize(params.context, params.dp, startRect, orientationHandler);
         long distanceToCover = startRect.bottom;
         PendingAnimation resistAnim = params.resistAnim != null
                 ? params.resistAnim
@@ -256,9 +299,15 @@
             this.translationTarget = translationTarget;
             this.translationProperty = translationProperty;
             if (dp.isTablet) {
-                resistanceParams = RecentsResistanceParams.FROM_APP_TABLET;
+                resistanceParams =
+                        recentsOrientedState.getActivityInterface().allowAllAppsFromOverview()
+                                ? RecentsResistanceParams.FROM_APP_TO_ALL_APPS_TABLET
+                                : RecentsResistanceParams.FROM_APP_TABLET;
             } else {
-                resistanceParams = RecentsResistanceParams.FROM_APP;
+                resistanceParams =
+                        recentsOrientedState.getActivityInterface().allowAllAppsFromOverview()
+                                ? RecentsResistanceParams.FROM_APP_TO_ALL_APPS
+                                : RecentsResistanceParams.FROM_APP;
             }
         }
 
diff --git a/quickstep/src/com/android/quickstep/util/AppPairsController.java b/quickstep/src/com/android/quickstep/util/AppPairsController.java
new file mode 100644
index 0000000..cbde257
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/AppPairsController.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright 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.quickstep.util;
+
+import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
+import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
+
+import android.content.Context;
+
+import com.android.launcher3.Launcher;
+import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.LauncherSettings;
+import com.android.launcher3.accessibility.LauncherAccessibilityDelegate;
+import com.android.launcher3.icons.IconCache;
+import com.android.launcher3.model.data.FolderInfo;
+import com.android.launcher3.model.data.WorkspaceItemInfo;
+import com.android.quickstep.views.TaskView;
+
+/**
+ * Mini controller class that handles app pair interactions: saving, modifying, deleting, etc.
+ */
+public class AppPairsController {
+
+    private static final int POINT_THREE_RATIO = 0;
+    private static final int POINT_FIVE_RATIO = 1;
+    private static final int POINT_SEVEN_RATIO = 2;
+    /**
+     * Used to calculate {@link #complement(int)}
+     */
+    private static final int FULL_RATIO = 2;
+
+    private static final int LEFT_TOP = 0;
+    private static final int RIGHT_BOTTOM = 1 << 2;
+
+    // TODO (jeremysim b/274189428): Support saving different ratios in future.
+    public int DEFAULT_RATIO = POINT_FIVE_RATIO;
+
+    private final Context mContext;
+    private final SplitSelectStateController mSplitSelectStateController;
+    public AppPairsController(Context context,
+            SplitSelectStateController splitSelectStateController) {
+        mContext = context;
+        mSplitSelectStateController = splitSelectStateController;
+    }
+
+    /**
+     * Creates a new app pair ItemInfo and adds it to the workspace
+     */
+    public void saveAppPair(TaskView taskView) {
+        TaskView.TaskIdAttributeContainer[] attributes = taskView.getTaskIdAttributeContainers();
+        WorkspaceItemInfo app1 = attributes[0].getItemInfo().clone();
+        WorkspaceItemInfo app2 = attributes[1].getItemInfo().clone();
+        app1.itemType = LauncherSettings.Favorites.ITEM_TYPE_APPLICATION;
+        app2.itemType = LauncherSettings.Favorites.ITEM_TYPE_APPLICATION;
+        app1.rank = DEFAULT_RATIO + LEFT_TOP;
+        app2.rank = complement(DEFAULT_RATIO) + RIGHT_BOTTOM;
+        FolderInfo newAppPair = FolderInfo.createAppPair(app1, app2);
+        // TODO (jeremysim b/274189428): Generate default title here.
+        newAppPair.title = "App pair 1";
+
+        IconCache iconCache = LauncherAppState.getInstance(mContext).getIconCache();
+        MODEL_EXECUTOR.execute(() -> {
+            newAppPair.contents.forEach(member -> {
+                member.title = "";
+                member.bitmap = iconCache.getDefaultIcon(newAppPair.user);
+                iconCache.getTitleAndIcon(member, member.usingLowResIcon());
+            });
+            MAIN_EXECUTOR.execute(() -> {
+                LauncherAccessibilityDelegate delegate =
+                        Launcher.getLauncher(mContext).getAccessibilityDelegate();
+                if (delegate != null) {
+                    MAIN_EXECUTOR.execute(() -> delegate.addToWorkspace(newAppPair, true));
+                }
+            });
+        });
+
+    }
+
+    /**
+     * Used to calculate the "opposite" side of the split ratio, so we can know how big the split
+     * apps are supposed to be. This math works because POINT_THREE_RATIO is internally represented
+     * by 0, POINT_FIVE_RATIO is represented by 1, and POINT_SEVEN_RATIO is represented by 2. There
+     * are no other supported ratios for now.
+     */
+    private int complement(int ratio1) {
+        int ratio2 = FULL_RATIO - ratio1;
+        return ratio2;
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/util/AssistContentRequester.java b/quickstep/src/com/android/quickstep/util/AssistContentRequester.java
index b1e38eb..0ce54ad 100644
--- a/quickstep/src/com/android/quickstep/util/AssistContentRequester.java
+++ b/quickstep/src/com/android/quickstep/util/AssistContentRequester.java
@@ -52,6 +52,7 @@
     }
 
     private final IActivityTaskManager mActivityTaskManager;
+    private final String mAttributionTag;
     private final String mPackageName;
     private final Executor mCallbackExecutor;
     private final Executor mSystemInteractionExecutor;
@@ -62,6 +63,7 @@
 
     public AssistContentRequester(Context context) {
         mActivityTaskManager = ActivityTaskManager.getService();
+        mAttributionTag = context.getAttributionTag();
         mPackageName = context.getApplicationContext().getPackageName();
         mCallbackExecutor = Executors.MAIN_EXECUTOR;
         mSystemInteractionExecutor = Executors.UI_HELPER_EXECUTOR;
@@ -78,7 +80,8 @@
         mSystemInteractionExecutor.execute(() -> {
             try {
                 mActivityTaskManager.requestAssistDataForTask(
-                        new AssistDataReceiver(callback, this), taskId, mPackageName);
+                        new AssistDataReceiver(callback, this), taskId, mPackageName,
+                        mAttributionTag);
             } catch (RemoteException e) {
                 Log.e(TAG, "Requesting assist content failed for task: " + taskId, e);
             }
diff --git a/quickstep/src/com/android/quickstep/util/BaseDepthController.java b/quickstep/src/com/android/quickstep/util/BaseDepthController.java
new file mode 100644
index 0000000..23cfb39
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/BaseDepthController.java
@@ -0,0 +1,182 @@
+/*
+ * 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.quickstep.util;
+
+import android.app.WallpaperManager;
+import android.os.IBinder;
+import android.util.FloatProperty;
+import android.view.AttachedSurfaceControl;
+import android.view.SurfaceControl;
+
+import com.android.launcher3.Launcher;
+import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
+import com.android.launcher3.util.MultiPropertyFactory;
+import com.android.launcher3.util.MultiPropertyFactory.MultiProperty;
+import com.android.systemui.shared.system.BlurUtils;
+
+/**
+ * Utility class for applying depth effect
+ */
+public class BaseDepthController {
+
+    private static final FloatProperty<BaseDepthController> DEPTH =
+            new FloatProperty<BaseDepthController>("depth") {
+                @Override
+                public void setValue(BaseDepthController depthController, float depth) {
+                    depthController.setDepth(depth);
+                }
+
+                @Override
+                public Float get(BaseDepthController depthController) {
+                    return depthController.mDepth;
+                }
+            };
+
+    private static final int DEPTH_INDEX_STATE_TRANSITION = 0;
+    private static final int DEPTH_INDEX_WIDGET = 1;
+    private static final int DEPTH_INDEX_COUNT = 2;
+
+    protected final Launcher mLauncher;
+    /** Property to set the depth for state transition. */
+    public final MultiProperty stateDepth;
+    /** Property to set the depth for widget picker. */
+    public final MultiProperty widgetDepth;
+
+    /**
+     * Blur radius when completely zoomed out, in pixels.
+     */
+    protected final int mMaxBlurRadius;
+    protected final WallpaperManager mWallpaperManager;
+    protected boolean mCrossWindowBlursEnabled;
+
+    /**
+     * Ratio from 0 to 1, where 0 is fully zoomed out, and 1 is zoomed in.
+     * @see android.service.wallpaper.WallpaperService.Engine#onZoomChanged(float)
+     */
+    private float mDepth;
+
+    protected SurfaceControl mSurface;
+
+    // Hints that there is potentially content behind Launcher and that we shouldn't optimize by
+    // marking the launcher surface as opaque.  Only used in certain Launcher states.
+    private boolean mHasContentBehindLauncher;
+
+    /** Pause blur but allow transparent, can be used when launch something behind the Launcher. */
+    protected boolean mPauseBlurs;
+
+    /**
+     * Last blur value, in pixels, that was applied.
+     * For debugging purposes.
+     */
+    protected int mCurrentBlur;
+    /**
+     * If we requested early wake-up offsets to SurfaceFlinger.
+     */
+    protected boolean mInEarlyWakeUp;
+
+    public BaseDepthController(Launcher activity) {
+        mLauncher = activity;
+        mMaxBlurRadius = activity.getResources().getInteger(R.integer.max_depth_blur_radius);
+        mWallpaperManager = activity.getSystemService(WallpaperManager.class);
+
+        MultiPropertyFactory<BaseDepthController> depthProperty =
+                new MultiPropertyFactory<>(this, DEPTH, DEPTH_INDEX_COUNT, Float::max);
+        stateDepth = depthProperty.get(DEPTH_INDEX_STATE_TRANSITION);
+        widgetDepth = depthProperty.get(DEPTH_INDEX_WIDGET);
+    }
+
+    protected void setCrossWindowBlursEnabled(boolean isEnabled) {
+        mCrossWindowBlursEnabled = isEnabled;
+        applyDepthAndBlur();
+    }
+
+    public void setHasContentBehindLauncher(boolean hasContentBehindLauncher) {
+        mHasContentBehindLauncher = hasContentBehindLauncher;
+    }
+
+    public void pauseBlursOnWindows(boolean pause) {
+        if (pause != mPauseBlurs) {
+            mPauseBlurs = pause;
+            applyDepthAndBlur();
+        }
+    }
+
+    protected void applyDepthAndBlur() {
+        float depth = mDepth;
+        IBinder windowToken = mLauncher.getRootView().getWindowToken();
+        if (windowToken != null) {
+            // The API's full zoom-out is three times larger than the zoom-out we apply to the
+            // icons. To keep the two consistent throughout the animation while keeping Launcher's
+            // concept of full depth unchanged, we divide the depth by 3 here.
+            mWallpaperManager.setWallpaperZoomOut(windowToken, depth / 3);
+        }
+
+        if (!BlurUtils.supportsBlursOnWindows()) {
+            return;
+        }
+        if (mSurface == null || !mSurface.isValid()) {
+            return;
+        }
+        boolean hasOpaqueBg = mLauncher.getScrimView().isFullyOpaque();
+        boolean isSurfaceOpaque = !mHasContentBehindLauncher && hasOpaqueBg && !mPauseBlurs;
+
+        mCurrentBlur = !mCrossWindowBlursEnabled || hasOpaqueBg || mPauseBlurs
+                ? 0 : (int) (depth * mMaxBlurRadius);
+        SurfaceControl.Transaction transaction = new SurfaceControl.Transaction()
+                .setBackgroundBlurRadius(mSurface, mCurrentBlur)
+                .setOpaque(mSurface, isSurfaceOpaque);
+
+        // Set early wake-up flags when we know we're executing an expensive operation, this way
+        // SurfaceFlinger will adjust its internal offsets to avoid jank.
+        boolean wantsEarlyWakeUp = depth > 0 && depth < 1;
+        if (wantsEarlyWakeUp && !mInEarlyWakeUp) {
+            transaction.setEarlyWakeupStart();
+            mInEarlyWakeUp = true;
+        } else if (!wantsEarlyWakeUp && mInEarlyWakeUp) {
+            transaction.setEarlyWakeupEnd();
+            mInEarlyWakeUp = false;
+        }
+
+        AttachedSurfaceControl rootSurfaceControl =
+                mLauncher.getRootView().getRootSurfaceControl();
+        if (rootSurfaceControl != null) {
+            rootSurfaceControl.applyTransactionOnDraw(transaction);
+        }
+    }
+
+    private void setDepth(float depth) {
+        depth = Utilities.boundToRange(depth, 0, 1);
+        // Round out the depth to dedupe frequent, non-perceptable updates
+        int depthI = (int) (depth * 256);
+        float depthF = depthI / 256f;
+        if (Float.compare(mDepth, depthF) == 0) {
+            return;
+        }
+        mDepth = depthF;
+        applyDepthAndBlur();
+    }
+
+    /**
+     * Sets the specified app target surface to apply the blur to.
+     */
+    protected void setSurface(SurfaceControl surface) {
+        if (mSurface != surface) {
+            mSurface = surface;
+            applyDepthAndBlur();
+        }
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/util/BaseUnfoldMoveFromCenterAnimator.java b/quickstep/src/com/android/quickstep/util/BaseUnfoldMoveFromCenterAnimator.java
index 143042f..328a727 100644
--- a/quickstep/src/com/android/quickstep/util/BaseUnfoldMoveFromCenterAnimator.java
+++ b/quickstep/src/com/android/quickstep/util/BaseUnfoldMoveFromCenterAnimator.java
@@ -16,12 +16,14 @@
 package com.android.quickstep.util;
 
 import android.annotation.CallSuper;
+import android.view.Surface.Rotation;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.WindowManager;
 
 import com.android.systemui.shared.animation.UnfoldMoveFromCenterAnimator;
 import com.android.systemui.unfold.UnfoldTransitionProgressProvider.TransitionProgressListener;
+import com.android.systemui.unfold.updates.RotationChangeProvider;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -32,15 +34,24 @@
 public abstract class BaseUnfoldMoveFromCenterAnimator implements TransitionProgressListener {
 
     private final UnfoldMoveFromCenterAnimator mMoveFromCenterAnimation;
+    private final RotationChangeProvider mRotationChangeProvider;
 
     private final Map<ViewGroup, Boolean> mOriginalClipToPadding = new HashMap<>();
     private final Map<ViewGroup, Boolean> mOriginalClipChildren = new HashMap<>();
 
+    private final UnfoldMoveFromCenterRotationListener mRotationListener =
+            new UnfoldMoveFromCenterRotationListener();
     private boolean mAnimationInProgress = false;
 
-    public BaseUnfoldMoveFromCenterAnimator(WindowManager windowManager) {
+    // Save the last transition progress so we can re-apply it in case we re-register the view for
+    // the animation (by calling onPrepareViewsForAnimation)
+    private Float mLastTransitionProgress = null;
+
+    public BaseUnfoldMoveFromCenterAnimator(WindowManager windowManager,
+            RotationChangeProvider rotationChangeProvider) {
         mMoveFromCenterAnimation = new UnfoldMoveFromCenterAnimator(windowManager,
                 new LauncherViewsMoveFromCenterTranslationApplier());
+        mRotationChangeProvider = rotationChangeProvider;
     }
 
     @CallSuper
@@ -49,19 +60,22 @@
         mAnimationInProgress = true;
         mMoveFromCenterAnimation.updateDisplayProperties();
         onPrepareViewsForAnimation();
-        onTransitionProgress(0f);
+        mRotationChangeProvider.addCallback(mRotationListener);
     }
 
     @CallSuper
     @Override
     public void onTransitionProgress(float progress) {
         mMoveFromCenterAnimation.onTransitionProgress(progress);
+        mLastTransitionProgress = progress;
     }
 
     @CallSuper
     @Override
     public void onTransitionFinished() {
+        mLastTransitionProgress = null;
         mAnimationInProgress = false;
+        mRotationChangeProvider.removeCallback(mRotationListener);
         mMoveFromCenterAnimation.onTransitionFinished();
         clearRegisteredViews();
     }
@@ -78,35 +92,61 @@
     }
 
     private void clearRegisteredViews() {
+        restoreClippings();
         mMoveFromCenterAnimation.clearRegisteredViews();
 
         mOriginalClipChildren.clear();
         mOriginalClipToPadding.clear();
     }
 
+    @CallSuper
     protected void onPrepareViewsForAnimation() {
-
+        if (mLastTransitionProgress != null) {
+            mMoveFromCenterAnimation.onTransitionProgress(mLastTransitionProgress);
+        }
     }
 
     protected void registerViewForAnimation(View view) {
         mMoveFromCenterAnimation.registerViewForAnimation(view);
     }
 
-    protected void disableClipping(ViewGroup view) {
+    /**
+     * Sets clipToPadding for the view which then could be restored to the original value
+     * using {@link BaseUnfoldMoveFromCenterAnimator#restoreClippings} method call
+     * @param view view to set the property
+     * @param clipToPadding value of the property
+     */
+    protected void setClipToPadding(ViewGroup view, boolean clipToPadding) {
         mOriginalClipToPadding.put(view, view.getClipToPadding());
-        mOriginalClipChildren.put(view, view.getClipChildren());
-        view.setClipToPadding(false);
-        view.setClipChildren(false);
+        view.setClipToPadding(clipToPadding);
     }
 
-    protected void restoreClipping(ViewGroup view) {
-        final Boolean originalClipToPadding = mOriginalClipToPadding.get(view);
-        if (originalClipToPadding != null) {
-            view.setClipToPadding(originalClipToPadding);
-        }
-        final Boolean originalClipChildren = mOriginalClipChildren.get(view);
-        if (originalClipChildren != null) {
-            view.setClipChildren(originalClipChildren);
+    /**
+     * Sets clipChildren for the view which then could be restored to the original value
+     * using {@link BaseUnfoldMoveFromCenterAnimator#restoreClippings} method call
+     * @param view view to set the property
+     * @param clipChildren value of the property
+     */
+    protected void setClipChildren(ViewGroup view, boolean clipChildren) {
+        mOriginalClipChildren.put(view, view.getClipChildren());
+        view.setClipChildren(clipChildren);
+    }
+
+    /**
+     * Restores original clip properties after their modifications
+     */
+    protected void restoreClippings() {
+        mOriginalClipToPadding.forEach(ViewGroup::setClipToPadding);
+        mOriginalClipChildren.forEach(ViewGroup::setClipChildren);
+    }
+
+    private class UnfoldMoveFromCenterRotationListener implements
+            RotationChangeProvider.RotationListener {
+
+        @Override
+        public void onRotationChanged(@Rotation int newRotation) {
+            mMoveFromCenterAnimation.updateDisplayProperties(newRotation);
+            updateRegisteredViewsIfNeeded();
         }
     }
 }
diff --git a/quickstep/src/com/android/quickstep/util/BorderAnimator.java b/quickstep/src/com/android/quickstep/util/BorderAnimator.java
new file mode 100644
index 0000000..011d45c
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/BorderAnimator.java
@@ -0,0 +1,352 @@
+/*
+ * 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.quickstep.util;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.annotation.ColorInt;
+import android.annotation.Nullable;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Rect;
+import android.view.View;
+import android.view.animation.Interpolator;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Px;
+
+import com.android.launcher3.anim.AnimatedFloat;
+import com.android.launcher3.anim.AnimatorListeners;
+import com.android.launcher3.anim.Interpolators;
+
+/**
+ * Utility class for drawing a rounded-rect border around a view.
+ * <p>
+ * To use this class:
+ * 1. Create an instance in the target view. NOTE: The border will animate outwards from the
+ *      provided border bounds. See {@link SimpleParams} and {@link ScalingParams} to determine
+ *      which would be best for your target view.
+ * 2. Override the target view's {@link android.view.View#draw(Canvas)} method and call
+ *      {@link BorderAnimator#drawBorder(Canvas)} after {@code super.draw(canvas)}.
+ * 3. Call {@link BorderAnimator#buildAnimator(boolean)} and start the animation or call
+ *      {@link BorderAnimator#setBorderVisible(boolean)} where appropriate.
+ */
+public final class BorderAnimator {
+
+    public static final int DEFAULT_BORDER_COLOR = Color.WHITE;
+
+    private static final long DEFAULT_APPEARANCE_ANIMATION_DURATION_MS = 300;
+    private static final long DEFAULT_DISAPPEARANCE_ANIMATION_DURATION_MS = 133;
+    private static final Interpolator DEFAULT_INTERPOLATOR = Interpolators.EMPHASIZED_DECELERATE;
+
+    @NonNull private final AnimatedFloat mBorderAnimationProgress = new AnimatedFloat(
+            this::updateOutline);
+    @Px private final int mBorderRadiusPx;
+    @NonNull private final BorderAnimationParams mBorderAnimationParams;
+    private final long mAppearanceDurationMs;
+    private final long mDisappearanceDurationMs;
+    @NonNull private final Interpolator mInterpolator;
+    @NonNull private final Paint mBorderPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+
+    @Nullable private Animator mRunningBorderAnimation;
+
+    public BorderAnimator(
+            @Px int borderRadiusPx,
+            @ColorInt int borderColor,
+            @NonNull BorderAnimationParams borderAnimationParams) {
+        this(borderRadiusPx,
+                borderColor,
+                borderAnimationParams,
+                DEFAULT_APPEARANCE_ANIMATION_DURATION_MS,
+                DEFAULT_DISAPPEARANCE_ANIMATION_DURATION_MS,
+                DEFAULT_INTERPOLATOR);
+    }
+
+    /**
+     * @param borderRadiusPx the radius of the border's corners, in pixels
+     * @param borderColor the border's color
+     * @param borderAnimationParams params for handling different target view layout situation.
+     * @param appearanceDurationMs appearance animation duration, in milliseconds
+     * @param disappearanceDurationMs disappearance animation duration, in milliseconds
+     * @param interpolator animation interpolator
+     */
+    public BorderAnimator(
+            @Px int borderRadiusPx,
+            @ColorInt int borderColor,
+            @NonNull BorderAnimationParams borderAnimationParams,
+            long appearanceDurationMs,
+            long disappearanceDurationMs,
+            @NonNull Interpolator interpolator) {
+        mBorderRadiusPx = borderRadiusPx;
+        mBorderAnimationParams = borderAnimationParams;
+        mAppearanceDurationMs = appearanceDurationMs;
+        mDisappearanceDurationMs = disappearanceDurationMs;
+        mInterpolator = interpolator;
+
+        mBorderPaint.setColor(borderColor);
+        mBorderPaint.setStyle(Paint.Style.STROKE);
+        mBorderPaint.setAlpha(0);
+    }
+
+    private void updateOutline() {
+        float interpolatedProgress = mInterpolator.getInterpolation(
+                mBorderAnimationProgress.value);
+
+        mBorderAnimationParams.setProgress(interpolatedProgress);
+        mBorderPaint.setAlpha(Math.round(255 * interpolatedProgress));
+        mBorderPaint.setStrokeWidth(mBorderAnimationParams.getBorderWidth());
+        mBorderAnimationParams.mTargetView.invalidate();
+    }
+
+    /**
+     * Draws the border on the given canvas.
+     * <p>
+     * Call this method in the target view's {@link android.view.View#draw(Canvas)} method after
+     * calling super.
+     */
+    public void drawBorder(Canvas canvas) {
+        float alignmentAdjustment = mBorderAnimationParams.getAlignmentAdjustment();
+        canvas.drawRoundRect(
+                /* left= */ mBorderAnimationParams.mBorderBounds.left + alignmentAdjustment,
+                /* top= */ mBorderAnimationParams.mBorderBounds.top + alignmentAdjustment,
+                /* right= */ mBorderAnimationParams.mBorderBounds.right - alignmentAdjustment,
+                /* bottom= */ mBorderAnimationParams.mBorderBounds.bottom - alignmentAdjustment,
+                /* rx= */ mBorderRadiusPx + mBorderAnimationParams.getRadiusAdjustment(),
+                /* ry= */ mBorderRadiusPx + mBorderAnimationParams.getRadiusAdjustment(),
+                /* paint= */ mBorderPaint);
+    }
+
+    /**
+     * Builds the border appearance/disappearance animation.
+     */
+    @NonNull
+    public Animator buildAnimator(boolean isAppearing) {
+        mRunningBorderAnimation = mBorderAnimationProgress.animateToValue(isAppearing ? 1f : 0f);
+        mRunningBorderAnimation.setDuration(
+                isAppearing ? mAppearanceDurationMs : mDisappearanceDurationMs);
+
+        mRunningBorderAnimation.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationStart(Animator animation) {
+                mBorderAnimationParams.onShowBorder();
+            }
+        });
+        mRunningBorderAnimation.addListener(
+                AnimatorListeners.forEndCallback(() -> {
+                    mRunningBorderAnimation = null;
+                    if (isAppearing) {
+                        return;
+                    }
+                    mBorderAnimationParams.onHideBorder();
+                }));
+
+        return mRunningBorderAnimation;
+    }
+
+    /**
+     * Immediately shows/hides the border without an animation.
+     * <p>
+     * To animate the appearance/disappearance, see {@link BorderAnimator#buildAnimator(boolean)}
+     */
+    public void setBorderVisible(boolean visible) {
+        if (mRunningBorderAnimation != null) {
+            mRunningBorderAnimation.end();
+        }
+        if (visible) {
+            mBorderAnimationParams.onShowBorder();
+        }
+        mBorderAnimationProgress.updateValue(visible ? 1f : 0f);
+        if (!visible) {
+            mBorderAnimationParams.onHideBorder();
+        }
+    }
+
+    /**
+     * Callback to update the border bounds when building this animation.
+     */
+    public interface BorderBoundsBuilder {
+
+        /**
+         * Sets the given rect to the most up-to-date bounds.
+         */
+        void updateBorderBounds(Rect rect);
+    }
+
+    /**
+     * Params for handling different target view layout situation.
+     */
+    private abstract static class BorderAnimationParams {
+
+        @NonNull private final Rect mBorderBounds = new Rect();
+        @NonNull private final BorderBoundsBuilder mBoundsBuilder;
+
+        @NonNull final View mTargetView;
+        @Px final int mBorderWidthPx;
+
+        private float mAnimationProgress = 0f;
+        @Nullable private View.OnLayoutChangeListener mLayoutChangeListener;
+
+        /**
+         * @param borderWidthPx the width of the border, in pixels
+         * @param boundsBuilder callback to update the border bounds
+         * @param targetView the view that will be drawing the border
+         */
+        private BorderAnimationParams(
+                @Px int borderWidthPx,
+                @NonNull BorderBoundsBuilder boundsBuilder,
+                @NonNull View targetView) {
+            mBorderWidthPx = borderWidthPx;
+            mBoundsBuilder = boundsBuilder;
+            mTargetView = targetView;
+        }
+
+        private void setProgress(float progress) {
+            mAnimationProgress = progress;
+        }
+
+        private float getBorderWidth() {
+            return mBorderWidthPx * mAnimationProgress;
+        }
+
+        float getAlignmentAdjustment() {
+            // Outset the border by half the width to create an outwards-growth animation
+            return (-getBorderWidth() / 2f) + getAlignmentAdjustmentInset();
+        }
+
+
+        void onShowBorder() {
+            if (mLayoutChangeListener == null) {
+                mLayoutChangeListener =
+                        (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
+                            onShowBorder();
+                            mTargetView.invalidate();
+                        };
+                mTargetView.addOnLayoutChangeListener(mLayoutChangeListener);
+            }
+            mBoundsBuilder.updateBorderBounds(mBorderBounds);
+        }
+
+        void onHideBorder() {
+            if (mLayoutChangeListener != null) {
+                mTargetView.removeOnLayoutChangeListener(mLayoutChangeListener);
+                mLayoutChangeListener = null;
+            }
+        }
+
+        abstract int getAlignmentAdjustmentInset();
+
+        abstract float getRadiusAdjustment();
+    }
+
+    /**
+     * Use an instance of this {@link BorderAnimationParams} if the border can be drawn outside the
+     * target view's bounds without any additional logic.
+     */
+    public static final class SimpleParams extends BorderAnimationParams {
+
+        public SimpleParams(
+                @Px int borderWidthPx,
+                @NonNull BorderBoundsBuilder boundsBuilder,
+                @NonNull View targetView) {
+            super(borderWidthPx, boundsBuilder, targetView);
+        }
+
+        @Override
+        int getAlignmentAdjustmentInset() {
+            return 0;
+        }
+
+        @Override
+        float getRadiusAdjustment() {
+            return -getAlignmentAdjustment();
+        }
+    }
+
+    /**
+     * Use an instance of this {@link BorderAnimationParams} if the border would other be clipped by
+     * the target view's bound.
+     * <p>
+     * Note: using these params will set the scales and pivots of the
+     * container and content views, however will only reset the scales back to 1.
+     */
+    public static final class ScalingParams extends BorderAnimationParams {
+
+        @NonNull private final View mContentView;
+
+        /**
+         * @param targetView the view that will be drawing the border. this view will be scaled up
+         *                   to make room for the border
+         * @param contentView the view around which the border will be drawn. this view will be
+         *                    scaled down reciprocally to keep its original size and location.
+         */
+        public ScalingParams(
+                @Px int borderWidthPx,
+                @NonNull BorderBoundsBuilder boundsBuilder,
+                @NonNull View targetView,
+                @NonNull View contentView) {
+            super(borderWidthPx, boundsBuilder, targetView);
+            mContentView = contentView;
+        }
+
+        @Override
+        void onShowBorder() {
+            super.onShowBorder();
+            float width = mTargetView.getWidth();
+            float height = mTargetView.getHeight();
+            // Scale up just enough to make room for the border. Fail fast and fix the scaling
+            // onLayout.
+            float scaleX = width == 0 ? 1f : 1f + ((2 * mBorderWidthPx) / width);
+            float scaleY = height == 0 ? 1f : 1f + ((2 * mBorderWidthPx) / height);
+
+            mTargetView.setPivotX(width / 2);
+            mTargetView.setPivotY(height / 2);
+            mTargetView.setScaleX(scaleX);
+            mTargetView.setScaleY(scaleY);
+
+            mContentView.setPivotX(mContentView.getWidth() / 2f);
+            mContentView.setPivotY(mContentView.getHeight() / 2f);
+            mContentView.setScaleX(1f / scaleX);
+            mContentView.setScaleY(1f / scaleY);
+        }
+
+        @Override
+        void onHideBorder() {
+            super.onHideBorder();
+            mTargetView.setPivotX(mTargetView.getWidth());
+            mTargetView.setPivotY(mTargetView.getHeight());
+            mTargetView.setScaleX(1f);
+            mTargetView.setScaleY(1f);
+
+            mContentView.setPivotX(mContentView.getWidth() / 2f);
+            mContentView.setPivotY(mContentView.getHeight() / 2f);
+            mContentView.setScaleX(1f);
+            mContentView.setScaleY(1f);
+        }
+
+        @Override
+        int getAlignmentAdjustmentInset() {
+            // Inset the border since we are scaling the container up
+            return mBorderWidthPx;
+        }
+
+        @Override
+        float getRadiusAdjustment() {
+            // Increase the radius since we are scaling the container up
+            return getAlignmentAdjustment();
+        }
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/util/DesktopTask.java b/quickstep/src/com/android/quickstep/util/DesktopTask.java
new file mode 100644
index 0000000..b3f5d82
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/DesktopTask.java
@@ -0,0 +1,59 @@
+/*
+ * 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.quickstep.util;
+
+import androidx.annotation.NonNull;
+
+import com.android.quickstep.views.TaskView;
+import com.android.systemui.shared.recents.model.Task;
+
+import java.util.ArrayList;
+
+/**
+ * A {@link Task} container that can contain N number of tasks that are part of the desktop in
+ * recent tasks list.
+ */
+public class DesktopTask extends GroupTask {
+
+    @NonNull
+    public final ArrayList<Task> tasks;
+
+    public DesktopTask(@NonNull ArrayList<Task> tasks) {
+        super(tasks.get(0), null, null, TaskView.Type.DESKTOP);
+        this.tasks = tasks;
+    }
+
+    @Override
+    public boolean containsTask(int taskId) {
+        for (Task task : tasks) {
+            if (task.key.id == taskId) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public boolean hasMultipleTasks() {
+        return true;
+    }
+
+    @Override
+    public DesktopTask copy() {
+        return new DesktopTask(tasks);
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/util/GroupTask.java b/quickstep/src/com/android/quickstep/util/GroupTask.java
index e2563e3..2be4f0a 100644
--- a/quickstep/src/com/android/quickstep/util/GroupTask.java
+++ b/quickstep/src/com/android/quickstep/util/GroupTask.java
@@ -19,7 +19,8 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
-import com.android.launcher3.util.SplitConfigurationOptions.StagedSplitBounds;
+import com.android.launcher3.util.SplitConfigurationOptions.SplitBounds;
+import com.android.quickstep.views.TaskView;
 import com.android.systemui.shared.recents.model.Task;
 
 /**
@@ -27,23 +28,25 @@
  * are represented as an app-pair in the recents task list.
  */
 public class GroupTask {
-    public @NonNull Task task1;
-    public @Nullable Task task2;
-    public @Nullable StagedSplitBounds mStagedSplitBounds;
+    @NonNull
+    public final Task task1;
+    @Nullable
+    public final Task task2;
+    @Nullable
+    public final SplitBounds mSplitBounds;
+    @TaskView.Type
+    public final int taskViewType;
 
-    public GroupTask(@NonNull Task t1, @Nullable Task t2,
-            @Nullable StagedSplitBounds stagedSplitBounds) {
-        task1 = t1;
-        task2 = t2;
-        mStagedSplitBounds = stagedSplitBounds;
+    public GroupTask(@NonNull Task t1, @Nullable Task t2, @Nullable SplitBounds splitBounds) {
+        this(t1, t2, splitBounds, t2 != null ? TaskView.Type.GROUPED : TaskView.Type.SINGLE);
     }
 
-    public GroupTask(@NonNull GroupTask group) {
-        task1 = new Task(group.task1);
-        task2 = group.task2 != null
-                ? new Task(group.task2)
-                : null;
-        mStagedSplitBounds = group.mStagedSplitBounds;
+    protected GroupTask(@NonNull Task t1, @Nullable Task t2, @Nullable SplitBounds splitBounds,
+            @TaskView.Type int taskViewType) {
+        task1 = t1;
+        task2 = t2;
+        mSplitBounds = splitBounds;
+        this.taskViewType = taskViewType;
     }
 
     public boolean containsTask(int taskId) {
@@ -53,4 +56,14 @@
     public boolean hasMultipleTasks() {
         return task2 != null;
     }
+
+    /**
+     * Create a copy of this instance
+     */
+    public GroupTask copy() {
+        return new GroupTask(
+                new Task(task1),
+                task2 != null ? new Task(task2) : null,
+                mSplitBounds);
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/util/ImageActionUtils.java b/quickstep/src/com/android/quickstep/util/ImageActionUtils.java
index 63d5b0d..3a1c99b 100644
--- a/quickstep/src/com/android/quickstep/util/ImageActionUtils.java
+++ b/quickstep/src/com/android/quickstep/util/ImageActionUtils.java
@@ -18,6 +18,8 @@
 
 import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
 import static android.content.Intent.FLAG_GRANT_READ_URI_PERMISSION;
+import static android.view.WindowManager.ScreenshotSource.SCREENSHOT_OVERVIEW;
+import static android.view.WindowManager.TAKE_SCREENSHOT_PROVIDED_IMAGE;
 
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
 import static com.android.launcher3.util.Executors.THREAD_POOL_EXECUTOR;
@@ -43,12 +45,11 @@
 import android.util.Log;
 import android.view.View;
 
-import androidx.annotation.UiThread;
 import androidx.annotation.WorkerThread;
 import androidx.core.content.FileProvider;
 
 import com.android.internal.app.ChooserActivity;
-import com.android.internal.util.ScreenshotHelper;
+import com.android.internal.util.ScreenshotRequest;
 import com.android.launcher3.BuildConfig;
 import com.android.quickstep.SystemUiProxy;
 import com.android.systemui.shared.recents.model.Task;
@@ -75,78 +76,87 @@
      * Saves screenshot to location determine by SystemUiProxy
      */
     public static void saveScreenshot(SystemUiProxy systemUiProxy, Bitmap screenshot,
-            Rect screenshotBounds,
-            Insets visibleInsets, Task.TaskKey task) {
-        systemUiProxy.handleImageBundleAsScreenshot(
-                ScreenshotHelper.HardwareBitmapBundler.hardwareBitmapToBundle(screenshot),
-                screenshotBounds, visibleInsets, task);
+            Rect screenshotBounds, Insets visibleInsets, Task.TaskKey task) {
+        ScreenshotRequest request =
+                new ScreenshotRequest.Builder(TAKE_SCREENSHOT_PROVIDED_IMAGE, SCREENSHOT_OVERVIEW)
+                .setTopComponent(task.sourceComponent)
+                .setTaskId(task.id)
+                .setUserId(task.userId)
+                .setBitmap(screenshot)
+                .setBoundsOnScreen(screenshotBounds)
+                .setInsets(visibleInsets)
+                .build();
+        systemUiProxy.takeScreenshot(request);
     }
 
     /**
      * Launch the activity to share image for overview sharing. This is to share cropped bitmap
      * with specific share targets (with shortcutInfo and appTarget) rendered in overview.
      */
-    @UiThread
     public static void shareImage(Context context, Supplier<Bitmap> bitmapSupplier, RectF rectF,
             ShortcutInfo shortcutInfo, AppTarget appTarget, String tag) {
-        if (bitmapSupplier.get() == null) {
-            return;
-        }
-        Rect crop = new Rect();
-        rectF.round(crop);
-        Intent intent = new Intent();
-        Uri uri =  getImageUri(bitmapSupplier.get(), crop, context, tag);
-        ClipData clipdata = new ClipData(new ClipDescription("content",
-                new String[]{"image/png"}),
-                new ClipData.Item(uri));
-        intent.setAction(Intent.ACTION_SEND)
-            .setComponent(new ComponentName(appTarget.getPackageName(), appTarget.getClassName()))
-            .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
-            .addFlags(FLAG_GRANT_READ_URI_PERMISSION)
-            .setType("image/png")
-            .putExtra(Intent.EXTRA_STREAM, uri)
-            .putExtra(Intent.EXTRA_SHORTCUT_ID, shortcutInfo.getId())
-            .setClipData(clipdata);
+        UI_HELPER_EXECUTOR.execute(() -> {
+            Bitmap bitmap = bitmapSupplier.get();
+            if (bitmap == null) {
+                return;
+            }
+            Rect crop = new Rect();
+            rectF.round(crop);
+            Intent intent = new Intent();
+            Uri uri = getImageUri(bitmap, crop, context, tag);
+            ClipData clipdata = new ClipData(new ClipDescription("content",
+                    new String[]{"image/png"}),
+                    new ClipData.Item(uri));
+            intent.setAction(Intent.ACTION_SEND)
+                    .setComponent(
+                            new ComponentName(appTarget.getPackageName(), appTarget.getClassName()))
+                    .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+                    .addFlags(FLAG_GRANT_READ_URI_PERMISSION)
+                    .setType("image/png")
+                    .putExtra(Intent.EXTRA_STREAM, uri)
+                    .putExtra(Intent.EXTRA_SHORTCUT_ID, shortcutInfo.getId())
+                    .setClipData(clipdata);
 
-        if (context.getUserId() != appTarget.getUser().getIdentifier()) {
-            intent.prepareToLeaveUser(context.getUserId());
-            intent.fixUris(context.getUserId());
-            context.startActivityAsUser(intent, appTarget.getUser());
-        } else {
-            context.startActivity(intent);
-        }
+            if (context.getUserId() != appTarget.getUser().getIdentifier()) {
+                intent.prepareToLeaveUser(context.getUserId());
+                intent.fixUris(context.getUserId());
+                context.startActivityAsUser(intent, appTarget.getUser());
+            } else {
+                context.startActivity(intent);
+            }
+        });
     }
 
     /**
      * Launch the activity to share image.
      */
-    @UiThread
     public static void startShareActivity(Context context, Supplier<Bitmap> bitmapSupplier,
             Rect crop, Intent intent, String tag) {
-        if (bitmapSupplier.get() == null) {
-            Log.e(tag, "No snapshot available, not starting share.");
-            return;
-        }
-
-        UI_HELPER_EXECUTOR.execute(() -> persistBitmapAndStartActivity(context,
-                bitmapSupplier.get(), crop, intent, ImageActionUtils::getShareIntentForImageUri,
-                tag));
+        UI_HELPER_EXECUTOR.execute(() -> {
+            Bitmap bitmap = bitmapSupplier.get();
+            if (bitmap == null) {
+                Log.e(tag, "No snapshot available, not starting share.");
+                return;
+            }
+            persistBitmapAndStartActivity(context, bitmap, crop, intent,
+                    ImageActionUtils::getShareIntentForImageUri, tag);
+        });
     }
 
     /**
      * Launch the activity to share image with shared element transition.
      */
-    @UiThread
     public static void startShareActivity(Context context, Supplier<Bitmap> bitmapSupplier,
             Rect crop, Intent intent, String tag, View sharedElement) {
-        if (bitmapSupplier.get() == null) {
-            Log.e(tag, "No snapshot available, not starting share.");
-            return;
-        }
-
-        UI_HELPER_EXECUTOR.execute(() -> persistBitmapAndStartActivity(context,
-                bitmapSupplier.get(), crop, intent, ImageActionUtils::getShareIntentForImageUri,
-                tag, sharedElement));
+        UI_HELPER_EXECUTOR.execute(() -> {
+            Bitmap bitmap = bitmapSupplier.get();
+            if (bitmap == null) {
+                Log.e(tag, "No snapshot available, not starting share.");
+                return;
+            }
+            persistBitmapAndStartActivity(context, bitmap,
+                    crop, intent, ImageActionUtils::getShareIntentForImageUri, tag, sharedElement);
+        });
     }
 
     /**
diff --git a/quickstep/src/com/android/quickstep/util/LauncherUnfoldAnimationController.java b/quickstep/src/com/android/quickstep/util/LauncherUnfoldAnimationController.java
index 97be437..6d15e8b 100644
--- a/quickstep/src/com/android/quickstep/util/LauncherUnfoldAnimationController.java
+++ b/quickstep/src/com/android/quickstep/util/LauncherUnfoldAnimationController.java
@@ -18,33 +18,38 @@
 import static com.android.launcher3.LauncherAnimUtils.HOTSEAT_SCALE_PROPERTY_FACTORY;
 import static com.android.launcher3.LauncherAnimUtils.SCALE_INDEX_UNFOLD_ANIMATION;
 import static com.android.launcher3.LauncherAnimUtils.WORKSPACE_SCALE_PROPERTY_FACTORY;
-import static com.android.launcher3.Utilities.comp;
 
 import android.annotation.Nullable;
+import android.os.Trace;
 import android.util.FloatProperty;
 import android.util.MathUtils;
 import android.view.WindowManager;
-import android.view.WindowManagerGlobal;
 
 import androidx.core.view.OneShotPreDrawListener;
 
+import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
 import com.android.launcher3.Hotseat;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.Workspace;
+import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.util.HorizontalInsettableView;
+import com.android.quickstep.SystemUiProxy;
+import com.android.quickstep.util.unfold.PreemptiveUnfoldTransitionProgressProvider;
 import com.android.systemui.unfold.UnfoldTransitionProgressProvider;
 import com.android.systemui.unfold.UnfoldTransitionProgressProvider.TransitionProgressListener;
+import com.android.systemui.unfold.updates.RotationChangeProvider;
 import com.android.systemui.unfold.util.NaturalRotationUnfoldProgressProvider;
 import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider;
 
 /**
  * Controls animations that are happening during unfolding foldable devices
  */
-public class LauncherUnfoldAnimationController {
+public class LauncherUnfoldAnimationController implements OnDeviceProfileChangeListener {
 
     // Percentage of the width of the quick search bar that will be reduced
     // from the both sides of the bar when progress is 0
-    private static final float MAX_WIDTH_INSET_FRACTION = 0.15f;
+    private static final float MAX_WIDTH_INSET_FRACTION = 0.04f;
     private static final FloatProperty<Workspace<?>> WORKSPACE_SCALE_PROPERTY =
             WORKSPACE_SCALE_PROPERTY_FACTORY.get(SCALE_INDEX_UNFOLD_ANIMATION);
     private static final FloatProperty<Hotseat> HOTSEAT_SCALE_PROPERTY =
@@ -55,6 +60,11 @@
     private final NaturalRotationUnfoldProgressProvider mNaturalOrientationProgressProvider;
     private final UnfoldMoveFromCenterHotseatAnimator mUnfoldMoveFromCenterHotseatAnimator;
     private final UnfoldMoveFromCenterWorkspaceAnimator mUnfoldMoveFromCenterWorkspaceAnimator;
+    private PreemptiveUnfoldTransitionProgressProvider mPreemptiveProgressProvider = null;
+    private Boolean mIsTablet = null;
+
+    private static final String TRACE_WAIT_TO_HANDLE_UNFOLD_TRANSITION =
+            "LauncherUnfoldAnimationController#waitingForTheNextFrame";
 
     @Nullable
     private HorizontalInsettableView mQsbInsettable;
@@ -62,16 +72,28 @@
     public LauncherUnfoldAnimationController(
             Launcher launcher,
             WindowManager windowManager,
-            UnfoldTransitionProgressProvider unfoldTransitionProgressProvider) {
+            UnfoldTransitionProgressProvider unfoldTransitionProgressProvider,
+            RotationChangeProvider rotationChangeProvider) {
         mLauncher = launcher;
-        mProgressProvider = new ScopedUnfoldTransitionProgressProvider(
-                unfoldTransitionProgressProvider);
+
+        if (FeatureFlags.PREEMPTIVE_UNFOLD_ANIMATION_START.get()) {
+            mPreemptiveProgressProvider = new PreemptiveUnfoldTransitionProgressProvider(
+                    unfoldTransitionProgressProvider, launcher.getMainThreadHandler());
+            mPreemptiveProgressProvider.init();
+
+            mProgressProvider = new ScopedUnfoldTransitionProgressProvider(
+                    mPreemptiveProgressProvider);
+        } else {
+            mProgressProvider = new ScopedUnfoldTransitionProgressProvider(
+                    unfoldTransitionProgressProvider);
+        }
+
         mUnfoldMoveFromCenterHotseatAnimator = new UnfoldMoveFromCenterHotseatAnimator(launcher,
-                windowManager);
+                windowManager, rotationChangeProvider);
         mUnfoldMoveFromCenterWorkspaceAnimator = new UnfoldMoveFromCenterWorkspaceAnimator(launcher,
-                windowManager);
+                windowManager, rotationChangeProvider);
         mNaturalOrientationProgressProvider = new NaturalRotationUnfoldProgressProvider(launcher,
-                WindowManagerGlobal.getWindowManagerService(), mProgressProvider);
+                rotationChangeProvider, mProgressProvider);
         mNaturalOrientationProgressProvider.init();
 
         // Animated in all orientations
@@ -81,6 +103,8 @@
         // Animated only in natural orientation
         mNaturalOrientationProgressProvider.addCallback(new QsbAnimationListener());
         mNaturalOrientationProgressProvider.addCallback(mUnfoldMoveFromCenterHotseatAnimator);
+
+        mLauncher.addOnDeviceProfileChangeListener(this);
     }
 
     /**
@@ -92,8 +116,22 @@
             mQsbInsettable = (HorizontalInsettableView) hotseat.getQsb();
         }
 
+        mProgressProvider.setReadyToHandleTransition(true);
+    }
+
+    private void preemptivelyStartAnimationOnNextFrame() {
+        Trace.asyncTraceBegin(Trace.TRACE_TAG_APP,
+                TRACE_WAIT_TO_HANDLE_UNFOLD_TRANSITION, /* cookie= */ 0);
+
+        // Start the animation (and apply the transformations) in pre-draw listener to make sure
+        // that the views are laid out as some transformations depend on the view sizes and position
         OneShotPreDrawListener.add(mLauncher.getWorkspace(),
-                () -> mProgressProvider.setReadyToHandleTransition(true));
+                () -> {
+                    Trace.asyncTraceEnd(Trace.TRACE_TAG_APP,
+                            TRACE_WAIT_TO_HANDLE_UNFOLD_TRANSITION, /* cookie= */ 0);
+                    mPreemptiveProgressProvider.preemptivelyStartTransition(
+                            /* initialProgress= */ 0f);
+                });
     }
 
     /**
@@ -110,14 +148,34 @@
     public void onDestroy() {
         mProgressProvider.destroy();
         mNaturalOrientationProgressProvider.destroy();
+        mLauncher.removeOnDeviceProfileChangeListener(this);
     }
 
-    /** Called when launcher finished binding its items. */
+    /**
+     * Called when launcher has finished binding its items
+     */
     public void updateRegisteredViewsIfNeeded() {
         mUnfoldMoveFromCenterHotseatAnimator.updateRegisteredViewsIfNeeded();
         mUnfoldMoveFromCenterWorkspaceAnimator.updateRegisteredViewsIfNeeded();
     }
 
+    @Override
+    public void onDeviceProfileChanged(DeviceProfile dp) {
+        if (!FeatureFlags.PREEMPTIVE_UNFOLD_ANIMATION_START.get()) {
+            return;
+        }
+
+        if (mIsTablet != null && dp.isTablet != mIsTablet) {
+            if (dp.isTablet && SystemUiProxy.INSTANCE.get(mLauncher).isActive()) {
+                // Preemptively start the unfold animation to make sure that we have drawn
+                // the first frame of the animation before the screen gets unblocked
+                preemptivelyStartAnimationOnNextFrame();
+            }
+        }
+
+        mIsTablet = dp.isTablet;
+    }
+
     private class QsbAnimationListener implements TransitionProgressListener {
 
         @Override
@@ -134,7 +192,7 @@
         @Override
         public void onTransitionProgress(float progress) {
             if (mQsbInsettable != null) {
-                float insetPercentage = comp(progress) * MAX_WIDTH_INSET_FRACTION;
+                float insetPercentage = (1 - progress) * MAX_WIDTH_INSET_FRACTION;
                 mQsbInsettable.setHorizontalInsets(insetPercentage);
             }
         }
@@ -142,6 +200,8 @@
 
     private class LauncherScaleAnimationListener implements TransitionProgressListener {
 
+        private static final float SCALE_LAUNCHER_FROM = 0.92f;
+
         @Override
         public void onTransitionStarted() {
             mLauncher.getWorkspace().setPivotToScaleWithSelf(mLauncher.getHotseat());
@@ -154,7 +214,7 @@
 
         @Override
         public void onTransitionProgress(float progress) {
-            setScale(MathUtils.constrainedMap(0.85f, 1, 0, 1, progress));
+            setScale(MathUtils.constrainedMap(SCALE_LAUNCHER_FROM, 1, 0, 1, progress));
         }
 
         private void setScale(float value) {
diff --git a/quickstep/src/com/android/quickstep/util/LauncherViewsMoveFromCenterTranslationApplier.java b/quickstep/src/com/android/quickstep/util/LauncherViewsMoveFromCenterTranslationApplier.java
index effdfdd..f6b2441 100644
--- a/quickstep/src/com/android/quickstep/util/LauncherViewsMoveFromCenterTranslationApplier.java
+++ b/quickstep/src/com/android/quickstep/util/LauncherViewsMoveFromCenterTranslationApplier.java
@@ -15,12 +15,13 @@
  */
 package com.android.quickstep.util;
 
+import static com.android.launcher3.util.MultiTranslateDelegate.INDEX_MOVE_FROM_CENTER_ANIM;
+
 import android.annotation.NonNull;
 import android.view.View;
 
-import com.android.launcher3.BubbleTextView;
-import com.android.launcher3.folder.FolderIcon;
-import com.android.launcher3.widget.NavigableAppWidgetHostView;
+import com.android.launcher3.Reorderable;
+import com.android.launcher3.util.MultiTranslateDelegate;
 import com.android.systemui.shared.animation.UnfoldMoveFromCenterAnimator.TranslationApplier;
 
 /**
@@ -31,12 +32,9 @@
 
     @Override
     public void apply(@NonNull View view, float x, float y) {
-        if (view instanceof NavigableAppWidgetHostView) {
-            ((NavigableAppWidgetHostView) view).setTranslationForMoveFromCenterAnimation(x, y);
-        } else if (view instanceof BubbleTextView) {
-            ((BubbleTextView) view).setTranslationForMoveFromCenterAnimation(x, y);
-        } else if (view instanceof FolderIcon) {
-            ((FolderIcon) view).setTranslationForMoveFromCenterAnimation(x, y);
+        if (view instanceof Reorderable) {
+            MultiTranslateDelegate mtd = ((Reorderable) view).getTranslateDelegate();
+            mtd.setTranslation(INDEX_MOVE_FROM_CENTER_ANIM, x, y);
         } else {
             view.setTranslationX(x);
             view.setTranslationY(y);
diff --git a/quickstep/src/com/android/quickstep/util/LayoutUtils.java b/quickstep/src/com/android/quickstep/util/LayoutUtils.java
index d0856be..79656c2 100644
--- a/quickstep/src/com/android/quickstep/util/LayoutUtils.java
+++ b/quickstep/src/com/android/quickstep/util/LayoutUtils.java
@@ -23,7 +23,7 @@
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.touch.PagedOrientationHandler;
 import com.android.launcher3.util.DisplayController;
-import com.android.launcher3.util.DisplayController.NavigationMode;
+import com.android.launcher3.util.NavigationMode;
 import com.android.quickstep.LauncherActivityInterface;
 
 public class LayoutUtils {
@@ -43,7 +43,8 @@
             PagedOrientationHandler orientationHandler) {
         // Track the bottom of the window.
         Rect taskSize = new Rect();
-        LauncherActivityInterface.INSTANCE.calculateTaskSize(context, dp, taskSize);
+        LauncherActivityInterface.INSTANCE.calculateTaskSize(context, dp, taskSize,
+                orientationHandler);
         return orientationHandler.getDistanceToBottomOfRect(dp, taskSize);
     }
 
diff --git a/quickstep/src/com/android/quickstep/util/LogUtils.kt b/quickstep/src/com/android/quickstep/util/LogUtils.kt
new file mode 100644
index 0000000..23a41f6
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/LogUtils.kt
@@ -0,0 +1,33 @@
+/*
+ * 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.quickstep.util
+
+import android.util.Pair
+import com.android.internal.logging.InstanceIdSequence
+import com.android.launcher3.logging.InstanceId
+
+object LogUtils {
+    /**
+     * @return a [Pair] of two InstanceIds but with different types, one that can be used by
+     *   framework (if needing to pass through an intent or such) and one used in Launcher
+     */
+    @JvmStatic
+    fun getShellShareableInstanceId(): Pair<com.android.internal.logging.InstanceId, InstanceId> {
+        val internalInstanceId = InstanceIdSequence(InstanceId.INSTANCE_ID_MAX).newInstanceId()
+        val launcherInstanceId = InstanceId(internalInstanceId.id)
+        return Pair(internalInstanceId, launcherInstanceId)
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/util/LottieAnimationColorUtils.java b/quickstep/src/com/android/quickstep/util/LottieAnimationColorUtils.java
new file mode 100644
index 0000000..f98b04b
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/LottieAnimationColorUtils.java
@@ -0,0 +1,90 @@
+/*
+ * 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.quickstep.util;
+
+import static com.airbnb.lottie.LottieProperty.COLOR_FILTER;
+
+import android.content.res.Resources;
+import android.content.res.Resources.Theme;
+import android.graphics.PorterDuff;
+import android.graphics.PorterDuffColorFilter;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.airbnb.lottie.LottieAnimationView;
+import com.airbnb.lottie.model.KeyPath;
+
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/** Utility class for programmatically updating Lottie animation tokenized colors. */
+public final class LottieAnimationColorUtils {
+
+    private LottieAnimationColorUtils() {}
+
+    /**
+     * Updates the given Lottie animation's tokenized colors according to the given mapping.
+     * <p>
+     * Use this method signature only when {@code tokenToColorCodeMap} maps to packed ARBG color
+     * integers.
+     * <p>
+     * @param animationView {@link LottieAnimationView} whose animation's colors need to be updated
+     * @param tokenToColorCodeMap A mapping from the color tokens used in the Lottie file used in
+     *                            {@code animationView} to packed ARBG color integers.
+     */
+    public static void updateColors(
+            @NonNull LottieAnimationView animationView,
+            @NonNull Map<String, Integer> tokenToColorCodeMap) {
+        updateColors(animationView, tokenToColorCodeMap, null);
+    }
+
+    /**
+     * Updates the given Lottie animation's tokenized colors according to the given mapping.
+     * <p>
+     * Use this method signature with a non-null theme only when {@code tokenToColorCodeMap} maps
+     * to color resource references.
+     * <p>
+     * @param animationView {@link LottieAnimationView} whose animation's colors need to be updated
+     * @param tokenToColorCodeMap A mapping from the color tokens used in the Lottie file used in
+     *                            {@code animationView} to packed ARBG color integers or color
+     *                            resource references.
+     * @param theme {@link Theme} to be used when resolving color resource references. {@code null}
+     *              iff {@code tokenToColorCodeMap} maps to packed ARBG color integers.
+     */
+    public static void updateColors(
+            @NonNull LottieAnimationView animationView,
+            @NonNull Map<String, Integer> tokenToColorCodeMap,
+            @Nullable Theme theme) {
+        Resources resources = animationView.getResources();
+        final Map<String, Integer> tokenToColorMap = theme == null
+                // tokenToColorCodeMap maps directly to ARBG values
+                ? tokenToColorCodeMap
+                // tokenToColorCodeMap maps to color references, build a mapping to resolved colors
+                : tokenToColorCodeMap.keySet().stream().collect(Collectors.toMap(
+                        Function.identity(),
+                        token -> resources.getColor(tokenToColorCodeMap.get(token), theme)));
+
+        animationView.addLottieOnCompositionLoadedListener(
+                composition -> tokenToColorMap.forEach(
+                        (token, color) -> animationView.addValueCallback(
+                                new KeyPath("**", token, "**"),
+                                COLOR_FILTER,
+                                frameInfo -> new PorterDuffColorFilter(
+                                        color, PorterDuff.Mode.SRC_ATOP))));
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/util/MotionPauseDetector.java b/quickstep/src/com/android/quickstep/util/MotionPauseDetector.java
index b83e26e..4bc41bc 100644
--- a/quickstep/src/com/android/quickstep/util/MotionPauseDetector.java
+++ b/quickstep/src/com/android/quickstep/util/MotionPauseDetector.java
@@ -17,13 +17,14 @@
 
 import android.content.Context;
 import android.content.res.Resources;
+import android.util.Log;
 import android.view.MotionEvent;
 import android.view.VelocityTracker;
 
 import com.android.launcher3.Alarm;
 import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
 import com.android.launcher3.compat.AccessibilityManagerCompat;
-import com.android.launcher3.testing.TestProtocol;
 
 /**
  * Given positions along x- or y-axis, tracks velocity and acceleration and determines when there is
@@ -31,6 +32,8 @@
  */
 public class MotionPauseDetector {
 
+    private static final String TAG = "MotionPauseDetector";
+
     // The percentage of the previous speed that determines whether this is a rapid deceleration.
     // The bigger this number, the easier it is to trigger the first pause.
     private static final float RAPID_DECELERATION_FACTOR = 0.6f;
@@ -43,6 +46,12 @@
      */
     private static final long HARDER_TRIGGER_TIMEOUT = 400;
 
+    /**
+     * When running in a test harness, if no motion is added for this amount of time, assume the
+     * motion has paused. (We use an increased timeout since sometimes test devices can be slow.)
+     */
+    private static final long TEST_HARNESS_TRIGGER_TIMEOUT = 2000;
+
     private final float mSpeedVerySlow;
     private final float mSpeedSlow;
     private final float mSpeedSomewhatFast;
@@ -85,7 +94,8 @@
         mSpeedSomewhatFast = res.getDimension(R.dimen.motion_pause_detector_speed_somewhat_fast);
         mSpeedFast = res.getDimension(R.dimen.motion_pause_detector_speed_fast);
         mForcePauseTimeout = new Alarm();
-        mForcePauseTimeout.setOnAlarmListener(alarm -> updatePaused(true /* isPaused */));
+        mForcePauseTimeout.setOnAlarmListener(alarm -> updatePaused(true /* isPaused */,
+                "Force pause timeout after " +  alarm.getLastSetTimeout() + "ms" /* reason */));
         mMakePauseHarderToTrigger = makePauseHarderToTrigger;
         mVelocityProvider = new SystemVelocityProvider(axis);
     }
@@ -102,7 +112,7 @@
      */
     public void setDisallowPause(boolean disallowPause) {
         mDisallowPause = disallowPause;
-        updatePaused(mIsPaused);
+        updatePaused(mIsPaused, "Set disallowPause=" + disallowPause);
     }
 
     /**
@@ -119,9 +129,11 @@
      * @param pointerIndex Index for the pointer being tracked in the motion event
      */
     public void addPosition(MotionEvent ev, int pointerIndex) {
-        long timeoutMs = TestProtocol.sForcePauseTimeout != null
-                ? TestProtocol.sForcePauseTimeout
-                : mMakePauseHarderToTrigger ? HARDER_TRIGGER_TIMEOUT : FORCE_PAUSE_TIMEOUT;
+        long timeoutMs = Utilities.isRunningInTestHarness()
+                ? TEST_HARNESS_TRIGGER_TIMEOUT
+                : mMakePauseHarderToTrigger
+                        ? HARDER_TRIGGER_TIMEOUT
+                        : FORCE_PAUSE_TIMEOUT;
         mForcePauseTimeout.setAlarm(timeoutMs);
         float newVelocity = mVelocityProvider.addMotionEvent(ev, ev.getPointerId(pointerIndex));
         if (mPreviousVelocity != null) {
@@ -134,21 +146,27 @@
         float speed = Math.abs(velocity);
         float previousSpeed = Math.abs(prevVelocity);
         boolean isPaused;
+        String isPausedReason = "";
         if (mIsPaused) {
             // Continue to be paused until moving at a fast speed.
             isPaused = speed < mSpeedFast || previousSpeed < mSpeedFast;
+            isPausedReason = "Was paused, but started moving at a fast speed";
         } else {
             if (velocity < 0 != prevVelocity < 0) {
                 // We're just changing directions, not necessarily stopping.
                 isPaused = false;
+                isPausedReason = "Velocity changed directions";
             } else {
                 isPaused = speed < mSpeedVerySlow && previousSpeed < mSpeedVerySlow;
+                isPausedReason = "Pause requires back to back slow speeds";
                 if (!isPaused && !mHasEverBeenPaused) {
                     // We want to be more aggressive about detecting the first pause to ensure it
                     // feels as responsive as possible; getting two very slow speeds back to back
                     // takes too long, so also check for a rapid deceleration.
                     boolean isRapidDeceleration = speed < previousSpeed * RAPID_DECELERATION_FACTOR;
                     isPaused = isRapidDeceleration && speed < mSpeedSomewhatFast;
+                    isPausedReason = "Didn't have back to back slow speeds, checking for rapid"
+                            + " deceleration on first pause only";
                 }
                 if (mMakePauseHarderToTrigger) {
                     if (speed < mSpeedSlow) {
@@ -156,22 +174,31 @@
                             mSlowStartTime = time;
                         }
                         isPaused = time - mSlowStartTime >= HARDER_TRIGGER_TIMEOUT;
+                        isPausedReason = "Maintained slow speed for sufficient duration when making"
+                                + " pause harder to trigger";
                     } else {
                         mSlowStartTime = 0;
                         isPaused = false;
+                        isPausedReason = "Intentionally making pause harder to trigger";
                     }
                 }
             }
         }
-        updatePaused(isPaused);
+        updatePaused(isPaused, isPausedReason);
     }
 
-    private void updatePaused(boolean isPaused) {
+    private void updatePaused(boolean isPaused, String reason) {
         if (mDisallowPause) {
+            reason = "Disallow pause; otherwise, would have been " + isPaused + " due to " + reason;
             isPaused = false;
         }
         if (mIsPaused != isPaused) {
             mIsPaused = isPaused;
+            String logString = "onMotionPauseChanged, paused=" + mIsPaused + " reason=" + reason;
+            if (Utilities.isRunningInTestHarness()) {
+                Log.d(TAG, logString);
+            }
+            ActiveGestureLog.INSTANCE.addLog(logString);
             boolean isFirstDetectedPause = !mHasEverBeenPaused && mIsPaused;
             if (mIsPaused) {
                 AccessibilityManagerCompat.sendPauseDetectedEventToTest(mContext);
diff --git a/quickstep/src/com/android/quickstep/util/NavBarPosition.java b/quickstep/src/com/android/quickstep/util/NavBarPosition.java
index 527a6d2..59c8263 100644
--- a/quickstep/src/com/android/quickstep/util/NavBarPosition.java
+++ b/quickstep/src/com/android/quickstep/util/NavBarPosition.java
@@ -15,12 +15,12 @@
  */
 package com.android.quickstep.util;
 
-import static com.android.launcher3.util.DisplayController.NavigationMode.NO_BUTTON;
+import static com.android.launcher3.util.NavigationMode.NO_BUTTON;
 
 import android.view.Surface;
 
 import com.android.launcher3.util.DisplayController.Info;
-import com.android.launcher3.util.DisplayController.NavigationMode;
+import com.android.launcher3.util.NavigationMode;
 
 /**
  * Utility class to check nav bar position.
diff --git a/quickstep/src/com/android/quickstep/util/OverviewToSplitTimings.java b/quickstep/src/com/android/quickstep/util/OverviewToSplitTimings.java
new file mode 100644
index 0000000..e189a66
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/OverviewToSplitTimings.java
@@ -0,0 +1,98 @@
+/*
+ * 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.quickstep.util;
+
+import static com.android.launcher3.anim.Interpolators.EMPHASIZED;
+import static com.android.launcher3.anim.Interpolators.INSTANT;
+
+import android.view.animation.Interpolator;
+
+/**
+ * Timings for the Overview > OverviewSplitSelect animation.
+ */
+abstract class OverviewToSplitTimings implements SplitAnimationTimings {
+    // Overwritten by device-specific timings
+    abstract public int getPlaceholderFadeInStart();
+    abstract public int getPlaceholderFadeInEnd();
+    abstract public int getPlaceholderIconFadeInStart();
+    abstract public int getPlaceholderIconFadeInEnd();
+    abstract public int getStagedRectSlideStart();
+    abstract public int getStagedRectSlideEnd();
+    abstract public int getGridSlideStart();
+    abstract public int getGridSlideStagger();
+    abstract public int getGridSlideDuration();
+
+    // Common timings
+    public int getIconFadeStart() { return 0; }
+    public int getIconFadeEnd() { return 83; }
+    public int getActionsFadeStart() { return 0; }
+    public int getActionsFadeEnd() { return 83; }
+    public int getInstructionsContainerFadeInStart() { return 167; }
+    public int getInstructionsContainerFadeInEnd() { return 250; }
+    public int getInstructionsTextFadeInStart() { return 217; }
+    public int getInstructionsTextFadeInEnd() { return 300; }
+    public int getInstructionsUnfoldStart() { return 167; }
+    public int getInstructionsUnfoldEnd() { return 500; }
+    public Interpolator getGridSlidePrimaryInterpolator() { return EMPHASIZED; }
+    public Interpolator getGridSlideSecondaryInterpolator() { return INSTANT; }
+
+    abstract public int getDuration();
+    abstract public Interpolator getStagedRectXInterpolator();
+    abstract public Interpolator getStagedRectYInterpolator();
+    abstract public Interpolator getStagedRectScaleXInterpolator();
+    abstract public Interpolator getStagedRectScaleYInterpolator();
+
+    public float getGridSlideStartOffset() {
+        return (float) getGridSlideStart() / getDuration();
+    }
+    public float getGridSlideStaggerOffset() {
+        return (float) getGridSlideStagger() / getDuration();
+    }
+    public float getGridSlideDurationOffset() {
+        return (float) getGridSlideDuration() / getDuration();
+    }
+    public float getActionsFadeStartOffset() {
+        return (float) getActionsFadeStart() / getDuration();
+    }
+    public float getActionsFadeEndOffset() {
+        return (float) getActionsFadeEnd() / getDuration();
+    }
+    public float getIconFadeStartOffset() {
+        return (float) getIconFadeStart() / getDuration();
+    }
+    public float getIconFadeEndOffset() {
+        return (float) getIconFadeEnd() / getDuration();
+    }
+    public float getInstructionsContainerFadeInStartOffset() {
+        return (float) getInstructionsContainerFadeInStart() / getDuration();
+    }
+    public float getInstructionsContainerFadeInEndOffset() {
+        return (float) getInstructionsContainerFadeInEnd() / getDuration();
+    }
+    public float getInstructionsTextFadeInStartOffset() {
+        return (float) getInstructionsTextFadeInStart() / getDuration();
+    }
+    public float getInstructionsTextFadeInEndOffset() {
+        return (float) getInstructionsTextFadeInEnd() / getDuration();
+    }
+    public float getInstructionsUnfoldStartOffset() {
+        return (float) getInstructionsUnfoldStart() / getDuration();
+    }
+    public float getInstructionsUnfoldEndOffset() {
+        return (float) getInstructionsUnfoldEnd() / getDuration();
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/util/PhoneOverviewToSplitTimings.java b/quickstep/src/com/android/quickstep/util/PhoneOverviewToSplitTimings.java
new file mode 100644
index 0000000..f1dde53
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/PhoneOverviewToSplitTimings.java
@@ -0,0 +1,43 @@
+/*
+ * 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.quickstep.util;
+
+import static com.android.launcher3.anim.Interpolators.EMPHASIZED;
+
+import android.view.animation.Interpolator;
+
+/**
+ * Timings for the Overview > OverviewSplitSelect animation on phones.
+ */
+public class PhoneOverviewToSplitTimings
+        extends OverviewToSplitTimings implements SplitAnimationTimings {
+    public int getPlaceholderFadeInStart() { return 0; }
+    public int getPlaceholderFadeInEnd() { return 133; }
+    public int getPlaceholderIconFadeInStart() { return 83; }
+    public int getPlaceholderIconFadeInEnd() { return 167; }
+    public int getStagedRectSlideStart() { return 0; }
+    public int getStagedRectSlideEnd() { return 333; }
+    public int getGridSlideStart() { return 100; }
+    public int getGridSlideStagger() { return 0; }
+    public int getGridSlideDuration() { return 417; }
+
+    public int getDuration() { return PHONE_ENTER_DURATION; }
+    public Interpolator getStagedRectXInterpolator() { return EMPHASIZED; }
+    public Interpolator getStagedRectYInterpolator() { return EMPHASIZED; }
+    public Interpolator getStagedRectScaleXInterpolator() { return EMPHASIZED; }
+    public Interpolator getStagedRectScaleYInterpolator() { return EMPHASIZED; }
+}
diff --git a/quickstep/src/com/android/quickstep/util/PhoneSplitToConfirmTimings.java b/quickstep/src/com/android/quickstep/util/PhoneSplitToConfirmTimings.java
new file mode 100644
index 0000000..3d9e09e
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/PhoneSplitToConfirmTimings.java
@@ -0,0 +1,32 @@
+/*
+ * 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.quickstep.util;
+
+/**
+ * Timings for the OverviewSplitSelect > confirmed animation on phones.
+ */
+public class PhoneSplitToConfirmTimings
+        extends SplitToConfirmTimings implements SplitAnimationTimings {
+    public int getPlaceholderFadeInStart() { return 0; }
+    public int getPlaceholderFadeInEnd() { return 133; }
+    public int getPlaceholderIconFadeInStart() { return 50; }
+    public int getPlaceholderIconFadeInEnd() { return 133; }
+    public int getStagedRectSlideStart() { return 0; }
+    public int getStagedRectSlideEnd() { return 333; }
+
+    public int getDuration() { return PHONE_CONFIRM_DURATION; }
+}
diff --git a/quickstep/src/com/android/quickstep/util/ProxyScreenStatusProvider.java b/quickstep/src/com/android/quickstep/util/ProxyScreenStatusProvider.java
index 3777c65..8f79ccf 100644
--- a/quickstep/src/com/android/quickstep/util/ProxyScreenStatusProvider.java
+++ b/quickstep/src/com/android/quickstep/util/ProxyScreenStatusProvider.java
@@ -39,6 +39,16 @@
         mListeners.forEach(ScreenListener::onScreenTurnedOn);
     }
 
+    /** Called when the screen is starting to turn on. */
+    public void onScreenTurningOn() {
+        mListeners.forEach(ScreenListener::onScreenTurningOn);
+    }
+
+    /** Called when the screen is starting to turn off. */
+    public void onScreenTurningOff() {
+        mListeners.forEach(ScreenListener::onScreenTurningOff);
+    }
+
     @Override
     public void addCallback(@NonNull ScreenListener listener) {
         mListeners.add(listener);
diff --git a/quickstep/src/com/android/quickstep/util/QuickstepOnboardingPrefs.java b/quickstep/src/com/android/quickstep/util/QuickstepOnboardingPrefs.java
index fb32581..cf07e6e 100644
--- a/quickstep/src/com/android/quickstep/util/QuickstepOnboardingPrefs.java
+++ b/quickstep/src/com/android/quickstep/util/QuickstepOnboardingPrefs.java
@@ -21,7 +21,7 @@
 import static com.android.launcher3.LauncherState.HINT_STATE;
 import static com.android.launcher3.LauncherState.NORMAL;
 import static com.android.launcher3.LauncherState.OVERVIEW;
-import static com.android.launcher3.util.DisplayController.NavigationMode.NO_BUTTON;
+import static com.android.launcher3.util.NavigationMode.NO_BUTTON;
 
 import android.content.SharedPreferences;
 
@@ -29,7 +29,6 @@
 import com.android.launcher3.Utilities;
 import com.android.launcher3.Workspace;
 import com.android.launcher3.appprediction.AppsDividerView;
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.hybridhotseat.HotseatPredictionController;
 import com.android.launcher3.statemanager.StateManager;
 import com.android.launcher3.statemanager.StateManager.StateListener;
@@ -65,7 +64,7 @@
             });
         }
 
-        if (!Utilities.IS_RUNNING_IN_TEST_HARNESS
+        if (!Utilities.isRunningInTestHarness()
                 && !hasReachedMaxCount(HOTSEAT_DISCOVERY_TIP_COUNT)) {
             stateManager.addStateListener(new StateListener<LauncherState>() {
                 boolean mFromAllApps = false;
@@ -88,8 +87,7 @@
             });
         }
 
-        if (DisplayController.getNavigationMode(launcher) == NO_BUTTON
-                && FeatureFlags.ENABLE_ALL_APPS_EDU.get()) {
+        if (DisplayController.getNavigationMode(launcher) == NO_BUTTON) {
             stateManager.addStateListener(new StateListener<LauncherState>() {
                 private static final int MAX_NUM_SWIPES_TO_TRIGGER_EDU = 3;
 
diff --git a/quickstep/src/com/android/quickstep/util/RecentsAtomicAnimationFactory.java b/quickstep/src/com/android/quickstep/util/RecentsAtomicAnimationFactory.java
index edaa326..1d008da 100644
--- a/quickstep/src/com/android/quickstep/util/RecentsAtomicAnimationFactory.java
+++ b/quickstep/src/com/android/quickstep/util/RecentsAtomicAnimationFactory.java
@@ -15,13 +15,10 @@
  */
 package com.android.quickstep.util;
 
-import static com.android.launcher3.testing.TestProtocol.BAD_STATE;
 import static com.android.quickstep.views.RecentsView.ADJACENT_PAGE_HORIZONTAL_OFFSET;
 
 import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
 import android.animation.ObjectAnimator;
-import android.util.Log;
 
 import androidx.dynamicanimation.animation.DynamicAnimation;
 
@@ -30,8 +27,6 @@
 import com.android.launcher3.statemanager.StatefulActivity;
 import com.android.quickstep.views.RecentsView;
 
-import java.util.Arrays;
-
 public class RecentsAtomicAnimationFactory<ACTIVITY_TYPE extends StatefulActivity, STATE_TYPE>
         extends AtomicAnimationFactory<STATE_TYPE> {
 
@@ -53,27 +48,6 @@
             case INDEX_RECENTS_FADE_ANIM:
                 ObjectAnimator alpha = ObjectAnimator.ofFloat(mActivity.getOverviewPanel(),
                         RecentsView.CONTENT_ALPHA, values);
-                Log.d(BAD_STATE, "RAAF createStateElementAnimation alpha="
-                        + Arrays.toString(values));
-                alpha.addListener(new AnimatorListenerAdapter() {
-                    @Override
-                    public void onAnimationStart(Animator animation) {
-                        Log.d(BAD_STATE, "RAAF createStateElementAnimation onStart");
-                    }
-
-                    @Override
-                    public void onAnimationCancel(Animator animation) {
-                        RecentsView recent = mActivity.getOverviewPanel();
-                        float alpha = recent == null ? -1 : RecentsView.CONTENT_ALPHA.get(recent);
-                        Log.d(BAD_STATE, "RAAF createStateElementAnimation onCancel, alpha="
-                                + alpha);
-                    }
-
-                    @Override
-                    public void onAnimationEnd(Animator animation) {
-                        Log.d(BAD_STATE, "RAAF createStateElementAnimation onEnd");
-                    }
-                });
                 return alpha;
             case INDEX_RECENTS_TRANSLATE_X_ANIM: {
                 RecentsView rv = mActivity.getOverviewPanel();
diff --git a/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java b/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java
index 6038a22..f6ad692 100644
--- a/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java
+++ b/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java
@@ -22,7 +22,7 @@
 import static android.view.Surface.ROTATION_270;
 import static android.view.Surface.ROTATION_90;
 
-import static com.android.launcher3.states.RotationHelper.ALLOW_ROTATION_PREFERENCE_KEY;
+import static com.android.launcher3.LauncherPrefs.ALLOW_ROTATION;
 import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
 import static com.android.launcher3.util.SettingsCache.ROTATION_SETTING_URI;
 import static com.android.quickstep.BaseActivityInterface.getTaskDimension;
@@ -45,15 +45,14 @@
 
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.InvariantDeviceProfile;
-import com.android.launcher3.Utilities;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.LauncherPrefs;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.touch.PagedOrientationHandler;
 import com.android.launcher3.util.DisplayController;
 import com.android.launcher3.util.SettingsCache;
 import com.android.quickstep.BaseActivityInterface;
 import com.android.quickstep.SystemUiProxy;
 import com.android.quickstep.TaskAnimationManager;
-import com.android.quickstep.views.TaskView;
 
 import java.lang.annotation.Retention;
 import java.util.function.IntConsumer;
@@ -117,7 +116,7 @@
                     | FLAG_SWIPE_UP_NOT_RUNNING;
 
     private final Context mContext;
-    private final SharedPreferences mSharedPrefs;
+    private final BaseActivityInterface mActivityInterface;
     private final OrientationEventListener mOrientationListener;
     private final SettingsCache mSettingsCache;
     private final SettingsCache.OnChangeListener mRotationChangeListener =
@@ -137,10 +136,10 @@
      *                              is enabled
      * @see #setRotationWatcherEnabled(boolean)
      */
-    public RecentsOrientedState(Context context, BaseActivityInterface sizeStrategy,
+    public RecentsOrientedState(Context context, BaseActivityInterface activityInterface,
             IntConsumer rotationChangeListener) {
         mContext = context;
-        mSharedPrefs = Utilities.getPrefs(context);
+        mActivityInterface = activityInterface;
         mOrientationListener = new OrientationEventListener(context) {
             @Override
             public void onOrientationChanged(int degrees) {
@@ -152,7 +151,7 @@
             }
         };
 
-        mFlags = sizeStrategy.rotationSupportedByActivity
+        mFlags = mActivityInterface.rotationSupportedByActivity
                 ? FLAG_MULTIPLE_ORIENTATION_SUPPORTED_BY_ACTIVITY : 0;
 
         mFlags |= FLAG_SWIPE_UP_NOT_RUNNING;
@@ -160,6 +159,10 @@
         initFlags();
     }
 
+    public BaseActivityInterface getActivityInterface() {
+        return mActivityInterface;
+    }
+
     /**
      * Sets the device profile for the current state.
      */
@@ -221,8 +224,7 @@
 
     private boolean updateHandler() {
         mRecentsActivityRotation = inferRecentsActivityRotation(mDisplayRotation);
-        if (mRecentsActivityRotation == mTouchRotation || (isRecentsActivityRotationAllowed()
-                && (mFlags & FLAG_SWIPE_UP_NOT_RUNNING) != 0)) {
+        if (mRecentsActivityRotation == mTouchRotation || isRecentsActivityRotationAllowed()) {
             mOrientationHandler = PagedOrientationHandler.PORTRAIT;
         } else if (mTouchRotation == ROTATION_90) {
             mOrientationHandler = PagedOrientationHandler.LANDSCAPE;
@@ -280,7 +282,7 @@
 
     @Override
     public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
-        if (ALLOW_ROTATION_PREFERENCE_KEY.equals(s)) {
+        if (LauncherPrefs.ALLOW_ROTATION.getSharedPrefKey().equals(s)) {
             updateHomeRotationSetting();
         }
     }
@@ -291,7 +293,7 @@
     }
 
     private void updateHomeRotationSetting() {
-        boolean homeRotationEnabled = mSharedPrefs.getBoolean(ALLOW_ROTATION_PREFERENCE_KEY, false);
+        boolean homeRotationEnabled = LauncherPrefs.get(mContext).get(ALLOW_ROTATION);
         setFlag(FLAG_HOME_ROTATION_ALLOWED_IN_PREFS, homeRotationEnabled);
         SystemUiProxy.INSTANCE.get(mContext).setHomeRotationEnabled(homeRotationEnabled);
     }
@@ -305,13 +307,13 @@
     }
 
     private void initMultipleOrientationListeners() {
-        mSharedPrefs.registerOnSharedPreferenceChangeListener(this);
+        LauncherPrefs.get(mContext).addListener(this, ALLOW_ROTATION);
         mSettingsCache.register(ROTATION_SETTING_URI, mRotationChangeListener);
         updateAutoRotateSetting();
     }
 
     private void destroyMultipleOrientationListeners() {
-        mSharedPrefs.unregisterOnSharedPreferenceChangeListener(this);
+        LauncherPrefs.get(mContext).removeListener(this, ALLOW_ROTATION);
         mSettingsCache.unregister(ROTATION_SETTING_URI, mRotationChangeListener);
     }
 
@@ -400,37 +402,10 @@
      * Returns the scale and pivot so that the provided taskRect can fit the provided full size
      */
     public float getFullScreenScaleAndPivot(Rect taskView, DeviceProfile dp, PointF outPivot) {
-        Rect insets = dp.getInsets();
-        float fullWidth = dp.widthPx;
-        float fullHeight = dp.heightPx;
-        if (TaskView.clipLeft(dp)) {
-            fullWidth -= insets.left;
-        }
-        if (TaskView.clipRight(dp)) {
-            fullWidth -= insets.right;
-        }
-        if (TaskView.clipTop(dp)) {
-            fullHeight -= insets.top;
-        }
-        if (TaskView.clipBottom(dp)) {
-            fullHeight -= insets.bottom;
-        }
-
         getTaskDimension(mContext, dp, outPivot);
         float scale = Math.min(outPivot.x / taskView.width(), outPivot.y / taskView.height());
-        // We also scale the preview as part of fullScreenParams, so account for that as well.
-        if (fullWidth > 0) {
-            scale = scale * dp.widthPx / fullWidth;
-        }
-
         if (scale == 1) {
-            outPivot.set(fullWidth / 2, fullHeight / 2);
-        } else if (dp.isMultiWindowMode) {
-            float denominator = 1 / (scale - 1);
-            // Ensure that the task aligns to right bottom for the root view
-            float y = (scale * taskView.bottom - fullHeight) * denominator;
-            float x = (scale * taskView.right - fullWidth) * denominator;
-            outPivot.set(x, y);
+            outPivot.set(taskView.centerX(), taskView.centerY());
         } else {
             float factor = scale / (scale - 1);
             outPivot.set(taskView.left * factor, taskView.top * factor);
diff --git a/src/com/android/launcher3/testing/TestInformationRequest.java b/quickstep/src/com/android/quickstep/util/RecordingSurfaceTransaction.java
similarity index 60%
copy from src/com/android/launcher3/testing/TestInformationRequest.java
copy to quickstep/src/com/android/quickstep/util/RecordingSurfaceTransaction.java
index 272ae56..a2f48dd 100644
--- a/src/com/android/launcher3/testing/TestInformationRequest.java
+++ b/quickstep/src/com/android/quickstep/util/RecordingSurfaceTransaction.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2021 The Android Open Source Project
+ * 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.
@@ -13,17 +13,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-package com.android.launcher3.testing;
-
-import android.os.Parcelable;
+package com.android.quickstep.util;
 
 /**
- * A Request sent to TestInformationHandler can implement this interface to carry more information.
+ * Extension for {@link SurfaceTransaction} which records the commands for mocking
  */
-public interface TestInformationRequest extends Parcelable {
+public class RecordingSurfaceTransaction extends SurfaceTransaction {
+
     /**
-     * The name for handler to dispatch request.
+     * A mock builder which can be used for recording values
      */
-    String getRequestName();
+    public final MockProperties mockProperties = new MockProperties();
+
 }
diff --git a/quickstep/src/com/android/quickstep/util/RectFSpringAnim.java b/quickstep/src/com/android/quickstep/util/RectFSpringAnim.java
index c4909de..251b756 100644
--- a/quickstep/src/com/android/quickstep/util/RectFSpringAnim.java
+++ b/quickstep/src/com/android/quickstep/util/RectFSpringAnim.java
@@ -128,37 +128,27 @@
 
     @Tracking
     public final int mTracking;
+    protected final float mStiffnessX;
+    protected final float mStiffnessY;
+    protected final float mDampingX;
+    protected final float mDampingY;
+    protected final float mRectStiffness;
 
-    public RectFSpringAnim(RectF startRect, RectF targetRect, Context context,
-            @Nullable DeviceProfile deviceProfile) {
-        mStartRect = startRect;
-        mTargetRect = targetRect;
+    public RectFSpringAnim(SpringConfig config) {
+        mStartRect = config.startRect;
+        mTargetRect = config.targetRect;
         mCurrentCenterX = mStartRect.centerX();
 
-        ResourceProvider rp = DynamicResource.provider(context);
-        mMinVisChange = rp.getDimension(R.dimen.swipe_up_fling_min_visible_change);
-        mMaxVelocityPxPerS = (int) rp.getDimension(R.dimen.swipe_up_max_velocity);
+        mMinVisChange = config.minVisChange;
+        mMaxVelocityPxPerS = config.maxVelocityPxPerS;
         setCanRelease(true);
 
-        if (deviceProfile == null) {
-            mTracking = startRect.bottom < targetRect.bottom
-                    ? TRACKING_BOTTOM
-                    : TRACKING_TOP;
-        } else {
-            int heightPx = deviceProfile.heightPx;
-            Rect padding = deviceProfile.workspacePadding;
-
-            final float topThreshold = heightPx / 3f;
-            final float bottomThreshold = deviceProfile.heightPx - padding.bottom;
-
-            if (targetRect.bottom > bottomThreshold) {
-                mTracking = TRACKING_BOTTOM;
-            } else if (targetRect.top < topThreshold) {
-                mTracking = TRACKING_TOP;
-            } else {
-                mTracking = TRACKING_CENTER;
-            }
-        }
+        mTracking = config.tracking;
+        mStiffnessX = config.stiffnessX;
+        mStiffnessY = config.stiffnessY;
+        mDampingX = config.dampingX;
+        mDampingY = config.dampingY;
+        mRectStiffness = config.rectStiffness;
 
         mCurrentY = getTrackedYFromRect(mStartRect);
     }
@@ -214,7 +204,7 @@
      * @param context The activity context.
      * @param velocityPxPerMs Velocity of swipe in px/ms.
      */
-    public void start(Context context, PointF velocityPxPerMs) {
+    public void start(Context context, @Nullable DeviceProfile profile, PointF velocityPxPerMs) {
         // Only tell caller that we ended if both x and y animations have ended.
         OnAnimationEndListener onXEndListener = ((animation, canceled, centerX, velocityX) -> {
             mRectXAnimEnded = true;
@@ -240,19 +230,26 @@
         float maxXValue = Math.max(startX, endX);
 
         mRectXAnim = new FlingSpringAnim(this, context, RECT_CENTER_X, startX, endX,
-                dampedXVelocityPxPerS, mMinVisChange, minXValue, maxXValue, onXEndListener);
+                dampedXVelocityPxPerS, mMinVisChange, minXValue, maxXValue, mDampingX, mStiffnessX,
+                onXEndListener);
 
         float startY = mCurrentY;
         float endY = getTrackedYFromRect(mTargetRect);
         float minYValue = Math.min(startY, endY);
         float maxYValue = Math.max(startY, endY);
         mRectYAnim = new FlingSpringAnim(this, context, RECT_Y, startY, endY, dampedYVelocityPxPerS,
-                mMinVisChange, minYValue, maxYValue, onYEndListener);
+                mMinVisChange, minYValue, maxYValue, mDampingY, mStiffnessY, onYEndListener);
 
         float minVisibleChange = Math.abs(1f / mStartRect.height());
         ResourceProvider rp = DynamicResource.provider(context);
         float damping = rp.getFloat(R.dimen.swipe_up_rect_scale_damping_ratio);
-        float stiffness = rp.getFloat(R.dimen.swipe_up_rect_scale_stiffness);
+
+        // Increase the stiffness for devices where we want the window size to transform quicker.
+        boolean shouldUseHigherStiffness = profile != null
+                && (profile.isLandscape || profile.isTablet);
+        float stiffness = shouldUseHigherStiffness
+                ? rp.getFloat(R.dimen.swipe_up_rect_scale_higher_stiffness)
+                : rp.getFloat(R.dimen.swipe_up_rect_scale_stiffness);
 
         mRectScaleAnim = new SpringAnimation(this, RECT_SCALE_PROGRESS)
                 .setSpring(new SpringForce(1f)
@@ -362,4 +359,98 @@
 
         default void onCancel() { }
     }
+
+    private abstract static class SpringConfig {
+        protected RectF startRect;
+        protected RectF targetRect;
+        protected @Tracking int tracking;
+        protected float stiffnessX;
+        protected float stiffnessY;
+        protected float dampingX;
+        protected float dampingY;
+        protected float rectStiffness;
+        protected float minVisChange;
+        protected int maxVelocityPxPerS;
+
+        private SpringConfig(Context context, RectF start, RectF target) {
+            startRect = start;
+            targetRect = target;
+
+            ResourceProvider rp = DynamicResource.provider(context);
+            minVisChange = rp.getDimension(R.dimen.swipe_up_fling_min_visible_change);
+            maxVelocityPxPerS = (int) rp.getDimension(R.dimen.swipe_up_max_velocity);
+        }
+    }
+
+    /**
+     * Standard spring configuration parameters.
+     */
+    public static class DefaultSpringConfig extends SpringConfig {
+
+        public DefaultSpringConfig(Context context, DeviceProfile deviceProfile,
+                RectF startRect, RectF targetRect) {
+            super(context, startRect, targetRect);
+
+            ResourceProvider rp = DynamicResource.provider(context);
+            tracking = getDefaultTracking(deviceProfile);
+            stiffnessX = rp.getFloat(R.dimen.swipe_up_rect_xy_stiffness);
+            stiffnessY = rp.getFloat(R.dimen.swipe_up_rect_xy_stiffness);
+            dampingX = rp.getFloat(R.dimen.swipe_up_rect_xy_damping_ratio);
+            dampingY = rp.getFloat(R.dimen.swipe_up_rect_xy_damping_ratio);
+
+            this.startRect = startRect;
+            this.targetRect = targetRect;
+
+            // Increase the stiffness for devices where we want the window size to transform
+            // quicker.
+            boolean shouldUseHigherStiffness = deviceProfile != null
+                    && (deviceProfile.isLandscape || deviceProfile.isTablet);
+            rectStiffness = shouldUseHigherStiffness
+                    ? rp.getFloat(R.dimen.swipe_up_rect_scale_higher_stiffness)
+                    : rp.getFloat(R.dimen.swipe_up_rect_scale_stiffness);
+        }
+
+        private @Tracking int getDefaultTracking(@Nullable DeviceProfile deviceProfile) {
+            @Tracking int tracking;
+            if (deviceProfile == null) {
+                tracking = startRect.bottom < targetRect.bottom
+                        ? TRACKING_BOTTOM
+                        : TRACKING_TOP;
+            } else {
+                int heightPx = deviceProfile.heightPx;
+                Rect padding = deviceProfile.workspacePadding;
+
+                final float topThreshold = heightPx / 3f;
+                final float bottomThreshold = deviceProfile.heightPx - padding.bottom;
+
+                if (targetRect.bottom > bottomThreshold) {
+                    tracking = TRACKING_BOTTOM;
+                } else if (targetRect.top < topThreshold) {
+                    tracking = TRACKING_TOP;
+                } else {
+                    tracking = TRACKING_CENTER;
+                }
+            }
+            return tracking;
+        }
+    }
+
+    /**
+     * Spring configuration parameters for Taskbar/Hotseat items on devices that have a taskbar.
+     */
+    public static class TaskbarHotseatSpringConfig extends SpringConfig {
+
+        public TaskbarHotseatSpringConfig(Context context, RectF start, RectF target) {
+            super(context, start, target);
+
+            ResourceProvider rp = DynamicResource.provider(context);
+            tracking = TRACKING_CENTER;
+            stiffnessX = rp.getFloat(R.dimen.taskbar_swipe_up_rect_x_stiffness);
+            stiffnessY = rp.getFloat(R.dimen.taskbar_swipe_up_rect_y_stiffness);
+            dampingX = rp.getFloat(R.dimen.taskbar_swipe_up_rect_x_damping);
+            dampingY = rp.getFloat(R.dimen.taskbar_swipe_up_rect_y_damping);
+            rectStiffness = rp.getFloat(R.dimen.taskbar_swipe_up_rect_scale_stiffness);
+        }
+    }
+
 }
diff --git a/quickstep/src/com/android/quickstep/util/RemoteAnimationProvider.java b/quickstep/src/com/android/quickstep/util/RemoteAnimationProvider.java
index ee82ae6..10f2eaa 100644
--- a/quickstep/src/com/android/quickstep/util/RemoteAnimationProvider.java
+++ b/quickstep/src/com/android/quickstep/util/RemoteAnimationProvider.java
@@ -16,23 +16,22 @@
 package com.android.quickstep.util;
 
 import android.animation.AnimatorSet;
-
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
+import android.view.RemoteAnimationTarget;
 
 public abstract class RemoteAnimationProvider {
 
-    public abstract AnimatorSet createWindowAnimation(RemoteAnimationTargetCompat[] appTargets,
-            RemoteAnimationTargetCompat[] wallpaperTargets);
+    public abstract AnimatorSet createWindowAnimation(RemoteAnimationTarget[] appTargets,
+            RemoteAnimationTarget[] wallpaperTargets);
 
     /**
      * @return the target with the lowest opaque layer for a certain app animation, or null.
      */
-    public static RemoteAnimationTargetCompat findLowestOpaqueLayerTarget(
-            RemoteAnimationTargetCompat[] appTargets, int mode) {
+    public static RemoteAnimationTarget findLowestOpaqueLayerTarget(
+            RemoteAnimationTarget[] appTargets, int mode) {
         int lowestLayer = Integer.MAX_VALUE;
         int lowestLayerIndex = -1;
         for (int i = appTargets.length - 1; i >= 0; i--) {
-            RemoteAnimationTargetCompat target = appTargets[i];
+            RemoteAnimationTarget target = appTargets[i];
             if (target.mode == mode && !target.isTranslucent) {
                 int layer = target.prefixOrderIndex;
                 if (layer < lowestLayer) {
diff --git a/quickstep/src/com/android/quickstep/util/RemoteFadeOutAnimationListener.java b/quickstep/src/com/android/quickstep/util/RemoteFadeOutAnimationListener.java
index 81c124f..382cf79 100644
--- a/quickstep/src/com/android/quickstep/util/RemoteFadeOutAnimationListener.java
+++ b/quickstep/src/com/android/quickstep/util/RemoteFadeOutAnimationListener.java
@@ -15,14 +15,14 @@
  */
 package com.android.quickstep.util;
 
-import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MODE_CLOSING;
+import static android.view.RemoteAnimationTarget.MODE_CLOSING;
 
 import android.animation.ValueAnimator;
 import android.animation.ValueAnimator.AnimatorUpdateListener;
+import android.view.RemoteAnimationTarget;
+import android.view.SurfaceControl.Transaction;
 
 import com.android.quickstep.RemoteAnimationTargets;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
-import com.android.systemui.shared.system.TransactionCompat;
 
 /**
  * Animation listener which fades out the closing targets
@@ -32,24 +32,24 @@
     private final RemoteAnimationTargets mTarget;
     private boolean mFirstFrame = true;
 
-    public RemoteFadeOutAnimationListener(RemoteAnimationTargetCompat[] appTargets,
-            RemoteAnimationTargetCompat[] wallpaperTargets) {
+    public RemoteFadeOutAnimationListener(RemoteAnimationTarget[] appTargets,
+            RemoteAnimationTarget[] wallpaperTargets) {
         mTarget = new RemoteAnimationTargets(appTargets, wallpaperTargets,
-                new RemoteAnimationTargetCompat[0], MODE_CLOSING);
+                new RemoteAnimationTarget[0], MODE_CLOSING);
     }
 
     @Override
     public void onAnimationUpdate(ValueAnimator valueAnimator) {
-        TransactionCompat t = new TransactionCompat();
+        Transaction t = new Transaction();
         if (mFirstFrame) {
-            for (RemoteAnimationTargetCompat target : mTarget.unfilteredApps) {
+            for (RemoteAnimationTarget target : mTarget.unfilteredApps) {
                 t.show(target.leash);
             }
             mFirstFrame = false;
         }
 
         float alpha = 1 - valueAnimator.getAnimatedFraction();
-        for (RemoteAnimationTargetCompat app : mTarget.apps) {
+        for (RemoteAnimationTarget app : mTarget.apps) {
             t.setAlpha(app.leash, alpha);
         }
         t.apply();
diff --git a/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt b/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt
new file mode 100644
index 0000000..b76fe5c
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/SplitAnimationController.kt
@@ -0,0 +1,179 @@
+/*
+ *  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.quickstep.util
+
+import android.animation.ObjectAnimator
+import android.graphics.Bitmap
+import android.graphics.drawable.Drawable
+import android.view.View
+import com.android.launcher3.DeviceProfile
+import com.android.launcher3.anim.PendingAnimation
+import com.android.launcher3.util.SplitConfigurationOptions.SplitSelectSource
+import com.android.quickstep.views.IconView
+import com.android.quickstep.views.TaskThumbnailView
+import com.android.quickstep.views.TaskView
+import com.android.quickstep.views.TaskView.TaskIdAttributeContainer
+import java.util.function.Supplier
+
+/**
+ * Utils class to help run animations for initiating split screen from launcher.
+ * Will be expanded with future refactors. Works in conjunction with the state stored in
+ * [SplitSelectStateController]
+ */
+class SplitAnimationController(val splitSelectStateController: SplitSelectStateController) {
+    companion object {
+        // Break this out into maybe enums? Abstractions into its own classes? Tbd.
+        data class SplitAnimInitProps(
+                val originalView: View,
+                val originalBitmap: Bitmap?,
+                val iconDrawable: Drawable,
+                val fadeWithThumbnail: Boolean,
+                val isStagedTask: Boolean,
+                val iconView: View?
+        )
+    }
+
+    /**
+     * Returns different elements to animate for the initial split selection animation
+     * depending on the state of the surface from which the split was initiated
+     */
+    fun getFirstAnimInitViews(taskViewSupplier: Supplier<TaskView>,
+                              splitSelectSourceSupplier: Supplier<SplitSelectSource?>)
+            : SplitAnimInitProps {
+        val splitSelectSource = splitSelectSourceSupplier.get()
+        if (!splitSelectStateController.isAnimateCurrentTaskDismissal) {
+            // Initiating from home
+            return SplitAnimInitProps(splitSelectSource!!.view, originalBitmap = null,
+                    splitSelectSource.drawable, fadeWithThumbnail = false, isStagedTask = true,
+                    iconView = null)
+        } else if (splitSelectStateController.isDismissingFromSplitPair) {
+            // Initiating split from overview, but on a split pair
+            val taskView = taskViewSupplier.get()
+            for (container : TaskIdAttributeContainer in taskView.taskIdAttributeContainers) {
+                if (container.task.getKey().getId() == splitSelectStateController.initialTaskId) {
+                    val drawable = getDrawable(container.iconView, splitSelectSource)
+                    return SplitAnimInitProps(container.thumbnailView,
+                            container.thumbnailView.thumbnail, drawable!!,
+                            fadeWithThumbnail = true, isStagedTask = true,
+                            iconView = container.iconView
+                    )
+                }
+            }
+            throw IllegalStateException("Attempting to init split from existing split pair " +
+                    "without a valid taskIdAttributeContainer")
+        } else {
+            // Initiating split from overview on fullscreen task TaskView
+            val taskView = taskViewSupplier.get()
+            val drawable = getDrawable(taskView.iconView, splitSelectSource)
+            return SplitAnimInitProps(taskView.thumbnail, taskView.thumbnail.thumbnail,
+                    drawable!!, fadeWithThumbnail = true, isStagedTask = true,
+                    taskView.iconView
+            )
+        }
+    }
+
+    /**
+     * Returns the drawable that's provided in iconView, however if that
+     * is null it falls back to the drawable that's in splitSelectSource.
+     * TaskView's icon drawable can be null if the TaskView is scrolled far enough off screen
+     * @return [Drawable]
+     */
+    fun getDrawable(iconView: IconView, splitSelectSource: SplitSelectSource?) : Drawable? {
+        if (iconView.drawable == null && splitSelectSource != null) {
+            return splitSelectSource.drawable
+        }
+        return iconView.drawable
+    }
+
+    /**
+     * When selecting first app from split pair, second app's thumbnail remains. This animates
+     * the second thumbnail by expanding it to take up the full taskViewWidth/Height and overlaying
+     * it with [TaskThumbnailView]'s splashView. Adds animations to the provided builder.
+     * Note: The app that **was not** selected as the first split app should be the container that's
+     * passed through.
+     *
+     * @param builder Adds animation to this
+     * @param taskIdAttributeContainer container of the app that **was not** selected
+     * @param isPrimaryTaskSplitting if true, task that was split would be top/left in the pair
+     *                               (opposite of that representing [taskIdAttributeContainer])
+     */
+    fun addInitialSplitFromPair(taskIdAttributeContainer: TaskIdAttributeContainer,
+                                builder: PendingAnimation, deviceProfile: DeviceProfile,
+                                taskViewWidth: Int, taskViewHeight: Int,
+                                isPrimaryTaskSplitting: Boolean) {
+        val thumbnail = taskIdAttributeContainer.thumbnailView
+        val iconView: View = taskIdAttributeContainer.iconView
+        builder.add(ObjectAnimator.ofFloat(thumbnail, TaskThumbnailView.SPLASH_ALPHA, 1f))
+        thumbnail.setShowSplashForSplitSelection(true)
+        if (deviceProfile.isLandscape) {
+            // Center view first so scaling happens uniformly, alternatively we can move pivotX to 0
+            val centerThumbnailTranslationX: Float = (taskViewWidth - thumbnail.width) / 2f
+            val centerIconTranslationX: Float = (taskViewWidth - iconView.width) / 2f
+            val finalScaleX: Float = taskViewWidth.toFloat() / thumbnail.width
+            builder.add(ObjectAnimator.ofFloat(thumbnail,
+                    TaskThumbnailView.SPLIT_SELECT_TRANSLATE_X, centerThumbnailTranslationX))
+            // icons are anchored from Gravity.END, so need to use negative translation
+            builder.add(ObjectAnimator.ofFloat(iconView, View.TRANSLATION_X,
+                    -centerIconTranslationX))
+            builder.add(ObjectAnimator.ofFloat(thumbnail, View.SCALE_X, finalScaleX))
+
+            // Reset other dimensions
+            // TODO(b/271468547), can't set Y translate to 0, need to account for top space
+            thumbnail.scaleY = 1f
+            val translateYResetVal: Float = if (!isPrimaryTaskSplitting) 0f else
+                deviceProfile.overviewTaskThumbnailTopMarginPx.toFloat()
+            builder.add(ObjectAnimator.ofFloat(thumbnail,
+                    TaskThumbnailView.SPLIT_SELECT_TRANSLATE_Y,
+                    translateYResetVal))
+        } else {
+            val thumbnailSize = taskViewHeight - deviceProfile.overviewTaskThumbnailTopMarginPx
+            // Center view first so scaling happens uniformly, alternatively we can move pivotY to 0
+            // primary thumbnail has layout margin above it, so secondary thumbnail needs to take
+            // that into account. We should migrate to only using translations otherwise this
+            // asymmetry causes problems..
+
+            // Icon defaults to center | horizontal, we add additional translation for split
+            val centerIconTranslationX = 0f
+            var centerThumbnailTranslationY: Float
+
+            // TODO(b/271468547), primary thumbnail has layout margin above it, so secondary
+            //  thumbnail needs to take that into account. We should migrate to only using
+            //  translations otherwise this asymmetry causes problems..
+            if (isPrimaryTaskSplitting) {
+                centerThumbnailTranslationY = (thumbnailSize - thumbnail.height) / 2f
+                centerThumbnailTranslationY += deviceProfile.overviewTaskThumbnailTopMarginPx
+                        .toFloat()
+            } else {
+                centerThumbnailTranslationY = (thumbnailSize - thumbnail.height) / 2f
+            }
+            val finalScaleY: Float = thumbnailSize.toFloat() / thumbnail.height
+            builder.add(ObjectAnimator.ofFloat(thumbnail,
+                    TaskThumbnailView.SPLIT_SELECT_TRANSLATE_Y, centerThumbnailTranslationY))
+
+            // icons are anchored from Gravity.END, so need to use negative translation
+            builder.add(ObjectAnimator.ofFloat(iconView, View.TRANSLATION_X,
+                    centerIconTranslationX))
+            builder.add(ObjectAnimator.ofFloat(thumbnail, View.SCALE_Y, finalScaleY))
+
+            // Reset other dimensions
+            thumbnail.scaleX = 1f
+            builder.add(ObjectAnimator.ofFloat(thumbnail,
+                    TaskThumbnailView.SPLIT_SELECT_TRANSLATE_X, 0f))
+        }
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/util/SplitAnimationTimings.java b/quickstep/src/com/android/quickstep/util/SplitAnimationTimings.java
new file mode 100644
index 0000000..7dc1b32
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/SplitAnimationTimings.java
@@ -0,0 +1,98 @@
+/*
+ * 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.quickstep.util;
+
+import static com.android.launcher3.anim.Interpolators.LINEAR;
+
+import android.view.animation.Interpolator;
+
+/**
+ * An interface that supports the centralization of timing information for splitscreen animations.
+ */
+public interface SplitAnimationTimings {
+    int TABLET_ENTER_DURATION = 866;
+    int TABLET_CONFIRM_DURATION = 500;
+
+    int PHONE_ENTER_DURATION = 517;
+    int PHONE_CONFIRM_DURATION = 333;
+
+    int ABORT_DURATION = 500;
+
+    SplitAnimationTimings TABLET_OVERVIEW_TO_SPLIT = new TabletOverviewToSplitTimings();
+    SplitAnimationTimings TABLET_HOME_TO_SPLIT = new TabletHomeToSplitTimings();
+    SplitAnimationTimings TABLET_SPLIT_TO_CONFIRM = new TabletSplitToConfirmTimings();
+
+    SplitAnimationTimings PHONE_OVERVIEW_TO_SPLIT = new PhoneOverviewToSplitTimings();
+    SplitAnimationTimings PHONE_SPLIT_TO_CONFIRM = new PhoneSplitToConfirmTimings();
+
+    // Shared methods
+    int getDuration();
+    int getPlaceholderFadeInStart();
+    int getPlaceholderFadeInEnd();
+    int getPlaceholderIconFadeInStart();
+    int getPlaceholderIconFadeInEnd();
+    int getStagedRectSlideStart();
+    int getStagedRectSlideEnd();
+    Interpolator getStagedRectXInterpolator();
+    Interpolator getStagedRectYInterpolator();
+    Interpolator getStagedRectScaleXInterpolator();
+    Interpolator getStagedRectScaleYInterpolator();
+    default float getPlaceholderFadeInStartOffset() {
+        return (float) getPlaceholderFadeInStart() / getDuration();
+    }
+    default float getPlaceholderFadeInEndOffset() {
+        return (float) getPlaceholderFadeInEnd() / getDuration();
+    }
+    default float getPlaceholderIconFadeInStartOffset() {
+        return (float) getPlaceholderIconFadeInStart() / getDuration();
+    }
+    default float getPlaceholderIconFadeInEndOffset() {
+        return (float) getPlaceholderIconFadeInEnd() / getDuration();
+    }
+    default float getStagedRectSlideStartOffset() {
+        return (float) getStagedRectSlideStart() / getDuration();
+    }
+    default float getStagedRectSlideEndOffset() {
+        return (float) getStagedRectSlideEnd() / getDuration();
+    }
+
+    // Defaults for OverviewToSplit
+    default float getGridSlideStartOffset() { return 0; }
+    default float getGridSlideStaggerOffset() { return 0; }
+    default float getGridSlideDurationOffset() { return 0; }
+    default float getActionsFadeStartOffset() { return 0; }
+    default float getActionsFadeEndOffset() { return 0; }
+    default float getIconFadeStartOffset() { return 0; }
+    default float getIconFadeEndOffset() { return 0; }
+    default float getInstructionsContainerFadeInStartOffset() { return 0; }
+    default float getInstructionsContainerFadeInEndOffset() { return 0; }
+    default float getInstructionsTextFadeInStartOffset() { return 0; }
+    default float getInstructionsTextFadeInEndOffset() { return 0; }
+    default float getInstructionsUnfoldStartOffset() { return 0; }
+    default float getInstructionsUnfoldEndOffset() { return 0; }
+    default Interpolator getGridSlidePrimaryInterpolator() { return LINEAR; }
+    default Interpolator getGridSlideSecondaryInterpolator() { return LINEAR; }
+
+    // Defaults for HomeToSplit
+    default float getScrimFadeInStartOffset() { return 0; }
+    default float getScrimFadeInEndOffset() { return 0; }
+
+    // Defaults for SplitToConfirm
+    default float getInstructionsFadeStartOffset() { return 0; }
+    default float getInstructionsFadeEndOffset() { return 0; }
+}
+
diff --git a/quickstep/src/com/android/quickstep/util/SplitScreenBounds.java b/quickstep/src/com/android/quickstep/util/SplitScreenBounds.java
deleted file mode 100644
index 483a1c6..0000000
--- a/quickstep/src/com/android/quickstep/util/SplitScreenBounds.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2020 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.quickstep.util;
-
-import static android.view.Surface.ROTATION_0;
-import static android.view.Surface.ROTATION_180;
-
-import android.annotation.TargetApi;
-import android.content.Context;
-import android.os.Build;
-import android.view.WindowManager;
-import android.view.WindowMetrics;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.annotation.UiThread;
-
-import com.android.launcher3.R;
-import com.android.launcher3.util.DisplayController;
-import com.android.launcher3.util.WindowBounds;
-
-import java.util.ArrayList;
-
-/**
- * Utility class to hold the information abound a window bounds for split screen
- */
-@TargetApi(Build.VERSION_CODES.R)
-public class SplitScreenBounds {
-
-    public static final SplitScreenBounds INSTANCE = new SplitScreenBounds();
-    private final ArrayList<OnChangeListener> mListeners = new ArrayList<>();
-
-    @Nullable
-    private WindowBounds mBounds;
-
-    private SplitScreenBounds() { }
-
-    @UiThread
-    public void setSecondaryWindowBounds(@NonNull WindowBounds bounds) {
-        if (!bounds.equals(mBounds)) {
-            mBounds = bounds;
-            for (OnChangeListener listener : mListeners) {
-                listener.onSecondaryWindowBoundsChanged();
-            }
-        }
-    }
-
-    public @NonNull WindowBounds getSecondaryWindowBounds(Context context) {
-        if (mBounds == null) {
-            mBounds = createDefaultWindowBounds(context);
-        }
-        return mBounds;
-    }
-
-    /**
-     * Creates window bounds as 50% of device size
-     */
-    private static WindowBounds createDefaultWindowBounds(Context context) {
-        WindowMetrics wm = context.getSystemService(WindowManager.class).getMaximumWindowMetrics();
-        WindowBounds bounds = WindowBounds.fromWindowMetrics(wm);
-
-        int rotation = DisplayController.INSTANCE.get(context).getInfo().rotation;
-        int halfDividerSize = context.getResources()
-                .getDimensionPixelSize(R.dimen.multi_window_task_divider_size) / 2;
-
-        if (rotation == ROTATION_0 || rotation == ROTATION_180) {
-            bounds.bounds.top = bounds.insets.top + bounds.availableSize.y / 2 + halfDividerSize;
-            bounds.insets.top = 0;
-        } else {
-            bounds.bounds.left = bounds.insets.left + bounds.availableSize.x / 2 + halfDividerSize;
-            bounds.insets.left = 0;
-        }
-        return new WindowBounds(bounds.bounds, bounds.insets);
-    }
-
-    public void addOnChangeListener(OnChangeListener listener) {
-        mListeners.add(listener);
-    }
-
-    public void removeOnChangeListener(OnChangeListener listener) {
-        mListeners.remove(listener);
-    }
-
-    /**
-     * Interface to receive window bounds changes
-     */
-    public interface OnChangeListener {
-
-        /**
-         * Called when window bounds for secondary window changes
-         */
-        void onSecondaryWindowBoundsChanged();
-    }
-}
diff --git a/quickstep/src/com/android/quickstep/util/SplitSelectDataHolder.kt b/quickstep/src/com/android/quickstep/util/SplitSelectDataHolder.kt
new file mode 100644
index 0000000..0631537
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/SplitSelectDataHolder.kt
@@ -0,0 +1,408 @@
+/*
+ *  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.quickstep.util
+
+import android.annotation.IntDef
+import android.app.ActivityManager.RunningTaskInfo
+import android.app.ActivityTaskManager.INVALID_TASK_ID
+import android.app.PendingIntent
+import android.content.Context
+import android.content.Intent
+import android.content.pm.PackageManager
+import android.content.pm.ShortcutInfo
+import android.os.UserHandle
+import android.util.Log
+import com.android.internal.annotations.VisibleForTesting
+import com.android.launcher3.logging.StatsLogManager.EventEnum
+import com.android.launcher3.model.data.ItemInfo
+import com.android.launcher3.shortcuts.ShortcutKey
+import com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_UNDEFINED
+import com.android.launcher3.util.SplitConfigurationOptions.StagePosition
+import com.android.launcher3.util.SplitConfigurationOptions.getOppositeStagePosition
+import com.android.quickstep.util.SplitSelectDataHolder.Companion.SplitLaunchType
+import java.io.PrintWriter
+
+/**
+ * Holds/transforms/signs/seals/delivers information for the transient state of the user
+ * selecting a first app to start split with and then choosing a second app.
+ * This class DOES NOT associate itself with drag-and-drop split screen starts because they come
+ * from the bad part of town.
+ *
+ * After setting the correct fields for initial/second.* variables, this converts them into the
+ * correct [PendingIntent] and [ShortcutInfo] objects where applicable and sends the necessary
+ * data back via [getSplitLaunchData].
+ * [SplitLaunchType] indicates the type of tasks/apps/intents being launched given the provided
+ * state
+ */
+class SplitSelectDataHolder(
+        val context: Context
+) {
+    val TAG = SplitSelectDataHolder::class.simpleName
+
+    /**
+     * Order of the constant indicates the order of which task/app was selected.
+     * Ex. SPLIT_TASK_SHORTCUT means primary split app identified by task, secondary is shortcut
+     * SPLIT_SHORTCUT_TASK means primary split app is determined by shortcut, secondary is task
+     */
+    companion object {
+        @IntDef(SPLIT_TASK_TASK, SPLIT_TASK_PENDINGINTENT, SPLIT_TASK_SHORTCUT,
+                SPLIT_PENDINGINTENT_TASK, SPLIT_PENDINGINTENT_PENDINGINTENT, SPLIT_SHORTCUT_TASK,
+                SPLIT_SINGLE_TASK_FULLSCREEN, SPLIT_SINGLE_INTENT_FULLSCREEN,
+                SPLIT_SINGLE_SHORTCUT_FULLSCREEN)
+        @Retention(AnnotationRetention.SOURCE)
+        annotation class SplitLaunchType
+
+        const val SPLIT_TASK_TASK = 0
+        const val SPLIT_TASK_PENDINGINTENT = 1
+        const val SPLIT_TASK_SHORTCUT = 2
+        const val SPLIT_PENDINGINTENT_TASK = 3
+        const val SPLIT_SHORTCUT_TASK = 4
+        const val SPLIT_PENDINGINTENT_PENDINGINTENT = 5
+
+        // Non-split edge case of launching the initial selected task as a fullscreen task
+        const val SPLIT_SINGLE_TASK_FULLSCREEN = 6
+        const val SPLIT_SINGLE_INTENT_FULLSCREEN = 7
+        const val SPLIT_SINGLE_SHORTCUT_FULLSCREEN = 8
+    }
+
+
+    @StagePosition
+    private var initialStagePosition: Int = STAGE_POSITION_UNDEFINED
+    private var initialTaskId: Int = INVALID_TASK_ID
+    private var secondTaskId: Int = INVALID_TASK_ID
+    private var initialUser: UserHandle? = null
+    private var secondUser: UserHandle? = null
+    private var initialIntent: Intent? = null
+    private var secondIntent: Intent? = null
+    private var secondPendingIntent: PendingIntent? = null
+    private var itemInfo: ItemInfo? = null
+    private var splitEvent: EventEnum? = null
+    private var initialShortcut: ShortcutInfo? = null
+    private var secondShortcut: ShortcutInfo? = null
+    private var initialPendingIntent: PendingIntent? = null
+
+    /**
+     * @param alreadyRunningTask if set to [android.app.ActivityTaskManager.INVALID_TASK_ID]
+     * then @param intent will be used to launch the initial task
+     * @param intent will be ignored if @param alreadyRunningTask is set
+     */
+    fun setInitialTaskSelect(intent: Intent?, @StagePosition stagePosition: Int,
+                             itemInfo: ItemInfo?, splitEvent: EventEnum?,
+                             alreadyRunningTask: Int) {
+        if (alreadyRunningTask != INVALID_TASK_ID) {
+            initialTaskId = alreadyRunningTask
+        } else {
+            initialIntent = intent!!
+            initialUser = itemInfo!!.user
+        }
+        setInitialData(stagePosition, splitEvent, itemInfo)
+    }
+
+    /**
+     * To be called after first task selected from using a split shortcut from the fullscreen
+     * running app.
+     */
+    fun setInitialTaskSelect(info: RunningTaskInfo,
+                             @StagePosition stagePosition: Int, itemInfo: ItemInfo?,
+                             splitEvent: EventEnum?) {
+        initialTaskId = info.taskId
+        setInitialData(stagePosition, splitEvent, itemInfo)
+    }
+
+    private fun setInitialData(@StagePosition stagePosition: Int,
+                               event: EventEnum?, item: ItemInfo?) {
+        itemInfo = item
+        initialStagePosition = stagePosition
+        splitEvent = event
+    }
+
+    /**
+     * To be called as soon as user selects the second task (even if animations aren't complete)
+     * @param taskId The second task that will be launched.
+     */
+    fun setSecondTask(taskId: Int) {
+        secondTaskId = taskId
+    }
+
+    /**
+     * To be called as soon as user selects the second app (even if animations aren't complete)
+     * @param intent The second intent that will be launched.
+     * @param user The user of that intent.
+     */
+    fun setSecondTask(intent: Intent, user: UserHandle) {
+        secondIntent = intent
+        secondUser = user
+    }
+
+    /**
+     * To be called as soon as user selects the second app (even if animations aren't complete)
+     * Sets [secondUser] from that of the pendingIntent
+     * @param pendingIntent The second PendingIntent that will be launched.
+     */
+    fun setSecondTask(pendingIntent: PendingIntent) {
+        secondPendingIntent = pendingIntent
+        secondUser = pendingIntent.creatorUserHandle!!
+    }
+
+    private fun getShortcutInfo(intent: Intent?, user: UserHandle?): ShortcutInfo? {
+        if (intent?.getPackage() == null) {
+            return null
+        }
+        val shortcutId = intent.getStringExtra(ShortcutKey.EXTRA_SHORTCUT_ID)
+                ?: return null
+        try {
+            val context: Context = context.createPackageContextAsUser(
+                    intent.getPackage(), 0 /* flags */, user)
+            return ShortcutInfo.Builder(context, shortcutId).build()
+        } catch (e: PackageManager.NameNotFoundException) {
+            Log.w(TAG, "Failed to create a ShortcutInfo for " + intent.getPackage())
+        }
+        return null
+    }
+
+    /**
+     * Converts intents to pendingIntents, associating the [user] with the intent if provided
+     */
+    private fun getPendingIntent(intent: Intent?, user: UserHandle?): PendingIntent? {
+        if (intent != initialIntent && intent != secondIntent) {
+            throw IllegalStateException("Invalid intent to convert to PendingIntent")
+        }
+
+        return if (intent == null) {
+            null
+        } else if (user != null) {
+            PendingIntent.getActivityAsUser(context, 0, intent,
+                    PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT,
+                    null /* options */, user)
+        } else {
+            PendingIntent.getActivity(context, 0, intent,
+                    PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT)
+        }
+    }
+
+    /**
+     * @return [SplitLaunchData] with the necessary fields populated as determined by
+     *   [SplitLaunchData.splitLaunchType]. This is to be used for launching splitscreen
+     */
+    fun getSplitLaunchData() : SplitLaunchData {
+        // Convert all intents to shortcut infos to see if determine if we launch shortcut or intent
+        convertIntentsToFinalTypes()
+        val splitLaunchType = getSplitLaunchType()
+        if (splitLaunchType == SPLIT_TASK_PENDINGINTENT || splitLaunchType == SPLIT_TASK_SHORTCUT) {
+            // need to get opposite stage position
+            initialStagePosition = getOppositeStagePosition(initialStagePosition)
+        }
+
+        return generateSplitLaunchData(splitLaunchType)
+    }
+
+    /**
+     * @return [SplitLaunchData] with the necessary fields populated as determined by
+     *   [SplitLaunchData.splitLaunchType]. This is to be used for launching an initially selected
+     *   split task in fullscreen
+     */
+    fun getFullscreenLaunchData() : SplitLaunchData {
+        // Convert all intents to shortcut infos to see if determine if we launch shortcut or intent
+        convertIntentsToFinalTypes()
+        val splitLaunchType = getFullscreenLaunchType()
+
+        return generateSplitLaunchData(splitLaunchType)
+    }
+
+    private fun generateSplitLaunchData(@SplitLaunchType splitLaunchType: Int) : SplitLaunchData {
+        return SplitLaunchData(
+                splitLaunchType,
+                initialTaskId,
+                secondTaskId,
+                initialPendingIntent,
+                secondPendingIntent,
+                initialUser?.identifier ?: -1,
+                secondUser?.identifier ?: -1,
+                initialShortcut,
+                secondShortcut,
+                itemInfo,
+                splitEvent,
+                initialStagePosition)
+    }
+
+    /**
+     * Converts our [initialIntent] and [secondIntent] into shortcuts and pendingIntents, if
+     * possible.
+     *
+     * Note that both [initialIntent] and [secondIntent] will be nullified on method return
+     *
+     * One caveat is that if [secondPendingIntent] is set, we will use that and *not* attempt to
+     * convert [secondIntent]
+     */
+    private fun convertIntentsToFinalTypes() {
+        initialShortcut = getShortcutInfo(initialIntent, initialUser)
+        initialPendingIntent = getPendingIntent(initialIntent, initialUser)
+        initialIntent = null
+
+        // Only one of the two is currently allowed (secondPendingIntent directly set for widgets)
+        if (secondIntent != null && secondPendingIntent != null) {
+            throw IllegalStateException("Both secondIntent and secondPendingIntent non-null")
+        }
+        // If secondPendingIntent already set, no need to convert. Prioritize using that
+        if (secondPendingIntent != null) {
+            secondIntent = null
+            return
+        }
+
+        secondShortcut = getShortcutInfo(secondIntent, secondUser)
+        secondPendingIntent = getPendingIntent(secondIntent, secondUser)
+        secondIntent = null
+    }
+
+    /**
+     * Only valid data fields at this point should be tasks, shortcuts, or pendingIntents
+     * Intents need to be converted in [convertIntentsToFinalTypes] prior to calling this method
+     */
+    @VisibleForTesting
+    @SplitLaunchType
+    fun getSplitLaunchType(): Int {
+        if (initialIntent != null || secondIntent != null) {
+            throw IllegalStateException("Intents need to be converted")
+        }
+
+        // Prioritize task launches first
+        if (initialTaskId != INVALID_TASK_ID) {
+            if (secondTaskId != INVALID_TASK_ID) {
+                return SPLIT_TASK_TASK
+            }
+            if (secondShortcut != null) {
+                return SPLIT_TASK_SHORTCUT
+            }
+            if (secondPendingIntent != null) {
+                return SPLIT_TASK_PENDINGINTENT
+            }
+        }
+
+        if (secondTaskId != INVALID_TASK_ID) {
+            if (initialShortcut != null) {
+                return SPLIT_SHORTCUT_TASK
+            }
+            if (initialPendingIntent != null) {
+                return SPLIT_PENDINGINTENT_TASK
+            }
+        }
+
+        // All task+shortcut combinations are handled above, only launch left is with multiple
+        // intents (and respective shortcut infos, if necessary)
+        if (initialPendingIntent != null && secondPendingIntent != null) {
+            return SPLIT_PENDINGINTENT_PENDINGINTENT
+        }
+        throw IllegalStateException("Unidentified split launch type")
+    }
+
+    @SplitLaunchType
+    private fun getFullscreenLaunchType(): Int {
+        if (initialTaskId != INVALID_TASK_ID) {
+            return SPLIT_SINGLE_TASK_FULLSCREEN
+        }
+
+        if (initialShortcut != null) {
+            return SPLIT_SINGLE_SHORTCUT_FULLSCREEN
+        }
+
+        if (initialIntent != null) {
+            return SPLIT_SINGLE_INTENT_FULLSCREEN
+        }
+        throw IllegalStateException("Unidentified fullscreen launch type")
+    }
+
+    data class SplitLaunchData(
+            @SplitLaunchType
+            val splitLaunchType: Int,
+            var initialTaskId: Int = INVALID_TASK_ID,
+            var secondTaskId: Int = INVALID_TASK_ID,
+            var initialPendingIntent: PendingIntent? = null,
+            var secondPendingIntent: PendingIntent? = null,
+            var initialUserId: Int = -1,
+            var secondUserId: Int = -1,
+            var initialShortcut: ShortcutInfo? = null,
+            var secondShortcut: ShortcutInfo? = null,
+            var itemInfo: ItemInfo? = null,
+            var splitEvent: EventEnum? = null,
+            val initialStagePosition: Int = STAGE_POSITION_UNDEFINED
+    )
+
+    /**
+     * @return `true` if first task has been selected and waiting for the second task to be
+     * chosen
+     */
+    fun isSplitSelectActive(): Boolean {
+        return isInitialTaskIntentSet() && !isSecondTaskIntentSet()
+    }
+
+    /**
+     * @return `true` if the first and second task have been chosen and split is waiting to
+     * be launched
+     */
+    fun isBothSplitAppsConfirmed(): Boolean {
+        return isInitialTaskIntentSet() && isSecondTaskIntentSet()
+    }
+
+    private fun isInitialTaskIntentSet(): Boolean {
+        return initialTaskId != INVALID_TASK_ID || initialIntent != null
+    }
+
+    fun getInitialTaskId(): Int {
+        return initialTaskId
+    }
+
+    fun getSecondTaskId(): Int {
+        return secondTaskId
+    }
+
+    private fun isSecondTaskIntentSet(): Boolean {
+        return secondTaskId != INVALID_TASK_ID || secondIntent != null
+                || secondPendingIntent != null
+    }
+
+    fun resetState() {
+        initialStagePosition = STAGE_POSITION_UNDEFINED
+        initialTaskId = INVALID_TASK_ID
+        secondTaskId = INVALID_TASK_ID
+        initialUser = null
+        secondUser = null
+        initialIntent = null
+        secondIntent = null
+        secondPendingIntent = null
+        itemInfo = null
+        splitEvent = null
+        initialShortcut = null
+        secondShortcut = null
+    }
+
+    fun dump(prefix: String, writer: PrintWriter) {
+        writer.println("$prefix ${javaClass.simpleName}")
+        writer.println("$prefix\tinitialStagePosition= $initialStagePosition")
+        writer.println("$prefix\tinitialTaskId= $initialTaskId")
+        writer.println("$prefix\tsecondTaskId= $secondTaskId")
+        writer.println("$prefix\tinitialUser= $initialUser")
+        writer.println("$prefix\tsecondUser= $secondUser")
+        writer.println("$prefix\tinitialIntent= $initialIntent")
+        writer.println("$prefix\tsecondIntent= $secondIntent")
+        writer.println("$prefix\tsecondPendingIntent= $secondPendingIntent")
+        writer.println("$prefix\titemInfo= $itemInfo")
+        writer.println("$prefix\tsplitEvent= $splitEvent")
+        writer.println("$prefix\tinitialShortcut= $initialShortcut")
+        writer.println("$prefix\tsecondShortcut= $secondShortcut")
+    }
+}
\ No newline at end of file
diff --git a/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java b/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java
index 2502359..45df831 100644
--- a/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java
+++ b/quickstep/src/com/android/quickstep/util/SplitSelectStateController.java
@@ -17,45 +17,72 @@
 package com.android.quickstep.util;
 
 import static android.app.ActivityTaskManager.INVALID_TASK_ID;
+import static android.app.PendingIntent.FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT;
 import static android.app.PendingIntent.FLAG_MUTABLE;
 
 import static com.android.launcher3.Utilities.postAsyncCallback;
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
 import static com.android.launcher3.util.SplitConfigurationOptions.DEFAULT_SPLIT_RATIO;
-import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_BOTTOM_OR_RIGHT;
-import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT;
+import static com.android.launcher3.util.SplitConfigurationOptions.getOppositeStagePosition;
+import static com.android.quickstep.util.SplitSelectDataHolder.SPLIT_PENDINGINTENT_PENDINGINTENT;
+import static com.android.quickstep.util.SplitSelectDataHolder.SPLIT_PENDINGINTENT_TASK;
+import static com.android.quickstep.util.SplitSelectDataHolder.SPLIT_SHORTCUT_TASK;
+import static com.android.quickstep.util.SplitSelectDataHolder.SPLIT_SINGLE_INTENT_FULLSCREEN;
+import static com.android.quickstep.util.SplitSelectDataHolder.SPLIT_SINGLE_SHORTCUT_FULLSCREEN;
+import static com.android.quickstep.util.SplitSelectDataHolder.SPLIT_SINGLE_TASK_FULLSCREEN;
+import static com.android.quickstep.util.SplitSelectDataHolder.SPLIT_TASK_PENDINGINTENT;
+import static com.android.quickstep.util.SplitSelectDataHolder.SPLIT_TASK_SHORTCUT;
+import static com.android.quickstep.util.SplitSelectDataHolder.SPLIT_TASK_TASK;
 
 import android.annotation.NonNull;
+import android.app.ActivityManager;
 import android.app.ActivityOptions;
 import android.app.ActivityThread;
 import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ShortcutInfo;
+import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
-import android.text.TextUtils;
+import android.os.RemoteException;
+import android.os.UserHandle;
+import android.util.Log;
+import android.util.Pair;
 import android.view.RemoteAnimationAdapter;
+import android.view.RemoteAnimationTarget;
 import android.view.SurfaceControl;
+import android.window.IRemoteTransition;
+import android.window.IRemoteTransitionFinishedCallback;
+import android.window.RemoteTransition;
 import android.window.TransitionInfo;
 
 import androidx.annotation.Nullable;
 
+import com.android.internal.logging.InstanceId;
+import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.logging.StatsLogManager;
+import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.shortcuts.ShortcutKey;
 import com.android.launcher3.statehandlers.DepthController;
 import com.android.launcher3.statemanager.StateManager;
+import com.android.launcher3.testing.TestLogging;
+import com.android.launcher3.testing.shared.TestProtocol;
+import com.android.launcher3.util.ComponentKey;
 import com.android.launcher3.util.SplitConfigurationOptions;
 import com.android.launcher3.util.SplitConfigurationOptions.StagePosition;
+import com.android.quickstep.RecentsModel;
 import com.android.quickstep.SystemUiProxy;
 import com.android.quickstep.TaskAnimationManager;
 import com.android.quickstep.TaskViewUtils;
+import com.android.quickstep.views.FloatingTaskView;
 import com.android.quickstep.views.GroupedTaskView;
 import com.android.quickstep.views.TaskView;
 import com.android.systemui.shared.recents.model.Task;
-import com.android.systemui.shared.system.RemoteAnimationAdapterCompat;
 import com.android.systemui.shared.system.RemoteAnimationRunnerCompat;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
-import com.android.systemui.shared.system.RemoteTransitionCompat;
-import com.android.systemui.shared.system.RemoteTransitionRunner;
 
+import java.io.PrintWriter;
 import java.util.function.Consumer;
 
 /**
@@ -63,44 +90,157 @@
  * and is in the process of either a) selecting a second app or b) exiting intention to invoke split
  */
 public class SplitSelectStateController {
+    private static final String TAG = "SplitSelectStateCtor";
 
     private final Context mContext;
     private final Handler mHandler;
+    private final RecentsModel mRecentTasksModel;
+    private final SplitAnimationController mSplitAnimationController;
+    private final AppPairsController mAppPairsController;
+    private final SplitSelectDataHolder mSplitSelectDataHolder;
+    private StatsLogManager mStatsLogManager;
     private final SystemUiProxy mSystemUiProxy;
     private final StateManager mStateManager;
-    private final DepthController mDepthController;
-    private @StagePosition int mStagePosition;
+    @Nullable
+    private DepthController mDepthController;
+    private @StagePosition int mInitialStagePosition;
+    private ItemInfo mItemInfo;
+    /** {@link #mInitialTaskIntent} and {@link #mInitialUser} (the user of the Intent) are set
+     * together when split is initiated from an Intent. */
     private Intent mInitialTaskIntent;
+    private UserHandle mInitialUser;
     private int mInitialTaskId = INVALID_TASK_ID;
+    /** {@link #mSecondTaskIntent} and {@link #mSecondUser} (the user of the Intent) are set
+     * together when split is confirmed with an Intent. Either this or {@link #mSecondPendingIntent}
+     * will be set, but not both
+     */
+    private Intent mSecondTaskIntent;
+    /**
+     * Set when split is confirmed via a widget. Either this or {@link #mSecondTaskIntent} will be
+     * set, but not both
+     */
+    private PendingIntent mSecondPendingIntent;
+    private UserHandle mSecondUser;
     private int mSecondTaskId = INVALID_TASK_ID;
-    private String mSecondTaskPackageName;
     private boolean mRecentsAnimationRunning;
+    /** If {@code true}, animates the existing task view split placeholder view */
+    private boolean mAnimateCurrentTaskDismissal;
+    /**
+     * Acts as a subset of {@link #mAnimateCurrentTaskDismissal}, we can't be dismissing from a
+     * split pair task view without wanting to animate current task dismissal overall
+     */
+    private boolean mDismissingFromSplitPair;
     /** If not null, this is the TaskView we want to launch from */
     @Nullable
     private GroupedTaskView mLaunchingTaskView;
+    /** Represents where split is intended to be invoked from. */
+    private StatsLogManager.EventEnum mSplitEvent;
+
+    private FloatingTaskView mFirstFloatingTaskView;
 
     public SplitSelectStateController(Context context, Handler handler, StateManager stateManager,
-            DepthController depthController) {
+            DepthController depthController, StatsLogManager statsLogManager,
+            SystemUiProxy systemUiProxy, RecentsModel recentsModel) {
         mContext = context;
         mHandler = handler;
-        mSystemUiProxy = SystemUiProxy.INSTANCE.get(mContext);
+        mStatsLogManager = statsLogManager;
+        mSystemUiProxy = systemUiProxy;
         mStateManager = stateManager;
         mDepthController = depthController;
+        mRecentTasksModel = recentsModel;
+        mSplitAnimationController = new SplitAnimationController(this);
+        mAppPairsController = new AppPairsController(context, this);
+        mSplitSelectDataHolder = new SplitSelectDataHolder(mContext);
     }
 
     /**
-     * To be called after first task selected
+     * @param alreadyRunningTask if set to {@link android.app.ActivityTaskManager#INVALID_TASK_ID}
+     *                           then @param intent will be used to launch the initial task
+     * @param intent will be ignored if @param alreadyRunningTask is set
      */
-    public void setInitialTaskSelect(int taskId, @StagePosition int stagePosition) {
-        mInitialTaskId = taskId;
-        mStagePosition = stagePosition;
-        mInitialTaskIntent = null;
+    public void setInitialTaskSelect(@Nullable Intent intent, @StagePosition int stagePosition,
+            @NonNull ItemInfo itemInfo, StatsLogManager.EventEnum splitEvent,
+            int alreadyRunningTask) {
+        if (alreadyRunningTask != INVALID_TASK_ID) {
+            mInitialTaskId = alreadyRunningTask;
+        } else {
+            mInitialTaskIntent = intent;
+            mInitialUser = itemInfo.user;
+        }
+
+        setInitialData(stagePosition, splitEvent, itemInfo);
+
+        if (FeatureFlags.ENABLE_SPLIT_LAUNCH_DATA_REFACTOR.get()) {
+            mSplitSelectDataHolder.setInitialTaskSelect(intent, stagePosition, itemInfo, splitEvent,
+                    alreadyRunningTask);
+        }
     }
 
-    public void setInitialTaskSelect(Intent intent, @StagePosition int stagePosition) {
-        mInitialTaskIntent = intent;
-        mStagePosition = stagePosition;
-        mInitialTaskId = INVALID_TASK_ID;
+    /**
+     * To be called after first task selected from using a split shortcut from the fullscreen
+     * running app.
+     */
+    public void setInitialTaskSelect(ActivityManager.RunningTaskInfo info,
+            @StagePosition int stagePosition, @NonNull ItemInfo itemInfo,
+            StatsLogManager.EventEnum splitEvent) {
+        mInitialTaskId = info.taskId;
+        setInitialData(stagePosition, splitEvent, itemInfo);
+
+        if (FeatureFlags.ENABLE_SPLIT_LAUNCH_DATA_REFACTOR.get()) {
+            mSplitSelectDataHolder.setInitialTaskSelect(info, stagePosition, itemInfo, splitEvent);
+        }
+    }
+
+    private void setInitialData(@StagePosition int stagePosition,
+            StatsLogManager.EventEnum splitEvent, ItemInfo itemInfo) {
+        mItemInfo = itemInfo;
+        mInitialStagePosition = stagePosition;
+        mSplitEvent = splitEvent;
+    }
+
+    /**
+     * Pulls the list of active Tasks from RecentsModel, and finds the most recently active Task
+     * matching a given ComponentName. Then uses that Task (which could be null) with the given
+     * callback.
+     *
+     * Used in various task-switching or splitscreen operations when we need to check if there is a
+     * currently running Task of a certain type and use the most recent one.
+     */
+    public void findLastActiveTaskAndRunCallback(ComponentKey componentKey,
+            Consumer<Task> callback) {
+        mRecentTasksModel.getTasks(taskGroups -> {
+            Task lastActiveTask = null;
+            // Loop through tasks in reverse, since they are ordered with most-recent tasks last.
+            for (int i = taskGroups.size() - 1; i >= 0; i--) {
+                GroupTask groupTask = taskGroups.get(i);
+                Task task1 = groupTask.task1;
+                if (isInstanceOfComponent(task1, componentKey)) {
+                    lastActiveTask = task1;
+                    break;
+                }
+                Task task2 = groupTask.task2;
+                if (isInstanceOfComponent(task2, componentKey)) {
+                    lastActiveTask = task2;
+                    break;
+                }
+            }
+
+            callback.accept(lastActiveTask);
+        });
+    }
+
+    /**
+     * Checks if a given Task is the most recently-active Task of type componentName. Used for
+     * selecting already-running Tasks for splitscreen.
+     */
+    public boolean isInstanceOfComponent(@Nullable Task task, ComponentKey componentKey) {
+        // Exclude the task that is already staged
+        if (task == null || task.key.id == mInitialTaskId) {
+            return false;
+        }
+
+        return task.key.baseIntent.getComponent().equals(componentKey.componentName)
+                && task.key.userId == componentKey.user.getIdentifier();
     }
 
     /**
@@ -108,23 +248,17 @@
      * to be launched. Call after launcher side animations are complete.
      */
     public void launchSplitTasks(Consumer<Boolean> callback) {
-        final Intent fillInIntent;
-        if (mInitialTaskIntent != null) {
-            fillInIntent = new Intent();
-            if (TextUtils.equals(mInitialTaskIntent.getComponent().getPackageName(),
-                    mSecondTaskPackageName)) {
-                fillInIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
-            }
-        } else {
-            fillInIntent = null;
-        }
-        final PendingIntent pendingIntent =
-                mInitialTaskIntent == null ? null : PendingIntent.getActivity(mContext, 0,
-                        mInitialTaskIntent, FLAG_MUTABLE);
-        launchTasks(mInitialTaskId, pendingIntent, fillInIntent, mSecondTaskId, mStagePosition,
-                callback, false /* freezeTaskList */, DEFAULT_SPLIT_RATIO);
-    }
+        Pair<InstanceId, com.android.launcher3.logging.InstanceId> instanceIds =
+                LogUtils.getShellShareableInstanceId();
+        launchTasks(mInitialTaskId, mInitialTaskIntent, mSecondTaskId, mSecondTaskIntent,
+                mInitialStagePosition, callback, false /* freezeTaskList */, DEFAULT_SPLIT_RATIO,
+                instanceIds.first);
 
+        mStatsLogManager.logger()
+                .withItemInfo(mItemInfo)
+                .withInstanceId(instanceIds.second)
+                .log(mSplitEvent);
+    }
 
     /**
      * To be called as soon as user selects the second task (even if animations aren't complete)
@@ -132,152 +266,504 @@
      */
     public void setSecondTask(Task task) {
         mSecondTaskId = task.key.id;
-        if (mInitialTaskIntent != null) {
-            mSecondTaskPackageName = task.getTopComponent().getPackageName();
+
+        if (FeatureFlags.ENABLE_SPLIT_LAUNCH_DATA_REFACTOR.get()) {
+            mSplitSelectDataHolder.setSecondTask(task.key.id);
         }
     }
 
     /**
-     * To be called when we want to launch split pairs from an existing GroupedTaskView.
+     * To be called as soon as user selects the second app (even if animations aren't complete)
+     * @param intent The second intent that will be launched.
+     * @param user The user of that intent.
      */
-    public void launchTasks(GroupedTaskView groupedTaskView,
-            Consumer<Boolean> callback, boolean freezeTaskList) {
-        mLaunchingTaskView = groupedTaskView;
-        TaskView.TaskIdAttributeContainer[] taskIdAttributeContainers =
-                groupedTaskView.getTaskIdAttributeContainers();
-        launchTasks(taskIdAttributeContainers[0].getTask().key.id,
-                taskIdAttributeContainers[1].getTask().key.id,
-                taskIdAttributeContainers[0].getStagePosition(), callback, freezeTaskList,
-                groupedTaskView.getSplitRatio());
+    public void setSecondTask(Intent intent, UserHandle user) {
+        mSecondTaskIntent = intent;
+        mSecondUser = user;
+
+        if (FeatureFlags.ENABLE_SPLIT_LAUNCH_DATA_REFACTOR.get()) {
+            mSplitSelectDataHolder.setSecondTask(intent, user);
+        }
     }
 
     /**
-     * To be called when we want to launch split pairs from Overview when split is initiated from
-     * Overview.
+     * To be called as soon as user selects the second app (even if animations aren't complete)
+     * Sets {@link #mSecondUser} from that of the pendingIntent
+     * @param pendingIntent The second PendingIntent that will be launched.
      */
-    public void launchTasks(int taskId1, int taskId2, @StagePosition int stagePosition,
-            Consumer<Boolean> callback, boolean freezeTaskList, float splitRatio) {
-        launchTasks(taskId1, null /* taskPendingIntent */, null /* fillInIntent */, taskId2,
-                stagePosition, callback, freezeTaskList, splitRatio);
+    public void setSecondTask(PendingIntent pendingIntent) {
+        mSecondPendingIntent = pendingIntent;
+        mSecondUser = pendingIntent.getCreatorUserHandle();
+
+        if (FeatureFlags.ENABLE_SPLIT_LAUNCH_DATA_REFACTOR.get()) {
+            mSplitSelectDataHolder.setSecondTask(pendingIntent);
+        }
     }
 
     /**
      * To be called when we want to launch split pairs from Overview. Split can be initiated from
      * either Overview or home, or all apps. Either both taskIds are set, or a pending intent + a
      * fill in intent with a taskId2 are set.
-     * @param taskPendingIntent is null when split is initiated from Overview
+     * @param intent1 is null when split is initiated from Overview
      * @param stagePosition representing location of task1
+     * @param shellInstanceId loggingId to be used by shell, will be non-null for actions that
+     *                   create a split instance, null for cases that bring existing instaces to the
+     *                   foreground (quickswitch, launching previous pairs from overview)
      */
-    public void launchTasks(int taskId1, @Nullable PendingIntent taskPendingIntent,
-            @Nullable Intent fillInIntent, int taskId2, @StagePosition int stagePosition,
-            Consumer<Boolean> callback, boolean freezeTaskList, float splitRatio) {
-        // Assume initial task is for top/left part of screen
-        final int[] taskIds = stagePosition == STAGE_POSITION_TOP_OR_LEFT
-                ? new int[]{taskId1, taskId2}
-                : new int[]{taskId2, taskId1};
-        if (TaskAnimationManager.ENABLE_SHELL_TRANSITIONS) {
-            RemoteSplitLaunchTransitionRunner animationRunner =
-                    new RemoteSplitLaunchTransitionRunner(taskId1, taskPendingIntent, taskId2,
-                            callback);
-            mSystemUiProxy.startTasks(taskIds[0], null /* mainOptions */, taskIds[1],
-                    null /* sideOptions */, STAGE_POSITION_BOTTOM_OR_RIGHT, splitRatio,
-                    new RemoteTransitionCompat(animationRunner, MAIN_EXECUTOR,
-                            ActivityThread.currentActivityThread().getApplicationThread()));
-            // TODO: handle intent + task with shell transition
-        } else {
-            RemoteSplitLaunchAnimationRunner animationRunner =
-                    new RemoteSplitLaunchAnimationRunner(taskId1, taskPendingIntent, taskId2,
-                            callback);
-            final RemoteAnimationAdapter adapter = new RemoteAnimationAdapter(
-                    RemoteAnimationAdapterCompat.wrapRemoteAnimationRunner(animationRunner),
-                    300, 150,
-                    ActivityThread.currentActivityThread().getApplicationThread());
+    public void launchTasks(int taskId1, @Nullable Intent intent1, int taskId2,
+            @Nullable Intent intent2, @StagePosition int stagePosition,
+            Consumer<Boolean> callback, boolean freezeTaskList, float splitRatio,
+            @Nullable InstanceId shellInstanceId) {
+        TestLogging.recordEvent(
+                TestProtocol.SEQUENCE_MAIN, "launchSplitTasks");
+        if (FeatureFlags.ENABLE_SPLIT_LAUNCH_DATA_REFACTOR.get()) {
+            launchTasksRefactored(callback, freezeTaskList, splitRatio, shellInstanceId);
+            return;
+        }
 
-            ActivityOptions mainOpts = ActivityOptions.makeBasic();
-            if (freezeTaskList) {
-                mainOpts.setFreezeRecentTasksReordering();
-            }
-            if (taskPendingIntent == null) {
-                mSystemUiProxy.startTasksWithLegacyTransition(taskIds[0], mainOpts.toBundle(),
-                        taskIds[1], null /* sideOptions */, STAGE_POSITION_BOTTOM_OR_RIGHT,
-                        splitRatio, adapter);
+        final ActivityOptions options1 = ActivityOptions.makeBasic();
+        if (freezeTaskList) {
+            options1.setFreezeRecentTasksReordering();
+        }
+        boolean hasSecondaryPendingIntent = mSecondPendingIntent != null;
+        if (TaskAnimationManager.ENABLE_SHELL_TRANSITIONS) {
+            final RemoteTransition remoteTransition = getShellRemoteTransition(taskId1, taskId2,
+                    callback);
+            if (intent1 == null && (intent2 == null && !hasSecondaryPendingIntent)) {
+                mSystemUiProxy.startTasks(taskId1, options1.toBundle(), taskId2,
+                        null /* options2 */, stagePosition, splitRatio, remoteTransition,
+                        shellInstanceId);
+            } else if (intent2 == null && !hasSecondaryPendingIntent) {
+                launchIntentOrShortcut(intent1, mInitialUser, options1, taskId2, stagePosition,
+                        splitRatio, remoteTransition, shellInstanceId);
+            } else if (intent1 == null) {
+                launchIntentOrShortcut(intent2, mSecondUser, options1, taskId1,
+                        getOppositeStagePosition(stagePosition), splitRatio, remoteTransition,
+                        shellInstanceId);
             } else {
-                mSystemUiProxy.startIntentAndTaskWithLegacyTransition(taskPendingIntent,
-                        fillInIntent, taskId2, mainOpts.toBundle(), null /* sideOptions */,
-                        stagePosition, splitRatio, adapter);
+                mSystemUiProxy.startIntents(getPendingIntent(intent1, mInitialUser),
+                        mInitialUser.getIdentifier(), getShortcutInfo(intent1, mInitialUser),
+                        options1.toBundle(), hasSecondaryPendingIntent
+                                ? mSecondPendingIntent
+                                : getPendingIntent(intent2, mSecondUser),
+                        mSecondUser.getIdentifier(), getShortcutInfo(intent2, mSecondUser),
+                        null /* options2 */, stagePosition, splitRatio, remoteTransition,
+                        shellInstanceId);
+            }
+        } else {
+            final RemoteAnimationAdapter adapter = getLegacyRemoteAdapter(taskId1, taskId2,
+                    callback);
+
+            if (intent1 == null && (intent2 == null && !hasSecondaryPendingIntent)) {
+                mSystemUiProxy.startTasksWithLegacyTransition(taskId1, options1.toBundle(),
+                        taskId2, null /* options2 */, stagePosition, splitRatio, adapter,
+                        shellInstanceId);
+            } else if (intent2 == null && !hasSecondaryPendingIntent) {
+                launchIntentOrShortcutLegacy(intent1, mInitialUser, options1, taskId2,
+                        stagePosition, splitRatio, adapter, shellInstanceId);
+            } else if (intent1 == null) {
+                launchIntentOrShortcutLegacy(intent2, mSecondUser, options1, taskId1,
+                        getOppositeStagePosition(stagePosition), splitRatio, adapter,
+                        shellInstanceId);
+            } else {
+                mSystemUiProxy.startIntentsWithLegacyTransition(
+                        getPendingIntent(intent1, mInitialUser), mInitialUser.getIdentifier(),
+                        getShortcutInfo(intent1, mInitialUser), options1.toBundle(),
+                        hasSecondaryPendingIntent
+                                ? mSecondPendingIntent
+                                : getPendingIntent(intent2, mSecondUser),
+                        mSecondUser.getIdentifier(), getShortcutInfo(intent2, mSecondUser),
+                        null /* options2 */, stagePosition, splitRatio, adapter, shellInstanceId);
             }
         }
     }
 
+    private void launchTasksRefactored(Consumer<Boolean> callback, boolean freezeTaskList,
+            float splitRatio, @Nullable InstanceId shellInstanceId) {
+        final ActivityOptions options1 = ActivityOptions.makeBasic();
+        if (freezeTaskList) {
+            options1.setFreezeRecentTasksReordering();
+        }
+
+        SplitSelectDataHolder.SplitLaunchData launchData =
+                mSplitSelectDataHolder.getSplitLaunchData();
+        int firstTaskId = launchData.getInitialTaskId();
+        int secondTaskId = launchData.getSecondTaskId();
+        ShortcutInfo firstShortcut = launchData.getInitialShortcut();
+        ShortcutInfo secondShortcut = launchData.getSecondShortcut();
+        PendingIntent firstPI = launchData.getInitialPendingIntent();
+        PendingIntent secondPI = launchData.getSecondPendingIntent();
+        int firstUserId = launchData.getInitialUserId();
+        int secondUserId = launchData.getSecondUserId();
+        int initialStagePosition = launchData.getInitialStagePosition();
+        Bundle optionsBundle = options1.toBundle();
+
+        if (TaskAnimationManager.ENABLE_SHELL_TRANSITIONS) {
+            final RemoteTransition remoteTransition = getShellRemoteTransition(firstTaskId,
+                    secondTaskId, callback);
+            switch (launchData.getSplitLaunchType()) {
+                case SPLIT_TASK_TASK ->
+                        mSystemUiProxy.startTasks(firstTaskId, optionsBundle, secondTaskId,
+                                null /* options2 */, initialStagePosition, splitRatio,
+                                remoteTransition, shellInstanceId);
+
+                case SPLIT_TASK_PENDINGINTENT ->
+                        mSystemUiProxy.startIntentAndTask(secondPI, secondUserId, optionsBundle,
+                                firstTaskId, null /*options2*/, initialStagePosition, splitRatio,
+                                remoteTransition, shellInstanceId);
+
+                case SPLIT_TASK_SHORTCUT ->
+                        mSystemUiProxy.startShortcutAndTask(secondShortcut, optionsBundle,
+                                firstTaskId, null /*options2*/, initialStagePosition, splitRatio,
+                                remoteTransition, shellInstanceId);
+
+                case SPLIT_PENDINGINTENT_TASK ->
+                        mSystemUiProxy.startIntentAndTask(firstPI, firstUserId, optionsBundle,
+                                secondTaskId, null /*options2*/, initialStagePosition, splitRatio,
+                                remoteTransition, shellInstanceId);
+
+                case SPLIT_PENDINGINTENT_PENDINGINTENT ->
+                        mSystemUiProxy.startIntents(firstPI, firstUserId, firstShortcut,
+                                optionsBundle, secondPI, secondUserId, secondShortcut,
+                                null /*options2*/, initialStagePosition, splitRatio,
+                                remoteTransition, shellInstanceId);
+
+                case SPLIT_SHORTCUT_TASK ->
+                        mSystemUiProxy.startShortcutAndTask(firstShortcut, optionsBundle,
+                                secondTaskId, null /*options2*/, initialStagePosition, splitRatio,
+                                remoteTransition, shellInstanceId);
+            }
+        } else {
+            final RemoteAnimationAdapter adapter = getLegacyRemoteAdapter(firstTaskId, secondTaskId,
+                    callback);
+            switch (launchData.getSplitLaunchType()) {
+                case SPLIT_TASK_TASK ->
+                        mSystemUiProxy.startTasksWithLegacyTransition(firstTaskId, optionsBundle,
+                                secondTaskId, null /* options2 */, initialStagePosition,
+                                splitRatio, adapter, shellInstanceId);
+
+                case SPLIT_TASK_PENDINGINTENT ->
+                        mSystemUiProxy.startIntentAndTaskWithLegacyTransition(secondPI,
+                                secondUserId, optionsBundle, firstTaskId, null /*options2*/,
+                                initialStagePosition, splitRatio, adapter, shellInstanceId);
+
+                case SPLIT_TASK_SHORTCUT ->
+                        mSystemUiProxy.startShortcutAndTaskWithLegacyTransition(secondShortcut,
+                                optionsBundle, firstTaskId, null /*options2*/, initialStagePosition,
+                                splitRatio, adapter, shellInstanceId);
+
+                case SPLIT_PENDINGINTENT_TASK ->
+                        mSystemUiProxy.startIntentAndTaskWithLegacyTransition(firstPI, firstUserId,
+                                optionsBundle, secondTaskId, null /*options2*/,
+                                initialStagePosition, splitRatio, adapter, shellInstanceId);
+
+                case SPLIT_PENDINGINTENT_PENDINGINTENT ->
+                        mSystemUiProxy.startIntentsWithLegacyTransition(firstPI, firstUserId,
+                                firstShortcut, optionsBundle, secondPI, secondUserId,
+                                secondShortcut, null /*options2*/, initialStagePosition, splitRatio,
+                                adapter, shellInstanceId);
+
+                case SPLIT_SHORTCUT_TASK ->
+                        mSystemUiProxy.startShortcutAndTaskWithLegacyTransition(firstShortcut,
+                                optionsBundle, secondTaskId, null /*options2*/,
+                                initialStagePosition, splitRatio, adapter, shellInstanceId);
+            }
+        }
+    }
+
+    /**
+     * Used to launch split screen from a split pair that already exists (usually accessible through
+     * Overview). This is different than
+     * {@link #launchTasks(int, Intent, int, Intent, int, Consumer, boolean, float, InstanceId)} in
+     * that this only launches split screen that are existing tasks. This doesn't determine which
+     * API should be used (i.e. launching split with existing tasks vs intents vs shortcuts, etc).
+     *
+     * <p/>
+     * NOTE: This is not to be used to launch AppPairs.
+     */
+    public void launchExistingSplitPair(@Nullable GroupedTaskView groupedTaskView,
+            int firstTaskId, int secondTaskId, @StagePosition int stagePosition,
+            Consumer<Boolean> callback, boolean freezeTaskList, float splitRatio) {
+        mLaunchingTaskView = groupedTaskView;
+        final ActivityOptions options1 = ActivityOptions.makeBasic();
+        if (freezeTaskList) {
+            options1.setFreezeRecentTasksReordering();
+        }
+        Bundle optionsBundle = options1.toBundle();
+
+        if (TaskAnimationManager.ENABLE_SHELL_TRANSITIONS) {
+            final RemoteTransition remoteTransition = getShellRemoteTransition(firstTaskId,
+                    secondTaskId, callback);
+            mSystemUiProxy.startTasks(firstTaskId, optionsBundle, secondTaskId,
+                    null /* options2 */, stagePosition, splitRatio,
+                    remoteTransition, null /*shellInstanceId*/);
+        } else {
+            final RemoteAnimationAdapter adapter = getLegacyRemoteAdapter(firstTaskId,
+                    secondTaskId, callback);
+            mSystemUiProxy.startTasksWithLegacyTransition(firstTaskId, optionsBundle,
+                    secondTaskId, null /* options2 */, stagePosition,
+                    splitRatio, adapter, null /*shellInstanceId*/);
+        }
+    }
+
+    /**
+     * Launches the initially selected task/intent in fullscreen (note the same SystemUi APIs are
+     * used as {@link #launchSplitTasks(Consumer)} because they are overloaded to launch both
+     * split and fullscreen tasks)
+     */
+    public void launchInitialAppFullscreen(Consumer<Boolean> callback) {
+        if (!FeatureFlags.ENABLE_SPLIT_LAUNCH_DATA_REFACTOR.get()) {
+            launchSplitTasks(callback);
+            return;
+        }
+
+        final ActivityOptions options1 = ActivityOptions.makeBasic();
+        SplitSelectDataHolder.SplitLaunchData launchData =
+                mSplitSelectDataHolder.getFullscreenLaunchData();
+        int firstTaskId = launchData.getInitialTaskId();
+        int secondTaskId = launchData.getSecondTaskId();
+        PendingIntent firstPI = launchData.getInitialPendingIntent();
+        int firstUserId = launchData.getInitialUserId();
+        int initialStagePosition = launchData.getInitialStagePosition();
+        ShortcutInfo initialShortcut = launchData.getInitialShortcut();
+        Bundle optionsBundle = options1.toBundle();
+
+        final RemoteSplitLaunchTransitionRunner animationRunner =
+                new RemoteSplitLaunchTransitionRunner(firstTaskId, secondTaskId, callback);
+        final RemoteTransition remoteTransition = new RemoteTransition(animationRunner,
+                ActivityThread.currentActivityThread().getApplicationThread(),
+                "LaunchSplitPair");
+        InstanceId instanceId = LogUtils.getShellShareableInstanceId().first;
+        if (TaskAnimationManager.ENABLE_SHELL_TRANSITIONS) {
+            switch (launchData.getSplitLaunchType()) {
+                case SPLIT_SINGLE_TASK_FULLSCREEN -> mSystemUiProxy.startTasks(firstTaskId,
+                        optionsBundle, secondTaskId, null /* options2 */, initialStagePosition,
+                        DEFAULT_SPLIT_RATIO, remoteTransition, instanceId);
+                case SPLIT_SINGLE_INTENT_FULLSCREEN -> mSystemUiProxy.startIntentAndTask(firstPI,
+                        firstUserId, optionsBundle, secondTaskId, null /*options2*/,
+                        initialStagePosition, DEFAULT_SPLIT_RATIO, remoteTransition,
+                        instanceId);
+                case SPLIT_SINGLE_SHORTCUT_FULLSCREEN -> mSystemUiProxy.startShortcutAndTask(
+                        initialShortcut, optionsBundle, firstTaskId, null /* options2 */,
+                        initialStagePosition, DEFAULT_SPLIT_RATIO, remoteTransition, instanceId);
+            }
+        } else {
+            final RemoteAnimationAdapter adapter = getLegacyRemoteAdapter(firstTaskId,
+                    secondTaskId, callback);
+            switch (launchData.getSplitLaunchType()) {
+                case SPLIT_SINGLE_TASK_FULLSCREEN -> mSystemUiProxy.startTasksWithLegacyTransition(
+                        firstTaskId, optionsBundle, secondTaskId, null /* options2 */,
+                        initialStagePosition, DEFAULT_SPLIT_RATIO, adapter, instanceId);
+                case SPLIT_SINGLE_INTENT_FULLSCREEN ->
+                        mSystemUiProxy.startIntentAndTaskWithLegacyTransition(firstPI, firstUserId,
+                                optionsBundle, secondTaskId, null /*options2*/,
+                                initialStagePosition, DEFAULT_SPLIT_RATIO, adapter,
+                                instanceId);
+                case SPLIT_SINGLE_SHORTCUT_FULLSCREEN ->
+                        mSystemUiProxy.startShortcutAndTaskWithLegacyTransition(
+                                initialShortcut, optionsBundle, firstTaskId, null /* options2 */,
+                                initialStagePosition, DEFAULT_SPLIT_RATIO, adapter, instanceId);
+            }
+        }
+    }
+
+    private RemoteTransition getShellRemoteTransition(int firstTaskId, int secondTaskId,
+            Consumer<Boolean> callback) {
+        final RemoteSplitLaunchTransitionRunner animationRunner =
+                new RemoteSplitLaunchTransitionRunner(firstTaskId, secondTaskId, callback);
+        return new RemoteTransition(animationRunner,
+                ActivityThread.currentActivityThread().getApplicationThread(), "LaunchSplitPair");
+    }
+
+    private RemoteAnimationAdapter getLegacyRemoteAdapter(int firstTaskId, int secondTaskId,
+            Consumer<Boolean> callback) {
+        final RemoteSplitLaunchAnimationRunner animationRunner =
+                new RemoteSplitLaunchAnimationRunner(firstTaskId, secondTaskId, callback);
+        return new RemoteAnimationAdapter(animationRunner, 300, 150,
+                ActivityThread.currentActivityThread().getApplicationThread());
+    }
+
+    private void launchIntentOrShortcut(Intent intent, UserHandle user, ActivityOptions options1,
+            int taskId, @StagePosition int stagePosition, float splitRatio,
+            RemoteTransition remoteTransition, @Nullable InstanceId shellInstanceId) {
+        final ShortcutInfo shortcutInfo = getShortcutInfo(intent, user);
+        if (shortcutInfo != null) {
+            mSystemUiProxy.startShortcutAndTask(shortcutInfo,
+                    options1.toBundle(), taskId, null /* options2 */, stagePosition,
+                    splitRatio, remoteTransition, shellInstanceId);
+        } else {
+            mSystemUiProxy.startIntentAndTask(getPendingIntent(intent, user), user.getIdentifier(),
+                    options1.toBundle(), taskId, null /* options2 */, stagePosition, splitRatio,
+                    remoteTransition, shellInstanceId);
+        }
+    }
+
+    private void launchIntentOrShortcutLegacy(Intent intent, UserHandle user,
+            ActivityOptions options1, int taskId, @StagePosition int stagePosition,
+            float splitRatio, RemoteAnimationAdapter adapter,
+            @Nullable InstanceId shellInstanceId) {
+        final ShortcutInfo shortcutInfo = getShortcutInfo(intent, user);
+        if (shortcutInfo != null) {
+            mSystemUiProxy.startShortcutAndTaskWithLegacyTransition(shortcutInfo,
+                    options1.toBundle(), taskId, null /* options2 */, stagePosition,
+                    splitRatio, adapter, shellInstanceId);
+        } else {
+            mSystemUiProxy.startIntentAndTaskWithLegacyTransition(
+                    getPendingIntent(intent, user), user.getIdentifier(), options1.toBundle(),
+                    taskId, null /* options2 */, stagePosition, splitRatio, adapter,
+                    shellInstanceId);
+        }
+    }
+
+    /**
+     * We treat launching by intents as grouped in two ways,
+     * If {@param intent} represents the first app, we always convert the intent to pending intent
+     * It it represents second app, either the second intent OR mSecondPendingIntent will be used
+     *    convert second intent to a pendingIntent OR return mSecondPendingIntent as is
+     */
+    private PendingIntent getPendingIntent(Intent intent, UserHandle user) {
+        boolean isParamFirstIntent = intent != null && intent == mInitialTaskIntent;
+        if (!isParamFirstIntent && mSecondPendingIntent != null) {
+            // Because mSecondPendingIntent and mSecondTaskIntent can't both be set, we know we need
+            // to be using mSecondPendingIntent
+            return mSecondPendingIntent;
+        }
+
+        // intent param must either be mInitialTaskIntent or mSecondTaskIntent, convert either to
+        // a new PendingIntent
+        return intent == null ? null : (user != null
+                ? PendingIntent.getActivityAsUser(mContext, 0, intent,
+                FLAG_MUTABLE | FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT, null /* options */, user)
+                : PendingIntent.getActivity(mContext, 0, intent,
+                        FLAG_MUTABLE | FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT));
+    }
+
     public @StagePosition int getActiveSplitStagePosition() {
-        return mStagePosition;
+        return mInitialStagePosition;
+    }
+
+    public StatsLogManager.EventEnum getSplitEvent() {
+        return mSplitEvent;
     }
 
     public void setRecentsAnimationRunning(boolean running) {
-        this.mRecentsAnimationRunning = running;
+        mRecentsAnimationRunning = running;
+    }
+
+    @Nullable
+    private ShortcutInfo getShortcutInfo(Intent intent, UserHandle user) {
+        if (intent == null || intent.getPackage() == null) {
+            return null;
+        }
+
+        final String shortcutId = intent.getStringExtra(ShortcutKey.EXTRA_SHORTCUT_ID);
+        if (shortcutId == null) {
+            return null;
+        }
+
+        try {
+            final Context context = mContext.createPackageContextAsUser(
+                    intent.getPackage(), 0 /* flags */, user);
+            return new ShortcutInfo.Builder(context, shortcutId).build();
+        } catch (PackageManager.NameNotFoundException e) {
+            Log.w(TAG, "Failed to create a ShortcutInfo for " + intent.getPackage());
+        }
+
+        return null;
+    }
+
+    public boolean isAnimateCurrentTaskDismissal() {
+        return mAnimateCurrentTaskDismissal;
+    }
+
+    public void setAnimateCurrentTaskDismissal(boolean animateCurrentTaskDismissal) {
+        mAnimateCurrentTaskDismissal = animateCurrentTaskDismissal;
+    }
+
+    public boolean isDismissingFromSplitPair() {
+        return mDismissingFromSplitPair;
+    }
+
+    public void setDismissingFromSplitPair(boolean dismissingFromSplitPair) {
+        mDismissingFromSplitPair = dismissingFromSplitPair;
+    }
+
+    public SplitAnimationController getSplitAnimationController() {
+        return mSplitAnimationController;
     }
 
     /**
      * Requires Shell Transitions
      */
-    private class RemoteSplitLaunchTransitionRunner implements RemoteTransitionRunner {
+    private class RemoteSplitLaunchTransitionRunner extends IRemoteTransition.Stub {
 
         private final int mInitialTaskId;
-        private final PendingIntent mInitialTaskPendingIntent;
         private final int mSecondTaskId;
         private final Consumer<Boolean> mSuccessCallback;
 
-        RemoteSplitLaunchTransitionRunner(int initialTaskId, PendingIntent initialTaskPendingIntent,
-                int secondTaskId, Consumer<Boolean> callback) {
+        RemoteSplitLaunchTransitionRunner(int initialTaskId, int secondTaskId,
+                Consumer<Boolean> callback) {
             mInitialTaskId = initialTaskId;
-            mInitialTaskPendingIntent = initialTaskPendingIntent;
             mSecondTaskId = secondTaskId;
             mSuccessCallback = callback;
         }
 
         @Override
-        public void startAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
-                @NonNull SurfaceControl.Transaction t, @NonNull Runnable finishCallback) {
-            TaskViewUtils.composeRecentsSplitLaunchAnimator(mInitialTaskId,
-                    mInitialTaskPendingIntent, mSecondTaskId, info, t, () -> {
-                    finishCallback.run();
-                    if (mSuccessCallback != null) {
-                        mSuccessCallback.accept(true);
-                    }
-                });
-            // After successful launch, call resetState
-            resetState();
+        public void startAnimation(IBinder transition, TransitionInfo info,
+                SurfaceControl.Transaction t,
+                IRemoteTransitionFinishedCallback finishedCallback) {
+            final Runnable finishAdapter = () ->  {
+                try {
+                    finishedCallback.onTransitionFinished(null /* wct */, null /* sct */);
+                } catch (RemoteException e) {
+                    Log.e(TAG, "Failed to call transition finished callback", e);
+                }
+            };
+
+            MAIN_EXECUTOR.execute(() -> {
+                TaskViewUtils.composeRecentsSplitLaunchAnimator(mLaunchingTaskView, mStateManager,
+                        mDepthController, mInitialTaskId, mSecondTaskId, info, t, () -> {
+                            finishAdapter.run();
+                            if (mSuccessCallback != null) {
+                                mSuccessCallback.accept(true);
+                            }
+                        });
+                // After successful launch, call resetState
+                resetState();
+            });
         }
+
+        @Override
+        public void mergeAnimation(IBinder transition, TransitionInfo info,
+                SurfaceControl.Transaction t, IBinder mergeTarget,
+                IRemoteTransitionFinishedCallback finishedCallback) { }
     }
 
     /**
      * LEGACY
      * Remote animation runner for animation to launch an app.
      */
-    private class RemoteSplitLaunchAnimationRunner implements RemoteAnimationRunnerCompat {
+    private class RemoteSplitLaunchAnimationRunner extends RemoteAnimationRunnerCompat {
 
         private final int mInitialTaskId;
-        private final PendingIntent mInitialTaskPendingIntent;
         private final int mSecondTaskId;
         private final Consumer<Boolean> mSuccessCallback;
 
-        RemoteSplitLaunchAnimationRunner(int initialTaskId, PendingIntent initialTaskPendingIntent,
-                int secondTaskId, Consumer<Boolean> successCallback) {
+        RemoteSplitLaunchAnimationRunner(int initialTaskId, int secondTaskId,
+                Consumer<Boolean> successCallback) {
             mInitialTaskId = initialTaskId;
-            mInitialTaskPendingIntent = initialTaskPendingIntent;
             mSecondTaskId = secondTaskId;
             mSuccessCallback = successCallback;
         }
 
         @Override
-        public void onAnimationStart(int transit, RemoteAnimationTargetCompat[] apps,
-                RemoteAnimationTargetCompat[] wallpapers, RemoteAnimationTargetCompat[] nonApps,
+        public void onAnimationStart(int transit, RemoteAnimationTarget[] apps,
+                RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps,
                 Runnable finishedCallback) {
             postAsyncCallback(mHandler,
                     () -> TaskViewUtils.composeRecentsSplitLaunchAnimatorLegacy(
-                            mLaunchingTaskView, mInitialTaskId, mInitialTaskPendingIntent,
-                            mSecondTaskId, apps, wallpapers, nonApps, mStateManager,
-                            mDepthController, () -> {
+                            mLaunchingTaskView, mInitialTaskId, mSecondTaskId, apps, wallpapers,
+                            nonApps, mStateManager, mDepthController, () -> {
                                 finishedCallback.run();
                                 if (mSuccessCallback != null) {
                                     mSuccessCallback.accept(true);
@@ -303,12 +789,23 @@
      * To be called if split select was cancelled
      */
     public void resetState() {
+        if (FeatureFlags.ENABLE_SPLIT_LAUNCH_DATA_REFACTOR.get()) {
+            mSplitSelectDataHolder.resetState();
+        }
         mInitialTaskId = INVALID_TASK_ID;
         mInitialTaskIntent = null;
         mSecondTaskId = INVALID_TASK_ID;
-        mStagePosition = SplitConfigurationOptions.STAGE_POSITION_UNDEFINED;
+        mSecondTaskIntent = null;
+        mInitialUser = null;
+        mSecondUser = null;
+        mInitialStagePosition = SplitConfigurationOptions.STAGE_POSITION_UNDEFINED;
         mRecentsAnimationRunning = false;
         mLaunchingTaskView = null;
+        mItemInfo = null;
+        mSplitEvent = null;
+        mAnimateCurrentTaskDismissal = false;
+        mDismissingFromSplitPair = false;
+        mSecondPendingIntent = null;
     }
 
     /**
@@ -316,7 +813,11 @@
      *         chosen
      */
     public boolean isSplitSelectActive() {
-        return isInitialTaskIntentSet() && mSecondTaskId == INVALID_TASK_ID;
+        if (FeatureFlags.ENABLE_SPLIT_LAUNCH_DATA_REFACTOR.get()) {
+            return mSplitSelectDataHolder.isSplitSelectActive();
+        } else {
+            return isInitialTaskIntentSet() && !isSecondTaskIntentSet();
+        }
     }
 
     /**
@@ -324,10 +825,53 @@
      *          be launched
      */
     public boolean isBothSplitAppsConfirmed() {
-        return isInitialTaskIntentSet() && mSecondTaskId != INVALID_TASK_ID;
+        if (FeatureFlags.ENABLE_SPLIT_LAUNCH_DATA_REFACTOR.get()) {
+            return mSplitSelectDataHolder.isBothSplitAppsConfirmed();
+        } else {
+            return isInitialTaskIntentSet() && isSecondTaskIntentSet();
+        }
     }
 
     private boolean isInitialTaskIntentSet() {
         return (mInitialTaskId != INVALID_TASK_ID || mInitialTaskIntent != null);
     }
+
+    public int getInitialTaskId() {
+        if (FeatureFlags.ENABLE_SPLIT_LAUNCH_DATA_REFACTOR.get()) {
+            return mSplitSelectDataHolder.getInitialTaskId();
+        } else {
+            return mInitialTaskId;
+        }
+    }
+
+    public int getSecondTaskId() {
+        if (FeatureFlags.ENABLE_SPLIT_LAUNCH_DATA_REFACTOR.get()) {
+            return mSplitSelectDataHolder.getSecondTaskId();
+        } else {
+            return mSecondTaskId;
+        }
+    }
+
+    private boolean isSecondTaskIntentSet() {
+        return (mSecondTaskId != INVALID_TASK_ID || mSecondTaskIntent != null
+                || mSecondPendingIntent != null);
+    }
+
+    public void setFirstFloatingTaskView(FloatingTaskView floatingTaskView) {
+        mFirstFloatingTaskView = floatingTaskView;
+    }
+
+    public FloatingTaskView getFirstFloatingTaskView() {
+        return mFirstFloatingTaskView;
+    }
+
+    public AppPairsController getAppPairsController() {
+        return mAppPairsController;
+    }
+
+    public void dump(String prefix, PrintWriter writer) {
+        if (mSplitSelectDataHolder != null) {
+            mSplitSelectDataHolder.dump(prefix, writer);
+        }
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/util/SplitToConfirmTimings.java b/quickstep/src/com/android/quickstep/util/SplitToConfirmTimings.java
new file mode 100644
index 0000000..f5b00cf
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/SplitToConfirmTimings.java
@@ -0,0 +1,51 @@
+/*
+ * 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.quickstep.util;
+
+import static com.android.launcher3.anim.Interpolators.EMPHASIZED;
+
+import android.view.animation.Interpolator;
+
+/**
+ * Timings for the OverviewSplitSelect > confirmed animation.
+ */
+abstract class SplitToConfirmTimings implements SplitAnimationTimings {
+    // Overwritten by device-specific timings
+    abstract public int getPlaceholderFadeInStart();
+    abstract public int getPlaceholderFadeInEnd();
+    abstract public int getPlaceholderIconFadeInStart();
+    abstract public int getPlaceholderIconFadeInEnd();
+    abstract public int getStagedRectSlideStart();
+    abstract public int getStagedRectSlideEnd();
+
+    // Common timings
+    public int getInstructionsFadeStart() { return 0; }
+    public int getInstructionsFadeEnd() { return 67; }
+    public Interpolator getStagedRectXInterpolator() { return EMPHASIZED; }
+    public Interpolator getStagedRectYInterpolator() { return EMPHASIZED; }
+    public Interpolator getStagedRectScaleXInterpolator() { return EMPHASIZED; }
+    public Interpolator getStagedRectScaleYInterpolator() { return EMPHASIZED; }
+
+    abstract public int getDuration();
+
+    public float getInstructionsFadeStartOffset() {
+        return (float) getInstructionsFadeStart() / getDuration();
+    }
+    public float getInstructionsFadeEndOffset() {
+        return (float) getInstructionsFadeEnd() / getDuration();
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/util/SplitToWorkspaceController.java b/quickstep/src/com/android/quickstep/util/SplitToWorkspaceController.java
new file mode 100644
index 0000000..148a45a
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/SplitToWorkspaceController.java
@@ -0,0 +1,183 @@
+/*
+ * 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.quickstep.util;
+
+import static com.android.launcher3.config.FeatureFlags.ENABLE_SPLIT_FROM_FULLSCREEN_WITH_KEYBOARD_SHORTCUTS;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_SPLIT_FROM_WORKSPACE_TO_WORKSPACE;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.app.PendingIntent;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Rect;
+import android.graphics.RectF;
+import android.graphics.drawable.Drawable;
+import android.os.UserHandle;
+import android.view.View;
+
+import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.Launcher;
+import com.android.launcher3.R;
+import com.android.launcher3.anim.PendingAnimation;
+import com.android.launcher3.icons.BitmapInfo;
+import com.android.launcher3.model.data.WorkspaceItemInfo;
+import com.android.quickstep.views.FloatingTaskView;
+import com.android.quickstep.views.RecentsView;
+import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
+
+/** Handles when the stage split lands on the home screen. */
+public class SplitToWorkspaceController {
+
+    private final Launcher mLauncher;
+    private final DeviceProfile mDP;
+    private final SplitSelectStateController mController;
+
+    private final int mHalfDividerSize;
+
+    public SplitToWorkspaceController(Launcher launcher, SplitSelectStateController controller) {
+        mLauncher = launcher;
+        mDP = mLauncher.getDeviceProfile();
+        mController = controller;
+
+        mHalfDividerSize = mLauncher.getResources().getDimensionPixelSize(
+                R.dimen.multi_window_task_divider_size) / 2;
+    }
+
+    /**
+     * Handles widget selection from staged split.
+     * @param view Original widget view
+     * @param pendingIntent Provided by widget via InteractionHandler
+     * @return {@code true} if we can attempt launch the widget into split, {@code false} otherwise
+     *         to allow launcher to handle the click
+     */
+    public boolean handleSecondWidgetSelectionForSplit(View view, PendingIntent pendingIntent) {
+        if (shouldIgnoreSecondSplitLaunch()) {
+            return false;
+        }
+
+        // Convert original widgetView into bitmap to use for animation
+        // TODO(b/276361926) get the icon for this widget via PackageManager?
+        int width = view.getWidth();
+        int height = view.getHeight();
+        Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
+        Canvas canvas = new Canvas(bitmap);
+        view.draw(canvas);
+
+        mController.setSecondTask(pendingIntent);
+
+        startWorkspaceAnimation(view, bitmap, null /*icon*/);
+        return true;
+    }
+
+    /**
+     * Handles second app selection from stage split. If the item can't be opened in split or
+     * it's not in stage split state, we pass it onto Launcher's default item click handler.
+     */
+    public boolean handleSecondAppSelectionForSplit(View view) {
+        if (shouldIgnoreSecondSplitLaunch()) {
+            return false;
+        }
+        Object tag = view.getTag();
+        Intent intent;
+        UserHandle user;
+        BitmapInfo bitmapInfo;
+        if (tag instanceof WorkspaceItemInfo) {
+            final WorkspaceItemInfo workspaceItemInfo = (WorkspaceItemInfo) tag;
+            intent = workspaceItemInfo.intent;
+            user = workspaceItemInfo.user;
+            bitmapInfo = workspaceItemInfo.bitmap;
+        } else if (tag instanceof com.android.launcher3.model.data.AppInfo) {
+            final com.android.launcher3.model.data.AppInfo appInfo =
+                    (com.android.launcher3.model.data.AppInfo) tag;
+            intent = appInfo.intent;
+            user = appInfo.user;
+            bitmapInfo = appInfo.bitmap;
+        } else {
+            return false;
+        }
+
+        mController.setSecondTask(intent, user);
+
+        startWorkspaceAnimation(view, null /*bitmap*/, bitmapInfo.newIcon(mLauncher));
+        return true;
+    }
+
+    private void startWorkspaceAnimation(@NonNull View view, @Nullable Bitmap bitmap,
+            @Nullable Drawable icon) {
+        boolean isTablet = mLauncher.getDeviceProfile().isTablet;
+        SplitAnimationTimings timings = AnimUtils.getDeviceSplitToConfirmTimings(isTablet);
+        PendingAnimation pendingAnimation = new PendingAnimation(timings.getDuration());
+
+        Rect firstTaskStartingBounds = new Rect();
+        Rect firstTaskEndingBounds = new Rect();
+        RectF secondTaskStartingBounds = new RectF();
+        Rect secondTaskEndingBounds = new Rect();
+
+        RecentsView recentsView = mLauncher.getOverviewPanel();
+        recentsView.getPagedOrientationHandler().getFinalSplitPlaceholderBounds(mHalfDividerSize,
+                mDP, mController.getActiveSplitStagePosition(), firstTaskEndingBounds,
+                secondTaskEndingBounds);
+
+        FloatingTaskView firstFloatingTaskView = mController.getFirstFloatingTaskView();
+        firstFloatingTaskView.getBoundsOnScreen(firstTaskStartingBounds);
+        firstFloatingTaskView.addConfirmAnimation(pendingAnimation,
+                new RectF(firstTaskStartingBounds), firstTaskEndingBounds,
+                false /* fadeWithThumbnail */, true /* isStagedTask */);
+
+        FloatingTaskView secondFloatingTaskView = FloatingTaskView.getFloatingTaskView(mLauncher,
+                view, bitmap, icon, secondTaskStartingBounds);
+        secondFloatingTaskView.setAlpha(1);
+        secondFloatingTaskView.addConfirmAnimation(pendingAnimation, secondTaskStartingBounds,
+                secondTaskEndingBounds, true /* fadeWithThumbnail */, false /* isStagedTask */);
+
+        pendingAnimation.addListener(new AnimatorListenerAdapter() {
+            private boolean mIsCancelled = false;
+
+            @Override
+            public void onAnimationCancel(Animator animation) {
+                mIsCancelled = true;
+                cleanUp();
+            }
+
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                if (!mIsCancelled) {
+                    mController.launchSplitTasks(aBoolean -> cleanUp());
+                    InteractionJankMonitorWrapper.end(
+                            InteractionJankMonitorWrapper.CUJ_SPLIT_SCREEN_ENTER);
+                }
+            }
+
+            private void cleanUp() {
+                mLauncher.getDragLayer().removeView(firstFloatingTaskView);
+                mLauncher.getDragLayer().removeView(secondFloatingTaskView);
+                mController.resetState();
+            }
+        });
+        pendingAnimation.buildAnim().start();
+    }
+
+    private boolean shouldIgnoreSecondSplitLaunch() {
+        return (!ENABLE_SPLIT_FROM_FULLSCREEN_WITH_KEYBOARD_SHORTCUTS.get()
+                && !ENABLE_SPLIT_FROM_WORKSPACE_TO_WORKSPACE.get())
+                || !mController.isSplitSelectActive();
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/util/SplitWithKeyboardShortcutController.java b/quickstep/src/com/android/quickstep/util/SplitWithKeyboardShortcutController.java
new file mode 100644
index 0000000..24d8326
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/SplitWithKeyboardShortcutController.java
@@ -0,0 +1,166 @@
+/*
+ * 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.quickstep.util;
+
+import static com.android.launcher3.config.FeatureFlags.ENABLE_SPLIT_FROM_FULLSCREEN_WITH_KEYBOARD_SHORTCUTS;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_KEYBOARD_SHORTCUT_SPLIT_LEFT_TOP;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_KEYBOARD_SHORTCUT_SPLIT_RIGHT_BOTTOM;
+import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
+import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
+import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_BOTTOM_OR_RIGHT;
+import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.app.ActivityManager;
+import android.content.Intent;
+import android.graphics.Rect;
+import android.graphics.RectF;
+import android.os.SystemClock;
+import android.os.UserHandle;
+import android.view.View;
+
+import androidx.annotation.BinderThread;
+
+import com.android.launcher3.LauncherSettings;
+import com.android.launcher3.R;
+import com.android.launcher3.anim.PendingAnimation;
+import com.android.launcher3.model.data.WorkspaceItemInfo;
+import com.android.launcher3.uioverrides.QuickstepLauncher;
+import com.android.quickstep.OverviewCommandHelper;
+import com.android.quickstep.OverviewComponentObserver;
+import com.android.quickstep.RecentsAnimationCallbacks;
+import com.android.quickstep.RecentsAnimationController;
+import com.android.quickstep.RecentsAnimationDeviceState;
+import com.android.quickstep.RecentsAnimationTargets;
+import com.android.quickstep.RecentsModel;
+import com.android.quickstep.SystemUiProxy;
+import com.android.quickstep.views.FloatingTaskView;
+import com.android.quickstep.views.RecentsView;
+import com.android.systemui.shared.recents.model.Task;
+import com.android.systemui.shared.system.ActivityManagerWrapper;
+
+/** Transitions app from fullscreen to stage split when triggered from keyboard shortcuts. */
+public class SplitWithKeyboardShortcutController {
+
+    private final QuickstepLauncher mLauncher;
+    private final SplitSelectStateController mController;
+    private final OverviewComponentObserver mOverviewComponentObserver;
+
+    private final int mSplitPlaceholderSize;
+    private final int mSplitPlaceholderInset;
+
+    public SplitWithKeyboardShortcutController(QuickstepLauncher launcher,
+            SplitSelectStateController controller) {
+        mLauncher = launcher;
+        mController = controller;
+        RecentsAnimationDeviceState deviceState = new RecentsAnimationDeviceState(
+                launcher.getApplicationContext());
+        mOverviewComponentObserver = new OverviewComponentObserver(launcher.getApplicationContext(),
+                deviceState);
+
+        mSplitPlaceholderSize = mLauncher.getResources().getDimensionPixelSize(
+                R.dimen.split_placeholder_size);
+        mSplitPlaceholderInset = mLauncher.getResources().getDimensionPixelSize(
+                R.dimen.split_placeholder_inset);
+    }
+
+    @BinderThread
+    public void enterStageSplit(boolean leftOrTop) {
+        if (!ENABLE_SPLIT_FROM_FULLSCREEN_WITH_KEYBOARD_SHORTCUTS.get()) {
+            return;
+        }
+        RecentsAnimationCallbacks callbacks = new RecentsAnimationCallbacks(
+                SystemUiProxy.INSTANCE.get(mLauncher.getApplicationContext()),
+                false /* allowMinimizeSplitScreen */);
+        SplitWithKeyboardShortcutRecentsAnimationListener listener =
+                new SplitWithKeyboardShortcutRecentsAnimationListener(leftOrTop);
+
+        MAIN_EXECUTOR.execute(() -> {
+            callbacks.addListener(listener);
+            UI_HELPER_EXECUTOR.execute(
+                    // Transition from fullscreen app to enter stage split in launcher with
+                    // recents animation.
+                    () -> ActivityManagerWrapper.getInstance().startRecentsActivity(
+                            mOverviewComponentObserver.getOverviewIntent(),
+                            SystemClock.uptimeMillis(), callbacks, null, null));
+        });
+    }
+
+    public void onDestroy() {
+        mOverviewComponentObserver.onDestroy();
+    }
+
+    private class SplitWithKeyboardShortcutRecentsAnimationListener implements
+            RecentsAnimationCallbacks.RecentsAnimationListener {
+
+        private final boolean mLeftOrTop;
+        private final Rect mTempRect = new Rect();
+
+        private SplitWithKeyboardShortcutRecentsAnimationListener(boolean leftOrTop) {
+            mLeftOrTop = leftOrTop;
+        }
+
+        @Override
+        public void onRecentsAnimationStart(RecentsAnimationController controller,
+                RecentsAnimationTargets targets) {
+            ActivityManager.RunningTaskInfo runningTaskInfo =
+                    ActivityManagerWrapper.getInstance().getRunningTask();
+            mController.setInitialTaskSelect(runningTaskInfo,
+                    mLeftOrTop ? STAGE_POSITION_TOP_OR_LEFT : STAGE_POSITION_BOTTOM_OR_RIGHT,
+                    null /* itemInfo */,
+                    mLeftOrTop ? LAUNCHER_KEYBOARD_SHORTCUT_SPLIT_LEFT_TOP
+                            : LAUNCHER_KEYBOARD_SHORTCUT_SPLIT_RIGHT_BOTTOM);
+
+            RecentsView recentsView = mLauncher.getOverviewPanel();
+            recentsView.getPagedOrientationHandler().getInitialSplitPlaceholderBounds(
+                    mSplitPlaceholderSize, mSplitPlaceholderInset, mLauncher.getDeviceProfile(),
+                    mController.getActiveSplitStagePosition(), mTempRect);
+
+            PendingAnimation anim = new PendingAnimation(
+                    SplitAnimationTimings.TABLET_HOME_TO_SPLIT.getDuration());
+            RectF startingTaskRect = new RectF();
+            final FloatingTaskView floatingTaskView = FloatingTaskView.getFloatingTaskView(
+                    mLauncher, mLauncher.getDragLayer(),
+                    controller.screenshotTask(runningTaskInfo.taskId).thumbnail,
+                    null /* icon */, startingTaskRect);
+            RecentsModel.INSTANCE.get(mLauncher.getApplicationContext())
+                    .getIconCache()
+                    .updateIconInBackground(
+                            Task.from(new Task.TaskKey(runningTaskInfo), runningTaskInfo,
+                                    false /* isLocked */),
+                            (task) -> {
+                                if (task.thumbnail != null) {
+                                    floatingTaskView.setIcon(task.thumbnail.thumbnail);
+                                }
+                            });
+            floatingTaskView.setAlpha(1);
+            floatingTaskView.addStagingAnimation(anim, startingTaskRect, mTempRect,
+                    false /* fadeWithThumbnail */, true /* isStagedTask */);
+            mController.setFirstFloatingTaskView(floatingTaskView);
+
+            anim.addListener(new AnimatorListenerAdapter() {
+                @Override
+                public void onAnimationStart(Animator animation) {
+                    controller.finish(true /* toRecents */, null /* onFinishComplete */,
+                            false /* sendUserLeaveHint */);
+                }
+            });
+            anim.buildAnim().start();
+        }
+    };
+}
diff --git a/quickstep/src/com/android/quickstep/util/StaggeredWorkspaceAnim.java b/quickstep/src/com/android/quickstep/util/StaggeredWorkspaceAnim.java
index 32e08ff..cd5edab 100644
--- a/quickstep/src/com/android/quickstep/util/StaggeredWorkspaceAnim.java
+++ b/quickstep/src/com/android/quickstep/util/StaggeredWorkspaceAnim.java
@@ -35,19 +35,21 @@
 
 import androidx.annotation.Nullable;
 
-import com.android.launcher3.BaseQuickstepLauncher;
 import com.android.launcher3.CellLayout;
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Hotseat;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherState;
+import com.android.launcher3.QuickstepTransitionManager;
 import com.android.launcher3.R;
 import com.android.launcher3.ShortcutAndWidgetContainer;
 import com.android.launcher3.Workspace;
 import com.android.launcher3.anim.PendingAnimation;
 import com.android.launcher3.anim.SpringAnimationBuilder;
+import com.android.launcher3.celllayout.CellLayoutLayoutParams;
 import com.android.launcher3.statehandlers.DepthController;
 import com.android.launcher3.states.StateAnimationConfig;
+import com.android.launcher3.uioverrides.QuickstepLauncher;
 import com.android.launcher3.util.DynamicResource;
 import com.android.quickstep.views.RecentsView;
 import com.android.systemui.plugins.ResourceProvider;
@@ -60,10 +62,10 @@
 public class StaggeredWorkspaceAnim {
 
     private static final int APP_CLOSE_ROW_START_DELAY_MS = 10;
-    // How long it takes to fade in each staggered row.
-    private static final int ALPHA_DURATION_MS = 250;
     // Should be used for animations running alongside this StaggeredWorkspaceAnim.
     public static final int DURATION_MS = 250;
+    public static final int DURATION_TASKBAR_MS =
+            QuickstepTransitionManager.TASKBAR_TO_HOME_DURATION;
 
     private static final float MAX_VELOCITY_PX_PER_S = 22f;
 
@@ -91,16 +93,20 @@
         mSpringTransY = transFactor * launcher.getResources()
                 .getDimensionPixelSize(R.dimen.swipe_up_max_workspace_trans_y);
 
+        DeviceProfile grid = launcher.getDeviceProfile();
+        long duration = grid.isTaskbarPresent ? DURATION_TASKBAR_MS : DURATION_MS;
         if (staggerWorkspace) {
-            DeviceProfile grid = launcher.getDeviceProfile();
             Workspace<?> workspace = launcher.getWorkspace();
             Hotseat hotseat = launcher.getHotseat();
 
-            // Hotseat and QSB takes up two additional rows.
-            int totalRows = grid.inv.numRows + (grid.isVerticalBarLayout() ? 0 : 2);
+            boolean staggerHotseat = !grid.isVerticalBarLayout() && !grid.isTaskbarPresent;
+            boolean staggerQsb =
+                    !grid.isVerticalBarLayout() && !(grid.isTaskbarPresent && grid.isQsbInline);
+            int totalRows = grid.inv.numRows + (staggerHotseat ? 1 : 0) + (staggerQsb ? 1 : 0);
 
             // Add animation for all the visible workspace pages
-            workspace.forEachVisiblePage(page -> addAnimationForPage((CellLayout) page, totalRows));
+            workspace.forEachVisiblePage(
+                    page -> addAnimationForPage((CellLayout) page, totalRows, duration));
 
             boolean workspaceClipChildren = workspace.getClipChildren();
             boolean workspaceClipToPadding = workspace.getClipToPadding();
@@ -117,25 +123,35 @@
             if (grid.isVerticalBarLayout()) {
                 for (int i = hotseatIcons.getChildCount() - 1; i >= 0; i--) {
                     View child = hotseatIcons.getChildAt(i);
-                    CellLayout.LayoutParams lp =
-                            ((CellLayout.LayoutParams) child.getLayoutParams());
-                    addStaggeredAnimationForView(child, lp.cellY + 1, totalRows);
+                    CellLayoutLayoutParams lp = ((CellLayoutLayoutParams) child.getLayoutParams());
+                    addStaggeredAnimationForView(child, lp.getCellY() + 1, totalRows, duration);
                 }
             } else {
                 final int hotseatRow, qsbRow;
                 if (grid.isTaskbarPresent) {
-                    qsbRow = grid.inv.numRows + 1;
-                    hotseatRow = grid.inv.numRows + 2;
+                    if (grid.isQsbInline) {
+                        qsbRow = grid.inv.numRows + 1;
+                        hotseatRow = grid.inv.numRows + 1;
+                    } else {
+                        qsbRow = grid.inv.numRows + 1;
+                        hotseatRow = grid.inv.numRows + 2;
+                    }
                 } else {
                     hotseatRow = grid.inv.numRows + 1;
                     qsbRow = grid.inv.numRows + 2;
                 }
-                for (int i = hotseatIcons.getChildCount() - 1; i >= 0; i--) {
-                    View child = hotseatIcons.getChildAt(i);
-                    addStaggeredAnimationForView(child, hotseatRow, totalRows);
-                }
 
-                addStaggeredAnimationForView(hotseat.getQsb(), qsbRow, totalRows);
+                // Do not stagger hotseat as a whole when taskbar is present, and stagger QSB only
+                // if it's not inline.
+                if (staggerHotseat) {
+                    for (int i = hotseatIcons.getChildCount() - 1; i >= 0; i--) {
+                        View child = hotseatIcons.getChildAt(i);
+                        addStaggeredAnimationForView(child, hotseatRow, totalRows, duration);
+                    }
+                }
+                if (staggerQsb) {
+                    addStaggeredAnimationForView(hotseat.getQsb(), qsbRow, totalRows, duration);
+                }
             }
 
             mAnimators.addListener(new AnimatorListenerAdapter() {
@@ -153,19 +169,19 @@
         mAnimators.addListener(forEndCallback(launcher::resumeExpensiveViewUpdates));
 
         if (animateOverviewScrim) {
-            PendingAnimation pendingAnimation = new PendingAnimation(DURATION_MS);
+            PendingAnimation pendingAnimation = new PendingAnimation(duration);
             launcher.getWorkspace().getStateTransitionAnimation()
                     .setScrim(pendingAnimation, NORMAL, new StateAnimationConfig());
             mAnimators.play(pendingAnimation.buildAnim());
         }
 
-        addDepthAnimationForState(launcher, NORMAL, DURATION_MS);
+        addDepthAnimationForState(launcher, NORMAL, duration);
 
         mAnimators.play(launcher.getRootView().getSysUiScrim().createSysuiMultiplierAnim(0f, 1f)
-                .setDuration(DURATION_MS));
+                .setDuration(duration));
     }
 
-    private void addAnimationForPage(CellLayout page, int totalRows) {
+    private void addAnimationForPage(CellLayout page, int totalRows, long duration) {
         ShortcutAndWidgetContainer itemsContainer = page.getShortcutsAndWidgets();
 
         boolean pageClipChildren = page.getClipChildren();
@@ -177,8 +193,8 @@
         // Set up springs on workspace items.
         for (int i = itemsContainer.getChildCount() - 1; i >= 0; i--) {
             View child = itemsContainer.getChildAt(i);
-            CellLayout.LayoutParams lp = ((CellLayout.LayoutParams) child.getLayoutParams());
-            addStaggeredAnimationForView(child, lp.cellY + lp.cellVSpan, totalRows);
+            CellLayoutLayoutParams lp = ((CellLayoutLayoutParams) child.getLayoutParams());
+            addStaggeredAnimationForView(child, lp.getCellY() + lp.cellVSpan, totalRows, duration);
         }
 
         mAnimators.addListener(new AnimatorListenerAdapter() {
@@ -231,8 +247,9 @@
      * @param v A view on the workspace.
      * @param row The bottom-most row that contains the view.
      * @param totalRows Total number of rows.
+     * @param duration duration of the animation
      */
-    private void addStaggeredAnimationForView(View v, int row, int totalRows) {
+    private void addStaggeredAnimationForView(View v, int row, int totalRows, long duration) {
         if (mIgnoredView != null && mIgnoredView == v) return;
         // Invert the rows, because we stagger starting from the bottom of the screen.
         int invertedRow = totalRows - row;
@@ -266,7 +283,7 @@
         v.setAlpha(0);
         ObjectAnimator alpha = ObjectAnimator.ofFloat(v, View.ALPHA, 0f, 1f);
         alpha.setInterpolator(LINEAR);
-        alpha.setDuration(ALPHA_DURATION_MS);
+        alpha.setDuration(duration);
         alpha.setStartDelay(startDelay);
         alpha.addListener(new AnimatorListenerAdapter() {
             @Override
@@ -278,11 +295,11 @@
     }
 
     private void addDepthAnimationForState(Launcher launcher, LauncherState state, long duration) {
-        if (!(launcher instanceof BaseQuickstepLauncher)) {
+        if (!(launcher instanceof QuickstepLauncher)) {
             return;
         }
         PendingAnimation builder = new PendingAnimation(duration);
-        DepthController depthController = ((BaseQuickstepLauncher) launcher).getDepthController();
+        DepthController depthController = ((QuickstepLauncher) launcher).getDepthController();
         depthController.setStateWithAnimation(state, new StateAnimationConfig(), builder);
         mAnimators.play(builder.buildAnim());
     }
diff --git a/quickstep/src/com/android/quickstep/util/SurfaceTransaction.java b/quickstep/src/com/android/quickstep/util/SurfaceTransaction.java
new file mode 100644
index 0000000..441f88d
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/SurfaceTransaction.java
@@ -0,0 +1,170 @@
+/*
+ * 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.quickstep.util;
+
+import android.graphics.Matrix;
+import android.graphics.Rect;
+import android.view.SurfaceControl;
+import android.view.SurfaceControl.Transaction;
+
+/**
+ * Helper class for building a {@link Transaction}.
+ */
+public class SurfaceTransaction {
+
+    private final Transaction mTransaction = new Transaction();
+    private final float[] mTmpValues = new float[9];
+
+    /**
+     * Creates a new builder for the provided surface
+     */
+    public SurfaceProperties forSurface(SurfaceControl surface) {
+        return surface.isValid() ? new SurfaceProperties(surface) : new MockProperties();
+    }
+
+    /**
+     * Returns the final transaction
+     */
+    public Transaction getTransaction() {
+        return mTransaction;
+    }
+
+    /**
+     * Utility class to update surface params in a transaction
+     */
+    public class SurfaceProperties {
+
+        private final SurfaceControl mSurface;
+
+        SurfaceProperties(SurfaceControl surface) {
+            mSurface = surface;
+        }
+
+        /**
+         * @param alpha The alpha value to apply to the surface.
+         * @return this Builder
+         */
+        public SurfaceProperties setAlpha(float alpha) {
+            mTransaction.setAlpha(mSurface, alpha);
+            return this;
+        }
+
+        /**
+         * @param matrix The matrix to apply to the surface.
+         * @return this Builder
+         */
+        public SurfaceProperties setMatrix(Matrix matrix) {
+            mTransaction.setMatrix(mSurface, matrix, mTmpValues);
+            return this;
+        }
+
+        /**
+         * @param windowCrop The window crop to apply to the surface.
+         * @return this Builder
+         */
+        public SurfaceProperties setWindowCrop(Rect windowCrop) {
+            mTransaction.setWindowCrop(mSurface, windowCrop);
+            return this;
+        }
+
+        /**
+         * @param relativeLayer The relative layer.
+         * @return this Builder
+         */
+        public SurfaceProperties setLayer(int relativeLayer) {
+            mTransaction.setLayer(mSurface, relativeLayer);
+            return this;
+        }
+
+        /**
+         * @param radius the Radius for rounded corners to apply to the surface.
+         * @return this Builder
+         */
+        public SurfaceProperties setCornerRadius(float radius) {
+            mTransaction.setCornerRadius(mSurface, radius);
+            return this;
+        }
+
+        /**
+         * @param radius the Radius for the shadows to apply to the surface.
+         * @return this Builder
+         */
+        public SurfaceProperties setShadowRadius(float radius) {
+            mTransaction.setShadowRadius(mSurface, radius);
+            return this;
+        }
+
+        /**
+         * Requests to show the given surface.
+         * @return this Builder
+         */
+        public SurfaceProperties setShow() {
+            mTransaction.show(mSurface);
+            return this;
+        }
+    }
+
+    /**
+     * Extension of {@link SurfaceProperties} which just stores all the values locally
+     */
+    public class MockProperties extends SurfaceProperties {
+
+        public float alpha = -1;
+        public Matrix matrix = null;
+        public Rect windowCrop = null;
+        public float cornerRadius = 0;
+        public float shadowRadius = 0;
+
+        protected MockProperties() {
+            super(null);
+        }
+
+        @Override
+        public SurfaceProperties setAlpha(float alpha) {
+            this.alpha = alpha;
+            return this;
+        }
+
+        @Override
+        public SurfaceProperties setMatrix(Matrix matrix) {
+            this.matrix = matrix;
+            return this;
+        }
+
+        @Override
+        public SurfaceProperties setWindowCrop(Rect windowCrop) {
+            this.windowCrop = windowCrop;
+            return this;
+        }
+
+        @Override
+        public SurfaceProperties setLayer(int relativeLayer) {
+            return this;
+        }
+
+        @Override
+        public SurfaceProperties setCornerRadius(float radius) {
+            this.cornerRadius = radius;
+            return this;
+        }
+
+        @Override
+        public SurfaceProperties setShadowRadius(float radius) {
+            this.shadowRadius = radius;
+            return this;
+        }
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/util/SurfaceTransactionApplier.java b/quickstep/src/com/android/quickstep/util/SurfaceTransactionApplier.java
index 1200208..bb028a7 100644
--- a/quickstep/src/com/android/quickstep/util/SurfaceTransactionApplier.java
+++ b/quickstep/src/com/android/quickstep/util/SurfaceTransactionApplier.java
@@ -22,13 +22,10 @@
 import android.view.SurfaceControl;
 import android.view.SurfaceControl.Transaction;
 import android.view.View;
+import android.view.View.OnAttachStateChangeListener;
 import android.view.ViewRootImpl;
 
 import com.android.quickstep.RemoteAnimationTargets.ReleaseCheck;
-import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams;
-
-import java.util.function.Consumer;
-
 
 /**
  * Helper class to apply surface transactions in sync with RenderThread similar to
@@ -40,22 +37,47 @@
 
     private static final int MSG_UPDATE_SEQUENCE_NUMBER = 0;
 
-    private final SurfaceControl mBarrierSurfaceControl;
-    private final ViewRootImpl mTargetViewRootImpl;
     private final Handler mApplyHandler;
 
+    private boolean mInitialized;
+    private SurfaceControl mBarrierSurfaceControl;
+    private ViewRootImpl mTargetViewRootImpl;
+
     private int mLastSequenceNumber = 0;
 
     /**
      * @param targetView The view in the surface that acts as synchronization anchor.
      */
     public SurfaceTransactionApplier(View targetView) {
-        mTargetViewRootImpl = targetView.getViewRootImpl();
-        mBarrierSurfaceControl = mTargetViewRootImpl.getSurfaceControl();
+        if (targetView.isAttachedToWindow()) {
+            initialize(targetView);
+        } else {
+            mInitialized = false;
+            targetView.addOnAttachStateChangeListener(new OnAttachStateChangeListener() {
+                @Override
+                public void onViewAttachedToWindow(View v) {
+                    if (!mInitialized) {
+                        targetView.removeOnAttachStateChangeListener(this);
+                        initialize(targetView);
+                    }
+                }
+
+                @Override
+                public void onViewDetachedFromWindow(View v) {
+                    // Do nothing
+                }
+            });
+        }
         mApplyHandler = new Handler(this::onApplyMessage);
         setCanRelease(true);
     }
 
+    private void initialize(View view) {
+        mTargetViewRootImpl = view.getViewRootImpl();
+        mBarrierSurfaceControl = mTargetViewRootImpl.getSurfaceControl();
+        mInitialized = true;
+    }
+
     protected boolean onApplyMessage(Message msg) {
         if (msg.what == MSG_UPDATE_SEQUENCE_NUMBER) {
             setCanRelease(msg.arg1 == mLastSequenceNumber);
@@ -70,18 +92,16 @@
      * @param params The surface parameters to apply. DO NOT MODIFY the list after passing into
      *               this method to avoid synchronization issues.
      */
-    public void scheduleApply(final SurfaceParams... params) {
+    public void scheduleApply(SurfaceTransaction params) {
+        if (!mInitialized) {
+            params.getTransaction().apply();
+            return;
+        }
         View view = mTargetViewRootImpl.getView();
         if (view == null) {
             return;
         }
-        Transaction t = new Transaction();
-        for (int i = params.length - 1; i >= 0; i--) {
-            SurfaceParams surfaceParams = params[i];
-            if (surfaceParams.surface.isValid()) {
-                surfaceParams.applyTo(t);
-            }
-        }
+        Transaction t = params.getTransaction();
 
         mLastSequenceNumber++;
         final int toApplySeqNo = mLastSequenceNumber;
@@ -100,33 +120,4 @@
         // Make sure a frame gets scheduled.
         view.invalidate();
     }
-
-    /**
-     * Creates an instance of SyncRtSurfaceTransactionApplier, deferring until the target view is
-     * attached if necessary.
-     */
-    public static void create(
-            final View targetView, final Consumer<SurfaceTransactionApplier> callback) {
-        if (targetView == null) {
-            // No target view, no applier
-            callback.accept(null);
-        } else if (targetView.isAttachedToWindow()) {
-            // Already attached, we're good to go
-            callback.accept(new SurfaceTransactionApplier(targetView));
-        } else {
-            // Haven't been attached before we can get the view root
-            targetView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
-                @Override
-                public void onViewAttachedToWindow(View v) {
-                    targetView.removeOnAttachStateChangeListener(this);
-                    callback.accept(new SurfaceTransactionApplier(targetView));
-                }
-
-                @Override
-                public void onViewDetachedFromWindow(View v) {
-                    // Do nothing
-                }
-            });
-        }
-    }
 }
diff --git a/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java b/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java
index b222f51..1112f4d 100644
--- a/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java
+++ b/quickstep/src/com/android/quickstep/util/SwipePipToHomeAnimator.java
@@ -22,27 +22,26 @@
 import android.animation.RectEvaluator;
 import android.content.ComponentName;
 import android.content.Context;
-import android.graphics.Color;
+import android.content.pm.ActivityInfo;
 import android.graphics.Matrix;
 import android.graphics.Rect;
 import android.graphics.RectF;
+import android.os.SystemProperties;
 import android.util.Log;
 import android.view.Surface;
 import android.view.SurfaceControl;
-import android.view.SurfaceSession;
 import android.view.View;
 import android.window.PictureInPictureSurfaceTransaction;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
-import com.android.launcher3.Utilities;
 import com.android.launcher3.anim.AnimationSuccessListener;
-import com.android.launcher3.anim.Interpolators;
-import com.android.launcher3.util.Themes;
+import com.android.launcher3.icons.IconProvider;
 import com.android.quickstep.TaskAnimationManager;
 import com.android.systemui.shared.pip.PipSurfaceTransactionHelper;
 import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
+import com.android.wm.shell.pip.PipContentOverlay;
 
 /**
  * Subclass of {@link RectFSpringAnim} that animates an Activity to PiP (picture-in-picture) window
@@ -54,7 +53,7 @@
     private static final float END_PROGRESS = 1.0f;
 
     private final int mTaskId;
-    private final ComponentName mComponentName;
+    private final ActivityInfo mActivityInfo;
     private final SurfaceControl mLeash;
     private final Rect mSourceRectHint = new Rect();
     private final Rect mAppBounds = new Rect();
@@ -65,7 +64,10 @@
     private final Rect mDestinationBounds = new Rect();
     private final PipSurfaceTransactionHelper mSurfaceTransactionHelper;
 
-    /** for calculating transform in {@link #onAnimationUpdate(AppCloseConfig, RectF, float)} */
+    /**
+     * For calculating transform in
+     * {@link #onAnimationUpdate(SurfaceControl.Transaction, RectF, float)}
+     */
     private final RectEvaluator mInsetsEvaluator = new RectEvaluator(new Rect());
     private final Rect mSourceHintRectInsets;
     private final Rect mSourceInsets = new Rect();
@@ -81,16 +83,18 @@
     private boolean mHasAnimationEnded;
 
     /**
-     * An overlay used to mask changes in content when entering PiP for apps that aren't seamless.
+     * Wrapper of {@link SurfaceControl} that is used when entering PiP without valid
+     * source rect hint.
      */
     @Nullable
-    private SurfaceControl mContentOverlay;
+    private PipContentOverlay mPipContentOverlay;
 
     /**
      * @param context {@link Context} provides Launcher resources
      * @param taskId Task id associated with this animator, see also {@link #getTaskId()}
-     * @param componentName Component associated with this animator,
+     * @param activityInfo {@link ActivityInfo} associated with this animator,
      *                      see also {@link #getComponentName()}
+     * @param appIconSizePx The size in pixel for the app icon in content overlay
      * @param leash {@link SurfaceControl} this animator operates on
      * @param sourceRectHint See the definition in {@link android.app.PictureInPictureParams}
      * @param appBounds Bounds of the application, sourceRectHint is based on this bounds
@@ -107,7 +111,8 @@
      */
     private SwipePipToHomeAnimator(@NonNull Context context,
             int taskId,
-            @NonNull ComponentName componentName,
+            @NonNull ActivityInfo activityInfo,
+            int appIconSizePx,
             @NonNull SurfaceControl leash,
             @Nullable Rect sourceRectHint,
             @NonNull Rect appBounds,
@@ -119,9 +124,10 @@
             int cornerRadius,
             int shadowRadius,
             @NonNull View view) {
-        super(startBounds, new RectF(destinationBoundsTransformed), context, null);
+        super(new DefaultSpringConfig(context, null, startBounds,
+                new RectF(destinationBoundsTransformed)));
         mTaskId = taskId;
-        mComponentName = componentName;
+        mActivityInfo = activityInfo;
         mLeash = leash;
         mAppBounds.set(appBounds);
         mHomeToWindowPositionMap.set(homeToWindowPositionMap);
@@ -144,32 +150,19 @@
             mSourceRectHint.setEmpty();
             mSourceHintRectInsets = null;
 
-            // Create a new overlay layer
-            SurfaceSession session = new SurfaceSession();
-            mContentOverlay = new SurfaceControl.Builder(session)
-                    .setCallsite("SwipePipToHomeAnimator")
-                    .setName("PipContentOverlay")
-                    .setColorLayer()
-                    .build();
-            SurfaceControl.Transaction t = new SurfaceControl.Transaction();
-            t.show(mContentOverlay);
-            t.setLayer(mContentOverlay, Integer.MAX_VALUE);
-            int color = Themes.getColorBackground(view.getContext());
-            float[] bgColor = new float[] {Color.red(color) / 255f, Color.green(color) / 255f,
-                    Color.blue(color) / 255f};
-            t.setColor(mContentOverlay, bgColor);
-            t.setAlpha(mContentOverlay, 0f);
-            t.reparent(mContentOverlay, mLeash);
-            t.apply();
-
-            addOnUpdateListener((currentRect, progress) -> {
-                float alpha = progress < 0.5f
-                        ? 0
-                        : Utilities.mapToRange(Math.min(progress, 1f), 0.5f, 1f,
-                                0f, 1f, Interpolators.FAST_OUT_SLOW_IN);
-                t.setAlpha(mContentOverlay, alpha);
-                t.apply();
-            });
+            // Create a new overlay layer. We do not call detach on this instance, it's propagated
+            // to other classes like PipTaskOrganizer / RecentsAnimationController to complete
+            // the cleanup.
+            if (SystemProperties.getBoolean(
+                    "persist.wm.debug.enable_pip_app_icon_overlay", true)) {
+                mPipContentOverlay = new PipContentOverlay.PipAppIconOverlay(view.getContext(),
+                        mAppBounds, new IconProvider(context).getIcon(mActivityInfo),
+                        appIconSizePx);
+            }  else {
+                mPipContentOverlay = new PipContentOverlay.PipColorOverlay(view.getContext());
+            }
+            final SurfaceControl.Transaction tx = new SurfaceControl.Transaction();
+            mPipContentOverlay.attach(tx, mLeash);
         } else {
             mSourceRectHint.set(sourceRectHint);
             mSourceHintRectInsets = new Rect(sourceRectHint.left - appBounds.left,
@@ -218,6 +211,9 @@
     private PictureInPictureSurfaceTransaction onAnimationUpdate(SurfaceControl.Transaction tx,
             RectF currentRect, float progress) {
         currentRect.round(mCurrentBounds);
+        if (mPipContentOverlay != null) {
+            mPipContentOverlay.onAnimationUpdate(tx, mCurrentBounds, progress);
+        }
         final PictureInPictureSurfaceTransaction op;
         if (mSourceHintRectInsets == null) {
             // no source rect hint been set, directly scale the window down
@@ -253,7 +249,7 @@
                     rotatedPosition.degree, rotatedPosition.positionX, rotatedPosition.positionY);
         } else {
             return mSurfaceTransactionHelper.scaleAndCrop(tx, mLeash, mSourceRectHint, mAppBounds,
-                    bounds, insets);
+                    bounds, insets, progress);
         }
     }
 
@@ -262,7 +258,7 @@
     }
 
     public ComponentName getComponentName() {
-        return mComponentName;
+        return mActivityInfo.getComponentName();
     }
 
     public Rect getDestinationBounds() {
@@ -271,7 +267,7 @@
 
     @Nullable
     public SurfaceControl getContentOverlay() {
-        return mContentOverlay;
+        return mPipContentOverlay == null ? null : mPipContentOverlay.getLeash();
     }
 
     /** @return {@link PictureInPictureSurfaceTransaction} for the final leash transaction. */
@@ -279,7 +275,10 @@
         // get the final leash operations but do not apply to the leash.
         final SurfaceControl.Transaction tx =
                 PipSurfaceTransactionHelper.newSurfaceControlTransaction();
-        return onAnimationUpdate(tx, new RectF(mDestinationBounds), END_PROGRESS);
+        final PictureInPictureSurfaceTransaction pipTx =
+                onAnimationUpdate(tx, new RectF(mDestinationBounds), END_PROGRESS);
+        pipTx.setShouldDisableCanAffectSystemUiFlags(true);
+        return pipTx;
     }
 
     private RotatedPosition getRotatedPosition(float progress) {
@@ -321,7 +320,8 @@
     public static class Builder {
         private Context mContext;
         private int mTaskId;
-        private ComponentName mComponentName;
+        private ActivityInfo mActivityInfo;
+        private int mAppIconSizePx;
         private SurfaceControl mLeash;
         private Rect mSourceRectHint;
         private Rect mDisplayCutoutInsets;
@@ -345,8 +345,13 @@
             return this;
         }
 
-        public Builder setComponentName(ComponentName componentName) {
-            mComponentName = componentName;
+        public Builder setActivityInfo(ActivityInfo activityInfo) {
+            mActivityInfo = activityInfo;
+            return this;
+        }
+
+        public Builder setAppIconSizePx(int appIconSizePx) {
+            mAppIconSizePx = appIconSizePx;
             return this;
         }
 
@@ -430,8 +435,8 @@
                     mAppBounds.inset(mDisplayCutoutInsets);
                 }
             }
-            return new SwipePipToHomeAnimator(mContext, mTaskId, mComponentName, mLeash,
-                    mSourceRectHint, mAppBounds,
+            return new SwipePipToHomeAnimator(mContext, mTaskId, mActivityInfo, mAppIconSizePx,
+                    mLeash, mSourceRectHint, mAppBounds,
                     mHomeToWindowPositionMap, mStartBounds, mDestinationBounds,
                     mFromRotation, mDestinationBoundsTransformed,
                     mCornerRadius, mShadowRadius, mAttachedView);
diff --git a/quickstep/src/com/android/quickstep/util/SystemWindowManagerProxy.java b/quickstep/src/com/android/quickstep/util/SystemWindowManagerProxy.java
index 9bb3d56..9808b28 100644
--- a/quickstep/src/com/android/quickstep/util/SystemWindowManagerProxy.java
+++ b/quickstep/src/com/android/quickstep/util/SystemWindowManagerProxy.java
@@ -15,12 +15,22 @@
  */
 package com.android.quickstep.util;
 
-import android.content.Context;
-import android.hardware.display.DisplayManager;
-import android.view.Display;
+import static android.view.Display.DEFAULT_DISPLAY;
 
+import android.content.Context;
+import android.util.ArrayMap;
+import android.view.Surface;
+import android.view.WindowManager;
+import android.view.WindowMetrics;
+
+import com.android.internal.policy.SystemBarUtils;
+import com.android.launcher3.logging.FileLog;
+import com.android.launcher3.util.WindowBounds;
+import com.android.launcher3.util.window.CachedDisplayInfo;
 import com.android.launcher3.util.window.WindowManagerProxy;
 
+import java.util.Set;
+
 /**
  * Extension of {@link WindowManagerProxy} with some assumption for the default system Launcher
  */
@@ -31,23 +41,31 @@
     }
 
     @Override
-    protected String getDisplayId(Display display) {
-        return display.getUniqueId();
+    public int getRotation(Context displayInfoContext) {
+        return displayInfoContext.getResources().getConfiguration().windowConfiguration
+                .getRotation();
     }
 
     @Override
-    public boolean isInternalDisplay(Display display) {
-        return display.getType() == Display.TYPE_INTERNAL;
+    protected int getStatusBarHeight(Context context, boolean isPortrait, int statusBarInset) {
+        // See b/264656380, calculate the status bar height manually as the inset in the system
+        // server might not be updated by this point yet causing extra DeviceProfile updates
+        return SystemBarUtils.getStatusBarHeight(context);
     }
 
     @Override
-    public int getRotation(Context context) {
-        return context.getResources().getConfiguration().windowConfiguration.getRotation();
-    }
-
-    @Override
-    protected Display[] getDisplays(Context context) {
-        return context.getSystemService(DisplayManager.class).getDisplays(
-                DisplayManager.DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED);
+    public ArrayMap<CachedDisplayInfo, WindowBounds[]> estimateInternalDisplayBounds(
+            Context displayInfoContext) {
+        ArrayMap<CachedDisplayInfo, WindowBounds[]> result = new ArrayMap<>();
+        WindowManager windowManager = displayInfoContext.getSystemService(WindowManager.class);
+        Set<WindowMetrics> possibleMaximumWindowMetrics =
+                windowManager.getPossibleMaximumWindowMetrics(DEFAULT_DISPLAY);
+        FileLog.d("b/283944974", "possibleMaximumWindowMetrics: " + possibleMaximumWindowMetrics);
+        for (WindowMetrics windowMetrics : possibleMaximumWindowMetrics) {
+            CachedDisplayInfo info = getDisplayInfo(windowMetrics, Surface.ROTATION_0);
+            WindowBounds[] bounds = estimateWindowBounds(displayInfoContext, info);
+            result.put(info, bounds);
+        }
+        return result;
     }
 }
diff --git a/quickstep/src/com/android/quickstep/util/TabletHomeToSplitTimings.java b/quickstep/src/com/android/quickstep/util/TabletHomeToSplitTimings.java
new file mode 100644
index 0000000..bf8612a
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/TabletHomeToSplitTimings.java
@@ -0,0 +1,44 @@
+/*
+ * 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.quickstep.util;
+
+import static com.android.launcher3.anim.Interpolators.LINEAR;
+
+import android.view.animation.Interpolator;
+
+/**
+ * Timings for the Home > OverviewSplitSelect animation on tablets.
+ */
+public class TabletHomeToSplitTimings
+        extends TabletOverviewToSplitTimings implements SplitAnimationTimings {
+    @Override
+    public Interpolator getStagedRectXInterpolator() { return LINEAR; }
+    @Override
+    public Interpolator getStagedRectScaleXInterpolator() { return LINEAR; }
+    @Override
+    public Interpolator getStagedRectScaleYInterpolator() { return LINEAR; }
+
+    public int getScrimFadeInStart() { return 0; }
+    public int getScrimFadeInEnd() { return 167; }
+
+    public float getScrimFadeInStartOffset() {
+        return (float) getScrimFadeInStart() / getDuration();
+    }
+    public float getScrimFadeInEndOffset() {
+        return (float) getScrimFadeInEnd() / getDuration();
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/util/TabletOverviewToSplitTimings.java b/quickstep/src/com/android/quickstep/util/TabletOverviewToSplitTimings.java
new file mode 100644
index 0000000..cbf46bf
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/TabletOverviewToSplitTimings.java
@@ -0,0 +1,43 @@
+/*
+ * 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.quickstep.util;
+
+import static com.android.launcher3.anim.Interpolators.DEACCEL_2;
+
+import android.view.animation.Interpolator;
+
+/**
+ * Timings for the Overview > OverviewSplitSelect animation on tablets.
+ */
+public class TabletOverviewToSplitTimings
+        extends OverviewToSplitTimings implements SplitAnimationTimings {
+    public int getPlaceholderFadeInStart() { return 0; }
+    public int getPlaceholderFadeInEnd() { return 133; }
+    public int getPlaceholderIconFadeInStart() { return 167; }
+    public int getPlaceholderIconFadeInEnd() { return 250; }
+    public int getStagedRectSlideStart() { return 0; }
+    public int getStagedRectSlideEnd() { return 417; }
+    public int getGridSlideStart() { return 67; }
+    public int getGridSlideStagger() { return 16; }
+    public int getGridSlideDuration() { return 500; }
+
+    public int getDuration() { return TABLET_ENTER_DURATION; }
+    public Interpolator getStagedRectXInterpolator() { return DEACCEL_2; }
+    public Interpolator getStagedRectYInterpolator() { return DEACCEL_2; }
+    public Interpolator getStagedRectScaleXInterpolator() { return DEACCEL_2; }
+    public Interpolator getStagedRectScaleYInterpolator() { return DEACCEL_2; }
+}
diff --git a/quickstep/src/com/android/quickstep/util/TabletSplitToConfirmTimings.java b/quickstep/src/com/android/quickstep/util/TabletSplitToConfirmTimings.java
new file mode 100644
index 0000000..3756b4a
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/TabletSplitToConfirmTimings.java
@@ -0,0 +1,32 @@
+/*
+ * 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.quickstep.util;
+
+/**
+ * Timings for the OverviewSplitSelect > confirmed animation on tablets.
+ */
+public class TabletSplitToConfirmTimings
+        extends SplitToConfirmTimings implements SplitAnimationTimings {
+    public int getPlaceholderFadeInStart() { return 0; }
+    public int getPlaceholderFadeInEnd() { return 133; }
+    public int getPlaceholderIconFadeInStart() { return 167; }
+    public int getPlaceholderIconFadeInEnd() { return 250; }
+    public int getStagedRectSlideStart() { return 0; }
+    public int getStagedRectSlideEnd() { return 500; }
+
+    public int getDuration() { return TABLET_CONFIRM_DURATION; }
+}
diff --git a/quickstep/src/com/android/quickstep/util/TaskRemovedDuringLaunchListener.java b/quickstep/src/com/android/quickstep/util/TaskRemovedDuringLaunchListener.java
new file mode 100644
index 0000000..c22e0bc
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/TaskRemovedDuringLaunchListener.java
@@ -0,0 +1,105 @@
+/*
+ * 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.quickstep.util;
+
+import static android.app.ActivityTaskManager.INVALID_TASK_ID;
+
+import android.app.Activity;
+
+import androidx.annotation.NonNull;
+
+import com.android.launcher3.util.ActivityLifecycleCallbacksAdapter;
+import com.android.quickstep.RecentsModel;
+
+/**
+ * This class tracks the failure of a task launch through the TaskView.launchTask() call, in an
+ * edge case in which starting a new task may initially succeed (startActivity returns true), but
+ * the launch ultimately fails if the activity finishes while it is resuming.
+ *
+ * There are two signals this class checks, the launcher lifecycle and the transition completion.
+ * If we hit either of those signals and the task is no longer valid, then the registered failure
+ * callback will be notified.
+ */
+public class TaskRemovedDuringLaunchListener implements ActivityLifecycleCallbacksAdapter {
+
+    private Activity mActivity;
+    private int mLaunchedTaskId = INVALID_TASK_ID;
+    private Runnable mTaskLaunchFailedCallback = null;
+
+    /**
+     * Registers a failure listener callback if it detects a scenario in which an app launch
+     * failed before the transition finished.
+     */
+    public void register(Activity activity, int launchedTaskId,
+            @NonNull Runnable taskLaunchFailedCallback) {
+        activity.registerActivityLifecycleCallbacks(this);
+        mActivity = activity;
+        mLaunchedTaskId = launchedTaskId;
+        mTaskLaunchFailedCallback = taskLaunchFailedCallback;
+    }
+
+    /**
+     * Unregisters the failure listener.
+     */
+    private void unregister() {
+        mActivity.unregisterActivityLifecycleCallbacks(this);
+        mActivity = null;
+        mLaunchedTaskId = INVALID_TASK_ID;
+        mTaskLaunchFailedCallback = null;
+    }
+
+    /**
+     * Called when the transition finishes.
+     */
+    public void onTransitionFinished() {
+        // The transition finished and Launcher was not stopped, check if the launch failed
+        checkTaskLaunchFailed();
+    }
+
+    @Override
+    public void onActivityStopped(Activity activity) {
+        // The normal task launch case, Launcher stops and updates its state correctly
+        unregister();
+    }
+
+    @Override
+    public void onActivityResumed(Activity activity) {
+        // The transition hasn't finished but Launcher was resumed, check if the launch failed
+        checkTaskLaunchFailed();
+    }
+
+    @Override
+    public void onActivityDestroyed(Activity activity) {
+        // If we somehow don't get any of the above signals, then just unregister this listener
+        unregister();
+    }
+
+    private void checkTaskLaunchFailed() {
+        if (mLaunchedTaskId != INVALID_TASK_ID) {
+            final int launchedTaskId = mLaunchedTaskId;
+            final Runnable taskLaunchFailedCallback = mTaskLaunchFailedCallback;
+            RecentsModel.INSTANCE.getNoCreate().isTaskRemoved(mLaunchedTaskId, (taskRemoved) -> {
+                if (taskRemoved) {
+                    ActiveGestureLog.INSTANCE.addLog("Launch failed, task (id=" + launchedTaskId
+                            + ") finished mid transition");
+                    taskLaunchFailedCallback.run();
+                }
+            }, (task) -> true /* filter */);
+            unregister();
+        }
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/util/TaskViewSimulator.java b/quickstep/src/com/android/quickstep/util/TaskViewSimulator.java
index 5212755..f8893bd 100644
--- a/quickstep/src/com/android/quickstep/util/TaskViewSimulator.java
+++ b/quickstep/src/com/android/quickstep/util/TaskViewSimulator.java
@@ -15,16 +15,17 @@
  */
 package com.android.quickstep.util;
 
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
+
 import static com.android.launcher3.states.RotationHelper.deltaRotation;
 import static com.android.launcher3.touch.PagedOrientationHandler.MATRIX_POST_TRANSLATE;
 import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_BOTTOM_OR_RIGHT;
 import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT;
 import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_UNDEFINED;
 import static com.android.launcher3.util.SplitConfigurationOptions.StagePosition;
+import static com.android.quickstep.TaskAnimationManager.ENABLE_SHELL_TRANSITIONS;
 import static com.android.quickstep.util.RecentsOrientedState.postDisplayRotation;
 import static com.android.quickstep.util.RecentsOrientedState.preDisplayRotation;
-import static com.android.systemui.shared.system.WindowManagerWrapper.WINDOWING_MODE_FULLSCREEN;
 
 import android.animation.TimeInterpolator;
 import android.content.Context;
@@ -34,22 +35,22 @@
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.util.Log;
+import android.view.RemoteAnimationTarget;
 
 import androidx.annotation.NonNull;
 
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.anim.PendingAnimation;
-import com.android.launcher3.util.SplitConfigurationOptions.StagedSplitBounds;
+import com.android.launcher3.util.SplitConfigurationOptions.SplitBounds;
 import com.android.launcher3.util.TraceHelper;
-import com.android.quickstep.AnimatedFloat;
 import com.android.quickstep.BaseActivityInterface;
 import com.android.quickstep.TaskAnimationManager;
-import com.android.quickstep.views.TaskThumbnailView.PreviewPositionHelper;
+import com.android.quickstep.util.SurfaceTransaction.SurfaceProperties;
 import com.android.quickstep.views.TaskView.FullscreenDrawParams;
 import com.android.systemui.shared.recents.model.ThumbnailData;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
-import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams.Builder;
+import com.android.systemui.shared.recents.utilities.PreviewPositionHelper;
 
 /**
  * A utility class which emulates the layout behavior of TaskView and RecentsView
@@ -100,9 +101,10 @@
     // Cached calculations
     private boolean mLayoutValid = false;
     private int mOrientationStateId;
-    private StagedSplitBounds mStagedSplitBounds;
-    private boolean mDrawsBelowRecents;
+    private SplitBounds mSplitBounds;
+    private Boolean mDrawsBelowRecents = null;
     private boolean mIsGridTask;
+    private boolean mIsDesktopTask;
     private int mTaskRectTranslationX;
     private int mTaskRectTranslationY;
 
@@ -144,21 +146,29 @@
         if (mDp == null) {
             return 1;
         }
+
+        if (mIsDesktopTask) {
+            mTaskRect.set(mThumbnailPosition);
+            mPivot.set(mTaskRect.centerX(), mTaskRect.centerY());
+            return 1;
+        }
+
         if (mIsGridTask) {
             mSizeStrategy.calculateGridTaskSize(mContext, mDp, mTaskRect,
                     mOrientationState.getOrientationHandler());
         } else {
-            mSizeStrategy.calculateTaskSize(mContext, mDp, mTaskRect);
+            mSizeStrategy.calculateTaskSize(mContext, mDp, mTaskRect,
+                    mOrientationState.getOrientationHandler());
         }
 
         Rect fullTaskSize;
-        if (mStagedSplitBounds != null) {
+        if (mSplitBounds != null) {
             // The task rect changes according to the staged split task sizes, but recents
             // fullscreen scale and pivot remains the same since the task fits into the existing
             // sized task space bounds
             fullTaskSize = new Rect(mTaskRect);
             mOrientationState.getOrientationHandler()
-                    .setSplitTaskSwipeRect(mDp, mTaskRect, mStagedSplitBounds, mStagePosition);
+                    .setSplitTaskSwipeRect(mDp, mTaskRect, mSplitBounds, mStagePosition);
             mTaskRect.offset(mTaskRectTranslationX, mTaskRectTranslationY);
         } else {
             fullTaskSize = mTaskRect;
@@ -170,8 +180,11 @@
     /**
      * Sets the targets which the simulator will control
      */
-    public void setPreview(RemoteAnimationTargetCompat runningTarget) {
-        setPreviewBounds(runningTarget.startScreenSpaceBounds, runningTarget.contentInsets);
+    public void setPreview(RemoteAnimationTarget runningTarget) {
+        setPreviewBounds(
+                runningTarget.startBounds == null
+                        ? runningTarget.screenSpaceBounds : runningTarget.startBounds,
+                runningTarget.contentInsets);
     }
 
     /**
@@ -180,16 +193,17 @@
      *
      * @param splitInfo set to {@code null} when not in staged split mode
      */
-    public void setPreview(RemoteAnimationTargetCompat runningTarget, StagedSplitBounds splitInfo) {
+    public void setPreview(RemoteAnimationTarget runningTarget, SplitBounds splitInfo) {
         setPreview(runningTarget);
-        mStagedSplitBounds = splitInfo;
-        if (mStagedSplitBounds == null) {
+        mSplitBounds = splitInfo;
+        if (mSplitBounds == null) {
             mStagePosition = STAGE_POSITION_UNDEFINED;
             return;
         }
         mStagePosition = mThumbnailPosition.equals(splitInfo.leftTopBounds) ?
                 STAGE_POSITION_TOP_OR_LEFT :
                 STAGE_POSITION_BOTTOM_OR_RIGHT;
+        mPositionHelper.setSplitBounds(convertSplitBounds(mSplitBounds), mStagePosition);
     }
 
     /**
@@ -223,6 +237,13 @@
     }
 
     /**
+     * Sets whether this task is part of desktop tasks in overview.
+     */
+    public void setIsDesktopTask(boolean desktop) {
+        mIsDesktopTask = desktop;
+    }
+
+    /**
      * Apply translations on TaskRect's starting location.
      */
     public void setTaskRectTranslation(int taskRectTranslationX, int taskRectTranslationY) {
@@ -251,9 +272,7 @@
      */
     public RectF getCurrentCropRect() {
         // Crop rect is the inverse of thumbnail matrix
-        RectF insets = mCurrentFullscreenParams.mCurrentDrawnInsets;
-        mTempRectF.set(-insets.left, -insets.top,
-                mTaskRect.width() + insets.right, mTaskRect.height() + insets.bottom);
+        mTempRectF.set(0, 0, mTaskRect.width(), mTaskRect.height());
         mInversePositionMatrix.mapRect(mTempRectF);
         return mTempRectF;
     }
@@ -316,9 +335,9 @@
             // mIsRecentsRtl is the inverse of TaskView RTL.
             boolean isRtlEnabled = !mIsRecentsRtl;
             mPositionHelper.updateThumbnailMatrix(
-                    mThumbnailPosition, mThumbnailData,
-                    mTaskRect.width(), mTaskRect.height(),
-                    mDp, mOrientationState.getRecentsActivityRotation(), isRtlEnabled);
+                    mThumbnailPosition, mThumbnailData, mTaskRect.width(), mTaskRect.height(),
+                    mDp.widthPx, mDp.heightPx, mDp.taskbarHeight, mDp.isTablet,
+                    mOrientationState.getRecentsActivityRotation(), isRtlEnabled);
             mPositionHelper.getMatrix().invert(mInversePositionMatrix);
             if (DEBUG) {
                 Log.d(TAG, " taskRect: " + mTaskRect);
@@ -330,14 +349,10 @@
                 /* taskViewScale= */1f, mTaskRect.width(), mDp, mPositionHelper);
 
         // Apply thumbnail matrix
-        RectF insets = mCurrentFullscreenParams.mCurrentDrawnInsets;
-        float scale = mCurrentFullscreenParams.mScale;
         float taskWidth = mTaskRect.width();
         float taskHeight = mTaskRect.height();
 
         mMatrix.set(mPositionHelper.getMatrix());
-        mMatrix.postTranslate(insets.left, insets.top);
-        mMatrix.postScale(scale, scale);
 
         // Apply TaskView matrix: taskRect, translate
         mMatrix.postTranslate(mTaskRect.left, mTaskRect.top);
@@ -357,8 +372,7 @@
         applyWindowToHomeRotation(mMatrix);
 
         // Crop rect is the inverse of thumbnail matrix
-        mTempRectF.set(-insets.left, -insets.top,
-                taskWidth + insets.right, taskHeight + insets.bottom);
+        mTempRectF.set(0, 0, taskWidth, taskHeight);
         mInversePositionMatrix.mapRect(mTempRectF);
         mTempRectF.roundOut(mTmpCropRect);
 
@@ -368,7 +382,6 @@
             return;
         }
         Log.d(TAG, "progress: " + fullScreenProgress
-                + " scale: " + scale
                 + " recentsViewScale: " + recentsViewScale.value
                 + " crop: " + mTmpCropRect
                 + " radius: " + getCurrentCornerRadius()
@@ -385,15 +398,21 @@
 
     @Override
     public void onBuildTargetParams(
-            Builder builder, RemoteAnimationTargetCompat app, TransformParams params) {
-        builder.withMatrix(mMatrix)
-                .withWindowCrop(mTmpCropRect)
-                .withCornerRadius(getCurrentCornerRadius());
+            SurfaceProperties builder, RemoteAnimationTarget app, TransformParams params) {
+        builder.setMatrix(mMatrix)
+                .setWindowCrop(mTmpCropRect)
+                .setCornerRadius(getCurrentCornerRadius());
 
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get() && params.getRecentsSurface() != null) {
-            // When relativeLayer = 0, it reverts the surfaces back to the original order.
-            builder.withRelativeLayerTo(params.getRecentsSurface(),
-                    mDrawsBelowRecents ? Integer.MIN_VALUE : 0);
+        // If mDrawsBelowRecents is unset, no reordering will be enforced.
+        if (mDrawsBelowRecents != null) {
+            // In legacy transitions, the animation leashes remain in same hierarchy in the
+            // TaskDisplayArea, so we don't want to bump the layer too high otherwise it will
+            // conflict with layers that WM core positions (ie. the input consumers).  For shell
+            // transitions, the animation leashes are reparented to an animation container so we
+            // can bump layers as needed.
+            builder.setLayer(mDrawsBelowRecents
+                    ? Integer.MIN_VALUE + 1
+                    : ENABLE_SHELL_TRANSITIONS ? Integer.MAX_VALUE : 0);
         }
     }
 
@@ -411,4 +430,15 @@
         return Math.max(Math.abs(mTempPoint[0]), Math.abs(mTempPoint[1]));
     }
 
+    /**
+     * TODO(b/254378592): Remove this after consolidation of classes
+     */
+    public static com.android.wm.shell.util.SplitBounds convertSplitBounds(SplitBounds bounds) {
+        return new com.android.wm.shell.util.SplitBounds(
+                bounds.leftTopBounds,
+                bounds.rightBottomBounds,
+                bounds.leftTopTaskId,
+                bounds.rightBottomTaskId
+        );
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/util/TaskVisualsChangeListener.java b/quickstep/src/com/android/quickstep/util/TaskVisualsChangeListener.java
new file mode 100644
index 0000000..66bff73
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/TaskVisualsChangeListener.java
@@ -0,0 +1,45 @@
+/*
+ * 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.quickstep.util;
+
+import android.os.UserHandle;
+
+import com.android.systemui.shared.recents.model.Task;
+import com.android.systemui.shared.recents.model.ThumbnailData;
+
+/**
+ * Listener for receiving various task properties changes
+ */
+public interface TaskVisualsChangeListener {
+
+    /**
+     * Called when the task thumbnail changes
+     */
+    default Task onTaskThumbnailChanged(int taskId, ThumbnailData thumbnailData) {
+        return null;
+    }
+
+    /**
+     * Called when the icon for a task changes
+     */
+    default void onTaskIconChanged(String pkg, UserHandle user) {}
+
+    /**
+     * Called when the icon for a task changes
+     */
+    default void onTaskIconChanged(int taskId) {}
+}
diff --git a/quickstep/src/com/android/quickstep/util/TransformParams.java b/quickstep/src/com/android/quickstep/util/TransformParams.java
index 75d6001..0f20e43 100644
--- a/quickstep/src/com/android/quickstep/util/TransformParams.java
+++ b/quickstep/src/com/android/quickstep/util/TransformParams.java
@@ -15,16 +15,16 @@
  */
 package com.android.quickstep.util;
 
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
+
 import android.util.FloatProperty;
-import android.view.SurfaceControl;
+import android.view.RemoteAnimationTarget;
 
 import com.android.launcher3.Utilities;
 import com.android.launcher3.anim.Interpolators;
 import com.android.quickstep.RemoteAnimationTargets;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
-import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat;
-import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams;
-import com.android.systemui.shared.system.TransactionCompat;
+import com.android.quickstep.util.SurfaceTransaction.SurfaceProperties;
 
 public class TransformParams {
 
@@ -59,7 +59,6 @@
     private float mCornerRadius;
     private RemoteAnimationTargets mTargetSet;
     private SurfaceTransactionApplier mSyncTransactionApplier;
-    private SurfaceControl mRecentsSurface;
 
     private BuilderProxy mHomeBuilderProxy = BuilderProxy.ALWAYS_VISIBLE;
     private BuilderProxy mBaseBuilderProxy = BuilderProxy.ALWAYS_VISIBLE;
@@ -113,8 +112,7 @@
      * Sets the SyncRtSurfaceTransactionApplierCompat that will apply the SurfaceParams that
      * are computed based on these TransformParams.
      */
-    public TransformParams setSyncTransactionApplier(
-            SurfaceTransactionApplier applier) {
+    public TransformParams setSyncTransactionApplier(SurfaceTransactionApplier applier) {
         mSyncTransactionApplier = applier;
         return this;
     }
@@ -137,26 +135,27 @@
         return this;
     }
 
-    public SurfaceParams[] createSurfaceParams(BuilderProxy proxy) {
+    public SurfaceTransaction createSurfaceParams(BuilderProxy proxy) {
         RemoteAnimationTargets targets = mTargetSet;
-        SurfaceParams[] surfaceParams = new SurfaceParams[targets.unfilteredApps.length];
-        mRecentsSurface = getRecentsSurface(targets);
-
+        SurfaceTransaction transaction = new SurfaceTransaction();
+        if (targets == null) {
+            return transaction;
+        }
         for (int i = 0; i < targets.unfilteredApps.length; i++) {
-            RemoteAnimationTargetCompat app = targets.unfilteredApps[i];
-            SurfaceParams.Builder builder = new SurfaceParams.Builder(app.leash);
+            RemoteAnimationTarget app = targets.unfilteredApps[i];
+            SurfaceProperties builder = transaction.forSurface(app.leash);
 
             if (app.mode == targets.targetMode) {
-                if (app.activityType == RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME) {
+                int activityType = app.windowConfiguration.getActivityType();
+                if (activityType == ACTIVITY_TYPE_HOME) {
                     mHomeBuilderProxy.onBuildTargetParams(builder, app, this);
                 } else {
                     // Fade out Assistant overlay.
-                    if (app.activityType == RemoteAnimationTargetCompat.ACTIVITY_TYPE_ASSISTANT
-                            && app.isNotInRecents) {
+                    if (activityType == ACTIVITY_TYPE_ASSISTANT && app.isNotInRecents) {
                         float progress = Utilities.boundToRange(getProgress(), 0, 1);
-                        builder.withAlpha(1 - Interpolators.DEACCEL_2_5.getInterpolation(progress));
+                        builder.setAlpha(1 - Interpolators.DEACCEL_2_5.getInterpolation(progress));
                     } else {
-                        builder.withAlpha(getTargetAlpha());
+                        builder.setAlpha(getTargetAlpha());
                     }
 
                     proxy.onBuildTargetParams(builder, app, this);
@@ -164,23 +163,15 @@
             } else {
                 mBaseBuilderProxy.onBuildTargetParams(builder, app, this);
             }
-            surfaceParams[i] = builder.build();
         }
-        return surfaceParams;
-    }
 
-    private static SurfaceControl getRecentsSurface(RemoteAnimationTargets targets) {
-        for (int i = 0; i < targets.unfilteredApps.length; i++) {
-            RemoteAnimationTargetCompat app = targets.unfilteredApps[i];
-            if (app.mode == targets.targetMode) {
-                if (app.activityType == RemoteAnimationTargetCompat.ACTIVITY_TYPE_RECENTS) {
-                    return app.leash;
-                }
-            } else {
-                return app.leash;
-            }
+        // always put wallpaper layer to bottom.
+        final int wallpaperLength = targets.wallpapers != null ? targets.wallpapers.length : 0;
+        for (int i = 0; i < wallpaperLength; i++) {
+            RemoteAnimationTarget wallpaper = targets.wallpapers[i];
+            transaction.forSurface(wallpaper.leash).setLayer(Integer.MIN_VALUE);
         }
-        return null;
+        return transaction;
     }
 
     // Pubic getters so outside packages can read the values.
@@ -197,23 +188,15 @@
         return mCornerRadius;
     }
 
-    public SurfaceControl getRecentsSurface() {
-        return mRecentsSurface;
-    }
-
     public RemoteAnimationTargets getTargetSet() {
         return mTargetSet;
     }
 
-    public void applySurfaceParams(SurfaceParams... params) {
+    public void applySurfaceParams(SurfaceTransaction builder) {
         if (mSyncTransactionApplier != null) {
-            mSyncTransactionApplier.scheduleApply(params);
+            mSyncTransactionApplier.scheduleApply(builder);
         } else {
-            TransactionCompat t = new TransactionCompat();
-            for (SurfaceParams param : params) {
-                SyncRtSurfaceTransactionApplierCompat.applyParams(t, param);
-            }
-            t.apply();
+            builder.getTransaction().apply();
         }
     }
 
@@ -221,9 +204,9 @@
     public interface BuilderProxy {
 
         BuilderProxy NO_OP = (builder, app, params) -> { };
-        BuilderProxy ALWAYS_VISIBLE = (builder, app, params) ->builder.withAlpha(1);
+        BuilderProxy ALWAYS_VISIBLE = (builder, app, params) -> builder.setAlpha(1);
 
-        void onBuildTargetParams(SurfaceParams.Builder builder,
-                RemoteAnimationTargetCompat app, TransformParams params);
+        void onBuildTargetParams(SurfaceProperties builder,
+                RemoteAnimationTarget app, TransformParams params);
     }
 }
diff --git a/quickstep/src/com/android/quickstep/util/UnfoldMoveFromCenterHotseatAnimator.java b/quickstep/src/com/android/quickstep/util/UnfoldMoveFromCenterHotseatAnimator.java
index dc97dd6..c8141b4 100644
--- a/quickstep/src/com/android/quickstep/util/UnfoldMoveFromCenterHotseatAnimator.java
+++ b/quickstep/src/com/android/quickstep/util/UnfoldMoveFromCenterHotseatAnimator.java
@@ -21,6 +21,7 @@
 
 import com.android.launcher3.Hotseat;
 import com.android.launcher3.Launcher;
+import com.android.systemui.unfold.updates.RotationChangeProvider;
 
 /**
  * Animation that moves hotseat icons from center to the sides (final position)
@@ -29,8 +30,9 @@
 
     private final Launcher mLauncher;
 
-    public UnfoldMoveFromCenterHotseatAnimator(Launcher launcher, WindowManager windowManager) {
-        super(windowManager);
+    public UnfoldMoveFromCenterHotseatAnimator(Launcher launcher, WindowManager windowManager,
+            RotationChangeProvider rotationChangeProvider) {
+        super(windowManager, rotationChangeProvider);
         mLauncher = launcher;
     }
 
@@ -39,17 +41,20 @@
         Hotseat hotseat = mLauncher.getHotseat();
 
         ViewGroup hotseatIcons = hotseat.getShortcutsAndWidgets();
-        disableClipping(hotseat);
+        setClipChildren(hotseat, false);
+        setClipToPadding(hotseat, false);
 
         for (int i = 0; i < hotseatIcons.getChildCount(); i++) {
             View child = hotseatIcons.getChildAt(i);
             registerViewForAnimation(child);
         }
+
+        super.onPrepareViewsForAnimation();
     }
 
     @Override
     public void onTransitionFinished() {
-        restoreClipping(mLauncher.getHotseat());
+        restoreClippings();
         super.onTransitionFinished();
     }
 }
diff --git a/quickstep/src/com/android/quickstep/util/UnfoldMoveFromCenterWorkspaceAnimator.java b/quickstep/src/com/android/quickstep/util/UnfoldMoveFromCenterWorkspaceAnimator.java
index 354d157..c05b38f 100644
--- a/quickstep/src/com/android/quickstep/util/UnfoldMoveFromCenterWorkspaceAnimator.java
+++ b/quickstep/src/com/android/quickstep/util/UnfoldMoveFromCenterWorkspaceAnimator.java
@@ -22,6 +22,7 @@
 import com.android.launcher3.Launcher;
 import com.android.launcher3.ShortcutAndWidgetContainer;
 import com.android.launcher3.Workspace;
+import com.android.systemui.unfold.updates.RotationChangeProvider;
 
 /**
  * Animation that moves launcher icons and widgets from center to the sides (final position)
@@ -30,8 +31,9 @@
 
     private final Launcher mLauncher;
 
-    public UnfoldMoveFromCenterWorkspaceAnimator(Launcher launcher, WindowManager windowManager) {
-        super(windowManager);
+    public UnfoldMoveFromCenterWorkspaceAnimator(Launcher launcher, WindowManager windowManager,
+            RotationChangeProvider rotationChangeProvider) {
+        super(windowManager, rotationChangeProvider);
         mLauncher = launcher;
     }
 
@@ -45,7 +47,8 @@
                     final CellLayout cellLayout = (CellLayout) page;
                     ShortcutAndWidgetContainer itemsContainer = cellLayout
                             .getShortcutsAndWidgets();
-                    disableClipping(cellLayout);
+                    setClipChildren(cellLayout, false);
+                    setClipToPadding(cellLayout, false);
 
                     for (int i = 0; i < itemsContainer.getChildCount(); i++) {
                         View child = itemsContainer.getChildAt(i);
@@ -53,13 +56,15 @@
                     }
                 });
 
-        disableClipping(workspace);
+        setClipChildren(workspace, false);
+        setClipToPadding(workspace, true);
+
+        super.onPrepareViewsForAnimation();
     }
 
     @Override
     public void onTransitionFinished() {
-        restoreClipping(mLauncher.getWorkspace());
-        mLauncher.getWorkspace().forEachVisiblePage(page -> restoreClipping((CellLayout) page));
+        restoreClippings();
         super.onTransitionFinished();
     }
 }
diff --git a/src_ui_overrides/com/android/launcher3/uioverrides/DeviceFlag.java b/quickstep/src/com/android/quickstep/util/VibrationConstants.java
similarity index 62%
copy from src_ui_overrides/com/android/launcher3/uioverrides/DeviceFlag.java
copy to quickstep/src/com/android/quickstep/util/VibrationConstants.java
index 5c1ac28..0f0306e 100644
--- a/src_ui_overrides/com/android/launcher3/uioverrides/DeviceFlag.java
+++ b/quickstep/src/com/android/quickstep/util/VibrationConstants.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * 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.
@@ -13,14 +13,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package com.android.quickstep.util;
 
-package com.android.launcher3.uioverrides;
+import android.os.VibrationEffect;
 
-import com.android.launcher3.config.FeatureFlags.DebugFlag;
-
-public class DeviceFlag extends DebugFlag {
-
-    public DeviceFlag(String key, boolean defaultValue, String description) {
-        super(key, defaultValue, description);
-    }
-}
+public class VibrationConstants {
+    public static final VibrationEffect EFFECT_TEXTURE_TICK =
+            VibrationEffect.createPredefined(VibrationEffect.EFFECT_TEXTURE_TICK);
+}
\ No newline at end of file
diff --git a/quickstep/src/com/android/quickstep/util/VibratorWrapper.java b/quickstep/src/com/android/quickstep/util/VibratorWrapper.java
deleted file mode 100644
index 211bd08..0000000
--- a/quickstep/src/com/android/quickstep/util/VibratorWrapper.java
+++ /dev/null
@@ -1,116 +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.quickstep.util;
-
-import static android.os.VibrationEffect.createPredefined;
-import static android.provider.Settings.System.HAPTIC_FEEDBACK_ENABLED;
-
-import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
-import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
-
-import android.annotation.SuppressLint;
-import android.annotation.TargetApi;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.database.ContentObserver;
-import android.media.AudioAttributes;
-import android.os.Build;
-import android.os.VibrationEffect;
-import android.os.Vibrator;
-import android.provider.Settings;
-
-import com.android.launcher3.Utilities;
-import com.android.launcher3.util.MainThreadInitializedObject;
-
-/**
- * Wrapper around {@link Vibrator} to easily perform haptic feedback where necessary.
- */
-@TargetApi(Build.VERSION_CODES.Q)
-public class VibratorWrapper {
-
-    public static final MainThreadInitializedObject<VibratorWrapper> INSTANCE =
-            new MainThreadInitializedObject<>(VibratorWrapper::new);
-
-    public static final AudioAttributes VIBRATION_ATTRS = new AudioAttributes.Builder()
-            .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
-            .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
-            .build();
-
-    public static final VibrationEffect EFFECT_CLICK =
-            createPredefined(VibrationEffect.EFFECT_CLICK);
-    public static final VibrationEffect EFFECT_TEXTURE_TICK =
-            VibrationEffect.createPredefined(VibrationEffect.EFFECT_TEXTURE_TICK);
-
-    /**
-     * Haptic when entering overview.
-     */
-    public static final VibrationEffect OVERVIEW_HAPTIC = EFFECT_CLICK;
-
-    private final Vibrator mVibrator;
-    private final boolean mHasVibrator;
-
-    private boolean mIsHapticFeedbackEnabled;
-
-    public VibratorWrapper(Context context) {
-        mVibrator = context.getSystemService(Vibrator.class);
-        mHasVibrator = mVibrator.hasVibrator();
-        if (mHasVibrator) {
-            final ContentResolver resolver = context.getContentResolver();
-            mIsHapticFeedbackEnabled = isHapticFeedbackEnabled(resolver);
-            final ContentObserver observer = new ContentObserver(MAIN_EXECUTOR.getHandler()) {
-                @Override
-                public void onChange(boolean selfChange) {
-                    mIsHapticFeedbackEnabled = isHapticFeedbackEnabled(resolver);
-                }
-            };
-            resolver.registerContentObserver(Settings.System.getUriFor(HAPTIC_FEEDBACK_ENABLED),
-                    false /* notifyForDescendents */, observer);
-        } else {
-            mIsHapticFeedbackEnabled = false;
-        }
-    }
-
-    private boolean isHapticFeedbackEnabled(ContentResolver resolver) {
-        return Settings.System.getInt(resolver, HAPTIC_FEEDBACK_ENABLED, 0) == 1;
-    }
-
-    /** Vibrates with the given effect if haptic feedback is available and enabled. */
-    public void vibrate(VibrationEffect vibrationEffect) {
-        if (mHasVibrator && mIsHapticFeedbackEnabled) {
-            UI_HELPER_EXECUTOR.execute(() -> mVibrator.vibrate(vibrationEffect, VIBRATION_ATTRS));
-        }
-    }
-
-    /**
-     * Vibrates with a single primitive, if supported, or use a fallback effect instead. This only
-     * vibrates if haptic feedback is available and enabled.
-     */
-    @SuppressLint("NewApi")
-    public void vibrate(int primitiveId, float primitiveScale, VibrationEffect fallbackEffect) {
-        if (mHasVibrator && mIsHapticFeedbackEnabled) {
-            UI_HELPER_EXECUTOR.execute(() -> {
-                if (Utilities.ATLEAST_R && primitiveId >= 0
-                        && mVibrator.areAllPrimitivesSupported(primitiveId)) {
-                    mVibrator.vibrate(VibrationEffect.startComposition()
-                            .addPrimitive(primitiveId, primitiveScale)
-                            .compose(), VIBRATION_ATTRS);
-                } else {
-                    mVibrator.vibrate(fallbackEffect, VIBRATION_ATTRS);
-                }
-            });
-        }
-    }
-}
diff --git a/quickstep/src/com/android/quickstep/util/WorkspaceRevealAnim.java b/quickstep/src/com/android/quickstep/util/WorkspaceRevealAnim.java
index 5eb543e..34fa7f1 100644
--- a/quickstep/src/com/android/quickstep/util/WorkspaceRevealAnim.java
+++ b/quickstep/src/com/android/quickstep/util/WorkspaceRevealAnim.java
@@ -32,7 +32,6 @@
 import android.util.FloatProperty;
 import android.view.View;
 
-import com.android.launcher3.BaseQuickstepLauncher;
 import com.android.launcher3.Hotseat;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.R;
@@ -41,6 +40,7 @@
 import com.android.launcher3.anim.PendingAnimation;
 import com.android.launcher3.statehandlers.DepthController;
 import com.android.launcher3.states.StateAnimationConfig;
+import com.android.launcher3.uioverrides.QuickstepLauncher;
 import com.android.launcher3.util.DynamicResource;
 import com.android.quickstep.views.RecentsView;
 import com.android.systemui.plugins.ResourceProvider;
@@ -84,9 +84,9 @@
         }
 
         // Add depth controller animation.
-        if (launcher instanceof BaseQuickstepLauncher) {
+        if (launcher instanceof QuickstepLauncher) {
             PendingAnimation depthBuilder = new PendingAnimation(DURATION_MS);
-            DepthController depth = ((BaseQuickstepLauncher) launcher).getDepthController();
+            DepthController depth = ((QuickstepLauncher) launcher).getDepthController();
             depth.setStateWithAnimation(NORMAL, new StateAnimationConfig(), depthBuilder);
             mAnimators.play(depthBuilder.buildAnim());
         }
diff --git a/quickstep/src/com/android/quickstep/util/unfold/PreemptiveUnfoldTransitionProgressProvider.kt b/quickstep/src/com/android/quickstep/util/unfold/PreemptiveUnfoldTransitionProgressProvider.kt
new file mode 100644
index 0000000..a9cd048
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/unfold/PreemptiveUnfoldTransitionProgressProvider.kt
@@ -0,0 +1,161 @@
+/*
+ * 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.quickstep.util.unfold
+
+import android.os.Handler
+import android.os.Trace
+import android.util.Log
+import com.android.systemui.unfold.UnfoldTransitionProgressProvider
+import com.android.systemui.unfold.UnfoldTransitionProgressProvider.TransitionProgressListener
+
+/**
+ * Transition progress provider wrapper that can preemptively start the transition on demand
+ * without relying on the source provider. When the source provider has started the animation
+ * it switches to it.
+ *
+ * This might be useful when we want to synchronously start the unfold animation and render
+ * the first frame during turning on the screen. For example, this is used in Launcher where
+ * we need to render the first frame of the animation immediately after receiving a configuration
+ * change event so Window Manager will wait for this frame to be rendered before unblocking
+ * the screen. We can't rely on the original transition progress as it starts the animation
+ * after the screen fully turned on (and unblocked), at this moment it is already too late to
+ * start the animation.
+ *
+ * Using this provider we could render the first frame preemptively by sending 'transition started'
+ * and '0' transition progress before the original progress provider sends these events.
+ */
+class PreemptiveUnfoldTransitionProgressProvider(
+        private val source: UnfoldTransitionProgressProvider,
+        private val handler: Handler
+) : UnfoldTransitionProgressProvider, TransitionProgressListener {
+
+    private val timeoutRunnable = Runnable {
+        if (isRunning) {
+            listeners.forEach { it.onTransitionFinished() }
+            onPreemptiveStartFinished()
+            Log.wtf(TAG, "Timeout occurred when waiting for the source transition to start")
+        }
+    }
+
+    private val listeners = arrayListOf<TransitionProgressListener>()
+    private var isPreemptivelyRunning = false
+    private var isSourceRunning = false
+
+    private val isRunning: Boolean
+        get() = isPreemptivelyRunning || isSourceRunning
+
+    private val sourceListener =
+            object : TransitionProgressListener {
+                override fun onTransitionStarted() {
+                    handler.removeCallbacks(timeoutRunnable)
+
+                    if (!isRunning) {
+                        listeners.forEach { it.onTransitionStarted() }
+                    }
+
+                    onPreemptiveStartFinished()
+                    isSourceRunning = true
+                }
+
+                override fun onTransitionProgress(progress: Float) {
+                    if (isRunning) {
+                        listeners.forEach { it.onTransitionProgress(progress) }
+                        isSourceRunning = true
+                    }
+                }
+
+                override fun onTransitionFinishing() {
+                    if (isRunning) {
+                        listeners.forEach { it.onTransitionFinishing() }
+                        isSourceRunning = true
+                    }
+                }
+
+                override fun onTransitionFinished() {
+                    if (isRunning) {
+                        listeners.forEach { it.onTransitionFinished() }
+                    }
+
+                    isSourceRunning = false
+                    onPreemptiveStartFinished()
+                    handler.removeCallbacks(timeoutRunnable)
+                }
+            }
+
+    fun init() {
+        source.addCallback(sourceListener)
+    }
+
+    /**
+     * Starts the animation preemptively.
+     *
+     * - If the source provider is already running, this method won't change any behavior
+     * - If the source provider has not started running yet, it will call onTransitionStarted
+     *   for all listeners and optionally onTransitionProgress(initialProgress) if supplied.
+     *   When the source provider starts the animation it will switch to send progress and finished
+     *   events from it.
+     *   If the source provider won't start the animation within a timeout, the animation will be
+     *   cancelled and onTransitionFinished will be delivered to the current listeners.
+     */
+    @JvmOverloads
+    fun preemptivelyStartTransition(initialProgress: Float? = null) {
+        if (!isRunning) {
+            Trace.beginAsyncSection("$TAG#startedPreemptively", 0)
+
+            listeners.forEach { it.onTransitionStarted() }
+            initialProgress?.let { progress ->
+                listeners.forEach { it.onTransitionProgress(progress) }
+            }
+
+            handler.removeCallbacks(timeoutRunnable)
+            handler.postDelayed(timeoutRunnable, PREEMPTIVE_UNFOLD_TIMEOUT_MS)
+        }
+
+        isPreemptivelyRunning = true
+    }
+
+    fun cancelPreemptiveStart() {
+        handler.removeCallbacks(timeoutRunnable)
+        if (isRunning) {
+            listeners.forEach { it.onTransitionFinished() }
+        }
+        onPreemptiveStartFinished()
+    }
+
+    private fun onPreemptiveStartFinished() {
+        if (isPreemptivelyRunning) {
+            Trace.endAsyncSection("$TAG#startedPreemptively", 0)
+            isPreemptivelyRunning = false
+        }
+    }
+
+    override fun destroy() {
+        handler.removeCallbacks(timeoutRunnable)
+        source.removeCallback(sourceListener)
+        source.destroy()
+    }
+
+    override fun addCallback(listener: TransitionProgressListener) {
+        listeners += listener
+    }
+
+    override fun removeCallback(listener: TransitionProgressListener) {
+        listeners -= listener
+    }
+}
+
+const val TAG = "PreemptiveUnfoldTransitionProgressProvider"
+const val PREEMPTIVE_UNFOLD_TIMEOUT_MS = 1700L
diff --git a/quickstep/src/com/android/quickstep/views/AllAppsEduView.java b/quickstep/src/com/android/quickstep/views/AllAppsEduView.java
index d79b318..716d389 100644
--- a/quickstep/src/com/android/quickstep/views/AllAppsEduView.java
+++ b/quickstep/src/com/android/quickstep/views/AllAppsEduView.java
@@ -112,11 +112,6 @@
     }
 
     @Override
-    public boolean onBackPressed() {
-        return true;
-    }
-
-    @Override
     public boolean canInterceptEventsInSystemGestureRegion() {
         return true;
     }
diff --git a/quickstep/src/com/android/quickstep/views/ClearAllButton.java b/quickstep/src/com/android/quickstep/views/ClearAllButton.java
index 50be5ea..6813857 100644
--- a/quickstep/src/com/android/quickstep/views/ClearAllButton.java
+++ b/quickstep/src/com/android/quickstep/views/ClearAllButton.java
@@ -67,7 +67,6 @@
     private float mGridTranslationPrimary;
     private float mGridScrollOffset;
     private float mScrollOffsetPrimary;
-    private float mSplitSelectScrollOffsetPrimary;
 
     private int mSidePadding;
 
@@ -99,6 +98,10 @@
         return false;
     }
 
+    public float getScrollAlpha() {
+        return mScrollAlpha;
+    }
+
     public void setContentAlpha(float alpha) {
         if (mContentAlpha != alpha) {
             mContentAlpha = alpha;
@@ -172,10 +175,6 @@
         mScrollOffsetPrimary = scrollOffsetPrimary;
     }
 
-    public void setSplitSelectScrollOffsetPrimary(float splitSelectScrollOffsetPrimary) {
-        mSplitSelectScrollOffsetPrimary = splitSelectScrollOffsetPrimary;
-    }
-
     public float getScrollAdjustment(boolean fullscreenEnabled, boolean gridEnabled) {
         float scrollAdjustment = 0;
         if (fullscreenEnabled) {
@@ -185,7 +184,6 @@
             scrollAdjustment += mGridTranslationPrimary + mGridScrollOffset;
         }
         scrollAdjustment += mScrollOffsetPrimary;
-        scrollAdjustment += mSplitSelectScrollOffsetPrimary;
         return scrollAdjustment;
     }
 
diff --git a/quickstep/src/com/android/quickstep/views/DesktopTaskView.java b/quickstep/src/com/android/quickstep/views/DesktopTaskView.java
new file mode 100644
index 0000000..1cfaf14
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/views/DesktopTaskView.java
@@ -0,0 +1,510 @@
+/*
+ * 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.quickstep.views;
+
+import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
+
+import static com.android.launcher3.LauncherState.NORMAL;
+import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_UNDEFINED;
+
+import android.content.Context;
+import android.graphics.Point;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.LayerDrawable;
+import android.graphics.drawable.ShapeDrawable;
+import android.graphics.drawable.shapes.RoundRectShape;
+import android.os.SystemProperties;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.util.SparseArray;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.FrameLayout;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.Launcher;
+import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
+import com.android.launcher3.util.RunnableList;
+import com.android.quickstep.RecentsModel;
+import com.android.quickstep.SystemUiProxy;
+import com.android.quickstep.TaskThumbnailCache;
+import com.android.quickstep.util.CancellableTask;
+import com.android.quickstep.util.RecentsOrientedState;
+import com.android.systemui.shared.recents.model.Task;
+import com.android.systemui.shared.recents.model.ThumbnailData;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.function.Consumer;
+
+/**
+ * TaskView that contains all tasks that are part of the desktop.
+ */
+// TODO(b/249371338): TaskView needs to be refactored to have better support for N tasks.
+public class DesktopTaskView extends TaskView {
+
+    /** Flag to indicate whether desktop windowing proto 1 is enabled */
+    private static final boolean DESKTOP_IS_PROTO1_ENABLED = SystemProperties.getBoolean(
+            "persist.wm.debug.desktop_mode", false);
+
+    /** Flag to indicate whether desktop windowing proto 2 is enabled */
+    public static final boolean DESKTOP_IS_PROTO2_ENABLED = SystemProperties.getBoolean(
+            "persist.wm.debug.desktop_mode_2", false);
+
+    /** Flags to indicate whether desktop mode is available on the device */
+    public static final boolean DESKTOP_MODE_SUPPORTED =
+            DESKTOP_IS_PROTO1_ENABLED || DESKTOP_IS_PROTO2_ENABLED;
+
+    private static final String TAG = DesktopTaskView.class.getSimpleName();
+
+    private static final boolean DEBUG = true;
+
+    @NonNull
+    private List<Task> mTasks = new ArrayList<>();
+
+    private final ArrayList<TaskThumbnailView> mSnapshotViews = new ArrayList<>();
+
+    /** Maps {@code taskIds} to corresponding {@link TaskThumbnailView}s */
+    private final SparseArray<TaskThumbnailView> mSnapshotViewMap = new SparseArray<>();
+
+    private final ArrayList<CancellableTask<?>> mPendingThumbnailRequests = new ArrayList<>();
+
+    private View mBackgroundView;
+
+    public DesktopTaskView(Context context) {
+        this(context, null);
+    }
+
+    public DesktopTaskView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public DesktopTaskView(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+
+        mBackgroundView = findViewById(R.id.background);
+
+        int topMarginPx =
+                mActivity.getDeviceProfile().overviewTaskThumbnailTopMarginPx;
+        FrameLayout.LayoutParams params = (LayoutParams) mBackgroundView.getLayoutParams();
+        params.topMargin = topMarginPx;
+        mBackgroundView.setLayoutParams(params);
+
+        float[] outerRadii = new float[8];
+        Arrays.fill(outerRadii, getTaskCornerRadius());
+        RoundRectShape shape = new RoundRectShape(outerRadii, null, null);
+        ShapeDrawable background = new ShapeDrawable(shape);
+        background.setTint(getResources().getColor(android.R.color.system_neutral2_300,
+                getContext().getTheme()));
+        // TODO(b/244348395): this should be wallpaper
+        mBackgroundView.setBackground(background);
+
+        Drawable icon = getResources().getDrawable(R.drawable.ic_desktop, getContext().getTheme());
+        Drawable iconBackground = getResources().getDrawable(R.drawable.bg_circle,
+                getContext().getTheme());
+        mIconView.setDrawable(new LayerDrawable(new Drawable[]{iconBackground, icon}));
+    }
+
+    @Override
+    protected void updateBorderBounds(Rect bounds) {
+        bounds.set(mBackgroundView.getLeft(), mBackgroundView.getTop(), mBackgroundView.getRight(),
+                mBackgroundView.getBottom());
+    }
+
+    @Override
+    public void bind(Task task, RecentsOrientedState orientedState) {
+        bind(Collections.singletonList(task), orientedState);
+    }
+
+    /**
+     * Updates this desktop task to the gives task list defined in {@code tasks}
+     */
+    public void bind(List<Task> tasks, RecentsOrientedState orientedState) {
+        if (DEBUG) {
+            StringBuilder sb = new StringBuilder();
+            sb.append("bind tasks=").append(tasks.size()).append("\n");
+            for (Task task : tasks) {
+                sb.append(" key=").append(task.key).append("\n");
+            }
+            Log.d(TAG, sb.toString());
+        }
+        cancelPendingLoadTasks();
+
+        mTasks = new ArrayList<>(tasks);
+        mSnapshotViewMap.clear();
+
+        // Ensure there are equal number of snapshot views and tasks.
+        // More tasks than views, add views. More views than tasks, remove views.
+        // TODO(b/251586230): use a ViewPool for creating TaskThumbnailViews
+        if (mSnapshotViews.size() > mTasks.size()) {
+            int diff = mSnapshotViews.size() - mTasks.size();
+            for (int i = 0; i < diff; i++) {
+                TaskThumbnailView snapshotView = mSnapshotViews.remove(0);
+                removeView(snapshotView);
+            }
+        } else if (mSnapshotViews.size() < mTasks.size()) {
+            int diff = mTasks.size() - mSnapshotViews.size();
+            for (int i = 0; i < diff; i++) {
+                TaskThumbnailView snapshotView = new TaskThumbnailView(getContext());
+                mSnapshotViews.add(snapshotView);
+                addView(snapshotView, new LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
+            }
+        }
+
+        for (int i = 0; i < mTasks.size(); i++) {
+            Task task = mTasks.get(i);
+            TaskThumbnailView snapshotView = mSnapshotViews.get(i);
+            snapshotView.bind(task);
+            mSnapshotViewMap.put(task.key.id, snapshotView);
+        }
+
+        updateTaskIdContainer();
+        updateTaskIdAttributeContainer();
+
+        setOrientationState(orientedState);
+    }
+
+    private void updateTaskIdContainer() {
+        // TODO(b/249371338): TaskView expects the array to have at least 2 elements.
+        // At least 2 elements in the array
+        mTaskIdContainer = new int[Math.max(mTasks.size(), 2)];
+        for (int i = 0; i < mTasks.size(); i++) {
+            mTaskIdContainer[i] = mTasks.get(i).key.id;
+        }
+    }
+
+    private void updateTaskIdAttributeContainer() {
+        // TODO(b/249371338): TaskView expects the array to have at least 2 elements.
+        // At least 2 elements in the array
+        mTaskIdAttributeContainer = new TaskIdAttributeContainer[Math.max(mTasks.size(), 2)];
+        for (int i = 0; i < mTasks.size(); i++) {
+            Task task = mTasks.get(i);
+            TaskThumbnailView thumbnailView = mSnapshotViewMap.get(task.key.id);
+            mTaskIdAttributeContainer[i] = createAttributeContainer(task, thumbnailView);
+        }
+    }
+
+    private TaskIdAttributeContainer createAttributeContainer(Task task,
+            TaskThumbnailView thumbnailView) {
+        return new TaskIdAttributeContainer(task, thumbnailView, null, STAGE_POSITION_UNDEFINED);
+    }
+
+    @Nullable
+    @Override
+    public Task getTask() {
+        // TODO(b/249371338): returning first task. This won't work well with multiple tasks.
+        return mTasks.size() > 0 ? mTasks.get(0) : null;
+    }
+
+    @Override
+    public TaskThumbnailView getThumbnail() {
+        // TODO(b/249371338): returning single thumbnail. This won't work well with multiple tasks.
+        Task task = getTask();
+        if (task != null) {
+            return mSnapshotViewMap.get(task.key.id);
+        }
+        // Return the place holder snapshot views. Callers expect this to be non-null
+        return mSnapshotView;
+    }
+
+    @Override
+    public boolean containsTaskId(int taskId) {
+        // Thumbnail map contains taskId -> thumbnail map. Use the keys for contains
+        return mSnapshotViewMap.contains(taskId);
+    }
+
+    @Override
+    public void onTaskListVisibilityChanged(boolean visible, int changes) {
+        cancelPendingLoadTasks();
+        if (visible) {
+            RecentsModel model = RecentsModel.INSTANCE.get(getContext());
+            TaskThumbnailCache thumbnailCache = model.getThumbnailCache();
+
+            if (needsUpdate(changes, FLAG_UPDATE_THUMBNAIL)) {
+                for (Task task : mTasks) {
+                    CancellableTask<?> thumbLoadRequest =
+                            thumbnailCache.updateThumbnailInBackground(task, thumbnailData -> {
+                                TaskThumbnailView thumbnailView = mSnapshotViewMap.get(task.key.id);
+                                if (thumbnailView != null) {
+                                    thumbnailView.setThumbnail(task, thumbnailData);
+                                }
+                            });
+                    if (thumbLoadRequest != null) {
+                        mPendingThumbnailRequests.add(thumbLoadRequest);
+                    }
+                }
+            }
+        } else {
+            if (needsUpdate(changes, FLAG_UPDATE_THUMBNAIL)) {
+                for (Task task : mTasks) {
+                    TaskThumbnailView thumbnailView = mSnapshotViewMap.get(task.key.id);
+                    if (thumbnailView != null) {
+                        thumbnailView.setThumbnail(null, null);
+                    }
+                    // Reset the task thumbnail ref
+                    task.thumbnail = null;
+                }
+            }
+        }
+    }
+
+    @Override
+    protected void setThumbnailOrientation(RecentsOrientedState orientationState) {
+        DeviceProfile deviceProfile = mActivity.getDeviceProfile();
+        int thumbnailTopMargin = deviceProfile.overviewTaskThumbnailTopMarginPx;
+
+        LayoutParams snapshotParams = (LayoutParams) mSnapshotView.getLayoutParams();
+        snapshotParams.topMargin = thumbnailTopMargin;
+
+        for (int i = 0; i < mSnapshotViewMap.size(); i++) {
+            TaskThumbnailView thumbnailView = mSnapshotViewMap.valueAt(i);
+            thumbnailView.setLayoutParams(snapshotParams);
+        }
+    }
+
+    @Override
+    protected void cancelPendingLoadTasks() {
+        for (CancellableTask<?> cancellableTask : mPendingThumbnailRequests) {
+            cancellableTask.cancel();
+        }
+        mPendingThumbnailRequests.clear();
+    }
+
+    @Override
+    public boolean offerTouchToChildren(MotionEvent event) {
+        return false;
+    }
+
+    @Override
+    protected boolean showTaskMenuWithContainer(IconView iconView) {
+        return false;
+    }
+
+    @Override
+    public RunnableList launchTasks() {
+        SystemUiProxy.INSTANCE.get(getContext()).showDesktopApps(mActivity.getDisplayId());
+        Launcher.getLauncher(mActivity).getStateManager().goToState(NORMAL, false /* animated */);
+        return null;
+    }
+
+    @Nullable
+    @Override
+    public RunnableList launchTaskAnimated() {
+        return launchTasks();
+    }
+
+    @Override
+    public void launchTask(@NonNull Consumer<Boolean> callback, boolean isQuickswitch) {
+        launchTasks();
+        callback.accept(true);
+    }
+
+    @Override
+    public boolean isDesktopTask() {
+        return true;
+    }
+
+    @Override
+    void refreshThumbnails(@Nullable HashMap<Integer, ThumbnailData> thumbnailDatas) {
+        // Sets new thumbnails based on the incoming data and refreshes the rest.
+        // Create a copy of the thumbnail map, so we can track thumbnails that need refreshing.
+        SparseArray<TaskThumbnailView> thumbnailsToRefresh = mSnapshotViewMap.clone();
+        if (thumbnailDatas != null) {
+            for (Task task : mTasks) {
+                int key = task.key.id;
+                TaskThumbnailView thumbnailView = thumbnailsToRefresh.get(key);
+                ThumbnailData thumbnailData = thumbnailDatas.get(key);
+                if (thumbnailView != null && thumbnailData != null) {
+                    thumbnailView.setThumbnail(task, thumbnailData);
+                    // Remove this thumbnail from the list that should be refreshed.
+                    thumbnailsToRefresh.remove(key);
+                }
+            }
+        }
+
+        // Refresh the rest that were not updated.
+        for (int i = 0; i < thumbnailsToRefresh.size(); i++) {
+            thumbnailsToRefresh.valueAt(i).refresh();
+        }
+    }
+
+    @Override
+    public TaskThumbnailView[] getThumbnails() {
+        TaskThumbnailView[] thumbnails = new TaskThumbnailView[mSnapshotViewMap.size()];
+        for (int i = 0; i < thumbnails.length; i++) {
+            thumbnails[i] = mSnapshotViewMap.valueAt(i);
+        }
+        return thumbnails;
+    }
+
+    @Override
+    public void onRecycle() {
+        resetPersistentViewTransforms();
+        // Clear any references to the thumbnail (it will be re-read either from the cache or the
+        // system on next bind)
+        for (Task task : mTasks) {
+            TaskThumbnailView thumbnailView = mSnapshotViewMap.get(task.key.id);
+            if (thumbnailView != null) {
+                thumbnailView.setThumbnail(task, null);
+            }
+        }
+        setOverlayEnabled(false);
+        onTaskListVisibilityChanged(false);
+        setVisibility(VISIBLE);
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+        int containerWidth = MeasureSpec.getSize(widthMeasureSpec);
+        int containerHeight = MeasureSpec.getSize(heightMeasureSpec);
+
+        setMeasuredDimension(containerWidth, containerHeight);
+
+        int thumbnailTopMarginPx = mActivity.getDeviceProfile().overviewTaskThumbnailTopMarginPx;
+        containerHeight -= thumbnailTopMarginPx;
+
+        int thumbnails = mSnapshotViewMap.size();
+        if (thumbnails == 0) {
+            return;
+        }
+
+        int windowWidth = mActivity.getDeviceProfile().widthPx;
+        int windowHeight = mActivity.getDeviceProfile().heightPx;
+
+        float scaleWidth = containerWidth / (float) windowWidth;
+        float scaleHeight = containerHeight / (float) windowHeight;
+
+        if (DEBUG) {
+            Log.d(TAG,
+                    "onMeasure: container=[" + containerWidth + "," + containerHeight + "] window=["
+                            + windowWidth + "," + windowHeight + "] scale=[" + scaleWidth + ","
+                            + scaleHeight + "]");
+        }
+
+        // Desktop tile is a shrunk down version of launcher and freeform task thumbnails.
+        for (int i = 0; i < mTasks.size(); i++) {
+            Task task = mTasks.get(i);
+            Rect taskSize = task.appBounds;
+            if (taskSize == null) {
+                // Default to quarter of the desktop if we did not get app bounds.
+                taskSize = new Rect(0, 0, windowWidth / 4, windowHeight / 4);
+            }
+
+            int thumbWidth = (int) (taskSize.width() * scaleWidth);
+            int thumbHeight = (int) (taskSize.height() * scaleHeight);
+
+            TaskThumbnailView thumbnailView = mSnapshotViewMap.get(task.key.id);
+            if (thumbnailView != null) {
+                thumbnailView.measure(MeasureSpec.makeMeasureSpec(thumbWidth, MeasureSpec.EXACTLY),
+                        MeasureSpec.makeMeasureSpec(thumbHeight, MeasureSpec.EXACTLY));
+
+                // Position the task to the same position as it would be on the desktop
+                Point positionInParent = task.positionInParent;
+                if (positionInParent == null) {
+                    positionInParent = new Point(0, 0);
+                }
+                int taskX = (int) (positionInParent.x * scaleWidth);
+                int taskY = (int) (positionInParent.y * scaleHeight);
+                // move task down by margin size
+                taskY += thumbnailTopMarginPx;
+                thumbnailView.setX(taskX);
+                thumbnailView.setY(taskY);
+
+                if (DEBUG) {
+                    Log.d(TAG, "onMeasure: task=" + task.key + " thumb=[" + thumbWidth + ","
+                            + thumbHeight + "]" + " pos=[" + taskX + "," + taskY + "]");
+                }
+            }
+        }
+    }
+
+    @Override
+    public void setOverlayEnabled(boolean overlayEnabled) {
+        // Intentional no-op to prevent setting smart actions overlay on thumbnails
+    }
+
+    @Override
+    public void setFullscreenProgress(float progress) {
+        // TODO(b/249371338): this copies parent implementation and makes it work for N thumbs
+        progress = Utilities.boundToRange(progress, 0, 1);
+        mFullscreenProgress = progress;
+        if (mFullscreenProgress > 0) {
+            // Don't show background while we are transitioning to/from fullscreen
+            mBackgroundView.setVisibility(INVISIBLE);
+        } else {
+            mBackgroundView.setVisibility(VISIBLE);
+        }
+        for (int i = 0; i < mSnapshotViewMap.size(); i++) {
+            TaskThumbnailView thumbnailView = mSnapshotViewMap.valueAt(i);
+            thumbnailView.getTaskOverlay().setFullscreenProgress(progress);
+            updateSnapshotRadius();
+        }
+    }
+
+    @Override
+    protected void updateSnapshotRadius() {
+        for (int i = 0; i < mSnapshotViewMap.size(); i++) {
+            mSnapshotViewMap.valueAt(i).setFullscreenParams(mCurrentFullscreenParams);
+        }
+    }
+
+    @Override
+    protected void setIconsAndBannersTransitionProgress(float progress, boolean invert) {
+        // no-op
+    }
+
+    @Override
+    public void setColorTint(float amount, int tintColor) {
+        for (int i = 0; i < mSnapshotViewMap.size(); i++) {
+            mSnapshotViewMap.valueAt(i).setDimAlpha(amount);
+        }
+    }
+
+    @Override
+    protected void applyThumbnailSplashAlpha() {
+        for (int i = 0; i < mSnapshotViewMap.size(); i++) {
+            mSnapshotViewMap.valueAt(i).setSplashAlpha(mTaskThumbnailSplashAlpha);
+        }
+    }
+
+    @Override
+    void setThumbnailVisibility(int visibility, int taskId) {
+        for (int i = 0; i < mSnapshotViewMap.size(); i++) {
+            mSnapshotViewMap.valueAt(i).setVisibility(visibility);
+        }
+    }
+
+    @Override
+    protected boolean confirmSecondSplitSelectApp() {
+        // Desktop tile can't be in split screen
+        return false;
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/views/DigitalWellBeingToast.java b/quickstep/src/com/android/quickstep/views/DigitalWellBeingToast.java
index 79b15c7..7cd6756 100644
--- a/quickstep/src/com/android/quickstep/views/DigitalWellBeingToast.java
+++ b/quickstep/src/com/android/quickstep/views/DigitalWellBeingToast.java
@@ -53,7 +53,7 @@
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.touch.PagedOrientationHandler;
-import com.android.launcher3.util.SplitConfigurationOptions.StagedSplitBounds;
+import com.android.launcher3.util.SplitConfigurationOptions.SplitBounds;
 import com.android.systemui.shared.recents.model.Task;
 
 import java.lang.annotation.Retention;
@@ -97,13 +97,8 @@
     private View mBanner;
     private ViewOutlineProvider mOldBannerOutlineProvider;
     private float mBannerOffsetPercentage;
-    /**
-     * Clips rect provided by {@link #mOldBannerOutlineProvider} when in the model state to
-     * hide this banner as the taskView scales up and down
-     */
-    private float mModalOffset = 0f;
     @Nullable
-    private StagedSplitBounds mStagedSplitBounds;
+    private SplitBounds mSplitBounds;
     private int mSplitBannerConfig = SPLIT_BANNER_FULLSCREEN;
     private float mSplitOffsetTranslationY;
     private float mSplitOffsetTranslationX;
@@ -164,9 +159,9 @@
         });
     }
 
-    public void setSplitConfiguration(StagedSplitBounds stagedSplitBounds) {
-        mStagedSplitBounds = stagedSplitBounds;
-        if (mStagedSplitBounds == null
+    public void setSplitConfiguration(SplitBounds splitBounds) {
+        mSplitBounds = splitBounds;
+        if (mSplitBounds == null
                 || !mActivity.getDeviceProfile().isTablet
                 || mTaskView.isFocusedTask()) {
             mSplitBannerConfig = SPLIT_BANNER_FULLSCREEN;
@@ -180,11 +175,11 @@
         }
 
         // For landscape grid, for 30% width we only show icon, otherwise show icon and time
-        if (mTask.key.id == mStagedSplitBounds.leftTopTaskId) {
-            mSplitBannerConfig = mStagedSplitBounds.leftTaskPercent < THRESHOLD_LEFT_ICON_ONLY ?
+        if (mTask.key.id == mSplitBounds.leftTopTaskId) {
+            mSplitBannerConfig = mSplitBounds.leftTaskPercent < THRESHOLD_LEFT_ICON_ONLY ?
                     SPLIT_GRID_BANNER_SMALL : SPLIT_GRID_BANNER_LARGE;
         } else {
-            mSplitBannerConfig = mStagedSplitBounds.leftTaskPercent > THRESHOLD_RIGHT_ICON_ONLY ?
+            mSplitBannerConfig = mSplitBounds.leftTaskPercent > THRESHOLD_RIGHT_ICON_ONLY ?
                     SPLIT_GRID_BANNER_SMALL : SPLIT_GRID_BANNER_LARGE;
         }
     }
@@ -321,7 +316,7 @@
         PagedOrientationHandler orientationHandler = mTaskView.getPagedOrientationHandler();
         Pair<Float, Float> translations = orientationHandler
                 .getDwbLayoutTranslations(mTaskView.getMeasuredWidth(),
-                        mTaskView.getMeasuredHeight(), mStagedSplitBounds, deviceProfile,
+                        mTaskView.getMeasuredHeight(), mSplitBounds, deviceProfile,
                         mTaskView.getThumbnails(), mTask.key.id, mBanner);
         mSplitOffsetTranslationX = translations.first;
         mSplitOffsetTranslationY = translations.second;
@@ -331,22 +326,24 @@
     }
 
     private void setBannerOutline() {
-        mOldBannerOutlineProvider = mBanner.getOutlineProvider();
+        // TODO(b\273367585) to investigate why mBanner.getOutlineProvider() can be null
+        mOldBannerOutlineProvider = mBanner.getOutlineProvider() != null
+                ? mBanner.getOutlineProvider()
+                : ViewOutlineProvider.BACKGROUND;
+
         mBanner.setOutlineProvider(new ViewOutlineProvider() {
             @Override
             public void getOutline(View view, Outline outline) {
                 mOldBannerOutlineProvider.getOutline(view, outline);
-                float verticalTranslation = -view.getTranslationY() + mModalOffset
-                        + mSplitOffsetTranslationY;
+                float verticalTranslation = -view.getTranslationY() + mSplitOffsetTranslationY;
                 outline.offset(0, Math.round(verticalTranslation));
             }
         });
         mBanner.setClipToOutline(true);
     }
 
-    void updateBannerOffset(float offsetPercentage, float verticalOffset) {
+    void updateBannerOffset(float offsetPercentage) {
         if (mBanner != null && mBannerOffsetPercentage != offsetPercentage) {
-            mModalOffset = verticalOffset;
             mBannerOffsetPercentage = offsetPercentage;
             updateTranslationY();
             mBanner.invalidateOutline();
@@ -359,10 +356,7 @@
         }
 
         mBanner.setTranslationY(
-                (mBannerOffsetPercentage * mBanner.getHeight()) +
-                        mModalOffset +
-                        mSplitOffsetTranslationY
-        );
+                (mBannerOffsetPercentage * mBanner.getHeight()) + mSplitOffsetTranslationY);
     }
 
     private void updateTranslationX() {
@@ -385,4 +379,12 @@
         mBanner.setLayerType(View.LAYER_TYPE_HARDWARE, layerPaint);
         mBanner.setLayerPaint(layerPaint);
     }
+
+    void setBannerVisibility(int visibility) {
+        if (mBanner == null) {
+            return;
+        }
+
+        mBanner.setVisibility(visibility);
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/views/FloatingTaskView.java b/quickstep/src/com/android/quickstep/views/FloatingTaskView.java
index c980d1e..75a8ea2 100644
--- a/quickstep/src/com/android/quickstep/views/FloatingTaskView.java
+++ b/quickstep/src/com/android/quickstep/views/FloatingTaskView.java
@@ -1,8 +1,8 @@
 package com.android.quickstep.views;
 
-import static com.android.launcher3.anim.Interpolators.ACCEL;
-import static com.android.launcher3.anim.Interpolators.DEACCEL_3;
+import static com.android.launcher3.AbstractFloatingView.TYPE_TASK_MENU;
 import static com.android.launcher3.anim.Interpolators.LINEAR;
+import static com.android.launcher3.anim.Interpolators.clampToProgress;
 
 import android.animation.ValueAnimator;
 import android.content.Context;
@@ -11,25 +11,30 @@
 import android.graphics.Paint;
 import android.graphics.Rect;
 import android.graphics.RectF;
+import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
+import android.util.FloatProperty;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
 
 import androidx.annotation.Nullable;
 
+import com.android.launcher3.AbstractFloatingView;
 import com.android.launcher3.BaseActivity;
 import com.android.launcher3.InsettableFrameLayout;
-import com.android.launcher3.LauncherAnimUtils;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.anim.PendingAnimation;
 import com.android.launcher3.statemanager.StatefulActivity;
+import com.android.launcher3.taskbar.TaskbarActivityContext;
 import com.android.launcher3.touch.PagedOrientationHandler;
 import com.android.launcher3.util.SplitConfigurationOptions;
 import com.android.launcher3.views.BaseDragLayer;
+import com.android.quickstep.util.AnimUtils;
 import com.android.quickstep.util.MultiValueUpdateListener;
+import com.android.quickstep.util.SplitAnimationTimings;
 import com.android.quickstep.util.TaskCornerRadius;
 import com.android.systemui.shared.system.QuickStepContract;
 
@@ -39,7 +44,8 @@
  * which will have the thumbnail from the provided existing TaskView overlaying the taskview itself.
  *
  * Can then animate the taskview using
- * {@link #addAnimation(PendingAnimation, RectF, Rect, boolean, boolean)}
+ * {@link #addStagingAnimation(PendingAnimation, RectF, Rect, boolean, boolean)} or
+ * {@link #addConfirmAnimation(PendingAnimation, RectF, Rect, boolean, boolean)}
  * giving a starting and ending bounds. Currently this is set to use the split placeholder view,
  * but it could be generified.
  *
@@ -47,6 +53,30 @@
  */
 public class FloatingTaskView extends FrameLayout {
 
+    public static final FloatProperty<FloatingTaskView> PRIMARY_TRANSLATE_OFFSCREEN =
+            new FloatProperty<FloatingTaskView>("floatingTaskPrimaryTranslateOffscreen") {
+        @Override
+        public void setValue(FloatingTaskView view, float translation) {
+            ((RecentsView) view.mActivity.getOverviewPanel()).getPagedOrientationHandler()
+                    .setFloatingTaskPrimaryTranslation(
+                            view,
+                            translation,
+                            view.mActivity.getDeviceProfile()
+                    );
+        }
+
+        @Override
+        public Float get(FloatingTaskView view) {
+            return ((RecentsView) view.mActivity.getOverviewPanel())
+                    .getPagedOrientationHandler()
+                    .getFloatingTaskPrimaryTranslation(
+                            view,
+                            view.mActivity.getDeviceProfile()
+                    );
+        }
+    };
+
+    private int mSplitHolderSize;
     private FloatingTaskThumbnailView mThumbnailView;
     private SplitPlaceholderView mSplitPlaceholderView;
     private RectF mStartingPosition;
@@ -56,6 +86,7 @@
     private PagedOrientationHandler mOrientationHandler;
     @SplitConfigurationOptions.StagePosition
     private int mStagePosition;
+    private final Rect mTmpRect = new Rect();
 
     public FloatingTaskView(Context context) {
         this(context, null);
@@ -70,6 +101,9 @@
         mActivity = BaseActivity.fromContext(context);
         mIsRtl = Utilities.isRtl(getResources());
         mFullscreenParams = new FullscreenDrawParams(context);
+
+        mSplitHolderSize = context.getResources().getDimensionPixelSize(
+                R.dimen.split_placeholder_icon_size);
     }
 
     @Override
@@ -98,9 +132,8 @@
 
         RecentsView recentsView = launcher.getOverviewPanel();
         mOrientationHandler = recentsView.getPagedOrientationHandler();
-        mStagePosition = recentsView.getSplitPlaceholder().getActiveSplitStagePosition();
-        mSplitPlaceholderView.setIcon(icon,
-                mContext.getResources().getDimensionPixelSize(R.dimen.split_placeholder_icon_size));
+        mStagePosition = recentsView.getSplitSelectController().getActiveSplitStagePosition();
+        mSplitPlaceholderView.setIcon(icon, mSplitHolderSize);
         mSplitPlaceholderView.getIconView().setRotation(mOrientationHandler.getDegreesRotated());
     }
 
@@ -110,22 +143,42 @@
      */
     public static FloatingTaskView getFloatingTaskView(StatefulActivity launcher,
             View originalView, @Nullable Bitmap thumbnail, Drawable icon, RectF positionOut) {
-        final BaseDragLayer dragLayer = launcher.getDragLayer();
-        ViewGroup parent = (ViewGroup) dragLayer.getParent();
+        final ViewGroup dragLayer = launcher.getDragLayer();
         final FloatingTaskView floatingView = (FloatingTaskView) launcher.getLayoutInflater()
-                .inflate(R.layout.floating_split_select_view, parent, false);
+                .inflate(R.layout.floating_split_select_view, dragLayer, false);
 
         floatingView.init(launcher, originalView, thumbnail, icon, positionOut);
-        parent.addView(floatingView);
+        // Add this animating view underneath the existing open task menu view (if there is one)
+        View openTaskView = AbstractFloatingView.getOpenView(launcher, TYPE_TASK_MENU);
+        int openTaskViewIndex = dragLayer.indexOfChild(openTaskView);
+        if (openTaskViewIndex == -1) {
+            // Add to top if not
+            openTaskViewIndex = dragLayer.getChildCount();
+        }
+        dragLayer.addView(floatingView, openTaskViewIndex - 1);
         return floatingView;
     }
 
     public void updateInitialPositionForView(View originalView) {
-        Rect viewBounds = new Rect(0, 0, originalView.getWidth(), originalView.getHeight());
-        Utilities.getBoundsForViewInDragLayer(mActivity.getDragLayer(), originalView, viewBounds,
-                false /* ignoreTransform */, null /* recycle */,
-                mStartingPosition);
-        final InsettableFrameLayout.LayoutParams lp = new InsettableFrameLayout.LayoutParams(
+        if (originalView.getContext() instanceof TaskbarActivityContext) {
+            // If original View is a button on the Taskbar, find the on-screen bounds and calculate
+            // the equivalent bounds in the DragLayer, so we can set the initial position of
+            // this FloatingTaskView and start the split animation at the correct spot.
+            originalView.getBoundsOnScreen(mTmpRect);
+            mStartingPosition.set(mTmpRect);
+            int[] dragLayerPositionRelativeToScreen =
+                    mActivity.getDragLayer().getLocationOnScreen();
+            mStartingPosition.offset(
+                    -dragLayerPositionRelativeToScreen[0],
+                    -dragLayerPositionRelativeToScreen[1]);
+        } else {
+            Rect viewBounds = new Rect(0, 0, originalView.getWidth(), originalView.getHeight());
+            Utilities.getBoundsForViewInDragLayer(mActivity.getDragLayer(), originalView,
+                    viewBounds, false /* ignoreTransform */, null /* recycle */,
+                    mStartingPosition);
+        }
+
+        final BaseDragLayer.LayoutParams lp = new BaseDragLayer.LayoutParams(
                 Math.round(mStartingPosition.width()),
                 Math.round(mStartingPosition.height()));
         initPosition(mStartingPosition, lp);
@@ -160,6 +213,10 @@
         mSplitPlaceholderView.getIconView().setRotation(mOrientationHandler.getDegreesRotated());
     }
 
+    public void setIcon(Bitmap icon) {
+        mSplitPlaceholderView.setIcon(new BitmapDrawable(icon), mSplitHolderSize);
+    }
+
     protected void initPosition(RectF pos, InsettableFrameLayout.LayoutParams lp) {
         mStartingPosition.set(pos);
         lp.ignoreInsets = true;
@@ -177,8 +234,50 @@
         layout(left, lp.topMargin, left + lp.width, lp.topMargin + lp.height);
     }
 
-    public void addAnimation(PendingAnimation animation, RectF startingBounds, Rect endBounds,
-            boolean fadeWithThumbnail, boolean isStagedTask) {
+    /**
+     * Animates a FloatingTaskThumbnailView and its overlapping SplitPlaceholderView when a split
+     * is staged.
+     */
+    public void addStagingAnimation(PendingAnimation animation, RectF startingBounds,
+            Rect endBounds, boolean fadeWithThumbnail, boolean isStagedTask) {
+        boolean isTablet = mActivity.getDeviceProfile().isTablet;
+        boolean splittingFromOverview = fadeWithThumbnail;
+        SplitAnimationTimings timings;
+
+        if (isTablet && splittingFromOverview) {
+            timings = SplitAnimationTimings.TABLET_OVERVIEW_TO_SPLIT;
+        } else if (!isTablet && splittingFromOverview) {
+            timings = SplitAnimationTimings.PHONE_OVERVIEW_TO_SPLIT;
+        } else {
+            // Splitting from Home is currently only available on tablets
+            timings = SplitAnimationTimings.TABLET_HOME_TO_SPLIT;
+        }
+
+        addAnimation(animation, startingBounds, endBounds, fadeWithThumbnail, isStagedTask,
+                timings);
+    }
+
+    /**
+     * Animates the FloatingTaskThumbnailView and SplitPlaceholderView for the two thumbnails
+     * when a split is confirmed.
+     */
+    public void addConfirmAnimation(PendingAnimation animation, RectF startingBounds,
+            Rect endBounds, boolean fadeWithThumbnail, boolean isStagedTask) {
+        SplitAnimationTimings timings =
+                AnimUtils.getDeviceSplitToConfirmTimings(mActivity.getDeviceProfile().isTablet);
+
+        addAnimation(animation, startingBounds, endBounds, fadeWithThumbnail, isStagedTask,
+                timings);
+    }
+
+    /**
+     * Sets up and builds a split staging animation.
+     * Called by {@link #addStagingAnimation(PendingAnimation, RectF, Rect, boolean, boolean)} and
+     * {@link #addConfirmAnimation(PendingAnimation, RectF, Rect, boolean, boolean)}.
+     */
+    public void addAnimation(PendingAnimation animation, RectF startingBounds,
+            Rect endBounds, boolean fadeWithThumbnail, boolean isStagedTask,
+            SplitAnimationTimings timings) {
         mFullscreenParams.setIsStagedTask(isStagedTask);
         final BaseDragLayer dragLayer = mActivity.getDragLayer();
         int[] dragLayerBounds = new int[2];
@@ -192,26 +291,47 @@
         RectF floatingTaskViewBounds = new RectF();
 
         if (fadeWithThumbnail) {
-            animation.addFloat(mSplitPlaceholderView, SplitPlaceholderView.ALPHA_FLOAT,
-                    0, 1, ACCEL);
-            animation.addFloat(mThumbnailView, LauncherAnimUtils.VIEW_ALPHA,
-                    1, 0, DEACCEL_3);
+            // This code block runs for the placeholder view during Overview > OverviewSplitSelect
+            // and for the selected (secondary) thumbnail during OverviewSplitSelect > Confirmed
+
+            // FloatingTaskThumbnailView: thumbnail fades out to transparent
+            animation.setViewAlpha(mThumbnailView, 0, clampToProgress(LINEAR,
+                    timings.getPlaceholderFadeInStartOffset(),
+                    timings.getPlaceholderFadeInEndOffset()));
+
+            // SplitPlaceholderView: gray background fades in at same time, then new icon fades in
+            fadeInSplitPlaceholder(animation, timings);
         } else if (isStagedTask) {
-            // Fade in the placeholder view when split is initiated from homescreen / all apps
-            // icons.
+            // This code block runs for the placeholder view during Normal > OverviewSplitSelect
+            // and for the placeholder (primary) thumbnail during OverviewSplitSelect > Confirmed
+
+            // Fade in the placeholder view during Normal > OverviewSplitSelect
             if (mSplitPlaceholderView.getAlpha() == 0) {
-                animation.addFloat(mSplitPlaceholderView, SplitPlaceholderView.ALPHA_FLOAT,
-                        0.3f, 1, ACCEL);
+                mSplitPlaceholderView.getIconView().setAlpha(0);
+                fadeInSplitPlaceholder(animation, timings);
             }
+
+            // No-op for placeholder during OverviewSplitSelect > Confirmed, alpha should be set
         }
 
         MultiValueUpdateListener listener = new MultiValueUpdateListener() {
-            final FloatProp mDx = new FloatProp(0, prop.dX, 0, animDuration, LINEAR);
-            final FloatProp mDy = new FloatProp(0, prop.dY, 0, animDuration, LINEAR);
+            // SplitPlaceholderView: rectangle translates and stretches to new position
+            final FloatProp mDx = new FloatProp(0, prop.dX, 0, animDuration,
+                    clampToProgress(timings.getStagedRectXInterpolator(),
+                            timings.getStagedRectSlideStartOffset(),
+                            timings.getStagedRectSlideEndOffset()));
+            final FloatProp mDy = new FloatProp(0, prop.dY, 0, animDuration,
+                    clampToProgress(timings.getStagedRectYInterpolator(),
+                            timings.getStagedRectSlideStartOffset(),
+                            timings.getStagedRectSlideEndOffset()));
             final FloatProp mTaskViewScaleX = new FloatProp(1f, prop.finalTaskViewScaleX, 0,
-                    animDuration, LINEAR);
+                    animDuration, clampToProgress(timings.getStagedRectScaleXInterpolator(),
+                    timings.getStagedRectSlideStartOffset(),
+                    timings.getStagedRectSlideEndOffset()));
             final FloatProp mTaskViewScaleY = new FloatProp(1f, prop.finalTaskViewScaleY, 0,
-                    animDuration, LINEAR);
+                    animDuration, clampToProgress(timings.getStagedRectScaleYInterpolator(),
+                    timings.getStagedRectSlideStartOffset(),
+                    timings.getStagedRectSlideEndOffset()));
             @Override
             public void onUpdate(float percent, boolean initOnly) {
                 // Calculate the icon position.
@@ -223,9 +343,19 @@
                 update(floatingTaskViewBounds, percent);
             }
         };
+
         transitionAnimator.addUpdateListener(listener);
     }
 
+    void fadeInSplitPlaceholder(PendingAnimation animation, SplitAnimationTimings timings) {
+        animation.setViewAlpha(mSplitPlaceholderView, 1, clampToProgress(LINEAR,
+                timings.getPlaceholderFadeInStartOffset(),
+                timings.getPlaceholderFadeInEndOffset()));
+        animation.setViewAlpha(mSplitPlaceholderView.getIconView(), 1, clampToProgress(LINEAR,
+                timings.getPlaceholderIconFadeInStartOffset(),
+                timings.getPlaceholderIconFadeInEndOffset()));
+    }
+
     void drawRoundedRect(Canvas canvas, Paint paint) {
         if (mFullscreenParams == null) {
             return;
@@ -246,12 +376,16 @@
      *                        offscreen).
      */
     void centerIconView(IconView iconView, float onScreenRectCenterX, float onScreenRectCenterY) {
-        mOrientationHandler.updateStagedSplitIconParams(iconView, onScreenRectCenterX,
+        mOrientationHandler.updateSplitIconParams(iconView, onScreenRectCenterX,
                 onScreenRectCenterY, mFullscreenParams.mScaleX, mFullscreenParams.mScaleY,
                 iconView.getDrawableWidth(), iconView.getDrawableHeight(),
                 mActivity.getDeviceProfile(), mStagePosition);
     }
 
+    public int getStagePosition() {
+        return mStagePosition;
+    }
+
     private static class SplitOverlayProperties {
 
         private final float finalTaskViewScaleX;
diff --git a/quickstep/src/com/android/quickstep/views/FloatingWidgetBackgroundView.java b/quickstep/src/com/android/quickstep/views/FloatingWidgetBackgroundView.java
index adea1a4..4ea7753 100644
--- a/quickstep/src/com/android/quickstep/views/FloatingWidgetBackgroundView.java
+++ b/quickstep/src/com/android/quickstep/views/FloatingWidgetBackgroundView.java
@@ -27,8 +27,10 @@
 import android.view.ViewOutlineProvider;
 import android.widget.RemoteViews.RemoteViewOutlineProvider;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
+import com.android.launcher3.R;
 import com.android.launcher3.widget.LauncherAppWidgetHostView;
 import com.android.launcher3.widget.RoundedCornerEnforcement;
 
@@ -65,14 +67,20 @@
         setClipToOutline(true);
     }
 
-    void init(LauncherAppWidgetHostView hostView, View backgroundView, float finalRadius,
-            int fallbackBackgroundColor) {
+    void init(LauncherAppWidgetHostView hostView, @NonNull View backgroundView,
+            float finalRadius, int fallbackBackgroundColor) {
         mFinalRadius = finalRadius;
         mSourceView = backgroundView;
         mInitialOutlineRadius = getOutlineRadius(hostView, backgroundView);
         mIsUsingFallback = false;
         if (isSupportedDrawable(backgroundView.getForeground())) {
-            mOriginalForeground = backgroundView.getForeground();
+            if (backgroundView.getTag(R.id.saved_floating_widget_foreground) == null) {
+                mOriginalForeground = backgroundView.getForeground();
+                backgroundView.setTag(R.id.saved_floating_widget_foreground, mOriginalForeground);
+            } else {
+                mOriginalForeground = (Drawable) backgroundView.getTag(
+                        R.id.saved_floating_widget_foreground);
+            }
             mForegroundProperties.init(
                     mOriginalForeground.getConstantState().newDrawable().mutate());
             setForeground(mForegroundProperties.mDrawable);
@@ -82,7 +90,13 @@
             mSourceView.setForeground(clipPlaceholder);
         }
         if (isSupportedDrawable(backgroundView.getBackground())) {
-            mOriginalBackground = backgroundView.getBackground();
+            if (backgroundView.getTag(R.id.saved_floating_widget_background) == null) {
+                mOriginalBackground = backgroundView.getBackground();
+                backgroundView.setTag(R.id.saved_floating_widget_background, mOriginalBackground);
+            } else {
+                mOriginalBackground = (Drawable) backgroundView.getTag(
+                        R.id.saved_floating_widget_background);
+            }
             mBackgroundProperties.init(
                     mOriginalBackground.getConstantState().newDrawable().mutate());
             setBackground(mBackgroundProperties.mDrawable);
@@ -115,6 +129,10 @@
     }
 
     void recycle() {
+        if (mSourceView != null) {
+            mSourceView.setTag(R.id.saved_floating_widget_foreground, null);
+            mSourceView.setTag(R.id.saved_floating_widget_background, null);
+        }
         mSourceView = null;
         mOriginalForeground = null;
         mOriginalBackground = null;
diff --git a/quickstep/src/com/android/quickstep/views/FloatingWidgetView.java b/quickstep/src/com/android/quickstep/views/FloatingWidgetView.java
index 8a5f42a..6431bdf 100644
--- a/quickstep/src/com/android/quickstep/views/FloatingWidgetView.java
+++ b/quickstep/src/com/android/quickstep/views/FloatingWidgetView.java
@@ -25,6 +25,7 @@
 import android.util.AttributeSet;
 import android.util.Size;
 import android.view.GhostView;
+import android.view.RemoteAnimationTarget;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewTreeObserver.OnGlobalLayoutListener;
@@ -41,7 +42,6 @@
 import com.android.launcher3.views.ListenerView;
 import com.android.launcher3.widget.LauncherAppWidgetHostView;
 import com.android.launcher3.widget.RoundedCornerEnforcement;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
 
 /** A view that mimics an App Widget through a launch animation. */
 @TargetApi(Build.VERSION_CODES.S)
@@ -304,7 +304,7 @@
      * context's theme background color.
      */
     public static int getDefaultBackgroundColor(
-            Context context, RemoteAnimationTargetCompat target) {
+            Context context, RemoteAnimationTarget target) {
         return (target != null && target.taskInfo.taskDescription != null)
                 ? target.taskInfo.taskDescription.getBackgroundColor()
                 : Themes.getColorBackground(context);
diff --git a/quickstep/src/com/android/quickstep/views/GroupedTaskView.java b/quickstep/src/com/android/quickstep/views/GroupedTaskView.java
index 244a794..c91b183 100644
--- a/quickstep/src/com/android/quickstep/views/GroupedTaskView.java
+++ b/quickstep/src/com/android/quickstep/views/GroupedTaskView.java
@@ -1,11 +1,13 @@
 package com.android.quickstep.views;
 
+import static android.app.ActivityTaskManager.INVALID_TASK_ID;
+
 import static com.android.launcher3.util.SplitConfigurationOptions.DEFAULT_SPLIT_RATIO;
 import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_BOTTOM_OR_RIGHT;
-import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT;
 
 import android.content.Context;
 import android.graphics.PointF;
+import android.graphics.Rect;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.View;
@@ -17,15 +19,19 @@
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.util.RunnableList;
-import com.android.launcher3.util.SplitConfigurationOptions.StagedSplitBounds;
+import com.android.launcher3.util.SplitConfigurationOptions;
+import com.android.launcher3.util.SplitConfigurationOptions.SplitBounds;
 import com.android.launcher3.util.TransformingTouchDelegate;
 import com.android.quickstep.RecentsModel;
 import com.android.quickstep.TaskIconCache;
 import com.android.quickstep.TaskThumbnailCache;
 import com.android.quickstep.util.CancellableTask;
 import com.android.quickstep.util.RecentsOrientedState;
+import com.android.quickstep.util.SplitSelectStateController;
+import com.android.quickstep.util.TaskViewSimulator;
 import com.android.systemui.shared.recents.model.Task;
 import com.android.systemui.shared.recents.model.ThumbnailData;
+import com.android.systemui.shared.recents.utilities.PreviewPositionHelper;
 import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
 
 import java.util.HashMap;
@@ -53,7 +59,7 @@
     private CancellableTask mIconLoadRequest2;
     private final float[] mIcon2CenterCoords = new float[2];
     private TransformingTouchDelegate mIcon2TouchDelegate;
-    @Nullable private StagedSplitBounds mSplitBoundsConfig;
+    @Nullable private SplitBounds mSplitBoundsConfig;
     private final DigitalWellBeingToast mDigitalWellBeingToast2;
 
     public GroupedTaskView(Context context) {
@@ -70,6 +76,23 @@
     }
 
     @Override
+    protected void updateBorderBounds(Rect bounds) {
+        if (mSplitBoundsConfig == null) {
+            super.updateBorderBounds(bounds);
+            return;
+        }
+        bounds.set(
+                Math.min(mSnapshotView.getLeft() + Math.round(mSnapshotView.getTranslationX()),
+                        mSnapshotView2.getLeft() + Math.round(mSnapshotView2.getTranslationX())),
+                Math.min(mSnapshotView.getTop() + Math.round(mSnapshotView.getTranslationY()),
+                        mSnapshotView2.getTop() + Math.round(mSnapshotView2.getTranslationY())),
+                Math.max(mSnapshotView.getRight() + Math.round(mSnapshotView.getTranslationX()),
+                        mSnapshotView2.getRight() + Math.round(mSnapshotView2.getTranslationX())),
+                Math.max(mSnapshotView.getBottom() + Math.round(mSnapshotView.getTranslationY()),
+                        mSnapshotView2.getBottom() + Math.round(mSnapshotView2.getTranslationY())));
+    }
+
+    @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
         mSnapshotView2 = findViewById(R.id.bottomright_snapshot);
@@ -78,15 +101,41 @@
     }
 
     public void bind(Task primary, Task secondary, RecentsOrientedState orientedState,
-            @Nullable StagedSplitBounds splitBoundsConfig) {
+            @Nullable SplitBounds splitBoundsConfig) {
         super.bind(primary, orientedState);
         mSecondaryTask = secondary;
         mTaskIdContainer[1] = secondary.key.id;
         mTaskIdAttributeContainer[1] = new TaskIdAttributeContainer(secondary, mSnapshotView2,
                 mIconView2, STAGE_POSITION_BOTTOM_OR_RIGHT);
-        mTaskIdAttributeContainer[0].setStagePosition(STAGE_POSITION_TOP_OR_LEFT);
+        mTaskIdAttributeContainer[0].setStagePosition(
+                SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT);
         mSnapshotView2.bind(secondary);
         mSplitBoundsConfig = splitBoundsConfig;
+        if (mSplitBoundsConfig == null) {
+            return;
+        }
+        mSnapshotView.getPreviewPositionHelper().setSplitBounds(TaskViewSimulator
+                        .convertSplitBounds(splitBoundsConfig),
+                PreviewPositionHelper.STAGE_POSITION_TOP_OR_LEFT);
+        mSnapshotView2.getPreviewPositionHelper().setSplitBounds(TaskViewSimulator
+                        .convertSplitBounds(splitBoundsConfig),
+                PreviewPositionHelper.STAGE_POSITION_BOTTOM_OR_RIGHT);
+    }
+
+    /**
+     * Sets up an on-click listener and the visibility for show_windows icon on top of each task.
+     */
+    @Override
+    public void setUpShowAllInstancesListener() {
+        // sets up the listener for the left/top task
+        super.setUpShowAllInstancesListener();
+
+        // right/bottom task's base package name
+        String taskPackageName = mTaskIdAttributeContainer[1].getTask().key.getPackageName();
+
+        // icon of the right/bottom task
+        View showWindowsView = findViewById(R.id.show_windows_right);
+        updateFilterCallback(showWindowsView, getFilterUpdateCallback(taskPackageName));
     }
 
     @Override
@@ -126,8 +175,8 @@
         }
     }
 
-    public void updateSplitBoundsConfig(StagedSplitBounds stagedSplitBounds) {
-        mSplitBoundsConfig = stagedSplitBounds;
+    public void updateSplitBoundsConfig(SplitBounds splitBounds) {
+        mSplitBoundsConfig = splitBounds;
         invalidate();
     }
 
@@ -174,13 +223,11 @@
         // Callbacks run from remote animation when recents animation not currently running
         InteractionJankMonitorWrapper.begin(this,
                 InteractionJankMonitorWrapper.CUJ_SPLIT_SCREEN_ENTER, "Enter form GroupedTaskView");
-        recentsView.getSplitPlaceholder().launchTasks(this /*groupedTaskView*/,
-                success -> {
-                    endCallback.executeAllAndDestroy();
-                    InteractionJankMonitorWrapper.end(
-                            InteractionJankMonitorWrapper.CUJ_SPLIT_SCREEN_ENTER);
-                },
-                false /* freezeTaskList */);
+        launchTask(success -> {
+            endCallback.executeAllAndDestroy();
+            InteractionJankMonitorWrapper.end(
+                    InteractionJankMonitorWrapper.CUJ_SPLIT_SCREEN_ENTER);
+        }, false /* freezeTaskList */);
 
         // Callbacks get run from recentsView for case when recents animation already running
         recentsView.addSideTaskLaunchCallback(endCallback);
@@ -188,9 +235,10 @@
     }
 
     @Override
-    public void launchTask(@NonNull Consumer<Boolean> callback, boolean freezeTaskList) {
-        getRecentsView().getSplitPlaceholder().launchTasks(mTask.key.id, mSecondaryTask.key.id,
-                STAGE_POSITION_TOP_OR_LEFT, callback, freezeTaskList, getSplitRatio());
+    public void launchTask(@NonNull Consumer<Boolean> callback, boolean isQuickswitch) {
+        getRecentsView().getSplitSelectController().launchExistingSplitPair(this, mTask.key.id,
+                mSecondaryTask.key.id, SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT,
+                callback, isQuickswitch, getSplitRatio());
     }
 
     @Override
@@ -208,16 +256,36 @@
     }
 
     @Override
+    public boolean containsTaskId(int taskId) {
+        return (mTask != null && mTask.key.id == taskId)
+                || (mSecondaryTask != null && mSecondaryTask.key.id == taskId);
+    }
+
+    @Override
     public TaskThumbnailView[] getThumbnails() {
         return new TaskThumbnailView[]{mSnapshotView, mSnapshotView2};
     }
 
     @Override
-    protected int getChildTaskIndexAtPosition(PointF position) {
-        if (isCoordInView(mIconView2, position) || isCoordInView(mSnapshotView2, position)) {
+    protected int getLastSelectedChildTaskIndex() {
+        SplitSelectStateController splitSelectController =
+                getRecentsView().getSplitSelectController();
+        if (splitSelectController.isDismissingFromSplitPair()) {
+            // return the container index of the task that wasn't initially selected to split with
+            // because that is the only remaining app that can be selected. The coordinate checks
+            // below aren't reliable since both of those views may be gone/transformed
+            int initSplitTaskId = getThisTaskCurrentlyInSplitSelection();
+            if (initSplitTaskId != INVALID_TASK_ID) {
+                return initSplitTaskId == mTask.key.id ? 1 : 0;
+            }
+        }
+
+        // Check which of the two apps was selected
+        if (isCoordInView(mIconView2, mLastTouchDownPosition)
+                || isCoordInView(mSnapshotView2, mLastTouchDownPosition)) {
             return 1;
         }
-        return super.getChildTaskIndexAtPosition(position);
+        return super.getLastSelectedChildTaskIndex();
     }
 
     private boolean isCoordInView(View v, PointF position) {
@@ -242,16 +310,36 @@
         if (mSplitBoundsConfig == null || mSnapshotView == null || mSnapshotView2 == null) {
             return;
         }
-        getPagedOrientationHandler().measureGroupedTaskViewThumbnailBounds(mSnapshotView,
-                mSnapshotView2, widthSize, heightSize, mSplitBoundsConfig,
-                mActivity.getDeviceProfile(), getLayoutDirection() == LAYOUT_DIRECTION_RTL);
+        int initSplitTaskId = getThisTaskCurrentlyInSplitSelection();
+        if (initSplitTaskId == INVALID_TASK_ID) {
+            getPagedOrientationHandler().measureGroupedTaskViewThumbnailBounds(mSnapshotView,
+                    mSnapshotView2, widthSize, heightSize, mSplitBoundsConfig,
+                    mActivity.getDeviceProfile(), getLayoutDirection() == LAYOUT_DIRECTION_RTL);
+            // Should we be having a separate translation step apart from the measuring above?
+            // The following only applies to large screen for now, but for future reference
+            // we'd want to abstract this out in PagedViewHandlers to get the primary/secondary
+            // translation directions
+            mSnapshotView.applySplitSelectTranslateX(mSnapshotView.getTranslationX());
+            mSnapshotView.applySplitSelectTranslateY(mSnapshotView.getTranslationY());
+            mSnapshotView2.applySplitSelectTranslateX(mSnapshotView2.getTranslationX());
+            mSnapshotView2.applySplitSelectTranslateY(mSnapshotView2.getTranslationY());
+        } else {
+            // Currently being split with this taskView, let the non-split selected thumbnail
+            // take up full thumbnail area
+            TaskIdAttributeContainer container =
+                    mTaskIdAttributeContainer[initSplitTaskId == mTask.key.id ? 1 : 0];
+            container.getThumbnailView().measure(widthMeasureSpec,
+                    View.MeasureSpec.makeMeasureSpec(
+                            heightSize -
+                                    mActivity.getDeviceProfile().overviewTaskThumbnailTopMarginPx,
+                            MeasureSpec.EXACTLY));
+        }
         updateIconPlacement();
     }
 
     @Override
     public void setOverlayEnabled(boolean overlayEnabled) {
-        super.setOverlayEnabled(overlayEnabled);
-        mSnapshotView2.setOverlayEnabled(overlayEnabled);
+        // Intentional no-op to prevent setting smart actions overlay on thumbnails
     }
 
     @Override
@@ -296,14 +384,12 @@
     }
 
     @Override
-    protected void setIconAndDimTransitionProgress(float progress, boolean invert) {
-        super.setIconAndDimTransitionProgress(progress, invert);
+    protected void setIconsAndBannersTransitionProgress(float progress, boolean invert) {
+        super.setIconsAndBannersTransitionProgress(progress, invert);
         // Value set by super call
         float scale = mIconView.getAlpha();
         mIconView2.setAlpha(scale);
-        mDigitalWellBeingToast2.updateBannerOffset(1f - scale,
-                mCurrentFullscreenParams.mCurrentDrawnInsets.top
-                        + mCurrentFullscreenParams.mCurrentDrawnInsets.bottom);
+        mDigitalWellBeingToast2.updateBannerOffset(1f - scale);
     }
 
     @Override
@@ -313,4 +399,45 @@
         mSnapshotView2.setDimAlpha(amount);
         mDigitalWellBeingToast2.setBannerColorTint(tintColor, amount);
     }
+
+    @Override
+    protected void applyThumbnailSplashAlpha() {
+        super.applyThumbnailSplashAlpha();
+        mSnapshotView2.setSplashAlpha(mTaskThumbnailSplashAlpha);
+    }
+
+    @Override
+    protected void refreshTaskThumbnailSplash() {
+        super.refreshTaskThumbnailSplash();
+        mSnapshotView2.refreshSplashView();
+    }
+
+    @Override
+    protected void resetViewTransforms() {
+        super.resetViewTransforms();
+        mSnapshotView2.resetViewTransforms();
+    }
+
+    /**
+     * Sets visibility for thumbnails and associated elements (DWB banners).
+     * IconView is unaffected.
+     *
+     * When setting INVISIBLE, sets the visibility for the last selected child task.
+     * When setting VISIBLE (as a reset), sets the visibility for both tasks.
+     */
+    @Override
+    void setThumbnailVisibility(int visibility, int taskId) {
+        if (visibility == VISIBLE) {
+            mSnapshotView.setVisibility(visibility);
+            mDigitalWellBeingToast.setBannerVisibility(visibility);
+            mSnapshotView2.setVisibility(visibility);
+            mDigitalWellBeingToast2.setBannerVisibility(visibility);
+        } else if (taskId == getTaskIds()[0]) {
+            mSnapshotView.setVisibility(visibility);
+            mDigitalWellBeingToast.setBannerVisibility(visibility);
+        } else {
+            mSnapshotView2.setVisibility(visibility);
+            mDigitalWellBeingToast2.setBannerVisibility(visibility);
+        }
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/views/LaunchableConstraintLayout.kt b/quickstep/src/com/android/quickstep/views/LaunchableConstraintLayout.kt
new file mode 100644
index 0000000..537eca1
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/views/LaunchableConstraintLayout.kt
@@ -0,0 +1,58 @@
+/*
+ * 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.quickstep.views
+
+import android.content.Context
+import android.util.AttributeSet
+import androidx.constraintlayout.widget.ConstraintLayout
+import com.android.systemui.animation.LaunchableView
+import com.android.systemui.animation.LaunchableViewDelegate
+
+/** A [ConstraintLayout] that also implements [LaunchableView]. */
+open class LaunchableConstraintLayout : ConstraintLayout, LaunchableView {
+    private val delegate =
+        LaunchableViewDelegate(
+            this,
+            superSetVisibility = { super.setVisibility(it) },
+        )
+
+    constructor(context: Context) : super(context)
+    constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
+    constructor(
+        context: Context,
+        attrs: AttributeSet?,
+        defStyleAttr: Int,
+    ) : super(context, attrs, defStyleAttr)
+
+    constructor(
+        context: Context,
+        attrs: AttributeSet?,
+        defStyleAttr: Int,
+        defStyleRes: Int,
+    ) : super(context, attrs, defStyleAttr, defStyleRes)
+
+    override fun setShouldBlockVisibilityChanges(block: Boolean) {
+        delegate.setShouldBlockVisibilityChanges(block)
+    }
+
+    override fun setVisibility(visibility: Int) {
+        // Note that super.setVisibility() is passed to the delegate upon creation and called by it.
+        // This method is just a passthrough if no animation is in progress, whereas otherwise it
+        // caches the passed value and restores it at the end of the animation.
+        delegate.setVisibility(visibility)
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java b/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java
index 306ebd7..4dbf4e3 100644
--- a/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/LauncherRecentsView.java
@@ -15,39 +15,49 @@
  */
 package com.android.quickstep.views;
 
+import static android.app.ActivityTaskManager.INVALID_TASK_ID;
+
+import static com.android.launcher3.LauncherState.ALL_APPS;
 import static com.android.launcher3.LauncherState.CLEAR_ALL_BUTTON;
+import static com.android.launcher3.LauncherState.EDIT_MODE;
 import static com.android.launcher3.LauncherState.NORMAL;
 import static com.android.launcher3.LauncherState.OVERVIEW;
 import static com.android.launcher3.LauncherState.OVERVIEW_MODAL_TASK;
 import static com.android.launcher3.LauncherState.OVERVIEW_SPLIT_SELECT;
 import static com.android.launcher3.LauncherState.SPRING_LOADED;
-import static com.android.launcher3.testing.TestProtocol.BAD_STATE;
 
 import android.annotation.TargetApi;
 import android.content.Context;
 import android.os.Build;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.view.MotionEvent;
 import android.view.Surface;
 
 import androidx.annotation.Nullable;
 
 import com.android.launcher3.AbstractFloatingView;
-import com.android.launcher3.BaseQuickstepLauncher;
 import com.android.launcher3.LauncherState;
-import com.android.launcher3.popup.QuickstepSystemShortcut;
+import com.android.launcher3.logging.StatsLogManager;
 import com.android.launcher3.statehandlers.DepthController;
+import com.android.launcher3.statehandlers.DesktopVisibilityController;
+import com.android.launcher3.statemanager.StateManager;
 import com.android.launcher3.statemanager.StateManager.StateListener;
+import com.android.launcher3.uioverrides.QuickstepLauncher;
+import com.android.launcher3.util.PendingSplitSelectInfo;
 import com.android.launcher3.util.SplitConfigurationOptions;
+import com.android.launcher3.util.SplitConfigurationOptions.SplitSelectSource;
+import com.android.quickstep.GestureState;
 import com.android.quickstep.LauncherActivityInterface;
+import com.android.quickstep.RotationTouchHelper;
+import com.android.quickstep.SystemUiProxy;
 import com.android.quickstep.util.SplitSelectStateController;
+import com.android.systemui.shared.recents.model.Task;
 
 /**
  * {@link RecentsView} used in Launcher activity
  */
 @TargetApi(Build.VERSION_CODES.O)
-public class LauncherRecentsView extends RecentsView<BaseQuickstepLauncher, LauncherState>
+public class LauncherRecentsView extends RecentsView<QuickstepLauncher, LauncherState>
         implements StateListener<LauncherState> {
 
     public LauncherRecentsView(Context context) {
@@ -67,14 +77,15 @@
     public void init(OverviewActionsView actionsView,
             SplitSelectStateController splitPlaceholderView) {
         super.init(actionsView, splitPlaceholderView);
-        Log.d(BAD_STATE, "LauncherRecentsView init setContentAlpha=0");
         setContentAlpha(0);
     }
 
     @Override
-    public void startHome() {
-        mActivity.getStateManager().goToState(NORMAL);
-        AbstractFloatingView.closeAllOpenViews(mActivity, mActivity.isStarted());
+    public void startHome(boolean animated) {
+        StateManager stateManager = mActivity.getStateManager();
+        animated &= stateManager.shouldAnimateStateChange();
+        stateManager.goToState(NORMAL, animated);
+        AbstractFloatingView.closeAllOpenViews(mActivity, animated);
     }
 
     @Override
@@ -89,9 +100,24 @@
     }
 
     @Override
+    public void onTaskIconChanged(int taskId) {
+        super.onTaskIconChanged(taskId);
+        // If Launcher needs to return to split select state, do it now, after the icon has updated.
+        if (mActivity.hasPendingSplitSelectInfo()) {
+            PendingSplitSelectInfo recoveryData = mActivity.getPendingSplitSelectInfo();
+            if (recoveryData.getStagedTaskId() == taskId) {
+                initiateSplitSelect(
+                        getTaskViewByTaskId(recoveryData.getStagedTaskId()),
+                        recoveryData.getStagePosition(), recoveryData.getSource()
+                );
+                mActivity.finishSplitSelectRecovery();
+            }
+        }
+    }
+
+    @Override
     public void reset() {
         super.reset();
-
         setLayoutRotation(Surface.ROTATION_0, Surface.ROTATION_0);
     }
 
@@ -103,20 +129,18 @@
         if (toState == OVERVIEW_MODAL_TASK) {
             setOverviewSelectEnabled(true);
         }
-        Log.d(BAD_STATE, "LRV onStateTransitionStart setFreezeVisibility=true, toState=" + toState);
         setFreezeViewVisibility(true);
     }
 
     @Override
     public void onStateTransitionComplete(LauncherState finalState) {
-        if (finalState == NORMAL || finalState == SPRING_LOADED) {
+        if (finalState == NORMAL || finalState == SPRING_LOADED  || finalState == EDIT_MODE
+                || finalState == ALL_APPS) {
             // Clean-up logic that occurs when recents is no longer in use/visible.
             reset();
         }
         boolean isOverlayEnabled = finalState == OVERVIEW || finalState == OVERVIEW_MODAL_TASK;
         setOverlayEnabled(isOverlayEnabled);
-        Log.d(BAD_STATE, "LRV onStateTransitionComplete setFreezeVisibility=false, finalState="
-                + finalState);
         setFreezeViewVisibility(false);
         if (finalState != OVERVIEW_MODAL_TASK) {
             setOverviewSelectEnabled(false);
@@ -137,6 +161,9 @@
                     & CLEAR_ALL_BUTTON) != 0;
             setDisallowScrollToClearAll(!hasClearAllButton);
         }
+        if (mActivity.getDesktopVisibilityController() != null) {
+            mActivity.getDesktopVisibilityController().setOverviewStateEnabled(enabled);
+        }
     }
 
     @Override
@@ -152,13 +179,13 @@
     }
 
     @Override
-    public void setModalStateEnabled(boolean isModalState) {
-        super.setModalStateEnabled(isModalState);
-        if (isModalState) {
-            mActivity.getStateManager().goToState(LauncherState.OVERVIEW_MODAL_TASK);
+    public void setModalStateEnabled(int taskId, boolean animate) {
+        if (taskId != INVALID_TASK_ID) {
+            setSelectedTask(taskId);
+            mActivity.getStateManager().goToState(LauncherState.OVERVIEW_MODAL_TASK, animate);
         } else {
             if (mActivity.isInState(LauncherState.OVERVIEW_MODAL_TASK)) {
-                mActivity.getStateManager().goToState(LauncherState.OVERVIEW);
+                mActivity.getStateManager().goToState(LauncherState.OVERVIEW, animate);
                 resetModalVisuals();
             }
         }
@@ -177,13 +204,14 @@
 
     @Override
     public void initiateSplitSelect(TaskView taskView,
-            @SplitConfigurationOptions.StagePosition int stagePosition) {
-        super.initiateSplitSelect(taskView, stagePosition);
+            @SplitConfigurationOptions.StagePosition int stagePosition,
+            StatsLogManager.EventEnum splitEvent) {
+        super.initiateSplitSelect(taskView, stagePosition, splitEvent);
         mActivity.getStateManager().goToState(LauncherState.OVERVIEW_SPLIT_SELECT);
     }
 
     @Override
-    public void initiateSplitSelect(QuickstepSystemShortcut.SplitSelectSource splitSelectSource) {
+    public void initiateSplitSelect(SplitSelectSource splitSelectSource) {
         super.initiateSplitSelect(splitSelectSource);
         mActivity.getStateManager().goToState(LauncherState.OVERVIEW_SPLIT_SELECT);
     }
@@ -192,4 +220,37 @@
     protected boolean canLaunchFullscreenTask() {
         return !mActivity.isInState(OVERVIEW_SPLIT_SELECT);
     }
+
+    @Override
+    public void onGestureAnimationStart(Task[] runningTasks,
+            RotationTouchHelper rotationTouchHelper) {
+        super.onGestureAnimationStart(runningTasks, rotationTouchHelper);
+        DesktopVisibilityController desktopVisibilityController =
+                mActivity.getDesktopVisibilityController();
+        if (desktopVisibilityController != null) {
+            desktopVisibilityController.setGestureInProgress(true);
+        }
+    }
+
+    @Override
+    public void onGestureAnimationEnd() {
+        DesktopVisibilityController desktopVisibilityController = null;
+        boolean showDesktopApps = false;
+        if (DesktopTaskView.DESKTOP_MODE_SUPPORTED) {
+            desktopVisibilityController = mActivity.getDesktopVisibilityController();
+            if (mCurrentGestureEndTarget == GestureState.GestureEndTarget.LAST_TASK
+                    && desktopVisibilityController.areFreeformTasksVisible()) {
+                // Recents gesture was cancelled and we are returning to the previous task.
+                // After super class has handled clean up, show desktop apps on top again
+                showDesktopApps = true;
+            }
+        }
+        super.onGestureAnimationEnd();
+        if (desktopVisibilityController != null) {
+            desktopVisibilityController.setGestureInProgress(false);
+        }
+        if (showDesktopApps) {
+            SystemUiProxy.INSTANCE.get(mActivity).showDesktopApps(mActivity.getDisplayId());
+        }
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/views/OverviewActionsView.java b/quickstep/src/com/android/quickstep/views/OverviewActionsView.java
index 1c4e497..e47c089 100644
--- a/quickstep/src/com/android/quickstep/views/OverviewActionsView.java
+++ b/quickstep/src/com/android/quickstep/views/OverviewActionsView.java
@@ -22,10 +22,8 @@
 import android.util.AttributeSet;
 import android.view.View;
 import android.view.View.OnClickListener;
-import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.FrameLayout;
-import android.widget.LinearLayout;
 
 import androidx.annotation.IntDef;
 import androidx.annotation.Nullable;
@@ -33,11 +31,11 @@
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Insettable;
 import com.android.launcher3.R;
-import com.android.launcher3.uioverrides.ApiWrapper;
+import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.util.DisplayController;
-import com.android.launcher3.util.DisplayController.NavigationMode;
+import com.android.launcher3.util.MultiPropertyFactory.MultiProperty;
 import com.android.launcher3.util.MultiValueAlpha;
-import com.android.launcher3.util.MultiValueAlpha.AlphaProperty;
+import com.android.launcher3.util.NavigationMode;
 import com.android.quickstep.TaskOverlayFactory.OverlayUICallbacks;
 import com.android.quickstep.util.LayoutUtils;
 
@@ -56,7 +54,11 @@
             HIDDEN_NON_ZERO_ROTATION,
             HIDDEN_NO_TASKS,
             HIDDEN_NO_RECENTS,
-            HIDDEN_SPLIT_SCREEN})
+            HIDDEN_SPLIT_SCREEN,
+            HIDDEN_SPLIT_SELECT_ACTIVE,
+            HIDDEN_ACTIONS_IN_MENU,
+            HIDDEN_DESKTOP
+    })
     @Retention(RetentionPolicy.SOURCE)
     public @interface ActionsHiddenFlags { }
 
@@ -64,6 +66,9 @@
     public static final int HIDDEN_NO_TASKS = 1 << 1;
     public static final int HIDDEN_NO_RECENTS = 1 << 2;
     public static final int HIDDEN_SPLIT_SCREEN = 1 << 3;
+    public static final int HIDDEN_SPLIT_SELECT_ACTIVE = 1 << 4;
+    public static final int HIDDEN_ACTIONS_IN_MENU = 1 << 5;
+    public static final int HIDDEN_DESKTOP = 1 << 6;
 
     @IntDef(flag = true, value = {
             DISABLED_SCROLLING,
@@ -80,8 +85,17 @@
     private static final int INDEX_VISIBILITY_ALPHA = 1;
     private static final int INDEX_FULLSCREEN_ALPHA = 2;
     private static final int INDEX_HIDDEN_FLAGS_ALPHA = 3;
+    private static final int INDEX_SHARE_TARGET_ALPHA = 4;
+    private static final int INDEX_SCROLL_ALPHA = 5;
+    private static final int NUM_ALPHAS = 6;
 
-    private final MultiValueAlpha mMultiValueAlpha;
+    public @interface SplitButtonHiddenFlags { }
+    public static final int FLAG_IS_NOT_TABLET = 1 << 0;
+
+    public @interface SplitButtonDisabledFlags { }
+    public static final int FLAG_SINGLE_TASK = 1 << 0;
+
+    private MultiValueAlpha mMultiValueAlpha;
     private Button mSplitButton;
 
     @ActionsHiddenFlags
@@ -90,6 +104,12 @@
     @ActionsDisabledFlags
     protected int mDisabledFlags;
 
+    @SplitButtonHiddenFlags
+    private int mSplitButtonHiddenFlags;
+
+    @SplitButtonDisabledFlags
+    private int mSplitButtonDisabledFlags;
+
     @Nullable
     protected T mCallbacks;
 
@@ -107,15 +127,15 @@
 
     public OverviewActionsView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr, 0);
-        mMultiValueAlpha = new MultiValueAlpha(this, 5);
-        mMultiValueAlpha.setUpdateVisibility(true);
     }
 
     @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
-        findViewById(R.id.action_screenshot).setOnClickListener(this);
+        mMultiValueAlpha = new MultiValueAlpha(findViewById(R.id.action_buttons), NUM_ALPHAS);
+        mMultiValueAlpha.setUpdateVisibility(true);
 
+        findViewById(R.id.action_screenshot).setOnClickListener(this);
         mSplitButton = findViewById(R.id.action_split);
         mSplitButton.setOnClickListener(this);
     }
@@ -162,7 +182,7 @@
             mHiddenFlags &= ~visibilityFlags;
         }
         boolean isHidden = mHiddenFlags != 0;
-        mMultiValueAlpha.getProperty(INDEX_HIDDEN_FLAGS_ALPHA).setValue(isHidden ? 0 : 1);
+        mMultiValueAlpha.get(INDEX_HIDDEN_FLAGS_ALPHA).setValue(isHidden ? 0 : 1);
     }
 
     /**
@@ -181,39 +201,68 @@
         }
         boolean isEnabled = (mDisabledFlags & ~DISABLED_ROTATED) == 0;
         LayoutUtils.setViewEnabled(this, isEnabled);
+        updateSplitButtonEnabledState();
     }
 
-    public AlphaProperty getContentAlpha() {
-        return mMultiValueAlpha.getProperty(INDEX_CONTENT_ALPHA);
+    /**
+     * Updates the proper flags to indicate whether the "Split screen" button should be hidden.
+     *
+     * @param flag   The flag to update.
+     * @param enable Whether to enable the hidden flag: True will cause view to be hidden.
+     */
+    public void updateSplitButtonHiddenFlags(@SplitButtonHiddenFlags int flag, boolean enable) {
+        if (enable) {
+            mSplitButtonHiddenFlags |= flag;
+        } else {
+            mSplitButtonHiddenFlags &= ~flag;
+        }
+        if (mSplitButton == null) return;
+        boolean shouldBeVisible = mSplitButtonHiddenFlags == 0;
+        mSplitButton.setVisibility(shouldBeVisible ? VISIBLE : GONE);
+        findViewById(R.id.action_split_space).setVisibility(shouldBeVisible ? VISIBLE : GONE);
     }
 
-    public AlphaProperty getVisibilityAlpha() {
-        return mMultiValueAlpha.getProperty(INDEX_VISIBILITY_ALPHA);
+    /**
+     * Updates the proper flags to indicate whether the "Split screen" button should be disabled.
+     *
+     * @param flag   The flag to update.
+     * @param enable Whether to enable the disable flag: True will cause view to be disabled.
+     */
+    public void updateSplitButtonDisabledFlags(@SplitButtonDisabledFlags int flag, boolean enable) {
+        if (enable) {
+            mSplitButtonDisabledFlags |= flag;
+        } else {
+            mSplitButtonDisabledFlags &= ~flag;
+        }
+        updateSplitButtonEnabledState();
     }
 
-    public AlphaProperty getFullscreenAlpha() {
-        return mMultiValueAlpha.getProperty(INDEX_FULLSCREEN_ALPHA);
+    public MultiProperty getContentAlpha() {
+        return mMultiValueAlpha.get(INDEX_CONTENT_ALPHA);
+    }
+
+    public MultiProperty getVisibilityAlpha() {
+        return mMultiValueAlpha.get(INDEX_VISIBILITY_ALPHA);
+    }
+
+    public MultiProperty getFullscreenAlpha() {
+        return mMultiValueAlpha.get(INDEX_FULLSCREEN_ALPHA);
+    }
+
+    public MultiProperty getShareTargetAlpha() {
+        return mMultiValueAlpha.get(INDEX_SHARE_TARGET_ALPHA);
+    }
+
+    public MultiProperty getIndexScrollAlpha() {
+        return mMultiValueAlpha.get(INDEX_SCROLL_ALPHA);
     }
 
     /**
      * Offsets OverviewActionsView horizontal position based on 3 button nav container in taskbar.
      */
     private void updatePadding() {
-        if (mDp == null) {
-            return;
-        }
-        boolean alignFor3ButtonTaskbar = mDp.isTaskbarPresent && !mDp.isGestureMode;
-        if (alignFor3ButtonTaskbar) {
-            // Add extra horizontal spacing
-            int additionalPadding = ApiWrapper.getHotseatEndOffset(getContext());
-            if (isLayoutRtl()) {
-                setPadding(mInsets.left + additionalPadding, 0, mInsets.right, 0);
-            } else {
-                setPadding(mInsets.left, 0, mInsets.right + additionalPadding, 0);
-            }
-        } else {
-            setPadding(mInsets.left, 0, mInsets.right, 0);
-        }
+        // If taskbar is in overview, overview action has dedicated space above nav buttons
+        setPadding(mInsets.left, 0, mInsets.right, 0);
     }
 
     /** Updates vertical margins for different navigation mode or configuration changes. */
@@ -233,12 +282,8 @@
             return 0;
         }
 
-        if (mDp.isVerticalBarLayout()) {
-            return mDp.getInsets().bottom;
-        }
-
-        if (!mDp.isGestureMode && mDp.isTaskbarPresent) {
-            return mDp.getOverviewActionsClaimedSpaceBelow();
+        if (mDp.isTablet && FeatureFlags.ENABLE_GRID_ONLY_OVERVIEW.get()) {
+            return mDp.stashedTaskbarHeight;
         }
 
         // Align to bottom of task Rect.
@@ -254,25 +299,24 @@
         mTaskSize.set(taskSize);
         updateVerticalMargin(DisplayController.getNavigationMode(getContext()));
 
-        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
-                dp.isVerticalBarLayout() ? 0 : dp.overviewActionsButtonSpacing,
-                ViewGroup.LayoutParams.MATCH_PARENT);
-        params.weight = dp.isVerticalBarLayout() ? 1 : 0;
-        findViewById(R.id.action_split_space).setLayoutParams(params);
-
         requestLayout();
 
-        mSplitButton.setCompoundDrawablesWithIntrinsicBounds(
+        mSplitButton.setCompoundDrawablesRelativeWithIntrinsicBounds(
                 (dp.isLandscape ? R.drawable.ic_split_horizontal : R.drawable.ic_split_vertical),
                 0, 0, 0);
     }
 
-    public void setSplitButtonVisible(boolean visible) {
+    /**
+     * Enables/disables the "Split" button based on the status of mSplitButtonDisabledFlags and
+     * mDisabledFlags.
+     */
+    private void updateSplitButtonEnabledState() {
         if (mSplitButton == null) {
             return;
         }
-
-        mSplitButton.setVisibility(visible ? VISIBLE : GONE);
-        findViewById(R.id.action_split_space).setVisibility(visible ? VISIBLE : GONE);
+        boolean isParentEnabled = (mDisabledFlags & ~DISABLED_ROTATED) == 0;
+        boolean shouldBeEnabled = mSplitButtonDisabledFlags == 0 && isParentEnabled;
+        mSplitButton.setEnabled(shouldBeEnabled);
     }
+
 }
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index 2360396..f740d9c 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -16,6 +16,7 @@
 
 package com.android.quickstep.views;
 
+import static android.app.ActivityTaskManager.INVALID_TASK_ID;
 import static android.view.Surface.ROTATION_0;
 import static android.view.View.MeasureSpec.EXACTLY;
 import static android.view.View.MeasureSpec.makeMeasureSpec;
@@ -34,27 +35,36 @@
 import static com.android.launcher3.anim.Interpolators.ACCEL;
 import static com.android.launcher3.anim.Interpolators.ACCEL_0_75;
 import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL;
+import static com.android.launcher3.anim.Interpolators.DEACCEL_2;
+import static com.android.launcher3.anim.Interpolators.EMPHASIZED_DECELERATE;
 import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
 import static com.android.launcher3.anim.Interpolators.FINAL_FRAME;
 import static com.android.launcher3.anim.Interpolators.LINEAR;
+import static com.android.launcher3.anim.Interpolators.OVERSHOOT_0_75;
 import static com.android.launcher3.anim.Interpolators.clampToProgress;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_GRID_ONLY_OVERVIEW;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_LAUNCH_FROM_STAGED_APP;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_OVERVIEW_ACTIONS_SPLIT;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_CLEAR_ALL;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_DISMISS_SWIPE_UP;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_LAUNCH_SWIPE_DOWN;
-import static com.android.launcher3.statehandlers.DepthController.DEPTH;
 import static com.android.launcher3.touch.PagedOrientationHandler.CANVAS_TRANSLATE;
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
 import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
-import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_BOTTOM_OR_RIGHT;
-import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT;
+import static com.android.launcher3.util.MultiPropertyFactory.MULTI_PROPERTY_VALUE;
 import static com.android.launcher3.util.SystemUiController.UI_STATE_FULLSCREEN_TASK;
 import static com.android.quickstep.TaskUtils.checkCurrentOrManagedUserId;
 import static com.android.quickstep.views.ClearAllButton.DISMISS_ALPHA;
+import static com.android.quickstep.views.DesktopTaskView.DESKTOP_MODE_SUPPORTED;
+import static com.android.quickstep.views.OverviewActionsView.FLAG_IS_NOT_TABLET;
+import static com.android.quickstep.views.OverviewActionsView.FLAG_SINGLE_TASK;
+import static com.android.quickstep.views.OverviewActionsView.HIDDEN_ACTIONS_IN_MENU;
+import static com.android.quickstep.views.OverviewActionsView.HIDDEN_DESKTOP;
 import static com.android.quickstep.views.OverviewActionsView.HIDDEN_NON_ZERO_ROTATION;
 import static com.android.quickstep.views.OverviewActionsView.HIDDEN_NO_RECENTS;
 import static com.android.quickstep.views.OverviewActionsView.HIDDEN_NO_TASKS;
 import static com.android.quickstep.views.OverviewActionsView.HIDDEN_SPLIT_SCREEN;
+import static com.android.quickstep.views.OverviewActionsView.HIDDEN_SPLIT_SELECT_ACTIVE;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
@@ -66,9 +76,12 @@
 import android.animation.ValueAnimator;
 import android.annotation.SuppressLint;
 import android.annotation.TargetApi;
+import android.app.WindowConfiguration;
 import android.content.Context;
+import android.content.Intent;
 import android.content.LocusId;
 import android.content.res.Configuration;
+import android.graphics.Bitmap;
 import android.graphics.BlendMode;
 import android.graphics.Canvas;
 import android.graphics.Color;
@@ -96,6 +109,7 @@
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
+import android.view.RemoteAnimationTarget;
 import android.view.View;
 import android.view.ViewDebug;
 import android.view.ViewGroup;
@@ -121,6 +135,7 @@
 import com.android.launcher3.PagedView;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.anim.AnimatorListeners;
 import com.android.launcher3.anim.AnimatorPlaybackController;
 import com.android.launcher3.anim.PendingAnimation;
@@ -128,30 +143,32 @@
 import com.android.launcher3.compat.AccessibilityManagerCompat;
 import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.icons.cache.HandlerRunnable;
-import com.android.launcher3.popup.QuickstepSystemShortcut;
+import com.android.launcher3.logging.StatsLogManager;
 import com.android.launcher3.statehandlers.DepthController;
 import com.android.launcher3.statemanager.BaseState;
 import com.android.launcher3.statemanager.StatefulActivity;
+import com.android.launcher3.testing.TestLogging;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.touch.OverScroll;
 import com.android.launcher3.touch.PagedOrientationHandler;
 import com.android.launcher3.util.DynamicResource;
 import com.android.launcher3.util.IntArray;
 import com.android.launcher3.util.IntSet;
-import com.android.launcher3.util.MultiValueAlpha;
 import com.android.launcher3.util.ResourceBasedOverride.Overrides;
 import com.android.launcher3.util.RunnableList;
+import com.android.launcher3.util.SplitConfigurationOptions.SplitBounds;
+import com.android.launcher3.util.SplitConfigurationOptions.SplitSelectSource;
 import com.android.launcher3.util.SplitConfigurationOptions.StagePosition;
-import com.android.launcher3.util.SplitConfigurationOptions.StagedSplitBounds;
 import com.android.launcher3.util.Themes;
 import com.android.launcher3.util.TranslateEdgeEffect;
+import com.android.launcher3.util.VibratorWrapper;
 import com.android.launcher3.util.ViewPool;
-import com.android.quickstep.AnimatedFloat;
 import com.android.quickstep.BaseActivityInterface;
 import com.android.quickstep.GestureState;
 import com.android.quickstep.RecentsAnimationController;
 import com.android.quickstep.RecentsAnimationTargets;
+import com.android.quickstep.RecentsFilterState;
 import com.android.quickstep.RecentsModel;
-import com.android.quickstep.RecentsModel.TaskVisualsChangeListener;
 import com.android.quickstep.RemoteAnimationTargets;
 import com.android.quickstep.RemoteTargetGluer;
 import com.android.quickstep.RemoteTargetGluer.RemoteTargetHandle;
@@ -162,32 +179,41 @@
 import com.android.quickstep.TaskViewUtils;
 import com.android.quickstep.TopTaskTracker;
 import com.android.quickstep.ViewUtils;
+import com.android.quickstep.util.ActiveGestureErrorDetector;
+import com.android.quickstep.util.ActiveGestureLog;
+import com.android.quickstep.util.AnimUtils;
+import com.android.quickstep.util.DesktopTask;
 import com.android.quickstep.util.GroupTask;
 import com.android.quickstep.util.LayoutUtils;
+import com.android.quickstep.util.RecentsAtomicAnimationFactory;
 import com.android.quickstep.util.RecentsOrientedState;
-import com.android.quickstep.util.SplitScreenBounds;
+import com.android.quickstep.util.SplitAnimationController.Companion.SplitAnimInitProps;
+import com.android.quickstep.util.SplitAnimationTimings;
 import com.android.quickstep.util.SplitSelectStateController;
+import com.android.quickstep.util.SurfaceTransaction;
 import com.android.quickstep.util.SurfaceTransactionApplier;
 import com.android.quickstep.util.TaskViewSimulator;
+import com.android.quickstep.util.TaskVisualsChangeListener;
 import com.android.quickstep.util.TransformParams;
-import com.android.quickstep.util.VibratorWrapper;
+import com.android.quickstep.util.VibrationConstants;
+import com.android.quickstep.views.TaskView.TaskIdAttributeContainer;
 import com.android.systemui.plugins.ResourceProvider;
 import com.android.systemui.shared.recents.model.Task;
 import com.android.systemui.shared.recents.model.ThumbnailData;
 import com.android.systemui.shared.system.ActivityManagerWrapper;
 import com.android.systemui.shared.system.InteractionJankMonitorWrapper;
 import com.android.systemui.shared.system.PackageManagerWrapper;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
-import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams;
 import com.android.systemui.shared.system.TaskStackChangeListener;
 import com.android.systemui.shared.system.TaskStackChangeListeners;
 import com.android.wm.shell.pip.IPipAnimationListener;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Objects;
 import java.util.function.Consumer;
+import java.util.stream.Collectors;
 
 /**
  * A list of recent tasks.
@@ -196,15 +222,11 @@
 public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_TYPE>,
         STATE_TYPE extends BaseState<STATE_TYPE>> extends PagedView implements Insettable,
         TaskThumbnailCache.HighResLoadingState.HighResLoadingStateChangedCallback,
-        TaskVisualsChangeListener, SplitScreenBounds.OnChangeListener {
+        TaskVisualsChangeListener {
 
     private static final String TAG = "RecentsView";
     private static final boolean DEBUG = false;
 
-    // TODO(b/184899234): We use this timeout to wait a fixed period after switching to the
-    // screenshot when dismissing the current live task to ensure the app can try and get stopped.
-    private static final int REMOVE_TASK_WAIT_FOR_APP_STOP_MS = 100;
-
     public static final FloatProperty<RecentsView> CONTENT_ALPHA =
             new FloatProperty<RecentsView>("contentAlpha") {
                 @Override
@@ -264,7 +286,7 @@
             Utilities.ATLEAST_S ? VibrationEffect.Composition.PRIMITIVE_LOW_TICK : -1;
     public static final float SCROLL_VIBRATION_PRIMITIVE_SCALE = 0.6f;
     public static final VibrationEffect SCROLL_VIBRATION_FALLBACK =
-            VibratorWrapper.EFFECT_TEXTURE_TICK;
+            VibrationConstants.EFFECT_TEXTURE_TICK;
 
     /**
      * Can be used to tint the color of the RecentsView to simulate a scrim that can views
@@ -362,6 +384,10 @@
                 }
             };
 
+    /**
+     * Progress of Recents view from carousel layout to grid layout. If Recents is not shown as a
+     * grid, then the value remains 0.
+     */
     public static final FloatProperty<RecentsView> RECENTS_GRID_PROGRESS =
             new FloatProperty<RecentsView>("recentsGrid") {
                 @Override
@@ -375,6 +401,23 @@
                 }
             };
 
+    /**
+     * Alpha of the task thumbnail splash, where being in BackgroundAppState has a value of 1, and
+     * being in any other state has a value of 0.
+     */
+    public static final FloatProperty<RecentsView> TASK_THUMBNAIL_SPLASH_ALPHA =
+            new FloatProperty<RecentsView>("taskThumbnailSplashAlpha") {
+                @Override
+                public void setValue(RecentsView view, float taskThumbnailSplashAlpha) {
+                    view.setTaskThumbnailSplashAlpha(taskThumbnailSplashAlpha);
+                }
+
+                @Override
+                public Float get(RecentsView view) {
+                    return view.mTaskThumbnailSplashAlpha;
+                }
+            };
+
     // OverScroll constants
     private static final int OVERSCROLL_PAGE_SNAP_ANIMATION_DURATION = 270;
 
@@ -409,6 +452,8 @@
     protected final Rect mLastComputedTaskSize = new Rect();
     protected final Rect mLastComputedGridSize = new Rect();
     protected final Rect mLastComputedGridTaskSize = new Rect();
+    protected final Rect mLastComputedDesktopTaskSize = new Rect();
+    private TaskView mSelectedTask = null;
     // How much a task that is directly offscreen will be pushed out due to RecentsView scale/pivot.
     @Nullable
     protected Float mLastComputedTaskStartPushOutDistance = null;
@@ -445,10 +490,11 @@
     private final InvariantDeviceProfile mIdp;
 
     /**
-     * Getting views should be done via {@link #getTaskViewFromPool(boolean)}
+     * Getting views should be done via {@link #getTaskViewFromPool(int)}
      */
     private final ViewPool<TaskView> mTaskViewPool;
     private final ViewPool<GroupedTaskView> mGroupedTaskViewPool;
+    private final ViewPool<DesktopTaskView> mDesktopTaskViewPool;
 
     private final TaskOverlayFactory mTaskOverlayFactory;
 
@@ -459,14 +505,19 @@
     private boolean mOverviewFullscreenEnabled;
     private boolean mOverviewSelectEnabled;
 
+    private boolean mShouldClampScrollOffset;
+    private int mClampedScrollOffsetBound;
+
     private float mAdjacentPageHorizontalOffset = 0;
     protected float mTaskViewsSecondaryTranslation = 0;
     protected float mTaskViewsPrimarySplitTranslation = 0;
     protected float mTaskViewsSecondarySplitTranslation = 0;
     // Progress from 0 to 1 where 0 is a carousel and 1 is a 2 row grid.
     private float mGridProgress = 0;
+    private float mTaskThumbnailSplashAlpha = 0;
     private boolean mShowAsGridLastOnLayout = false;
     private final IntSet mTopRowIdSet = new IntSet();
+    private int mClearAllShortTotalWidthTranslation = 0;
 
     // The GestureEndTarget that is still in progress.
     @Nullable
@@ -536,7 +587,7 @@
                                 if (taskRemoved) {
                                     dismissTask(taskId);
                                 }
-                            });
+                            }, RecentsFilterState.getFilter(mFilterState.getPackageNameToFilter()));
                         }
                     }));
         }
@@ -622,16 +673,16 @@
     @Nullable
     private TaskView mSplitHiddenTaskView;
     @Nullable
-    private View mSecondSplitHiddenView;
+    private TaskView mSecondSplitHiddenView;
     @Nullable
-    private StagedSplitBounds mSplitBoundsConfig;
-    private final Toast mSplitToast = Toast.makeText(getContext(),
-            R.string.toast_split_select_app, Toast.LENGTH_SHORT);
+    private SplitBounds mSplitBoundsConfig;
     private final Toast mSplitUnsupportedToast = Toast.makeText(getContext(),
             R.string.toast_split_app_unsupported, Toast.LENGTH_SHORT);
 
+    private SplitInstructionsView mSplitInstructionsView;
+
     @Nullable
-    private QuickstepSystemShortcut.SplitSelectSource mSplitSelectSource;
+    private SplitSelectSource mSplitSelectSource;
 
     /**
      * Keeps track of the index of the TaskView that split screen was initialized with so we know
@@ -657,6 +708,12 @@
     private ObjectAnimator mActionsViewAlphaAnimator;
     private float mActionsViewAlphaAnimatorFinalValue;
 
+    /**
+     * Keeps track of the desktop task. Optional and only present when the feature flag is enabled.
+     */
+    @Nullable
+    private DesktopTaskView mDesktopTaskView;
+
     private MultiWindowModeChangedListener mMultiWindowModeChangedListener =
             new MultiWindowModeChangedListener() {
                 @Override
@@ -677,6 +734,9 @@
     @Nullable
     private TaskLaunchListener mTaskLaunchListener;
 
+    // keeps track of the state of the filter for tasks in recents view
+    private final RecentsFilterState mFilterState = new RecentsFilterState();
+
     public RecentsView(Context context, @Nullable AttributeSet attrs, int defStyleAttr,
             BaseActivityInterface sizeStrategy) {
         super(context, attrs, defStyleAttr);
@@ -702,6 +762,8 @@
                 10 /* initial size */);
         mGroupedTaskViewPool = new ViewPool<>(context, this,
                 R.layout.task_grouped, 20 /* max size */, 10 /* initial size */);
+        mDesktopTaskViewPool = new ViewPool<>(context, this, R.layout.task_desktop,
+                5 /* max size */, 1 /* initial size */);
 
         mIsRtl = mOrientationHandler.getRecentsRtlSetting(getResources());
         setLayoutDirection(mIsRtl ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR);
@@ -710,6 +772,8 @@
         mSplitPlaceholderInset = getResources().getDimensionPixelSize(
                 R.dimen.split_placeholder_inset);
         mSquaredTouchSlop = squaredTouchSlop(context);
+        mClampedScrollOffsetBound = getResources().getDimensionPixelSize(
+                R.dimen.transient_taskbar_clamped_offset_bound);
 
         mEmptyIcon = context.getDrawable(R.drawable.ic_empty_recents);
         mEmptyIcon.setCallback(this);
@@ -736,6 +800,74 @@
         mActivity.getViewCache().setCacheSize(R.layout.digital_wellbeing_toast, 5);
 
         mTintingColor = getForegroundScrimDimColor(context);
+
+        // if multi-instance feature is enabled
+        if (FeatureFlags.ENABLE_MULTI_INSTANCE.get()) {
+            // invalidate the current list of tasks if filter changes with a fading in/out animation
+            mFilterState.setOnFilterUpdatedListener(() -> {
+                Animator animatorFade = mActivity.getStateManager().createStateElementAnimation(
+                        RecentsAtomicAnimationFactory.INDEX_RECENTS_FADE_ANIM, 1f, 0f);
+                Animator animatorAppear = mActivity.getStateManager().createStateElementAnimation(
+                        RecentsAtomicAnimationFactory.INDEX_RECENTS_FADE_ANIM, 0f, 1f);
+                animatorFade.addListener(new AnimatorListenerAdapter() {
+                    @Override
+                    public void onAnimationEnd(@NonNull Animator animation) {
+                        RecentsView.this.invalidateTaskList();
+                        updateClearAllFunction();
+                        reloadIfNeeded();
+                        if (mPendingAnimation != null) {
+                            mPendingAnimation.addEndListener(success -> {
+                                animatorAppear.start();
+                            });
+                        } else {
+                            animatorAppear.start();
+                        }
+                    }
+                });
+                animatorFade.start();
+            });
+        }
+        // make sure filter is turned off by default
+        mFilterState.setFilterBy(null);
+    }
+
+    /** Get the state of the filter */
+    public RecentsFilterState getFilterState() {
+        return mFilterState;
+    }
+
+    /**
+     * Toggles the filter and reloads the recents view if needed.
+     *
+     * @param packageName package name to filter by if the filter is being turned on;
+     *                    should be null if filter is being turned off
+     */
+    public void setAndApplyFilter(@Nullable String packageName) {
+        mFilterState.setFilterBy(packageName);
+    }
+
+    /**
+     * Updates the "Clear All" button and its function depending on the recents view state.
+     *
+     * TODO: add a different button for going back to overview. Present solution is for demo only.
+     */
+    public void updateClearAllFunction() {
+        if (mFilterState.isFiltered()) {
+            mClearAllButton.setText(R.string.recents_back);
+            mClearAllButton.setOnClickListener((view) -> {
+                this.setAndApplyFilter(null);
+            });
+        } else {
+            mClearAllButton.setText(R.string.recents_clear_all);
+            mClearAllButton.setOnClickListener(this::dismissAllTasks);
+        }
+    }
+
+    /**
+     * Invalidates the list of tasks so that an update occurs to the list of tasks if requested.
+     */
+    private void invalidateTaskList() {
+        mTaskListChangeId = -1;
     }
 
     public OverScroller getScroller() {
@@ -781,8 +913,7 @@
             }
             super.dispatchDraw(canvas);
         }
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get() && mEnableDrawingLiveTile
-                && mRemoteTargetHandles != null) {
+        if (mEnableDrawingLiveTile && mRemoteTargetHandles != null) {
             redrawLiveTile();
         }
     }
@@ -825,7 +956,7 @@
         if (mHandleTaskStackChanges) {
             TaskView taskView = getTaskViewByTaskId(taskId);
             if (taskView != null) {
-                for (TaskView.TaskIdAttributeContainer container :
+                for (TaskIdAttributeContainer container :
                         taskView.getTaskIdAttributeContainers()) {
                     if (container == null || taskId != container.getTask().key.id) {
                         continue;
@@ -852,6 +983,14 @@
         }
     }
 
+    @Override
+    public void onTaskIconChanged(int taskId) {
+        TaskView taskView = getTaskViewByTaskId(taskId);
+        if (taskView != null) {
+            taskView.refreshTaskThumbnailSplash();
+        }
+    }
+
     /**
      * Update the thumbnail of the task.
      * @param refreshNow Refresh immediately if it's true.
@@ -877,7 +1016,7 @@
         mSplitSelectStateController = splitController;
     }
 
-    public SplitSelectStateController getSplitPlaceholder() {
+    public SplitSelectStateController getSplitSelectController() {
         return mSplitSelectStateController;
     }
 
@@ -905,10 +1044,9 @@
                 .setSyncTransactionApplier(mSyncTransactionApplier));
         RecentsModel.INSTANCE.get(getContext()).addThumbnailChangeListener(this);
         mIPipAnimationListener.setActivityAndRecentsView(mActivity, this);
-        SystemUiProxy.INSTANCE.get(getContext()).setPinnedStackAnimationListener(
+        SystemUiProxy.INSTANCE.get(getContext()).setPipAnimationListener(
                 mIPipAnimationListener);
         mOrientationState.initListeners();
-        SplitScreenBounds.INSTANCE.addOnChangeListener(this);
         mTaskOverlayFactory.initListeners();
     }
 
@@ -924,8 +1062,7 @@
                 .setSyncTransactionApplier(null));
         executeSideTaskLaunchCallback();
         RecentsModel.INSTANCE.get(getContext()).removeThumbnailChangeListener(this);
-        SystemUiProxy.INSTANCE.get(getContext()).setPinnedStackAnimationListener(null);
-        SplitScreenBounds.INSTANCE.removeOnChangeListener(this);
+        SystemUiProxy.INSTANCE.get(getContext()).setPipAnimationListener(null);
         mIPipAnimationListener.setActivityAndRecentsView(null, null);
         mOrientationState.destroyListeners();
         mTaskOverlayFactory.removeListeners();
@@ -947,6 +1084,8 @@
             }
             if (child instanceof GroupedTaskView) {
                 mGroupedTaskViewPool.recycle((GroupedTaskView) taskView);
+            } else if (child instanceof DesktopTaskView) {
+                mDesktopTaskViewPool.recycle((DesktopTaskView) taskView);
             } else {
                 mTaskViewPool.recycle(taskView);
             }
@@ -972,6 +1111,16 @@
         super.draw(canvas);
     }
 
+    @Override
+    public boolean requestChildRectangleOnScreen(View child, Rect rectangle, boolean immediate) {
+        if (isModal()) {
+            // Do not scroll when clicking on a modal grid task, as it will already be centered
+            // on screen.
+            return false;
+        }
+        return super.requestChildRectangleOnScreen(child, rectangle, immediate);
+    }
+
     public void addSideTaskLaunchCallback(RunnableList callback) {
         if (mSideTaskLaunchCallback == null) {
             mSideTaskLaunchCallback = new RunnableList();
@@ -1021,8 +1170,8 @@
         }
     }
 
-    public void launchSideTaskInLiveTileMode(int taskId, RemoteAnimationTargetCompat[] apps,
-            RemoteAnimationTargetCompat[] wallpaper, RemoteAnimationTargetCompat[] nonApps) {
+    public void launchSideTaskInLiveTileMode(int taskId, RemoteAnimationTarget[] apps,
+            RemoteAnimationTarget[] wallpaper, RemoteAnimationTarget[] nonApps) {
         AnimatorSet anim = new AnimatorSet();
         TaskView taskView = getTaskViewByTaskId(taskId);
         if (taskView == null || !isTaskViewVisible(taskView)) {
@@ -1034,14 +1183,26 @@
             appAnimator.setInterpolator(ACCEL_DEACCEL);
             appAnimator.addUpdateListener(valueAnimator -> {
                 float percent = valueAnimator.getAnimatedFraction();
-                SurfaceParams.Builder builder = new SurfaceParams.Builder(
-                        apps[apps.length - 1].leash);
+                SurfaceTransaction transaction = new SurfaceTransaction();
                 Matrix matrix = new Matrix();
                 matrix.postScale(percent, percent);
                 matrix.postTranslate(mActivity.getDeviceProfile().widthPx * (1 - percent) / 2,
                         mActivity.getDeviceProfile().heightPx * (1 - percent) / 2);
-                builder.withAlpha(percent).withMatrix(matrix);
-                surfaceApplier.scheduleApply(builder.build());
+                transaction.forSurface(apps[apps.length - 1].leash)
+                        .setAlpha(percent)
+                        .setMatrix(matrix);
+                surfaceApplier.scheduleApply(transaction);
+            });
+            appAnimator.addListener(new AnimatorListenerAdapter() {
+                @Override
+                public void onAnimationStart(Animator animation) {
+                    super.onAnimationStart(animation);
+                    final SurfaceTransaction showTransaction = new SurfaceTransaction();
+                    for (int i = apps.length - 1; i >= 0; --i) {
+                        showTransaction.getTransaction().show(apps[i].leash);
+                    }
+                    surfaceApplier.scheduleApply(showTransaction);
+                }
             });
             anim.play(appAnimator);
             anim.addListener(new AnimatorListenerAdapter() {
@@ -1109,21 +1270,9 @@
         return clearAllScroll + (mIsRtl ? distance : -distance);
     }
 
-    private int getSnapToFocusedTaskScrollDiff(boolean isClearAllHidden) {
-        int screenStart = mOrientationHandler.getPrimaryScroll(this);
-        int targetScroll = getScrollForPage(indexOfChild(getFocusedTaskView()));
-        if (!isClearAllHidden) {
-            int clearAllWidth = mOrientationHandler.getPrimarySize(mClearAllButton);
-            int taskGridHorizontalDiff = mLastComputedTaskSize.right - mLastComputedGridSize.right;
-            int clearAllFocusScrollDiff =  taskGridHorizontalDiff - clearAllWidth;
-            targetScroll += mIsRtl ? clearAllFocusScrollDiff : -clearAllFocusScrollDiff;
-        }
-        return screenStart - targetScroll;
-    }
-
     private boolean isTaskViewWithinBounds(TaskView tv, int start, int end) {
         int taskStart = mOrientationHandler.getChildStart(tv) + (int) tv.getOffsetAdjustment(
-                showAsFullscreen(), showAsGrid());
+                showAsGrid());
         int taskSize = (int) (mOrientationHandler.getMeasuredSize(tv) * tv.getSizeAdjustment(
                 showAsFullscreen()));
         int taskEnd = taskStart + taskSize;
@@ -1133,7 +1282,7 @@
 
     private boolean isTaskViewFullyWithinBounds(TaskView tv, int start, int end) {
         int taskStart = mOrientationHandler.getChildStart(tv) + (int) tv.getOffsetAdjustment(
-                showAsFullscreen(), showAsGrid());
+                showAsGrid());
         int taskSize = (int) (mOrientationHandler.getMeasuredSize(tv) * tv.getSizeAdjustment(
                 showAsFullscreen()));
         int taskEnd = taskStart + taskSize;
@@ -1159,20 +1308,42 @@
      */
     @Nullable
     public TaskView getTaskViewByTaskId(int taskId) {
-        if (taskId == -1) {
+        if (taskId == INVALID_TASK_ID) {
             return null;
         }
 
         for (int i = 0; i < getTaskViewCount(); i++) {
             TaskView taskView = requireTaskViewAt(i);
-            int[] taskIds = taskView.getTaskIds();
-            if (taskIds[0] == taskId || taskIds[1] == taskId) {
+            if (taskView.containsTaskId(taskId)) {
                 return taskView;
             }
         }
         return null;
     }
 
+    /**
+     * Returns a {@link TaskView} that has taskIds matching {@code taskIds} or null if no match.
+     */
+    @Nullable
+    public TaskView getTaskViewByTaskIds(int[] taskIds) {
+        if (!hasAnyValidTaskIds(taskIds)) {
+            return null;
+        }
+
+        for (int i = 0; i < getTaskViewCount(); i++) {
+            TaskView taskView = requireTaskViewAt(i);
+            if (Arrays.equals(taskIds, taskView.getTaskIds())) {
+                return taskView;
+            }
+        }
+        return null;
+    }
+
+    /** Returns false if {@code taskIds} is null or contains invalid values, true otherwise */
+    private boolean hasAnyValidTaskIds(int[] taskIds) {
+        return taskIds != null && !Arrays.equals(taskIds, INVALID_TASK_IDS);
+    }
+
     public void setOverviewStateEnabled(boolean enabled) {
         mOverviewStateEnabled = enabled;
         updateTaskStackListenerState();
@@ -1203,17 +1374,24 @@
         if (!mActivity.getDeviceProfile().isTablet) {
             mActionsView.updateDisabledFlags(OverviewActionsView.DISABLED_SCROLLING, true);
         }
+        if (mOverviewStateEnabled) { // only when in overview
+            InteractionJankMonitorWrapper.begin(/* view= */ this,
+                    InteractionJankMonitorWrapper.CUJ_RECENTS_SCROLLING);
+        }
     }
 
     @Override
     protected void onPageEndTransition() {
         super.onPageEndTransition();
+        ActiveGestureLog.INSTANCE.addLog(
+                "onPageEndTransition: current page index updated", getNextPage());
         if (isClearAllHidden() && !mActivity.getDeviceProfile().isTablet) {
             mActionsView.updateDisabledFlags(OverviewActionsView.DISABLED_SCROLLING, false);
         }
         if (getNextPage() > 0) {
             setSwipeDownShouldLaunchApp(true);
         }
+        InteractionJankMonitorWrapper.end(InteractionJankMonitorWrapper.CUJ_RECENTS_SCROLLING);
     }
 
     @Override
@@ -1363,20 +1541,20 @@
     }
 
     /**
-     * Moves the focused task to the front of the carousel in tablets, to minimize animation
-     * required to focus the task in grid.
+     * Moves the running task to the front of the carousel in tablets, to minimize animation
+     * required to move the running task in grid.
      */
-    public void moveFocusedTaskToFront() {
+    public void moveRunningTaskToFront() {
         if (!mActivity.getDeviceProfile().isTablet) {
             return;
         }
 
-        TaskView focusedTaskView = getFocusedTaskView();
-        if (focusedTaskView == null) {
+        TaskView runningTaskView = getRunningTaskView();
+        if (runningTaskView == null) {
             return;
         }
 
-        if (indexOfChild(focusedTaskView) != mCurrentPage) {
+        if (indexOfChild(runningTaskView) != mCurrentPage) {
             return;
         }
 
@@ -1388,14 +1566,32 @@
         int currentPageScroll = getScrollForPage(mCurrentPage);
         mCurrentPageScrollDiff = primaryScroll - currentPageScroll;
 
-        mMovingTaskView = focusedTaskView;
-        removeView(focusedTaskView);
+        mMovingTaskView = runningTaskView;
+        removeView(runningTaskView);
         mMovingTaskView = null;
-        focusedTaskView.resetPersistentViewTransforms();
-        addView(focusedTaskView, 0);
-        setCurrentPage(0);
+        runningTaskView.resetPersistentViewTransforms();
+        int frontTaskIndex = 0;
+        if (DesktopTaskView.DESKTOP_IS_PROTO2_ENABLED && mDesktopTaskView != null
+                && !runningTaskView.isDesktopTask()) {
+            // If desktop mode is enabled, desktop task view is pinned at first position if present.
+            // Move running task to position 1.
+            frontTaskIndex = 1;
+        }
+        addView(runningTaskView, frontTaskIndex);
+        setCurrentPage(frontTaskIndex);
 
-        updateGridProperties();
+        updateTaskSize();
+    }
+
+    @Override
+    protected void onScrollerAnimationAborted() {
+        ActiveGestureLog.INSTANCE.addLog("scroller animation aborted",
+                ActiveGestureErrorDetector.GestureEvent.SCROLLER_ANIMATION_ABORTED);
+    }
+
+    @Override
+    protected boolean isPageScrollsInitialized() {
+        return super.isPageScrollsInitialized() && mLoadPlanEverApplied;
     }
 
     protected void applyLoadPlan(ArrayList<GroupTask> taskGroups) {
@@ -1411,112 +1607,201 @@
             // With all tasks removed, touch handling in PagedView is disabled and we need to reset
             // touch state or otherwise values will be obsolete.
             resetTouchState();
+            if (isPageScrollsInitialized()) {
+                onPageScrollsInitialized();
+            }
             return;
         }
 
-        int currentTaskId = -1;
+        int[] currentTaskId = INVALID_TASK_IDS;
         TaskView currentTaskView = getTaskViewAt(mCurrentPage);
-        if (currentTaskView != null) {
-            currentTaskId = currentTaskView.getTask().key.id;
+        if (currentTaskView != null && currentTaskView.getTask() != null) {
+            currentTaskId = currentTaskView.getTaskIds();
         }
 
         // Unload existing visible task data
         unloadVisibleTaskData(TaskView.FLAG_UPDATE_ALL);
 
         TaskView ignoreResetTaskView =
-                mIgnoreResetTaskId == -1 ? null : getTaskViewByTaskId(mIgnoreResetTaskId);
+                mIgnoreResetTaskId == INVALID_TASK_ID
+                        ? null : getTaskViewByTaskId(mIgnoreResetTaskId);
 
         // Save running task ID if it exists before rebinding all taskViews, otherwise the task from
         // the runningTaskView currently bound could get assigned to another TaskView
-        int runningTaskId = getTaskIdsForTaskViewId(mRunningTaskViewId)[0];
-        int focusedTaskId = getTaskIdsForTaskViewId(mFocusedTaskViewId)[0];
+        int[] runningTaskId = getTaskIdsForTaskViewId(mRunningTaskViewId);
+        int[] focusedTaskId = getTaskIdsForTaskViewId(mFocusedTaskViewId);
 
         // Removing views sets the currentPage to 0, so we save this and restore it after
         // the new set of views are added
         int previousCurrentPage = mCurrentPage;
         removeAllViews();
 
-        // Add views as children based on whether it's grouped or single task
+        // If we are entering Overview as a result of initiating a split from somewhere else
+        // (e.g. split from Home), we need to make sure the staged app is not drawn as a thumbnail.
+        int stagedTaskIdToBeRemovedFromGrid;
+        if (mSplitSelectSource != null) {
+            stagedTaskIdToBeRemovedFromGrid = mSplitSelectSource.alreadyRunningTaskId;
+            updateCurrentTaskActionsVisibility();
+        } else {
+            stagedTaskIdToBeRemovedFromGrid = INVALID_TASK_ID;
+        }
+        // update the map of instance counts
+        mFilterState.updateInstanceCountMap(taskGroups);
+
+        // Clear out desktop view if it is set
+        mDesktopTaskView = null;
+        DesktopTask desktopTask = null;
+
+        // Add views as children based on whether it's grouped or single task. Looping through
+        // taskGroups backwards populates the thumbnail grid from least recent to most recent.
         for (int i = taskGroups.size() - 1; i >= 0; i--) {
             GroupTask groupTask = taskGroups.get(i);
-            boolean hasMultipleTasks = groupTask.hasMultipleTasks();
-            TaskView taskView = getTaskViewFromPool(hasMultipleTasks);
+            boolean isRemovalNeeded = stagedTaskIdToBeRemovedFromGrid != INVALID_TASK_ID
+                    && groupTask.containsTask(stagedTaskIdToBeRemovedFromGrid);
+
+            if (groupTask instanceof DesktopTask) {
+                desktopTask = (DesktopTask) groupTask;
+                // Desktop task will be added separately in the end
+                continue;
+            }
+
+            TaskView taskView;
+            if (isRemovalNeeded && groupTask.hasMultipleTasks()) {
+                // If we need to remove half of a pair of tasks, force a TaskView with Type.SINGLE
+                // to be a temporary container for the remaining task.
+                taskView = getTaskViewFromPool(TaskView.Type.SINGLE);
+            } else {
+                taskView = getTaskViewFromPool(groupTask.taskViewType);
+            }
+
             addView(taskView);
 
-            if (hasMultipleTasks) {
+            if (isRemovalNeeded && groupTask.hasMultipleTasks()) {
+                if (groupTask.task1.key.id == stagedTaskIdToBeRemovedFromGrid) {
+                    taskView.bind(groupTask.task2, mOrientationState);
+                } else {
+                    taskView.bind(groupTask.task1, mOrientationState);
+                }
+            } else if (isRemovalNeeded) {
+                // If the task we need to remove is not part of a pair, bind it to the TaskView
+                // first (to prevent problems), then remove the whole thing.
+                taskView.bind(groupTask.task1, mOrientationState);
+                removeView(taskView);
+            } else if (taskView instanceof GroupedTaskView) {
                 boolean firstTaskIsLeftTopTask =
-                        groupTask.mStagedSplitBounds.leftTopTaskId == groupTask.task1.key.id;
+                        groupTask.mSplitBounds.leftTopTaskId == groupTask.task1.key.id;
                 Task leftTopTask = firstTaskIsLeftTopTask ? groupTask.task1 : groupTask.task2;
                 Task rightBottomTask = firstTaskIsLeftTopTask ? groupTask.task2 : groupTask.task1;
+
                 ((GroupedTaskView) taskView).bind(leftTopTask, rightBottomTask, mOrientationState,
-                        groupTask.mStagedSplitBounds);
+                        groupTask.mSplitBounds);
             } else {
                 taskView.bind(groupTask.task1, mOrientationState);
             }
-        }
-        if (!taskGroups.isEmpty()) {
-            addView(mClearAllButton);
+
+            // enables instance filtering if the feature flag for it is on
+            if (FeatureFlags.ENABLE_MULTI_INSTANCE.get()) {
+                taskView.setUpShowAllInstancesListener();
+            }
         }
 
-        boolean settlingOnNewTask = mNextPage != INVALID_PAGE;
-        if (settlingOnNewTask) {
-            // Restore mCurrentPage but don't call setCurrentPage() as that clobbers the scroll.
-            mCurrentPage = previousCurrentPage;
-        } else {
-            setCurrentPage(previousCurrentPage);
+        if (!taskGroups.isEmpty()) {
+            addView(mClearAllButton);
+            if (DesktopTaskView.DESKTOP_IS_PROTO2_ENABLED) {
+                // Check if we have apps on the desktop
+                if (desktopTask != null && !desktopTask.tasks.isEmpty()) {
+                    // If we are actively choosing apps for split, skip the desktop tile
+                    if (!getSplitSelectController().isSplitSelectActive()) {
+                        mDesktopTaskView = (DesktopTaskView) getTaskViewFromPool(
+                                TaskView.Type.DESKTOP);
+                        // Always add a desktop task to the first position
+                        addView(mDesktopTaskView, 0);
+                        mDesktopTaskView.bind(desktopTask.tasks, mOrientationState);
+                    }
+                }
+            }
         }
 
         // Keep same previous focused task
-        TaskView newFocusedTaskView = getTaskViewByTaskId(focusedTaskId);
+        TaskView newFocusedTaskView = getTaskViewByTaskIds(focusedTaskId);
         // If the list changed, maybe the focused task doesn't exist anymore
         if (newFocusedTaskView == null && getTaskViewCount() > 0) {
             newFocusedTaskView = getTaskViewAt(0);
+            // Check if the first task is the desktop.
+            // If first task is desktop, try to find another task to set as the focused task
+            if (newFocusedTaskView != null && newFocusedTaskView.isDesktopTask()
+                    && getTaskViewCount() > 1) {
+                newFocusedTaskView = getTaskViewAt(1);
+            }
         }
-        mFocusedTaskViewId = newFocusedTaskView != null ?
-                newFocusedTaskView.getTaskViewId() : -1;
+        mFocusedTaskViewId = newFocusedTaskView != null && !ENABLE_GRID_ONLY_OVERVIEW.get()
+                ? newFocusedTaskView.getTaskViewId() : INVALID_TASK_ID;
         updateTaskSize();
         updateChildTaskOrientations();
 
         TaskView newRunningTaskView = null;
-        if (runningTaskId != -1) {
+        if (hasAnyValidTaskIds(runningTaskId)) {
             // Update mRunningTaskViewId to be the new TaskView that was assigned by binding
             // the full list of tasks to taskViews
-            newRunningTaskView = getTaskViewByTaskId(runningTaskId);
+            newRunningTaskView = getTaskViewByTaskIds(runningTaskId);
             if (newRunningTaskView != null) {
                 mRunningTaskViewId = newRunningTaskView.getTaskViewId();
             } else {
-                mRunningTaskViewId = -1;
+                mRunningTaskViewId = INVALID_TASK_ID;
             }
         }
 
         int targetPage = -1;
-        if (!settlingOnNewTask) {
+        if (mNextPage != INVALID_PAGE) {
+            // Restore mCurrentPage but don't call setCurrentPage() as that clobbers the scroll.
+            mCurrentPage = previousCurrentPage;
+            if (hasAnyValidTaskIds(currentTaskId)) {
+                currentTaskView = getTaskViewByTaskIds(currentTaskId);
+                if (currentTaskView != null) {
+                    targetPage = indexOfChild(currentTaskView);
+                }
+            }
+        } else {
             // Set the current page to the running task, but not if settling on new task.
-            if (runningTaskId != -1) {
+            if (hasAnyValidTaskIds(runningTaskId)) {
                 targetPage = indexOfChild(newRunningTaskView);
             } else if (getTaskViewCount() > 0) {
-                targetPage = indexOfChild(requireTaskViewAt(0));
-            }
-        } else if (currentTaskId != -1) {
-            currentTaskView = getTaskViewByTaskId(currentTaskId);
-            if (currentTaskView != null) {
-                targetPage = indexOfChild(currentTaskView);
+                TaskView taskView = requireTaskViewAt(0);
+                // If first task id desktop, try to find another task to set the target page
+                if (taskView.isDesktopTask() && getTaskViewCount() > 1) {
+                    taskView = requireTaskViewAt(1);
+                }
+                targetPage = indexOfChild(taskView);
             }
         }
         if (targetPage != -1 && mCurrentPage != targetPage) {
-            setCurrentPage(targetPage);
+            int finalTargetPage = targetPage;
+            runOnPageScrollsInitialized(() -> {
+                // TODO(b/246283207): Remove logging once root cause of flake detected.
+                if (Utilities.isRunningInTestHarness()) {
+                    Log.d("b/246283207", "RecentsView#applyLoadPlan() -> "
+                            + "previousCurrentPage: " + previousCurrentPage
+                            + ", targetPage: " + finalTargetPage
+                            + ", getScrollForPage(targetPage): "
+                            + getScrollForPage(finalTargetPage));
+                }
+                setCurrentPage(finalTargetPage);
+            });
         }
 
-        if (mIgnoreResetTaskId != -1 &&
+        if (mIgnoreResetTaskId != INVALID_TASK_ID &&
                 getTaskViewByTaskId(mIgnoreResetTaskId) != ignoreResetTaskView) {
             // If the taskView mapping is changing, do not preserve the visuals. Since we are
             // mostly preserving the first task, and new taskViews are added to the end, it should
             // generally map to the same task.
-            mIgnoreResetTaskId = -1;
+            mIgnoreResetTaskId = INVALID_TASK_ID;
         }
         resetTaskVisuals();
         onTaskStackUpdated();
         updateEnabledOverlays();
+        if (isPageScrollsInitialized()) {
+            onPageScrollsInitialized();
+        }
     }
 
     private boolean isModal() {
@@ -1565,7 +1850,7 @@
      * Returns the number of tasks in the bottom row of the overview grid.
      */
     public int getBottomRowTaskCountForTablet() {
-        return getTaskViewCount() - mTopRowIdSet.size() - 1;
+        return getTaskViewCount() - mTopRowIdSet.size() - (ENABLE_GRID_ONLY_OVERVIEW.get() ? 0 : 1);
     }
 
     protected void onTaskStackUpdated() {
@@ -1582,24 +1867,23 @@
                 taskView.setStableAlpha(mContentAlpha);
                 taskView.setFullscreenProgress(mFullscreenProgress);
                 taskView.setModalness(mTaskModalness);
+                taskView.setTaskThumbnailSplashAlpha(mTaskThumbnailSplashAlpha);
             }
         }
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
-            // resetTaskVisuals is called at the end of dismiss animation which could update
-            // primary and secondary translation of the live tile cut out. We will need to do so
-            // here accordingly.
-            runActionOnRemoteHandles(remoteTargetHandle -> {
-                TaskViewSimulator simulator = remoteTargetHandle.getTaskViewSimulator();
-                simulator.taskPrimaryTranslation.value = 0;
-                simulator.taskSecondaryTranslation.value = 0;
-                simulator.fullScreenProgress.value = 0;
-                simulator.recentsViewScale.value = 1;
-            });
-            // Similar to setRunningTaskHidden below, reapply the state before runningTaskView is
-            // null.
-            if (!mRunningTaskShowScreenshot) {
-                setRunningTaskViewShowScreenshot(mRunningTaskShowScreenshot);
-            }
+        // resetTaskVisuals is called at the end of dismiss animation which could update
+        // primary and secondary translation of the live tile cut out. We will need to do so
+        // here accordingly.
+        runActionOnRemoteHandles(remoteTargetHandle -> {
+            TaskViewSimulator simulator = remoteTargetHandle.getTaskViewSimulator();
+            simulator.taskPrimaryTranslation.value = 0;
+            simulator.taskSecondaryTranslation.value = 0;
+            simulator.fullScreenProgress.value = 0;
+            simulator.recentsViewScale.value = 1;
+        });
+        // Similar to setRunningTaskHidden below, reapply the state before runningTaskView is
+        // null.
+        if (!mRunningTaskShowScreenshot) {
+            setRunningTaskViewShowScreenshot(mRunningTaskShowScreenshot);
         }
         if (mRunningTaskTileHidden) {
             setRunningTaskHidden(mRunningTaskTileHidden);
@@ -1644,6 +1928,9 @@
         DeviceProfile dp = mActivity.getDeviceProfile();
         setOverviewGridEnabled(
                 mActivity.getStateManager().getState().displayOverviewTasksAsGrid(dp));
+        if (ENABLE_GRID_ONLY_OVERVIEW.get()) {
+            mActionsView.updateHiddenFlags(HIDDEN_ACTIONS_IN_MENU, dp.isTablet);
+        }
         setPageSpacing(dp.overviewPageSpacing);
 
         // Propagate DeviceProfile change event.
@@ -1679,6 +1966,7 @@
             // Changed orientations, update controllers so they intercept accordingly.
             mActivity.getDragLayer().recreateControllers();
             onOrientationChanged();
+            resetTaskVisuals();
         }
 
         boolean isInLandscape = mOrientationState.getTouchRotation() != ROTATION_0
@@ -1700,7 +1988,7 @@
     private void onOrientationChanged() {
         // If overview is in modal state when rotate, reset it to overview state without running
         // animation.
-        setModalStateEnabled(false);
+        setModalStateEnabled(/* taskId= */ INVALID_TASK_ID, /* animate= */ false);
         if (isSplitSelectionActive()) {
             onRotateInSplitSelectionState();
         }
@@ -1722,6 +2010,10 @@
                 mLastComputedGridSize);
         mSizeStrategy.calculateGridTaskSize(mActivity, mActivity.getDeviceProfile(),
                 mLastComputedGridTaskSize, mOrientationHandler);
+        if (DesktopTaskView.DESKTOP_IS_PROTO2_ENABLED) {
+            mSizeStrategy.calculateDesktopTaskSize(mActivity, mActivity.getDeviceProfile(),
+                    mLastComputedDesktopTaskSize);
+        }
 
         mTaskGridVerticalDiff = mLastComputedGridTaskSize.top - mLastComputedTaskSize.top;
         mTopBottomRowHeightDiff =
@@ -1768,17 +2060,39 @@
     }
 
     public void getTaskSize(Rect outRect) {
-        mSizeStrategy.calculateTaskSize(mActivity, mActivity.getDeviceProfile(), outRect);
+        mSizeStrategy.calculateTaskSize(mActivity, mActivity.getDeviceProfile(), outRect,
+                mOrientationHandler);
         mLastComputedTaskSize.set(outRect);
     }
 
     /**
-     * Returns the size of task selected to enter modal state.
+     * Sets the last TaskView selected.
      */
-    public Point getSelectedTaskSize() {
-        mSizeStrategy.calculateTaskSize(mActivity, mActivity.getDeviceProfile(),
-                mTempRect);
-        return new Point(mTempRect.width(), mTempRect.height());
+    public void setSelectedTask(int lastSelectedTaskId) {
+        mSelectedTask = getTaskViewByTaskId(lastSelectedTaskId);
+    }
+
+    /**
+     * Returns the bounds of the task selected to enter modal state.
+     */
+    public Rect getSelectedTaskBounds() {
+        if (mSelectedTask == null) {
+            return mLastComputedTaskSize;
+        }
+        return getTaskBounds(mSelectedTask);
+    }
+
+    private Rect getTaskBounds(TaskView taskView) {
+        int selectedPage = indexOfChild(taskView);
+        int primaryScroll = mOrientationHandler.getPrimaryScroll(this);
+        int selectedPageScroll = getScrollForPage(selectedPage);
+        boolean isTopRow = taskView != null && mTopRowIdSet.contains(taskView.getTaskViewId());
+        Rect outRect = new Rect(mLastComputedTaskSize);
+        outRect.offset(
+                -(primaryScroll - (selectedPageScroll + getOffsetFromScrollPosition(selectedPage))),
+                (int) (showAsGrid() && ENABLE_GRID_ONLY_OVERVIEW.get() && !isTopRow
+                        ? mTopBottomRowHeightDiff : 0));
+        return outRect;
     }
 
     /** Gets the last computed task size */
@@ -1790,9 +2104,15 @@
         return mLastComputedGridTaskSize;
     }
 
+    /** Gets the last computed desktop task size */
+    public Rect getLastComputedDesktopTaskSize() {
+        return mLastComputedDesktopTaskSize;
+    }
+
     /** Gets the task size for modal state. */
     public void getModalTaskSize(Rect outRect) {
-        mSizeStrategy.calculateModalTaskSize(mActivity, mActivity.getDeviceProfile(), outRect);
+        mSizeStrategy.calculateModalTaskSize(mActivity, mActivity.getDeviceProfile(), outRect,
+                mOrientationHandler);
     }
 
     @Override
@@ -1833,9 +2153,11 @@
 
     private void animateActionsViewAlpha(float alphaValue, long duration) {
         mActionsViewAlphaAnimator = ObjectAnimator.ofFloat(
-                mActionsView.getVisibilityAlpha(), MultiValueAlpha.VALUE, alphaValue);
+                mActionsView.getVisibilityAlpha(), MULTI_PROPERTY_VALUE, alphaValue);
         mActionsViewAlphaAnimatorFinalValue = alphaValue;
         mActionsViewAlphaAnimator.setDuration(duration);
+        // Set autocancel to prevent race-conditiony setting of alpha from other animations
+        mActionsViewAlphaAnimator.setAutoCancel(true);
         mActionsViewAlphaAnimator.start();
     }
 
@@ -1848,6 +2170,9 @@
         }
         int scroll = mOrientationHandler.getPrimaryScroll(this);
         mClearAllButton.onRecentsViewScroll(scroll, mOverviewGridEnabled);
+
+        // Clear all button alpha was set by the previous line.
+        mActionsView.getIndexScrollAlpha().setValue(1 - mClearAllButton.getScrollAlpha());
     }
 
     @Override
@@ -1855,7 +2180,7 @@
         if (!mActivity.getDeviceProfile().isTablet) {
             return super.getDestinationPage(scaledScroll);
         }
-        if (!pageScrollsInitialized()) {
+        if (!isPageScrollsInitialized()) {
             Log.e(TAG,
                     "Cannot get destination page: RecentsView not properly initialized",
                     new IllegalStateException());
@@ -1909,7 +2234,10 @@
         // Update the task data for the in/visible children
         for (int i = 0; i < getTaskViewCount(); i++) {
             TaskView taskView = requireTaskViewAt(i);
-            Task task = taskView.getTask();
+            TaskIdAttributeContainer[] containers = taskView.getTaskIdAttributeContainers();
+            if (containers[0] == null && containers[1] == null) {
+                continue;
+            }
             int index = indexOfChild(taskView);
             boolean visible;
             if (showAsGrid()) {
@@ -1918,34 +2246,43 @@
                 visible = lower <= index && index <= upper;
             }
             if (visible) {
-                boolean skipLoadingTask = false;
+                // Default update all non-null tasks, then remove running ones
+                List<Task> tasksToUpdate = Arrays.stream(containers).filter(Objects::nonNull)
+                        .map(TaskIdAttributeContainer::getTask)
+                        .collect(Collectors.toCollection(ArrayList::new));
                 if (mTmpRunningTasks != null) {
                     for (Task t : mTmpRunningTasks) {
-                        if (task == t) {
-                            // Skip loading if this is the task that we are animating into
-                            skipLoadingTask = true;
-                            break;
-                        }
+                        // Skip loading if this is the task that we are animating into
+                        // TODO(b/280812109) change this equality check to use A.equals(B)
+                        tasksToUpdate.removeIf(task -> task == t);
                     }
                 }
-                if (skipLoadingTask) {
+                if (tasksToUpdate.isEmpty()) {
                     continue;
                 }
-                if (!mHasVisibleTaskData.get(task.key.id)) {
-                    // Ignore thumbnail update if it's current running task during the gesture
-                    // We snapshot at end of gesture, it will update then
-                    int changes = dataChanges;
-                    if (taskView == getRunningTaskView() && mGestureActive) {
-                        changes &= ~TaskView.FLAG_UPDATE_THUMBNAIL;
+                for (Task task : tasksToUpdate) {
+                    if (!mHasVisibleTaskData.get(task.key.id)) {
+                        // Ignore thumbnail update if it's current running task during the gesture
+                        // We snapshot at end of gesture, it will update then
+                        int changes = dataChanges;
+                        if (taskView == getRunningTaskView() && mGestureActive) {
+                            changes &= ~TaskView.FLAG_UPDATE_THUMBNAIL;
+                        }
+                        taskView.onTaskListVisibilityChanged(true /* visible */, changes);
                     }
-                    taskView.onTaskListVisibilityChanged(true /* visible */, changes);
+                    mHasVisibleTaskData.put(task.key.id, visible);
                 }
-                mHasVisibleTaskData.put(task.key.id, visible);
             } else {
-                if (mHasVisibleTaskData.get(task.key.id)) {
-                    taskView.onTaskListVisibilityChanged(false /* visible */, dataChanges);
+                for (TaskIdAttributeContainer container : containers) {
+                    if (container == null) {
+                        continue;
+                    }
+
+                    if (mHasVisibleTaskData.get(container.getTask().key.id)) {
+                        taskView.onTaskListVisibilityChanged(false /* visible */, dataChanges);
+                    }
+                    mHasVisibleTaskData.delete(container.getTask().key.id);
                 }
-                mHasVisibleTaskData.delete(task.key.id);
             }
         }
     }
@@ -1981,7 +2318,11 @@
         }
     }
 
-    public abstract void startHome();
+    public void startHome() {
+        startHome(mActivity.isStarted());
+    }
+
+    public abstract void startHome(boolean animated);
 
     public void reset() {
         setCurrentTask(-1);
@@ -1991,7 +2332,7 @@
         mFocusedTaskViewId = -1;
 
         if (mRecentsAnimationController != null) {
-            if (ENABLE_QUICKSTEP_LIVE_TILE.get() && mEnableDrawingLiveTile) {
+            if (mEnableDrawingLiveTile) {
                 // We are still drawing the live tile, finish it now to clean up.
                 finishRecentsAnimation(true /* toRecents */, null);
             } else {
@@ -2004,7 +2345,6 @@
             remoteTargetHandle.getTaskViewSimulator().setDrawsBelowRecents(false);
         });
         resetFromSplitSelectionState();
-        mSplitSelectStateController.resetState();
 
         // These are relatively expensive and don't need to be done this frame (RecentsView isn't
         // visible anyway), so defer by a frame to get off the critical path, e.g. app to home.
@@ -2072,10 +2412,19 @@
      * Handle the edge case where Recents could increment task count very high over long
      * period of device usage. Probably will never happen, but meh.
      */
-    private <T extends TaskView> T getTaskViewFromPool(boolean isGrouped) {
-        T taskView = isGrouped ?
-                (T) mGroupedTaskViewPool.getView() :
-                (T) mTaskViewPool.getView();
+    private TaskView getTaskViewFromPool(@TaskView.Type int type) {
+        TaskView taskView;
+        switch (type) {
+            case TaskView.Type.GROUPED:
+                taskView = mGroupedTaskViewPool.getView();
+                break;
+            case TaskView.Type.DESKTOP:
+                taskView = mDesktopTaskViewPool.getView();
+                break;
+            case TaskView.Type.SINGLE:
+            default:
+                taskView = mTaskViewPool.getView();
+        }
         taskView.setTaskViewId(mTaskViewIdCount);
         if (mTaskViewIdCount == Integer.MAX_VALUE) {
             mTaskViewIdCount = 0;
@@ -2100,7 +2449,8 @@
      */
     public void reloadIfNeeded() {
         if (!mModel.isTaskListValid(mTaskListChangeId)) {
-            mTaskListChangeId = mModel.getTasks(this::applyLoadPlan);
+            mTaskListChangeId = mModel.getTasks(this::applyLoadPlan, RecentsFilterState
+                    .getFilter(mFilterState.getPackageNameToFilter()));
         }
     }
 
@@ -2167,8 +2517,14 @@
         for (int i = 0; i < getTaskViewCount(); i++) {
             requireTaskViewAt(i).setOrientationState(mOrientationState);
         }
+        boolean shouldRotateMenuForFakeRotation =
+                !mOrientationState.isRecentsActivityRotationAllowed();
+        if (!shouldRotateMenuForFakeRotation) {
+            return;
+        }
         TaskMenuView tv = (TaskMenuView) getTopOpenViewWithType(mActivity, TYPE_TASK_MENU);
         if (tv != null) {
+            // Rotation is supported on phone (details at b/254198019#comment4)
             tv.onRotationChanged();
         }
     }
@@ -2180,12 +2536,13 @@
             @Nullable AnimatorSet animatorSet, GestureState.GestureEndTarget endTarget,
             TaskViewSimulator[] taskViewSimulators) {
         mCurrentGestureEndTarget = endTarget;
-        if (endTarget == GestureState.GestureEndTarget.RECENTS) {
+        boolean isOverviewEndTarget = endTarget == GestureState.GestureEndTarget.RECENTS;
+        if (isOverviewEndTarget) {
             updateGridProperties();
         }
 
-        if (mSizeStrategy.stateFromGestureEndTarget(endTarget)
-                .displayOverviewTasksAsGrid(mActivity.getDeviceProfile())) {
+        BaseState<?> endState = mSizeStrategy.stateFromGestureEndTarget(endTarget);
+        if (endState.displayOverviewTasksAsGrid(mActivity.getDeviceProfile())) {
             TaskView runningTaskView = getRunningTaskView();
             float runningTaskPrimaryGridTranslation = 0;
             if (runningTaskView != null) {
@@ -2200,8 +2557,7 @@
             for (TaskViewSimulator tvs : taskViewSimulators) {
                 if (animatorSet == null) {
                     setGridProgress(1);
-                    tvs.taskPrimaryTranslation.value =
-                            runningTaskPrimaryGridTranslation;
+                    tvs.taskPrimaryTranslation.value = runningTaskPrimaryGridTranslation;
                 } else {
                     animatorSet.play(ObjectAnimator.ofFloat(this, RECENTS_GRID_PROGRESS, 1));
                     animatorSet.play(tvs.taskPrimaryTranslation.animateToValue(
@@ -2209,6 +2565,13 @@
                 }
             }
         }
+        int splashAlpha = endState.showTaskThumbnailSplash() ? 1 : 0;
+        if (animatorSet == null) {
+            setTaskThumbnailSplashAlpha(splashAlpha);
+        } else {
+            animatorSet.play(
+                    ObjectAnimator.ofFloat(this, TASK_THUMBNAIL_SPLASH_ALPHA, splashAlpha));
+        }
     }
 
     /**
@@ -2222,9 +2585,6 @@
 
         setEnableFreeScroll(true);
         setEnableDrawingLiveTile(mCurrentGestureEndTarget == GestureState.GestureEndTarget.RECENTS);
-        if (!ENABLE_QUICKSTEP_LIVE_TILE.get()) {
-            setRunningTaskViewShowScreenshot(true);
-        }
         setRunningTaskHidden(false);
         animateUpTaskIconScale();
         animateActionsViewIn();
@@ -2262,12 +2622,19 @@
         }
         int runningTaskViewId = -1;
         boolean needGroupTaskView = runningTasks.length > 1;
+        boolean needDesktopTask = hasDesktopTask(runningTasks);
         if (shouldAddStubTaskView(runningTasks)) {
             boolean wasEmpty = getChildCount() == 0;
             // Add an empty view for now until the task plan is loaded and applied
             final TaskView taskView;
-            if (needGroupTaskView) {
-                taskView = getTaskViewFromPool(true);
+            if (needDesktopTask) {
+                taskView = getTaskViewFromPool(TaskView.Type.DESKTOP);
+                mTmpRunningTasks = Arrays.copyOf(runningTasks, runningTasks.length);
+                addView(taskView, 0);
+                ((DesktopTaskView) taskView).bind(Arrays.asList(mTmpRunningTasks),
+                        mOrientationState);
+            } else if (needGroupTaskView) {
+                taskView = getTaskViewFromPool(TaskView.Type.GROUPED);
                 mTmpRunningTasks = new Task[]{runningTasks[0], runningTasks[1]};
                 addView(taskView, 0);
                 // When we create a placeholder task view mSplitBoundsConfig will be null, but with
@@ -2276,7 +2643,7 @@
                 ((GroupedTaskView)taskView).bind(mTmpRunningTasks[0], mTmpRunningTasks[1],
                         mOrientationState, mSplitBoundsConfig);
             } else {
-                taskView = getTaskViewFromPool(false);
+                taskView = getTaskViewFromPool(TaskView.Type.SINGLE);
                 addView(taskView, 0);
                 // The temporary running task is only used for the duration between the start of the
                 // gesture and the task list is loaded and applied
@@ -2299,8 +2666,8 @@
 
         boolean runningTaskTileHidden = mRunningTaskTileHidden;
         setCurrentTask(runningTaskViewId);
-        mFocusedTaskViewId = runningTaskViewId;
-        setCurrentPage(getRunningTaskIndex());
+        mFocusedTaskViewId = ENABLE_GRID_ONLY_OVERVIEW.get() ? INVALID_TASK_ID : runningTaskViewId;
+        runOnPageScrollsInitialized(() -> setCurrentPage(getRunningTaskIndex()));
         setRunningTaskViewShowScreenshot(false);
         setRunningTaskHidden(runningTaskTileHidden);
         // Update task size after setting current task.
@@ -2311,6 +2678,18 @@
         reloadIfNeeded();
     }
 
+    private boolean hasDesktopTask(Task[] runningTasks) {
+        if (!DesktopTaskView.DESKTOP_IS_PROTO2_ENABLED) {
+            return false;
+        }
+        for (Task task : runningTasks) {
+            if (task.key.windowingMode == WindowConfiguration.WINDOWING_MODE_FREEFORM) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     /**
      * Sets the running task id, cleaning up the old running task if necessary.
      */
@@ -2349,12 +2728,10 @@
     }
 
     private void setRunningTaskViewShowScreenshot(boolean showScreenshot) {
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
-            mRunningTaskShowScreenshot = showScreenshot;
-            TaskView runningTaskView = getRunningTaskView();
-            if (runningTaskView != null) {
-                runningTaskView.setShowScreenshot(mRunningTaskShowScreenshot);
-            }
+        mRunningTaskShowScreenshot = showScreenshot;
+        TaskView runningTaskView = getRunningTaskView();
+        if (runningTaskView != null) {
+            runningTaskView.setShowScreenshot(mRunningTaskShowScreenshot);
         }
     }
 
@@ -2422,7 +2799,8 @@
             return;
         }
 
-        int taskTopMargin = mActivity.getDeviceProfile().overviewTaskThumbnailTopMarginPx;
+        DeviceProfile deviceProfile = mActivity.getDeviceProfile();
+        int taskTopMargin = deviceProfile.overviewTaskThumbnailTopMarginPx;
 
         int topRowWidth = 0;
         int bottomRowWidth = 0;
@@ -2446,6 +2824,8 @@
         TaskView homeTaskView = getHomeTaskView();
         TaskView nextFocusedTaskView = null;
 
+        int desktopTaskIndex = Integer.MAX_VALUE;
+
         if (!isTaskDismissal) {
             mTopRowIdSet.clear();
         }
@@ -2472,6 +2852,21 @@
                     // If focused task is snapped, the row width is just task width and spacing.
                     snappedTaskRowWidth = taskWidthAndSpacing;
                 }
+            } else if (taskView.isDesktopTask()) {
+                // Desktop task was not focused. Pin it to the right of focused
+                desktopTaskIndex = i;
+                if (taskView.getVisibility() == View.GONE) {
+                    // Desktop task view is hidden, skip it from grid calculations
+                    continue;
+                }
+                if (!ENABLE_GRID_ONLY_OVERVIEW.get()) {
+                    // Only apply x-translation when using legacy overview grid
+                    gridTranslations[i] += mIsRtl ? taskWidthAndSpacing : -taskWidthAndSpacing;
+                }
+
+                // Center view vertically in case it's from different orientation.
+                taskView.setGridTranslationY((mLastComputedDesktopTaskSize.height() + taskTopMargin
+                        - taskView.getLayoutParams().height) / 2f);
             } else {
                 if (i > focusedTaskIndex) {
                     // For tasks after the focused task, shift by focused task's width and spacing.
@@ -2512,7 +2907,7 @@
                     // Move horizontally into empty space.
                     float widthOffset = 0;
                     for (int j = i - 1; !topSet.contains(j) && j >= 0; j--) {
-                        if (j == focusedTaskIndex) {
+                        if (j == focusedTaskIndex || j == desktopTaskIndex) {
                             continue;
                         }
                         widthOffset += requireTaskViewAt(j).getLayoutParams().width + mPageSpacing;
@@ -2531,7 +2926,7 @@
                     // Move horizontally into empty space.
                     float widthOffset = 0;
                     for (int j = i - 1; !bottomSet.contains(j) && j >= 0; j--) {
-                        if (j == focusedTaskIndex) {
+                        if (j == focusedTaskIndex || j == desktopTaskIndex) {
                             continue;
                         }
                         widthOffset += requireTaskViewAt(j).getLayoutParams().width + mPageSpacing;
@@ -2554,7 +2949,7 @@
         float snappedTaskGridTranslationX = 0;
         if (snappedTaskView != null) {
             snappedTaskNonGridScrollAdjustment = snappedTaskView.getScrollAdjustment(
-                    /*fullscreenEnabled=*/true, /*gridEnabled=*/false);
+                    /*gridEnabled=*/false);
             snappedTaskGridTranslationX = gridTranslations[snappedPage];
         }
 
@@ -2579,18 +2974,28 @@
 
         // If the total width is shorter than one grid's width, move ClearAllButton further away
         // accordingly. Update longRowWidth if ClearAllButton has been moved.
-        float clearAllShortTotalCompensation = 0;
+        float clearAllShortTotalWidthTranslation = 0;
         int longRowWidth = Math.max(topRowWidth, bottomRowWidth);
         if (longRowWidth < mLastComputedGridSize.width()) {
-            float shortTotalCompensation = mLastComputedGridSize.width() - longRowWidth;
-            clearAllShortTotalCompensation =
-                    mIsRtl ? -shortTotalCompensation : shortTotalCompensation;
-            longRowWidth = mLastComputedGridSize.width();
+            mClearAllShortTotalWidthTranslation =
+                    (mIsRtl
+                            ? mLastComputedTaskSize.right
+                            : deviceProfile.widthPx - mLastComputedTaskSize.left)
+                    - longRowWidth - deviceProfile.overviewGridSideMargin;
+            clearAllShortTotalWidthTranslation = mIsRtl
+                    ? -mClearAllShortTotalWidthTranslation : mClearAllShortTotalWidthTranslation;
+            if (snappedTaskRowWidth == longRowWidth) {
+                // Updated snappedTaskRowWidth as well if it's same as longRowWidth.
+                snappedTaskRowWidth += mClearAllShortTotalWidthTranslation;
+            }
+            longRowWidth += mClearAllShortTotalWidthTranslation;
+        } else {
+            mClearAllShortTotalWidthTranslation = 0;
         }
 
         float clearAllTotalTranslationX =
                 clearAllAccumulatedTranslation + clearAllShorterRowCompensation
-                        + clearAllShortTotalCompensation + snappedTaskNonGridScrollAdjustment;
+                        + clearAllShortTotalWidthTranslation + snappedTaskNonGridScrollAdjustment;
         if (focusedTaskIndex < taskCount) {
             // Shift by focused task's width and spacing if a task is focused.
             clearAllTotalTranslationX +=
@@ -2600,11 +3005,15 @@
         // Make sure there are enough space between snapped page and ClearAllButton, for the case
         // of swiping up after quick switch.
         if (snappedTaskView != null) {
-            int distanceFromClearAll = longRowWidth - snappedTaskRowWidth + mPageSpacing;
+            int distanceFromClearAll = longRowWidth - snappedTaskRowWidth;
             // ClearAllButton should be off screen when snapped task is in its snapped position.
             int minimumDistance =
-                    mTaskWidth - snappedTaskView.getLayoutParams().width
-                            + (mLastComputedGridSize.width() - mTaskWidth) / 2;
+                    (mIsRtl
+                            ? mLastComputedTaskSize.left
+                            : deviceProfile.widthPx - mLastComputedTaskSize.right)
+                    - deviceProfile.overviewGridSideMargin - mPageSpacing
+                    + (mTaskWidth - snappedTaskView.getLayoutParams().width)
+                    - mClearAllShortTotalWidthTranslation;
             if (distanceFromClearAll < minimumDistance) {
                 int distanceDifference = minimumDistance - distanceFromClearAll;
                 snappedTaskGridTranslationX += mIsRtl ? distanceDifference : -distanceDifference;
@@ -2645,17 +3054,25 @@
      * @param gridProgress 0 = carousel; 1 = 2 row grid.
      */
     private void setGridProgress(float gridProgress) {
+        mGridProgress = gridProgress;
+
+        int taskCount = getTaskViewCount();
+        for (int i = 0; i < taskCount; i++) {
+            requireTaskViewAt(i).setGridProgress(gridProgress);
+        }
+        mClearAllButton.setGridProgress(gridProgress);
+    }
+
+    private void setTaskThumbnailSplashAlpha(float taskThumbnailSplashAlpha) {
         int taskCount = getTaskViewCount();
         if (taskCount == 0) {
             return;
         }
 
-        mGridProgress = gridProgress;
-
+        mTaskThumbnailSplashAlpha = taskThumbnailSplashAlpha;
         for (int i = 0; i < taskCount; i++) {
-            requireTaskViewAt(i).setGridProgress(gridProgress);
+            requireTaskViewAt(i).setTaskThumbnailSplashAlpha(taskThumbnailSplashAlpha);
         }
-        mClearAllButton.setGridProgress(gridProgress);
     }
 
     private void enableLayoutTransitions() {
@@ -2711,7 +3128,7 @@
         anim.setFloat(taskView, VIEW_ALPHA, 0,
                 clampToProgress(isOnGridBottomRow(taskView) ? ACCEL : FINAL_FRAME, 0, 0.5f));
         FloatProperty<TaskView> secondaryViewTranslate =
-                taskView.getSecondaryDissmissTranslationProperty();
+                taskView.getSecondaryDismissTranslationProperty();
         int secondaryTaskDimension = mOrientationHandler.getSecondaryDimension(taskView);
         int verticalFactor = mOrientationHandler.getSecondaryTranslationDirectionFactor();
 
@@ -2723,8 +3140,7 @@
         anim.add(ObjectAnimator.ofFloat(taskView, secondaryViewTranslate,
                 verticalFactor * secondaryTaskDimension * 2).setDuration(duration), LINEAR, sp);
 
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get() && mEnableDrawingLiveTile
-                && taskView.isRunningTask()) {
+        if (mEnableDrawingLiveTile && taskView.isRunningTask()) {
             anim.addOnFrameCallback(() -> {
                 runActionOnRemoteHandles(
                         remoteTargetHandle -> remoteTargetHandle.getTaskViewSimulator()
@@ -2745,39 +3161,111 @@
         mOrientationHandler.getInitialSplitPlaceholderBounds(mSplitPlaceholderSize,
                 mSplitPlaceholderInset, mActivity.getDeviceProfile(),
                 mSplitSelectStateController.getActiveSplitStagePosition(), mTempRect);
+        SplitAnimationTimings timings =
+                AnimUtils.getDeviceOverviewToSplitTimings(mActivity.getDeviceProfile().isTablet);
 
         RectF startingTaskRect = new RectF();
-        if (mSplitHiddenTaskView != null) {
-            mSplitHiddenTaskView.setVisibility(INVISIBLE);
-            mFirstFloatingTaskView = FloatingTaskView.getFloatingTaskView(mActivity,
-                    mSplitHiddenTaskView.getThumbnail(),
-                    mSplitHiddenTaskView.getThumbnail().getThumbnail(),
-                    mSplitHiddenTaskView.getIconView().getDrawable(), startingTaskRect);
-            mFirstFloatingTaskView.setAlpha(1);
-            mFirstFloatingTaskView.addAnimation(anim, startingTaskRect, mTempRect,
-                    true /* fadeWithThumbnail */, true /* isStagedTask */);
-        } else {
-            mFirstFloatingTaskView = FloatingTaskView.getFloatingTaskView(mActivity,
-                    mSplitSelectSource.view, null /* thumbnail */,
-                    mSplitSelectSource.drawable, startingTaskRect);
-            mFirstFloatingTaskView.setAlpha(1);
-            mFirstFloatingTaskView.addAnimation(anim, startingTaskRect, mTempRect,
-                    false /* fadeWithThumbnail */, true /* isStagedTask */);
+        safeRemoveDragLayerView(mFirstFloatingTaskView);
+        SplitAnimInitProps splitAnimInitProps =
+                mSplitSelectStateController.getSplitAnimationController().getFirstAnimInitViews(
+                        () -> mSplitHiddenTaskView, () -> mSplitSelectSource);
+        if (mSplitSelectStateController.isAnimateCurrentTaskDismissal()) {
+            // Create the split select animation from Overview
+            mSplitHiddenTaskView.setThumbnailVisibility(INVISIBLE,
+                    mSplitSelectStateController.getInitialTaskId());
+            anim.setViewAlpha(splitAnimInitProps.getIconView(), 0, clampToProgress(LINEAR,
+                    timings.getIconFadeStartOffset(),
+                    timings.getIconFadeEndOffset()));
         }
+
+        mFirstFloatingTaskView = FloatingTaskView.getFloatingTaskView(mActivity,
+                splitAnimInitProps.getOriginalView(),
+                splitAnimInitProps.getOriginalBitmap(),
+                splitAnimInitProps.getIconDrawable(), startingTaskRect);
+        mFirstFloatingTaskView.setAlpha(1);
+        mFirstFloatingTaskView.addStagingAnimation(anim, startingTaskRect, mTempRect,
+                splitAnimInitProps.getFadeWithThumbnail(), splitAnimInitProps.isStagedTask());
+
+        // Allow user to click staged app to launch into fullscreen
+        if (ENABLE_LAUNCH_FROM_STAGED_APP.get()) {
+            mFirstFloatingTaskView.setOnClickListener(this::animateToFullscreen);
+        }
+
+        // SplitInstructionsView: animate in
+        safeRemoveDragLayerView(mSplitInstructionsView);
+        mSplitInstructionsView = SplitInstructionsView.getSplitInstructionsView(mActivity);
+        mSplitInstructionsView.setAlpha(0);
+        anim.setViewAlpha(mSplitInstructionsView, 1, clampToProgress(LINEAR,
+                timings.getInstructionsContainerFadeInStartOffset(),
+                timings.getInstructionsContainerFadeInEndOffset()));
+        anim.setViewAlpha(mSplitInstructionsView.getTextView(), 1, clampToProgress(LINEAR,
+                timings.getInstructionsTextFadeInStartOffset(),
+                timings.getInstructionsTextFadeInEndOffset()));
+        anim.addFloat(mSplitInstructionsView, mSplitInstructionsView.UNFOLD, 0.1f, 1,
+                clampToProgress(EMPHASIZED_DECELERATE,
+                        timings.getInstructionsUnfoldStartOffset(),
+                        timings.getInstructionsUnfoldEndOffset()));
+
         InteractionJankMonitorWrapper.begin(this,
                 InteractionJankMonitorWrapper.CUJ_SPLIT_SCREEN_ENTER, "First tile selected");
+        anim.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationStart(Animator animation) {
+                if (mSplitHiddenTaskView == getRunningTaskView()) {
+                    finishRecentsAnimation(true /* toRecents */, false /* shouldPip */,
+                            null /* onFinishComplete */);
+                } else {
+                    switchToScreenshot(
+                            () -> finishRecentsAnimation(true /* toRecents */,
+                                    false /* shouldPip */, null /* onFinishComplete */));
+                }
+            }
+        });
         anim.addEndListener(success -> {
             if (success) {
-                mSplitToast.show();
                 InteractionJankMonitorWrapper.end(
                         InteractionJankMonitorWrapper.CUJ_SPLIT_SCREEN_ENTER);
             } else {
+                // If transition to split select was interrupted, clean up to prevent glitches
+                resetFromSplitSelectionState();
                 InteractionJankMonitorWrapper.cancel(
                         InteractionJankMonitorWrapper.CUJ_SPLIT_SCREEN_ENTER);
             }
+
+            updateCurrentTaskActionsVisibility();
         });
     }
 
+    private void animateToFullscreen(View view) {
+        FloatingTaskView stagedTaskView = (FloatingTaskView) view;
+
+        boolean isTablet = mActivity.getDeviceProfile().isTablet;
+        int duration = isTablet
+                ? SplitAnimationTimings.TABLET_CONFIRM_DURATION
+                : SplitAnimationTimings.PHONE_CONFIRM_DURATION;
+
+        PendingAnimation pendingAnimation = new PendingAnimation(duration);
+
+        Rect firstTaskStartingBounds = new Rect();
+        Rect firstTaskEndingBounds = new Rect();
+
+        stagedTaskView.getBoundsOnScreen(firstTaskStartingBounds);
+        mActivity.getDragLayer().getBoundsOnScreen(firstTaskEndingBounds);
+
+        stagedTaskView.addConfirmAnimation(
+                pendingAnimation,
+                new RectF(firstTaskStartingBounds),
+                firstTaskEndingBounds,
+                false /* fadeWithThumbnail */,
+                true /* isStagedTask */);
+
+        pendingAnimation.addEndListener(animationSuccess ->
+                mSplitSelectStateController.launchInitialAppFullscreen(launchSuccess ->
+                        resetFromSplitSelectionState()));
+
+        pendingAnimation.buildAnim().start();
+    }
+
     /**
      * Creates a {@link PendingAnimation} for dismissing the specified {@link TaskView}.
      * @param dismissedTaskView the {@link TaskView} to be dismissed
@@ -2788,17 +3276,16 @@
      * @param dismissingForSplitSelection task dismiss animation is used for entering split
      *                                    selection state from app icon
      */
-    public PendingAnimation createTaskDismissAnimation(TaskView dismissedTaskView,
+    public void createTaskDismissAnimation(PendingAnimation anim, TaskView dismissedTaskView,
             boolean animateTaskView, boolean shouldRemoveTask, long duration,
             boolean dismissingForSplitSelection) {
         if (mPendingAnimation != null) {
             mPendingAnimation.createPlaybackController().dispatchOnCancel().dispatchOnEnd();
         }
-        PendingAnimation anim = new PendingAnimation(duration);
 
         int count = getPageCount();
         if (count == 0) {
-            return anim;
+            return;
         }
 
         boolean showAsGrid = showAsGrid();
@@ -2808,6 +3295,7 @@
 
         // Grid specific properties.
         boolean isFocusedTaskDismissed = false;
+        boolean isStagingFocusedTask = false;
         TaskView nextFocusedTaskView = null;
         boolean nextFocusedTaskFromTop = false;
         float dismissedTaskWidth = 0;
@@ -2822,26 +3310,30 @@
         if (showAsGrid) {
             dismissedTaskWidth = dismissedTaskView.getLayoutParams().width + mPageSpacing;
             isFocusedTaskDismissed = dismissedTaskViewId == mFocusedTaskViewId;
-            if (isFocusedTaskDismissed && !isSplitSelectionActive()) {
-                nextFocusedTaskFromTop =
-                        mTopRowIdSet.size() > 0 && mTopRowIdSet.size() >= (taskCount - 1) / 2f;
-                // Pick the next focused task from the preferred row.
-                for (int i = 0; i < taskCount; i++) {
-                    TaskView taskView = requireTaskViewAt(i);
-                    if (taskView == dismissedTaskView) {
-                        continue;
+            if (isFocusedTaskDismissed) {
+                if (isSplitSelectionActive()) {
+                    isStagingFocusedTask = true;
+                } else {
+                    nextFocusedTaskFromTop =
+                            mTopRowIdSet.size() > 0 && mTopRowIdSet.size() >= (taskCount - 1) / 2f;
+                    // Pick the next focused task from the preferred row.
+                    for (int i = 0; i < taskCount; i++) {
+                        TaskView taskView = requireTaskViewAt(i);
+                        if (taskView == dismissedTaskView) {
+                            continue;
+                        }
+                        boolean isTopRow = mTopRowIdSet.contains(taskView.getTaskViewId());
+                        if ((nextFocusedTaskFromTop && isTopRow
+                                || (!nextFocusedTaskFromTop && !isTopRow))) {
+                            nextFocusedTaskView = taskView;
+                            break;
+                        }
                     }
-                    boolean isTopRow = mTopRowIdSet.contains(taskView.getTaskViewId());
-                    if ((nextFocusedTaskFromTop && isTopRow
-                            || (!nextFocusedTaskFromTop && !isTopRow))) {
-                        nextFocusedTaskView = taskView;
-                        break;
+                    if (nextFocusedTaskView != null) {
+                        nextFocusedTaskWidth =
+                                nextFocusedTaskView.getLayoutParams().width + mPageSpacing;
                     }
                 }
-                if (nextFocusedTaskView != null) {
-                    nextFocusedTaskWidth =
-                            nextFocusedTaskView.getLayoutParams().width + mPageSpacing;
-                }
             }
         } else {
             getPageScrolls(oldScroll, false, SIMPLE_SCROLL_LOGIC);
@@ -2852,16 +3344,12 @@
             }
         }
 
-        announceForAccessibility(getResources().getString(R.string.task_view_closed));
-
         float dismissTranslationInterpolationEnd = 1;
         boolean closeGapBetweenClearAll = false;
         boolean isClearAllHidden = isClearAllHidden();
         boolean snapToLastTask = false;
         boolean isLandscapeSplit =
                 mActivity.getDeviceProfile().isLandscape && isSplitSelectionActive();
-        boolean isSplitPlaceholderFirstInGrid = isSplitPlaceholderFirstInGrid();
-        boolean isSplitPlaceholderLastInGrid = isSplitPlaceholderLastInGrid();
         TaskView lastGridTaskView = showAsGrid ? getLastGridTaskView() : null;
         int currentPageScroll = getScrollForPage(mCurrentPage);
         int lastGridTaskScroll = getScrollForPage(indexOfChild(lastGridTaskView));
@@ -2873,42 +3361,69 @@
             float longGridRowWidthDiff = 0;
 
             int topGridRowSize = mTopRowIdSet.size();
-            int bottomGridRowSize = taskCount - mTopRowIdSet.size() - 1;
+            int bottomGridRowSize = taskCount - mTopRowIdSet.size()
+                    - (ENABLE_GRID_ONLY_OVERVIEW.get() ? 0 : 1);
             boolean topRowLonger = topGridRowSize > bottomGridRowSize;
             boolean bottomRowLonger = bottomGridRowSize > topGridRowSize;
             boolean dismissedTaskFromTop = mTopRowIdSet.contains(dismissedTaskViewId);
             boolean dismissedTaskFromBottom = !dismissedTaskFromTop && !isFocusedTaskDismissed;
+            if (dismissedTaskFromTop || (isFocusedTaskDismissed && nextFocusedTaskFromTop)) {
+                topGridRowSize--;
+            }
+            if (dismissedTaskFromBottom || (isFocusedTaskDismissed && !nextFocusedTaskFromTop)) {
+                bottomGridRowSize--;
+            }
+            int longRowWidth = Math.max(topGridRowSize, bottomGridRowSize)
+                    * (mLastComputedGridTaskSize.width() + mPageSpacing);
+            if (!ENABLE_GRID_ONLY_OVERVIEW.get() && !isStagingFocusedTask) {
+                longRowWidth += mLastComputedTaskSize.width() + mPageSpacing;
+            }
+
             float gapWidth = 0;
             if ((topRowLonger && dismissedTaskFromTop)
                     || (bottomRowLonger && dismissedTaskFromBottom)) {
                 gapWidth = dismissedTaskWidth;
-            } else if ((topRowLonger && nextFocusedTaskFromTop)
-                    || (bottomRowLonger && !nextFocusedTaskFromTop)) {
+            } else if (nextFocusedTaskView != null
+                    && ((topRowLonger && nextFocusedTaskFromTop)
+                    || (bottomRowLonger && !nextFocusedTaskFromTop))) {
                 gapWidth = nextFocusedTaskWidth;
             }
             if (gapWidth > 0) {
-                if (taskCount > 2) {
-                    // Compensate the removed gap.
-                    longGridRowWidthDiff += mIsRtl ? -gapWidth : gapWidth;
-                    if (isClearAllHidden) {
-                        // If ClearAllButton isn't fully shown, snap to the last task.
-                        snapToLastTask = true;
+                if (mClearAllShortTotalWidthTranslation == 0) {
+                    // Compensate the removed gap if we don't already have shortTotalCompensation,
+                    // and adjust accordingly to the new shortTotalCompensation after dismiss.
+                    int newClearAllShortTotalWidthTranslation = 0;
+                    if (longRowWidth < mLastComputedGridSize.width()) {
+                        DeviceProfile deviceProfile = mActivity.getDeviceProfile();
+                        newClearAllShortTotalWidthTranslation =
+                                (mIsRtl
+                                        ? mLastComputedTaskSize.right
+                                        : deviceProfile.widthPx - mLastComputedTaskSize.left)
+                                        - longRowWidth - deviceProfile.overviewGridSideMargin;
                     }
-                } else {
-                    // If only focused task will be left, snap to focused task instead.
-                    longGridRowWidthDiff += getSnapToFocusedTaskScrollDiff(isClearAllHidden);
+                    float gapCompensation = gapWidth - newClearAllShortTotalWidthTranslation;
+                    longGridRowWidthDiff += mIsRtl ? -gapCompensation : gapCompensation;
+                }
+                if (isClearAllHidden) {
+                    // If ClearAllButton isn't fully shown, snap to the last task.
+                    snapToLastTask = true;
                 }
             }
-            if (mClearAllButton.getAlpha() != 0f && isLandscapeSplit) {
-                // ClearAllButton will not be available in split select, snap to last task instead.
-                snapToLastTask = true;
+            if (isLandscapeSplit && !isStagingFocusedTask) {
+                // LastTask's scroll is the minimum scroll in split select, if current scroll is
+                // beyond that, we'll need to snap to last task instead.
+                TaskView lastTask = getLastGridTaskView();
+                if (lastTask != null) {
+                    int primaryScroll = mOrientationHandler.getPrimaryScroll(this);
+                    int lastTaskScroll = getScrollForPage(indexOfChild(lastTask));
+                    if ((mIsRtl && primaryScroll < lastTaskScroll)
+                            || (!mIsRtl && primaryScroll > lastTaskScroll)) {
+                        snapToLastTask = true;
+                    }
+                }
             }
             if (snapToLastTask) {
                 longGridRowWidthDiff += getSnapToLastTaskScrollDiff();
-                if (isSplitPlaceholderLastInGrid) {
-                    // Shift all the tasks to make space for split placeholder.
-                    longGridRowWidthDiff += mIsRtl ? mSplitPlaceholderSize : -mSplitPlaceholderSize;
-                }
             } else if (isLandscapeSplit && currentPageSnapsToEndOfGrid) {
                 // Use last task as reference point for scroll diff and snapping calculation as it's
                 // the only invariant point in landscape split screen.
@@ -2939,8 +3454,7 @@
                             dismissTranslationInterpolationEnd
                                     - halfAdditionalDismissTranslationOffset,
                             END_DISMISS_TRANSLATION_INTERPOLATION_OFFSET, 1);
-                    if (ENABLE_QUICKSTEP_LIVE_TILE.get() && mEnableDrawingLiveTile
-                            && taskView.isRunningTask()) {
+                    if (mEnableDrawingLiveTile && taskView.isRunningTask()) {
                         anim.addOnFrameCallback(() -> {
                             runActionOnRemoteHandles(
                                     remoteTargetHandle ->
@@ -2966,6 +3480,9 @@
             }
         }
 
+        SplitAnimationTimings splitTimings =
+                AnimUtils.getDeviceOverviewToSplitTimings(mActivity.getDeviceProfile().isTablet);
+
         int distanceFromDismissedTask = 0;
         for (int i = 0; i < count; i++) {
             View child = getChildAt(i);
@@ -3008,11 +3525,31 @@
                     float additionalDismissDuration =
                             ADDITIONAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET * Math.abs(
                                     i - dismissedIndex);
-                    anim.setFloat(child, translationProperty, scrollDiff, clampToProgress(LINEAR,
-                            Utilities.boundToRange(INITIAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET
-                                    + additionalDismissDuration, 0f, 1f), 1));
-                    if (ENABLE_QUICKSTEP_LIVE_TILE.get() && mEnableDrawingLiveTile
-                            && child instanceof TaskView
+
+                    // We are in non-grid layout.
+                    // If dismissing for split select, use split timings.
+                    // If not, use dismiss timings.
+                    float animationStartProgress = isSplitSelectionActive()
+                            ? Utilities.boundToRange(splitTimings.getGridSlideStartOffset(), 0f, 1f)
+                            : Utilities.boundToRange(
+                                    INITIAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET
+                                            + additionalDismissDuration, 0f, 1f);
+
+                    float animationEndProgress = isSplitSelectionActive()
+                            ? Utilities.boundToRange(splitTimings.getGridSlideStartOffset()
+                                            + splitTimings.getGridSlideDurationOffset(), 0f, 1f)
+                            : 1f;
+
+                    // Slide tiles in horizontally to fill dismissed area
+                    anim.setFloat(child, translationProperty, scrollDiff,
+                            clampToProgress(
+                                    splitTimings.getGridSlidePrimaryInterpolator(),
+                                    animationStartProgress,
+                                    animationEndProgress
+                            )
+                    );
+
+                    if (mEnableDrawingLiveTile && child instanceof TaskView
                             && ((TaskView) child).isRunningTask()) {
                         anim.addOnFrameCallback(() -> {
                             runActionOnRemoteHandles(
@@ -3043,11 +3580,33 @@
                 // Animate task with index >= dismissed index and in the same row as the
                 // dismissed index or next focused index. Offset successive task dismissal
                 // durations for a staggered effect.
-                float animationStartProgress = Utilities.boundToRange(
-                        INITIAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET
-                                + ADDITIONAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET
-                                * ++distanceFromDismissedTask, 0f,
-                        dismissTranslationInterpolationEnd);
+                distanceFromDismissedTask++;
+                int staggerColumn =  isStagingFocusedTask
+                        ? (int) Math.ceil(distanceFromDismissedTask / 2f)
+                        : distanceFromDismissedTask;
+                // Set timings based on if user is initiating splitscreen on the focused task,
+                // or splitting/dismissing some other task.
+                float animationStartProgress = isStagingFocusedTask
+                        ? Utilities.boundToRange(
+                                splitTimings.getGridSlideStartOffset()
+                                        + (splitTimings.getGridSlideStaggerOffset()
+                                        * staggerColumn),
+                        0f,
+                        dismissTranslationInterpolationEnd)
+                        : Utilities.boundToRange(
+                                INITIAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET
+                                        + ADDITIONAL_DISMISS_TRANSLATION_INTERPOLATION_OFFSET
+                                        * staggerColumn, 0f, dismissTranslationInterpolationEnd);
+                float animationEndProgress = isStagingFocusedTask
+                        ? Utilities.boundToRange(
+                                splitTimings.getGridSlideStartOffset()
+                                        + (splitTimings.getGridSlideStaggerOffset() * staggerColumn)
+                                        + splitTimings.getGridSlideDurationOffset(),
+                        0f,
+                        dismissTranslationInterpolationEnd)
+                        : dismissTranslationInterpolationEnd;
+                Interpolator dismissInterpolator = isStagingFocusedTask ? OVERSHOOT_0_75 : LINEAR;
+
                 if (taskView == nextFocusedTaskView) {
                     // Enlarge the task to be focused next, and translate into focus position.
                     float scale = mTaskWidth / (float) mLastComputedGridTaskSize.width();
@@ -3062,7 +3621,7 @@
                     if (!nextFocusedTaskFromTop) {
                         secondaryTranslation -= mTopBottomRowHeightDiff;
                     }
-                    anim.setFloat(taskView, taskView.getSecondaryDissmissTranslationProperty(),
+                    anim.setFloat(taskView, taskView.getSecondaryDismissTranslationProperty(),
                             secondaryTranslation, clampToProgress(LINEAR, animationStartProgress,
                                     dismissTranslationInterpolationEnd));
                     anim.setFloat(taskView, TaskView.FOCUS_TRANSITION, 0f,
@@ -3070,24 +3629,19 @@
                 } else {
                     float primaryTranslation =
                             nextFocusedTaskView != null ? nextFocusedTaskWidth : dismissedTaskWidth;
-                    if (isFocusedTaskDismissed && nextFocusedTaskView == null) {
+                    if (isStagingFocusedTask) {
                         // Moves less if focused task is not in scroll position.
                         int focusedTaskScroll = getScrollForPage(dismissedIndex);
                         int primaryScroll = mOrientationHandler.getPrimaryScroll(this);
                         int focusedTaskScrollDiff = primaryScroll - focusedTaskScroll;
                         primaryTranslation +=
                                 mIsRtl ? focusedTaskScrollDiff : -focusedTaskScrollDiff;
-                        if (isSplitPlaceholderFirstInGrid) {
-                            // Moves less if split placeholder is at the start.
-                            primaryTranslation +=
-                                    mIsRtl ? -mSplitPlaceholderSize : mSplitPlaceholderSize;
-                        }
                     }
 
                     anim.setFloat(taskView, taskView.getPrimaryDismissTranslationProperty(),
                             mIsRtl ? primaryTranslation : -primaryTranslation,
-                            clampToProgress(LINEAR, animationStartProgress,
-                                    dismissTranslationInterpolationEnd));
+                            clampToProgress(dismissInterpolator, animationStartProgress,
+                                    animationEndProgress));
                 }
             }
         }
@@ -3096,7 +3650,9 @@
             anim.addOnFrameCallback(this::updateCurveProperties);
         }
 
-        // Add a tiny bit of translation Z, so that it draws on top of other views
+        // Add a tiny bit of translation Z, so that it draws on top of other views. This is relevant
+        // (e.g.) when we dismiss a task by sliding it upward: if there is a row of icons above, we
+        // want the dragged task to stay above all other views.
         if (animateTaskView) {
             dismissedTaskView.setTranslationZ(0.1f);
         }
@@ -3109,8 +3665,7 @@
         mPendingAnimation.addEndListener(new Consumer<Boolean>() {
             @Override
             public void accept(Boolean success) {
-                if (ENABLE_QUICKSTEP_LIVE_TILE.get() && mEnableDrawingLiveTile
-                        && dismissedTaskView.isRunningTask() && success) {
+                if (mEnableDrawingLiveTile && dismissedTaskView.isRunningTask() && success) {
                     finishRecentsAnimation(true /* toRecents */, false /* shouldPip */,
                             () -> onEnd(success));
                 } else {
@@ -3127,13 +3682,14 @@
                 if (success) {
                     if (shouldRemoveTask) {
                         if (dismissedTaskView.getTask() != null) {
-                            if (ENABLE_QUICKSTEP_LIVE_TILE.get()
-                                    && dismissedTaskView.isRunningTask()) {
+                            if (dismissedTaskView.isRunningTask()) {
                                 finishRecentsAnimation(true /* toRecents */, false /* shouldPip */,
                                         () -> removeTaskInternal(dismissedTaskViewId));
                             } else {
                                 removeTaskInternal(dismissedTaskViewId);
                             }
+                            announceForAccessibility(
+                                    getResources().getString(R.string.task_view_closed));
                             mActivity.getStatsLogManager().logger()
                                     .withItemInfo(dismissedTaskView.getItemInfo())
                                     .log(LAUNCHER_TASK_DISMISS_SWIPE_UP);
@@ -3208,14 +3764,6 @@
                                         RecentsView.this);
                                 int currentPageScroll = getScrollForPage(mCurrentPage);
                                 mCurrentPageScrollDiff = primaryScroll - currentPageScroll;
-                                // Compensate for coordinate shift by split placeholder.
-                                if (isSplitPlaceholderFirstInGrid && !finalSnapToLastTask) {
-                                    mCurrentPageScrollDiff +=
-                                            mIsRtl ? -mSplitPlaceholderSize : mSplitPlaceholderSize;
-                                } else if (isSplitPlaceholderLastInGrid && finalSnapToLastTask) {
-                                    mCurrentPageScrollDiff +=
-                                            mIsRtl ? mSplitPlaceholderSize : -mSplitPlaceholderSize;
-                                }
                             }
                         }
                     } else if (dismissedIndex < pageToSnapTo || pageToSnapTo == taskCount - 1) {
@@ -3229,13 +3777,15 @@
                         removeViewInLayout(mClearAllButton);
                         if (isHomeTaskDismissed) {
                             updateEmptyMessage();
-                        } else {
+                        } else if (!mSplitSelectStateController.isSplitSelectActive()) {
                             startHome();
                         }
                     } else {
                         // Update focus task and its size.
                         if (finalIsFocusedTaskDismissed && finalNextFocusedTaskView != null) {
-                            mFocusedTaskViewId = finalNextFocusedTaskView.getTaskViewId();
+                            mFocusedTaskViewId = ENABLE_GRID_ONLY_OVERVIEW.get()
+                                    ? INVALID_TASK_ID
+                                    : finalNextFocusedTaskView.getTaskViewId();
                             mTopRowIdSet.remove(mFocusedTaskViewId);
                             finalNextFocusedTaskView.animateIconScaleAndDimIntoView();
                         }
@@ -3254,8 +3804,7 @@
                                 int screenStart = mOrientationHandler.getPrimaryScroll(
                                         RecentsView.this);
                                 int taskStart = mOrientationHandler.getChildStart(taskView)
-                                        + (int) taskView.getOffsetAdjustment(/*fullscreenEnabled=*/
-                                        false, /*gridEnabled=*/ true);
+                                        + (int) taskView.getOffsetAdjustment(/*gridEnabled=*/ true);
 
                                 // Rebalance only if there is a maximum gap between the task and the
                                 // screen's edge; this ensures that rebalanced tasks are outside the
@@ -3317,7 +3866,6 @@
                 mPendingAnimation = null;
             }
         });
-        return anim;
     }
 
     /**
@@ -3329,11 +3877,14 @@
     private void updateCurrentTaskActionsVisibility() {
         boolean isCurrentSplit = getCurrentPageTaskView() instanceof GroupedTaskView;
         mActionsView.updateHiddenFlags(HIDDEN_SPLIT_SCREEN, isCurrentSplit);
-        if (isCurrentSplit) {
-            return;
+        mActionsView.updateHiddenFlags(HIDDEN_SPLIT_SELECT_ACTIVE, isSplitSelectionActive());
+        mActionsView.updateSplitButtonHiddenFlags(FLAG_IS_NOT_TABLET,
+                !mActivity.getDeviceProfile().isTablet);
+        mActionsView.updateSplitButtonDisabledFlags(FLAG_SINGLE_TASK, /*enable=*/ false);
+        if (DESKTOP_MODE_SUPPORTED) {
+            boolean isCurrentDesktop = getCurrentPageTaskView() instanceof DesktopTaskView;
+            mActionsView.updateHiddenFlags(HIDDEN_DESKTOP, isCurrentDesktop);
         }
-        mActionsView.setSplitButtonVisible(
-                mActivity.getDeviceProfile().isTablet && getTaskViewCount() > 1);
     }
 
     /**
@@ -3405,22 +3956,13 @@
         int[] taskIds = getTaskIdsForTaskViewId(dismissedTaskViewId);
         int primaryTaskId = taskIds[0];
         int secondaryTaskId = taskIds[1];
-        UI_HELPER_EXECUTOR.getHandler().postDelayed(
+        UI_HELPER_EXECUTOR.getHandler().post(
                 () -> {
                     ActivityManagerWrapper.getInstance().removeTask(primaryTaskId);
                     if (secondaryTaskId != -1) {
                         ActivityManagerWrapper.getInstance().removeTask(secondaryTaskId);
                     }
-                },
-                REMOVE_TASK_WAIT_FOR_APP_STOP_MS);
-    }
-
-    /**
-     * Returns {@code true} if one of the task thumbnails would intersect/overlap with the
-     * {@link #mFirstFloatingTaskView}.
-     */
-    public boolean shouldShiftThumbnailsForSplitSelect() {
-        return !mActivity.getDeviceProfile().isTablet || !mActivity.getDeviceProfile().isLandscape;
+                });
     }
 
     protected void onDismissAnimationEnds() {
@@ -3443,9 +3985,8 @@
             if (isSuccess) {
                 // Remove all the task views now
                 finishRecentsAnimation(true /* toRecents */, false /* shouldPip */, () -> {
-                    UI_HELPER_EXECUTOR.getHandler().postDelayed(
-                            ActivityManagerWrapper.getInstance()::removeAllRecentTasks,
-                            REMOVE_TASK_WAIT_FOR_APP_STOP_MS);
+                    UI_HELPER_EXECUTOR.getHandler().post(
+                            ActivityManagerWrapper.getInstance()::removeAllRecentTasks);
                     removeTasksViewsAndClearAllButton();
                     startHome();
                 });
@@ -3485,8 +4026,10 @@
     }
 
     public void dismissTask(TaskView taskView, boolean animateTaskView, boolean removeTask) {
-        runDismissAnimation(createTaskDismissAnimation(taskView, animateTaskView, removeTask,
-                DISMISS_TASK_DURATION, false /* dismissingForSplitSelection*/));
+        PendingAnimation pa = new PendingAnimation(DISMISS_TASK_DURATION);
+        createTaskDismissAnimation(pa, taskView, animateTaskView, removeTask, DISMISS_TASK_DURATION,
+                false /* dismissingForSplitSelection*/);
+        runDismissAnimation(pa);
     }
 
     @SuppressWarnings("unused")
@@ -3719,8 +4262,13 @@
 
     private void updatePivots() {
         if (mOverviewSelectEnabled) {
-            setPivotX(mLastComputedTaskSize.centerX());
-            setPivotY(mLastComputedTaskSize.bottom);
+            getModalTaskSize(mTempRect);
+            Rect selectedTaskPosition = getSelectedTaskBounds();
+
+            Utilities.getPivotsForScalingRectToRect(mTempRect, selectedTaskPosition,
+                    mTempPointF);
+            setPivotX(mTempPointF.x);
+            setPivotY(mTempPointF.y);
         } else {
             getPagedViewOrientedState().getFullScreenScaleAndPivot(mTempRect,
                     mActivity.getDeviceProfile(), mTempPointF);
@@ -3733,11 +4281,17 @@
         float offset = mAdjacentPageHorizontalOffset;
         float modalOffset = ACCEL_0_75.getInterpolation(mTaskModalness);
         int count = getChildCount();
+        boolean showAsGrid = showAsGrid();
 
         TaskView runningTask = mRunningTaskViewId == -1 || !mRunningTaskTileHidden
                 ? null : getRunningTaskView();
         int midpoint = runningTask == null ? -1 : indexOfChild(runningTask);
         int modalMidpoint = getCurrentPage();
+        boolean isModalGridWithoutFocusedTask =
+                showAsGrid && ENABLE_GRID_ONLY_OVERVIEW.get() && mTaskModalness > 0;
+        if (isModalGridWithoutFocusedTask) {
+            modalMidpoint = indexOfChild(mSelectedTask);
+        }
 
         float midpointOffsetSize = 0;
         float leftOffsetSize = midpoint - 1 >= 0
@@ -3747,7 +4301,6 @@
                 ? getHorizontalOffsetSize(midpoint + 1, midpoint, offset)
                 : 0;
 
-        boolean showAsGrid = showAsGrid();
         float modalMidpointOffsetSize = 0;
         float modalLeftOffsetSize = 0;
         float modalRightOffsetSize = 0;
@@ -3775,24 +4328,34 @@
                     : i < midpoint
                             ? leftOffsetSize
                             : rightOffsetSize;
+            if (isModalGridWithoutFocusedTask) {
+                gridOffsetSize = getHorizontalOffsetSize(i, modalMidpoint, modalOffset);
+                gridOffsetSize = Math.abs(gridOffsetSize) * (i <= modalMidpoint ? 1 : -1);
+            }
             float modalTranslation = i == modalMidpoint
                     ? modalMidpointOffsetSize
                     : showAsGrid
                             ? gridOffsetSize
                             : i < modalMidpoint ? modalLeftOffsetSize : modalRightOffsetSize;
-            float totalTranslation = translation + modalTranslation;
+            float totalTranslationX = translation + modalTranslation;
             View child = getChildAt(i);
-            FloatProperty translationProperty = child instanceof TaskView
+            FloatProperty translationPropertyX = child instanceof TaskView
                     ? ((TaskView) child).getPrimaryTaskOffsetTranslationProperty()
                     : mOrientationHandler.getPrimaryViewTranslate();
-            translationProperty.set(child, totalTranslation);
-            if (ENABLE_QUICKSTEP_LIVE_TILE.get() && mEnableDrawingLiveTile
-                    && i == getRunningTaskIndex()) {
+            translationPropertyX.set(child, totalTranslationX);
+            if (mEnableDrawingLiveTile && i == getRunningTaskIndex()) {
                 runActionOnRemoteHandles(
                         remoteTargetHandle -> remoteTargetHandle.getTaskViewSimulator()
-                                .taskPrimaryTranslation.value = totalTranslation);
+                                .taskPrimaryTranslation.value = totalTranslationX);
                 redrawLiveTile();
             }
+
+            if (showAsGrid && ENABLE_GRID_ONLY_OVERVIEW.get() && child instanceof TaskView) {
+                float totalTranslationY = getVerticalOffsetSize(i, modalOffset);
+                FloatProperty translationPropertyY =
+                        ((TaskView) child).getSecondaryTaskOffsetTranslationProperty();
+                translationPropertyY.set(child, totalTranslationY);
+            }
         }
         updateCurveProperties();
     }
@@ -3890,6 +4453,38 @@
         return distanceToOffscreen * offsetProgress;
     }
 
+    /**
+     * Computes the vertical distance to offset a given child such that it is completely offscreen.
+     *
+     * @param offsetProgress From 0 to 1 where 0 means no offset and 1 means offset offscreen.
+     */
+    private float getVerticalOffsetSize(int childIndex, float offsetProgress) {
+        if (offsetProgress == 0 || !(showAsGrid() && ENABLE_GRID_ONLY_OVERVIEW.get())
+                || mSelectedTask == null) {
+            // Don't bother calculating everything below if we won't offset vertically.
+            return 0;
+        }
+
+        // First, get the position of the task relative to the top row.
+        TaskView child = getTaskViewAt(childIndex);
+        Rect taskPosition = getTaskBounds(child);
+
+        boolean isSelectedTaskTopRow = mTopRowIdSet.contains(mSelectedTask.getTaskViewId());
+        boolean isChildTopRow = mTopRowIdSet.contains(child.getTaskViewId());
+        // Whether the task should be shifted to the top.
+        boolean isTopShift = !isSelectedTaskTopRow && isChildTopRow;
+        boolean isBottomShift = isSelectedTaskTopRow && !isChildTopRow;
+
+        // Next, calculate the distance to move the task off screen at scale = 1.
+        float distanceToOffscreen = 0;
+        if (isTopShift) {
+            distanceToOffscreen = -taskPosition.bottom;
+        } else if (isBottomShift) {
+            distanceToOffscreen = mActivity.getDeviceProfile().heightPx - taskPosition.top;
+        }
+        return distanceToOffscreen * offsetProgress;
+    }
+
     protected void setTaskViewsResistanceTranslation(float translation) {
         mTaskViewsSecondaryTranslation = translation;
         for (int i = 0; i < getTaskViewCount(); i++) {
@@ -3919,7 +4514,7 @@
         mTaskViewsSecondarySplitTranslation = translation;
         for (int i = 0; i < getTaskViewCount(); i++) {
             TaskView taskView = requireTaskViewAt(i);
-            if (taskView == mSplitHiddenTaskView) {
+            if (taskView == mSplitHiddenTaskView && !taskView.containsMultipleTasks()) {
                 continue;
             }
             taskView.getSecondarySplitTranslationProperty().set(taskView, translation);
@@ -3927,104 +4522,103 @@
     }
 
     /**
-     * Apply scroll offset to children of RecentsView when entering split select.
-     */
-    public void applySplitPrimaryScrollOffset() {
-        float taskSplitScrollOffsetPrimary = 0f;
-        float clearAllSplitScrollOffsetPrimar = 0f;
-        if (isSplitPlaceholderFirstInGrid()) {
-            taskSplitScrollOffsetPrimary = mIsRtl ? mSplitPlaceholderSize : -mSplitPlaceholderSize;
-        } else if (isSplitPlaceholderLastInGrid()) {
-            clearAllSplitScrollOffsetPrimar =
-                    mIsRtl ? -mSplitPlaceholderSize : mSplitPlaceholderSize;
-        }
-
-        for (int i = 0; i < getTaskViewCount(); i++) {
-            requireTaskViewAt(i).setSplitScrollOffsetPrimary(taskSplitScrollOffsetPrimary);
-        }
-        mClearAllButton.setSplitSelectScrollOffsetPrimary(clearAllSplitScrollOffsetPrimar);
-    }
-
-    /**
-     * Returns if split placeholder is at the beginning of RecentsView. Always returns {@code false}
-     * if RecentsView is in portrait or RecentsView isn't shown as grid.
-     */
-    private boolean isSplitPlaceholderFirstInGrid() {
-        if (!mActivity.getDeviceProfile().isLandscape || !showAsGrid()
-                || !isSplitSelectionActive()) {
-            return false;
-        }
-        @StagePosition int position = mSplitSelectStateController.getActiveSplitStagePosition();
-        return mIsRtl
-                ? position == STAGE_POSITION_BOTTOM_OR_RIGHT
-                : position == STAGE_POSITION_TOP_OR_LEFT;
-    }
-
-    /**
-     * Returns if split placeholder is at the end of RecentsView. Always returns {@code false} if
-     * RecentsView is in portrait or RecentsView isn't shown as grid.
-     */
-    private boolean isSplitPlaceholderLastInGrid() {
-        if (!mActivity.getDeviceProfile().isLandscape || !showAsGrid()
-                || !isSplitSelectionActive()) {
-            return false;
-        }
-        @StagePosition int position = mSplitSelectStateController.getActiveSplitStagePosition();
-        return mIsRtl
-                ? position == STAGE_POSITION_TOP_OR_LEFT
-                : position == STAGE_POSITION_BOTTOM_OR_RIGHT;
-    }
-
-    /**
-     * Reset scroll offset on children of RecentsView when exiting split select.
-     */
-    public void resetSplitPrimaryScrollOffset() {
-        for (int i = 0; i < getTaskViewCount(); i++) {
-            requireTaskViewAt(i).setSplitScrollOffsetPrimary(0);
-        }
-        mClearAllButton.setSplitSelectScrollOffsetPrimary(0);
-    }
-
-    /**
      * Resets the visuals when exit modal state.
      */
     public void resetModalVisuals() {
-        TaskView taskView = getCurrentPageTaskView();
-        if (taskView != null) {
-            taskView.getThumbnail().getTaskOverlay().resetModalVisuals();
+        if (mSelectedTask != null) {
+            mSelectedTask.getThumbnail().getTaskOverlay().resetModalVisuals();
         }
     }
 
+    /**
+     * Primarily used by overview actions to initiate split from focused task, logs the source
+     * of split invocation as such.
+     */
     public void initiateSplitSelect(TaskView taskView) {
         int defaultSplitPosition = mOrientationHandler
                 .getDefaultSplitPosition(mActivity.getDeviceProfile());
-        initiateSplitSelect(taskView, defaultSplitPosition);
+        initiateSplitSelect(taskView, defaultSplitPosition, LAUNCHER_OVERVIEW_ACTIONS_SPLIT);
     }
 
-    public void initiateSplitSelect(TaskView taskView, @StagePosition int stagePosition) {
+    /** TODO(b/266477929): Consolidate this call w/ the one below */
+    public void initiateSplitSelect(TaskView taskView, @StagePosition int stagePosition,
+            StatsLogManager.EventEnum splitEvent) {
         mSplitHiddenTaskView = taskView;
-        mSplitSelectStateController.setInitialTaskSelect(taskView.getTask().key.id,
-                stagePosition);
+        mSplitSelectStateController.setInitialTaskSelect(null /*intent*/,
+                stagePosition, taskView.getItemInfo(), splitEvent, taskView.mTask.key.id);
+        mSplitSelectStateController.setAnimateCurrentTaskDismissal(
+                true /*animateCurrentTaskDismissal*/);
         mSplitHiddenTaskViewIndex = indexOfChild(taskView);
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
-            finishRecentsAnimation(true, null);
+        if (DesktopTaskView.DESKTOP_IS_PROTO2_ENABLED) {
+            updateDesktopTaskVisibility(false /* visible */);
         }
     }
 
-    public void initiateSplitSelect(QuickstepSystemShortcut.SplitSelectSource splitSelectSource) {
+    /**
+     * Called when staging a split from Home/AllApps/Overview (Taskbar),
+     * using the icon long-press menu.
+     * Attempts to initiate split with an existing taskView, if one exists
+     */
+    public void initiateSplitSelect(SplitSelectSource splitSelectSource) {
+        TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "enterSplitSelect");
         mSplitSelectSource = splitSelectSource;
+        mSplitHiddenTaskView = getTaskViewByTaskId(splitSelectSource.alreadyRunningTaskId);
+        mSplitHiddenTaskViewIndex = indexOfChild(mSplitHiddenTaskView);
+        mSplitSelectStateController
+                .setAnimateCurrentTaskDismissal(splitSelectSource.animateCurrentTaskDismissal);
+
+        // Prevent dismissing whole task if we're only initiating from one of 2 tasks in split pair
+        mSplitSelectStateController.setDismissingFromSplitPair(mSplitHiddenTaskView != null
+                && mSplitHiddenTaskView.containsMultipleTasks());
         mSplitSelectStateController.setInitialTaskSelect(splitSelectSource.intent,
-                splitSelectSource.position.stagePosition);
+                splitSelectSource.position.stagePosition, splitSelectSource.itemInfo,
+                splitSelectSource.splitEvent, splitSelectSource.alreadyRunningTaskId);
+        if (DesktopTaskView.DESKTOP_IS_PROTO2_ENABLED) {
+            updateDesktopTaskVisibility(false /* visible */);
+        }
     }
 
-    public PendingAnimation createSplitSelectInitAnimation(int duration) {
-        if (mSplitHiddenTaskView != null) {
-            return createTaskDismissAnimation(mSplitHiddenTaskView, true, false, duration,
+    private void updateDesktopTaskVisibility(boolean visible) {
+        if (mDesktopTaskView != null) {
+            mDesktopTaskView.setVisibility(visible ? VISIBLE : GONE);
+        }
+    }
+
+    /**
+     * Modifies a PendingAnimation with the animations for entering split staging
+     */
+    public void createSplitSelectInitAnimation(PendingAnimation builder, int duration) {
+        boolean isInitiatingSplitFromTaskView =
+                mSplitSelectStateController.isAnimateCurrentTaskDismissal();
+        boolean isInitiatingTaskViewSplitPair =
+                mSplitSelectStateController.isDismissingFromSplitPair();
+        if (isInitiatingSplitFromTaskView && isInitiatingTaskViewSplitPair) {
+            // Splitting from Overview for split pair task
+            createInitialSplitSelectAnimation(builder);
+
+            // Animate pair thumbnail into full thumbnail
+            boolean primaryTaskSelected =
+                    mSplitHiddenTaskView.getTaskIdAttributeContainers()[0].getTask().key.id ==
+                            mSplitSelectStateController.getInitialTaskId();
+            TaskIdAttributeContainer taskIdAttributeContainer = mSplitHiddenTaskView
+                    .getTaskIdAttributeContainers()[primaryTaskSelected ? 1 : 0];
+            TaskThumbnailView thumbnail = taskIdAttributeContainer.getThumbnailView();
+            mSplitSelectStateController.getSplitAnimationController()
+                    .addInitialSplitFromPair(taskIdAttributeContainer, builder,
+                            mActivity.getDeviceProfile(),
+                            mSplitHiddenTaskView.getWidth(), mSplitHiddenTaskView.getHeight(),
+                            primaryTaskSelected);
+            builder.addOnFrameCallback(() ->{
+                thumbnail.refreshSplashView();
+                mSplitHiddenTaskView.updateSnapshotRadius();
+            });
+        } else if (isInitiatingSplitFromTaskView) {
+            // Splitting from Overview for fullscreen task
+            createTaskDismissAnimation(builder, mSplitHiddenTaskView, true, false, duration,
                     true /* dismissingForSplitSelection*/);
         } else {
-            PendingAnimation anim = new PendingAnimation(duration);
-            createInitialSplitSelectAnimation(anim);
-            return anim;
+            // Splitting from Home
+            createInitialSplitSelectAnimation(builder);
         }
     }
 
@@ -4032,32 +4626,50 @@
      * Confirms the selection of the next split task. The extra data is passed through because the
      * user may be selecting a subtask in a group.
      *
+     * @param containerTaskView If our second selected app is currently running in Recents, this is
+     *                          the "container" TaskView from Recents. If we are starting a fresh
+     *                          instance of the app from an Intent, this will be null.
+     * @param task The Task corresponding to our second selected app. If we are starting a fresh
+     *             instance of the app from an Intent, this will be null.
+     * @param drawable The Drawable corresponding to our second selected app's icon.
+     * @param secondView The View representing the current space on the screen where the second app
+     *                   is (either the ThumbnailView or the tapped icon).
+     * @param intent If we are launching a fresh instance of the app, this is the Intent for it. If
+     *               the second app is already running in Recents, this will be null.
+     * @param user If we are launching a fresh instance of the app, this is the UserHandle for it.
+     *             If the second app is already running in Recents, this will be null.
      * @return true if waiting for confirmation of second app or if split animations are running,
      *          false otherwise
      */
-    public boolean confirmSplitSelect(TaskView containerTaskView, Task task, IconView iconView,
-            TaskThumbnailView thumbnailView) {
+    public boolean confirmSplitSelect(TaskView containerTaskView, Task task, Drawable drawable,
+            View secondView, @Nullable Bitmap thumbnail, Intent intent, UserHandle user) {
         if (canLaunchFullscreenTask()) {
             return false;
         }
         if (mSplitSelectStateController.isBothSplitAppsConfirmed()) {
             return true;
         }
-        mSplitToast.cancel();
-        if (!task.isDockable) {
-            // Task not split screen supported
-            mSplitUnsupportedToast.show();
-            return true;
+        // Second task is selected either as an already-running Task or an Intent
+        if (task != null) {
+            if (!task.isDockable) {
+                // Task does not support split screen
+                mSplitUnsupportedToast.show();
+                return true;
+            }
+            mSplitSelectStateController.setSecondTask(task);
+        } else {
+            mSplitSelectStateController.setSecondTask(intent, user);
         }
-        mSplitSelectStateController.setSecondTask(task);
+
         RectF secondTaskStartingBounds = new RectF();
         Rect secondTaskEndingBounds = new Rect();
         // TODO(194414938) starting bounds seem slightly off, investigate
         Rect firstTaskStartingBounds = new Rect();
         Rect firstTaskEndingBounds = mTempRect;
-        int duration = mActivity.getStateManager().getState().getTransitionDuration(mActivity,
-                false /* isToState */);
-        PendingAnimation pendingAnimation = new PendingAnimation(duration);
+
+        boolean isTablet = mActivity.getDeviceProfile().isTablet;
+        SplitAnimationTimings timings = AnimUtils.getDeviceSplitToConfirmTimings(isTablet);
+        PendingAnimation pendingAnimation = new PendingAnimation(timings.getDuration());
 
         int halfDividerSize = getResources()
                 .getDimensionPixelSize(R.dimen.multi_window_task_divider_size) / 2;
@@ -4067,51 +4679,67 @@
                 secondTaskEndingBounds);
 
         mFirstFloatingTaskView.getBoundsOnScreen(firstTaskStartingBounds);
-        mFirstFloatingTaskView.addAnimation(pendingAnimation,
+        mFirstFloatingTaskView.addConfirmAnimation(pendingAnimation,
                 new RectF(firstTaskStartingBounds), firstTaskEndingBounds,
                 false /* fadeWithThumbnail */, true /* isStagedTask */);
 
-        mSecondFloatingTaskView = FloatingTaskView.getFloatingTaskView(mActivity,
-                thumbnailView, thumbnailView.getThumbnail(),
-                iconView.getDrawable(), secondTaskStartingBounds);
+        safeRemoveDragLayerView(mSecondFloatingTaskView);
+
+        mSecondFloatingTaskView = FloatingTaskView.getFloatingTaskView(mActivity, secondView,
+                thumbnail, drawable, secondTaskStartingBounds);
         mSecondFloatingTaskView.setAlpha(1);
-        mSecondFloatingTaskView.addAnimation(pendingAnimation, secondTaskStartingBounds,
+        mSecondFloatingTaskView.addConfirmAnimation(pendingAnimation, secondTaskStartingBounds,
                 secondTaskEndingBounds, true /* fadeWithThumbnail */, false /* isStagedTask */);
+
+        pendingAnimation.setViewAlpha(mSplitInstructionsView, 0, clampToProgress(LINEAR,
+                timings.getInstructionsFadeStartOffset(),
+                timings.getInstructionsFadeEndOffset()));
+
         pendingAnimation.addEndListener(aBoolean -> {
             mSplitSelectStateController.launchSplitTasks(
                     aBoolean1 -> RecentsView.this.resetFromSplitSelectionState());
             InteractionJankMonitorWrapper.end(InteractionJankMonitorWrapper.CUJ_SPLIT_SCREEN_ENTER);
         });
-        if (containerTaskView.containsMultipleTasks()) {
-            // If we are launching from a child task, then only hide the thumbnail itself
-            mSecondSplitHiddenView = thumbnailView;
-        } else {
-            mSecondSplitHiddenView = containerTaskView;
+
+        mSecondSplitHiddenView = containerTaskView;
+        if (mSecondSplitHiddenView != null) {
+            mSecondSplitHiddenView.setThumbnailVisibility(INVISIBLE,
+                    mSplitSelectStateController.getSecondTaskId());
         }
-        mSecondSplitHiddenView.setVisibility(INVISIBLE);
+
         InteractionJankMonitorWrapper.begin(this,
                 InteractionJankMonitorWrapper.CUJ_SPLIT_SCREEN_ENTER, "Second tile selected");
+
+        // Fade out all other views underneath placeholders
+        ObjectAnimator tvFade = ObjectAnimator.ofFloat(this, RecentsView.CONTENT_ALPHA,1, 0);
+        pendingAnimation.add(tvFade, DEACCEL_2, SpringProperty.DEFAULT);
         pendingAnimation.buildAnim().start();
         return true;
     }
 
-    /** TODO(b/181707736) More gracefully handle exiting split selection state */
     @SuppressLint("WrongCall")
     protected void resetFromSplitSelectionState() {
         if (mSplitSelectSource != null || mSplitHiddenTaskViewIndex != -1) {
-            if (mFirstFloatingTaskView != null) {
-                mActivity.getRootView().removeView(mFirstFloatingTaskView);
-                mFirstFloatingTaskView = null;
-            }
-            if (mSecondFloatingTaskView != null) {
-                mActivity.getRootView().removeView(mSecondFloatingTaskView);
-                mSecondFloatingTaskView = null;
-                mSecondSplitHiddenView.setVisibility(VISIBLE);
-                mSecondSplitHiddenView = null;
-            }
+            safeRemoveDragLayerView(mFirstFloatingTaskView);
+            safeRemoveDragLayerView(mSecondFloatingTaskView);
+            safeRemoveDragLayerView(mSplitInstructionsView);
+            mFirstFloatingTaskView = null;
+            mSecondFloatingTaskView = null;
+            mSplitInstructionsView = null;
             mSplitSelectSource = null;
         }
 
+        if (mSecondSplitHiddenView != null) {
+            mSecondSplitHiddenView.setThumbnailVisibility(VISIBLE, INVALID_TASK_ID);
+            mSecondSplitHiddenView = null;
+        }
+
+        // We are leaving split selection state, so it is safe to reset thumbnail translations for
+        // the next time split is invoked.
+        setTaskViewsPrimarySplitTranslation(0);
+        setTaskViewsSecondarySplitTranslation(0);
+
+        mSplitSelectStateController.resetState();
         if (mSplitHiddenTaskViewIndex == -1) {
             return;
         }
@@ -4125,12 +4753,22 @@
             snapToPageImmediately(pageToSnapTo);
         }
         onLayout(false /*  changed */, getLeft(), getTop(), getRight(), getBottom());
+
         resetTaskVisuals();
         mSplitHiddenTaskViewIndex = -1;
         if (mSplitHiddenTaskView != null) {
-            mSplitHiddenTaskView.setVisibility(VISIBLE);
+            mSplitHiddenTaskView.setThumbnailVisibility(VISIBLE, INVALID_TASK_ID);
             mSplitHiddenTaskView = null;
         }
+        if (DesktopTaskView.DESKTOP_IS_PROTO2_ENABLED) {
+            updateDesktopTaskVisibility(true /* visible */);
+        }
+    }
+
+    private void safeRemoveDragLayerView(@Nullable View viewToRemove) {
+        if (viewToRemove != null) {
+            mActivity.getDragLayer().removeView(viewToRemove);
+        }
     }
 
     /**
@@ -4138,14 +4776,29 @@
      * Note that the translation can be its primary or secondary dimension.
      */
     public float getSplitSelectTranslation() {
-        int splitPosition = getSplitPlaceholder().getActiveSplitStagePosition();
-        if (!shouldShiftThumbnailsForSplitSelect()) {
-            return 0f;
-        }
+        DeviceProfile deviceProfile = mActivity.getDeviceProfile();
         PagedOrientationHandler orientationHandler = getPagedOrientationHandler();
+        int splitPosition = getSplitSelectController().getActiveSplitStagePosition();
+        int splitPlaceholderSize =
+                mActivity.getResources().getDimensionPixelSize(R.dimen.split_placeholder_size);
         int direction = orientationHandler.getSplitTranslationDirectionFactor(
-                splitPosition, mActivity.getDeviceProfile());
-        return mActivity.getResources().getDimension(R.dimen.split_placeholder_size) * direction;
+                splitPosition, deviceProfile);
+
+        if (deviceProfile.isTablet && deviceProfile.isLandscape) {
+            // Only shift TaskViews if there is not enough space on the side of
+            // mLastComputedTaskSize to minimize motion.
+            int sideSpace = mIsRtl
+                    ? deviceProfile.widthPx - mLastComputedTaskSize.right
+                    : mLastComputedTaskSize.left;
+            int extraSpace = splitPlaceholderSize + mPageSpacing - sideSpace;
+            if (extraSpace <= 0f) {
+                return 0f;
+            }
+
+            return extraSpace * direction;
+        }
+
+        return splitPlaceholderSize * direction;
     }
 
     protected void onRotateInSplitSelectionState() {
@@ -4164,7 +4817,9 @@
         taskViewsFloat.first.set(this, getSplitSelectTranslation());
         taskViewsFloat.second.set(this, 0f);
 
-        applySplitPrimaryScrollOffset();
+        if (mSplitInstructionsView != null) {
+            mSplitInstructionsView.ensureProperRotation();
+        }
     }
 
     private void updateDeadZoneRects() {
@@ -4238,30 +4893,31 @@
      * If launching one of the adjacent tasks, parallax the center task and other adjacent task
      * to the right.
      */
+    @SuppressLint("Recycle")
     public AnimatorSet createAdjacentPageAnimForTaskLaunch(TaskView tv) {
         AnimatorSet anim = new AnimatorSet();
 
         int taskIndex = indexOfChild(tv);
         int centerTaskIndex = getCurrentPage();
-        boolean launchingCenterTask = taskIndex == centerTaskIndex;
 
         float toScale = getMaxScaleForFullScreen();
-        RecentsView recentsView = tv.getRecentsView();
+        boolean showAsGrid = showAsGrid();
+        boolean launchingCenterTask = showAsGrid
+                ? tv.isFocusedTask() && isTaskViewFullyVisible(tv)
+                : taskIndex == centerTaskIndex;
         if (launchingCenterTask) {
-            anim.play(ObjectAnimator.ofFloat(recentsView, RECENTS_SCALE_PROPERTY, toScale));
-            anim.play(ObjectAnimator.ofFloat(recentsView, FULLSCREEN_PROGRESS, 1));
-        } else {
+            anim.play(ObjectAnimator.ofFloat(this, RECENTS_SCALE_PROPERTY, toScale));
+            anim.play(ObjectAnimator.ofFloat(this, FULLSCREEN_PROGRESS, 1));
+        } else if (!showAsGrid) {
             // We are launching an adjacent task, so parallax the center and other adjacent task.
             float displacementX = tv.getWidth() * (toScale - 1f);
             float primaryTranslation = mIsRtl ? -displacementX : displacementX;
             anim.play(ObjectAnimator.ofFloat(getPageAt(centerTaskIndex),
                     mOrientationHandler.getPrimaryViewTranslate(), primaryTranslation));
-            int runningTaskIndex = recentsView.getRunningTaskIndex();
-            if (ENABLE_QUICKSTEP_LIVE_TILE.get()
-                    && runningTaskIndex != -1
-                    && runningTaskIndex != taskIndex
-                    && recentsView.getRemoteTargetHandles() != null) {
-                for (RemoteTargetHandle remoteHandle : recentsView.getRemoteTargetHandles()) {
+            int runningTaskIndex = getRunningTaskIndex();
+            if (runningTaskIndex != -1 && runningTaskIndex != taskIndex
+                    && getRemoteTargetHandles() != null) {
+                for (RemoteTargetHandle remoteHandle : getRemoteTargetHandles()) {
                     anim.play(ObjectAnimator.ofFloat(
                             remoteHandle.getTaskViewSimulator().taskPrimaryTranslation,
                             AnimatedFloat.VALUE,
@@ -4281,6 +4937,7 @@
                         properties));
             }
         }
+        anim.play(ObjectAnimator.ofFloat(this, TASK_THUMBNAIL_SPLASH_ALPHA, 0, 1));
         return anim;
     }
 
@@ -4329,6 +4986,10 @@
                 passedOverviewThreshold[0] = passed;
                 performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY,
                         HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
+                // Also update recents animation controller state if it is ongoing.
+                if (mRecentsAnimationController != null) {
+                    mRecentsAnimationController.setWillFinishToHome(!passed);
+                }
             }
         });
 
@@ -4336,21 +4997,21 @@
 
         DepthController depthController = getDepthController();
         if (depthController != null) {
-            ObjectAnimator depthAnimator = ObjectAnimator.ofFloat(depthController, DEPTH,
-                    BACKGROUND_APP.getDepth(mActivity));
+            ObjectAnimator depthAnimator = ObjectAnimator.ofFloat(depthController.stateDepth,
+                    MULTI_PROPERTY_VALUE, BACKGROUND_APP.getDepth(mActivity));
             anim.play(depthAnimator);
         }
+        anim.play(ObjectAnimator.ofFloat(this, TASK_THUMBNAIL_SPLASH_ALPHA, 0f, 1f));
+
         anim.play(progressAnim);
         anim.setInterpolator(interpolator);
 
         mPendingAnimation = new PendingAnimation(duration);
         mPendingAnimation.add(anim);
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
-            runActionOnRemoteHandles(
-                    remoteTargetHandle -> remoteTargetHandle.getTaskViewSimulator()
-                            .addOverviewToAppAnim(mPendingAnimation, interpolator));
-            mPendingAnimation.addOnFrameCallback(this::redrawLiveTile);
-        }
+        runActionOnRemoteHandles(
+                remoteTargetHandle -> remoteTargetHandle.getTaskViewSimulator()
+                        .addOverviewToAppAnim(mPendingAnimation, interpolator));
+        mPendingAnimation.addOnFrameCallback(this::redrawLiveTile);
         mPendingAnimation.addEndListener(isSuccess -> {
             if (isSuccess) {
                 if (tv.getTaskIds()[1] != -1 && mRemoteTargetHandles != null) {
@@ -4362,7 +5023,7 @@
                                 dividerAnimator.end();
                             });
                 }
-                if (ENABLE_QUICKSTEP_LIVE_TILE.get() && tv.isRunningTask()) {
+                if (tv.isRunningTask()) {
                     finishRecentsAnimation(false /* toRecents */, null);
                     onTaskLaunchAnimationEnd(true /* success */);
                 } else {
@@ -4470,10 +5131,16 @@
             return;
         }
 
-        RemoteTargetGluer gluer = new RemoteTargetGluer(getContext(), getSizeStrategy());
-        mRemoteTargetHandles = gluer.assignTargetsForSplitScreen(
-                getContext(), recentsAnimationTargets);
-        mSplitBoundsConfig = gluer.getStagedSplitBounds();
+        RemoteTargetGluer gluer;
+        if (DESKTOP_MODE_SUPPORTED && recentsAnimationTargets.hasDesktopTasks()) {
+            gluer = new RemoteTargetGluer(getContext(), getSizeStrategy(), recentsAnimationTargets,
+                    true /* forDesktop */);
+            mRemoteTargetHandles = gluer.assignTargetsForDesktop(recentsAnimationTargets);
+        } else {
+            gluer = new RemoteTargetGluer(getContext(), getSizeStrategy());
+            mRemoteTargetHandles = gluer.assignTargetsForSplitScreen(recentsAnimationTargets);
+        }
+        mSplitBoundsConfig = gluer.getSplitBounds();
         // Add release check to the targets from the RemoteTargetGluer and not the targets
         // passed in because in the event we're in split screen, we use the passed in targets
         // to create new RemoteAnimationTargets in assignTargetsForSplitScreen(), and the
@@ -4523,12 +5190,6 @@
             @Nullable Runnable onFinishComplete) {
         // TODO(b/197232424#comment#10) Move this back into onRecentsAnimationComplete(). Maybe?
         cleanupRemoteTargets();
-        if (!toRecents && ENABLE_QUICKSTEP_LIVE_TILE.get()) {
-            // Reset the minimized state since we force-toggled the minimized state when entering
-            // overview, but never actually finished the recents animation.  This is a catch all for
-            // cases where we haven't already reset it.
-            SystemUiProxy.INSTANCE.get(getContext()).setSplitScreenMinimized(false);
-        }
 
         if (mRecentsAnimationController == null) {
             if (onFinishComplete != null) {
@@ -4541,7 +5202,7 @@
         if (sendUserLeaveHint) {
             // Notify the SysUI to use fade-in animation when entering PiP from live tile.
             final SystemUiProxy systemUiProxy = SystemUiProxy.INSTANCE.get(getContext());
-            systemUiProxy.notifySwipeToHomeFinished();
+            systemUiProxy.setPipAnimationTypeToAlpha();
             systemUiProxy.setShelfHeight(true, mActivity.getDeviceProfile().hotseatBarSizePx);
             // Transaction to hide the task to avoid flicker for entering PiP from split-screen.
             // See also {@link AbsSwipeUpHandler#maybeFinishSwipeToHome}.
@@ -4549,6 +5210,7 @@
                     new PictureInPictureSurfaceTransaction.Builder()
                             .setAlpha(0f)
                             .build();
+            tx.setShouldDisableCanAffectSystemUiFlags(false);
             int[] taskIds = TopTaskTracker.INSTANCE.get(getContext()).getRunningSplitTaskIds();
             for (int taskId : taskIds) {
                 mRecentsAnimationController.setFinishTaskTransaction(taskId,
@@ -4642,16 +5304,30 @@
     }
 
     private int getFirstViewIndex() {
+        if (DesktopTaskView.DESKTOP_IS_PROTO2_ENABLED && mDesktopTaskView != null) {
+            // Desktop task is at position 0, that is the first view
+            return 0;
+        }
         TaskView focusedTaskView = mShowAsGridLastOnLayout ? getFocusedTaskView() : null;
         return focusedTaskView != null ? indexOfChild(focusedTaskView) : 0;
     }
 
     private int getLastViewIndex() {
-        return mDisallowScrollToClearAll
-                ? mShowAsGridLastOnLayout
-                    ? indexOfChild(getLastGridTaskView())
-                    : getTaskViewCount() - 1
-                : indexOfChild(mClearAllButton);
+        if (!mDisallowScrollToClearAll) {
+            return indexOfChild(mClearAllButton);
+        }
+
+        if (!mShowAsGridLastOnLayout) {
+            return getTaskViewCount() - 1;
+        }
+
+        TaskView lastGridTaskView = getLastGridTaskView();
+        if (lastGridTaskView != null) {
+            return indexOfChild(lastGridTaskView);
+        }
+
+        // Returns focus task if there are no grid tasks.
+        return indexOfChild(getFocusedTaskView());
     }
 
     /**
@@ -4692,11 +5368,11 @@
         }
 
         final int taskCount = getTaskViewCount();
+        int lastTaskScroll = getLastTaskScroll(clearAllScroll, clearAllWidth);
         for (int i = 0; i < taskCount; i++) {
             TaskView taskView = requireTaskViewAt(i);
-            float scrollDiff = taskView.getScrollAdjustment(showAsFullscreen, showAsGrid);
+            float scrollDiff = taskView.getScrollAdjustment(showAsGrid);
             int pageScroll = newPageScrolls[i] + (int) scrollDiff;
-            int lastTaskScroll = getLastTaskScroll(clearAllScroll, clearAllWidth);
             if ((mIsRtl && pageScroll < lastTaskScroll)
                     || (!mIsRtl && pageScroll > lastTaskScroll)) {
                 pageScroll = lastTaskScroll;
@@ -4720,8 +5396,7 @@
         int childOffset = super.getChildOffset(index);
         View child = getChildAt(index);
         if (child instanceof TaskView) {
-            childOffset += ((TaskView) child).getOffsetAdjustment(showAsFullscreen(),
-                    showAsGrid());
+            childOffset += ((TaskView) child).getOffsetAdjustment(showAsGrid());
         } else if (child instanceof ClearAllButton) {
             childOffset += ((ClearAllButton) child).getOffsetAdjustment(mOverviewFullscreenEnabled,
                     showAsGrid());
@@ -4751,9 +5426,35 @@
     }
 
     /**
+     * Sets whether or not we should clamp the scroll offset.
+     * This is used to avoid x-axis movement when swiping up transient taskbar.
+     * Should only be set at the beginning and end of the gesture, otherwise a jump may occur.
+     * @param clampScrollOffset When true, we clamp the scroll to 0 before the clamp threshold is
+     *                          met.
+     */
+    public void setClampScrollOffset(boolean clampScrollOffset) {
+        mShouldClampScrollOffset = clampScrollOffset;
+    }
+
+    /**
      * Returns how many pixels the page is offset on the currently laid out dominant axis.
      */
     public int getScrollOffset(int pageIndex) {
+        int unclampedOffset = getUnclampedScrollOffset(pageIndex);
+        if (!mShouldClampScrollOffset) {
+            return unclampedOffset;
+        }
+        if (Math.abs(unclampedOffset) < mClampedScrollOffsetBound) {
+            return 0;
+        }
+        return unclampedOffset
+                - Math.round(Math.signum(unclampedOffset) * mClampedScrollOffsetBound);
+    }
+
+    /**
+     * Returns how many pixels the page is offset on the currently laid out dominant axis.
+     */
+    private int getUnclampedScrollOffset(int pageIndex) {
         if (pageIndex == -1) {
             return 0;
         }
@@ -4803,17 +5504,19 @@
         int gridTaskSizeAndSpacing = mLastComputedGridTaskSize.width() + mPageSpacing;
         int positionDiff = gridTaskSizeAndSpacing * (lastGridTaskViewPosition - taskViewPosition);
 
-        int lastTaskEnd = (mIsRtl
-                ? mLastComputedGridSize.left
-                : mLastComputedGridSize.right)
-                + (mIsRtl ? mPageSpacing : -mPageSpacing);
-        int taskEnd = lastTaskEnd + (mIsRtl ? positionDiff : -positionDiff);
+        int taskEnd = getLastTaskEnd() + (mIsRtl ? positionDiff : -positionDiff);
         int normalTaskEnd = mIsRtl
                 ? mLastComputedGridTaskSize.left
                 : mLastComputedGridTaskSize.right;
         return taskEnd - normalTaskEnd;
     }
 
+    private int getLastTaskEnd() {
+        return mIsRtl
+                ? mLastComputedGridSize.left + mPageSpacing + mClearAllShortTotalWidthTranslation
+                : mLastComputedGridSize.right - mPageSpacing - mClearAllShortTotalWidthTranslation;
+    }
+
     private int getPositionInRow(
             TaskView taskView, IntArray topRowIdArray, IntArray bottomRowIdArray) {
         int position = topRowIdArray.indexOf(taskView.getTaskViewId());
@@ -4859,10 +5562,10 @@
     }
 
     private void updateEnabledOverlays() {
-        int overlayEnabledPage = mOverlayEnabled ? getNextPage() : -1;
         int taskCount = getTaskViewCount();
         for (int i = 0; i < taskCount; i++) {
-            requireTaskViewAt(i).setOverlayEnabled(i == overlayEnabledPage);
+            TaskView taskView = requireTaskViewAt(i);
+            taskView.setOverlayEnabled(mOverlayEnabled && isTaskViewFullyVisible(taskView));
         }
     }
 
@@ -4899,6 +5602,9 @@
         if (mOverviewSelectEnabled != overviewSelectEnabled) {
             mOverviewSelectEnabled = overviewSelectEnabled;
             updatePivots();
+            if (!mOverviewSelectEnabled) {
+                setSelectedTask(INVALID_TASK_ID);
+            }
         }
     }
 
@@ -4925,7 +5631,7 @@
         }
 
         taskView.setShowScreenshot(true);
-        for (TaskView.TaskIdAttributeContainer container :
+        for (TaskIdAttributeContainer container :
                 taskView.getTaskIdAttributeContainers()) {
             if (container == null) {
                 continue;
@@ -4969,7 +5675,9 @@
     private void setTaskModalness(float modalness) {
         mTaskModalness = modalness;
         updatePageOffsets();
-        if (getCurrentPageTaskView() != null) {
+        if (mSelectedTask != null) {
+            mSelectedTask.setModalness(modalness);
+        } else if (getCurrentPageTaskView() != null) {
             getCurrentPageTaskView().setModalness(modalness);
         }
         // Only show actions view when it's modal for in-place landscape mode.
@@ -4983,17 +5691,8 @@
         return null;
     }
 
-    @Override
-    public void onSecondaryWindowBoundsChanged() {
-        // Invalidate the task view size
-        setInsets(mInsets);
-    }
-
-    /**
-     * Enables or disables modal state for RecentsView
-     * @param isModalState
-     */
-    public void setModalStateEnabled(boolean isModalState) { }
+    /** Enables or disables modal state for RecentsView */
+    public abstract void setModalStateEnabled(int taskId, boolean animate);
 
     public TaskOverlayFactory getTaskOverlayFactory() {
         return mTaskOverlayFactory;
@@ -5117,14 +5816,10 @@
                 taskView = getTaskViewAt(--targetPage);
             }
             // Target a scroll where targetPage is on left of screen but still fully visible.
-            int lastTaskEnd = (mIsRtl
-                    ? mLastComputedGridSize.left
-                    : mLastComputedGridSize.right)
-                    + (mIsRtl ? mPageSpacing : -mPageSpacing);
             int normalTaskEnd = mIsRtl
                     ? mLastComputedGridTaskSize.left
                     : mLastComputedGridTaskSize.right;
-            int targetScroll = getScrollForPage(targetPage) + normalTaskEnd - lastTaskEnd;
+            int targetScroll = getScrollForPage(targetPage) + normalTaskEnd - getLastTaskEnd();
             // Find a page that is close to targetScroll while not over it.
             while (targetPage - 1 >= 0
                     && (mIsRtl
@@ -5232,6 +5927,16 @@
         return mRecentsAnimationController;
     }
 
+    @Nullable
+    public FloatingTaskView getFirstFloatingTaskView() {
+        return mFirstFloatingTaskView;
+    }
+
+    @Nullable
+    public SplitInstructionsView getSplitInstructionsView() {
+        return mSplitInstructionsView;
+    }
+
     /** Update the current activity locus id to show the enabled state of Overview */
     public void updateLocusId() {
         String locusId = "Overview";
diff --git a/quickstep/src/com/android/quickstep/views/SplitInstructionsView.java b/quickstep/src/com/android/quickstep/views/SplitInstructionsView.java
new file mode 100644
index 0000000..0d9e412
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/views/SplitInstructionsView.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright 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.quickstep.views;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.util.FloatProperty;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.AppCompatTextView;
+
+import com.android.launcher3.R;
+import com.android.launcher3.statemanager.StatefulActivity;
+
+/**
+ * A rounded rectangular component containing a single TextView.
+ * Appears when a split is in progress, and tells the user to select a second app to initiate
+ * splitscreen.
+ *
+ * Appears and disappears concurrently with a FloatingTaskView.
+ */
+public class SplitInstructionsView extends FrameLayout {
+    private final StatefulActivity mLauncher;
+    private AppCompatTextView mTextView;
+
+    public static final FloatProperty<SplitInstructionsView> UNFOLD =
+            new FloatProperty<SplitInstructionsView>("SplitInstructionsUnfold") {
+                @Override
+                public void setValue(SplitInstructionsView splitInstructionsView, float v) {
+                    splitInstructionsView.setScaleY(v);
+                }
+
+                @Override
+                public Float get(SplitInstructionsView splitInstructionsView) {
+                    return splitInstructionsView.getScaleY();
+                }
+            };
+
+    public SplitInstructionsView(Context context) {
+        this(context, null);
+    }
+
+    public SplitInstructionsView(Context context, @Nullable AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public SplitInstructionsView(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        mLauncher = (StatefulActivity) context;
+    }
+
+    static SplitInstructionsView getSplitInstructionsView(StatefulActivity launcher) {
+        ViewGroup dragLayer = launcher.getDragLayer();
+        final SplitInstructionsView splitInstructionsView =
+                (SplitInstructionsView) launcher.getLayoutInflater().inflate(
+                        R.layout.split_instructions_view,
+                        dragLayer,
+                        false
+                );
+
+        splitInstructionsView.mTextView = splitInstructionsView.findViewById(
+                R.id.split_instructions_text);
+
+        // Since textview overlays base view, and we sometimes manipulate the alpha of each
+        // simultaneously, force overlapping rendering to false prevents redrawing of pixels,
+        // improving performance at the cost of some accuracy.
+        splitInstructionsView.forceHasOverlappingRendering(false);
+
+        dragLayer.addView(splitInstructionsView);
+        return splitInstructionsView;
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+        ensureProperRotation();
+    }
+
+    void ensureProperRotation() {
+        ((RecentsView) mLauncher.getOverviewPanel()).getPagedOrientationHandler()
+                .setSplitInstructionsParams(
+                        this,
+                        mLauncher.getDeviceProfile(),
+                        getMeasuredHeight(),
+                        getMeasuredWidth()
+                );
+    }
+
+    public AppCompatTextView getTextView() {
+        return mTextView;
+    }
+}
diff --git a/quickstep/src/com/android/quickstep/views/SplitPlaceholderView.java b/quickstep/src/com/android/quickstep/views/SplitPlaceholderView.java
index 28080d4..08004dc 100644
--- a/quickstep/src/com/android/quickstep/views/SplitPlaceholderView.java
+++ b/quickstep/src/com/android/quickstep/views/SplitPlaceholderView.java
@@ -22,7 +22,6 @@
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
-import android.util.FloatProperty;
 import android.util.TypedValue;
 import android.widget.FrameLayout;
 
@@ -33,20 +32,6 @@
     private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
     private final Rect mTempRect = new Rect();
 
-    public static final FloatProperty<SplitPlaceholderView> ALPHA_FLOAT =
-            new FloatProperty<SplitPlaceholderView>("SplitViewAlpha") {
-                @Override
-                public void setValue(SplitPlaceholderView splitPlaceholderView, float v) {
-                    splitPlaceholderView.setVisibility(v != 0 ? VISIBLE : GONE);
-                    splitPlaceholderView.setAlpha(v);
-                }
-
-                @Override
-                public Float get(SplitPlaceholderView splitPlaceholderView) {
-                    return splitPlaceholderView.getAlpha();
-                }
-            };
-
     @Nullable
     private IconView mIconView;
 
diff --git a/quickstep/src/com/android/quickstep/views/TaskMenuView.java b/quickstep/src/com/android/quickstep/views/TaskMenuView.java
index 3803f1b..2c9afb4 100644
--- a/quickstep/src/com/android/quickstep/views/TaskMenuView.java
+++ b/quickstep/src/com/android/quickstep/views/TaskMenuView.java
@@ -16,9 +16,6 @@
 
 package com.android.quickstep.views;
 
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
-import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_BOTTOM_OR_RIGHT;
-import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_UNDEFINED;
 import static com.android.quickstep.views.TaskThumbnailView.DIM_ALPHA;
 
 import android.animation.Animator;
@@ -26,7 +23,6 @@
 import android.animation.ObjectAnimator;
 import android.content.Context;
 import android.graphics.Outline;
-import android.graphics.PointF;
 import android.graphics.Rect;
 import android.graphics.drawable.ShapeDrawable;
 import android.graphics.drawable.shapes.RectShape;
@@ -35,7 +31,6 @@
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewOutlineProvider;
-import android.view.ViewTreeObserver.OnScrollChangedListener;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
@@ -59,13 +54,12 @@
 /**
  * Contains options for a recent task when long-pressing its icon.
  */
-public class TaskMenuView extends AbstractFloatingView implements OnScrollChangedListener {
+public class TaskMenuView extends AbstractFloatingView {
 
     private static final Rect sTempRect = new Rect();
 
     private static final int REVEAL_OPEN_DURATION = 150;
     private static final int REVEAL_CLOSE_DURATION = 100;
-    private final float mTaskInsetMargin;
 
     private BaseDraggingActivity mActivity;
     private TextView mTaskName;
@@ -84,7 +78,6 @@
 
         mActivity = BaseDraggingActivity.fromContext(context);
         setClipToOutline(true);
-        mTaskInsetMargin = getResources().getDimension(R.dimen.task_card_margin);
     }
 
     @Override
@@ -132,50 +125,6 @@
         };
     }
 
-    private void setPosition(float x, float y, int overscrollShift) {
-        PagedOrientationHandler pagedOrientationHandler = mTaskView.getPagedOrientationHandler();
-        // Inset due to margin
-        PointF additionalInset = pagedOrientationHandler
-                .getAdditionalInsetForTaskMenu(mTaskInsetMargin);
-        DeviceProfile deviceProfile = mActivity.getDeviceProfile();
-        int taskTopMargin = deviceProfile.overviewTaskThumbnailTopMarginPx;
-
-        float adjustedY = y + taskTopMargin - additionalInset.y;
-        float adjustedX = x - additionalInset.x;
-        // Changing pivot to make computations easier
-        // NOTE: Changing the pivots means the rotated view gets rotated about the new pivots set,
-        // which would render the X and Y position set here incorrect
-        setPivotX(0);
-        if (deviceProfile.isTablet) {
-            // In tablet, set pivotY to original position without mThumbnailTopMargin adjustment.
-            setPivotY(-taskTopMargin);
-        } else {
-            setPivotY(0);
-        }
-        setRotation(pagedOrientationHandler.getDegreesRotated());
-        setX(pagedOrientationHandler.getTaskMenuX(adjustedX,
-                mTaskContainer.getThumbnailView(), overscrollShift, deviceProfile));
-        setY(pagedOrientationHandler.getTaskMenuY(
-                adjustedY, mTaskContainer.getThumbnailView(), overscrollShift));
-
-        // TODO(b/193432925) temporary menu placement for split screen task menus
-        TaskIdAttributeContainer[] taskIdAttributeContainers =
-                mTaskView.getTaskIdAttributeContainers();
-        if (taskIdAttributeContainers[0].getStagePosition() != STAGE_POSITION_UNDEFINED) {
-            if (mTaskContainer.getStagePosition() != STAGE_POSITION_BOTTOM_OR_RIGHT) {
-                return;
-            }
-            Rect r = new Rect();
-            mTaskContainer.getThumbnailView().getBoundsOnScreen(r);
-            if (deviceProfile.isLandscape) {
-                setX(r.left);
-            } else {
-                setY(r.top);
-
-            }
-        }
-    }
-
     public void onRotationChanged() {
         if (mOpenCloseAnimator != null && mOpenCloseAnimator.isRunning()) {
             mOpenCloseAnimator.end();
@@ -207,17 +156,9 @@
             return false;
         }
         post(this::animateOpen);
-        ((RecentsView) mActivity.getOverviewPanel()).addOnScrollChangedListener(this);
         return true;
     }
 
-    @Override
-    public void onScrollChanged() {
-        RecentsView rv = mActivity.getOverviewPanel();
-        setPosition(mTaskView.getX() - rv.getScrollX(), mTaskView.getY() - rv.getScrollY(),
-                rv.getOverScrollShift());
-    }
-
     /** @return true if successfully able to populate task view menu, false otherwise */
     private boolean populateAndLayoutMenu() {
         if (mTaskContainer.getTask().icon == null) {
@@ -232,8 +173,7 @@
     private void addMenuOptions(TaskIdAttributeContainer taskContainer) {
         mTaskName.setText(TaskUtils.getTitle(getContext(), taskContainer.getTask()));
         mTaskName.setOnClickListener(v -> close(true));
-        TaskOverlayFactory.getEnabledShortcuts(mTaskView, mActivity.getDeviceProfile(),
-                taskContainer)
+        TaskOverlayFactory.getEnabledShortcuts(mTaskView, taskContainer)
                 .forEach(this::addMenuOption);
     }
 
@@ -245,17 +185,9 @@
         LayoutParams lp = (LayoutParams) menuOptionView.getLayoutParams();
         mTaskView.getPagedOrientationHandler().setLayoutParamsForTaskMenuOptionItem(lp,
                 menuOptionView, mActivity.getDeviceProfile());
-        menuOptionView.setOnClickListener(view -> {
-            if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
-                RecentsView recentsView = mTaskView.getRecentsView();
-                recentsView.switchToScreenshot(null,
-                        () -> recentsView.finishRecentsAnimation(true /* toRecents */,
-                                false /* shouldPip */,
-                                () -> menuOption.onClick(view)));
-            } else {
-                menuOption.onClick(view);
-            }
-        });
+        // Set an onClick listener on each menu option. The onClick method is responsible for
+        // ending LiveTile mode on the thumbnail if needed.
+        menuOptionView.setOnClickListener(menuOption::onClick);
         mOptionLayout.addView(menuOptionView);
     }
 
@@ -263,18 +195,18 @@
         RecentsView recentsView = mActivity.getOverviewPanel();
         PagedOrientationHandler orientationHandler = recentsView.getPagedOrientationHandler();
         measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
-        orientationHandler.setTaskMenuAroundTaskView(this, mTaskInsetMargin);
 
         // Get Position
         DeviceProfile deviceProfile = mActivity.getDeviceProfile();
-        mActivity.getDragLayer().getDescendantRectRelativeToSelf(mTaskView, sTempRect);
+        mActivity.getDragLayer().getDescendantRectRelativeToSelf(taskContainer.getThumbnailView(),
+                sTempRect);
         Rect insets = mActivity.getDragLayer().getInsets();
         BaseDragLayer.LayoutParams params = (BaseDragLayer.LayoutParams) getLayoutParams();
         int padding = getResources()
                 .getDimensionPixelSize(R.dimen.task_menu_vertical_padding);
         params.width = orientationHandler
                 .getTaskMenuWidth(taskContainer.getThumbnailView(),
-                        deviceProfile) - (2 * padding);
+                        deviceProfile, taskContainer.getStagePosition()) - (2 * padding);
         // Gravity set to Left instead of Start as sTempRect.left measures Left distance not Start
         params.gravity = Gravity.LEFT;
         setLayoutParams(params);
@@ -289,7 +221,22 @@
 
         orientationHandler.setTaskOptionsMenuLayoutOrientation(
                 deviceProfile, mOptionLayout, dividerSpacing, divider);
-        setPosition(sTempRect.left - insets.left, sTempRect.top - insets.top, 0);
+        float thumbnailAlignedX = sTempRect.left - insets.left;
+        float thumbnailAlignedY = sTempRect.top - insets.top;
+        // Changing pivot to make computations easier
+        // NOTE: Changing the pivots means the rotated view gets rotated about the new pivots set,
+        // which would render the X and Y position set here incorrect
+        setPivotX(0);
+        setPivotY(0);
+        setRotation(orientationHandler.getDegreesRotated());
+
+        // Margin that insets the menuView inside the taskView
+        float taskInsetMargin = getResources().getDimension(R.dimen.task_card_margin);
+        setTranslationX(orientationHandler.getTaskMenuX(thumbnailAlignedX,
+                mTaskContainer.getThumbnailView(), deviceProfile, taskInsetMargin));
+        setTranslationY(orientationHandler.getTaskMenuY(
+                thumbnailAlignedY, mTaskContainer.getThumbnailView(),
+                mTaskContainer.getStagePosition(), this, taskInsetMargin));
     }
 
     private void animateOpen() {
@@ -335,7 +282,6 @@
     private void closeComplete() {
         mIsOpen = false;
         mActivity.getDragLayer().removeView(this);
-        ((RecentsView) mActivity.getOverviewPanel()).removeOnScrollChangedListener(this);
     }
 
     private RoundedRectRevealOutlineProvider createOpenCloseOutlineProvider() {
diff --git a/quickstep/src/com/android/quickstep/views/TaskMenuViewWithArrow.kt b/quickstep/src/com/android/quickstep/views/TaskMenuViewWithArrow.kt
index 06a5793..8ee0fbb 100644
--- a/quickstep/src/com/android/quickstep/views/TaskMenuViewWithArrow.kt
+++ b/quickstep/src/com/android/quickstep/views/TaskMenuViewWithArrow.kt
@@ -37,7 +37,6 @@
 import com.android.launcher3.popup.RoundedArrowDrawable
 import com.android.launcher3.popup.SystemShortcut
 import com.android.launcher3.util.Themes
-import com.android.quickstep.KtR
 import com.android.quickstep.TaskOverlayFactory
 import com.android.quickstep.views.TaskView.TaskIdAttributeContainer
 
@@ -47,43 +46,46 @@
 
         fun showForTask(
             taskContainer: TaskIdAttributeContainer,
-            alignSecondRow: Boolean = false
+            alignedOptionIndex: Int = 0
         ): Boolean {
-            val activity = BaseDraggingActivity
-                .fromContext<BaseDraggingActivity>(taskContainer.taskView.context)
-            val taskMenuViewWithArrow = activity.layoutInflater
-                .inflate(
-                    KtR.layout.task_menu_with_arrow,
+            val activity =
+                BaseDraggingActivity.fromContext<BaseDraggingActivity>(
+                    taskContainer.taskView.context
+                )
+            val taskMenuViewWithArrow =
+                activity.layoutInflater.inflate(
+                    R.layout.task_menu_with_arrow,
                     activity.dragLayer,
                     false
                 ) as TaskMenuViewWithArrow<*>
 
-            return taskMenuViewWithArrow.populateAndShowForTask(taskContainer, alignSecondRow)
+            return taskMenuViewWithArrow.populateAndShowForTask(taskContainer, alignedOptionIndex)
         }
     }
 
     constructor(context: Context) : super(context)
     constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
-    constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(
-        context,
-        attrs,
-        defStyleAttr
-    )
+    constructor(
+        context: Context,
+        attrs: AttributeSet,
+        defStyleAttr: Int
+    ) : super(context, attrs, defStyleAttr)
 
     init {
         clipToOutline = true
 
         shouldScaleArrow = true
+        mIsArrowRotated = true
         // This synchronizes the arrow and menu to open at the same time
-        OPEN_CHILD_FADE_START_DELAY = OPEN_FADE_START_DELAY
-        OPEN_CHILD_FADE_DURATION = OPEN_FADE_DURATION
-        CLOSE_FADE_START_DELAY = CLOSE_CHILD_FADE_START_DELAY
-        CLOSE_FADE_DURATION = CLOSE_CHILD_FADE_DURATION
+        mOpenChildFadeStartDelay = mOpenFadeStartDelay
+        mOpenChildFadeDuration = mOpenFadeDuration
+        mCloseFadeStartDelay = mCloseChildFadeStartDelay
+        mCloseFadeDuration = mCloseChildFadeDuration
     }
 
-    private var alignSecondRow: Boolean = false
-    private val extraSpaceForSecondRowAlignment: Int
-        get() = if (alignSecondRow) optionMeasuredHeight else 0
+    private var alignedOptionIndex: Int = 0
+    private val extraSpaceForRowAlignment: Int
+        get() = optionMeasuredHeight * alignedOptionIndex
     private val menuWidth = context.resources.getDimensionPixelSize(R.dimen.task_menu_width_grid)
 
     private lateinit var taskView: TaskView
@@ -92,10 +94,10 @@
 
     private var optionMeasuredHeight = 0
     private val arrowHorizontalPadding: Int
-        get() = if (taskView.isFocusedTask)
-            resources.getDimensionPixelSize(KtR.dimen.task_menu_horizontal_padding)
-        else
-            0
+        get() =
+            if (taskView.isFocusedTask)
+                resources.getDimensionPixelSize(R.dimen.task_menu_horizontal_padding)
+            else 0
 
     private var iconView: IconView? = null
     private var scrim: View? = null
@@ -119,12 +121,12 @@
 
     override fun onFinishInflate() {
         super.onFinishInflate()
-        optionLayout = findViewById(KtR.id.menu_option_layout)
+        optionLayout = findViewById(R.id.menu_option_layout)
     }
 
     private fun populateAndShowForTask(
         taskContainer: TaskIdAttributeContainer,
-        alignSecondRow: Boolean
+        alignedOptionIndex: Int
     ): Boolean {
         if (isAttachedToWindow) {
             return false
@@ -132,7 +134,7 @@
 
         taskView = taskContainer.taskView
         this.taskContainer = taskContainer
-        this.alignSecondRow = alignSecondRow
+        this.alignedOptionIndex = alignedOptionIndex
         if (!populateMenu()) return false
         addScrim()
         show()
@@ -140,19 +142,20 @@
     }
 
     private fun addScrim() {
-        scrim = View(context).apply {
-            layoutParams = FrameLayout.LayoutParams(
-                FrameLayout.LayoutParams.MATCH_PARENT,
-                FrameLayout.LayoutParams.MATCH_PARENT
-            )
-            setBackgroundColor(Themes.getAttrColor(context, R.attr.overviewScrimColor))
-            alpha = 0f
-        }
+        scrim =
+            View(context).apply {
+                layoutParams =
+                    FrameLayout.LayoutParams(
+                        FrameLayout.LayoutParams.MATCH_PARENT,
+                        FrameLayout.LayoutParams.MATCH_PARENT
+                    )
+                setBackgroundColor(Themes.getAttrColor(context, R.attr.overviewScrimColor))
+                alpha = 0f
+            }
         popupContainer.addView(scrim)
     }
 
-    /** @return true if successfully able to populate task view menu, false otherwise
-     */
+    /** @return true if successfully able to populate task view menu, false otherwise */
     private fun populateMenu(): Boolean {
         // Icon may not be loaded
         if (taskContainer.task.icon == null) return false
@@ -163,14 +166,14 @@
 
     private fun addMenuOptions() {
         // Add the options
-        TaskOverlayFactory
-            .getEnabledShortcuts(taskView, mActivityContext.deviceProfile, taskContainer)
-            .forEach { this.addMenuOption(it) }
+        TaskOverlayFactory.getEnabledShortcuts(taskView, taskContainer).forEach {
+            this.addMenuOption(it)
+        }
 
         // Add the spaces between items
         val divider = ShapeDrawable(RectShape())
         divider.paint.color = resources.getColor(android.R.color.transparent)
-        val dividerSpacing = resources.getDimension(KtR.dimen.task_menu_spacing).toInt()
+        val dividerSpacing = resources.getDimension(R.dimen.task_menu_spacing).toInt()
         optionLayout.showDividers = SHOW_DIVIDER_MIDDLE
 
         // Set the orientation, which makes the menu show
@@ -186,9 +189,9 @@
     }
 
     private fun addMenuOption(menuOption: SystemShortcut<*>) {
-        val menuOptionView = mActivityContext.layoutInflater.inflate(
-            KtR.layout.task_view_menu_option, this, false
-        ) as LinearLayout
+        val menuOptionView =
+            mActivityContext.layoutInflater.inflate(R.layout.task_view_menu_option, this, false)
+                as LinearLayout
         menuOption.setIconAndLabelFor(
             menuOptionView.findViewById(R.id.icon),
             menuOptionView.findViewById(R.id.text)
@@ -210,7 +213,7 @@
         scrim?.let {
             anim.play(
                 ObjectAnimator.ofFloat(it, View.ALPHA, 0f, scrimAlpha)
-                    .setDuration(OPEN_DURATION.toLong())
+                    .setDuration(mOpenDuration.toLong())
             )
         }
     }
@@ -219,7 +222,7 @@
         scrim?.let {
             anim.play(
                 ObjectAnimator.ofFloat(it, View.ALPHA, scrimAlpha, 0f)
-                    .setDuration(CLOSE_DURATION.toLong())
+                    .setDuration(mCloseDuration.toLong())
             )
         }
     }
@@ -231,31 +234,31 @@
     }
 
     /**
-     * Copy the iconView from taskView to dragLayer so it can stay on top of the scrim.
-     * It needs to be called after [getTargetObjectLocation] because [mTempRect] needs to be
-     * populated.
+     * Copy the iconView from taskView to dragLayer so it can stay on top of the scrim. It needs to
+     * be called after [getTargetObjectLocation] because [mTempRect] needs to be populated.
      */
     private fun copyIconToDragLayer(insets: Rect) {
-        iconView = IconView(context).apply {
-            layoutParams = FrameLayout.LayoutParams(
-                taskContainer.iconView.width,
-                taskContainer.iconView.height
-            )
-            x = mTempRect.left.toFloat() - insets.left
-            y = mTempRect.top.toFloat() - insets.top
-            drawable = taskContainer.iconView.drawable
-            setDrawableSize(
-                taskContainer.iconView.drawableWidth,
-                taskContainer.iconView.drawableHeight
-            )
-        }
+        iconView =
+            IconView(context).apply {
+                layoutParams =
+                    FrameLayout.LayoutParams(
+                        taskContainer.iconView.width,
+                        taskContainer.iconView.height
+                    )
+                x = mTempRect.left.toFloat() - insets.left
+                y = mTempRect.top.toFloat() - insets.top
+                drawable = taskContainer.iconView.drawable
+                setDrawableSize(
+                    taskContainer.iconView.drawableWidth,
+                    taskContainer.iconView.drawableHeight
+                )
+            }
 
         popupContainer.addView(iconView)
     }
 
     /**
-     * Orients this container to the left or right of the given icon, aligning with the first option
-     * or second.
+     * Orients this container to the left or right of the given icon, aligning with the desired row.
      *
      * These are the preferred orientations, in order (RTL prefers right-aligned over left):
      * - Right and first option aligned
@@ -282,19 +285,20 @@
         // which means the arrow is left aligned with the menu
         val rightAlignedMenuStartX = mTempRect.left - widthWithArrow
         val leftAlignedMenuStartX = mTempRect.right + extraHorizontalSpace
-        mIsLeftAligned = if (mIsRtl) {
-            rightAlignedMenuStartX + insets.left < 0
-        } else {
-            leftAlignedMenuStartX + (widthWithArrow - extraHorizontalSpace) + insets.left <
+        mIsLeftAligned =
+            if (mIsRtl) {
+                rightAlignedMenuStartX + insets.left < 0
+            } else {
+                leftAlignedMenuStartX + (widthWithArrow - extraHorizontalSpace) + insets.left <
                     dragLayer.width - insets.right
-        }
+            }
 
         var menuStartX = if (mIsLeftAligned) leftAlignedMenuStartX else rightAlignedMenuStartX
 
         // Offset y so that the arrow and row are center-aligned with the original icon.
         val iconHeight = mTempRect.height()
         val yOffset = (optionMeasuredHeight - iconHeight) / 2
-        var menuStartY = mTempRect.top - yOffset - extraSpaceForSecondRowAlignment
+        var menuStartY = mTempRect.top - yOffset - extraSpaceForRowAlignment
 
         // Insets are added later, so subtract them now.
         menuStartX -= insets.left
@@ -312,8 +316,7 @@
     override fun addArrow() {
         popupContainer.addView(mArrow)
         mArrow.x = getArrowX()
-        mArrow.y = y + (optionMeasuredHeight / 2) - (mArrowHeight / 2) +
-                extraSpaceForSecondRowAlignment
+        mArrow.y = y + (optionMeasuredHeight / 2) - (mArrowHeight / 2) + extraSpaceForRowAlignment
 
         updateArrowColor()
 
@@ -323,22 +326,19 @@
     }
 
     private fun getArrowX(): Float {
-        return if (mIsLeftAligned)
-            x - mArrowHeight
-        else
-            x + measuredWidth + mArrowOffsetVertical
+        return if (mIsLeftAligned) x - mArrowHeight else x + measuredWidth + mArrowOffsetVertical
     }
 
     override fun updateArrowColor() {
-        mArrow.background = RoundedArrowDrawable(
-            mArrowWidth.toFloat(),
-            mArrowHeight.toFloat(),
-            mArrowPointRadius.toFloat(),
-            mIsLeftAligned,
-            mArrowColor
-        )
+        mArrow.background =
+            RoundedArrowDrawable(
+                mArrowWidth.toFloat(),
+                mArrowHeight.toFloat(),
+                mArrowPointRadius.toFloat(),
+                mIsLeftAligned,
+                mArrowColor
+            )
         elevation = mElevation
         mArrow.elevation = mElevation
     }
-
-}
\ No newline at end of file
+}
diff --git a/quickstep/src/com/android/quickstep/views/TaskThumbnailView.java b/quickstep/src/com/android/quickstep/views/TaskThumbnailView.java
index d8120ff..f746203 100644
--- a/quickstep/src/com/android/quickstep/views/TaskThumbnailView.java
+++ b/quickstep/src/com/android/quickstep/views/TaskThumbnailView.java
@@ -19,8 +19,8 @@
 import static android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS;
 import static android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS;
 
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
-import static com.android.systemui.shared.system.WindowManagerWrapper.WINDOWING_MODE_FULLSCREEN;
+import static com.android.systemui.shared.recents.utilities.PreviewPositionHelper.MAX_PCT_BEFORE_ASPECT_RATIOS_CONSIDERED_DIFFERENT;
+import static com.android.systemui.shared.recents.utilities.Utilities.isRelativePercentDifferenceGreaterThan;
 
 import android.content.Context;
 import android.graphics.Bitmap;
@@ -36,12 +36,13 @@
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.graphics.Shader;
+import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.util.AttributeSet;
 import android.util.FloatProperty;
 import android.util.Property;
-import android.view.Surface;
 import android.view.View;
+import android.widget.ImageView;
 
 import androidx.annotation.Nullable;
 import androidx.annotation.RequiresApi;
@@ -50,12 +51,15 @@
 import com.android.launcher3.BaseActivity;
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.touch.PagedOrientationHandler;
 import com.android.launcher3.util.MainThreadInitializedObject;
 import com.android.launcher3.util.SystemUiController;
+import com.android.launcher3.util.SystemUiController.SystemUiControllerFlags;
 import com.android.quickstep.TaskOverlayFactory.TaskOverlay;
 import com.android.quickstep.views.TaskView.FullscreenDrawParams;
 import com.android.systemui.shared.recents.model.Task;
 import com.android.systemui.shared.recents.model.ThumbnailData;
+import com.android.systemui.shared.recents.utilities.PreviewPositionHelper;
 
 /**
  * A task in the Recents view.
@@ -77,11 +81,53 @@
                 }
             };
 
+    public static final Property<TaskThumbnailView, Float> SPLASH_ALPHA =
+            new FloatProperty<TaskThumbnailView>("splashAlpha") {
+                @Override
+                public void setValue(TaskThumbnailView thumbnail, float splashAlpha) {
+                    thumbnail.setSplashAlpha(splashAlpha);
+                }
+
+                @Override
+                public Float get(TaskThumbnailView thumbnailView) {
+                    return thumbnailView.mSplashAlpha / 255f;
+                }
+            };
+
+    /** Use to animate thumbnail translationX while first app in split selection is initiated */
+    public static final Property<TaskThumbnailView, Float> SPLIT_SELECT_TRANSLATE_X =
+            new FloatProperty<TaskThumbnailView>("splitSelectTranslateX") {
+                @Override
+                public void setValue(TaskThumbnailView thumbnail, float splitSelectTranslateX) {
+                    thumbnail.applySplitSelectTranslateX(splitSelectTranslateX);
+                }
+
+                @Override
+                public Float get(TaskThumbnailView thumbnailView) {
+                    return thumbnailView.mSplitSelectTranslateX;
+                }
+            };
+
+    /** Use to animate thumbnail translationY while first app in split selection is initiated */
+    public static final Property<TaskThumbnailView, Float> SPLIT_SELECT_TRANSLATE_Y =
+            new FloatProperty<TaskThumbnailView>("splitSelectTranslateY") {
+                @Override
+                public void setValue(TaskThumbnailView thumbnail, float splitSelectTranslateY) {
+                    thumbnail.applySplitSelectTranslateY(splitSelectTranslateY);
+                }
+
+                @Override
+                public Float get(TaskThumbnailView thumbnailView) {
+                    return thumbnailView.mSplitSelectTranslateY;
+                }
+            };
+
     private final BaseActivity mActivity;
     @Nullable
     private TaskOverlay mOverlay;
     private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
     private final Paint mBackgroundPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+    private final Paint mSplashBackgroundPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
     private final Paint mClearPaint = new Paint();
     private final Paint mDimmingPaintAfterClearing = new Paint();
     private final int mDimColor;
@@ -90,6 +136,8 @@
     private final Rect mPreviewRect = new Rect();
     private final PreviewPositionHelper mPreviewPositionHelper = new PreviewPositionHelper();
     private TaskView.FullscreenDrawParams mFullscreenParams;
+    private ImageView mSplashView;
+    private Drawable mSplashViewDrawable;
 
     @Nullable
     private Task mTask;
@@ -100,8 +148,14 @@
 
     /** How much this thumbnail is dimmed, 0 not dimmed at all, 1 totally dimmed. */
     private float mDimAlpha = 0f;
+    /** Controls visibility of the splash view, 0 is transparent, 255 fully opaque. */
+    private int mSplashAlpha = 0;
 
     private boolean mOverlayEnabled;
+    /** Used as a placeholder when the original thumbnail animates out to. */
+    private boolean mShowSplashForSplitSelection;
+    private float mSplitSelectTranslateX;
+    private float mSplitSelectTranslateY;
 
     public TaskThumbnailView(Context context) {
         this(context, null);
@@ -115,6 +169,7 @@
         super(context, attrs, defStyleAttr);
         mPaint.setFilterBitmap(true);
         mBackgroundPaint.setColor(Color.WHITE);
+        mSplashBackgroundPaint.setColor(Color.WHITE);
         mClearPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
         mActivity = BaseActivity.fromContext(context);
         // Initialize with placeholder value. It is overridden later by TaskView
@@ -134,6 +189,8 @@
         int color = task == null ? Color.BLACK : task.colorBackground | 0xFF000000;
         mPaint.setColor(color);
         mBackgroundPaint.setColor(color);
+        mSplashBackgroundPaint.setColor(color);
+        updateSplashView(mTask.icon);
     }
 
     /**
@@ -151,6 +208,9 @@
         boolean thumbnailWasNull = mThumbnailData == null;
         mThumbnailData =
                 (thumbnailData != null && thumbnailData.thumbnail != null) ? thumbnailData : null;
+        if (mTask != null) {
+            updateSplashView(mTask.icon);
+        }
         if (refreshNow) {
             refresh(thumbnailWasNull && mThumbnailData != null);
         }
@@ -201,6 +261,18 @@
         updateThumbnailPaintFilter();
     }
 
+    /**
+     * Sets the alpha of the splash view.
+     */
+    public void setSplashAlpha(float splashAlpha) {
+        mSplashAlpha = (int) (Utilities.boundToRange(splashAlpha, 0f, 1f) * 255);
+        if (mSplashViewDrawable != null) {
+            mSplashViewDrawable.setAlpha(mSplashAlpha);
+        }
+        mSplashBackgroundPaint.setAlpha(mSplashAlpha);
+        invalidate();
+    }
+
     public TaskOverlay getTaskOverlay() {
         if (mOverlay == null) {
             mOverlay = getTaskView().getRecentsView().getTaskOverlayFactory().createOverlay(this);
@@ -237,16 +309,13 @@
         boundsToBitmapSpace.mapRect(boundsInBitmapSpace, viewRect);
 
         DeviceProfile dp = mActivity.getDeviceProfile();
-        int leftInset = TaskView.clipLeft(dp) ? Math.round(boundsInBitmapSpace.left) : 0;
-        int topInset = TaskView.clipTop(dp) ? Math.round(boundsInBitmapSpace.top) : 0;
-        int rightInset = TaskView.clipRight(dp) ? Math.round(
-                bitmapRect.right - boundsInBitmapSpace.right) : 0;
-        int bottomInset = TaskView.clipBottom(dp)
+        int bottomInset = dp.isTablet
                 ? Math.round(bitmapRect.bottom - boundsInBitmapSpace.bottom) : 0;
-        return Insets.of(leftInset, topInset, rightInset, bottomInset);
+        return Insets.of(0, 0, 0, bottomInset);
     }
 
 
+    @SystemUiControllerFlags
     public int getSysUiStatusNavFlags() {
         if (mThumbnailData != null) {
             int flags = 0;
@@ -262,17 +331,16 @@
     }
 
     @Override
+    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+        super.onLayout(changed, left, top, right, bottom);
+        updateSplashView(mSplashViewDrawable);
+    }
+
+    @Override
     protected void onDraw(Canvas canvas) {
-        RectF currentDrawnInsets = mFullscreenParams.mCurrentDrawnInsets;
         canvas.save();
-        canvas.scale(mFullscreenParams.mScale, mFullscreenParams.mScale);
-        canvas.translate(currentDrawnInsets.left, currentDrawnInsets.top);
         // Draw the insets if we're being drawn fullscreen (we do this for quick switch).
-        drawOnCanvas(canvas,
-                -currentDrawnInsets.left,
-                -currentDrawnInsets.top,
-                getMeasuredWidth() + currentDrawnInsets.right,
-                getMeasuredHeight() + currentDrawnInsets.bottom,
+        drawOnCanvas(canvas, 0, 0, getMeasuredWidth(), getMeasuredHeight(),
                 mFullscreenParams.mCurrentDrawnCornerRadius);
         canvas.restore();
     }
@@ -289,13 +357,11 @@
 
     public void drawOnCanvas(Canvas canvas, float x, float y, float width, float height,
             float cornerRadius) {
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
-            if (mTask != null && getTaskView().isRunningTask() && !getTaskView().showScreenshot()) {
-                canvas.drawRoundRect(x, y, width, height, cornerRadius, cornerRadius, mClearPaint);
-                canvas.drawRoundRect(x, y, width, height, cornerRadius, cornerRadius,
-                        mDimmingPaintAfterClearing);
-                return;
-            }
+        if (mTask != null && getTaskView().isRunningTask() && !getTaskView().showScreenshot()) {
+            canvas.drawRoundRect(x, y, width, height, cornerRadius, cornerRadius, mClearPaint);
+            canvas.drawRoundRect(x, y, width, height, cornerRadius, cornerRadius,
+                    mDimmingPaintAfterClearing);
+            return;
         }
 
         // Always draw the background since the snapshots might be translucent or partially empty
@@ -311,6 +377,50 @@
         }
 
         canvas.drawRoundRect(x, y, width, height, cornerRadius, cornerRadius, mPaint);
+
+        // Draw splash above thumbnail to hide inconsistencies in rotation and aspect ratios.
+        if (shouldShowSplashView()) {
+            float cornerRadiusX = cornerRadius;
+            float cornerRadiusY = cornerRadius;
+            if (mShowSplashForSplitSelection) {
+                cornerRadiusX = cornerRadius / getScaleX();
+                cornerRadiusY = cornerRadius / getScaleY();
+            }
+
+            // Always draw background for hiding inconsistencies, even if splash view is not yet
+            // loaded (which can happen as task icons are loaded asynchronously in the background)
+            canvas.drawRoundRect(x, y, width + 1, height + 1, cornerRadiusX,
+                    cornerRadiusY, mSplashBackgroundPaint);
+            if (mSplashView != null) {
+                mSplashView.layout((int) x, (int) (y + 1), (int) width, (int) height - 1);
+                mSplashView.draw(canvas);
+            }
+        }
+    }
+
+    /** See {@link #SPLIT_SELECT_TRANSLATE_X} */
+    protected void applySplitSelectTranslateX(float splitSelectTranslateX) {
+        mSplitSelectTranslateX = splitSelectTranslateX;
+        applyTranslateX();
+    }
+
+    /** See {@link #SPLIT_SELECT_TRANSLATE_Y} */
+    protected void applySplitSelectTranslateY(float splitSelectTranslateY) {
+        mSplitSelectTranslateY = splitSelectTranslateY;
+        applyTranslateY();
+    }
+
+    private void applyTranslateX() {
+        setTranslationX(mSplitSelectTranslateX);
+    }
+
+    private void applyTranslateY() {
+        setTranslationY(mSplitSelectTranslateY);
+    }
+
+    protected void resetViewTransforms() {
+        mSplitSelectTranslateX = 0;
+        mSplitSelectTranslateY = 0;
     }
 
     public TaskView getTaskView() {
@@ -326,13 +436,99 @@
     }
 
     /**
+     * Determine if the splash should be shown over top of the thumbnail.
+     *
+     * <p>We want to show the splash if the aspect ratio or rotation of the thumbnail would be
+     * different from the task.
+     */
+    public boolean shouldShowSplashView() {
+        return isThumbnailAspectRatioDifferentFromThumbnailData()
+                || isThumbnailRotationDifferentFromTask()
+                || mShowSplashForSplitSelection;
+    }
+
+    public void setShowSplashForSplitSelection(boolean showSplashForSplitSelection) {
+        mShowSplashForSplitSelection = showSplashForSplitSelection;
+    }
+
+    protected void refreshSplashView() {
+        if (mTask != null) {
+            updateSplashView(mTask.icon);
+            invalidate();
+        }
+    }
+
+    private void updateSplashView(Drawable icon) {
+        if (icon == null || icon.getConstantState() == null) {
+            mSplashViewDrawable = null;
+            mSplashView = null;
+            return;
+        }
+        mSplashViewDrawable = icon.getConstantState().newDrawable().mutate();
+        mSplashViewDrawable.setAlpha(mSplashAlpha);
+        ImageView imageView = mSplashView == null ? new ImageView(getContext()) : mSplashView;
+        imageView.setImageDrawable(mSplashViewDrawable);
+
+        imageView.setScaleType(ImageView.ScaleType.MATRIX);
+        Matrix matrix = new Matrix();
+        float drawableWidth = mSplashViewDrawable.getIntrinsicWidth();
+        float drawableHeight = mSplashViewDrawable.getIntrinsicHeight();
+        float viewWidth = getMeasuredWidth();
+        float viewCenterX = viewWidth / 2f;
+        float viewHeight = getMeasuredHeight();
+        float viewCenterY = viewHeight / 2f;
+        float centeredDrawableLeft = (viewWidth - drawableWidth) / 2f;
+        float centeredDrawableTop = (viewHeight - drawableHeight) / 2f;
+        float nonGridScale = getTaskView() == null ? 1 : 1 / getTaskView().getNonGridScale();
+        float recentsMaxScale = getTaskView() == null || getTaskView().getRecentsView() == null
+                ? 1 : 1 / getTaskView().getRecentsView().getMaxScaleForFullScreen();
+        float scaleX = nonGridScale * recentsMaxScale * (1 / getScaleX());
+        float scaleY = nonGridScale * recentsMaxScale * (1 / getScaleY());
+
+        // Center the image in the view.
+        matrix.setTranslate(centeredDrawableLeft, centeredDrawableTop);
+        // Apply scale transformation after translation, pivoting around center of view.
+        matrix.postScale(scaleX, scaleY, viewCenterX, viewCenterY);
+
+        imageView.setImageMatrix(matrix);
+        mSplashView = imageView;
+    }
+
+    private boolean isThumbnailAspectRatioDifferentFromThumbnailData() {
+        if (mThumbnailData == null || mThumbnailData.thumbnail == null) {
+            return false;
+        }
+
+        float thumbnailViewAspect = getWidth() / (float) getHeight();
+        float thumbnailDataAspect =
+                mThumbnailData.thumbnail.getWidth() / (float) mThumbnailData.thumbnail.getHeight();
+
+        return isRelativePercentDifferenceGreaterThan(thumbnailViewAspect,
+                thumbnailDataAspect, MAX_PCT_BEFORE_ASPECT_RATIOS_CONSIDERED_DIFFERENT);
+    }
+
+    private boolean isThumbnailRotationDifferentFromTask() {
+        RecentsView recents = getTaskView().getRecentsView();
+        if (recents == null || mThumbnailData == null) {
+            return false;
+        }
+
+        if (recents.getPagedOrientationHandler() == PagedOrientationHandler.PORTRAIT) {
+            int currentRotation = recents.getPagedViewOrientedState().getRecentsActivityRotation();
+            return (currentRotation - mThumbnailData.rotation) % 2 != 0;
+        } else {
+            return recents.getPagedOrientationHandler().getRotation() != mThumbnailData.rotation;
+        }
+    }
+
+    /**
      * Potentially re-init the task overlay. Be cautious when calling this as the overlay may
      * do processing on initialization.
      */
     private void refreshOverlay() {
         if (mOverlayEnabled) {
-            getTaskOverlay().initOverlay(mTask, mThumbnailData, mPreviewPositionHelper.mMatrix,
-                    mPreviewPositionHelper.mIsOrientationChanged);
+            getTaskOverlay().initOverlay(mTask, mThumbnailData, mPreviewPositionHelper.getMatrix(),
+                    mPreviewPositionHelper.isOrientationChanged());
         } else {
             getTaskOverlay().reset();
         }
@@ -353,7 +549,8 @@
     }
 
     private void updateThumbnailMatrix() {
-        mPreviewPositionHelper.mIsOrientationChanged = false;
+        DeviceProfile dp = mActivity.getDeviceProfile();
+        mPreviewPositionHelper.setOrientationChanged(false);
         if (mBitmapShader != null && mThumbnailData != null) {
             mPreviewRect.set(0, 0, mThumbnailData.thumbnail.getWidth(),
                     mThumbnailData.thumbnail.getHeight());
@@ -361,10 +558,10 @@
                     .getRecentsActivityRotation();
             boolean isRtl = getLayoutDirection() == LAYOUT_DIRECTION_RTL;
             mPreviewPositionHelper.updateThumbnailMatrix(mPreviewRect, mThumbnailData,
-                    getMeasuredWidth(), getMeasuredHeight(), mActivity.getDeviceProfile(),
-                    currentRotation, isRtl);
+                    getMeasuredWidth(), getMeasuredHeight(), dp.widthPx, dp.heightPx,
+                    dp.taskbarHeight, dp.isTablet, currentRotation, isRtl);
 
-            mBitmapShader.setLocalMatrix(mPreviewPositionHelper.mMatrix);
+            mBitmapShader.setLocalMatrix(mPreviewPositionHelper.getMatrix());
             mPaint.setShader(mBitmapShader);
         }
         getTaskView().updateCurrentFullscreenParams(mPreviewPositionHelper);
@@ -404,257 +601,4 @@
         }
         return mThumbnailData.isRealSnapshot && !mTask.isLocked;
     }
-
-    /**
-     * Utility class to position the thumbnail in the TaskView
-     */
-    public static class PreviewPositionHelper {
-
-        private static final RectF EMPTY_RECT_F = new RectF();
-
-        // Contains the portion of the thumbnail that is unclipped when fullscreen progress = 1.
-        private final RectF mClippedInsets = new RectF();
-        private final Matrix mMatrix = new Matrix();
-        private boolean mIsOrientationChanged;
-
-        public Matrix getMatrix() {
-            return mMatrix;
-        }
-
-        /**
-         * Updates the matrix based on the provided parameters
-         */
-        public void updateThumbnailMatrix(Rect thumbnailBounds, ThumbnailData thumbnailData,
-                int canvasWidth, int canvasHeight, DeviceProfile dp, int currentRotation,
-                boolean isRtl) {
-            boolean isRotated = false;
-            boolean isOrientationDifferent;
-
-            int thumbnailRotation = thumbnailData.rotation;
-            int deltaRotate = getRotationDelta(currentRotation, thumbnailRotation);
-            RectF thumbnailClipHint = new RectF();
-            if (TaskView.clipLeft(dp)) {
-                thumbnailClipHint.left = thumbnailData.insets.left;
-            }
-            if (TaskView.clipRight(dp)) {
-                thumbnailClipHint.right = thumbnailData.insets.right;
-            }
-            if (TaskView.clipTop(dp)) {
-                thumbnailClipHint.top = thumbnailData.insets.top;
-            }
-            if (TaskView.clipBottom(dp)) {
-                thumbnailClipHint.bottom = thumbnailData.insets.bottom;
-            }
-
-            float scale = thumbnailData.scale;
-            final float thumbnailScale;
-
-            // Landscape vs portrait change.
-            // Note: Disable rotation in grid layout.
-            boolean windowingModeSupportsRotation = !dp.isMultiWindowMode
-                    && thumbnailData.windowingMode == WINDOWING_MODE_FULLSCREEN
-                    && !dp.isTablet;
-            isOrientationDifferent = isOrientationChange(deltaRotate)
-                    && windowingModeSupportsRotation;
-            if (canvasWidth == 0 || canvasHeight == 0 || scale == 0) {
-                // If we haven't measured , skip the thumbnail drawing and only draw the background
-                // color
-                thumbnailScale = 0f;
-            } else {
-                // Rotate the screenshot if not in multi-window mode
-                isRotated = deltaRotate > 0 && windowingModeSupportsRotation;
-
-                float surfaceWidth = thumbnailBounds.width() / scale;
-                float surfaceHeight = thumbnailBounds.height() / scale;
-                float availableWidth = surfaceWidth
-                        - (thumbnailClipHint.left + thumbnailClipHint.right);
-                float availableHeight = surfaceHeight
-                        - (thumbnailClipHint.top + thumbnailClipHint.bottom);
-
-                float canvasAspect = canvasWidth / (float) canvasHeight;
-                float availableAspect = isRotated
-                        ? availableHeight / availableWidth
-                        : availableWidth / availableHeight;
-                boolean isAspectLargelyDifferent = Utilities.isRelativePercentDifferenceGreaterThan(
-                        canvasAspect, availableAspect, 0.1f);
-                if (isRotated && isAspectLargelyDifferent) {
-                    // Do not rotate thumbnail if it would not improve fit
-                    isRotated = false;
-                    isOrientationDifferent = false;
-                }
-
-                if (isAspectLargelyDifferent) {
-                    // Crop letterbox insets if insets isn't already clipped
-                    if (!TaskView.clipLeft(dp)) {
-                        thumbnailClipHint.left = thumbnailData.letterboxInsets.left;
-                    }
-                    if (!TaskView.clipRight(dp)) {
-                        thumbnailClipHint.right = thumbnailData.letterboxInsets.right;
-                    }
-                    if (!TaskView.clipTop(dp)) {
-                        thumbnailClipHint.top = thumbnailData.letterboxInsets.top;
-                    }
-                    if (!TaskView.clipBottom(dp)) {
-                        thumbnailClipHint.bottom = thumbnailData.letterboxInsets.bottom;
-                    }
-                    availableWidth = surfaceWidth
-                            - (thumbnailClipHint.left + thumbnailClipHint.right);
-                    availableHeight = surfaceHeight
-                            - (thumbnailClipHint.top + thumbnailClipHint.bottom);
-                }
-
-                final float targetW, targetH;
-                if (isOrientationDifferent) {
-                    targetW = canvasHeight;
-                    targetH = canvasWidth;
-                } else {
-                    targetW = canvasWidth;
-                    targetH = canvasHeight;
-                }
-                float targetAspect = targetW / targetH;
-
-                // Update the clipHint such that
-                //   > the final clipped position has same aspect ratio as requested by canvas
-                //   > first fit the width and crop the extra height
-                //   > if that will leave empty space, fit the height and crop the width instead
-                float croppedWidth = availableWidth;
-                float croppedHeight = croppedWidth / targetAspect;
-                if (croppedHeight > availableHeight) {
-                    croppedHeight = availableHeight;
-                    if (croppedHeight < targetH) {
-                        croppedHeight = Math.min(targetH, surfaceHeight);
-                    }
-                    croppedWidth = croppedHeight * targetAspect;
-
-                    // One last check in case the task aspect radio messed up something
-                    if (croppedWidth > surfaceWidth) {
-                        croppedWidth = surfaceWidth;
-                        croppedHeight = croppedWidth / targetAspect;
-                    }
-                }
-
-                // Update the clip hints. Align to 0,0, crop the remaining.
-                if (isRtl) {
-                    thumbnailClipHint.left += availableWidth - croppedWidth;
-                    if (thumbnailClipHint.right < 0) {
-                        thumbnailClipHint.left += thumbnailClipHint.right;
-                        thumbnailClipHint.right = 0;
-                    }
-                } else {
-                    thumbnailClipHint.right += availableWidth - croppedWidth;
-                    if (thumbnailClipHint.left < 0) {
-                        thumbnailClipHint.right += thumbnailClipHint.left;
-                        thumbnailClipHint.left = 0;
-                    }
-                }
-                thumbnailClipHint.bottom += availableHeight - croppedHeight;
-                if (thumbnailClipHint.top < 0) {
-                    thumbnailClipHint.bottom += thumbnailClipHint.top;
-                    thumbnailClipHint.top = 0;
-                } else if (thumbnailClipHint.bottom < 0) {
-                    thumbnailClipHint.top += thumbnailClipHint.bottom;
-                    thumbnailClipHint.bottom = 0;
-                }
-
-                thumbnailScale = targetW / (croppedWidth * scale);
-            }
-
-            Rect splitScreenInsets = dp.getInsets();
-            if (!isRotated) {
-                // No Rotation
-                if (dp.isMultiWindowMode) {
-                    mClippedInsets.offsetTo(splitScreenInsets.left * scale,
-                            splitScreenInsets.top * scale);
-                } else {
-                    mClippedInsets.offsetTo(thumbnailClipHint.left * scale,
-                            thumbnailClipHint.top * scale);
-                }
-                mMatrix.setTranslate(
-                        -thumbnailClipHint.left * scale,
-                        -thumbnailClipHint.top * scale);
-            } else {
-                setThumbnailRotation(deltaRotate, thumbnailClipHint, scale, thumbnailBounds, dp);
-            }
-
-            final float widthWithInsets;
-            final float heightWithInsets;
-            if (isOrientationDifferent) {
-                widthWithInsets = thumbnailBounds.height() * thumbnailScale;
-                heightWithInsets = thumbnailBounds.width() * thumbnailScale;
-            } else {
-                widthWithInsets = thumbnailBounds.width() * thumbnailScale;
-                heightWithInsets = thumbnailBounds.height() * thumbnailScale;
-            }
-            mClippedInsets.left *= thumbnailScale;
-            mClippedInsets.top *= thumbnailScale;
-
-            if (dp.isMultiWindowMode) {
-                mClippedInsets.right = splitScreenInsets.right * scale * thumbnailScale;
-                mClippedInsets.bottom = splitScreenInsets.bottom * scale * thumbnailScale;
-            } else {
-                mClippedInsets.right = Math.max(0,
-                        widthWithInsets - mClippedInsets.left - canvasWidth);
-                mClippedInsets.bottom = Math.max(0,
-                        heightWithInsets - mClippedInsets.top - canvasHeight);
-            }
-
-            mMatrix.postScale(thumbnailScale, thumbnailScale);
-            mIsOrientationChanged = isOrientationDifferent;
-        }
-
-        private int getRotationDelta(int oldRotation, int newRotation) {
-            int delta = newRotation - oldRotation;
-            if (delta < 0) delta += 4;
-            return delta;
-        }
-
-        /**
-         * @param deltaRotation the number of 90 degree turns from the current orientation
-         * @return {@code true} if the change in rotation results in a shift from landscape to
-         * portrait or vice versa, {@code false} otherwise
-         */
-        private boolean isOrientationChange(int deltaRotation) {
-            return deltaRotation == Surface.ROTATION_90 || deltaRotation == Surface.ROTATION_270;
-        }
-
-        private void setThumbnailRotation(int deltaRotate, RectF thumbnailInsets, float scale,
-                Rect thumbnailPosition, DeviceProfile dp) {
-            float newLeftInset = 0;
-            float newTopInset = 0;
-            float translateX = 0;
-            float translateY = 0;
-
-            mMatrix.setRotate(90 * deltaRotate);
-            switch (deltaRotate) { /* Counter-clockwise */
-                case Surface.ROTATION_90:
-                    newLeftInset = thumbnailInsets.bottom;
-                    newTopInset = thumbnailInsets.left;
-                    translateX = thumbnailPosition.height();
-                    break;
-                case Surface.ROTATION_270:
-                    newLeftInset = thumbnailInsets.top;
-                    newTopInset = thumbnailInsets.right;
-                    translateY = thumbnailPosition.width();
-                    break;
-                case Surface.ROTATION_180:
-                    newLeftInset = -thumbnailInsets.top;
-                    newTopInset = -thumbnailInsets.left;
-                    translateX = thumbnailPosition.width();
-                    translateY = thumbnailPosition.height();
-                    break;
-            }
-            mClippedInsets.offsetTo(newLeftInset * scale, newTopInset * scale);
-            mMatrix.postTranslate(translateX, translateY);
-            if (TaskView.useFullThumbnail(dp)) {
-                mMatrix.postTranslate(-mClippedInsets.left, -mClippedInsets.top);
-            }
-        }
-
-        /**
-         * Insets to used for clipping the thumbnail (in case it is drawing outside its own space)
-         */
-        public RectF getInsetsToDrawInFullscreen(DeviceProfile dp) {
-            return TaskView.useFullThumbnail(dp) ? mClippedInsets : EMPTY_RECT_F;
-        }
-    }
 }
diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java
index d58bb7c..6e7b6dc 100644
--- a/quickstep/src/com/android/quickstep/views/TaskView.java
+++ b/quickstep/src/com/android/quickstep/views/TaskView.java
@@ -16,22 +16,23 @@
 
 package com.android.quickstep.views;
 
+import static android.app.ActivityTaskManager.INVALID_TASK_ID;
 import static android.view.Display.DEFAULT_DISPLAY;
 import static android.widget.Toast.LENGTH_SHORT;
 
-import static com.android.launcher3.AbstractFloatingView.TYPE_TASK_MENU;
-import static com.android.launcher3.Utilities.comp;
+import static com.android.launcher3.LauncherState.BACKGROUND_APP;
 import static com.android.launcher3.Utilities.getDescendantCoordRelativeToAncestor;
 import static com.android.launcher3.anim.Interpolators.ACCEL_DEACCEL;
 import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
 import static com.android.launcher3.anim.Interpolators.LINEAR;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_ICON_TAP_OR_LONGPRESS;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASK_LAUNCH_TAP;
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
 import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
 import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_BOTTOM_OR_RIGHT;
 import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_UNDEFINED;
+import static com.android.launcher3.util.SplitConfigurationOptions.getLogEventForPosition;
+import static com.android.quickstep.util.BorderAnimator.DEFAULT_BORDER_COLOR;
 
 import static java.lang.annotation.RetentionPolicy.SOURCE;
 
@@ -41,23 +42,26 @@
 import android.animation.ObjectAnimator;
 import android.annotation.IdRes;
 import android.app.ActivityOptions;
+import android.app.ActivityTaskManager;
 import android.content.Context;
 import android.content.Intent;
-import android.graphics.Outline;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
 import android.graphics.PointF;
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
+import android.os.Handler;
 import android.util.AttributeSet;
 import android.util.FloatProperty;
 import android.util.Log;
 import android.view.Display;
 import android.view.MotionEvent;
+import android.view.RemoteAnimationTarget;
 import android.view.TouchDelegate;
 import android.view.View;
 import android.view.ViewGroup;
-import android.view.ViewOutlineProvider;
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.view.animation.Interpolator;
 import android.widget.FrameLayout;
@@ -67,17 +71,17 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
-import com.android.launcher3.AbstractFloatingView;
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.anim.Interpolators;
+import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
 import com.android.launcher3.popup.SystemShortcut;
 import com.android.launcher3.statemanager.StatefulActivity;
 import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.touch.PagedOrientationHandler;
 import com.android.launcher3.util.ActivityOptionsWrapper;
 import com.android.launcher3.util.ComponentKey;
@@ -89,23 +93,24 @@
 import com.android.quickstep.RecentsModel;
 import com.android.quickstep.RemoteAnimationTargets;
 import com.android.quickstep.RemoteTargetGluer.RemoteTargetHandle;
-import com.android.quickstep.SystemUiProxy;
+import com.android.quickstep.TaskAnimationManager;
 import com.android.quickstep.TaskIconCache;
 import com.android.quickstep.TaskOverlayFactory;
 import com.android.quickstep.TaskThumbnailCache;
 import com.android.quickstep.TaskUtils;
 import com.android.quickstep.TaskViewUtils;
+import com.android.quickstep.util.BorderAnimator;
 import com.android.quickstep.util.CancellableTask;
 import com.android.quickstep.util.RecentsOrientedState;
+import com.android.quickstep.util.SplitSelectStateController;
 import com.android.quickstep.util.TaskCornerRadius;
+import com.android.quickstep.util.TaskRemovedDuringLaunchListener;
 import com.android.quickstep.util.TransformParams;
-import com.android.quickstep.views.TaskThumbnailView.PreviewPositionHelper;
 import com.android.systemui.shared.recents.model.Task;
 import com.android.systemui.shared.recents.model.ThumbnailData;
+import com.android.systemui.shared.recents.utilities.PreviewPositionHelper;
 import com.android.systemui.shared.system.ActivityManagerWrapper;
-import com.android.systemui.shared.system.ActivityOptionsCompat;
 import com.android.systemui.shared.system.QuickStepContract;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
 
 import java.lang.annotation.Retention;
 import java.util.Arrays;
@@ -123,6 +128,8 @@
     private static final String TAG = TaskView.class.getSimpleName();
     private static final boolean DEBUG = false;
 
+    private static final RectF EMPTY_RECT_F = new RectF();
+
     public static final int FLAG_UPDATE_ICON = 1;
     public static final int FLAG_UPDATE_THUMBNAIL = FLAG_UPDATE_ICON << 1;
 
@@ -136,44 +143,20 @@
     @IntDef({FLAG_UPDATE_ALL, FLAG_UPDATE_ICON, FLAG_UPDATE_THUMBNAIL})
     public @interface TaskDataChanges {}
 
+    /**
+     * Type of task view
+     */
+    @Retention(SOURCE)
+    @IntDef({Type.SINGLE, Type.GROUPED, Type.DESKTOP})
+    public @interface Type {
+        int SINGLE = 1;
+        int GROUPED = 2;
+        int DESKTOP = 3;
+    }
+
     /** The maximum amount that a task view can be scrimmed, dimmed or tinted. */
     public static final float MAX_PAGE_SCRIM_ALPHA = 0.4f;
 
-    /**
-     * Should the TaskView display clip off the left inset in RecentsView.
-     */
-    public static boolean clipLeft(DeviceProfile deviceProfile) {
-        return false;
-    }
-
-    /**
-     * Should the TaskView display clip off the top inset in RecentsView.
-     */
-    public static boolean clipTop(DeviceProfile deviceProfile) {
-        return false;
-    }
-
-    /**
-     * Should the TaskView display clip off the right inset in RecentsView.
-     */
-    public static boolean clipRight(DeviceProfile deviceProfile) {
-        return false;
-    }
-
-    /**
-     * Should the TaskView display clip off the bottom inset in RecentsView.
-     */
-    public static boolean clipBottom(DeviceProfile deviceProfile) {
-        return deviceProfile.isTablet;
-    }
-
-    /**
-     * Should the TaskView scale down to fit whole thumbnail in fullscreen.
-     */
-    public static boolean useFullThumbnail(DeviceProfile deviceProfile) {
-        return deviceProfile.isTablet && !deviceProfile.isTaskbarPresentInApps;
-    }
-
     private static final float EDGE_SCALE_DOWN_FACTOR_CAROUSEL = 0.03f;
     private static final float EDGE_SCALE_DOWN_FACTOR_GRID = 0.00f;
 
@@ -197,7 +180,7 @@
             new FloatProperty<TaskView>("focusTransition") {
                 @Override
                 public void setValue(TaskView taskView, float v) {
-                    taskView.setIconAndDimTransitionProgress(v, false /* invert */);
+                    taskView.setIconsAndBannersTransitionProgress(v, false /* invert */);
                 }
 
                 @Override
@@ -362,15 +345,14 @@
                 }
             };
 
-    private final TaskOutlineProvider mOutlineProvider;
-
     @Nullable
     protected Task mTask;
     protected TaskThumbnailView mSnapshotView;
     protected IconView mIconView;
     protected final DigitalWellBeingToast mDigitalWellBeingToast;
-    private float mFullscreenProgress;
+    protected float mFullscreenProgress;
     private float mGridProgress;
+    protected float mTaskThumbnailSplashAlpha;
     private float mNonGridScale = 1;
     private float mDismissScale = 1;
     protected final FullscreenDrawParams mCurrentFullscreenParams;
@@ -397,7 +379,6 @@
     // Used when in SplitScreenSelectState
     private float mSplitSelectTranslationY;
     private float mSplitSelectTranslationX;
-    private float mSplitSelectScrollOffsetPrimary;
 
     @Nullable
     private ObjectAnimator mIconAndDimAnimator;
@@ -410,8 +391,8 @@
     /**
      * Index 0 will contain taskID of left/top task, index 1 will contain taskId of bottom/right
      */
-    protected final int[] mTaskIdContainer = new int[]{-1, -1};
-    protected final TaskIdAttributeContainer[] mTaskIdAttributeContainer =
+    protected int[] mTaskIdContainer = new int[]{-1, -1};
+    protected TaskIdAttributeContainer[] mTaskIdAttributeContainer =
             new TaskIdAttributeContainer[2];
 
     private boolean mShowScreenshot;
@@ -426,10 +407,11 @@
 
     private final float[] mIconCenterCoords = new float[2];
 
-    private final PointF mLastTouchDownPosition = new PointF();
+    protected final PointF mLastTouchDownPosition = new PointF();
 
     private boolean mIsClickableAsLiveTile = true;
 
+    @Nullable private final BorderAnimator mBorderAnimator;
 
     public TaskView(Context context) {
         this(context, null);
@@ -440,16 +422,45 @@
     }
 
     public TaskView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
+        this(context, attrs, defStyleAttr, 0);
+    }
+
+    public TaskView(
+            Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
         mActivity = StatefulActivity.fromContext(context);
         setOnClickListener(this::onClick);
 
         mCurrentFullscreenParams = new FullscreenDrawParams(context);
         mDigitalWellBeingToast = new DigitalWellBeingToast(mActivity, this);
 
-        mOutlineProvider = new TaskOutlineProvider(getContext(), mCurrentFullscreenParams,
-                mActivity.getDeviceProfile().overviewTaskThumbnailTopMarginPx);
-        setOutlineProvider(mOutlineProvider);
+        boolean keyboardFocusHighlightEnabled = FeatureFlags.ENABLE_KEYBOARD_QUICK_SWITCH.get()
+                || DesktopTaskView.DESKTOP_MODE_SUPPORTED;
+
+        setWillNotDraw(!keyboardFocusHighlightEnabled);
+
+        TypedArray ta = context.obtainStyledAttributes(
+                attrs, R.styleable.TaskView, defStyleAttr, defStyleRes);
+
+        mBorderAnimator = !keyboardFocusHighlightEnabled
+                ? null
+                : new BorderAnimator(
+                        /* borderRadiusPx= */ (int) mCurrentFullscreenParams.mCornerRadius,
+                        /* borderColor= */ ta.getColor(
+                                R.styleable.TaskView_borderColor, DEFAULT_BORDER_COLOR),
+                        /* borderAnimationParams= */ new BorderAnimator.SimpleParams(
+                                /* borderWidthPx= */ context.getResources().getDimensionPixelSize(
+                                        R.dimen.keyboard_quick_switch_border_width),
+                                /* boundsBuilder= */ this::updateBorderBounds,
+                                /* targetView= */ this));
+        ta.recycle();
+    }
+
+    protected void updateBorderBounds(Rect bounds) {
+        bounds.set(mSnapshotView.getLeft() + Math.round(mSnapshotView.getTranslationX()),
+                mSnapshotView.getTop() + Math.round(mSnapshotView.getTranslationY()),
+                mSnapshotView.getRight() + Math.round(mSnapshotView.getTranslationX()),
+                mSnapshotView.getBottom() + Math.round(mSnapshotView.getTranslationY()));
     }
 
     public void setTaskViewId(int id) {
@@ -493,6 +504,22 @@
         mIconTouchDelegate = new TransformingTouchDelegate(mIconView);
     }
 
+    @Override
+    protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) {
+        super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
+        if (mBorderAnimator != null) {
+            mBorderAnimator.buildAnimator(gainFocus).start();
+        }
+    }
+
+    @Override
+    public void draw(Canvas canvas) {
+        super.draw(canvas);
+        if (mBorderAnimator != null) {
+            mBorderAnimator.drawBorder(canvas);
+        }
+    }
+
     /**
      * Whether the taskview should take the touch event from parent. Events passed to children
      * that might require special handling.
@@ -531,10 +558,8 @@
             return;
         }
         mModalness = modalness;
-        mIconView.setAlpha(comp(modalness));
-        mDigitalWellBeingToast.updateBannerOffset(modalness,
-                mCurrentFullscreenParams.mCurrentDrawnInsets.top
-                        + mCurrentFullscreenParams.mCurrentDrawnInsets.bottom);
+        mIconView.setAlpha(1 - modalness);
+        mDigitalWellBeingToast.updateBannerOffset(modalness);
     }
 
     public DigitalWellBeingToast getDigitalWellBeingToast() {
@@ -555,6 +580,53 @@
                 mIconView, STAGE_POSITION_UNDEFINED);
         mSnapshotView.bind(task);
         setOrientationState(orientedState);
+        mDigitalWellBeingToast.initialize(mTask);
+    }
+
+    /**
+     * Sets up an on-click listener and the visibility for show_windows icon on top of the task.
+     */
+    public void setUpShowAllInstancesListener() {
+        String taskPackageName = mTaskIdAttributeContainer[0].mTask.key.getPackageName();
+
+        // icon of the top/left task
+        View showWindowsView = findViewById(R.id.show_windows);
+        updateFilterCallback(showWindowsView, getFilterUpdateCallback(taskPackageName));
+    }
+
+    /**
+     * Returns a callback that updates the state of the filter and the recents overview
+     *
+     * @param taskPackageName package name of the task to filter by
+     */
+    @Nullable
+    protected View.OnClickListener getFilterUpdateCallback(String taskPackageName) {
+        View.OnClickListener cb = (view) -> {
+            // update and apply a new filter
+            getRecentsView().setAndApplyFilter(taskPackageName);
+        };
+
+        if (!getRecentsView().getFilterState().shouldShowFilterUI(taskPackageName)) {
+            cb = null;
+        }
+        return cb;
+    }
+
+    /**
+     * Sets the correct visibility and callback on the provided filterView based on whether
+     * the callback is null or not
+     */
+    protected void updateFilterCallback(@NonNull View filterView,
+            @Nullable View.OnClickListener callback) {
+        // Filtering changes alpha instead of the visibility since visibility
+        // can be altered separately through RecentsView#resetFromSplitSelectionState()
+        if (callback == null) {
+            filterView.setAlpha(0);
+        } else {
+            filterView.setAlpha(1);
+        }
+
+        filterView.setOnClickListener(callback);
     }
 
     public TaskIdAttributeContainer[] getTaskIdAttributeContainers() {
@@ -567,17 +639,39 @@
     }
 
     /**
+     * Check if given {@code taskId} is tracked in this view
+     */
+    public boolean containsTaskId(int taskId) {
+        return mTask != null && mTask.key.id == taskId;
+    }
+
+    /**
      * @return integer array of two elements to be size consistent with max number of tasks possible
      *         index 0 will contain the taskId, index 1 will be -1 indicating a null taskID value
      */
     public int[] getTaskIds() {
-        return mTaskIdContainer;
+        return Arrays.copyOf(mTaskIdContainer, mTaskIdContainer.length);
     }
 
     public boolean containsMultipleTasks() {
         return mTaskIdContainer[1] != -1;
     }
 
+    /**
+     * Returns the TaskIdAttributeContainer corresponding to a given taskId, or null if the TaskView
+     * does not contain a Task with that ID.
+     */
+    @Nullable
+    public TaskIdAttributeContainer getTaskAttributesById(int taskId) {
+        for (TaskIdAttributeContainer attributes : mTaskIdAttributeContainer) {
+            if (attributes.getTask().key.id == taskId) {
+                return attributes;
+            }
+        }
+
+        return null;
+    }
+
     public TaskThumbnailView getThumbnail() {
         return mSnapshotView;
     }
@@ -605,12 +699,46 @@
 
     @Override
     public boolean dispatchTouchEvent(MotionEvent ev) {
+        RecentsView recentsView = getRecentsView();
+        if (recentsView == null || getTask() == null) {
+            return false;
+        }
+        SplitSelectStateController splitSelectStateController =
+                recentsView.getSplitSelectController();
+        // Disable taps for split selection animation unless we have multiple tasks
+        boolean disableTapsForSplitSelect =
+                splitSelectStateController.isSplitSelectActive()
+                        && splitSelectStateController.getInitialTaskId() == getTask().key.id
+                        && !containsMultipleTasks();
+        if (disableTapsForSplitSelect) {
+            return false;
+        }
+
         if (ev.getAction() == MotionEvent.ACTION_DOWN) {
             mLastTouchDownPosition.set(ev.getX(), ev.getY());
         }
         return super.dispatchTouchEvent(ev);
     }
 
+    /**
+     * @return taskId that split selection was initiated with,
+     *         {@link ActivityTaskManager#INVALID_TASK_ID} if no tasks in this TaskView are part of
+     *         split selection
+     */
+    protected int getThisTaskCurrentlyInSplitSelection() {
+        SplitSelectStateController splitSelectController =
+                getRecentsView().getSplitSelectController();
+        int initSplitTaskId = INVALID_TASK_ID;
+        for (TaskIdAttributeContainer container : getTaskIdAttributeContainers()) {
+            int taskId = container.getTask().key.id;
+            if (taskId == splitSelectController.getInitialTaskId()) {
+                initSplitTaskId = taskId;
+                break;
+            }
+        }
+        return initSplitTaskId;
+    }
+
     private void onClick(View view) {
         if (getTask() == null) {
             return;
@@ -627,17 +755,24 @@
      * @return {@code true} if user is already in split select mode and this tap was to choose the
      *         second app. {@code false} otherwise
      */
-    private boolean confirmSecondSplitSelectApp() {
-        int index = getChildTaskIndexAtPosition(mLastTouchDownPosition);
+    protected boolean confirmSecondSplitSelectApp() {
+        int index = getLastSelectedChildTaskIndex();
         TaskIdAttributeContainer container = mTaskIdAttributeContainer[index];
-        return getRecentsView().confirmSplitSelect(this, container.getTask(),
-                container.getIconView(), container.getThumbnailView());
+        if (container != null) {
+            return getRecentsView().confirmSplitSelect(this, container.getTask(),
+                    container.getIconView().getDrawable(), container.getThumbnailView(),
+                    container.getThumbnailView().getThumbnail(), /* intent */ null,
+                    /* user */ null);
+        }
+        return false;
     }
 
     /**
-     * Returns the task under the given position in the local coordinates of this task view.
+     * Returns the task index of the last selected child task (0 or 1).
+     * If we contain multiple tasks and this TaskView is used as part of split selection, the
+     * selected child task index will be that of the remaining task.
      */
-    protected int getChildTaskIndexAtPosition(PointF position) {
+    protected int getLastSelectedChildTaskIndex() {
         return 0;
     }
 
@@ -656,7 +791,7 @@
             if (ActivityManagerWrapper.getInstance()
                     .startActivityFromRecents(mTask.key, opts.options)) {
                 RecentsView recentsView = getRecentsView();
-                if (ENABLE_QUICKSTEP_LIVE_TILE.get() && recentsView.getRunningTaskViewId() != -1) {
+                if (recentsView.getRunningTaskViewId() != -1) {
                     recentsView.onTaskLaunchedInLiveTileMode();
 
                     // Return a fresh callback in the live tile case, so that it's not accidentally
@@ -665,6 +800,14 @@
                     recentsView.addSideTaskLaunchCallback(callbackList);
                     return callbackList;
                 }
+                if (TaskAnimationManager.ENABLE_SHELL_TRANSITIONS) {
+                    // If the recents transition is running (ie. in live tile mode), then the start
+                    // of a new task will merge into the existing transition and it currently will
+                    // not be run independently, so we need to rely on the onTaskAppeared() call
+                    // for the new task to trigger the side launch callback to flush this runnable
+                    // list (which is usually flushed when the app launch animation finishes)
+                    recentsView.addSideTaskLaunchCallback(opts.onEndCallback);
+                }
                 return opts.onEndCallback;
             } else {
                 notifyTaskLaunchFailed(TAG);
@@ -679,25 +822,54 @@
      * Starts the task associated with this view without any animation
      */
     public void launchTask(@NonNull Consumer<Boolean> callback) {
-        launchTask(callback, false /* freezeTaskList */);
+        launchTask(callback, false /* isQuickswitch */);
     }
 
     /**
      * Starts the task associated with this view without any animation
      */
-    public void launchTask(@NonNull Consumer<Boolean> callback, boolean freezeTaskList) {
+    public void launchTask(@NonNull Consumer<Boolean> callback, boolean isQuickswitch) {
         if (mTask != null) {
             TestLogging.recordEvent(
                     TestProtocol.SEQUENCE_MAIN, "startActivityFromRecentsAsync", mTask);
 
+            final TaskRemovedDuringLaunchListener
+                    failureListener = new TaskRemovedDuringLaunchListener();
+            if (isQuickswitch) {
+                // We only listen for failures to launch in quickswitch because the during this
+                // gesture launcher is in the background state, vs other launches which are in
+                // the actual overview state
+                failureListener.register(mActivity, mTask.key.id, () -> {
+                    notifyTaskLaunchFailed(TAG);
+                    // Disable animations for now, as it is an edge case and the app usually covers
+                    // launcher and also any state transition animation also gets clobbered by
+                    // QuickstepTransitionManager.createWallpaperOpenAnimations when launcher
+                    // shows again
+                    getRecentsView().startHome(false /* animated */);
+                    RecentsView rv = getRecentsView();
+                    if (rv != null && rv.mSizeStrategy.getTaskbarController() != null) {
+                        // LauncherTaskbarUIController depends on the launcher state when checking
+                        // whether to handle resume, but that can come in before startHome() changes
+                        // the state, so force-refresh here to ensure the taskbar is updated
+                        rv.mSizeStrategy.getTaskbarController().refreshResumedState();
+                    }
+                });
+            }
             // Indicate success once the system has indicated that the transition has started
-            ActivityOptions opts = ActivityOptionsCompat.makeCustomAnimation(
-                    getContext(), 0, 0, () -> callback.accept(true), MAIN_EXECUTOR.getHandler());
+            ActivityOptions opts = ActivityOptions.makeCustomTaskAnimation(getContext(), 0, 0,
+                    MAIN_EXECUTOR.getHandler(),
+                    elapsedRealTime -> {
+                        callback.accept(true);
+                    },
+                    elapsedRealTime -> {
+                        failureListener.onTransitionFinished();
+                    });
             opts.setLaunchDisplayId(
                     getDisplay() == null ? DEFAULT_DISPLAY : getDisplay().getDisplayId());
-            if (freezeTaskList) {
-                ActivityOptionsCompat.setFreezeRecentTasksList(opts);
+            if (isQuickswitch) {
+                opts.setFreezeRecentTasksReordering();
             }
+            opts.setDisableStartingWindow(mSnapshotView.shouldShowSplashView());
             Task.TaskKey key = mTask.key;
             UI_HELPER_EXECUTOR.execute(() -> {
                 if (!ActivityManagerWrapper.getInstance().startActivityFromRecents(key, opts)) {
@@ -716,20 +888,32 @@
     }
 
     /**
+     * Returns ActivityOptions for overriding task transition animation.
+     */
+    private ActivityOptions makeCustomAnimation(Context context, int enterResId,
+            int exitResId, final Runnable callback, final Handler callbackHandler) {
+        return ActivityOptions.makeCustomTaskAnimation(context, enterResId, exitResId,
+                callbackHandler,
+                elapsedRealTime -> {
+                    if (callback != null) {
+                        callbackHandler.post(callback);
+                    }
+                }, null /* finishedListener */);
+    }
+
+    /**
      * Launch of the current task (both live and inactive tasks) with an animation.
      */
-    public void launchTasks() {
+    @Nullable
+    public RunnableList launchTasks() {
         RecentsView recentsView = getRecentsView();
         RemoteTargetHandle[] remoteTargetHandles = recentsView.mRemoteTargetHandles;
-        if (ENABLE_QUICKSTEP_LIVE_TILE.get() && isRunningTask() && remoteTargetHandles != null) {
+        if (isRunningTask() && remoteTargetHandles != null) {
             if (!mIsClickableAsLiveTile) {
-                return;
+                Log.e(TAG, "TaskView is not clickable as a live tile; returning to home.");
+                return null;
             }
 
-            // Reset the minimized state since we force-toggled the minimized state when entering
-            // overview, but never actually finished the recents animation
-            SystemUiProxy.INSTANCE.get(getContext()).setSplitScreenMinimized(false);
-
             mIsClickableAsLiveTile = false;
             RemoteAnimationTargets targets;
             if (remoteTargetHandles.length == 1) {
@@ -737,14 +921,14 @@
             } else {
                 TransformParams topLeftParams = remoteTargetHandles[0].getTransformParams();
                 TransformParams rightBottomParams = remoteTargetHandles[1].getTransformParams();
-                RemoteAnimationTargetCompat[] apps = Stream.concat(
+                RemoteAnimationTarget[] apps = Stream.concat(
                         Arrays.stream(topLeftParams.getTargetSet().apps),
                         Arrays.stream(rightBottomParams.getTargetSet().apps))
-                        .toArray(RemoteAnimationTargetCompat[]::new);
-                RemoteAnimationTargetCompat[] wallpapers = Stream.concat(
+                        .toArray(RemoteAnimationTarget[]::new);
+                RemoteAnimationTarget[] wallpapers = Stream.concat(
                         Arrays.stream(topLeftParams.getTargetSet().wallpapers),
                         Arrays.stream(rightBottomParams.getTargetSet().wallpapers))
-                        .toArray(RemoteAnimationTargetCompat[]::new);
+                        .toArray(RemoteAnimationTarget[]::new);
                 targets = new RemoteAnimationTargets(apps, wallpapers,
                         topLeftParams.getTargetSet().nonApps,
                         topLeftParams.getTargetSet().targetMode);
@@ -752,11 +936,16 @@
             if (targets == null) {
                 // If the recents animation is cancelled somehow between the parent if block and
                 // here, try to launch the task as a non live tile task.
-                launchTaskAnimated();
+                RunnableList runnableList = launchTaskAnimated();
+                if (runnableList == null) {
+                    Log.e(TAG, "Recents animation cancelled and cannot launch task as non-live tile"
+                            + "; returning to home");
+                }
                 mIsClickableAsLiveTile = true;
-                return;
+                return runnableList;
             }
 
+            RunnableList runnableList = new RunnableList();
             AnimatorSet anim = new AnimatorSet();
             TaskViewUtils.composeRecentsLaunchAnimator(
                     anim, this, targets.apps,
@@ -779,12 +968,23 @@
                         launchTaskAnimated();
                     }
                     mIsClickableAsLiveTile = true;
+                    runEndCallback();
+                }
+
+                @Override
+                public void onAnimationCancel(Animator animation) {
+                    runEndCallback();
+                }
+
+                private void runEndCallback() {
+                    runnableList.executeAllAndDestroy();
                 }
             });
             anim.start();
             recentsView.onTaskLaunchedInLiveTileMode();
+            return runnableList;
         } else {
-            launchTaskAnimated();
+            return launchTaskAnimated();
         }
     }
 
@@ -820,10 +1020,7 @@
             }
             if (needsUpdate(changes, FLAG_UPDATE_ICON)) {
                 mIconLoadRequest = iconCache.updateIconInBackground(mTask,
-                        (task) -> {
-                            setIcon(mIconView, task.icon);
-                            mDigitalWellBeingToast.initialize(mTask);
-                        });
+                        (task) -> setIcon(mIconView, task.icon));
             }
         } else {
             if (needsUpdate(changes, FLAG_UPDATE_THUMBNAIL)) {
@@ -873,10 +1070,20 @@
     protected boolean showTaskMenuWithContainer(IconView iconView) {
         TaskIdAttributeContainer menuContainer =
                 mTaskIdAttributeContainer[iconView == mIconView ? 0 : 1];
-        if (mActivity.getDeviceProfile().isTablet) {
-            boolean alignSecondRow = getRecentsView().isOnGridBottomRow(menuContainer.getTaskView())
-                    && mActivity.getDeviceProfile().isLandscape;
-            return TaskMenuViewWithArrow.Companion.showForTask(menuContainer, alignSecondRow);
+        DeviceProfile dp = mActivity.getDeviceProfile();
+        if (dp.isTablet) {
+            int alignedOptionIndex = 0;
+            if (getRecentsView().isOnGridBottomRow(menuContainer.getTaskView()) && dp.isLandscape) {
+                if (FeatureFlags.ENABLE_GRID_ONLY_OVERVIEW.get()) {
+                    // With no focused task, there is less available space below the tasks, so align
+                    // the arrow to the third option in the menu.
+                    alignedOptionIndex = 2;
+                } else  {
+                    // Bottom row of landscape grid aligns arrow to second option to avoid clipping
+                    alignedOptionIndex = 1;
+                }
+            }
+            return TaskMenuViewWithArrow.Companion.showForTask(menuContainer, alignedOptionIndex);
         } else {
             return TaskMenuView.showForTask(menuContainer);
         }
@@ -903,6 +1110,11 @@
     }
 
     public void setOrientationState(RecentsOrientedState orientationState) {
+        setIconOrientation(orientationState);
+        setThumbnailOrientation(orientationState);
+    }
+
+    protected void setIconOrientation(RecentsOrientedState orientationState) {
         PagedOrientationHandler orientationHandler = orientationState.getOrientationHandler();
         boolean isRtl = getLayoutDirection() == LAYOUT_DIRECTION_RTL;
         DeviceProfile deviceProfile = mActivity.getDeviceProfile();
@@ -912,10 +1124,9 @@
 
         int thumbnailTopMargin = deviceProfile.overviewTaskThumbnailTopMarginPx;
         int taskIconHeight = deviceProfile.overviewTaskIconSizePx;
-        int taskMargin = isGridTask ? deviceProfile.overviewTaskMarginGridPx
-                : deviceProfile.overviewTaskMarginPx;
-        int taskIconMargin = thumbnailTopMargin - taskIconHeight - taskMargin;
-        orientationHandler.setTaskIconParams(iconParams, taskIconMargin, taskIconHeight,
+        int taskMargin = deviceProfile.overviewTaskMarginPx;
+
+        orientationHandler.setTaskIconParams(iconParams, taskMargin, taskIconHeight,
                 thumbnailTopMargin, isRtl);
         iconParams.width = iconParams.height = taskIconHeight;
         mIconView.setLayoutParams(iconParams);
@@ -924,7 +1135,14 @@
         int iconDrawableSize = isGridTask ? deviceProfile.overviewTaskIconDrawableSizeGridPx
                 : deviceProfile.overviewTaskIconDrawableSizePx;
         mIconView.setDrawableSize(iconDrawableSize, iconDrawableSize);
+    }
 
+    protected void setThumbnailOrientation(RecentsOrientedState orientationState) {
+        DeviceProfile deviceProfile = mActivity.getDeviceProfile();
+        int thumbnailTopMargin = deviceProfile.overviewTaskThumbnailTopMarginPx;
+
+        // TODO(b/271468547), we should default to setting trasnlations only on the snapshot instead
+        //  of a hybrid of both margins and translations
         LayoutParams snapshotParams = (LayoutParams) mSnapshotView.getLayoutParams();
         snapshotParams.topMargin = thumbnailTopMargin;
         mSnapshotView.setLayoutParams(snapshotParams);
@@ -941,7 +1159,16 @@
         return deviceProfile.isTablet && !isFocusedTask();
     }
 
-    protected void setIconAndDimTransitionProgress(float progress, boolean invert) {
+    /** Whether this task view represents the desktop */
+    public boolean isDesktopTask() {
+        return false;
+    }
+
+    /**
+     * Called to animate a smooth transition when going directly from an app into Overview (and
+     * vice versa). Icons fade in, and DWB banners slide in with a "shift up" animation.
+     */
+    protected void setIconsAndBannersTransitionProgress(float progress, boolean invert) {
         if (invert) {
             progress = 1 - progress;
         }
@@ -952,9 +1179,7 @@
         float scale = Interpolators.clampToProgress(FAST_OUT_SLOW_IN, lowerClamp, upperClamp)
                 .getInterpolation(progress);
         mIconView.setAlpha(scale);
-        mDigitalWellBeingToast.updateBannerOffset(1f - scale,
-                mCurrentFullscreenParams.mCurrentDrawnInsets.top
-                        + mCurrentFullscreenParams.mCurrentDrawnInsets.bottom);
+        mDigitalWellBeingToast.updateBannerOffset(1f - scale);
     }
 
     public void setIconScaleAnimStartProgress(float startProgress) {
@@ -985,7 +1210,7 @@
         if (mIconAndDimAnimator != null) {
             mIconAndDimAnimator.cancel();
         }
-        setIconAndDimTransitionProgress(iconScale, invert);
+        setIconsAndBannersTransitionProgress(iconScale, invert);
     }
 
     protected void resetPersistentViewTransforms() {
@@ -1011,6 +1236,7 @@
         setAlpha(mStableAlpha);
         setIconScaleAndDim(1);
         setColorTint(0, 0);
+        mSnapshotView.resetViewTransforms();
     }
 
     public void setStableAlpha(float parentAlpha) {
@@ -1102,6 +1328,22 @@
         return scale;
     }
 
+    /**
+     * Updates alpha of task thumbnail splash on swipe up/down.
+     */
+    public void setTaskThumbnailSplashAlpha(float taskThumbnailSplashAlpha) {
+        mTaskThumbnailSplashAlpha = taskThumbnailSplashAlpha;
+        applyThumbnailSplashAlpha();
+    }
+
+    protected void applyThumbnailSplashAlpha() {
+        mSnapshotView.setSplashAlpha(mTaskThumbnailSplashAlpha);
+    }
+
+    protected void refreshTaskThumbnailSplash() {
+        mSnapshotView.refreshSplashView();
+    }
+
     private void setSplitSelectTranslationX(float x) {
         mSplitSelectTranslationX = x;
         applyTranslationX();
@@ -1112,10 +1354,6 @@
         applyTranslationY();
     }
 
-    public void setSplitScrollOffsetPrimary(float splitSelectScrollOffsetPrimary) {
-        mSplitSelectScrollOffsetPrimary = splitSelectScrollOffsetPrimary;
-    }
-
     private void setDismissTranslationX(float x) {
         mDismissTranslationX = x;
         applyTranslationX();
@@ -1179,19 +1417,18 @@
         applyTranslationX();
     }
 
-    public float getScrollAdjustment(boolean fullscreenEnabled, boolean gridEnabled) {
+    public float getScrollAdjustment(boolean gridEnabled) {
         float scrollAdjustment = 0;
         if (gridEnabled) {
             scrollAdjustment += mGridTranslationX;
         } else {
             scrollAdjustment += getPrimaryNonGridTranslationProperty().get(this);
         }
-        scrollAdjustment += mSplitSelectScrollOffsetPrimary;
         return scrollAdjustment;
     }
 
-    public float getOffsetAdjustment(boolean fullscreenEnabled, boolean gridEnabled) {
-        return getScrollAdjustment(fullscreenEnabled, gridEnabled);
+    public float getOffsetAdjustment(boolean gridEnabled) {
+        return getScrollAdjustment(gridEnabled);
     }
 
     public float getSizeAdjustment(boolean fullscreenEnabled) {
@@ -1250,7 +1487,7 @@
                 DISMISS_TRANSLATION_X, DISMISS_TRANSLATION_Y);
     }
 
-    public FloatProperty<TaskView> getSecondaryDissmissTranslationProperty() {
+    public FloatProperty<TaskView> getSecondaryDismissTranslationProperty() {
         return getPagedOrientationHandler().getSecondaryValue(
                 DISMISS_TRANSLATION_X, DISMISS_TRANSLATION_Y);
     }
@@ -1260,6 +1497,11 @@
                 TASK_OFFSET_TRANSLATION_X, TASK_OFFSET_TRANSLATION_Y);
     }
 
+    public FloatProperty<TaskView> getSecondaryTaskOffsetTranslationProperty() {
+        return getPagedOrientationHandler().getSecondaryValue(
+                TASK_OFFSET_TRANSLATION_X, TASK_OFFSET_TRANSLATION_Y);
+    }
+
     public FloatProperty<TaskView> getTaskResistanceTranslationProperty() {
         return getPagedOrientationHandler().getSecondaryValue(
                 TASK_RESISTANCE_TRANSLATION_X, TASK_RESISTANCE_TRANSLATION_Y);
@@ -1289,33 +1531,6 @@
         mEndQuickswitchCuj = endQuickswitchCuj;
     }
 
-    private static final class TaskOutlineProvider extends ViewOutlineProvider {
-
-        private int mMarginTop;
-        private FullscreenDrawParams mFullscreenParams;
-
-        TaskOutlineProvider(Context context, FullscreenDrawParams fullscreenParams, int topMargin) {
-            mMarginTop = topMargin;
-            mFullscreenParams = fullscreenParams;
-        }
-
-        public void updateParams(FullscreenDrawParams params, int topMargin) {
-            mFullscreenParams = params;
-            mMarginTop = topMargin;
-        }
-
-        @Override
-        public void getOutline(View view, Outline outline) {
-            RectF insets = mFullscreenParams.mCurrentDrawnInsets;
-            float scale = mFullscreenParams.mScale;
-            outline.setRoundRect(0,
-                    (int) (mMarginTop * scale),
-                    (int) ((insets.left + view.getWidth() + insets.right) * scale),
-                    (int) ((insets.top + view.getHeight() + insets.bottom) * scale),
-                    mFullscreenParams.mCurrentDrawnCornerRadius);
-        }
-    }
-
     private int getExpectedViewHeight(View view) {
         int expectedHeight;
         int h = view.getLayoutParams().height;
@@ -1343,7 +1558,7 @@
                 continue;
             }
             for (SystemShortcut s : TaskOverlayFactory.getEnabledShortcuts(this,
-                    mActivity.getDeviceProfile(), taskContainer)) {
+                    taskContainer)) {
                 info.addAction(s.createAccessibilityAction(context));
             }
         }
@@ -1381,7 +1596,7 @@
                 continue;
             }
             for (SystemShortcut s : TaskOverlayFactory.getEnabledShortcuts(this,
-                    mActivity.getDeviceProfile(), taskContainer)) {
+                    taskContainer)) {
                 if (s.hasHandlerForAction(action)) {
                     s.onClick(this);
                     return true;
@@ -1420,12 +1635,13 @@
         mIconView.setVisibility(progress < 1 ? VISIBLE : INVISIBLE);
         mSnapshotView.getTaskOverlay().setFullscreenProgress(progress);
 
-        updateSnapshotRadius();
+        // Animate icons and DWB banners in/out, except in QuickSwitch state, when tiles are
+        // oversized and banner would look disproportionately large.
+        if (mActivity.getStateManager().getState() != BACKGROUND_APP) {
+            setIconsAndBannersTransitionProgress(progress, true);
+        }
 
-        mOutlineProvider.updateParams(
-                mCurrentFullscreenParams,
-                mActivity.getDeviceProfile().overviewTaskThumbnailTopMarginPx);
-        invalidateOutline();
+        updateSnapshotRadius();
     }
 
     protected void updateSnapshotRadius() {
@@ -1461,7 +1677,12 @@
             int boxWidth;
             int boxHeight;
             boolean isFocusedTask = isFocusedTask();
-            if (isFocusedTask) {
+            if (isDesktopTask()) {
+                Rect lastComputedDesktopTaskSize =
+                        getRecentsView().getLastComputedDesktopTaskSize();
+                boxWidth = lastComputedDesktopTaskSize.width();
+                boxHeight = lastComputedDesktopTaskSize.height();
+            } else if (isFocusedTask) {
                 // Task will be focused and should use focused task size. Use focusTaskRatio
                 // that is associated with the original orientation of the focused task.
                 boxWidth = taskWidth;
@@ -1537,8 +1758,8 @@
     }
 
     public void initiateSplitSelect(SplitPositionOption splitPositionOption) {
-        AbstractFloatingView.closeOpenViews(mActivity, false, TYPE_TASK_MENU);
-        getRecentsView().initiateSplitSelect(this, splitPositionOption.stagePosition);
+        getRecentsView().initiateSplitSelect(this, splitPositionOption.stagePosition,
+                getLogEventForPosition(splitPositionOption.stagePosition));
     }
 
     /**
@@ -1557,6 +1778,21 @@
     }
 
     /**
+     *  Sets visibility for the thumbnail and associated elements (DWB banners and action chips).
+     *  IconView is unaffected.
+     *
+     * @param taskId is only used when setting visibility to a non-{@link View#VISIBLE} value
+     */
+    void setThumbnailVisibility(int visibility, int taskId) {
+        for (int i = 0; i < getChildCount(); i++) {
+            View child = getChildAt(i);
+            if (child != mIconView) {
+                child.setVisibility(visibility);
+            }
+        }
+    }
+
+    /**
      * We update and subsequently draw these in {@link #setFullscreenProgress(float)}.
      */
     public static class FullscreenDrawParams {
@@ -1564,10 +1800,7 @@
         private final float mCornerRadius;
         private final float mWindowCornerRadius;
 
-        public RectF mCurrentDrawnInsets = new RectF();
         public float mCurrentDrawnCornerRadius;
-        /** The current scale we apply to the thumbnail to adjust for new left/right insets. */
-        public float mScale = 1;
 
         public FullscreenDrawParams(Context context) {
             mCornerRadius = TaskCornerRadius.get(context);
@@ -1581,27 +1814,9 @@
          */
         public void setProgress(float fullscreenProgress, float parentScale, float taskViewScale,
                 int previewWidth, DeviceProfile dp, PreviewPositionHelper pph) {
-            RectF insets = pph.getInsetsToDrawInFullscreen(dp);
-
-            float currentInsetsLeft = insets.left * fullscreenProgress;
-            float currentInsetsRight = insets.right * fullscreenProgress;
-            float insetsBottom = insets.bottom;
-            if (dp.isTaskbarPresentInApps) {
-                insetsBottom = Math.max(0, insetsBottom - dp.taskbarSize);
-            }
-            mCurrentDrawnInsets.set(currentInsetsLeft, insets.top * fullscreenProgress,
-                    currentInsetsRight, insetsBottom * fullscreenProgress);
-            float fullscreenCornerRadius = dp.isMultiWindowMode ? 0 : mWindowCornerRadius;
-
             mCurrentDrawnCornerRadius =
-                    Utilities.mapRange(fullscreenProgress, mCornerRadius, fullscreenCornerRadius)
+                    Utilities.mapRange(fullscreenProgress, mCornerRadius, mWindowCornerRadius)
                             / parentScale / taskViewScale;
-
-            // We scaled the thumbnail to fit the content (excluding insets) within task view width.
-            // Now that we are drawing left/right insets again, we need to scale down to fit them.
-            if (previewWidth > 0) {
-                mScale = previewWidth / (previewWidth + currentInsetsLeft + currentInsetsRight);
-            }
         }
     }
 
diff --git a/quickstep/tests/src/com/android/launcher3/model/WidgetsPredicationUpdateTaskTest.java b/quickstep/tests/src/com/android/launcher3/model/WidgetsPredicationUpdateTaskTest.java
index c1b3beb..83341cb 100644
--- a/quickstep/tests/src/com/android/launcher3/model/WidgetsPredicationUpdateTaskTest.java
+++ b/quickstep/tests/src/com/android/launcher3/model/WidgetsPredicationUpdateTaskTest.java
@@ -36,13 +36,11 @@
 import android.content.ComponentName;
 import android.os.UserHandle;
 import android.text.TextUtils;
-import android.util.Log;
 
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
 import com.android.launcher3.LauncherAppState;
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.icons.ComponentWithLabel;
 import com.android.launcher3.icons.IconCache;
 import com.android.launcher3.model.BgDataModel.FixedContainerItems;
@@ -111,7 +109,6 @@
         doReturn(allWidgets).when(manager).getInstalledProvidersForProfile(eq(myUserHandle()));
         doAnswer(i -> {
             String pkg = i.getArgument(0);
-            Log.e("Hello", "Getting v " + pkg);
             return TextUtils.isEmpty(pkg) ? allWidgets : allWidgets.stream()
                     .filter(a -> pkg.equals(a.provider.getPackageName()))
                     .collect(Collectors.toList());
@@ -138,21 +135,21 @@
     public void widgetsRecommendationRan_shouldOnlyReturnNotAddedWidgetsInAppPredictionOrder()
             throws Exception {
         // WHEN newPredicationTask is executed with app predication of 5 apps.
-        AppTarget app1 = new AppTarget(new AppTargetId("app1"), "app1", "className",
+        AppTarget app1 = new AppTarget(new AppTargetId("app1"), "app1", "provider1",
                 mUserHandle);
-        AppTarget app2 = new AppTarget(new AppTargetId("app2"), "app2", "className",
+        AppTarget app2 = new AppTarget(new AppTargetId("app2"), "app2", "provider1",
                 mUserHandle);
         AppTarget app3 = new AppTarget(new AppTargetId("app3"), "app3", "className",
                 mUserHandle);
-        AppTarget app4 = new AppTarget(new AppTargetId("app4"), "app4", "className",
+        AppTarget app4 = new AppTarget(new AppTargetId("app4"), "app4", "provider1",
                 mUserHandle);
-        AppTarget app5 = new AppTarget(new AppTargetId("app5"), "app5", "className",
+        AppTarget app5 = new AppTarget(new AppTargetId("app5"), "app5", "provider1",
                 mUserHandle);
         mModelHelper.executeTaskForTest(
                 newWidgetsPredicationTask(List.of(app5, app3, app2, app4, app1)))
                 .forEach(Runnable::run);
 
-        // THEN only 3 widgets are returned because
+        // THEN only 2 widgets are returned because
         // 1. app5/provider1 & app4/provider1 have already been added to workspace. They are
         //    excluded from the result.
         // 2. app3 doesn't have a widget.
@@ -161,45 +158,39 @@
                 .stream()
                 .map(itemInfo -> (PendingAddWidgetInfo) itemInfo)
                 .collect(Collectors.toList());
-        assertThat(recommendedWidgets).hasSize(3);
+        assertThat(recommendedWidgets).hasSize(2);
         assertWidgetInfo(recommendedWidgets.get(0).info, mApp2Provider1);
-        assertWidgetInfo(recommendedWidgets.get(1).info, mApp4Provider2);
-        assertWidgetInfo(recommendedWidgets.get(2).info, mApp1Provider1);
+        assertWidgetInfo(recommendedWidgets.get(1).info, mApp1Provider1);
     }
 
     @Test
-    public void widgetsRecommendationRan_localFilterDisabled_shouldReturnWidgetsInPredicationOrder()
+    public void widgetsRecommendationRan_shouldReturnPackageWidgetsWhenEmpty()
             throws Exception {
-        if (FeatureFlags.ENABLE_LOCAL_RECOMMENDED_WIDGETS_FILTER.get()) {
-            return;
-        }
 
-        // WHEN newPredicationTask is executed with 5 predicated widgets.
-        AppTarget widget1 = new AppTarget(new AppTargetId("app1"), "app1", "provider1",
-                mUserHandle);
-        AppTarget widget2 = new AppTarget(new AppTargetId("app1"), "app1", "provider2",
+        // Not installed widget
+        AppTarget widget1 = new AppTarget(new AppTargetId("app1"), "app1", "provider3",
                 mUserHandle);
         // Not installed app
         AppTarget widget3 = new AppTarget(new AppTargetId("app2"), "app3", "provider1",
                 mUserHandle);
-        // Not installed widget
-        AppTarget widget4 = new AppTarget(new AppTargetId("app4"), "app4", "provider3",
+        // Workspace added widgets
+        AppTarget widget4 = new AppTarget(new AppTargetId("app4"), "app4", "provider1",
                 mUserHandle);
         AppTarget widget5 = new AppTarget(new AppTargetId("app5"), "app5", "provider1",
                 mUserHandle);
         mModelHelper.executeTaskForTest(
-                newWidgetsPredicationTask(List.of(widget5, widget3, widget2, widget4, widget1)))
+                newWidgetsPredicationTask(List.of(widget5, widget3, widget4, widget1)))
                 .forEach(Runnable::run);
 
-        // THEN only 3 widgets are returned because the launcher only filters out non-exist widgets.
+        // THEN only 2 widgets are returned because the launcher only filters out non-exist widgets.
         List<PendingAddWidgetInfo> recommendedWidgets = mCallback.mRecommendedWidgets.items
                 .stream()
                 .map(itemInfo -> (PendingAddWidgetInfo) itemInfo)
                 .collect(Collectors.toList());
-        assertThat(recommendedWidgets).hasSize(3);
-        assertWidgetInfo(recommendedWidgets.get(0).info, mApp5Provider1);
-        assertWidgetInfo(recommendedWidgets.get(1).info, mApp1Provider2);
-        assertWidgetInfo(recommendedWidgets.get(2).info, mApp1Provider1);
+        assertThat(recommendedWidgets).hasSize(2);
+        // Another widget from the same package
+        assertWidgetInfo(recommendedWidgets.get(0).info, mApp4Provider2);
+        assertWidgetInfo(recommendedWidgets.get(1).info, mApp1Provider1);
     }
 
     private void assertWidgetInfo(
diff --git a/quickstep/tests/src/com/android/launcher3/taskbar/FallbackTaskbarUIControllerTest.kt b/quickstep/tests/src/com/android/launcher3/taskbar/FallbackTaskbarUIControllerTest.kt
new file mode 100644
index 0000000..8c13fe3
--- /dev/null
+++ b/quickstep/tests/src/com/android/launcher3/taskbar/FallbackTaskbarUIControllerTest.kt
@@ -0,0 +1,80 @@
+/*
+ *  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.launcher3.taskbar
+
+import androidx.test.runner.AndroidJUnit4
+import com.android.launcher3.statemanager.StateManager
+import com.android.quickstep.RecentsActivity
+import com.android.quickstep.fallback.RecentsState
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.ArgumentCaptor
+import org.mockito.Mock
+import org.mockito.Mockito.times
+import org.mockito.Mockito.verify
+import org.mockito.Mockito.`when` as whenever
+
+@RunWith(AndroidJUnit4::class)
+class FallbackTaskbarUIControllerTest : TaskbarBaseTestCase() {
+
+    lateinit var fallbackTaskbarUIController: FallbackTaskbarUIController
+    lateinit var stateListener: StateManager.StateListener<RecentsState>
+
+    @Mock lateinit var recentsActivity: RecentsActivity
+    @Mock lateinit var stateManager: StateManager<RecentsState>
+
+    @Before
+    override fun setup() {
+        super.setup()
+        whenever(recentsActivity.stateManager).thenReturn(stateManager)
+        fallbackTaskbarUIController = FallbackTaskbarUIController(recentsActivity)
+
+        // Capture registered state listener to send events to in our tests
+        val captor = ArgumentCaptor.forClass(StateManager.StateListener::class.java)
+        fallbackTaskbarUIController.init(taskbarControllers)
+        verify(stateManager).addStateListener(captor.capture())
+        stateListener = captor.value as StateManager.StateListener<RecentsState>
+    }
+
+    @Test
+    fun stateTransitionComplete_stateDefault() {
+        stateListener.onStateTransitionComplete(RecentsState.DEFAULT)
+        // verify dragging disabled
+        verify(taskbarDragController, times(1)).setDisallowGlobalDrag(true)
+        verify(taskbarAllAppsController, times(1)).setDisallowGlobalDrag(true)
+        // verify long click enabled
+        verify(taskbarDragController, times(1)).setDisallowLongClick(false)
+        verify(taskbarAllAppsController, times(1)).setDisallowLongClick(false)
+        // verify split selection enabled
+        verify(taskbarPopupController, times(1)).setAllowInitialSplitSelection(true)
+    }
+
+    @Test
+    fun stateTransitionComplete_stateSplitSelect() {
+        stateListener.onStateTransitionComplete(RecentsState.OVERVIEW_SPLIT_SELECT)
+        // verify dragging disabled
+        verify(taskbarDragController, times(1)).setDisallowGlobalDrag(false)
+        verify(taskbarAllAppsController, times(1)).setDisallowGlobalDrag(false)
+        // verify long click enabled
+        verify(taskbarDragController, times(1)).setDisallowLongClick(true)
+        verify(taskbarAllAppsController, times(1)).setDisallowLongClick(true)
+        // verify split selection enabled
+        verify(taskbarPopupController, times(1)).setAllowInitialSplitSelection(false)
+    }
+}
diff --git a/quickstep/tests/src/com/android/launcher3/taskbar/TaskbarBaseTestCase.kt b/quickstep/tests/src/com/android/launcher3/taskbar/TaskbarBaseTestCase.kt
new file mode 100644
index 0000000..2c16c15
--- /dev/null
+++ b/quickstep/tests/src/com/android/launcher3/taskbar/TaskbarBaseTestCase.kt
@@ -0,0 +1,103 @@
+/*
+ * 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.launcher3.taskbar
+
+import com.android.launcher3.taskbar.allapps.TaskbarAllAppsController
+import com.android.launcher3.taskbar.bubbles.BubbleControllers
+import com.android.launcher3.taskbar.overlay.TaskbarOverlayController
+import com.android.systemui.shared.rotation.RotationButtonController
+import java.util.Optional
+import org.junit.Before
+import org.mockito.Mock
+import org.mockito.MockitoAnnotations
+
+/**
+ * Helper class to extend to get access to all controllers. Gotta be careful of your relationship
+ * with this class though, it can be quite... controlling.
+ */
+abstract class TaskbarBaseTestCase {
+
+    @Mock lateinit var taskbarActivityContext: TaskbarActivityContext
+    @Mock lateinit var taskbarDragController: TaskbarDragController
+    @Mock lateinit var navButtonController: TaskbarNavButtonController
+    @Mock lateinit var navbarButtonsViewController: NavbarButtonsViewController
+    @Mock lateinit var rotationButtonController: RotationButtonController
+    @Mock lateinit var taskbarDragLayerController: TaskbarDragLayerController
+    @Mock lateinit var taskbarScrimViewController: TaskbarScrimViewController
+    @Mock lateinit var taskbarViewController: TaskbarViewController
+    @Mock lateinit var taskbarUnfoldAnimationController: TaskbarUnfoldAnimationController
+    @Mock lateinit var taskbarKeyguardController: TaskbarKeyguardController
+    @Mock lateinit var stashedHandleViewController: StashedHandleViewController
+    @Mock lateinit var taskbarStashController: TaskbarStashController
+    @Mock lateinit var taskbarAutohideSuspendController: TaskbarAutohideSuspendController
+    @Mock lateinit var taskbarPopupController: TaskbarPopupController
+    @Mock
+    lateinit var taskbarForceVisibleImmersiveController: TaskbarForceVisibleImmersiveController
+    @Mock lateinit var taskbarAllAppsController: TaskbarAllAppsController
+    @Mock lateinit var taskbarInsetsController: TaskbarInsetsController
+    @Mock lateinit var voiceInteractionWindowController: VoiceInteractionWindowController
+    @Mock lateinit var taskbarRecentAppsController: TaskbarRecentAppsController
+    @Mock lateinit var taskbarTranslationController: TaskbarTranslationController
+    @Mock lateinit var taskbarSpringOnStashController: TaskbarSpringOnStashController
+    @Mock lateinit var taskbarOverlayController: TaskbarOverlayController
+    @Mock lateinit var taskbarEduTooltipController: TaskbarEduTooltipController
+    @Mock lateinit var keyboardQuickSwitchController: KeyboardQuickSwitchController
+    @Mock lateinit var taskbarPinningController: TaskbarDividerPopupController
+    @Mock lateinit var optionalBubbleControllers: Optional<BubbleControllers>
+
+    lateinit var taskbarControllers: TaskbarControllers
+
+    @Before
+    open fun setup() {
+        /*
+         * NOTE: Mocking of controllers that are written in Kotlin won't work since their methods
+         * are final by default (and should not be changed only for tests), meaning unmockable.
+         * Womp, womp woooommmmppp.
+         * If you want to mock one of those methods, you need to make a parent interface that
+         * includes that method to allow mocking it.
+         */
+        MockitoAnnotations.initMocks(this)
+        taskbarControllers =
+            TaskbarControllers(
+                taskbarActivityContext,
+                taskbarDragController,
+                navButtonController,
+                navbarButtonsViewController,
+                rotationButtonController,
+                taskbarDragLayerController,
+                taskbarViewController,
+                taskbarScrimViewController,
+                taskbarUnfoldAnimationController,
+                taskbarKeyguardController,
+                stashedHandleViewController,
+                taskbarStashController,
+                taskbarAutohideSuspendController,
+                taskbarPopupController,
+                taskbarForceVisibleImmersiveController,
+                taskbarOverlayController,
+                taskbarAllAppsController,
+                taskbarInsetsController,
+                voiceInteractionWindowController,
+                taskbarTranslationController,
+                taskbarSpringOnStashController,
+                taskbarRecentAppsController,
+                taskbarEduTooltipController,
+                keyboardQuickSwitchController,
+                taskbarPinningController,
+                optionalBubbleControllers,
+            )
+    }
+}
diff --git a/quickstep/tests/src/com/android/launcher3/taskbar/TaskbarKeyguardControllerTest.kt b/quickstep/tests/src/com/android/launcher3/taskbar/TaskbarKeyguardControllerTest.kt
new file mode 100644
index 0000000..148e36c
--- /dev/null
+++ b/quickstep/tests/src/com/android/launcher3/taskbar/TaskbarKeyguardControllerTest.kt
@@ -0,0 +1,111 @@
+/*
+ * 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.launcher3.taskbar
+
+import android.app.KeyguardManager
+import com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BACK_DISABLED
+import com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BOUNCER_SHOWING
+import com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_DEVICE_DOZING
+import com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING
+import com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED
+import org.junit.Before
+import org.junit.Test
+import org.mockito.Mock
+import org.mockito.Mockito.anyBoolean
+import org.mockito.Mockito.never
+import org.mockito.Mockito.times
+import org.mockito.Mockito.verify
+import org.mockito.Mockito.`when` as whenever
+
+class TaskbarKeyguardControllerTest : TaskbarBaseTestCase() {
+
+    @Mock lateinit var baseDragLayer: TaskbarDragLayer
+    @Mock lateinit var keyguardManager: KeyguardManager
+
+    @Before
+    override fun setup() {
+        super.setup()
+        whenever(taskbarActivityContext.getSystemService(KeyguardManager::class.java))
+            .thenReturn(keyguardManager)
+        whenever(baseDragLayer.childCount).thenReturn(0)
+        whenever(taskbarActivityContext.dragLayer).thenReturn(baseDragLayer)
+
+        taskbarKeyguardController = TaskbarKeyguardController(taskbarActivityContext)
+        taskbarKeyguardController.init(navbarButtonsViewController)
+    }
+
+    @Test
+    fun uninterestingFlags_noActions() {
+        setFlags(0)
+        verify(navbarButtonsViewController, never()).setKeyguardVisible(anyBoolean(), anyBoolean())
+    }
+
+    @Test
+    fun keyguardShowing() {
+        setFlags(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING)
+        verify(navbarButtonsViewController, times(1))
+            .setKeyguardVisible(true /*isKeyguardVisible*/, false /*isKeyguardOccluded*/)
+    }
+
+    @Test
+    fun dozingShowing() {
+        setFlags(SYSUI_STATE_DEVICE_DOZING)
+        verify(navbarButtonsViewController, times(1))
+            .setKeyguardVisible(true /*isKeyguardVisible*/, false /*isKeyguardOccluded*/)
+    }
+
+    @Test
+    fun keyguardOccluded() {
+        setFlags(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED)
+        verify(navbarButtonsViewController, times(1))
+            .setKeyguardVisible(false /*isKeyguardVisible*/, true /*isKeyguardOccluded*/)
+    }
+
+    @Test
+    fun keyguardOccludedAndDozing() {
+        setFlags(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED.or(SYSUI_STATE_DEVICE_DOZING))
+        verify(navbarButtonsViewController, times(1))
+            .setKeyguardVisible(true /*isKeyguardVisible*/, true /*isKeyguardOccluded*/)
+    }
+
+    @Test
+    fun deviceInsecure_hideBackForBouncer() {
+        whenever(keyguardManager.isDeviceSecure).thenReturn(false)
+        setFlags(SYSUI_STATE_BOUNCER_SHOWING)
+
+        verify(navbarButtonsViewController, times(1)).setBackForBouncer(false)
+    }
+
+    @Test
+    fun deviceSecure_showBackForBouncer() {
+        whenever(keyguardManager.isDeviceSecure).thenReturn(true)
+        setFlags(SYSUI_STATE_BOUNCER_SHOWING)
+
+        verify(navbarButtonsViewController, times(1)).setBackForBouncer(true)
+    }
+
+    @Test
+    fun backDisabled_hideBackForBouncer() {
+        whenever(keyguardManager.isDeviceSecure).thenReturn(true)
+        setFlags(SYSUI_STATE_BACK_DISABLED.or(SYSUI_STATE_BOUNCER_SHOWING))
+
+        verify(navbarButtonsViewController, times(1)).setBackForBouncer(false)
+    }
+
+    private fun setFlags(flags: Int) {
+        taskbarKeyguardController.updateStateForSysuiFlags(flags)
+    }
+}
diff --git a/quickstep/tests/src/com/android/launcher3/taskbar/TaskbarNavButtonControllerTest.java b/quickstep/tests/src/com/android/launcher3/taskbar/TaskbarNavButtonControllerTest.java
index d8be307..9622619 100644
--- a/quickstep/tests/src/com/android/launcher3/taskbar/TaskbarNavButtonControllerTest.java
+++ b/quickstep/tests/src/com/android/launcher3/taskbar/TaskbarNavButtonControllerTest.java
@@ -18,11 +18,13 @@
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.doReturn;
+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.Handler;
+import android.view.View;
 
 import androidx.test.runner.AndroidJUnit4;
 
@@ -58,6 +60,8 @@
     TaskbarControllers mockTaskbarControllers;
     @Mock
     TaskbarActivityContext mockTaskbarActivityContext;
+    @Mock
+    View mockView;
 
     private TaskbarNavButtonController mNavButtonController;
 
@@ -76,110 +80,118 @@
 
     @Test
     public void testPressBack() {
-        mNavButtonController.onButtonClick(BUTTON_BACK);
+        mNavButtonController.onButtonClick(BUTTON_BACK, mockView);
         verify(mockSystemUiProxy, times(1)).onBackPressed();
     }
 
     @Test
     public void testPressImeSwitcher() {
-        mNavButtonController.onButtonClick(BUTTON_IME_SWITCH);
+        mNavButtonController.onButtonClick(BUTTON_IME_SWITCH, mockView);
         verify(mockSystemUiProxy, times(1)).onImeSwitcherPressed();
     }
 
     @Test
     public void testPressA11yShortClick() {
-        mNavButtonController.onButtonClick(BUTTON_A11Y);
+        mNavButtonController.onButtonClick(BUTTON_A11Y, mockView);
         verify(mockSystemUiProxy, times(1))
                 .notifyAccessibilityButtonClicked(DISPLAY_ID);
     }
 
     @Test
     public void testPressA11yLongClick() {
-        mNavButtonController.onButtonLongClick(BUTTON_A11Y);
+        mNavButtonController.onButtonLongClick(BUTTON_A11Y, mockView);
         verify(mockSystemUiProxy, times(1)).notifyAccessibilityButtonLongClicked();
     }
 
     @Test
-    public void testLongPressHome() {
-        mNavButtonController.onButtonLongClick(BUTTON_HOME);
+    public void testLongPressHome_enabled() {
+        mNavButtonController.setAssistantLongPressEnabled(true /*assistantLongPressEnabled*/);
+        mNavButtonController.onButtonLongClick(BUTTON_HOME, mockView);
         verify(mockSystemUiProxy, times(1)).startAssistant(any());
     }
 
     @Test
+    public void testLongPressHome_disabled() {
+        mNavButtonController.setAssistantLongPressEnabled(false /*assistantLongPressEnabled*/);
+        mNavButtonController.onButtonLongClick(BUTTON_HOME, mockView);
+        verify(mockSystemUiProxy, never()).startAssistant(any());
+    }
+
+    @Test
     public void testPressHome() {
-        mNavButtonController.onButtonClick(BUTTON_HOME);
+        mNavButtonController.onButtonClick(BUTTON_HOME, mockView);
         verify(mockCommandHelper, times(1)).addCommand(TYPE_HOME);
     }
 
     @Test
     public void testPressRecents() {
-        mNavButtonController.onButtonClick(BUTTON_RECENTS);
+        mNavButtonController.onButtonClick(BUTTON_RECENTS, mockView);
         verify(mockCommandHelper, times(1)).addCommand(TYPE_TOGGLE);
     }
 
     @Test
     public void testPressRecentsWithScreenPinned() {
         mNavButtonController.updateSysuiFlags(SYSUI_STATE_SCREEN_PINNING);
-        mNavButtonController.onButtonClick(BUTTON_RECENTS);
+        mNavButtonController.onButtonClick(BUTTON_RECENTS, mockView);
         verify(mockCommandHelper, times(0)).addCommand(TYPE_TOGGLE);
     }
 
     @Test
     public void testLongPressBackRecentsNotPinned() {
-        mNavButtonController.onButtonLongClick(BUTTON_RECENTS);
-        mNavButtonController.onButtonLongClick(BUTTON_BACK);
+        mNavButtonController.onButtonLongClick(BUTTON_RECENTS, mockView);
+        mNavButtonController.onButtonLongClick(BUTTON_BACK, mockView);
         verify(mockSystemUiProxy, times(0)).stopScreenPinning();
     }
 
     @Test
     public void testLongPressBackRecentsPinned() {
         mNavButtonController.updateSysuiFlags(SYSUI_STATE_SCREEN_PINNING);
-        mNavButtonController.onButtonLongClick(BUTTON_RECENTS);
-        mNavButtonController.onButtonLongClick(BUTTON_BACK);
+        mNavButtonController.onButtonLongClick(BUTTON_RECENTS, mockView);
+        mNavButtonController.onButtonLongClick(BUTTON_BACK, mockView);
         verify(mockSystemUiProxy, times(1)).stopScreenPinning();
     }
 
     @Test
     public void testLongPressBackRecentsTooLongPinned() {
         mNavButtonController.updateSysuiFlags(SYSUI_STATE_SCREEN_PINNING);
-        mNavButtonController.onButtonLongClick(BUTTON_RECENTS);
+        mNavButtonController.onButtonLongClick(BUTTON_RECENTS, mockView);
         try {
             Thread.sleep(SCREEN_PIN_LONG_PRESS_THRESHOLD + 5);
         } catch (InterruptedException e) {
             e.printStackTrace();
         }
-        mNavButtonController.onButtonLongClick(BUTTON_BACK);
+        mNavButtonController.onButtonLongClick(BUTTON_BACK, mockView);
         verify(mockSystemUiProxy, times(0)).stopScreenPinning();
     }
 
     @Test
     public void testLongPressBackRecentsMultipleAttemptPinned() {
         mNavButtonController.updateSysuiFlags(SYSUI_STATE_SCREEN_PINNING);
-        mNavButtonController.onButtonLongClick(BUTTON_RECENTS);
+        mNavButtonController.onButtonLongClick(BUTTON_RECENTS, mockView);
         try {
             Thread.sleep(SCREEN_PIN_LONG_PRESS_THRESHOLD + 5);
         } catch (InterruptedException e) {
             e.printStackTrace();
         }
-        mNavButtonController.onButtonLongClick(BUTTON_BACK);
+        mNavButtonController.onButtonLongClick(BUTTON_BACK, mockView);
         verify(mockSystemUiProxy, times(0)).stopScreenPinning();
 
         // Try again w/in threshold
-        mNavButtonController.onButtonLongClick(BUTTON_RECENTS);
-        mNavButtonController.onButtonLongClick(BUTTON_BACK);
+        mNavButtonController.onButtonLongClick(BUTTON_RECENTS, mockView);
+        mNavButtonController.onButtonLongClick(BUTTON_BACK, mockView);
         verify(mockSystemUiProxy, times(1)).stopScreenPinning();
     }
 
     @Test
     public void testLongPressHomeScreenPinned() {
         mNavButtonController.updateSysuiFlags(SYSUI_STATE_SCREEN_PINNING);
-        mNavButtonController.onButtonLongClick(BUTTON_HOME);
+        mNavButtonController.onButtonLongClick(BUTTON_HOME, mockView);
         verify(mockSystemUiProxy, times(0)).startAssistant(any());
     }
 
     @Test
     public void testNoCallsToNullLogger() {
-        mNavButtonController.onButtonClick(BUTTON_HOME);
+        mNavButtonController.onButtonClick(BUTTON_HOME, mockView);
         verify(mockStatsLogManager, times(0)).logger();
         verify(mockStatsLogger, times(0)).log(any());
     }
@@ -187,9 +199,9 @@
     @Test
     public void testNoCallsAfterNullingOut() {
         mNavButtonController.init(mockTaskbarControllers);
-        mNavButtonController.onButtonClick(BUTTON_HOME);
+        mNavButtonController.onButtonClick(BUTTON_HOME, mockView);
         mNavButtonController.onDestroy();
-        mNavButtonController.onButtonClick(BUTTON_HOME);
+        mNavButtonController.onButtonClick(BUTTON_HOME, mockView);
         verify(mockStatsLogger, times(1)).log(LAUNCHER_TASKBAR_HOME_BUTTON_TAP);
         verify(mockStatsLogger, times(0)).log(LAUNCHER_TASKBAR_HOME_BUTTON_LONGPRESS);
     }
@@ -197,7 +209,7 @@
     @Test
     public void testLogOnTap() {
         mNavButtonController.init(mockTaskbarControllers);
-        mNavButtonController.onButtonClick(BUTTON_HOME);
+        mNavButtonController.onButtonClick(BUTTON_HOME, mockView);
         verify(mockStatsLogger, times(1)).log(LAUNCHER_TASKBAR_HOME_BUTTON_TAP);
         verify(mockStatsLogger, times(0)).log(LAUNCHER_TASKBAR_HOME_BUTTON_LONGPRESS);
     }
@@ -205,7 +217,7 @@
     @Test
     public void testLogOnLongpress() {
         mNavButtonController.init(mockTaskbarControllers);
-        mNavButtonController.onButtonLongClick(BUTTON_HOME);
+        mNavButtonController.onButtonLongClick(BUTTON_HOME, mockView);
         verify(mockStatsLogger, times(1)).log(LAUNCHER_TASKBAR_HOME_BUTTON_LONGPRESS);
         verify(mockStatsLogger, times(0)).log(LAUNCHER_TASKBAR_HOME_BUTTON_TAP);
     }
@@ -213,11 +225,11 @@
     @Test
     public void testBackOverviewLogOnLongpress() {
         mNavButtonController.init(mockTaskbarControllers);
-        mNavButtonController.onButtonLongClick(BUTTON_RECENTS);
+        mNavButtonController.onButtonLongClick(BUTTON_RECENTS, mockView);
         verify(mockStatsLogger, times(1)).log(LAUNCHER_TASKBAR_OVERVIEW_BUTTON_LONGPRESS);
         verify(mockStatsLogger, times(0)).log(LAUNCHER_TASKBAR_OVERVIEW_BUTTON_TAP);
 
-        mNavButtonController.onButtonLongClick(BUTTON_BACK);
+        mNavButtonController.onButtonLongClick(BUTTON_BACK, mockView);
         verify(mockStatsLogger, times(1)).log(LAUNCHER_TASKBAR_BACK_BUTTON_LONGPRESS);
         verify(mockStatsLogger, times(0)).log(LAUNCHER_TASKBAR_BACK_BUTTON_TAP);
     }
diff --git a/quickstep/tests/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactoryTest.kt b/quickstep/tests/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactoryTest.kt
new file mode 100644
index 0000000..236b5db
--- /dev/null
+++ b/quickstep/tests/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactoryTest.kt
@@ -0,0 +1,172 @@
+package com.android.launcher3.taskbar.navbutton
+
+import android.content.res.Resources
+import android.view.View
+import android.view.ViewGroup
+import android.widget.FrameLayout
+import android.widget.ImageView
+import android.widget.LinearLayout
+import androidx.test.runner.AndroidJUnit4
+import com.android.launcher3.DeviceProfile
+import com.android.launcher3.R
+import com.android.launcher3.taskbar.TaskbarManager
+import java.lang.IllegalStateException
+import org.junit.Assume.assumeTrue
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mock
+import org.mockito.Mockito.`when` as whenever
+import org.mockito.MockitoAnnotations
+
+@RunWith(AndroidJUnit4::class)
+class NavButtonLayoutFactoryTest {
+
+    @Mock lateinit var mockDeviceProfile: DeviceProfile
+    @Mock lateinit var mockParentButtonContainer: FrameLayout
+    @Mock lateinit var mockNavLayout: LinearLayout
+    @Mock lateinit var mockStartContextualLayout: ViewGroup
+    @Mock lateinit var mockEndContextualLayout: ViewGroup
+    @Mock lateinit var mockResources: Resources
+    @Mock lateinit var mockBackButton: ImageView
+    @Mock lateinit var mockRecentsButton: ImageView
+    @Mock lateinit var mockHomeButton: ImageView
+
+    @Before
+    fun setup() {
+        MockitoAnnotations.initMocks(this)
+
+        // Init end nav buttons
+        whenever(mockNavLayout.childCount).thenReturn(3)
+        whenever(mockNavLayout.findViewById<View>(R.id.back)).thenReturn(mockBackButton)
+        whenever(mockNavLayout.findViewById<View>(R.id.home)).thenReturn(mockHomeButton)
+        whenever(mockNavLayout.findViewById<View>(R.id.recent_apps)).thenReturn(mockRecentsButton)
+
+        // Init top level layout
+        whenever(mockParentButtonContainer.findViewById<LinearLayout>(R.id.end_nav_buttons))
+            .thenReturn(mockNavLayout)
+        whenever(mockParentButtonContainer.findViewById<ViewGroup>(R.id.end_contextual_buttons))
+            .thenReturn(mockEndContextualLayout)
+        whenever(mockParentButtonContainer.findViewById<ViewGroup>(R.id.start_contextual_buttons))
+            .thenReturn(mockStartContextualLayout)
+    }
+
+    @Test
+    fun getKidsLayoutter() {
+        assumeTrue(TaskbarManager.FLAG_HIDE_NAVBAR_WINDOW)
+        mockDeviceProfile.isTaskbarPresent = true
+        val layoutter: NavButtonLayoutFactory.NavButtonLayoutter =
+            getLayoutter(
+                isKidsMode = true,
+                isInSetup = false,
+                isThreeButtonNav = false,
+                phoneMode = false
+            )
+        assert(layoutter is KidsNavLayoutter)
+    }
+
+    @Test
+    fun getSetupLayoutter() {
+        assumeTrue(TaskbarManager.FLAG_HIDE_NAVBAR_WINDOW)
+        mockDeviceProfile.isTaskbarPresent = true
+        val layoutter: NavButtonLayoutFactory.NavButtonLayoutter =
+            getLayoutter(
+                isKidsMode = false,
+                isInSetup = true,
+                isThreeButtonNav = false,
+                phoneMode = false
+            )
+        assert(layoutter is SetupNavLayoutter)
+    }
+
+    @Test
+    fun getTaskbarNavLayoutter() {
+        assumeTrue(TaskbarManager.FLAG_HIDE_NAVBAR_WINDOW)
+        mockDeviceProfile.isTaskbarPresent = true
+        val layoutter: NavButtonLayoutFactory.NavButtonLayoutter =
+            getLayoutter(
+                isKidsMode = false,
+                isInSetup = false,
+                isThreeButtonNav = false,
+                phoneMode = false
+            )
+        assert(layoutter is TaskbarNavLayoutter)
+    }
+
+    @Test(expected = IllegalStateException::class)
+    fun noValidLayoutForLargeScreenTaskbarNotPresent() {
+        assumeTrue(TaskbarManager.FLAG_HIDE_NAVBAR_WINDOW)
+        mockDeviceProfile.isTaskbarPresent = false
+        getLayoutter(
+            isKidsMode = false,
+            isInSetup = false,
+            isThreeButtonNav = false,
+            phoneMode = false
+        )
+    }
+
+    @Test
+    fun getTaskbarPortraitLayoutter() {
+        assumeTrue(TaskbarManager.FLAG_HIDE_NAVBAR_WINDOW)
+        mockDeviceProfile.isTaskbarPresent = false
+        val layoutter: NavButtonLayoutFactory.NavButtonLayoutter =
+            getLayoutter(
+                isKidsMode = false,
+                isInSetup = false,
+                isThreeButtonNav = true,
+                phoneMode = true
+            )
+        assert(layoutter is PhonePortraitNavLayoutter)
+    }
+
+    @Test
+    fun getTaskbarLandscapeLayoutter() {
+        assumeTrue(TaskbarManager.FLAG_HIDE_NAVBAR_WINDOW)
+        mockDeviceProfile.isTaskbarPresent = false
+        setDeviceProfileLandscape()
+        val layoutter: NavButtonLayoutFactory.NavButtonLayoutter =
+            getLayoutter(
+                isKidsMode = false,
+                isInSetup = false,
+                isThreeButtonNav = true,
+                phoneMode = true
+            )
+        assert(layoutter is PhoneLandscapeNavLayoutter)
+    }
+
+    @Test(expected = IllegalStateException::class)
+    fun noValidLayoutForPhoneGestureNav() {
+        assumeTrue(TaskbarManager.FLAG_HIDE_NAVBAR_WINDOW)
+        mockDeviceProfile.isTaskbarPresent = false
+        getLayoutter(
+            isKidsMode = false,
+            isInSetup = false,
+            isThreeButtonNav = false,
+            phoneMode = true
+        )
+    }
+
+    private fun setDeviceProfileLandscape() {
+        // Use reflection to modify landscape field
+        val landscapeField = mockDeviceProfile.javaClass.getDeclaredField("isLandscape")
+        landscapeField.isAccessible = true
+        landscapeField.set(mockDeviceProfile, true)
+    }
+
+    private fun getLayoutter(
+        isKidsMode: Boolean,
+        isInSetup: Boolean,
+        isThreeButtonNav: Boolean,
+        phoneMode: Boolean
+    ): NavButtonLayoutFactory.NavButtonLayoutter {
+        return NavButtonLayoutFactory.getUiLayoutter(
+            deviceProfile = mockDeviceProfile,
+            navButtonsView = mockParentButtonContainer,
+            resources = mockResources,
+            isKidsMode = isKidsMode,
+            isInSetup = isInSetup,
+            isThreeButtonNav = isThreeButtonNav,
+            phoneMode = phoneMode
+        )
+    }
+}
diff --git a/quickstep/tests/src/com/android/quickstep/AbstractQuickStepTest.java b/quickstep/tests/src/com/android/quickstep/AbstractQuickStepTest.java
index 09f0858..59f9d5f 100644
--- a/quickstep/tests/src/com/android/quickstep/AbstractQuickStepTest.java
+++ b/quickstep/tests/src/com/android/quickstep/AbstractQuickStepTest.java
@@ -16,8 +16,6 @@
 
 package com.android.quickstep;
 
-import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
-
 import static org.junit.Assert.assertTrue;
 
 import android.os.SystemProperties;
@@ -35,12 +33,13 @@
  * Base class for all instrumentation tests that deal with Quickstep.
  */
 public abstract class AbstractQuickStepTest extends AbstractLauncherUiTest {
-    static final boolean ENABLE_SHELL_TRANSITIONS =
-            SystemProperties.getBoolean("persist.wm.debug.shell_transit", false);
+    public static final boolean ENABLE_SHELL_TRANSITIONS =
+            SystemProperties.getBoolean("persist.wm.debug.shell_transit", true);
     @Override
     protected TestRule getRulesInsideActivityMonitor() {
         return RuleChain.
                 outerRule(new NavigationModeSwitchRule(mLauncher)).
+                around(new TaskbarModeSwitchRule(mLauncher)).
                 around(super.getRulesInsideActivityMonitor());
     }
 
@@ -79,8 +78,7 @@
 
     private boolean isInLiveTileMode(Launcher launcher,
             LauncherInstrumentation.ContainerType expectedContainerType) {
-        if (!ENABLE_QUICKSTEP_LIVE_TILE.get()
-                || expectedContainerType != LauncherInstrumentation.ContainerType.OVERVIEW) {
+        if (expectedContainerType != LauncherInstrumentation.ContainerType.OVERVIEW) {
             return false;
         }
 
diff --git a/quickstep/tests/src/com/android/quickstep/AbstractTaplTestsTaskbar.java b/quickstep/tests/src/com/android/quickstep/AbstractTaplTestsTaskbar.java
new file mode 100644
index 0000000..9c6c93d
--- /dev/null
+++ b/quickstep/tests/src/com/android/quickstep/AbstractTaplTestsTaskbar.java
@@ -0,0 +1,100 @@
+/*
+ * 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.quickstep;
+
+import static androidx.test.InstrumentationRegistry.getInstrumentation;
+
+import static junit.framework.TestCase.assertEquals;
+
+import android.content.Context;
+import android.content.Intent;
+
+import com.android.launcher3.tapl.LauncherInstrumentation;
+import com.android.launcher3.tapl.Taskbar;
+import com.android.launcher3.ui.AbstractLauncherUiTest;
+import com.android.launcher3.ui.TaplTestsLauncher3;
+import com.android.launcher3.util.DisplayController;
+import com.android.launcher3.util.LauncherLayoutBuilder;
+import com.android.launcher3.util.TestUtil;
+
+import org.junit.After;
+import org.junit.Assume;
+
+import java.util.List;
+
+public class AbstractTaplTestsTaskbar extends AbstractQuickStepTest {
+
+    protected static final String TEST_APP_NAME = "LauncherTestApp";
+    protected static final String TEST_APP_PACKAGE =
+            getInstrumentation().getContext().getPackageName();
+    protected static final String CALCULATOR_APP_PACKAGE =
+            resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR);
+
+    protected AutoCloseable mLauncherLayout;
+    protected boolean mTaskbarWasInTransientMode;
+
+
+    @Override
+    public void setUp() throws Exception {
+        Assume.assumeTrue(mLauncher.isTablet());
+        super.setUp();
+
+        LauncherLayoutBuilder layoutBuilder = new LauncherLayoutBuilder().atHotseat(0).putApp(
+                "com.google.android.apps.nexuslauncher.tests",
+                "com.android.launcher3.testcomponent.BaseTestingActivity");
+        mLauncherLayout = TestUtil.setLauncherDefaultLayout(mTargetContext, layoutBuilder);
+        TaplTestsLauncher3.initialize(this);
+        startAppFast(CALCULATOR_APP_PACKAGE);
+        mLauncher.enableBlockTimeout(true);
+        mLauncher.showTaskbarIfHidden();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        mLauncher.enableBlockTimeout(false);
+        if (mLauncherLayout != null) {
+            mLauncherLayout.close();
+        }
+    }
+
+    protected static boolean isTaskbarInTransientMode(Context context) {
+        return DisplayController.isTransientTaskbar(context);
+    }
+
+    protected Taskbar getTaskbar() {
+        Taskbar taskbar = mLauncher.getLaunchedAppState().getTaskbar();
+        List<String> taskbarIconNames = taskbar.getIconNames();
+        List<String> hotseatIconNames = mLauncher.getHotseatIconNames();
+
+        assertEquals("Taskbar and hotseat icon counts do not match",
+                taskbarIconNames.size(), hotseatIconNames.size());
+
+        for (int i = 0; i < taskbarIconNames.size(); i++) {
+            assertEquals("Taskbar and Hotseat icons do not match",
+                    taskbarIconNames, hotseatIconNames);
+        }
+
+        return taskbar;
+    }
+
+    protected static void setTaskbarMode(LauncherInstrumentation launcher,
+            boolean expectTransientTaskbar) {
+        launcher.enableTransientTaskbar(expectTransientTaskbar);
+        launcher.recreateTaskbar();
+        launcher.checkForAnomaly(true, true);
+        AbstractLauncherUiTest.checkDetectedLeaks(launcher);
+    }
+}
diff --git a/quickstep/tests/src/com/android/quickstep/DigitalWellBeingToastTest.java b/quickstep/tests/src/com/android/quickstep/DigitalWellBeingToastTest.java
index 5c2e14f..1129a33 100644
--- a/quickstep/tests/src/com/android/quickstep/DigitalWellBeingToastTest.java
+++ b/quickstep/tests/src/com/android/quickstep/DigitalWellBeingToastTest.java
@@ -46,7 +46,8 @@
             runWithShellPermission(() ->
                     usageStatsManager.registerAppUsageLimitObserver(observerId, packages,
                             Duration.ofSeconds(600), Duration.ofSeconds(300),
-                            PendingIntent.getActivity(mTargetContext, -1, new Intent(),
+                            PendingIntent.getActivity(mTargetContext, -1, new Intent()
+                                            .setPackage(mTargetContext.getPackageName()),
                                     PendingIntent.FLAG_MUTABLE)));
 
             mLauncher.goHome();
diff --git a/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java b/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java
index f7600ff..97e34c5 100644
--- a/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java
+++ b/quickstep/tests/src/com/android/quickstep/FallbackRecentsTest.java
@@ -32,6 +32,8 @@
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
 import static com.android.launcher3.util.rule.ShellCommandRule.disableHeadsUpNotification;
 import static com.android.launcher3.util.rule.ShellCommandRule.getLauncherCommand;
+import static com.android.launcher3.util.rule.TestStabilityRule.LOCAL;
+import static com.android.launcher3.util.rule.TestStabilityRule.PLATFORM_POSTSUBMIT;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -59,10 +61,13 @@
 import com.android.launcher3.util.rule.FailureWatcher;
 import com.android.launcher3.util.rule.SamplerRule;
 import com.android.launcher3.util.rule.ScreenRecordRule;
+import com.android.launcher3.util.rule.TestStabilityRule;
+import com.android.launcher3.util.rule.ViewCaptureRule;
 import com.android.quickstep.views.RecentsView;
 
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.RuleChain;
@@ -111,10 +116,12 @@
             Utilities.enableRunningInTestHarnessForTests();
         }
 
+        final ViewCaptureRule viewCaptureRule = new ViewCaptureRule();
         mOrderSensitiveRules = RuleChain
                 .outerRule(new SamplerRule())
                 .around(new NavigationModeSwitchRule(mLauncher))
-                .around(new FailureWatcher(mDevice, mLauncher));
+                .around(viewCaptureRule)
+                .around(new FailureWatcher(mDevice, mLauncher, viewCaptureRule.getViewCapture()));
 
         mOtherLauncherActivity = context.getPackageManager().queryIntentActivities(
                 getHomeIntentInPackage(context),
@@ -167,6 +174,7 @@
 
     // b/143488140
     //@NavigationModeSwitch
+    @TestStabilityRule.Stability(flavors = LOCAL | PLATFORM_POSTSUBMIT) // b/266606727
     @Test
     public void goToOverviewFromHome() {
         mDevice.pressHome();
@@ -178,6 +186,7 @@
 
     // b/143488140
     //@NavigationModeSwitch
+    @Ignore
     @Test
     public void goToOverviewFromApp() {
         startAppFast(resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR));
@@ -213,6 +222,7 @@
 
     // b/143488140
     //@NavigationModeSwitch
+    @TestStabilityRule.Stability(flavors = LOCAL | PLATFORM_POSTSUBMIT) // b/266606727
     @Test
     public void testOverview() {
         startAppFast(getAppPackageName());
diff --git a/quickstep/tests/src/com/android/quickstep/FullscreenDrawParamsTest.kt b/quickstep/tests/src/com/android/quickstep/FullscreenDrawParamsTest.kt
new file mode 100644
index 0000000..a9dc043
--- /dev/null
+++ b/quickstep/tests/src/com/android/quickstep/FullscreenDrawParamsTest.kt
@@ -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.quickstep
+
+import android.graphics.Rect
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.launcher3.FakeInvariantDeviceProfileTest
+import com.android.quickstep.util.TaskCornerRadius
+import com.android.quickstep.views.TaskView.FullscreenDrawParams
+import com.android.systemui.shared.recents.model.ThumbnailData
+import com.android.systemui.shared.recents.utilities.PreviewPositionHelper
+import com.android.systemui.shared.system.QuickStepContract
+import com.google.common.truth.Truth.assertThat
+import kotlin.math.roundToInt
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mockito.mock
+
+/** Test for FullscreenDrawParams class. */
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class FullscreenDrawParamsTest : FakeInvariantDeviceProfileTest() {
+
+    private val TASK_SCALE = 0.7f
+    private var mThumbnailData: ThumbnailData = mock(ThumbnailData::class.java)
+
+    private val mPreviewPositionHelper = PreviewPositionHelper()
+    private lateinit var params: FullscreenDrawParams
+
+    @Before
+    fun setup() {
+        params = FullscreenDrawParams(context)
+    }
+
+    @Test
+    fun setStartProgress_correctCornerRadiusForTablet() {
+        initializeVarsForTablet()
+        val dp = newDP()
+        val previewRect = Rect(0, 0, 100, 100)
+        val canvasWidth = (dp.widthPx * TASK_SCALE).roundToInt()
+        val canvasHeight = (dp.heightPx * TASK_SCALE).roundToInt()
+        val currentRotation = 0
+        val isRtl = false
+
+        mPreviewPositionHelper.updateThumbnailMatrix(
+            previewRect,
+            mThumbnailData,
+            canvasWidth,
+            canvasHeight,
+            dp.widthPx,
+            dp.heightPx,
+            dp.taskbarHeight,
+            dp.isTablet,
+            currentRotation,
+            isRtl
+        )
+        params.setProgress(
+            /* fullscreenProgress= */ 0f,
+            /* parentScale= */ 1.0f,
+            /* taskViewScale= */ 1.0f,
+            /* previewWidth= */ 0,
+            dp,
+            mPreviewPositionHelper
+        )
+
+        val expectedRadius = TaskCornerRadius.get(context)
+        assertThat(params.mCurrentDrawnCornerRadius).isEqualTo(expectedRadius)
+    }
+
+    @Test
+    fun setFullProgress_correctCornerRadiusForTablet() {
+        initializeVarsForTablet()
+        val dp = newDP()
+        val previewRect = Rect(0, 0, 100, 100)
+        val canvasWidth = (dp.widthPx * TASK_SCALE).roundToInt()
+        val canvasHeight = (dp.heightPx * TASK_SCALE).roundToInt()
+        val currentRotation = 0
+        val isRtl = false
+
+        mPreviewPositionHelper.updateThumbnailMatrix(
+            previewRect,
+            mThumbnailData,
+            canvasWidth,
+            canvasHeight,
+            dp.widthPx,
+            dp.heightPx,
+            dp.taskbarHeight,
+            dp.isTablet,
+            currentRotation,
+            isRtl
+        )
+        params.setProgress(
+            /* fullscreenProgress= */ 1.0f,
+            /* parentScale= */ 1.0f,
+            /* taskViewScale= */ 1.0f,
+            /* previewWidth= */ 0,
+            dp,
+            mPreviewPositionHelper
+        )
+
+        val expectedRadius = QuickStepContract.getWindowCornerRadius(context)
+        assertThat(params.mCurrentDrawnCornerRadius).isEqualTo(expectedRadius)
+    }
+
+    @Test
+    fun setStartProgress_correctCornerRadiusForPhone() {
+        initializeVarsForPhone()
+        val dp = newDP()
+        val previewRect = Rect(0, 0, 100, 100)
+        val canvasWidth = (dp.widthPx * TASK_SCALE).roundToInt()
+        val canvasHeight = (dp.heightPx * TASK_SCALE).roundToInt()
+        val currentRotation = 0
+        val isRtl = false
+
+        mPreviewPositionHelper.updateThumbnailMatrix(
+            previewRect,
+            mThumbnailData,
+            canvasWidth,
+            canvasHeight,
+            dp.widthPx,
+            dp.heightPx,
+            dp.taskbarHeight,
+            dp.isTablet,
+            currentRotation,
+            isRtl
+        )
+        params.setProgress(
+            /* fullscreenProgress= */ 0f,
+            /* parentScale= */ 1.0f,
+            /* taskViewScale= */ 1.0f,
+            /* previewWidth= */ 0,
+            dp,
+            mPreviewPositionHelper
+        )
+
+        val expectedRadius = TaskCornerRadius.get(context)
+        assertThat(params.mCurrentDrawnCornerRadius).isEqualTo(expectedRadius)
+    }
+
+    @Test
+    fun setFullProgress_correctCornerRadiusForPhone() {
+        initializeVarsForPhone()
+        val dp = newDP()
+        val previewRect = Rect(0, 0, 100, 100)
+        val canvasWidth = (dp.widthPx * TASK_SCALE).roundToInt()
+        val canvasHeight = (dp.heightPx * TASK_SCALE).roundToInt()
+        val currentRotation = 0
+        val isRtl = false
+
+        mPreviewPositionHelper.updateThumbnailMatrix(
+            previewRect,
+            mThumbnailData,
+            canvasWidth,
+            canvasHeight,
+            dp.widthPx,
+            dp.heightPx,
+            dp.taskbarHeight,
+            dp.isTablet,
+            currentRotation,
+            isRtl
+        )
+        params.setProgress(
+            /* fullscreenProgress= */ 1.0f,
+            /* parentScale= */ 1.0f,
+            /* taskViewScale= */ 1.0f,
+            /* previewWidth= */ 0,
+            dp,
+            mPreviewPositionHelper
+        )
+
+        val expectedRadius = QuickStepContract.getWindowCornerRadius(context)
+        assertThat(params.mCurrentDrawnCornerRadius).isEqualTo(expectedRadius)
+    }
+}
diff --git a/quickstep/tests/src/com/android/quickstep/HotseatWidthCalculationTest.kt b/quickstep/tests/src/com/android/quickstep/HotseatWidthCalculationTest.kt
new file mode 100644
index 0000000..a347156
--- /dev/null
+++ b/quickstep/tests/src/com/android/quickstep/HotseatWidthCalculationTest.kt
@@ -0,0 +1,161 @@
+/*
+ * 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.quickstep
+
+import android.graphics.Rect
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.launcher3.FakeInvariantDeviceProfileTest
+import com.android.launcher3.util.WindowBounds
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class HotseatWidthCalculationTest : FakeInvariantDeviceProfileTest() {
+
+    /**
+     * This is a case when after setting the hotseat, the space needs to be recalculated but it
+     * doesn't need to change QSB width or remove icons
+     */
+    @Test
+    fun distribute_border_space_when_space_is_enough_portrait() {
+        initializeVarsForTablet(isGestureMode = false)
+        windowBounds = WindowBounds(Rect(0, 0, 1800, 2560), Rect(0, 104, 0, 0))
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dp.hotseatBarEndOffset).isEqualTo(510)
+        assertThat(dp.numShownHotseatIcons).isEqualTo(6)
+        assertThat(dp.hotseatBorderSpace).isEqualTo(70)
+
+        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(150)
+        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(580)
+
+        assertThat(dp.isQsbInline).isFalse()
+        assertThat(dp.hotseatQsbWidth).isEqualTo(1445)
+    }
+
+    /**
+     * This is a case when after setting the hotseat, and recalculating spaces it still needs to
+     * remove icons for everything to fit
+     */
+    @Test
+    fun decrease_num_of_icons_when_not_enough_space_portrait() {
+        initializeVarsForTablet(isGestureMode = false)
+        windowBounds = WindowBounds(Rect(0, 0, 1300, 2560), Rect(0, 104, 0, 0))
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dp.hotseatBarEndOffset).isEqualTo(510)
+        assertThat(dp.numShownHotseatIcons).isEqualTo(4)
+        assertThat(dp.hotseatBorderSpace).isEqualTo(40)
+
+        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(150)
+        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(550)
+
+        assertThat(dp.isQsbInline).isFalse()
+        assertThat(dp.hotseatQsbWidth).isEqualTo(1080)
+    }
+
+    /**
+     * This is a case when after setting the hotseat, the space needs to be recalculated but it
+     * doesn't need to change QSB width or remove icons
+     */
+    @Test
+    fun distribute_border_space_when_space_is_enough_landscape() {
+        initializeVarsForTwoPanel(isGestureMode = false, isLandscape = true)
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dp.hotseatBarEndOffset).isEqualTo(705)
+        assertThat(dp.numShownHotseatIcons).isEqualTo(6)
+        assertThat(dp.hotseatBorderSpace).isEqualTo(54)
+
+        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(231)
+        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(759)
+
+        assertThat(dp.isQsbInline).isFalse()
+        assertThat(dp.hotseatQsbWidth).isEqualTo(1468)
+    }
+
+    /**
+     * This is a case when the hotseat spans a certain amount of columns and the nav buttons push
+     * the hotseat to the side, but not enough to change the border space.
+     */
+    @Test
+    fun nav_buttons_dont_interfere_with_required_hotseat_width() {
+        initializeVarsForTablet(isGestureMode = false, isLandscape = true)
+        inv?.apply {
+            hotseatColumnSpan = IntArray(4) { 4 }
+            inlineQsb = BooleanArray(4) { false }
+        }
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dp.hotseatBarEndOffset).isEqualTo(660)
+        assertThat(dp.numShownHotseatIcons).isEqualTo(6)
+        assertThat(dp.hotseatBorderSpace).isEqualTo(100)
+
+        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(300)
+        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(1040)
+
+        assertThat(dp.isQsbInline).isFalse()
+        assertThat(dp.hotseatQsbWidth).isEqualTo(1233)
+    }
+
+    /** This is a case when after setting the hotseat, the QSB width needs to be changed to fit */
+    @Test
+    fun decrease_qsb_when_not_enough_space_landscape() {
+        initializeVarsForTablet(isGestureMode = false, isLandscape = true)
+        windowBounds = WindowBounds(Rect(0, 0, 2460, 1600), Rect(0, 104, 0, 0))
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dp.hotseatBarEndOffset).isEqualTo(660)
+        assertThat(dp.numShownHotseatIcons).isEqualTo(6)
+        assertThat(dp.hotseatBorderSpace).isEqualTo(36)
+
+        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(864)
+        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(696)
+
+        assertThat(dp.isQsbInline).isTrue()
+        assertThat(dp.hotseatQsbWidth).isEqualTo(528)
+    }
+
+    /**
+     * This is a case when after setting the hotseat, changing QSB width, and recalculating spaces
+     * it still needs to remove icons for everything to fit
+     */
+    @Test
+    fun decrease_num_of_icons_when_not_enough_space_landscape() {
+        initializeVarsForTablet(isGestureMode = false, isLandscape = true)
+        windowBounds = WindowBounds(Rect(0, 0, 2260, 1600), Rect(0, 104, 0, 0))
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dp.hotseatBarEndOffset).isEqualTo(660)
+        assertThat(dp.numShownHotseatIcons).isEqualTo(5)
+        assertThat(dp.hotseatBorderSpace).isEqualTo(36)
+
+        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(816)
+        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(700)
+
+        assertThat(dp.isQsbInline).isTrue()
+        assertThat(dp.hotseatQsbWidth).isEqualTo(480)
+    }
+}
diff --git a/quickstep/tests/src/com/android/quickstep/NavigationModeSwitchRule.java b/quickstep/tests/src/com/android/quickstep/NavigationModeSwitchRule.java
index e5e2cf3..eded1c9 100644
--- a/quickstep/tests/src/com/android/quickstep/NavigationModeSwitchRule.java
+++ b/quickstep/tests/src/com/android/quickstep/NavigationModeSwitchRule.java
@@ -51,7 +51,7 @@
 
 /**
  * Test rule that allows executing a test with Quickstep on and then Quickstep off.
- * The test should be annotated with @QuickstepOnOff.
+ * The test should be annotated with @NavigationModeSwitch.
  */
 public class NavigationModeSwitchRule implements TestRule {
 
diff --git a/quickstep/tests/src/com/android/quickstep/OrientationTouchTransformerTest.java b/quickstep/tests/src/com/android/quickstep/OrientationTouchTransformerTest.java
index 9e5d958..9c240f0 100644
--- a/quickstep/tests/src/com/android/quickstep/OrientationTouchTransformerTest.java
+++ b/quickstep/tests/src/com/android/quickstep/OrientationTouchTransformerTest.java
@@ -19,7 +19,7 @@
 
 import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
 
-import static com.android.launcher3.util.DisplayController.NavigationMode.NO_BUTTON;
+import static com.android.launcher3.util.NavigationMode.NO_BUTTON;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
@@ -35,14 +35,13 @@
 import android.util.ArrayMap;
 import android.util.DisplayMetrics;
 import android.util.Size;
-import android.view.Display;
 import android.view.MotionEvent;
 import android.view.Surface;
 
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
-import com.android.launcher3.ResourceUtils;
+import com.android.launcher3.testing.shared.ResourceUtils;
 import com.android.launcher3.util.DisplayController;
 import com.android.launcher3.util.RotationUtils;
 import com.android.launcher3.util.WindowBounds;
@@ -290,15 +289,17 @@
     private DisplayController.Info createDisplayInfo(Size screenSize, int rotation) {
         Point displaySize = new Point(screenSize.getWidth(), screenSize.getHeight());
         RotationUtils.rotateSize(displaySize, rotation);
-        CachedDisplayInfo cdi = new CachedDisplayInfo(displaySize, rotation);
-        WindowBounds wm = new WindowBounds(
+        CachedDisplayInfo cachedDisplayInfo = new CachedDisplayInfo(displaySize, rotation);
+        WindowBounds windowBounds = new WindowBounds(
                 new Rect(0, 0, displaySize.x, displaySize.y),
                 new Rect());
         WindowManagerProxy wmProxy = mock(WindowManagerProxy.class);
-        doReturn(cdi).when(wmProxy).getDisplayInfo(any(), any());
-        doReturn(wm).when(wmProxy).getRealBounds(any(), any(), any());
+        doReturn(cachedDisplayInfo).when(wmProxy).getDisplayInfo(any());
+        doReturn(windowBounds).when(wmProxy).getRealBounds(any(), any());
+        ArrayMap<CachedDisplayInfo, WindowBounds[]> internalDisplayBounds = new ArrayMap<>();
+        doReturn(internalDisplayBounds).when(wmProxy).estimateInternalDisplayBounds(any());
         return new DisplayController.Info(
-                getApplicationContext(), mock(Display.class), wmProxy, new ArrayMap<>());
+                getApplicationContext(), wmProxy, new ArrayMap<>());
     }
 
     private float generateTouchRegionHeight(Size screenSize, int rotation) {
diff --git a/quickstep/tests/src/com/android/quickstep/RecentTasksListTest.java b/quickstep/tests/src/com/android/quickstep/RecentTasksListTest.java
index 4e49716..ed5526f 100644
--- a/quickstep/tests/src/com/android/quickstep/RecentTasksListTest.java
+++ b/quickstep/tests/src/com/android/quickstep/RecentTasksListTest.java
@@ -26,12 +26,12 @@
 import static org.mockito.Mockito.when;
 
 import android.app.ActivityManager;
+import android.app.KeyguardManager;
 
 import androidx.test.filters.SmallTest;
 
 import com.android.launcher3.util.LooperExecutor;
 import com.android.quickstep.util.GroupTask;
-import com.android.systemui.shared.system.KeyguardManagerCompat;
 import com.android.wm.shell.util.GroupedRecentTaskInfo;
 
 import org.junit.Before;
@@ -56,8 +56,8 @@
     public void setup() {
         MockitoAnnotations.initMocks(this);
         LooperExecutor mockMainThreadExecutor = mock(LooperExecutor.class);
-        KeyguardManagerCompat mockKeyguardManagerCompat = mock(KeyguardManagerCompat.class);
-        mRecentTasksList = new RecentTasksList(mockMainThreadExecutor, mockKeyguardManagerCompat,
+        KeyguardManager mockKeyguardManager = mock(KeyguardManager.class);
+        mRecentTasksList = new RecentTasksList(mockMainThreadExecutor, mockKeyguardManager,
                 mockSystemUiProxy);
     }
 
@@ -70,7 +70,7 @@
 
     @Test
     public void loadTasksInBackground_onlyKeys_noValidTaskDescription() {
-        GroupedRecentTaskInfo recentTaskInfos = new GroupedRecentTaskInfo(
+        GroupedRecentTaskInfo recentTaskInfos = GroupedRecentTaskInfo.forSplitTasks(
                 new ActivityManager.RecentTaskInfo(), new ActivityManager.RecentTaskInfo(), null);
         when(mockSystemUiProxy.getRecentTasks(anyInt(), anyInt()))
                 .thenReturn(new ArrayList<>(Collections.singletonList(recentTaskInfos)));
@@ -90,8 +90,8 @@
         task1.taskDescription = new ActivityManager.TaskDescription(taskDescription);
         ActivityManager.RecentTaskInfo task2 = new ActivityManager.RecentTaskInfo();
         task2.taskDescription = new ActivityManager.TaskDescription();
-        GroupedRecentTaskInfo recentTaskInfos = new GroupedRecentTaskInfo(
-                task1, task2, null);
+        GroupedRecentTaskInfo recentTaskInfos = GroupedRecentTaskInfo.forSplitTasks(task1, task2,
+                null);
         when(mockSystemUiProxy.getRecentTasks(anyInt(), anyInt()))
                 .thenReturn(new ArrayList<>(Collections.singletonList(recentTaskInfos)));
 
diff --git a/quickstep/tests/src/com/android/quickstep/StartLauncherViaGestureTests.java b/quickstep/tests/src/com/android/quickstep/StartLauncherViaGestureTests.java
index 6ec6269..df5303f 100644
--- a/quickstep/tests/src/com/android/quickstep/StartLauncherViaGestureTests.java
+++ b/quickstep/tests/src/com/android/quickstep/StartLauncherViaGestureTests.java
@@ -16,8 +16,6 @@
 
 package com.android.quickstep;
 
-import android.content.Intent;
-
 import androidx.test.filters.LargeTest;
 import androidx.test.runner.AndroidJUnit4;
 
@@ -26,6 +24,7 @@
 import com.android.quickstep.NavigationModeSwitchRule.NavigationModeSwitch;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -43,7 +42,7 @@
         // b/143488140
         mLauncher.goHome();
         // Start an activity where the gestures start.
-        startAppFast(resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR));
+        startTestActivity(2);
     }
 
     private void runTest(String... eventSequence) {
@@ -58,6 +57,7 @@
         eventProcessor.finishIteration();
     }
 
+    @Ignore
     @Test
     @NavigationModeSwitch
     public void testStressPressHome() {
@@ -70,6 +70,7 @@
         }
     }
 
+    @Ignore
     @Test
     @NavigationModeSwitch
     public void testStressSwipeToOverview() {
diff --git a/quickstep/tests/src/com/android/quickstep/TaplTestsPersistentTaskbar.java b/quickstep/tests/src/com/android/quickstep/TaplTestsPersistentTaskbar.java
new file mode 100644
index 0000000..1b5313b
--- /dev/null
+++ b/quickstep/tests/src/com/android/quickstep/TaplTestsPersistentTaskbar.java
@@ -0,0 +1,46 @@
+/*
+ * 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.quickstep;
+
+import static com.android.quickstep.TaskbarModeSwitchRule.Mode.PERSISTENT;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.quickstep.TaskbarModeSwitchRule.TaskbarModeSwitch;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@LargeTest
+@RunWith(AndroidJUnit4.class)
+public class TaplTestsPersistentTaskbar extends AbstractTaplTestsTaskbar {
+
+    @Test
+    @TaskbarModeSwitch(mode = PERSISTENT)
+    public void testHideShowTaskbar() {
+        getTaskbar().hide();
+        mLauncher.getLaunchedAppState().showTaskbar();
+    }
+
+    @Test
+    @TaskbarModeSwitch(mode = PERSISTENT)
+    public void testHideTaskbarPersistsOnRecreate() {
+        getTaskbar().hide();
+        mLauncher.recreateTaskbar();
+        mLauncher.getLaunchedAppState().assertTaskbarHidden();
+    }
+}
diff --git a/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java b/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java
index 4bf247c..32eadce 100644
--- a/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java
+++ b/quickstep/tests/src/com/android/quickstep/TaplTestsQuickstep.java
@@ -17,33 +17,41 @@
 package com.android.quickstep;
 
 import static com.android.launcher3.ui.TaplTestsLauncher3.getAppPackageName;
+import static com.android.quickstep.TaskbarModeSwitchRule.Mode.PERSISTENT;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeFalse;
 import static org.junit.Assume.assumeTrue;
 
 import android.content.Intent;
+import android.platform.test.annotations.PlatinumTest;
 
 import androidx.test.filters.LargeTest;
+import androidx.test.platform.app.InstrumentationRegistry;
 import androidx.test.runner.AndroidJUnit4;
 import androidx.test.uiautomator.By;
 import androidx.test.uiautomator.Until;
 
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherState;
+import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.tapl.LaunchedAppState;
 import com.android.launcher3.tapl.LauncherInstrumentation.NavigationModel;
 import com.android.launcher3.tapl.Overview;
 import com.android.launcher3.tapl.OverviewActions;
 import com.android.launcher3.tapl.OverviewTask;
 import com.android.launcher3.ui.TaplTestsLauncher3;
+import com.android.launcher3.util.Wait;
 import com.android.launcher3.util.rule.ScreenRecordRule.ScreenRecord;
 import com.android.quickstep.NavigationModeSwitchRule.NavigationModeSwitch;
+import com.android.quickstep.TaskbarModeSwitchRule.TaskbarModeSwitch;
 import com.android.quickstep.views.RecentsView;
 
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -54,6 +62,8 @@
     private static final String APP_NAME = "LauncherTestApp";
     private static final String CALCULATOR_APP_PACKAGE =
             resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR);
+    private static final String READ_DEVICE_CONFIG_PERMISSION =
+            "android.permission.READ_DEVICE_CONFIG";
 
     @Before
     public void setUp() throws Exception {
@@ -90,6 +100,7 @@
     @Test
     @NavigationModeSwitch
     @PortraitLandscape
+    @PlatinumTest(focusArea = "launcher")
     public void testWorkspaceSwitchToAllApps() {
         assertNotNull("switchToAllApps() returned null",
                 mLauncher.getWorkspace().switchToAllApps());
@@ -99,6 +110,7 @@
 
     @Test
     @PortraitLandscape
+    @PlatinumTest(focusArea = "launcher")
     public void testOverview() throws Exception {
         startTestAppsWithCheck();
         // mLauncher.pressHome() also tests an important case of pressing home while in background.
@@ -166,6 +178,7 @@
     @NavigationModeSwitch
     @PortraitLandscape
     @ScreenRecord // b/195673272
+    @PlatinumTest(focusArea = "launcher")
     public void testOverviewActions() throws Exception {
         // Experimenting for b/165029151:
         final Overview overview = mLauncher.goHome().switchToOverview();
@@ -195,19 +208,25 @@
         return launcher.<RecentsView>getOverviewPanel().getBottomRowTaskCountForTablet();
     }
 
+    @Ignore
     @Test
     @NavigationModeSwitch
     @PortraitLandscape
+    @ScreenRecord // b/238461765
+    @PlatinumTest(focusArea = "launcher")
     public void testSwitchToOverview() throws Exception {
+        startTestAppsWithCheck();
         assertNotNull("Workspace.switchToOverview() returned null",
                 mLauncher.goHome().switchToOverview());
         assertTrue("Launcher internal state didn't switch to Overview",
                 isInState(() -> LauncherState.OVERVIEW));
     }
 
+    @Ignore
     @Test
     @NavigationModeSwitch
     @PortraitLandscape
+    @PlatinumTest(focusArea = "launcher")
     public void testBackground() throws Exception {
         startAppFast(CALCULATOR_APP_PACKAGE);
         final LaunchedAppState launchedAppState = getAndAssertLaunchedApp();
@@ -228,6 +247,19 @@
         return launchedAppState;
     }
 
+    private void quickSwitchToPreviousAppAndAssert(boolean toRight) {
+        final LaunchedAppState launchedAppState = getAndAssertLaunchedApp();
+        if (toRight) {
+            launchedAppState.quickSwitchToPreviousApp();
+        } else {
+            launchedAppState.quickSwitchToPreviousAppSwipeLeft();
+        }
+
+        // While enable shell transition, Launcher can be resumed due to transient launch.
+        waitForLauncherCondition("Launcher shouldn't stay in resume forever",
+                this::isInLaunchedApp, 3000 /* timeout */);
+    }
+
     @Test
     @PortraitLandscape
     public void testAllAppsFromHome() throws Exception {
@@ -249,18 +281,17 @@
     @Test
     @NavigationModeSwitch
     @PortraitLandscape
+    @PlatinumTest(focusArea = "launcher")
     public void testQuickSwitchFromApp() throws Exception {
         startTestActivity(2);
         startTestActivity(3);
         startTestActivity(4);
 
-        LaunchedAppState launchedAppState = getAndAssertLaunchedApp();
-        launchedAppState.quickSwitchToPreviousApp();
+        quickSwitchToPreviousAppAndAssert(true /* toRight */);
         assertTrue("The first app we should have quick switched to is not running",
                 isTestActivityRunning(3));
 
-        launchedAppState = getAndAssertLaunchedApp();
-        launchedAppState.quickSwitchToPreviousApp();
+        quickSwitchToPreviousAppAndAssert(true /* toRight */);
         if (mLauncher.getNavigationModel() == NavigationModel.THREE_BUTTON) {
             // 3-button mode toggles between 2 apps, rather than going back further.
             assertTrue("Second quick switch should have returned to the first app.",
@@ -269,15 +300,41 @@
             assertTrue("The second app we should have quick switched to is not running",
                     isTestActivityRunning(2));
         }
-        launchedAppState = getAndAssertLaunchedApp();
-        launchedAppState.quickSwitchToPreviousAppSwipeLeft();
+
+        quickSwitchToPreviousAppAndAssert(false /* toRight */);
         assertTrue("The 2nd app we should have quick switched to is not running",
                 isTestActivityRunning(3));
 
-        launchedAppState = getAndAssertLaunchedApp();
+        final LaunchedAppState launchedAppState = getAndAssertLaunchedApp();
         launchedAppState.switchToOverview();
     }
 
+    @Test
+    @ScreenRecord // b/242163205
+    @PlatinumTest(focusArea = "launcher")
+    @TaskbarModeSwitch(mode = PERSISTENT)
+    public void testQuickSwitchToPreviousAppForTablet() throws Exception {
+        assumeTrue(mLauncher.isTablet());
+        startTestActivity(2);
+        startImeTestActivity();
+
+        // Set ignoreTaskbarVisibility to true to verify the task bar visibility explicitly.
+        mLauncher.setIgnoreTaskbarVisibility(true);
+
+        // Expect task bar invisible when the launched app was the IME activity.
+        LaunchedAppState launchedAppState = getAndAssertLaunchedApp();
+        launchedAppState.assertTaskbarHidden();
+
+        // Quick-switch to the test app with swiping to right.
+        quickSwitchToPreviousAppAndAssert(true /* toRight */);
+
+        assertTrue("The first app we should have quick switched to is not running",
+                isTestActivityRunning(2));
+        // Expect task bar visible when the launched app was the test activity.
+        launchedAppState = getAndAssertLaunchedApp();
+        launchedAppState.assertTaskbarVisible();
+    }
+
     private boolean isTestActivityRunning(int activityNumber) {
         return mDevice.wait(Until.hasObject(By.pkg(getAppPackageName())
                         .text("TestActivity" + activityNumber)),
@@ -287,6 +344,7 @@
     @Test
     @NavigationModeSwitch
     @PortraitLandscape
+    @PlatinumTest(focusArea = "launcher")
     public void testQuickSwitchFromHome() throws Exception {
         startTestActivity(2);
         mLauncher.goHome().quickSwitchToPreviousApp();
@@ -298,7 +356,11 @@
     @Test
     @PortraitLandscape
     @NavigationModeSwitch
+    @PlatinumTest(focusArea = "launcher")
     public void testPressBack() throws Exception {
+        InstrumentationRegistry.getInstrumentation().getUiAutomation().adoptShellPermissionIdentity(
+                READ_DEVICE_CONFIG_PERMISSION);
+        assumeFalse(FeatureFlags.ENABLE_BACK_SWIPE_LAUNCHER_ANIMATION.get());
         mLauncher.getWorkspace().switchToAllApps();
         mLauncher.pressBack();
         mLauncher.getWorkspace();
@@ -312,6 +374,8 @@
 
     @Test
     @PortraitLandscape
+    @TaskbarModeSwitch(mode = PERSISTENT)
+    @PlatinumTest(focusArea = "launcher")
     public void testOverviewForTablet() throws Exception {
         assumeTrue(mLauncher.isTablet());
 
@@ -374,4 +438,72 @@
                 launcher -> assertEquals("Still have tasks after dismissing all",
                         0, getTaskCount(launcher)));
     }
+
+    @Test
+    @PortraitLandscape
+    public void testOverviewDeadzones() throws Exception {
+        startTestAppsWithCheck();
+
+        Overview overview = mLauncher.goHome().switchToOverview();
+        assertTrue("Launcher internal state should be Overview",
+                isInState(() -> LauncherState.OVERVIEW));
+        executeOnLauncher(
+                launcher -> assertTrue("Should have at least 3 tasks",
+                        getTaskCount(launcher) >= 3));
+
+        // It should not dismiss overview when tapping between tasks
+        overview.touchBetweenTasks();
+        overview = mLauncher.getOverview();
+        assertTrue("Launcher internal state should be Overview",
+                isInState(() -> LauncherState.OVERVIEW));
+
+        // Dismiss when tapping to the right of the focused task
+        overview.touchOutsideFirstTask();
+        assertTrue("Launcher internal state should be Home",
+                isInState(() -> LauncherState.NORMAL));
+    }
+
+    @Test
+    @PortraitLandscape
+    public void testTaskbarDeadzonesForTablet() throws Exception {
+        assumeTrue(mLauncher.isTablet());
+
+        startTestAppsWithCheck();
+
+        Overview overview = mLauncher.goHome().switchToOverview();
+        assertTrue("Launcher internal state should be Overview",
+                isInState(() -> LauncherState.OVERVIEW));
+        executeOnLauncher(
+                launcher -> assertTrue("Should have at least 3 tasks",
+                        getTaskCount(launcher) >= 3));
+
+        // On persistent taskbar, it should not dismiss when tapping the taskbar
+        overview.touchTaskbarBottomCorner(/* tapRight= */ false);
+        assertTrue("Launcher internal state should be Overview",
+                isInState(() -> LauncherState.OVERVIEW));
+
+        // On persistent taskbar, it should not dismiss when tapping the taskbar
+        overview.touchTaskbarBottomCorner(/* tapRight= */ true);
+        assertTrue("Launcher internal state should be Overview",
+                isInState(() -> LauncherState.OVERVIEW));
+    }
+
+    @Test
+    @ScreenRecord // b/242163205
+    public void testDisableRotationCheckForPhone() throws Exception {
+        assumeFalse(mLauncher.isTablet());
+        try {
+            mLauncher.setExpectedRotationCheckEnabled(false);
+            mLauncher.setEnableRotation(false);
+            mLauncher.getDevice().setOrientationLeft();
+            startTestActivity(7);
+            Wait.atMost("Device should not be in natural orientation",
+                    () -> !mDevice.isNaturalOrientation(), DEFAULT_UI_TIMEOUT, mLauncher);
+            mLauncher.goHome();
+        } finally {
+            mLauncher.setExpectedRotationCheckEnabled(true);
+            mLauncher.setEnableRotation(true);
+            mLauncher.getDevice().setOrientationNatural();
+        }
+    }
 }
diff --git a/quickstep/tests/src/com/android/quickstep/TaplTestsSplitscreen.java b/quickstep/tests/src/com/android/quickstep/TaplTestsSplitscreen.java
new file mode 100644
index 0000000..e8cadab
--- /dev/null
+++ b/quickstep/tests/src/com/android/quickstep/TaplTestsSplitscreen.java
@@ -0,0 +1,135 @@
+/*
+ * 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.quickstep;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeTrue;
+
+import android.content.Intent;
+
+import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.ui.TaplTestsLauncher3;
+import com.android.quickstep.TaskbarModeSwitchRule.TaskbarModeSwitch;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class TaplTestsSplitscreen extends AbstractQuickStepTest {
+    private static final String CALCULATOR_APP_NAME = "Calculator";
+    private static final String CALCULATOR_APP_PACKAGE =
+            resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR);
+
+    @Override
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+        TaplTestsLauncher3.initialize(this);
+
+        if (mLauncher.isTablet()) {
+            mLauncher.enableBlockTimeout(true);
+            mLauncher.showTaskbarIfHidden();
+        }
+    }
+
+    @After
+    public void tearDown() {
+        if (mLauncher.isTablet()) {
+            mLauncher.enableBlockTimeout(false);
+        }
+    }
+
+    @Test
+    @PortraitLandscape
+    public void testSplitFromOverview() {
+        createAndLaunchASplitPair();
+    }
+
+    @Test
+    @PortraitLandscape
+    @TaskbarModeSwitch
+    public void testSplitAppFromHomeWithItself() throws Exception {
+        // Currently only tablets have Taskbar in Overview, so test is only active on tablets
+        assumeTrue(mLauncher.isTablet());
+
+        mLauncher.getWorkspace()
+                .deleteAppIcon(mLauncher.getWorkspace().getHotseatAppIcon(0))
+                .switchToAllApps()
+                .getAppIcon(CALCULATOR_APP_NAME)
+                .dragToHotseat(0);
+
+        startAppFast(CALCULATOR_APP_PACKAGE);
+
+        mLauncher.goHome()
+                .switchToAllApps()
+                .getAppIcon(CALCULATOR_APP_NAME)
+                .openMenu()
+                .getSplitScreenMenuItem()
+                .click();
+
+        mLauncher.getLaunchedAppState()
+                .getTaskbar()
+                .getAppIcon(CALCULATOR_APP_NAME)
+                .launchIntoSplitScreen();
+    }
+
+    @Test
+    public void testSaveAppPairMenuItemExistsOnSplitPair() throws Exception {
+        assumeTrue(FeatureFlags.ENABLE_APP_PAIRS.get());
+
+        createAndLaunchASplitPair();
+
+        assertTrue("Save app pair menu item is missing",
+                mLauncher.goHome()
+                        .switchToOverview()
+                        .getCurrentTask()
+                        .tapMenu()
+                        .hasMenuItem("Save app pair"));
+    }
+
+    @Test
+    public void testSaveAppPairMenuItemDoesNotExistOnSingleTask() throws Exception {
+        assumeTrue(FeatureFlags.ENABLE_APP_PAIRS.get());
+
+        startAppFast(CALCULATOR_APP_PACKAGE);
+
+        assertFalse("Save app pair menu item is erroneously appearing on single task",
+                mLauncher.goHome()
+                        .switchToOverview()
+                        .getCurrentTask()
+                        .tapMenu()
+                        .hasMenuItem("Save app pair"));
+    }
+
+    private void createAndLaunchASplitPair() {
+        startTestActivity(2);
+        startTestActivity(3);
+
+        if (mLauncher.isTablet()) {
+            mLauncher.goHome().switchToOverview().getOverviewActions()
+                    .clickSplit()
+                    .getTestActivityTask(2)
+                    .open();
+        } else {
+            mLauncher.goHome().switchToOverview().getCurrentTask()
+                    .tapMenu()
+                    .tapSplitMenuItem()
+                    .getCurrentTask()
+                    .open();
+        }
+    }
+}
diff --git a/quickstep/tests/src/com/android/quickstep/TaplTestsTaskbar.java b/quickstep/tests/src/com/android/quickstep/TaplTestsTaskbar.java
index 1df9c02..40be480 100644
--- a/quickstep/tests/src/com/android/quickstep/TaplTestsTaskbar.java
+++ b/quickstep/tests/src/com/android/quickstep/TaplTestsTaskbar.java
@@ -15,70 +15,72 @@
  */
 package com.android.quickstep;
 
-import static androidx.test.InstrumentationRegistry.getInstrumentation;
-
-import static junit.framework.TestCase.assertEquals;
-
-import android.content.Intent;
+import static com.android.quickstep.TaplTestsTaskbar.TaskbarMode.PERSISTENT;
+import static com.android.quickstep.TaplTestsTaskbar.TaskbarMode.TRANSIENT;
 
 import androidx.test.filters.LargeTest;
-import androidx.test.runner.AndroidJUnit4;
 
-import com.android.launcher3.tapl.Taskbar;
-import com.android.launcher3.ui.TaplTestsLauncher3;
 import com.android.launcher3.util.rule.ScreenRecordRule.ScreenRecord;
 
-import org.junit.After;
-import org.junit.Assume;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
-import java.util.List;
+import java.util.Arrays;
+import java.util.Collection;
 
 @LargeTest
-@RunWith(AndroidJUnit4.class)
-public class TaplTestsTaskbar extends AbstractQuickStepTest {
+@RunWith(Parameterized.class)
+public class TaplTestsTaskbar extends AbstractTaplTestsTaskbar {
 
-    private static final String TEST_APP_NAME = "LauncherTestApp";
-    private static final String TEST_APP_PACKAGE =
-            getInstrumentation().getContext().getPackageName();
-    private static final String CALCULATOR_APP_PACKAGE =
-            resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR);
+    private final TaplTestsTaskbar.TaskbarMode mTaskbarMode;
+
+    public enum TaskbarMode {
+        TRANSIENT, PERSISTENT
+    }
+
+    @Parameterized.Parameters(name = "{0}")
+    public static Collection<Object[]> data() {
+        return Arrays.asList(new Object[][]{
+                {PERSISTENT}, {TRANSIENT}
+        });
+    }
+
+    public TaplTestsTaskbar(TaskbarMode mode) {
+        mTaskbarMode = mode;
+    }
 
     @Override
     public void setUp() throws Exception {
-        Assume.assumeTrue(mLauncher.isTablet());
+        mTaskbarWasInTransientMode = isTaskbarInTransientMode(mTargetContext);
+        setTaskbarMode(mLauncher, isTaskbarTestModeTransient());
         super.setUp();
-        mLauncher.useTestWorkspaceLayoutOnReload();
-        TaplTestsLauncher3.initialize(this);
-
-        startAppFast(CALCULATOR_APP_PACKAGE);
-        mLauncher.showTaskbarIfHidden();
     }
 
-    @After
-    public void tearDown() {
-        mLauncher.useDefaultWorkspaceLayoutOnReload();
+    @Override
+    public void tearDown() throws Exception {
+        setTaskbarMode(mLauncher, mTaskbarWasInTransientMode);
+        super.tearDown();
     }
 
     @Test
-    public void testHideShowTaskbar() {
-        getTaskbar().hide();
-        mLauncher.getLaunchedAppState().showTaskbar();
-    }
-
-    @Test
-    public void testLaunchApp() throws Exception {
+    public void testLaunchApp() {
         getTaskbar().getAppIcon(TEST_APP_NAME).launch(TEST_APP_PACKAGE);
+        // We are using parameterized test runner to share code between different test cases with
+        // taskbar variants. But, sometimes we only need to assert things for particular Taskbar
+        // variants.
+        if (isTaskbarTestModeTransient()) {
+            mLauncher.getLaunchedAppState().assertTaskbarHidden();
+        }
     }
 
     @Test
-    public void testOpenMenu() throws Exception {
+    public void testOpenMenu() {
         getTaskbar().getAppIcon(TEST_APP_NAME).openMenu();
     }
 
     @Test
-    public void testLaunchShortcut() throws Exception {
+    public void testLaunchShortcut() {
         getTaskbar().getAppIcon(TEST_APP_NAME)
                 .openDeepShortcutMenu()
                 .getMenuItem("Shortcut 1")
@@ -88,15 +90,21 @@
     @Test
     @ScreenRecord // b/231615831
     @PortraitLandscape
-    public void testLaunchAppInSplitscreen() throws Exception {
+    public void testLaunchAppInSplitscreen() {
         getTaskbar().getAppIcon(TEST_APP_NAME).dragToSplitscreen(
                 TEST_APP_PACKAGE, CALCULATOR_APP_PACKAGE);
+        // We are using parameterized test runner to share code between different test cases with
+        // taskbar variants. But, sometimes we only need to assert things for particular Taskbar
+        // variants.
+        if (isTaskbarTestModeTransient()) {
+            mLauncher.getLaunchedAppState().assertTaskbarHidden();
+        }
     }
 
     @Test
     @ScreenRecord // b/231615831
     @PortraitLandscape
-    public void testLaunchShortcutInSplitscreen() throws Exception {
+    public void testLaunchShortcutInSplitscreen() {
         getTaskbar().getAppIcon(TEST_APP_NAME)
                 .openDeepShortcutMenu()
                 .getMenuItem("Shortcut 1")
@@ -104,17 +112,17 @@
     }
 
     @Test
-    public void testLaunchApp_FromTaskbarAllApps() throws Exception {
+    public void testLaunchApp_fromTaskbarAllApps() {
         getTaskbar().openAllApps().getAppIcon(TEST_APP_NAME).launch(TEST_APP_PACKAGE);
     }
 
     @Test
-    public void testOpenMenu_FromTaskbarAllApps() throws Exception {
+    public void testOpenMenu_fromTaskbarAllApps() {
         getTaskbar().openAllApps().getAppIcon(TEST_APP_NAME).openMenu();
     }
 
     @Test
-    public void testLaunchShortcut_FromTaskbarAllApps() throws Exception {
+    public void testLaunchShortcut_fromTaskbarAllApps() {
         getTaskbar().openAllApps()
                 .getAppIcon(TEST_APP_NAME)
                 .openDeepShortcutMenu()
@@ -125,7 +133,7 @@
     @Test
     @ScreenRecord // b/231615831
     @PortraitLandscape
-    public void testLaunchAppInSplitscreen_FromTaskbarAllApps() throws Exception {
+    public void testLaunchAppInSplitscreen_fromTaskbarAllApps() {
         getTaskbar().openAllApps()
                 .getAppIcon(TEST_APP_NAME)
                 .dragToSplitscreen(TEST_APP_PACKAGE, CALCULATOR_APP_PACKAGE);
@@ -134,7 +142,7 @@
     @Test
     @ScreenRecord // b/231615831
     @PortraitLandscape
-    public void testLaunchShortcutInSplitscreen_FromTaskbarAllApps() throws Exception {
+    public void testLaunchShortcutInSplitscreen_fromTaskbarAllApps() {
         getTaskbar().openAllApps()
                 .getAppIcon(TEST_APP_NAME)
                 .openDeepShortcutMenu()
@@ -142,19 +150,7 @@
                 .dragToSplitscreen(TEST_APP_PACKAGE, CALCULATOR_APP_PACKAGE);
     }
 
-    private Taskbar getTaskbar() {
-        Taskbar taskbar = mLauncher.getLaunchedAppState().getTaskbar();
-        List<String> taskbarIconNames = taskbar.getIconNames();
-        List<String> hotseatIconNames = mLauncher.getHotseatIconNames();
-
-        assertEquals("Taskbar and hotseat icon counts do not match",
-                taskbarIconNames.size(), hotseatIconNames.size());
-
-        for (int i = 0; i < taskbarIconNames.size(); i++) {
-            assertEquals("Taskbar and Hotseat icons do not match",
-                    taskbarIconNames, hotseatIconNames);
-        }
-
-        return taskbar;
+    private boolean isTaskbarTestModeTransient() {
+        return TRANSIENT == mTaskbarMode;
     }
 }
diff --git a/quickstep/tests/src/com/android/quickstep/TaplTestsTransientTaskbar.java b/quickstep/tests/src/com/android/quickstep/TaplTestsTransientTaskbar.java
new file mode 100644
index 0000000..b58fe29
--- /dev/null
+++ b/quickstep/tests/src/com/android/quickstep/TaplTestsTransientTaskbar.java
@@ -0,0 +1,67 @@
+/*
+ * 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.quickstep;
+
+import static com.android.launcher3.config.FeatureFlags.ENABLE_CURSOR_HOVER_STATES;
+import static com.android.quickstep.TaskbarModeSwitchRule.Mode.TRANSIENT;
+
+
+import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.launcher3.util.TestUtil;
+import com.android.quickstep.TaskbarModeSwitchRule.TaskbarModeSwitch;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@LargeTest
+@RunWith(AndroidJUnit4.class)
+public class TaplTestsTransientTaskbar extends AbstractTaplTestsTaskbar {
+
+    @Test
+    @TaskbarModeSwitch(mode = TRANSIENT)
+    public void testShowTaskbarUnstashHintOnHover() {
+        try (AutoCloseable flag = TestUtil.overrideFlag(ENABLE_CURSOR_HOVER_STATES, true)) {
+            getTaskbar().getAppIcon(TEST_APP_NAME).launch(TEST_APP_PACKAGE);
+            mLauncher.getLaunchedAppState().hoverToShowTaskbarUnstashHint();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Test
+    @TaskbarModeSwitch(mode = TRANSIENT)
+    public void testUnstashTaskbarOnScreenBottomEdgeHover() {
+        try (AutoCloseable flag = TestUtil.overrideFlag(ENABLE_CURSOR_HOVER_STATES, true)) {
+            getTaskbar().getAppIcon(TEST_APP_NAME).launch(TEST_APP_PACKAGE);
+            mLauncher.getLaunchedAppState().hoverScreenBottomEdgeToUnstashTaskbar();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Test
+    @TaskbarModeSwitch(mode = TRANSIENT)
+    public void testHoverBelowHintedTaskbarToUnstash() {
+        try (AutoCloseable flag = TestUtil.overrideFlag(ENABLE_CURSOR_HOVER_STATES, true)) {
+            getTaskbar().getAppIcon(TEST_APP_NAME).launch(TEST_APP_PACKAGE);
+            mLauncher.getLaunchedAppState().hoverBelowHintedTaskbarToUnstash();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+}
diff --git a/quickstep/tests/src/com/android/quickstep/TaskbarModeSwitchRule.java b/quickstep/tests/src/com/android/quickstep/TaskbarModeSwitchRule.java
new file mode 100644
index 0000000..9e41f74
--- /dev/null
+++ b/quickstep/tests/src/com/android/quickstep/TaskbarModeSwitchRule.java
@@ -0,0 +1,140 @@
+/*
+ * 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.quickstep;
+
+import static androidx.test.InstrumentationRegistry.getInstrumentation;
+
+import static com.android.quickstep.TaskbarModeSwitchRule.Mode.ALL;
+import static com.android.quickstep.TaskbarModeSwitchRule.Mode.PERSISTENT;
+import static com.android.quickstep.TaskbarModeSwitchRule.Mode.TRANSIENT;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.android.launcher3.tapl.LauncherInstrumentation;
+import com.android.launcher3.tapl.TestHelpers;
+import com.android.launcher3.ui.AbstractLauncherUiTest;
+import com.android.launcher3.util.DisplayController;
+import com.android.launcher3.util.rule.FailureWatcher;
+
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Test rule that allows executing a test multiple times with different conditions
+ * ie. with transient taskbar enabled and disabled.
+ * The test should be annotated with @TaskbarModeSwitch.
+ */
+public class TaskbarModeSwitchRule implements TestRule {
+
+    static final String TAG = "TaskbarModeSwitchRule";
+
+    public static final int WAIT_TIME_MS = 10000;
+
+    public enum Mode {
+        TRANSIENT, PERSISTENT, ALL
+    }
+
+    // Annotation for tests that need to be run with quickstep enabled and disabled.
+    @Retention(RetentionPolicy.RUNTIME)
+    @Target(ElementType.METHOD)
+    public @interface TaskbarModeSwitch {
+        Mode mode() default ALL;
+    }
+
+    private final LauncherInstrumentation mLauncher;
+
+    public TaskbarModeSwitchRule(LauncherInstrumentation launcher) {
+        mLauncher = launcher;
+    }
+
+    @Override
+    public Statement apply(Statement base, Description description) {
+        if (TestHelpers.isInLauncherProcess()
+                && description.getAnnotation(TaskbarModeSwitch.class) != null) {
+            Mode mode = description.getAnnotation(TaskbarModeSwitch.class).mode();
+            return new Statement() {
+                @Override
+                public void evaluate() throws Throwable {
+                    mLauncher.enableDebugTracing();
+                    final boolean wasTransientTaskbarMode =
+                            isTaskbarTransientMode(getInstrumentation().getTargetContext());
+                    try {
+                        if (mode == TRANSIENT || mode == ALL) {
+                            evaluateWithTransientTaskbar();
+                        }
+                        if (mode == PERSISTENT || mode == ALL) {
+                            evaluateWithPersistentTaskbar();
+                        }
+                    } catch (Throwable e) {
+                        Log.e(TAG, "Error", e);
+                        throw e;
+                    } finally {
+                        Log.d(TAG, "In Finally block");
+                        setTaskbarMode(mLauncher, wasTransientTaskbarMode, description);
+                    }
+                }
+
+                private void evaluateWithPersistentTaskbar() throws Throwable {
+                    setTaskbarMode(mLauncher, false, description);
+                    base.evaluate();
+                }
+
+                private void evaluateWithTransientTaskbar() throws Throwable {
+                    setTaskbarMode(mLauncher, true, description);
+                    base.evaluate();
+                }
+            };
+        } else {
+            return base;
+        }
+    }
+
+    private static boolean isTaskbarTransientMode(Context context) {
+        return DisplayController.isTransientTaskbar(context);
+    }
+
+    public static void setTaskbarMode(LauncherInstrumentation launcher,
+            boolean expectTransientTaskbar, Description description) throws Exception {
+        launcher.enableTransientTaskbar(expectTransientTaskbar);
+        launcher.recreateTaskbar();
+
+        Context context = getInstrumentation().getTargetContext();
+        assertTrue(launcher, "Couldn't set taskbar=" + expectTransientTaskbar,
+                isTaskbarTransientMode(context) == expectTransientTaskbar, description);
+
+        AbstractLauncherUiTest.checkDetectedLeaks(launcher);
+    }
+
+    private static void assertTrue(LauncherInstrumentation launcher, String message,
+            boolean condition, Description description) {
+        launcher.checkForAnomaly(true, true);
+        if (!condition) {
+            final AssertionError assertionError = new AssertionError(message);
+            if (description != null) {
+                FailureWatcher.onError(launcher, description, assertionError);
+            }
+            throw assertionError;
+        }
+    }
+}
diff --git a/quickstep/tests/src/com/android/quickstep/util/SplitAnimationControllerTest.kt b/quickstep/tests/src/com/android/quickstep/util/SplitAnimationControllerTest.kt
new file mode 100644
index 0000000..7e07b81
--- /dev/null
+++ b/quickstep/tests/src/com/android/quickstep/util/SplitAnimationControllerTest.kt
@@ -0,0 +1,165 @@
+/*
+ *  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.quickstep.util
+
+import android.graphics.Bitmap
+import android.graphics.drawable.Drawable
+import android.view.View
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.launcher3.util.SplitConfigurationOptions
+import com.android.quickstep.views.GroupedTaskView
+import com.android.quickstep.views.IconView
+import com.android.quickstep.views.TaskThumbnailView
+import com.android.quickstep.views.TaskView
+import com.android.quickstep.views.TaskView.TaskIdAttributeContainer
+import com.android.systemui.shared.recents.model.Task
+import org.junit.Assert.assertEquals
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mock
+import org.mockito.MockitoAnnotations
+import org.mockito.Mockito.`when` as whenever
+
+@RunWith(AndroidJUnit4::class)
+class SplitAnimationControllerTest {
+
+    private val taskId = 9
+
+    @Mock lateinit var mockSplitSelectStateController: SplitSelectStateController
+    // TaskView
+    @Mock lateinit var mockTaskView: TaskView
+    @Mock lateinit var mockThumbnailView: TaskThumbnailView
+    @Mock lateinit var mockBitmap: Bitmap
+    @Mock lateinit var mockIconView: IconView
+    @Mock lateinit var mockTaskViewDrawable: Drawable
+    // GroupedTaskView
+    @Mock lateinit var mockGroupedTaskView: GroupedTaskView
+    @Mock lateinit var mockTask: Task
+    @Mock lateinit var mockTaskKey: Task.TaskKey
+    @Mock lateinit var mockTaskIdAttributeContainer: TaskIdAttributeContainer
+
+    // SplitSelectSource
+    @Mock lateinit var splitSelectSource: SplitConfigurationOptions.SplitSelectSource
+    @Mock lateinit var mockSplitSourceDrawable: Drawable
+    @Mock lateinit var mockSplitSourceView: View
+
+    lateinit var splitAnimationController: SplitAnimationController
+
+    @Before
+    fun setup() {
+        MockitoAnnotations.initMocks(this)
+
+        whenever(mockTaskView.thumbnail).thenReturn(mockThumbnailView)
+        whenever(mockThumbnailView.thumbnail).thenReturn(mockBitmap)
+        whenever(mockTaskView.iconView).thenReturn(mockIconView)
+        whenever(mockIconView.drawable).thenReturn(mockTaskViewDrawable)
+
+        whenever(splitSelectSource.drawable).thenReturn(mockSplitSourceDrawable)
+        whenever(splitSelectSource.view).thenReturn(mockSplitSourceView)
+
+        splitAnimationController = SplitAnimationController(mockSplitSelectStateController)
+    }
+
+    @Test
+    fun getFirstAnimInitViews_nullTaskViewIcon_useSplitSourceIcon() {
+        // Hit fullscreen task dismissal state
+        whenever(mockSplitSelectStateController.isAnimateCurrentTaskDismissal).thenReturn(true)
+        whenever(mockSplitSelectStateController.isDismissingFromSplitPair).thenReturn(false)
+
+        // Missing taskView icon
+        whenever(mockIconView.drawable).thenReturn(null)
+
+        val splitAnimInitProps : SplitAnimationController.Companion.SplitAnimInitProps =
+                splitAnimationController.getFirstAnimInitViews(
+                        { mockTaskView }, { splitSelectSource })
+
+        assertEquals("Did not fallback to use splitSource icon drawable",
+                mockSplitSourceDrawable, splitAnimInitProps.iconDrawable)
+    }
+
+    @Test
+    fun getFirstAnimInitViews_validTaskViewIcon_useTaskViewIcon() {
+        // Hit fullscreen task dismissal state
+        whenever(mockSplitSelectStateController.isAnimateCurrentTaskDismissal).thenReturn(true)
+        whenever(mockSplitSelectStateController.isDismissingFromSplitPair).thenReturn(false)
+
+        val splitAnimInitProps : SplitAnimationController.Companion.SplitAnimInitProps =
+                splitAnimationController.getFirstAnimInitViews(
+                        { mockTaskView }, { splitSelectSource })
+
+        assertEquals("Did not use taskView icon drawable", mockTaskViewDrawable,
+                splitAnimInitProps.iconDrawable)
+    }
+
+    @Test
+    fun getFirstAnimInitViews_validTaskViewNullSplitSource_useTaskViewIcon() {
+        // Hit fullscreen task dismissal state
+        whenever(mockSplitSelectStateController.isAnimateCurrentTaskDismissal).thenReturn(true)
+        whenever(mockSplitSelectStateController.isDismissingFromSplitPair).thenReturn(false)
+
+        // Set split source to null
+        whenever(splitSelectSource.drawable).thenReturn(null)
+
+        val splitAnimInitProps : SplitAnimationController.Companion.SplitAnimInitProps =
+                splitAnimationController.getFirstAnimInitViews(
+                        { mockTaskView }, { splitSelectSource })
+
+        assertEquals("Did not use taskView icon drawable", mockTaskViewDrawable,
+                splitAnimInitProps.iconDrawable)
+    }
+
+    @Test
+    fun getFirstAnimInitViews_nullTaskViewValidSplitSource_noTaskDismissal() {
+        // Hit initiating split from home
+        whenever(mockSplitSelectStateController.isAnimateCurrentTaskDismissal).thenReturn(false)
+        whenever(mockSplitSelectStateController.isDismissingFromSplitPair).thenReturn(false)
+
+        val splitAnimInitProps : SplitAnimationController.Companion.SplitAnimInitProps =
+                splitAnimationController.getFirstAnimInitViews(
+                        { mockTaskView }, { splitSelectSource })
+
+        assertEquals("Did not use splitSource icon drawable", mockSplitSourceDrawable,
+                splitAnimInitProps.iconDrawable)
+    }
+
+    @Test
+    fun getFirstAnimInitViews_nullTaskViewValidSplitSource_groupedTaskView() {
+        // Hit groupedTaskView dismissal
+        whenever(mockSplitSelectStateController.isAnimateCurrentTaskDismissal).thenReturn(true)
+        whenever(mockSplitSelectStateController.isDismissingFromSplitPair).thenReturn(true)
+
+        // Remove icon view from GroupedTaskView
+        whenever(mockIconView.drawable).thenReturn(null)
+
+        whenever(mockTaskIdAttributeContainer.task).thenReturn(mockTask)
+        whenever(mockTaskIdAttributeContainer.iconView).thenReturn(mockIconView)
+        whenever(mockTaskIdAttributeContainer.thumbnailView).thenReturn(mockThumbnailView)
+        whenever(mockTask.getKey()).thenReturn(mockTaskKey)
+        whenever(mockTaskKey.getId()).thenReturn(taskId)
+        whenever(mockSplitSelectStateController.initialTaskId).thenReturn(taskId)
+        whenever(mockGroupedTaskView.taskIdAttributeContainers)
+                .thenReturn(Array(1) { mockTaskIdAttributeContainer })
+        val splitAnimInitProps : SplitAnimationController.Companion.SplitAnimInitProps =
+                splitAnimationController.getFirstAnimInitViews(
+                        { mockGroupedTaskView }, { splitSelectSource })
+
+        assertEquals("Did not use splitSource icon drawable", mockSplitSourceDrawable,
+                splitAnimInitProps.iconDrawable)
+    }
+}
\ No newline at end of file
diff --git a/quickstep/tests/src/com/android/quickstep/util/SplitSelectStateControllerTest.kt b/quickstep/tests/src/com/android/quickstep/util/SplitSelectStateControllerTest.kt
new file mode 100644
index 0000000..65542cf
--- /dev/null
+++ b/quickstep/tests/src/com/android/quickstep/util/SplitSelectStateControllerTest.kt
@@ -0,0 +1,416 @@
+/*
+ *  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.quickstep.util
+
+import android.app.ActivityManager
+import android.app.PendingIntent
+import android.content.ComponentName
+import android.content.Context
+import android.content.Intent
+import android.graphics.Rect
+import android.os.Handler
+import android.os.UserHandle
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.launcher3.LauncherState
+import com.android.launcher3.logging.StatsLogManager
+import com.android.launcher3.model.data.ItemInfo
+import com.android.launcher3.statehandlers.DepthController
+import com.android.launcher3.statemanager.StateManager
+import com.android.launcher3.util.ComponentKey
+import com.android.launcher3.util.SplitConfigurationOptions
+import com.android.launcher3.util.withArgCaptor
+import com.android.quickstep.RecentsModel
+import com.android.quickstep.SystemUiProxy
+import com.android.systemui.shared.recents.model.Task
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertFalse
+import org.junit.Assert.assertNull
+import org.junit.Assert.assertTrue
+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.Mockito.`when`
+import org.mockito.MockitoAnnotations
+import java.util.function.Consumer
+
+@RunWith(AndroidJUnit4::class)
+class SplitSelectStateControllerTest {
+
+    @Mock lateinit var systemUiProxy: SystemUiProxy
+    @Mock lateinit var depthController: DepthController
+    @Mock lateinit var statsLogManager: StatsLogManager
+    @Mock lateinit var stateManager: StateManager<LauncherState>
+    @Mock lateinit var handler: Handler
+    @Mock lateinit var context: Context
+    @Mock lateinit var recentsModel: RecentsModel
+    @Mock lateinit var pendingIntent: PendingIntent
+
+    lateinit var splitSelectStateController: SplitSelectStateController
+
+    private val primaryUserHandle = UserHandle(ActivityManager.RunningTaskInfo().userId)
+    private val nonPrimaryUserHandle = UserHandle(ActivityManager.RunningTaskInfo().userId + 10)
+
+    @Before
+    fun setup() {
+        MockitoAnnotations.initMocks(this)
+        splitSelectStateController =
+            SplitSelectStateController(
+                context,
+                handler,
+                stateManager,
+                depthController,
+                statsLogManager,
+                systemUiProxy,
+                recentsModel
+            )
+    }
+
+    @Test
+    fun activeTasks_noMatchingTasks() {
+        val nonMatchingComponent = ComponentKey(ComponentName("no", "match"), primaryUserHandle)
+        val groupTask1 =
+            generateGroupTask(
+                ComponentName("pomegranate", "juice"),
+                ComponentName("pumpkin", "pie")
+            )
+        val groupTask2 =
+            generateGroupTask(
+                ComponentName("hotdog", "juice"),
+                ComponentName("personal", "computer")
+            )
+        val tasks: ArrayList<GroupTask> = ArrayList()
+        tasks.add(groupTask1)
+        tasks.add(groupTask2)
+
+        // Assertions happen in the callback we get from what we pass into
+        // #findLastActiveTaskAndRunCallback
+        val taskConsumer =
+            Consumer<Task> { assertNull("No tasks should have matched", it /*task*/) }
+
+        // Capture callback from recentsModel#getTasks()
+        val consumer =
+            withArgCaptor<Consumer<ArrayList<GroupTask>>> {
+                splitSelectStateController.findLastActiveTaskAndRunCallback(
+                    nonMatchingComponent,
+                    taskConsumer
+                )
+                verify(recentsModel).getTasks(capture())
+            }
+
+        // Send our mocked tasks
+        consumer.accept(tasks)
+    }
+
+    @Test
+    fun activeTasks_singleMatchingTask() {
+        val matchingPackage = "hotdog"
+        val matchingClass = "juice"
+        val matchingComponent =
+            ComponentKey(ComponentName(matchingPackage, matchingClass), primaryUserHandle)
+        val groupTask1 =
+            generateGroupTask(
+                ComponentName(matchingPackage, matchingClass),
+                ComponentName("pomegranate", "juice")
+            )
+        val groupTask2 =
+            generateGroupTask(
+                ComponentName("pumpkin", "pie"),
+                ComponentName("personal", "computer")
+            )
+        val tasks: ArrayList<GroupTask> = ArrayList()
+        tasks.add(groupTask1)
+        tasks.add(groupTask2)
+
+        // Assertions happen in the callback we get from what we pass into
+        // #findLastActiveTaskAndRunCallback
+        val taskConsumer =
+            Consumer<Task> {
+                assertEquals(
+                    "ComponentName package mismatched",
+                    it.key.baseIntent.component.packageName,
+                    matchingPackage
+                )
+                assertEquals(
+                    "ComponentName class mismatched",
+                    it.key.baseIntent.component.className,
+                    matchingClass
+                )
+                assertEquals(it, groupTask1.task1)
+            }
+
+        // Capture callback from recentsModel#getTasks()
+        val consumer =
+            withArgCaptor<Consumer<ArrayList<GroupTask>>> {
+                splitSelectStateController.findLastActiveTaskAndRunCallback(
+                    matchingComponent,
+                    taskConsumer
+                )
+                verify(recentsModel).getTasks(capture())
+            }
+
+        // Send our mocked tasks
+        consumer.accept(tasks)
+    }
+
+    @Test
+    fun activeTasks_skipTaskWithDifferentUser() {
+        val matchingPackage = "hotdog"
+        val matchingClass = "juice"
+        val nonPrimaryUserComponent =
+            ComponentKey(ComponentName(matchingPackage, matchingClass), nonPrimaryUserHandle)
+        val groupTask1 =
+            generateGroupTask(
+                ComponentName(matchingPackage, matchingClass),
+                ComponentName("pomegranate", "juice")
+            )
+        val groupTask2 =
+            generateGroupTask(
+                ComponentName("pumpkin", "pie"),
+                ComponentName("personal", "computer")
+            )
+        val tasks: ArrayList<GroupTask> = ArrayList()
+        tasks.add(groupTask1)
+        tasks.add(groupTask2)
+
+        // Assertions happen in the callback we get from what we pass into
+        // #findLastActiveTaskAndRunCallback
+        val taskConsumer =
+            Consumer<Task> { assertNull("No tasks should have matched", it /*task*/) }
+
+        // Capture callback from recentsModel#getTasks()
+        val consumer =
+            withArgCaptor<Consumer<ArrayList<GroupTask>>> {
+                splitSelectStateController.findLastActiveTaskAndRunCallback(
+                    nonPrimaryUserComponent,
+                    taskConsumer
+                )
+                verify(recentsModel).getTasks(capture())
+            }
+
+        // Send our mocked tasks
+        consumer.accept(tasks)
+    }
+
+    @Test
+    fun activeTasks_findTaskAsNonPrimaryUser() {
+        val matchingPackage = "hotdog"
+        val matchingClass = "juice"
+        val nonPrimaryUserComponent =
+            ComponentKey(ComponentName(matchingPackage, matchingClass), nonPrimaryUserHandle)
+        val groupTask1 =
+            generateGroupTask(
+                ComponentName(matchingPackage, matchingClass),
+                nonPrimaryUserHandle,
+                ComponentName("pomegranate", "juice"),
+                nonPrimaryUserHandle
+            )
+        val groupTask2 =
+            generateGroupTask(
+                ComponentName("pumpkin", "pie"),
+                ComponentName("personal", "computer")
+            )
+        val tasks: ArrayList<GroupTask> = ArrayList()
+        tasks.add(groupTask1)
+        tasks.add(groupTask2)
+
+        // Assertions happen in the callback we get from what we pass into
+        // #findLastActiveTaskAndRunCallback
+        val taskConsumer =
+            Consumer<Task> {
+                assertEquals(
+                    "ComponentName package mismatched",
+                    it.key.baseIntent.component.packageName,
+                    matchingPackage
+                )
+                assertEquals(
+                    "ComponentName class mismatched",
+                    it.key.baseIntent.component.className,
+                    matchingClass
+                )
+                assertEquals("userId mismatched", it.key.userId, nonPrimaryUserHandle.identifier)
+                assertEquals(it, groupTask1.task1)
+            }
+
+        // Capture callback from recentsModel#getTasks()
+        val consumer =
+            withArgCaptor<Consumer<ArrayList<GroupTask>>> {
+                splitSelectStateController.findLastActiveTaskAndRunCallback(
+                    nonPrimaryUserComponent,
+                    taskConsumer
+                )
+                verify(recentsModel).getTasks(capture())
+            }
+
+        // Send our mocked tasks
+        consumer.accept(tasks)
+    }
+
+    @Test
+    fun activeTasks_multipleMatchMostRecentTask() {
+        val matchingPackage = "hotdog"
+        val matchingClass = "juice"
+        val matchingComponent =
+            ComponentKey(ComponentName(matchingPackage, matchingClass), primaryUserHandle)
+        val groupTask1 =
+            generateGroupTask(
+                ComponentName(matchingPackage, matchingClass),
+                ComponentName("pumpkin", "pie")
+            )
+        val groupTask2 =
+            generateGroupTask(
+                ComponentName("pomegranate", "juice"),
+                ComponentName(matchingPackage, matchingClass)
+            )
+        val tasks: ArrayList<GroupTask> = ArrayList()
+        tasks.add(groupTask2)
+        tasks.add(groupTask1)
+
+        // Assertions happen in the callback we get from what we pass into
+        // #findLastActiveTaskAndRunCallback
+        val taskConsumer =
+            Consumer<Task> {
+                assertEquals(
+                    "ComponentName package mismatched",
+                    it.key.baseIntent.component.packageName,
+                    matchingPackage
+                )
+                assertEquals(
+                    "ComponentName class mismatched",
+                    it.key.baseIntent.component.className,
+                    matchingClass
+                )
+                assertEquals(it, groupTask2.task2)
+            }
+
+        // Capture callback from recentsModel#getTasks()
+        val consumer =
+            withArgCaptor<Consumer<ArrayList<GroupTask>>> {
+                splitSelectStateController.findLastActiveTaskAndRunCallback(
+                    matchingComponent,
+                    taskConsumer
+                )
+                verify(recentsModel).getTasks(capture())
+            }
+
+        // Send our mocked tasks
+        consumer.accept(tasks)
+    }
+
+    @Test
+    fun setInitialApp_withTaskId() {
+        splitSelectStateController.setInitialTaskSelect(
+            null /*intent*/,
+            -1 /*stagePosition*/,
+            ItemInfo(),
+            null /*splitEvent*/,
+            10 /*alreadyRunningTask*/
+        )
+        assertTrue(splitSelectStateController.isSplitSelectActive)
+    }
+
+    @Test
+    fun setInitialApp_withIntent() {
+        splitSelectStateController.setInitialTaskSelect(
+            Intent() /*intent*/,
+            -1 /*stagePosition*/,
+            ItemInfo(),
+            null /*splitEvent*/,
+            -1 /*alreadyRunningTask*/
+        )
+        assertTrue(splitSelectStateController.isSplitSelectActive)
+    }
+
+    @Test
+    fun resetAfterInitial() {
+        splitSelectStateController.setInitialTaskSelect(
+            Intent() /*intent*/,
+            -1 /*stagePosition*/,
+            ItemInfo(),
+            null /*splitEvent*/,
+            -1
+        )
+        splitSelectStateController.resetState()
+        assertFalse(splitSelectStateController.isSplitSelectActive)
+    }
+
+    @Test
+    fun secondPendingIntentSet() {
+        val itemInfo = ItemInfo()
+        `when`(pendingIntent.creatorUserHandle).thenReturn(primaryUserHandle)
+        splitSelectStateController.setInitialTaskSelect(null, 0, itemInfo, null, 1)
+        splitSelectStateController.setSecondTask(pendingIntent)
+        assertTrue(splitSelectStateController.isBothSplitAppsConfirmed)
+    }
+
+    // Generate GroupTask with default userId.
+    private fun generateGroupTask(
+        task1ComponentName: ComponentName,
+        task2ComponentName: ComponentName
+    ): GroupTask {
+        val task1 = Task()
+        var taskInfo = ActivityManager.RunningTaskInfo()
+        var intent = Intent()
+        intent.component = task1ComponentName
+        taskInfo.baseIntent = intent
+        task1.key = Task.TaskKey(taskInfo)
+
+        val task2 = Task()
+        taskInfo = ActivityManager.RunningTaskInfo()
+        intent = Intent()
+        intent.component = task2ComponentName
+        taskInfo.baseIntent = intent
+        task2.key = Task.TaskKey(taskInfo)
+        return GroupTask(
+            task1,
+            task2,
+            SplitConfigurationOptions.SplitBounds(Rect(), Rect(), -1, -1)
+        )
+    }
+
+    // Generate GroupTask with custom user handles.
+    private fun generateGroupTask(
+        task1ComponentName: ComponentName,
+        userHandle1: UserHandle,
+        task2ComponentName: ComponentName,
+        userHandle2: UserHandle
+    ): GroupTask {
+        val task1 = Task()
+        var taskInfo = ActivityManager.RunningTaskInfo()
+        // Apply custom userHandle1
+        taskInfo.userId = userHandle1.identifier
+        var intent = Intent()
+        intent.component = task1ComponentName
+        taskInfo.baseIntent = intent
+        task1.key = Task.TaskKey(taskInfo)
+        val task2 = Task()
+        taskInfo = ActivityManager.RunningTaskInfo()
+        // Apply custom userHandle2
+        taskInfo.userId = userHandle2.identifier
+        intent = Intent()
+        intent.component = task2ComponentName
+        taskInfo.baseIntent = intent
+        task2.key = Task.TaskKey(taskInfo)
+        return GroupTask(
+            task1,
+            task2,
+            SplitConfigurationOptions.SplitBounds(Rect(), Rect(), -1, -1)
+        )
+    }
+}
diff --git a/quickstep/tests/src/com/android/quickstep/util/TaskViewSimulatorTest.java b/quickstep/tests/src/com/android/quickstep/util/TaskViewSimulatorTest.java
index 7d414f4..83602be 100644
--- a/quickstep/tests/src/com/android/quickstep/util/TaskViewSimulatorTest.java
+++ b/quickstep/tests/src/com/android/quickstep/util/TaskViewSimulatorTest.java
@@ -23,10 +23,8 @@
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.util.ArrayMap;
-import android.util.Pair;
-import android.view.Display;
+import android.view.RemoteAnimationTarget;
 import android.view.Surface;
-import android.view.SurfaceControl;
 
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
@@ -36,6 +34,7 @@
 import com.android.launcher3.util.DisplayController;
 import com.android.launcher3.util.DisplayController.Info;
 import com.android.launcher3.util.LauncherModelHelper;
+import com.android.launcher3.util.NavigationMode;
 import com.android.launcher3.util.ReflectionHelpers;
 import com.android.launcher3.util.RotationUtils;
 import com.android.launcher3.util.WindowBounds;
@@ -43,8 +42,7 @@
 import com.android.launcher3.util.window.WindowManagerProxy;
 import com.android.quickstep.FallbackActivityInterface;
 import com.android.quickstep.SystemUiProxy;
-import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
-import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat.SurfaceParams;
+import com.android.quickstep.util.SurfaceTransaction.MockProperties;
 
 import org.hamcrest.Description;
 import org.hamcrest.TypeSafeMatcher;
@@ -148,7 +146,7 @@
                 int rotation = mDisplaySize.x > mDisplaySize.y
                         ? Surface.ROTATION_90 : Surface.ROTATION_0;
                 CachedDisplayInfo cdi =
-                        new CachedDisplayInfo("test-display", mDisplaySize, rotation , new Rect());
+                        new CachedDisplayInfo(mDisplaySize, rotation, new Rect());
                 WindowBounds wm = new WindowBounds(
                         new Rect(0, 0, mDisplaySize.x, mDisplaySize.y),
                         mDisplayInsets);
@@ -164,15 +162,16 @@
                 }
 
                 WindowManagerProxy wmProxy = mock(WindowManagerProxy.class);
-                doReturn(cdi).when(wmProxy).getDisplayInfo(any(), any());
-                doReturn(wm).when(wmProxy).getRealBounds(any(), any(), any());
+                doReturn(cdi).when(wmProxy).getDisplayInfo(any());
+                doReturn(wm).when(wmProxy).getRealBounds(any(), any());
+                doReturn(NavigationMode.NO_BUTTON).when(wmProxy).getNavigationMode(any());
 
-                ArrayMap<String, Pair<CachedDisplayInfo, WindowBounds[]>> perDisplayBoundsCache =
+                ArrayMap<CachedDisplayInfo, WindowBounds[]> perDisplayBoundsCache =
                         new ArrayMap<>();
-                perDisplayBoundsCache.put(cdi.id, Pair.create(cdi.normalize(), allBounds));
+                perDisplayBoundsCache.put(cdi.normalize(), allBounds);
 
                 DisplayController.Info mockInfo = new Info(
-                        helper.sandboxContext, mock(Display.class), wmProxy, perDisplayBoundsCache);
+                        helper.sandboxContext, wmProxy, perDisplayBoundsCache);
 
                 DisplayController controller =
                         DisplayController.INSTANCE.get(helper.sandboxContext);
@@ -207,17 +206,21 @@
         }
 
         @Override
-        public SurfaceParams[] createSurfaceParams(BuilderProxy proxy) {
-            SurfaceParams.Builder builder = new SurfaceParams.Builder((SurfaceControl) null);
-            proxy.onBuildTargetParams(builder, mock(RemoteAnimationTargetCompat.class), this);
-            return new SurfaceParams[] {builder.build()};
+        public SurfaceTransaction createSurfaceParams(BuilderProxy proxy) {
+            RecordingSurfaceTransaction transaction = new RecordingSurfaceTransaction();
+            proxy.onBuildTargetParams(
+                    transaction.mockProperties, mock(RemoteAnimationTarget.class), this);
+            return transaction;
         }
 
         @Override
-        public void applySurfaceParams(SurfaceParams[] params) {
+        public void applySurfaceParams(SurfaceTransaction params) {
+            Assert.assertTrue(params instanceof RecordingSurfaceTransaction);
+            MockProperties p = ((RecordingSurfaceTransaction) params).mockProperties;
+
             // Verify that the task position remains the same
             RectF newAppBounds = new RectF(mAppBounds);
-            params[0].matrix.mapRect(newAppBounds);
+            p.matrix.mapRect(newAppBounds);
             Assert.assertThat(newAppBounds, new AlmostSame(mAppBounds));
 
             System.err.println("Bounds mapped: " + mAppBounds + " => " + newAppBounds);
diff --git a/quickstep/tests/src/com/android/quickstep/util/unfold/PreemptiveUnfoldTransitionProgressProviderTest.kt b/quickstep/tests/src/com/android/quickstep/util/unfold/PreemptiveUnfoldTransitionProgressProviderTest.kt
new file mode 100644
index 0000000..f73be72
--- /dev/null
+++ b/quickstep/tests/src/com/android/quickstep/util/unfold/PreemptiveUnfoldTransitionProgressProviderTest.kt
@@ -0,0 +1,261 @@
+/*
+ * 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.quickstep.util.unfold
+
+import android.os.Handler
+import android.testing.AndroidTestingRunner
+import android.testing.TestableLooper
+import android.testing.TestableLooper.RunWithLooper
+import android.util.Log
+import androidx.test.filters.SmallTest
+import com.android.launcher3.util.any
+import com.android.launcher3.util.mock
+import com.android.systemui.unfold.UnfoldTransitionProgressProvider
+import com.android.systemui.unfold.UnfoldTransitionProgressProvider.TransitionProgressListener
+import org.junit.After
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mockito.anyBoolean
+import org.mockito.Mockito.anyFloat
+import org.mockito.Mockito.inOrder
+import org.mockito.Mockito.never
+import org.mockito.Mockito.verify
+
+@SmallTest
+@RunWith(AndroidTestingRunner::class)
+@RunWithLooper
+class PreemptiveUnfoldTransitionProgressProviderTest {
+
+    private lateinit var testableLooper: TestableLooper
+    private lateinit var source: TransitionProgressListener
+    private lateinit var handler: Handler
+    private lateinit var oldWtfHandler: Log.TerribleFailureHandler
+    private val listener: TransitionProgressListener = mock()
+    private val testWtfHandler: Log.TerribleFailureHandler = mock()
+
+    private lateinit var provider: PreemptiveUnfoldTransitionProgressProvider
+
+    @Before
+    fun before() {
+        testableLooper = TestableLooper.get(this)
+        handler = Handler(testableLooper.looper)
+
+        val testSource = createSource()
+        source = testSource as TransitionProgressListener
+
+        oldWtfHandler = Log.setWtfHandler(testWtfHandler)
+
+        provider = PreemptiveUnfoldTransitionProgressProvider(testSource, handler)
+        provider.init()
+        provider.addCallback(listener)
+    }
+
+    @After
+    fun after() {
+        Log.setWtfHandler(oldWtfHandler)
+    }
+
+    @Test
+    fun preemptiveStartInitialProgressNull_transitionStarts() {
+        provider.preemptivelyStartTransition(initialProgress = null)
+
+        verify(listener).onTransitionStarted()
+        verify(listener, never()).onTransitionProgress(anyFloat())
+    }
+
+    @Test
+    fun preemptiveStartWithInitialProgress_startsAnimationAndSendsProgress() {
+        provider.preemptivelyStartTransition(initialProgress = 0.5f)
+
+        verify(listener).onTransitionStarted()
+        verify(listener).onTransitionProgress(0.5f)
+    }
+
+    @Test
+    fun preemptiveStartAndCancel_finishesAnimation() {
+        provider.preemptivelyStartTransition()
+        provider.cancelPreemptiveStart()
+
+        with(inOrder(listener)) {
+            verify(listener).onTransitionStarted()
+            verify(listener).onTransitionFinished()
+        }
+    }
+
+    @Test
+    fun preemptiveStartAndThenSourceStartsTransition_transitionStarts() {
+        provider.preemptivelyStartTransition()
+        source.onTransitionStarted()
+
+        verify(listener).onTransitionStarted()
+    }
+
+    @Test
+    fun preemptiveStartAndThenSourceStartsAndFinishesTransition_transitionFinishes() {
+        provider.preemptivelyStartTransition()
+
+        source.onTransitionStarted()
+        source.onTransitionFinished()
+
+        with(inOrder(listener)) {
+            verify(listener).onTransitionStarted()
+            verify(listener).onTransitionFinished()
+        }
+    }
+
+    @Test
+    fun preemptiveStartAndThenSourceStartsAnimationAndSendsProgress_sendsProgress() {
+        provider.preemptivelyStartTransition()
+
+        source.onTransitionStarted()
+        source.onTransitionProgress(0.4f)
+
+        verify(listener).onTransitionProgress(0.4f)
+    }
+
+    @Test
+    fun preemptiveStartAndThenSourceSendsProgress_sendsProgress() {
+        provider.preemptivelyStartTransition()
+
+        source.onTransitionProgress(0.4f)
+
+        verify(listener).onTransitionProgress(0.4f)
+    }
+
+    @Test
+    fun preemptiveStartAfterTransitionRunning_transitionStarted() {
+        source.onTransitionStarted()
+
+        provider.preemptivelyStartTransition()
+
+        verify(listener).onTransitionStarted()
+    }
+
+    @Test
+    fun preemptiveStartAfterTransitionRunningAndThenFinished_transitionFinishes() {
+        source.onTransitionStarted()
+
+        provider.preemptivelyStartTransition()
+        source.onTransitionFinished()
+
+        with(inOrder(listener)) {
+            verify(listener).onTransitionStarted()
+            verify(listener).onTransitionFinished()
+        }
+    }
+
+    @Test
+    fun preemptiveStart_transitionDoesNotFinishAfterTimeout_finishesTransition() {
+        provider.preemptivelyStartTransition()
+
+        testableLooper.moveTimeForward(PREEMPTIVE_UNFOLD_TIMEOUT_MS + 1)
+        testableLooper.processAllMessages()
+
+        with(inOrder(listener)) {
+            verify(listener).onTransitionStarted()
+            verify(listener).onTransitionFinished()
+        }
+    }
+
+    @Test
+    fun preemptiveStart_transitionFinishAfterTimeout_logsWtf() {
+        provider.preemptivelyStartTransition()
+
+        testableLooper.moveTimeForward(PREEMPTIVE_UNFOLD_TIMEOUT_MS + 1)
+        testableLooper.processAllMessages()
+
+        verify(testWtfHandler).onTerribleFailure(any(), any(), anyBoolean())
+    }
+
+    @Test
+    fun preemptiveStart_transitionDoesNotFinishBeforeTimeout_doesNotFinishTransition() {
+        provider.preemptivelyStartTransition()
+
+        testableLooper.moveTimeForward(PREEMPTIVE_UNFOLD_TIMEOUT_MS - 1)
+        testableLooper.processAllMessages()
+
+        verify(listener).onTransitionStarted()
+    }
+
+    @Test
+    fun preemptiveStart_transitionStarted_timeoutHappened_doesNotFinishTransition() {
+        provider.preemptivelyStartTransition()
+
+        source.onTransitionStarted()
+        testableLooper.moveTimeForward(PREEMPTIVE_UNFOLD_TIMEOUT_MS + 1)
+        testableLooper.processAllMessages()
+
+        verify(listener).onTransitionStarted()
+    }
+
+    @Test
+    fun noPreemptiveStart_transitionStarted_startsTransition() {
+        source.onTransitionStarted()
+
+        verify(listener).onTransitionStarted()
+    }
+
+    @Test
+    fun noPreemptiveStart_transitionProgress_sendsProgress() {
+        source.onTransitionStarted()
+
+        source.onTransitionProgress(0.5f)
+
+        verify(listener).onTransitionProgress(0.5f)
+    }
+
+    @Test
+    fun noPreemptiveStart_transitionFinishes_finishesTransition() {
+        source.onTransitionStarted()
+        source.onTransitionProgress(0.5f)
+
+        source.onTransitionFinished()
+
+        with(inOrder(listener)) {
+            verify(listener).onTransitionStarted()
+            verify(listener).onTransitionFinished()
+        }
+    }
+
+    private fun createSource(): UnfoldTransitionProgressProvider =
+        object : TransitionProgressListener, UnfoldTransitionProgressProvider {
+
+            private val listeners = arrayListOf<TransitionProgressListener>()
+
+            override fun addCallback(listener: TransitionProgressListener) {
+                listeners += listener
+            }
+
+            override fun removeCallback(listener: TransitionProgressListener) {
+                listeners -= listener
+            }
+
+            override fun destroy() {}
+
+            override fun onTransitionStarted() =
+                listeners.forEach(TransitionProgressListener::onTransitionStarted)
+
+            override fun onTransitionFinishing() =
+                listeners.forEach(TransitionProgressListener::onTransitionFinishing)
+
+            override fun onTransitionFinished() =
+                listeners.forEach(TransitionProgressListener::onTransitionFinished)
+
+            override fun onTransitionProgress(progress: Float) =
+                listeners.forEach { it.onTransitionProgress(progress) }
+        }
+}
diff --git a/res/drawable/ic_setup_shadow.xml b/res/color-night-v31/all_apps_button_color.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to res/color-night-v31/all_apps_button_color.xml
index 10aeee6..a1d1b67 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/res/color-night-v31/all_apps_button_color.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,6 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+  <item android:color="@android:color/system_neutral2_500" android:lStar="80" />
+</selector>
diff --git a/res/color-night-v31/all_apps_tab_background_selected.xml b/res/color-night-v31/all_apps_tab_background_selected.xml
index b7c9ff6..b35a4b7 100644
--- a/res/color-night-v31/all_apps_tab_background_selected.xml
+++ b/res/color-night-v31/all_apps_tab_background_selected.xml
@@ -14,5 +14,5 @@
      limitations under the License.
 -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:color="@android:color/system_accent2_100"/>
+    <item android:color="@android:color/system_accent1_200"/>
 </selector>
\ No newline at end of file
diff --git a/res/color-night-v31/all_apps_tab_text.xml b/res/color-night-v31/all_apps_tab_text.xml
index 83237b4..ae46169 100644
--- a/res/color-night-v31/all_apps_tab_text.xml
+++ b/res/color-night-v31/all_apps_tab_text.xml
@@ -14,6 +14,6 @@
      limitations under the License.
 -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:color="@android:color/system_neutral1_50" android:state_selected="true"/>
-    <item android:color="@android:color/system_neutral2_700"/>
+    <item android:color="@android:color/system_accent1_800" android:state_selected="true"/>
+    <item android:color="@android:color/system_neutral1_100"/>
 </selector>
\ No newline at end of file
diff --git a/res/drawable/ic_setup_shadow.xml b/res/color-night-v31/all_apps_tabs_background.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to res/color-night-v31/all_apps_tabs_background.xml
index 10aeee6..671500f 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/res/color-night-v31/all_apps_tabs_background.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,8 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:color="@android:color/system_neutral1_800"
+        android:lStar="22"/>
+</selector>
\ No newline at end of file
diff --git a/res/color-night-v31/folder_background_dark.xml b/res/color-night-v31/folder_background_dark.xml
index 696e8ea..f415210 100644
--- a/res/color-night-v31/folder_background_dark.xml
+++ b/res/color-night-v31/folder_background_dark.xml
@@ -15,6 +15,6 @@
 -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android" >
     <item
-        android:color="@android:color/system_neutral2_500"
-        android:lStar="35" />
+        android:color="@android:color/system_neutral2_900"
+        android:lStar="12" />
 </selector>
diff --git a/res/color-night-v31/folder_preview_dark.xml b/res/color-night-v31/folder_preview_dark.xml
index bdd48a2..644d61a 100644
--- a/res/color-night-v31/folder_preview_dark.xml
+++ b/res/color-night-v31/folder_preview_dark.xml
@@ -15,6 +15,6 @@
 -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android" >
     <item
-        android:color="@android:color/system_neutral2_500"
-        android:lStar="30" />
+        android:color="@android:color/system_neutral1_900"
+        android:lStar="17" />
 </selector>
diff --git a/res/drawable/ic_setup_shadow.xml b/res/color-night-v31/popup_color_background.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to res/color-night-v31/popup_color_background.xml
index 10aeee6..13ceaa0 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/res/color-night-v31/popup_color_background.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,8 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item
+        android:color="@android:color/system_neutral1_900"
+        android:lStar="12" />
+</selector>
diff --git a/res/color-night-v31/popup_shade_first.xml b/res/color-night-v31/popup_shade_first.xml
index ba74128..83822a6 100644
--- a/res/color-night-v31/popup_shade_first.xml
+++ b/res/color-night-v31/popup_shade_first.xml
@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2021 The Android Open Source Project
+<?xml version="1.0" encoding="utf-8"?><!-- 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.
@@ -13,8 +12,7 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android" >
-    <item
-        android:color="?attr/popupColorPrimary"
-        android:lStar="20" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+    <item android:color="?androidprv:attr/materialColorSurfaceContainer"/>
 </selector>
diff --git a/res/drawable/ic_setup_shadow.xml b/res/color-night-v31/taskbar_background.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to res/color-night-v31/taskbar_background.xml
index 10aeee6..074db20 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/res/color-night-v31/taskbar_background.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,6 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+  <item android:color="@android:color/system_neutral1_500" android:lStar="6" />
+</selector>
diff --git a/res/drawable/ic_setup_shadow.xml b/res/color-night-v31/taskbar_divider_background.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to res/color-night-v31/taskbar_divider_background.xml
index 10aeee6..5dabf577 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/res/color-night-v31/taskbar_divider_background.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,6 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+  <item android:color="@android:color/system_neutral1_500" android:lStar="60" />
+</selector>
diff --git a/res/drawable/ic_setup_shadow.xml b/res/color-night-v31/widget_picker_primary_surface_color_dark.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to res/color-night-v31/widget_picker_primary_surface_color_dark.xml
index 10aeee6..13ceaa0 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/res/color-night-v31/widget_picker_primary_surface_color_dark.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,8 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item
+        android:color="@android:color/system_neutral1_900"
+        android:lStar="12" />
+</selector>
diff --git a/res/drawable/ic_setup_shadow.xml b/res/color-night-v31/widget_picker_secondary_surface_color_dark.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to res/color-night-v31/widget_picker_secondary_surface_color_dark.xml
index 10aeee6..89e9f81 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/res/color-night-v31/widget_picker_secondary_surface_color_dark.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,8 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item
+        android:color="@android:color/system_neutral1_800"
+        android:lStar="24" />
+</selector>
diff --git a/res/drawable/ic_setup_shadow.xml b/res/color-night-v31/widget_picker_tab_background_unselected_dark.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to res/color-night-v31/widget_picker_tab_background_unselected_dark.xml
index 10aeee6..ddd7b0a 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/res/color-night-v31/widget_picker_tab_background_unselected_dark.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,8 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item
+        android:color="@android:color/system_neutral1_800"
+        android:lStar="22" />
+</selector>
diff --git a/res/color-night-v31/widgets_picker_scrim.xml b/res/color-night-v31/widgets_picker_scrim.xml
deleted file mode 100644
index be7010b..0000000
--- a/res/color-night-v31/widgets_picker_scrim.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 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.
-*/
--->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-  <item android:color="@android:color/system_neutral1_900" android:alpha="0.8" />
-</selector>
diff --git a/res/color-night/all_apps_tab_background_selected.xml b/res/color-night/all_apps_tab_background_selected.xml
index b22bc8b..d1bc5f7 100644
--- a/res/color-night/all_apps_tab_background_selected.xml
+++ b/res/color-night/all_apps_tab_background_selected.xml
@@ -14,5 +14,5 @@
      limitations under the License.
 -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:color="#BFEBE3"/>
+    <item android:color="#A8C7FA"/>
 </selector>
\ No newline at end of file
diff --git a/res/color-night/all_apps_tab_text.xml b/res/color-night/all_apps_tab_text.xml
index 183af01..6a591b0 100644
--- a/res/color-night/all_apps_tab_text.xml
+++ b/res/color-night/all_apps_tab_text.xml
@@ -14,6 +14,6 @@
      limitations under the License.
 -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:color="#F0F0F0" android:state_selected="true"/>
-    <item android:color="#464646"/>
+    <item android:color="#062E6F" android:state_selected="true"/>
+    <item android:color="#E3E3E3"/>
 </selector>
\ No newline at end of file
diff --git a/res/drawable/ic_setup_shadow.xml b/res/color-night/all_apps_tabs_background.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to res/color-night/all_apps_tabs_background.xml
index 10aeee6..3f7d535 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/res/color-night/all_apps_tabs_background.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,6 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="#343535"/>
+</selector>
\ No newline at end of file
diff --git a/res/drawable/ic_setup_shadow.xml b/res/color-v31/all_apps_button_color.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to res/color-v31/all_apps_button_color.xml
index 10aeee6..a4603f9 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/res/color-v31/all_apps_button_color.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,6 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+  <item android:color="@android:color/system_neutral2_500" android:lStar="30" />
+</selector>
diff --git a/res/color-v31/all_apps_tab_background_selected.xml b/res/color-v31/all_apps_tab_background_selected.xml
index dac8fa2..4160ac8 100644
--- a/res/color-v31/all_apps_tab_background_selected.xml
+++ b/res/color-v31/all_apps_tab_background_selected.xml
@@ -14,5 +14,5 @@
      limitations under the License.
 -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:color="@android:color/system_accent1_100"/>
+    <item android:color="@android:color/system_accent1_600"/>
 </selector>
\ No newline at end of file
diff --git a/res/color-v31/all_apps_tab_text.xml b/res/color-v31/all_apps_tab_text.xml
index c3520a7..d254ee1 100644
--- a/res/color-v31/all_apps_tab_text.xml
+++ b/res/color-v31/all_apps_tab_text.xml
@@ -14,6 +14,6 @@
      limitations under the License.
 -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:color="@android:color/system_neutral1_900" android:state_selected="true"/>
-    <item android:color="@android:color/system_neutral2_700"/>
+    <item android:color="@android:color/system_accent1_200" android:state_selected="true"/>
+    <item android:color="@android:color/system_neutral1_900"/>
 </selector>
\ No newline at end of file
diff --git a/res/color-v31/all_apps_tabs_background.xml b/res/color-v31/all_apps_tabs_background.xml
index 30757b0..6c777cd 100644
--- a/res/color-v31/all_apps_tabs_background.xml
+++ b/res/color-v31/all_apps_tabs_background.xml
@@ -14,5 +14,5 @@
      limitations under the License.
 -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:color="@android:color/system_neutral1_500" android:lStar="97" />
+    <item android:color="@android:color/system_neutral1_100"/>
 </selector>
\ No newline at end of file
diff --git a/res/color-v31/folder_background_light.xml b/res/color-v31/folder_background_light.xml
index eb2fdd7..4dd088b 100644
--- a/res/color-v31/folder_background_light.xml
+++ b/res/color-v31/folder_background_light.xml
@@ -15,6 +15,6 @@
 -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android" >
     <item
-        android:color="@android:color/system_neutral1_500"
-        android:lStar="98" />
+        android:color="@android:color/system_neutral1_50"
+        android:lStar="94" />
 </selector>
diff --git a/res/color-v31/folder_preview_light.xml b/res/color-v31/folder_preview_light.xml
index ed1205e..6727b24 100644
--- a/res/color-v31/folder_preview_light.xml
+++ b/res/color-v31/folder_preview_light.xml
@@ -14,7 +14,5 @@
      limitations under the License.
 -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android" >
-    <item
-        android:color="@android:color/system_accent2_500"
-        android:lStar="80" />
+    <item android:color="@android:color/system_accent2_200"/>
 </selector>
diff --git a/res/drawable/ic_setup_shadow.xml b/res/color-v31/popup_color_background.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to res/color-v31/popup_color_background.xml
index 10aeee6..99155d8 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/res/color-v31/popup_color_background.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,8 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item
+        android:color="@android:color/system_neutral1_50"
+        android:lStar="94" />
+</selector>
diff --git a/res/color-v31/popup_shade_first.xml b/res/color-v31/popup_shade_first.xml
index 28d9155..1278bb4 100644
--- a/res/color-v31/popup_shade_first.xml
+++ b/res/color-v31/popup_shade_first.xml
@@ -13,8 +13,7 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android" >
-    <item
-        android:color="?attr/popupColorPrimary"
-        android:lStar="98" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+    <item android:color="?androidprv:attr/materialColorSurfaceContainer"/>
 </selector>
diff --git a/res/color-v31/taskbar_background.xml b/res/color-v31/taskbar_background.xml
index eaf676f..5c53e4a 100644
--- a/res/color-v31/taskbar_background.xml
+++ b/res/color-v31/taskbar_background.xml
@@ -14,5 +14,5 @@
      limitations under the License.
 -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-  <item android:color="@android:color/system_neutral1_500" android:lStar="15" />
+  <item android:color="@android:color/system_neutral1_500" android:lStar="98" />
 </selector>
diff --git a/res/drawable/ic_setup_shadow.xml b/res/color-v31/taskbar_divider_background.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to res/color-v31/taskbar_divider_background.xml
index 10aeee6..60417a8 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/res/color-v31/taskbar_divider_background.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,6 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+  <item android:color="@android:color/system_neutral2_500" android:lStar="50" />
+</selector>
diff --git a/res/drawable/ic_setup_shadow.xml b/res/color-v31/taskbar_edu_button_color.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to res/color-v31/taskbar_edu_button_color.xml
index 10aeee6..f53e53a 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/res/color-v31/taskbar_edu_button_color.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,6 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+  <item android:color="@android:color/system_accent1_100"/>
+</selector>
diff --git a/res/drawable/ic_setup_shadow.xml b/res/color-v31/widget_picker_primary_surface_color_light.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to res/color-v31/widget_picker_primary_surface_color_light.xml
index 10aeee6..02dffdd 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/res/color-v31/widget_picker_primary_surface_color_light.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,8 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item
+        android:color="@android:color/system_accent2_50"
+        android:lStar="94" />
+</selector>
diff --git a/res/drawable/ic_setup_shadow.xml b/res/color-v31/widget_picker_secondary_surface_color_light.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to res/color-v31/widget_picker_secondary_surface_color_light.xml
index 10aeee6..cd05268 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/res/color-v31/widget_picker_secondary_surface_color_light.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,8 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item
+        android:color="@android:color/system_neutral1_0"
+        android:lStar="98" />
+</selector>
diff --git a/res/drawable/ic_setup_shadow.xml b/res/color-v33/overview_scrim.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to res/color-v33/overview_scrim.xml
index 10aeee6..b9cda98 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/res/color-v33/overview_scrim.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,8 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:color="@android:color/system_neutral2_500"
+        android:lStar="80"/>
+</selector>
diff --git a/res/drawable/ic_setup_shadow.xml b/res/color-v33/overview_scrim_dark.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to res/color-v33/overview_scrim_dark.xml
index 10aeee6..84d22e6 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/res/color-v33/overview_scrim_dark.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,8 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:color="@android:color/system_neutral2_500"
+        android:lStar="35"/>
+</selector>
diff --git a/res/color/all_apps_tab_background_selected.xml b/res/color/all_apps_tab_background_selected.xml
index 5cb9bd8..0fc821f 100644
--- a/res/color/all_apps_tab_background_selected.xml
+++ b/res/color/all_apps_tab_background_selected.xml
@@ -14,5 +14,5 @@
      limitations under the License.
 -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:color="#8DF5E3"/>
+    <item android:color="#0B57D0"/>
 </selector>
\ No newline at end of file
diff --git a/res/color/all_apps_tab_text.xml b/res/color/all_apps_tab_text.xml
index dace380..12137fd 100644
--- a/res/color/all_apps_tab_text.xml
+++ b/res/color/all_apps_tab_text.xml
@@ -14,6 +14,6 @@
      limitations under the License.
 -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:color="#1B1B1B" android:state_selected="true"/>
-    <item android:color="#464646"/>
+    <item android:color="#FFFFFF" android:state_selected="true"/>
+    <item android:color="#1F1F1F"/>
 </selector>
\ No newline at end of file
diff --git a/res/color/all_apps_tabs_background.xml b/res/color/all_apps_tabs_background.xml
index a4b7d1f..9083aea 100644
--- a/res/color/all_apps_tabs_background.xml
+++ b/res/color/all_apps_tabs_background.xml
@@ -14,5 +14,5 @@
      limitations under the License.
 -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:color="#F6F6F6"/>
+    <item android:color="#E3E3E3"/>
 </selector>
\ No newline at end of file
diff --git a/res/color/cell_layout_bg_color.xml b/res/color/cell_layout_bg_color.xml
new file mode 100644
index 0000000..a33a0c3
--- /dev/null
+++ b/res/color/cell_layout_bg_color.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:alpha="0.35"
+        android:color="?attr/workspaceSurfaceColor"/>
+</selector>
\ No newline at end of file
diff --git a/res/color/cell_layout_bg_color_active.xml b/res/color/cell_layout_bg_color_active.xml
deleted file mode 100644
index d1a3d7c..0000000
--- a/res/color/cell_layout_bg_color_active.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:alpha="0.3"
-      android:color="?android:attr/colorAccent"/>
-</selector>
diff --git a/res/color/cell_layout_bg_color_inactive.xml b/res/color/cell_layout_bg_color_inactive.xml
deleted file mode 100644
index 0632100..0000000
--- a/res/color/cell_layout_bg_color_inactive.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:alpha="0.25"
-        android:color="?android:attr/colorAccent"/>
-</selector>
\ No newline at end of file
diff --git a/res/color/overview_button.xml b/res/color/overview_button.xml
index aa48b78..1dd8da6 100644
--- a/res/color/overview_button.xml
+++ b/res/color/overview_button.xml
@@ -1,11 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
     <item
         android:alpha="1"
-        android:color="?android:attr/textColorPrimary"
+        android:color="?androidprv:attr/materialColorOnSurface"
         android:state_enabled="true" />
     <item
         android:alpha="?android:disabledAlpha"
-        android:color="?android:attr/textColorPrimary"
+        android:color="?androidprv:attr/materialColorOnSurface"
         android:state_enabled="false" />
 </selector>
\ No newline at end of file
diff --git a/res/drawable/ic_setup_shadow.xml b/res/color/popup_color_background.xml
similarity index 63%
copy from res/drawable/ic_setup_shadow.xml
copy to res/color/popup_color_background.xml
index 10aeee6..e87e772 100644
--- a/res/drawable/ic_setup_shadow.xml
+++ b/res/color/popup_color_background.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,6 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_setting"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+    <item android:color="?attr/popupColorBackground" />
+</selector>
diff --git a/res/color/popup_shade_first.xml b/res/color/popup_shade_first.xml
index 151190b..1278bb4 100644
--- a/res/color/popup_shade_first.xml
+++ b/res/color/popup_shade_first.xml
@@ -13,6 +13,7 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android" >
-    <item android:color="?attr/popupShadeFirst" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+    <item android:color="?androidprv:attr/materialColorSurfaceContainer"/>
 </selector>
diff --git a/res/drawable/ic_block_shadow.xml b/res/color/widget_picker_tab_text.xml
similarity index 60%
copy from res/drawable/ic_block_shadow.xml
copy to res/color/widget_picker_tab_text.xml
index 045fe8d..0e0fc38 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/res/color/widget_picker_tab_text.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,7 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="?attr/widgetPickerSelectedTabTextColor" android:state_selected="true"/>
+    <item android:color="?attr/widgetPickerUnselectedTabTextColor"/>
+</selector>
\ No newline at end of file
diff --git a/res/drawable-sw720dp/ic_transient_taskbar_all_apps_button.xml b/res/drawable-sw720dp/ic_transient_taskbar_all_apps_button.xml
new file mode 100644
index 0000000..47f2a5d
--- /dev/null
+++ b/res/drawable-sw720dp/ic_transient_taskbar_all_apps_button.xml
@@ -0,0 +1,48 @@
+<?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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="52dp"
+    android:height="52dp"
+    android:viewportWidth="52"
+    android:viewportHeight="52">
+  <path
+      android:pathData="M15.5,19C14.538,19 13.715,18.65 13.033,17.968C12.35,17.285 12,16.462 12,15.5C12,14.538 12.35,13.715 13.033,13.033C13.715,12.35 14.538,12 15.5,12C16.462,12 17.285,12.35 17.968,13.033C18.65,13.715 19,14.538 19,15.5C19,16.462 18.65,17.285 17.968,17.968C17.285,18.65 16.462,19 15.5,19Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M26,19C25.038,19 24.215,18.65 23.532,17.968C22.85,17.285 22.5,16.462 22.5,15.5C22.5,14.538 22.85,13.715 23.532,13.033C24.215,12.35 25.038,12 26,12C26.962,12 27.785,12.35 28.468,13.033C29.15,13.715 29.5,14.538 29.5,15.5C29.5,16.462 29.15,17.285 28.468,17.968C27.785,18.65 26.962,19 26,19Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M36.5,19C35.537,19 34.715,18.65 34.033,17.968C33.35,17.285 33,16.462 33,15.5C33,14.538 33.35,13.715 34.033,13.033C34.715,12.35 35.537,12 36.5,12C37.463,12 38.285,12.35 38.967,13.033C39.65,13.715 40,14.538 40,15.5C40,16.462 39.65,17.285 38.967,17.968C38.285,18.65 37.463,19 36.5,19Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M15.5,29.5C14.538,29.5 13.715,29.15 13.033,28.468C12.35,27.785 12,26.962 12,26C12,25.038 12.35,24.215 13.033,23.532C13.715,22.85 14.538,22.5 15.5,22.5C16.462,22.5 17.285,22.85 17.968,23.532C18.65,24.215 19,25.038 19,26C19,26.962 18.65,27.785 17.968,28.468C17.285,29.15 16.462,29.5 15.5,29.5Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M26,29.5C25.038,29.5 24.215,29.15 23.532,28.468C22.85,27.785 22.5,26.962 22.5,26C22.5,25.038 22.85,24.215 23.532,23.532C24.215,22.85 25.038,22.5 26,22.5C26.962,22.5 27.785,22.85 28.468,23.532C29.15,24.215 29.5,25.038 29.5,26C29.5,26.962 29.15,27.785 28.468,28.468C27.785,29.15 26.962,29.5 26,29.5Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M36.5,29.5C35.537,29.5 34.715,29.15 34.033,28.468C33.35,27.785 33,26.962 33,26C33,25.038 33.35,24.215 34.033,23.532C34.715,22.85 35.537,22.5 36.5,22.5C37.463,22.5 38.285,22.85 38.967,23.532C39.65,24.215 40,25.038 40,26C40,26.962 39.65,27.785 38.967,28.468C38.285,29.15 37.463,29.5 36.5,29.5Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M15.5,40C14.538,40 13.715,39.65 13.033,38.967C12.35,38.285 12,37.463 12,36.5C12,35.537 12.35,34.715 13.033,34.033C13.715,33.35 14.538,33 15.5,33C16.462,33 17.285,33.35 17.968,34.033C18.65,34.715 19,35.537 19,36.5C19,37.463 18.65,38.285 17.968,38.967C17.285,39.65 16.462,40 15.5,40Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M26,40C25.038,40 24.215,39.65 23.532,38.967C22.85,38.285 22.5,37.463 22.5,36.5C22.5,35.537 22.85,34.715 23.532,34.033C24.215,33.35 25.038,33 26,33C26.962,33 27.785,33.35 28.468,34.033C29.15,34.715 29.5,35.537 29.5,36.5C29.5,37.463 29.15,38.285 28.468,38.967C27.785,39.65 26.962,40 26,40Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M36.5,40C35.537,40 34.715,39.65 34.033,38.967C33.35,38.285 33,37.463 33,36.5C33,35.537 33.35,34.715 34.033,34.033C34.715,33.35 35.537,33 36.5,33C37.463,33 38.285,33.35 38.967,34.033C39.65,34.715 40,35.537 40,36.5C40,37.463 39.65,38.285 38.967,38.967C38.285,39.65 37.463,40 36.5,40Z"
+      android:fillColor="#40484B"/>
+</vector>
diff --git a/res/drawable-v28/bg_celllayout.xml b/res/drawable-v28/bg_celllayout.xml
index c68bdec..c9d5e41 100644
--- a/res/drawable-v28/bg_celllayout.xml
+++ b/res/drawable-v28/bg_celllayout.xml
@@ -23,15 +23,15 @@
         <shape android:shape="rectangle" >
             <stroke
                 android:width="@dimen/spring_loaded_panel_border"
-                android:color="?android:attr/colorAccent" />
-            <solid android:color="@color/cell_layout_bg_color_active"/>
+                android:color="?attr/workspaceAccentColor" />
+            <solid android:color="@color/cell_layout_bg_color"/>
             <corners android:radius="?android:attr/dialogCornerRadius" />
 
         </shape>
     </item>
     <item>
         <shape android:shape="rectangle" >
-            <solid android:color="@color/cell_layout_bg_color_inactive"/>
+            <solid android:color="@color/cell_layout_bg_color"/>
             <corners android:radius="?android:attr/dialogCornerRadius" />
         </shape>
     </item>
diff --git a/res/drawable/bg_all_apps_searchbox.xml b/res/drawable/bg_all_apps_searchbox.xml
index c324927..3c321e4 100644
--- a/res/drawable/bg_all_apps_searchbox.xml
+++ b/res/drawable/bg_all_apps_searchbox.xml
@@ -15,5 +15,6 @@
 -->
 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
     <solid android:color="?attr/popupColorPrimary" />
-    <corners android:radius="2dp" />
+    <corners android:radius="@dimen/rounded_button_radius" />
+    <stroke android:color="?attr/allappsHeaderProtectionColor" android:width=".5dp" />
 </shape>
\ No newline at end of file
diff --git a/res/drawable/bg_celllayout.xml b/res/drawable/bg_celllayout.xml
index 4e7e82f..dbf893d 100644
--- a/res/drawable/bg_celllayout.xml
+++ b/res/drawable/bg_celllayout.xml
@@ -23,15 +23,15 @@
         <shape android:shape="rectangle" >
             <stroke
                 android:width="@dimen/spring_loaded_panel_border"
-                android:color="?android:attr/colorAccent" />
-            <solid android:color="@color/cell_layout_bg_color_active"/>
+                android:color="?attr/workspaceAccentColor" />
+            <solid android:color="@color/cell_layout_bg_color"/>
             <corners android:radius="@dimen/bg_round_rect_radius" />
 
         </shape>
     </item>
     <item>
         <shape android:shape="rectangle" >
-            <solid android:color="@color/cell_layout_bg_color_inactive"/>
+            <solid android:color="@color/cell_layout_bg_color"/>
             <corners android:radius="@dimen/bg_round_rect_radius" />
         </shape>
     </item>
diff --git a/res/drawable/bg_widgets_content.xml b/res/drawable/bg_widgets_content.xml
new file mode 100644
index 0000000..1528a97
--- /dev/null
+++ b/res/drawable/bg_widgets_content.xml
@@ -0,0 +1,61 @@
+<?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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <!--
+       L -> large radius
+       s -> small radius
+       0 -> no radius
+    -->
+
+    <!-- SINGLE : L L L L -->
+    <item android:state_single="true">
+        <shape android:shape="rectangle">
+            <solid android:color="?attr/widgetPickerSecondarySurfaceColor" />
+            <corners android:radius="@dimen/widget_list_top_bottom_corner_radius"/>
+        </shape>
+    </item>
+
+    <!-- FIRST : 0 0 s s -->
+    <item android:state_first="true">
+        <shape android:shape="rectangle">
+            <solid android:color="?attr/widgetPickerSecondarySurfaceColor" />
+            <corners
+                android:bottomLeftRadius="@dimen/widget_list_content_corner_radius"
+                android:bottomRightRadius="@dimen/widget_list_content_corner_radius" />
+        </shape>
+    </item>
+
+    <!-- MIDDLE : 0 0 s s -->
+    <item android:state_middle="true">
+        <shape android:shape="rectangle">
+            <solid android:color="?attr/widgetPickerSecondarySurfaceColor" />
+            <corners
+                android:bottomLeftRadius="@dimen/widget_list_content_corner_radius"
+                android:bottomRightRadius="@dimen/widget_list_content_corner_radius" />
+        </shape>
+    </item>
+
+    <!-- LAST : 0 0 L L -->
+    <item android:state_last="true">
+        <shape android:shape="rectangle">
+            <solid android:color="?attr/widgetPickerSecondarySurfaceColor" />
+            <corners
+                android:bottomLeftRadius="@dimen/widget_list_top_bottom_corner_radius"
+                android:bottomRightRadius="@dimen/widget_list_top_bottom_corner_radius" />
+        </shape>
+    </item>
+</selector>
diff --git a/res/drawable/bg_widgets_full_sheet.xml b/res/drawable/bg_widgets_full_sheet.xml
index dfcd354..66a1d40 100644
--- a/res/drawable/bg_widgets_full_sheet.xml
+++ b/res/drawable/bg_widgets_full_sheet.xml
@@ -16,7 +16,7 @@
 
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle" >
-    <solid android:color="?android:attr/colorBackground" />
+    <solid android:color="?attr/widgetPickerPrimarySurfaceColor" />
     <corners
         android:topLeftRadius="@dimen/dialogCornerRadius"
         android:topRightRadius="@dimen/dialogCornerRadius" />
diff --git a/res/drawable/bg_widgets_header.xml b/res/drawable/bg_widgets_header.xml
new file mode 100644
index 0000000..a89aad4
--- /dev/null
+++ b/res/drawable/bg_widgets_header.xml
@@ -0,0 +1,26 @@
+<?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.
+-->
+<inset xmlns:android="http://schemas.android.com/apk/res/android"
+    android:insetTop="@dimen/widget_list_entry_spacing" >
+    <ripple
+        android:color="?android:attr/colorControlHighlight"
+        android:paddingTop="@dimen/widget_list_header_view_vertical_padding"
+        android:paddingBottom="@dimen/widget_list_header_view_vertical_padding" >
+        <item android:id="@android:id/mask"
+            android:drawable="@drawable/bg_widgets_header_states" />
+        <item android:drawable="@drawable/bg_widgets_header_states" />
+    </ripple>
+</inset>
\ No newline at end of file
diff --git a/res/drawable/bg_widgets_header_states.xml b/res/drawable/bg_widgets_header_states.xml
new file mode 100644
index 0000000..d03778d
--- /dev/null
+++ b/res/drawable/bg_widgets_header_states.xml
@@ -0,0 +1,95 @@
+<?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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <!--
+       L -> large radius
+       s -> small radius
+       0 -> no radiuls
+    -->
+
+    <!-- SINGLE : L L L L -->
+    <item android:state_single="true">
+        <shape android:shape="rectangle">
+            <solid android:color="?attr/widgetPickerSecondarySurfaceColor" />
+            <corners
+                android:topLeftRadius="@dimen/widget_list_top_bottom_corner_radius"
+                android:topRightRadius="@dimen/widget_list_top_bottom_corner_radius"
+                android:bottomLeftRadius="@dimen/widget_list_top_bottom_corner_radius"
+                android:bottomRightRadius="@dimen/widget_list_top_bottom_corner_radius" />
+        </shape>
+    </item>
+
+    <!-- FIRST_EXPANDED : L L 0 0 -->
+    <item android:state_first="true" android:state_expanded="true">
+        <shape android:shape="rectangle">
+            <solid android:color="?attr/widgetPickerSecondarySurfaceColor" />
+            <corners
+                android:topLeftRadius="@dimen/widget_list_top_bottom_corner_radius"
+                android:topRightRadius="@dimen/widget_list_top_bottom_corner_radius"
+                android:bottomLeftRadius="0dp"
+                android:bottomRightRadius="0dp" />
+        </shape>
+    </item>
+
+    <!-- FIRST : L L s s -->
+    <item android:state_first="true" >
+        <shape android:shape="rectangle">
+            <solid android:color="?attr/widgetPickerSecondarySurfaceColor" />
+            <corners
+                android:topLeftRadius="@dimen/widget_list_top_bottom_corner_radius"
+                android:topRightRadius="@dimen/widget_list_top_bottom_corner_radius"
+                android:bottomLeftRadius="@dimen/widget_list_content_corner_radius"
+                android:bottomRightRadius="@dimen/widget_list_content_corner_radius" />
+        </shape>
+    </item>
+
+    <!-- MIDDLE_EXPANDED : s s 0 0 -->
+    <item android:state_middle="true" android:state_expanded="true">
+        <shape android:shape="rectangle">
+            <solid android:color="?attr/widgetPickerSecondarySurfaceColor" />
+            <corners
+                android:topLeftRadius="@dimen/widget_list_content_corner_radius"
+                android:topRightRadius="@dimen/widget_list_content_corner_radius"
+                android:bottomLeftRadius="0dp"
+                android:bottomRightRadius="0dp" />
+        </shape>
+    </item>
+
+    <!-- MIDDLE : s s s s -->
+    <item android:state_middle="true">
+        <shape android:shape="rectangle">
+            <solid android:color="?attr/widgetPickerSecondarySurfaceColor" />
+            <corners
+                android:topLeftRadius="@dimen/widget_list_content_corner_radius"
+                android:topRightRadius="@dimen/widget_list_content_corner_radius"
+                android:bottomLeftRadius="@dimen/widget_list_content_corner_radius"
+                android:bottomRightRadius="@dimen/widget_list_content_corner_radius" />
+        </shape>
+    </item>
+
+    <!-- LAST : s s L L -->
+    <item android:state_last="true">
+        <shape android:shape="rectangle">
+            <solid android:color="?attr/widgetPickerSecondarySurfaceColor" />
+            <corners
+                android:topLeftRadius="@dimen/widget_list_content_corner_radius"
+                android:topRightRadius="@dimen/widget_list_content_corner_radius"
+                android:bottomLeftRadius="@dimen/widget_list_top_bottom_corner_radius"
+                android:bottomRightRadius="@dimen/widget_list_top_bottom_corner_radius" />
+        </shape>
+    </item>
+</selector>
diff --git a/res/drawable/bg_widgets_header_states_two_pane.xml b/res/drawable/bg_widgets_header_states_two_pane.xml
new file mode 100644
index 0000000..5f4b8c6
--- /dev/null
+++ b/res/drawable/bg_widgets_header_states_two_pane.xml
@@ -0,0 +1,31 @@
+<?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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:state_expanded="true">
+        <shape android:shape="rectangle">
+            <solid android:color="?attr/widgetPickerHeaderBackgroundColor" />
+            <corners android:radius="@dimen/widget_list_top_bottom_corner_radius" />
+        </shape>
+    </item>
+
+    <item android:state_expanded="false">
+        <shape android:shape="rectangle">
+            <solid android:color="@android:color/transparent" />
+            <corners android:radius="@dimen/widget_list_top_bottom_corner_radius" />
+        </shape>
+    </item>
+</selector>
diff --git a/res/drawable/bg_widgets_header_two_pane.xml b/res/drawable/bg_widgets_header_two_pane.xml
new file mode 100644
index 0000000..ca3feef
--- /dev/null
+++ b/res/drawable/bg_widgets_header_two_pane.xml
@@ -0,0 +1,26 @@
+<?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.
+-->
+<inset xmlns:android="http://schemas.android.com/apk/res/android"
+    android:insetTop="@dimen/widget_list_entry_spacing" >
+    <ripple
+        android:color="@color/accent_ripple_color"
+        android:paddingTop="@dimen/widget_list_header_view_vertical_padding"
+        android:paddingBottom="@dimen/widget_list_header_view_vertical_padding" >
+        <item android:id="@android:id/mask"
+            android:drawable="@drawable/bg_widgets_header_states_two_pane" />
+        <item android:drawable="@drawable/bg_widgets_header_states_two_pane" />
+    </ripple>
+</inset>
diff --git a/res/drawable/bg_widgets_searchbox.xml b/res/drawable/bg_widgets_searchbox.xml
index dc6d868..b09f0cd 100644
--- a/res/drawable/bg_widgets_searchbox.xml
+++ b/res/drawable/bg_widgets_searchbox.xml
@@ -14,6 +14,6 @@
      limitations under the License.
 -->
 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
-    <solid android:color="@color/surface" />
+    <solid android:color="?attr/widgetPickerSecondarySurfaceColor" />
     <corners android:radius="24dp" />
 </shape>
\ No newline at end of file
diff --git a/res/drawable/bg_work_apps_paused_action_button.xml b/res/drawable/bg_work_apps_paused_action_button.xml
new file mode 100644
index 0000000..57d1ae5
--- /dev/null
+++ b/res/drawable/bg_work_apps_paused_action_button.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="@color/accent_ripple_color">
+    <item android:id="@android:id/mask">
+        <shape android:shape="rectangle">
+            <corners android:radius="@dimen/rounded_button_radius" />
+            <solid android:color="@android:color/white" />
+        </shape>
+    </item>
+    <item android:id="@android:id/background">
+        <shape android:shape="rectangle">
+            <corners android:radius="@dimen/rounded_button_radius" />
+            <stroke
+                android:width="@dimen/work_apps_paused_button_stroke"
+                android:color="@color/work_turn_on_stroke" />
+        </shape>
+    </item>
+</ripple>
\ No newline at end of file
diff --git a/res/drawable/bottom_rounded_popup_ripple.xml b/res/drawable/bottom_rounded_popup_ripple.xml
new file mode 100644
index 0000000..739833a
--- /dev/null
+++ b/res/drawable/bottom_rounded_popup_ripple.xml
@@ -0,0 +1,27 @@
+<?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.
+-->
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="?android:attr/colorControlHighlight">
+    <item android:id="@android:id/mask">
+        <shape android:shape="rectangle">
+            <solid android:color="#FFFFFFFF"/>
+            <corners android:bottomLeftRadius="@dimen/dialogCornerRadius"
+                android:bottomRightRadius="@dimen/dialogCornerRadius"
+                android:topLeftRadius="0dp"
+                android:topRightRadius="0dp"/>
+        </shape>
+    </item>
+</ripple>
\ No newline at end of file
diff --git a/res/drawable/drop_target_frame.xml b/res/drawable/drop_target_frame.xml
index 9f04103..0a73b3f 100644
--- a/res/drawable/drop_target_frame.xml
+++ b/res/drawable/drop_target_frame.xml
@@ -17,6 +17,6 @@
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
     <solid android:color="@android:color/transparent" />
-    <corners android:radius="80dp" />
+    <corners android:radius="@dimen/drop_target_button_frame_radius" />
     <stroke android:width="2dp" android:color="?attr/workspaceAccentColor" />
 </shape>
\ No newline at end of file
diff --git a/res/drawable/drop_target_frame_hover.xml b/res/drawable/drop_target_frame_hover.xml
index ddf3a4d..dc83f2c 100644
--- a/res/drawable/drop_target_frame_hover.xml
+++ b/res/drawable/drop_target_frame_hover.xml
@@ -16,6 +16,6 @@
 -->
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
-    <solid android:color="?attr/workspaceAccentColor" />
-    <corners android:radius="28dp" />
+    <solid android:color="?attr/dropTargetHoverButtonColor" />
+    <corners android:radius="@dimen/drop_target_button_frame_radius" />
 </shape>
\ No newline at end of file
diff --git a/res/drawable/enter_home_gardening_icon.xml b/res/drawable/enter_home_gardening_icon.xml
new file mode 100644
index 0000000..039258e
--- /dev/null
+++ b/res/drawable/enter_home_gardening_icon.xml
@@ -0,0 +1,25 @@
+<!--
+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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?android:attr/textColorPrimary">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M5,19H6.4L16.45,8.975L15.75,8.25L15.025,7.55L5,17.6ZM3,21V16.75L16.45,3.325Q17.025,2.75 17.863,2.75Q18.7,2.75 19.275,3.325L20.675,4.75Q21.25,5.325 21.25,6.15Q21.25,6.975 20.675,7.55L7.25,21ZM19.25,6.15 L17.85,4.75ZM16.45,8.975 L15.75,8.25 15.025,7.55 16.45,8.975Z"/>
+</vector>
diff --git a/res/drawable/ic_all_apps_bg_hand.xml b/res/drawable/ic_all_apps_bg_hand.xml
deleted file mode 100644
index 7f3fe14..0000000
--- a/res/drawable/ic_all_apps_bg_hand.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<vector
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="208dp"
-    android:height="212dp"
-    android:viewportWidth="208.0"
-    android:viewportHeight="212.0">
-    <path
-        android:fillColor="#1A000000"
-        android:pathData="M89.4,61.8H85l-1.6-1.5c5.5-6.4,8.8-14.7,8.8-23.7C92.2,16.6,76,0.3,55.9,0.3
-        S19.5,16.6,19.5,36.6S35.8,73,55.9,73c9,0,17.3-3.3,23.7-8.8l1.5,1.6v4.4l40.5,40.4l8.3-8.3L89.4,61.8z M54,66.6
-        c-13.9,0-28.8-16-28.8-30S41.5,8.9,55.4,8.9S81,22.7,81,36.6S67.9,66.6,54,66.6z"/>
-    <path
-        android:fillColor="#1A000000"
-        android:pathData="M33.4,29.2l-0.3-1.8l-4.2-3.1L18.1,26l-3.1,4.2l0.3,1.8L4.5,33.7L9,62.5
-        c0.2,1.5,1.6,2.5,3.1,2.3l34.2-5.3c1.5-0.2,2.5-1.6,2.3-3.1l-4.4-28.8L33.4,29.2z"/>
-    <path
-        android:fillColor="#3367D6"
-        android:pathData="M30.2,27.9l-0.3-1.8l-4.1-3L15,24.7l-3,4.1l0.3,1.8L1.6,32.3L6,60.9
-        c0.2,1.5,1.6,2.5,3.1,2.3L43,57.9c1.5-0.2,2.5-1.6,2.3-3.1l-4.4-28.6L30.2,27.9z M26.6,28.4l-10.7,1.6l-0.3-1.8l10.7-1.6L26.6,28.4z"/>
-    <group>
-        <clip-path
-            android:pathData="M25.1,37.7a28.9,28.9 0 1,0 57.8,0a28.9,28.9 0 1,0 -57.8,0"/>
-        <path
-            android:fillColor="#4285F4"
-            android:pathData="M41.7,23l-0.3-2.1l-4.9-3.6l-12.6,1.9l-3.6,4.9l0.3,2.1L8.1,28.1l5.2,33.7
-                c0.3,1.7,1.9,2.9,3.6,2.7l40-6.1c1.7-0.3,2.9-1.9,2.7-3.6L54.4,21L41.7,23z M37.5,23.6l-12.6,1.9l-0.3-2.1l12.6-1.9L37.5,23.6z"/>
-    </group>
-    <path
-        android:fillColor="?android:attr/colorControlHighlight"
-        android:pathData="M87.5,62.9h-4.4l-1.6-1.5c5.5-6.4,8.8-14.7,8.8-23.7C90.3,17.7,74,1.4,54,1.4
-        S17.6,17.7,17.6,37.7S33.9,74.1,54,74.1c9,0,17.3-3.3,23.7-8.8l1.5,1.6v4.4l40.5,40.4l8.3-8.3L87.5,62.9z M54,64.2
-        c-14.7,0-26.5-11.8-26.5-26.5S39.3,11.2,54,11.2s26.5,11.8,26.5,26.5S68.6,64.2,54,64.2z"/>
-    <path
-        android:fillColor="#1A000000"
-        android:pathData="M153.4,112.9c-14.9-17.2-38.6-9.1-38.6-9.1l-10.2-11.3c0,0-4.8-5.9-9-3.7
-        c-7,3.6-0.6,10.7-0.6,10.7s12.3,15.1,15.4,20.1c2.1,3.4,8.4,4.5,10.1,4.9l17.1,3.7l-0.9-0.7l-1-0.7L153.4,112.9z"/>
-    <path
-        android:fillColor="#FFDBA6"
-        android:pathData="M152.1,113.9c-14.9-17.2-37.6-8-37.6-8l-11.1-12.3c0,0-4.8-5.9-9-3.7
-        c-7,3.6-0.6,10.7-0.6,10.7s12.3,15.1,15.4,20.1c2.1,3.4,8.4,4.5,10.1,4.9l19,4.1"/>
-    <path
-        android:fillColor="#1A000000"
-        android:pathData="M148.6,77.9c0.6,0.7,2,2.5,2.1,2.6c1.1,1.7,6.2,13.6,11.8,35.1c0,0.1,1.9,3,1.9,3.1
-        c0,0,0.1,0.1,0.1,0.2c0,0,0,0,0-0.1c0.9,1.3,4.4,6.6,8.9,13.7c0.1,0.2,0.3,0.5,0.4,0.7c0,0.1,0.1,0.1,0.1,0.2
-        c0.2,0.3,0.4,0.6,0.6,0.9c0.1-0.1,0.2-0.2,0.3-0.3c0.2-0.3,0.6-0.3,0.8,0c2.9,4.8,21.2,35,26.7,49c2.1,5.3,3.2,8.4,3.6,11.6
-        c0.3,2.3,0,4.4-1.2,6c1.5-1.9,3.5-6.8-1.5-19c-1.2-2.9-2.8-6.5-4.8-10.5c-7.5-15.2-20-35.6-22.4-39.6c-0.2-0.3-0.6-0.3-0.8,0
-        c-0.2,0.2-0.3,0.4-0.5,0.6c-4.5-7.1-8.2-12.6-8.8-13.5c-0.1-0.1-1.9-3-1.9-3.1c-5.7-21.6-10.7-33.4-11.8-35.1
-        c-0.1-0.1-1.5-1.9-2.1-2.6l-6.5-8.3c-1.9-2.3-4.2-4.1-6.7-2.3c-2.5,1.8-1.6,4.5-0.1,7.1l3.3,5.2l7-2
-        C147.7,77.4,148.1,77.3,148.6,77.9z"/>
-    <path
-        android:fillColor="#FFDBA6"
-        android:pathData="M148.6,77.9l-6.5-8.3c-1.9-2.3-4.2-4.1-6.7-2.3l0,0l0,0c-2.5,1.8-1.6,4.5-0.1,7.1l3.8,6L148.6,77.9C148.6,77.9,148.6,77.9,148.6,77.9z"/>
-    <path
-        android:fillColor="#1A000000"
-        android:pathData="M151.1,92.5l-19.7-25.3c-1.9-2.3-4.2-4.1-6.7-2.3l0,0l0,0c-2.5,1.8-1.6,4.5-0.1,7.1l17.1,27.2L151.1,92.5z"/>
-    <path
-        android:fillColor="#FFDBA6"
-        android:pathData="M149.7,92.9l-19.7-25.3c-1.9-2.3-4.2-4.1-6.7-2.3l0,0l0,0c-2.5,1.8-1.6,4.5-0.1,7.1l17.1,27.2L149.7,92.9z"/>
-    <path
-        android:fillColor="#1A000000"
-        android:pathData="M141.6,94.6l-20.8-26.7c-2.1-2.5-4.4-4.3-7.1-2.5l0,0l0,0c-2.6,1.9-1.7,4.7-0.1,7.5l18,28.6L141.6,94.6z"/>
-    <path
-        android:fillColor="#FFDBA6"
-        android:pathData="M140.1,95l-20.8-26.7c-2.1-2.5-4.4-4.3-7.1-2.5l0,0h0c-2.6,1.9-1.7,4.7-0.1,7.5l18,28.6L140.1,95z"/>
-    <path
-        android:fillColor="#1A000000"
-        android:pathData="M140.4,99.1c-0.5-0.6-2.1-7.5-2.8-7.3l-15.9-6.9c-0.3,0-0.5-0.1-0.7-0.3l-2.3-3.5
-        l-0.4-0.6L100,54.5c-1.5-2-3.3-4-5.3-4.3c-0.7-0.1-1.3-0.2-2,0.2v0c-1,0.6-1.2,1.5-1.3,2.4c-0.2,1.8,0.6,3.9,1.6,5.9L108.5,87
-        l0.2,0.4l6.6,11.7l0,0c2.5,4.5,4.4,10.5,4.4,10.7L140.4,99.1"/>
-    <path
-        android:fillColor="#FFDBA6"
-        android:pathData="M129.7,125.1c3,0.7,8.1,4,11.8,9.1c2.7,3.7,5.5,8.3,8.2,13
-        c7.6-2.3,19.9-6.8,24.9-12.9c-0.2-0.3-0.4-0.6-0.6-0.9c0-0.1-0.1-0.1-0.1-0.2c-0.1-0.2-0.3-0.5-0.4-0.7c-4.5-7.1-8-12.4-8.9-13.7
-        c0,0,0,0,0,0.1c0-0.1-0.1-0.1-0.1-0.2c-0.1-0.1-1.9-3-1.9-3.1c-5.7-21.5-10.7-33.4-11.8-35.1c-0.1-0.1-1.5-1.9-2.1-2.6
-        c-0.5-0.6-0.9-0.5-1.6-0.3l-26.8,7.7c-0.3,0-0.5-0.1-0.7-0.3l-2.3-3.5l-0.4-0.6L98.5,54.8c-1.5-2-3.3-4-5.3-4.3
-        c-0.7-0.1-1.3-0.2-2,0.2c-1,0.6-1.2,1.5-1.3,2.4c-0.2,1.8,0.6,3.9,1.6,5.9L107,87.3l0.2,0.4l6.6,11.7l0,0
-        c2.5,4.5,4.4,10.5,4.4,10.7L129.7,125.1"/>
-    <path
-        android:fillColor="?android:attr/colorForeground"
-        android:pathData="M202.3,183.1c-5.4-14.1-23.8-44.3-26.7-49c-0.2-0.3-0.6-0.3-0.8,0
-        c-5.1,6.6-19,11.4-26.5,13.6c-0.3,0.1-1,0.1-1.2,0.6c-0.2,0.4,0.1,1,0.2,1.1c7.8,12.9,14.7,27.9,15.3,29.3c0,0.1,0.1,0.1,0.1,0.2
-        l9.6,22.9c0,0,0,0,0,0l1.7,4.1c1.4,2.7,3,4.3,5.3,5.1c1.5,0.5,2.1,0.6,3.2,0.6c4.8,0.1,15.2-6.1,20.5-9.4c2.7-1.7,3.3-4.4,2.9-7.6
-        C205.5,191.5,204.4,188.4,202.3,183.1z"/>
-</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_all_apps_bg_icon_1.xml b/res/drawable/ic_all_apps_bg_icon_1.xml
deleted file mode 100644
index d226ac6..0000000
--- a/res/drawable/ic_all_apps_bg_icon_1.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="48dp"
-        android:height="48dp"
-        android:viewportWidth="48.0"
-        android:viewportHeight="48.0">
-
-    <path
-        android:fillColor="#1A000000"
-        android:pathData="M44.28,30.96c4.84-10.68,0.09-23.27-10.59-28.11S10.42,2.74,5.58,13.42
-        C1,23.54,6.5,35.92,16.62,40.51l0,0l-3.23,7.12C27.84,47,39.79,40.86,44.28,30.96z" />
-    <path
-        android:fillColor="?android:attr/colorPrimary"
-        android:pathData="M41.75,30.05c4.84-10.68,0.09-23.27-10.59-28.11S7.9,1.83,3.06,12.51
-        c-4.59,10.12,0.92,22.5,11.03,27.09l0,0l-3.23,7.12C25.31,46.09,37.26,39.94,41.75,30.05z" />
-</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_all_apps_bg_icon_2.xml b/res/drawable/ic_all_apps_bg_icon_2.xml
deleted file mode 100644
index 5966d99..0000000
--- a/res/drawable/ic_all_apps_bg_icon_2.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="48dp"
-        android:height="48dp"
-        android:viewportWidth="48.0"
-        android:viewportHeight="48.0">
-
-    <path
-        android:fillColor="#1A000000"
-        android:pathData="M20.54,44.59c0.57-0.04,1.15-0.38,1.67-1.04l24.23-30.62c0.62-0.78,0.77-1.54,0.52-2.12
-        c-0.25-0.58-0.9-0.99-1.89-1.1L6.2,5.99C5.39,5.91,4.74,6.08,4.32,6.44l0,0C3.7,6.97,3.55,7.88,4.01,8.96l14.54,34.09
-        C19,44.13,19.75,44.65,20.54,44.59L20.54,44.59z" />
-    <path
-        android:fillColor="?android:attr/colorPrimary"
-        android:pathData="M18.49,43.22c0.57-0.04,1.15-0.38,1.67-1.04l24.23-30.62c0.62-0.78,0.77-1.54,0.52-2.12
-        c-0.25-0.58-0.9-0.99-1.89-1.1L4.15,4.62C3.34,4.54,2.69,4.71,2.27,5.08l0,0C1.65,5.6,1.5,6.52,1.96,7.6L16.5,41.69
-        C16.96,42.76,17.7,43.28,18.49,43.22L18.49,43.22z" />
-</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_all_apps_bg_icon_3.xml b/res/drawable/ic_all_apps_bg_icon_3.xml
deleted file mode 100644
index b18f8bc..0000000
--- a/res/drawable/ic_all_apps_bg_icon_3.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="48dp"
-        android:height="48dp"
-        android:viewportWidth="48.0"
-        android:viewportHeight="48.0">
-
-    <path
-        android:fillColor="#1A000000"
-        android:pathData="M25.18,1.27c-12.32,0-23.41,9.99-23.41,22.31s11.09,22.31,23.41,22.31
-        s22.31-9.99,22.31-22.31S37.5,1.27,25.18,1.27z M25.18,33.55c-5.5,0-14.35-5.1-14.35-10.6s8.32-12.19,13.82-12.19
-        c5.5,0,10.49,7.33,10.49,12.83S30.68,33.55,25.18,33.55z" />
-    <path
-        android:fillColor="?android:attr/colorPrimary"
-        android:pathData="M22.93,0.22c-12.32,0-22.31,9.99-22.31,22.31s9.99,22.31,22.31,22.31
-        s22.31-9.99,22.31-22.31S35.25,0.22,22.93,0.22z M22.93,32.5c-5.5,0-9.97-4.46-9.97-9.97s4.46-9.97,9.97-9.97
-        c5.5,0,9.97,4.46,9.97,9.97S28.43,32.5,22.93,32.5z" />
-    <path
-        android:fillColor="?android:attr/colorPrimary"
-        android:pathData="M14.81,22.53a8.12,8.12 0 1,0 16.24,0a8.12,8.12 0 1,0 -16.24,0z" />
-</vector>
diff --git a/res/drawable/ic_all_apps_bg_icon_4.xml b/res/drawable/ic_all_apps_bg_icon_4.xml
deleted file mode 100644
index 8eb4d90..0000000
--- a/res/drawable/ic_all_apps_bg_icon_4.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="48dp"
-        android:height="48dp"
-        android:viewportWidth="48.0"
-        android:viewportHeight="48.0">
-
-    <path
-        android:fillColor="#1A000000"
-        android:pathData="M11.53,8.02l23.39-5.73c1.61-0.39,3.25,0.6,3.64,2.21l7.64,31.19
-        c0.39,1.61-0.6,3.25-2.21,3.64L12.8,46.97c-1.61,0.39-3.25-0.6-3.64-2.21L3.43,21.37L11.53,8.02z" />
-    <path
-        android:fillColor="?android:attr/colorPrimary"
-        android:pathData="M9.2,6.53L32.59,0.8C34.2,0.4,35.84,1.4,36.23,3l7.64,31.19c0.39,1.61-0.6,3.25-2.21,3.64
-        l-31.19,7.64c-1.61,0.39-3.25-0.6-3.64-2.21L1.11,19.87L9.2,6.53z" />
-    <path
-        android:fillColor="#1A000000"
-        android:pathData="M9.27,6.47l1.91,7.8c0.4,1.62-0.59,3.24-2.21,3.64l-7.8,1.91L9.27,6.47z" />
-</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_all_apps_button.xml b/res/drawable/ic_all_apps_button.xml
deleted file mode 100644
index 5770d3c..0000000
--- a/res/drawable/ic_all_apps_button.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="80dp"
-    android:height="80dp"
-    android:viewportWidth="80"
-    android:viewportHeight="80"
-    android:theme="@style/AllAppsTheme">
-  <path
-      android:pathData="M40,0.5L40,0.5c21.8,0 39.5,17.7 39.5,39.5l0,0c0,21.8 -17.7,39.5 -39.5,39.5l0,0C18.2,79.5 0.5,61.8 0.5,40l0,0C0.5,18.2 18.2,0.5 40,0.5z"
-      android:fillColor="?attr/allAppsButtonBgColor"/>
-  <path
-      android:pathData="M26.8,32.1m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
-      android:fillColor="?attr/allAppsButtonColor1"/>
-  <path
-      android:pathData="M26.8,47.9m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
-      android:fillColor="?attr/allAppsButtonColor2"/>
-  <path
-      android:pathData="M40,32.1m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
-      android:fillColor="?attr/allAppsButtonColor3"/>
-  <path
-      android:pathData="M40,47.9m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
-      android:fillColor="?attr/allAppsButtonColor2"/>
-  <path
-      android:pathData="M53.2,32.1m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
-      android:fillColor="?attr/allAppsButtonColor4"/>
-  <path
-      android:pathData="M53.2,47.9m-5.3,0a5.3,5.3 0,1 1,10.6 0a5.3,5.3 0,1 1,-10.6 0"
-      android:fillColor="?attr/allAppsButtonColor2"/>
-</vector>
diff --git a/res/drawable/ic_allapps_search.xml b/res/drawable/ic_allapps_search.xml
index dbed824..0c3ab78 100644
--- a/res/drawable/ic_allapps_search.xml
+++ b/res/drawable/ic_allapps_search.xml
@@ -20,6 +20,6 @@
     android:viewportWidth="24.0"
     android:autoMirrored="true">
     <path
-        android:fillColor="?android:attr/textColorTertiary"
+        android:fillColor="?attr/widgetPickerSearchTextColor"
         android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z" />
 </vector>
diff --git a/res/drawable/ic_caption_desktop_button_foreground.xml b/res/drawable/ic_caption_desktop_button_foreground.xml
new file mode 100644
index 0000000..f185436
--- /dev/null
+++ b/res/drawable/ic_caption_desktop_button_foreground.xml
@@ -0,0 +1,33 @@
+<?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.
+  -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="108dp"
+    android:height="108dp"
+    android:viewportWidth="108"
+    android:viewportHeight="108">
+  <group android:scaleX="3.375"
+      android:scaleY="3.375">
+      <group android:scaleX="0.5"
+             android:scaleY="0.5"
+             android:translateX="6.0"
+             android:translateY="6.0">
+          <path
+              android:fillColor="@android:color/black"
+              android:pathData="M5.958,37.708Q4.458,37.708 3.354,36.604Q2.25,35.5 2.25,34V18.292Q2.25,16.792 3.354,15.688Q4.458,14.583 5.958,14.583H9.5V5.958Q9.5,4.458 10.625,3.354Q11.75,2.25 13.208,2.25H34Q35.542,2.25 36.646,3.354Q37.75,4.458 37.75,5.958V21.667Q37.75,23.167 36.646,24.271Q35.542,25.375 34,25.375H30.5V34Q30.5,35.5 29.396,36.604Q28.292,37.708 26.792,37.708ZM5.958,34H26.792Q26.792,34 26.792,34Q26.792,34 26.792,34V21.542H5.958V34Q5.958,34 5.958,34Q5.958,34 5.958,34ZM30.5,21.667H34Q34,21.667 34,21.667Q34,21.667 34,21.667V9.208H13.208V14.583H26.833Q28.375,14.583 29.438,15.667Q30.5,16.75 30.5,18.25Z"/>
+      </group>
+  </group>
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_note_taking_widget_category.xml b/res/drawable/ic_note_taking_widget_category.xml
new file mode 100644
index 0000000..96cc523
--- /dev/null
+++ b/res/drawable/ic_note_taking_widget_category.xml
@@ -0,0 +1,28 @@
+<?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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="48dp"
+    android:height="48dp"
+    android:viewportWidth="48"
+    android:viewportHeight="48">
+
+    <path
+        android:fillColor="#0B57D0"
+        android:pathData="M48 24C48 10.7452 37.2548 0 24 0C10.7452 0 0 10.7452 0 24C0 37.2548 10.7452 48 24 48C37.2548 48 48 37.2548 48 24Z" />
+    <path
+        android:fillColor="#ffffff"
+        android:pathData="M32.892 16.8L31.2 15.108C30.756 14.652 30.144 14.4 29.508 14.4C28.872 14.4 28.26 14.652 27.816 15.108L18.468 24.456L15.708 27.216L14.448 32.28C14.412 32.352 14.4 32.448 14.4 32.532C14.4 33.12 14.88 33.6 15.468 33.6C15.552 33.6 15.648 33.588 15.732 33.564L20.796 32.304L23.556 29.544L32.904 20.196C33.348 19.74 33.6 19.128 33.6 18.492C33.6 17.856 33.348 17.244 32.892 16.8ZM21.852 27.852L20.652 29.052L18.96 27.36L20.16 26.16L29.508 16.8L31.2 18.492L21.852 27.852Z" />
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_remove_shadow.xml b/res/drawable/ic_remove_shadow.xml
deleted file mode 100644
index 48abc10..0000000
--- a/res/drawable/ic_remove_shadow.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_remove_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
diff --git a/res/drawable/ic_select_windows.xml b/res/drawable/ic_select_windows.xml
new file mode 100644
index 0000000..cba0fde
--- /dev/null
+++ b/res/drawable/ic_select_windows.xml
@@ -0,0 +1,26 @@
+<!--
+  ~ 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.
+  -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="48dp"
+    android:height="48dp"
+    android:viewportWidth="48"
+    android:viewportHeight="48"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@android:color/white"
+      android:pathData="M7,44Q5.8,44 4.9,43.1Q4,42.2 4,41V21.65Q4,20.45 4.9,19.55Q5.8,18.65 7,18.65H12.75V7Q12.75,5.8 13.65,4.9Q14.55,4 15.75,4H41Q42.2,4 43.1,4.9Q44,5.8 44,7V26.35Q44,27.55 43.1,28.45Q42.2,29.35 41,29.35H35.3V41Q35.3,42.2 34.4,43.1Q33.5,44 32.3,44ZM7,41H32.3Q32.3,41 32.3,41Q32.3,41 32.3,41V24.65H7V41Q7,41 7,41Q7,41 7,41ZM35.3,26.35H41Q41,26.35 41,26.35Q41,26.35 41,26.35V10H15.75V18.65H31.6Q33.2,18.65 34.25,19.7Q35.3,20.75 35.3,22.35Z"/>
+</vector>
\ No newline at end of file
diff --git a/res/drawable/ic_split_horizontal.xml b/res/drawable/ic_split_horizontal.xml
index ee710d0..2efd2b9 100644
--- a/res/drawable/ic_split_horizontal.xml
+++ b/res/drawable/ic_split_horizontal.xml
@@ -1,9 +1,9 @@
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="20dp"
-    android:height="16dp"
-    android:viewportWidth="20"
-    android:viewportHeight="16">
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
   <path
-      android:pathData="M18,14L13,14L13,2L18,2L18,14ZM20,14L20,2C20,0.9 19.1,-0 18,-0L13,-0C11.9,-0 11,0.9 11,2L11,14C11,15.1 11.9,16 13,16L18,16C19.1,16 20,15.1 20,14ZM7,14L2,14L2,2L7,2L7,14ZM9,14L9,2C9,0.9 8.1,-0 7,-0L2,-0C0.9,-0 -0,0.9 -0,2L-0,14C-0,15.1 0.9,16 2,16L7,16C8.1,16 9,15.1 9,14Z"
+      android:pathData="M4,6L9,6L9,18L4,18L4,6ZM2,6L2,18C2,19.1 2.9,20 4,20L9,20C10.1,20 11,19.1 11,18L11,6C11,4.9 10.1,4 9,4L4,4C2.9,4 2,4.9 2,6ZM15,6L20,6L20,18L15,18L15,6ZM13,6L13,18C13,19.1 13.9,20 15,20L20,20C21.1,20 22,19.1 22,18L22,6C22,4.9 21.1,4 20,4L15,4C13.9,4 13,4.9 13,6Z"
       android:fillColor="#000000"/>
 </vector>
diff --git a/res/drawable/ic_split_left.xml b/res/drawable/ic_split_left.xml
deleted file mode 100644
index fc9f699..0000000
--- a/res/drawable/ic_split_left.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="20dp"
-    android:height="16dp"
-    android:viewportWidth="20"
-    android:viewportHeight="16">
-  <path
-      android:pathData="M-0,2L-0,14C-0,15.1 0.9,16 2,16L7,16C8.1,16 9,15.1 9,14L9,2C9,0.9 8.1,-0 7,-0L2,-0C0.9,-0 -0,0.9 -0,2ZM13,2L18,2L18,14L13,14L13,2ZM11,2L11,14C11,15.1 11.9,16 13,16L18,16C19.1,16 20,15.1 20,14L20,2C20,0.9 19.1,-0 18,-0L13,-0C11.9,-0 11,0.9 11,2Z"
-      android:fillColor="#000000"/>
-</vector>
diff --git a/res/drawable/ic_split_right.xml b/res/drawable/ic_split_right.xml
deleted file mode 100644
index cc15622..0000000
--- a/res/drawable/ic_split_right.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="20dp"
-    android:height="16dp"
-    android:viewportWidth="20"
-    android:viewportHeight="16">
-  <path
-      android:pathData="M20,14L20,2C20,0.9 19.1,-0 18,-0L13,-0C11.9,-0 11,0.9 11,2L11,14C11,15.1 11.9,16 13,16L18,16C19.1,16 20,15.1 20,14ZM7,14L2,14L2,2L7,2L7,14ZM9,14L9,2C9,0.9 8.1,-0 7,-0L2,-0C0.9,-0 -0,0.9 -0,2L-0,14C-0,15.1 0.9,16 2,16L7,16C8.1,16 9,15.1 9,14Z"
-      android:fillColor="#000000"/>
-</vector>
diff --git a/res/drawable/ic_split_screen.xml b/res/drawable/ic_split_screen.xml
deleted file mode 100644
index 1080069..0000000
--- a/res/drawable/ic_split_screen.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24"
-        android:viewportHeight="24"
-        android:tint="?android:attr/textColorPrimary">
-
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M18,4v5H6V4H18 M18,2H6C4.9,2,4,2.9,4,4v5c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2V4C20,2.9,19.1,2,18,2L18,2z" />
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M18,15v5H6v-5H18 M18,13H6c-1.1,0-2,0.9-2,2v5c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2v-5C20,13.9,19.1,13,18,13L18,13z" />
-</vector>
diff --git a/res/drawable/ic_split_top.xml b/res/drawable/ic_split_top.xml
deleted file mode 100644
index f8c15bd..0000000
--- a/res/drawable/ic_split_top.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="16dp"
-    android:height="20dp"
-    android:viewportWidth="16"
-    android:viewportHeight="20">
-  <path
-      android:pathData="M14,0H2C0.9,0 0,0.9 0,2V7C0,8.1 0.9,9 2,9H14C15.1,9 16,8.1 16,7V2C16,0.9 15.1,0 14,0ZM14,13V18H2V13H14ZM14,11H2C0.9,11 0,11.9 0,13V18C0,19.1 0.9,20 2,20H14C15.1,20 16,19.1 16,18V13C16,11.9 15.1,11 14,11Z"
-      android:fillColor="#000000"/>
-</vector>
diff --git a/res/drawable/ic_taskbar_all_apps_button.xml b/res/drawable/ic_taskbar_all_apps_button.xml
new file mode 100644
index 0000000..82fbbea
--- /dev/null
+++ b/res/drawable/ic_taskbar_all_apps_button.xml
@@ -0,0 +1,48 @@
+<?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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="44dp"
+    android:height="44dp"
+    android:viewportWidth="44"
+    android:viewportHeight="44">
+  <path
+      android:pathData="M13,16C12.175,16 11.47,15.7 10.885,15.115C10.3,14.53 10,13.825 10,13C10,12.175 10.3,11.47 10.885,10.885C11.47,10.3 12.175,10 13,10C13.825,10 14.53,10.3 15.115,10.885C15.7,11.47 16,12.175 16,13C16,13.825 15.7,14.53 15.115,15.115C14.53,15.7 13.825,16 13,16Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M22,16C21.175,16 20.47,15.7 19.885,15.115C19.3,14.53 19,13.825 19,13C19,12.175 19.3,11.47 19.885,10.885C20.47,10.3 21.175,10 22,10C22.825,10 23.53,10.3 24.115,10.885C24.7,11.47 25,12.175 25,13C25,13.825 24.7,14.53 24.115,15.115C23.53,15.7 22.825,16 22,16Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M31,16C30.175,16 29.47,15.7 28.885,15.115C28.3,14.53 28,13.825 28,13C28,12.175 28.3,11.47 28.885,10.885C29.47,10.3 30.175,10 31,10C31.825,10 32.53,10.3 33.115,10.885C33.7,11.47 34,12.175 34,13C34,13.825 33.7,14.53 33.115,15.115C32.53,15.7 31.825,16 31,16Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M13,25C12.175,25 11.47,24.7 10.885,24.115C10.3,23.53 10,22.825 10,22C10,21.175 10.3,20.47 10.885,19.885C11.47,19.3 12.175,19 13,19C13.825,19 14.53,19.3 15.115,19.885C15.7,20.47 16,21.175 16,22C16,22.825 15.7,23.53 15.115,24.115C14.53,24.7 13.825,25 13,25Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M22,25C21.175,25 20.47,24.7 19.885,24.115C19.3,23.53 19,22.825 19,22C19,21.175 19.3,20.47 19.885,19.885C20.47,19.3 21.175,19 22,19C22.825,19 23.53,19.3 24.115,19.885C24.7,20.47 25,21.175 25,22C25,22.825 24.7,23.53 24.115,24.115C23.53,24.7 22.825,25 22,25Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M31,25C30.175,25 29.47,24.7 28.885,24.115C28.3,23.53 28,22.825 28,22C28,21.175 28.3,20.47 28.885,19.885C29.47,19.3 30.175,19 31,19C31.825,19 32.53,19.3 33.115,19.885C33.7,20.47 34,21.175 34,22C34,22.825 33.7,23.53 33.115,24.115C32.53,24.7 31.825,25 31,25Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M13,34C12.175,34 11.47,33.7 10.885,33.115C10.3,32.53 10,31.825 10,31C10,30.175 10.3,29.47 10.885,28.885C11.47,28.3 12.175,28 13,28C13.825,28 14.53,28.3 15.115,28.885C15.7,29.47 16,30.175 16,31C16,31.825 15.7,32.53 15.115,33.115C14.53,33.7 13.825,34 13,34Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M22,34C21.175,34 20.47,33.7 19.885,33.115C19.3,32.53 19,31.825 19,31C19,30.175 19.3,29.47 19.885,28.885C20.47,28.3 21.175,28 22,28C22.825,28 23.53,28.3 24.115,28.885C24.7,29.47 25,30.175 25,31C25,31.825 24.7,32.53 24.115,33.115C23.53,33.7 22.825,34 22,34Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M31,34C30.175,34 29.47,33.7 28.885,33.115C28.3,32.53 28,31.825 28,31C28,30.175 28.3,29.47 28.885,28.885C29.47,28.3 30.175,28 31,28C31.825,28 32.53,28.3 33.115,28.885C33.7,29.47 34,30.175 34,31C34,31.825 33.7,32.53 33.115,33.115C32.53,33.7 31.825,34 31,34Z"
+      android:fillColor="#40484B"/>
+</vector>
diff --git a/res/drawable/ic_touch.xml b/res/drawable/ic_touch.xml
new file mode 100644
index 0000000..ea0e05c
--- /dev/null
+++ b/res/drawable/ic_touch.xml
@@ -0,0 +1,25 @@
+<?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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24"
+        android:viewportHeight="24"
+        android:tint="?attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M18.19,12.44l-3.24,-1.62c1.29,-1 2.12,-2.56 2.12,-4.32c0,-3.03 -2.47,-5.5 -5.5,-5.5s-5.5,2.47 -5.5,5.5c0,2.13 1.22,3.98 3,4.89v3.26c-2.11,-0.45 -2.01,-0.44 -2.26,-0.44c-0.53,0 -1.03,0.21 -1.41,0.59L4,16.22l5.09,5.09C9.52,21.75 10.12,22 10.74,22h6.3c0.98,0 1.81,-0.7 1.97,-1.67l0.8,-4.71C20.03,14.32 19.38,13.04 18.19,12.44zM17.84,15.29L17.04,20h-6.3c-0.09,0 -0.17,-0.04 -0.24,-0.1l-3.68,-3.68l4.25,0.89V6.5c0,-0.28 0.22,-0.5 0.5,-0.5c0.28,0 0.5,0.22 0.5,0.5v6h1.76l3.46,1.73C17.69,14.43 17.91,14.86 17.84,15.29zM8.07,6.5c0,-1.93 1.57,-3.5 3.5,-3.5s3.5,1.57 3.5,3.5c0,0.95 -0.38,1.81 -1,2.44V6.5c0,-1.38 -1.12,-2.5 -2.5,-2.5c-1.38,0 -2.5,1.12 -2.5,2.5v2.44C8.45,8.31 8.07,7.45 8.07,6.5z"/>
+</vector>
diff --git a/res/drawable/ic_transient_taskbar_all_apps_button.xml b/res/drawable/ic_transient_taskbar_all_apps_button.xml
new file mode 100644
index 0000000..6e740ae
--- /dev/null
+++ b/res/drawable/ic_transient_taskbar_all_apps_button.xml
@@ -0,0 +1,48 @@
+<?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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="48dp"
+    android:height="48dp"
+    android:viewportWidth="48"
+    android:viewportHeight="48">
+  <path
+      android:pathData="M13.5,17C12.538,17 11.715,16.65 11.033,15.967C10.35,15.285 10,14.462 10,13.5C10,12.538 10.35,11.715 11.033,11.033C11.715,10.35 12.538,10 13.5,10C14.462,10 15.285,10.35 15.967,11.033C16.65,11.715 17,12.538 17,13.5C17,14.462 16.65,15.285 15.967,15.967C15.285,16.65 14.462,17 13.5,17Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M24,17C23.038,17 22.215,16.65 21.532,15.967C20.85,15.285 20.5,14.462 20.5,13.5C20.5,12.538 20.85,11.715 21.532,11.033C22.215,10.35 23.038,10 24,10C24.962,10 25.785,10.35 26.468,11.033C27.15,11.715 27.5,12.538 27.5,13.5C27.5,14.462 27.15,15.285 26.468,15.967C25.785,16.65 24.962,17 24,17Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M34.5,17C33.537,17 32.715,16.65 32.033,15.967C31.35,15.285 31,14.462 31,13.5C31,12.538 31.35,11.715 32.033,11.033C32.715,10.35 33.537,10 34.5,10C35.463,10 36.285,10.35 36.967,11.033C37.65,11.715 38,12.538 38,13.5C38,14.462 37.65,15.285 36.967,15.967C36.285,16.65 35.463,17 34.5,17Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M13.5,27.5C12.538,27.5 11.715,27.15 11.033,26.468C10.35,25.785 10,24.962 10,24C10,23.038 10.35,22.215 11.033,21.532C11.715,20.85 12.538,20.5 13.5,20.5C14.462,20.5 15.285,20.85 15.967,21.532C16.65,22.215 17,23.038 17,24C17,24.962 16.65,25.785 15.967,26.468C15.285,27.15 14.462,27.5 13.5,27.5Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M24,27.5C23.038,27.5 22.215,27.15 21.532,26.468C20.85,25.785 20.5,24.962 20.5,24C20.5,23.038 20.85,22.215 21.532,21.532C22.215,20.85 23.038,20.5 24,20.5C24.962,20.5 25.785,20.85 26.468,21.532C27.15,22.215 27.5,23.038 27.5,24C27.5,24.962 27.15,25.785 26.468,26.468C25.785,27.15 24.962,27.5 24,27.5Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M34.5,27.5C33.537,27.5 32.715,27.15 32.033,26.468C31.35,25.785 31,24.962 31,24C31,23.038 31.35,22.215 32.033,21.532C32.715,20.85 33.537,20.5 34.5,20.5C35.463,20.5 36.285,20.85 36.967,21.532C37.65,22.215 38,23.038 38,24C38,24.962 37.65,25.785 36.967,26.468C36.285,27.15 35.463,27.5 34.5,27.5Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M13.5,38C12.538,38 11.715,37.65 11.033,36.967C10.35,36.285 10,35.463 10,34.5C10,33.537 10.35,32.715 11.033,32.033C11.715,31.35 12.538,31 13.5,31C14.462,31 15.285,31.35 15.967,32.033C16.65,32.715 17,33.537 17,34.5C17,35.463 16.65,36.285 15.967,36.967C15.285,37.65 14.462,38 13.5,38Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M24,38C23.038,38 22.215,37.65 21.532,36.967C20.85,36.285 20.5,35.463 20.5,34.5C20.5,33.537 20.85,32.715 21.532,32.033C22.215,31.35 23.038,31 24,31C24.962,31 25.785,31.35 26.468,32.033C27.15,32.715 27.5,33.537 27.5,34.5C27.5,35.463 27.15,36.285 26.468,36.967C25.785,37.65 24.962,38 24,38Z"
+      android:fillColor="#40484B"/>
+  <path
+      android:pathData="M34.5,38C33.537,38 32.715,37.65 32.033,36.967C31.35,36.285 31,35.463 31,34.5C31,33.537 31.35,32.715 32.033,32.033C32.715,31.35 33.537,31 34.5,31C35.463,31 36.285,31.35 36.967,32.033C37.65,32.715 38,33.537 38,34.5C38,35.463 37.65,36.285 36.967,36.967C36.285,37.65 35.463,38 34.5,38Z"
+      android:fillColor="#40484B"/>
+</vector>
diff --git a/res/drawable/ic_uninstall_shadow.xml b/res/drawable/ic_uninstall_shadow.xml
deleted file mode 100644
index b441b0e..0000000
--- a/res/drawable/ic_uninstall_shadow.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_uninstall_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
diff --git a/res/drawable/ic_visibility.xml b/res/drawable/ic_visibility.xml
new file mode 100644
index 0000000..864de2e
--- /dev/null
+++ b/res/drawable/ic_visibility.xml
@@ -0,0 +1,29 @@
+<?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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="20dp"
+    android:height="20dp"
+    android:viewportWidth="20"
+    android:viewportHeight="20">
+  <group>
+    <path
+        android:pathData="M10,5.833C7.933,5.833 6.25,7.517 6.25,9.583C6.25,11.65 7.933,13.333 10,13.333C12.067,13.333 13.75,11.65 13.75,9.583C13.75,7.517 12.067,5.833 10,5.833ZM10,11.833C8.758,11.833 7.75,10.825 7.75,9.583C7.75,8.342 8.758,7.333 10,7.333C11.242,7.333 12.25,8.342 12.25,9.583C12.25,10.825 11.242,11.833 10,11.833Z"
+        android:fillColor="#191C1D"/>
+    <path
+        android:pathData="M10.001,3.333C5.834,3.333 2.276,5.925 0.834,9.583C2.276,13.242 5.834,15.833 10.001,15.833C14.167,15.833 17.726,13.242 19.167,9.583C17.726,5.925 14.167,3.333 10.001,3.333ZM10.001,14.167C6.842,14.167 4.026,12.392 2.651,9.583C4.026,6.775 6.842,5 10.001,5C13.159,5 15.976,6.775 17.351,9.583C15.976,12.392 13.159,14.167 10.001,14.167Z"
+        android:fillColor="#191C1D"/>
+  </group>
+</vector>
diff --git a/res/drawable/page_indicator.xml b/res/drawable/page_indicator.xml
new file mode 100644
index 0000000..c0ccc49
--- /dev/null
+++ b/res/drawable/page_indicator.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="?attr/folderPaginationColor"/>
+    <size android:width="@dimen/page_indicator_size" android:height="@dimen/page_indicator_size"/>
+</shape>
\ No newline at end of file
diff --git a/res/drawable/ic_block_shadow.xml b/res/drawable/popup_background_material_u.xml
similarity index 63%
copy from res/drawable/ic_block_shadow.xml
copy to res/drawable/popup_background_material_u.xml
index 045fe8d..6eedecb 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/res/drawable/popup_background_material_u.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,8 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="?attr/popupColorBackground"/>
+    <corners android:radius="@dimen/dialogCornerRadius"/>
+</shape>
\ No newline at end of file
diff --git a/res/drawable/top_rounded_popup_ripple.xml b/res/drawable/top_rounded_popup_ripple.xml
new file mode 100644
index 0000000..7468480
--- /dev/null
+++ b/res/drawable/top_rounded_popup_ripple.xml
@@ -0,0 +1,27 @@
+<?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.
+-->
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="?android:attr/colorControlHighlight">
+    <item android:id="@android:id/mask">
+        <shape android:shape="rectangle">
+            <solid android:color="#FFFFFFFF"/>
+            <corners android:bottomLeftRadius="0dp"
+                android:bottomRightRadius="0dp"
+                android:topLeftRadius="@dimen/dialogCornerRadius"
+                android:topRightRadius="@dimen/dialogCornerRadius"/>
+        </shape>
+    </item>
+</ripple>
\ No newline at end of file
diff --git a/res/drawable/ic_block_shadow.xml b/res/drawable/widget_picker_collapse_handle.xml
similarity index 60%
copy from res/drawable/ic_block_shadow.xml
copy to res/drawable/widget_picker_collapse_handle.xml
index 045fe8d..f79663d 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/res/drawable/widget_picker_collapse_handle.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,9 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle" >
+    <solid android:color="?attr/widgetPickerCollapseHandleColor"/>
+    <corners android:radius="@dimen/bottom_sheet_handle_corner_radius" />
+</shape>
diff --git a/res/drawable/widget_picker_tabs_background.xml b/res/drawable/widget_picker_tabs_background.xml
new file mode 100644
index 0000000..a874dd8
--- /dev/null
+++ b/res/drawable/widget_picker_tabs_background.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+     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.
+-->
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="@color/accent_ripple_color">
+
+    <item android:id="@android:id/mask">
+        <shape android:shape="rectangle">
+            <corners android:radius="@dimen/all_apps_header_pill_corner_radius" />
+            <solid android:color="@color/accent_ripple_color" />
+        </shape>
+    </item>
+
+    <item>
+        <selector android:enterFadeDuration="100">
+            <item
+                android:id="@+id/unselected"
+                android:state_selected="false">
+                <shape android:shape="rectangle">
+                    <corners android:radius="@dimen/all_apps_header_pill_corner_radius" />
+                    <solid android:color="?attr/widgetPickerTabBackgroundUnselected"/>
+                </shape>
+            </item>
+
+            <item
+                android:id="@+id/selected"
+                android:state_selected="true">
+                <shape android:shape="rectangle">
+                    <corners android:radius="@dimen/all_apps_header_pill_corner_radius" />
+                    <solid android:color="?attr/widgetPickerTabBackgroundSelected"/>
+                </shape>
+            </item>
+        </selector>
+    </item>
+
+</ripple>
\ No newline at end of file
diff --git a/res/drawable/widget_suggestions.xml b/res/drawable/widget_suggestions.xml
new file mode 100644
index 0000000..61e4243
--- /dev/null
+++ b/res/drawable/widget_suggestions.xml
@@ -0,0 +1,27 @@
+<!--
+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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?attr/widgetPickerSuggestionsIconColor"
+    android:gravity="center"
+    >
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M16.65,13 L11,7.35 16.65,1.7 22.3,7.35ZM3,11V3H11V11ZM13,21V13H21V21ZM3,21V13H11V21ZM5,9H9V5H5ZM16.675,10.2 L19.5,7.375 16.675,4.55 13.85,7.375ZM15,19H19V15H15ZM5,19H9V15H5ZM9,9ZM13.85,7.375ZM9,15ZM15,15Z"/>
+</vector>
diff --git a/res/drawable/widget_suggestions_icon.xml b/res/drawable/widget_suggestions_icon.xml
new file mode 100644
index 0000000..8fe1ce5
--- /dev/null
+++ b/res/drawable/widget_suggestions_icon.xml
@@ -0,0 +1,30 @@
+<!--
+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.
+-->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+  <item>
+    <shape android:shape="oval">
+      <size
+          android:width="48dp"
+          android:height="48dp" />
+      <solid android:color="?attr/widgetPickerSuggestionsIconBackgroundColor"/>
+    </shape>
+  </item>
+  <item
+      android:width="24dp"
+      android:height="24dp"
+      android:drawable="@drawable/widget_suggestions"
+      android:gravity="center" />
+</layer-list>
diff --git a/res/drawable/widgets_recommendation_background.xml b/res/drawable/widgets_surface_background.xml
similarity index 92%
rename from res/drawable/widgets_recommendation_background.xml
rename to res/drawable/widgets_surface_background.xml
index 0550a34..a31623d 100644
--- a/res/drawable/widgets_recommendation_background.xml
+++ b/res/drawable/widgets_surface_background.xml
@@ -19,6 +19,6 @@
 -->
 <shape android:shape="rectangle"
     xmlns:android="http://schemas.android.com/apk/res/android">
-    <solid android:color="@color/surface" />
+    <solid android:color="?attr/widgetPickerSecondarySurfaceColor" />
     <corners android:radius="@dimen/widget_list_top_bottom_corner_radius"/>
 </shape>
\ No newline at end of file
diff --git a/res/drawable/widgets_tray_expand_button.xml b/res/drawable/widgets_tray_expand_button.xml
index 8316e0f..f2e142e 100644
--- a/res/drawable/widgets_tray_expand_button.xml
+++ b/res/drawable/widgets_tray_expand_button.xml
@@ -14,8 +14,8 @@
      limitations under the License.
 -->
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_checked="true"
+    <item android:state_expanded="true"
         android:drawable="@drawable/ic_expand_less" />
-    <item android:state_checked="false"
+    <item android:state_expanded="false"
         android:drawable="@drawable/ic_expand_more" />
 </selector>
diff --git a/res/drawable/work_apps_toggle_background.xml b/res/drawable/work_apps_toggle_background.xml
index a47c8fe..6ad6c82 100644
--- a/res/drawable/work_apps_toggle_background.xml
+++ b/res/drawable/work_apps_toggle_background.xml
@@ -13,16 +13,8 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_enabled="false">
-        <shape android:shape="rectangle">
-            <corners android:radius="@dimen/work_fab_radius" />
-            <solid android:color="?android:attr/colorControlHighlight" />
-            <padding
-                android:left="@dimen/work_profile_footer_padding"
-                android:right="@dimen/work_profile_footer_padding" />
-        </shape>
-    </item>
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="@color/accent_ripple_color">
     <item>
         <shape android:shape="rectangle">
             <corners android:radius="@dimen/work_fab_radius" />
@@ -32,4 +24,4 @@
                 android:right="@dimen/work_profile_footer_padding" />
         </shape>
     </item>
-</selector>
+</ripple>
diff --git a/res/drawable/work_mode_fab_background.xml b/res/drawable/work_mode_fab_background.xml
new file mode 100644
index 0000000..478b887
--- /dev/null
+++ b/res/drawable/work_mode_fab_background.xml
@@ -0,0 +1,27 @@
+<?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.
+-->
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="@color/accent_ripple_color">
+    <item>
+        <shape android:shape="rectangle">
+            <corners android:radius="@dimen/work_fab_radius" />
+            <solid android:color="@color/work_fab_bg_color" />
+            <padding
+                android:left="@dimen/work_profile_footer_padding"
+                android:right="@dimen/work_profile_footer_padding" />
+        </shape>
+    </item>
+</ripple>
diff --git a/res/layout/all_apps.xml b/res/layout/all_apps.xml
index d0d82d4..655c75d 100644
--- a/res/layout/all_apps.xml
+++ b/res/layout/all_apps.xml
@@ -17,42 +17,9 @@
      will bake the left/right padding into that view's background itself. -->
 <com.android.launcher3.allapps.LauncherAllAppsContainerView xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/apps_view"
-    android:theme="?attr/allAppsTheme"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:clipChildren="true"
     android:clipToPadding="false"
     android:focusable="false"
-    android:saveEnabled="false">
-
-    <include
-        layout="@layout/all_apps_bottom_sheet_background"
-        android:visibility="gone" />
-
-    <include
-        layout="@layout/search_results_rv_layout"
-        android:visibility="gone" />
-
-    <include
-        layout="@layout/all_apps_rv_layout"
-        android:visibility="gone" />
-
-    <com.android.launcher3.allapps.FloatingHeaderView
-        android:id="@+id/all_apps_header"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:clipToPadding="false"
-        android:paddingTop="@dimen/all_apps_header_top_padding"
-        android:paddingBottom="@dimen/all_apps_header_bottom_padding"
-        android:orientation="vertical" >
-
-        <include layout="@layout/floating_header_content" />
-
-        <include layout="@layout/all_apps_personal_work_tabs" />
-
-    </com.android.launcher3.allapps.FloatingHeaderView>
-
-    <include layout="@layout/search_container_all_apps" />
-
-    <include layout="@layout/all_apps_fast_scroller" />
-</com.android.launcher3.allapps.LauncherAllAppsContainerView>
\ No newline at end of file
+    android:saveEnabled="false" />
\ No newline at end of file
diff --git a/res/layout/all_apps_bottom_sheet_background.xml b/res/layout/all_apps_bottom_sheet_background.xml
index 12b6b7b..b0157c9 100644
--- a/res/layout/all_apps_bottom_sheet_background.xml
+++ b/res/layout/all_apps_bottom_sheet_background.xml
@@ -16,13 +16,12 @@
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/bottom_sheet_background"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@drawable/bg_rounded_corner_bottom_sheet">
+    android:layout_height="match_parent">
 
     <View
         android:id="@+id/bottom_sheet_handle_area"
         android:layout_width="match_parent"
-        android:layout_height="36dp" />
+        android:layout_height="@dimen/bottom_sheet_handle_area_height" />
 
     <View
         android:id="@+id/bottom_sheet_handle"
diff --git a/res/layout/all_apps_content.xml b/res/layout/all_apps_content.xml
new file mode 100644
index 0000000..925f4d9
--- /dev/null
+++ b/res/layout/all_apps_content.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?><!-- 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.
+-->
+<!-- This file is used by multiple all_apps.xml. Layout consists of all contents
+     showed in all apps screen
+-->
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <include
+        layout="@layout/all_apps_bottom_sheet_background"
+        android:visibility="gone" />
+
+    <include
+        layout="@layout/search_results_rv_layout"
+        android:visibility="gone" />
+
+    <include
+        layout="@layout/all_apps_rv_layout"
+        android:visibility="gone" />
+
+    <com.android.launcher3.allapps.FloatingHeaderView
+        android:id="@+id/all_apps_header"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:clipToPadding="false"
+        android:layout_below="@id/search_container_all_apps"
+        android:paddingTop="@dimen/all_apps_header_top_padding"
+        android:paddingBottom="@dimen/all_apps_header_bottom_padding"
+        android:orientation="vertical" >
+
+        <include layout="@layout/floating_header_content" />
+
+        <include layout="@layout/all_apps_personal_work_tabs" />
+
+    </com.android.launcher3.allapps.FloatingHeaderView>
+
+    <include layout="@layout/all_apps_fast_scroller" />
+</merge>
\ No newline at end of file
diff --git a/res/layout/all_apps_icon_twoline.xml b/res/layout/all_apps_icon_twoline.xml
index 54c7147..b0d02c1 100644
--- a/res/layout/all_apps_icon_twoline.xml
+++ b/res/layout/all_apps_icon_twoline.xml
@@ -19,7 +19,6 @@
     android:id="@+id/icon"
     android:singleLine="false"
     android:lines="2"
-    android:inputType="textMultiLine"
     launcher:iconDisplay="all_apps"
     launcher:centerVertically="true" />
 
diff --git a/res/layout/all_apps_personal_work_tabs.xml b/res/layout/all_apps_personal_work_tabs.xml
index 11143fb..e04b207 100644
--- a/res/layout/all_apps_personal_work_tabs.xml
+++ b/res/layout/all_apps_personal_work_tabs.xml
@@ -16,19 +16,23 @@
 
 <com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto"
     android:id="@+id/tabs"
     android:layout_width="match_parent"
     android:layout_height="@dimen/all_apps_header_pill_height"
     android:layout_gravity="center_horizontal"
+    android:paddingTop="@dimen/all_apps_tabs_vertical_padding"
+    android:paddingBottom="@dimen/all_apps_tabs_vertical_padding"
+    android:layout_marginTop="@dimen/all_apps_tabs_margin_top"
     android:orientation="horizontal"
-    style="@style/TextHeadline">
+    style="@style/TextHeadline"
+    launcher:alignOnIcon="true">
 
     <Button
         android:id="@+id/tab_personal"
         android:layout_width="0dp"
         android:layout_height="match_parent"
         android:layout_marginEnd="@dimen/all_apps_tabs_button_horizontal_padding"
-        android:layout_marginVertical="@dimen/all_apps_tabs_vertical_padding"
         android:layout_weight="1"
         android:background="@drawable/all_apps_tabs_background"
         android:text="@string/all_apps_personal_tab"
@@ -41,7 +45,6 @@
         android:layout_width="0dp"
         android:layout_height="match_parent"
         android:layout_marginStart="@dimen/all_apps_tabs_button_horizontal_padding"
-        android:layout_marginVertical="@dimen/all_apps_tabs_vertical_padding"
         android:layout_weight="1"
         android:background="@drawable/all_apps_tabs_background"
         android:text="@string/all_apps_work_tab"
diff --git a/res/layout/all_apps_search_market.xml b/res/layout/all_apps_search_market.xml
deleted file mode 100644
index 6f2dd3d..0000000
--- a/res/layout/all_apps_search_market.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 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.
--->
-<TextView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/search_market_text"
-    android:layout_width="match_parent"
-    android:layout_height="48dp"
-    android:gravity="center"
-    android:paddingLeft="@dimen/dynamic_grid_edge_margin"
-    android:paddingRight="@dimen/dynamic_grid_edge_margin"
-    android:fontFamily="sans-serif-medium"
-    android:textSize="14sp"
-    android:textColor="?android:attr/colorAccent"
-    android:text="@string/all_apps_search_market_message"
-    android:textAllCaps="true"
-    android:focusable="true"
-    android:background="?android:selectableItemBackground" />
diff --git a/res/layout/all_apps_tabs.xml b/res/layout/all_apps_tabs.xml
index 6dcae21..9710557 100644
--- a/res/layout/all_apps_tabs.xml
+++ b/res/layout/all_apps_tabs.xml
@@ -23,6 +23,7 @@
     android:layout_gravity="center_horizontal|top"
     android:layout_marginTop="@dimen/all_apps_header_pill_height"
     android:clipChildren="true"
+    android:clipToOutline="true"
     android:clipToPadding="false"
     android:descendantFocusability="afterDescendants"
     android:paddingTop="@dimen/all_apps_paged_view_top_padding"
diff --git a/res/layout/deep_shortcut_container.xml b/res/layout/deep_shortcut_container.xml
new file mode 100644
index 0000000..b6c3f56
--- /dev/null
+++ b/res/layout/deep_shortcut_container.xml
@@ -0,0 +1,24 @@
+<?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.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/deep_shortcuts_container"
+    android:background="@drawable/popup_background_material_u"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:tag="@string/popup_container_iterate_children"
+    android:elevation="@dimen/deep_shortcuts_elevation"
+    android:orientation="vertical"/>
\ No newline at end of file
diff --git a/res/layout/deep_shortcut_material_u.xml b/res/layout/deep_shortcut_material_u.xml
new file mode 100644
index 0000000..2e21ddb
--- /dev/null
+++ b/res/layout/deep_shortcut_material_u.xml
@@ -0,0 +1,50 @@
+<?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.
+-->
+<com.android.launcher3.shortcuts.DeepShortcutView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/deep_shortcut_material"
+    android:layout_width="@dimen/bg_popup_item_width"
+    android:layout_height="@dimen/bg_popup_item_height"
+    android:elevation="@dimen/deep_shortcuts_elevation"
+    android:background="@drawable/middle_item_primary"
+    android:theme="@style/PopupItem" >
+
+    <com.android.launcher3.shortcuts.DeepShortcutTextView
+        style="@style/BaseIcon"
+        android:id="@+id/bubble_text"
+        android:background="?android:attr/selectableItemBackground"
+        android:gravity="start|center_vertical"
+        android:textAlignment="viewStart"
+        android:paddingStart="@dimen/deep_shortcuts_text_padding_start"
+        android:paddingEnd="@dimen/popup_padding_end"
+        android:drawablePadding="@dimen/deep_shortcut_drawable_padding"
+        android:singleLine="true"
+        android:ellipsize="end"
+        android:textSize="14sp"
+        android:textColor="?attr/popupTextColor"
+        launcher:layoutHorizontal="true"
+        launcher:iconDisplay="shortcut_popup"
+        launcher:iconSizeOverride="@dimen/deep_shortcut_icon_size" />
+
+    <View
+        android:id="@+id/icon"
+        android:layout_width="@dimen/deep_shortcut_icon_size"
+        android:layout_height="@dimen/deep_shortcut_icon_size"
+        android:layout_marginStart="@dimen/popup_padding_start"
+        android:layout_gravity="start|center_vertical"
+        android:background="@drawable/ic_deepshortcut_placeholder"/>
+</com.android.launcher3.shortcuts.DeepShortcutView>
\ No newline at end of file
diff --git a/res/layout/home_settings.xml b/res/layout/home_settings.xml
index 0f2461a..c0f16e2 100644
--- a/res/layout/home_settings.xml
+++ b/res/layout/home_settings.xml
@@ -12,6 +12,9 @@
         android:layout_marginHorizontal="@dimen/developer_options_filter_margins"
         android:hint="@string/developer_options_filter_hint"
         android:visibility="gone"
+        android:inputType="text"
+        android:maxLines="1"
+        android:imeOptions="actionDone"
         />
 
     <FrameLayout
diff --git a/res/layout/hotseat.xml b/res/layout/hotseat.xml
index 82b0b8d..95ebd94 100644
--- a/res/layout/hotseat.xml
+++ b/res/layout/hotseat.xml
@@ -21,4 +21,5 @@
     android:layout_height="match_parent"
     android:theme="@style/HomeScreenElementTheme"
     android:importantForAccessibility="no"
+    android:preferKeepClear="true"
     launcher:containerType="hotseat" />
\ No newline at end of file
diff --git a/res/layout/launcher.xml b/res/layout/launcher.xml
index 039d8d3..a709fbc 100644
--- a/res/layout/launcher.xml
+++ b/res/layout/launcher.xml
@@ -69,15 +69,15 @@
             android:background="@android:color/transparent" />
 
         <include
+            android:id="@+id/overview_panel"
+            layout="@layout/overview_panel" />
+
+        <include
             android:id="@+id/apps_view"
             layout="@layout/all_apps"
             android:layout_width="match_parent"
             android:layout_height="match_parent" />
 
-        <include
-            android:id="@+id/overview_panel"
-            layout="@layout/overview_panel" />
-
     </com.android.launcher3.dragndrop.DragLayer>
 
 </com.android.launcher3.LauncherRootView>
diff --git a/res/layout/notification_content.xml b/res/layout/notification_content.xml
index 91897e9..0763d48 100644
--- a/res/layout/notification_content.xml
+++ b/res/layout/notification_content.xml
@@ -17,7 +17,7 @@
 <com.android.launcher3.notification.NotificationMainView
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
+    android:layout_height="@dimen/notification_container_height"
     android:orientation="vertical">
 
     <!-- header -->
@@ -25,14 +25,14 @@
         android:id="@+id/header"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:paddingEnd="@dimen/notification_padding"
-        android:paddingStart="@dimen/notification_padding">
+        android:paddingEnd="@dimen/notification_padding_end"
+        android:paddingTop="@dimen/notification_padding_header_top"
+        android:paddingStart="@dimen/notification_header_padding_start">
         <TextView
             android:id="@+id/notification_text"
-            android:paddingTop="@dimen/notification_padding"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_gravity="bottom|start"
+            android:layout_gravity="top|start"
             android:text="@string/notifications_header"
             android:textColor="?android:attr/textColorPrimary"
             android:textSize="@dimen/notification_header_text_size"
@@ -42,7 +42,7 @@
             android:layout_width="@dimen/notification_circle_icon_size"
             android:layout_height="@dimen/notification_circle_icon_size"
             android:background="@drawable/notification_circle"
-            android:layout_gravity="bottom|end"
+            android:layout_gravity="top|end"
             android:gravity="center"
             android:textColor="?android:attr/textColorPrimary"
             android:textSize="@dimen/notification_header_count_text_size"
@@ -54,6 +54,8 @@
         android:id="@+id/main_view"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
+        android:paddingTop="@dimen/notification_padding_top"
+        android:paddingBottom="@dimen/notification_padding_bottom"
         android:focusable="true" >
 
         <LinearLayout
@@ -62,9 +64,7 @@
             android:layout_height="match_parent"
             android:gravity="center_vertical"
             android:orientation="vertical"
-            android:paddingTop="@dimen/notification_padding"
-            android:paddingBottom="@dimen/notification_padding"
-            android:paddingEnd="@dimen/notification_padding"
+            android:paddingEnd="@dimen/notification_padding_end"
             android:paddingStart="@dimen/notification_main_text_padding_start">
             <TextView
                 android:id="@+id/title"
@@ -91,9 +91,8 @@
             android:id="@+id/popup_item_icon"
             android:layout_width="@dimen/notification_icon_size"
             android:layout_height="@dimen/notification_icon_size"
-            android:layout_gravity="start"
-            android:layout_marginTop="@dimen/notification_padding"
-            android:layout_marginStart="@dimen/notification_icon_padding" />
+            android:layout_gravity="start|center_vertical"
+            android:layout_marginStart="@dimen/notification_icon_padding_start"/>
 
     </FrameLayout>
 </com.android.launcher3.notification.NotificationMainView>
\ No newline at end of file
diff --git a/res/layout/page_indicator_dots.xml b/res/layout/page_indicator_dots.xml
new file mode 100644
index 0000000..d5fe51e
--- /dev/null
+++ b/res/layout/page_indicator_dots.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<com.android.launcher3.pageindicators.PageIndicatorDots xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/page_indicator"
+    android:layout_width="match_parent"
+    android:layout_height="@dimen/workspace_page_indicator_height"
+    android:layout_gravity="bottom | center_horizontal"
+    android:theme="@style/HomeScreenElementTheme" />
\ No newline at end of file
diff --git a/res/drawable/ic_block_shadow.xml b/res/layout/popup_container_material_u.xml
similarity index 61%
copy from res/drawable/ic_block_shadow.xml
copy to res/layout/popup_container_material_u.xml
index 045fe8d..d34c500 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/res/layout/popup_container_material_u.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,11 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
+<com.android.launcher3.popup.PopupContainerWithArrow
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+    android:id="@+id/popup_container"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:clipChildren="false"
+    android:clipToPadding="false"
+    android:orientation="vertical"/>
\ No newline at end of file
diff --git a/res/layout/search_container_all_apps.xml b/res/layout/search_container_all_apps.xml
index e1646ba..db218c3 100644
--- a/res/layout/search_container_all_apps.xml
+++ b/res/layout/search_container_all_apps.xml
@@ -21,11 +21,11 @@
     android:layout_centerHorizontal="true"
     android:layout_gravity="top|center_horizontal"
     android:background="@drawable/bg_all_apps_searchbox"
-    android:elevation="1dp"
     android:focusableInTouchMode="true"
     android:gravity="center"
     android:hint="@string/all_apps_search_bar_hint"
     android:imeOptions="actionSearch|flagNoExtractUi"
+    android:importantForAutofill="no"
     android:inputType="text|textNoSuggestions|textCapWords"
     android:maxLines="1"
     android:padding="8dp"
diff --git a/res/layout/search_results_rv_layout.xml b/res/layout/search_results_rv_layout.xml
index 567cb5f..9127521 100644
--- a/res/layout/search_results_rv_layout.xml
+++ b/res/layout/search_results_rv_layout.xml
@@ -18,7 +18,7 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/search_results_list_view"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
+    android:layout_height="match_parent"
     android:clipToPadding="false"
     android:descendantFocusability="afterDescendants"
     android:focusable="true" />
diff --git a/res/layout/secondary_launcher.xml b/res/layout/secondary_launcher.xml
index 635db14..f48f3c0 100644
--- a/res/layout/secondary_launcher.xml
+++ b/res/layout/secondary_launcher.xml
@@ -18,6 +18,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:id="@+id/drag_layer"
+    android:clipChildren="false"
     android:padding="@dimen/dynamic_grid_edge_margin">
 
     <GridView
@@ -41,8 +42,7 @@
         android:contentDescription="@string/all_apps_button_label"
         android:onClick="onAppsButtonClicked" />
 
-    <view
-        class="com.android.launcher3.allapps.SecondaryLauncherAllAppsContainerView"
+    <com.android.launcher3.allapps.SecondaryLauncherAllAppsContainerView
         android:id="@+id/apps_view"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
@@ -52,83 +52,5 @@
         android:saveEnabled="false"
         android:layout_gravity="bottom|end"
         android:background="@drawable/round_rect_primary"
-        android:elevation="2dp"
-        android:visibility="invisible" >
-
-        <include
-            layout="@layout/all_apps_bottom_sheet_background"
-            android:visibility="gone" />
-
-        <include
-            layout="@layout/search_results_rv_layout"
-            android:visibility="gone" />
-
-        <include
-            layout="@layout/all_apps_rv_layout"
-            android:visibility="gone" />
-
-        <com.android.launcher3.allapps.FloatingHeaderView
-            android:id="@+id/all_apps_header"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_below="@id/search_container_all_apps"
-            android:clipToPadding="false"
-            android:paddingTop="@dimen/all_apps_header_top_padding"
-            android:orientation="vertical" >
-
-            <com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip
-                android:id="@+id/tabs"
-                android:layout_width="match_parent"
-                android:layout_height="@dimen/all_apps_header_pill_height"
-                android:orientation="horizontal"
-                style="@style/TextHeadline">
-
-                <Button
-                    android:id="@+id/tab_personal"
-                    android:layout_width="0dp"
-                    android:layout_height="match_parent"
-                    android:layout_weight="1"
-                    android:background="?android:attr/selectableItemBackground"
-                    android:text="@string/all_apps_personal_tab"
-                    android:textAllCaps="true"
-                    android:textColor="@color/all_apps_tab_text"
-                    android:textSize="14sp" />
-
-                <Button
-                    android:id="@+id/tab_work"
-                    android:layout_width="0dp"
-                    android:layout_height="match_parent"
-                    android:layout_weight="1"
-                    android:background="?android:attr/selectableItemBackground"
-                    android:text="@string/all_apps_work_tab"
-                    android:textAllCaps="true"
-                    android:textColor="@color/all_apps_tab_text"
-                    android:textSize="14sp" />
-            </com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip>
-        </com.android.launcher3.allapps.FloatingHeaderView>
-
-        <com.android.launcher3.allapps.search.AppsSearchContainerLayout
-            android:id="@id/search_container_all_apps"
-            android:layout_width="match_parent"
-            android:layout_height="@dimen/all_apps_search_bar_field_height"
-            android:layout_centerHorizontal="true"
-            android:layout_gravity="top|center_horizontal"
-            android:background="@drawable/bg_all_apps_searchbox"
-            android:elevation="1dp"
-            android:focusableInTouchMode="true"
-            android:gravity="center"
-            android:hint="@string/all_apps_search_bar_hint"
-            android:imeOptions="actionSearch|flagNoExtractUi"
-            android:inputType="text|textNoSuggestions|textCapWords"
-            android:maxLines="1"
-            android:padding="8dp"
-            android:saveEnabled="false"
-            android:scrollHorizontally="true"
-            android:singleLine="true"
-            android:textColor="?android:attr/textColorSecondary"
-            android:textColorHint="@drawable/all_apps_search_hint"
-            android:textSize="16sp" />
-
-        <include layout="@layout/all_apps_fast_scroller" />
-    </view>
+        android:visibility="invisible" />
 </com.android.launcher3.secondarydisplay.SecondaryDragLayer>
\ No newline at end of file
diff --git a/res/layout/system_shortcut.xml b/res/layout/system_shortcut.xml
index 21d532e..cbd7fa4 100644
--- a/res/layout/system_shortcut.xml
+++ b/res/layout/system_shortcut.xml
@@ -18,6 +18,7 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="@dimen/bg_popup_item_width"
     android:layout_height="wrap_content"
+    android:id="@+id/system_shortcut"
     android:minHeight="@dimen/bg_popup_item_height"
     android:elevation="@dimen/deep_shortcuts_elevation"
     android:background="@drawable/middle_item_primary"
diff --git a/res/layout/system_shortcut_content.xml b/res/layout/system_shortcut_content.xml
index ddcef09..396a110 100644
--- a/res/layout/system_shortcut_content.xml
+++ b/res/layout/system_shortcut_content.xml
@@ -22,18 +22,15 @@
         android:id="@+id/bubble_text"
         android:background="?android:attr/selectableItemBackground"
         android:gravity="start|center_vertical"
-        android:paddingTop="@dimen/bg_popup_item_vertical_padding"
-        android:paddingBottom="@dimen/bg_popup_item_vertical_padding"
         android:minHeight="@dimen/bg_popup_item_height"
         android:textAlignment="viewStart"
         android:paddingStart="@dimen/deep_shortcuts_text_padding_start"
         android:paddingEnd="@dimen/popup_padding_end"
         android:textSize="14sp"
-        android:minLines="1"
-        android:maxLines="2"
+        android:lines="1"
         android:ellipsize="end"
         android:hyphenationFrequency="full"
-        android:textColor="@color/system_shortcut_text"
+        android:textColor="?attr/popupTextColor"
         launcher:iconDisplay="shortcut_popup"
         launcher:layoutHorizontal="true"
         android:focusable="false" />
@@ -44,5 +41,5 @@
         android:layout_height="@dimen/system_shortcut_icon_size"
         android:layout_marginStart="@dimen/system_shortcut_margin_start"
         android:layout_gravity="start|center_vertical"
-        android:backgroundTint="@color/system_shortcut_text"/>
+        android:backgroundTint="?attr/popupTextColor"/>
 </merge>
diff --git a/res/layout/system_shortcut_icon_only.xml b/res/layout/system_shortcut_icon_only.xml
index 5a81f70..748696e 100644
--- a/res/layout/system_shortcut_icon_only.xml
+++ b/res/layout/system_shortcut_icon_only.xml
@@ -18,8 +18,7 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="@dimen/system_shortcut_header_icon_touch_size"
     android:layout_height="@dimen/system_shortcut_header_icon_touch_size"
-    android:background="?android:attr/selectableItemBackgroundBorderless"
-    android:tint="?attr/iconOnlyShortcutColor"
+    android:tint="?attr/popupTextColor"
     android:tintMode="src_in"
     android:padding="@dimen/system_shortcut_header_icon_padding"
-    android:theme="@style/PopupItem" />
+    android:theme="@style/PopupItemIconOnly" />
diff --git a/res/layout/system_shortcut_icon_only_end.xml b/res/layout/system_shortcut_icon_only_end.xml
new file mode 100644
index 0000000..7059dd7
--- /dev/null
+++ b/res/layout/system_shortcut_icon_only_end.xml
@@ -0,0 +1,26 @@
+<?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.
+-->
+
+<ImageView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="@dimen/system_shortcut_header_icon_touch_size"
+    android:layout_height="@dimen/system_shortcut_header_icon_touch_size"
+    android:tint="?attr/popupTextColor"
+    android:tintMode="src_in"
+    android:padding="@dimen/system_shortcut_header_icon_padding"
+    android:paddingStart="@dimen/system_shortcut_header_icon_padding_inner"
+    android:paddingEnd="@dimen/system_shortcut_header_icon_padding_outer"
+    android:theme="@style/PopupItemIconOnly" />
\ No newline at end of file
diff --git a/res/layout/system_shortcut_icon_only_start.xml b/res/layout/system_shortcut_icon_only_start.xml
new file mode 100644
index 0000000..ad9f55a
--- /dev/null
+++ b/res/layout/system_shortcut_icon_only_start.xml
@@ -0,0 +1,26 @@
+<?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.
+-->
+
+<ImageView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="@dimen/system_shortcut_header_icon_touch_size"
+    android:layout_height="@dimen/system_shortcut_header_icon_touch_size"
+    android:tint="?attr/popupTextColor"
+    android:tintMode="src_in"
+    android:padding="@dimen/system_shortcut_header_icon_padding"
+    android:paddingStart="@dimen/system_shortcut_header_icon_padding_outer"
+    android:paddingEnd="@dimen/system_shortcut_header_icon_padding_inner"
+    android:theme="@style/PopupItemIconOnly" />
diff --git a/res/layout/system_shortcut_icons.xml b/res/layout/system_shortcut_icons_container.xml
similarity index 75%
rename from res/layout/system_shortcut_icons.xml
rename to res/layout/system_shortcut_icons_container.xml
index 775a45f..fa92ba3 100644
--- a/res/layout/system_shortcut_icons.xml
+++ b/res/layout/system_shortcut_icons_container.xml
@@ -16,17 +16,10 @@
 
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/system_shortcut_icons"
+    android:id="@+id/system_shortcuts_container"
     android:layout_width="match_parent"
     android:layout_height="@dimen/system_shortcut_header_height"
     android:orientation="horizontal"
     android:gravity="end|center_vertical"
     android:background="@drawable/single_item_primary"
-    android:elevation="@dimen/deep_shortcuts_elevation"
-    android:clipToPadding="true">
-
-    <Space android:layout_width="0dp"
-           android:layout_height="match_parent"
-           android:layout_weight="1"
-           android:id="@+id/separator"/>
-</LinearLayout>
+    android:elevation="@dimen/deep_shortcuts_elevation"/>
diff --git a/res/layout/system_shortcut_icons.xml b/res/layout/system_shortcut_icons_container_material_u.xml
similarity index 67%
copy from res/layout/system_shortcut_icons.xml
copy to res/layout/system_shortcut_icons_container_material_u.xml
index 775a45f..fbf18af 100644
--- a/res/layout/system_shortcut_icons.xml
+++ b/res/layout/system_shortcut_icons_container_material_u.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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.
@@ -16,17 +16,11 @@
 
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/system_shortcut_icons"
+    android:id="@+id/system_shortcuts_container"
+    android:tag="@string/popup_container_iterate_children"
     android:layout_width="match_parent"
     android:layout_height="@dimen/system_shortcut_header_height"
     android:orientation="horizontal"
     android:gravity="end|center_vertical"
-    android:background="@drawable/single_item_primary"
-    android:elevation="@dimen/deep_shortcuts_elevation"
-    android:clipToPadding="true">
-
-    <Space android:layout_width="0dp"
-           android:layout_height="match_parent"
-           android:layout_weight="1"
-           android:id="@+id/separator"/>
-</LinearLayout>
+    android:background="@drawable/popup_background_material_u"
+    android:elevation="@dimen/deep_shortcuts_elevation"/>
diff --git a/res/drawable/ic_block_shadow.xml b/res/layout/system_shortcut_rows_container.xml
similarity index 60%
copy from res/drawable/ic_block_shadow.xml
copy to res/layout/system_shortcut_rows_container.xml
index 045fe8d..f992ef5 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/res/layout/system_shortcut_rows_container.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,12 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
+
+<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+    android:id="@+id/system_shortcuts_container"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:tag="@string/popup_container_iterate_children"
+    android:elevation="@dimen/deep_shortcuts_elevation"
+    android:orientation="vertical"/>
diff --git a/res/layout/system_shortcut_rows_container_material_u.xml b/res/layout/system_shortcut_rows_container_material_u.xml
new file mode 100644
index 0000000..006e280
--- /dev/null
+++ b/res/layout/system_shortcut_rows_container_material_u.xml
@@ -0,0 +1,25 @@
+<?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.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/system_shortcuts_container"
+    android:background="@drawable/popup_background_material_u"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:tag="@string/popup_container_iterate_children"
+    android:elevation="@dimen/deep_shortcuts_elevation"
+    android:orientation="vertical"/>
diff --git a/res/layout/system_shortcut_spacer.xml b/res/layout/system_shortcut_spacer.xml
new file mode 100644
index 0000000..60ea9ec
--- /dev/null
+++ b/res/layout/system_shortcut_spacer.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<Space
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="0dp"
+    android:layout_height="match_parent"
+    android:layout_weight="1"
+    android:id="@+id/shortcut_spacer"/>
\ No newline at end of file
diff --git a/res/layout/user_folder_icon_normalized.xml b/res/layout/user_folder_icon_normalized.xml
index 11eea60..31f4870 100644
--- a/res/layout/user_folder_icon_normalized.xml
+++ b/res/layout/user_folder_icon_normalized.xml
@@ -30,11 +30,11 @@
     <LinearLayout
         android:id="@+id/folder_footer"
         android:layout_width="match_parent"
-        android:layout_height="48dp"
+        android:layout_height="@dimen/folder_footer_height_default"
         android:clipChildren="false"
         android:orientation="horizontal"
-        android:paddingLeft="12dp"
-        android:paddingRight="12dp" >
+        android:paddingLeft="@dimen/folder_footer_horiz_padding"
+        android:paddingRight="@dimen/folder_footer_horiz_padding">
 
         <com.android.launcher3.folder.FolderNameEditText
             android:id="@+id/folder_name"
@@ -47,10 +47,11 @@
             android:gravity="center_horizontal"
             android:hint="@string/folder_hint_text"
             android:imeOptions="flagNoExtractUi"
+            android:importantForAutofill="no"
             android:singleLine="true"
             android:textColor="?attr/folderTextColor"
             android:textColorHighlight="?android:attr/colorControlHighlight"
-            android:textColorHint="?attr/folderHintColor"/>
+            android:textColorHint="?attr/folderHintTextColor"/>
 
         <com.android.launcher3.pageindicators.PageIndicatorDots
             android:id="@+id/folder_page_indicator"
diff --git a/res/layout/widget_cell_content.xml b/res/layout/widget_cell_content.xml
index feebfe1..6db4fb5 100644
--- a/res/layout/widget_cell_content.xml
+++ b/res/layout/widget_cell_content.xml
@@ -23,6 +23,8 @@
         android:layout_height="0dp"
         android:layout_weight="1"
         android:importantForAccessibility="noHideDescendants"
+        android:hapticFeedbackEnabled="false"
+        android:clipChildren="false"
         android:layout_marginVertical="8dp">
         <!-- The image of the widget. This view does not support padding. Any placement adjustment
              should be done using margins. Width & height are set at runtime after scaling the
diff --git a/res/layout/system_shortcut_icons.xml b/res/layout/widget_shortcut_container_material_u.xml
similarity index 71%
copy from res/layout/system_shortcut_icons.xml
copy to res/layout/widget_shortcut_container_material_u.xml
index 775a45f..aab34e3 100644
--- a/res/layout/system_shortcut_icons.xml
+++ b/res/layout/widget_shortcut_container_material_u.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
+<!-- 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.
@@ -16,17 +16,12 @@
 
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/system_shortcut_icons"
+    android:id="@+id/widget_shortcut_container"
+    android:background="@drawable/popup_background_material_u"
     android:layout_width="match_parent"
     android:layout_height="@dimen/system_shortcut_header_height"
     android:orientation="horizontal"
     android:gravity="end|center_vertical"
-    android:background="@drawable/single_item_primary"
     android:elevation="@dimen/deep_shortcuts_elevation"
-    android:clipToPadding="true">
-
-    <Space android:layout_width="0dp"
-           android:layout_height="match_parent"
-           android:layout_weight="1"
-           android:id="@+id/separator"/>
-</LinearLayout>
+    android:tag="@string/popup_container_iterate_children"
+    android:clipToPadding="true"/>
\ No newline at end of file
diff --git a/res/layout/widgets_bottom_sheet_content.xml b/res/layout/widgets_bottom_sheet_content.xml
index a5f72ef..065c2ed 100644
--- a/res/layout/widgets_bottom_sheet_content.xml
+++ b/res/layout/widgets_bottom_sheet_content.xml
@@ -18,7 +18,6 @@
         android:id="@+id/widgets_bottom_sheet"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="@drawable/bg_rounded_corner_bottom_sheet"
         android:paddingTop="@dimen/bottom_sheet_handle_margin"
         android:orientation="vertical">
         <View
@@ -43,7 +42,7 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:fadeScrollbars="false"
-            android:layout_marginVertical="16dp">
+            android:layout_marginTop="16dp">
             <include layout="@layout/widgets_table_container"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
diff --git a/res/layout/widgets_full_sheet.xml b/res/layout/widgets_full_sheet.xml
index e3f1fca..47bf9e7 100644
--- a/res/layout/widgets_full_sheet.xml
+++ b/res/layout/widgets_full_sheet.xml
@@ -25,7 +25,6 @@
         android:id="@+id/container"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:background="@drawable/bg_widgets_full_sheet"
         android:focusable="true"
         android:importantForAccessibility="no">
 
@@ -35,7 +34,7 @@
             android:layout_height="@dimen/bottom_sheet_handle_height"
             android:layout_marginTop="@dimen/bottom_sheet_handle_margin"
             android:layout_centerHorizontal="true"
-            android:background="@drawable/bg_rounded_corner_bottom_sheet_handle"/>
+            android:background="@drawable/widget_picker_collapse_handle"/>
 
         <TextView
             style="@style/PrimaryHeadline"
@@ -59,6 +58,7 @@
         <com.android.launcher3.views.RecyclerViewFastScroller
             android:id="@+id/fast_scroller"
             android:layout_width="@dimen/fastscroll_width"
+            android:elevation="1dp"
             android:layout_height="match_parent"
             android:layout_alignParentEnd="true"
             android:layout_alignParentTop="true"
diff --git a/res/layout/widgets_full_sheet_paged_view.xml b/res/layout/widgets_full_sheet_paged_view.xml
index dfe226a..069d4bc 100644
--- a/res/layout/widgets_full_sheet_paged_view.xml
+++ b/res/layout/widgets_full_sheet_paged_view.xml
@@ -16,14 +16,14 @@
 <merge xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:launcher="http://schemas.android.com/apk/res-auto">
 
-    <com.android.launcher3.workprofile.PersonalWorkPagedView
+    <com.android.launcher3.widget.picker.WidgetPagedView
         android:id="@+id/widgets_view_pager"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:clipToPadding="false"
         android:layout_below="@id/collapse_handle"
         android:descendantFocusability="afterDescendants"
-        launcher:pageIndicator="@+id/tabs">
+        launcher:pageIndicator="@+id/tabs" >
 
         <com.android.launcher3.widget.picker.WidgetsRecyclerView
             android:id="@+id/primary_widgets_list_view"
@@ -39,16 +39,16 @@
             android:paddingHorizontal="@dimen/widget_list_horizontal_margin"
             android:clipToPadding="false" />
 
-    </com.android.launcher3.workprofile.PersonalWorkPagedView>
+    </com.android.launcher3.widget.picker.WidgetPagedView>
 
     <!-- SearchAndRecommendationsView contains the tab layout as well -->
-    <com.android.launcher3.widget.picker.SearchAndRecommendationsView
+    <com.android.launcher3.views.StickyHeaderLayout
         android:id="@+id/search_and_recommendations_container"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginHorizontal="@dimen/widget_list_horizontal_margin"
         android:layout_below="@id/collapse_handle"
         android:paddingBottom="0dp"
+        android:clipToOutline="true"
         android:orientation="vertical">
 
         <TextView
@@ -58,7 +58,7 @@
             android:gravity="center_horizontal"
             android:textSize="24sp"
             android:layout_marginTop="24dp"
-            android:textColor="?android:attr/textColorSecondary"
+            android:textColor="?attr/widgetPickerTitleColor"
             android:text="@string/widget_button_text"/>
 
         <FrameLayout
@@ -66,9 +66,10 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:elevation="0.1dp"
-            android:background="?android:attr/colorBackground"
+            android:paddingHorizontal="@dimen/widget_list_horizontal_margin"
+            android:background="?attr/widgetPickerPrimarySurfaceColor"
             android:paddingBottom="8dp"
-            android:clipToPadding="false">
+            launcher:layout_sticky="true">
             <include layout="@layout/widgets_search_bar" />
         </FrameLayout>
 
@@ -77,7 +78,8 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginTop="8dp"
-            android:background="@drawable/widgets_recommendation_background"
+            android:layout_marginHorizontal="@dimen/widget_list_horizontal_margin"
+            android:background="@drawable/widgets_surface_background"
             android:paddingVertical="@dimen/recommended_widgets_table_vertical_padding"
             android:visibility="gone" />
 
@@ -88,10 +90,10 @@
             android:gravity="center_horizontal"
             android:orientation="horizontal"
             android:paddingVertical="8dp"
-            android:paddingLeft="@dimen/widget_tabs_horizontal_padding"
-            android:paddingRight="@dimen/widget_tabs_horizontal_padding"
-            android:background="?android:attr/colorBackground"
-            style="@style/TextHeadline">
+            android:paddingHorizontal="@dimen/widget_list_horizontal_margin"
+            android:background="?attr/widgetPickerPrimarySurfaceColor"
+            style="@style/TextHeadline"
+            launcher:layout_sticky="true">
 
             <Button
                 android:id="@+id/tab_personal"
@@ -100,9 +102,9 @@
                 android:layout_marginEnd="@dimen/widget_tabs_button_horizontal_padding"
                 android:layout_marginVertical="@dimen/widget_apps_tabs_vertical_padding"
                 android:layout_weight="1"
-                android:background="@drawable/all_apps_tabs_background"
+                android:background="@drawable/widget_picker_tabs_background"
                 android:text="@string/widgets_full_sheet_personal_tab"
-                android:textColor="@color/all_apps_tab_text"
+                android:textColor="@color/widget_picker_tab_text"
                 android:textSize="14sp"
                 style="?android:attr/borderlessButtonStyle" />
 
@@ -113,12 +115,12 @@
                 android:layout_marginEnd="@dimen/widget_tabs_button_horizontal_padding"
                 android:layout_marginVertical="@dimen/widget_apps_tabs_vertical_padding"
                 android:layout_weight="1"
-                android:background="@drawable/all_apps_tabs_background"
+                android:background="@drawable/widget_picker_tabs_background"
                 android:text="@string/widgets_full_sheet_work_tab"
-                android:textColor="@color/all_apps_tab_text"
+                android:textColor="@color/widget_picker_tab_text"
                 android:textSize="14sp"
                 style="?android:attr/borderlessButtonStyle" />
         </com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip>
 
-    </com.android.launcher3.widget.picker.SearchAndRecommendationsView>
+    </com.android.launcher3.views.StickyHeaderLayout>
 </merge>
\ No newline at end of file
diff --git a/res/layout/widgets_full_sheet_recyclerview.xml b/res/layout/widgets_full_sheet_recyclerview.xml
index 6a5d6cb..25bbad4 100644
--- a/res/layout/widgets_full_sheet_recyclerview.xml
+++ b/res/layout/widgets_full_sheet_recyclerview.xml
@@ -13,7 +13,8 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<merge xmlns:android="http://schemas.android.com/apk/res/android">
+<merge xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto" >
     <com.android.launcher3.widget.picker.WidgetsRecyclerView
         android:id="@+id/primary_widgets_list_view"
         android:layout_below="@id/collapse_handle"
@@ -23,13 +24,14 @@
         android:clipToPadding="false" />
 
     <!-- SearchAndRecommendationsView without the tab layout as well -->
-    <com.android.launcher3.widget.picker.SearchAndRecommendationsView
+    <com.android.launcher3.views.StickyHeaderLayout
         android:id="@+id/search_and_recommendations_container"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginHorizontal="@dimen/widget_list_horizontal_margin"
         android:layout_below="@id/collapse_handle"
         android:paddingBottom="16dp"
+        android:layout_marginHorizontal="@dimen/widget_list_horizontal_margin"
+        android:clipToOutline="true"
         android:orientation="vertical">
 
         <TextView
@@ -39,7 +41,7 @@
             android:gravity="center_horizontal"
             android:textSize="24sp"
             android:layout_marginTop="24dp"
-            android:textColor="?android:attr/textColorSecondary"
+            android:textColor="?attr/widgetPickerTitleColor"
             android:text="@string/widget_button_text"/>
 
         <FrameLayout
@@ -47,9 +49,10 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:elevation="0.1dp"
-            android:background="?android:attr/colorBackground"
+            android:background="?attr/widgetPickerPrimarySurfaceColor"
             android:paddingBottom="8dp"
-            android:clipToPadding="false">
+            android:clipToPadding="false"
+            launcher:layout_sticky="true" >
             <include layout="@layout/widgets_search_bar" />
         </FrameLayout>
 
@@ -58,9 +61,9 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginTop="8dp"
-            android:background="@drawable/widgets_recommendation_background"
+            android:background="@drawable/widgets_surface_background"
             android:paddingVertical="@dimen/recommended_widgets_table_vertical_padding"
             android:visibility="gone" />
-    </com.android.launcher3.widget.picker.SearchAndRecommendationsView>
+    </com.android.launcher3.views.StickyHeaderLayout>
 
 </merge>
\ No newline at end of file
diff --git a/res/layout/widgets_list_row_header.xml b/res/layout/widgets_list_row_header.xml
index 3cdc2e8..6d26ce3 100644
--- a/res/layout/widgets_list_row_header.xml
+++ b/res/layout/widgets_list_row_header.xml
@@ -19,12 +19,12 @@
     android:id="@+id/widgets_list_header"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:paddingVertical="@dimen/widget_list_header_view_vertical_padding"
     android:orientation="horizontal"
     android:importantForAccessibility="yes"
     android:focusable="true"
     launcher:appIconSize="48dp"
-    android:descendantFocusability="afterDescendants">
+    android:descendantFocusability="afterDescendants"
+    android:background="@drawable/bg_widgets_header" >
 
     <ImageView
         android:id="@+id/app_icon"
@@ -66,8 +66,11 @@
 
     <!-- This checkbox is not clickable. The outermost LinearLayout is responsible to handle all
          click event and update the checkbox state. -->
-    <CheckBox
+    <ImageView
+        android:duplicateParentState="true"
         android:id="@+id/toggle"
+        android:alpha=".6"
+        android:src="@drawable/widgets_tray_expand_button"
         android:layout_marginHorizontal="16dp"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
@@ -75,7 +78,6 @@
         android:layout_alignParentEnd="true"
         android:enabled="false"
         android:clickable="false"
-        android:importantForAccessibility="no"
-        android:button="@drawable/widgets_tray_expand_button"/>
+        android:importantForAccessibility="no" />
 
 </com.android.launcher3.widget.picker.WidgetsListHeader>
\ No newline at end of file
diff --git a/res/layout/widgets_list_row_header_two_pane.xml b/res/layout/widgets_list_row_header_two_pane.xml
new file mode 100644
index 0000000..c0a6ea8
--- /dev/null
+++ b/res/layout/widgets_list_row_header_two_pane.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<com.android.launcher3.widget.picker.WidgetsListHeader xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/widgets_list_header"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="horizontal"
+    android:importantForAccessibility="yes"
+    android:focusable="true"
+    launcher:appIconSize="48dp"
+    android:descendantFocusability="afterDescendants"
+    android:background="@drawable/bg_widgets_header_two_pane" >
+
+    <ImageView
+        android:id="@+id/app_icon"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginHorizontal="16dp"
+        android:importantForAccessibility="no"
+        tools:src="@drawable/ic_corp"/>
+
+    <LinearLayout
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical"
+        android:layout_weight="1"
+        android:orientation="vertical"
+        android:duplicateParentState="true">
+
+        <TextView
+            android:id="@+id/app_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="start|center_vertical"
+            android:ellipsize="end"
+            android:maxLines="1"
+            android:textColor="?attr/widgetPickerHeaderAppTitleColor"
+            android:textSize="16sp"
+            android:duplicateParentState="true"
+            tools:text="App name" />
+
+        <TextView
+            android:id="@+id/app_subtitle"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:ellipsize="end"
+            android:maxLines="1"
+            android:textColor="?attr/widgetPickerHeaderAppSubtitleColor"
+            android:alpha="0.7"
+            android:duplicateParentState="true"
+            tools:text="m widgets, n shortcuts" />
+
+    </LinearLayout>
+</com.android.launcher3.widget.picker.WidgetsListHeader>
diff --git a/res/layout/widgets_search_bar.xml b/res/layout/widgets_search_bar.xml
index 9178a75..a615c5e 100644
--- a/res/layout/widgets_search_bar.xml
+++ b/res/layout/widgets_search_bar.xml
@@ -23,8 +23,9 @@
         android:layout_weight="1"
         android:inputType="text"
         android:imeOptions="actionSearch"
+        android:importantForAutofill="no"
         android:textColor="?android:attr/textColorPrimary"
-        android:textColorHint="?android:attr/textColorSecondary"/>
+        android:textColorHint="?attr/widgetPickerSearchTextColor"/>
 
     <ImageButton
         android:id="@+id/widgets_search_cancel_button"
diff --git a/res/layout/widgets_table_container.xml b/res/layout/widgets_table_container.xml
index ab96b1343..4a32672 100644
--- a/res/layout/widgets_table_container.xml
+++ b/res/layout/widgets_table_container.xml
@@ -16,5 +16,6 @@
 <com.android.launcher3.widget.picker.WidgetsListTableView
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/widgets_table"
+    android:background="@drawable/bg_widgets_content"
     android:layout_width="match_parent"
     android:layout_height="wrap_content" />
diff --git a/res/layout/widgets_two_pane_sheet.xml b/res/layout/widgets_two_pane_sheet.xml
new file mode 100644
index 0000000..01c1b10
--- /dev/null
+++ b/res/layout/widgets_two_pane_sheet.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="utf-8"?><!-- 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.
+-->
+<com.android.launcher3.widget.picker.WidgetsTwoPaneSheet
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:theme="?attr/widgetsTheme">
+
+    <com.android.launcher3.views.SpringRelativeLayout
+        android:id="@+id/container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:focusable="true"
+        android:importantForAccessibility="no">
+
+        <View
+            android:id="@+id/collapse_handle"
+            android:layout_width="@dimen/bottom_sheet_handle_width"
+            android:layout_height="@dimen/bottom_sheet_handle_height"
+            android:layout_marginTop="@dimen/bottom_sheet_handle_margin"
+            android:layout_centerHorizontal="true"
+            android:background="@drawable/widget_picker_collapse_handle"/>
+
+        <TextView
+            android:id="@+id/title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="24dp"
+            android:gravity="center_horizontal"
+            android:layout_below="@id/collapse_handle"
+            android:paddingHorizontal="@dimen/widget_list_horizontal_margin_two_pane"
+            android:text="@string/widget_button_text"
+            android:textColor="?attr/widgetPickerTitleColor"
+            android:textSize="24sp" />
+
+        <LinearLayout
+            android:id="@+id/linear_layout_container"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_below="@id/title">
+
+            <FrameLayout
+                android:id="@+id/recycler_view_container"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_gravity="start"
+                android:layout_weight="0.33">
+                <TextView
+                    android:id="@+id/fast_scroller_popup"
+                    style="@style/FastScrollerPopup"
+                    android:layout_marginEnd="@dimen/fastscroll_popup_margin" />
+
+                <!-- Fast scroller popup -->
+                <com.android.launcher3.views.RecyclerViewFastScroller
+                    android:id="@+id/fast_scroller"
+                    android:layout_width="@dimen/fastscroll_width"
+                    android:layout_height="match_parent"
+                    android:layout_marginEnd="@dimen/fastscroll_end_margin" />
+
+                <com.android.launcher3.widget.picker.WidgetsRecyclerView
+                    android:id="@+id/search_widgets_list_view"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:clipToPadding="false"
+                    android:paddingHorizontal="@dimen/widget_list_horizontal_margin_two_pane"
+                    android:visibility="gone" />
+            </FrameLayout>
+
+            <FrameLayout
+                android:id="@+id/right_pane_container"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="0.67"
+                android:layout_marginEnd="@dimen/widget_list_horizontal_margin_two_pane"
+                android:paddingTop="@dimen/widget_list_horizontal_margin_two_pane"
+                android:gravity="end"
+                android:layout_gravity="end"
+                android:orientation="horizontal">
+                <TextView
+                    android:id="@+id/no_widgets_text"
+                    style="@style/PrimaryHeadline"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:gravity="center"
+                    android:textSize="18sp"
+                    android:visibility="gone"
+                    tools:text="No widgets available" />
+                <ScrollView
+                    android:id="@+id/right_pane_scroll_view"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:fillViewport="true">
+                    <LinearLayout
+                        android:orientation="vertical"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:gravity="center_vertical"
+                        android:clipToOutline="true"
+                        android:paddingBottom="36dp"
+                        android:background="@drawable/widgets_surface_background"
+                        android:id="@+id/right_pane">
+                        <com.android.launcher3.widget.picker.WidgetsRecommendationTableLayout
+                            android:id="@+id/recommended_widget_table"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:paddingHorizontal=
+                                "@dimen/widget_list_horizontal_margin_two_pane"
+                            android:visibility="gone" />
+                    </LinearLayout>
+                </ScrollView>
+            </FrameLayout>
+        </LinearLayout>
+    </com.android.launcher3.views.SpringRelativeLayout>
+</com.android.launcher3.widget.picker.WidgetsTwoPaneSheet>
diff --git a/res/layout/widgets_two_pane_sheet_paged_view.xml b/res/layout/widgets_two_pane_sheet_paged_view.xml
new file mode 100644
index 0000000..442957a
--- /dev/null
+++ b/res/layout/widgets_two_pane_sheet_paged_view.xml
@@ -0,0 +1,119 @@
+<?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.
+-->
+<merge xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto">
+
+    <FrameLayout
+        android:id="@+id/widgets_two_pane_sheet_paged_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="start"
+        android:paddingHorizontal="@dimen/widget_list_horizontal_margin_two_pane"
+        android:layout_gravity="start"
+        android:layout_alignParentStart="true">
+        <com.android.launcher3.widget.picker.WidgetPagedView
+            android:id="@+id/widgets_view_pager"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:clipToPadding="false"
+            android:descendantFocusability="afterDescendants"
+            launcher:pageIndicator="@+id/tabs" >
+
+            <com.android.launcher3.widget.picker.WidgetsRecyclerView
+                android:id="@+id/primary_widgets_list_view"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:clipToPadding="false" />
+
+            <com.android.launcher3.widget.picker.WidgetsRecyclerView
+                android:id="@+id/work_widgets_list_view"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:clipToPadding="false" />
+
+        </com.android.launcher3.widget.picker.WidgetPagedView>
+
+        <!-- SearchAndRecommendationsView without the tab layout as well -->
+        <com.android.launcher3.views.StickyHeaderLayout
+            android:id="@+id/search_and_recommendations_container"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:clipToOutline="true"
+            android:orientation="vertical">
+
+            <FrameLayout
+                android:id="@+id/search_bar_container"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="?attr/widgetPickerPrimarySurfaceColor"
+                android:clipToPadding="false"
+                android:elevation="0.1dp"
+                android:paddingBottom="8dp"
+                launcher:layout_sticky="true">
+
+                <include layout="@layout/widgets_search_bar" />
+            </FrameLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:id="@+id/suggestions_header"
+                android:layout_marginTop="8dp"
+                android:orientation="horizontal"
+                android:background="?attr/widgetPickerPrimarySurfaceColor"
+                launcher:layout_sticky="true">
+            </LinearLayout>
+
+            <com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip
+                android:id="@+id/tabs"
+                android:layout_width="match_parent"
+                android:layout_height="64dp"
+                android:gravity="center_horizontal"
+                android:orientation="horizontal"
+                android:paddingVertical="8dp"
+                android:background="?attr/widgetPickerPrimarySurfaceColor"
+                style="@style/TextHeadline"
+                launcher:layout_sticky="true">
+
+                <Button
+                    android:id="@+id/tab_personal"
+                    android:layout_width="0dp"
+                    android:layout_height="match_parent"
+                    android:layout_marginEnd="@dimen/widget_tabs_button_horizontal_padding"
+                    android:layout_marginVertical="@dimen/widget_apps_tabs_vertical_padding"
+                    android:layout_weight="1"
+                    android:background="@drawable/widget_picker_tabs_background"
+                    android:text="@string/widgets_full_sheet_personal_tab"
+                    android:textColor="@color/widget_picker_tab_text"
+                    android:textSize="14sp"
+                    style="?android:attr/borderlessButtonStyle" />
+
+                <Button
+                    android:id="@+id/tab_work"
+                    android:layout_width="0dp"
+                    android:layout_height="match_parent"
+                    android:layout_marginEnd="@dimen/widget_tabs_button_horizontal_padding"
+                    android:layout_marginVertical="@dimen/widget_apps_tabs_vertical_padding"
+                    android:layout_weight="1"
+                    android:background="@drawable/widget_picker_tabs_background"
+                    android:text="@string/widgets_full_sheet_work_tab"
+                    android:textColor="@color/widget_picker_tab_text"
+                    android:textSize="14sp"
+                    style="?android:attr/borderlessButtonStyle" />
+
+            </com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip>
+        </com.android.launcher3.views.StickyHeaderLayout>
+    </FrameLayout>
+</merge>
diff --git a/res/layout/widgets_two_pane_sheet_recyclerview.xml b/res/layout/widgets_two_pane_sheet_recyclerview.xml
new file mode 100644
index 0000000..c9c855c
--- /dev/null
+++ b/res/layout/widgets_two_pane_sheet_recyclerview.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?><!-- 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.
+-->
+<merge xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:launcher="http://schemas.android.com/apk/res-auto">
+
+    <FrameLayout
+        android:id="@+id/widgets_two_pane_sheet_recyclerview"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="start"
+        android:layout_gravity="start"
+        android:layout_alignParentStart="true">
+
+        <com.android.launcher3.widget.picker.WidgetsRecyclerView
+            android:id="@+id/primary_widgets_list_view"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginHorizontal="@dimen/widget_list_horizontal_margin_two_pane"
+            android:clipToPadding="false" />
+
+        <!-- SearchAndRecommendationsView without the tab layout as well -->
+        <com.android.launcher3.views.StickyHeaderLayout
+            android:id="@+id/search_and_recommendations_container"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:clipToOutline="true"
+            android:orientation="vertical">
+
+            <FrameLayout
+                android:id="@+id/search_bar_container"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="?attr/widgetPickerPrimarySurfaceColor"
+                android:clipToPadding="false"
+                android:elevation="0.1dp"
+                android:paddingBottom="8dp"
+                android:paddingHorizontal="@dimen/widget_list_horizontal_margin_two_pane"
+                launcher:layout_sticky="true">
+
+                <include layout="@layout/widgets_search_bar" />
+            </FrameLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:id="@+id/suggestions_header"
+                android:layout_marginTop="8dp"
+                android:layout_marginHorizontal="@dimen/widget_list_horizontal_margin_two_pane"
+                android:paddingBottom="16dp"
+                android:orientation="horizontal"
+                android:background="?attr/widgetPickerPrimarySurfaceColor"
+                launcher:layout_sticky="true">
+            </LinearLayout>
+        </com.android.launcher3.views.StickyHeaderLayout>
+    </FrameLayout>
+</merge>
\ No newline at end of file
diff --git a/res/layout/work_apps_paused.xml b/res/layout/work_apps_paused.xml
index 79bce70..52c5a49 100644
--- a/res/layout/work_apps_paused.xml
+++ b/res/layout/work_apps_paused.xml
@@ -21,7 +21,7 @@
 
     <TextView
         style="@style/PrimaryHeadline"
-        android:textColor="?attr/workProfileOverlayTextColor"
+        android:textColor="?android:attr/textColorPrimary"
         android:id="@+id/work_apps_paused_title"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
@@ -45,10 +45,10 @@
         android:layout_width="wrap_content"
         android:layout_height="@dimen/rounded_button_height"
         android:id="@+id/enable_work_apps"
-        android:textColor="?attr/workProfileOverlayTextColor"
+        android:textColor="?android:attr/textColorPrimary"
         android:text="@string/work_apps_enable_btn_text"
         android:textAlignment="center"
-        android:background="@drawable/rounded_action_button"
+        android:background="@drawable/bg_work_apps_paused_action_button"
         android:paddingStart="16dp"
         android:paddingEnd="16dp"
         android:textSize="14sp" />
diff --git a/res/layout/work_mode_fab.xml b/res/layout/work_mode_fab.xml
index d2fa5fa..32e3b77 100644
--- a/res/layout/work_mode_fab.xml
+++ b/res/layout/work_mode_fab.xml
@@ -12,23 +12,36 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.allapps.WorkModeSwitch xmlns:android="http://schemas.android.com/apk/res/android"
-    style="@style/TextHeadline"
+<com.android.launcher3.allapps.WorkModeSwitch
+    xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/work_mode_toggle"
     android:layout_alignParentBottom="true"
     android:layout_alignParentEnd="true"
     android:layout_height="@dimen/work_fab_height"
     android:layout_width="wrap_content"
-    android:gravity="center"
-    android:includeFontPadding="false"
-    android:textDirection="locale"
-    android:drawableTint="@color/all_apps_tab_text"
-    android:textColor="@color/all_apps_tab_text"
-    android:textSize="14sp"
-    android:background="@drawable/work_apps_toggle_background"
-    android:drawablePadding="8dp"
-    android:drawableStart="@drawable/ic_corp_off"
-    android:layout_marginBottom="@dimen/work_fab_margin_bottom"
-    android:paddingLeft="@dimen/work_mode_fab_padding"
-    android:paddingRight="@dimen/work_mode_fab_padding"
-    android:text="@string/work_apps_pause_btn_text" />
\ No newline at end of file
+    android:minHeight="@dimen/work_fab_height"
+    android:gravity="center_vertical"
+    android:background="@drawable/work_mode_fab_background"
+    android:forceHasOverlappingRendering="false"
+    android:contentDescription="@string/work_apps_pause_btn_text"
+    android:animateLayoutChanges="true">
+    <ImageView
+        android:id="@+id/work_icon"
+        android:layout_width="@dimen/work_fab_icon_size"
+        android:layout_height="@dimen/work_fab_icon_size"
+        android:importantForAccessibility="no"
+        android:src="@drawable/ic_corp_off"
+        android:tint="@color/work_fab_icon_color"
+        android:scaleType="center"/>
+    <TextView
+        android:id="@+id/pause_text"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textColor="@color/work_fab_icon_color"
+        android:textSize="14sp"
+        android:includeFontPadding="false"
+        android:textDirection="locale"
+        android:text="@string/work_apps_pause_btn_text"
+        android:layout_marginStart="@dimen/work_fab_text_start_margin"
+        style="@style/TextHeadline"/>
+</com.android.launcher3.allapps.WorkModeSwitch>
diff --git a/res/drawable/ic_block_shadow.xml b/res/layout/workspace_screen_foldable.xml
similarity index 61%
copy from res/drawable/ic_block_shadow.xml
copy to res/layout/workspace_screen_foldable.xml
index 045fe8d..1e01250 100644
--- a/res/drawable/ic_block_shadow.xml
+++ b/res/layout/workspace_screen_foldable.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2020 The Android Open Source Project
+<!-- 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
+          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,
@@ -13,7 +13,11 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.launcher3.graphics.ShadowDrawable
+
+<com.android.launcher3.MultipageCellLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_block_no_shadow"
-    android:elevation="@dimen/drop_target_shadow_elevation" />
+    xmlns:launcher="http://schemas.android.com/apk/res-auto"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:hapticFeedbackEnabled="false"
+    launcher:containerType="workspace" />
\ No newline at end of file
diff --git a/res/raw/all_set_page_bg.json b/res/raw/all_set_page_bg.json
deleted file mode 100644
index 9705837..0000000
--- a/res/raw/all_set_page_bg.json
+++ /dev/null
@@ -1 +0,0 @@
-{"v":"5.7.8","fr":24,"ip":0,"op":72,"w":2472,"h":5352,"nm":"3Second_MAIN_Welcome","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 60","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1508,1364,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"PinkFlower","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":72,"s":[56]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.986},"o":{"x":0.167,"y":0.167},"t":0,"s":[1505.832,1379.455,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.01},"t":38,"s":[1505.832,575,0],"to":[0,0,0],"ti":[0,0,0]},{"t":72,"s":[1505.832,1379.455,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[75.615,-96.908],[89.338,-70.276],[111.99,-50.668],[111.764,-20.709],[122.709,7.18],[108.586,33.602],[105.316,63.383],[80.533,80.216],[63.797,105.066],[34.03,108.453],[7.663,122.679],[-20.269,111.845],[-50.226,112.189],[-69.924,89.614],[-96.61,75.997],[-103.56,46.854],[-120.861,22.395],[-113.472,-6.639],[-117.425,-36.337],[-97.389,-58.612],[-87.087,-86.745],[-58.996,-97.158],[-36.8,-117.281],[-7.086,-113.445],[21.918,-120.948],[46.446,-103.744]],"o":[[-75.615,96.909],[-89.338,70.276],[-111.99,50.668],[-111.764,20.709],[-122.709,-7.18],[-108.586,-33.602],[-105.316,-63.383],[-80.533,-80.216],[-63.797,-105.066],[-34.03,-108.453],[-7.663,-122.679],[20.269,-111.845],[50.226,-112.188],[69.924,-89.614],[96.61,-75.997],[103.56,-46.854],[120.861,-22.395],[113.472,6.64],[117.425,36.337],[97.389,58.612],[87.088,86.745],[58.995,97.158],[36.8,117.281],[7.087,113.445],[-21.918,120.948],[-46.446,103.744]],"v":[[733.209,572.105],[531.711,675.932],[383.354,847.313],[156.685,845.606],[-54.323,928.412],[-254.235,821.562],[-479.555,796.823],[-606.913,609.309],[-794.927,482.691],[-820.554,257.47],[-928.191,57.981],[-846.217,-153.353],[-848.817,-380.013],[-678.021,-529.044],[-574.99,-730.949],[-354.499,-783.537],[-169.439,-914.435],[50.234,-858.532],[274.928,-888.434],[443.46,-736.847],[656.313,-658.903],[735.094,-446.359],[887.344,-278.426],[858.327,-53.616],[915.095,165.835],[784.928,351.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.839215686275,0.439215686275,0.388235294118,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.839215746113,0.439215716194,0.388235324037,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":true},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"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":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":288,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Ellipse_Bottom","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.248]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-56]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.172]},"t":38,"s":[-38]},{"t":72,"s":[-56]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.032]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[1720]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.022]},"t":38,"s":[1544]},{"t":72,"s":[1720]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.034]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[4069]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.024]},"t":38,"s":[3872]},{"t":72,"s":[4069]}],"ix":4}},"a":{"a":0,"k":[164.438,1433.781,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3079.125,4685.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.305882352941,0.309803921569,0.321568627451,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.882353001015,0.894118006089,0.886274988511,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":true},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"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":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0}],"markers":[]}
diff --git a/res/raw/downgrade_schema.json b/res/raw/downgrade_schema.json
index b8d0c6f..9929916 100644
--- a/res/raw/downgrade_schema.json
+++ b/res/raw/downgrade_schema.json
@@ -2,8 +2,11 @@
   // Note: Comments are not supported in JSON schema, but android parser is lenient.
 
   // Maximum DB version supported by this schema
-  "version" : 31,
-
+  "version" : 32,
+  "downgrade_to_31" : [
+    "ALTER TABLE favorites ADD COLUMN iconPackage TEXT;",
+    "ALTER TABLE favorites ADD COLUMN iconResource TEXT;"
+  ],
   "downgrade_to_30" : [],
   "downgrade_to_29" : [],
   "downgrade_to_28" : [
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 18fa12f..ceae567 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Kortpad is nie beskikbaar nie"</string>
     <string name="home_screen" msgid="5629429142036709174">"Tuis"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Verdeelde skerm"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Verdeel bo"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Verdeel links"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Verdeel regs"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Programinligting vir %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Stoor apppaar"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Raak en hou om \'n legstuk te skuif."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dubbeltik en hou om \'n legstuk te skuif of gebruik gepasmaakte handelinge."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d breed by %2$d hoog"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g>-legstuk"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Raak en hou die legstuk om dit op die Tuisskerm rond te beweeg"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Voeg by Tuisskerm"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Raak en hou die legstuk om dit op die tuisskerm rond te beweeg"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Voeg by tuisskerm"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g>-legstuk by tuisskerm gevoeg"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Voorstelle"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# legstuk}other{# legstukke}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# kortpad}other{# kortpaaie}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Persoonlik"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Werk"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Gesprekke"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Neem notas"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Nuttige inligting binne jou bereik"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Jy kan legstukke by jou tuisskerm voeg om inligting te kry sonder om programme oop te maak"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Jy kan legstukke by jou tuisskerm voeg om inligting te kry sonder om programme oop te maak"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Tik om legstukinstellings te verander"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Het dit"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Verander legstukinstellings"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Deursoek programme"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Laai tans programme …"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Kon geen programme kry wat by \"<xliff:g id="QUERY">%1$s</xliff:g>\" pas nie"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Soek meer programme"</string>
     <string name="label_application" msgid="8531721983832654978">"Program"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Alle programme"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Kennisgewings"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Raak en hou om \'n kortpad te skuif."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dubbeltik en hou om \'n kortpad te skuif of gebruik gepasmaakte handelinge."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Geen plek op hierdie tuisskerm nie"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Geen plek op hierdie tuisskerm nie"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Geen plek meer in die Gunstelinge-laai nie"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Programmelys"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Soekresultate"</string>
@@ -75,22 +74,21 @@
     <string name="uninstall_drop_target_label" msgid="4722034217958379417">"Deïnstalleer"</string>
     <string name="app_info_drop_target_label" msgid="692894985365717661">"Programinligting"</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"Installeer"</string>
-    <string name="dismiss_prediction_label" msgid="3357562989568808658">"Moenie program voorstel nie"</string>
+    <string name="dismiss_prediction_label" msgid="3357562989568808658">"Moenie voorstel nie"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"Vasspeldvoorspelling"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"installeer kortpaaie"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Laat \'n program toe om kortpaaie by te voeg sonder gebruikerinmenging."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"lees Tuis-instellings en -kortpaaie"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Laat die program toe om die instellings en kortpaaie in Tuis te lees."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"skryf Tuis-instellings en -kortpaaie"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Laat die program toe om die instellings en kortpaaie in Tuis te verander."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> word nie toegelaat om foonoproepe te maak nie"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"lees tuis-instellings en -kortpaaie"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Laat die program toe om die instellings en kortpaaie op tuisskerm te lees."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"skryf tuis-instellings en -kortpaaie"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Laat die program toe om die instellings en kortpaaie op tuisskerm te verander."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Kan nie legstuk laai nie"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Legstukinstellings"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Tik om opstelling te voltooi"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Dit is \'n stelselprogram en kan nie gedeïnstalleer word nie."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Wysig naam"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Het <xliff:g id="APP_NAME">%1$s</xliff:g> gedeaktiveer"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} het # kennisgewing}other{{app_name} het # kennisgewings}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} het # kennisgewing}other{{app_name} het # kennisgewings}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Bladsy %1$d van %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Tuisskerm %1$d van %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Nuwe tuisskermbladsy"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Vouer: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> of meer items"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Muurpapiere"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Muurpapier en styl"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Wysig tuisskerm"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Tuis-instellings"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Gedeaktiveer deur jou administrateur"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Laat toe dat tuisskerm gedraai word"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Laat toe dat tuisskerm gedraai word"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Wanneer foon gedraai word"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Kennisgewingkolle"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Aan"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Skakel programkennisgewings vir <xliff:g id="NAME">%1$s</xliff:g> aan om kennisgewingkolle te sien"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Verander instellings"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Wys kennisgewingkolle"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Voeg programikone by tuisskerm"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Ontwikkelaaropsies"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Voeg programikone by tuisskerm"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Vir nuwe programme"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Onbekend"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Verwyder"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> installeer tans; <xliff:g id="PROGRESS">%2$s</xliff:g> voltooi"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> laai tans af, <xliff:g id="PROGRESS">%2$s</xliff:g> voltooid"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> wag tans om te installeer"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Programopdatering word vereis"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Die program vir hierdie ikoon is nie opgedateer nie. Jy kan dit handmatig opdateer om hierdie kortpad weer te aktiveer, of die ikoon verwyder."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Dateer op"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Verwyder"</string>
     <string name="widgets_list" msgid="796804551140113767">"Legstukkelys"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Legstukkelys is toegemaak"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Voeg by tuisskerm"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Voeg by tuisskerm"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Skuif item hierheen"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Item is by tuisskerm gevoeg"</string>
     <string name="item_removed" msgid="851119963877842327">"Item is verwyder"</string>
     <string name="undo" msgid="4151576204245173321">"Ontdoen"</string>
     <string name="action_move" msgid="4339390619886385032">"Skuif item"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Skuif na ry <xliff:g id="NUMBER_0">%1$s</xliff:g> kolom <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Skuif na ry <xliff:g id="NUMBER_0">%1$s</xliff:g> kolom <xliff:g id="NUMBER_1">%2$s</xliff:g> in <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Skuif na posisie <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Skuif na gunstelingposisie <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Item geskuif"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Item by vouer gevoeg"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Skep vouer met: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Vouer geskep"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Skuif na tuisskerm"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Skuif na tuisskerm"</string>
     <string name="action_resize" msgid="1802976324781771067">"Verander grootte"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Vermeerder breedte"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Vermeerder hoogte"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Werkprogramme het \'n kenteken en is sigbaar vir jou IT-administrateur"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Het dit"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Werkprogramme is onderbreek"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Jy sal nie kennisgewings van jou werkapps af ontvang nie"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Jou werkprogramme kan nie vir jou kennisgewings stuur, jou battery gebruik of toegang tot jou ligging kry nie"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Werkprogramme is af. Jou werkprogramme kan nie vir jou kennisgewings stuur, jou battery gebruik of toegang tot jou ligging kry nie"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Jy sal nie foonoproepe, SMS’e of kennisgewings van jou werkapps af ontvang nie"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Werkprogramme het \'n kenteken en is sigbaar vir jou IT-administrateur"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Het dit"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Skakel werkprogramme af"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Skakel werkprogramme aan"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Onderbreek werkprogramme"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Hervat"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filter"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Deursoek jou foon"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Deursoek jou tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Misluk: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index f75e7e1..57fafc8 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -27,19 +27,18 @@
     <string name="safemode_widget_error" msgid="4863470563535682004">"ምግብሮች በደህንነቱ የተጠበቀ ሁኔታ ተሰናክለዋል"</string>
     <string name="shortcut_not_available" msgid="2536503539825726397">"አቋራጭ አይገኝም"</string>
     <string name="home_screen" msgid="5629429142036709174">"መነሻ"</string>
-    <string name="recent_task_option_split_screen" msgid="6690461455618725183">"የተከፈለ ማያ ገጽ"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"ወደ ላይ ክፈል"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"ወደ ግራ ክፈል"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"ወደ ቀኝ ክፈል"</string>
+    <string name="recent_task_option_split_screen" msgid="6690461455618725183">"የተከፈለ ማያ ገፅ"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"የመተግበሪያ መረጃ ለ%1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"የመተግበሪያ ጥምረትን ያስቀምጡ"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"ምግብርን ለማንቀሳቀስ ይንኩ እና ይያዙ።"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"ምግብርን ለማንቀሳቀስ ወይም ብጁ እርምጃዎችን ለመጠቀም ሁለቴ መታ ያድርጉ እና ይያዙ።"</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d ስፋት በ%2$d ከፍታ"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"የ<xliff:g id="WIDGET_NAME">%1$s</xliff:g> ምግብር"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"በመነሻ ገጽ አካባቢ ላይ ለማንቀሳቀስ ነክተው ይያዙት"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"ወደ መነሻ ገጽ አክል"</string>
-    <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> ምግብር ወደ መነሻ ማያ ገጽ ታክሏል"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"በመነሻ ማያ ገፅ አካባቢ ላይ ለማንቀሳቀስ ነክተው ይያዙት"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"ወደ መነሻ ማያ ገፅ አክል"</string>
+    <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> ምግብር ወደ መነሻ ማያ ገፅ ታክሏል"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"የአስተያየት ጥቆማዎች"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# ምግብር}one{# ምግብሮች}other{# ምግብሮች}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# አቋራጭ}one{# አቋራጭ}other{# አቋራጮች}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>፣ <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"የግል"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ስራ"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"ውይይቶች"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"የማስታወሻ አያያዝ"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"በጣቶችዎ ጫፎች ላይ ጠቃሚ መረጃ"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"መተግበሪያዎችን ሳይከፍቱ መረጃ ለማግኘት በመነሻ ማያ ገጽዎ ላይ ምግብሮችን ማከል ይችላሉ"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"መተግበሪያዎችን ሳይከፍቱ መረጃ ለማግኘት በመነሻ ማያ ገጽዎ ላይ ምግብሮችን ማከል ይችላሉ"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"የምግብር ቅንብሮችን ለመለወጥ መታ ያድርጉ"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"ገባኝ"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"የምግብር ቅንብሮችን ይለውጡ"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"መተግበሪያዎችን ፈልግ"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"መተግበሪያዎችን በመጫን ላይ…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"ከ«<xliff:g id="QUERY">%1$s</xliff:g>» ጋር የሚዛመዱ ምንም መተግበሪያዎች አልተገኙም"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"ተጨማሪ መተግበሪያዎች ይፈልጉ"</string>
     <string name="label_application" msgid="8531721983832654978">"መተግበሪያ"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"ሁሉም መተግበሪያዎች"</string>
     <string name="notifications_header" msgid="1404149926117359025">"ማሳወቂያዎች"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"አቋራጭን ለማንቀሳቀስ ይንኩ እና ይያዙ"</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"አቋራጭን ለማንቀሳቀስ ወይም ብጁ እርምጃዎችን ለመጠቀም ሁለቴ መታ ያድርጉ እና ይያዙ።"</string>
-    <string name="out_of_space" msgid="6692471482459245734">"በዚህ የመነሻ ማያ ገጽ ላይ ምንም ክፍል የለም"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"በዚህ የመነሻ ማያ ገፅ ላይ ምንም ክፍል የለም"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"በተወዳጆች መሣቢያ ውስጥ ተጨማሪ ቦታ የለም"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"የመተግበሪያዎች ዝርዝር"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"የፍለጋ ውጤቶች"</string>
@@ -79,21 +78,20 @@
     <string name="pin_prediction" msgid="4196423321649756498">"የፒን ግምት"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"አቋራጮችን ይጭናል"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"መተግበሪያው ያለተጠቃሚ ጣልቃ ገብነት አቋራጭ እንዲያክል ያስችለዋል።"</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"የመነሻ ቅንብሮች እና አቋራጮችን ያነባል"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"መተግበሪያው በመነሻ ውስጥ ያሉ ቅንብሮችን እና አቋራጮችን እንዲያነብ ያስችለዋል።"</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"የመነሻ ቅንብሮችን እና አቋራጮችን ይጽፋል"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"መተግብሪያው ቅንብሮችን እና አቋራጮችን በመነሻ ውስጥ እንዲቀይራቸው ያስችለዋል።"</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> የስልክ ጥሪዎችን ለማድረግ አልተፈቀደለትም"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"የመነሻ ቅንብሮች እና አቋራጮችን ያነባል"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"ቅንብሮችን እና አቋራጮችን በመነሻ ለማንበብ ለትግበራ ይፈቅዳል።"</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"መነሻ ቅንብሮች እና አቋራጮች ጻፍ"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"ቅንብሮችን እና አቋራጮችን በመነሻ ለመለወጥ ለመተግበሪያ ይፈቅዳል።"</string>
     <string name="gadget_error_text" msgid="740356548025791839">"ምግብርን መጫን አልተቻለም"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"የምግብር ቅንብሮች"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"ማዋቀርን ለመጨረስ መታ ያድርጉ"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"ይህ የስርዓት መተግበሪያ ነው እና ማራገፍ አይቻልም።"</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"ስም ያርትዑ"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> ተሰናክሏል"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name}፣ # ማሳወቂያ አለው}one{{app_name}፣ # ማሳወቂያ አለው}other{{app_name}፣ # ማሳወቂያዎች አሉት}}"</string>
-    <string name="default_scroll_format" msgid="7475544710230993317">"ገጽ %1$d ከ%2$d"</string>
-    <string name="workspace_scroll_format" msgid="8458889198184077399">"መነሻ ማያ ገጽ %1$d ከ%2$d"</string>
-    <string name="workspace_new_page" msgid="257366611030256142">"አዲስ የመነሻ ማያ ገጽ"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name}፣ # ማሳወቂያ አለው}one{{app_name}፣ # ማሳወቂያዎች አሉት}other{{app_name}፣ # ማሳወቂያዎች አሉት}}"</string>
+    <string name="default_scroll_format" msgid="7475544710230993317">"ገፅ %1$d ከ%2$d"</string>
+    <string name="workspace_scroll_format" msgid="8458889198184077399">"መነሻ ማያ ገፅ %1$d ከ%2$d"</string>
+    <string name="workspace_new_page" msgid="257366611030256142">"አዲስ የመነሻ ማያ ገፅ"</string>
     <string name="folder_opened" msgid="94695026776264709">"አቃፊ ተከፍቷል፣ <xliff:g id="WIDTH">%1$d</xliff:g> በ<xliff:g id="HEIGHT">%2$d</xliff:g>"</string>
     <string name="folder_tap_to_close" msgid="4625795376335528256">"አቃፊን ለመዝጋት መታ ያድርጉ"</string>
     <string name="folder_tap_to_rename" msgid="4017685068016979677">"ዳግም የተሰጠውን ስም ለማስቀመጥ መታ ያድርጉ"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"አቃፊ፦ <xliff:g id="NAME">%1$s</xliff:g>፣ <xliff:g id="SIZE">%2$d</xliff:g> ወይም ተጨማሪ ንጥሎች"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"የግድግዳ ወረቀቶች"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"ልጣፍ እና ቅጥ"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"መነሻ ማያ ገጽን አርትዕ"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"የመነሻ ቅንብሮች"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"በእርስዎ አስተዳዳሪ የተሰናከለ"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"የመነሻ ማያ ገጽ ማሽከርከርን ይፍቀዱ"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"የመነሻ ማያ ገፅ ማሽከርከርን ይፍቀዱ"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"ስልኩ ሲዞር"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"የማሳወቂያ ነጥቦች"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"አብራ"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"የማሳወቂያ ነጥቦችን ለማሳየት የመተግብሪያ ማሳወቂያዎችን ለ<xliff:g id="NAME">%1$s</xliff:g> ያብሩ"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"ቅንብሮችን ቀይር"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"የማሳወቂያ ነጥቦችን አሳይ"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"የመተግበሪያ አዶዎችን ወደ መነሻ ገጹ ያክሉ"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"የገንቢ አማራጮች"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"የመተግበሪያ አዶዎችን ወደ መነሻ ገጹ ያክሉ"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"ለአዲስ መተግበሪያዎች"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"የማይታወቅ"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"አስወግድ"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> በመጫን ላይ፣ <xliff:g id="PROGRESS">%2$s</xliff:g> ተጠናቅቋል"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> በመውረድ ላይ፣ <xliff:g id="PROGRESS">%2$s</xliff:g> ተጠናቋል"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> ለመጫን በመጠበቅ ላይ"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"መተግበሪያ ማዘመን አስፈላጊ ነው"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"የዚህ አዶ መተግበሪያ አልተዘመነም። ይህን አቋራጭ ዳግም ለማንቃት በራስዎ ማዘመን ወይም አዶውን ማስወገድ ይችላሉ።"</string>
+    <string name="dialog_update" msgid="2178028071796141234">"አዘምን"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"አስወግድ"</string>
     <string name="widgets_list" msgid="796804551140113767">"የመግብሮች ዝርዝር"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"የመግብሮች ዝርዝር ተዘግቷል"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"ወደ መነሻ ማያ ገጽ ያክሉ"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"ወደ መነሻ ማያ ገፅ አክል"</string>
     <string name="action_move_here" msgid="2170188780612570250">"ንጥልን ወደዚህ ውሰድ"</string>
-    <string name="item_added_to_workspace" msgid="4211073925752213539">"ወደ መነሻ ማያ ገጽ ንጥል ታክሏል"</string>
+    <string name="item_added_to_workspace" msgid="4211073925752213539">"ወደ መነሻ ማያ ገፅ ንጥል ታክሏል"</string>
     <string name="item_removed" msgid="851119963877842327">"ንጥል ነገር ተንቀሳቅሷል"</string>
     <string name="undo" msgid="4151576204245173321">"ቀልብስ"</string>
     <string name="action_move" msgid="4339390619886385032">"ንጥልን አንቀሳቅስ"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"ወደ ረድፍ <xliff:g id="NUMBER_0">%1$s</xliff:g> ዓምድ <xliff:g id="NUMBER_1">%2$s</xliff:g> አንቀሳቅስ"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"በ<xliff:g id="STRING">%3$s</xliff:g> ውስጥ ወደ ረድፍ <xliff:g id="NUMBER_0">%1$s</xliff:g> ዓምድ <xliff:g id="NUMBER_1">%2$s</xliff:g> ይውሰዱ"</string>
     <string name="move_to_position" msgid="6750008980455459790">"ወደ አቀማመጥ <xliff:g id="NUMBER">%1$s</xliff:g> አንቀሳቅስ"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"ወደ ተወዳጆች አቀማመጥ <xliff:g id="NUMBER">%1$s</xliff:g> አንቀሳቅስ"</string>
     <string name="item_moved" msgid="4606538322571412879">"ንጥል ተንቀሳቅሷል"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"ንጥል ወደ አቃፊ ታክሏል"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"አቃፊ ፍጠር ከዚህ ጋር፦ <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"አቃፊ ተፈጥሮዋል"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"ወደ መነሻ ማያ ገጽ አንቀሳቅስ"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"ወደ መነሻ ማያ ገፅ አንቀሳቅስ"</string>
     <string name="action_resize" msgid="1802976324781771067">"መጠን ቀይር"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"ስፋት ጨምር"</string>
     <string name="action_increase_height" msgid="459390020612501122">"ቁመት ጨምር"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"የሥራ መተግበሪያዎች ባጅ የተደረገባቸው እና ለእርስዎ የአይቲ አስተዳዳሪ የሚታዩ ናቸው"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"ገባኝ"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"የስራ መተግበሪያዎች ባሉበት ቆመዋል"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"ከሥራ መተግበሪያዎችዎ ማሳወቂያዎች አይደርሱዎትም"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"የስራ መተግበሪያዎችዎ ማሳወቂያዎችን ሊልክልዎ፣ ባትሪዎን መጠቀም ወይም አካባቢዎን መድረስ አይችሉም"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"የሥራ መተግበሪያዎች ጠፍተዋል። የስራ መተግበሪያዎችዎ ማሳወቂያዎችን ሊልክልዎ፣ ባትሪዎን መጠቀም ወይም አካባቢዎን መድረስ አይችሉም"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"ከሥራ መተግበሪያዎችዎ የስልክ ጥሪዎች፣ ኤስኤምኤሶች ወይም ማሳወቂያዎች አይደርሱዎትም"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"የሥራ መተግበሪያዎች ባጅ የተደረገባቸው ሲሆን ለእርስዎ IT ቡድን ታይ ናቸው"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"ገባኝ"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"የሥራ መተግበሪያዎችን ያጥፉ"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"የሥራ መተግበሪያዎችን ያብሩ"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"የሥራ መተግበሪያዎችን ባሉበት አቁም"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"ካቆመበት ቀጥል"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"አጣራ"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"ስልክዎን ይፈልጉ"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ጡባዊዎን ይፈልጉ"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"አልተሳካም፦ <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 8571d46..1ffb81c 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -28,44 +28,43 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"الاختصار غير متاح"</string>
     <string name="home_screen" msgid="5629429142036709174">"الشاشة الرئيسية"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"تقسيم الشاشة"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"تقسيم للأعلى"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"تقسيم لليسار"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"تقسيم لليمين"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"‏معلومات تطبيق %1$s"</string>
-    <string name="long_press_widget_to_add" msgid="3587712543577675817">"انقر مع الاستمرار لنقل أداة"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"حفظ إعدادات ميزة \"استخدام تطبيقين في الوقت نفسه\""</string>
+    <string name="long_press_widget_to_add" msgid="3587712543577675817">"انقر مع الاستمرار لنقل أداة."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"انقر مرتين مع تثبيت إصبعك لنقل أداة أو استخدام الإجراءات المخصّصة."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"‏العرض %1$d الطول %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"أداة <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"يمكنك النقر على الأداة مع الاستمرار لتحريكها على الشاشة الرئيسية."</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"إضافة إلى الشاشة الرئيسية"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"انقر مع الاستمرار على التطبيق المصغّر لنقله إلى الشاشة الرئيسية."</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"إضافة إلى الشاشة الرئيسية"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"تمت إضافة الأداة <xliff:g id="WIDGET_NAME">%1$s</xliff:g> إلى الشاشة الرئيسية."</string>
-    <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{أداة واحدة}zero{# أداة}two{أداتان}few{# أدوات}many{# أداة}other{# أداة}}"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"اقتراحات"</string>
+    <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{تطبيق مصغّر واحد}zero{# تطبيق مصغّر}two{تطبيقان مصغّران}few{# تطبيقات مصغّرة}many{# تطبيقًا مصغّرًا}other{# تطبيق مصغّر}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{اختصار واحد}zero{# اختصار}two{اختصاران}few{# اختصارات}many{# اختصارًا}other{# اختصار}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>، <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
-    <string name="widget_button_text" msgid="2880537293434387943">"الأدوات"</string>
+    <string name="widget_button_text" msgid="2880537293434387943">"التطبيقات المصغّرة"</string>
     <string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"بحث"</string>
     <string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"محو النص من مربّع البحث"</string>
     <string name="no_widgets_available" msgid="4337693382501046170">"الأدوات والاختصارات غير متاحة."</string>
-    <string name="no_search_results" msgid="3787956167293097509">"لم يتم العثور على أدوات أو اختصارات."</string>
+    <string name="no_search_results" msgid="3787956167293097509">"لم يتم العثور على تطبيقات مصغّرة أو اختصارات."</string>
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"الأدوات الشخصية"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"أدوات العمل"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"المحادثات"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"تدوين الملاحظات"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"معلومات مفيدة في متناول يديك"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"للحصول على معلومات بدون فتح التطبيقات، يمكنك إضافة الأدوات إلى الشاشة الرئيسية."</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"للحصول على معلومات بدون فتح التطبيقات، يمكنك إضافة التطبيقات المصغّرة إلى الشاشة الرئيسية."</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"انقر لتغيير إعدادات الأداة"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"حسنًا"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"تغيير إعدادات الأداة"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"بحث في التطبيقات"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"جارٍ تحميل التطبيقات…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"لم يتم العثور على أي تطبيقات تتطابق مع \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"البحث عن مزيد من التطبيقات"</string>
     <string name="label_application" msgid="8531721983832654978">"تطبيق"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"جميع التطبيقات"</string>
     <string name="notifications_header" msgid="1404149926117359025">"الإشعارات"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"انقر مع الاستمرار لنقل اختصار"</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"انقر مرتين مع تثبيت إصبعك لنقل اختصار أو استخدام الإجراءات المخصّصة."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"ما مِن مساحة على هذه الشاشة الرئيسية."</string>
+    <string name="out_of_space" msgid="6455557115204099579">"لا تتوفَّر مساحة على هذه الشاشة الرئيسية."</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"لا يوجد المزيد من الحقول في علبة المفضلة"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"قائمة التطبيقات"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"نتائج البحث"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"تثبيت التطبيق المتوقّع"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"تثبيت اختصارات"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"للسماح لتطبيق ما بإضافة اختصارات بدون تدخل المستخدم."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"قراءة إعدادات واختصارات الشاشة الرئيسية"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"للسماح للتطبيق بقراءة الإعدادات والاختصارات في الشاشة الرئيسية."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"كتابة إعدادات واختصارات الشاشة الرئيسية"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"للسماح للتطبيق بتغيير الإعدادات والاختصارات في الشاشة الرئيسية."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> غير مسموح به لإجراء مكالمات هاتفية"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"الاطلاع على الإعدادات والاختصارات على الشاشة الرئيسية"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"يسمح هذا الإذن للتطبيق بالاطلاع على الإعدادات والاختصارات على الشاشة الرئيسية."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"تعديل الإعدادات والاختصارات على الشاشة الرئيسية"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"يسمح هذا الإذن للتطبيق بتغيير الإعدادات والاختصارات على الشاشة الرئيسية."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"يتعذّر تحميل الأداة."</string>
-    <string name="gadget_setup_text" msgid="8348374825537681407">"إعدادات الأداة"</string>
+    <string name="gadget_setup_text" msgid="8348374825537681407">"إعدادات التطبيق المصغّر"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"انقر لإكمال الإعداد."</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"هذا تطبيق نظام وتتعذر إزالته."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"تعديل الاسم"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"تم إيقاف <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{هناك إشعار واحد في تطبيق {app_name}.}zero{هناك # إشعار في تطبيق {app_name}.}two{هناك إشعاران في تطبيق {app_name}.}few{هناك # إشعارات في تطبيق {app_name}.}many{هناك # إشعارًا في تطبيق {app_name}.}other{هناك # إشعار في تطبيق {app_name}.}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{هناك إشعار واحد في التطبيق {app_name}.}zero{هناك # إشعار في التطبيق {app_name}.}two{هناك إشعارَان في التطبيق {app_name}.}few{هناك # إشعارات في التطبيق {app_name}.}many{هناك # إشعارًا في التطبيق {app_name}.}other{هناك # إشعار في التطبيق {app_name}.}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"‏الصفحة %1$d من %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"‏الشاشة الرئيسية %1$d من %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"صفحة الشاشة الرئيسية الجديدة"</string>
@@ -102,19 +100,21 @@
     <string name="folder_name_format_exact" msgid="8626242716117004803">"المجلد: <xliff:g id="NAME">%1$s</xliff:g>، <xliff:g id="SIZE">%2$d</xliff:g> عنصر"</string>
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"المجلد: <xliff:g id="NAME">%1$s</xliff:g>، <xliff:g id="SIZE">%2$d</xliff:g> عنصر أو أكثر"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"الخلفيات"</string>
-    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"الخلفية والنمط"</string>
+    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"الخلفية والأسلوب"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"تعديل الشاشة الرئيسية"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"إعدادات الشاشة الرئيسية"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"أوقف المشرف هذه الميزة"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"السماح بتدوير الشاشة الرئيسية"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"السماح بتدوير الشاشة الرئيسية"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"عند تدوير الهاتف"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"نقاط الإشعارات"</string>
-    <string name="notification_dots_desc_on" msgid="1679848116452218908">"مفعّلة"</string>
+    <string name="notification_dots_desc_on" msgid="1679848116452218908">"الإعداد مفعّل"</string>
     <string name="notification_dots_desc_off" msgid="1760796511504341095">"غير مفعّل"</string>
     <string name="title_missing_notification_access" msgid="7503287056163941064">"يلزم تمكين الوصول إلى الإشعارات"</string>
     <string name="msg_missing_notification_access" msgid="281113995110910548">"لعرض نقاط الإشعارات، يجب تفعيل إشعارات التطبيق في <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"تغيير الإعدادات"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"عرض نقاط الإشعارات"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"إضافة رموز التطبيقات إلى الشاشة الرئيسية"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"خيارات المطوّرين"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"إضافة رموز التطبيقات إلى الشاشة الرئيسية"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"للتطبيقات الجديدة"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"غير معروفة"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"إزالة"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"جارٍ تثبيت <xliff:g id="NAME">%1$s</xliff:g>، مستوى التقدم: <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"جارٍ تنزيل <xliff:g id="NAME">%1$s</xliff:g>، اكتمل <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> في انتظار التثبيت"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"مطلوب تحديث التطبيق"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"لم يتمّ تحديث التطبيق الخاص بهذا الرمز. يمكنك تحديث التطبيق يدويًا لإعادة تفعيل هذا الاختصار أو إزالة الرمز."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"تحديث"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"إزالة"</string>
     <string name="widgets_list" msgid="796804551140113767">"قائمة الأدوات"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"تم إغلاق قائمة الأدوات."</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"الإضافة إلى شاشة الصفحة الرئيسية"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"إضافة تطبيق للشاشة الرئيسية"</string>
     <string name="action_move_here" msgid="2170188780612570250">"نقل العنصر إلى هنا"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"تمت إضافة العنصر إلى الشاشة الرئيسية"</string>
     <string name="item_removed" msgid="851119963877842327">"تمّت إزالة العنصر."</string>
     <string name="undo" msgid="4151576204245173321">"تراجع"</string>
     <string name="action_move" msgid="4339390619886385032">"نقل العنصر"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"نقل إلى الصف <xliff:g id="NUMBER_0">%1$s</xliff:g> العمود <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"انتقل إلى الصف <xliff:g id="NUMBER_0">%1$s</xliff:g> العمود <xliff:g id="NUMBER_1">%2$s</xliff:g> في <xliff:g id="STRING">%3$s</xliff:g>."</string>
     <string name="move_to_position" msgid="6750008980455459790">"نقل إلى الموضع <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"نقل إلى الموضع المفضل <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"تم نقل العنصر"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"تمت إضافة العنصر إلى المجلد"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"إنشاء مجلد يتضمن: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"تم إنشاء المجلد"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"نقل إلى الشاشة الرئيسية"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"نقل عنصر إلى الشاشة الرئيسية"</string>
     <string name="action_resize" msgid="1802976324781771067">"تغيير حجم"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"زيادة العرض"</string>
     <string name="action_increase_height" msgid="459390020612501122">"زيادة الارتفاع"</string>
@@ -156,15 +160,18 @@
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"شخصية"</string>
     <string name="all_apps_work_tab" msgid="4884822796154055118">"للعمل"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"الملف الشخصي للعمل"</string>
-    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"تحمل تطبيقات العمل شارة وتكون مرئية لمشرف تكنولوجيا المعلومات."</string>
+    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"تحمل تطبيقات العمل مميّزة بشارة ومرئية لمشرف تكنولوجيا المعلومات."</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"حسنًا"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"تطبيقات العمل متوقفة مؤقتًا"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"لن تتلقّى إشعارات من تطبيقات العمل."</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"لا يمكن لتطبيقات العمل إرسال إشعارات إليك أو استخدام بطاريتك أو الوصول إلى موقعك الجغرافي."</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"تطبيقات العمل غير مفعّلة، وبالتالي لا يمكنها إرسال إشعارات إليك أو استخدام بطاريتك أو الوصول إلى موقعك الجغرافي."</string>
-    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"تحمل تطبيقات العمل شارة وتكون مرئية لمشرف تكنولوجيا المعلومات."</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"لن تتلقّى مكالمات هاتفية أو رسائل نصية أو إشعارات من تطبيقات العمل."</string>
+    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"تكون تطبيقات العمل مميّزة بشارة ومرئية لمشرف تكنولوجيا المعلومات."</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"حسنًا"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"إيقاف تطبيقات العمل"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"تفعيل تطبيقات العمل"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"إيقاف تطبيقات العمل مؤقتًا"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"إلغاء الإيقاف المؤقت"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"فلتر"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"البحث في هاتفك"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"البحث في جهازك اللوحي"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"تعذَّر <xliff:g id="WHAT">%1$s</xliff:g>."</string>
 </resources>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 5dc35cb..587b377 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -21,25 +21,24 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="649227358658669779">"Launcher3"</string>
     <string name="work_folder_name" msgid="3753320833950115786">"কৰ্মস্থান"</string>
-    <string name="activity_not_found" msgid="8071924732094499514">"এপটো ইনষ্টল কৰা নহ\'ল।"</string>
-    <string name="activity_not_available" msgid="7456344436509528827">"এপটো নাই"</string>
-    <string name="safemode_shortcut_error" msgid="9160126848219158407">"ডাউনল’ড কৰা এপটোক সুৰক্ষিত ম\'ডত অক্ষম কৰা হ’ল"</string>
+    <string name="activity_not_found" msgid="8071924732094499514">"এপ্‌টো ইনষ্টল কৰা নহ\'ল।"</string>
+    <string name="activity_not_available" msgid="7456344436509528827">"এপ্‌টো নাই"</string>
+    <string name="safemode_shortcut_error" msgid="9160126848219158407">"ডাউনল’ড কৰা এপ্‌টোক সুৰক্ষিত ম\'ডত অক্ষম কৰা হ’ল"</string>
     <string name="safemode_widget_error" msgid="4863470563535682004">"ৱিজেটবোৰক সুৰক্ষিত ম\'ডত অক্ষম কৰা হ’ল"</string>
     <string name="shortcut_not_available" msgid="2536503539825726397">"শ্বৰ্টকাট নাই"</string>
     <string name="home_screen" msgid="5629429142036709174">"গৃহ স্ক্ৰীন"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"বিভাজিত স্ক্ৰীন"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"একেবাৰে ওপৰৰফালে বিভাজন কৰক"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"বাওঁফালে বিভাজন কৰক"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"সোঁফালে বিভাজন কৰক"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$sৰ বাবে এপৰ তথ্য"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"এপৰ পেয়াৰ ছেভ কৰক"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"ৱিজেট স্থানান্তৰ কৰিবলৈ টিপি ধৰি ৰাখক।"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"কোনো ৱিজেট স্থানান্তৰ কৰিবলৈ দুবাৰ টিপি ধৰি ৰাখক অথবা কাষ্টম কাৰ্য ব্যৱহাৰ কৰক।"</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d বহল x %2$d ওখ"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> ৱিজেট"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"ৱিজেটটো গৃহ স্ক্ৰীনৰ আশে-পাশে নিবলৈ সেইটোত স্পৰ্শ কৰি ধৰি ৰাখক"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"গৃহ স্ক্ৰীনত যোগ কৰক"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"ৱিজেটটো গৃহ স্ক্ৰীনৰ আশে-পাশে নিবলৈ সেইটোত স্পৰ্শ কৰি ধৰি ৰাখক"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"গৃহ স্ক্ৰীনত যোগ কৰক"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> ৱিজেটটো গৃহ স্ক্ৰীনত যোগ দিয়া হৈছে"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"পৰামৰ্শ"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# টা ৱিজেট}one{# টা ৱিজেট}other{# টা ৱিজেট}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# টা শ্বৰ্টকাট}one{# টা শ্বৰ্টকাট}other{# টা শ্বৰ্টকাট}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ব্যক্তিগত"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"কৰ্মস্থান"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"বাৰ্তালাপ"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"টোকা গ্ৰহণ কৰা"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"আপোনাৰ আঙুলিৰে টিপতে উপযোগী তথ্য পাওক"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"এপ্‌ নোখোলাকৈ তথ্য পাবলৈ আপুনি নিজৰ গৃহ স্ক্ৰীনত ৱিজেট যোগ দিব পাৰে"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"এপ্ নোখোলাকৈ তথ্য পাবলৈ আপুনি নিজৰ গৃহ স্ক্ৰীনত ৱিজেট যোগ দিব পাৰে"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"ৱিজেটৰ ছেটিং সলনি কৰিবলৈ টিপক"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"বুজি পালোঁ"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"ৱিজেটৰ ছেটিং সলনি কৰক"</string>
-    <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"এপসমূহ সন্ধান কৰক"</string>
-    <string name="all_apps_loading_message" msgid="5813968043155271636">"এপসমূহ ল’ড কৰি থকা হৈছে…"</string>
+    <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"এপ্‌সমূহ সন্ধান কৰক"</string>
+    <string name="all_apps_loading_message" msgid="5813968043155271636">"এপ্‌সমূহ ল’ড কৰি থকা হৈছে…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\"ৰ সৈতে মিলা কোনো এপ্ বিচাৰি পোৱা নগ\'ল"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"আৰু অধিক এপবোৰ সন্ধান কৰক"</string>
     <string name="label_application" msgid="8531721983832654978">"এপ্"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"আটাইবোৰ এপ্"</string>
     <string name="notifications_header" msgid="1404149926117359025">"জাননীসমূহ"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"শ্বৰ্টকাট স্থানান্তৰ কৰিবলৈ দুবাৰ টিপি ধৰি ৰাখক।"</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"কোনো শ্বৰ্টকাট স্থানান্তৰ কৰিবলৈ দুবাৰ টিপি ধৰি ৰাখক অথবা কাষ্টম কাৰ্য ব্যৱহাৰ কৰক।"</string>
-    <string name="out_of_space" msgid="6692471482459245734">"এই গৃহ স্ক্ৰীনত খালী ঠাই নাই"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"এইখন গৃহ স্ক্ৰীনত খালী ঠাই নাই"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"পছন্দৰ ট্ৰে\'ত আৰু বেছি ঠাই নাই"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"এপৰ সূচী"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"সন্ধানৰ ফলাফল"</string>
@@ -73,24 +72,23 @@
     <string name="all_apps_button_work_label" msgid="7270707118948892488">"কৰ্মস্থানৰ এপৰ তালিকা"</string>
     <string name="remove_drop_target_label" msgid="7812859488053230776">"আঁতৰাওক"</string>
     <string name="uninstall_drop_target_label" msgid="4722034217958379417">"আনইনষ্টল কৰক"</string>
-    <string name="app_info_drop_target_label" msgid="692894985365717661">"এপ সম্পৰ্কীয় তথ্য"</string>
+    <string name="app_info_drop_target_label" msgid="692894985365717661">"এপ্‌ সম্পৰ্কীয় তথ্য"</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"ইনষ্টল কৰক"</string>
-    <string name="dismiss_prediction_label" msgid="3357562989568808658">"এপৰ পৰামৰ্শ নিদিব"</string>
+    <string name="dismiss_prediction_label" msgid="3357562989568808658">"পৰামৰ্শ নিদিব"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"পূৰ্বানুমান কৰা এপ্‌টো পিন কৰক"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"শ্বৰ্টকাট ইনষ্টল কৰিব পাৰে"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"ব্য়ৱহাৰকাৰীৰ হস্তক্ষেপ অবিহনেই কোনো এপক শ্বৰ্টকাটবোৰ যোগ কৰাৰ অনুমতি দিয়ে।"</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"গৃহ ছেটিং আৰু শ্বৰ্টকাটবোৰ পঢ়িব পাৰে"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"এপটোক গৃহ পৃষ্ঠাত ছেটিং আৰু শ্বৰ্টকাটসমূহ পঢ়াৰ অনুমতি দিয়ে।"</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"গৃহ ছেটিং আৰু শ্বৰ্টকাটবোৰ লিখিব পাৰে"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"এপটোক গৃহ পৃষ্ঠাত ছেটিং আৰু শ্বৰ্টকাটসমূহ সলনি কৰাৰ অনুমতি দিয়ে।"</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g>ক ফ\'ন কলবোৰ কৰাৰ অনুমতি দিয়া হোৱা নাই"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"গৃহ স্ক্ৰীনত ছেটিং আৰু শ্বৰ্টকাটসমূহ পঢ়া"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"এপ্‌টোক গৃহ স্ক্ৰীনত ছেটিং আৰু শ্বৰ্টকাটসমূহ পঢ়াৰ অনুমতি দিয়ে।"</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"গৃহ স্ক্ৰীনত ছেটিং আৰু শ্বৰ্টকাটসমূহ লিখা"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"এপ্‌টোক গৃহ স্ক্ৰীনত ছেটিং আৰু শ্বৰ্টকাটসমূহ সলনি কৰাৰ অনুমতি দিয়ে।"</string>
     <string name="gadget_error_text" msgid="740356548025791839">"ৱিজেট ল’ড কৰিব নোৱাৰি"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"ৱিজেটৰ ছেটিং"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"ছেটআপ সমাপ্ত কৰিবলৈ টিপক"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"এইটো এটা ছিষ্টেম এপ আৰু ইয়াক আনইনষ্টল কৰিব নোৱৰি"</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"নাম সম্পাদনা কৰক"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> অক্ষম কৰা হ’ল"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name}ৰ # টা জাননী আছে}one{{app_name}ৰ # টা জাননী আছে}other{{app_name}ৰ # টা জাননী আছে}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name}ৰ # টা জাননী আছে}one{{app_name}ৰ # টা জাননী আছে}other{{app_name}ৰ # টা জাননী আছে}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"%2$dৰ %1$d পৃষ্ঠা"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"গৃহ স্ক্ৰীন %2$dৰ %1$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"গৃহ স্ক্ৰীনৰ নতুন পৃষ্ঠা"</string>
@@ -103,36 +101,42 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"ফ’ল্ডাৰ: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> টা অথবা তাতকৈ অধিক বস্তু"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"ৱালপেপাৰসমূহ"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"ৱালপেপাৰ আৰু শৈলী"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"গৃহ স্ক্ৰীন সম্পাদনা কৰক"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"গৃহ ছেটিং"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"আপোনাৰ প্ৰশাসকে অক্ষম কৰি ৰাখিছে"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"গৃহ স্ক্ৰীন ঘূৰোৱাৰ অনুমতি দিয়ক"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"গৃহ স্ক্ৰীন ঘূৰোৱাৰ অনুমতি দিয়ক"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"ফ\'নটো যেতিয়া ঘূৰোৱা হয়"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"জাননী বিন্দু"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"অন আছে"</string>
     <string name="notification_dots_desc_off" msgid="1760796511504341095">"অফ আছে"</string>
-    <string name="title_missing_notification_access" msgid="7503287056163941064">"জাননী চাবলৈ অনুমতিৰ প্ৰয়োজন"</string>
+    <string name="title_missing_notification_access" msgid="7503287056163941064">"জাননীৰ এক্সেছৰ প্ৰয়োজন"</string>
     <string name="msg_missing_notification_access" msgid="281113995110910548">"জাননী সম্পৰ্কীয় বিন্দুবোৰ দেখুৱাবলৈ <xliff:g id="NAME">%1$s</xliff:g>ৰ বাবে এপৰ জাননীসমূহ অন কৰক"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"ছেটিং সলনি কৰক"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"জাননী বিন্দু দেখুৱাওক"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"গৃহ স্ক্ৰীনত এপ্ চিহ্নসমূহ যোগ দিয়ক"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"বিকাশকৰ্তাৰ বিকল্পসমূহ"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"গৃহ স্ক্ৰীনত এপৰ চিহ্ন যোগ দিয়ক"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"নতুন এপসমূহৰ বাবে"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"অজ্ঞাত"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"আঁতৰাওক"</string>
     <string name="abandoned_search" msgid="891119232568284442">"সন্ধান কৰক"</string>
-    <string name="abandoned_promises_title" msgid="7096178467971716750">"এই এপটো ইনষ্টল কৰা হোৱা নাই"</string>
-    <string name="abandoned_promise_explanation" msgid="3990027586878167529">"এই আইকনৰ এপটো ইনষ্টল কৰা হোৱা নাই। আপুনি এইটো আঁতৰাব পাৰে অথবা এপটো বিচাৰি মেনুৱেলভাৱে ইনষ্টল কৰিব পাৰে।"</string>
+    <string name="abandoned_promises_title" msgid="7096178467971716750">"এই এপ্‌টো ইনষ্টল কৰা হোৱা নাই"</string>
+    <string name="abandoned_promise_explanation" msgid="3990027586878167529">"এই আইকনৰ এপ্‌টো ইনষ্টল কৰা হোৱা নাই। আপুনি এইটো আঁতৰাব পাৰে অথবা এপ্‌টো বিচাৰি মেনুৱেলভাৱে ইনষ্টল কৰিব পাৰে।"</string>
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> ইনষ্টল কৰি থকা হৈছে, <xliff:g id="PROGRESS">%2$s</xliff:g> সম্পূৰ্ণ হৈছে"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> ডাউনল’ড কৰি থকা হৈছে, <xliff:g id="PROGRESS">%2$s</xliff:g> সম্পূৰ্ণ হ’ল"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> ইনষ্টল হোৱালৈ অপেক্ষা কৰি থকা হৈছে"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"এপ্‌টো আপডে’ট কৰা প্ৰয়োজন"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"এই চিহ্নটোৰ এপ্‌টো আপডে’ট কৰা হোৱা নাই। আপুনি এই শ্বৰ্টকাটটো পুনৰ সক্ষম কৰিবলৈ মেনুৱেলী আপডে’ট কৰিব পাৰে অথবা চিহ্নটো আঁতৰাব পাৰে।"</string>
+    <string name="dialog_update" msgid="2178028071796141234">"আপডে’ট কৰক"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"আঁতৰাওক"</string>
     <string name="widgets_list" msgid="796804551140113767">"ৱিজেটৰ তালিকা"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"ৱিজেটৰ তালিকা বন্ধ কৰা হ’ল"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"গৃহ স্ক্ৰীনত যোগ দিয়ক"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"গৃহ স্ক্ৰীনত যোগ কৰক"</string>
     <string name="action_move_here" msgid="2170188780612570250">"বস্তুটো ইয়ালৈ স্থানান্তৰ কৰক"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"বস্তুটো গৃহ স্ক্ৰীনত যোগ কৰা হ’ল"</string>
     <string name="item_removed" msgid="851119963877842327">"বস্তুটো আঁতৰোৱা হ’ল"</string>
     <string name="undo" msgid="4151576204245173321">"আনডু কৰক"</string>
     <string name="action_move" msgid="4339390619886385032">"বস্তু স্থানান্তৰ কৰক"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"শাৰী <xliff:g id="NUMBER_0">%1$s</xliff:g> স্তম্ভ <xliff:g id="NUMBER_1">%2$s</xliff:g>লৈ স্থানান্তৰিত কৰক"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g>ত <xliff:g id="NUMBER_0">%1$s</xliff:g> নম্বৰ শাৰী <xliff:g id="NUMBER_1">%2$s</xliff:g> নম্বৰ স্তম্ভলৈ লৈ যাওক"</string>
     <string name="move_to_position" msgid="6750008980455459790">"পছন্দৰ অৱস্থান <xliff:g id="NUMBER">%1$s</xliff:g>লৈ স্থানান্তৰিত কৰক"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"পছন্দৰ অৱস্থান <xliff:g id="NUMBER">%1$s</xliff:g>লৈ স্থানান্তৰিত কৰক"</string>
     <string name="item_moved" msgid="4606538322571412879">"বস্তুটো স্থানান্তৰ কৰা হ’ল"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"বস্তুটো ফ\'ল্ডাৰত যোগ কৰা হ’ল"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"<xliff:g id="NAME">%1$s</xliff:g>: ৰ জৰিয়তে ফ\'ল্ডাৰ সৃষ্টি কৰক"</string>
     <string name="folder_created" msgid="6409794597405184510">"ফ\'ল্ডাৰ সৃষ্টি কৰা হ’ল"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"গৃহ স্ক্ৰীনলৈ স্থানান্তৰ কৰক"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"গৃহ স্ক্ৰীনলৈ স্থানান্তৰ কৰক"</string>
     <string name="action_resize" msgid="1802976324781771067">"আকাৰ সলনি কৰক"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"প্ৰস্থ বৃদ্ধি কৰক"</string>
     <string name="action_increase_height" msgid="459390020612501122">"উচ্চতা বৃদ্ধি কৰক"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"কৰ্মস্থানৰ এপ্‌সমূহ প্ৰতীকেৰে চিহ্নিত কৰা হয় আৰু সেইবোৰ আপোনাৰ আইটি প্ৰশাসকৰ বাবে দৃশ্যমান হয়"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"বুজি পালোঁ"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"কৰ্মস্থানৰ এপ্‌সমূহ পজ হৈ আছে"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"আপুনি আপোনাৰ কৰ্মস্থানৰ এপ্‌সমূহৰ পৰা জাননী নাপাব"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"আপোনাৰ কৰ্মস্থানৰ এপ্‌সমূহে আপোনালৈ জাননী পঠিয়াব, আপোনাৰ বেটাৰী ব্যৱহাৰ কৰিব অথবা আপোনাৰ অৱস্থান এক্সেছ কৰিব নোৱাৰে"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"কৰ্মস্থানৰ এপ্‌সমূহ অফ হৈ আছে। আপোনাৰ কৰ্মস্থানৰ এপ্‌সমূহে আপোনালৈ জাননী পঠিয়াব, আপোনাৰ বেটাৰী ব্যৱহাৰ কৰিব অথবা আপোনাৰ অৱস্থান এক্সেছ কৰিব নোৱাৰে"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"আপুনি আপোনাৰ কৰ্মস্থানৰ এপ্‌সমূহৰ পৰা ফ’ন কল, পাঠ বাৰ্তা অথবা জাননী নাপাব"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"কর্মস্থানৰ এপ্‌সমূহ প্ৰতীকেৰে চিহ্নিত কৰা হয় আৰু সেইবোৰ আপোনাৰ আইটি প্ৰশাসকৰ বাবে দৃশ্যমান হয়"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"বুজি পালোঁ"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"কৰ্মস্থানৰ এপ্‌সমূহ অফ কৰক"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"কৰ্মস্থানৰ এপ্‌সমূহ অন কৰক"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"কৰ্মস্থানৰ এপ্‌ পজ কৰক"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"আনপজ কৰক"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"ফিল্টাৰ"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"আপোনাৰ ফ’নৰ বস্তু সন্ধান কৰক"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"আপোনাৰ টেবলেটৰ বস্তু সন্ধান কৰক"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"বিফল: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index c2ca56d..1e1b634 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Qısayol əlçatan deyil"</string>
     <string name="home_screen" msgid="5629429142036709174">"Əsas səhifə"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Ekran bölünməsi"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Yuxarı ayırın"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Sola ayırın"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Sağa ayırın"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s ilə bağlı tətbiq məlumatı"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Tətbiq cütünü saxlayın"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Vidceti daşımaq üçün toxunub saxlayın."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Vidceti daşımaq üçün iki dəfə toxunub saxlayın və ya fərdi əməliyyatlardan istifadə edin."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%2$d hündürlük %1$d enində"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> vidceti"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Əsas ekranda hərəkət etdirmək üçün vidcetə toxunub saxlayın"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Əsas ekrana əlavə edin"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Əsas ekranda hərəkət etdirmək üçün vidcetə toxunub saxlayın"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Əsas ekrana əlavə edin"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> vidceti əsas ekrana əlavə edildi"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Təkliflər"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# vidcet}other{# vidcet}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# qısayol}other{# qısayol}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Şəxsi"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"İş"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Söhbətlər"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Qeydgötürmə"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Faydalı məlumatlar barmaqlarınızın ucunda"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Tətbiqləri açmadan məlumat almaq üçün Əsas ekrana vidcet əlavə edə bilərsiniz"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Tətbiqləri açmadan məlumat almaq üçün Əsas ekrana vidcet əlavə edə bilərsiniz"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Vidcet ayarlarını dəyişmək üçün toxunun"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Anladım"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Vidcet ayarlarını dəyişin"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Tətbiqləri axtarın"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Tətbiqlər yüklənir…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"<xliff:g id="QUERY">%1$s</xliff:g> sorğusuna uyğun tətbiq tapılmadı"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Daha çox tətbiq üçün axtarış edin"</string>
     <string name="label_application" msgid="8531721983832654978">"Tətbiq"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Bütün tətbiqlər"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Bildirişlər"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Qısayolu daşımaq üçün toxunub saxlayın."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Qısayolu daşımaq üçün iki dəfə toxunub saxlayın və ya fərdi əməliyyatlardan istifadə edin."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Bu Əsas ekranda yer qalmayıb"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Bu Əsas ekranda yer qalmayıb"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Favoritlər-də yer yoxdur"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Tətbiq siyahısı"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Axtarış nəticələri"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Proqnozlaşdırılan tətbiqi bərkidin"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"qısayolları quraşdır"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Tətbiqə istifadəçi müdaxiləsi olmadan qısayolları əlavə etməyə icazə verir."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"Əsas Səhifə ayarlarını və qısayolları oxuyun"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Tətbiqə Əsas Səhifədə parametrləri və qısayolları oxumağa icazə verir."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"Əsas Səhifə ayarlarını və qısayolları yazın"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Tətbiqə Əsas Səhifədə ayarları və qısayolları dəyişməyə icazə verir."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> tətbiqinə telefon zəngləri etmək üçün icazə verilmir"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"Əsas səhifə ayarlarını və qısayollarını oxumaq"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Tətbiqə Əsas səhifədə ayarları və qısayolları oxumağa icazə verir."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"Əsas səhifə ayarlarını və qısayollarını yazmaq"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Tətbiqə Əsas səhifədə ayarları və qısayolları dəyişməyə icazə verir."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Vidceti yükləmək olmur"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Vidcet ayarları"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Ayarlamanı tamamlamaq üçün toxunun"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Bu sistem tətbiqi olduğu üçün sistemdən silinə bilməz."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Adı redaktə edin"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> deaktiv edildi"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} tətbiqində # bildiriş var}other{{app_name} tətbiqində # bildiriş var}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} tətbiqində # bildiriş var}other{{app_name} tətbiqində # bildiriş var}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Səhifə %1$d of %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Əsas Səhifə ekranı %1$d of %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Yeni əsas ekran səhifəsi"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Qovluq: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> və ya daha çox element"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Divar kağızları"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Divar kağızı və üslub"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Əsas ekranı redaktə edin"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Home ayarları"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Admininiz tərəfindən deaktiv edilib"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Əsas ekran çevrilsin"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Əsas ekran çevrilsin"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Telefon çevrilən zaman"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Bildiriş nöqtələri"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Aktiv"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Bildiriş Nöqtələrini göstərmək üçün <xliff:g id="NAME">%1$s</xliff:g> bildirişlərini aktiv edin"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Ayarları dəyişin"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Bildiriş nöqtələrini göstərin"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Əsas ekrana nişanlar əlavə edilsin"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Developer Seçimləri"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Əsas ekrana nişanlar əlavə edilsin"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Yeni tətbiqlər üçün"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Naməlum"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Yığışdır"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> quraşdırır, <xliff:g id="PROGRESS">%2$s</xliff:g> tamamlanıb"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> endirilir, <xliff:g id="PROGRESS">%2$s</xliff:g> tamamlandı"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> yüklənmək üçün gözləyir"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Tətbiqin güncəllənməsi tələb edilir"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Bu ikona üçün tətbiq güncəllənməyib. Bu qısayolu yenidən aktivləşdirmək üçün manual olaraq güncəlləyə və ya ikonanı silə bilərsiniz."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Güncəlləyin"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Silin"</string>
     <string name="widgets_list" msgid="796804551140113767">"Vidcet siyahısı"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Vidcet siyahısı bağlandı"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Əsas ekrana əlavə edin"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Əsas ekrana əlavə edin"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Elementi bura köçürün"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Element əsas ekrana əlavə edildi"</string>
     <string name="item_removed" msgid="851119963877842327">"Element silindi"</string>
     <string name="undo" msgid="4151576204245173321">"Ləğv edin"</string>
     <string name="action_move" msgid="4339390619886385032">"Elementi köçürün"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Sıra <xliff:g id="NUMBER_0">%1$s</xliff:g> sütun <xliff:g id="NUMBER_1">%2$s</xliff:g> köçürün"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="NUMBER_0">%1$s</xliff:g> saylı sətir, <xliff:g id="NUMBER_1">%2$s</xliff:g> saylı sütuna (<xliff:g id="STRING">%3$s</xliff:g>) köçürün"</string>
     <string name="move_to_position" msgid="6750008980455459790">"<xliff:g id="NUMBER">%1$s</xliff:g> mövqeyinə köçürün"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"<xliff:g id="NUMBER">%1$s</xliff:g> sevimlilər mövqeyinə köçürün"</string>
     <string name="item_moved" msgid="4606538322571412879">"Elementin yeri dəyişildi"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Element qovluğa əlavə edildi"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Qovluq yaradın: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Qovluq yaradıldı"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Əsas ekrana köçürün"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Əsas ekrana köçürün"</string>
     <string name="action_resize" msgid="1802976324781771067">"Ölçüsünü dəyişin"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Eni artırın"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Hündürlüyü artırın"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"İş tətbiqləri nişanlanıb və İT administratorunuza görünür"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Anladım"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"İş tətbiqlərinə pauza verilib"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"İş tətbiqlərindən bildiriş almayacaqsınız"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"İş tətbiqləriniz sizə bildirişlər göndərə, batareyanızdan istifadə edə və ya məkanınıza daxil ola bilməz"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"İş tətbiqləri deaktivdir. İş tətbiqləriniz sizə bildirişlər göndərə, batareyanızdan istifadə edə və ya məkanınıza daxil ola bilməz"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"İş tətbiqlərindən telefon zəngi, mətn mesajı və ya bildiriş almayacaqsınız"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"İş tətbiqləri nişanlanıb və İT administratorunuza görünür"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Anladım"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"İş tətbiqlərini deaktiv edin"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"İş tətbiqlərini aktiv edin"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"İş tətbiqlərini durdurun"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Davam etdirin"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtr"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Telefonunuzu axtarın"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Planşetinizi axtarın"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Alınmadı: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index b10ae18..2b3ed53 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Prečica nije dostupna"</string>
     <string name="home_screen" msgid="5629429142036709174">"Početni ekran"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Podeljeni ekran"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Podeli u vrhu"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Podeli levo"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Podeli desno"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Informacije o aplikaciji za: %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Sačuvaj par aplikacija"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Dodirnite i zadržite radi pomeranja vidžeta."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dvaput dodirnite i zadržite da biste pomerali vidžet ili koristite prilagođene radnje."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d×%2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"širina od %1$d i visina od %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> vidžet"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Dodirnite i zadržite vidžet da biste ga pomerali po početnom ekranu"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Dodaj na početni ekran"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Dodirnite i zadržite vidžet da biste ga pomerali po početnom ekranu"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Dodaj na početni ekran"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Dodali ste vidžet <xliff:g id="WIDGET_NAME">%1$s</xliff:g> na početni ekran"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Predlozi"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# vidžet}one{# vidžet}few{# vidžeta}other{# vidžeta}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# prečica}one{# prečica}few{# prečice}other{# prečica}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -47,25 +46,25 @@
     <string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Pretražite"</string>
     <string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Obrišite tekst iz okvira za pretragu"</string>
     <string name="no_widgets_available" msgid="4337693382501046170">"Vidžeti i prečice nisu dostupni"</string>
-    <string name="no_search_results" msgid="3787956167293097509">"Nije pronađen nijedan vidžet ili prečica"</string>
+    <string name="no_search_results" msgid="3787956167293097509">"Nije pronađen nijedan vidžet ni prečica"</string>
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Lično"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Posao"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Konverzacije"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Pravljenje beležaka"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Korisne informacije nadohvat ruke"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Da biste pronašli informacije bez otvaranja aplikacija, možete da dodate vidžete na početni ekran"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Da biste pronašli informacije bez otvaranja aplikacija, možete da dodate vidžete na početni ekran"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Dodirnite da biste promenili podešavanja vidžeta"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Važi"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Promenite podešavanja vidžeta"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Pretražite aplikacije"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Aplikacije se učitavaju…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Nije pronađena nijedna aplikacija za „<xliff:g id="QUERY">%1$s</xliff:g>“"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Pretraži još aplikacija"</string>
     <string name="label_application" msgid="8531721983832654978">"Aplikacija"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Sve aplikacije"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Obaveštenja"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Dodirnite i zadržite radi pomeranja prečice."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dvaput dodirnite i zadržite da biste pomerali prečicu ili koristite prilagođene radnje."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Nema prostora na ovom početnom ekranu"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Nema mesta na ovom početnom ekranu"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Nema više prostora na traci Omiljeno"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Lista aplikacija"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Rezultati pretrage"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Zakači predviđanje"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"instaliranje prečica"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Dozvoljava aplikaciji da dodaje prečice bez intervencije korisnika."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"čitanje podešavanja i prečica na početnom ekranu"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Dozvoljava aplikaciji da čita podešavanja i prečice na početnom ekranu."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"upisivanje podešavanja i prečica na početnom ekranu"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Dozvoljava aplikaciji da menja podešavanja i prečice na početnom ekranu."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> nema dozvolu za upućivanje telefonskih poziva"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"čitanje podešavanja i prečica na početnom ekranu"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Dozvoljava aplikaciji da čita podešavanja i prečice na početnom ekranu."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"upisivanje podešavanja i prečica na početnom ekranu"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Dozvoljava aplikaciji da menja podešavanja i prečice na početnom ekranu."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Učitavanje vidžeta nije uspelo"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Podešavanja vidžeta"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Dodirnite da biste dovršili podešavanje"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Ovo je sistemska aplikacija i ne može da se deinstalira."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Izmenite naziv"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> je onemogućena"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name}, ima # obaveštenje}one{{app_name}, ima # obaveštenje}few{{app_name}, ima # obaveštenja}other{{app_name}, ima # obaveštenja}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name}, ima # obaveštenje}one{{app_name}, ima # obaveštenje}few{{app_name}, ima # obaveštenja}other{{app_name}, ima # obaveštenja}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"%1$d. stranica od %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"%1$d. početni ekran od %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Nova stranica početnog ekrana"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Folder: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> ili više stavki"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Pozadine"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Pozadina i stil"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Izmeni početni ekran"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Podešavanja početnog ekrana"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Administrator je onemogućio"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Dozvoli rotaciju početnog ekrana"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Dozvoli rotaciju početnog ekrana"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Kada se telefon rotira"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Tačke za obaveštenja"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Uključeno"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Da biste prikazali tačke za obaveštenja, uključite obaveštenja za aplikaciju <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Promenite podešavanja"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Prikazuj tačke za obaveštenja"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Dodaj ikone aplikacija na početni ekran"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Opcije za programera"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Dodaj ikone aplikacija na početni ekran"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Za nove aplikacije"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Nepoznato"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Ukloni"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> se instalira, <xliff:g id="PROGRESS">%2$s</xliff:g> gotovo"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> se preuzima, završeno je <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> čeka na instaliranje"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Treba da ažurirate aplikaciju"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Aplikacija za ovu ikonu nije ažurirana. Možete da je ručno ažurirate da biste ponovo omogućili ovu prečicu ili uklonite ikonu."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Ažuriraj"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Ukloni"</string>
     <string name="widgets_list" msgid="796804551140113767">"Lista vidžeta"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Lista vidžeta je zatvorena"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Dodajte na početni ekran"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Dodajte na početni ekran"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Premesti stavku ovde"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Stavka je dodata na početni ekran"</string>
     <string name="item_removed" msgid="851119963877842327">"Stavka je uklonjena"</string>
     <string name="undo" msgid="4151576204245173321">"Opozovi"</string>
     <string name="action_move" msgid="4339390619886385032">"Premesti stavku"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Premesti u red <xliff:g id="NUMBER_0">%1$s</xliff:g> i kolonu <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Premestite u red <xliff:g id="NUMBER_0">%1$s</xliff:g> kolonu <xliff:g id="NUMBER_1">%2$s</xliff:g> na <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Premesti na <xliff:g id="NUMBER">%1$s</xliff:g>. poziciju"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Premesti na <xliff:g id="NUMBER">%1$s</xliff:g>. poziciju u omiljenim"</string>
     <string name="item_moved" msgid="4606538322571412879">"Stavka je premeštena"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Stavka je dodata u folder"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Napravite folder sa: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Folder je napravljen"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Premesti na početni ekran"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Premestite na početni ekran"</string>
     <string name="action_resize" msgid="1802976324781771067">"Promeni veličinu"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Povećaj širinu"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Povećaj visinu"</string>
@@ -153,18 +157,21 @@
     <string name="action_dismiss_notification" msgid="5909461085055959187">"Odbaci"</string>
     <string name="accessibility_close" msgid="2277148124685870734">"Zatvori"</string>
     <string name="notification_dismissed" msgid="6002233469409822874">"Obaveštenje je odbačeno"</string>
-    <string name="all_apps_personal_tab" msgid="4190252696685155002">"Lične"</string>
-    <string name="all_apps_work_tab" msgid="4884822796154055118">"Poslovne"</string>
+    <string name="all_apps_personal_tab" msgid="4190252696685155002">"Lično"</string>
+    <string name="all_apps_work_tab" msgid="4884822796154055118">"Posao"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"Poslovni profil"</string>
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Poslovne aplikacije su označene značkom i IT administrator može da ih vidi"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Važi"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Poslovne aplikacije su pauzirane"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Nećete dobijati obaveštenja iz poslovnih aplikacija"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Poslovne aplikacije ne mogu da vam šalju obaveštenja, koriste bateriju niti pristupaju lokaciji"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Poslovne aplikacije su isključene. Poslovne aplikacije ne mogu da vam šalju obaveštenja, koriste bateriju niti pristupaju lokaciji"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Nećete primati telefonske pozive, tekstualne poruke niti obaveštenja iz poslovnih aplikacija"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Poslovne aplikacije su označene značkom i IT administrator može da ih vidi"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Važi"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Isključi poslovne aplikacije"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Uključi poslovne aplikacije"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Pauziraj poslovne aplikacije"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Ponovo aktiviraj"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filter"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Pretražite telefon"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Pretražite tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Nije uspelo: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 3d6bde4..1eee242 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Ярлык недаступны"</string>
     <string name="home_screen" msgid="5629429142036709174">"Галоўны экран"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Падзелены экран"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Падзяліць уверсе"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Падзяліць злева"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Падзяліць справа"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Інфармацыя пра праграму для: %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Захаваць спалучэнне праграм"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Націсніце і ўтрымлівайце віджэт для перамяшчэння."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Дакраніцеся двойчы і ўтрымлівайце, каб перамясціць віджэт або выкарыстоўваць спецыяльныя дзеянні."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"Шырына: %1$d, вышыня: %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Віджэт \"<xliff:g id="WIDGET_NAME">%1$s</xliff:g>\""</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Утрымліваючы віджэт націснутым, перамяшчайце яго па Галоўным экране"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Дадаць на Галоўны экран"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Утрымліваючы віджэт націснутым, перамяшчайце яго па галоўным экране"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Дадаць на галоўны экран"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Віджэт \"<xliff:g id="WIDGET_NAME">%1$s</xliff:g>\" дададзены на галоўны экран"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Прапановы"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# віджэт}one{# віджэт}few{# віджэты}many{# віджэтаў}other{# віджэта}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# ярлык}one{# ярлык}few{# ярлыкі}many{# ярлыкоў}other{# ярлыка}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Асабістыя"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Працоўныя"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Размовы"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Стварэнне нататак"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Карысная інфармацыя ў вас пад рукой"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Каб не адкрываць праграмы для прагляду патрэбнай інфармацыі, дадайце віджэты на галоўны экран"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Каб не адкрываць праграмы для прагляду патрэбнай інфармацыі, дадайце віджэты на галоўны экран"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Націсніце, каб змяніць налады віджэта"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Зразумела"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Змяніць налады віджэта"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Пошук праграм"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Праграмы загружаюцца…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Праграм, якія адпавядаюць запыту \"<xliff:g id="QUERY">%1$s</xliff:g>\", не знойдзена"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Шукаць іншыя праграмы"</string>
     <string name="label_application" msgid="8531721983832654978">"Праграма"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Усе праграмы"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Апавяшчэнні"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Націсніце і ўтрымлівайце ярлык для перамяшчэння."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Дакраніцеся двойчы і ўтрымлівайце, каб перамясціць ярлык або выкарыстоўваць спецыяльныя дзеянні."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"На галоўным экране няма месца"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"На галоўным экране няма месца"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"У латку \"Абранае\" больш няма месца"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Спіс праграм"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Вынікі пошуку"</string>
@@ -73,24 +72,23 @@
     <string name="all_apps_button_work_label" msgid="7270707118948892488">"Спіс працоўных праграм"</string>
     <string name="remove_drop_target_label" msgid="7812859488053230776">"Выдаліць"</string>
     <string name="uninstall_drop_target_label" msgid="4722034217958379417">"Дэінсталяваць"</string>
-    <string name="app_info_drop_target_label" msgid="692894985365717661">"Пра праграму"</string>
+    <string name="app_info_drop_target_label" msgid="692894985365717661">"Звесткі аб праграме"</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"Усталяваць"</string>
     <string name="dismiss_prediction_label" msgid="3357562989568808658">"Не прапаноўваць праграму"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"Замацаваць прапанаваную праграму"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"Стварэнне ярлыкоў"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Дазваляе праграмам дадаваць ярлыкі без умяшання карыстальніка."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"счытваць налады і ярлыкі на Галоўнай старонцы"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Дазваляе праграме счытваць налады і ярлыкі на Галоўнай старонцы."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"запісваць налады і ярлыкі на галоўнай старонцы"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Дазваляе праграме змяняць налады і ярлыкі на Галоўнай старонцы."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> не мае дазволу на здзяйсненне тэлефонных званкоў"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"счытваць налады і ярлыкі на галоўным экране"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Дазваляе праграме счытваць налады і ярлыкі на галоўным экране."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"запісваць налады і ярлыкі на галоўны экран"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Дазваляе праграме змяняць налады і ярлыкі на галоўным экране."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Не ўдаецца загрузіць віджэт"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Налады віджэта"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Націсніце, каб завяршыць наладжванне"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Гэта сістэмная праграма, яе нельга выдаліць."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Змяніць назву"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> адключана"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{У праграмы \"{app_name}\" ёсць # апавяшчэнне}one{У праграмы \"{app_name}\" ёсць # апавяшчэнне}few{У праграмы \"{app_name}\" ёсць # апавяшчэнні}many{У праграмы \"{app_name}\" ёсць # апавяшчэнняў}other{У праграмы \"{app_name}\" ёсць # апавяшчэння}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{У праграмы \"{app_name}\" ёсць # апавяшчэнне}one{У праграмы \"{app_name}\" ёсць # апавяшчэнне}few{У праграмы \"{app_name}\" ёсць # апавяшчэнні}many{У праграмы \"{app_name}\" ёсць # апавяшчэнняў}other{У праграмы \"{app_name}\" ёсць # апавяшчэння}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Старонка %1$d з %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Галоўны экран %1$d з %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Новая старонка галоўнага экрана"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Папка: <xliff:g id="NAME">%1$s</xliff:g>, элементы: <xliff:g id="SIZE">%2$d</xliff:g> ці больш"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Шпалеры"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Шпалеры і стыль"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Змяніць Галоўны экран"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Налады галоўнага экрана"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Адключаная адміністратарам"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Дазволіць паварот галоўнага экрана"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Дазволіць паварот галоўнага экрана"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Пры павароце тэлефона"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Значкі апавяшчэнняў"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Укл."</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Каб паказваліся значкі апавяшчэнняў, уключыце апавяшчэнні праграм для <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Змяніць налады"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Паказваць значкі апавяшчэнняў"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Дадаваць значкі праграм на Галоўны экран"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Параметры распрацоўшчыка"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Дадаваць значкі праграм на галоўны экран"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Для новых праграм"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Невядома"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Выдаліць"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Усталёўваецца праграма \"<xliff:g id="NAME">%1$s</xliff:g>\", завершана <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Ідзе спампоўка <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="PROGRESS">%2$s</xliff:g> завершана"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> чакае ўсталёўкі"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Неабходна абнавіць праграму"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Гэта версія праграмы састарэла. Абнавіце праграму ўручную, каб зноў карыстацца гэтым ярлыком, або выдаліце значок."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Абнавіць"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Выдаліць"</string>
     <string name="widgets_list" msgid="796804551140113767">"Спіс віджэтаў"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Спіс віджэтаў закрыты"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Дадаць на Галоўны экран"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Дадаць на галоўны экран"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Перамясціць элемент сюды"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Элемент дададзены на галоўны экран"</string>
     <string name="item_removed" msgid="851119963877842327">"Элемент выдалены"</string>
     <string name="undo" msgid="4151576204245173321">"Адрабіць"</string>
     <string name="action_move" msgid="4339390619886385032">"Перамясціць элемент"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Перамясціць у радок <xliff:g id="NUMBER_0">%1$s</xliff:g> слупок <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Перайсці да радка <xliff:g id="NUMBER_0">%1$s</xliff:g> у слупку <xliff:g id="NUMBER_1">%2$s</xliff:g> на старонцы <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Перамясціць у пазіцыю <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Перамясціць у абранае, у пазіцыю <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Элемент перамешчаны"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Элемент дададзены ў папку"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Стварыць папку з: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Папка створана"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Перамясціць на Галоўны экран"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Перамясціць на галоўны экран"</string>
     <string name="action_resize" msgid="1802976324781771067">"Змяніць памер"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Павялічыць шырыню"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Павялічыць вышыню"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Працоўныя праграмы пазначаны спецыяльнымі значкамі, а таксама бачныя IT-адміністратару"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Зразумела"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Працоўныя праграмы прыпынены"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Вы не будзеце атрымліваць апавяшчэнні ад працоўных праграм"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Працоўныя праграмы не могуць адпраўляць вам апавяшчэнні, выкарыстоўваць акумулятар або атрымліваць доступ да даных пра ваша месцазнаходжанне"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Працоўныя праграмы выключаны. Яны не могуць адпраўляць вам апавяшчэнні, выкарыстоўваць акумулятар або атрымліваць доступ да вашага месцазнаходжання"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Вы не будзеце атрымліваць выклікі, тэкставыя паведамленні або апавяшчэнні ад працоўных праграм"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Працоўныя праграмы пазначаны спецыяльнымі значкамі, а таксама бачныя IT-адміністратару"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Зразумела"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Выключыць працоўныя праграмы"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Уключыць працоўныя праграмы"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Прыпыніць працоўныя праграмы"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Актываваць"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Фільтр"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Пошук на тэлефоне"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Пошук на планшэце"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Не ўдалося: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 661c710..f59dcfb 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Няма достъп до прекия път"</string>
     <string name="home_screen" msgid="5629429142036709174">"Начален екран"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Разделен екран"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Разделяне в горната част"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Разделяне в лявата част"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Разделяне в дясната част"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Информация за приложението за %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Запазване на двойката приложения"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Докоснете и задръжте за преместване на приспособление"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Докоснете двукратно и задръжте за преместване на приспособление или използвайте персонал. действия."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"Ширина %1$d и височина %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> приспособление"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Докоснете приспособлението и го задръжте, за да го местите по началния екран"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Добавяне към началния екран"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Докоснете приспособлението и го задръжте, за да го местите на началния екран"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Добавяне към началния екран"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Приспособлението <xliff:g id="WIDGET_NAME">%1$s</xliff:g> е добавено към началния екран"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Предложения"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# приспособление}other{# приспособления}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# пряк път}other{# преки пътя}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Лични"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Служебни"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Разговори"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Водене на бележки"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Лесен достъп до полезна информация"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"За да получавате информация, без да отваряте приложенията, можете да добавите приспособления към началния екран"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"За да получавате информация, без да отваряте приложенията, можете да добавите приспособления към началния екран"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Докоснете, за да промените настройките на приспособлението"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Разбрах"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Промяна на настройките на приспособлението"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Търсене в приложенията"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Приложенията се зареждат…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Няма намерени приложения, съответстващи на „<xliff:g id="QUERY">%1$s</xliff:g>“"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Търсене на още приложения"</string>
     <string name="label_application" msgid="8531721983832654978">"Приложение"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Всички приложения"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Известия"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Докоснете и задръжте за преместване на пряк път."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Докоснете двукратно и задръжте за преместване на пряк път или използвайте персонализирани действия."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Няма място на този начален екран"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Няма място на този начален екран"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Няма повече място в областта с любимите"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Списък с приложения"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Резултати от търсенето"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Фиксиране на предвиждането"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"инсталиране на преки пътища"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Разрешава на приложението да добавя преки пътища без намеса на потребителя."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"четене на настройките и преките пътища в Начало"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Разрешава на приложението да чете настройките и преките пътища в Начало."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"запис на настройките и преките пътища в Начало"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Разрешава на приложението да променя настройките и преките пътища в Начало."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> няма разрешение да извършва телефонни обаждания"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"четене на настройките и преките пътища на началния екран"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Разрешава на приложението да чете настройките и преките пътища на началния екран."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"запис на настройките и преките пътища на началния екран"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Разрешава на приложението да променя настройките и преките пътища на началния екран."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Приспособлението не може да се зареди"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Настройки за приспособленията"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Докоснете, за да завършите настройването"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Това е системно приложение и не може да се деинсталира."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Редактиране на името"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Деактивирахте <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} има # известие}other{{app_name} има # известия}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} има # известие}other{{app_name} има # известия}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Страница %1$d от %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Начален екран %1$d от %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Нова страница на началния екран"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Папка: „<xliff:g id="NAME">%1$s</xliff:g>“ – <xliff:g id="SIZE">%2$d</xliff:g> или повече елементи"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Тапети"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Тапет и стил"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Редактиране на началния екран"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Настройки за началния екран"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Деактивирано от администратора ви"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Разрешаване на завъртането на началния екран"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Разрешаване на завъртането на началния екран"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"При завъртане на телефона"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Точки за известия"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Вкл."</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"За да се показват точки за известия, включете известията за приложението <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Промяна на настройките"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Показване на точките за известия"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Добавяне на икони на прил. на нач. екран"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Опции за програмисти"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Добавяне на икони на приложения на началния екран"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"За нови приложения"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Няма информация"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Премахване"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> се инсталира, <xliff:g id="PROGRESS">%2$s</xliff:g> завършено"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> се изтегля. Завършено: <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> изчаква инсталиране"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Изисква се актуализация на приложението"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Приложението за тази икона не е актуализирано. Можете да го актуализирате ръчно, за да активирате отново този пряк път, или да премахнете иконата."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Актуализиране"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Премахване"</string>
     <string name="widgets_list" msgid="796804551140113767">"Списък с приспособления"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Списъкът с приспособления е затворен"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Добавяне към началния екран"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Добавяне към началния екран"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Преместване на елемента тук"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Елементът е добавен към началния екран"</string>
     <string name="item_removed" msgid="851119963877842327">"Елементът е премахнат"</string>
     <string name="undo" msgid="4151576204245173321">"Отмяна"</string>
     <string name="action_move" msgid="4339390619886385032">"Преместване на елемента"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Преместване към ред <xliff:g id="NUMBER_0">%1$s</xliff:g>, колона <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Преместване на <xliff:g id="STRING">%3$s</xliff:g> – ред <xliff:g id="NUMBER_0">%1$s</xliff:g>, колона <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Преместване към позиция <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Преместване към позиция <xliff:g id="NUMBER">%1$s</xliff:g> в любимите"</string>
     <string name="item_moved" msgid="4606538322571412879">"Елементът е преместен"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Елементът е добавен към папката"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Създаване на папка с елемента „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
     <string name="folder_created" msgid="6409794597405184510">"Папката е създадена"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Преместване към началния екран"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Преместване към началния екран"</string>
     <string name="action_resize" msgid="1802976324781771067">"Преоразмеряване"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Увеличаване на ширината"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Увеличаване на височината"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Служебните приложения са означени със значка и са видими за системния администратор"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Разбрах"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Служебните приложения са поставени на пауза"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Няма да получавате известия от служебните си приложения"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Служебните ви приложения не могат да ви изпращат известия, да използват батерията или да осъществяват достъп до местоположението ви"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Служебните ви приложения са изключени. Те не могат да ви изпращат известия, да използват батерията или да осъществяват достъп до местоположението ви"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Няма да получавате телефонни обаждания, текстови съобщения и известия от служебните си приложения"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Служебните приложения са означени със значка и са видими за системния администратор"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Разбрах"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Изключване на служебните приложения"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Включване на служебните приложения"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Поставяне на пауза на служебните приложения"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Отмяна на паузата"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Филтър"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Търсене в телефона ви"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Търсене в таблета ви"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Неуспешно: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 299a014..326fc7b 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"শর্টকাটগুলি অনুপলব্ধ"</string>
     <string name="home_screen" msgid="5629429142036709174">"হোম"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"স্প্লিট স্ক্রিন"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"স্ক্রিনের উপরের দিকে স্প্লিট করুন"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"স্ক্রিনের বাঁদিকে স্প্লিট করুন"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"স্ক্রিনের ডানদিকে স্প্লিট করুন"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s-এর জন্য অ্যাপ সম্পর্কিত তথ্য"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"অ্যাপ পেয়ার সেভ করুন"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"কোনও উইজেট সরাতে সেটি টাচ করে ধরে রাখুন।"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"একটি উইজেট সরাতে বা কাস্টম অ্যাকশন ব্যবহার করতে ডবল ট্যাপ করে ধরে রাখুন।"</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%2$d উচ্চতা অনুযায়ী %1$d প্রস্থ"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g>টি উইজেট"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"হোম স্ক্রিনের যেকোনও জায়গায় উইজেটটি নিয়ে যেতে, টাচ করে ধরে থাকুন"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"হোম স্ক্রিনে যোগ করুন"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"হোম স্ক্রিনের যেকোনও জায়গায় নিয়ে যেতে, উইজেট টাচ করে ধরে থাকুন"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"হোম স্ক্রিনে যোগ করুন"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> উইজেট হোম স্ক্রিনে যোগ করা হয়েছে"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"সাজেশন"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{#টি উইজেট}one{#টি উইজেট}other{#টি উইজেট}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{#টি শর্টকাট}one{#টি শর্টকাট}other{#টি শর্টকাট}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ব্যক্তিগত"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"অফিস"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"কথোপকথন"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"নোট নেওয়া"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"সহজেই দরকারি তথ্য পান"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"অ্যাপ না খুলে তথ্য পাওয়ার জন্য, আপনার হোম স্ক্রিনে উইজেট যোগ করতে পারেন"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"অ্যাপ না খুলেই তথ্য পাওয়ার জন্য, হোম স্ক্রিনে উইজেট যোগ করতে পারবেন"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"উইজেট সেটিংস পরিবর্তন করতে ট্যাপ করুন"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"বুঝেছি"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"উইজেট সেটিংস পরিবর্তন করুন"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"অ্যাপ খুঁজুন"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"অ্যাপ লোড হচ্ছে…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" এর সাথে মেলে এমন কোনো অ্যাপ পাওয়া যায়নি"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"আরও অ্যাপ্লিকেশানের জন্য খুঁজুন"</string>
     <string name="label_application" msgid="8531721983832654978">"অ্যাপ"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"সব অ্যাপ"</string>
     <string name="notifications_header" msgid="1404149926117359025">"বিজ্ঞপ্তি"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"একটি শর্টকাট সরাতে টাচ করে ধরে রাখুন।"</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"একটি শর্টকাট সরাতে বা কাস্টম অ্যাকশন ব্যবহার করতে ডবল ট্যাপ করে ধরে রাখুন।"</string>
-    <string name="out_of_space" msgid="6692471482459245734">"এই হোম স্ক্রিনে আর জায়গা খালি নেই"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"এই হোম স্ক্রিনে জায়গা খালি নেই"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"পছন্দসই ট্রে-তে আর কোনো জায়গা নেই"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"অ্যাপ্লিকেশানগুলির তালিকা"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"সার্চ ফলাফল"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"আপনার প্রয়োজন হতে পারে এমন অ্যাপ পিন করুন"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"শর্টকাটগুলি ইনস্টল করে"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"একটি অ্যাপ্লিকেশানকে ব্যবহারকারীর হস্তক্ষেপ ছাড়াই শর্টকাটগুলি যোগ করার অনুমতি দেয়৷"</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"হোম সেটিংস এবং শর্টকাটগুলি পড়ে"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"হোমে অ্যাপ্লিকেশানটিকে সেটিংস এবং শর্টকাটগুলি পড়তে দেয়৷"</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"হোম সেটিংস এবং শর্টকাটগুলি লেখে"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"হোমে অ্যাপ্লিকেশানটিকে সেটিংস এবং শর্টকাটগুলি পরিবর্তন করতে দেয়৷"</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"ফোন কলগুলি করার জন্য <xliff:g id="APP_NAME">%1$s</xliff:g> এর অনুমতি নেই"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"হোম স্ক্রিনে সেটিংস ও শর্টকাট পড়ুন"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"অ্যাপকে হোম স্ক্রিনে সেটিংস ও শর্টকাট পড়ার অনুমতি দেয়।"</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"হোম স্ক্রিনে সেটিংস ও শর্টকাট লিখুন"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"অ্যাপকে হোম স্ক্রিনে সেটিংস ও শর্টকাট পরিবর্তন করার অনুমতি দেয়।"</string>
     <string name="gadget_error_text" msgid="740356548025791839">"উইজেট লোড করা যাচ্ছে না"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"উইজেট সেটিংস"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"সেটআপ সম্পূর্ণ করতে ট্যাপ করুন"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"এটি একটি সিস্টেম অ্যাপ্লিকেশান এবং আনইনস্টল করা যাবে না৷"</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"নাম এডিট করুন"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> অক্ষম করা হয়েছে"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name}-এর #টি বিজ্ঞপ্তি আছে}one{{app_name}-এর #টি বিজ্ঞপ্তি আছে}other{{app_name}-এর #টি বিজ্ঞপ্তি আছে}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name}-এর #টি বিজ্ঞপ্তি আছে}one{{app_name}-এর #টি বিজ্ঞপ্তি আছে}other{{app_name}-এর #টি বিজ্ঞপ্তি আছে}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"%2$dটির মধ্যে %1$dটি পৃষ্ঠা"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"%2$dটির %1$d নম্বর হোম স্ক্রিন"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"নতুন হোম স্ক্রীনের পৃষ্ঠা"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"ফোল্ডার: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g>টি বা তার বেশি আইটেম"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"ওয়ালপেপারগুলি"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"ওয়ালপেপার এবং স্টাইল"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"হোম স্ক্রিন এডিট করুন"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"হোম সেটিংস"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"আপনার প্রশাসক দ্বারা অক্ষম করা হয়েছে"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"হোম স্ক্রিন ঘোরানোর অনুমতি দিন"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"হোম স্ক্রিন রোটেট করার অনুমতি দিন"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"যখন ফোনটি ঘোরানো হয়"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"বিজ্ঞপ্তি ডট"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"চালু"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"বিজ্ঞপ্তির ডটগুলি দেখানোর জন্য, <xliff:g id="NAME">%1$s</xliff:g> এর অ্যাপ বিজ্ঞপ্তি চালু করুন"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"সেটিংস পরিবর্তন করুন"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"বিজ্ঞপ্তির ডট দেখুন"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"হোম স্ক্রিনে অ্যাপ আইকন যোগ করুন"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"ডেভেলপার বিকল্প"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"হোম স্ক্রিনে অ্যাপের আইকন যোগ করুন"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"নতুন অ্যাপের জন্য"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"অজানা"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"সরান"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> ইনস্টল করা হচ্ছে, <xliff:g id="PROGRESS">%2$s</xliff:g> সম্পূর্ণ হয়েছে"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> ডাউনলোড হচ্ছে <xliff:g id="PROGRESS">%2$s</xliff:g> সম্পন্ন হয়েছে"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> ইনস্টলের অপেক্ষায় রয়েছে"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"অ্যাপটি আপডেট করা প্রয়োজন"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"এই আইকনের জন্য অ্যাপটি আপডেট করা নেই। এই শর্টকার্ট আবার চালু করতে, আপনি ম্যানুয়ালি আপডেট করতে বা সরিয়ে দিতে পারবেন।"</string>
+    <string name="dialog_update" msgid="2178028071796141234">"আপডেট করুন"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"সরান"</string>
     <string name="widgets_list" msgid="796804551140113767">"উইজেটের তালিকা"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"উইজেটের তালিকা বন্ধ করা হয়েছে"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"হোম স্ক্রিনে যোগ করুন"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"হোম স্ক্রিনে যোগ করুন"</string>
     <string name="action_move_here" msgid="2170188780612570250">"এখানে আইটেম সরান"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"হোম স্ক্রীনে আইটেম যোগ করা হয়েছে"</string>
     <string name="item_removed" msgid="851119963877842327">"আইটেম সরানো হয়েছে"</string>
     <string name="undo" msgid="4151576204245173321">"ফিরিয়ে আনুন"</string>
     <string name="action_move" msgid="4339390619886385032">"আইটেম সরান"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"সারি <xliff:g id="NUMBER_0">%1$s</xliff:g> কলাম <xliff:g id="NUMBER_1">%2$s</xliff:g> এ সরান"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g>-এ সারি <xliff:g id="NUMBER_0">%1$s</xliff:g> কলাম <xliff:g id="NUMBER_1">%2$s</xliff:g> সরান"</string>
     <string name="move_to_position" msgid="6750008980455459790">"অবস্থানে সরান <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"পছন্দসই অবস্থানে সরান <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"আইটেম সরানো হয়েছে"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"আইটেম ফোল্ডারে যোগ করা হয়েছে"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"এর সাথে ফোল্ডার তৈরি করুন: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"ফোল্ডার তৈরি করা হয়েছে"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"হোম স্ক্রীনে সরান"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"হোম স্ক্রিনে সরান"</string>
     <string name="action_resize" msgid="1802976324781771067">"আবার আকার দিন"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"প্রস্থ বাড়ান"</string>
     <string name="action_increase_height" msgid="459390020612501122">"উচ্চতা বাড়ান"</string>
@@ -156,15 +160,18 @@
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"ব্যক্তিগত"</string>
     <string name="all_apps_work_tab" msgid="4884822796154055118">"অফিস"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"অফিসের প্রোফাইল"</string>
-    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"অফিসের অ্যাপে ব্যাজ যোগ করা হয়েছে এবং আপনার আইটি অ্যাডমিন সেটি দেখতে পাবেন"</string>
+    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"অফিস অ্যাপে ব্যাজ যোগ করা হয়েছে এবং আপনার আইটি অ্যাডমিন সেগুলি দেখতে পাবেন"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"বুঝেছি"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"অফিস অ্যাপ বন্ধ করা আছে"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"আপনার অফিসের অ্যাপ থেকে আপনি কোনও বিজ্ঞপ্তি পাবেন না"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"অফিসের অ্যাপ আপনাকে নোটিফিকেশন পাঠাতে পারবে না। এছাড়া, ব্যাটারি ব্যবহার করতে বা লোকেশন অ্যাক্সেস করতে পারবে না"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"অফিসের অ্যাপ বন্ধ আছে। আপনার অফিসের অ্যাপ আপনাকে বিজ্ঞপ্তি পাঠাতে, ব্যাটারি ব্যবহার করতে বা লোকেশন অ্যাক্সেস করতে পারবে না"</string>
-    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"অফিসের অ্যাপে ব্যাজ যোগ করা হয়েছে এবং আপনার আইটি অ্যাডমিন সেটি দেখতে পাবেন"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"আপনি কোনও ফোন কল, টেক্সট মেসেজ বা অফিসের অ্যাপ থেকে বিজ্ঞপ্তি পাবেন না"</string>
+    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"অফিসের অ্যাপে ব্যাজ যোগ করা হয়েছে এবং আপনার আইটি অ্যাডমিন সেগুলি দেখতে পাবেন"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"বুঝেছি"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"অফিসের অ্যাপ বন্ধ করুন"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"অফিস অ্যাপ চালু করুন"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"অফিসের অ্যাপ পজ করুন"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"আনপজ করুন"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"ফিল্টার"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"ফোনে সার্চ করে দেখুন"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"আপনার ট্যাবলেটে সার্চ করুন"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"কাজটি করা যায়নি: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 50b2b3c..8c3dd08 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Prečica nije dostupna"</string>
     <string name="home_screen" msgid="5629429142036709174">"Početni ekran"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Podijeljeni ekran"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Podijeli nagore"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Podijeli ulijevo"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Podijeli udesno"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Informacije o aplikaciji %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Sačuvaj par aplikacija"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Dodirnite i zadržite da pomjerite vidžet."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dvaput dodirnite i zadržite da pomjerite vidžet ili da koristite prilagođene radnje."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"Širina %1$d, visina %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Vidžet <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Dodirnite i držite vidžet da ga pomjerate po Početnom ekranu"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Dodaj na početni ekran"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Dodirnite i držite vidžet da ga pomjerate po početnom ekranu"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Dodaj na početni ekran"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Vidžet <xliff:g id="WIDGET_NAME">%1$s</xliff:g> je dodan na početni ekran"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Prijedlozi"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# vidžet}one{# vidžet}few{# vidžeta}other{# vidžeta}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# prečica}one{# prečica}few{# prečice}other{# prečica}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Lično"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Posao"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Razgovori"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Pisanje bilješki"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Korisne informacije nadohvat ruke"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Da dobijete informacije bez otvaranja aplikacija, možete dodati vidžete na početni ekran"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Da dobijete informacije bez otvaranja aplikacija, možete dodati vidžete na početni ekran"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Dodirnite da promijenite postavke vidžeta"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Razumijem"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Promjena postavki vidžeta"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Pretražite aplikacije"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Aplikacije se učitavaju…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Nije pronađena nijedna aplikacija za upit \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Pretraži više aplikacija"</string>
     <string name="label_application" msgid="8531721983832654978">"Aplikacija"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Sve aplikacije"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Obavještenja"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Dodirnite i zadržite da pomjerite prečicu."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dvaput dodirnite i zadržite da pomjerite prečicu ili da koristite prilagođene radnje."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Nema prostora na ovom početnom ekranu"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Nema prostora na ovom početnom ekranu"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Nema više prostora u ladici Omiljeno"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Lista aplikacija"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Rezultati pretraživanja"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Zakači predviđanje"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"instaliraj prečice"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Dopušta aplikaciji dodavanje prečica bez posredovanja korisnika."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"čitaj postavke na početnom ekranu i prečice"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Dopušta aplikaciji čitanje postavki i prečica na početnom ekranu."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"zapisuj postavke na početnom ekranu i prečice"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Dopušta aplikaciji promjenu postavki i prečica na početnom ekranu."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> nema odobrenje da uspostavlja telefonske pozive"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"čita postavke na početnom ekranu i prečice"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Dopušta aplikaciji čitanje postavki i prečica na početnom ekranu."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"zapisuje postavke na početnom ekranu i prečice"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Dopušta aplikaciji promjenu postavki i prečica na početnom ekranu."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Nije moguće učitati vidžet"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Postavke vidžeta"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Dodirnite da završite postavljanje"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Ovo je sistemska aplikacija i ne može se deinstalirati."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Uređivanje naziva"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> je onemogućena"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} ima # obavještenje}one{{app_name} ima # obavještenje}few{{app_name} ima # obavještenja}other{{app_name} ima # obavještenja}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{Aplikacija {app_name} ima # obavještenje}one{Aplikacija {app_name} ima # obavještenje}few{Aplikacija {app_name} ima # obavještenja}other{Aplikacija {app_name} ima # obavještenja}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Strana %1$d od %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Početni ekran %1$d od %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Nova stranica početnog ekrana"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Folder: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> ili više stavki"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Pozadinske slike"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Pozadinska slika i stil"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Uredi Početni ekran"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Postavke početnog ekrana"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Onemogućio vaš administrator"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Dozvoli rotiranje početnog ekrana"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Dozvoli rotiranje početnog ekrana"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Kada se telefon zarotira"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Tačke za obavještenja"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Uključeno"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Za prikaz tačaka za obavještenja, uključite obavještenja za aplikacije za aplikaciju <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Promijeni postavke"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Prikaži tačke za obavještenja"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Dodaj ikone aplikacija na početni ekran"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Opcije za programere"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Dodaj ikone aplikacija na početni ekran"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Za nove aplikacije"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Nepoznato"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Ukloni"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Instaliranje aplikacije <xliff:g id="NAME">%1$s</xliff:g>, završeno je <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> se preuzima, završeno <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> čeka da se instalira"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Potrebno je ažurirati aplikaciju"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Aplikacija za ovu ikonu nije ažurirana. Možete je ažurirati ručno da ponovo omogućite ovu prečicu ili možete ukloniti ikonu."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Ažuriraj"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Ukloni"</string>
     <string name="widgets_list" msgid="796804551140113767">"Spisak vidžeta"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Spisak vidžeta je zatvoren"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Dodavanje na početni ekran"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Dodavanje na početni ekran"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Premjesti stavku ovdje"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Stavka je dodana na Početni ekran."</string>
     <string name="item_removed" msgid="851119963877842327">"Stavka je uklonjena"</string>
     <string name="undo" msgid="4151576204245173321">"Poništi"</string>
     <string name="action_move" msgid="4339390619886385032">"Premjesti stavku"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Pomjeri stavku u red <xliff:g id="NUMBER_0">%1$s</xliff:g> kolonu <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Premještanje u red <xliff:g id="NUMBER_0">%1$s</xliff:g>, kolonu <xliff:g id="NUMBER_1">%2$s</xliff:g> na <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Pomjeri stavku na poziciju <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Pomjeri stavku na poziciju <xliff:g id="NUMBER">%1$s</xliff:g> među omiljenim"</string>
     <string name="item_moved" msgid="4606538322571412879">"Stavka je premještena"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Stavka je dodana u folder"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Kreirajte folder sa stavkom: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Folder je kreiran"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Pomjeri na početni ekran"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Pomjeranje na početni ekran"</string>
     <string name="action_resize" msgid="1802976324781771067">"Promijeni veličinu"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Povećaj širinu"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Povećaj visinu"</string>
@@ -153,18 +157,21 @@
     <string name="action_dismiss_notification" msgid="5909461085055959187">"Odbaci"</string>
     <string name="accessibility_close" msgid="2277148124685870734">"Zatvaranje"</string>
     <string name="notification_dismissed" msgid="6002233469409822874">"Obavještenje je odbačeno"</string>
-    <string name="all_apps_personal_tab" msgid="4190252696685155002">"Lične"</string>
-    <string name="all_apps_work_tab" msgid="4884822796154055118">"Poslovne"</string>
+    <string name="all_apps_personal_tab" msgid="4190252696685155002">"Lično"</string>
+    <string name="all_apps_work_tab" msgid="4884822796154055118">"Poslovno"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"Radni profil"</string>
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Poslovne aplikacije su označene i vaš IT administrator ih može vidjeti"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Razumijem"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Poslovne aplikacije su pauzirane"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Nećete primati obavještenja iz poslovnih aplikacija"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Poslovne aplikacije vam ne mogu slati obavještenja, koristiti bateriju niti pristupiti vašoj lokaciji"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Poslovne aplikacije su isključene. Poslovne aplikacije vam ne mogu slati obavještenja, koristiti bateriju ili pristupiti vašoj lokaciji"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Nećete primati telefonske pozive, poruke ili obavještenja iz poslovnih aplikacija"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Poslovne aplikacije su označene i vaš IT administrator ih može vidjeti"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Razumijem"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Isključi poslovne aplikacije"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Uključi poslovne aplikacije"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Pauziraj poslovne aplikacije"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Ponovo pokreni"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtrirajte"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Pretražite telefon"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Pretražite tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Nije uspjelo: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index a0f03c8..9fe81dd 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"La drecera no està disponible"</string>
     <string name="home_screen" msgid="5629429142036709174">"Inici"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Pantalla dividida"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Divideix a la part superior"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Divideix a l\'esquerra"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Divideix a la dreta"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Informació de l\'aplicació %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Desa la parella d\'aplicacions"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Fes doble toc i mantén premut per moure un widget."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Fes doble toc i mantén premut per moure un widget o per utilitzar accions personalitzades."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d d\'amplada per %2$d d\'alçada"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Widget de <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Mantén premut el widget per moure\'l per la pantalla d\'inici"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Afegeix a la pantalla d\'inici"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Mantén premut el widget per moure\'l per la pantalla d\'inici"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Afegeix a la pantalla d\'inici"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"El widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g> s\'ha afegit a la pantalla d\'inici"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Suggeriments"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}other{# widgets}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# drecera}other{# dreceres}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personal"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Treball"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Converses"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Presa de notes"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Informació útil a l\'abast de la mà"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Per obtenir informació sense obrir les aplicacions, pots afegir widgets a la pantalla d\'inici"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Per obtenir informació sense obrir les aplicacions, pots afegir widgets a la pantalla d\'inici"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Toca per canviar la configuració del widget"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Entesos"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Canvia la configuració del widget"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Cerca aplicacions"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"S\'estan carregant les aplicacions…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"No s\'ha trobat cap aplicació que coincideixi amb \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Cerca més aplicacions"</string>
     <string name="label_application" msgid="8531721983832654978">"Aplicació"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Totes les aplicacions"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Notificacions"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Fes doble toc i mantén premut per moure una drecera."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Fes doble toc i mantén premut per moure una drecera o per utilitzar accions personalitzades."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"No queda espai en aquesta pantalla d\'inici"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"No queda espai en aquesta pantalla d\'inici"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"No hi ha més espai a la safata Preferits."</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Llista d\'aplicacions"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Resultats de la cerca"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Fixa la predicció"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"instal·la dreceres"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Permet que una aplicació afegeixi dreceres sense la intervenció de l\'usuari."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"llegeix la configuració i les dreceres de la pantalla d\'inici"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Permet que l\'aplicació llegeixi la configuració i les dreceres de la pantalla d\'inici."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"escriu la configuració i les dreceres de la pantalla d\'inici"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Permet que l\'aplicació canviï la configuració i les dreceres de la pantalla d\'inici."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> no té permís per fer trucades telefòniques"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"llegir la configuració i les dreceres de la pantalla d\'inici"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Permet que l\'aplicació llegeixi la configuració i les dreceres de la pantalla d\'inici."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"escriure la configuració i les dreceres de la pantalla d\'inici"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Permet que l\'aplicació canviï la configuració i les dreceres de la pantalla d\'inici."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"No es pot carregar el widget"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Configuració del widget"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Toca per finalitzar la configuració"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Aquesta aplicació és una aplicació del sistema i no es pot desinstal·lar."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Edita el nom"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"S\'ha desactivat <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} té # notificació}other{{app_name} té # notificacions}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} té # notificació}other{{app_name} té # notificacions}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Pàgina %1$d de %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Pantalla d\'inici %1$d de %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Pàgina de la pantalla d\'inici nova"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Carpeta: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> o més elements"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Fons de pantalla"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Estil i fons de pantalla"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Edita la pantalla d\'inici"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Config. pantalla d\'inici"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Desactivada per l\'administrador"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Permet la rotació de la pantalla d\'inici"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Permet la rotació de la pantalla d\'inici"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"En girar el telèfon"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Punts de notificació"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Activats"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Per veure els punts de notificació, activa les notificacions de l\'aplicació <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Canvia la configuració"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Mostra els punts de notificació"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Afegeix icones d\'aplicacions a la pantalla d\'inici"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Opcions per a desenvolupadors"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Afegeix icones d\'aplicacions a la pantalla d\'inici"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Per a les aplicacions noves"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Desconegut"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Suprimeix"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"S\'està instal·lant <xliff:g id="NAME">%1$s</xliff:g>; s\'ha completat un <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"S\'està baixant <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="PROGRESS">%2$s</xliff:g> completat"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"S\'està esperant per instal·lar <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Cal actualitzar l\'aplicació"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"L\'aplicació d\'aquesta icona no està actualitzada. Pots actualitzar-la manualment per tornar a activar aquesta drecera o pots suprimir la icona."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Actualitza"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Suprimeix"</string>
     <string name="widgets_list" msgid="796804551140113767">"Llista de widgets"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"S\'ha tancat la llista de widgets"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Afegeix a la pantalla d\'inici"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Afegeix a la pantalla d\'inici"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Mou l\'element aquí"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"S\'ha afegit l\'element a la pantalla d\'inici"</string>
     <string name="item_removed" msgid="851119963877842327">"S\'ha suprimit l\'element"</string>
     <string name="undo" msgid="4151576204245173321">"Desfés"</string>
     <string name="action_move" msgid="4339390619886385032">"Desplaça l\'element"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Desplaça l\'element a la fila <xliff:g id="NUMBER_0">%1$s</xliff:g> i la columna <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Mou a la fila <xliff:g id="NUMBER_0">%1$s</xliff:g>, columna <xliff:g id="NUMBER_1">%2$s</xliff:g> a <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Desplaça l\'element a la posició <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Desplaça l\'element a la posició de preferits <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Element desplaçat"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Element afegit a la carpeta"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Crea una carpeta amb: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Carpeta creada"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Desplaça a la pantalla d\'inici"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Mou a la pantalla d\'inici"</string>
     <string name="action_resize" msgid="1802976324781771067">"Canvia la mida"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Augmenta l\'amplada"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Augmenta l\'alçada"</string>
@@ -156,15 +160,18 @@
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"Personal"</string>
     <string name="all_apps_work_tab" msgid="4884822796154055118">"Treball"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"Perfil de treball"</string>
-    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Les aplicacions de treball tenen una insígnia i són visibles per al teu administrador de TI"</string>
+    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Les aplicacions de treball tenen una insígnia i el teu administrador de TI les pot veure"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Entesos"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Les aplicacions de treball estan en pausa"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"No rebràs cap notificació de les aplicacions de treball"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Les aplicacions de treball no poden enviar-te notificacions, consumir bateria ni accedir a la teva ubicació"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Les aplicacions de treball estan desactivades: no poden enviar-te notificacions, consumir bateria ni accedir a la teva ubicació"</string>
-    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Les aplicacions de treball tenen una insígnia i són visibles per al teu administrador de TI"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"No rebràs trucades, missatges de text ni notificacions de les aplicacions de treball"</string>
+    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Les aplicacions de treball tenen una insígnia i el teu administrador de TI les pot veure"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Entesos"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Desactiva les aplicacions de treball"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Activa les aplicacions de treball"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Posa en pausa les aplicacions de treball"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Reactiva"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtra"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Cerca al telèfon"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Cerca a la tauleta"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Error: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index a92e936..40e1397 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -27,19 +27,18 @@
     <string name="safemode_widget_error" msgid="4863470563535682004">"V nouzovém režimu jsou widgety zakázány."</string>
     <string name="shortcut_not_available" msgid="2536503539825726397">"Zkratka není k dispozici"</string>
     <string name="home_screen" msgid="5629429142036709174">"Domů"</string>
-    <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Rozdělená obrazovka"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Rozdělit nahoře"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Rozdělit vlevo"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Rozdělit vpravo"</string>
+    <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Rozdělit obrazovku"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Informace o aplikaci %1$s"</string>
-    <string name="long_press_widget_to_add" msgid="3587712543577675817">"Klepnutím a podržením přesunete widget."</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Uložit pár aplikací"</string>
+    <string name="long_press_widget_to_add" msgid="3587712543577675817">"Widget přesunete klepnutím a podržením."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dvojitým klepnutím a podržením přesunete widget, případně použijte vlastní akce."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"šířka %1$d, výška %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> widget"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Pokud chcete widgetem pohybovat po ploše, podržte ho"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Přidat na plochu"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Pokud chcete widgetem pohybovat po ploše, podržte ho"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Přidat na plochu"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g> byl přidán na plochu"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Návrhy"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{ # widget}few{# widgety}many{# widgetu}other{# widgetů}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# zkratka}few{# zkratky}many{# zkratky}other{# zkratek}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Osobní"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Práce"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Konverzace"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Psaní poznámek"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Užitečné informace na dosah"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Pokud chcete mít informace k dispozici bez otevírání aplikací, můžete si na plochu přidat widgety"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Pokud chcete mít informace k dispozici bez otevírání aplikací, můžete si na plochu přidat widgety"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Klepnutím změníte nastavení widgetu"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Rozumím"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Změnit nastavení widgetu"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Hledat v aplikacích"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Načítání aplikací…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Dotazu „<xliff:g id="QUERY">%1$s</xliff:g>“ neodpovídají žádné aplikace"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Vyhledat další aplikace"</string>
     <string name="label_application" msgid="8531721983832654978">"Aplikace"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Všechny aplikace"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Oznámení"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Klepnutím a podržením přesunete zkratku."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dvojitým klepnutím a podržením přesunete zkratku, případně použijte vlastní akce."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Na této ploše není místo"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Na této ploše není místo"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Na panelu Oblíbené položky již není místo."</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Seznam aplikací"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Výsledky vyhledávání"</string>
@@ -75,22 +74,21 @@
     <string name="uninstall_drop_target_label" msgid="4722034217958379417">"Odinstalovat"</string>
     <string name="app_info_drop_target_label" msgid="692894985365717661">"O aplikaci"</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"Nainstalovat"</string>
-    <string name="dismiss_prediction_label" msgid="3357562989568808658">"Aplikaci nenavrhovat"</string>
+    <string name="dismiss_prediction_label" msgid="3357562989568808658">"Nenavrhovat aplikaci"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"Připnout předpověď"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"instalace zástupce"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Umožňuje aplikaci přidat zástupce bez zásahu uživatele."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"čtení nastavení a odkazů plochy"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Umožňuje aplikaci číst nastavení a odkazy na ploše."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"zápis nastavení a odkazů plochy"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Umožňuje aplikaci změnit nastavení a odkazy na ploše."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> nemá oprávnění telefonovat"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"čtení nastavení a zkratek plochy"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Umožňuje aplikaci číst nastavení a zkratky na ploše."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"zápis nastavení a zkratek plochy"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Umožňuje aplikaci změnit nastavení a zkratky na ploše."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Widget se nepodařilo načíst"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Nastavení widgetů"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Klepnutím dokončíte konfiguraci"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Toto je systémová aplikace a nelze ji odinstalovat."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Upravit název"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> je zakázána"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{Aplikace {app_name} má # oznámení}few{Aplikace {app_name} má # oznámení}many{Aplikace {app_name} má # oznámení}other{Aplikace {app_name} má # oznámení}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{Aplikace {app_name} má # oznámení}few{Aplikace {app_name} má # oznámení}many{Aplikace {app_name} má # oznámení}other{Aplikace {app_name} má # oznámení}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Strana %1$d z %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Plocha %1$d z %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Nová stránka plochy"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Složka: <xliff:g id="NAME">%1$s</xliff:g>, počet položek: <xliff:g id="SIZE">%2$d</xliff:g> nebo více"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Tapety"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Tapeta a styl"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Upravit plochu"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Nastavení plochy"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Zakázáno administrátorem"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Povolit otáčení plochy"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Povolit otáčení plochy"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Při otočení telefonu"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Puntíky s oznámením"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Zapnuto"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Chcete-li zobrazovat puntíky s oznámením, zapněte oznámení z aplikace <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Změnit nastavení"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Zobrazovat puntíky s oznámením"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Přidávat na plochu ikony aplikací"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Pro vývojáře"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Přidávat na plochu ikony aplikací"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"U nových aplikací"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Neznámé"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Odstranit"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Instalace aplikace <xliff:g id="NAME">%1$s</xliff:g>, dokončeno <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Stahování aplikace <xliff:g id="NAME">%1$s</xliff:g> (dokončeno <xliff:g id="PROGRESS">%2$s</xliff:g>)"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"Instalace aplikace <xliff:g id="NAME">%1$s</xliff:g> čeká na zahájení"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Je nutná aktualizace aplikace"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Aplikace pro tuto ikonu není nainstalována. Můžete ji ručně aktualizovat, aby zkratka znovu fungovala, případně můžete ikonu odstranit."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Aktualizovat"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Odstranit"</string>
     <string name="widgets_list" msgid="796804551140113767">"Seznam widgetů"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Seznam widgetů zavřen"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Přidat na plochu"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Přidat na plochu"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Přesunout položku sem"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Položka byla přidána na plochu"</string>
     <string name="item_removed" msgid="851119963877842327">"Položka byla odstraněna"</string>
     <string name="undo" msgid="4151576204245173321">"Zpět"</string>
     <string name="action_move" msgid="4339390619886385032">"Přesunout položku"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Přesunout na řádek <xliff:g id="NUMBER_0">%1$s</xliff:g> do sloupce <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Přesunout na řádek <xliff:g id="NUMBER_0">%1$s</xliff:g>, sloupec <xliff:g id="NUMBER_1">%2$s</xliff:g> na ploše <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Přesunout na pozici <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Přesunout do oblíbených položek na pozici <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Položka byla přesunuta"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Položka byla přidána do složky"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Vytvořit složku s položkou <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Složka byla vytvořena"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Přesunout na plochu"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Přesunout na plochu"</string>
     <string name="action_resize" msgid="1802976324781771067">"Změnit velikost"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Zvýšit šířku"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Zvýšit výšku"</string>
@@ -156,15 +160,18 @@
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"Osobní"</string>
     <string name="all_apps_work_tab" msgid="4884822796154055118">"Pracovní"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"Pracovní profil"</string>
-    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Pracovní aplikace jsou označené a viditelné vašemu administrátorovi IT"</string>
+    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Pracovní aplikace jsou označené a váš administrátor IT je vidí"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Rozumím"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Pracovní aplikace jsou pozastaveny"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Z pracovních aplikací nebudete dostávat oznámení."</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Pracovní aplikace vám nemohou zasílat oznámení, používat vaši baterii ani získat přístup k vaší poloze"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Pracovní aplikace jsou vypnuté. Nemohou vám zasílat oznámení, používat vaši baterii ani získat přístup k vaší poloze"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Z pracovních aplikací nebudete dostávat telefonní hovory, SMS ani oznámení"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Pracovní aplikace jsou označené a viditelné vašemu administrátorovi IT"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Vypnout pracovní aplikace"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Zapnout pracovní aplikace"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Pozastavit pracovní aplikace"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Zrušit pozastavení"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtr"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Prohledávání telefonu"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Vyhledávání na tabletu"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Selhalo: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index ee339c4..2ccdded 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Genvejen er ikke tilgængelig"</string>
     <string name="home_screen" msgid="5629429142036709174">"Startskærm"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Opdel skærm"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Vis øverst"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Vis i venstre side"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Vis i højre side"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Appinfo for %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Gem appsammenknytning"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Hold en widget nede for at flytte den."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Tryk to gange, og hold en widget nede for at flytte den eller bruge tilpassede handlinger."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d i bredden og %2$d i højden"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Widgetten <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Hold widgetten nede for at flytte den rundt på startskærmen"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Føj til startskærm"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Hold widgetten nede for at flytte den rundt på startskærmen"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Føj til startskærm"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Widgetten <xliff:g id="WIDGET_NAME">%1$s</xliff:g> blev føjet til startskærmen"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Forslag"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}one{# widget}other{# widgets}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# genvej}one{# genvej}other{# genveje}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personlige"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Arbejde"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Samtaler"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Notetagning"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Nyttige oplysninger lige ved hånden"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Hvis du vil have oplysninger uden at åbne apps, kan du føje widgets til din startskærm"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Hvis du vil have oplysninger uden at åbne apps, kan du føje widgets til din startskærm"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Tryk for at ændre widgetindstillinger"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Skift widgetindstillinger"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Søg efter apps"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Indlæser apps…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Der blev ikke fundet nogen apps, som matcher \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Søg efter flere apps"</string>
     <string name="label_application" msgid="8531721983832654978">"App"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Alle apps"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Notifikationer"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Hold en genvej nede for at flytte den."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Tryk to gange, og hold en genvej nede for at flytte den eller bruge tilpassede handlinger."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Der er ikke ledig plads på startskærmen"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Der er ikke ledig plads på startskærmen"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Der er ikke mere plads i bakken Favoritter"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Liste med apps"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Søgeresultater"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Fastgør forslaget"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"installere genveje"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Tillader, at en app tilføjer genveje uden brugerens indgriben."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"læs indstillinger og genveje for startskærmen"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Tillader, at appen læser indstillingerne og genvejene på startskærmen."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"skrive indstillinger og genveje for startskærmen"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Tillader, at appen ændrer indstillingerne og genvejene på startskærmen."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> har ikke tilladelse til at foretage telefonopkald"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"læs indstillinger og genveje for startskærm"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Tillader, at appen læser indstillingerne og genvejene på startskærmen."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"skriv indstillinger og genveje for startskærm"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Tillader, at appen ændrer indstillingerne og genvejene på startskærmen."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Widgetten kan ikke indlæses"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Widget-indstillinger"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Tryk for at fuldføre konfigurationen"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Dette er en systemapp, som ikke kan afinstalleres."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Rediger navn"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> er deaktiveret"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} har # notifikation}one{{app_name} har # notifikation}other{{app_name} har # notifikationer}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} har # notifikation}one{{app_name} har # notifikation}other{{app_name} har # notifikationer}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Side %1$d ud af %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Startskærm %1$d ud af %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Ny startskærm"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Mappe: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> eller flere elementer"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Baggrunde"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Baggrund og stil"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Rediger startskærm"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Indst. for startskærm"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Deaktiveret af din administrator"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Tillad rotation af startskærmen"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Tillad rotation af startskærmen"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Når telefonen roteres"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Notifikationsprikker"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Til"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Hvis du vil se notifikationsprikker, skal du aktivere appnotifikationer for <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Skift indstillinger"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Vis notifikationsprikker"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Føj appikoner til startskærmen"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Indstillinger for udviklere"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Føj appikoner til startskærmen"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"For nye apps"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Ukendt"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Fjern"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> installeres. <xliff:g id="PROGRESS">%2$s</xliff:g> fuldført"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> downloades. <xliff:g id="PROGRESS">%2$s</xliff:g> er gennemført"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> venter på at installere"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Appen skal opdateres"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Appen, der tilhører dette ikon, er ikke opdateret. Du kan opdatere appen manuelt for at genaktivere denne genvej, eller du kan fjerne ikonet."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Opdater"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Fjern"</string>
     <string name="widgets_list" msgid="796804551140113767">"Liste med widgets"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Listen med widgets blev lukket"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Føj til startskærm"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Føj til startskærm"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Flyt elementet hertil"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Elementet er føjet til startskærmen"</string>
     <string name="item_removed" msgid="851119963877842327">"Elementet er fjernet"</string>
     <string name="undo" msgid="4151576204245173321">"Fortryd"</string>
     <string name="action_move" msgid="4339390619886385032">"Flyt element"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Flyt til række <xliff:g id="NUMBER_0">%1$s</xliff:g>, kolonne <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Flyt til række <xliff:g id="NUMBER_0">%1$s</xliff:g> kolonne <xliff:g id="NUMBER_1">%2$s</xliff:g> i <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Flyt til position <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Flyt til foretrukne position <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Elementet blev flyttet"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Elementet blev føjet til mappen"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Opret mappe med: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Mappen blev oprettet"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Flyt til startskærmen"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Flyt til startskærm"</string>
     <string name="action_resize" msgid="1802976324781771067">"Tilpas størrelse"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Øg bredden"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Øg højden"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Arbejdsapps har badges og kan ses af din it-administrator"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Dine arbejdsapps er sat på pause"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Du vil ikke modtage notifikationer fra dine arbejdsapps"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Arbejdsapps kan ikke sende dig notifikationer, bruge dit batteri eller få adgang til din lokation"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Arbejdsapps er deaktiveret. Dine arbejdsapps kan ikke sende dig notifikationer, bruge dit batteri eller få adgang til din lokation"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Du vil ikke modtage telefonopkald, beskeder eller notifikationer fra dine arbejdsapps"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Arbejdsapps har badges og kan ses af din it-administrator"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Deaktiver arbejdsapps"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Aktivér arbejdsapps"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Sæt arbejdsapps på pause"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Genoptag"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filter"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Søg på din telefon"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Søg på din tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Mislykket: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index a0c784f..93ea28e 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Verknüpfung nicht verfügbar"</string>
     <string name="home_screen" msgid="5629429142036709174">"Startbildschirm"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Splitscreen"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Oben teilen"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Links teilen"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Rechts teilen"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"App-Info für %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"App-Paar speichern"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Zum Verschieben des Widgets berühren und halten"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Doppeltippen und halten, um ein Widget zu bewegen oder benutzerdefinierte Aktionen zu nutzen."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d breit und %2$d hoch"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Widget „<xliff:g id="WIDGET_NAME">%1$s</xliff:g>“"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Wenn du das Widget auf dem Startbildschirm verschieben möchtest, halte es gedrückt"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Zum Startbildschirm hinzufügen"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Wenn du das Widget auf dem Startbildschirm verschieben möchtest, halte es gedrückt"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Zum Startbildschirm hinzufügen"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g>-Widget zum Startbildschirm hinzugefügt"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Vorschläge"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# Widget}other{# Widgets}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# Verknüpfung}other{# Verknüpfungen}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Privat"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Geschäftlich"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Unterhaltungen"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Notizen"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Praktische Informationen – immer zur Hand"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Wenn du Informationen erhalten möchtest, ohne Apps zu öffnen, kannst du deinem Startbildschirm Widgets hinzufügen"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Wenn du Informationen erhalten möchtest, ohne Apps zu öffnen, kannst du deinem Startbildschirm Widgets hinzufügen"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Tippen, um die Widget-Einstellungen zu ändern"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Widget-Einstellungen ändern"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Apps finden"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Apps werden geladen…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Keine Apps für \"<xliff:g id="QUERY">%1$s</xliff:g>\" gefunden"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Weitere Apps suchen"</string>
     <string name="label_application" msgid="8531721983832654978">"App"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Alle Apps"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Benachrichtigungen"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Zum Verschieben einer Verknüpfung berühren und halten"</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Doppeltippen und halten, um eine Verknüpfung zu bewegen oder benutzerdefinierte Aktionen zu nutzen."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Auf diesem Startbildschirm ist kein Platz mehr vorhanden"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Auf diesem Startbildschirm ist kein Platz mehr vorhanden"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Ablage \"Favoriten\" ist voll."</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Liste der Apps"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Suchergebnisse"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Vorgeschlagene App fixieren"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"Verknüpfungen installieren"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Ermöglicht einer App das Hinzufügen von Verknüpfungen ohne Eingreifen des Nutzers"</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"Einstellungen und Verknüpfungen auf dem Startbildschirm lesen"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Ermöglicht der App, die Einstellungen und Verknüpfungen auf dem Startbildschirm zu lesen"</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"Einstellungen und Verknüpfungen für den Startbildschirm schreiben"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Ermöglicht der App, die Einstellungen und Verknüpfungen auf dem Startbildschirm zu ändern"</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> darf keine Telefonanrufe tätigen."</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"Einstellungen und Verknüpfungen auf dem Startbildschirm lesen"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Ermöglicht der App, die Einstellungen und Verknüpfungen auf dem Startbildschirm zu lesen."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"Einstellungen und Verknüpfungen für den Startbildschirm schreiben"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Ermöglicht der App, die Einstellungen und Verknüpfungen auf dem Startbildschirm zu ändern."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Widget kann nicht geladen werden"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Widget-Einstellungen"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Tippen, um Einrichtung abzuschließen"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Dies ist eine Systemanwendung, die nicht deinstalliert werden kann."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Name bearbeiten"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> deaktiviert"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} hat # Benachrichtigung}other{{app_name} hat # Benachrichtigungen}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} hat # Benachrichtigung}other{{app_name} hat # Benachrichtigungen}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Seite %1$d von %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Startbildschirm %1$d von %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Neue Startbildschirmseite"</string>
@@ -102,10 +100,11 @@
     <string name="folder_name_format_exact" msgid="8626242716117004803">"Ordner: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> Elemente"</string>
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Ordner: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> oder mehr Elemente"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Hintergründe"</string>
-    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Hintergrund &amp; Stil"</string>
-    <string name="settings_button_text" msgid="8873672322605444408">"Startbildschirm-Einstellungen"</string>
+    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Hintergrund und Stil"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Startbildschirm bearbeiten"</string>
+    <string name="settings_button_text" msgid="8873672322605444408">"Einstellungen"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Von deinem Administrator deaktiviert"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Drehen des Startbildschirms zulassen"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Drehen des Startbildschirms zulassen"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Beim Drehen des Smartphones"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"App-Benachrichtigungspunkte"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"An"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Um dir Benachrichtigungspunkte anzeigen zu lassen, aktiviere die Benachrichtigungen für die App \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Einstellungen ändern"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"App-Benachrichtigungspunkte anzeigen"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"App-Symbole auf Startbildschirm setzen"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Entwickleroptionen"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"App-Symbole zum Startbildschirm hinzufügen"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Bei neuen Apps"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Unbekannt"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Entfernen"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> wird installiert, <xliff:g id="PROGRESS">%2$s</xliff:g> abgeschlossen"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> wird heruntergeladen, <xliff:g id="PROGRESS">%2$s</xliff:g> abgeschlossen"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"Warten auf Installation von <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"App-Update erforderlich"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Die App für dieses Symbol wurde noch nicht aktualisiert. Du kannst sie manuell aktualisieren, um die Verknüpfung wieder zu aktivieren, oder das Symbol entfernen."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Aktualisieren"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Entfernen"</string>
     <string name="widgets_list" msgid="796804551140113767">"Widgetliste"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Widgetliste geschlossen"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Zum Startbildschirm hinzufügen"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Zum Startbildschirm hinzufügen"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Element hierhin verschieben"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Element zum Startbildschirm hinzugefügt"</string>
     <string name="item_removed" msgid="851119963877842327">"Element entfernt"</string>
     <string name="undo" msgid="4151576204245173321">"Rückgängig"</string>
     <string name="action_move" msgid="4339390619886385032">"Element verschieben"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"In Zeile <xliff:g id="NUMBER_0">%1$s</xliff:g>, Spalte <xliff:g id="NUMBER_1">%2$s</xliff:g> verschoben"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"In <xliff:g id="STRING">%3$s</xliff:g> zu Zeile <xliff:g id="NUMBER_0">%1$s</xliff:g> Spalte <xliff:g id="NUMBER_1">%2$s</xliff:g> bewegen"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Auf Position <xliff:g id="NUMBER">%1$s</xliff:g> verschoben"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Auf Favoritenposition <xliff:g id="NUMBER">%1$s</xliff:g> verschoben"</string>
     <string name="item_moved" msgid="4606538322571412879">"Element verschoben"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Element zum Ordner hinzugefügt"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Anhand von <xliff:g id="NAME">%1$s</xliff:g> Ordner erstellen"</string>
     <string name="folder_created" msgid="6409794597405184510">"Ordner erstellt"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Auf Startbildschirm verschieben"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Zu Startbildschirm verschieben"</string>
     <string name="action_resize" msgid="1802976324781771067">"Größe anpassen"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Breite vergrößern"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Höhe vergrößern"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Geschäftliche Apps sind gekennzeichnet und für deinen IT-Administrator sichtbar"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Geschäftliche Apps sind pausiert"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Du erhältst von geschäftlichen Apps keine Benachrichtigungen mehr"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Deine geschäftlichen Apps können dir keine Benachrichtigungen senden, deinen Akku nicht nutzen und nicht auf deinen Standort zugreifen"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Geschäftliche Apps sind deaktiviert. Sie können dir keine Benachrichtigungen senden, deinen Akku nicht nutzen und nicht auf deinen Standort zugreifen."</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Du erhältst von geschäftlichen Apps keine Benachrichtigungen mehr und auch keine Anrufe oder SMS"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Geschäftliche Apps sind gekennzeichnet und für deinen IT-Administrator sichtbar"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Geschäftliche Apps deaktivieren"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Geschäftliche Apps aktivieren"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Geschäftliche Apps pausieren"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Nicht mehr pausieren"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filter"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Auf dem Smartphone suchen"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Auf dem Tablet suchen"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Fehler: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index b78db22..6b6f249 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Η συντόμευση δεν είναι διαθέσιμη"</string>
     <string name="home_screen" msgid="5629429142036709174">"Αρχική οθόνη"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Διαχωρισμός οθόνης"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Διαχωρισμός επάνω"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Διαχωρισμός αριστερά"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Διαχωρισμός δεξιά"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Πληροφορίες εφαρμογής για %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Αποθήκευση ζεύγους εφαρμογών"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Πατήστε παρατετ. για μετακίνηση γραφ. στοιχείου."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Πατήστε δύο φορές παρατεταμένα για μετακίνηση γραφικού στοιχείου ή χρήση προσαρμοσμένων ενεργειών."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"Πλάτος %1$d επί ύψος %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Γραφικό στοιχείο <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Αγγίξτε παρατεταμένα το γραφικό στοιχείο για να το μετακινήσετε στην Αρχική οθόνη"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Προσθήκη στην Αρχική οθόνη"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Αγγίξτε παρατεταμένα το γραφικό στοιχείο για να το μετακινήσετε στην αρχική οθόνη"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Προσθήκη στην αρχική οθόνη"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Το γραφικό στοιχείο <xliff:g id="WIDGET_NAME">%1$s</xliff:g> προστέθηκε στην αρχική οθόνη."</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Προτάσεις"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# γραφικό στοιχείο}other{# γραφικά στοιχεία}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# συντόμευση}other{# συντομεύσεις}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Προσωπικά"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Εργασίας"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Συζητήσεις"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Δημιουργία σημειώσεων"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Χρήσιμες πληροφορίες στη διάθεσή σας"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Για να λάβετε πληροφορίες χωρίς να ανοίξετε εφαρμογές, μπορείτε να προσθέσετε γραφικά στοιχεία στην αρχική σας οθόνη."</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Για να λάβετε πληροφορίες χωρίς να ανοίξετε εφαρμογές, μπορείτε να προσθέσετε γραφικά στοιχεία στην αρχική οθόνη."</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Πατήστε για αλλαγή των ρυθμίσεων του γραφικού στοιχείου"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Το κατάλαβα"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Αλλαγή ρυθμίσεων γραφικού στοιχείου"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Αναζήτηση εφαρμογών"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Φόρτωση εφαρμογών…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Δεν βρέθηκαν εφαρμογές αντιστοίχισης για \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Αναζήτηση περισσότερων εφαρμογών"</string>
     <string name="label_application" msgid="8531721983832654978">"Εφαρμογή"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Όλες οι εφαρμογές"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Ειδοποιήσεις"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Πατήστε παρατεταμένα για μετακίνηση συντόμευσης."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Πατήστε δύο φορές παρατεταμένα για μετακίνηση συντόμευσης ή χρήση προσαρμοσμένων ενεργειών."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Δεν υπάρχει χώρος σε αυτήν την αρχική οθόνη"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Δεν υπάρχει χώρος σε αυτήν την αρχική οθόνη"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Δεν υπάρχει επιπλέον χώρος στην περιοχή Αγαπημένα"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Λίστα εφαρμογών"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Αποτελέσματα αναζήτησης"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Καρφίτσωμα πρόβλεψης"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"εγκατάσταση συντομεύσεων"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Επιτρέπει σε μια εφαρμογή την προσθήκη συντομεύσεων χωρίς την παρέμβαση του χρήστη."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"ανάγνωση ρυθμίσεων και συντομεύσεων αρχικής οθόνης"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Επιτρέπει στην εφαρμογή την ανάγνωση των ρυθμίσεων και των συντομεύσεων στην Αρχική οθόνη."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"εγγραφή ρυθμίσεων και συντομεύσεων αρχικής οθόνης"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Επιτρέπει στην εφαρμογή την αλλαγή των ρυθμίσεων και των συντομεύσεων στην Αρχική οθόνη."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> δεν επιτρέπεται να πραγματοποιεί τηλεφωνικές κλήσεις"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"ανάγνωση ρυθμίσεων και συντομεύσεων αρχικής οθόνης"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Επιτρέπει στην εφαρμογή την ανάγνωση των ρυθμίσεων και των συντομεύσεων στην αρχική οθόνη."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"εγγραφή ρυθμίσεων και συντομεύσεων αρχικής οθόνης"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Επιτρέπει στην εφαρμογή την αλλαγή των ρυθμίσεων και των συντομεύσεων στην αρχική οθόνη."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Δεν είναι δυνατή η φόρτωση του γραφικού στοιχείου"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Ρυθμίσεις γραφικών στοιχείων"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Πατήστε για να ολοκληρώσετε τη ρύθμιση"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Αυτή είναι μια εφαρμογή συστήματος και δεν είναι δυνατή η κατάργηση της εγκατάστασής της."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Επεξεργασία ονόματος"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> είναι απενεργοποιημένη"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{Η εφαρμογή {app_name} έχει # ειδοποίηση}other{Η εφαρμογή {app_name} έχει # ειδοποιήσεις}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{Η εφαρμογή {app_name} έχει # ειδοποίηση}other{Η εφαρμογή {app_name} έχει # ειδοποιήσεις}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Σελίδα %1$d από %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Αρχική οθόνη %1$d από %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Νέα σελίδα αρχικής οθόνης"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Φάκελος: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> ή περισσότερα στοιχεία"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Ταπετσαρίες"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Ταπετσαρία και στιλ"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Επεξεργασία αρχικής οθόνης"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Ρυθμίσεις Αρχ. Οθ."</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Απενεργοποιήθηκε από τον διαχειριστή σας"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Να επιτρέπεται η περιστροφή της αρχικής οθόνης"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Να επιτρέπεται η περιστροφή της αρχικής οθόνης"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Όταν το τηλέφωνο περιστρέφεται"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Κουκκίδες ειδοποίησης"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Ενεργοποίηση"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Για να εμφανιστούν οι Κουκκίδες ειδοποίησης, ενεργοποιήστε τις κουκκίδες εφαρμογής για την εφαρμογή <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Αλλαγή ρυθμίσεων"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Εμφάνιση κουκκίδων ειδοποιήσεων"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Προσθ. εικονιδίων εφαρμ. σε αρχική οθόνη"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Επιλογές για προγραμματιστές"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Προσθήκη εικονιδίων εφαρμογών στην αρχική οθόνη"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Για νέες εφαρμογές"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Άγνωστο"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Κατάργηση"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Έχει ολοκληρωθεί το <xliff:g id="PROGRESS">%2$s</xliff:g> της εγκατάστασης της εφαρμογής <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Λήψη <xliff:g id="NAME">%1$s</xliff:g>, ολοκληρώθηκε <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> σε αναμονή για εγκατάσταση"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Απαιτείται ενημέρωση της εφαρμογής"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Η εφαρμογή για αυτό το εικονίδιο δεν έχει ενημερωθεί. Μπορείτε να την ενημερώσετε μη αυτόματα για να ενεργοποιήσετε ξανά τη συγκεκριμένη συντόμευση ή να καταργήσετε το εικονίδιο."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Ενημέρωση"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Κατάργηση"</string>
     <string name="widgets_list" msgid="796804551140113767">"Λίστα γραφικών στοιχείων"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Η λίστα γραφικών στοιχείων έκλεισε"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Προσθήκη στην αρχική οθόνη"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Προσθήκη στην αρχική οθόνη"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Μετακίνηση στοιχείου εδώ"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Το στοιχείο προστέθηκε στην αρχική οθόνη"</string>
     <string name="item_removed" msgid="851119963877842327">"Το στοιχείο καταργήθηκε"</string>
     <string name="undo" msgid="4151576204245173321">"Αναίρεση"</string>
     <string name="action_move" msgid="4339390619886385032">"Μετακίνηση στοιχείου"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Μετακίνηση στη σειρά <xliff:g id="NUMBER_0">%1$s</xliff:g>, στήλη <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Μετακίνηση στη σειρά <xliff:g id="NUMBER_0">%1$s</xliff:g> στήλη <xliff:g id="NUMBER_1">%2$s</xliff:g> στην <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Μετακίνηση στη θέση <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Μετακίνηση στη θέση <xliff:g id="NUMBER">%1$s</xliff:g> στα αγαπημένα"</string>
     <string name="item_moved" msgid="4606538322571412879">"Το στοιχείο καταργήθηκε"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Το στοιχείο προστέθηκε στο φάκελο"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Δημιουργία φακέλου με: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Δημιουργήθηκε φάκελος"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Μετακίνηση Αρχικής οθόνης"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Μετακίνηση στην αρχική οθόνη"</string>
     <string name="action_resize" msgid="1802976324781771067">"Προσαρμογή μεγέθους"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Αύξηση του πλάτους"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Αύξηση του ύψους"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Οι εφαρμογές εργασιών φέρουν σήμα και είναι ορατές στον διαχειριστή IT σας"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Το κατάλαβα"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Οι εφαρμογές εργασίας τέθηκαν σε παύση."</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Δεν θα λαμβάνετε ειδοποιήσεις από τις εφαρμογές εργασιών σας"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Οι εφαρμογές εργασίας δεν έχουν τη δυνατότητα αποστολής ειδοποιήσεων, χρήσης της μπαταρίας ή πρόσβασης στην τοποθεσία σας"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Οι εφαρμογές εργασίας είναι απενεργοποιημένες. Οι εφαρμογές εργασίας δεν έχουν τη δυνατότητα αποστολής ειδοποιήσεων, χρήσης της μπαταρίας ή πρόσβασης στην τοποθεσία σας"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Δεν θα λαμβάνετε τηλεφωνικές κλήσεις, μηνύματα κειμένου ή ειδοποιήσεις από τις εφαρμογές εργασιών σας"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Οι εφαρμογές εργασιών φέρουν σήμα και είναι ορατές στον διαχειριστή IT σας"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Το κατάλαβα"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Απενεργοποίηση εφαρμογών εργασιών"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Ενεργοποίηση εφαρμογών εργασίας"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Παύση εφαρμογών εργασιών"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Αναίρεση παύσης"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Φίλτρο"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Αναζήτηση στο τηλέφωνό σας"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Αναζήτηση στο tablet σας"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Αποτυχία: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 29a726c..aa926df 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Shortcut isn\'t available"</string>
     <string name="home_screen" msgid="5629429142036709174">"Home"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Split screen"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Split top"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Split left"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Split right"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"App info for %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Save app pair"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Touch and hold to move a widget."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Double-tap &amp; hold to move a widget or use custom actions."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d wide by %2$d high"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> widget"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Touch and hold the widget to move it around the home screen"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Add to home screen"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Touch and hold the widget to move it around the home screen"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Add to home screen"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> widget added to home screen"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Suggestions"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}other{# widgets}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# shortcut}other{# shortcuts}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personal"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Work"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Conversations"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Note-taking"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Useful info at your fingertips"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"To get info without opening apps, you can add widgets to your home screen"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"To get info without opening apps, you can add widgets to your home screen"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Tap to change widget settings"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Change widget settings"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Search apps"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Loading apps…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"No apps found matching \'<xliff:g id="QUERY">%1$s</xliff:g>\'"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Search for more apps"</string>
     <string name="label_application" msgid="8531721983832654978">"App"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"All apps"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Notifications"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Touch &amp; hold to move a shortcut."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Double-tap &amp; hold to move a shortcut or use custom actions."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"No room on this home screen"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"No room on this home screen"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"No more room in the Favourites tray"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Apps list"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Search results"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Pin prediction"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"install shortcuts"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Allows an app to add shortcuts without user intervention."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"read Home settings and shortcuts"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Allows the app to read the settings and shortcuts in Home."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"write Home settings and shortcuts"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Allows the app to change the settings and shortcuts in Home."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> is not allowed to make phone calls"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"read Home settings and shortcuts"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Allows the app to read the settings and shortcuts in Home."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"write Home settings and shortcuts"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Allows the app to change the settings and shortcuts in Home."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Can\'t load widget"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Widget settings"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Tap to finish setup"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"This is a system app and can\'t be uninstalled."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Edit Name"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Disabled <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} has # notification}other{{app_name} has # notifications}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} has # notification}other{{app_name} has # notifications}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Page %1$d of %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Home screen %1$d of %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"New home screen page"</string>
@@ -102,10 +100,11 @@
     <string name="folder_name_format_exact" msgid="8626242716117004803">"Folder: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> items"</string>
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Folder: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> or more items"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Wallpapers"</string>
-    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Wallpaper &amp; style"</string>
+    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Wallpaper and style"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Edit home screen"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Home settings"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Disabled by your admin"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Allow Home screen rotation"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Allow home screen rotation"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"When phone is rotated"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Notification dots"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"On"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"To show Notification Dots, turn on app notifications for <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Change settings"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Show notification dots"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Add app icons to the home screen"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Developer options"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Add app icons to home screen"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"For new apps"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Unknown"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Remove"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> installing, <xliff:g id="PROGRESS">%2$s</xliff:g> complete"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> downloading, <xliff:g id="PROGRESS">%2$s</xliff:g> complete"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> waiting to install"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"App update required"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"The app for this icon isn\'t updated. You can update manually to re-enable this shortcut or remove the icon."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Update"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Remove"</string>
     <string name="widgets_list" msgid="796804551140113767">"Widgets list"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Widgets list closed"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Add to Home screen"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Add to home screen"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Move item here"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Item added to home screen"</string>
     <string name="item_removed" msgid="851119963877842327">"Item removed"</string>
     <string name="undo" msgid="4151576204245173321">"Undo"</string>
     <string name="action_move" msgid="4339390619886385032">"Move item"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Move to row <xliff:g id="NUMBER_0">%1$s</xliff:g> column <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Move to row <xliff:g id="NUMBER_0">%1$s</xliff:g> column <xliff:g id="NUMBER_1">%2$s</xliff:g> in <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Move to position <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Move to favourites position <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Item moved"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Item added to folder"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Create folder with: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Folder created"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Move to Home screen"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Move to home screen"</string>
     <string name="action_resize" msgid="1802976324781771067">"Re-size"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Increase width"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Increase height"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Work apps are badged and visible to your IT admin"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Work apps are paused"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"You won’t receive notifications from your work apps"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Your work apps can’t send you notifications, use your battery or access your location"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Work apps are off. Your work apps can’t send you notifications, use your battery or access your location"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"You won’t receive phone calls, text messages or notifications from your work apps"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Work apps are badged and visible to your IT admin"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Turn off work apps"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Turn on work apps"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Pause work apps"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Unpause"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filter"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Search your phone"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Search your tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Failed: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 29a726c..40534ca 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Shortcut isn\'t available"</string>
     <string name="home_screen" msgid="5629429142036709174">"Home"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Split screen"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Split top"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Split left"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Split right"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"App info for %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Save app pair"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Touch and hold to move a widget."</string>
-    <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Double-tap &amp; hold to move a widget or use custom actions."</string>
+    <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Double-tap and hold to move a widget or use custom actions."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d wide by %2$d high"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> widget"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Touch and hold the widget to move it around the home screen"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Add to home screen"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Touch and hold the widget to move it around the home screen"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Add to home screen"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> widget added to home screen"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Suggestions"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}other{# widgets}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# shortcut}other{# shortcuts}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,22 +50,22 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personal"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Work"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Conversations"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Note-taking"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Useful info at your fingertips"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"To get info without opening apps, you can add widgets to your home screen"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"To get info without opening apps, you can add widgets to your home screen"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Tap to change widget settings"</string>
-    <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
+    <string name="widget_education_close_button" msgid="8676165703104836580">"Got it"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Change widget settings"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Search apps"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Loading apps…"</string>
-    <string name="all_apps_no_search_results" msgid="3200346862396363786">"No apps found matching \'<xliff:g id="QUERY">%1$s</xliff:g>\'"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Search for more apps"</string>
+    <string name="all_apps_no_search_results" msgid="3200346862396363786">"No apps found matching \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
     <string name="label_application" msgid="8531721983832654978">"App"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"All apps"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Notifications"</string>
-    <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Touch &amp; hold to move a shortcut."</string>
-    <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Double-tap &amp; hold to move a shortcut or use custom actions."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"No room on this home screen"</string>
-    <string name="hotseat_out_of_space" msgid="7448809638125333693">"No more room in the Favourites tray"</string>
+    <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Touch and hold to move a shortcut."</string>
+    <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Double-tap and hold to move a shortcut or use custom actions."</string>
+    <string name="out_of_space" msgid="6455557115204099579">"No room on this home screen"</string>
+    <string name="hotseat_out_of_space" msgid="7448809638125333693">"No more room in the Favorites tray"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Apps list"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Search results"</string>
     <string name="all_apps_button_personal_label" msgid="1315764287305224468">"Personal apps list"</string>
@@ -76,21 +75,20 @@
     <string name="app_info_drop_target_label" msgid="692894985365717661">"App info"</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"Install"</string>
     <string name="dismiss_prediction_label" msgid="3357562989568808658">"Don\'t suggest app"</string>
-    <string name="pin_prediction" msgid="4196423321649756498">"Pin prediction"</string>
+    <string name="pin_prediction" msgid="4196423321649756498">"Pin Prediction"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"install shortcuts"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Allows an app to add shortcuts without user intervention."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"read Home settings and shortcuts"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Allows the app to read the settings and shortcuts in Home."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"write Home settings and shortcuts"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Allows the app to change the settings and shortcuts in Home."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> is not allowed to make phone calls"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"read home settings and shortcuts"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Allows the app to read the settings and shortcuts in home."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"write home settings and shortcuts"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Allows the app to change the settings and shortcuts in home."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Can\'t load widget"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Widget settings"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Tap to finish setup"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"This is a system app and can\'t be uninstalled."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Edit Name"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Disabled <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} has # notification}other{{app_name} has # notifications}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} has # notification}other{{app_name} has # notifications}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Page %1$d of %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Home screen %1$d of %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"New home screen page"</string>
@@ -102,10 +100,11 @@
     <string name="folder_name_format_exact" msgid="8626242716117004803">"Folder: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> items"</string>
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Folder: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> or more items"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Wallpapers"</string>
-    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Wallpaper &amp; style"</string>
+    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Wallpaper and style"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Edit Home Screen"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Home settings"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Disabled by your admin"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Allow Home screen rotation"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Allow home screen rotation"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"When phone is rotated"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Notification dots"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"On"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"To show Notification Dots, turn on app notifications for <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Change settings"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Show notification dots"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Add app icons to the home screen"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Developer Options"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Add app icons to home screen"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"For new apps"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Unknown"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Remove"</string>
@@ -124,31 +124,35 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> installing, <xliff:g id="PROGRESS">%2$s</xliff:g> complete"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> downloading, <xliff:g id="PROGRESS">%2$s</xliff:g> complete"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> waiting to install"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"App update required"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"The app for this icon isn\'t updated. You can update manually to re-enable this shortcut, or remove the icon."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Update"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Remove"</string>
     <string name="widgets_list" msgid="796804551140113767">"Widgets list"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Widgets list closed"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Add to Home screen"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Add to home screen"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Move item here"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Item added to home screen"</string>
     <string name="item_removed" msgid="851119963877842327">"Item removed"</string>
     <string name="undo" msgid="4151576204245173321">"Undo"</string>
     <string name="action_move" msgid="4339390619886385032">"Move item"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Move to row <xliff:g id="NUMBER_0">%1$s</xliff:g> column <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Move to row <xliff:g id="NUMBER_0">%1$s</xliff:g> column <xliff:g id="NUMBER_1">%2$s</xliff:g> in <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Move to position <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
-    <string name="move_to_hotseat_position" msgid="6295412897075147808">"Move to favourites position <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="move_to_hotseat_position" msgid="6295412897075147808">"Move to favorites position <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Item moved"</string>
     <string name="add_to_folder" msgid="9040534766770853243">"Add to folder: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="add_to_folder_with_app" msgid="4534929978967147231">"Add to folder with <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="added_to_folder" msgid="4793259502305558003">"Item added to folder"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Create folder with: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Folder created"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Move to Home screen"</string>
-    <string name="action_resize" msgid="1802976324781771067">"Re-size"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Move to home screen"</string>
+    <string name="action_resize" msgid="1802976324781771067">"Resize"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Increase width"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Increase height"</string>
     <string name="action_decrease_width" msgid="1374549771083094654">"Decrease width"</string>
     <string name="action_decrease_height" msgid="282377193880900022">"Decrease height"</string>
-    <string name="widget_resized" msgid="9130327887929620">"Widget re-sized to width <xliff:g id="NUMBER_0">%1$s</xliff:g> height <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
-    <string name="action_deep_shortcut" msgid="2864038805849372848">"Short cuts"</string>
+    <string name="widget_resized" msgid="9130327887929620">"Widget resized to width <xliff:g id="NUMBER_0">%1$s</xliff:g> height <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="action_deep_shortcut" msgid="2864038805849372848">"Shortcuts"</string>
     <string name="shortcuts_menu_with_notifications_description" msgid="2676582286544232849">"Shortcuts and notifications"</string>
     <string name="action_dismiss_notification" msgid="5909461085055959187">"Dismiss"</string>
     <string name="accessibility_close" msgid="2277148124685870734">"Close"</string>
@@ -157,14 +161,17 @@
     <string name="all_apps_work_tab" msgid="4884822796154055118">"Work"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"Work profile"</string>
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Work apps are badged and visible to your IT admin"</string>
-    <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
+    <string name="work_profile_edu_accept" msgid="6069788082535149071">"Got it"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Work apps are paused"</string>
-    <string name="work_apps_paused_body" msgid="261634750995824906">"Your work apps can’t send you notifications, use your battery or access your location"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Work apps are off. Your work apps can’t send you notifications, use your battery or access your location"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"You won’t receive notifications from your work apps"</string>
+    <string name="work_apps_paused_body" msgid="261634750995824906">"Your work apps can’t send you notifications, use your battery, or access your location"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"You won’t receive phone calls, text messages, or notifications from your work apps"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Work apps are badged and visible to your IT admin"</string>
-    <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Turn off work apps"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Turn on work apps"</string>
+    <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Got it"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Pause work apps"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Unpause"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filter"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Search your phone"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Search your tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Failed: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 29a726c..aa926df 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Shortcut isn\'t available"</string>
     <string name="home_screen" msgid="5629429142036709174">"Home"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Split screen"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Split top"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Split left"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Split right"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"App info for %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Save app pair"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Touch and hold to move a widget."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Double-tap &amp; hold to move a widget or use custom actions."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d wide by %2$d high"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> widget"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Touch and hold the widget to move it around the home screen"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Add to home screen"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Touch and hold the widget to move it around the home screen"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Add to home screen"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> widget added to home screen"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Suggestions"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}other{# widgets}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# shortcut}other{# shortcuts}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personal"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Work"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Conversations"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Note-taking"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Useful info at your fingertips"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"To get info without opening apps, you can add widgets to your home screen"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"To get info without opening apps, you can add widgets to your home screen"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Tap to change widget settings"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Change widget settings"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Search apps"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Loading apps…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"No apps found matching \'<xliff:g id="QUERY">%1$s</xliff:g>\'"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Search for more apps"</string>
     <string name="label_application" msgid="8531721983832654978">"App"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"All apps"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Notifications"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Touch &amp; hold to move a shortcut."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Double-tap &amp; hold to move a shortcut or use custom actions."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"No room on this home screen"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"No room on this home screen"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"No more room in the Favourites tray"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Apps list"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Search results"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Pin prediction"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"install shortcuts"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Allows an app to add shortcuts without user intervention."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"read Home settings and shortcuts"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Allows the app to read the settings and shortcuts in Home."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"write Home settings and shortcuts"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Allows the app to change the settings and shortcuts in Home."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> is not allowed to make phone calls"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"read Home settings and shortcuts"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Allows the app to read the settings and shortcuts in Home."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"write Home settings and shortcuts"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Allows the app to change the settings and shortcuts in Home."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Can\'t load widget"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Widget settings"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Tap to finish setup"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"This is a system app and can\'t be uninstalled."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Edit Name"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Disabled <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} has # notification}other{{app_name} has # notifications}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} has # notification}other{{app_name} has # notifications}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Page %1$d of %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Home screen %1$d of %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"New home screen page"</string>
@@ -102,10 +100,11 @@
     <string name="folder_name_format_exact" msgid="8626242716117004803">"Folder: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> items"</string>
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Folder: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> or more items"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Wallpapers"</string>
-    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Wallpaper &amp; style"</string>
+    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Wallpaper and style"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Edit home screen"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Home settings"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Disabled by your admin"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Allow Home screen rotation"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Allow home screen rotation"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"When phone is rotated"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Notification dots"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"On"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"To show Notification Dots, turn on app notifications for <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Change settings"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Show notification dots"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Add app icons to the home screen"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Developer options"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Add app icons to home screen"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"For new apps"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Unknown"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Remove"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> installing, <xliff:g id="PROGRESS">%2$s</xliff:g> complete"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> downloading, <xliff:g id="PROGRESS">%2$s</xliff:g> complete"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> waiting to install"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"App update required"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"The app for this icon isn\'t updated. You can update manually to re-enable this shortcut or remove the icon."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Update"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Remove"</string>
     <string name="widgets_list" msgid="796804551140113767">"Widgets list"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Widgets list closed"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Add to Home screen"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Add to home screen"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Move item here"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Item added to home screen"</string>
     <string name="item_removed" msgid="851119963877842327">"Item removed"</string>
     <string name="undo" msgid="4151576204245173321">"Undo"</string>
     <string name="action_move" msgid="4339390619886385032">"Move item"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Move to row <xliff:g id="NUMBER_0">%1$s</xliff:g> column <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Move to row <xliff:g id="NUMBER_0">%1$s</xliff:g> column <xliff:g id="NUMBER_1">%2$s</xliff:g> in <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Move to position <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Move to favourites position <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Item moved"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Item added to folder"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Create folder with: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Folder created"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Move to Home screen"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Move to home screen"</string>
     <string name="action_resize" msgid="1802976324781771067">"Re-size"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Increase width"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Increase height"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Work apps are badged and visible to your IT admin"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Work apps are paused"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"You won’t receive notifications from your work apps"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Your work apps can’t send you notifications, use your battery or access your location"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Work apps are off. Your work apps can’t send you notifications, use your battery or access your location"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"You won’t receive phone calls, text messages or notifications from your work apps"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Work apps are badged and visible to your IT admin"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Turn off work apps"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Turn on work apps"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Pause work apps"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Unpause"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filter"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Search your phone"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Search your tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Failed: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 29a726c..aa926df 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Shortcut isn\'t available"</string>
     <string name="home_screen" msgid="5629429142036709174">"Home"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Split screen"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Split top"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Split left"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Split right"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"App info for %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Save app pair"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Touch and hold to move a widget."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Double-tap &amp; hold to move a widget or use custom actions."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d wide by %2$d high"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> widget"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Touch and hold the widget to move it around the home screen"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Add to home screen"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Touch and hold the widget to move it around the home screen"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Add to home screen"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> widget added to home screen"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Suggestions"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}other{# widgets}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# shortcut}other{# shortcuts}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personal"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Work"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Conversations"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Note-taking"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Useful info at your fingertips"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"To get info without opening apps, you can add widgets to your home screen"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"To get info without opening apps, you can add widgets to your home screen"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Tap to change widget settings"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Change widget settings"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Search apps"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Loading apps…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"No apps found matching \'<xliff:g id="QUERY">%1$s</xliff:g>\'"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Search for more apps"</string>
     <string name="label_application" msgid="8531721983832654978">"App"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"All apps"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Notifications"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Touch &amp; hold to move a shortcut."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Double-tap &amp; hold to move a shortcut or use custom actions."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"No room on this home screen"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"No room on this home screen"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"No more room in the Favourites tray"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Apps list"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Search results"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Pin prediction"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"install shortcuts"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Allows an app to add shortcuts without user intervention."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"read Home settings and shortcuts"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Allows the app to read the settings and shortcuts in Home."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"write Home settings and shortcuts"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Allows the app to change the settings and shortcuts in Home."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> is not allowed to make phone calls"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"read Home settings and shortcuts"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Allows the app to read the settings and shortcuts in Home."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"write Home settings and shortcuts"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Allows the app to change the settings and shortcuts in Home."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Can\'t load widget"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Widget settings"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Tap to finish setup"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"This is a system app and can\'t be uninstalled."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Edit Name"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Disabled <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} has # notification}other{{app_name} has # notifications}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} has # notification}other{{app_name} has # notifications}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Page %1$d of %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Home screen %1$d of %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"New home screen page"</string>
@@ -102,10 +100,11 @@
     <string name="folder_name_format_exact" msgid="8626242716117004803">"Folder: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> items"</string>
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Folder: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> or more items"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Wallpapers"</string>
-    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Wallpaper &amp; style"</string>
+    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Wallpaper and style"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Edit home screen"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Home settings"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Disabled by your admin"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Allow Home screen rotation"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Allow home screen rotation"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"When phone is rotated"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Notification dots"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"On"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"To show Notification Dots, turn on app notifications for <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Change settings"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Show notification dots"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Add app icons to the home screen"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Developer options"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Add app icons to home screen"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"For new apps"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Unknown"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Remove"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> installing, <xliff:g id="PROGRESS">%2$s</xliff:g> complete"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> downloading, <xliff:g id="PROGRESS">%2$s</xliff:g> complete"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> waiting to install"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"App update required"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"The app for this icon isn\'t updated. You can update manually to re-enable this shortcut or remove the icon."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Update"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Remove"</string>
     <string name="widgets_list" msgid="796804551140113767">"Widgets list"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Widgets list closed"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Add to Home screen"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Add to home screen"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Move item here"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Item added to home screen"</string>
     <string name="item_removed" msgid="851119963877842327">"Item removed"</string>
     <string name="undo" msgid="4151576204245173321">"Undo"</string>
     <string name="action_move" msgid="4339390619886385032">"Move item"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Move to row <xliff:g id="NUMBER_0">%1$s</xliff:g> column <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Move to row <xliff:g id="NUMBER_0">%1$s</xliff:g> column <xliff:g id="NUMBER_1">%2$s</xliff:g> in <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Move to position <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Move to favourites position <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Item moved"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Item added to folder"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Create folder with: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Folder created"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Move to Home screen"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Move to home screen"</string>
     <string name="action_resize" msgid="1802976324781771067">"Re-size"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Increase width"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Increase height"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Work apps are badged and visible to your IT admin"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Work apps are paused"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"You won’t receive notifications from your work apps"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Your work apps can’t send you notifications, use your battery or access your location"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Work apps are off. Your work apps can’t send you notifications, use your battery or access your location"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"You won’t receive phone calls, text messages or notifications from your work apps"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Work apps are badged and visible to your IT admin"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Turn off work apps"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Turn on work apps"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Pause work apps"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Unpause"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filter"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Search your phone"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Search your tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Failed: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index f975d5c..d7a5d95 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‎‏‏‎‎‏‏‎‎‏‏‎‏‏‏‏‎‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‏‏‎‏‎‏‎‏‎‏‎‏‎‎‏‏‏‎‏‏‏‏‎‏‎Shortcut isn\'t available‎‏‎‎‏‎"</string>
     <string name="home_screen" msgid="5629429142036709174">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‏‏‎‏‎‏‎‏‎‎‎‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‎Home‎‏‎‎‏‎"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‏‎‎‏‎‏‎‎‏‎‏‏‎‎‏‏‏‏‏‏‎‎‎‎‏‏‎‏‏‎‎‏‏‎‎‎‏‏‎‏‎‏‎‏‎‎‏‏‏‏‏‏‎Split screen‎‏‎‎‏‎"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‎‎‎‏‎‏‎‏‏‎‏‎‏‏‎‏‏‎‏‎‎‎‎‏‏‏‎‎‏‏‎‎‎‎‎‎‏‎‏‏‎‎‏‏‏‎‏‏‏‎‎‎‏‎Split top‎‏‎‎‏‎"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‎‏‏‎‏‏‏‎‎‏‏‏‏‎‏‏‏‎‎‎‏‎‏‏‏‎‏‏‏‏‎‏‏‏‎‏‎‎‎‏‎‎‏‏‎‎‎‏‏‎‎‎‏‏‎Split left‎‏‎‎‏‎"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‏‎‏‏‏‎‎‎‏‏‏‏‎‎‎‏‏‎‎‏‎‎‎‏‎‏‏‎‏‎‎‎‎‏‏‏‎‏‎‎‏‎‏‏‏‎‏‏‏‎‎‏‎‎‏‏‎‎‏‎Split right‎‏‎‎‏‎"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‎‏‏‏‎‏‏‏‏‏‏‎‎‏‏‎‏‏‎‎‏‏‏‎‏‎‏‎‏‎‎‎‎‏‎‎‎‏‎‏‎‎‎App info for %1$s‎‏‎‎‏‎"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‏‏‎‎‎‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‎‏‏‏‏‎‎‏‏‎‎‎‎‏‏‏‎‎‎‎‎‎‏‏‎‎‎‎‏‎‎‎‏‏‎Save app pair‎‏‎‎‏‎"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‏‎‎‏‎‏‎‎‎‎‏‏‏‎‏‏‎‎‎‏‏‎‎‏‏‎‎‎‏‎‎‎‎‏‎‏‎‎‏‎‎‎‏‏‎‎‎‎‎‏‎‏‎‎‏‎Touch &amp; hold to move a widget.‎‏‎‎‏‎"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‏‎‏‏‏‏‏‎‏‎‏‎‎‎‎‎‎‎‏‏‏‏‎‎‎‎‏‏‎‏‎‏‏‎‎‎‎‎‎‏‎‏‎‎‎‎‎‎‎‎‎‏‏‎‎Double-tap &amp; hold to move a widget or use custom actions.‎‏‎‎‏‎"</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‎‎‎‏‏‏‎‎‏‏‎‏‎‎‏‏‏‏‏‏‎‎‏‏‎‎‏‏‎‏‎‎‎‎‎‎‏‎‏‎‎‎‏‎‎‎‎‎‏‎‎‎‏‎‏‏‏‏‏‎%1$d × %2$d‎‏‎‎‏‎"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‎‎‎‏‎‎‎‏‏‎‏‎‎‎‎‏‏‎‎‎‏‎‎‎‏‏‏‎‎‎‎‏‏‏‎‎‏‎‎‏‎‎‏‏‎‎‎‎‎‏‏‏‏‎‎%1$d wide by %2$d high‎‏‎‎‏‎"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‎‎‏‎‏‎‎‏‎‎‎‏‏‎‎‏‎‏‎‏‎‏‎‎‎‎‎‎‎‎‎‎‏‏‏‎‏‏‏‎‎‎‎‎‎‏‏‎‏‏‎‎‎‏‎‎‏‏‎<xliff:g id="WIDGET_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ widget‎‏‎‎‏‎"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‏‏‏‎‏‎‎‏‎‎‎‎‏‏‎‎‏‏‏‏‏‎‏‎‏‎‏‎‎‏‏‎‎‎‎‎‏‎‎‎‏‏‎‎‎‏‎‏‎‎‏‏‏‎‏‎Touch &amp; hold the widget to move it around the Home screen‎‏‎‎‏‎"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‎‏‎‎‏‎‏‏‎‏‏‎‎‎‎‏‏‎‏‎‏‏‎‎‏‎‏‎‎‏‎‏‎‏‎‎‏‏‏‎‏‏‏‎‎‎‏‏‎‎‏‎‎‎Add to Home screen‎‏‎‎‏‎"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‏‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‏‎‏‎‏‏‎‎‏‎‎‎‏‏‏‏‎‏‎‏‎‏‏‏‏‏‏‎‎‎‏‏‏‏‎‎Touch &amp; hold the widget to move it around the home screen‎‏‎‎‏‎"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‏‎‎‏‎‏‏‎‎‎‎‏‏‎‎‎‎‎‎‏‏‎‎‎‏‏‎‏‎‎‎‎‏‏‎‏‏‎‎‏‏‎‏‎‏‏‏‏‎Add to home screen‎‏‎‎‏‎"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‏‎‎‎‏‏‏‎‎‎‏‎‎‎‏‎‏‎‎‏‎‎‏‏‏‎‏‎‎‏‎‏‏‏‏‏‎‎‏‏‎‏‎‎‎‎‎‏‎‏‏‏‏‏‏‎‎‏‎‎‏‏‎<xliff:g id="WIDGET_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ widget added to home screen‎‏‎‎‏‎"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‎‏‏‎‎‎‎‏‎‏‎‎‏‎‎‏‏‎‏‏‏‎‎‎‏‏‏‎‏‏‎‎‎‎‎‎‏‎‏‏‏‎‏‎‏‎‏‏‎‎‎‏‏‎‎Suggestions‎‏‎‎‏‎"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‎‎‏‎‎‎‎‎‏‏‎‏‎‎‏‎‎‏‏‏‎‎‎‏‎‏‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‎‎‎‎‎‎# widget‎‏‎‎‏‎}other{‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‎‎‏‎‎‎‎‎‏‏‎‏‎‎‏‎‎‏‏‏‎‎‎‏‎‏‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‎‎‎‎‎‎# widgets‎‏‎‎‏‎}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‏‎‎‎‏‏‎‎‏‎‏‎‎‎‏‏‎‏‎‎‏‏‏‎‎‏‏‎‏‎‏‏‎‏‏‎‏‎‏‏‏‎‎‎‏‏‎‏‏‏‏‎‏‎# shortcut‎‏‎‎‏‎}other{‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‏‎‎‎‏‏‎‎‏‎‏‎‎‎‏‏‎‏‎‎‏‏‏‎‎‏‏‎‏‎‏‏‎‏‏‎‏‎‏‏‏‎‎‎‏‏‎‏‏‏‏‎‏‎# shortcuts‎‏‎‎‏‎}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‏‏‎‎‏‎‏‎‎‎‎‎‎‏‎‎‏‏‎‏‏‏‏‎‏‏‏‏‎‎‎‎‏‎‎‏‏‎<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>‎‏‎‎‏‏‏‎, ‎‏‎‎‏‏‎<xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‎‎‏‏‎‎‎‎‏‎‏‎‏‏‎‏‏‏‎‎‎‎‎‎‎‎‎‎‎‏‎‏‎‎‏‏‎‏‏‎‎Personal‎‏‎‎‏‎"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‏‎‎‎‏‎‎‎‏‏‏‏‎‎‏‏‎‏‎‏‏‏‏‏‏‎‏‏‎‎‎‏‏‎‏‏‎‎‎‏‎‎‎‎‏‎‏‎‎‎‏‎‎‏‎‎‏‎‏‎Work‎‏‎‎‏‎"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‏‏‎‏‏‎‎‏‎‎‏‏‎‏‎‎‎‎‏‎‎‏‏‏‎‎‎‎‎‎‎‏‎‏‎‏‎‏‏‎‎‏‏‎‏‎‏‏‏‎‎Conversations‎‏‎‎‏‎"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‎‎‎‎‎‏‎‎‏‏‎‏‏‎‏‎‎‎‎‎‎‎‏‏‏‏‏‎‎‎‎‎‎‎‎‎‏‎‏‏‏‎‏‏‏‏‏‎‎‎‏‎‎‏‏‎‏‏‏‎Note-taking‎‏‎‎‏‎"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‎‏‎‎‏‏‎‏‎‏‎‎‎‎‎‏‏‏‏‎‎‏‏‎‏‎‏‏‏‎‏‎‎‏‎‏‏‎‏‏‎‏‏‎‎‏‏‎‎‏‏‏‎‏‏‎Useful info at your fingertips‎‏‎‎‏‎"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‎‏‎‏‎‎‏‎‏‏‎‎‎‏‎‏‏‎‎‏‏‎‏‎‎‏‏‎‎‏‎‎‎‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‎‏‎‎‏‎‎‏‎‎‏‎‏‎To get info without opening apps, you can add widgets to your Home screen‎‏‎‎‏‎"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‎‎‎‎‎‎‎‏‎‎‎‎‎‎‏‏‏‏‎‏‎‎‏‎‎‏‎‎‏‏‎‎‎‎‎‎‏‎‎‏‎‏‎‎‏‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎To get info without opening apps, you can add widgets to your home screen‎‏‎‎‏‎"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‏‏‏‎‎‎‏‎‏‏‎‏‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‎‎‏‎‏‎‎‏‎‎‏‎‏‏‎‎‏‏‏‏‏‏‏‎‎‎‏‎Tap to change widget settings‎‏‎‎‏‎"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‏‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‏‏‏‎‏‎‎‎‏‏‎‎‏‏‏‏‏‏‏‎‏‏‎‏‏‎‎‏‏‏‏‏‎‎‏‎‎‎Got it‎‏‎‎‏‎"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‎‎‏‎‏‎‎‎‏‏‏‏‎‎‎‎‎‏‎‏‎‏‏‏‏‏‏‏‎‎‎‏‏‎‎‎‎‎‏‎‏‎‎‎‎‎‎‎‏‎‎Change widget settings‎‏‎‎‏‎"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‏‎‎‏‏‎‎‎‎‏‏‏‏‎‎‏‎‏‏‎‏‎‏‎‎‏‏‏‏‎‎‏‎‎‎‏‏‎‎‏‏‏‎‏‎‎‎‎‏‎‎‏‏‏‎‎Search apps‎‏‎‎‏‎"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‎‏‏‏‏‎‏‎‏‏‏‎‏‎‎‏‎‎‎‎‏‏‎‏‎‏‎‏‏‏‎‏‏‏‏‏‎‎‎‏‎‏‏‏‏‏‏‎‏‎‏‎‎‎Loading apps…‎‏‎‎‏‎"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‏‎‎‎‏‏‎‏‎‎‏‏‏‏‎‏‎‏‎‏‎‎‎‎‎‏‏‏‏‏‎‎‎‏‏‎‎‏‎‏‎‏‏‏‏‎‏‎‏‎‎‎‎‎‎‏‎‏‎‎No apps found matching \"‎‏‎‎‏‏‎<xliff:g id="QUERY">%1$s</xliff:g>‎‏‎‎‏‏‏‎\"‎‏‎‎‏‎"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‎‏‎‏‏‏‏‎‏‎‏‏‏‏‏‎‎‎‏‎‏‎‎‏‏‏‏‏‎‎‏‏‎‏‏‏‏‏‎‎‏‎‏‏‏‏‎‎‏‏‎‎‏‏‎‏‎‎‎‎Search for more apps‎‏‎‎‏‎"</string>
     <string name="label_application" msgid="8531721983832654978">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‏‏‎‏‏‎‎‎‎‏‏‏‏‏‏‎‎‎‎‏‏‏‏‏‎‎‎‏‎‏‏‏‏‎‎‏‎‎‎‎‏‎‎‏‎‎‎‎‎‏‎‎App‎‏‎‎‏‎"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‎‎‏‏‎‏‏‏‎‏‎‎‏‎‏‏‎‏‏‏‏‏‎‎‎‏‏‏‏‏‏‎‎‎‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‎‎‏‏‏‎All apps‎‏‎‎‏‎"</string>
     <string name="notifications_header" msgid="1404149926117359025">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‏‏‏‏‏‎‎‏‎‎‎‏‎‏‎‏‏‏‎‏‎‏‏‎‎‎‏‎‏‎‏‏‎‎‏‏‏‎‏‏‎‏‏‏‏‎‏‏‎‏‏‎‎‎‏‎Notifications‎‏‎‎‏‎"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‎‎‎‎‎‏‏‏‎‎‏‎‏‎‏‏‏‎‏‎‏‏‏‏‎‎‎‏‏‏‎‏‎‎‏‏‎‎‏‎‎‏‎‏‏‎‏‎‏‏‎‏‎‎‏‎Touch &amp; hold to move a shortcut.‎‏‎‎‏‎"</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎‎‎‎‏‏‎‎‏‎‏‎‎‏‏‎‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‎‎‎‏‏‎‎‏‎‏‎‎‏‎‏‎‏‎‏‏‎‏‎‎‎Double-tap &amp; hold to move a shortcut or use custom actions.‎‏‎‎‏‎"</string>
-    <string name="out_of_space" msgid="6692471482459245734">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‎‎‎‎‎‎‏‏‎‏‏‏‏‎‏‎‏‏‎‏‎‏‏‏‎‎‏‎‏‎‏‏‎‏‎‏‎‎‏‎‎‏‏‎‎‏‎‏‎‎‏‏‎‎No room on this Home screen‎‏‎‎‏‎"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‏‎‏‏‎‏‎‏‏‏‏‏‎‏‏‏‏‏‏‏‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‎‎‏‎‏‏‏‎‏‏‏‏‏‏‎‏‏‎No room on this home screen‎‏‎‎‏‎"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎‏‏‏‏‏‎‏‏‏‏‏‎‎‏‏‏‎‎‏‏‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‎‎‏‎‏‏‏‏‎‏‎No more room in the Favorites tray‎‏‎‎‏‎"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‏‎‏‎‏‎‏‎‎‏‎‎‎‎‏‎‏‏‏‏‎‎‏‏‎‏‎‏‎‎‏‎‏‎‎‏‎‏‎‏‎‎‏‎‎‎‏‏‏‎‎‎‎‎‏‎Apps list‎‏‎‎‏‎"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‏‎‏‏‏‎‏‏‎‎‏‏‏‏‎‎‎‏‏‏‏‎‏‎‎‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‎‏‎‎‎‎‎‏‏‏‏‏‎‏‏‏‎Search results‎‏‎‎‏‎"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‎‏‏‏‏‎‎‏‎‏‏‎‎‎‎‏‏‎‎‎‏‏‏‎‎‎‎‎‏‏‎‎‎‎‏‏‎‎‏‎‎‏‏‏‎‎‏‎‏‎‏‎‎‏‎‎Pin Prediction‎‏‎‎‏‎"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‎‏‎‏‎‏‎‎‏‏‎‎‎‏‏‎‎‏‏‏‎‏‏‎‏‎‎‏‏‏‎‏‎‏‏‎‎‎‏‎‎‎‏‎‎‏‏‎‎‎‎‎‏‎‏‎install shortcuts‎‏‎‎‏‎"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‎‏‏‎‎‏‏‎‏‎‎‎‎‏‏‎‎‏‏‏‏‏‏‏‎‎‏‎‏‏‏‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‎‏‏‏‎‎‎‎‎‎‏‏‎Allows an app to add shortcuts without user intervention.‎‏‎‎‏‎"</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‏‏‏‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‏‎‎‏‏‏‏‏‏‏‎‎‏‎‏‎‏‏‎‎‎‏‎‎‎‏‏‎‎‎‏‎‏‎‎‎‎read Home settings and shortcuts‎‏‎‎‏‎"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‏‏‏‏‎‏‎‎‎‏‏‏‏‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‏‎‏‏‎‎‎‎‏‏‏‎‎‎‏‎‏‏‎‏‏‏‎‎‏‏‎Allows the app to read the settings and shortcuts in Home.‎‏‎‎‏‎"</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‎‎‏‏‎‏‎‎‎‏‎‏‎‎‎‎‏‏‎‏‎‏‏‏‏‎‏‏‏‎‎‏‏‏‎‎‏‏‎‏‎‎‏‎‏‎‏‎‎‏‎‏‎‏‏‎write Home settings and shortcuts‎‏‎‎‏‎"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‏‎‎‏‎‏‏‏‎‎‏‎‎‎‏‎‎‎‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‏‎‎‏‏‏‎‎‏‎‎‎‎‏‎Allows the app to change the settings and shortcuts in Home.‎‏‎‎‏‎"</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‎‏‏‏‎‏‎‏‏‎‏‎‎‏‏‏‎‏‏‎‏‎‏‎‎‏‏‎‎‎‎‏‏‏‎‎‏‎‏‎‏‎‏‏‎‏‏‎‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ is not allowed to make phone calls‎‏‎‎‏‎"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‏‎‎‏‎‎‎‏‎‎‎‎‎‏‏‏‏‎‏‏‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‎‏‎‏‏‏‎‏‏‏‎‏‏‏‏‎‏‏‎read home settings and shortcuts‎‏‎‎‏‎"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‏‏‎‎‏‏‎‎‎‎‎‏‎‎‏‎‏‎‏‎‎‏‎‎‎‏‏‎‏‎‏‎‏‎‏‎‏‎‎‎‏‎‏‏‏‎‎‏‏‎‎‎‏‎‎‎Allows the app to read the settings and shortcuts in home.‎‏‎‎‏‎"</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‏‎‎‏‎‎‎‎‏‎‏‏‏‎‏‎‎‏‎‎‏‏‎‏‏‏‏‎‏‏‎‏‎‎‎‎‏‎‏‎‎‏‎‎‎‏‏‎‎‏‎‎‏‎‎write home settings and shortcuts‎‏‎‎‏‎"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‎‏‎‏‎‎‎‎‏‎‏‏‎‎‏‎‏‎‎‏‎‏‎‏‏‏‎‎‏‏‏‎‏‏‏‏‎‏‏‎‏‎‏‎‏‎‏‏‎‎‏‏‎‎‎‏‏‎‎‏‎‎Allows the app to change the settings and shortcuts in home.‎‏‎‎‏‎"</string>
     <string name="gadget_error_text" msgid="740356548025791839">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‎‏‎‏‎‎‏‎‎‎‏‏‎‎‏‎‎‎‏‏‎‎‏‎‏‏‎‏‏‏‎‎‏‏‏‎‎‎‎‏‏‎‏‏‎‎‎‏‏‎‏‎‏‎‏‎‏‏‏‏‏‎Can\'t load widget‎‏‎‎‏‎"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‏‎‏‏‎‏‏‎‎‎‏‎‏‎‏‎‏‏‎‎‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎Widget settings‎‏‎‎‏‎"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‏‏‎‎‎‏‎‎‏‎‎‏‏‏‏‎‏‏‏‎‎‏‏‏‏‏‎‎‎‏‎‎‎‏‏‎‏‎‎‎‎‏‎‎‎‎‎‏‏‎‏‏‎‏‏‏‎‏‎‏‎Tap to finish setup‎‏‎‎‏‎"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‎‏‏‎‎‎‎‏‎‏‎‏‏‏‎‏‎‎‎‎‏‎‏‎‏‎‏‎‎‏‏‏‏‎‏‏‎‎‏‎‎‎‏‎‏‏‎‏‎‏‎‎‎This is a system app and can\'t be uninstalled.‎‏‎‎‏‎"</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‏‎‏‎‎‎‎‏‎‏‏‏‏‎‎‎‏‎‎‏‎‏‎‏‏‎‏‎‎‎‏‎‏‎‎‏‎‎‎‎‏‏‏‎‏‏‎‏‎‏‏‎‎‎‎‎Edit Name‎‏‎‎‏‎"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‎‏‏‎‏‏‏‎‏‏‎‏‏‏‎‏‏‏‏‏‎‏‏‏‏‎‏‎‏‏‎‎‎‎‎‏‏‎‏‎‏‏‎‏‏‏‏‎‎‏‏‏‎‎‎Disabled ‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‏‎‎‏‏‎‎‎‏‎‎‏‎‏‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‏‎‏‏‏‏‎‏‎‎‎‏‎‎‎‏‏‏‎‎‏‎‎‎‎‎‎‏‎‎‏‏‎{app_name}‎‏‎‎‏‏‏‎ has # notification‎‏‎‎‏‎}other{‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‏‎‎‏‏‎‎‎‏‎‎‏‎‏‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‏‎‏‏‏‏‎‏‎‎‎‏‎‎‎‏‏‏‎‎‏‎‎‎‎‎‎‏‎‎‏‏‎{app_name}‎‏‎‎‏‏‏‎ has # notifications‎‏‎‎‏‎}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‎‏‎‎‎‎‎‎‎‎‎‏‎‏‏‎‎‏‎‏‎‎‏‏‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‎‏‎‎‏‎‎‎‏‎‎‏‏‎{app_name}‎‏‎‎‏‏‏‎ has # notification‎‏‎‎‏‎}other{‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‎‏‎‎‎‎‎‎‎‎‎‏‎‏‏‎‎‏‎‏‎‎‏‏‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‎‏‎‎‏‎‎‎‏‎‎‏‏‎{app_name}‎‏‎‎‏‏‏‎ has # notifications‎‏‎‎‏‎}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‏‏‏‏‎‎‏‏‏‏‎‎‎‎‏‎‎‏‏‏‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‏‎‎‏‏‎‏‎‎‏‏‎‏‎‎‏‎‏‎Page %1$d of %2$d‎‏‎‎‏‎"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‎‎‏‎‎‎‎‎‎‎‎‏‎‏‏‏‎‏‎‎‎‏‎‎‏‏‏‎‎‎‎‏‎‎‏‏‎‏‎‎‏‏‎‎‎‎‏‎‏‎‏‏‏‎Home screen %1$d of %2$d‎‏‎‎‏‎"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‎‏‏‏‎‎‏‎‎‏‎‎‏‎‏‏‎‎‏‏‎‎‏‎‎‎‏‏‎‏‏‎‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‏‎‏‎‎‎‎‎‏‏‏‎‎New home screen page‎‏‎‎‏‎"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‎‎‎‎‏‎‎‏‏‏‏‎‎‏‎‏‏‎‏‎‎‏‎‏‏‏‎‏‎‎‏‎‎‏‎‎‏‏‎‏‏‎‎‏‎‎‏‏‏‏‏‏‏‏‎Folder: ‎‏‎‎‏‏‎<xliff:g id="NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎, ‎‏‎‎‏‏‎<xliff:g id="SIZE">%2$d</xliff:g>‎‏‎‎‏‏‏‎ or more items‎‏‎‎‏‎"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‎‎‎‏‎‏‎‏‏‏‏‏‎‎‏‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‎‎‏‎‏‏‎‎‏‏‎‏‏‏‏‎‏‏‎Wallpapers‎‏‎‎‏‎"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‏‎‎‎‏‎‎‎‎‎‏‎‏‏‎‏‎‎‎‏‎‎‏‏‏‎‏‏‎‎‏‎‎‎‎‎‏‎‎‏‎‏‎‏‎‎‏‏‏‎‏‎‎Wallpaper &amp; style‎‏‎‎‏‎"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‎‏‎‎‏‎‏‏‎‏‏‏‎‎‏‎‎‎‏‏‏‏‎‏‎‎‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‏‏‏‏‏‎‏‏‎Edit Home Screen‎‏‎‎‏‎"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‎‏‏‎‎‏‏‏‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‏‎‎‎‎‏‏‏‎‎‏‏‏‎‏‏‎‏‎‎‏‏‏‎‎‎‎Home settings‎‏‎‎‏‎"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‏‎‎‎‎‎‏‎‎‎‏‎‏‏‏‎‏‏‎‎‏‏‎‎‏‎‏‎‎‎‎‎‎‎‏‏‏‏‎‏‏‎‏‏‏‎‏‎Disabled by your admin‎‏‎‎‏‎"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‎‎‎‏‎‏‏‎‏‏‎‏‏‎‎‎‎‎‎‎‏‏‏‏‏‎‎‏‏‏‏‏‎‏‏‏‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎Allow Home screen rotation‎‏‎‎‏‎"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‏‏‎‎‏‏‏‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‏‏‎‏‏‏‏‎‏‏‎‏‎‎‏‏‎‏‎‎‎‏‏‏‏‏‏‎‏‎‎Allow home screen rotation‎‏‎‎‏‎"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‎‏‏‏‏‎‎‎‏‎‏‏‏‎‏‏‎‏‏‏‏‎‏‎‎‎‎‏‏‎‏‏‎‏‎‎‏‏‎‎‎‎‏‎‏‎‎‏‏‏‎‏‎When phone is rotated‎‏‎‎‏‎"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‎‎‎‏‎‎‎‎‎‏‏‎‎‎‏‏‎‏‏‏‏‏‏‎‎‏‎‎‏‏‏‏‏‎‏‏‎‏‏‎‎‎‏‏‏‏‏‏‎‏‎Notification dots‎‏‎‎‏‎"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‏‏‏‎‏‎‏‎‎‎‎‎‎‎‎‎‏‎‎‏‏‏‏‎‏‏‎‎‎‏‏‎‎‎‏‏‎‏‏‏‏‏‎‎‏‎‏‏‎‎‎‎‎‎‏‏‏‎‎‎On‎‏‎‎‏‎"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‎‏‏‏‏‏‎‎‏‏‎‏‎‏‏‎‏‏‏‏‎‏‏‎‎‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‎‏‎‎‎‎‎‏‎‏‎‎‏‎‏‎‏‎‎‎To show Notification Dots, turn on app notifications for ‎‏‎‎‏‏‎<xliff:g id="NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‎‏‏‎‎‏‏‏‎‏‎‏‎‏‏‎‎‎‏‏‏‎‎‏‏‎‏‏‎‏‏‏‏‎‎‏‏‏‎‏‏‎‎‎‎‎‎‏‏‏‎‎‎‎‎Change settings‎‏‎‎‏‎"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‏‎‏‎‎‏‎‎‏‏‏‎‎‎‏‏‏‎‏‏‏‎‏‎‏‎‎‎‎‎‎‎‎‎‎‏‎‏‏‏‎‎‏‏‎‎‎‏‎‎‏‏‏‎Show notification dots‎‏‎‎‏‎"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‎‏‏‎‏‎‏‎‏‎‎‏‎‏‏‎‎‎‏‎‎‏‏‏‎‎‎‏‎‏‎‎‎‎‎‏‏‎‎‏‎‎‎‎‏‎‏‏‏‏‎‎‎‏‏‏‏‎‏‎Add app icons to Home screen‎‏‎‎‏‎"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‎‏‎‎‏‏‎‏‏‏‎‎‏‏‎‏‏‎‎‏‏‎‏‎‏‏‏‏‎‏‏‏‏‏‏‎‏‎‏‏‏‏‎‎‏‏‎‎‏‏‏‎‎‏‏‏‏‎‎‏‎‎Developer Options‎‏‎‎‏‎"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‎‏‎‏‏‏‏‏‏‎‎‎‎‏‏‏‎‎‎‏‎‎‏‎‎‎‏‏‎‏‏‎‎‎‎‏‏‏‎‏‏‏‎‎‎‏‏‎‏‎‎‏‏‎‎‏‎Add app icons to home screen‎‏‎‎‏‎"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‎‎‎‏‎‏‏‎‎‎‏‏‏‎‎‎‏‏‏‎‏‎‎‎‎‎‏‎‏‎‏‎‏‎‏‎‎‎‎‎‏‎‏‏‏‏‏‎‏‎‏‎‏‎‎For new apps‎‏‎‎‏‎"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‏‏‏‎‎‏‎‏‎‏‎‎‎‏‎‎‏‎‎‏‏‏‏‎‎‏‎‎‎‎‎‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‎‎‏‎‎Unknown‎‏‎‎‏‎"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‏‏‎‎‏‎‎‏‎‎‏‏‏‎‎‎‏‏‎‏‏‏‎‏‏‏‎‎‎‏‏‏‏‎‎‏‏‎‎‎‏‎‏‏‎‎‎‏‏‏‎‎‎Remove‎‏‎‎‏‎"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‏‏‎‎‎‎‏‎‏‎‎‎‏‎‏‎‎‎‎‏‏‏‏‏‎‎‎‎‎‏‎‏‏‎‎‎‎‏‏‏‏‎‎‏‎‏‏‎‏‎‏‎‏‎‏‎‎‏‎‎‏‏‎<xliff:g id="NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ installing, ‎‏‎‎‏‏‎<xliff:g id="PROGRESS">%2$s</xliff:g>‎‏‎‎‏‏‏‎ complete‎‏‎‎‏‎"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‎‎‎‏‏‏‏‎‏‎‏‏‎‎‏‎‏‏‎‎‏‎‎‏‏‏‏‎‎‎‏‎‏‏‏‏‎‎‏‏‏‎‏‏‎‏‎‏‎‏‎‎‎‎‏‎‎‏‏‎<xliff:g id="NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ downloading, ‎‏‎‎‏‏‎<xliff:g id="PROGRESS">%2$s</xliff:g>‎‏‎‎‏‏‏‎ complete‎‏‎‎‏‎"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‎‎‏‎‎‏‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‎‎‎‎‎‏‎‎‎‏‎‎‏‏‏‏‏‎‏‎‏‏‎‎‎‏‏‏‎‎‏‎‎‏‎‎‏‏‎<xliff:g id="NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ waiting to install‎‏‎‎‏‎"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‎‏‏‏‎‎‏‎‏‎‏‏‏‎‏‎‏‏‏‎‏‏‏‎‏‎‏‏‎‎‏‏‏‏‎‏‎‏‎‏‎‏‏‎‏‏‎‎‏‎‏‏‏‏‏‏‎‏‎‎App update required‎‏‎‎‏‎"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‏‎‏‏‎‏‏‏‎‏‎‏‏‎‏‏‎‏‏‎‎‎‎‎‏‏‎‏‏‎‏‏‏‎‎‏‎‏‏‏‎‏‏‏‎‏‏‎‎‎‎‏‎‎The app for this icon isn\'t updated. You can update manually to re-enable this shortcut, or remove the icon.‎‏‎‎‏‎"</string>
+    <string name="dialog_update" msgid="2178028071796141234">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‏‏‏‎‎‏‏‏‏‎‏‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‎‎‎‏‏‏‏‎‎‏‏‏‎‏‏‎‎‏‎‏‏‎‎‏‎‎Update‎‏‎‎‏‎"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‎‏‏‎‏‏‎‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‏‎‎‏‎‏‏‎‏‎‎‏‏‏‏‏‎‏‏‎‏‎‏‏‏‏‏‎Remove‎‏‎‎‏‎"</string>
     <string name="widgets_list" msgid="796804551140113767">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‎‏‎‏‏‎‎‎‎‏‏‏‎‏‏‎‏‎‎‎‏‏‎‎‎‎‏‎‎‏‎‎‎‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‏‏‎‏‎‏‏‎‎‏‏‏‎Widgets list‎‏‎‎‏‎"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‏‏‏‎‏‏‎‎‎‎‎‎‏‏‏‎‏‏‎‎‎‏‏‏‏‎‎‎‏‏‏‏‏‏‏‎‏‎‏‏‏‏‎‎‎‏‏‏‎‏‎‎‏‎‎Widgets list closed‎‏‎‎‏‎"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‎‏‎‏‏‎‏‏‎‎‎‏‎‏‎‏‏‎‎‎‏‎‏‎‏‎‎‏‎‏‎‏‎‎‎‏‎‎‎‏‏‎‏‏‎‏‎‏‎‎‏‎Add to Home screen‎‏‎‎‏‎"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‎‏‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‎‏‎‎‎‏‏‏‎‏‏‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‎‎‎‏‎‏‎‏‏‏‏‎‏‎‎‎Add to home screen‎‏‎‎‏‎"</string>
     <string name="action_move_here" msgid="2170188780612570250">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‎‏‏‏‏‎‎‎‎‎‏‏‏‏‎‎‏‏‎‎‏‎‏‎‏‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‏‎‎‏‎‎‎‏‎‏‎‎Move item here‎‏‎‎‏‎"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‏‏‏‎‎‎‎‏‎‏‏‏‏‎‏‎‏‏‎‏‏‎‎‏‎‎‏‏‎‏‏‎‏‎‏‏‏‏‎‏‏‎‏‎‎‎‎‎‎‏‎‎‎‏‏‎Item added to home screen‎‏‎‎‏‎"</string>
     <string name="item_removed" msgid="851119963877842327">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‎‏‎‏‏‏‏‎‎‏‏‏‏‏‏‎‎‏‎‎‏‎‎‎‏‏‎‎‏‎‎‎‎‎‏‎‎‎‎‏‎‏‏‏‎‏‎‎‏‏‏‎‏‏‎‎‏‎‏‏‏‎Item removed‎‏‎‎‏‎"</string>
     <string name="undo" msgid="4151576204245173321">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‎‏‏‏‎‏‎‏‎‏‏‏‎‎‏‎‎‎‏‏‏‏‏‏‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‏‎‎‏‎‎‏‎Undo‎‏‎‎‏‎"</string>
     <string name="action_move" msgid="4339390619886385032">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‏‎‎‎‎‏‏‏‎‎‎‏‎‎‏‏‏‎‎‏‏‎‎‎‏‏‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‏‏‏‏‎‎‎‏‎‎‎‎Move item‎‏‎‎‏‎"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‏‏‎‏‎‏‎‎‏‏‎‏‎‏‏‏‎‏‏‎‎‏‎‏‎‎‏‎‎‎‎‏‎‏‎‎‎‏‏‎‎‎‎‏‏‎‎‏‎‏‏‏‏‏‎‎‏‏‎Move to row ‎‏‎‎‏‏‎<xliff:g id="NUMBER_0">%1$s</xliff:g>‎‏‎‎‏‏‏‎ column ‎‏‎‎‏‏‎<xliff:g id="NUMBER_1">%2$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‏‏‎‏‏‎‎‏‏‏‏‏‏‎‎‏‎‏‎‏‎‏‏‎‏‏‎‎‎‎‎‎‎‏‏‎‏‎‎‏‏‎‎‏‏‏‎‏‎‏‎‏‎‎‏‎Move to row ‎‏‎‎‏‏‎<xliff:g id="NUMBER_0">%1$s</xliff:g>‎‏‎‎‏‏‏‎ column ‎‏‎‎‏‏‎<xliff:g id="NUMBER_1">%2$s</xliff:g>‎‏‎‎‏‏‏‎ in ‎‏‎‎‏‏‎<xliff:g id="STRING">%3$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <string name="move_to_position" msgid="6750008980455459790">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‎‏‏‎‎‏‏‎‏‏‎‎‏‎‏‏‎‎‏‏‏‏‎‎‏‎‏‏‎‏‎‏‏‏‏‏‎‏‎‎‎‏‎‏‏‏‏‎‎‏‏‏‎‎Move to position ‎‏‎‎‏‏‎<xliff:g id="NUMBER">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‏‎‏‏‏‎‏‏‏‎‎‏‏‎‎‏‎‏‎‏‏‎‎‏‏‏‎‎‏‎‎‏‎‎‏‎‎‏‏‏‎‏‏‎‏‎‎‎‎‏‎‎‎‎‎‎Move to favorites position ‎‏‎‎‏‏‎<xliff:g id="NUMBER">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <string name="item_moved" msgid="4606538322571412879">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‏‏‎‎‎‏‏‎‎‏‎‏‎‏‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‎‎‏‎‏‏‎‎‎‏‏‏‏‎Item moved‎‏‎‎‏‎"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‎‎‎‎‏‎‏‎‎‎‏‎‏‎‎‎‎‎‏‏‏‏‏‎‎‎‏‏‏‏‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‎‏‏‏‏‏‎‎‏‏‎Item added to folder‎‏‎‎‏‎"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‎‏‏‎‏‎‎‏‏‏‏‏‏‏‎‎‎‎‏‏‏‎‎‎‎‎‎‎‎‏‎‎‎‎‏‎‎‏‎‎‏‎‏‎‏‏‎‏‏‏‎‏‎‎‎‎Create folder with: ‎‏‎‎‏‏‎<xliff:g id="NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <string name="folder_created" msgid="6409794597405184510">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‏‏‎‏‎‎‎‎‏‎‏‎‏‎‎‎‏‏‏‎‎‏‏‏‎‎‏‏‎‏‏‎‎‎‏‏‎‏‏‏‎‏‎‎‎‏‏‏‏‏‏‏‏‎‎Folder created‎‏‎‎‏‎"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‏‏‎‎‏‎‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‏‏‏‏‎‏‏‎‎‏‎‎‎‏‎‎‎‏‎‎‎‎‎‏‏‏‎‏‏‎‏‎‏‏‎‏‎Move to Home screen‎‏‎‎‏‎"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‎‎‏‎‎‎‏‏‎‎‎‏‏‎‏‏‏‏‎‏‎‏‎‏‏‎‎‎‎‏‏‎‎‎‎‎‎‎‎‏‎‎‎‎‏‏‏‏‏‎‏‎‎‎‏‎‎‎‎Move to home screen‎‏‎‎‏‎"</string>
     <string name="action_resize" msgid="1802976324781771067">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‎‎‏‎‎‎‎‎‏‎‏‎‏‏‏‎‏‎‏‎‏‏‎‏‎‏‎‎‎‏‏‎‎‎‏‎‎‎‎‏‏‏‎‏‎‎‎‏‎‎‏‎‎‏‏‏‎‏‏‎Resize‎‏‎‎‏‎"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‎‎‏‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‎‎‎‎‎‏‏‏‏‏‏‎‎‎‎‎‎‎‏‏‎‏‎‏‎‏‎‏‏‏‎‎Increase width‎‏‎‎‏‎"</string>
     <string name="action_increase_height" msgid="459390020612501122">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‏‏‏‎‎‏‏‎‎‎‎‎‎‎‎‏‎‏‎‎‏‏‎‎‏‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‎‏‏‏‎‏‎‎‎‎‎‏‎‎Increase height‎‏‎‎‏‎"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‎‏‎‎‏‎‎‏‎‏‎‏‏‎‏‏‎‏‎‏‏‎‏‎‎‏‏‏‎‏‎‏‏‎‏‎‎‎‎‏‎‎‎‎‏‎‎‏‎‏‏‎‎‎‎Work apps are badged and visible to your IT admin‎‏‎‎‏‎"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‎‏‏‏‏‎‎‎‎‏‏‏‎‎‎‎‎‎‏‏‎‏‎‎‎‎‏‏‎‎‏‎‏‏‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‎Got it‎‏‎‎‏‎"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‏‏‎‎‏‏‎‏‏‏‎‎‏‏‎‏‏‏‎‏‎‎‎‏‏‏‎‎‎‎‏‎‏‏‎‎‏‏‏‎‏‏‏‎‏‏‏‏‏‏‎‏‏‎‎Work apps are paused‎‏‎‎‏‎"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‏‏‏‎‏‏‎‏‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‏‎‎‎‎‎‏‎‎‎‏‏‏‏‎‏‏‎‎‏‎‎‎‏‎‏‏‏‎‏‏‎‎‏‎‏‎You won’t receive notifications from your work apps‎‏‎‎‏‎"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‎‏‏‏‎‏‎‎‎‎‏‏‎‎‎‎‎‏‏‎‏‏‎‏‎‏‏‎‏‏‏‏‎‏‎‎‎‎‎‎‎‎‏‎‎‎‎‎‎‎‏‎‎‎‎‏‎‏‎‎Your work apps can’t send you notifications, use your battery, or access your location‎‏‎‎‏‎"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‏‏‏‎‏‏‏‎‎‏‎‎‎‏‎‏‏‎‏‏‏‏‏‎‎‏‎‏‎‏‎‎‏‎‎‏‎‏‎‏‏‎‏‏‎‎‎‏‎‎‏‎‏‏‏‎Work apps are off. Your work apps can’t send you notifications, use your battery, or access your location‎‏‎‎‏‎"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‎‎‎‎‎‏‎‏‎‏‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‏‏‏‏‏‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‎‏‏‎‏‏‎‎You won’t receive phone calls, text messages, or notifications from your work apps‎‏‎‎‏‎"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‎‎‏‎‎‏‎‎‎‏‏‏‏‎‏‎‎‎‏‎‎‎‎‏‎‎‏‎‏‎‏‎‏‏‎‏‎‏‏‎‏‎‎‏‎‎‎‏‎‏‎‎Work apps are badged and visible to your IT admin‎‏‎‎‏‎"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‎‎‎‎‎‎‏‎‏‎‏‏‎‎‏‎‏‏‎‎‎‎‏‏‏‏‎‎‏‏‏‎‎‎‏‏‎‏‎‏‎‏‎‏‏‏‏‏‎‎‎‎‏‎‎‎Got it‎‏‎‎‏‎"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‎‏‎‎‎‏‏‏‏‏‎‎‏‏‎‏‎‎‎‎‏‏‎‏‎‎‎‎‏‏‏‎‏‎‏‏‎‏‎‏‎‏‎‏‎‎‎‏‎‎‏‎‎‎Turn off work apps‎‏‎‎‏‎"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‎‎‎‎‎‎‎‏‏‎‎‎‏‏‏‏‎‎‏‎‏‎‏‎‏‏‏‏‏‎‎‎‎‎‏‏‏‎‏‎‏‎‎‎‏‏‎‏‎‎‏‎‎‏‎‏‏‎‏‎Turn on work apps‎‏‎‎‏‎"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‏‎‎‏‏‎‎‏‎‏‎‎‏‎‎‏‏‏‏‎‎‎‏‎‎‎‏‏‏‎‎‎‎‎‎‎‏‏‎‎‏‏‏‎‏‎‏‎‏‏‎‎‏‏‎‎Pause work apps‎‏‎‎‏‎"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‎‎‎‎‎‎‏‏‎‎‎‎‎‏‏‎‏‏‏‎‎‏‎‏‎‎‎‎‏‎‎‎‏‏‎‎‎‏‏‎‎‏‏‎‏‎‏‏‏‏‎‎‏‏‏‏‎‏‏‎Unpause‎‏‎‎‏‎"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‏‏‎‏‎‏‎‏‏‎‏‏‎‏‎‎‎‎‏‏‏‎‎‎‏‏‏‎‏‎‎‏‎‏‎‎‎‎‎‎‎‎‎‎‏‎‏‎‎‏‎‎‎‎‎‎‎Filter‎‏‎‎‏‎"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‏‏‏‎‏‎‎‎‏‎‎‏‏‎‏‎‎‎‎‏‏‏‎‏‏‎‎‏‏‎‎‏‏‎‎‏‎‏‎‎‎‏‎‏‎‎‎‎‏‏‏‎‏‎‎Search your phone‎‏‎‎‏‎"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‏‏‎‎‏‎‎‏‎‎‏‏‎‏‎‎‎‏‎‏‏‏‎‏‎‎‎‏‏‏‎‏‎‎‏‎‎‎‎‏‏‏‎‏‏‎‎‏‎‏‎‏‏‏‎Search your tablet‎‏‎‎‏‎"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‏‏‎‏‎‎‏‏‎‏‎‏‎‏‎‎‎‎‏‏‎‏‎‏‏‎‏‏‏‏‎‎‎‎‎‏‏‎‏‎‎‎‏‏‏‎‏‏‎‏‎‏‏‎‎Failed: ‎‏‎‎‏‏‎<xliff:g id="WHAT">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 314a3af..bffa3f8 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"El acceso directo no está disponible"</string>
     <string name="home_screen" msgid="5629429142036709174">"Pantalla principal"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Pantalla dividida"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Dividir en la parte superior"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Dividir a la izquierda"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Dividir a la derecha"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Información de la app de %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Guardar vinculación de apps"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Mantén presionado para mover un widget."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Presiona dos veces y mantén presionado para mover un widget o usar acciones personalizadas."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de ancho por %2$d de alto"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> widget"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Mantén presionado el widget para moverlo por la pantalla principal"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Agregar a pantalla principal"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Mantén presionado el widget para moverlo por la pantalla principal"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Agregar a pantalla principal"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Se agregó el widget de <xliff:g id="WIDGET_NAME">%1$s</xliff:g> a la pantalla principal"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Sugerencias"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}other{# widgets}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# acceso directo}other{# accesos directos}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personales"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Trabajo"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Conversaciones"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Tomar notas"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Información útil a tu alcance"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Para recibir información de apps sin abrirlas, puedes agregar widgets a la pantalla principal"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Para recibir información de apps sin abrirlas, puedes agregar widgets a la pantalla principal"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Presiona para cambiar la configuración del widget"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Entendido"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Cambiar la configuración del widget"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Buscar apps"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Cargando apps…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"No hay apps que coincidan con \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Buscar más apps"</string>
     <string name="label_application" msgid="8531721983832654978">"App"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Todas las apps"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Notificaciones"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Mantén presionado para mover un acceso directo."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Presiona dos veces y mantén presionado para mover un acceso directo o usar acciones personalizadas."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"No hay más espacio en esta pantalla principal"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"No hay más espacio en esta pantalla principal"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"La bandeja de favoritos está llena."</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Lista de apps"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Resultados de la búsqueda"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Fijar predicción"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"instalar accesos directos"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Permite que una aplicación agregue accesos directos sin que el usuario intervenga."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"leer configuración y accesos directos de la pantalla principal"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Permite que la aplicación lea la configuración y los accesos directos de la pantalla principal."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"escribir configuración y accesos directos de la pantalla principal"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Permite que la aplicación cambie la configuración y los accesos directos de la pantalla principal."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> no puede realizar llamadas telefónicas"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"leer parámetros de configuración y accesos directos de la página principal"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Permite que la app lea los parámetros de configuración y los accesos directos de la página principal."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"escribir parámetros de configuración y accesos directos de la página principal"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Permite que la app cambie los parámetros de configuración y los accesos directos de la página principal."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"No se puede cargar el widget"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Configuración del widget"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Presiona para finalizar la configuración"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Esta es una aplicación del sistema y no se puede desinstalar."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Editar nombre"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Se inhabilitó <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} tiene # notificación}other{{app_name} tiene # notificaciones}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} tiene # notificación}other{{app_name} tiene # notificaciones}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Página %1$d de %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Pantalla principal %1$d de %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Nueva página en la pantalla principal"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Carpeta: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> o más elementos"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Fondos de pantalla"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Fondo de pantalla y estilo"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Editar pantalla principal"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Configuración de pantalla principal"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"El administrador inhabilitó esta función"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Permitir la rotación de la pantalla principal"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Permitir la rotación de la pantalla principal"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Al girar el teléfono"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Puntos de notificación"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Activado"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Para mostrar los puntos de notificación, activa las notificaciones de la app para <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Cambiar la configuración"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Mostrar puntos de notificación"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Agrega íconos de apps a pantalla principal"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Opciones para desarrolladores"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Agrega íconos de las apps a la pantalla principal"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Para nuevas apps"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Desconocido"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Eliminar"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Se está instalando <xliff:g id="NAME">%1$s</xliff:g>; <xliff:g id="PROGRESS">%2$s</xliff:g> completado"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Se completó el <xliff:g id="PROGRESS">%2$s</xliff:g> de la descarga de <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"Instalación de <xliff:g id="NAME">%1$s</xliff:g> en espera"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Es necesario actualizar la app"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"No se actualizó la app de este ícono. Puedes actualizarla manualmente para rehabilitar el acceso directo, o bien quitar el ícono."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Actualizar"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Quitar"</string>
     <string name="widgets_list" msgid="796804551140113767">"Lista de widgets"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Se cerró la lista de widgets"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Agregar a la pantalla principal"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Agregar a pantalla principal"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Mover elemento aquí"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Se agregó el elemento a la pantalla principal."</string>
     <string name="item_removed" msgid="851119963877842327">"Se eliminó el elemento."</string>
     <string name="undo" msgid="4151576204245173321">"Deshacer"</string>
     <string name="action_move" msgid="4339390619886385032">"Mover elemento"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Mover a fila <xliff:g id="NUMBER_0">%1$s</xliff:g>, columna <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Mover a la fila <xliff:g id="NUMBER_0">%1$s</xliff:g>, columna <xliff:g id="NUMBER_1">%2$s</xliff:g> en <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Mover a la posición número <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Mover a la posición de favoritos número <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Elemento movido"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Elemento agregado a la carpeta"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Crear carpeta con: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Carpeta creada"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Mover a la pantalla principal"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Mover a la pantalla principal"</string>
     <string name="action_resize" msgid="1802976324781771067">"Ajustar tamaño"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Aumentar el ancho"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Aumentar la altura"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Las apps de trabajo tienen una insignia y el administrador de TI las puede ver"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Entendido"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Las apps de trabajo están detenidas"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"No recibirás notificaciones de las apps de trabajo"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Las apps de trabajo no pueden enviarte notificaciones, usar la batería ni acceder a tu ubicación"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Las apps de trabajo están desactivadas y, por ende, no pueden enviarte notificaciones, usar la batería ni acceder a tu ubicación"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"No recibirás llamadas telefónicas, mensajes de texto ni notificaciones de tus apps de trabajo."</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Las apps de trabajo tienen una insignia y el administrador de TI las puede ver"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Entendido"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Desactivar las apps de trabajo"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Activar las apps de trabajo"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Detener apps de trabajo"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Reanudar"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtro"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Busca tu teléfono"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Busca en tu tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Error: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 2401054..2ebefc0 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -23,25 +23,24 @@
     <string name="work_folder_name" msgid="3753320833950115786">"Trabajo"</string>
     <string name="activity_not_found" msgid="8071924732094499514">"La aplicación no está instalada."</string>
     <string name="activity_not_available" msgid="7456344436509528827">"La aplicación no está disponible"</string>
-    <string name="safemode_shortcut_error" msgid="9160126848219158407">"Aplicación descargada inhabilitada en modo seguro"</string>
-    <string name="safemode_widget_error" msgid="4863470563535682004">"Widgets inhabilitados en modo seguro"</string>
+    <string name="safemode_shortcut_error" msgid="9160126848219158407">"Aplicación descargada inhabilitada en modo Seguro"</string>
+    <string name="safemode_widget_error" msgid="4863470563535682004">"Widgets inhabilitados en modo Seguro"</string>
     <string name="shortcut_not_available" msgid="2536503539825726397">"Acceso directo no disponible"</string>
     <string name="home_screen" msgid="5629429142036709174">"Inicio"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Pantalla dividida"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Dividir parte superior"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Dividir parte izquierda"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Dividir parte derecha"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Información de la aplicación %1$s"</string>
-    <string name="long_press_widget_to_add" msgid="3587712543577675817">"Mantén pulsado un widget para moverlo."</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Guardar aplicaciones emparejadas"</string>
+    <string name="long_press_widget_to_add" msgid="3587712543577675817">"Mantén pulsado un widget para moverlo"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Toca dos veces y mantén pulsado un widget para moverlo o usar acciones personalizadas."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de ancho por %2$d de alto"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Widget de <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Mantén pulsado el widget para moverlo por la pantalla de inicio"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Añadir a la pantalla de inicio"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Mantén pulsado el widget para moverlo por la pantalla de inicio"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Añadir a pantalla de inicio"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g> añadido a la pantalla de inicio"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Sugerencias"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}other{# widgets}}"</string>
-    <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# combinación de teclas}other{# combinaciones de teclas}}"</string>
+    <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# acceso directo}other{# accesos directos}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
     <string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
     <string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Buscar"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personales"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Trabajo"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Conversaciones"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Toma de notas"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Información útil al alcance de la mano"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Para recibir información sin abrir aplicaciones, puedes añadir widgets a la pantalla de inicio."</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Para ver información sin abrir una aplicación, puedes añadir widgets a la pantalla de inicio"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Toca para cambiar los ajustes del widget"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Entendido"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Cambiar ajustes del widget"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Buscar aplicaciones"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Cargando aplicaciones…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"No se han encontrado aplicaciones que contengan \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Buscar más aplicaciones"</string>
     <string name="label_application" msgid="8531721983832654978">"Aplicación"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Todas las aplicaciones"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Notificaciones"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Mantén pulsado un acceso directo para moverlo."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Toca dos veces y mantén pulsado un acceso directo para moverlo o usar acciones personalizadas."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"No queda espacio en la pantalla de inicio"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"No queda espacio en esta pantalla de inicio"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"La bandeja de favoritos está completa"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Lista de aplicaciones"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Resultados de búsqueda"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Fijar predicción"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"instalar accesos directos"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Permite que una aplicación añada accesos directos sin intervención del usuario."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"leer información de accesos directos y de ajustes de la pantalla de inicio"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Permite que la aplicación consulte los ajustes y los accesos directos de la pantalla de inicio."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"escribir información de accesos directos y de ajustes de la pantalla de inicio"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Permite que las aplicaciones cambien los ajustes y los accesos directos de la pantalla de inicio."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> no puede hacer llamadas"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"leer ajustes y accesos directos de la pantalla de inicio"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Permite que la aplicación lea los ajustes y los accesos directos de la pantalla de inicio."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"escribir ajustes y accesos directos de la pantalla de inicio"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Permite que la aplicación cambie los ajustes y los accesos directos de la pantalla de inicio."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"No se puede cargar el widget"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Ajustes de widget"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Toca para finalizar la configuración"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Esta aplicación es del sistema y no se puede desinstalar."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Editar nombre"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Se ha inhabilitado <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} tiene # notificación}other{{app_name} tiene # notificaciones}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} tiene # notificación}other{{app_name} tiene # notificaciones}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Página %1$d de %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Pantalla de inicio %1$d de %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Nueva página de pantalla de inicio"</string>
@@ -103,18 +101,20 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Carpeta: <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SIZE">%2$d</xliff:g> o más elementos)"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Fondos de pantalla"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Fondo de pantalla y estilo"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Editar pantalla de inicio"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Ajustes de la pantalla de inicio"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Inhabilitado por el administrador"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Permitir rotación de la pantalla de inicio"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Permitir rotación de la pantalla de inicio"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Al girar el teléfono"</string>
-    <string name="notification_dots_title" msgid="9062440428204120317">"Puntos de notificación"</string>
+    <string name="notification_dots_title" msgid="9062440428204120317">"Burbujas de notificación"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Activado"</string>
     <string name="notification_dots_desc_off" msgid="1760796511504341095">"Desactivadas"</string>
     <string name="title_missing_notification_access" msgid="7503287056163941064">"Se necesita acceso a las notificaciones"</string>
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Para mostrar puntos de notificación, activa las notificaciones de <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Cambiar ajustes"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Mostrar puntos de notificación"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Añadir aplicaciones a la pantalla de inicio"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Opciones para desarrolladores"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Añadir iconos de aplicaciones a la pantalla de inicio"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Añade el icono de una aplicación nueva instalada a la pantalla de inicio"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Desconocido"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Quitar"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Instalando <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="PROGRESS">%2$s</xliff:g> completado"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Descargando <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="PROGRESS">%2$s</xliff:g> completado)"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"Esperando para instalar <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Debes actualizar la aplicación"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"La aplicación de este icono no está actualizada. Puedes actualizarla manualmente para volver a habilitar este acceso directo o puedes eliminar el icono."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Actualizar"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Quitar"</string>
     <string name="widgets_list" msgid="796804551140113767">"Lista de widgets"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Lista de widgets cerrada"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Añadir a la pantalla de inicio"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Añadir a pantalla de inicio"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Mover elemento aquí"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Elemento añadido a la pantalla de inicio"</string>
     <string name="item_removed" msgid="851119963877842327">"Elemento quitado"</string>
     <string name="undo" msgid="4151576204245173321">"Deshacer"</string>
     <string name="action_move" msgid="4339390619886385032">"Mover elemento"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Mover a la fila <xliff:g id="NUMBER_0">%1$s</xliff:g>, columna <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Mover a la fila <xliff:g id="NUMBER_0">%1$s</xliff:g>, columna <xliff:g id="NUMBER_1">%2$s</xliff:g> en <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Mover a la posición número <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Mover a la posición número <xliff:g id="NUMBER">%1$s</xliff:g> de favoritos"</string>
     <string name="item_moved" msgid="4606538322571412879">"Elemento movido"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Elemento añadido a carpeta"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Crear carpeta con: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Carpeta creada"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Mover a la pantalla de inicio"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Mover a la pantalla de inicio"</string>
     <string name="action_resize" msgid="1802976324781771067">"Modificar tamaño"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Aumentar ancho"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Aumentar altura"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Las aplicaciones de trabajo tienen una insignia, y tu administrador de TI las puede ver"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Entendido"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Las aplicaciones de trabajo están en pausa"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"No recibirás notificaciones de tus aplicaciones de trabajo"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Tus aplicaciones de trabajo no pueden enviarte notificaciones, usar batería ni acceder a tu ubicación"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Las aplicaciones de trabajo están desactivadas, por lo que no pueden enviarte notificaciones, consumir batería ni acceder a tu ubicación"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"No recibirás llamadas, mensajes de texto ni notificaciones de tus aplicaciones de trabajo"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Las aplicaciones de trabajo tienen una insignia y tu administrador de TI las puede ver"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Entendido"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Desactivar aplicaciones de trabajo"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Activar aplicaciones de trabajo"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Pausar aplicaciones de trabajo"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Reanudar"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtro"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Busca en tu teléfono"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Buscar en tu tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Se ha producido un error: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index e483041..4b00f7b 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Otsetee pole saadaval"</string>
     <string name="home_screen" msgid="5629429142036709174">"Avakuva"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Jagatud ekraanikuva"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Jaga üles"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Jaga vasakule"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Jaga paremale"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Rakenduse teave: %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Salvesta rakendusepaar"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Vidina teisaldamiseks puudutage ja hoidke all."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Vidina teisaldamiseks või kohandatud toimingute kasutamiseks topeltpuudutage ja hoidke all."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d lai ja %2$d kõrge"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Vidin <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Vidina teisaldamiseks avakuval puudutage vidinat ja hoidke seda all"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Lisa avakuvale"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Vidina teisaldamiseks avakuval puudutage vidinat ja hoidke seda all"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Lisa avakuvale"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Vidin <xliff:g id="WIDGET_NAME">%1$s</xliff:g> lisati avakuvale"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Soovitused"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# vidin}other{# vidinat}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# otsetee}other{# otseteed}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Isiklikud"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Töö"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Vestlused"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Märkmete tegemine"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Kasulik teave on teie käeulatuses"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Teabe saamiseks rakendusi avamata võite oma avakuvale lisada vidinaid"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Teabe saamiseks rakendusi avamata võite oma avakuvale lisada vidinaid"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Puudutage vidina seadete muutmiseks"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Selge"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Vidina seadete muutmine"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Otsige rakendusi"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Rakenduste laadimine …"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Päringule „<xliff:g id="QUERY">%1$s</xliff:g>” ei vastanud ükski rakendus"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Otsi rohkem rakendusi"</string>
     <string name="label_application" msgid="8531721983832654978">"Rakendus"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Kõik rakendused"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Märguanded"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Otsetee teisaldamiseks puudutage ja hoidke all."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Otsetee teisaldamiseks või kohandatud toimingute kasutamiseks topeltpuudutage ja hoidke all."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Sellel avakuval pole ruumi"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Sellel avakuval pole ruumi"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Salves Lemmikud pole rohkem ruumi"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Rakenduste loend"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Otsingutulemused"</string>
@@ -73,24 +72,23 @@
     <string name="all_apps_button_work_label" msgid="7270707118948892488">"Töörakenduste loend"</string>
     <string name="remove_drop_target_label" msgid="7812859488053230776">"Eemalda"</string>
     <string name="uninstall_drop_target_label" msgid="4722034217958379417">"Desinstalli"</string>
-    <string name="app_info_drop_target_label" msgid="692894985365717661">"Rakenduste teave"</string>
+    <string name="app_info_drop_target_label" msgid="692894985365717661">"Rakenduse teave"</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"Installimine"</string>
     <string name="dismiss_prediction_label" msgid="3357562989568808658">"Ära soovita rakendust"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"Kinnita ennustus"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"installi otseteed"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Võimaldab rakendusel lisada otseteid kasutaja sekkumiseta."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"avakuva seadete ja otseteede lugemine"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Võimaldab rakendusel lugeda avaekraanil seadeid ja otseteid."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"avakuva seadete ja otseteede kirjutamine"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Võimaldab rakendusel muuta avaekraanil seadeid ja otseteid."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"Rakendusel <xliff:g id="APP_NAME">%1$s</xliff:g> pole lubatud helistada"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"avakuva seadete ja otseteede lugemine"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Võimaldab rakendusel lugeda avakuva seadeid ja otseteid."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"avakuva seadete ja otseteede kirjutamine"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Võimaldab rakendusel muuta avakuval seadeid ja otseteid."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Vidinat ei saa laadida"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Vidina seaded"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Puudutage seadistuse lõpuleviimiseks"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"See on süsteemirakendus ja seda ei saa desinstallida."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Muuda nime"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Rakendus <xliff:g id="APP_NAME">%1$s</xliff:g> on keelatud"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{Rakenduses {app_name} on # märguanne}other{Rakenduses {app_name} on # märguannet}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{Rakenduses {app_name} on # märguanne}other{Rakenduses {app_name} on # märguannet}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Leht %1$d/%2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Avakuva %1$d/%2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Uus avakuva leht"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Kaust: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> või rohkem üksust"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Taustapildid"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Taustapilt ja stiil"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Muuda avaekraani"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Avakuva seaded"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Keelas administraator"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Luba avakuva pööramine"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Luba avakuva pööramine"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Kui telefoni pööratakse"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Märguandetäpid"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Sees"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Märguandetäppide kuvamiseks lülitage sisse rakenduse <xliff:g id="NAME">%1$s</xliff:g> märguanded"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Seadete muutmine"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Kuva märguandetäpid"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Lisa rakenduste ikoonid avakuvale"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Arendaja valikud"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Lisa rakenduste ikoonid avakuvale"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Uute rakenduste puhul"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Teadmata"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Eemalda"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Üksust <xliff:g id="NAME">%1$s</xliff:g> installitakse, <xliff:g id="PROGRESS">%2$s</xliff:g> on valmis"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Rakenduse <xliff:g id="NAME">%1$s</xliff:g> allalaadimine, <xliff:g id="PROGRESS">%2$s</xliff:g> on valmis"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> on installimise ootel"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Rakendust tuleb värskendada"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Selle ikooni rakendust pole värskendatud. Otsetee uuesti lubamiseks võite rakendust käsitsi värskendada või ikooni eemaldada."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Värskenda"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Eemalda"</string>
     <string name="widgets_list" msgid="796804551140113767">"Vidinate loend"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Vidinate loend on suletud"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Lisa avakuvasse"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Lisa avakuvale"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Teisalda üksus siia"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Üksus lisati avaekraanile"</string>
     <string name="item_removed" msgid="851119963877842327">"Üksus eemaldati"</string>
     <string name="undo" msgid="4151576204245173321">"Võta tagasi"</string>
     <string name="action_move" msgid="4339390619886385032">"Teisalda üksus"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Teisaldamine <xliff:g id="NUMBER_0">%1$s</xliff:g>. rea <xliff:g id="NUMBER_1">%2$s</xliff:g>. veergu"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Teisalda reale <xliff:g id="NUMBER_0">%1$s</xliff:g> veerus <xliff:g id="NUMBER_1">%2$s</xliff:g> kohas <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Teisaldamine <xliff:g id="NUMBER">%1$s</xliff:g>. positsioonile"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Teisaldamine lemmikute <xliff:g id="NUMBER">%1$s</xliff:g>. positsioonile"</string>
     <string name="item_moved" msgid="4606538322571412879">"Üksus teisaldati"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Üksus lisati kausta"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Kausta loomine nimega <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Kaust on loodud"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Teisalda avaekraanile"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Teisalda avakuvale"</string>
     <string name="action_resize" msgid="1802976324781771067">"Muuda suurust"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Suurenda laiust"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Suurenda kõrgust"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Töörakendustel on märk ja need on teie IT-administraatorile nähtavad"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Selge"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Töörakendused on peatatud"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Te ei saa oma töörakendustelt märguandeid"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Töörakendused ei saa teile märguandeid saata, akut kasutada ega teie asukohale juurde pääseda"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Töörakendused on välja lülitatud. Töörakendused ei saa teile märguandeid saata, akut kasutada ega teie asukohale juurde pääseda."</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Te ei saa oma töörakendustelt telefonikõnesid, tekstsõnumeid ega märguandeid"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Töörakendustel on märk ja need on teie IT-administraatorile nähtavad"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Selge"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Lülita töörakendused välja"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Lülita töörakendused sisse"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Peata töörakendused"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Lõpeta peatamine"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filter"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Otsimine telefonist"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Otsimine tahvelarvutist"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Nurjus: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index f1cc45e..4d617c5 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Lasterbideak ez daude erabilgarri"</string>
     <string name="home_screen" msgid="5629429142036709174">"Hasierako pantaila"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Zatitu pantaila"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Zatitu goialdean"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Zatitu ezkerraldean"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Zatitu eskuinaldean"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s aplikazioari buruzko informazioa"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Gorde aplikazio parea"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Eduki sakatuta widget bat mugitzeko."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Sakatu birritan eta eduki sakatuta widget bat mugitzeko edo ekintza pertsonalizatuak erabiltzeko."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d zabal eta %2$d luze"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> widgeta"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Eduki sakatuta widgeta hasierako pantailan zehar mugitzeko"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Gehitu hasierako pantailan"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Widgeta hasierako pantailan zehar mugitzeko, eduki ezazu sakatuta"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Gehitu hasierako pantailan"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> widgeta hasierako pantailan gehitu da"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Iradokizunak"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}other{# widget}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# lasterbide}other{# lasterbide}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Pertsonalak"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Lanekoak"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Elkarrizketak"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Oharrak idazteko"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Informazio erabilgarria beti eskura"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Aplikaziorik ireki beharrik gabe informazioa zuzenean jasotzeko, gehitu widgetak hasierako pantailan"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Aplikaziorik ireki beharrik gabe informazioa zuzenean jasotzeko, gehitu widgetak hasierako pantailan"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Sakatu hau widgeten ezarpenak aldatzeko"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Ados"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Aldatu widgeten ezarpenak"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Bilatu aplikazioetan"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Aplikazioak kargatzen…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Ez da aurkitu \"<xliff:g id="QUERY">%1$s</xliff:g>\" bilaketaren emaitzarik"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Bilatu aplikazio gehiago"</string>
     <string name="label_application" msgid="8531721983832654978">"Aplikazioa"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Aplikazio guztiak"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Jakinarazpenak"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Eduki sakatuta lasterbide bat mugitzeko."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Sakatu birritan eta eduki sakatuta lasterbide bat mugitzeko edo ekintza pertsonalizatuak erabiltzeko."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Ez dago tokirik hasierako pantailan"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Ez dago tokirik hasierako pantailan"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Ez dago toki gehiago Gogokoak erretiluan"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Aplikazioen zerrenda"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Bilaketa-emaitzak"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Ainguratu iragarpena"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"Instalatu lasterbideak"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Erabiltzaileak ezer egin gabe lasterbideak gehitzeko baimena ematen die aplikazioei."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"Irakurri hasierako ezarpenak eta lasterbideak"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Hasierako pantailako ezarpenak eta lasterbideak irakurtzeko baimena ematen die aplikazioei."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"Idatzi hasierako ezarpenak eta lasterbideak"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Hasierako pantailako ezarpenak eta lasterbideak aldatzeko baimena ematen die aplikazioei."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioak ez du telefono-deiak egiteko baimenik"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"irakurri hasierako pantailako ezarpenak eta lasterbideak"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Hasierako pantailako ezarpenak eta lasterbideak irakurtzeko baimena ematen die aplikazioei."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"idatzi hasierako pantailako ezarpenak eta lasterbideak"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Hasierako pantailako ezarpenak eta lasterbideak aldatzeko baimena ematen die aplikazioei."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Ezin da kargatu widgeta"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Widgetaren ezarpenak"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Sakatu konfiguratzen amaitzeko"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Sistema-aplikazioa da hau eta ezin da desinstalatu."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Editatu izena"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> desgaituta dago"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} aplikazioak # jakinarazpen dauka}other{{app_name} aplikazioak # jakinarazpen dauzka}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} aplikazioak # jakinarazpen dauka}other{{app_name} aplikazioak # jakinarazpen dauzka}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"%1$d/%2$d orria"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"%1$d/%2$d hasierako pantaila"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Hasierako pantailaren orri berria"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"<xliff:g id="NAME">%1$s</xliff:g> karpeta (<xliff:g id="SIZE">%2$d</xliff:g> elementu edo gehiago)"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Horma-paperak"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Horma-papera eta estiloa"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Editatu hasierako pantaila"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Hasierako pantailaren ezarpenak"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Administratzaileak desgaitu du"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Eman hasierako pantaila biratzeko baimena"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Eman hasierako pantaila biratzeko baimena"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Telefonoa biratzean"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Jakinarazpen-biribiltxoak"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Aktibatuta"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Jakinarazpen-biribiltxoak ikusteko, aktibatu <xliff:g id="NAME">%1$s</xliff:g> aplikazioaren jakinarazpenak"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Aldatu ezarpenak"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Erakutsi jakinarazpen-biribiltxoak"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Gehitu aplikazioen ikonoak hasierako pantailan"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Garatzaileentzako aukerak"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Gehitu aplikazioen ikonoak hasierako pantailan"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Aplikazio berrien kasuan"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Ezezaguna"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Kendu"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> instalatzen, <xliff:g id="PROGRESS">%2$s</xliff:g> osatuta"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> deskargatzen, <xliff:g id="PROGRESS">%2$s</xliff:g> osatuta"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> instalatzeko zain"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Aplikazioa eguneratu egin behar da"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Ikonoaren aplikazioa ez dago eguneratuta. Lasterbidea berriro gaitzeko, eskuz egunera dezakezu aplikazioa. Bestela, kendu ikonoa."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Eguneratu"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Kendu"</string>
     <string name="widgets_list" msgid="796804551140113767">"Widget-zerrenda"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Itxi da widget-zerrenda"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Gehitu hasierako pantailan"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Gehitu hasierako pantailan"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Ekarri elementua hona"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Gehitu da elementua hasierako pantailan"</string>
     <string name="item_removed" msgid="851119963877842327">"Kendu da elementua"</string>
     <string name="undo" msgid="4151576204245173321">"Desegin"</string>
     <string name="action_move" msgid="4339390619886385032">"Mugitu elementua"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Eraman <xliff:g id="NUMBER_0">%1$s</xliff:g>. errenkadara, <xliff:g id="NUMBER_1">%2$s</xliff:g>. zutabera"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Joan <xliff:g id="NUMBER_0">%1$s</xliff:g>garren errenkadako <xliff:g id="NUMBER_1">%2$s</xliff:g>garren zutabera, <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Eraman <xliff:g id="NUMBER">%1$s</xliff:g>. postura"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Eraman gogokoen <xliff:g id="NUMBER">%1$s</xliff:g>. postura"</string>
     <string name="item_moved" msgid="4606538322571412879">"Elementua mugitu da"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Elementua karpetan gehitu da"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Sortu karpeta <xliff:g id="NAME">%1$s</xliff:g> elementuarekin"</string>
     <string name="folder_created" msgid="6409794597405184510">"Karpeta sortu da"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Eraman hasierako pantailara"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Eraman hasierako pantailara"</string>
     <string name="action_resize" msgid="1802976324781771067">"Aldatu tamaina"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Handitu zabalera"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Handitu altuera"</string>
@@ -158,13 +162,16 @@
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"Laneko profila"</string>
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Laneko aplikazioek bereizgarriak dituzte, eta IKT saileko administratzaileak ikus ditzake"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Ados"</string>
-    <string name="work_apps_paused_title" msgid="3040901117349444598">"Pausatu egin dira laneko aplikazioak"</string>
+    <string name="work_apps_paused_title" msgid="3040901117349444598">"Pausatuta daude laneko aplikazioak"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Ez duzu jasoko laneko aplikazioen jakinarazpenik"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Laneko aplikazioek ezin dute jakinarazpenik bidali, bateria erabili edo kokapena atzitu"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Laneko aplikazioak desaktibatuta daude. Hori dela eta, ezin dute jakinarazpenik bidali, bateria erabili edo kokapena atzitu."</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Ez duzu jasoko laneko aplikazioen telefono-deirik, testu-mezurik edo jakinarazpenik"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Laneko aplikazioek bereizgarriak dituzte, eta IKT saileko administratzaileak ikus ditzake"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Ados"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Desaktibatu laneko aplikazioak"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Aktibatu laneko aplikazioak"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Pausatu laneko aplikazioak"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Aktibatu berriro"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Iragazi"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Bilatu telefonoan"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Bilatu tabletan"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Huts egin du: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index a7b1020..091211a 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"میان‌بر دردسترس نیست"</string>
     <string name="home_screen" msgid="5629429142036709174">"صفحه اصلی"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"صفحهٔ دونیمه"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"تقسیم از بالا"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"تقسیم از چپ"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"تقسیم از راست"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"‏اطلاعات برنامه %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"ذخیره جفت برنامه"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"برای جابه‌جا کردن ابزارک، لمس کنید و نگه دارید."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"برای جابه‌جا کردن ابزارک یا استفاده از کنش‌های سفارشی، دوضربه بزنید و نگه دارید."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"‏%1$d عرض در %2$d طول"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"ابزارک <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"ابزارک را لمس کنید و نگه دارید تا آن را در صفحه اصلی حرکت دهید"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"افزودن به صفحه اصلی"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"ابزارک را لمس کنید و نگه دارید تا بتوانید آن را در صفحه اصلی حرکت دهید"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"افزودن به صفحه اصلی"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"ابزارک <xliff:g id="WIDGET_NAME">%1$s</xliff:g> به صفحه اصلی اضافه شد"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"پیشنهادها"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{‏# ابزارک}one{‏# ابزارک}other{‏# ابزارک}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{‏# میان‌بر}one{‏# میان‌بر}other{‏# میان‌بر}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>،<xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ابزارک‌های شخصی"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"کار"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"مکالمه‌ها"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"یادداشت‌برداری"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"دسترسی آسان به اطلاعات سودمند"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"با افزودن ابزارک‌ها به «صفحه اصلی» می‌توانید اطلاعات را بدون باز کردن برنامه‌ها دریافت کنید"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"با افزودن ابزارک‌ها به صفحه اصلی می‌توانید اطلاعات را بدون باز کردن برنامه‌ها دریافت کنید"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"برای تغییر تنظیمات ابزارک، ضربه بزنید"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"متوجه‌ام"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"تغییر تنظیمات ابزارک"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"جستجوی برنامه‌ها"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"درحال بارگیری برنامه‌‌ها…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"هیچ برنامه‌ای در مطابقت با «<xliff:g id="QUERY">%1$s</xliff:g>» پیدا نشد"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"جستجوی برنامه‌های بیشتر"</string>
     <string name="label_application" msgid="8531721983832654978">"برنامه"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"همه برنامه‌ها"</string>
     <string name="notifications_header" msgid="1404149926117359025">"اعلان‌ها"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"برای جابه‌جا کردن میان‌بر، لمس کنید و نگه دارید."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"برای جابه‌جا کردن میان‌بر یا استفاده از کنش‌های سفارشی، دوضربه بزنید و نگه دارید."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"فضای خالی در این صفحه اصلی وجود ندارد"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"فضای خالی در این صفحه اصلی وجود ندارد"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"فضای بیشتری در سینی موارد دلخواه وجود ندارد"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"فهرست برنامه‌ها"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"نتایج جستجو"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"سنجاق کردن پیشنهاد"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"نصب میان‌برها"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"به برنامه اجازه می‌دهد میان‌برها را بدون دخالت کاربر اضافه کند."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"خواندن تنظیمات و میان‌برهای صفحه اصلی"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"به برنامه اجازه می‌دهد تنظیمات و میان‌برها را در صفحه اصلی بخواند."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"نوشتن تنظیمات و میان‌برهای صفحه اصلی"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"به برنامه اجازه می‌دهد تنظیمات و میان‌برها را در صفحه اصلی تغییر دهد."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> مجاز نیست تماس تلفنی برقرار کند"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"خواندن تنظیمات و میان‌برهای صفحه اصلی"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"به برنامه اجازه می‌دهد تنظیمات و میان‌برهای صفحه اصلی را بخواند."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"نوشتن تنظیمات و میان‌برهای صفحه اصلی"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"به برنامه اجازه می‌دهد تنظیمات و میان‌برهای صفحه اصلی را تغییر دهد."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"ابزارک را نمی‌توان بار کرد"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"تنظیمات ابزارک"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"برای تکمیل راه‌اندازی ضربه بزنید"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"این برنامه سیستمی است و حذف نصب نمی‌شود."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"ویرایش نام"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> غیرفعال شد"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} ‏# اعلان دارد}one{{app_name} ‏# اعلان دارد}other{{app_name} ‏# اعلان دارد}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} ‏# اعلان دارد}one{{app_name} ‏# اعلان دارد}other{{app_name} ‏# اعلان دارد}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"‏صفحه %1$d از %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"‏صفحه اصلی %1$d از %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"صفحه اصلی جدید"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"پوشه: <xliff:g id="NAME">%1$s</xliff:g>، <xliff:g id="SIZE">%2$d</xliff:g> مورد یا بیشتر"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"کاغذدیواری‌ها"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"کاغذدیواری و سبک"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"ویرایش «صفحه اصلی»"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"تنظیمات صفحه اصلی"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"توسط سرپرست سیستم غیرفعال شده است"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"قابل‌چرخش بودن صفحه اصلی"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"مجاز کردن چرخش صفحه اصلی"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"وقتی تلفن چرخانده می‌شود"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"نقطه‌های اعلان"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"روشن"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"برای نمایش «نقطه‌های اعلان»، اعلان‌های برنامه را برای <xliff:g id="NAME">%1$s</xliff:g> روشن کنید"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"تغییر تنظیمات"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"نمایش نقطه‌های اعلان"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"افزودن نماد برنامه‌ها به صفحه اصلی"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"گزینه‌های برنامه‌نویس"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"افزودن نماد برنامه‌ها به صفحه اصلی"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"برای برنامه‌های جدید"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"نامشخص"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"حذف"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> درحال نصب است، <xliff:g id="PROGRESS">%2$s</xliff:g> تکمیل شده است"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"درحال بارگیری <xliff:g id="NAME">%1$s</xliff:g>، <xliff:g id="PROGRESS">%2$s</xliff:g> کامل شد"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> درانتظار نصب"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"برنامه باید به‌روز شود"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"برنامه برای این نماد به‌روز نشده است. می‌توانید آن را به‌صورت دستی به‌روز کنید تا میان‌بر دوباره فعال شود، یا نماد را بردارید."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"به‌روزرسانی"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"برداشتن"</string>
     <string name="widgets_list" msgid="796804551140113767">"فهرست ابزارک‌ها"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"فهرست ابزارک‌ها بسته شد"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"افزودن به صفحه اصلی"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"افزودن به صفحه اصلی"</string>
     <string name="action_move_here" msgid="2170188780612570250">"انتقال مورد به اینجا"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"مورد به صفحه اصلی اضافه شد"</string>
     <string name="item_removed" msgid="851119963877842327">"مورد حذف شد"</string>
     <string name="undo" msgid="4151576204245173321">"واگرد"</string>
     <string name="action_move" msgid="4339390619886385032">"انتقال مورد"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"انتقال به سطر <xliff:g id="NUMBER_0">%1$s</xliff:g> ستون <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"انتقال به ردیف <xliff:g id="NUMBER_0">%1$s</xliff:g> ستون <xliff:g id="NUMBER_1">%2$s</xliff:g> در <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"انتقال به موقعیت <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"انتقال به موقعیت دلخواه <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"مورد منتقل شد"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"مورد به پوشه اضافه شد"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"ایجاد پوشه با: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"پوشه ایجاد شد"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"انتقال به صفحه اصلی"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"انتقال دادن به صفحه اصلی"</string>
     <string name="action_resize" msgid="1802976324781771067">"تغییر اندازه"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"افزایش عرض"</string>
     <string name="action_increase_height" msgid="459390020612501122">"افزایش ارتفاع"</string>
@@ -156,15 +160,18 @@
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"شخصی"</string>
     <string name="all_apps_work_tab" msgid="4884822796154055118">"کاری"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"نمایه کاری"</string>
-    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"برنامه‌های کاری دارای نشان هستند و سرپرست سیستم می‌تواند آن‌ها را ببیند"</string>
+    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"برنامه‌های کاری نشان‌دار هستند و سرپرست فناوری اطلاعات می‌تواند آن‌ها را ببیند"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"متوجه‌ام"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"برنامه‌های کاری موقتاً متوقف شده‌اند."</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"از برنامه‌های کاری‌تان اعلان دریافت نخواهید کرد"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"برنامه‌های کاری نمی‌توانند برای شما اعلان ارسال کنند، از باتری استفاده کنند، یا به مکانتان دسترسی داشته باشند"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"برنامه‌های کاری خاموش است. برنامه‌های کاری نمی‌توانند برای شما اعلان ارسال کنند، از باتری استفاده کنند، یا به مکانتان دسترسی داشته باشند"</string>
-    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"برنامه‌های کاری دارای نشان هستند و سرپرست سیستم می‌تواند آن‌ها را ببیند."</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"از برنامه‌های کاری‌تان تماس تلفنی، پیام نوشتاری، یا اعلان دریافت نخواهید کرد"</string>
+    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"برنامه‌های کاری نشان‌دار هستند و سرپرست فناوری اطلاعات می‌تواند آن‌ها را ببیند."</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"متوجه‌ام"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"خاموش کردن برنامه‌های کاری"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"روشن کردن برنامه‌های کاری"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"توقف موقت برنامه‌های کاری"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"ازسرگیری"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"فیلتر"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"جستجوی تلفن"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"جستجوی رایانه لوحی"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"ناموفق بود: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 874c85d..a1aa48c 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Pikakuvake ei ole käytettävissä."</string>
     <string name="home_screen" msgid="5629429142036709174">"Etusivu"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Jaettu näyttö"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Ylhäällä"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Vasemmalla"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Oikealla"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Sovellustiedot: %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Tallenna sovelluspari"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Kosketa pitkään, niin voit siirtää widgetiä."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Kaksoisnapauta ja paina pitkään, niin voit siirtää widgetiä tai käyttää muokattuja toimintoja."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"Leveys: %1$d, korkeus: %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> widget"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Voit siirtää widgetiä aloitusnäytöllä koskettamalla sitä pitkään"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Lisää aloitusnäytölle"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Voit siirtää widgetiä aloitusnäytöllä koskettamalla sitä pitkään"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Lisää aloitusnäytölle"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Widget lisätty aloitusnäytölle: <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Ehdotukset"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}other{# widgetiä}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# pikakuvake}other{# pikakuvaketta}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Henkilökohtaiset"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Työ"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Keskustelut"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Muistiinpanojen tekeminen"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Hyödyllisiä tietoja käden ulottuvilla"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Jos haluat nähdä tietoja avaamatta sovelluksia, voit lisätä aloitusnäytölle widgetejä"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Jos haluat nähdä tietoja avaamatta sovelluksia, voit lisätä aloitusnäytölle widgetejä"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Napauta, niin voit muuttaa widgetin asetuksia"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Muuta widgetin asetuksia"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Hae sovelluksia"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Ladataan sovelluksia…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"<xliff:g id="QUERY">%1$s</xliff:g> ei palauttanut sovelluksia."</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Hae lisää sovelluksia"</string>
     <string name="label_application" msgid="8531721983832654978">"Sovellus"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Kaikki sovellukset"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Ilmoitukset"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Kosketa pitkään, niin voit siirtää pikakuvaketta."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Kaksoisnapauta ja paina pitkään, niin voit siirtää pikakuvaketta tai käyttää muokattuja toimintoja."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Tällä aloitusnäytöllä ei ole tilaa"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Aloitusnäytöllä ei ole tilaa"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Suosikit-valikossa ei ole enää tilaa"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Sovellusluettelo"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Hakutulokset"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Kiinnitä sovellus"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"asenna pikakuvakkeita"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Antaa sovelluksen lisätä pikakuvakkeita itsenäisesti ilman käyttäjän valintaa."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"lue aloitusruudun asetuksia ja pikakuvakkeita"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Antaa sovelluksen lukea aloitusruudun asetukset ja pikakuvakkeet."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"kirjoita aloitusruudun asetuksia ja pikakuvakkeita"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Antaa sovelluksen muuttaa aloitusruudun asetuksia ja pikakuvakkeita."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> ei saa soittaa puheluita."</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"lukea aloitusnäytön asetuksia ja pikakuvakkeita"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Antaa sovelluksen lukea aloitusnäytön asetuksia ja pikakuvakkeita"</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"muokata aloitusnäytön asetuksia ja pikakuvakkeita"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Antaa sovelluksen muuttaa aloitusnäytön asetuksia ja pikakuvakkeita"</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Widgetiä ei voi ladata"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Widgetin asetukset"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Viimeistele asennus napauttamalla"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Tämä on järjestelmäsovellus, eikä sitä voi poistaa."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Muokkaa nimeä"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> poistettiin käytöstä"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name}: # ilmoitus}other{{app_name}: # ilmoitusta}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name}: # ilmoitus}other{{app_name}: # ilmoitusta}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Sivu %1$d / %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Aloitusruutu %1$d/%2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Uusi aloitusnäytön sivu"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Kansio: <xliff:g id="NAME">%1$s</xliff:g>, ainakin <xliff:g id="SIZE">%2$d</xliff:g> kohdetta"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Taustakuvat"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Taustakuva ja tyyli"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Muokkaa aloitusnäyttöä"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Aloitusnäyttö"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Järjestelmänvalvoja on poistanut toiminnon käytöstä."</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Salli aloitusnäytön kiertäminen"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Salli aloitusnäytön kiertäminen"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Kun puhelinta kierretään"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Pistemerkit"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Päällä"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"<xliff:g id="NAME">%1$s</xliff:g> tarvitsee ilmoitusten käyttöoikeuden, jotta pistemerkkejä voidaan näyttää."</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Muuta asetuksia"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Näytä ilmoituksista kertovat pistemerkit"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Lisää sovelluskuvakkeet aloitusnäytölle"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Kehittäjäasetukset"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Lisää sovelluskuvakkeet aloitusnäytölle"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Uusille sovelluksille"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Tuntematon"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Poista"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> asennetaan, <xliff:g id="PROGRESS">%2$s</xliff:g> valmis"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> latautuu, valmiina <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> odottaa asennusta"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Sovelluspäivitys vaaditaan"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Kuvakkeen sovellusta ei ole päivitetty. Voit ottaa pikakuvakkeen uudelleen käyttöön päivittämällä sovelluksen tai poistaa kuvakkeen."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Päivitä"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Poista"</string>
     <string name="widgets_list" msgid="796804551140113767">"Widget-luettelo"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Widget-luettelo suljettu"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Lisää aloitusnäytölle"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Lisää aloitusnäytölle"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Siirrä kohde tänne"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Kohde lisättiin aloitusnäytölle."</string>
     <string name="item_removed" msgid="851119963877842327">"Kohde poistettiin"</string>
     <string name="undo" msgid="4151576204245173321">"Kumoa"</string>
     <string name="action_move" msgid="4339390619886385032">"Siirrä kohde"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Siirrä rivin <xliff:g id="NUMBER_0">%1$s</xliff:g> sarakkeeseen <xliff:g id="NUMBER_1">%2$s</xliff:g>."</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Siirrä riviin <xliff:g id="NUMBER_0">%1$s</xliff:g> sarakkeeseen <xliff:g id="NUMBER_1">%2$s</xliff:g> näytöllä <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Siirrä kohtaan <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Siirrä suosikkien kohtaan <xliff:g id="NUMBER">%1$s</xliff:g>."</string>
     <string name="item_moved" msgid="4606538322571412879">"Kohde on siirretty."</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Kohde on lisätty kansioon."</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Luo kansio, jossa on <xliff:g id="NAME">%1$s</xliff:g>."</string>
     <string name="folder_created" msgid="6409794597405184510">"Kansio on luotu."</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Siirrä aloitusnäytölle"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Siirrä aloitusnäytölle"</string>
     <string name="action_resize" msgid="1802976324781771067">"Muuta kokoa"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Lisää leveyttä"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Lisää korkeutta"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Työsovellukset on merkitty sellaisiksi ja näkyvät IT-järjestelmänvalvojille"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Selvä"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Työsovellukset on keskeytetty"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Et saa ilmoituksia työsovelluksilta."</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Työsovellukset eivät voi lähettää sinulle ilmoituksia eivätkä käyttää akkuasi tai paikantaa sijaintiasi"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Työsovellukset ovat pois päältä. Ne eivät voi lähettää sinulle ilmoituksia eivätkä käyttää akkuasi tai sijaintiasi"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Et saa puheluja, tekstiviestejä tai ilmoituksia työsovelluksilta."</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Työsovellukset on merkitty sellaisiksi ja näkyvät IT-järjestelmänvalvojille"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Laita työsovellukset pois päältä"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Laita työsovellukset päälle"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Keskeytä työsovellusten käyttö"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Jatka"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Suodatin"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Hae puhelimesta"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Hae tabletilta"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Epäonnistui: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 9a77c87..7478968 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Le raccourci n\'est pas disponible"</string>
     <string name="home_screen" msgid="5629429142036709174">"Accueil"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Écran partagé"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Diviser dans la partie supérieure"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Diviser à gauche"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Diviser à droite"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Renseignements sur l\'appli pour %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Enregistrer la paire d\'applications"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Maintenez le doigt sur un widget pour le déplacer."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Touchez 2x un widget et maintenez le doigt dessus pour le déplacer ou utiliser des actions personnalisées."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de largeur sur %2$d de hauteur"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Maintenez le doigt sur le widget pour le déplacer sur l\'écran d\'accueil"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Ajouter à l\'écran d\'accueil"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Maintenez le doigt sur le widget pour le déplacer sur l\'écran d\'accueil"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Ajouter à l\'écran d\'accueil"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Le widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g> a été ajouté à l\'écran d\'accueil"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Suggestions"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}one{# widget}other{# widgets}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# raccourci}one{# raccourci}other{# raccourcis}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personnels"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Professionnels"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Conversations"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Prise de note"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Renseignements utiles à portée de main"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Pour obtenir des renseignements sans ouvrir d\'application, vous pouvez ajouter des widgets à votre écran d\'accueil"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Pour obtenir des informations sans ouvrir d\'applications, vous pouvez ajouter des widgets à votre écran d\'accueil"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Touchez pour modifier les paramètres du widget"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Modifier les paramètres du widget"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Rechercher dans les applications"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Chargement des applications en cours…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Aucune application trouvée correspondant à « <xliff:g id="QUERY">%1$s</xliff:g> »"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Rechercher plus d\'applications"</string>
     <string name="label_application" msgid="8531721983832654978">"Application"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Toutes les applications"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Notifications"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Maintenez le doigt sur un raccourci pour le déplacer."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Touchez deux fois un raccourci et maintenez le doigt dessus pour le déplacer ou utiliser des actions personnalisées."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Pas d\'espace libre sur cet écran d\'accueil"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Pas d\'espace libre sur cet écran d\'accueil"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Il n\'y a plus d\'espace dans la zone des favoris"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Liste des applications"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Résultats de recherche"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Épingler la prédiction"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"installer des raccourcis"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Permet à une application d\'ajouter des raccourcis sans l\'intervention de l\'utilisateur."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"lire les paramètres et les raccourcis de la page d\'accueil"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Permet à l\'application de lire les paramètres et les raccourcis de l\'écran d\'accueil."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"enregistrer les paramètres de la page d\'accueil et des raccourcis"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Permet à l\'application de modifier les paramètres et les raccourcis de l\'écran d\'accueil."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"L\'application <xliff:g id="APP_NAME">%1$s</xliff:g> n\'est pas autorisée à faire des appels téléphoniques"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"lire les paramètres et les raccourcis de la page d\'accueil"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Permet à l\'application de lire les paramètres et les raccourcis de l\'écran d\'accueil."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"modifier les paramètres et les raccourcis de la page d\'accueil"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Permet à l\'application de modifier les paramètres et les raccourcis de l\'écran d\'accueil."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Impossible de charger le widget"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Paramètres du widget"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Touchez pour terminer la configuration"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Impossible de désinstaller cette application, car il s\'agit d\'une application système."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Modifier le nom"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"L\'application <xliff:g id="APP_NAME">%1$s</xliff:g> est désactivée"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} a # notification}one{{app_name} a # notification}other{{app_name} a # notifications}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} a # notification}one{{app_name} a # notification}other{{app_name} a # notifications}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Page %1$d sur %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Écran d\'accueil %1$d sur %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Nouvelle page d\'écran d\'accueil"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Dossier : <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> éléments ou plus"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Fonds d\'écran"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Fond d\'écran et style"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Modifier l\'écran d\'accueil"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Paramètres d\'accueil"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Cette fonction est désactivée par votre administrateur"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Autoriser la rotation de l\'écran d\'accueil"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Autoriser la rotation de l\'écran d\'accueil"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Lorsque vous faites pivoter le téléphone"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Points de notification"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Activé"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Pour afficher les points de notification, activez les notifications d\'application pour <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Modifier les paramètres"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Afficher les points de notification"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Ajouter icônes d\'applis à l\'écran d\'accueil"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Options pour les développeurs"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Ajouter les icônes des applications à l\'écran d\'accueil"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Pour les nouvelles applications"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Inconnu"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Supprimer"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Installation de l\'application <xliff:g id="NAME">%1$s</xliff:g> en cours, <xliff:g id="PROGRESS">%2$s</xliff:g> terminée"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Téléchargement de <xliff:g id="NAME">%1$s</xliff:g> : <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> en attente d\'installation"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Mise à jour de l\'application requise"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"L\'application pour cette icône n\'est pas à jour. Vous pouvez soit la mettre à jour manuellement pour réactiver ce raccourci, soit retirer l\'icône."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Mettre à jour"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Retirer"</string>
     <string name="widgets_list" msgid="796804551140113767">"Liste des widgets"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Liste des widgets fermée"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Ajouter à l\'écran d\'accueil"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Ajouter à l\'écran d\'accueil"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Déplacer l\'élément ici"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Élément ajouté à l\'écran d\'accueil"</string>
     <string name="item_removed" msgid="851119963877842327">"Élément retiré"</string>
     <string name="undo" msgid="4151576204245173321">"Annuler"</string>
     <string name="action_move" msgid="4339390619886385032">"Déplacer l\'élément"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Déplacer vers rangée <xliff:g id="NUMBER_0">%1$s</xliff:g> colonne <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Déplacer à la ligne <xliff:g id="NUMBER_0">%1$s</xliff:g> colonne <xliff:g id="NUMBER_1">%2$s</xliff:g> dans <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Déplacer vers la position <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Déplacer vers la position <xliff:g id="NUMBER">%1$s</xliff:g> dans les favoris"</string>
     <string name="item_moved" msgid="4606538322571412879">"Élément déplacé"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Élément ajouté au dossier"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Créer un dossier avec : <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Dossier créé"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Déplacer sur l\'écran d\'accueil"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Déplacer sur l\'écran d\'accueil"</string>
     <string name="action_resize" msgid="1802976324781771067">"Redimensionner"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Augmenter la largeur"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Augmenter la hauteur"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Les applications professionnelles sont indiquées par un badge et elles sont visibles pour votre administrateur informatique"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Les applications professionnelles sont interrompues"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Vous ne recevrez pas de notifications de vos applications professionnelles"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Les applications professionnelles ne peuvent ni vous envoyer de notifications, ni utiliser la pile, ni accéder à votre position"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Les applications professionnelles sont désactivées. Vos applications professionnelles ne peuvent ni vous envoyer de notifications, ni utiliser la pile, ni accéder à votre position"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Vous ne recevrez pas d\'appels téléphoniques, de messages texte ni de notifications de vos applications professionnelles"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Les applications professionnelles sont indiquées par un badge et sont visibles pour votre administrateur informatique"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Désactiver les applications professionnelles"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Activer les applications professionnelles"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Mettre en pause les applications professionnelles"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Réactiver"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtrer"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Rechercher sur votre téléphone"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Rechercher sur votre tablette"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Échec : <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index f071db9..63869f6 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Raccourci non disponible"</string>
     <string name="home_screen" msgid="5629429142036709174">"Accueil"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Écran partagé"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Affichée en haut"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Affichée à gauche"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Affichée à droite"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Infos sur l\'appli pour %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Enregistrer la paire d\'applis"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Appuyez de manière prolongée sur un widget pour le déplacer."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Appuyez deux fois et maintenez la pression pour déplacer widget ou utiliser actions personnalisées."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d x %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de largeur et %2$d de hauteur"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Appuyez de manière prolongée sur le widget pour le déplacer sur l\'écran d\'accueil"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Ajouter à l\'écran d\'accueil"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Appuyez de manière prolongée sur le widget pour le déplacer sur l\'écran d\'accueil"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Ajouter à l\'écran d\'accueil"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g> ajouté à l\'écran d\'accueil"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Suggestions"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}one{# widget}other{# widgets}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# raccourci}one{# raccourci}other{# raccourcis}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personnels"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Professionnels"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Conversations"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Prise de notes"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Infos utiles à portée de main"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Pour obtenir des infos sans ouvrir d\'applis, vous pouvez ajouter des widgets à votre écran d\'accueil"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Pour obtenir des infos sans ouvrir d\'applis, vous pouvez ajouter des widgets à votre écran d\'accueil"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Appuyez pour modifier les paramètres du widget"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Modifier les paramètres du widget"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Rechercher dans les applications"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Chargement des applications…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Aucune application ne correspond à la requête \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Rechercher plus d\'applications"</string>
     <string name="label_application" msgid="8531721983832654978">"Application"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Toutes les applis"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Notifications"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Appuyez de manière prolongée pour déplacer un raccourci."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Appuyez deux fois et maintenez la pression pour déplacer un raccourci ou utiliser les actions personnalisées."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Espace insuffisant sur cet écran d\'accueil"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Espace insuffisant sur cet écran d\'accueil"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Plus d\'espace disponible dans la zone de favoris."</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Liste d\'applications"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Résultats de recherche"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Épingler la prédiction"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"installer des raccourcis"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Permettre à une application d\'ajouter des raccourcis sans l\'intervention de l\'utilisateur"</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"lire les paramètres et les raccourcis de l\'écran d\'accueil"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Permettre à l\'application de lire les paramètres et les raccourcis de l\'écran d\'accueil"</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"modifier les paramètres et les raccourcis de l\'écran d\'accueil"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Permettre à l\'application de modifier les paramètres et les raccourcis de l\'écran d\'accueil"</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"L\'application <xliff:g id="APP_NAME">%1$s</xliff:g> n\'est pas autorisée à passer des appels téléphoniques."</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"Lire les paramètres et les raccourcis de la page d\'accueil"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Permet à l\'application de lire les paramètres et les raccourcis de l\'écran d\'accueil."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"Modifier les paramètres de la page d\'accueil et les raccourcis"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Permet à l\'application de modifier les paramètres et les raccourcis de l\'écran d\'accueil."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Impossible de charger le widget"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Paramètres du widget"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Appuyez pour terminer la configuration"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Impossible de désinstaller cette application, car il s\'agit d\'une application système."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Modifier le nom"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> est désactivé."</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} a # notification}one{{app_name} a # notification}other{{app_name} a # notifications}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} a # notification}one{{app_name} a # notification}other{{app_name} a # notifications}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Page %1$d sur %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Écran d\'accueil %1$d sur %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Nouvelle page d\'écran d\'accueil"</string>
@@ -103,18 +101,20 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Dossier : <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> éléments ou plus"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Fonds d\'écran"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Fond d\'écran et style"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Modifier l\'écran d\'accueil"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Paramètres de l\'accueil"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Désactivé par votre administrateur"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Autoriser la rotation de l\'écran d\'accueil"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Autoriser la rotation de l\'écran d\'accueil"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Lorsque vous faites pivoter le téléphone"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Pastilles de notification"</string>
-    <string name="notification_dots_desc_on" msgid="1679848116452218908">"Activées"</string>
-    <string name="notification_dots_desc_off" msgid="1760796511504341095">"Désactivées"</string>
+    <string name="notification_dots_desc_on" msgid="1679848116452218908">"Activé"</string>
+    <string name="notification_dots_desc_off" msgid="1760796511504341095">"Désactivé"</string>
     <string name="title_missing_notification_access" msgid="7503287056163941064">"Accès aux notifications requis"</string>
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Pour afficher les pastilles de notification, activez les notifications de l\'application <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Modifier les paramètres"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Afficher les pastilles de notification"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Ajouter les icônes des applis à l\'écran d\'accueil"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Options pour les développeurs"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Ajouter les icônes des applications à l\'écran d\'accueil"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Pour les nouvelles applications"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Inconnu"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Supprimer"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Installation de <xliff:g id="NAME">%1$s</xliff:g>… (<xliff:g id="PROGRESS">%2$s</xliff:g> terminés)"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> en cours de téléchargement, <xliff:g id="PROGRESS">%2$s</xliff:g> effectué(s)"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> en attente d\'installation"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Mise à jour de l\'appli requise"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"L\'appli correspondant à cette icône n\'est pas mise à jour. Vous pouvez la mettre à jour manuellement pour réactiver le raccourci ou supprimer l\'icône."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Modifier"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Supprimer"</string>
     <string name="widgets_list" msgid="796804551140113767">"Liste des widgets"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"La liste des widgets est fermée"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Ajouter à l\'écran d\'accueil"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Ajouter à l\'écran d\'accueil"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Déplacer l\'élément ici"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"L\'élément a bien été ajouté à l\'écran d\'accueil."</string>
-    <string name="item_removed" msgid="851119963877842327">"L\'élément a bien été supprimé."</string>
+    <string name="item_removed" msgid="851119963877842327">"Élément supprimé"</string>
     <string name="undo" msgid="4151576204245173321">"Annuler"</string>
     <string name="action_move" msgid="4339390619886385032">"Déplacer l\'élément"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Déplacer vers la ligne <xliff:g id="NUMBER_0">%1$s</xliff:g>, colonne <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Déplacer vers la ligne <xliff:g id="NUMBER_0">%1$s</xliff:g>, colonne <xliff:g id="NUMBER_1">%2$s</xliff:g> dans <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Déplacer vers la position <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Déplacer vers la position <xliff:g id="NUMBER">%1$s</xliff:g> dans les favoris"</string>
     <string name="item_moved" msgid="4606538322571412879">"Élément déplacé"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Élément ajouté au dossier"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Créer un dossier avec \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
     <string name="folder_created" msgid="6409794597405184510">"Dossier créé"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Déplacer vers l\'écran d\'accueil"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Déplacer sur l\'écran d\'accueil"</string>
     <string name="action_resize" msgid="1802976324781771067">"Redimensionner"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Augmenter la largeur"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Augmenter la hauteur"</string>
@@ -153,18 +157,21 @@
     <string name="action_dismiss_notification" msgid="5909461085055959187">"Ignorer"</string>
     <string name="accessibility_close" msgid="2277148124685870734">"Fermer"</string>
     <string name="notification_dismissed" msgid="6002233469409822874">"Notification ignorée"</string>
-    <string name="all_apps_personal_tab" msgid="4190252696685155002">"Personnelles"</string>
-    <string name="all_apps_work_tab" msgid="4884822796154055118">"Professionnelles"</string>
+    <string name="all_apps_personal_tab" msgid="4190252696685155002">"Personnel"</string>
+    <string name="all_apps_work_tab" msgid="4884822796154055118">"Professionnel"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"Profil professionnel"</string>
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Les applis professionnelles sont identifiées par un badge et votre administrateur informatique peut les voir"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
-    <string name="work_apps_paused_title" msgid="3040901117349444598">"Applications professionnelles en veille"</string>
+    <string name="work_apps_paused_title" msgid="3040901117349444598">"Applis professionnelles en pause"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Vous ne recevrez pas de notifications de vos applications professionnelles"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Vos applis professionnelles ne peuvent pas vous envoyer de notifications, utiliser votre batterie ni accéder à votre position"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Vos applis professionnelles sont désactivées. Elles ne peuvent pas vous envoyer de notifications, utiliser votre batterie ni accéder à votre position."</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Vous ne recevrez pas d\'appels téléphoniques, de messages ni de notifications de vos applications professionnelles"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Les applis professionnelles sont identifiées par un badge et votre administrateur informatique peut les voir"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Désactiver les applis professionnelles"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Activer les applications professionnelles"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Mettre en pause les applis professionnelles"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Réactiver"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtre"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Rechercher sur votre téléphone"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Rechercher sur votre tablette"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Échec : <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 3986aa4..ab68e22 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -28,44 +28,43 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"O atallo non está dispoñible"</string>
     <string name="home_screen" msgid="5629429142036709174">"Inicio"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Pantalla dividida"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Dividir (arriba)"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Dividir (esquerda)"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Dividir (dereita)"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Información da aplicación para %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Gardar emparellamento de aplicacións"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Mantén premido un widget para movelo."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Toca dúas veces un widget e manteno premido para movelo ou utiliza accións personalizadas."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de largo por %2$d de alto"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Mantén premido o widget para movelo pola pantalla de inicio"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Engadir á pantalla de inicio"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Mantén premido o widget para movelo pola pantalla de inicio"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Engadir á pantalla de inicio"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Engadiuse o widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g> á pantalla de inicio"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Suxestións"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}other{# widgets}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# atallo}other{# atallos}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
     <string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
-    <string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Busca Widgets"</string>
+    <string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Busca widgets"</string>
     <string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Borrar texto da caixa de busca"</string>
     <string name="no_widgets_available" msgid="4337693382501046170">"Non hai widgets nin atallos dispoñibles"</string>
     <string name="no_search_results" msgid="3787956167293097509">"Non se atoparon widgets nin atallos"</string>
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Widgets persoais"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Widgets do traballo"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Conversas"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Toma de notas"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Información útil ao teu alcance"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Se queres obter información sen abrir as aplicacións, podes engadir widgets á pantalla de inicio"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Se queres obter información sen abrir as aplicacións, podes engadir widgets á pantalla de inicio"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Toca para cambiar a configuración do widget"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Entendido"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Cambiar configuración do widget"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Buscar aplicacións"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Cargando aplicacións…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Non se atoparon aplicacións que coincidan con \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Buscar máis aplicacións"</string>
     <string name="label_application" msgid="8531721983832654978">"Aplicación"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Todas as aplicacións"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Notificacións"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Mantén premido un atallo para movelo."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Toca dúas veces un atallo e manteno premido para movelo ou utiliza accións personalizadas."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Non queda espazo nesta pantalla de inicio"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Non queda espazo nesta pantalla de inicio"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Non hai máis espazo na bandexa de favoritos"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Lista de aplicacións"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Resultados da busca"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Fixar predición"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"instalar atallos"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Permite a unha aplicación engadir atallos sen intervención do usuario."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"ler a configuración e os atallos da pantalla de inicio"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Permite a unha aplicación ler a configuración e os atallos da páxina de inicio."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"modificar a configuración e os atallos da pantalla de inicio"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Permite a unha aplicación cambiar a configuración e os atallos da pantalla de inicio."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> non ten permiso para facer chamadas telefónicas"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"ler a configuración e os atallos da pantalla de inicio"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Permite que a aplicación lea a configuración e os atallos da pantalla de inicio."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"editar a configuración e os atallos da pantalla de inicio"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Permite que a aplicación cambie a configuración e os atallos da pantalla de inicio."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Non se puido cargar o widget"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Configuración do widget"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Toca para rematar a configuración"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Esta aplicación é do sistema e non se pode desinstalar."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Edita o nome"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Desactivouse <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} ten # notificación}other{{app_name} ten # notificacións}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} ten # notificación}other{{app_name} ten # notificacións}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Páxina %1$d de %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Pantalla de inicio %1$d de %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Nova páxina da pantalla de inicio"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Cartafol: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> elementos ou máis"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Fondos de pantalla"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Estilo e fondo de pantalla"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Editar pantalla de inicio"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Axustes de Inicio"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Función desactivada polo administrador"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Permitir xirar a pantalla de inicio"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Permitir xirar a pantalla de inicio"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Ao xirar o teléfono"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Puntos de notificacións"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Activados"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Para que se mostren os puntos de notificacións, activa as notificacións da aplicación <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Cambiar configuración"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Mostra puntos de notificacións"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Engadir iconas de aplicacións á pantalla de inicio"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Opcións de programador"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Engadir iconas de aplicacións á pantalla de inicio"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Para novas aplicacións"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Descoñecido"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Quitar"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Instalando <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="PROGRESS">%2$s</xliff:g> completado"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Descargando <xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="PROGRESS">%2$s</xliff:g> completado)"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"Esperando para instalar <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"É necesario actualizar a aplicación"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"A aplicación á que corresponde esta icona non está actualizada. Podes actualizala manualmente para activar de novo este atallo, ou ben quitar a icona."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Actualizar"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Quitar"</string>
     <string name="widgets_list" msgid="796804551140113767">"Lista de widgets"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Pechouse a lista de widgets"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Engadir á pantalla de inicio"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Engadir á pantalla de inicio"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Mover elemento aquí"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Engadiuse o elemento á pantalla de inicio"</string>
     <string name="item_removed" msgid="851119963877842327">"Quitouse o elemento"</string>
     <string name="undo" msgid="4151576204245173321">"Desfacer"</string>
     <string name="action_move" msgid="4339390619886385032">"Mover elemento"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Mover á fila <xliff:g id="NUMBER_0">%1$s</xliff:g> columna <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Mover á fila <xliff:g id="NUMBER_0">%1$s</xliff:g>, columna <xliff:g id="NUMBER_1">%2$s</xliff:g> de <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Mover á posición <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Mover á posición dos favoritos <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Moveuse o elemento"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Engadiuse o elemento ao cartafol"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Crear cartafol con: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Creouse o cartafol"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Mover á pantalla de inicio"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Mover á pantalla de inicio"</string>
     <string name="action_resize" msgid="1802976324781771067">"Cambiar tamaño"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Aumentar ancho"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Aumentar altura"</string>
@@ -150,7 +154,7 @@
     <string name="widget_resized" msgid="9130327887929620">"Cambiouse o tamaño do widget polo ancho <xliff:g id="NUMBER_0">%1$s</xliff:g> e a altura <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
     <string name="action_deep_shortcut" msgid="2864038805849372848">"Atallos"</string>
     <string name="shortcuts_menu_with_notifications_description" msgid="2676582286544232849">"Atallos e notificacións"</string>
-    <string name="action_dismiss_notification" msgid="5909461085055959187">"Ignorar"</string>
+    <string name="action_dismiss_notification" msgid="5909461085055959187">"Pechar"</string>
     <string name="accessibility_close" msgid="2277148124685870734">"Pechar"</string>
     <string name="notification_dismissed" msgid="6002233469409822874">"Ignorouse a notificación"</string>
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"Persoal"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"O administrador de TI pode ver as aplicacións do traballo e engadirlles indicadores"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Entendido"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Puxéronse en pausa as aplicacións do traballo"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Non recibirás notificacións das aplicacións do traballo"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"As aplicacións do traballo non poden enviarche notificacións, utilizar a batería nin acceder á túa localización"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"As aplicacións do traballo están desactivadas e non poden enviarche notificacións, utilizar a batería nin acceder á túa localización"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Non recibirás chamadas telefónicas, mensaxes de texto nin notificacións das aplicacións do traballo"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"O administrador de TI pode ver as aplicacións do traballo e engadirlles indicadores"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Entendido"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Desactivar aplicacións do traballo"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Activar aplicacións do traballo"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Pór en pausa aplicacións do traballo"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Volver activar"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtra"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Buscar no teléfono"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Facer buscas na tableta"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Erro: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index fae3773..c3cf295 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"શૉર્ટકટ ઉપલબ્ધ નથી"</string>
     <string name="home_screen" msgid="5629429142036709174">"હોમ સ્ક્રીન"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"સ્ક્રીનને વિભાજિત કરો"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"ઉપર વિભાજિત કરો"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"ડાબે વિભાજિત કરો"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"જમણે વિભાજિત કરો"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s માટે ઍપ માહિતી"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"ઍપની જોડી સાચવો"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"વિજેટ ખસેડવા ટચ કરીને થોડી વાર દબાવી રાખો."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"વિજેટ ખસેડવા બે વાર ટૅપ કરીને દબાવી રાખો અથવા કસ્ટમ ક્રિયાઓનો ઉપયોગ કરો."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d પહોળાઈ X %2$d ઊંચાઈ"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> વિજેટ"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"વિજેટને હોમ સ્ક્રીનની આજુબાજુ ખસેડવા માટે, તેને ટચ કરીને થોડીવાર દબાવી રાખો"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"હોમ સ્ક્રીન પર ઉમેરો"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"વિજેટને હોમ સ્ક્રીનની આજુબાજુ ખસેડવા માટે, તેને ટચ કરીને થોડીવાર દબાવી રાખો"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"હોમ સ્ક્રીનમાં ઉમેરો"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"હોમ સ્ક્રીન પર <xliff:g id="WIDGET_NAME">%1$s</xliff:g> વિજેટ ઉમેર્યુ"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"સૂચનો"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# વિજેટ}one{# વિજેટ}other{# વિજેટ}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# શૉર્ટકટ}one{# શૉર્ટકટ}other{# શૉર્ટકટ}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,46 +50,45 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"વ્યક્તિગત"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ઑફિસ"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"વાતચીતો"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"નોંધ લેવી"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"ઉપયોગી માહિતી તમારી આંગળીના ટેરવે"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"ઍપને ખોલ્યા વિના માહિતી મેળવવા માટે, તમે તમારી હોમ સ્ક્રીન પર વિજેટ ઉમેરી શકો છો"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"ઍપને ખોલ્યા વિના માહિતી મેળવવા માટે, તમે તમારી હોમ સ્ક્રીનમાં વિજેટ ઉમેરી શકો છો"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"વિજેટના સેટિંગ બદલવા માટે ટૅપ કરો"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"સમજાઈ ગયું"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"વિજેટના સેટિંગ બદલો"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"શોધ ઍપ્લિકેશનો"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"ઍપ્લિકેશનો લોડ કરી રહ્યું છે…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\"થી મેળ ખાતી કોઈ ઍપ્લિકેશનો મળી નથી"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"વધુ ઍપ્લિકેશનો શોધો"</string>
     <string name="label_application" msgid="8531721983832654978">"ઍપ"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"બધી ઍપ"</string>
     <string name="notifications_header" msgid="1404149926117359025">"નોટિફિકેશન"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"શૉર્ટકટ ખસેડવા ટચ કરીને થોડી વાર દબાવી રાખો."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"શૉર્ટકટ ખસેડવા બે વાર ટૅપ કરીને દબાવી રાખો અથવા કસ્ટમ ક્રિયાઓનો ઉપયોગ કરો."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"આ હોમ સ્ક્રીન પર વધુ જગ્યા નથી"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"આ હોમ સ્ક્રીન પર વધુ જગ્યા નથી"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"મનપસંદ ટ્રે પર વધુ જગ્યા નથી"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"ઍપ્લિકેશનોની સૂચિ"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"શોધ પરિણામો"</string>
     <string name="all_apps_button_personal_label" msgid="1315764287305224468">"વ્યક્તિગત ઍપની સૂચિ"</string>
     <string name="all_apps_button_work_label" msgid="7270707118948892488">"કાર્યસ્થળની ઍપની સૂચિ"</string>
     <string name="remove_drop_target_label" msgid="7812859488053230776">"કાઢી નાખો"</string>
-    <string name="uninstall_drop_target_label" msgid="4722034217958379417">"અનઇન્સ્ટોલ કરો"</string>
+    <string name="uninstall_drop_target_label" msgid="4722034217958379417">"અનઇન્સ્ટૉલ કરો"</string>
     <string name="app_info_drop_target_label" msgid="692894985365717661">"ઍપની માહિતી"</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"ઇન્સ્ટૉલ કરો"</string>
     <string name="dismiss_prediction_label" msgid="3357562989568808658">"ઍપ સૂચવશો નહીં"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"પૂર્વાનુમાનને પિન કરો"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"શૉર્ટકટ ઇન્સ્ટૉલ કરો"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"એપ્લિકેશનને વપરાશકર્તા હસ્તક્ષેપ વગર શોર્ટકટ્સ ઉમેરવાની મંજૂરી આપે છે."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"હોમ સેટિંગ અને શૉર્ટકટ વાંચો"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"ઍપને હોમમાં સેટિંગ અને શૉર્ટકટ વાંચવાની મંજૂરી આપે છે."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"હોમ સેટિંગ અને શૉર્ટકટ લખો"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"ઍપને હોમમાં સેટિંગ અને શૉર્ટકટ બદલવાની મંજૂરી આપે છે."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> ને ફોન કૉલ્સ કરવાની મંજૂરી નથી"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"હોમ સેટિંગ અને શૉર્ટકટ વાંચો"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"ઍપને હોમમાંના સેટિંગ અને શૉર્ટકટ વાંચવાની મંજૂરી આપે છે."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"હોમ સેટિંગ અને શૉર્ટકટ લખો"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"ઍપને હોમમાંના સેટિંગ અને શૉર્ટકટમાં ફેરફાર કરવાની મંજૂરી આપે છે."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"વિજેટ લોડ કરી શકાતું નથી"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"વિજેટ સેટિંગ"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"સેટઅપ પૂર્ણ કરવા માટે ટૅપ કરો"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"આ એક સિસ્ટમ ઍપ્લિકેશન છે અને અનઇન્સ્ટોલ કરી શકાતી નથી."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"નામમાં ફેરફાર કરો"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> અક્ષમ કરી"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name}ના # નોટિફિકેશન છે}one{{app_name}ના # નોટિફિકેશન છે}other{{app_name}ના # નોટિફિકેશન છે}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name}ના # નોટિફિકેશન છે}one{{app_name}ના # નોટિફિકેશન છે}other{{app_name}ના # નોટિફિકેશન છે}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"%2$d માંથી %1$d પૃષ્ઠ"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"%2$d માંથી %1$d હોમ સ્ક્રીન"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"નવું હોમ સ્ક્રીન પૃષ્ઠ"</string>
@@ -102,10 +100,11 @@
     <string name="folder_name_format_exact" msgid="8626242716117004803">"ફોલ્ડર: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> આઇટમ"</string>
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"ફોલ્ડર: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> કે વધુ આઇટમ"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"વૉલપેપર"</string>
-    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"વૉલપેપર અને શૈલી"</string>
+    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"વૉલપેપર અને સ્ટાઇલ"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"હોમ સ્ક્રીનમાં ફેરફાર કરો"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"હોમ સેટિંગ"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"તમારા વ્યવસ્થાપક દ્વારા અક્ષમ કરેલ"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"હોમ સ્ક્રીનને ફેરવવાની મંજૂરી આપો"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"હોમ સ્ક્રીનને ફેરવવાની મંજૂરી આપો"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"જ્યારે ફોન ફેરવવામાં આવે ત્યારે"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"નોટિફિકેશન માટેના ચિહ્નો"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"ચાલુ છે"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"નોટિફિકેશન માટેનું ચિહ્ન બતાવવા હેતુ, <xliff:g id="NAME">%1$s</xliff:g> માટેની ઍપ્લિકેશન નોટિફિકેશન ચાલુ કરો"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"સેટિંગ બદલો"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"નોટિફિકેશન માટેના ચિહ્ન બતાવો"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"ઍપના આઇકન હોમ સ્ક્રીન પર ઉમેરો"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"ડેવલપરના વિકલ્પો"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"ઍપના આઇકન હોમ સ્ક્રીનમાં ઉમેરો"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"નવી ઍપ માટે"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"અજાણ્યો"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"કાઢી નાખો"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> ઇન્સ્ટૉલ કરી રહ્યાં છીએ, <xliff:g id="PROGRESS">%2$s</xliff:g> પૂર્ણ થયું"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> ડાઉનલોડ કરી રહ્યાં છે, <xliff:g id="PROGRESS">%2$s</xliff:g> પૂર્ણ"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g>, ઇન્સ્ટૉલ થવાની રાહ જોઈ રહ્યું છે"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"ઍપને અપડેટ કરવી જરૂરી છે"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"આ આઇકન માટે ઍપ અપડેટ કરવામાં આવી નથી. તમે આ શૉર્ટકટ ફરી ચાલુ કરવા અથવા આઇકન કાઢી નાખવા માટે ઍપને મેન્યુઅલી અપડેટ કરી શકો છો."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"અપડેટ કરો"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"કાઢી નાખો"</string>
     <string name="widgets_list" msgid="796804551140113767">"વિજેટની સૂચિ"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"વિજેટની સૂચિ બંધ કરવામાં આવી છે"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"હોમ સ્ક્રીન પર ઉમેરો"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"હોમ સ્ક્રીનમાં ઉમેરો"</string>
     <string name="action_move_here" msgid="2170188780612570250">"આઇટમ અહીં ખસેડો"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"હોમ સ્ક્રીનમાં આઇટમ ઉમેરી"</string>
-    <string name="item_removed" msgid="851119963877842327">"આઇટમ દૂર કરી"</string>
+    <string name="item_removed" msgid="851119963877842327">"આઇટમ કાઢી નાખી"</string>
     <string name="undo" msgid="4151576204245173321">"રદ કરો"</string>
     <string name="action_move" msgid="4339390619886385032">"આઇટમ ખસેડો"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"<xliff:g id="NUMBER_0">%1$s</xliff:g> પંક્તિ <xliff:g id="NUMBER_1">%2$s</xliff:g> કૉલમ પર ખસેડો"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g>માં પંક્તિ <xliff:g id="NUMBER_0">%1$s</xliff:g> કૉલમ <xliff:g id="NUMBER_1">%2$s</xliff:g> પર આ આઇટમને ખસેડો"</string>
     <string name="move_to_position" msgid="6750008980455459790">"<xliff:g id="NUMBER">%1$s</xliff:g> સ્થિતિ પર ખસેડો"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"મનપસંદ સ્થિતિ <xliff:g id="NUMBER">%1$s</xliff:g> પર ખસેડો"</string>
     <string name="item_moved" msgid="4606538322571412879">"આઇટમ ખસેડી"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"ફોલ્ડરમાં આઇટમ ઉમેરી"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"આની સાથે ફોલ્ડર બનાવો: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"ફોલ્ડર બનાવ્યું"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"હોમ સ્ક્રીન પર ખસેડો"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"હોમ સ્ક્રીન પર ખસેડો"</string>
     <string name="action_resize" msgid="1802976324781771067">"આકાર બદલો"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"પહોળાઈ વધારો"</string>
     <string name="action_increase_height" msgid="459390020612501122">"ઊંચાઈ વધારો"</string>
@@ -153,18 +157,21 @@
     <string name="action_dismiss_notification" msgid="5909461085055959187">"છોડી દો"</string>
     <string name="accessibility_close" msgid="2277148124685870734">"બંધ કરો"</string>
     <string name="notification_dismissed" msgid="6002233469409822874">"સૂચના છોડી દીધી"</string>
-    <string name="all_apps_personal_tab" msgid="4190252696685155002">"મનગમતી ઍપ"</string>
+    <string name="all_apps_personal_tab" msgid="4190252696685155002">"વ્યક્તિગત ઍપ"</string>
     <string name="all_apps_work_tab" msgid="4884822796154055118">"ઑફિસની ઍપ"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"ઑફિસની પ્રોફાઇલ"</string>
-    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"ઑફિસની ઍપને બૅજ આપેલા હોય છે અને તમારા IT વ્યવસ્થાપક તેમને જોઈ શકે છે"</string>
+    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"ઑફિસની ઍપને બૅજ આપેલા હોય છે અને તમારા IT ઍડમિન તેમને જોઈ શકે છે"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"સમજાઈ ગયું"</string>
-    <string name="work_apps_paused_title" msgid="3040901117349444598">"ઑફિસ માટેની ઍપ થોભાવવામાં આવેલ છે"</string>
+    <string name="work_apps_paused_title" msgid="3040901117349444598">"ઑફિસ માટેની ઍપ થોભાવવામાં આવી છે"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"તમને તમારી ઑફિસ માટેની ઍપ તરફથી નોટિફિકેશન મળશે નહીં"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"ઑફિસ માટેની તમારી ઍપ તમને નોટિફિકેશન મોકલી શકતી નથી, તમારી બૅટરી વાપરી શકતી નથી કે તમારું સ્થાન ઍક્સેસ કરી શકતી નથી"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"ઑફિસ માટેની ઍપ બંધ છે. ઑફિસ માટેની તમારી ઍપ તમને નોટિફિકેશન મોકલી શકતી નથી, તમારી બૅટરી વાપરી શકતી નથી કે તમારું સ્થાન ઍક્સેસ કરી શકતી નથી"</string>
-    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"ઑફિસની ઍપને બૅજ આપેલા હોય છે અને તમારા IT વ્યવસ્થાપક તેમને જોઈ શકે છે"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"તમને તમારી ઑફિસ માટેની ઍપ તરફથી ફોન કૉલ, ટેક્સ્ટ મેસેજ કે નોટિફિકેશન મળશે નહીં"</string>
+    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"ઑફિસની ઍપને બૅજ આપેલા હોય છે અને તમારા IT ઍડમિન તેમને જોઈ શકે છે"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"સમજાઈ ગયું"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"ઑફિસ માટેની ઍપ બંધ કરો"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"ઑફિસ માટેની ઍપ ચાલુ કરો"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"ઑફિસની ઍપ થોભાવો"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"ફરી ચાલુ કરો"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"ફિલ્ટર કરો"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"તમારો ફોન શોધો"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"તમારું ટૅબ્લેટ શોધો"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"નિષ્ફળ: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 6290cd1..9f74bfc 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"शॉर्टकट उपलब्ध नहीं है"</string>
     <string name="home_screen" msgid="5629429142036709174">"होम स्क्रीन"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"स्प्लिट स्क्रीन"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"स्क्रीन को ऊपर के हिस्से में स्प्लिट करें"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"स्क्रीन को बाएं हिस्से में स्प्लिट करें"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"स्क्रीन को दाएं हिस्से में स्प्लिट करें"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s के लिए ऐप्लिकेशन की जानकारी"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"साथ में इस्तेमाल किए जा सकने वाले ऐप्लिकेशन की जानकारी सेव करें"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"किसी विजेट को एक से दूसरी जगह ले जाने के लिए, उसे दबाकर रखें."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"किसी विजेट को एक से दूसरी जगह ले जाने के लिए, उस पर दो बार टैप करके दबाकर रखें या पसंद के मुताबिक कार्रवाइयां इस्तेमाल करें."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d चौड़ाई गुणा %2$d ऊंचाई"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> विजेट"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"होम स्क्रीन पर यहां-वहां ले जाने के लिए विजेट को दबाकर रखें"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"होम स्क्रीन पर जोड़ें"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"होम स्क्रीन पर इधर-उधर ले जाने के लिए, विजेट को दबाकर रखें"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"होम स्क्रीन पर जोड़ें"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> विजेट को होम स्क्रीन पर जोड़ा गया"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"सुझाव"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# विजेट}one{# विजेट}other{# विजेट}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# शॉर्टकट}one{# शॉर्टकट}other{# शॉर्टकट}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"निजी विजेट"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ऑफ़िस"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"बातचीत"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"नोट बनाने से जुड़े विजेट"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"काम की जानकारी आसानी से पाएं"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"ऐप्लिकेशन को खोले बिना उनकी जानकारी पाने के लिए, आप होम स्क्रीन पर विजेट जोड़ सकते हैं"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"ऐप्लिकेशन को खोले बिना उनकी जानकारी पाने के लिए, होम स्क्रीन पर विजेट जोड़े जा सकते हैं"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"विजेट की सेटिंग में बदलाव करने के लिए टैप करें"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"ठीक है"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"विजेट की सेटिंग में बदलाव करें"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"ऐप सर्च करें"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"ऐप्लिकेशन लोड हो रहे हैं…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" से मिलता-जुलता कोई ऐप्लिकेशन नहीं मिला"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"और ऐप सर्च करें"</string>
     <string name="label_application" msgid="8531721983832654978">"ऐप्लिकेशन"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"सभी ऐप्लिकेशन"</string>
     <string name="notifications_header" msgid="1404149926117359025">"सूचनाएं"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"किसी शॉर्टकट को एक से दूसरी जगह ले जाने के लिए, उसे दबाकर रखें."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"किसी शॉर्टकट को एक से दूसरी जगह ले जाने के लिए, उस पर दो बार टैप करके दबाकर रखें या पसंद के मुताबिक कार्रवाइयां इस्तेमाल करें."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"इस होम स्क्रीन पर जगह खाली नहीं है"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"इस होम स्क्रीन पर जगह खाली नहीं है"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"पसंदीदा ट्रे में और जगह नहीं है"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"ऐप्लिकेशन सूची"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"खोज के नतीजे"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"सुझाए गए ऐप्लिकेशन को पिन करें"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"शॉर्टकट इंस्‍टॉल करें"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"ऐप को उपयोगकर्ता के हस्‍तक्षेप के बिना शॉर्टकट जोड़ने देती है."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"होम पेज की सेटिंग और शॉर्टकट पढ़ें"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"ऐप्लिकेशन को होम पेज में सेटिंग और शॉर्टकट पढ़ने देती है."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"होम पेज की सेटिंग और शॉर्टकट लिखें"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"ऐप्लिकेशन को होम पेज में सेटिंग और शॉर्टकट बदलने देती है."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> को फ़ोन कॉल करने की अनुमति नहीं है"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"होम स्क्रीन की सेटिंग और शॉर्टकट पढ़ने की अनुमति"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"इससे ऐप्लिकेशन, होम स्क्रीन की सेटिंग और शॉर्टकट पढ़ पाएगा."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"होम स्क्रीन की सेटिंग और शॉर्टकट में बदलाव करने की अनुमति"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"इससे ऐप्लिकेशन, होम स्क्रीन की सेटिंग और शॉर्टकट बदल पाएगा."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"विजेट को लोड नहीं किया जा सका"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"विजेट की सेटिंग"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"सेट अप पूरा करने के लिए टैप करें"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"यह एक सिस्टम ऐप्लिकेशन है और इसे अनइंस्टॉल नहीं किया जा सकता."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"नाम में बदलाव करें"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> अक्षम है"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} से जुड़ी # सूचना है}one{{app_name} से जुड़ी # सूचना है}other{{app_name} से जुड़ी # सूचनाएं हैं}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} से जुड़ी # सूचना है}one{{app_name} से जुड़ी # सूचना है}other{{app_name} से जुड़ी # सूचनाएं हैं}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"पेज %2$d में से %1$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"होम स्क्रीन %2$d में से %1$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"नया होम स्‍क्रीन पेज"</string>
@@ -103,18 +101,20 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"फ़ोल्डर: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> या इससे ज़्यादा आइटम"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"वॉलपेपर"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"वॉलपेपर और स्टाइल"</string>
-    <string name="settings_button_text" msgid="8873672322605444408">"होम पेज की सेटिंग"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"होम स्क्रीन में बदलाव करें"</string>
+    <string name="settings_button_text" msgid="8873672322605444408">"होम स्क्रीन की सेटिंग"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"आपके एडमिन ने बंद किया हुआ है"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"होमस्क्रीन घुमाने की अनुमति दें"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"होम स्क्रीन घुमाने की अनुमति दें"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"फ़ोन घुुमाए जाने पर"</string>
-    <string name="notification_dots_title" msgid="9062440428204120317">"नई सूचनाएं बताने वाला गोल निशान"</string>
-    <string name="notification_dots_desc_on" msgid="1679848116452218908">"चालू"</string>
+    <string name="notification_dots_title" msgid="9062440428204120317">"सूचनाएं बताने वाला डॉट"</string>
+    <string name="notification_dots_desc_on" msgid="1679848116452218908">"चालू है"</string>
     <string name="notification_dots_desc_off" msgid="1760796511504341095">"चालू"</string>
     <string name="title_missing_notification_access" msgid="7503287056163941064">"सूचना के ऐक्सेस की ज़रूरत है"</string>
     <string name="msg_missing_notification_access" msgid="281113995110910548">"सूचना बिंदु दिखाने के लिए, <xliff:g id="NAME">%1$s</xliff:g> के ऐप्लिकेशन सूचना चालू करें"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"सेटिंग बदलें"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"नई सूचनाएं बताने वाला गोल निशान दिखाएं"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"होम स्क्रीन पर ऐप्लिकेशन के आइकॉन जोड़ें"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"डेवलपर के लिए सेटिंग और टूल"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"होम स्क्रीन पर ऐप्लिकेशन के आइकॉन जोड़ें"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"नए ऐप्लिकेशन के लिए"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"अज्ञात"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"निकालें"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> इंस्टॉल किया जा रहा है, <xliff:g id="PROGRESS">%2$s</xliff:g> पूरा हो गया"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> डाउनलोड हो रहा है, <xliff:g id="PROGRESS">%2$s</xliff:g> पूरी हुई"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> के इंस्टॉल होने की प्रतीक्षा की जा रही है"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"ऐप्लिकेशन को अपडेट करना ज़रूरी है"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"इस आइकॉन का ऐप्लिकेशन अपडेट नहीं है. इस शॉर्टकट को फिर से चालू करने या आइकॉन को हटाने के लिए, ऐप्लिकेशन को मैन्युअल रूप से अपडेट किया जा सकता है."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"अपडेट करें"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"हटाएं"</string>
     <string name="widgets_list" msgid="796804551140113767">"विजेट की सूची"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"विजेट की सूची बंद हो गई है"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"होम स्‍क्रीन में जोड़ें"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"होम स्क्रीन पर जोड़ें"</string>
     <string name="action_move_here" msgid="2170188780612570250">"आइटम यहां ले जाएं"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"होम स्क्रीन में आइटम जोड़ा गया"</string>
     <string name="item_removed" msgid="851119963877842327">"आइटम हटाया गया"</string>
     <string name="undo" msgid="4151576204245173321">"पहले जैसा करें"</string>
     <string name="action_move" msgid="4339390619886385032">"आइटम ले जाएं"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"पंक्ति <xliff:g id="NUMBER_0">%1$s</xliff:g> स्तंभ <xliff:g id="NUMBER_1">%2$s</xliff:g> पर ले जाएं"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g> में, पंक्ति <xliff:g id="NUMBER_0">%1$s</xliff:g> कॉलम <xliff:g id="NUMBER_1">%2$s</xliff:g> पर जाएं"</string>
     <string name="move_to_position" msgid="6750008980455459790">"<xliff:g id="NUMBER">%1$s</xliff:g> स्थिति पर ले जाएं"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"<xliff:g id="NUMBER">%1$s</xliff:g> की पसंदीदा स्थिति पर ले जाएं"</string>
     <string name="item_moved" msgid="4606538322571412879">"आइटम ले जाया गया"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"आइटम फ़ोल्डर में जोड़ा गया"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"इसके साथ फ़ोल्डर बनाएं: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"फ़ोल्डर बनाया गया"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"होम स्क्रीन पर ले जाएं"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"होम स्क्रीन पर ले जाएं"</string>
     <string name="action_resize" msgid="1802976324781771067">"आकार बदलें"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"चौड़ाई बढ़ाएं"</string>
     <string name="action_increase_height" msgid="459390020612501122">"ऊंचाई बढ़ाएं"</string>
@@ -153,18 +157,21 @@
     <string name="action_dismiss_notification" msgid="5909461085055959187">"खारिज करें"</string>
     <string name="accessibility_close" msgid="2277148124685870734">"बंद करें"</string>
     <string name="notification_dismissed" msgid="6002233469409822874">"सूचना को खारिज किया गया"</string>
-    <string name="all_apps_personal_tab" msgid="4190252696685155002">"निजी ऐप"</string>
-    <string name="all_apps_work_tab" msgid="4884822796154055118">"काम से जुड़े ऐप"</string>
+    <string name="all_apps_personal_tab" msgid="4190252696685155002">"निजी ऐप्लिकेशन"</string>
+    <string name="all_apps_work_tab" msgid="4884822796154055118">"वर्क ऐप्लिकेशन"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"वर्क प्रोफ़ाइल"</string>
-    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"ऑफ़िस के काम से जुड़े ऐप्लिकेशन बैज किए गए हैं और आईटी एडमिन को दिख रहे हैं"</string>
+    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"वर्क ऐप्लिकेशन बैज किए गए हैं. आईटी एडमिन इन्हें देख सकता है"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"ठीक है"</string>
-    <string name="work_apps_paused_title" msgid="3040901117349444598">"ऑफ़िस के काम से जुड़े ऐप्लिकेशन रोके गए"</string>
-    <string name="work_apps_paused_body" msgid="261634750995824906">"ऑफ़िस के काम से जुड़े आपके ऐप्लिकेशन, आपको सूचनाएं नहीं भेज सकते. साथ ही, आपकी बैटरी का इस्तेमाल या आपकी जगह की जानकारी को ऐक्सेस भी नहीं कर सकते"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"ऑफ़िस के काम से जुड़े ऐप्लिकेशन बंद हैं. ये ऐप्लिकेशन, आपको सूचनाएं नहीं भेज सकते. साथ ही, आपकी बैटरी का इस्तेमाल या आपकी जगह की जानकारी को ऐक्सेस भी नहीं कर सकते"</string>
+    <string name="work_apps_paused_title" msgid="3040901117349444598">"वर्क ऐप्लिकेशन रोके गए"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"आपको वर्क ऐप्लिकेशन से सूचनाएं नहीं मिलेंगी"</string>
+    <string name="work_apps_paused_body" msgid="261634750995824906">"आपके वर्क ऐप्लिकेशन, आपको सूचनाएं नहीं भेज सकते. साथ ही, आपकी बैटरी का इस्तेमाल या आपकी जगह की जानकारी को ऐक्सेस भी नहीं कर सकते"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"आपको वर्क ऐप्लिकेशन से फ़ोन कॉल, टेक्स्ट मैसेज या सूचनाएं नहीं मिलेंगी"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"ऑफ़िस के काम से जुड़े ऐप्लिकेशन बैज किए गए हैं और आईटी एडमिन को दिख रहे हैं"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"ठीक है"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"ऑफ़िस के काम से जुड़े ऐप्लिकेशन बंद करें"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"ऑफ़िस के काम से जुड़े ऐप्लिकेशन चालू करें"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"वर्क ऐप्लिकेशन रोकें"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"चालू करें"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"फ़िल्टर"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"अपने फ़ोन में खोजें"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"अपने टैबलेट में खोजें"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"पूरा नहीं हुआ: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 75e47a1..3e52b18 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Prečac nije dostupan"</string>
     <string name="home_screen" msgid="5629429142036709174">"Početni zaslon"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Podijeljeni zaslon"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Podijeli gore"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Podijeli lijevo"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Podijeli desno"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Informacije o aplikaciji %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Spremi par aplikacija"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Dodirnite i zadržite da biste premjestili widget."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dvaput dodirnite i zadržite pritisak da biste premjestili widget ili upotrijebite prilagođene radnje"</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d širine i %2$d visine"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Dodirnite i zadržite widget da biste ga pomicali po početnom zaslonu"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Dodaj na početni zaslon"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Dodirnite i zadržite widget da biste ga pomicali po početnom zaslonu"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Dodaj na početni zaslon"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g> dodan je na početni zaslon"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Prijedlozi"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}one{# widget}few{# widgeta}other{# widgeta}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# prečac}one{# prečac}few{# prečaca}other{# prečaca}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Osobni"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Posao"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Razgovori"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Pisanje bilježaka"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Korisne informacije nadohvat ruke"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Da biste dobili informacije bez otvaranja aplikacija, možete dodati widgete na početni zaslon"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Da biste dobili informacije bez otvaranja aplikacija, možete dodati widgete na početni zaslon"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Dodirnite da biste promijenili postavke widgeta"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Shvaćam"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Promijenite postavke widgeta"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Pretraži aplikacije"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Učitavanje aplikacija…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Nema aplikacija podudarnih s upitom \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Traži više aplikacija"</string>
     <string name="label_application" msgid="8531721983832654978">"Aplikacija"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Sve aplikacije"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Obavijesti"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Dodirnite i zadržite da biste premjestili prečac."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dvaput dodirnite i zadržite pritisak da biste premjestili prečac ili upotrijebite prilagođene radnje."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Na ovom početnom zaslonu više nema mjesta"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Na ovom početnom zaslonu više nema mjesta."</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Nema više prostora na traci Favoriti"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Popis aplikacija"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Rezultati pretraživanja"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Prikvači predviđenu apl."</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"instaliranje prečaca"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Aplikaciji omogućuje dodavanje prečaca bez intervencije korisnika."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"čitanje postavki početnog zaslona i prečaca"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Aplikaciji omogućuje čitanje postavki i prečaca na početnom zaslonu."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"pisanje postavki početnog zaslona i prečaca"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Aplikaciji omogućuje promjenu postavki i prečaca na početnom zaslonu."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> nema dopuštenje za telefonske pozive"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"čitati postavke i prečace početnog zaslona"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Aplikaciji omogućuje čitanje postavki i prečaca na početnom zaslonu."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"pisati postavke i prečace početnog zaslona"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Aplikaciji omogućuje promjenu postavki i prečaca na početnom zaslonu."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Widget se ne može učitati"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Postavke widgeta"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Dodirnite da biste dovršili postavljanje"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Ovo je aplikacija sustava i ne može se ukloniti."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Uređivanje naziva"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> onemogućena"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{Aplikacija {app_name} ima # obavijest}one{Aplikacija {app_name} ima # obavijest}few{Aplikacija {app_name} ima # obavijesti}other{Aplikacija {app_name} ima # obavijesti}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{Aplikacija {app_name} ima # obavijest}one{Aplikacija {app_name} ima # obavijest}few{Aplikacija {app_name} ima # obavijesti}other{Aplikacija {app_name} ima # obavijesti}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Stranica %1$d od %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Početni zaslon %1$d od %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Nova stranica početnog zaslona"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Mapa: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> ili više stavki"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Pozadine"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Pozadina i stil"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Uredi početni zaslon"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Postavke početnog zaslona"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Onemogućio administrator"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Dopusti zakretanje početnog zaslona"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Dopusti zakretanje početnog zaslona"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Kada se telefon zakrene"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Točke obavijesti"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Uključeno"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Za prikaz točaka obavijesti uključite obavijesti aplikacije <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Promjena postavki"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Prikaži točke obavijesti"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Dodaj ikone aplikacija na početni zaslon"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Opcije za razvojne programere"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Dodaj ikone aplikacija na početni zaslon"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Za nove aplikacije"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Nepoznato"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Ukloni"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Instaliranje aplikacije <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="PROGRESS">%2$s</xliff:g> dovršeno"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Preuzimanje aplikacije <xliff:g id="NAME">%1$s</xliff:g>, dovršeno <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"Čekanje na instaliranje aplikacije <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Aplikacija se treba ažurirati"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Aplikacija ove ikone nije ažurirana. Možete ručno ažurirati da biste ponovo omogućili ovaj prečac ili uklonite ikonu."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Ažuriraj"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Ukloni"</string>
     <string name="widgets_list" msgid="796804551140113767">"Popis widgeta"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Popis widgeta zatvoren"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Dodavanje na početni zaslon"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Dodajte na početni zaslon"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Premjesti stavku ovdje"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Stavka je dodana na početni zaslon"</string>
     <string name="item_removed" msgid="851119963877842327">"Stavka je uklonjena"</string>
     <string name="undo" msgid="4151576204245173321">"Poništi"</string>
     <string name="action_move" msgid="4339390619886385032">"Premještanje stavke"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Premještanje u redak <xliff:g id="NUMBER_0">%1$s</xliff:g>, stupac <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Premjesti u redak <xliff:g id="NUMBER_0">%1$s</xliff:g> stupac <xliff:g id="NUMBER_1">%2$s</xliff:g> na <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Premještanje na položaj <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Premještanje na položaj favorita <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Stavka premještena"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Stavka dodana u mapu"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Izrada mape pomoću stavke: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Mapa izrađena"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Premještanje na početni zaslon"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Premjestite na početni zaslon"</string>
     <string name="action_resize" msgid="1802976324781771067">"Promjena veličine"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Povećanje širine"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Povećanje visine"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Poslovne su aplikacije označene i vidljive vašem IT administratoru"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Shvaćam"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Poslovne aplikacije su pauzirane"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Nećete primati obavijesti poslovnih aplikacija"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Poslovne aplikacije ne mogu vam slati obavijesti, trošiti bateriju ili pristupati vašoj lokaciji"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Poslovne aplikacije su isključene. Ne mogu vam slati obavijesti, trošiti bateriju ili pristupati vašoj lokaciji"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Nećete primati telefonske pozive, tekstne poruke niti obavijesti poslovnih aplikacija"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Poslovne su aplikacije označene i vidljive vašem IT administratoru"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Shvaćam"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Isključite poslovne aplikacije"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Uključite poslovne aplikacije"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Pauziraj poslovne aplikacije"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Ponovno pokreni"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtrirajte"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Pretraživanje telefona"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Pretraživanje tableta"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Nije uspjelo: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 71a8d69..979539d 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"A gyorsparancs nem áll rendelkezésre"</string>
     <string name="home_screen" msgid="5629429142036709174">"Kezdőképernyő"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Osztott képernyő"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Osztás a képernyő tetején"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Osztás a képernyő bal oldalán"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Osztás a képernyő jobb oldalán"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Alkalmazásinformáció a következőhöz: %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Alkalmazáspár mentése"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Tartsa lenyomva a modult az áthelyezéshez."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Modul áthelyezéséhez koppintson duplán, tartsa nyomva az ujját, vagy használjon egyéni műveleteket."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d széles és %2$d magas"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> modul"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Tartsa lenyomva a modult a kezdőképernyőn való mozgatáshoz"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Hozzáadás a kezdőképernyőhöz"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Tartsa lenyomva a modult a kezdőképernyőn való mozgatáshoz"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Hozzáadás a kezdőképernyőhöz"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> modul hozzáadva a kezdőképernyőhöz"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Javaslatok"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# modul}other{# modul}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# gyorsparancs}other{# gyorsparancs}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Személyes"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Munka"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Beszélgetések"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Jegyzetelés"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Hasznos információk egy koppintásnyira"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Ha az alkalmazások megnyitása nélkül szeretne információhoz jutni, felvehet modulokat a kezdőképernyőre."</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Ha az alkalmazások megnyitása nélkül szeretne információhoz jutni, felvehet modulokat a kezdőképernyőre"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Ide koppintva módosíthatja a modulbeállításokat"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Értem"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"A modulbeállítások módosítása"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Alkalmazások keresése"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Alkalmazások betöltése…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Nem található alkalmazás a(z) „<xliff:g id="QUERY">%1$s</xliff:g>” lekérdezésre"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"További alkalmazások keresése"</string>
     <string name="label_application" msgid="8531721983832654978">"Alkalmazás"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Összes alkalmazás"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Értesítések"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Tartsa lenyomva a parancsikont az áthelyezéshez."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Parancsikon áthelyezéséhez koppintson duplán, és tartsa nyomva az ujját, vagy használjon egyéni műveleteket."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Nincs több hely ezen a kezdőképernyőn"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Nincs több hely ezen a kezdőképernyőn"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Nincs több hely a Kedvencek tálcán"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Alkalmazások listája"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Keresési találatok"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Várható kitűzése"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"parancsikonok telepítése"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Lehetővé teszi egy alkalmazás számára, hogy felhasználói beavatkozás nélkül adjon hozzá parancsikonokat."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"Főoldal beállításainak és parancsikonjainak beolvasása"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Lehetővé teszi az alkalmazás számára, hogy beolvassa a kezdőképernyő beállításait és parancsikonjait."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"Főoldal beállításainak és parancsikonjainak írása"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Lehetővé teszi az alkalmazás számára, hogy módosítsa a kezdőképernyő beállításait és parancsikonjait."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> nem kezdeményezhet telefonhívásokat"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"kezdőképernyő beállításainak és parancsikonjainak olvasása"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Lehetővé teszi az alkalmazás számára a kezdőképernyő beállításainak és parancsikonjainak olvasását."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"kezdőképernyő beállításainak és parancsikonjainak írása"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Lehetővé teszi az alkalmazás számára a kezdőképernyő beállításainak és parancsikonjainak módosítását."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Nem tölthető le a modul"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Modulbeállítások"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Koppintson a beállítás befejezéséhez"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Ez egy rendszeralkalmazás, és nem lehet eltávolítani."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Név módosítása"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> letiltva"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{A(z) {app_name} # értesítéssel rendelkezik}other{A(z) {app_name} # értesítéssel rendelkezik}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{A(z) {app_name} alkalmazásnak # értesítése van}other{A(z) {app_name} alkalmazásnak # értesítése van}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"%2$d/%1$d. oldal"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"%2$d/%1$d. kezdőképernyő"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Új kezdőképernyő oldal"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Mappa: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> vagy több elem"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Háttérképek"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Háttérkép és stílus"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Kezdőképernyő szerkesztése"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Kezdőképernyő beállításai"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"A rendszergazda letiltotta"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"A kezdőképernyő elforgatásának engedélyezése"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"A kezdőképernyő elforgatásának engedélyezése"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"A telefon elforgatásakor"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Értesítési pöttyök"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Be"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Az értesítési pöttyök megjelenítéséhez kapcsolja be a(z) <xliff:g id="NAME">%1$s</xliff:g> alkalmazás értesítéseit"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Beállítások módosítása"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Értesítési pöttyök megjelenítése"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Appikonok hozzáadása a kezdőképernyőhöz"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Fejlesztői beállítások"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Alkalmazásikonok hozzáadása a kezdőképernyőhöz"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Új alkalmazásoknál"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Ismeretlen"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Törlés"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Folyamatban van a(z) <xliff:g id="NAME">%1$s</xliff:g> telepítése, <xliff:g id="PROGRESS">%2$s</xliff:g> kész"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"A(z) <xliff:g id="NAME">%1$s</xliff:g> letöltése, <xliff:g id="PROGRESS">%2$s</xliff:g> kész"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"A(z) <xliff:g id="NAME">%1$s</xliff:g> telepítésre vár"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Alkalmazásfrissítés szükséges"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Az ikonhoz tartozó alkalmazás nincs frissítve. A parancsikon újbóli engedélyezéséhez frissítse az alkalmazást, vagy távolítsa ez az ikont."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Frissítés"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Eltávolítás"</string>
     <string name="widgets_list" msgid="796804551140113767">"Widgetlista"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Widgetlista bezárva"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Hozzáadás a kezdőképernyőhöz"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Hozzáadás a kezdőképernyőhöz"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Elem áthelyezése ide"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Elem hozzáadva a kezdőképernyőhöz"</string>
     <string name="item_removed" msgid="851119963877842327">"Elem eltávolítva"</string>
     <string name="undo" msgid="4151576204245173321">"Mégse"</string>
     <string name="action_move" msgid="4339390619886385032">"Elem mozgatása"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Áthelyezés ide: <xliff:g id="NUMBER_0">%1$s</xliff:g>. sor, <xliff:g id="NUMBER_1">%2$s</xliff:g>. oszlop"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Áthelyezés a(z) <xliff:g id="NUMBER_0">%1$s</xliff:g>. sorba és a(z) <xliff:g id="NUMBER_1">%2$s</xliff:g>. oszlopba itt: <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Áthelyezés a(z) <xliff:g id="NUMBER">%1$s</xliff:g>. pozícióba"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Áthelyezés a kedvencek <xliff:g id="NUMBER">%1$s</xliff:g>. pozíciójába"</string>
     <string name="item_moved" msgid="4606538322571412879">"Elem áthelyezve"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Elem hozzáadva a mappához"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Mappa létrehozása a következővel: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Mappa létrehozva"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Áthelyezés a kezdőképernyőre"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Áthelyezés a kezdőképernyőre"</string>
     <string name="action_resize" msgid="1802976324781771067">"Átméretezés"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Szélesség növelése"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Magasság növelése"</string>
@@ -156,15 +160,18 @@
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"Személyes"</string>
     <string name="all_apps_work_tab" msgid="4884822796154055118">"Munkahelyi"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"Munkaprofil"</string>
-    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"A munkahelyi alkalmazások jelvénnyel vannak megjelölve, és láthatók a rendszergazda számára"</string>
+    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"A munkahelyi alkalmazások jelvénnyel vannak megjelölve, és ezeket láthatja a rendszergazda"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Értem"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"A munkahelyi alkalmazások szüneteltetve vannak"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"A munkahelyi alkalmazásoktól nem kap értesítést."</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"A munkahelyi alkalmazások nem küldhetnek Önnek értesítéseket, nem használhatják az akkumulátorát, és nem férhetnek hozzá a tartózkodási helyéhez."</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"A munkahelyi alkalmazások nem küldhetnek Önnek értesítéseket, nem használhatják az akkumulátorát, és nem férhetnek hozzá a tartózkodási helyéhez"</string>
-    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"A munkahelyi alkalmazások jelvénnyel vannak megjelölve, és láthatók a rendszergazda számára"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"A munkahelyi alkalmazásoktól nem kap telefonhívásokat, szöveges üzeneteket vagy értesítéseket."</string>
+    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"A munkahelyi alkalmazások jelvénnyel vannak megjelölve, és ezeket láthatja a rendszergazda"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Értem"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Kapcsolja ki a munkahelyi alkalmazásokat"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Munkahelyi alkalmazások bekapcsolása"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Munkahelyi alkalmazások szüneteltetése"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Folytatás"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Szűrő"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Keresés a telefonon"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Keresés a táblagépen"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Sikertelen: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 3d65a3e..442f4f6 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Դյուրանցումն անհասանելի է"</string>
     <string name="home_screen" msgid="5629429142036709174">"Հիմնական էկրան"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Տրոհել էկրանը"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Հավելվածը վերևում"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Հավելվածը ձախ կողմում"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Հավելվածը աջ կողմում"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Տեղեկություններ %1$s հավելվածի մասին"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Պահել հավելվածների զույգը"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Հպեք և պահեք՝ վիջեթ տեղափոխելու համար։"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Կրկնակի հպեք և պահեք՝ վիջեթ տեղափոխելու համար, կամ օգտվեք հատուկ գործողություններից։"</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"Լայնությունը՝ %1$d, բարձրությունը՝ %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> վիջեթ"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Հպեք վիջեթին և պահեք տեղափոխելու համար"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Ավելացնել հիմնական էկրանին"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Հպեք վիջեթին և պահեք՝ հիմնական էկրան տեղափոխելու համար"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Ավելացնել հիմնական էկրանին"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> վիջեթն ավելացվել է հիմնական էկրանին"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Առաջարկներ"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# վիջեթ}one{# վիջեթ}other{# վիջեթ}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# դյուրանցում}one{# դյուրանցում}other{# դյուրանցում}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Անձնական"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Աշխատանքային"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Զրույցներ"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Նշումների ստեղծում"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Բոլոր կարևոր տեղեկությունները՝ ձեռքի տակ"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Առանց հավելվածները բացելու տեղեկություններ ստանալու համար ձեր հիմնական էկրանին ավելացրեք վիջեթներ։"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Ավելացրեք վիջեթներ ձեր հիմնական էկրանին, որպեսզի տեղեկություններ ստանաք՝ առանց հավելվածները բացելու։"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Հպեք՝ վիջեթի կարգավորումները փոփոխելու համար"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Եղավ"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Փոխել վիջեթի կարգավորումները"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Որոնել հավելվածներ"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Հավելվածների բեռնում…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"«<xliff:g id="QUERY">%1$s</xliff:g>» հարցմանը համապատասխանող հավելվածներ չեն գտնվել"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Որոնել այլ հավելվածներ"</string>
     <string name="label_application" msgid="8531721983832654978">"Հավելված"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Բոլոր հավելվածները"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Ծանուցումներ"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Հպեք և պահեք՝ դյուրանցում տեղափոխելու համար։"</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Կրկնակի հպեք և պահեք՝ դյուրանցում տեղափոխելու համար, կամ օգտվեք հատուկ գործողություններից։"</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Հիմնական էկրանին ազատ տեղ չկա"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Հիմնական էկրանին ազատ տեղ չկա"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Ընտրյալների ցուցակում այլևս ազատ տեղ չկա"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Հավելվածների ցանկ"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Որոնման արդյունքներ"</string>
@@ -75,22 +74,21 @@
     <string name="uninstall_drop_target_label" msgid="4722034217958379417">"Ապատեղադրել"</string>
     <string name="app_info_drop_target_label" msgid="692894985365717661">"Հավելվածի մասին"</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"Տեղադրել"</string>
-    <string name="dismiss_prediction_label" msgid="3357562989568808658">"Թաքցնել առաջարկը"</string>
+    <string name="dismiss_prediction_label" msgid="3357562989568808658">"Չառաջարկել"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"Ամրացնել առաջարկվող հավելվածը"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"Դյուրանցումների տեղադրում"</string>
-    <string name="permdesc_install_shortcut" msgid="923466509822011139">"Ծրագրին թույլ է տալիս ավելացնել դյուրանցումներ՝ առանց օգտագործողի միջամտության:"</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"կարդալ հիմնաէջի կարգավորումներն ու դյուրանցումները"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Ծրագրին թույլ է տալիս կարդալ հիմնաէջի կարգավորումներն ու դյուրանցումները:"</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"ստեղծել հիմնաէջի կարգավորումներ ու դյուրանցումներ"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Ծրագրին թույլ է տալիս փոփոխել հիմնաէջի կարգավորումներն ու դյուրանցումները:"</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածին չի թույլատրվում հեռախոսազանգեր կատարել"</string>
+    <string name="permdesc_install_shortcut" msgid="923466509822011139">"Հավելվածին թույլ է տալիս ավելացնել դյուրանցումներ՝ առանց օգտագործողի միջամտության:"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"կարդալ հիմնական էկրանի կարգավորումներն ու դյուրանցումները"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Հավելվածին թույլ է տալիս կարդալ հիմնական էկրանի կարգավորումներն ու դյուրանցումները։"</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"փոփոխել հիմնական էկրանի կարգավորումներն ու դյուրանցումները"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Հավելվածին թույլ է տալիս փոփոխել հիմնական էկրանի կարգավորումներն ու դյուրանցումները։"</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Չհաջողվեց բեռնել վիջեթը"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Վիջեթի կարգավորումներ"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Հպեք՝ կարգավորումն ավարտելու համար"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Սա համակարգային ծրագիր է և չի կարող ապատեղադրվել:"</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Փոխել անունը"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածն անջատված է"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{«{app_name}» հավելվածն ունի # ծանուցում}one{«{app_name}» հավելվածն ունի # ծանուցում}other{«{app_name}» հավելվածն ունի # ծանուցում}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{«{app_name}» հավելվածն ունի # ծանուցում}one{«{app_name}» հավելվածն ունի # ծանուցում}other{«{app_name}» հավելվածն ունի # ծանուցում}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Էջ %1$d՝ %2$d-ից"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Հիմնական էկրան %1$d` %2$d-ից"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Հիմնական էկրանի նոր էջ"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Պանակ՝ <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> կամ ավելի տարրեր"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Պաստառներ"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Պաստառ և ոճ"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Փոփոխել հիմնական էկրանը"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Գլխավոր էկրանի կարգավորումներ"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Անջատվել է ձեր ադմինիստրատորի կողմից"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Թույլ տալ հիմնական էկրանի պտտումը"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Թույլ տալ հիմնական էկրանի պտտումը"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Հեռախոսը պտտելու դեպքում"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Ծանուցումների կետիկներ"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Միացված է"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Ծանուցումների կետիկները ցուցադրելու համար միացրեք ծանուցումները <xliff:g id="NAME">%1$s</xliff:g>-ի համար"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Փոխել կարգավորումները"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Ցուցադրել ծանուցումների կետիկները"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Ավելացնել պատկերակները հիմնական էկրանին"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Մշակողի ընտրանքներ"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Ավելացնել պատկերակները հիմնական էկրանին"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Նոր հավելվածների համար"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Անհայտ է"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Հեռացնել"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> հավելվածը տեղադրվում է, կատարված է <xliff:g id="PROGRESS">%2$s</xliff:g>-ը"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g>–ի ներբեռնում (<xliff:g id="PROGRESS">%2$s</xliff:g>)"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g>-ի տեղադրման սպասում"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Պահանջվում է թարմացնել հավելվածը"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Հավելվածը հնացել է։ Թարմացրեք այն ձեռքով, որպեսզի շարունակեք օգտագործել դյուրանցումը, կամ հեռացրեք հավելվածի պատկերակը։"</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Թարմացնել"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Հեռացնել"</string>
     <string name="widgets_list" msgid="796804551140113767">"Վիջեթների ցանկ"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Վիջեթների ցանկը փակվեց"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Ավելացնել Հիմնական էկրանին"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Ավելացնել հիմնական էկրանին"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Տեղափոխել տարրն այստեղ"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Տարրն ավելացվեց հիմնական էկրանին"</string>
     <string name="item_removed" msgid="851119963877842327">"Տարրը հեռացվեց"</string>
     <string name="undo" msgid="4151576204245173321">"Հետարկել"</string>
     <string name="action_move" msgid="4339390619886385032">"Տեղափոխել տարրը"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Տեղափոխել տող <xliff:g id="NUMBER_0">%1$s</xliff:g> սյունակ <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Տեղափոխել շարք <xliff:g id="NUMBER_0">%1$s</xliff:g>, սյունակ <xliff:g id="NUMBER_1">%2$s</xliff:g> (<xliff:g id="STRING">%3$s</xliff:g>)"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Տեղափոխել դիրք <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Տեղափոխել նախընտրած դիրք՝ <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Տարրը տեղափոխվեց"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Տարրն ավելացվեց թղթապանակում"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Ստեղծել թղթապանակ, օգտագործելով՝ <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Պանակը ստեղծվեց"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Տեղափոխել Հիմնական էկրան"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Տեղափոխել հիմնական էկրան"</string>
     <string name="action_resize" msgid="1802976324781771067">"Չափափոխել"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Ավելացնել լայնությունը"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Ավելացնել բարձրությունը"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Աշխատանքային հավելվածները հատուկ նշանակ ունեն և տեսանելի են ՏՏ ադմինիստրատորին"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Եղավ"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Աշխատանքային հավելվածները դադարեցված են"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Դուք ծանուցումներ չեք ստանա ձեր աշխատանքային հավելվածներից"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Աշխատանքային հավելվածները չեն կարող ծանուցումներ ուղարկել ձեզ, օգտագործել մարտկոցը և ձեր տեղադրության մասին տվյալներ ստանալ։"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Աշխատանքային հավելվածներն անջատված են։ Դրանք չեն կարող ծանուցումներ ուղարկել ձեզ, օգտագործել մարտկոցը և ձեր տեղադրության մասին տվյալներ ստանալ։"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Դուք ձեր աշխատանքային հավելվածներից հեռախոսազանգեր, տեքստային հաղորդագրություններ կամ ծանուցումներ չեք ստանա"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Աշխատանքային հավելվածները հատուկ նշանակ ունեն և տեսանելի են ՏՏ ադմինիստրատորին"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Եղավ"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Անջատել աշխատանքային հավելվածները"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Միացնել աշխատանքային հավելվածները"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Դադարեցնել աշխատանքային հավելվածները"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Վերսկսել"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Զտեք"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Որոնում հեռախոսում"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Որոնում պլանշետում"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Չհաջողվեց կատարել գործողությունը (<xliff:g id="WHAT">%1$s</xliff:g>)"</string>
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index f106774..0c0eef2 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Pintasan tidak tersedia"</string>
     <string name="home_screen" msgid="5629429142036709174">"Layar utama"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Layar terpisah"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Pisahkan ke atas"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Pisahkan ke kiri"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Pisahkan ke kanan"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Info aplikasi untuk %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Simpan pasangan aplikasi"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Sentuh lama untuk memindahkan widget."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Ketuk dua kali &amp; tahan untuk memindahkan widget atau gunakan tindakan khusus."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"lebar %1$d x tinggi %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Sentuh lama widget untuk memindahkannya di sekitar Layar utama"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Tambahkan ke Layar utama"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Sentuh lama widget untuk memindah-mindahkannya di layar utama"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Tambahkan ke layar utama"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g> ditambahkan ke layar utama"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Saran"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}other{# widget}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# pintasan}other{# pintasan}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Pribadi"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Kerja"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Percakapan"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Pembuatan catatan"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Info bermanfaat mudah dilihat"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Untuk mendapatkan info tanpa membuka aplikasi, Anda dapat menambahkan widget ke Layar utama"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Untuk mendapatkan info tanpa membuka aplikasi, Anda dapat menambahkan widget ke layar utama"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Ketuk untuk mengubah setelan widget"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Oke"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Ubah setelan widget"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Telusuri aplikasi"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Memuat aplikasi…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Tidak ditemukan aplikasi yang cocok dengan \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Telusuri aplikasi lainnya"</string>
     <string name="label_application" msgid="8531721983832654978">"Aplikasi"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Semua aplikasi"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Notifikasi"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Sentuh lama untuk memindahkan pintasan."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Ketuk dua kali &amp; tahan untuk memindahkan pintasan atau gunakan tindakan khusus."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Tidak ada ruang di Layar utama ini"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Tidak ada ruang di layar utama ini"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Tidak ada ruang tersisa di baki Favorit"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Daftar aplikasi"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Hasil penelusuran"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Pin Prediksi"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"memasang pintasan"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Mengizinkan aplikasi menambahkan pintasan tanpa campur tangan pengguna."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"membaca setelan dan pintasan layar Utama"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Mengizinkan aplikasi membaca setelan dan pintasan di layar Utama."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"menulis setelan dan pintasan layar Utama"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Mengizinkan aplikasi mengubah setelan dan pintasan di layar Utama."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak diizinkan untuk melakukan panggilan telepon"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"membaca setelan dan pintasan layar utama"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Mengizinkan aplikasi membaca setelan dan pintasan di layar utama."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"menulis setelan dan pintasan layar utama"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Mengizinkan aplikasi mengubah setelan dan pintasan di layar utama."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Tidak dapat memuat widget"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Setelan widget"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Ketuk untuk menyelesaikan penyiapan"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Ini adalah aplikasi sistem dan tidak dapat dicopot pemasangannya."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Sunting Nama"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> dinonaktifkan"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} memiliki # notifikasi}other{{app_name} memiliki # notifikasi}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} memiliki # notifikasi}other{{app_name} memiliki # notifikasi}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Halaman %1$d dari %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Layar utama %1$d dari %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Halaman layar utama baru"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Folder: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> item atau lebih"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Wallpaper"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Wallpaper &amp; gaya"</string>
-    <string name="settings_button_text" msgid="8873672322605444408">"Setelan Layar utama"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Edit Layar Utama"</string>
+    <string name="settings_button_text" msgid="8873672322605444408">"Setelan layar utama"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Dinonaktifkan oleh admin"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Izinkan Layar utama diputar"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Izinkan layar utama diputar"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Saat ponsel diputar"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Titik notifikasi"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Aktif"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Guna menampilkan Titik Notifikasi, aktifkan notifikasi aplikasi untuk <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Ubah setelan"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Tampilkan titik notifikasi"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Tambahkan ikon aplikasi ke Layar utama"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Opsi Developer"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Tambahkan ikon aplikasi ke layar utama"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Untuk aplikasi baru"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Tidak dikenal"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Buang"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> sedang diinstal, <xliff:g id="PROGRESS">%2$s</xliff:g> selesai"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> sedang didownload, <xliff:g id="PROGRESS">%2$s</xliff:g> selesai"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> menunggu dipasang"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Aplikasi perlu diupdate"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Aplikasi untuk ikon ini belum diupdate. Anda dapat mengupdate secara manual untuk mengaktifkan kembali pintasan ini, atau hapus ikon."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Update"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Hapus"</string>
     <string name="widgets_list" msgid="796804551140113767">"Daftar widget"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Daftar widget ditutup"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Tambahkan ke Layar Utama"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Tambahkan ke layar utama"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Pindahkan item ke sini"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Item ditambahkan ke layar utama"</string>
     <string name="item_removed" msgid="851119963877842327">"Item dihapus"</string>
     <string name="undo" msgid="4151576204245173321">"Urungkan"</string>
     <string name="action_move" msgid="4339390619886385032">"Pindahkan item"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Pindahkan ke baris <xliff:g id="NUMBER_0">%1$s</xliff:g> kolom <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Pindahkan ke baris <xliff:g id="NUMBER_0">%1$s</xliff:g> kolom <xliff:g id="NUMBER_1">%2$s</xliff:g> di <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"PIndahkan ke posisi <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Pindahkan ke posisi favorit <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Item dipindahkan"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Item ditambahkan ke folder"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Buat folder dengan: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Folder dibuat"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Pindahkan ke layar Utama"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Pindahkan ke layar utama"</string>
     <string name="action_resize" msgid="1802976324781771067">"Ubah ukuran"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Tambahi lebar"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Tambahi tinggi"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Aplikasi kerja diberi badge dan terlihat oleh admin IT"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Oke"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Aplikasi kerja dijeda"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Anda tidak akan menerima notifikasi dari aplikasi kerja"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Aplikasi kerja tidak dapat mengirimkan notifikasi, menggunakan baterai, atau mengakses lokasi Anda"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Aplikasi kerja dinonaktifkan. Aplikasi kerja tidak dapat mengirimkan notifikasi, menggunakan baterai, atau mengakses lokasi Anda"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Anda tidak akan menerima panggilan telepon, pesan teks, atau notifikasi dari aplikasi kerja"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Aplikasi kerja diberi badge dan terlihat oleh admin IT"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Oke"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Nonaktifkan aplikasi kerja"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Aktifkan aplikasi kerja"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Jeda aplikasi kerja"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Aktifkan lagi"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filter"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Telusuri di ponsel"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Telusuri di tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Gagal: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 1397b88..fc574cb 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Flýtileið er ekki tiltæk"</string>
     <string name="home_screen" msgid="5629429142036709174">"Heim"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Skipta skjá"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Skipta efst"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Skipta vinstra megin"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Skipta hægra megin"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Upplýsingar um forrit fyrir %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Vista forritapar"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Haltu fingri á græju til að færa hana."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Ýttu tvisvar og haltu fingri á græju til að færa hana eða notaðu sérsniðnar aðgerðir."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d á breidd og %2$d á hæð"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Græjan <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Haltu fingri á græjunni til að hreyfa hana um heimaskjáinn"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Bæta á heimaskjá"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Haltu fingri á græjunni til að hreyfa hana um heimaskjáinn"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Bæta á heimaskjá"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> græju bætt við heimaskjá"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Tillögur"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# græja}one{# græja}other{# græjur}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# flýtileið}one{# flýtileið}other{# flýtileiðir}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Persónulegt"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Vinna"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Samtöl"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Glósugerð"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Gagnlegar upplýsingar innan seilingar"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Þú getur bætt við græjum á heimaskjáinn til að fá upplýsingar án þess að opna forrit"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Þú getur bætt við græjum á heimaskjáinn til að fá upplýsingar án þess að opna forrit"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Ýttu til að breyta græjustillingum"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Ég skil"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Breyta græjustillingum"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Leita í forritum"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Hleður forrit…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Ekki fundust forrit sem samsvara „<xliff:g id="QUERY">%1$s</xliff:g>“"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Leita að fleiri forritum"</string>
     <string name="label_application" msgid="8531721983832654978">"Forrit"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Öll forrit"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Tilkynningar"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Haltu fingri á flýtileið til að færa hana."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Ýttu tvisvar og haltu fingri á flýtileið til að færa hana eða notaðu sérsniðnar aðgerðir."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Ekkert pláss á þessum heimaskjá"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Ekkert pláss á þessum heimaskjá"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Ekki meira pláss í bakka fyrir uppáhald"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Forritalisti"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Leitarniðurstöður"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Festa tillögu"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"setja upp flýtileiðir"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Leyfir forriti að bæta við flýtileiðum án íhlutunar notanda."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"lesa stillingar og flýtileiðir heimaskjás"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Leyfir forriti að lesa stillingar og flýtileiðir heimaskjás."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"skrifa stillingar og flýtileiðir heimaskjás"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Leyfir forriti að breyta stillingum og flýtileiðum heimaskjás."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> hefur ekki leyfi til að hringja símtöl"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"lesa stillingar og flýtileiðir heimaskjás"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Leyfir forriti að lesa stillingar og flýtileiðir heimaskjás."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"skrifa stillingar og flýtileiðir heimaskjás"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Leyfir forriti að breyta stillingum og flýtileiðum heimaskjás."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Ekki hægt að hlaða græju"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Græjustillingar"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Ýttu til að ljúka við uppsetningu"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Þetta er kerfisforrit sem ekki er hægt að fjarlægja."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Breyta nafni"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Óvirkt <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} er með # tilkynningu}one{{app_name} er með # tilkynningu}other{{app_name} er með # tilkynningar}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} er með # tilkynningu}one{{app_name} er með # tilkynningu}other{{app_name} er með # tilkynningar}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Síða %1$d af %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Heimaskjár %1$d af %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Ný síða á heimaskjá"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Mappa: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> eða fleiri atriði"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Veggfóður"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Veggfóður og stíll"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Breyta heimaskjá"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Heimastillingar"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Gert óvirkt af kerfisstjóra"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Leyfa snúning á heimaskjá"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Leyfa snúning á heimaskjá"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Þegar símanum er snúið"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Tilkynningapunktar"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Kveikt"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Til að sýna tilkynningarpunkta skaltu kveikja á forritstilkynningum fyrir <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Breyta stillingum"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Sýna tilkynningapunkta"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Bæta forritatáknum við heimaskjáinn"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Forritunarkostir"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Bæta forritatáknum við heimaskjáinn"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Fyrir ný forrit"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Óþekkt"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Taka niður"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Setur upp <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="PROGRESS">%2$s</xliff:g> lokið"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> í niðurhali, <xliff:g id="PROGRESS">%2$s</xliff:g> lokið"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> bíður uppsetningar"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Uppfæra þarf forritið"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Forritið fyrir þetta tákn er ekki uppfært. Þú getur uppfært það handvirkt til að kveikja aftur á þessari flýtileið eða fjarlægt táknið."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Uppfæra"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Fjarlægja"</string>
     <string name="widgets_list" msgid="796804551140113767">"Græjulisti"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Græjulista lokað"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Bæta á heimaskjá"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Bæta á heimaskjá"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Færa atriði hingað"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Atriði bætt á heimaskjáinn"</string>
     <string name="item_removed" msgid="851119963877842327">"Atriði fjarlægt"</string>
     <string name="undo" msgid="4151576204245173321">"Afturkalla"</string>
     <string name="action_move" msgid="4339390619886385032">"Færa atriði"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Færa í línu <xliff:g id="NUMBER_0">%1$s</xliff:g>, dálk <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Færðu þig í línu <xliff:g id="NUMBER_0">%1$s</xliff:g>, dálk <xliff:g id="NUMBER_1">%2$s</xliff:g> í <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Færa í stöðu <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Færa í stöðu <xliff:g id="NUMBER">%1$s</xliff:g> á festisvæði"</string>
     <string name="item_moved" msgid="4606538322571412879">"Atriði fært"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Atriði sett í möppu"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Búa til möppu með: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Mappa búin til"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Færa á heimaskjá"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Færa á heimaskjá"</string>
     <string name="action_resize" msgid="1802976324781771067">"Breyta stærð"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Auka breidd"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Auka hæð"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Vinnuforrit eru merkt og kerfisstjórinn getur séð þau"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Ég skil"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Hlé gert á vinnuforritum"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Þú færð ekki tilkynningar frá vinnuforritum"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Vinnuforrit geta ekki sent þér tilkynningar, notað rafhlöðuorku eða fengið aðgang að staðsetningu þinni"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Slökkt er á vinnuforritum. Vinnuforrit geta ekki sent þér tilkynningar, notað rafhlöðuorku eða fengið aðgang að staðsetningu þinni"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Þú munt ekki taka á móti símtölum, textaskilaboðum eða tilkynningum frá vinnuforritum"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Vinnuforrit eru merkt og kerfisstjórinn getur séð þau"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Ég skil"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Slökkva á vinnuforritum"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Kveikja á vinnuforritum"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Setja vinnuforrit í bið"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Ljúka hléi"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Sía"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Leita í símanum"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Leita í spjaldtölvunni"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Mistókst: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index ff0b6c0..59c0cb7 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -28,20 +28,19 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"La scorciatoia non è disponibile"</string>
     <string name="home_screen" msgid="5629429142036709174">"Home"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Schermo diviso"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Dividi in alto"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Dividi a sinistra"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Dividi a destra"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Informazioni sull\'app %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Salva coppia di app"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Tocca e tieni premuto per spostare un widget."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Tocca due volte e tieni premuto per spostare un widget o per usare le azioni personalizzate."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d di larghezza per %2$d di altezza"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Tocca e tieni premuto il widget per spostarlo nella schermata Home"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Aggiungi a schermata Home"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Tocca e tieni premuto il widget per spostarlo nella schermata Home"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Aggiungi alla schermata Home"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g> aggiunto alla schermata Home"</string>
-    <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}one{# widget}other{# widget}}"</string>
-    <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# scorciatoia}one{# scorciatoia}other{# scorciatoie}}"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Suggerimenti"</string>
+    <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}other{# widget}}"</string>
+    <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# scorciatoia}other{# scorciatoie}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
     <string name="widget_button_text" msgid="2880537293434387943">"Widget"</string>
     <string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Cerca"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personali"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Lavoro"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Conversazioni"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Aggiunta di note"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Informazioni utili a portata di mano"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Per ricevere informazioni senza aprire app, puoi aggiungere widget alla schermata Home"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Per ricevere informazioni senza aprire le app, puoi aggiungere dei widget alla schermata Home"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Tocca per modificare le impostazioni del widget"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Modifica le impostazioni del widget"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Cerca nelle app"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Caricamento delle app…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Nessuna app trovata corrispondente a \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Cerca altre app"</string>
     <string name="label_application" msgid="8531721983832654978">"App"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Tutte le app"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Notifiche"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Tocca e tieni premuto per spostare una scorciatoia."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Tocca due volte e tieni premuto per spostare una scorciatoia o per usare le azioni personalizzate."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Non c\'è più spazio nella schermata Home"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Non c\'è più spazio nella schermata Home"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Spazio esaurito nella barra dei Preferiti"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Elenco di app"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Risultati di ricerca"</string>
@@ -77,20 +76,19 @@
     <string name="install_drop_target_label" msgid="2539096853673231757">"Installa"</string>
     <string name="dismiss_prediction_label" msgid="3357562989568808658">"Non suggerire app"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"Blocca previsione"</string>
-    <string name="permlab_install_shortcut" msgid="5632423390354674437">"aggiunta di scorciatoie"</string>
+    <string name="permlab_install_shortcut" msgid="5632423390354674437">"Aggiunta di scorciatoie"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Consente a un\'app di aggiungere scorciatoie automaticamente."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"lettura di impostazioni e scorciatoie in Home"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Consente all\'app di leggere le impostazioni e le scorciatoie in Home."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"creazione di impostazioni e scorciatoie in Home"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Consente all\'app di modificare le impostazioni e le scorciatoie in Home."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"L\'app <xliff:g id="APP_NAME">%1$s</xliff:g> non è autorizzata a effettuare telefonate"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"leggere le impostazioni e le scorciatoie nella schermata Home"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Consente all\'app di leggere le impostazioni e le scorciatoie nella schermata Home."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"creare impostazioni e scorciatoie nella schermata Home"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Consente all\'app di modificare le impostazioni e le scorciatoie nella schermata Home."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Impossibile caricare il widget"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Impostazioni widget"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Tocca per completare la configurazione"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Questa è un\'app di sistema e non può essere disinstallata."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Modifica nome"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"App <xliff:g id="APP_NAME">%1$s</xliff:g> disattivata"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} ha # notifica}one{{app_name} ha # notifica}other{{app_name} ha # notifiche}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} ha # notifica}other{{app_name} ha # notifiche}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Pagina %1$d di %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Schermata Home %1$d di %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Nuova pagina Schermata Home"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Cartella: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> o più elementi"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Sfondi"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Sfondo e stile"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Modifica la schermata Home"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Impostazioni schermata Home"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Disattivata dall\'amministratore"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Consenti rotazione della schermata Home"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Consenti rotazione della schermata Home"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Con il telefono ruotato"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Indicatori di notifica"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"On"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Per mostrare gli indicatori di notifica, attiva le notifiche per l\'app <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Modifica impostazioni"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Mostra indicatori di notifica"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Aggiungi icone delle app alla schermata Home"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Opzioni sviluppatore"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Aggiungi icone delle app alla schermata Home"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Per le nuove app"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Sconosciuto"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Rimuovi"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Installazione di <xliff:g id="NAME">%1$s</xliff:g>, completamento: <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Download di <xliff:g id="NAME">%1$s</xliff:g> in corso, <xliff:g id="PROGRESS">%2$s</xliff:g> completato"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> in attesa di installazione"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"È necessario aggiornare l\'app"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"L\'app relativa a questa icona non è aggiornata. Puoi eseguire manualmente l\'aggiornamento per riattivare questa scorciatoia oppure rimuovere l\'icona."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Aggiorna"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Rimuovi"</string>
     <string name="widgets_list" msgid="796804551140113767">"Elenco di widget"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Elenco di widget chiuso"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Aggiungi a schermata Home"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Aggiungi alla schermata Home"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Sposta elemento qui"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Elemento aggiunto alla schermata Home"</string>
     <string name="item_removed" msgid="851119963877842327">"Elemento rimosso"</string>
     <string name="undo" msgid="4151576204245173321">"Annulla"</string>
     <string name="action_move" msgid="4339390619886385032">"Sposta elemento"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Sposta a riga <xliff:g id="NUMBER_0">%1$s</xliff:g>, colonna <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Spostati alla riga <xliff:g id="NUMBER_0">%1$s</xliff:g> colonna <xliff:g id="NUMBER_1">%2$s</xliff:g> in <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Sposta nella posizione <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Sposta nella posizione <xliff:g id="NUMBER">%1$s</xliff:g> dei preferiti"</string>
     <string name="item_moved" msgid="4606538322571412879">"Elemento spostato"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Elemento aggiunto alla cartella"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Crea cartella con: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Cartella creata"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Sposta nella schermata Home"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Sposta nella schermata Home"</string>
     <string name="action_resize" msgid="1802976324781771067">"Ridimensiona"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Aumenta larghezza"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Aumenta altezza"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Le app di lavoro sono contrassegnate con un badge e visibili all\'amministratore IT"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Le app di lavoro sono in pausa"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Non riceverai notifiche dalle app di lavoro"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Le app di lavoro non possono inviarti notifiche, usare la batteria o accedere alla tua posizione"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Le app di lavoro non sono attive e non possono inviarti notifiche, usare la batteria o accedere alla tua posizione"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Non riceverai telefonate, messaggi o notifiche dalle app di lavoro"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Le app di lavoro sono contrassegnate con un badge e sono visibili dal tuo amministratore IT"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Disattiva app di lavoro"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Attiva app di lavoro"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Metti in pausa le app di lavoro"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Riattiva"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtra"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Ricerche sul telefono"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Ricerche sul tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Operazione non riuscita: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 3d0774f..92f5d1d 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -28,20 +28,19 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"קיצור הדרך אינו זמין"</string>
     <string name="home_screen" msgid="5629429142036709174">"בית"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"מסך מפוצל"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"פיצול למעלה"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"פיצול שמאלה"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"פיצול ימינה"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"‏פרטים על האפליקציה %1$s"</string>
-    <string name="long_press_widget_to_add" msgid="3587712543577675817">"כדי להעביר ווידג\'ט למקום אחר יש לגעת ולא להרפות."</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"שמירה של צמד אפליקציות"</string>
+    <string name="long_press_widget_to_add" msgid="3587712543577675817">"להעברת ווידג\'ט למקום אחר לוחצים עליו לחיצה ארוכה."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"כדי להעביר ווידג\'ט למקום אחר או להשתמש בפעולות מותאמות אישית, יש ללחוץ פעמיים ולא להרפות."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"‏רוחב %1$d על גובה %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"ווידג\'ט <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"יש ללחוץ לחיצה ארוכה על הווידג\'ט כדי להזיז אותו ברחבי מסך הבית"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"הוספה למסך הבית"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"לוחצים לחיצה ארוכה על הווידג\'ט כדי להזיז אותו במסך הבית"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"הוספה למסך הבית"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"הווידג\'ט <xliff:g id="WIDGET_NAME">%1$s</xliff:g> נוסף למסך הבית"</string>
-    <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{ווידג\'ט אחד}two{# ווידג\'טים}many{# ווידג\'טים}other{# ווידג\'טים}}"</string>
-    <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{קיצור דרך אחד}two{# קיצורי דרך}many{# קיצורי דרך}other{# קיצורי דרך}}"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"הצעות"</string>
+    <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{ווידג\'ט אחד}one{# ווידג\'טים}two{# ווידג\'טים}other{# ווידג\'טים}}"</string>
+    <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{קיצור דרך אחד}one{# קיצורי דרך}two{# קיצורי דרך}other{# קיצורי דרך}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
     <string name="widget_button_text" msgid="2880537293434387943">"ווידג\'טים"</string>
     <string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"חיפוש"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ווידג\'טים אישיים"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"עבודה"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"שיחות"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"כתיבת הערות"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"קבלת מידע שימושי בהקשה"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"רוצה לקבל מידע בלי לפתוח אפליקציות? אפשר להוסיף ווידג\'טים למסך הבית"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"רוצה לקבל מידע בלי לפתוח אפליקציות? אפשר להוסיף ווידג\'טים למסך הבית"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"אפשר לשנות את הגדרות הווידג\'ט בהקשה"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"הבנתי"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"שינוי הגדרות הווידג\'ט"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"חיפוש אפליקציות"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"טעינת אפליקציות מתבצעת…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"לא נמצאו אפליקציות התואמות ל-\"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"חיפוש אפליקציות נוספות"</string>
     <string name="label_application" msgid="8531721983832654978">"אפליקציה"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"כל האפליקציות"</string>
     <string name="notifications_header" msgid="1404149926117359025">"התראות"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"כדי להעביר קיצור דרך למקום אחר יש לגעת ולא להרפות."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"כדי להעביר קיצור דרך למקום אחר או להשתמש בפעולות מותאמות אישית\' יש ללחוץ פעמיים ולא להרפות."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"אין מקום במסך הבית הזה"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"אין מקום במסך הבית הזה"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"אין עוד מקום במגש המועדפים"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"רשימת אפליקציות"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"תוצאות חיפוש"</string>
@@ -79,21 +78,20 @@
     <string name="pin_prediction" msgid="4196423321649756498">"הצמדת החיזוי"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"התקנת קיצורי דרך"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"מאפשר לאפליקציה להוסיף קיצורי דרך ללא התערבות המשתמש."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"קריאת הגדרות וקיצורי דרך של דף הבית"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"מאפשר לאפליקציה לקרוא את ההגדרות וקיצורי הדרך בדף הבית."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"כתיבת הגדרות וקיצורי דרך של דף הבית"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"מאפשר לאפליקציה לשנות את ההגדרות וקיצורי הדרך בדף הבית."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> אינו רשאי להתקשר"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"קריאת ההגדרות וקיצורי הדרך בדף הבית"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"מאפשרת לאפליקציה לקרוא את ההגדרות וקיצורי הדרך בדף הבית."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"כתיבת ההגדרות וקיצורי הדרך בדף הבית"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"מאפשרת לאפליקציה לשנות את ההגדרות וקיצורי הדרך בדף הבית."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"לא ניתן לטעון את הווידג\'ט"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"הגדרות הווידג\'ט"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"צריך להקיש כדי לסיים את תהליך ההגדרה"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"זוהי אפליקציית מערכת ולא ניתן להסיר את התקנתה."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"עריכת השם"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> מושבתת"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{לאפליקציה {app_name} יש התראה אחת}two{לאפליקציה {app_name} יש # התראות}many{לאפליקציה {app_name} יש # התראות}other{לאפליקציה {app_name} יש # התראות}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{לאפליקציה {app_name} יש התראה אחת}one{לאפליקציה {app_name} יש # התראות}two{לאפליקציה {app_name} יש # התראות}other{לאפליקציה {app_name} יש # התראות}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"‏דף %1$d מתוך %2$d"</string>
-    <string name="workspace_scroll_format" msgid="8458889198184077399">"‏מסך דף הבית %1$d מתוך %2$d"</string>
-    <string name="workspace_new_page" msgid="257366611030256142">"מסך דף הבית חדש"</string>
+    <string name="workspace_scroll_format" msgid="8458889198184077399">"‏מסך הבית %1$d מתוך %2$d"</string>
+    <string name="workspace_new_page" msgid="257366611030256142">"מסך הבית חדש"</string>
     <string name="folder_opened" msgid="94695026776264709">"תיקייה פתוחה, <xliff:g id="WIDTH">%1$d</xliff:g> על <xliff:g id="HEIGHT">%2$d</xliff:g>"</string>
     <string name="folder_tap_to_close" msgid="4625795376335528256">"יש להקיש כדי לסגור את התיקייה"</string>
     <string name="folder_tap_to_rename" msgid="4017685068016979677">"יש להקיש כדי לשמור שינוי שם"</string>
@@ -103,10 +101,11 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"תיקייה: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> פריטים או יותר"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"טפטים"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"טפט וסגנון"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"עריכה של מסך הבית"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"הגדרות של מסך הבית"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"הושבת על ידי מנהל המערכת שלך"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"סיבוב של מסך הבית"</string>
-    <string name="allow_rotation_desc" msgid="8662546029078692509">"כאשר הטלפון מסובב"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"אישור לסיבוב מסך הבית"</string>
+    <string name="allow_rotation_desc" msgid="8662546029078692509">"כאשר מסובבים את הטלפון"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"סימני ההתראות"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"מופעל"</string>
     <string name="notification_dots_desc_off" msgid="1760796511504341095">"כבוי"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"כדי להציג את סימני ההתראות,יש להפעיל התראות מהאפליקציה <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"שינוי ההגדרות"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"הצגת סימני ההתראות"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"הוספת סמלי אפליקציות למסך הבית"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"אפשרויות למפתחים"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"הוספת סמלי אפליקציות למסך הבית"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"לאפליקציות חדשות"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"לא ידוע"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"הסרה"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> בתהליך התקנה, <xliff:g id="PROGRESS">%2$s</xliff:g> הושלמו"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"הורדת <xliff:g id="NAME">%1$s</xliff:g> מתבצעת, <xliff:g id="PROGRESS">%2$s</xliff:g> הושלמו"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"מחכה להתקנה של <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"נדרש עדכון לאפליקציה"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"האפליקציה של הסמל הזה לא מעודכנת. אפשר לעדכן אותה ידנית כדי להפעיל מחדש את קיצור הדרך הזה, או להסיר את הסמל."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"עדכון"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"הסרה"</string>
     <string name="widgets_list" msgid="796804551140113767">"רשימת ווידג\'טים"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"רשימת הווידג\'טים נסגרה"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"הוספה למסך דף הבית"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"הוספה למסך הבית"</string>
     <string name="action_move_here" msgid="2170188780612570250">"העברת הפריט לכאן"</string>
-    <string name="item_added_to_workspace" msgid="4211073925752213539">"הפריט הועבר אל מסך דף הבית"</string>
+    <string name="item_added_to_workspace" msgid="4211073925752213539">"הפריט הועבר אל מסך הבית"</string>
     <string name="item_removed" msgid="851119963877842327">"הפריט הוסר"</string>
     <string name="undo" msgid="4151576204245173321">"ביטול"</string>
     <string name="action_move" msgid="4339390619886385032">"העברת הפריט"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"העברה אל שורה <xliff:g id="NUMBER_0">%1$s</xliff:g> עמודה <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"צריך לעבור לשורה <xliff:g id="NUMBER_0">%1$s</xliff:g> ולטור <xliff:g id="NUMBER_1">%2$s</xliff:g> ב-<xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"העברה אל מיקום <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"העברה אל מיקום <xliff:g id="NUMBER">%1$s</xliff:g> במועדפים"</string>
     <string name="item_moved" msgid="4606538322571412879">"הפריט הועבר"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"הפריט נוסף לתיקייה"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"יצירת תיקייה עם: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"התיקייה נוצרה"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"העבר אל מסך דף הבית"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"העברה למסך הבית"</string>
     <string name="action_resize" msgid="1802976324781771067">"שינוי גודל"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"הגדלת רוחב"</string>
     <string name="action_increase_height" msgid="459390020612501122">"הגדלת גובה"</string>
@@ -153,18 +157,21 @@
     <string name="action_dismiss_notification" msgid="5909461085055959187">"סגירה"</string>
     <string name="accessibility_close" msgid="2277148124685870734">"סגירה"</string>
     <string name="notification_dismissed" msgid="6002233469409822874">"ההתראה נסגרה"</string>
-    <string name="all_apps_personal_tab" msgid="4190252696685155002">"אישיות"</string>
+    <string name="all_apps_personal_tab" msgid="4190252696685155002">"אישי"</string>
     <string name="all_apps_work_tab" msgid="4884822796154055118">"עבודה"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"פרופיל עבודה"</string>
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"‏האפליקציות לעבודה מתויגות ומוצגות למנהל ה-IT"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"הבנתי"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"האפליקציות לעבודה מושהות"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"לא יתקבלו התראות מהאפליקציות לעבודה"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"האפליקציות לעבודה לא יכולות לשלוח לך התראות, להשתמש בסוללה או לגשת למיקום שלך"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"האפליקציות לעבודה מושבתות. האפליקציות לא יכולות לשלוח לך התראות, להשתמש בסוללה או לגשת למיקום שלך"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"לא יתקבלו שיחות טלפון, הודעות טקסט או התראות מהאפליקציות לעבודה"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"‏האפליקציות לעבודה מתויגות ומוצגות למנהל ה-IT"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"הבנתי"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"כיבוי של אפליקציות לעבודה"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"הפעלה של אפליקציות לעבודה"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"השהיית האפליקציות לעבודה"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"ביטול ההשהיה"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"סינון"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"חיפוש בטלפון"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"חיפוש בטאבלט"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"הפעולה נכשלה: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index f1db158..43cc1e3 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"ショートカットは使用できません"</string>
     <string name="home_screen" msgid="5629429142036709174">"ホーム"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"分割画面"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"上に分割"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"左に分割"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"右に分割"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s のアプリ情報"</string>
-    <string name="long_press_widget_to_add" msgid="3587712543577675817">"長押ししてウィジェットを移動してください。"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"アプリのペア設定を保存"</string>
+    <string name="long_press_widget_to_add" msgid="3587712543577675817">"長押ししてウィジェットを移動させます。"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"ウィジェットをダブルタップして長押ししながら移動するか、カスタム操作を使用してください。"</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$dx%2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"幅 %1$d、高さ %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> ウィジェット"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"ウィジェットを押し続けると、ホーム画面上に移動できます。"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"ホーム画面に追加"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"ウィジェットを押し続けると、ホーム画面上に移動できます"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"ホーム画面に追加"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"「<xliff:g id="WIDGET_NAME">%1$s</xliff:g>」ウィジェットをホーム画面に追加しました"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"候補"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# 件のウィジェット}other{# 件のウィジェット}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# 件のショートカット}other{# 件のショートカット}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>、<xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"個人用"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"仕事用"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"会話"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"メモ"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"ウィジェットで情報を得る"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"ホーム画面にウィジェットを追加すると、アプリを開かずに情報を入手できます"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"ホーム画面にウィジェットを追加すると、アプリを開かずに情報を入手できます"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"タップしてウィジェットの設定を変更する"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"ウィジェットの設定を変更します"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"アプリを検索"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"アプリを読み込んでいます…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"「<xliff:g id="QUERY">%1$s</xliff:g>」に一致するアプリは見つかりませんでした"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"他のアプリを検索"</string>
     <string name="label_application" msgid="8531721983832654978">"アプリ"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"すべてのアプリ"</string>
     <string name="notifications_header" msgid="1404149926117359025">"通知"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"長押ししてショートカットを移動してください。"</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"ショートカットをダブルタップして長押ししながら移動するか、カスタム操作を使用してください。"</string>
-    <string name="out_of_space" msgid="6692471482459245734">"このホーム画面には空きスペースがありません"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"このホーム画面には空きスペースがありません"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"お気に入りトレイに空きスペースがありません"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"アプリのリスト"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"検索結果"</string>
@@ -75,22 +74,21 @@
     <string name="uninstall_drop_target_label" msgid="4722034217958379417">"アンインストール"</string>
     <string name="app_info_drop_target_label" msgid="692894985365717661">"アプリ情報"</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"インストール"</string>
-    <string name="dismiss_prediction_label" msgid="3357562989568808658">"アプリの候補を表示しない"</string>
+    <string name="dismiss_prediction_label" msgid="3357562989568808658">"アプリを表示しない"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"アプリの候補を固定"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"ショートカットのインストール"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"ユーザー操作なしでショートカットを追加することをアプリに許可します。"</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"ホームの設定とショートカットの読み取り"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"ホームの設定とショートカットの読み取りをアプリに許可します。"</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"ホームの設定とショートカットの書き込み"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"ホームの設定とショートカットの変更をアプリに許可します。"</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」から電話をかけることはできません"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"ホームの設定とショートカットの読み取り"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"ホームの設定とショートカットの読み取りをアプリに許可します。"</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"ホームの設定とショートカットの書き込み"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"ホームの設定とショートカットの変更をアプリに許可します。"</string>
     <string name="gadget_error_text" msgid="740356548025791839">"ウィジェットを読み込めません"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"ウィジェットの設定"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"タップして設定を完了してください"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"このシステムアプリはアンインストールできません。"</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"名前の編集"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」は無効です"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} の通知が # 件あります}other{{app_name} の通知が # 件あります}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} の通知が # 件あります}other{{app_name} の通知が # 件あります}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"%1$d/%2$dページ"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"ホーム画面: %1$d/%2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"新しいホーム画面ページ"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"フォルダ: <xliff:g id="NAME">%1$s</xliff:g>、<xliff:g id="SIZE">%2$d</xliff:g> 件以上のアイテム"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"壁紙"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"壁紙とスタイル"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"ホーム画面を編集"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"ホームの設定"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"管理者により無効にされています"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"ホーム画面の回転を許可"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"ホーム画面の回転を許可"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"スマートフォンの向きに合わせます"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"通知ドット"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"ON"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"通知ドットを表示するには、「<xliff:g id="NAME">%1$s</xliff:g>」のアプリ通知を ON にしてください"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"設定を変更"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"通知ドットの表示"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"ホーム画面にアプリのアイコンを追加"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"開発者向けオプション"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"ホーム画面にアプリのアイコンを追加"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"新しいアプリをダウンロードしたときに自動で追加します"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"不明"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"削除"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> をインストールしています: <xliff:g id="PROGRESS">%2$s</xliff:g> 完了"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g>をダウンロード中、<xliff:g id="PROGRESS">%2$s</xliff:g>完了"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g>のインストール待ち"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"アプリの更新が必要"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"このアイコンのアプリは更新されていません。手動で更新して、このショートカットを再度有効にできます。また、アイコンを削除することもできます。"</string>
+    <string name="dialog_update" msgid="2178028071796141234">"更新"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"削除"</string>
     <string name="widgets_list" msgid="796804551140113767">"ウィジェット リスト"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"ウィジェット リストを閉じました"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"ホーム画面に追加"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"ホーム画面に追加"</string>
     <string name="action_move_here" msgid="2170188780612570250">"アイテムをここに移動"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"アイテムをホーム画面に追加しました"</string>
     <string name="item_removed" msgid="851119963877842327">"アイテムを削除しました"</string>
     <string name="undo" msgid="4151576204245173321">"元に戻す"</string>
     <string name="action_move" msgid="4339390619886385032">"アイテムを移動"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"行<xliff:g id="NUMBER_0">%1$s</xliff:g>、列<xliff:g id="NUMBER_1">%2$s</xliff:g>に移動"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g> の行 <xliff:g id="NUMBER_0">%1$s</xliff:g>、列 <xliff:g id="NUMBER_1">%2$s</xliff:g> に移動します"</string>
     <string name="move_to_position" msgid="6750008980455459790">"位置<xliff:g id="NUMBER">%1$s</xliff:g>に移動"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"お気に入りの位置<xliff:g id="NUMBER">%1$s</xliff:g>に移動"</string>
     <string name="item_moved" msgid="4606538322571412879">"アイテムを移動しました"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"アイテムをフォルダに追加しました"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"「<xliff:g id="NAME">%1$s</xliff:g>」フォルダを作成"</string>
     <string name="folder_created" msgid="6409794597405184510">"フォルダを作成しました"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"ホーム画面に移動"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"ホーム画面に移動"</string>
     <string name="action_resize" msgid="1802976324781771067">"サイズを変更"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"幅を広くする"</string>
     <string name="action_increase_height" msgid="459390020612501122">"高さを高くする"</string>
@@ -158,13 +162,16 @@
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"仕事用プロファイル"</string>
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"仕事用アプリはバッジ付きで表示され、IT 管理者に公開されます"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
-    <string name="work_apps_paused_title" msgid="3040901117349444598">"仕事用アプリの一時停止"</string>
+    <string name="work_apps_paused_title" msgid="3040901117349444598">"仕事用アプリは一時停止されています"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"仕事用アプリからの通知は届きません"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"仕事用アプリでは、通知の送信、バッテリーの使用、位置情報の取得が無効になっています"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"仕事用アプリは OFF になっています。仕事用アプリでは、通知の送信、バッテリーの使用、位置情報の取得が無効になっています"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"電話やテキスト メッセージを受信しなくなり、仕事用アプリからの通知も届きません"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"仕事用アプリはバッジが付き、IT 管理者に公開されます"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"仕事用アプリを OFF にする"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"仕事用アプリを ON にする"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"仕事用アプリを一時停止"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"停止解除"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"フィルタ"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"スマートフォンを検索"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"タブレットを探す"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"失敗: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index a0cbbc7..7553f6a 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"მალსახმობი მიუწვდომელია"</string>
     <string name="home_screen" msgid="5629429142036709174">"მთავარი გვერდი"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"ეკრანის გაყოფა"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"გაყოფილი ზემოთ"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"გაყოფილი მარცხნივ"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"გაყოფილი მარჯვნივ"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s-ის აპის ინფო"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"აპთა წყვილის შენახვა"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"შეხებით აირჩიეთ და გეჭიროთ ვიჯეტის გადასაადგილებლად."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"ორმაგი შეხებით აირჩიეთ და გეჭიროთ ვიჯეტის გადასაადგილებლად ან მორგებული მოქმედებების გამოსაყენებლად."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"სიგრძე: %1$d, სიგანე: %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> ვიჯეტი"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"ხანგრძლივად შეეხეთ ვიჯეტს მთავარ ეკრანზე მის გადასაადგილებლად"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"მთავარ ეკრანზე დამატება"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"ხანგრძლივად შეეხეთ ვიჯეტს მთავარ ეკრანზე მის გადასაადგილებლად"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"მთავარ ეკრანზე დამატება"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> ვიჯეტი დამატებულია მთავარ ეკრანზე"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"შეთავაზებები"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# ვიჯეტი}other{# ვიჯეტი}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# მალსახმობი}other{# მალსახმობი}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"პირადი"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"სამსახური"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"მიმოწერები"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"ჩანიშვნა"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"ადვილად მისაწვდომი სასარგებლო ინფორმაცია"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"იმისთვის, რომ ინფორმაცია აპების გაუხსნელად მიიღოთ, შეგიძლიათ, მთავარ ეკრანზე ვიჯეტები დაამატოთ"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"იმისთვის, რომ ინფორმაცია აპების გაუხსნელად მიიღოთ, შეგიძლიათ, მთავარ ეკრანზე ვიჯეტები დაამატოთ"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"შეეხეთ ვიჯეტის პარამეტრების შესაცვლელად"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"გასაგებია"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"ვიჯეტის პარამეტრების შეცვლა"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"აპების ძიება"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"აპები იტვირთება…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"„<xliff:g id="QUERY">%1$s</xliff:g>“-ის თანხვედრი აპები არ მოიძებნა"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"მეტი აპის პოვნა"</string>
     <string name="label_application" msgid="8531721983832654978">"აპი"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"ყველა აპი"</string>
     <string name="notifications_header" msgid="1404149926117359025">"შეტყობინებები"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"შეხებით აირჩიეთ და გეჭიროთ მალსახმობის გადასაადგილებლად."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"ორმაგი შეხებით აირჩიეთ და გეჭიროთ მალსახმობის გადასაადგილებლად ან მორგებული მოქმედებების გამოსაყენებლად."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"ამ მთავარ ეკრანზე ადგილი არ არის"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"ამ მთავარ ეკრანზე ადგილი არ არის"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"რჩეულების თაროზე ადგილი არ არის"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"აპების სია"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"ძიების შედეგები"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"ჩამაგრების პროგნოზირება"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"მალსახმობების დაყენება"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"აპისთვის მალსახმობების დამოუკიდებლად დამატების უფლების მიცემა."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"მთავარი ეკრანის პარამეტრებისა და მალსახმობების წაკითხვა"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"აპისთვის მთავარი ეკრანის პარამეტრებისა და მალსახმობების წაკითხვის უფლების მიცემა."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"მთავარი ეკრანის პარამეტრებისა და მალსახმობების ჩაწერა"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"აპისთვის მთავარი ეკრანის პარამეტრებისა და მალსახმობების შეცვლის უფლების მიცემა."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ს არ აქვს სატელეფონო ზარების განხორციელების უფლება"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"მთავარი ეკრანის პარამეტრებისა და მალსახმობების წაკითხვა"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"აპისთვის მთავარი ეკრანის პარამეტრებისა და მალსახმობების წაკითხვის უფლების მიცემა."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"მთავარი ეკრანის პარამეტრებისა და მალსახმობების ჩაწერა"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"აპისთვის მთავარი ეკრანის პარამეტრებისა და მალსახმობების შეცვლის უფლების მიცემა."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"ვიჯეტის ჩატვირთვა ვერ ხერხდება"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"ვიჯეტის პარამეტრები"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"შეეხეთ დაყენების დასასრულებლად"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"ეს სისტემური აპია და მისი წაშლა შეუძლებელია."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"სახელის რედაქტირება"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> გაითიშა"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name}-ში # შეტყობინებაა}other{{app_name}-ში # შეტყობინებაა}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name}-ში # შეტყობინებაა}other{{app_name}-ში # შეტყობინებაა}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"გვერდი %1$d %2$d-დან"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"მთავარი ეკრანი %1$d, %2$d-დან"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"მთავარი ეკრანის ახალი გვერდი"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"საქაღალდე: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> ან მეტი ერთეული"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"ფონები"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"ფონი და სტილი"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"მთავარი ეკრანის რედაქტირება"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"მთავარი გვერდის პარამეტრები"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"გათიშულია თქვენი ადმინისტრატორის მიერ"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"მთავარი ეკრანის შეტრიალების დაშვება"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"მთავარი ეკრანის შეტრიალების დაშვება"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"ტელეფონის შეტრიალებისას"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"შეტყობინების ნიშნულები"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"ჩართულია"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"შეტყობინებათა ნიშნულების საჩვენებლად, ჩართეთ აპის შეტყობინებები <xliff:g id="NAME">%1$s</xliff:g>-ისთვის"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"პარამეტრების შეცვლა"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"შეტყობინების ნიშნულების ჩვენება"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"აპის ხატულების მთავარ ეკრანზე დამატება"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"დეველოპერთა პარამეტრები"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"აპის ხატულების მთავარ ეკრანზე დამატება"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"ახალი აპებისთვის"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"უცნობი"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"ამოშლა"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"ინსტალირდება <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="PROGRESS">%2$s</xliff:g> დასრულებულია"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"მიმდინარეობს <xliff:g id="NAME">%1$s</xliff:g>-ის ჩამოტვირთვა, <xliff:g id="PROGRESS">%2$s</xliff:g> დასრულდა"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> ელოდება ინსტალაციას"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"საჭიროა აპის განახლება"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"ამ ხატულის აპი განახლებული არ არის. შეგიძლიათ, ხელით განაახლოთ ამ მალსახმობის ხელახლა გასააქტიურებლად, ან ამოშალოთ ხატულა."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"განახლება"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"ამოშლა"</string>
     <string name="widgets_list" msgid="796804551140113767">"ვიჯეტების სია"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"ვიჯეტების სია დაიხურა"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"მთავარ ეკრანზე დამატება"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"მთავარ ეკრანზე დამატება"</string>
     <string name="action_move_here" msgid="2170188780612570250">"ერთეულის გადაადგილება აქ"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"ერთეული დაემატა მთავარ ეკრანს"</string>
     <string name="item_removed" msgid="851119963877842327">"ერთეული წაიშალა"</string>
     <string name="undo" msgid="4151576204245173321">"მოქმედების გაუქმება"</string>
     <string name="action_move" msgid="4339390619886385032">"ერთეულის გადაადგილება"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"გადატანა რიგში <xliff:g id="NUMBER_0">%1$s</xliff:g> სვეტში <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"გადაიტანეთ მწკრივი #<xliff:g id="NUMBER_0">%1$s</xliff:g> სვეტი #<xliff:g id="NUMBER_1">%2$s</xliff:g> <xliff:g id="STRING">%3$s</xliff:g>-ში"</string>
     <string name="move_to_position" msgid="6750008980455459790">"გადატანა <xliff:g id="NUMBER">%1$s</xliff:g> პოზიციაზე"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"გადატანა რჩეულთა პოზიციაზე <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"ერთეული გადაადგილდა"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"ერთეული დაემატა საქაღალდეს"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"საქაღალდის შექმნა ერთეულით: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"საქაღალდე შექმნილია"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"მთავარ ეკრანზე გადატანა"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"მთავარ ეკრანზე გადატანა"</string>
     <string name="action_resize" msgid="1802976324781771067">"ზომის შეცვლა"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"სიგანის გაზრდა"</string>
     <string name="action_increase_height" msgid="459390020612501122">"სიმაღლის გაზრდა"</string>
@@ -156,15 +160,18 @@
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"პირადი"</string>
     <string name="all_apps_work_tab" msgid="4884822796154055118">"სამსახური"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"სამსახურის პროფილი"</string>
-    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"სამსახურის აპები ბეჯით არის მონიშნული და ხილულია IT ადმინისტრატორისთვის"</string>
+    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"სამსახურის აპები ბეჯით არის მონიშნული და ხილულია თქვენი IT ადმინისტრატორისთვის"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"გასაგებია"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"სამსახურის აპები დაპაუზებულია"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"თქვენ არ მიიღებთ შეტყობინებებს თქვენი სამსახურის აპებიდან"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"თქვენს სამსახურის აპებს არ შეუძლია თქვენთვის შეტყობინებების გამოგზავნა, თქვენი ბატარეის გამოყენება, ან თქვენს მდებარეობაზე წვდომა"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"სამსახურის აპები გამორთულია. თქვენს სამსახურის აპებს არ შეუძლია თქვენთვის შეტყობინებების გამოგზავნა, თქვენი ბატარეის გამოყენება, ან თქვენს მდებარეობაზე წვდომა"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"თქვენ არ მიიღებთ სატელეფონო ზარებს, ტექსტურ შეტყობინებებს ან შეტყობინებებს თქვენი სამსახურის აპებიდან"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"სამსახურის აპები ბეჯით არის მონიშნული და ხილულია IT ადმინისტრატორისთვის"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"გასაგებია"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"სამსახურის აპების გამორთვა"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"სამსახურის აპების ჩართვა"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"სამსახურის აპების დაპაუზება"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"პაუზის გაუქმება"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"ფილტრი"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"მოიძიეთ თქვენს ტელეფონში"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ძიება თქვენს ტაბლეტში"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"ვერ მოხერხდა: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 529a00f..00babfd 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Таңбаша қолжетімді емес"</string>
     <string name="home_screen" msgid="5629429142036709174">"Негізгі экран"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Экранды бөлу"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Жоғарыдан шығару"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Сол жақтан шығару"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Оң жақтан шығару"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s қолданбасы туралы ақпарат"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Қолданбаларды жұптау әрекетін сақтау"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Виджетті жылжыту үшін басып тұрыңыз."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Виджетті жылжыту үшін екі рет түртіңіз де, ұстап тұрыңыз немесе арнаулы әрекеттерді пайдаланыңыз."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"Ені: %1$d, биіктігі: %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> виджеті"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Негізгі экранда қозғалту үшін виджетті басып тұрыңыз."</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Негізгі экранға қосу"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Негізгі экран бойынша жылжыту үшін виджетті басып ұстаңыз."</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Негізгі экранға қосу"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> виджеті негізгі экранға енгізілді."</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Ұсыныстар"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# виджет}other{# виджет}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# таңбаша}other{# таңбаша}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Жеке виджеттер"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Жұмыс виджеттері"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Әңгімелер"</string>
-    <string name="widget_education_header" msgid="4874760613775913787">"Саусақпен түртсеңіз болғаны – пайдалы ақпарат көз алдыңызда"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Қолданбаларды ашпай-ақ ақпарат алу үшін негізгі экранға тиісті виджеттерді қосыңыз."</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Ескертпе жазу"</string>
+    <string name="widget_education_header" msgid="4874760613775913787">"Саусақпен түртсеңіз болғаны – пайдалы ақпарат көз алдыңызда"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Қолданбаларды ашпай-ақ ақпарат алу үшін негізгі экранға тиісті виджеттерді қосыңыз."</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Виджет параметрлерін өзгерту үшін түртіңіз."</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Түсінікті"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Виджет параметрлерін өзгерту"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Қолданбаларды іздеу"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Қолданбалар жүктелуде…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" сұрауына сәйкес келетін қолданбалар жоқ"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Қосымша қолданбалар іздеу"</string>
     <string name="label_application" msgid="8531721983832654978">"Қолданба"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Барлық қолданба"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Хабарландырулар"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Таңбашаны жылжыту үшін басып тұрыңыз."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Таңбашаны жылжыту үшін екі рет түртіңіз де, ұстап тұрыңыз немесе арнаулы әрекеттерді пайдаланыңыз."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Негізгі экранда бос орын қалмады."</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Негізгі экранда бос орын қалмады."</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Қалаулылар науасында орын қалмады"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Қолданбалар тізімі"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Іздеу нәтижелері"</string>
@@ -75,22 +74,21 @@
     <string name="uninstall_drop_target_label" msgid="4722034217958379417">"Жою"</string>
     <string name="app_info_drop_target_label" msgid="692894985365717661">"Қолданба ақпараты"</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"Орнату"</string>
-    <string name="dismiss_prediction_label" msgid="3357562989568808658">"Қолданбаны ұсынбау"</string>
+    <string name="dismiss_prediction_label" msgid="3357562989568808658">"Қолданба ұсынбау"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"Болжанған қолданбаны бекіту"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"таңбаша орнату"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Қолданбаға пайдаланушының қатысуынсыз төте пернелерді қосу мүмкіндігін береді."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"Негізгі экрандағы параметрлер мен төте пернелерді оқу"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Қолданбаға Негізгі экрандағы параметрлер мен төте пернелерді оқу мүмкіндігін береді."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"Негізгі экран параметрлері мен төте пернелерін жазу"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Қолданбаға Негізгі экрандағы параметрлер мен төте пернелерді өзгерту мүмкіндігін береді."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> арқылы телефон қоңырауларын соғуға рұқсат етілмеген"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"негізгі экран параметрлері мен таңбашаларын оқу"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Қолданбаға негізгі экрандағы параметрлер мен таңбашаларды оқуға мүмкіндік береді."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"негізгі экран параметрлері мен таңбашаларын жазу"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Қолданбаға негізгі экрандағы параметрлер мен таңбашаларды өзгертуге мүмкіндік береді."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Виджетті жүктеу мүмкін емес."</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Виджет параметрлері"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Реттеуді аяқтау үшін түртіңіз."</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Бұл жүйе қолданбасы, сондықтан оны алу мүмкін емес."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Атын өңдеу"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> өшірілді"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} қолданбасында # хабарландыру бар}other{{app_name} қолданбасында # хабарландыру бар}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} қолданбасында # хабарландыру бар}other{{app_name} қолданбасында # хабарландыру бар}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"%1$d бет, барлығы %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"%1$d негізгі экран, барлығы %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Жаңа негізгі экран беті"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Қалта: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> не одан көп элемент бар"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Тұсқағаздар"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Тұсқағаз және стиль"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Негізгі экранды өзгерту"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Негізгі экран параметрлері"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Әкімші өшірді"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Негізгі экранның бұрылуына рұқсат ету"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Негізгі экранды бұруға рұқсат ету"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Телефон бұрылғанда"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Хабарландыру белгілері"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Қосулы"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Хабарландыру белгілерін көрсету үшін <xliff:g id="NAME">%1$s</xliff:g> қолданбасының қолданба хабарландыруларын қосыңыз"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Параметрлерді өзгерту"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Хабарландыру белгілерін көрсету"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Қолданба белгішесін негізгі экранға қосу"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Әзірлеуші опциялары"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Қолданба белгішелерін негізгі экранға қосу"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Жаңа қолданбаларға арналған"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Белгісіз"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Алып тастау"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> орнатылуда, <xliff:g id="PROGRESS">%2$s</xliff:g> аяқталды"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> жүктелуде, <xliff:g id="PROGRESS">%2$s</xliff:g> аяқталды"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> орнату күтілуде"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Қолданбаны жаңарту қажет"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Осы белгіше үшін қолданба жаңартылмаған. Оны қолмен жаңартып, осы таңбашаны қайта іске қоса аласыз немесе белгішені өшіріп тастаңыз."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Жаңарту"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Өшіру"</string>
     <string name="widgets_list" msgid="796804551140113767">"Виджеттер тізімі"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Видджеттер тізімі жабылды"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Негізгі экранға қосу"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Негізгі экранға қосу"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Элементті мұнда жылжыту"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Элемент негізгі экранға қосылды"</string>
     <string name="item_removed" msgid="851119963877842327">"Элемент жойылды"</string>
     <string name="undo" msgid="4151576204245173321">"Қайтару"</string>
     <string name="action_move" msgid="4339390619886385032">"Элементті жылжыту"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"<xliff:g id="NUMBER_0">%1$s</xliff:g>-жол, <xliff:g id="NUMBER_1">%2$s</xliff:g>-бағанға жылжыту"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g> экранында <xliff:g id="NUMBER_0">%1$s</xliff:g> жолын, <xliff:g id="NUMBER_1">%2$s</xliff:g> бағанын жылжытыңыз."</string>
     <string name="move_to_position" msgid="6750008980455459790">"<xliff:g id="NUMBER">%1$s</xliff:g>-орынға жылжыту"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"<xliff:g id="NUMBER">%1$s</xliff:g> нөмірлі таңдаулы орынға жылжыту"</string>
     <string name="item_moved" msgid="4606538322571412879">"Элемент жылжытылды"</string>
@@ -141,14 +145,14 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Элемент қалтаға қосылды"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Мына бар қалтаны жасау: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Қалта жасалды"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Негізгі экранға жылжыту"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Негізгі экранға жылжыту"</string>
     <string name="action_resize" msgid="1802976324781771067">"Өлшемін өзгерту"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Енін арттыру"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Биіктігін арттыру"</string>
     <string name="action_decrease_width" msgid="1374549771083094654">"Енін азайту"</string>
     <string name="action_decrease_height" msgid="282377193880900022">"Биіктігін азайту"</string>
     <string name="widget_resized" msgid="9130327887929620">"Виджет өлшемінің ені <xliff:g id="NUMBER_0">%1$s</xliff:g>, биіктігі <xliff:g id="NUMBER_1">%2$s</xliff:g> болып өзгертілді"</string>
-    <string name="action_deep_shortcut" msgid="2864038805849372848">"Таңбашалар"</string>
+    <string name="action_deep_shortcut" msgid="2864038805849372848">"Жылдам пәрмендер"</string>
     <string name="shortcuts_menu_with_notifications_description" msgid="2676582286544232849">"Таңбашалар мен хабарландырулар"</string>
     <string name="action_dismiss_notification" msgid="5909461085055959187">"Бас тарту"</string>
     <string name="accessibility_close" msgid="2277148124685870734">"Жабу"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Жұмыс қолданбаларының танымбелгілері бар және олар әкімшіңізге көрінеді."</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Түсінікті"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Жұмыс қолданбалары кідіртілді"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Жұмыс қолданбаларынан хабарландырулар алмайсыз."</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Жұмыс қолданбалары сізге хабарландырулар жібере, батареяңызды немесе локацияңызды пайдалана алмайды."</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Жұмыс қолданбалары өшірулі. Олар сізге хабарландырулар жібере, батареяңызды немесе локацияңызды пайдалана алмайды."</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Жұмыс қолданбаларынан телефон қоңырауларын, мәтіндік хабарлар немесе хабарландырулар алмайсыз."</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Жұмыс қолданбаларының танымбелгілері бар және олар әкімшіңізге көрінеді."</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Түсінікті"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Жұмыс қолданбаларын өшіру"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Жұмыс қолданбаларын қосу"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Жұмыс қолданбаларын кідірту"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Қайта қосу"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Сүзгі"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Телефоннан іздеу"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Планшеттен іздеу"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Қате шықты: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index f8560aa..42e0d4b 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"ផ្លូវកាត់មិនអាចប្រើបានទេ"</string>
     <string name="home_screen" msgid="5629429142036709174">"អេក្រង់ដើម"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"មុខងារ​បំបែកអេក្រង់"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"បំបែក​ខាងលើ"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"បំបែក​ខាងឆ្វេង"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"បំបែក​ខាងស្ដាំ"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"ព័ត៌មានកម្មវិធី​សម្រាប់ %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"រក្សាទុកគូកម្មវិធី"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"ចុចឱ្យជាប់​ដើម្បីផ្លាស់ទី​ធាតុក្រាហ្វិក​។"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"ចុចពីរដង រួចសង្កត់ឱ្យជាប់ ដើម្បីផ្លាស់ទី​ធាតុក្រាហ្វិក ឬប្រើ​សកម្មភាព​តាមបំណង​។"</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"ទទឺង %1$d គុណនឹងកម្ពស់ %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"ធាតុ​ក្រាហ្វិក <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"ចុចធាតុក្រាហ្វិក​ឱ្យជាប់ ដើម្បីផ្លាស់ទីវា​ជុំវិញអេក្រង់ដើម"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"បញ្ចូល​ទៅអេក្រង់ដើម"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"ចុចលើធាតុក្រាហ្វិកឱ្យជាប់ ដើម្បីផ្លាស់ទីវាជុំវិញអេក្រង់ដើម"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"បញ្ចូល​ទៅក្នុង​អេក្រង់​ដើម"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"បានបញ្ចូល​ធាតុក្រាហ្វិក <xliff:g id="WIDGET_NAME">%1$s</xliff:g> ទៅ​អេក្រង់ដើម"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"ការណែនាំ"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{ធាតុ​ក្រាហ្វិក #}other{ធាតុ​ក្រាហ្វិក #}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{ផ្លូវកាត់ #}other{ផ្លូវកាត់ #}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,46 +50,45 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ផ្ទាល់ខ្លួន"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ការងារ"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"ការសន្ទនា"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"ការកត់ត្រា"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"ទទួលបាន​ព័ត៌មានដែលមានប្រយោជន៍​យ៉ាងងាយស្រួល"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"ដើម្បីទទួលបាន​ព័ត៌មាន​ដោយមិនចាំបាច់​បើកកម្មវិធី អ្នកអាចបញ្ចូលធាតុ​ក្រាហ្វិកទៅក្នុង​អេក្រង់ដើម​របស់អ្នក"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"ដើម្បីទទួលបាន​ព័ត៌មាន​ដោយមិនចាំបាច់​បើកកម្មវិធី អ្នកអាចបញ្ចូលធាតុ​ក្រាហ្វិកទៅក្នុង​អេក្រង់ដើម​របស់អ្នក"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"ចុចដើម្បីប្ដូរការកំណត់ធាតុ​ក្រាហ្វិក"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"យល់ហើយ"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"ប្ដូរការកំណត់ធាតុ​ក្រាហ្វិក"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"ស្វែងរក​កម្មវិធី"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"កំពុងផ្ទុកកម្មវិធី…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"រកមិនឃើញកម្មវិធី​ដែលត្រូវគ្នាជាមួយ \"<xliff:g id="QUERY">%1$s</xliff:g>\" ទេ"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"ស្វែងរកកម្មវិធីច្រើនទៀត"</string>
     <string name="label_application" msgid="8531721983832654978">"កម្មវិធី"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"កម្មវិធី​ទាំងអស់"</string>
     <string name="notifications_header" msgid="1404149926117359025">"ការ​ជូនដំណឹង"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"ចុចឱ្យជាប់​ដើម្បីផ្លាស់ទី​ផ្លូវកាត់​។"</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"ចុចពីរដង រួចសង្កត់ឱ្យជាប់ ដើម្បីផ្លាស់ទី​ផ្លូវកាត់ ឬប្រើ​សកម្មភាព​តាមបំណង​។"</string>
-    <string name="out_of_space" msgid="6692471482459245734">"គ្មានកន្លែង​នៅលើ​អេក្រង់ដើមនេះទេ"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"គ្មានកន្លែង​នៅលើ​អេក្រង់ដើមនេះទេ"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"គ្មាន​បន្ទប់​​ក្នុង​ថាស​និយម​ប្រើ"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"បញ្ជីកម្មវិធី"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"លទ្ធផលស្វែងរក"</string>
     <string name="all_apps_button_personal_label" msgid="1315764287305224468">"បញ្ជី​កម្មវិធី​ផ្ទាល់ខ្លួន"</string>
     <string name="all_apps_button_work_label" msgid="7270707118948892488">"បញ្ជី​កម្មវិធី​ការងារ"</string>
     <string name="remove_drop_target_label" msgid="7812859488053230776">"យកចេញ"</string>
-    <string name="uninstall_drop_target_label" msgid="4722034217958379417">"លុបការដំឡើង"</string>
+    <string name="uninstall_drop_target_label" msgid="4722034217958379417">"លុប"</string>
     <string name="app_info_drop_target_label" msgid="692894985365717661">"ព័ត៌មាន​កម្មវិធី"</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"ដំឡើង"</string>
     <string name="dismiss_prediction_label" msgid="3357562989568808658">"កុំណែនាំកម្មវិធី"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"ខ្ទាស់ការ​ព្យាករ"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"ដំឡើង​ផ្លូវកាត់"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"អនុញ្ញាត​ឲ្យ​កម្មវិធី​បន្ថែម​ផ្លូវកាត់​ ដោយ​មិន​ចាំបាច់​​អំពើ​ពី​អ្នក​ប្រើ។"</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"អាន​ការ​កំណត់​ និង​ផ្លូវកាត់​​អេក្រង់​ដើម"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"អនុញ្ញាត​ឲ្យ​កម្មវិធី​អាន​ការ​កំណត់ និង​ផ្លូវកាត់​ក្នុង​អេក្រង់​ដើម។"</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"សរសេរ​ការ​កំណត់ ​និង​ផ្លូវកាត់​​លើ​អេក្រង់​ដើម"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"អនុញ្ញាត​ឲ្យ​កម្មវិធី​ប្ដូរ​ការ​កំណត់ និង​ផ្លូវ​កាត់​ក្នុង​អេក្រង់​ដើម។"</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> មិនត្រូវបានអនុញ្ញាតឲ្យធ្វើការហៅទូរស័ព្ទទេ"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"អានការកំណត់ និងផ្លូវកាត់របស់អេក្រង់ដើម"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"អនុញ្ញាតឱ្យកម្មវិធីអានការកំណត់ និងផ្លូវកាត់នៅក្នុងអេក្រង់ដើម។"</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"សរសេរការកំណត់ និងផ្លូវកាត់សម្រាប់អេក្រង់ដើម"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"អនុញ្ញាតឱ្យកម្មវិធីប្ដូរការកំណត់ និងផ្លូវកាត់នៅក្នុងអេក្រង់ដើម។"</string>
     <string name="gadget_error_text" msgid="740356548025791839">"មិនអាចផ្ទុក​ធាតុក្រាហ្វិក​បានទេ"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"ការកំណត់​ធាតុក្រាហ្វិក"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"ចុច​ដើម្បី​បញ្ចប់​ការរៀបចំ"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"នេះ​​​ជា​កម្មវិធី​ប្រព័ន្ធ មិន​អាច​លុប​បាន​ទេ។"</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"កែ​ឈ្មោះ"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"បានបិទដំណើរការ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} មានការជូនដំណឹង #}other{{app_name} មានការជូនដំណឹង #}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} មានការជូនដំណឹង #}other{{app_name} មានការជូនដំណឹង #}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"ទំព័រ %1$d នៃ %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"អេក្រង់​ដើម %1$d នៃ %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"ទំព័រអេក្រង់ដើមថ្មី"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"ថត៖ <xliff:g id="NAME">%1$s</xliff:g>, ធាតុ <xliff:g id="SIZE">%2$d</xliff:g> ឬច្រើនជាងនេះ"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"ផ្ទាំង​រូបភាព"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"ផ្ទាំងរូបភាព និងរចនាប័ទ្ម"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"កែអេក្រង់ដើម"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"ការកំណត់​ទំព័រដើម"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"បានបិទដំណើរការដោយអ្នកគ្រប់គ្រងរបស់អ្នក"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"អនុញ្ញាតការបងិ្វលអេក្រង់ដើម"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"អនុញ្ញាតការបងិ្វលអេក្រង់ដើម"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"នៅពេលដែលបង្វិលទូរសព្ទ"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"ស្លាកជូនដំណឹង"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"បើក"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"ដើម្បីបង្ហាញស្លាកជូនដំណឹង សូមបើកការជូនដំណឹងកម្មវិធីសម្រាប់ <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"ប្ដូរ​ការកំណត់"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"បង្ហាញ​ស្លាក​ជូនដំណឹង"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"បញ្ចូល​រូបកម្មវិធី​ទៅក្នុង​អេក្រង់ដើម"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"ជម្រើសសម្រាប់​អ្នក​អភិវឌ្ឍន៍"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"បញ្ចូល​រូបកម្មវិធី​ទៅក្នុង​អេក្រង់ដើម"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"សម្រាប់កម្មវិធីថ្មី"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"មិន​ស្គាល់"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"លុបចេញ"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"កំពុង​ដំឡើង <xliff:g id="NAME">%1$s</xliff:g>, បាន​បញ្ចប់ <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"កំពុងដោនឡូត <xliff:g id="NAME">%1$s</xliff:g> បានបញ្ចប់ <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> កំពុងរង់ចាំការដំឡើង"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"តម្រូវឱ្យមាន​កំណែកម្មវិធីថ្មី"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"កម្មវិធីសម្រាប់​រូបតំណាងនេះ​មិនត្រូវបានដំឡើងកំណែ​ទេ។ អ្នកអាច​ដំឡើងកំណែ​ដោយផ្ទាល់ ដើម្បីបើក​ផ្លូវកាត់នេះឡើងវិញ ឬលុបរូបតំណាងនេះ។"</string>
+    <string name="dialog_update" msgid="2178028071796141234">"ដំឡើងកំណែ"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"លុប"</string>
     <string name="widgets_list" msgid="796804551140113767">"បញ្ជីធាតុ​ក្រាហ្វិក"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"បាន​បិទ​បញ្ជីធាតុ​ក្រាហ្វិក"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"បញ្ចូលទៅអេក្រង់ដើម"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"បញ្ចូល​ទៅក្នុង​អេក្រង់​ដើម"</string>
     <string name="action_move_here" msgid="2170188780612570250">"ផ្លាស់ធាតុមកទីនេះ"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"ធាតុដែលត្រូវបានបន្ថែមទៅអេក្រង់ដើម"</string>
     <string name="item_removed" msgid="851119963877842327">"បានដកធាតុចេញ"</string>
     <string name="undo" msgid="4151576204245173321">"ត្រឡប់វិញ"</string>
     <string name="action_move" msgid="4339390619886385032">"ផ្លាស់ទីធាតុ"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"ផ្លាស់ទីទៅជួរដេកទី <xliff:g id="NUMBER_0">%1$s</xliff:g> ជួរឈរទី <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"ផ្លាស់ទៅជួរដេក <xliff:g id="NUMBER_0">%1$s</xliff:g> ជួរឈរ <xliff:g id="NUMBER_1">%2$s</xliff:g> ក្នុង <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"ផ្លាស់ទីទៅទីតាំង <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"ផ្លាស់ទីទៅការចូលចិត្តទីតាំងទី <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"បានផ្លាស់ទីធាតុ"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"បានបន្ថែមធាតុទៅថតឯកសារ"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"បង្កើតថតឯកសារជាមួយ៖ <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"បានបង្កើតថតឯកសារ"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"ផ្លាស់ទៅអេក្រង់ដើម"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"ផ្លាស់ទីទៅអេក្រង់ដើម"</string>
     <string name="action_resize" msgid="1802976324781771067">"ប្ដូរទំហំ"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"បង្កើនទទឹង"</string>
     <string name="action_increase_height" msgid="459390020612501122">"បង្កើនកម្ពស់"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"កម្មវិធីការងារ​ត្រូវបានដាក់​គ្រឿងសម្គាល់ ហើយ​អ្នកគ្រប់គ្រង​ផ្នែកព័ត៌មានវិទ្យា​របស់អ្នក​អាចមើលឃើញ"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"យល់ហើយ"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"កម្មវិធី​ការងារ​ត្រូវបានផ្អាក"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"អ្នកនឹងមិន​ទទួលបាន​ការជូនដំណឹង​ពីកម្មវិធី​ការងាររបស់អ្នកទេ"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"កម្មវិធី​ការងារ​របស់អ្នក​មិនអាចផ្ញើ​ការជូនដំណឹង​ទៅអ្នក ប្រើប្រាស់ថ្ម​របស់អ្នក ឬ​ចូលប្រើ​ទីតាំង​របស់អ្នក​បានទេ"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"កម្មវិធីការងារ​ត្រូវបានបិទ។ កម្មវិធីការងារ​របស់អ្នកមិនអាចផ្ញើ​ការជូនដំណឹង​ទៅអ្នក ប្រើប្រាស់ថ្ម​របស់អ្នក ឬ​ចូលប្រើ​ទីតាំង​របស់អ្នក​បានទេ"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"អ្នកនឹងមិនទទួលបានការហៅទូរសព្ទ សារជាអក្សរ ឬការជូនដំណឹងពីកម្មវិធីការងាររបស់អ្នកទេ"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"កម្មវិធីការងារ​ត្រូវបានដាក់​គ្រឿងសម្គាល់ ហើយ​អ្នកគ្រប់គ្រង​ផ្នែកព័ត៌មានវិទ្យា​របស់អ្នក​អាចមើលឃើញ"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"យល់ហើយ"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"បិទ​កម្មវិធីការងារ"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"បើក​កម្មវិធី​ការងារ"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"ផ្អាក​កម្មវិធី​ការងារ"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"ឈប់ផ្អាក"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"តម្រង"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"ស្វែងរកក្នុងទូរសព្ទរបស់អ្នក"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ស្វែងរកក្នុង​ថេប្លេតរបស់អ្នក"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"បានបរាជ័យ៖ <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 9eda419..fdc73da 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"ಶಾರ್ಟ್‌ಕಟ್ ಲಭ್ಯವಿಲ್ಲ"</string>
     <string name="home_screen" msgid="5629429142036709174">"ಹೋಮ್"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"ಸ್ಪ್ಲಿಟ್ ಸ್ಕ್ರೀನ್"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"ಮೇಲಕ್ಕೆ ವಿಭಜಿಸಿ"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"ಎಡಕ್ಕೆ ವಿಭಜಿಸಿ"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"ಬಲಕ್ಕೆ ವಿಭಜಿಸಿ"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s ಗಾಗಿ ಆ್ಯಪ್ ಮಾಹಿತಿ"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"ಆ್ಯಪ್ ಜೋಡಿ ಉಳಿಸಿ"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"ವಿಜೆಟ್ ಸರಿಸಲು ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹಿಡಿದುಕೊಳ್ಳಿ."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"ವಿಜೆಟ್ ಸರಿಸಲು ಅಥವಾ ಕಸ್ಟಮ್ ಕ್ರಿಯೆಗಳನ್ನು ಬಳಸಲು ಡಬಲ್-ಟ್ಯಾಪ್ ಮಾಡಿ ಮತ್ತು ಹಿಡಿದುಕೊಳ್ಳಿ."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d ಅಗಲ ಮತ್ತು %2$d ಎತ್ತರ"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> ವಿಜೆಟ್"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"ಮುಖಪುಟದ ಪರದೆ ಸುತ್ತ ವಿಜೆಟ್ ಅನ್ನು ಸರಿಸಲು, ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಒತ್ತಿ ಹಿಡಿದುಕೊಳ್ಳಿ"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"ಮುಖಪುಟಕ್ಕೆ ಸೇರಿಸಿ"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"ಹೋಮ್ ಸ್ಕ್ರೀನ್ ಸುತ್ತ ವಿಜೆಟ್ ಅನ್ನು ಸರಿಸಲು, ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಒತ್ತಿ ಹಿಡಿದುಕೊಳ್ಳಿ"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ಗೆ ಸೇರಿಸಿ"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"ಹೋಮ್‌ಸ್ಕ್ರೀನ್‌ಗೆ <xliff:g id="WIDGET_NAME">%1$s</xliff:g> ವಿಜೆಟ್ ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"ಸಲಹೆಗಳು"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# ವಿಜೆಟ್}one{# ವಿಜೆಟ್‌ಗಳು}other{# ವಿಜೆಟ್‌ಗಳು}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# ಶಾರ್ಟ್‌ಕಟ್}one{# ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು}other{# ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -47,25 +46,25 @@
     <string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"ಹುಡುಕಿ"</string>
     <string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"ಹುಡುಕಾಟ ಪೆಟ್ಟಿಗೆಯಿಂದ ಪಠ್ಯವನ್ನು ತೆರವುಗೊಳಿಸಿ"</string>
     <string name="no_widgets_available" msgid="4337693382501046170">"ವಿಜೆಟ್‌ಗಳು ಮತ್ತು ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
-    <string name="no_search_results" msgid="3787956167293097509">"ಯಾವುದೇ ವಿಜೆಟ್‌ಗಳು ಅಥವಾ ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು ಕಂಡುಬಂದಿಲ್ಲ"</string>
+    <string name="no_search_results" msgid="3787956167293097509">"ಯಾವುದೇ ವಿಜೆಟ್‌ಗಳು ಅಥವಾ ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು ಪತ್ತೆಯಾಗಿಲ್ಲ"</string>
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ವೈಯಕ್ತಿಕ"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ಕೆಲಸ"</string>
-    <string name="widget_category_conversations" msgid="8894438636213590446">"ಸಂವಾದಗಳು"</string>
+    <string name="widget_category_conversations" msgid="8894438636213590446">"ಸಂಭಾಷಣೆಗಳು"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"ಟಿಪ್ಪಣಿ ತೆಗೆದುಕೊಳ್ಳುವುದು"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"ನಿಮ್ಮ ಬೆರಳ ತುದಿಯಲ್ಲಿ ಉಪಯುಕ್ತ ಮಾಹಿತಿ"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"ಆ್ಯಪ್‌ಗಳನ್ನು ತೆರೆಯದೆಯೇ ಮಾಹಿತಿಯನ್ನು ಪಡೆಯಲು, ನಿಮ್ಮ ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ನೀವು ವಿಜೆಟ್‌ಗಳನ್ನು ಸೇರಿಸಬಹುದು"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"ಆ್ಯಪ್‌ಗಳನ್ನು ತೆರೆಯದೆಯೇ ಮಾಹಿತಿಯನ್ನು ಪಡೆಯಲು, ನಿಮ್ಮ ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ನೀವು ವಿಜೆಟ್‌ಗಳನ್ನು ಸೇರಿಸಬಹುದು"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"ವಿಜೆಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"ಅರ್ಥವಾಯಿತು"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"ವಿಜೆಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಿ"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಹುಡುಕಿ"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ..."</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" ಹೊಂದಿಕೆಯ ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಕಂಡುಬಂದಿಲ್ಲ"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"ಮತ್ತಷ್ಟು ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಹುಡುಕಿ"</string>
     <string name="label_application" msgid="8531721983832654978">"ಆ್ಯಪ್"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"ಎಲ್ಲಾ ಆ್ಯಪ್‌ಗಳು"</string>
     <string name="notifications_header" msgid="1404149926117359025">"ಅಧಿಸೂಚನೆಗಳು"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"ಶಾರ್ಟ್‌ಕಟ್ ಸರಿಸಲು ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹಿಡಿದುಕೊಳ್ಳಿ."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"ಶಾರ್ಟ್‌ಕಟ್ ಸರಿಸಲು ಅಥವಾ ಕಸ್ಟಮ್ ಕ್ರಿಯೆಗಳನ್ನು ಬಳಸಲು ಡಬಲ್-ಟ್ಯಾಪ್ ಮಾಡಿ ಮತ್ತು ಹಿಡಿದುಕೊಳ್ಳಿ."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"ಈ ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ಸ್ಥಳಾವಕಾಶವಿಲ್ಲ"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"ಈ ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ಸ್ಥಳಾವಕಾಶವಿಲ್ಲ"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"ಮೆಚ್ಚಿನವುಗಳ ಟ್ರೇನಲ್ಲಿ ಹೆಚ್ಚಿನ ಸ್ಥಳಾವಕಾಶವಿಲ್ಲ"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಪಟ್ಟಿ"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"ಹುಡುಕಾಟ ಫಲಿತಾಂಶಗಳು"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"ಮುನ್ನೋಟ ಪಿನ್ ಮಾಡಿ"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ಸ್ಥಾಪಿಸಿ"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"ಬಳಕೆದಾರರ ಹಸ್ತಕ್ಷೇಪವಿಲ್ಲದೆ ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ಸೇರಿಸಲು ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"ಮುಖಪುಟದ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ಓದಿ"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"ಮುಖಪುಟದಲ್ಲಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ಓದಲು ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಅನುಮತಿ ನೀಡುತ್ತದೆ."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"ಮುಖಪುಟದ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ಬರೆಯಿರಿ"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"ಮುಖಪುಟದಲ್ಲಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಲು ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಅನುಮತಿ ನೀಡುತ್ತದೆ."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"ಫೋನ್ ಕರೆಗಳನ್ನು ಮಾಡಲು <xliff:g id="APP_NAME">%1$s</xliff:g> ಅಪ್ಲಿಕೇಶನ್‌‌ಗೆ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"ಹೋಮ್ ಸ್ಕ್ರೀನ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ಓದಿ"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ಓದಲು ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"ಹೋಮ್ ಸ್ಕ್ರೀನ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ಬರೆಯಿರಿ"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಲು ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"ವಿಜೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"ವಿಜೆಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"ಸೆಟಪ್ ಪೂರ್ಣಗೊಳಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"ಇದೊಂದು ಅಪ್ಲಿಕೇಶನ್ ಆಗಿದೆ ಮತ್ತು ಅಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"ಹೆಸರನ್ನು ಎಡಿಟ್ ಮಾಡಿ"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} ಆ್ಯಪ್‌ # ಅಧಿಸೂಚನೆಯನ್ನು ಹೊಂದಿದೆ}one{{app_name} ಆ್ಯಪ್‌ # ಅಧಿಸೂಚನೆಗಳನ್ನು ಹೊಂದಿದೆ}other{{app_name} ಆ್ಯಪ್‌ # ಅಧಿಸೂಚನೆಗಳನ್ನು ಹೊಂದಿದೆ}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} ಆ್ಯಪ್ # ಅಧಿಸೂಚನೆಯನ್ನು ಹೊಂದಿದೆ}one{{app_name} ಆ್ಯಪ್ # ಅಧಿಸೂಚನೆಗಳನ್ನು ಹೊಂದಿದೆ}other{{app_name} ಆ್ಯಪ್ # ಅಧಿಸೂಚನೆಗಳನ್ನು ಹೊಂದಿದೆ}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"%2$d ರಲ್ಲಿ %1$d ಪುಟ"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"%2$d ರಲ್ಲಿ %1$d ಮುಖಪುಟದ ಪರದೆ"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"ಹೊಸ ಮುಖಪುಟ ಪರದೆ"</string>
@@ -103,18 +101,20 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"ಫೋಲ್ಡರ್: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> ಅಥವಾ ಹೆಚ್ಚಿನ ಐಟಂಗಳು"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"ವಾಲ್‌ಪೇಪರ್‌ಗಳು"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"ವಾಲ್‌ಪೇಪರ್ ಮತ್ತು ಶೈಲಿ"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"ಹೋಮ್ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಎಡಿಟ್ ಮಾಡಿ"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"ಮುಖಪುಟ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ್ದಾರೆ"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"ಮುಖಪುಟ ತಿರುಗುವಿಕೆಯನ್ನು ಅನುಮತಿಸಿ"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"ಹೋಮ್ ಸ್ಕ್ರೀನ್ ತಿರುಗುವಿಕೆಯನ್ನು ಅನುಮತಿಸಿ"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"ಫೋನ್‌ ತಿರುಗಿಸಿದಾಗ"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"ಅಧಿಸೂಚನೆ ಡಾಟ್‌ಗಳು"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"ಆನ್ ಆಗಿದೆ"</string>
     <string name="notification_dots_desc_off" msgid="1760796511504341095">"ಆಫ್ ಆಗಿದೆ"</string>
-    <string name="title_missing_notification_access" msgid="7503287056163941064">"ಅಧಿಸೂಚನೆ ಪ್ರವೇಶ ಅಗತ್ಯವಿದೆ"</string>
+    <string name="title_missing_notification_access" msgid="7503287056163941064">"ನೋಟಿಫಿಕೇಶನ್ ಆ್ಯಕ್ಸೆಸ್ ಅಗತ್ಯವಿದೆ"</string>
     <string name="msg_missing_notification_access" msgid="281113995110910548">"ಅಧಿಸೂಚನೆ ಚುಕ್ಕೆಗಳನ್ನು ತೋರಿಸಲು, <xliff:g id="NAME">%1$s</xliff:g> ಗೆ ಅಪ್ಲಿಕೇಶನ್‌ ಅಧಿಸೂಚನೆಗಳನ್ನು ಆನ್‌ ಮಾಡಿ"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"ಸೆಟ್ಟಿಂಗ್‌‌ಗಳನ್ನು ಬದಲಾಯಿಸಿ"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"ಅಧಿಸೂಚನೆ ಡಾಟ್‌ಗಳನ್ನು ತೋರಿಸಿ"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ಗೆ ಆ್ಯಪ್ ಐಕಾನ್‌ಗಳು ಸೇರಿಸಿ"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"ಡೆವಲಪರ್ ಆಯ್ಕೆಗಳು"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ಗೆ ಆ್ಯಪ್ ಐಕಾನ್‌ಗಳನ್ನು ಸೇರಿಸಿ"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"ಹೊಸ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"ಅಪರಿಚಿತ"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"ತೆಗೆದುಹಾಕಿ"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲಾಗುತ್ತಿದೆ, <xliff:g id="PROGRESS">%2$s</xliff:g> ಪೂರ್ಣಗೊಂಡಿದೆ"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> ಡೌನ್‌ಲೋಡ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ, <xliff:g id="PROGRESS">%2$s</xliff:g> ಪೂರ್ಣಗೊಂಡಿದೆ"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> ಸ್ಥಾಪಿಸಲು ಕಾಯಲಾಗುತ್ತಿದೆ"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"ಆ್ಯಪ್ ಅಪ್‌ಡೇಟ್ ಅಗತ್ಯವಿದೆ"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"ಈ ಐಕಾನ್‌ಗಾಗಿ ಆ್ಯಪ್ ಅನ್ನು ಅಪ್‌ಡೇಟ್ ಮಾಡಲಾಗಿಲ್ಲ. ಈ ಶಾರ್ಟ್‌ಕಟ್ ಅನ್ನು ಮರು-ಸಕ್ರಿಯಗೊಳಿಸಲು ನೀವು ಹಸ್ತಚಾಲಿತವಾಗಿ ಅಪ್‌ಡೇಟ್ ಮಾಡಬಹುದು ಅಥವಾ ಐಕಾನ್ ಅನ್ನು ತೆಗೆದುಹಾಕಬಹುದು."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"ಅಪ್‌ಡೇಟ್ ಮಾಡಿ"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"ತೆಗೆದುಹಾಕಿ"</string>
     <string name="widgets_list" msgid="796804551140113767">"ವಿಜೆಟ್ ಪಟ್ಟಿ"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"ವಿಜೆಟ್ ಪಟ್ಟಿಯನ್ನು ಮುಚ್ಚಲಾಗಿದೆ"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"ಮುಖಪುಟಕ್ಕೆ ಸೇರಿಸಿ"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ಗೆ ಸೇರಿಸಿ"</string>
     <string name="action_move_here" msgid="2170188780612570250">"ಐಟಂ ಇಲ್ಲಿಗೆ ಸರಿಸಿ"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"ಮುಖಪುಟ ಪರದೆಗೆ ಐಟಂ ಸೇರಿಸಲಾಗಿದೆ"</string>
     <string name="item_removed" msgid="851119963877842327">"ಐಟಂ ತೆಗೆದುಹಾಕಲಾಗಿದೆ"</string>
     <string name="undo" msgid="4151576204245173321">"ರದ್ದುಮಾಡಿ"</string>
     <string name="action_move" msgid="4339390619886385032">"ಐಟಂ ಸರಿಸಿ"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"<xliff:g id="NUMBER_0">%1$s</xliff:g> ಸಾಲು <xliff:g id="NUMBER_1">%2$s</xliff:g> ಕಾಲಮ್‌ಗೆ ಸರಿಸಿ"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g> ನಲ್ಲಿ ಸಾಲು <xliff:g id="NUMBER_0">%1$s</xliff:g> ಅನ್ನು ಕಾಲಮ್ <xliff:g id="NUMBER_1">%2$s</xliff:g> ಗೆ ಸರಿಸಿ"</string>
     <string name="move_to_position" msgid="6750008980455459790">"<xliff:g id="NUMBER">%1$s</xliff:g> ಸ್ಥಾನಕ್ಕೆ ಸರಿಸಿ"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"ಮೆಚ್ಚಿನ <xliff:g id="NUMBER">%1$s</xliff:g> ಸ್ಥಾನಕ್ಕೆ ಸರಿಸಿ"</string>
     <string name="item_moved" msgid="4606538322571412879">"ಐಟಂ ಸರಿಸಲಾಗಿದೆ"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"ಐಟಂ ಅನ್ನು ಫೋಲ್ಡರ್‌ಗೆ ಸೇರಿಸಲಾಗಿದೆ"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"ಇದನ್ನು ಬಳಸಿಕೊಂಡು ಫೋಲ್ಡರ್ ರಚಿಸಿ: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"ಫೋಲ್ಡರ್ ರಚಿಸಲಾಗಿದೆ"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"ಮುಖಪುಟಕ್ಕೆ ಸರಿಸಿ"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ಗೆ ಸರಿಸಿ"</string>
     <string name="action_resize" msgid="1802976324781771067">"ಮರುಗಾತ್ರ"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"ಅಗಲವನ್ನು ಹೆಚ್ಚು ಮಾಡಿ"</string>
     <string name="action_increase_height" msgid="459390020612501122">"ಎತ್ತರವನ್ನು ಹೆಚ್ಚು ಮಾಡಿ"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್‌ಗಳನ್ನು ಬ್ಯಾಡ್ಜ್ ಮಾಡಲಾಗಿದೆ ಮತ್ತು ಅವುಗಳು ನಿಮ್ಮ IT ನಿರ್ವಾಹಕರಿಗೆ ಗೋಚರಿಸುತ್ತವೆ"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"ಸರಿ"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್‌ಗಳನ್ನು ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"ನಿಮ್ಮ ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್‌ಗಳಿಂದ ನೀವು ಅಧಿಸೂಚನೆಗಳನ್ನು ಸ್ವೀಕರಿಸುವುದಿಲ್ಲ"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"ನಿಮ್ಮ ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್‌ಗಳಿಗೆ ನಿಮಗೆ ಅಧಿಸೂಚನೆಗಳನ್ನು ಕಳುಹಿಸಲು, ನಿಮ್ಮ ಬ್ಯಾಟರಿಯನ್ನು ಬಳಸಲು ಅಥವಾ ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಾಗದು"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್‌ಗಳು ಆಫ್ ಆಗಿವೆ. ನಿಮ್ಮ ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್‌ಗಳು ನಿಮಗೆ ಅಧಿಸೂಚನೆಗಳನ್ನು ಕಳುಹಿಸಲು, ನಿಮ್ಮ ಬ್ಯಾಟರಿಯನ್ನು ಬಳಸಲು ಅಥವಾ ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"ನಿಮ್ಮ ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್‌ಗಳಿಂದ ನೀವು ಫೋನ್ ಕರೆಗಳು, ಪಠ್ಯ ಸಂದೇಶಗಳು ಅಥವಾ ಅಧಿಸೂಚನೆಗಳನ್ನು ಸ್ವೀಕರಿಸುವುದಿಲ್ಲ"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್‌ಗಳು ಬ್ಯಾಡ್ಜ್ ಮಾಡಲಾಗಿದೆ ಮತ್ತು ನಿಮ್ಮ IT ನಿರ್ವಾಹಕರಿಗೆ ಗೋಚರಿಸುತ್ತದೆ"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"ಅರ್ಥವಾಯಿತು"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್‌ಗಳನ್ನು ಆಫ್ ಮಾಡಿ"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್‌ಗಳನ್ನು ಆನ್ ಮಾಡಿ"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್‌ಗಳನ್ನು ವಿರಾಮಗೊಳಿಸಿ"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"ವಿರಾಮವನ್ನು ರದ್ದುಗೊಳಿಸಿ"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"ಫಿಲ್ಟರ್‌"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"ನಿಮ್ಮ ಫೋನ್ ಅನ್ನು ಹುಡುಕಿ"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ ಅನ್ನು ಹುಡುಕಿ"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"ವಿಫಲವಾಗಿದೆ: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 9859752..ab682a4 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"바로가기를 사용할 수 없음"</string>
     <string name="home_screen" msgid="5629429142036709174">"홈"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"화면 분할"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"위쪽으로 분할"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"왼쪽으로 분할"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"오른쪽으로 분할"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s 앱 정보"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"앱 페어링 저장"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"길게 터치하여 위젯을 이동하세요."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"두 번 탭한 다음 길게 터치하여 위젯을 이동하거나 맞춤 작업을 사용하세요."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d×%2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"너비 %1$d, 높이 %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"위젯 <xliff:g id="WIDGET_NAME">%1$s</xliff:g>개"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"홈 화면에서 위젯을 이동하려면 길게 터치하세요."</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"홈 화면에 추가"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"홈 화면에서 위젯을 이동하려면 길게 터치하세요."</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"홈 화면에 추가"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> 위젯이 홈 화면에 추가됨"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"추천"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{위젯 #개}other{위젯 #개}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{바로가기 #개}other{바로가기 #개}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"개인 위젯"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"직장 위젯"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"대화"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"메모"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"빠르게 유용한 정보 확인"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"앱을 열지 않고 정보를 확인하려면​ 홈 화면에 위젯을 추가하세요."</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"앱을 열지 않고 정보를 확인하려면 홈 화면에 위젯을 추가하세요."</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"탭하여 위젯 설정 변경"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"확인"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"위젯 설정 변경"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"앱 검색"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"앱 로드 중…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"\'<xliff:g id="QUERY">%1$s</xliff:g>\'과(와) 일치하는 앱이 없습니다."</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"더 많은 앱 검색"</string>
     <string name="label_application" msgid="8531721983832654978">"앱"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"모든 앱"</string>
     <string name="notifications_header" msgid="1404149926117359025">"알림"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"길게 터치하여 바로가기를 이동하세요."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"두 번 탭한 다음 길게 터치하여 바로가기를 이동하거나 맞춤 작업을 사용하세요."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"홈 화면에 더 이상 공간이 없습니다."</string>
+    <string name="out_of_space" msgid="6455557115204099579">"홈 화면에 더 이상 공간이 없습니다."</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"즐겨찾기 트레이에 더 이상 공간이 없습니다."</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"앱 목록"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"검색결과"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"예상 앱 고정"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"바로가기 설치"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"앱이 사용자의 작업 없이 바로가기를 추가할 수 있도록 합니다."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"홈 설정 및 바로가기 읽기"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"앱이 홈에 있는 설정 및 바로가기를 읽을 수 있도록 합니다."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"홈 설정 및 바로가기 쓰기"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"앱이 홈에 있는 설정 및 바로가기를 변경할 수 있도록 합니다."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g>에서 전화를 걸 수 없습니다."</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"홈 설정 및 바로가기 읽기"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"앱이 홈에 있는 설정 및 바로가기를 읽을 수 있도록 허용합니다."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"홈 설정 및 바로가기 쓰기"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"앱이 홈에 있는 설정 및 바로가기를 변경할 수 있도록 허용합니다."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"위젯을 로드할 수 없습니다."</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"위젯 설정"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"탭하여 설정을 완료하세요."</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"시스템 앱은 제거할 수 없습니다."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"이름 수정"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> 사용 안함"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} 알림 #개}other{{app_name}알림 #개}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} 알림 #개}other{{app_name} 알림 #개}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"페이지 %1$d/%2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"홈 화면 %1$d/%2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"새로운 홈 화면 페이지"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"폴더: <xliff:g id="NAME">%1$s</xliff:g>, 항목 <xliff:g id="SIZE">%2$d</xliff:g>개 이상"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"배경화면"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"배경화면 및 스타일"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"홈 화면 수정"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"홈 설정"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"관리자가 사용 중지함"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"홈 화면 회전 허용"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"홈 화면 회전 허용"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"휴대전화 회전 시"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"알림 표시 점"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"사용"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"알림 표시점을 표시하려면 <xliff:g id="NAME">%1$s</xliff:g>의 앱 알림을 사용 설정하세요."</string>
     <string name="title_change_settings" msgid="1376365968844349552">"설정 변경"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"알림 표시 점 보기"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"홈 화면에 앱 아이콘 추가"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"개발자 옵션"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"홈 화면에 앱 아이콘 추가"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"새로 설치한 앱에 적용"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"알 수 없음"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"삭제"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> 설치 중, <xliff:g id="PROGRESS">%2$s</xliff:g> 완료"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> 다운로드 중, <xliff:g id="PROGRESS">%2$s</xliff:g> 완료"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> 설치 대기 중"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"앱 업데이트 필요"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"바로가기 아이콘의 앱이 업데이트되지 않았습니다. 직접 업데이트하여 앱 바로가기를 다시 사용할 수 있도록 하거나 아이콘을 삭제하세요."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"업데이트"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"삭제"</string>
     <string name="widgets_list" msgid="796804551140113767">"위젯 목록"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"위젯 목록 닫힘"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"홈 화면에 추가"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"홈 화면에 추가"</string>
     <string name="action_move_here" msgid="2170188780612570250">"여기에 항목을 이동"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"홈 화면에 항목 추가됨"</string>
     <string name="item_removed" msgid="851119963877842327">"항목 삭제됨"</string>
     <string name="undo" msgid="4151576204245173321">"실행취소"</string>
     <string name="action_move" msgid="4339390619886385032">"항목 이동"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"<xliff:g id="NUMBER_0">%1$s</xliff:g>행 <xliff:g id="NUMBER_1">%2$s</xliff:g>열로 이동"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g>의 <xliff:g id="NUMBER_0">%1$s</xliff:g>행 <xliff:g id="NUMBER_1">%2$s</xliff:g>열로 이동"</string>
     <string name="move_to_position" msgid="6750008980455459790">"<xliff:g id="NUMBER">%1$s</xliff:g>번 위치로 이동"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"즐겨찾는 <xliff:g id="NUMBER">%1$s</xliff:g>번 위치로 이동"</string>
     <string name="item_moved" msgid="4606538322571412879">"항목을 이동했습니다."</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"항목이 폴더에 추가되었습니다."</string>
     <string name="create_folder_with" msgid="4050141361160214248">"다음이 포함된 폴더 만들기: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"폴더를 만들었습니다."</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"홈 화면으로 이동"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"홈 화면으로 이동"</string>
     <string name="action_resize" msgid="1802976324781771067">"크기 조정"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"폭 늘리기"</string>
     <string name="action_increase_height" msgid="459390020612501122">"높이 늘리기"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"직장 앱에는 배지가 있으며, IT 관리자는 직장 앱을 확인할 수 있습니다"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"확인"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"직장 앱이 일시중지됨"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"직장 앱에서 보내는 알림을 받지 않게 됩니다."</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"직장 앱에서 알림을 보내거나 배터리를 사용하거나 위치 정보에 액세스할 수 없습니다."</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"직장 앱이 꺼져 있습니다. 직장 앱에서 알림을 보내거나 배터리를 사용하거나 위치 정보에 액세스할 수 없습니다."</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"전화, 문자 메시지 또는 직장 앱에서 보내는 알림을 수신하지 않습니다."</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"직장 앱에는 배지가 있으며, IT 관리자는 직장 앱을 확인할 수 있습니다."</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"확인"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"직장 앱 사용 중지"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"직장 앱 사용 설정"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"직장 앱 일시중지"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"일시중지 해제"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"필터"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"휴대전화 속 항목 검색"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"태블릿 속 항목 검색"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"실패: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 5378ca5..2047691 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Кыска жол жок"</string>
     <string name="home_screen" msgid="5629429142036709174">"Башкы экран"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Экранды бөлүү"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Өйдө бөлүү"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Солго бөлүү"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Оңго бөлүү"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s колдонмосу жөнүндө маалымат"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Эки колдонмону бир маалда пайдаланууну сактоо"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Виджетти кое бербей басып туруп жылдырыңыз."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Виджетти жылдыруу үчүн эки жолу таптап, кармап туруңуз же ыңгайлаштырылган аракеттерди колдонуңуз."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"Туурасы: %1$d, бийиктиги: %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> виджети"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Башкы экранга жылдыруу үчүн виджетти коё бербей басып туруңуз"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Башкы экранга кошуу"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Башкы экранга жылдыруу үчүн виджетти коё бербей басып туруңуз"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Башкы экранга кошуу"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> виджети башкы экранга кошулду"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Сунуштар"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# виджет}other{# виджет}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# ыкчам баскыч}other{# ыкчам баскыч}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Жеке виджеттер"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Жумуш"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Сүйлөшүүлөр"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Эскертме жазуу"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Керектүү маалымат манжаңыздын учунда"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Колдонмолорду ачпастан керектүү маалыматты алуу үчүн башкы экранга виджеттерди кошуңуз"</string>
-    <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Виджеттин жөндөөлөрүн өзгөртүү үчүн таптап коюңуз"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Бир нерсе билүү үчүн колдонмолорду улам ачып убара болбостон, башкы экранга виджеттерди кошуп коюңуз."</string>
+    <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Виджеттин параметрлерин өзгөртүү үчүн таптап коюңуз"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Түшүндүм"</string>
-    <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Виджеттин жөндөөлөрүн өзгөртүү"</string>
+    <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Виджеттин параметрлерин өзгөртүү"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Колдонмолорду издөө"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Колдонмолор жүктөлүүдө…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" сурамына дал келген колдонмолор табылган жок"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Көбүрөөк колдонмолорду издөө"</string>
     <string name="label_application" msgid="8531721983832654978">"Колдонмо"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Бардык колдонмолор"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Билдирмелер"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Ыкчам баскычты жылдыруу үчүн коё бербей басып туруңуз."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Ыкчам баскычты жылдыруу үчүн эки жолу таптап, кармап туруңуз же ыңгайлаштырылган аракеттерди колдонуңуз."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Башкы экранда бош орун жок"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Башкы экранда бош орун жок"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Тандамалдар тайпасында орун калган жок"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Колдонмолор тизмеси"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Табылган нерселер"</string>
@@ -75,22 +74,21 @@
     <string name="uninstall_drop_target_label" msgid="4722034217958379417">"Чыгарып салуу"</string>
     <string name="app_info_drop_target_label" msgid="692894985365717661">"Колдонмо тууралуу"</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"Орнотуу"</string>
-    <string name="dismiss_prediction_label" msgid="3357562989568808658">"Колдонмо сунушталбасын"</string>
+    <string name="dismiss_prediction_label" msgid="3357562989568808658">"Cунушталбасын"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"Божомолдонгон колдонмону кадап коюу"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"тез чакырмаларды орнотуу"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Колдонмого колдонуучуга кайрылбастан тез чакырма кошууга уруксат берет."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"Үйдүн тууралоолорун жана тез чакырмаларын окуу"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Колдонмого Үйдүн тууралоолорун жана тез чакырмаларын окууга уруксат берет."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"Үйдүн тууралоолорун жана тез чакырмаларын жазуу"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Колдонмого Үйдүн тууралоолорун жана тез чакырмаларын өзгөртүүгө уруксат берет."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> телефон чалууларды аткарууга уруксаты жок"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"үйдүн параметрлерин жана ыкчам баскычтарын окуу"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Колдонмого үйдүн параметрлерин жана ыкчам баскычтарын окууга уруксат берет."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"үйдүн параметрлерин жана ыкчам баскычтарын жазуу"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Колдонмого үйдүн параметрлерин жана ыкчам баскычтарын өзгөртүүгө уруксат берет."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Виджет жүктөлбөй жатат"</string>
-    <string name="gadget_setup_text" msgid="8348374825537681407">"Виджеттин жөндөөлөрү"</string>
-    <string name="gadget_complete_setup_text" msgid="309040266978007925">"Жөндөп бүтүү үчүн таптап коюңуз"</string>
+    <string name="gadget_setup_text" msgid="8348374825537681407">"Виджеттин параметрлери"</string>
+    <string name="gadget_complete_setup_text" msgid="309040266978007925">"Аягына чейин тууралоо үчүн басып коюңуз"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Бул системдик колдонмо жана аны чечкенге болбойт."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Аталышын түзөтүү"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> өчүрүлгөн"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name}, # билдирмеси бар}other{{app_name}, # билдирмеси бар}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name}, # билдирмеси бар}other{{app_name}, # билдирмеси бар}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"%2$d ичинен %1$d барак"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Үй экраны %2$d ичинен %1$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Жаңы башкы экран барагы"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"<xliff:g id="NAME">%1$s</xliff:g> папкасындагы объекттер: <xliff:g id="SIZE">%2$d</xliff:g> же андан көбүрөөк"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Тушкагаздар"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Тушкагаз жана стиль"</string>
-    <string name="settings_button_text" msgid="8873672322605444408">"Башкы бет жөндөөлөрү"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Башкы экранды түзөтүү"</string>
+    <string name="settings_button_text" msgid="8873672322605444408">"Башкы бет параметрлери"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Администраторуңуз өчүрүп койгон"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Башкы экранды бурууга уруксат берүү"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Башкы экранды бурууга уруксат берүү"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Телефон бурулганда"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Билдирмелер белгилери"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Күйүк"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Эскертме белгилерин көрсөтүү максатында, <xliff:g id="NAME">%1$s</xliff:g> үчүн колдонмонун билдирмелерин күйгүзүү керек"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Параметрлерди өзгөртүү"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Билдирмелер белгилерин көрсөтүү"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Колдонмонун сүрөтчөсүн Башкы экранга кошуу"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Иштеп чыгуучунун параметрлери"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Колдонмонун сүрөтчөсүн башкы экранга кошуу"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Жаңы колдонмолор үчүн"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Белгисиз"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Өчүрүү"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> орнотулууда, <xliff:g id="PROGRESS">%2$s</xliff:g> аткарылды"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> жүктөлүп алынууда, <xliff:g id="PROGRESS">%2$s</xliff:g> аяктады"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> орнотулушу күтүлүүдө"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Колдонмону жаңыртыңыз"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Бул сүрөтчөнүн колдонмосу жаңыртылган эмес. Ыкчам баскычты кайра иштетүү үчүн аны кол менен жаңыртып же сүрөтчөнү өчүрүп койсоңуз болот."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Жаңыртуу"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Өчүрүү"</string>
     <string name="widgets_list" msgid="796804551140113767">"Виджеттердин тизмеси"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Виджеттердин тизмеси жабык"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Башкы экранга кошуу"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Башкы экранга кошуу"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Бул нерсени бул жерге жылдыруу"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Башкы экранга кошулду"</string>
     <string name="item_removed" msgid="851119963877842327">"Жоюлду"</string>
     <string name="undo" msgid="4151576204245173321">"Кайтаруу"</string>
     <string name="action_move" msgid="4339390619886385032">"Муну жылдыруу"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"<xliff:g id="NUMBER_0">%1$s</xliff:g> катарга <xliff:g id="NUMBER_1">%2$s</xliff:g> тилкеге жылдыруу"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g> ичиндеги <xliff:g id="NUMBER_1">%2$s</xliff:g>-тилкенин <xliff:g id="NUMBER_0">%1$s</xliff:g>-cабына жылдыруу"</string>
     <string name="move_to_position" msgid="6750008980455459790">"<xliff:g id="NUMBER">%1$s</xliff:g> орунга жылдыруу"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Тандалмаларга <xliff:g id="NUMBER">%1$s</xliff:g> жылдыруу"</string>
     <string name="item_moved" msgid="4606538322571412879">"Нерсе жылдырылды"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Нерсе куржунга кошулду"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Төмөнкү менен куржун түзүү: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Куржун түзүлдү"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Башкы экранга жылдыруу"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Башкы экранга жылдыруу"</string>
     <string name="action_resize" msgid="1802976324781771067">"Өлчөмүн өзгөртүү"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Кеңейтүү"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Бийиктетүү"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Жумуш колдонмолору белгиленип, аларды IT администраторлору көрөт"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Түшүндүм"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Жумуш колдонмолору тындырылды"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Жумуш колдонмолоруңуздан билдирмелерди албайсыз"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Жумуш колдонмолору билдирмелерди жөнөтүп, түзмөгүңүздүн батареясын керектеп же кайда жүргөнүңүздү көрө албайт"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Жумуш колдонмолору өчүк жана билдирмелерди жөнөтүп, түзмөгүңүздүн батареясын керектеп же кайда жүргөнүңүздү көрө албайт"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Жумуш колдонмолоруңуздан телефон чалууларды, текст түрүндөгү билдирүүлөрдү же билдирмелерди албайсыз"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Жумуш колдонмолору белгиленип, аларды IT администраторлору көрөт"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Түшүндүм"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Жумуш колдонмолорун өчүрүү"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Жумуш колдонмолорун күйгүзүү"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Жумуш колдонмолорун тындыруу"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Улантуу"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Чыпкалоо"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Телефондо издөө"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Планшетте издөө"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Аткарылган жок: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml
index 422240c..d0c26aa 100644
--- a/res/values-land/dimens.xml
+++ b/res/values-land/dimens.xml
@@ -23,7 +23,6 @@
 
     <!-- Dynamic grid -->
     <dimen name="dynamic_grid_edge_margin">15.28dp</dimen>
-    <dimen name="dynamic_grid_icon_drawable_padding">4dp</dimen>
     <dimen name="dynamic_grid_drop_target_size">36dp</dimen>
     <dimen name="cell_layout_padding">20dp</dimen>
 
diff --git a/res/values-land/styles.xml b/res/values-land/styles.xml
new file mode 100644
index 0000000..52474da
--- /dev/null
+++ b/res/values-land/styles.xml
@@ -0,0 +1,21 @@
+<?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.
+  -->
+
+<resources>
+    <style name="CellStyleDefault">
+        <item name="iconDrawablePadding">4dp</item>
+    </style>
+</resources>
\ No newline at end of file
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index e47fefd..166c370 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"ບໍ່ສາມາດໃຊ້ທາງລັດໄດ້"</string>
     <string name="home_screen" msgid="5629429142036709174">"ໂຮມສະກຣີນ"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"ແບ່ງໜ້າຈໍ"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"ແບ່ງເທິງ"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"ແບ່ງຊ້າຍ"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"ແບ່ງຂວາ"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"ຂໍ້ມູນແອັບສຳລັບ %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"ບັນທຶກຈັບຄູ່ແອັບ"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"ແຕະຄ້າງໄວ້ເພື່ອຍ້າຍວິດເຈັດ."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"ແຕະສອງເທື່ອຄ້າງໄວ້ເພື່ອຍ້າຍວິດເຈັດ ຫຼື ໃຊ້ຄຳສັ່ງກຳນົດເອງ."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"ກວ້າງ %1$d ຄູນສູງ %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"ວິດເຈັດ <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"ແຕະວິດເຈັດຄ້າງໄວ້ເພື່ອຍ້າຍມັນໄປມາຢູ່ໂຮມສະກຣີນ"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"ເພີ່ມໄປໃສ່ໂຮມສະກຣີນ"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"ແຕະໃສ່ວິດເຈັດຄ້າງໄວ້ເພື່ອຍ້າຍມັນໄປມາຢູ່ໂຮມສະກຣີນ"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"ເພີ່ມໃສ່ໂຮມສະກຣີນ"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"ເພີ່ມວິດເຈັດ <xliff:g id="WIDGET_NAME">%1$s</xliff:g> ໃສ່ໂຮມສະກຣີນແລ້ວ"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"ການແນະນຳ"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# ວິດເຈັດ}other{# ວິດເຈັດ}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# ທາງລັດ}other{# ທາງລັດ}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ສ່ວນຕົວ"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ວຽກ"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"ການສົນທະນາ"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"ການຈົດບັນທຶກ"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"ຂໍ້ມູນທີ່ເປັນປະໂຫຍດຢູ່ປາຍນິ້ວຂອງທ່ານ"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"ເພື່ອຮັບຂໍ້ມູນໂດຍບໍ່ຕ້ອງເປີດແອັບ, ທ່ານສາມາດເພີ່ມວິດເຈັດໃສ່ໂຮມສະກຣີນຂອງທ່ານໄດ້"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"ເພື່ອຮັບຂໍ້ມູນໂດຍບໍ່ຕ້ອງເປີດແອັບ, ທ່ານສາມາດເພີ່ມວິດເຈັດໃສ່ໂຮມສະກຣີນຂອງທ່ານໄດ້"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"ແຕະເພື່ອປ່ຽນການຕັ້ງຄ່າວິດເຈັດ"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"ເຂົ້າໃຈແລ້ວ"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"ປ່ຽນການຕັ້ງຄ່າວິດເຈັດ"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"ຊອກຫາແອັບ"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"ກໍາລັງໂຫຼດແອັບ…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"ບໍ່ພົບແອັບທີ່ກົງກັບ \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"ຊອກຫາແອັບເພີ່ມເຕີມ"</string>
     <string name="label_application" msgid="8531721983832654978">"ແອັບ"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"ແອັບທັງໝົດ"</string>
     <string name="notifications_header" msgid="1404149926117359025">"ການແຈ້ງເຕືອນ"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"ແຕະຄ້າງໄວ້ເພື່ອຍ້າຍທາງລັດ."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"ແຕະສອງເທື່ອຄ້າງໄວ້ເພື່ອຍ້າຍທາງລັດ ຫຼື ໃຊ້ຄຳສັ່ງກຳນົດເອງ."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"ບໍ່ມີບ່ອນຫວ່າງໃນໜ້າໂຮມສະກຣີນນີ້"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"ບໍ່ມີບ່ອນຫວ່າງໃນໂຮມສະກຣີນນີ້"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"ບໍ່ມີບ່ອນຫວ່າງໃນຖາດສຳລັບເກັບສິ່ງທີ່ໃຊ້ເປັນປະຈຳ"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"ລາຍຊື່ແອັບ"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"ຜົນການຊອກຫາ"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"ປັກໝຸດການຄາດເດົາ"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"ຕິດຕັ້ງທາງລັດ"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"ອະນຸຍາດໃຫ້ແອັບຯ ເພີ່ມທາງລັດໂດຍບໍ່ຕ້ອງຮັບການຢືນຢັນຈາກຜູ່ໃຊ້."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"ອ່ານການຕັ້ງຄ່າໜ້າຫຼັກ ແລະທາງລັດ"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"ອະນຸຍາດໃຫ້ແອັບຯດັ່ງກ່າວອ່ານການຕັ້ງຄ່າ ແລະທາງລັດໃນໜ້າຫຼັກ."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"ຂຽນການຕັ້ງຄ່າໜ້າຫຼັກ ແລະທາງລັດ"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"ອະນຸຍາດໃຫ້ແອັບຯດັ່ງກ່າວ ປ່ຽນການຕັ້ງຄ່າ ແລະທາງລັດໃນໜ້າຫຼັກ."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> ບໍ່​ໄດ້​ຮັບ​ອະ​ນຸ​ຍາດ​ໃຫ້​ໂທ"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"ອ່ານການຕັ້ງຄ່າໜ້າຫຼັກ ແລະ ທາງລັດ"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"ອະນຸຍາດໃຫ້ແອັບອ່ານການຕັ້ງຄ່າ ແລະ ທາງລັດໃນໜ້າຫຼັກ."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"ຂຽນການຕັ້ງຄ່າໜ້າຫຼັກ ແລະ ທາງລັດ"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"ອະນຸຍາດໃຫ້ແອັບປ່ຽນການຕັ້ງຄ່າ ແລະ ທາງລັດໃນໜ້າຫຼັກ."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"ບໍ່ສາມາດໂຫຼດວິດເຈັດໄດ້"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"ການຕັ້ງຄ່າວິດເຈັດ"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"ແຕະເພື່ອຕັ້ງຄ່າໃຫ້ແລ້ວ"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"ນີ້ແມ່ນແອັບຯຂອງລະບົບ ແລະບໍ່ສາມາດຖອນການຕິດຕັ້ງອອກໄດ້."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"ແກ້ໄຂຊື່"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"ປິດການນຳໃຊ້ <xliff:g id="APP_NAME">%1$s</xliff:g> ແລ້ວ"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} ມີ # ການແຈ້ງເຕືອນ}other{{app_name} ມີ # ການແຈ້ງເຕືອນ}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} ມີ # ການແຈ້ງເຕືອນ}other{{app_name} ມີ # ການແຈ້ງເຕືອນ}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"ໜ້າ %1$d ຈາກ %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"ໜ້າຈໍຫຼັກ %1$d ໃນ %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"ໜ້າ​ຂອງ​ໜ້າ​ຈໍ​ຫຼັກ​ໃໝ່"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"ໂຟນເດີ: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> ຫຼື ລາຍການເພີ່ມເຕີມ"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"ພາບພື້ນຫຼັງ"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"ຮູບພື້ນຫຼັງ ແລະ ຮູບແບບ"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"ແກ້ໄຂໂຮມສະກຣີນ"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"ການຕັ້ງຄ່າໜ້າຫຼັກ"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"ຖືກປິດການນຳໃຊ້ໂດຍຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"ອະນຸຍາດໃຫ້ໝຸນໜ້າຈໍຢູ່ໜ້າຫຼັກໄດ້"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"ອະນຸຍາດໃຫ້ໝຸນໜ້າຈໍຢູ່ໂຮມສະກຣີນໄດ້"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"ເມື່ອໝຸນໂທລະສັບ"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"ຈຸດການແຈ້ງເຕືອນ"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"ເປີດ"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"ເພື່ອສະແດງຈຸດການແຈ້ງເຕືອນ, ໃຫ້ເປີດການແຈ້ງເຕືອນສຳລັບ <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"ບັນທຶກການຕັ້ງຄ່າ"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"ສະແດງຈຸດການແຈ້ງເຕືອນ"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"ເພີ່ມໄອຄອນແອັບໄປໃສ່ໜ້າຈໍຫຼັກ"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"ຕົວເລືອກນັກພັດທະນາ"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"ເພີ່ມໄອຄອນແອັບໄປໃສ່ໂຮມສະກຣີນ"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"ສຳລັບແອັບໃໝ່"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"​ບໍ່​ຮູ້​ຈັກ"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"ລຶບ​"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"ກຳລັງຕິດຕັ້ງ <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="PROGRESS">%2$s</xliff:g> ສຳເລັດແລ້ວ"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> ກຳ​ລັງ​ດາວ​ໂຫຼດ, <xliff:g id="PROGRESS">%2$s</xliff:g> ສຳ​ເລັດ"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> ກຳ​ລັງ​ລໍ​ຖ້າ​ຕິດ​ຕັ້ງ"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"ຈຳເປັນຕ້ອງອັບເດດແອັບ"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"ບໍ່ໄດ້ອັບເດດແອັບສຳລັບໄອຄອນນີ້. ທ່ານສາມາດອັບເດດເອງໄດ້ເພື່ອເປີດການນຳໃຊ້ທາງລັດນີ້ຄືນໃໝ່ ຫຼື ລຶບໄອຄອນດັ່ງກ່າວອອກ."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"ອັບເດດ"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"ລຶບອອກ"</string>
     <string name="widgets_list" msgid="796804551140113767">"ລາຍຊື່ວິດເຈັດ"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"ປິດລາຍຊື່ວິດເຈັດແລ້ວ"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"ເພີ່ມໃສ່ໜ້າຈໍຫຼັກ"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"ເພີ່ມໃສ່ໂຮມສະກຣີນ"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Move item here"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"ເພີ່ມ​ລາຍ​ການ​ໃສ່​ໜ້າ​ຈໍ​ຫຼັກ​ແລ້ວ"</string>
     <string name="item_removed" msgid="851119963877842327">"ເອົາ​ລາຍ​ການ​ອອກ​ໄປ​ແລ້ວ"</string>
     <string name="undo" msgid="4151576204245173321">"ຍົກເລີກ"</string>
     <string name="action_move" msgid="4339390619886385032">"ຍ້າຍ​ລາຍ​ການ"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"ຍ້າຍ​ໄປ​ໃສ່​ແຖວ <xliff:g id="NUMBER_0">%1$s</xliff:g> ຖັນ <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"ຍ້າຍໄປແຖວ <xliff:g id="NUMBER_0">%1$s</xliff:g> ຖັນ <xliff:g id="NUMBER_1">%2$s</xliff:g> ໃນ <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"ຍ້າຍ​ໄປ​ໃສ່​ຕຳ​ແໜ່ງ <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"ຍ້າຍ​ໄປ​ໃສ່​ຕຳ​ແໜ່ງ​ທີ່​ມັກ <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"ຍ້າຍ​ລາຍ​ການ​ແລ້ວ"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"ເພີ່ມ​ລາຍ​ການ​ໃສ່​ໂຟ​ລ​ເດີ​ແລ້ວ"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"ສ້າງ​ໂຟ​ລ​ເດີ​ກັບ: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"ສ້າງ​ໂຟ​ລ​ເດີ​ແລ້ວ"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"ຍ້າຍ​ໄປ​ໃສ່​ໜ້າ​ຈໍ​ຫຼັກ"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"ຍ້າຍໄປໂຮມສະກຣີນ"</string>
     <string name="action_resize" msgid="1802976324781771067">"ປັບຂະໜາດ"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"ເພີ່ມ​ລວງ​ກ້​ວາງ​ຂຶ້ນ"</string>
     <string name="action_increase_height" msgid="459390020612501122">"ເພີ່ມ​ລວງ​ສູງ​ຂຶ້ນ"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"ແອັບບ່ອນເຮັດວຽກແມ່ນຖືກຕິດປ້າຍ ແລະ ສະແດງໃຫ້ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານເຫັນ"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"ເຂົ້າໃຈແລ້ວ"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"ຢຸດແອັບວຽກໄວ້ຊົ່ວຄາວແລ້ວ"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"ທ່ານຈະບໍ່ໄດ້ຮັບການແຈ້ງເຕືອນຈາກແອັບບ່ອນເຮັດວຽກຂອງທ່ານ"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"ແອັບບ່ອນເຮັດວຽກຂອງທ່ານຈະບໍ່ສາມາດສົ່ງການແຈ້ງເຕືອນຫາທ່ານ, ໃຊ້ແບັດເຕີຣີຂອງທ່ານ ຫຼື ເຂົ້າເຖິງສະຖານທີ່ຂອງທ່ານໄດ້"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"ແອັບບ່ອນເຮັດວຽກຖືກປິດໄວ້ຢູ່. ແອັບບ່ອນເຮັດວຽກຂອງທ່ານຈະບໍ່ສາມາດສົ່ງການແຈ້ງເຕືອນໃຫ້ທ່ານ, ໃຊ້ແບັດເຕີຣີຂອງທ່ານ ຫຼື ເຂົ້າເຖິງສະຖານທີ່ຂອງທ່ານໄດ້"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"ທ່ານຈະບໍ່ໄດ້ຮັບສາຍໂທເຂົ້າ, ຂໍ້ຄວາມ ຫຼື ການແຈ້ງເຕືອນຈາກແອັບບ່ອນເຮັດວຽກຂອງທ່ານ"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"ແອັບບ່ອນເຮັດວຽກແມ່ນຖືກຕິດປ້າຍ ແລະ ສະແດງໃຫ້ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານເຫັນ"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"ເຂົ້າໃຈແລ້ວ"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"ປິດການໃຊ້ແອັບບ່ອນເຮັດວຽກ"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"ເປີດໃຊ້ແອັບບ່ອນເຮັດວຽກ"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"ຢຸດແອັບບ່ອນເຮັດວຽກຊົ່ວຄາວ"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"ຍົກເລີກການຢຸດຊົ່ວຄາວ"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"ກັ່ນຕອງ"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"ຊອກຫາໂທລະສັບຂອງທ່ານ"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ຊອກຫາແທັບເລັດຂອງທ່ານ"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"ບໍ່ສຳເລັດ: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index e4fdfc6..4c67498 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Sparčiojo klavišo negalima naudoti"</string>
     <string name="home_screen" msgid="5629429142036709174">"Pagrindinis"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Išskaidyto ekrano režimas"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Išskaidyti viršun"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Išskaidyti kairėn"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Išskaidyti dešinėn"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Programos „%1$s“ informacija"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Išsaugoti programų porą"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Dukart pal. ir palaik., kad perkeltumėte valdiklį."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dukart palieskite ir palaikykite, kad perkeltumėte valdiklį ar naudotumėte tinkintus veiksmus."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d plotis ir %2$d aukštis"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> valdiklis"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Paliesdami ir palaikydami valdiklį galite judėti pagrindiniame ekrane"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Pridėti prie pagrindinio ekrano"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Paliesdami ir palaikydami valdiklį galite judėti pagrindiniame ekrane"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Pridėti prie pagrindinio ekrano"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Valdiklis „<xliff:g id="WIDGET_NAME">%1$s</xliff:g>“ pridėtas prie pagrindinio ekrano"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Pasiūlymai"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# valdiklis}one{# valdiklis}few{# valdikliai}many{# valdiklio}other{# valdiklių}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# spartusis klavišas}one{# spartusis klavišas}few{# spartieji klavišai}many{# sparčiojo klavišo}other{# sparčiųjų klavišų}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,27 +50,27 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Asmeniniai"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Darbas"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Pokalbiai"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Užrašų kūrimas"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Lengvai pasiekiama naudinga informacija"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Jei norite gauti informacijos neatidarę programų, galite pridėti valdiklių pagrindiniame ekrane"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Jei norite gauti informacijos neatidarę programų, galite pridėti valdiklių pagrindiniame ekrane"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Palieskite, kad pakeistumėte valdiklio nustatymus"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Supratau"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Pakeisti valdiklio nustatymus"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Paieškos programos"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Įkeliamos programos…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Nerasta jokių užklausą „<xliff:g id="QUERY">%1$s</xliff:g>“ atitinkančių programų"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Ieškoti daugiau programų"</string>
     <string name="label_application" msgid="8531721983832654978">"Programa"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Visos programos"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Pranešimai"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Dukart pal. ir palaik., kad perk. spart. klavišą."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dukart palieskite ir palaikykite, kad perkeltumėte spartųjį klavišą ar naudotumėte tinkintus veiksmus."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Šiame pagrindiniame ekrane nebėra vietos"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Šiame pagrindiniame ekrane nebėra vietos"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Mėgstamiausių dėkle nebėra vietos"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Programų sąrašas"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Paieškos rezultatai"</string>
     <string name="all_apps_button_personal_label" msgid="1315764287305224468">"Asmeninių programų sąrašas"</string>
     <string name="all_apps_button_work_label" msgid="7270707118948892488">"Darbo programų sąrašas"</string>
-    <string name="remove_drop_target_label" msgid="7812859488053230776">"Ištrinti"</string>
+    <string name="remove_drop_target_label" msgid="7812859488053230776">"Pašalinti"</string>
     <string name="uninstall_drop_target_label" msgid="4722034217958379417">"Pašalinti"</string>
     <string name="app_info_drop_target_label" msgid="692894985365717661">"Programos inform."</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"Įdiegti"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Prisegti numatymą"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"įdiegti sparčiuosius klavišus"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Programai leidžiama pridėti sparčiuosius klavišus be naudotojo įsikišimo."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"skaityti pagrindinio puslapio nustatymus ir sparčiuosius klavišus"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Programai leidžiama skaityti pagrindinio puslapio nustatymus ir sparčiuosius klavišus."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"rašyti pagrindinio puslapio nustatymus ir sparčiuosius klavišus"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Programai leidžiama keisti pagrindinio puslapio nustatymus ir sparčiuosius klavišus."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"„<xliff:g id="APP_NAME">%1$s</xliff:g>“ neleidžiama skambinti"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"skaityti pagrindinio ekrano nustatymus ir sparčiuosius klavišus"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Programai leidžiama skaityti pagrindinio ekrano nustatymus ir sparčiuosius klavišus."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"rašyti pagrindinio ekrano nustatymus ir sparčiuosius klavišus"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Programai leidžiama keisti pagrindinio ekrano nustatymus ir sparčiuosius klavišus."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Nepavyko įkelti valdiklio"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Valdiklio nustatymai"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Palieskite, kad užbaigtumėte sąranką"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Tai sistemos programa ir jos negalima pašalinti."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Pavadinimo redagavimas"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"„<xliff:g id="APP_NAME">%1$s</xliff:g>“ išjungta"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{Programoje „{app_name}“ yra # pranešimas}one{Programoje „{app_name}“ yra # pranešimas}few{Programoje „{app_name}“ yra # pranešimai}many{Programoje „{app_name}“ yra # pranešimo}other{Programoje „{app_name}“ yra # pranešimų}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{Programoje „{app_name}“ yra # pranešimas}one{Programoje „{app_name}“ yra # pranešimas}few{Programoje „{app_name}“ yra # pranešimai}many{Programoje „{app_name}“ yra # pranešimo}other{Programoje „{app_name}“ yra # pranešimų}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"%1$d psl. iš %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"%1$d pagrindinis ekranas iš %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Naujas pagrindinio ekrano puslapis"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Aplankas: „<xliff:g id="NAME">%1$s</xliff:g>“, elementų: <xliff:g id="SIZE">%2$d</xliff:g> ar daugiau"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Ekrano fonai"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Ekrano fonas ir stilius"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Redaguoti pagrindinį ekraną"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"„Home“ nustatymai"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Išjungė administratorius"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Leisti pasukti pagrindinį ekraną"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Leisti pasukti pagrindinį ekraną"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Kai telefonas pasukamas"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Pranešimų taškai"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Įjungta"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Kad būtų rodomi pranešimų taškai, įjunkite programos „<xliff:g id="NAME">%1$s</xliff:g>“ pranešimus."</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Keisti nustatymus"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Rodyti pranešimų taškus"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Pridėti progr. piktogr. pagrind. ekrane"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Kūrėjo parinktys"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Pridėti programų piktogramas pagrindiniame ekrane"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Skirta naujoms programoms"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Nežinoma"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Panaikinti"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Įdiegiama: „<xliff:g id="NAME">%1$s</xliff:g>“; baigta: <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Atsisiunčiama programa „<xliff:g id="NAME">%1$s</xliff:g>“, <xliff:g id="PROGRESS">%2$s</xliff:g> baigta"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"Laukiama, kol bus įdiegta programa „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Būtina atnaujinti programą"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Šios piktogramos programa neatnaujinta. Galite patys atnaujinti, kad iš naujo įgalintumėte šį spartųjį klavišą, arba pašalinkite piktogramą."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Atnaujinti"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Pašalinti"</string>
     <string name="widgets_list" msgid="796804551140113767">"Valdiklių sąrašas"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Valdiklių sąrašas uždarytas"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Pridėti prie pagrind. ekrano"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Pridėti prie pagrind. ekrano"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Perkelti elementą čia"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Elementas pridėtas prie pagrindinio ekrano"</string>
     <string name="item_removed" msgid="851119963877842327">"Elementas perkeltas"</string>
     <string name="undo" msgid="4151576204245173321">"Anuliuoti"</string>
     <string name="action_move" msgid="4339390619886385032">"Perkelti elementą"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Perkelti į <xliff:g id="NUMBER_0">%1$s</xliff:g> eilutę, <xliff:g id="NUMBER_1">%2$s</xliff:g> stulpelį"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Perkelti į <xliff:g id="NUMBER_0">%1$s</xliff:g> eilutės <xliff:g id="NUMBER_1">%2$s</xliff:g> stulpelį, esantį <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Perkelti į <xliff:g id="NUMBER">%1$s</xliff:g> poziciją"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Perkelti į <xliff:g id="NUMBER">%1$s</xliff:g> mėgstamiausių poziciją"</string>
     <string name="item_moved" msgid="4606538322571412879">"Elementas perkeltas"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Elementas pridėtas prie aplanko"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Kurti aplanką naudojant: „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
     <string name="folder_created" msgid="6409794597405184510">"Aplankas sukurtas"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Perkelti į pagrindinį ekraną"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Perkelti į pagrindinį ekraną"</string>
     <string name="action_resize" msgid="1802976324781771067">"Pakeisti dydį"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Padidinti plotį"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Padidinti aukštį"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Darbo programos yra pažymėtos ženkleliu ir matomos IT administratoriui"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Supratau"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Darbo programos pristabdytos"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Negausite pranešimų iš darbo programų"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Darbo programos negali siųsti jums pranešimų, naudoti jūsų akumuliatoriaus ar pasiekti jūsų vietovės"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Darbo programos išjungtos. Darbo programos negali siųsti jums pranešimų, naudoti jūsų akumuliatoriaus ar pasiekti jūsų vietovės"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Negausite telefonų skambučių, teksto pranešimų ar pranešimų iš darbo programų"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Darbo programos yra pažymėtos ženkleliu ir matomos IT administratoriui"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Supratau"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Išjungti darbo programas"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Įjungti darbo programas"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Pristabdyti darbo programas"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Atšaukti pristabdymą"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtruoti"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Paieška telefone"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Paieška planšetiniame kompiuteryje"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Nepavyko: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index f02d4fb..ad7af54 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Saīsne nav pieejama."</string>
     <string name="home_screen" msgid="5629429142036709174">"Sākums"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Sadalīt ekrānu"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Sadalījums augšdaļā"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Sadalījums pa kreisi"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Sadalījums pa labi"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s: informācija par lietotni"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Saglabāt lietotņu pāri"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Lai pārvietotu logrīku, pieskarieties un turiet."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Lai pārvietotu logrīku, uz tā veiciet dubultskārienu un turiet. Varat arī veikt pielāgotas darbības."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d plats un %2$d augsts"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Logrīks <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Pieskarieties logrīkam un turiet to, lai to pārvietotu pa sākuma ekrānu."</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Pievienot sākuma ekrānam"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Pieskarieties logrīkam un turiet to, lai to pārvietotu pa sākuma ekrānu."</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Pievienot sākuma ekrānam"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Logrīks “<xliff:g id="WIDGET_NAME">%1$s</xliff:g>” ir pievienots sākuma ekrānam"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Ieteikumi"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# logrīks}zero{# logrīku}one{# logrīks}other{# logrīki}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# saīsne}zero{# saīšņu}one{# saīsne}other{# saīsnes}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personīgs"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Darba"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Sarunas"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Piezīmju pierakstīšana"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Ērta piekļuve noderīgai informācijai"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Lai iegūtu informāciju, neatverot lietotnes, varat pievienot logrīkus sākuma ekrānā."</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Lai iegūtu informāciju, neatverot lietotnes, varat pievienot sākuma ekrānam logrīkus"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Pieskarieties, lai mainītu logrīka iestatījumus."</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Labi"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Mainīt logrīka iestatījumus"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Meklēt lietotnes"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Notiek lietotņu ielāde…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Vaicājumam “<xliff:g id="QUERY">%1$s</xliff:g>” neatbilda neviena lietotne"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Meklēt citas lietotnes"</string>
     <string name="label_application" msgid="8531721983832654978">"Lietotne"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Visas lietotnes"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Paziņojumi"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Lai pārvietotu saīsni, pieskarieties un turiet."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Lai pārvietotu saīsni, uz tās veiciet dubultskārienu un turiet. Varat arī veikt pielāgotas darbības."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Šajā sākuma ekrānā nav vietas"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Šajā sākuma ekrānā nav vietas"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Izlases joslā vairs nav vietas."</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Lietotņu saraksts"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Meklēšanas rezultāti"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Piespraust prognozēto lietotni"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"instalēt saīsnes"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Ļauj lietotnei pievienot saīsnes, nejautājot lietotājam."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"lasīt sākuma ekrāna iestatījumus un saīsnes"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Ļauj lietotnei lasīt iestatījumus un saīsnes sākuma ekrānā."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"rakstīt sākuma ekrāna iestatījumus un saīsnes"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Ļauj lietotnei mainīt iestatījumus un saīsnes sākuma ekrānā."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"Lietotnei <xliff:g id="APP_NAME">%1$s</xliff:g> nav atļauts veikt tālruņa zvanus."</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"sākuma ekrāna iestatījumu un saīšņu lasīšana"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Ļauj lietotnei lasīt iestatījumus un saīsnes sākuma ekrānā."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"sākuma ekrāna iestatījumu un saīšņu rakstīšana"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Ļauj lietotnei mainīt iestatījumus un saīsnes sākuma ekrānā."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Nevar ielādēt logrīku."</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Logrīka iestatījumi"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Pieskarieties, lai pabeigtu iestatīšanu"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Šī ir sistēmas lietotne, un to nevar atinstalēt."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Nosaukuma rediģēšana"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Lietotne <xliff:g id="APP_NAME">%1$s</xliff:g> ir atspējota"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{Lietotnē {app_name} ir # paziņojums}zero{Lietotnē {app_name} ir # paziņojumi}one{Lietotnē {app_name} ir # paziņojums}other{Lietotnē {app_name} ir # paziņojumi}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{Lietotnē {app_name} ir # paziņojums}zero{Lietotnē {app_name} ir # paziņojumi}one{Lietotnē {app_name} ir # paziņojums}other{Lietotnē {app_name} ir # paziņojumi}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"%1$d. lapa no %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Sākuma ekrāns: %1$d no %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Jauna sākuma ekrāna lapa"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Mape <xliff:g id="NAME">%1$s</xliff:g>, vienumu skaits mapē: vismaz <xliff:g id="SIZE">%2$d</xliff:g>"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Fona tapetes"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Fona tapete un stils"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Rediģēt sākuma ekrānu"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Sākumlapas iestatījumi"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Atspējojis administrators"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Atļaut sākuma ekrāna pagriešanu"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Atļaut sākuma ekrāna pagriešanu"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Pagriežot tālruni"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Paziņojumu punkti"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Ieslēgts"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Lai tiktu rādīti paziņojumu punkti, ieslēdziet paziņojumus lietotnei <xliff:g id="NAME">%1$s</xliff:g>."</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Mainīt iestatījumus"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Rādīt paziņojumu punktus"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Pievienot lietotņu ikonas sākuma ekrānam"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Izstrādātāju opcijas"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Pievienot lietotņu ikonas sākuma ekrānam"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Jaunām lietotnēm"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Nezināma"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Noņemt"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Notiek lietotnes “<xliff:g id="NAME">%1$s</xliff:g>” instalēšana. Norise: <xliff:g id="PROGRESS">%2$s</xliff:g>."</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Lietotnes <xliff:g id="NAME">%1$s</xliff:g> lejupielāde (<xliff:g id="PROGRESS">%2$s</xliff:g> pabeigti)"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"Notiek <xliff:g id="NAME">%1$s</xliff:g> instalēšana"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Lietotne ir jāatjaunina"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Šai ikonai paredzētā lietotne nav atjaunināta. Varat to atjaunināt manuāli, lai atkārtoti iespējotu šo saīsni, vai noņemt ikonu."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Atjaunināt"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Noņemt"</string>
     <string name="widgets_list" msgid="796804551140113767">"Logrīku saraksts"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Logrīku saraksts aizvērts"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Pievienot sākuma ekrānam"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Pievienot sākuma ekrānam"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Pārvietot vienumu šeit"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Vienums pievienots sākuma ekrānam"</string>
     <string name="item_removed" msgid="851119963877842327">"Vienums noņemts"</string>
     <string name="undo" msgid="4151576204245173321">"Atsaukt"</string>
     <string name="action_move" msgid="4339390619886385032">"Pārvietot vienumu"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Pārvietot uz <xliff:g id="NUMBER_0">%1$s</xliff:g>. rindu, <xliff:g id="NUMBER_1">%2$s</xliff:g>. kolonnu"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Pārvietot uz rindu numur <xliff:g id="NUMBER_0">%1$s</xliff:g>, kolonnu numur <xliff:g id="NUMBER_1">%2$s</xliff:g> šajā ekrānā: <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Pārvietot uz <xliff:g id="NUMBER">%1$s</xliff:g>. pozīciju"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Pārvietot uz <xliff:g id="NUMBER">%1$s</xliff:g>. izlases pozīciju"</string>
     <string name="item_moved" msgid="4606538322571412879">"Vienums pārvietots"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Vienums pievienots mapei"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Izveidot mapi ar: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Mape izveidota"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Pārvietot uz sākuma ekrānu"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Pārvietot uz sākuma ekrānu"</string>
     <string name="action_resize" msgid="1802976324781771067">"Mainīt lielumu"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Palielināt platumu"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Palielināt augstumu"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Darba lietotnēm ir pievienota emblēma, un tās ir redzamas jūsu IT administratoram"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Labi"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Darba lietotnes ir apturētas"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Nesaņemsiet paziņojumus no darba lietotnēm."</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Jūsu darba lietotnes nevar sūtīt jums paziņojumus, izmantot akumulatoru un piekļūt jūsu atrašanās vietai."</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Darba lietotnes ir izslēgtas. Jūsu darba lietotnes nevar sūtīt jums paziņojumus, izmantot akumulatoru un piekļūt jūsu atrašanās vietai."</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Nesaņemsiet tālruņa zvanus, īsziņas un paziņojumus no darba lietotnēm."</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Darba lietotnēm ir pievienota emblēma, un tās ir redzamas jūsu IT administratoram"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Labi"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Izslēgt darba lietotnes"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Ieslēgt darba lietotnes"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Pārtraukt darba lietotņu darbību"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Atsākt"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtrs"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Meklēšana tālrunī"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Meklēšana planšetdatorā"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Neizdevās: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 0bc7043..c2ee822 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Кратенката не е достапна"</string>
     <string name="home_screen" msgid="5629429142036709174">"Почетен екран"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Поделен екран"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Подели нагоре"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Подели налево"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Подели надесно"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Податоци за апликација за %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Зачувај го парот апликации"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Допрете и задржете за да преместите виџет."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Допрете двапати и задржете за да преместите виџет или користете приспособени дејства."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d широк на %2$d висок"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Виџет <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Допрете го и задржете го виџетот за да го движите наоколу на почетниот екран"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Додај на почетниот екран"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Допрете го и задржете го виџетот за да го движите наоколу на почетниот екран"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Додај на почетниот екран"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Виџетот <xliff:g id="WIDGET_NAME">%1$s</xliff:g> е додаден на почетниот екран"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Предлози"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# виџет}one{# виџет}other{# виџети}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# кратенка}one{# кратенка}other{# кратенки}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Лични"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Работни"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Разговори"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Фаќање белешки"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Корисни информации на дофат на прстите"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"За да добивате информации без да ги отворате апликациите, може да додадете виџети на почетниот екран"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"За да добивате информации без да ги отворате апликациите, може да додадете виџети на почетниот екран"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Допрете за да ги промените поставките за виџетот"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Сфатив"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Промени ги поставките за виџетот"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Пребарувајте апликации"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Се вчитуваат апликации…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Не се најдени апликации што одговараат на „<xliff:g id="QUERY">%1$s</xliff:g>“"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Пребарај други апликации"</string>
     <string name="label_application" msgid="8531721983832654978">"Апликација"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Сите апликации"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Известувања"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Допрете и задржете за да преместите кратенка."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Допрете двапати и задржете за да преместите кратенка или користете приспособени дејства."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Нема простор на почетниов екран"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Нема простор на почетниов екран"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Нема повеќе простор на лентата „Омилени“"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Список со апликации"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Резултати од пребарување"</string>
@@ -77,20 +76,19 @@
     <string name="install_drop_target_label" msgid="2539096853673231757">"Инсталирај"</string>
     <string name="dismiss_prediction_label" msgid="3357562989568808658">"Не предлагај апликација"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"Закачи го предвидувањето"</string>
-    <string name="permlab_install_shortcut" msgid="5632423390354674437">"инсталирај кратенки"</string>
+    <string name="permlab_install_shortcut" msgid="5632423390354674437">"инсталирање кратенки"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Овозможува апликацијата да додава кратенки без интервенција на корисникот."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"чита поставки и кратенки на почетна страница"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Овозможува апликацијата да ги менува подесувањата и кратенките на почетната страница."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"пишува поставки и кратенки на почетна страница"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Овозможува апликацијата да ги менува подесувањата и кратенките на почетната страница."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> нема дозвола за телефонски повици"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"да чита поставки и кратенки на почетна страница"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Овозможува апликацијата да ги чита поставките и кратенките на почетната страница."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"да пишува поставки и кратенки на почетна страница"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Овозможува апликацијата да ги менува поставките и кратенките на почетната страница."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Не може да се вчита виџетот"</string>
-    <string name="gadget_setup_text" msgid="8348374825537681407">"Поставки за виџет"</string>
+    <string name="gadget_setup_text" msgid="8348374825537681407">"Поставки за виџетот"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Допрете за да го завршите поставувањето"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Ова е системска апликација и не може да се деинсталира."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Изменете го името"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> е оневозможена"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} има # известување}one{{app_name} има # известување}other{{app_name} има # известувања}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} има # известување}one{{app_name} има # известување}other{{app_name} има # известувања}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Страница %1$d од %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Екран на почетна страница %1$d од %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Нова страница на почетен екран"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Папка: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> или повеќе ставки"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Тапети"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Тапет и стил"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Изменете го почетниот екран"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Поставки за почетен екран"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Оневозможено од администраторот"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Дозволи ротација на почетниот екран"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Дозволи ротирање на почетниот екран"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Кога телефонот се ротира"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Точки за известување"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Вклучено"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"За да се прикажуваат „Точки за известување“, вклучете ги известувањата за апликацијата <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Промени ги поставките"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Прикажувај точки за известување"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Додавај икони за апликации на почетниот екран"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Опции за програмери"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Додавај икони за апликации на почетниот екран"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"За нови апликации"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Непознато"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Отстрани"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> се инсталира, <xliff:g id="PROGRESS">%2$s</xliff:g> завршено"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Се презема <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="PROGRESS">%2$s</xliff:g> завршено"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> чека да се инсталира"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Потребно е ажурирање на апликацијата"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Апликацијата за оваа икона не е ажурирана. Може да ажурирате рачно за да повторно се овозможи кратенкава или отстранете ја иконата."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Ажурирај"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Отстрани"</string>
     <string name="widgets_list" msgid="796804551140113767">"Список со виџети"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Списокот со виџети е затворен"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Додај на почетниот екран"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Додај на почетниот екран"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Премести ја ставката овде"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Ставката е додадена на почетниот екран"</string>
     <string name="item_removed" msgid="851119963877842327">"Ставката е отстранета"</string>
     <string name="undo" msgid="4151576204245173321">"Врати"</string>
     <string name="action_move" msgid="4339390619886385032">"Премести ја ставката"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Премести во ред <xliff:g id="NUMBER_0">%1$s</xliff:g> колона <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Преместете во редица <xliff:g id="NUMBER_0">%1$s</xliff:g>, колона <xliff:g id="NUMBER_1">%2$s</xliff:g> во <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Премести на место <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Премести на место <xliff:g id="NUMBER">%1$s</xliff:g> во омилени"</string>
     <string name="item_moved" msgid="4606538322571412879">"Ставката е преместена"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Ставката е додадена во папката"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Создај папка со: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Папката е создадена"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Премести на Почетен екран"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Премести на почетен екран"</string>
     <string name="action_resize" msgid="1802976324781771067">"Промени големина"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Зголеми ширина"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Зголеми висина"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Работните апликации имаат значка и се видливи за IT-администраторот"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Сфатив"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Работните апликации се паузирани"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Нема да примате известувања од работните апликации"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Работните апликации не може да ви испраќаат известувања, да ја користат батеријата или да пристапуваат до вашата локација"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Работните апликации се исклучени. Не може да ви испраќаат известувања, да ја користат батеријата или да пристапуваат до вашата локација"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Нема да добивате телефонски повици, текстуални пораки или известувања од работните апликации"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Работните апликации имаат значка и се видливи за IT-администраторот"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Сфатив"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Исклучете ги работните апликации"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Вклучете ги работните апликации"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Паузирај ги работните апликации"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Прекини ја паузата"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Филтер"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Пребарување низ телефонот"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Пребарување низ таблетот"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Не успеа: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 5c626db..3600edd 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"കുറുക്കുവഴി ലഭ്യമല്ല"</string>
     <string name="home_screen" msgid="5629429142036709174">"ഹോം"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"സ്‌ക്രീൻ വിഭജന മോഡ്"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"മുകളിലേക്ക് വിഭജിക്കുക"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"ഇടതുഭാഗത്തേക്ക് വിഭജിക്കുക"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"വലതുഭാഗത്തേക്ക് വിഭജിക്കുക"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s എന്നതിന്റെ ആപ്പ് വിവരങ്ങൾ"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"ആപ്പ് ജോടി സംരക്ഷിക്കുക"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"വിജറ്റ് നീക്കാൻ സ്‌പർശിച്ച് പിടിക്കുക."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"വിജറ്റ് നീക്കാൻ ഡബിൾ ടാപ്പ് ചെയ്യൂ, ഹോൾഡ് ചെയ്യൂ അല്ലെങ്കിൽ ഇഷ്‌ടാനുസൃത പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കൂ."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d വീതിയും %2$d ഉയരവും"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> വിജറ്റ്"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"ഹോം സ്‌ക്രീനിന് ചുറ്റും വിജറ്റ് നീക്കാൻ അതിൽ സ്‌പർശിച്ച് പിടിക്കുക"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"ഹോം സ്‌ക്രീനിലേക്ക് ചേർക്കുക"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"ഹോം സ്‌ക്രീനിന് ചുറ്റും വിജറ്റ് നീക്കാൻ അതിൽ സ്‌പർശിച്ച് പിടിക്കുക"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"ഹോം സ്‌ക്രീനിലേക്ക് ചേർക്കുക"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> വിജറ്റ് ഹോം സ്‌ക്രീനിലേക്ക് ചേർത്തു"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"നിർദ്ദേശങ്ങൾ"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# വിജറ്റ്}other{# വിജറ്റുകൾ}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# കുറുക്കുവഴി}other{# കുറുക്കുവഴികൾ}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,46 +50,45 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"വ്യക്തിപരം"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ജോലി"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"സംഭാഷണങ്ങൾ"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"കുറിപ്പ് രേഖപ്പെടുത്തൽ"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"ഉപകാരപ്രദമായ വിവരങ്ങൾ നിങ്ങളുടെ വിരൽത്തുമ്പിൽ"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"ആപ്പുകൾ തുറക്കാതെ വിവരങ്ങൾ ലഭിക്കാൻ, നിങ്ങൾക്ക് ഹോം സ്ക്രീനിലേക്ക് വിജറ്റുകൾ ചേർക്കാം"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"ആപ്പുകൾ തുറക്കാതെ വിവരങ്ങൾ ലഭിക്കാൻ, നിങ്ങൾക്ക് ഹോം സ്ക്രീനിലേക്ക് വിജറ്റുകൾ ചേർക്കാം"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"വിജറ്റ് ക്രമീകരണം മാറ്റാൻ ടാപ്പ് ചെയ്യുക"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"മനസ്സിലായി"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"വിജറ്റ് ക്രമീകരണം മാറ്റുക"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"ആപ്പുകൾ തിരയുക"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"ആപ്പുകൾ ലോഡുചെയ്യുന്നു..."</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" എന്നതുമായി പൊരുത്തപ്പെടുന്ന ആപ്പുകളൊന്നും കണ്ടെത്തിയില്ല"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"കൂടുതൽ ആപ്പുകൾക്ക് തിരയുക"</string>
     <string name="label_application" msgid="8531721983832654978">"ആപ്പ്"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"എല്ലാ ആപ്പുകളും"</string>
     <string name="notifications_header" msgid="1404149926117359025">"അറിയിപ്പുകൾ"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"കുറുക്കുവഴി നീക്കാൻ സ്‌പർശിച്ച് പിടിക്കുക."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"കുറുക്കുവഴി നീക്കാൻ ഡബിൾ ടാപ്പ് ചെയ്യൂ, ഹോൾഡ് ചെയ്യൂ അല്ലെങ്കിൽ ഇഷ്‌ടാനുസൃത പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കൂ."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"ഈ ഹോം സ്ക്രീനിലിൽ ഇടമില്ല"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"ഈ ഹോം സ്ക്രീനിൽ ഇടമില്ല"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"പ്രിയപ്പെട്ടവയുടെ ട്രേയിൽ ഒഴിവൊന്നുമില്ല"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"അപ്ലിക്കേഷനുകളുടെ ലിസ്‌റ്റ്"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"തിരയൽ ഫലങ്ങൾ"</string>
     <string name="all_apps_button_personal_label" msgid="1315764287305224468">"വ്യക്തിഗത ആപ്പുകളുടെ ലിസ്റ്റ്"</string>
     <string name="all_apps_button_work_label" msgid="7270707118948892488">"ഔദ്യോഗിക ആപ്പുകളുടെ ലിസ്റ്റ്"</string>
     <string name="remove_drop_target_label" msgid="7812859488053230776">"നീക്കംചെയ്യുക"</string>
-    <string name="uninstall_drop_target_label" msgid="4722034217958379417">"അൺഇൻസ്റ്റാളുചെയ്യുക"</string>
+    <string name="uninstall_drop_target_label" msgid="4722034217958379417">"അൺഇൻസ്റ്റാൾ"</string>
     <string name="app_info_drop_target_label" msgid="692894985365717661">"ആപ്പ് വിവരങ്ങൾ"</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"ഇൻസ്‌റ്റാൾ ചെയ്യുക"</string>
     <string name="dismiss_prediction_label" msgid="3357562989568808658">"ആപ്പ് നിർദ്ദേശിക്കരുത്"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"പ്രവചനം പിൻ ചെയ്യുക"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"കുറുക്കുവഴികൾ ഇൻസ്റ്റാളുചെയ്യുക"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"ഉപയോക്തൃ ഇടപെടൽ ഇല്ലാതെ കുറുക്കുവഴികൾ ചേർക്കാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"ഹോം ക്രമീകരണങ്ങളും കുറുക്കുവഴികളും റീഡുചെയ്യുക"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"ഹോമിലെ ക്രമീകരണങ്ങളും കുറുക്കുവഴികളും റീഡുചെയ്യാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"ഹോം ക്രമീകരണങ്ങളും കുറുക്കുവഴികളും റൈറ്റുചെയ്യുക"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"ഹോമിലെ ക്രമീകരണങ്ങളും കുറുക്കുവഴികളും മാറ്റാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"ഫോൺ കോൾ ചെയ്യാൻ <xliff:g id="APP_NAME">%1$s</xliff:g> എന്നതിനെ അനുവദിച്ചിട്ടില്ല"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"ഹോം ക്രമീകരണവും കുറുക്കുവഴികളും വായിക്കുക"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"ഹോമിലെ ക്രമീകരണങ്ങളും കുറുക്കുവഴികളും വായിക്കാൻ ആപ്പിനെ അനുവദിക്കുന്നു."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"ഹോം ക്രമീകരണവും കുറുക്കുവഴികളും എഴുതുക"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"ഹോമിലെ ക്രമീകരണങ്ങളും കുറുക്കുവഴികളും മാറ്റാൻ ആപ്പിനെ അനുവദിക്കുന്നു."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"വിജറ്റ് ലോഡ് ചെയ്യാനാകുന്നില്ല"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"വിജറ്റ് ക്രമീകരണം"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"സജ്ജീകരണം പൂർത്തിയാക്കാൻ ടാപ്പ് ചെയ്യുക"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"ഇതൊരു സിസ്‌റ്റം അപ്ലിക്കേഷനായതിനാൽ അൺഇൻസ്‌റ്റാളുചെയ്യാനാവില്ല."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"പേര് എഡിറ്റ് ചെയ്യുക"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> പ്രവർത്തനരഹിതമാക്കി"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} ആപ്പിന് # അറിയിപ്പുണ്ട്}other{{app_name} ആപ്പിന് # അറിയിപ്പുകളുണ്ട്}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} ആപ്പിന് # അറിയിപ്പുണ്ട്}other{{app_name} ആപ്പിന് # അറിയിപ്പുകളുണ്ട്}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"പേജ് %1$d / %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"ഹോം സ്‌ക്രീൻ %1$d / %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"പുതിയ ഹോം സ്ക്രീൻ പേജ്"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"ഫോൾഡർ: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> അല്ലെങ്കിൽ അതിലധികം ഇനങ്ങൾ"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"വാൾപേപ്പർ"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"വാൾപേപ്പറും സ്‌റ്റൈലും"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"ഹോം സ്‌ക്രീൻ എഡിറ്റ് ചെയ്യുക"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"ഹോം ക്രമീകരണം"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"അഡ്മിൻ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"ഹോം സ്ക്രീൻ തിരിക്കൽ അനുവദിക്കുക"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"ഹോം സ്ക്രീൻ റൊട്ടേഷൻ അനുവദിക്കുക"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"ഫോൺ തിരിച്ച നിലയിലായിരിക്കുമ്പോൾ"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"അറിയിപ്പ് ഡോട്ടുകൾ"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"ഓണാണ്"</string>
@@ -114,25 +113,30 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"അറിയിപ്പ് ഡോട്ടുകൾ കാണിക്കുന്നതിന്, <xliff:g id="NAME">%1$s</xliff:g> എന്നയാളിനായുള്ള ആപ്പ് അറിയിപ്പുകൾ ഓണാക്കുക"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"ക്രമീകരണം മാറ്റുക"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"അറിയിപ്പ് ഡോട്ടുകൾ കാണിക്കുക"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"ഹോം സ്‌ക്രീനിൽ ആപ്പ് ഐക്കണുകൾ ചേർക്കുക"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"ഡെവലപ്പർ ഓപ്‌ഷനുകൾ"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"ഹോം സ്‌ക്രീനിലേക്ക് ആപ്പ് ഐക്കണുകൾ ചേർക്കുക"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"പുതിയ ആപ്പുകൾക്ക്"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"അജ്ഞാതം"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"നീക്കംചെയ്യുക"</string>
     <string name="abandoned_search" msgid="891119232568284442">"തിരയുക"</string>
     <string name="abandoned_promises_title" msgid="7096178467971716750">"ഈ അപ്ലിക്കേഷൻ ഇൻസ്റ്റാളുചെയ്‌തിട്ടില്ല"</string>
-    <string name="abandoned_promise_explanation" msgid="3990027586878167529">"ഈ ഐക്കണുവേണ്ടി അപ്ലിക്കേഷൻ ഇൻസ്റ്റാളുചെയ്‌തിട്ടില്ല. നിങ്ങൾക്കത് നീക്കംചെയ്യാനാകും അല്ലെങ്കിൽ അപ്ലിക്കേഷനുവേണ്ടി തിരഞ്ഞുകൊണ്ട് അത് സ്വമേധയാ ഇൻസ്റ്റാളുചെയ്യുക."</string>
+    <string name="abandoned_promise_explanation" msgid="3990027586878167529">"ഈ ഐക്കണുവേണ്ടി അപ്ലിക്കേഷൻ ഇൻസ്റ്റാളുചെയ്‌തിട്ടില്ല. നിങ്ങൾക്കത് നീക്കംചെയ്യാനാകും അല്ലെങ്കിൽ അപ്ലിക്കേഷനുവേണ്ടി തിരഞ്ഞുകൊണ്ട് അത് സ്വയമേവ ഇൻസ്റ്റാളുചെയ്യുക."</string>
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> ഇൻസ്‌റ്റാൾ ചെയ്യുന്നു, <xliff:g id="PROGRESS">%2$s</xliff:g> പൂർത്തിയായി"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> ഡൗൺലോഡ് ചെയ്യുന്നു, <xliff:g id="PROGRESS">%2$s</xliff:g> പൂർത്തിയായി"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"ഇൻസ്റ്റാൾ ചെയ്യാൻ <xliff:g id="NAME">%1$s</xliff:g> കാക്കുന്നു"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"ആപ്പ് അപ്‌ഡേറ്റ് ചെയ്യേണ്ടതുണ്ട്"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"ഈ ഐക്കണിനുള്ള ആപ്പ് അപ്‌ഡേറ്റ് ചെയ്തിട്ടില്ല. ഈ കുറുക്കുവഴി വീണ്ടും പ്രവർത്തനക്ഷമമാക്കാൻ നിങ്ങൾക്ക് നേരിട്ട് അപ്‌ഡേറ്റ് ചെയ്യാം അല്ലെങ്കിൽ ഐക്കൺ നീക്കം ചെയ്യാം."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"അപ്ഡേറ്റ് ചെയ്യുക"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"നീക്കം ചെയ്യുക"</string>
     <string name="widgets_list" msgid="796804551140113767">"വിജറ്റുകളുടെ ലിസ്‌റ്റ്"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"വിജറ്റുകളുടെ ലിസ്‌റ്റ് അവസാനിപ്പിച്ചു"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"ഹോം സ്ക്രീനിൽ ചേർക്കുക"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"ഹോം സ്‌ക്രീനിലേക്ക് ചേർക്കുക"</string>
     <string name="action_move_here" msgid="2170188780612570250">"ഇനം ഇവിടേക്ക് നീക്കുക"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"ഹോം സ്‌ക്രീനിൽ ഇനം ചേർത്തു"</string>
     <string name="item_removed" msgid="851119963877842327">"ഇനം നീക്കംചെയ്‌തു"</string>
     <string name="undo" msgid="4151576204245173321">"പഴയപടിയാക്കുക"</string>
     <string name="action_move" msgid="4339390619886385032">"ഇനം നീക്കുക"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"വരി <xliff:g id="NUMBER_0">%1$s</xliff:g> നിര <xliff:g id="NUMBER_1">%2$s</xliff:g>-ലേക്ക് നീക്കുക"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g> എന്നതിലെ <xliff:g id="NUMBER_1">%2$s</xliff:g>-ാം കോളത്തിലെ <xliff:g id="NUMBER_0">%1$s</xliff:g>-ാം വരിയിലേക്ക് നീക്കുക"</string>
     <string name="move_to_position" msgid="6750008980455459790">"<xliff:g id="NUMBER">%1$s</xliff:g>-ലേക്ക് നീക്കുക"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"ഇഷ്‌ടമുള്ള <xliff:g id="NUMBER">%1$s</xliff:g> സ്ഥാനത്തേക്ക് നീക്കുക"</string>
     <string name="item_moved" msgid="4606538322571412879">"ഇനം നീക്കി"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"ഫോൾഡറിൽ ഇനം ചേർത്തു"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"ഇതുപയോഗിച്ച് ഫോൾഡർ സൃഷ്‌ടിക്കുക: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"ഫോൾഡർ സൃഷ്‌ടിച്ചു"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"ഹോം സ്‌ക്രീനിലേക്ക് നീക്കുക"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"ഹോം സ്‌ക്രീനിലേക്ക് നീക്കുക"</string>
     <string name="action_resize" msgid="1802976324781771067">"വലുപ്പംമാറ്റുക"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"വീതി കൂട്ടുക"</string>
     <string name="action_increase_height" msgid="459390020612501122">"ഉയരം കൂട്ടുക"</string>
@@ -154,17 +158,20 @@
     <string name="accessibility_close" msgid="2277148124685870734">"അടയ്ക്കൂ"</string>
     <string name="notification_dismissed" msgid="6002233469409822874">"അറിയിപ്പ് നിരസിച്ചു"</string>
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"വ്യക്തിപരം"</string>
-    <string name="all_apps_work_tab" msgid="4884822796154055118">"ഔദ്യോഗികം"</string>
+    <string name="all_apps_work_tab" msgid="4884822796154055118">"Work"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"ഔദ്യോഗിക പ്രൊഫൈൽ"</string>
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"ഔദ്യോഗിക ആപ്പുകൾക്ക് ബാഡ്‌ജ് നൽകിയിരിക്കുന്നു, അവ നിങ്ങളുടെ ഐടി അഡ്‌മിന് കാണാനുമാകും"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"മനസ്സിലായി"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"ഔദ്യോഗിക ആപ്പുകൾ തൽക്കാലം നിർത്തിയിരിക്കുന്നു"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"ഔദ്യോഗിക ആപ്പുകളിൽ നിന്ന് നിങ്ങൾക്ക് അറിയിപ്പുകളൊന്നും ലഭിക്കില്ല"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"നിങ്ങൾക്ക് അറിയിപ്പുകൾ അയയ്ക്കാനോ ബാറ്ററി ഉപയോഗിക്കാനോ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാനോ നിങ്ങളുടെ ഔദ്യോഗിക ആപ്പുകൾക്ക് കഴിയില്ല"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"ഔദ്യോഗിക ആപ്പുകൾ ഓഫാണ്. നിങ്ങൾക്ക് അറിയിപ്പുകൾ അയയ്ക്കാനോ ബാറ്ററി ഉപയോഗിക്കാനോ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാനോ നിങ്ങളുടെ ഔദ്യോഗിക ആപ്പുകൾക്ക് കഴിയില്ല"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"വർക്ക് ആപ്പുകളിൽ നിന്ന് നിങ്ങൾക്ക് ഫോൺ കോളുകളും ടെക്സ്റ്റ് മെസേജുകളും അറിയിപ്പുകളും ലഭിക്കില്ല"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"ഔദ്യോഗിക ആപ്പുകൾക്ക് ബാഡ്‌ജ് നൽകിയിരിക്കുന്നു, അവ നിങ്ങളുടെ ഐടി അഡ്‌മിന് കാണാനും കഴിയും"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"മനസ്സിലായി"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"ഔദ്യോഗിക ആപ്പുകൾ ഓഫാക്കുക"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"ഔദ്യോഗിക ആപ്പുകൾ ഓണാക്കുക"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"ഔദ്യോഗിക ആപ്പുകൾ താൽക്കാലികമായി നിർത്തുക"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"താൽക്കാലികമായി നിർത്തിയത് മാറ്റുക"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"ഫിൽട്ടർ ചെയ്യുക"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"നിങ്ങളുടെ ഫോണിലുള്ളവ തിരയുക"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"നിങ്ങളുടെ ടാബ്‌ലെറ്റിലുള്ളവ തിരയുക"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"പരാജയപ്പെട്ടു: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index e6fcefa..430e80d 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Товчлол алга"</string>
     <string name="home_screen" msgid="5629429142036709174">"Нүүр"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Дэлгэцийг хуваах"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Дээш хуваах"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Зүүн тийш хуваах"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Баруун тийш хуваах"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s-н аппын мэдээлэл"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Апп хослуулалтыг хадгалах"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Виджетийг зөөх бол хүрээд, удаан дарна уу."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Виджетийг зөөх эсвэл захиалгат үйлдлийг ашиглахын тулд хоёр товшоод, удаан дарна уу."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d өргөн %2$d өндөр"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> жижиг хэрэгсэл"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Жижиг хэрэгслийг Үндсэн нүүрний эргэн тойронд зөөхийн тулд түүнд хүрээд, удаан дарна уу"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Үндсэн нүүрэнд нэмэх"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Виджетийг үндсэн нүүрний эргэн тойронд зөөхийн тулд түүнд хүрээд, удаан дарна уу"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Үндсэн нүүрэнд нэмэх"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> виджетийг үндсэн нүүрэнд нэмсэн"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Зөвлөмжүүд"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# виджет}other{# виджет}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# товчлол}other{# товчлол}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Хувийн виджетүүд"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Ажил"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Харилцан яриа"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Тэмдэглэл хөтлөх"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Хэрэгтэй мэдээллээ хурууныхаа үзүүрээр аваарай"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Аппуудыг нээлгүйгээр мэдээлэл авахын тулд та Үндсэн нүүрэндээ виджет нэмэх боломжтой"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Аппуудыг нээлгүйгээр мэдээлэл авахын тулд та үндсэн нүүрэндээ виджетүүд нэмэх боломжтой"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Жижиг хэрэгслийн тохиргоог өөрчлөхийн тулд товшино уу"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Ойлголоо"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Жижиг хэрэгслийн тохиргоог өөрчлөх"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Апп хайх"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Аппыг ачаалж байна..."</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\"-д тохирох апп олдсонгүй"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Бусад апп-г хайх"</string>
     <string name="label_application" msgid="8531721983832654978">"Апп"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Бүх апп"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Мэдэгдэл"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Товчлолыг зөөхийн тулд хүрээд, удаан дарна уу."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Товчлолыг зөөх эсвэл захиалгат үйлдлийг ашиглахын тулд хоёр товшоод, удаан дарна уу."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Энэ үндсэн нүүрэнд зай байхгүй байна"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Энэ үндсэн нүүрэнд зай байхгүй байна"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"\"Дуртай\" трей дээр өөр зай байхгүй байна"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Апп-н жагсаалт"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Хайлтын илэрц"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Таамаглалыг бэхлэх"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"товчлол суулгах"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Апп нь хэрэглэгчийн оролцоогүйгээр товчлолыг нэмэж чадна"</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"Нүүрний тохиргоо болон товчлолыг унших"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Апп нь Нүүрэндэх товчлол болон тохиргоог уншиж чадна."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"Нүүрний тохиргоо болон товчлолыг бичих"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Апп нь Нүүрэндэх товчлол болон тохиргоог өөрчилж чадна."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> утасны дуудлага хийх боломжгүй"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"нүүрний тохиргоо болон товчлолыг унших"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Аппад нүүрэн дэх тохиргоо болон товчлолыг уншихыг зөвшөөрнө."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"нүүрний тохиргоо болон товчлолыг бичих"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Аппад нүүрэн дэх тохиргоо болон товчлолыг өөрчлөхийг зөвшөөрнө."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Жижиг хэрэгслийг ачаалах боломжгүй"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Виджетийн тохиргоо"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Тохируулгыг дуусгахын тулд товшино уу"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Энэ апп нь системийн апп ба устгах боломжгүй."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Нэр засах"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g>-г идэвхгүй болгосон"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} дээр # мэдэгдэл байна}other{{app_name} дээр # мэдэгдэл байна}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} дээр # мэдэгдэл байна}other{{app_name} дээр # мэдэгдэл байна}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"%2$d-н %1$d хуудас"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"%2$d-н Нүүр дэлгэц %1$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Шинэ үндсэн нүүр хуудас"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Фолдер: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> эсвэл үүнээс олон зүйл"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Дэлгэцийн зураг"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Дэлгэцийн зураг, загвар"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Үндсэн нүүрийг засах"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Нүүр хуудасны тохиргоо"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Таны админ идэвхгүй болгосон"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Нүүр дэлгэцийг эргүүлэхийг зөвшөөрөх"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Үндсэн нүүрийг эргүүлэхийг зөвшөөрөх"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Утсыг эргүүлсэн үед"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Мэдэгдлийн цэг"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Асаалттай"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Мэдэгдлийн цэгийг харуулахын тулд <xliff:g id="NAME">%1$s</xliff:g>-д аппын мэдэгдлийг асаана уу"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Тохиргоог өөрчлөх"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Мэдэгдлийн цэгийг харуулах"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Аппын дүрс тэмдгийг Үндсэн нүүрэнд нэмэх"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Хөгжүүлэгчийн тохиргоо"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Үндсэн нүүрэнд аппын дүрс тэмдгүүдийг нэмэх"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Шинэ аппад зориулсан"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Тодорхойгүй"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Хасах"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g>-г суулгаж байна. <xliff:g id="PROGRESS">%2$s</xliff:g> дууссан"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g>-г татаж байна, <xliff:g id="PROGRESS">%2$s</xliff:g> татсан"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> нь суулгахыг хүлээж байна"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Аппын шинэчлэлт шаардлагатай"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Энэ дүрс тэмдгийн аппыг шинэчлээгүй. Та энэ товчлолыг дахин идэвхжүүлэх эсвэл дүрсийг хасахын тулд гараар шинэчлэх боломжтой."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Шинэчлэх"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Хасах"</string>
     <string name="widgets_list" msgid="796804551140113767">"Жижиг хэрэгслийн жагсаалт"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Жижиг хэрэгслийн жагсаалтыг хаасан"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Нүүр дэлгэцэд нэмэх"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Үндсэн нүүрэнд нэмэх"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Энд байршуулах"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Нүүр дэлгэцэнд нэмсэн зүйл"</string>
     <string name="item_removed" msgid="851119963877842327">"Зүйлийг устгалаа"</string>
     <string name="undo" msgid="4151576204245173321">"Болих"</string>
     <string name="action_move" msgid="4339390619886385032">"Зөөх"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"<xliff:g id="NUMBER_0">%1$s</xliff:g> мөр <xliff:g id="NUMBER_1">%2$s</xliff:g> баганад зөөх"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g> дахь <xliff:g id="NUMBER_0">%1$s</xliff:g>-р мөр, <xliff:g id="NUMBER_1">%2$s</xliff:g>-р багана руу зөөх"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Байршил <xliff:g id="NUMBER">%1$s</xliff:g>-д зөөх"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Дуртай байршил болох <xliff:g id="NUMBER">%1$s</xliff:g>-д зөөх"</string>
     <string name="item_moved" msgid="4606538322571412879">"Зөөвөрлөсөн зүйл"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Хавтсанд нэмэгдсэн зүйл"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Хавтсыг: <xliff:g id="NAME">%1$s</xliff:g> нэрээр үүсгэ"</string>
     <string name="folder_created" msgid="6409794597405184510">"Үүсгэсэн хавтас"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Нүүр дэлгэц рүү зөөх"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Үндсэн нүүр лүү зөөх"</string>
     <string name="action_resize" msgid="1802976324781771067">"Хэмжээг өөрчлөх"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Өргөсгөх"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Өндөрсгөх"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Ажлын аппуудыг тэмдэглэсэн бөгөөд танай IT админд харагдана"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Ойлголоо"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Ажлын аппуудыг түр зогсоосон"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Та ажлын аппуудаасаа мэдэгдэл хүлээн авахгүй"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Таны ажлын аппууд танд мэдэгдэл илгээх, таны батарейг ашиглах эсвэл байршилд тань хандах боломжгүй"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Ажлын аппууд унтраалттай байна. Таны ажлын аппууд танд мэдэгдэл илгээх, таны батарейг ашиглах эсвэл байршилд тань хандах боломжгүй"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Та ажлын аппуудаасаа утасны дуудлага, мессеж эсвэл мэдэгдэл хүлээн авахгүй"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Ажлын аппуудыг тэмдэглэсэн бөгөөд танай IT админд харагдана"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Ойлголоо"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Ажлын аппуудыг унтраах"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Ажлын аппуудыг асаах"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Ажлын аппуудыг түр зогсоох"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Түр зогсоохоо болих"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Шүүлтүүр"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Утаснаасаа хайх"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Таблетнаасаа хайх"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Амжилтгүй болсон: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 34bdcd2..b4515a0 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"शॉर्टकट उपलब्ध नाही"</string>
     <string name="home_screen" msgid="5629429142036709174">"होम"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"स्प्लिट स्क्रीन"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"सर्वात वरती स्प्लिट करा"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"डावीकडे स्प्लिट करा"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"उजवीकडे स्प्लिट करा"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s साठी ॲपशी संबंधित माहिती"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"ॲपची जोडी सेव्ह करा"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"विजेट हलवण्यासाठी स्पर्श करा आणि धरून ठेवा."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"विजेट हलवण्यासाठी किंवा कस्टम कृती वापरण्यासाठी दोनदा टॅप करा आणि धरून ठेवा."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d रूंद बाय %2$d उंच"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> विजेट"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"होम स्क्रीनवर ते हलवण्यासाठी विजेटला स्पर्श करा आणि धरून ठेवा"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"होम स्‍क्रीनवर जोडा"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"होम स्क्रीनवर ते हलवण्यासाठी विजेटला स्पर्श करा आणि धरून ठेवा"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"होम स्क्रीनवर जोडा"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> हे विजेट तुमच्या होम स्क्रीनवर जोडले आहे"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"सूचना"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# विजेट}other{# विजेट}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# शॉर्टकट}other{# शॉर्टकट}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"वैयक्तिक"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ऑफिस"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"संभाषणे"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"टिपा घेणे"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"तुमच्यासाठी सहज उपलब्ध असलेली माहिती"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"ॲप्स न उघडता माहिती मिळवण्यासाठी, तुम्ही तुमच्या होम स्क्रीनवर विजेट जोडू शकता"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"ॲप्स न उघडता माहिती मिळवण्यासाठी, तुम्ही तुमच्या होम स्क्रीनवर विजेट जोडू शकता"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"विजेट सेटिंग्ज बदलण्यासाठी टॅप करा"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"समजले"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"विजेट सेटिंग्ज बदला"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"अ‍ॅप्स शोधा"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"अ‍ॅप्स लोड करत आहे…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" शी जुळणारे कोणतेही अ‍ॅप्स आढळले नाहीत"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"अधिक अ‍ॅप्स शोधा"</string>
     <string name="label_application" msgid="8531721983832654978">"ॲप"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"सर्व अ‍ॅप्स"</string>
     <string name="notifications_header" msgid="1404149926117359025">"सूचना"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"शॉर्टकट हलवण्यासाठी स्पर्श करा आणि धरून ठेवा."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"शॉर्टकट हलवण्यासाठी किंवा कस्टम कृती वापरण्यासाठी दोनदा टॅप करा आणि धरून ठेवा."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"या होम स्क्रीनवर कोणतीही रूम नाही"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"या होम स्क्रीनवर जागा नाही"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"आवडीच्या ट्रे मध्ये आणखी जागा नाही"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"अ‍ॅप्स सूची"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"शोध परिणाम"</string>
@@ -79,21 +78,20 @@
     <string name="pin_prediction" msgid="4196423321649756498">"पूर्वानुमान पिन करा"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"शॉर्टकट इंस्टॉल करा"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"वापरकर्ता हस्तक्षेपाशिवाय शॉर्टकट जोडण्यास अ‍ॅप ला अनुमती देते."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"होम सेटिंग्ज आणि शॉर्टकट वाचा"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"मुख्यपृष्ठातील सेटिंग्ज आणि शॉर्टकट वाचण्यास अ‍ॅप ला अनुमती देते."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"होम सेटिंग्ज आणि शॉर्टकट लिहा"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"मुख्यपृष्ठातील सेटिंग्ज आणि शॉर्टकट बदलण्यास अ‍ॅप ला अनुमती देते."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> ला फोन कॉल करण्याची अनुमती नाही"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"होम सेटिंग्ज आणि शॉर्टकट वाचा"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"अ‍ॅपला होममधील सेटिंग्ज आणि शॉर्टकट वाचण्याची अनुमती देते."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"होम सेटिंग्ज आणि शॉर्टकट लिहा"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"अ‍ॅपला होममधील सेटिंग्ज आणि शॉर्टकट बदलण्याची अनुमती देते."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"विजेट लोड करू शकत नाही"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"विजेटची सेटिंग्ज"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"सेटअप पूर्ण करण्‍यासाठी टॅप करा"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"हा सिस्टम अ‍ॅप आहे आणि अनइंस्टॉल केला जाऊ शकत नाही."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"नाव संपादित करा"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> अक्षम केला आहे"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} साठी # सूचना आहे}other{{app_name} साठी # सूचना आहेत}}"</string>
-    <string name="default_scroll_format" msgid="7475544710230993317">"%2$d पैकी %1$d पृष्ठ"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} संबंधित # सूचना आहे}other{{app_name} संबंधित # सूचना आहेत}}"</string>
+    <string name="default_scroll_format" msgid="7475544710230993317">"%2$d पैकी %1$d पेज"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"%2$d पैकी %1$d मुख्य स्क्रीन"</string>
-    <string name="workspace_new_page" msgid="257366611030256142">"नवीन मुख्य स्क्रीन पृष्ठ"</string>
+    <string name="workspace_new_page" msgid="257366611030256142">"नवीन होम स्क्रीन पेज"</string>
     <string name="folder_opened" msgid="94695026776264709">"फोल्डर उघडले, <xliff:g id="WIDTH">%1$d</xliff:g> बाय <xliff:g id="HEIGHT">%2$d</xliff:g>"</string>
     <string name="folder_tap_to_close" msgid="4625795376335528256">"फोल्डर बंद करण्यासाठी टॅप करा"</string>
     <string name="folder_tap_to_rename" msgid="4017685068016979677">"पुनर्नामित करणे सेव्ह करण्यासाठी टॅप करा"</string>
@@ -103,10 +101,11 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"फोल्डर: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> किंवा त्याहून अधिक आयटम"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"वॉलपेपर"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"वॉलपेपर आणि शैली"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"होम स्क्रीन संपादित करा"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"होम सेटिंग्‍ज"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"आपल्या प्रशासकाने अक्षम केले"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"मुख्य स्क्रीन फिरविण्‍यास अनुमती द्या"</string>
-    <string name="allow_rotation_desc" msgid="8662546029078692509">"फोन फिरविला जातो तेव्हा"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"होम स्क्रीन फिरवण्‍याची अनुमती द्या"</string>
+    <string name="allow_rotation_desc" msgid="8662546029078692509">"फोन फिरवला जातो तेव्हा"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"सूचना बिंदू"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"सुरू"</string>
     <string name="notification_dots_desc_off" msgid="1760796511504341095">"बंद"</string>
@@ -114,25 +113,30 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"सूचना बिंदू दाखवण्यासाठी, <xliff:g id="NAME">%1$s</xliff:g> साठी अ‍ॅप सूचना सुरू करा"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"सेटिंग्ज बदला"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"सूचना बिंदू दाखवा"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"होम स्क्रीनवर ॲप आयकन जोडा"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"डेव्हलपर पर्याय"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"होम स्क्रीनवर ॲप आयकन जोडा"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"नवीन अ‍ॅप्ससाठी"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"अज्ञात"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"काढा"</string>
     <string name="abandoned_search" msgid="891119232568284442">"शोधा"</string>
     <string name="abandoned_promises_title" msgid="7096178467971716750">"हा अ‍ॅप इंस्टॉल केलेला नाही"</string>
-    <string name="abandoned_promise_explanation" msgid="3990027586878167529">"या चिन्हासाठी अ‍ॅप इंस्टॉल केलेला नाही. तुम्ही ते काढू शकता किंवा अ‍ॅपचा शोध घेऊ शकता आणि त्यास व्यक्तिचलितपणे इंस्टॉल करू शकता."</string>
+    <string name="abandoned_promise_explanation" msgid="3990027586878167529">"या आयकनसाठी अ‍ॅप इंस्टॉल केलेले नाही. तुम्ही तो काढू शकता किंवा अ‍ॅपचा शोध घेऊन ते मॅन्युअली इंस्टॉल करू शकता."</string>
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> इंस्टॉल करत आहे, <xliff:g id="PROGRESS">%2$s</xliff:g> पूर्ण झाले"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> डाउनलोड होत आहे , <xliff:g id="PROGRESS">%2$s</xliff:g> पूर्ण झाले"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> इंस्टॉल करण्याची प्रतिक्षा करत आहे"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"अ‍ॅप अपडेट करणे आवश्‍यक आहे"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"या आयकनसाठी अ‍ॅप अपडेट केलेले नाही. हा शॉटकर्ट पुन्हा सुरू करण्यासाठी तुम्ही मॅन्युअली अपडेट करू शकता किंवा आयकन काढून टाका."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"अपडेट करा"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"काढून टाका"</string>
     <string name="widgets_list" msgid="796804551140113767">"विजेट सूची"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"विजेट सूची बंद केली"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"होम स्क्रीनवर जोडा"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"होम स्क्रीनवर जोडा"</string>
     <string name="action_move_here" msgid="2170188780612570250">"आयटम येथे हलवा"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"आयटम मुख्य स्क्रीनवर जोडला"</string>
     <string name="item_removed" msgid="851119963877842327">"आयटम काढला"</string>
     <string name="undo" msgid="4151576204245173321">"पूर्ववत करा"</string>
     <string name="action_move" msgid="4339390619886385032">"आयटम हलवा"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"पंक्ति <xliff:g id="NUMBER_0">%1$s</xliff:g> स्तंभ <xliff:g id="NUMBER_1">%2$s</xliff:g> मध्ये हलवा"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g> मधील <xliff:g id="NUMBER_0">%1$s</xliff:g> पंक्ती <xliff:g id="NUMBER_1">%2$s</xliff:g> स्तंभ यावर हलवा"</string>
     <string name="move_to_position" msgid="6750008980455459790">"<xliff:g id="NUMBER">%1$s</xliff:g> स्थानावर हलवा"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"आवडत्या <xliff:g id="NUMBER">%1$s</xliff:g> स्थानावर हलवा"</string>
     <string name="item_moved" msgid="4606538322571412879">"आयटम हलविला"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"फोल्‍डरमध्‍ये आयटम जोडले"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"यासह फोल्‍डर तयार करा: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"फोल्‍डर तयार केले"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"मुख्य स्क्रीनवर हलवा"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"होम स्क्रीनवर हलवा"</string>
     <string name="action_resize" msgid="1802976324781771067">"आकार बदला"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"रूंदी वाढवा"</string>
     <string name="action_increase_height" msgid="459390020612501122">"उंची वाढवा"</string>
@@ -156,15 +160,18 @@
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"वैयक्तिक"</string>
     <string name="all_apps_work_tab" msgid="4884822796154055118">"कार्य"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"कार्य प्रोफाइल"</string>
-    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"कामाशी संबंधित ॲप्स ही बॅज केलेली असून तुमच्या IT ॲडमिनला दृश्यमान आहेत"</string>
+    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"कार्य ॲप्स ही बॅज केलेली असून तुमच्या आयटी ॲडमिनला दृश्यमान आहेत"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"समजले"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"कार्य ॲप्स थांबवली आहेत"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"तुम्हाला तुमच्या कार्य अ‍ॅप्सवरून सूचना मिळणार नाहीत"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"तुमची कार्य ॲप्स तुम्हाला सूचना पाठवू शकत नाहीत, तुमची बॅटरी वापरू शकत नाहीत किंवा तुमचे स्थान अ‍ॅक्सेस करू शकत नाहीत"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"कामाशी संबंधित ॲप्स बंद आहेत. तुमचे कामाशी संबंधित ॲप्स तुम्हाला सूचना पाठवू शकत नाहीत, तुमची बॅटरी वापरू शकत नाहीत किंवा तुमचे स्थान अ‍ॅक्सेस करू शकत नाहीत"</string>
-    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Work apps ही बॅज केलेली असून तुमच्या IT ॲडमिनला दृश्यमान आहेत"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"तुम्हाला तुमच्या कार्य अ‍ॅप्सवरून फोन कॉल, एसएमएस किंवा सूचना मिळणार नाहीत"</string>
+    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"कार्य ॲप्स ही बॅज केलेली असून तुमच्या आयटी ॲडमिनला दृश्यमान आहेत"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"समजले"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"कामाशी संबंधित ॲप्स बंद करा"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"कार्य ॲप्स सुरू करा"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"कार्य ॲप्स थांबवा"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"अनपॉझ करा"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"फिल्टर"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"तुमच्या फोनमध्ये शोधा"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"तुमच्या टॅबलेटमध्ये शोधा"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"हे करता आले नाही: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index d39a213..5dcc913 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Pintasan tidak tersedia"</string>
     <string name="home_screen" msgid="5629429142036709174">"Rumah"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Skrin pisah"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Pisah atas"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Pisah kiri"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Pisah kanan"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Maklumat apl untuk %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Simpan gandingan apl"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Sentuh &amp; tahan untuk menggerakkan widget."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Ketik dua kali &amp; tahan untuk menggerakkan widget atau menggunakan tindakan tersuai."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"Lebar %1$d kali tinggi %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Sentuh &amp; tahan widget untuk menggerakkan widget di sekitar Skrin utama"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Tambahkan pada Skrin utama"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Sentuh &amp; tahan widget untuk menggerakkan widget di sekitar skrin utama"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Tambahkan pada skrin utama"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g> ditambahkan pada skrin utama"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Cadangan"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}other{# widget}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# pintasan}other{# pintasan}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Peribadi"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Tempat kerja"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Perbualan"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Pengambilan nota"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Maklumat berguna di hujung jari anda"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Untuk mendapatkan maklumat tanpa membuka apl, anda boleh menambahkan widget pada skrin Utama anda"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Untuk mendapatkan maklumat tanpa membuka apl, anda boleh menambahkan widget pada skrin utama anda"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Ketik untuk menukar tetapan widget"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Tukar tetapan widget"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Cari apl"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Memuatkan apl…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Tiada apl yang ditemui sepadan dengan \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Cari lagi apl"</string>
     <string name="label_application" msgid="8531721983832654978">"Apl"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Semua apl"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Pemberitahuan"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Sentuh &amp; tahan untuk menggerakkan pintasan."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Ketik dua kali &amp; tahan untuk menggerakkan pintasan atau menggunakan tindakan tersuai."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Tiada ruang di skrin Utama ini"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Tiada ruang di skrin utama ini"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Tiada ruang dalam dulang Kegemaran lagi"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Senarai apl"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Hasil carian"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Sematkan Ramalan"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"pasang pintasan"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Membenarkan apl menambah pintasan tanpa campur tangan pengguna."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"baca tetapan dan pintasan Laman Utama"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Membenarkan apl membaca tetapan dan pintasan di Laman Utama."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"tulis tetapan dan pintasan Laman Utama"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Membenarkan apl menukar tetapan dan pintasan di Laman Utama."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak dibenarkan membuat panggilan telefon"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"membaca tetapan dan pintasan skrin utama"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Membenarkan apl membaca tetapan dan pintasan di skrin utama."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"menulis tetapan dan pintasan skrin utama"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Membenarkan apl menukar tetapan dan pintasan di skrin utama."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Tidak dapat memuatkan widget"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Tetapan widget"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Ketik untuk menyelesaikan persediaan"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Ini ialah apl sistem dan tidak boleh dinyahpasang."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Edit Nama"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> dilumpuhkan"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} mempunyai # pemberitahuan}other{{app_name} mempunyai # pemberitahuan}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} mempunyai # pemberitahuan}other{{app_name} mempunyai # pemberitahuan}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Halaman %1$d daripada %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Skrin Laman Utama %1$d daripada %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Halaman skrin utama baharu"</string>
@@ -101,11 +99,12 @@
     <string name="folder_renamed" msgid="1794088362165669656">"Folder dinamakan semula kepada <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_name_format_exact" msgid="8626242716117004803">"Folder: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> item"</string>
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Folder: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> atau lebih banyak item"</string>
-    <string name="wallpaper_button_text" msgid="8404103075899945851">"Kertas dinding"</string>
-    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Kertas dinding &amp; gaya"</string>
-    <string name="settings_button_text" msgid="8873672322605444408">"Tetapan laman utama"</string>
+    <string name="wallpaper_button_text" msgid="8404103075899945851">"Hiasan latar"</string>
+    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Hiasan latar &amp; gaya"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Edit Skrin Utama"</string>
+    <string name="settings_button_text" msgid="8873672322605444408">"Tetapan skrin utama"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Dilumpuhkan oleh pentadbir anda"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Benarkan putaran Skrin Utama"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Benarkan putaran skrin utama"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Apabila telefon diputar"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Titik pemberitahuan"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Hidup"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Untuk menunjukkan Titik Pemberitahuan, hidupkan pemberitahuan apl untuk <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Tukar tetapan"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Tunjukkan titik pemberitahuan"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Tambahkan ikon apl pada Skrin utama"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Pilihan Pembangun"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Tambahkan ikon apl pada skrin utama"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Untuk apl baharu"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Tidak diketahui"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Alih keluar"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> dipasang, <xliff:g id="PROGRESS">%2$s</xliff:g> selesai"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> memuat turun, <xliff:g id="PROGRESS">%2$s</xliff:g> selesai"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> menunggu untuk dipasang"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Kemas kini apl diperlukan"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Apl untuk ikon ini tidak dikemas kini. Anda boleh mengemas kini secara manual untuk mendayakan semula pintasan atau mengalih keluar ikon."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Kemas kini"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Alih keluar"</string>
     <string name="widgets_list" msgid="796804551140113767">"Senarai widget"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Senarai widget ditutup"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Tambahkan pada Skrin Utama"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Tambahkan pada skrin utama"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Alihkan item ke sini"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Item ditambahkan pada skrin utama"</string>
     <string name="item_removed" msgid="851119963877842327">"Item dialih keluar"</string>
     <string name="undo" msgid="4151576204245173321">"Buat asal"</string>
     <string name="action_move" msgid="4339390619886385032">"Alihkan Item"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Alihkan ke baris <xliff:g id="NUMBER_0">%1$s</xliff:g> lajur <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Alihkan ke baris <xliff:g id="NUMBER_0">%1$s</xliff:g> lajur <xliff:g id="NUMBER_1">%2$s</xliff:g> dalam <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Alihkan ke kedudukan <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Alihkan ke kedudukan kegemaran <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Item dialihkan"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Item ditambahkan pada folder"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Buat folder dengan: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Folder dibuat"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Alihkan ke Skrin Utama"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Alihkan ke skrin utama"</string>
     <string name="action_resize" msgid="1802976324781771067">"Ubah saiz"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Tambahkan kelebaran"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Tambahkan ketinggian"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Apl kerja mempunyai lencana dan kelihatan kepada pentadbir IT anda"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Apl kerja dijeda"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Anda tidak akan menerima pemberitahuan daripada apl kerja anda"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Apl kerja anda tidak boleh menghantar pemberitahuan kepada anda, menggunakan bateri anda atau mengakses lokasi anda"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Apl kerja dimatikan. Apl kerja anda tidak boleh menghantar pemberitahuan kepada anda, menggunakan bateri anda atau mengakses lokasi anda"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Anda tidak akan menerima panggilan telefon, mesej teks atau pemberitahuan daripada apl kerja anda"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Apl kerja mempunyai lencana dan kelihatan kepada pentadbir IT anda"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Matikan apl kerja"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Hidupkan apl kerja"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Jeda apl kerja"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Nyahjeda"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Tapis"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Cari pada telefon"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Cari pada tablet anda"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Gagal: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 0d4c8fa..86d7a1a 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"ဖြတ်လမ်း မရနိုင်ပါ"</string>
     <string name="home_screen" msgid="5629429142036709174">"ပင်မစာမျက်နှာ"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"မျက်နှာပြင် ခွဲ၍ပြသခြင်း"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"ထိပ်ပိုင်း အခွဲ"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"ဘက်ဘက် အခွဲ"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"ညာဘက် အခွဲ"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s အတွက် အက်ပ်အချက်အလက်"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"အက်ပ်တွဲချိတ်ခြင်း သိမ်းရန်"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"ဝိဂျက်ကို ရွှေ့ရန် တို့ပြီး ဖိထားပါ။"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"ဝိဂျက်ကို ရွှေ့ရန် (သို့) စိတ်ကြိုက်လုပ်ဆောင်ချက်များကို သုံးရန် နှစ်ချက်တို့ပြီး ဖိထားပါ။"</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"အလျား %1$d နှင့် အမြင့် %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> ဝိဂျက်"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"ပင်မစာမျက်နှာအနီးတွင် ဝိဂျက်ကိုရွှေ့ရန် ၎င်းကို တို့ထိ၍ဖိထားပါ"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"ပင်မစာမျက်နှာသို့ ထည့်ရန်"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"ပင်မစာမျက်နှာတွင်ရွှေ့ရန် ဝိဂျက်ကို တို့ထိ၍ ဖိထားပါ"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"ပင်မစာမျက်နှာတွင် ထည့်ရန်"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> ဝိဂျက်ကို ပင်မစာမျက်နှာတွင် ထည့်လိုက်ပြီ"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"အကြံပြုချက်"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{ဝိဂျက် # ခု}other{ဝိဂျက် # ခု}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{ဖြတ်လမ်းလင့်ခ် # ခု}other{ဖြတ်လမ်းလင့်ခ် # ခု}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>၊ <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,46 +50,45 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ကိုယ်ပိုင်"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"အလုပ်"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"စကားဝိုင်းများ"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"မှတ်စုလိုက်ခြင်း"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"အသုံးဝင်သော အချက်အလက်များကို အလွယ်တကူ ရယူလိုက်ပါ"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"အက်ပ်များကိုမဖွင့်ဘဲ အချက်အလက်များရယူရန် သင်၏ ပင်မစာမျက်နှာသို့ ဝိဂျက်များ ထည့်နိုင်သည်"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"အက်ပ်မဖွင့်ဘဲ အချက်အလက်များရယူရန် ပင်မစာမျက်နှာတွင် ဝိဂျက်များ ထည့်နိုင်သည်"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"ဝိဂျက် ဆက်တင်များကို ပြောင်းရန် တို့ပါ"</string>
-    <string name="widget_education_close_button" msgid="8676165703104836580">"ရပြီ"</string>
+    <string name="widget_education_close_button" msgid="8676165703104836580">"နားလည်ပြီ"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"ဝိဂျက် ဆက်တင်များကို ပြောင်းပါ"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"ရှာဖွေမှု အက်ပ်များ"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"အက်ပ်များကို ဖွင့်နေသည်…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" နှင့်ကိုက်ညီသည့် အပ်ပ်များကို မတွေ့ပါ"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"နောက်ထပ် အက်ပ်များကို ရှာပါ"</string>
     <string name="label_application" msgid="8531721983832654978">"အက်ပ်"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"အက်ပ်အားလုံး"</string>
     <string name="notifications_header" msgid="1404149926117359025">"အကြောင်းကြားချက်များ"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"ဖြတ်လမ်းလင့်ခ်ကို ရွှေ့ရန် နှစ်ချက်တို့ပြီး ဖိထားပါ။"</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"ဖြတ်လမ်းလင့်ခ်ကို ရွှေ့ရန် (သို့) စိတ်ကြိုက်လုပ်ဆောင်ချက်များကို သုံးရန် နှစ်ချက်တို့ပြီး ဖိထားပါ။"</string>
-    <string name="out_of_space" msgid="6692471482459245734">"ဤပင်မစာမျက်နှာတွင် နေရာလွတ် မရှိတော့ပါ"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"ဤပင်မစာမျက်နှာတွင် နေရာလွတ် မရှိတော့ပါ"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"အနှစ်သက်ဆုံးများ ထားရာတွင် နေရာလွတ် မကျန်တော့ပါ"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"အက်ပ်စာရင်း"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"ရှာဖွေမှု ရလဒ်များ"</string>
     <string name="all_apps_button_personal_label" msgid="1315764287305224468">"တစ်ကိုယ်ရေသုံး အက်ပ်စာရင်း"</string>
     <string name="all_apps_button_work_label" msgid="7270707118948892488">"အလုပ်သုံး အက်ပ်စာရင်း"</string>
     <string name="remove_drop_target_label" msgid="7812859488053230776">"ဖယ်ရှားမည်"</string>
-    <string name="uninstall_drop_target_label" msgid="4722034217958379417">"ဖြုတ်ရန်"</string>
+    <string name="uninstall_drop_target_label" msgid="4722034217958379417">"ဖယ်ရှားရန်"</string>
     <string name="app_info_drop_target_label" msgid="692894985365717661">"အက်ပ်အချက်အလက်"</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"ထည့်သွင်းရန်"</string>
-    <string name="dismiss_prediction_label" msgid="3357562989568808658">"အက်ပ်ကို အကြံမပြုပါနှင့်"</string>
+    <string name="dismiss_prediction_label" msgid="3357562989568808658">"အက်ပ်အကြံမပြုပါနှင့်"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"ခန့်မှန်းချက်ကို ပင်ထိုးရန်"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"ဖြတ်လမ်းလင့်ခ်များ ထည့်သွင်းခြင်း"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"အသုံးပြုသူ လုပ်ဆောင်မှုမရှိပဲ အပ်ပလီကေးရှင်းကို အတိုကောက်မှတ်သားမှုများ ပြုလုပ်ခွင့် ပေးခြင်း"</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"ပင်မမျက်နှာစာ အပြင်အဆင် နှင့် အတိုကောက်မှတ်သားမှုများအား ဖတ်ခြင်း"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"ပင်မမျက်နှာစာတွင်ရှိသော အပြင်အဆင်နှင့် အတိုကောက်မှတ်သားမှုများကို အပ်ပလီကေးရှင်းအား ဖတ်ခွင့်ပြုခြင်း"</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"ပင်မမျက်နှာစာ အပြင်အဆင် နှင့် အတိုကောက်မှတ်သားမှုများအား ရေးသားခြင်း"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"ပင်မမျက်နှာစာတွင် ရှိသော အပြင်အဆင် နှင့် အတိုကောက်မှတ်သားမှုများ ကို အပ်ပလီကေးရှင်းအား ပြောင်းခွင့်ပြုခြင်း"</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g>သည် ဖုန်းခေါ်ဆိုခွင့် မရှိပါ"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"ပင်မဆက်တင်နှင့် ဖြတ်လမ်းလင့်ခ်များ ဖတ်ခြင်း"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"ပင်မတွင်ရှိသော ဆက်တင်များနှင့် ဖြတ်လမ်းလင့်ခ်များကို အက်ပ်အား ဖတ်ခွင့်ပြုနိုင်သည်။"</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"ပင်မဆက်တင်နှင့် ဖြတ်လမ်းလင့်ခ်များ ရေးသားခြင်း"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"ပင်မတွင်ရှိသော ဆက်တင်များနှင့် ဖြတ်လမ်းလင့်ခ်များကို အက်ပ်အား ပြောင်းခွင့်ပြုနိုင်သည်။"</string>
     <string name="gadget_error_text" msgid="740356548025791839">"ဝိဂျက်ကို ဖွင့်၍မရပါ"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"ဝိဂျက်ဆက်တင်များ"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"စနစ်ထည့်သွင်းခြင်း အပြီးသတ်ရန် တို့ပါ"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"ဤအပ်ပလီကေးရှင်းမှာ စစ်စတန်ပိုင်းဆိုင်ရာ အပ်ပလီကေးရှင်းဖြစ်ပါသည်။ ထုတ်ပစ်၍ မရပါ"</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"အမည်ကို တည်းဖြတ်ပါ"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> ကို ပိတ်ထားသည်"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} တွင် အကြောင်းကြားချက် # ခု ရှိသည်}other{{app_name} တွင် အကြောင်းကြားချက် # ခု ရှိသည်}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} တွင် အကြောင်းကြားချက် # ခု ရှိသည်}other{{app_name} တွင် အကြောင်းကြားချက် # ခု ရှိသည်}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"စာမျက်နှာ %1$d မှ %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"ပင်မစာမျက်နှာ %1$d မှ %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"ပင်မမျက်နှာပြင် စာမျက်နှာသစ်"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"ဖိုင်တွဲ - <xliff:g id="NAME">%1$s</xliff:g>၊ <xliff:g id="SIZE">%2$d</xliff:g> သို့မဟုတ် နောက်ထပ်ဖိုင်များ"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"နောက်ခံများ"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"နောက်ခံနှင့် ပုံစံ"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"ပင်မစာမျက်နှာ တည်းဖြတ်ရန်"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"ပင်မဆက်တင်များ"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"သင့်စီမံခန့်ခွဲသူက ပိတ်လိုက်ပါသည်"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"ပင်မစာမျက်နှာလှည့်ခြင်းကို ခွင့်ပြုပါ"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"ပင်မစာမျက်နှာလှည့်ခြင်းကို ခွင့်ပြုခြင်း"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"ဖုန်းကိုလှည့်ထားစဉ်"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"သတိပေးချက် အစက်များ"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"ဖွင့်"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"အကြောင်းကြားချက် အစက်များကို ပြသရန် <xliff:g id="NAME">%1$s</xliff:g> အတွက် အက်ပ်အကြောင်းကြားချက်များကို ဖွင့်ပါ"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"ဆက်တင်များ ပြောင်းရန်"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"အကြောင်းကြားချက် အစက်များ ပြရန်"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"ပင်မစာမျက်နှာတွင် အက်ပ်သင်္ကေတထည့်ရန်"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"တီထွင်သူ ရွေးစရာများ"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"ပင်မစာမျက်နှာတွင် အက်ပ်သင်္ကေတထည့်ခြင်း"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"အက်ပ်အသစ်များအတွက်"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"မသိ"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"ဖယ်ရှားရန်"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> ကို ထည့်သွင်းနေသည်၊ <xliff:g id="PROGRESS">%2$s</xliff:g> ပြီးပါပြီ"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> ဒေါင်းလုဒ်လုပ်နေသည်၊ <xliff:g id="PROGRESS">%2$s</xliff:g> ပြီးပါပြီ"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> ကိုထည့်သွင်းရန်စောင့်နေသည်"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"အက်ပ်ကို အပ်ဒိတ်လုပ်ရန် လိုအပ်သည်"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"ဤသင်္ကေတအတွက် အက်ပ်ကို အပ်ဒိတ်လုပ်မထားပါ။ ဤဖြတ်လမ်းလင့်ခ်ကို ပြန်ဖွင့်ရန် ကိုယ်တိုင်အပ်ဒိတ်လုပ်နိုင်သည် (သို့) သင်္ကေတကို ဖယ်ရှားနိုင်သည်။"</string>
+    <string name="dialog_update" msgid="2178028071796141234">"အပ်ဒိတ်လုပ်ရန်"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"ဖယ်ရှားရန်"</string>
     <string name="widgets_list" msgid="796804551140113767">"ဝိဂျက်စာရင်း"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"ဝိဂျက်စာရင်းကို ပိတ်ထားသည်"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"ပင်မမျက်နှာစာသို့ ထည့်ပါ"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"ပင်မစာမျက်နှာတွင် ထည့်ရန်"</string>
     <string name="action_move_here" msgid="2170188780612570250">"၎င်းအား ဤသို့ ရွှေ့ပါ"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"ပင်မ ဖန်မျက်နှာပြင်သို့ ထည့်ပြီး၏"</string>
-    <string name="item_removed" msgid="851119963877842327">"၎င်းအား ဖယ်ရှားပြီး၏"</string>
+    <string name="item_removed" msgid="851119963877842327">"ဖယ်ရှားပြီးပြီ"</string>
     <string name="undo" msgid="4151576204245173321">"နောက်ပြန်ရန်"</string>
     <string name="action_move" msgid="4339390619886385032">"၎င်းအား ရွှေ့ပါ"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"အတန်း <xliff:g id="NUMBER_0">%1$s</xliff:g> အတိုင် <xliff:g id="NUMBER_1">%2$s</xliff:g> သို့ ရွှေ့ပါ"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g> တွင် အတန်း <xliff:g id="NUMBER_0">%1$s</xliff:g> ကော်လံ <xliff:g id="NUMBER_1">%2$s</xliff:g> သို့ ရွှေ့နိုင်သည်"</string>
     <string name="move_to_position" msgid="6750008980455459790">"<xliff:g id="NUMBER">%1$s</xliff:g> သို့ နေရာရွှေ့ပါ"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"စိတ်ကြိုက်နေရာ <xliff:g id="NUMBER">%1$s</xliff:g> သို့ ရွှေ့ပါ"</string>
     <string name="item_moved" msgid="4606538322571412879">"၎င်းအားရွှေ့ပြီး"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"ဖိုလ်ဒါသို့ ထည့်ပြီး"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"ဖိုလ်ဒါ ပြုလုပ်ရန်- <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"ဖိုလ်ဒါ ပြုလုပ်ပြီး"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"ပင်မမျက်နှာပြင်သို့ ရွှေ့ပါ"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"ပင်မစာမျက်နှာသို့ ရွှေ့ရန်"</string>
     <string name="action_resize" msgid="1802976324781771067">"အရွယ်အစားပြောင်းပါ"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"အကျယ်အား တိုးပါ"</string>
     <string name="action_increase_height" msgid="459390020612501122">"အမြင့်အား တိုးပါ"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"အလုပ်သုံးအက်ပ်များကို တံဆိပ်တပ်ထားပြီး သင်၏ IT စီမံခန့်ခွဲသူက မြင်နိုင်ပါသည်"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"ရပါပြီ"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"အလုပ်သုံးအက်ပ်များကို ခေတ္တရပ်ထားသည်"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"သင်၏ အလုပ်သုံးအက်ပ်များမှ အကြောင်းကြားချက်များကို ရရှိမည်မဟုတ်ပါ"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"သင်၏ အလုပ်သုံးအက်ပ်များက အကြောင်းကြားချက်များ ပို့ခြင်း၊ သင့်ဘက်ထရီ သုံးခြင်း (သို့) သင့်တည်နေရာ သုံးခြင်းတို့ မပြုလုပ်နိုင်ပါ"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"အလုပ်သုံးအက်ပ်များ ပိတ်ထားသည်။ သင်၏ အလုပ်သုံးအက်ပ်များက အကြောင်းကြားချက်များ ပို့ခြင်း၊ သင့်ဘက်ထရီ သုံးခြင်း (သို့) သင့်တည်နေရာ သုံးခြင်းတို့ မပြုလုပ်နိုင်ပါ"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"သင်၏ အလုပ်သုံးအက်ပ်များမှ ဖုန်းခေါ်ဆိုမှု၊ မိုဘိုင်းမက်ဆေ့ဂျ် (သို့) အကြောင်းကြားချက်များ ရရှိမည်မဟုတ်ပါ"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"အလုပ်သုံးအက်ပ်များကို တံဆိပ်တပ်ထားပြီး သင်၏ IT စီမံခန့်ခွဲသူက မြင်နိုင်ပါသည်"</string>
-    <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"ရပြီ"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"အလုပ်သုံးအက်ပ်များ ပိတ်ရန်"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"အလုပ်သုံးအက်ပ်များ ဖွင့်ရန်"</string>
+    <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"နားလည်ပြီ"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"အလုပ်သုံးအက်ပ်များကို ခဏရပ်ရန်"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"ပြန်စရန်"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"စစ်ထုတ်ရန်"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"သင့်ဖုန်းတွင် ရှာခြင်း"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"သင့်တက်ဘလက်ကို ရှာခြင်း"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"မအောင်မြင်ပါ− <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 6dff142..485f845 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Snarveien er ikke tilgjengelig"</string>
     <string name="home_screen" msgid="5629429142036709174">"Startskjerm"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Delt skjerm"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Splitt øverst"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Splitt til venstre"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Splitt til høyre"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Appinformasjon for %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Lagre apptilkoblingen"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Trykk og hold for å flytte en modul."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dobbelttrykk og hold inne for å flytte en modul eller bruke tilpassede handlinger."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d bredde x %2$d høyde"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g>-modul"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Trykk og hold på modulen for å bevege den rundt på startskjermen"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Legg til på startskjermen"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Trykk og hold på modulen for å bevege den rundt på startskjermen"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Legg til på startskjermen"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g>-modulen er lagt til på startskjermen"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Forslag"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# modul}other{# moduler}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# snarvei}other{# snarveier}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personlige"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Jobb"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Samtaler"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Notatskriving"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Lett tilgjengelig nyttig informasjon"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"For å se informasjon uten å åpne apper kan du legge til moduler på startskjermen"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"For å se informasjon uten å åpne apper kan du legge til moduler på startskjermen"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Trykk for å endre modulinnstillinger"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Greit"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Endre modulinnstillinger"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Søk etter apper"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Laster inn appene …"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Fant ingen apper som samsvarer med «<xliff:g id="QUERY">%1$s</xliff:g>»"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Søk etter flere apper"</string>
     <string name="label_application" msgid="8531721983832654978">"App"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Alle apper"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Varsler"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Trykk og hold for å flytte en snarvei."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dobbelttrykk og hold for å flytte en snarvei eller bruke tilpassede handlinger."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Ingen ledig plass på denne startskjermen"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Ingen ledig plass på denne startskjermen"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Favoritter-skuffen er full"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"App-liste"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Søkeresultater"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Fest forslaget"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"installere snarveier"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Gir apper tillatelse til å legge til snarveier uten innblanding fra brukeren."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"lese startsideinnstillinger og -snarveier"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Lar appen lese innstillingene og snarveiene på startsiden."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"angi startsideinnstillinger og -snarveier"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Lar appen endre innstillingene og snarveiene på startsiden."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> har ikke tillatelse til å ringe"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"lese startsideinnstillinger og -snarveier"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Lar appen lese innstillingene og snarveiene på startsiden."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"angi startsideinnstillinger og -snarveier"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Lar appen endre innstillingene og snarveiene på startsiden."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Kan ikke laste inn modulen"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Modulinnstillinger"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Trykk for å fullføre konfigureringen"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Dette er en systemapp som ikke kan avinstalleres."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Rediger navn"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Slo av <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} har # varsel}other{{app_name} har # varsler}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} har # varsel}other{{app_name} har # varsler}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Side %1$d av %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Startside %1$d av %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Ny side på startskjermen"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Mappe: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> eller flere elementer"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Bakgrunner"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Bakgrunn og stil"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Endre startsiden"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Startsideinnstillinger"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Administratoren har slått av funksjonen"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Tillat rotasjon av startskjermen"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Tillat at startskjermen roterer"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Når telefonen roteres"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Varselsprikker"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"På"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Slå på appvarsler for <xliff:g id="NAME">%1$s</xliff:g> for å vise varselsprikker"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Endre innstillingene"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Vis varselsprikker"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Legg til appikoner på startskjermen"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Utvikleralternativer"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Legg til appikoner på startskjermen"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"For nye apper"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Ukjent"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Fjern"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> installerer, <xliff:g id="PROGRESS">%2$s</xliff:g> er fullført"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Laster ned <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="PROGRESS">%2$s</xliff:g> er fullført"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"Venter på å installere <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Appen må oppdateres"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Appen for dette ikonet er ikke oppdatert. Du kan oppdatere manuelt for å aktivere denne snarveien igjen, eller du kan fjerne ikonet."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Oppdater"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Fjern"</string>
     <string name="widgets_list" msgid="796804551140113767">"Modulliste"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Modullisten er lukket"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Legg til på startskjermen"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Legg til på startskjermen"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Flytt elementet hit"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Elementet er lagt til på startskjermen"</string>
     <string name="item_removed" msgid="851119963877842327">"Elementet er fjernet"</string>
     <string name="undo" msgid="4151576204245173321">"Angre"</string>
     <string name="action_move" msgid="4339390619886385032">"Flytt elementet"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Flytt til rad <xliff:g id="NUMBER_0">%1$s</xliff:g>, kolonne <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Flytt til rad <xliff:g id="NUMBER_0">%1$s</xliff:g> kolonne <xliff:g id="NUMBER_1">%2$s</xliff:g> i <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Flytt til posisjon <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Flytt til posisjonen for favoritter <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Elementet er flyttet"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Elementet er lagt til i mappen"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Opprett mappe med: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Mappen er opprettet"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Flytt til startskjermen"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Flytt til startskjermen"</string>
     <string name="action_resize" msgid="1802976324781771067">"Endre størrelse"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Øk bredden"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Øk høyden"</string>
@@ -156,15 +160,18 @@
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"Personlig"</string>
     <string name="all_apps_work_tab" msgid="4884822796154055118">"Jobb"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"Jobbprofil"</string>
-    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Jobbapper er merket og synlige for IT-administratoren din"</string>
+    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Jobbapper er merket og synlige for IT-administratoren"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Greit"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Jobbapper er satt på pause"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Du får ikke varsler fra jobbappene dine"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Jobbapper kan ikke sende deg varsler, bruke batteriet eller få tilgang til posisjonen din"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Jobbapper er av. De kan ikke sende deg varsler, bruke batteriet eller få tilgang til posisjonen din"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Du får ikke telefonanrop, tekstmeldinger eller varsler fra jobbappene dine"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Jobbapper er merket og synlige for IT-administratoren din"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Greit"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Slå av jobbapper"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Slå på jobbapper"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Sett jobbapper på pause"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Gjenoppta"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filter"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Søk på telefonen"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Søk på nettbrettet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Mislyktes: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index b735d02..58df374 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"सर्टकट उपलब्ध छैन"</string>
     <string name="home_screen" msgid="5629429142036709174">"होम"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"स्प्लिट स्क्रिन"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"सिरानतिर स्प्लिट गर्नुहोस्"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"बायाँतिर स्प्लिट गर्नुहोस्"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"दायाँतिर स्प्लिट गर्नुहोस्"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s का हकमा एपसम्बन्धी जानकारी"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"एपको पेयर सेभ गर्नुहोस्"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"कुनै विजेट सार्न डबल ट्याप गरेर छोइराख्नुहोस्।"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"कुनै विजेट सार्न वा आफ्नो रोजाइका कारबाही प्रयोग गर्न डबल ट्याप गरेर छोइराख्नुहोस्।"</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d चौडाइ गुणा %2$d उचाइ"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> विजेट"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"यो विजेट होम स्क्रिनमा यताउता सार्न त्यसमा टच एन्ड होल्ड गर्नुहोस्"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"होम स्क्रिनमा हाल्नुहोस्"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"विजेटलाई होम स्क्रिनमा यताउता सार्न त्यसमा टच एन्ड होल्ड गर्नुहोस्"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"होम स्क्रिनमा राख्नुहोस्"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"होम स्क्रिनमा <xliff:g id="WIDGET_NAME">%1$s</xliff:g> विजेट हालियो"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"सुझावहरू"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# विजेट}other{# वटा विजेट}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# सर्टकट}other{# वटा सर्टकट}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,49 +50,48 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"व्यक्तिगत"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"कामसम्बन्धी"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"वार्तालापहरू"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"नोट लेख्ने कार्य"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"उपयोगी जानकारी सजिलै प्राप्त गर्नुहोस्"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"एपहरू नखोलिकनै तिनका बारेमा जानकारी प्राप्त गर्न तपाईं आफ्नो होम स्क्रिनमा विजेटहरू हाल्न सक्नुहुन्छ"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"एपहरू नखोलिकनै जानकारी प्राप्त गर्न तपाईं आफ्नो होम स्क्रिनमा विजेटहरू हाल्न सक्नुहुन्छ"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"विजेटका सेटिङ बदल्न ट्याप गर्नुहोस्"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"बुझेँ"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"विजेटका सेटिङ बदल्नुहोस्"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"खोजसम्बन्धी एपहरू"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"एपहरू लोड गर्दै…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" सँग मिल्दो कुनै एप भेटिएन"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"थप एपहरू खोज्नुहोस्"</string>
     <string name="label_application" msgid="8531721983832654978">"एप"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"सबै एप"</string>
     <string name="notifications_header" msgid="1404149926117359025">"सूचनाहरू"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"कुनै सर्टकट सार्न डबल ट्याप गरेर छोइराख्नुहोस्।"</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"कुनै सर्टकट सार्न वा आफ्नो रोजाइका कारबाही प्रयोग गर्न डबल ट्याप गरेर छोइराख्नुहोस्।"</string>
-    <string name="out_of_space" msgid="6692471482459245734">"यो होम स्क्रिनमा ठाउँ छैन"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"यो होम स्क्रिनमा ठाउँ छैन"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"मन पर्ने ट्रे अब कुनै ठाँउ छैन"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"एपको सूची"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"खोज परिणामहरू"</string>
     <string name="all_apps_button_personal_label" msgid="1315764287305224468">"व्यक्तिगत अनुप्रयोगहरूको सूची"</string>
     <string name="all_apps_button_work_label" msgid="7270707118948892488">"कार्यसम्बन्धी अनुप्रयोगहरूको सूची"</string>
     <string name="remove_drop_target_label" msgid="7812859488053230776">"हटाउनुहोस्"</string>
-    <string name="uninstall_drop_target_label" msgid="4722034217958379417">"विस्थापित गर्नुहोस्"</string>
+    <string name="uninstall_drop_target_label" msgid="4722034217958379417">"अनइन्स्टल गर्नुहोस्"</string>
     <string name="app_info_drop_target_label" msgid="692894985365717661">"एपसम्बन्धी जानकारी"</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"स्थापना गर्नुहोस्"</string>
-    <string name="dismiss_prediction_label" msgid="3357562989568808658">"यो एप सिफारिस नगरियोस्"</string>
+    <string name="dismiss_prediction_label" msgid="3357562989568808658">"एप सिफारिस नगरियोस्"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"सिफारिस गरिएको एप पिन गर्नुहोस्"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"सर्टकट स्थापना गर्नेहोस्"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"प्रयोगकर्ताको हस्तक्षेप बिना एउटा एपलाई सर्टकटमा थप्नको लागि अनुमति दिनुहोस्।"</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"गृह सेटिङहरू र सर्टकटहरू पढ्नुहोस्"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"गृहमा एउटा एपलाई सेटिङहरू र सर्टकटहरू पढ्न अनुमति दिनुहोस्।"</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"गृह सेटिङहरू र सर्टकटहरू लेख्नुहोस्"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"गृहमा एउटा एपलाई सेटिङ र सर्टकट बदल्न अनुमति दिनुहोस्।"</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> ले फोन कलहरू गर्न अनुमति छैन"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"होम स्क्रिनका सेटिङ र सर्टकटहरू रिड गरियोस्"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"एपलाई होम स्क्रिनबाट सेटिङ र सर्टकटहरू रिड गर्ने अनुमति दिन्छ।"</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"होम स्क्रिनका सेटिङ र सर्टकटहरू राइट गरियोस्"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"एपलाई होम स्क्रिनबाट सेटिङ र सर्टकट बदल्ने अनुमति दिन्छ"</string>
     <string name="gadget_error_text" msgid="740356548025791839">"विजेट लोड गर्न सकिएन"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"विजेटका सेटिङ"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"सेटअप पूरा गर्न ट्याप गर्नुहोस्"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"यो प्रणाली एप हो र यसलाई स्थापना रद्द गर्न सकिँदैन।"</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"नाम सम्पादन गर्नुहोस्"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"असक्षम पारिएको <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} सँग सम्बन्धित # सूचना छ}other{{app_name} सँग सम्बन्धित # वटा सूचना छन्}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} सँग सम्बन्धित # सूचना छ}other{{app_name} सँग सम्बन्धित # वटा सूचना छन्}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"पृष्ठ %2$d को %1$d"</string>
-    <string name="workspace_scroll_format" msgid="8458889198184077399">"गृह स्क्रिन %1$d को %2$d"</string>
-    <string name="workspace_new_page" msgid="257366611030256142">"नयाँ गृह स्क्रिन पृष्ठ"</string>
+    <string name="workspace_scroll_format" msgid="8458889198184077399">"होम स्क्रिन %1$d को %2$d"</string>
+    <string name="workspace_new_page" msgid="257366611030256142">"नयाँ होम स्क्रिन पृष्ठ"</string>
     <string name="folder_opened" msgid="94695026776264709">"फोल्डर खुल्यो <xliff:g id="WIDTH">%1$d</xliff:g> बाट <xliff:g id="HEIGHT">%2$d</xliff:g>"</string>
     <string name="folder_tap_to_close" msgid="4625795376335528256">"फोल्डरलाई बन्द गर्न ट्याप गर्नुहोस्"</string>
     <string name="folder_tap_to_rename" msgid="4017685068016979677">"पुनःनामाकरणलाई सुरक्षित गर्न ट्याप गर्नुहोस्"</string>
@@ -103,18 +101,20 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"फोल्डर: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> वा सोभन्दा बढी वस्तुहरू"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"वालपेपरहरु"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"वालपेपर तथा शैली"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"होम स्क्रिन बदल्नुहोस्"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"होम पेजका सेटिङहरू"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"तपाईँको प्रशासकद्वारा असक्षम गरिएको"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"होम स्क्रिन रोटेट हुन दिइयोस्"</string>
-    <string name="allow_rotation_desc" msgid="8662546029078692509">"फोनलाई घुमाइँदा"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"होम स्क्रिन रोटेट हुन दिइयोस्"</string>
+    <string name="allow_rotation_desc" msgid="8662546029078692509">"फोन घुमाउँदा"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"सूचनाको प्रतीक जनाउने थोप्लाहरू"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"सक्रिय"</string>
     <string name="notification_dots_desc_off" msgid="1760796511504341095">"निष्क्रिय"</string>
     <string name="title_missing_notification_access" msgid="7503287056163941064">"सूचनासम्बन्धी पहुँच आवश्यक हुन्छ"</string>
-    <string name="msg_missing_notification_access" msgid="281113995110910548">"सूचनाको प्रतीक जनाउने थोप्लाहरू देखाउन <xliff:g id="NAME">%1$s</xliff:g> को एपसम्बन्धी सूचनाहरूलाई सक्रिय गर्नुहोस्"</string>
+    <string name="msg_missing_notification_access" msgid="281113995110910548">"सूचनाको प्रतीक जनाउने थोप्लाहरू देखाउन <xliff:g id="NAME">%1$s</xliff:g> को एपसम्बन्धी सूचनाहरूलाई अन गर्नुहोस्"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"सेटिङहरू बदल्नुहोस्"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"सूचनाको प्रतीक जनाउने थोप्लाहरू देखाउनुहोस्"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"होम स्क्रिनमा एपका आइकन थपियोस्"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"विकासकर्ताका लागि उपलब्ध विकल्पहरू"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"एपका आइकनहरू होम स्क्रिनमा राखियोस्"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"नयाँ एपका लागि"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"अज्ञात"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"हटाउनुहोस्"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> इन्स्टल गरिँदै छ, <xliff:g id="PROGRESS">%2$s</xliff:g> पूरा भयो"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> डाउनलोड गर्दै, <xliff:g id="PROGRESS">%2$s</xliff:g> सम्पन्‍न"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> स्थापना गर्न प्रतीक्षा गर्दै"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"एप अपडेट गरिनु पर्छ"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"यो आइकनले जनाउने एप अपडेट गरिएको छैन। तपाईं यो सर्टकट फेरि अन गर्न म्यानुअल रूपमा अपडेट गर्न सक्नुहुन्छ वा आइकन नै हटाउनुहोस्।"</string>
+    <string name="dialog_update" msgid="2178028071796141234">"अपडेट गर्नुहोस्"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"हटाउनुहोस्"</string>
     <string name="widgets_list" msgid="796804551140113767">"विजेटहरूको सूची"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"विजेटहरूको सूची बन्द गरियो"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"होम स्क्रिनमा हाल्नुहोस्"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"होम स्क्रिनमा राख्नुहोस्"</string>
     <string name="action_move_here" msgid="2170188780612570250">"वस्तु यहाँ सार्नुहोस्"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"वस्तु गृह स्क्रिनमा थपियो"</string>
     <string name="item_removed" msgid="851119963877842327">"वस्तु हटाइयो"</string>
     <string name="undo" msgid="4151576204245173321">"अन्डू गर्नुहोस्"</string>
     <string name="action_move" msgid="4339390619886385032">"वस्तु सार्नुहोस्"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"पङ्क्ति <xliff:g id="NUMBER_0">%1$s</xliff:g> स्तम्भ <xliff:g id="NUMBER_1">%2$s</xliff:g> मा सार्नुहोस्"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"यो वस्तु सारेर <xliff:g id="STRING">%3$s</xliff:g> मा रहेको रो <xliff:g id="NUMBER_0">%1$s</xliff:g> कोलम <xliff:g id="NUMBER_1">%2$s</xliff:g> मा लैजानुहोस्"</string>
     <string name="move_to_position" msgid="6750008980455459790">"स्थिति <xliff:g id="NUMBER">%1$s</xliff:g> मा सार्नुहोस्"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"मन पर्ने स्थिति <xliff:g id="NUMBER">%1$s</xliff:g> मा सार्नुहोस्"</string>
     <string name="item_moved" msgid="4606538322571412879">"वस्तु सारियो"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"वस्तु फोल्डरमा थपियो"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"<xliff:g id="NAME">%1$s</xliff:g>: मार्फत फोल्डर सिर्जना गर्नुहोस्"</string>
     <string name="folder_created" msgid="6409794597405184510">"फोल्डर सिर्जना गरियो"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"गृह स्क्रिनमा सार्नुहोस्"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"होम स्क्रिनमा सार्नुहोस्"</string>
     <string name="action_resize" msgid="1802976324781771067">"पुनःआकार मिलाउनुहोस्"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"चौडाइ बढाउनुहोस्"</string>
     <string name="action_increase_height" msgid="459390020612501122">"उँचाइ बढाउनुहोस्"</string>
@@ -154,17 +158,20 @@
     <string name="accessibility_close" msgid="2277148124685870734">"बन्द गर्नुहोस्"</string>
     <string name="notification_dismissed" msgid="6002233469409822874">"सूचना खारेज गरियो"</string>
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"व्यक्तिगत"</string>
-    <string name="all_apps_work_tab" msgid="4884822796154055118">"कार्यसम्बन्धी"</string>
+    <string name="all_apps_work_tab" msgid="4884822796154055118">"कामसम्बन्धी"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"कार्य प्रोफाइल"</string>
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"कामसम्बन्धी एपहरूमा ब्याज अङ्कित हुन्छ र तपाईंका IT एड्मिन ती एप हेर्न सक्छन्"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"बुझेँ"</string>
-    <string name="work_apps_paused_title" msgid="3040901117349444598">"कार्यसम्बन्धी एपहरू पज गरिएका छन्"</string>
+    <string name="work_apps_paused_title" msgid="3040901117349444598">"कामसम्बन्धी एपहरू पज गरिएका छन्"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"तपाईं कामसम्बन्धी एपबाट सूचनाहरू प्राप्त गर्नु हुने छैन"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"तपाईंका कामसम्बन्धी एपहरूले तपाईंलाई सूचना पठाउन, तपाईंको डिभाइसको ब्याट्री प्रयोग गर्न वा तपाईंको लोकेसन हेर्न सक्दैनन्"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"कामसम्बन्धी एपहरू अफ गरिएका छन्। तपाईंका कामसम्बन्धी एपहरूले तपाईंलाई सूचना पठाउन, तपाईंको डिभाइसको ब्याट्री प्रयोग गर्न वा तपाईंको लोकेसन हेर्न सक्दैनन्"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"तपाईं कामसम्बन्धी एपबाट फोन कल, टेक्स्ट म्यासेज वा सूचनाहरू प्राप्त गर्नु हुने छैन"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"कामसम्बन्धी एपमा ब्याज अङ्कित हुन्छ र तपाईंका IT एड्मिन ती एप हेर्न सक्नुहुन्छ"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"बुझेँ"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"कामसम्बन्धी एपहरू अफ गर्नुहोस्"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"कामसम्बन्धी एपहरू अन गर्नुहोस्"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"कामसम्बन्धी एपहरू पज गर्नुहोस्"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"सुचारु गर्नुहोस्"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"फिल्टर"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"आफ्नो फोन खोज्नुहोस्"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"आफ्नो ट्याबलेटमा खोज्नुहोस्"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"कार्य पूरा गर्न सकिएन: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-night-v31/colors.xml b/res/values-night-v31/colors.xml
index eefe8c5..3453668 100644
--- a/res/values-night-v31/colors.xml
+++ b/res/values-night-v31/colors.xml
@@ -25,8 +25,30 @@
     <color name="home_settings_track_on_color">@android:color/system_accent2_700</color>
     <color name="home_settings_track_off_color">@android:color/system_neutral1_700</color>
 
-    <color name="all_apps_button_bg_color">@android:color/system_neutral1_800</color>
-    <color name="all_apps_button_color_1">@android:color/system_accent1_300</color>
-    <color name="all_apps_button_color_3">@android:color/system_accent1_100</color>
-    <color name="all_apps_button_color_4">@android:color/system_accent2_100</color>
+    <color name="widget_picker_title_color_dark">@android:color/system_neutral1_100</color>
+    <color name="widget_picker_header_app_title_color_dark">
+        @android:color/system_neutral1_100</color>
+    <color name="widget_picker_header_app_subtitle_color_dark">
+        @android:color/system_neutral2_200</color>
+    <color name="widget_picker_header_background_color_dark">
+        @android:color/system_accent2_700</color>
+    <color name="widget_picker_suggestions_icon_background_color_dark">
+        @android:color/system_accent1_800</color>
+    <color name="widget_picker_suggestions_icon_color_dark">
+        @android:color/system_accent1_200</color>
+    <color name="widget_picker_search_text_color_dark">
+        @android:color/system_neutral2_200</color>
+    <color name="widget_picker_tab_background_selected_dark">
+        @android:color/system_accent1_200</color>
+    <color name="widget_picker_selected_tab_text_color_dark">
+        @android:color/system_accent1_800</color>
+    <color name="widget_picker_unselected_tab_text_color_dark">
+        @android:color/system_neutral2_200</color>
+    <color name="widget_picker_collapse_handle_color_dark">
+        @android:color/system_neutral2_700</color>
+
+    <color name="work_fab_bg_color">
+        @android:color/system_accent1_200</color>
+    <color name="work_fab_icon_color">
+        @android:color/system_accent1_900</color>
 </resources>
\ No newline at end of file
diff --git a/res/values-night/colors.xml b/res/values-night/colors.xml
deleted file mode 100644
index ce272ce..0000000
--- a/res/values-night/colors.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-/*
-* 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.
-*/
--->
-
-<resources>
-    <color name="all_apps_button_bg_color">#2E3132</color>
-    <color name="all_apps_button_color_1">#33B9DB</color>
-    <color name="all_apps_button_color_2">#EFFBFF</color>
-    <color name="all_apps_button_color_3">#B1EBFF</color>
-    <color name="all_apps_button_color_4">#DEE0FF</color>
-</resources>
\ No newline at end of file
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 51730a0..416d82d 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Snelkoppeling is niet beschikbaar"</string>
     <string name="home_screen" msgid="5629429142036709174">"Startscherm"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Gesplitst scherm"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Gesplitst scherm boven"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Gesplitst scherm links"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Gesplitst scherm rechts"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"App-info voor %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"App-paar opslaan"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Tik en houd vast om een widget te verplaatsen."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dubbeltik en houd vast om een widget te verplaatsen of aangepaste acties te gebruiken."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d breed en %2$d hoog"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Houd de widget ingedrukt om deze te verplaatsen op het startscherm"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Toevoegen aan startscherm"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Tik op de widget en houd vast om deze te verplaatsen op het startscherm"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Toevoegen aan startscherm"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g> toegevoegd aan startscherm"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Suggesties"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}other{# widgets}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# snelkoppeling}other{# snelkoppelingen}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Persoonlijk"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Werk"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Gesprekken"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Aantekeningen maken"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Nuttige informatie binnen handbereik"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Als je informatie wilt krijgen zonder apps te openen, kun je widgets toevoegen aan je startscherm"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Als je informatie wilt krijgen zonder apps te openen, kun je widgets toevoegen aan je startscherm"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Tik om de widgetinstellingen te wijzigen"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Widgetinstellingen wijzigen"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Apps zoeken"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Apps laden…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Er zijn geen apps gevonden die overeenkomen met \'<xliff:g id="QUERY">%1$s</xliff:g>\'"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Zoeken naar meer apps"</string>
     <string name="label_application" msgid="8531721983832654978">"App"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Alle apps"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Meldingen"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Tik en houd vast om een snelkoppeling te verplaatsen."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dubbeltik en houd vast om een snelkoppeling te verplaatsen of aangepaste acties te gebruiken."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Er is geen ruimte op dit startscherm"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Er is geen ruimte op dit startscherm"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Geen ruimte meer in het vak \'Favorieten\'"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Lijst met apps"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Zoekresultaten"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Vastzetvoorspelling"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"Snelle links instellen"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Een app toestaan snelkoppelingen toe te voegen zonder tussenkomst van de gebruiker."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"instellingen en snelkoppelingen op startscherm lezen"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"De app toestaan de instellingen en snelkoppelingen op de homepage te lezen."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"instellingen en snelkoppelingen op startscherm zetten"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"De app toestaan de instellingen en snelkoppelingen op de homepage te wijzigen."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> mag niet bellen"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"instellingen en snelkoppelingen op startscherm lezen"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"De app toestaan de instellingen en snelkoppelingen op het startscherm te lezen."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"instellingen en snelkoppelingen op startscherm wijzigen"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"De app toestaan de instellingen en snelkoppelingen op het startscherm te wijzigen."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Kan widget niet laden"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Widgetinstellingen"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Tik om instellen af te ronden"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Dit is een systeemapp die niet kan worden verwijderd."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Naam bewerken"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> staat uit"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} heeft # melding}other{{app_name} heeft # meldingen}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} heeft # melding}other{{app_name} heeft # meldingen}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Pagina %1$d van %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Startscherm %1$d van %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Nieuwe startschermpagina"</string>
@@ -103,10 +101,11 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Map: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> of meer items"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Achtergrond"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Achtergrond en stijl"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Startscherm bewerken"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Instellingen start"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Uitgezet door je beheerder"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Draaien van startscherm toestaan"</string>
-    <string name="allow_rotation_desc" msgid="8662546029078692509">"Wanneer de telefoon gedraaid is"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Draaien van startscherm toestaan"</string>
+    <string name="allow_rotation_desc" msgid="8662546029078692509">"Als de telefoon gedraaid is"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Meldingsstipjes"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Aan"</string>
     <string name="notification_dots_desc_off" msgid="1760796511504341095">"Uit"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Als je meldingsstipjes wilt tonen, zet je app-meldingen aan voor <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Instellingen wijzigen"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Toon meldingsstipjes"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"App-iconen toevoegen aan startscherm"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Ontwikkelaarsopties"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"App-iconen toevoegen aan startscherm"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Voor nieuwe apps"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Onbekend"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Verwijderen"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> installeren, <xliff:g id="PROGRESS">%2$s</xliff:g> voltooid"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> wordt gedownload, <xliff:g id="PROGRESS">%2$s</xliff:g> voltooid"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> wacht op installatie"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"App-update vereist"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"De app voor dit icoon is niet geüpdatet. Je kunt handmatig updaten om deze snelkoppeling weer aan te zetten of het icoon verwijderen."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Updaten"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Verwijderen"</string>
     <string name="widgets_list" msgid="796804551140113767">"Lijst met widgets"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Lijst met widgets gesloten"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Toevoegen aan startscherm"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Toevoegen aan startscherm"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Item hier naartoe verplaatsen"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Item toegevoegd aan startscherm"</string>
     <string name="item_removed" msgid="851119963877842327">"Item verwijderd"</string>
     <string name="undo" msgid="4151576204245173321">"Ongedaan maken"</string>
     <string name="action_move" msgid="4339390619886385032">"Item verplaatsen"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Verplaatsen naar rij <xliff:g id="NUMBER_0">%1$s</xliff:g>, kolom <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Verplaatsen naar rij <xliff:g id="NUMBER_0">%1$s</xliff:g> kolom <xliff:g id="NUMBER_1">%2$s</xliff:g> in <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Verplaatsen naar positie <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Verplaatsen naar positie <xliff:g id="NUMBER">%1$s</xliff:g> voor favorieten"</string>
     <string name="item_moved" msgid="4606538322571412879">"Item verplaatst"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Item toegevoegd aan map"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Map maken met: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Map gemaakt"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Verplaatsen naar startscherm"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Verplaatsen naar startscherm"</string>
     <string name="action_resize" msgid="1802976324781771067">"Formaat aanpassen"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Breedte vergroten"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Hoogte vergroten"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Werk-apps hebben badges en zijn zichtbaar voor je IT-beheerder"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Werk-apps zijn onderbroken"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Je krijgt geen meldingen van je werk-apps"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Je werk-apps kunnen je geen meldingen sturen, je batterij niet gebruiken en geen toegang krijgen tot je locatie"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Werk-apps staan uit. Je werk-apps kunnen geen meldingen sturen, je batterij niet gebruiken en hebben geen toegang tot je locatie."</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Je krijgt geen telefoongesprekken, tekstberichten of meldingen van je werk-apps"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Werk-apps hebben badges en zijn zichtbaar voor je IT-beheerder"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Werk-apps uitzetten"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Werk-apps aanzetten"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Werk-apps pauzeren"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Hervatten"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filteren"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Zoeken op je telefoon"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Zoeken op je tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Mislukt: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 1149e02..04f9865 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -26,20 +26,19 @@
     <string name="safemode_shortcut_error" msgid="9160126848219158407">"ନିରାପଦ ମୋଡରେ ଡାଉନଲୋଡ୍‌ ହେଇଥିବା ଆପ୍‌ ଅକ୍ଷମ କରାଗଲା"</string>
     <string name="safemode_widget_error" msgid="4863470563535682004">"ନିରାପଦ ମୋଡରେ ୱିଜେଟ୍‌ ଅକ୍ଷମ କରାଗଲା"</string>
     <string name="shortcut_not_available" msgid="2536503539825726397">"ଶର୍ଟକଟ୍‌ ଉପଲବ୍ଧ ନାହିଁ"</string>
-    <string name="home_screen" msgid="5629429142036709174">"ମୂଳପୃଷ୍ଠା"</string>
+    <string name="home_screen" msgid="5629429142036709174">"ହୋମ"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"ସ୍କ୍ରିନ‌କୁ ସ୍ପ୍ଲିଟ୍ କରନ୍ତୁ"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"ଶୀର୍ଷକୁ ସ୍ପ୍ଲିଟ କରନ୍ତୁ"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"ବାମପତକୁ ସ୍ପ୍ଲିଟ କରନ୍ତୁ"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"ଡାହାଣପଟକୁ ସ୍ପ୍ଲିଟ କରନ୍ତୁ"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s ପାଇଁ ଆପ ସୂଚନା"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"ଆପ ପେୟାର ସେଭ କରନ୍ତୁ"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"ଏକ ୱିଜେଟକୁ ମୁଭ୍ କରିବା ପାଇଁ ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ।"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"ଏକ ୱିଜେଟକୁ ମୁଭ୍ କରିବା ପାଇଁ ଦୁଇଥର-ଟାପ୍ କରି ଧରି ରଖନ୍ତୁ କିମ୍ବା କଷ୍ଟମ୍ କାର୍ଯ୍ୟଗୁଡ଼ିକୁ ବ୍ୟବହାର କରନ୍ତୁ।"</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d ଓସାର ଓ %2$d ଉଚ୍ଚ"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> ୱିଜେଟ୍"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"ମୂଳସ୍କ୍ରିନର ଆଖପାଖରେ ୱିଜେଟକୁ ମୁଭ୍ କରିବା ପାଇଁ ଏହାକୁ ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"ମୂଳସ୍କ୍ରିନରେ ଯୋଗ କରନ୍ତୁ"</string>
-    <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g>ର ୱିଜେଟ୍ ମୂଳସ୍କ୍ରିନରେ ଯୋଡ଼ାଗଲା"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"ହୋମ ସ୍କ୍ରିନର ଆଖପାଖରେ ୱିଜେଟକୁ ମୁଭ କରିବା ପାଇଁ ଏହାକୁ ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"ହୋମ ସ୍କ୍ରିନରେ ଯୋଗ କରନ୍ତୁ"</string>
+    <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g>ର ୱିଜେଟ ହୋମ ସ୍କ୍ରିନରେ ଯୋଡ଼ାଗଲା"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"ପରାମର୍ଶଗୁଡ଼ିକ"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{#ଟି ୱିଜେଟ୍}other{#ଟି ୱିଜେଟ୍}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{#ଟି ସର୍ଟକଟ୍}other{#ଟି ସର୍ଟକଟ୍}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,49 +50,48 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ବ୍ୟକ୍ତିଗତ"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ୱାର୍କ"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକ"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"ନୋଟ-ଟେକିଂ"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"ଉପଯୋଗୀ ସୂଚନା ଆପଣଙ୍କ ପାଖରେ ସହଜରେ ଉପଲବ୍ଧ"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"ଆପଗୁଡ଼ିକୁ ନଖୋଲି ସୂଚନା ପାଇବା ପାଇଁ, ଆପଣ ଆପଣଙ୍କ ମୂଳସ୍କ୍ରିନରେ ୱିଜେଟଗୁଡ଼ିକୁ ଯୋଗ କରିପାରିବେ"</string>
-    <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"ୱିଜେଟ୍ ସେଟିଂସ୍ ପରିବର୍ତ୍ତନ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"ଆପ୍ସକୁ ନଖୋଲି ସୂଚନା ପାଇବା ପାଇଁ, ଆପଣ ଆପଣଙ୍କ ହୋମ ସ୍କ୍ରିନରେ ୱିଜେଟଗୁଡ଼ିକୁ ଯୋଗ କରିପାରିବେ"</string>
+    <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"ୱିଜେଟ ସେଟିଂସ ପରିବର୍ତ୍ତନ କରିବାକୁ ଟାପ କରନ୍ତୁ"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"ବୁଝିଗଲି"</string>
-    <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"ୱିଜେଟ୍ ସେଟିଂସ୍ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
+    <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"ୱିଜେଟ ସେଟିଂସ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"ଆପ୍‌ ଖୋଜନ୍ତୁ"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"ଆପ୍‌ ଲୋଡ୍‌ ହେଉଛି..."</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" ସହିତ ମେଳ ହେଉଥିବା କୌଣସି ଆପ୍‌ ମିଳିଲା ନାହିଁ"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"ଅଧିକ ଆପ୍‌ ଖୋଜନ୍ତୁ"</string>
     <string name="label_application" msgid="8531721983832654978">"ଆପ୍"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"ସବୁ ଆପ"</string>
     <string name="notifications_header" msgid="1404149926117359025">"ବିଜ୍ଞପ୍ତି"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"ଏକ ସର୍ଟକଟକୁ ମୁଭ୍ କରିବା ପାଇଁ ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ।"</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"ଏକ ସର୍ଟକଟକୁ ମୁଭ୍ କରିବା ପାଇଁ ଦୁଇଥର-ଟାପ୍ କରି ଧରି ରଖନ୍ତୁ କିମ୍ବା କଷ୍ଟମ୍ କାର୍ଯ୍ୟଗୁଡ଼ିକୁ ବ୍ୟବହାର କରନ୍ତୁ।"</string>
-    <string name="out_of_space" msgid="6692471482459245734">"ଏହି ମୂଳସ୍କ୍ରିନରେ ଆଉ ଜାଗା ନାହିଁ"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"ଏହି ହୋମ ସ୍କ୍ରିନରେ ଆଉ ଜାଗା ନାହିଁ"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"ମନପସନ୍ଦ ଟ୍ରେରେ ଆଉ କୋଠରୀ ନାହିଁ"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"ଆପ୍‌ ତାଲିକା"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"ସନ୍ଧାନ ଫଳାଫଳ"</string>
     <string name="all_apps_button_personal_label" msgid="1315764287305224468">"ବ୍ୟକ୍ତିଗତ ଆପ୍ ତାଲିକା"</string>
     <string name="all_apps_button_work_label" msgid="7270707118948892488">"କାର୍ଯ୍ୟକାରୀ ଆପ୍‌ ତାଲିକା"</string>
-    <string name="remove_drop_target_label" msgid="7812859488053230776">"ବାହାର କରନ୍ତୁ"</string>
-    <string name="uninstall_drop_target_label" msgid="4722034217958379417">"ଅନଇନଷ୍ଟଲ୍‌ କରନ୍ତୁ"</string>
+    <string name="remove_drop_target_label" msgid="7812859488053230776">"କାଢ଼ି ଦିଅନ୍ତୁ"</string>
+    <string name="uninstall_drop_target_label" msgid="4722034217958379417">"ଅନଇନଷ୍ଟଲ କରନ୍ତୁ"</string>
     <string name="app_info_drop_target_label" msgid="692894985365717661">"ଆପ୍‌ ସୂଚନା"</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"ଇନଷ୍ଟଲ୍‌ କରନ୍ତୁ"</string>
-    <string name="dismiss_prediction_label" msgid="3357562989568808658">"ଆପ୍ ପରାମର୍ଶ ଦିଅନ୍ତୁ ନାହିଁ"</string>
+    <string name="dismiss_prediction_label" msgid="3357562989568808658">"ଆପ ପରାମର୍ଶ ଦିଅନ୍ତୁ ନାହିଁ"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"ପୂର୍ବାନୁମାନକୁ ପିନ୍ କରନ୍ତୁ"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"ସର୍ଟକଟ୍‍ ଇନଷ୍ଟଲ୍‌ କରନ୍ତୁ"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"ୟୁଜରଙ୍କ ବିନା ହସ୍ତକ୍ଷେପରେ ଶର୍ଟକଟ୍‌ ଯୋଡ଼ିବାକୁ ଆପକୁ ଅନୁମତି ଦିଏ।"</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"ହୋମ୍‌ ସେଟିଙ୍ଗ ଏବଂ ଶର୍ଟକଟ୍‌ ପଢ଼ନ୍ତୁ"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"ହୋମରେ ସେଟିଙ୍ଗ ପଢ଼ିବାକୁ ଆପ ଏବଂ ଶର୍ଟକଟକୁ ଅନୁମତି ଦିଏ।"</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"ହୋମ୍‌ ସେଟିଙ୍ଗ ଏବଂ ଶର୍ଟକଟ୍‌ ଲେଖନ୍ତୁ"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"ହୋମରେ ସେଟିଙ୍ଗ ଏବଂ ଶର୍ଟକଟ୍‌ ପରିବର୍ତ୍ତନ କରିବାକୁ ଆପକୁ ଅନୁମତି ଦିଏ।"</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"ଫୋନ୍‌ କଲ୍‌ କରିବାକୁ <xliff:g id="APP_NAME">%1$s</xliff:g>କୁ ଅନୁମତି ଦିଆଯାଇ ନାହିଁ"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"ହୋମ ସେଟିଂସ ଏବଂ ସର୍ଟକଟଗୁଡ଼ିକୁ ପଢ଼ନ୍ତୁ"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"ହୋମରେ ଥିବା ସେଟିଂସ ଏବଂ ସର୍ଟକଟଗୁଡ଼ିକୁ ପଢ଼ିବା ପାଇଁ ଆପକୁ ଅନୁମତି ଦିଏ।"</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"ହୋମ ସେଟିଂସ ଏବଂ ସର୍ଟକଟଗୁଡ଼ିକୁ ଲେଖନ୍ତୁ"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"ହୋମରେ ଥିବା ସେଟିଂସ ଏବଂ ସର୍ଟକଟଗୁଡ଼ିକୁ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ ଆପକୁ ଅନୁମତି ଦିଏ।"</string>
     <string name="gadget_error_text" msgid="740356548025791839">"ୱିଜେଟ୍ ଲୋଡ୍ କରାଯାଇପାରିବ ନାହିଁ"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"ୱିଜେଟ ସେଟିଂସ"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"ସେଟଅପ ସମ୍ପୂର୍ଣ୍ଣ କରିବାକୁ ଟାପ କରନ୍ତୁ"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"ଏହା ଏକ ସିଷ୍ଟମ୍‌ ଆପ୍‌ ଅଟେ ଏବଂ ଏହା ଅନଇନଷ୍ଟଲ୍‌ କରାଯାଇ ପାରିବ ନାହିଁ।"</string>
-    <string name="folder_hint_text" msgid="5174843001373488816">"ନାମ ସମ୍ପାଦନ କରନ୍ତୁ"</string>
+    <string name="folder_hint_text" msgid="5174843001373488816">"ନାମ ଏଡିଟ କରନ୍ତୁ"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> ଅକ୍ଷମ କରାଗଲା"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name}ର #ଟି ବିଜ୍ଞପ୍ତି ରହିଛି}other{{app_name}ର #ଟି ବିଜ୍ଞପ୍ତି ରହିଛି}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name}ର #ଟି ବିଜ୍ଞପ୍ତି ଅଛି}other{{app_name}ର #ଟି ବିଜ୍ଞପ୍ତି ଅଛି}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"ମୋଟ %2$dରୁ %1$d ନମ୍ବର ପୃଷ୍ଠା"</string>
-    <string name="workspace_scroll_format" msgid="8458889198184077399">"%2$dରୁ %1$d ହୋମ୍‌ ସ୍କ୍ରୀନ୍"</string>
-    <string name="workspace_new_page" msgid="257366611030256142">"ନୂଆ ହୋମ୍‌ ସ୍କ୍ରୀନ୍‌ ପୃଷ୍ଠା"</string>
+    <string name="workspace_scroll_format" msgid="8458889198184077399">"%2$dରୁ %1$d ହୋମ ସ୍କ୍ରିନ"</string>
+    <string name="workspace_new_page" msgid="257366611030256142">"ନୂଆ ହୋମ ସ୍କ୍ରିନ ପେଜ"</string>
     <string name="folder_opened" msgid="94695026776264709">"<xliff:g id="HEIGHT">%2$d</xliff:g> / <xliff:g id="WIDTH">%1$d</xliff:g>ର ଫୋଲ୍ଡର ଖୋଲାଗଲା"</string>
     <string name="folder_tap_to_close" msgid="4625795376335528256">"ଫୋଲ୍ଡର୍‌ ବନ୍ଦ କରିବାକୁ ଟାପ୍‌ କରନ୍ତୁ"</string>
     <string name="folder_tap_to_rename" msgid="4017685068016979677">"ନାମ ବଦଳାଇବା ସେଭ୍ କରିବାକୁ ଟାପ୍‌ କରନ୍ତୁ"</string>
@@ -102,19 +100,21 @@
     <string name="folder_name_format_exact" msgid="8626242716117004803">"ଫୋଲ୍ଡର୍: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> ଆଇଟମଗୁଡ଼ିକ"</string>
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"ଫୋଲ୍ଡର୍: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> କିମ୍ବା ଅଧିକ ଆଇଟମ୍"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"ୱାଲପେପର୍‌"</string>
-    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"ୱାଲପେପର୍ ଏବଂ ଷ୍ଟାଇଲ୍"</string>
-    <string name="settings_button_text" msgid="8873672322605444408">"ହୋମ୍‌ ସେଟିଂସ୍"</string>
+    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"ୱାଲପେପର ଏବଂ ଷ୍ଟାଇଲ"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"ହୋମ ସ୍କ୍ରିନକୁ ଏଡିଟ କରନ୍ତୁ"</string>
+    <string name="settings_button_text" msgid="8873672322605444408">"ହୋମ ସେଟିଂସ"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"ଆପଣଙ୍କ ଆଡମିନଙ୍କ ଦ୍ୱାରା ଅକ୍ଷମ କରାଯାଇଛି"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"ହୋମ୍‌ ସ୍କ୍ରିନ୍ ବୁଲାଇବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"ହୋମ ସ୍କ୍ରିନ ରୋଟେସନକୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"ଯେତେବେଳେ ଫୋନକୁ ବୁଲାଯାଇଥାଏ"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"ବିଜ୍ଞପ୍ତି ଡଟ୍ସ"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"ଚାଲୁ"</string>
     <string name="notification_dots_desc_off" msgid="1760796511504341095">"ବନ୍ଦ କରନ୍ତୁ"</string>
     <string name="title_missing_notification_access" msgid="7503287056163941064">"ବିଜ୍ଞପ୍ତି ଆକ୍ସେସ୍‌ ଆବଶ୍ୟକ ଅଟେ"</string>
     <string name="msg_missing_notification_access" msgid="281113995110910548">"ବିଜ୍ଞପ୍ତି ବିନ୍ଦୁ ଦେଖାଇବାକୁ, <xliff:g id="NAME">%1$s</xliff:g> ପାଇଁ ଆପ୍‌ ବିଜ୍ଞପ୍ତି ଅନ୍‌ କରନ୍ତୁ"</string>
-    <string name="title_change_settings" msgid="1376365968844349552">"ସେଟିଂସ୍ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
+    <string name="title_change_settings" msgid="1376365968844349552">"ସେଟିଂସ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"ବିଜ୍ଞପ୍ତି ଡଟ୍‌ଗୁଡ଼ିକୁ ଦେଖାନ୍ତୁ"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"ହୋମ୍ ସ୍କ୍ରିନରେ ଆପ୍ ଆଇକନଗୁଡ଼ିକୁ ଯୋଗ କରନ୍ତୁ"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"ଡେଭେଲପର ବିକଳ୍ପଗୁଡ଼ିକ"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"ହୋମ ସ୍କ୍ରିନରେ ଆପ ଆଇକନଗୁଡ଼ିକୁ ଯୋଗ କରନ୍ତୁ"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"ନୂଆ ଆପ୍‌ ପାଇଁ"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"ଅଜଣା"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"କାଢ଼ି ଦିଅନ୍ତୁ"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> ଇନଷ୍ଟଲ୍ କରାଯାଉଛି, <xliff:g id="PROGRESS">%2$s</xliff:g> ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> ଡାଉନଲୋଡ୍‌ ହେଉଛି, <xliff:g id="PROGRESS">%2$s</xliff:g> ସମ୍ପୂର୍ଣ୍ଣ"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> ଇନଷ୍ଟଲ୍‌ ହେବାକୁ ଅପେକ୍ଷା କରିଛି"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"ଆପକୁ ଅପଡେଟ କରିବା ଆବଶ୍ୟକ"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"ଏହି ଆଇକନ ପାଇଁ ଆପକୁ ଅପଡେଟ କରାଯାଇନାହିଁ। ଏହି ସର୍ଟକଟକୁ ପୁଣି-ସକ୍ଷମ କରିବା ପାଇଁ ଆପଣ ମାନୁଆଲୀ ଅପଡେଟ କରିପାରିବେ କିମ୍ବା ଆଇକନଟିକୁ କାଢ଼ି ଦେଇପାରିବେ।"</string>
+    <string name="dialog_update" msgid="2178028071796141234">"ଅପଡେଟ କରନ୍ତୁ"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"କାଢ଼ି ଦିଅନ୍ତୁ"</string>
     <string name="widgets_list" msgid="796804551140113767">"ୱିଜେଟ୍ ତାଲିକା"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"ୱିଜେଟ୍ ତାଲିକା ବନ୍ଦ ହୋଇଛି"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"ହୋମ୍‌ ସ୍କ୍ରୀନରେ ଯୋଡ଼ନ୍ତୁ"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"ହୋମ ସ୍କ୍ରିନରେ ଯୋଗ କରନ୍ତୁ"</string>
     <string name="action_move_here" msgid="2170188780612570250">"ଆଇଟମ୍‌କୁ ଏଠାକୁ ଘୁଞ୍ଚାନ୍ତୁ"</string>
-    <string name="item_added_to_workspace" msgid="4211073925752213539">"ହୋମ୍‌ ସ୍କ୍ରୀନରେ ଆଇଟମ୍‌ ଯୋଡ଼ାଗଲା"</string>
+    <string name="item_added_to_workspace" msgid="4211073925752213539">"ହୋମ ସ୍କ୍ରିନରେ ଆଇଟମ ଯୋଗ କରାଗଲା"</string>
     <string name="item_removed" msgid="851119963877842327">"ଆଇଟମକୁ କାଢ଼ି ଦିଆଯାଇଛି"</string>
     <string name="undo" msgid="4151576204245173321">"ପୂର୍ବବତ୍‍"</string>
     <string name="action_move" msgid="4339390619886385032">"ଆଇଟମ୍‌ ଘୁଞ୍ଚାନ୍ତୁ"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"ଧାଡ଼ି <xliff:g id="NUMBER_0">%1$s</xliff:g> ସ୍ତମ୍ଭ <xliff:g id="NUMBER_1">%2$s</xliff:g>କୁ ନିଅନ୍ତୁ"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g>ରେ ଧାଡି <xliff:g id="NUMBER_0">%1$s</xliff:g> ସ୍ତମ୍ଭ <xliff:g id="NUMBER_1">%2$s</xliff:g>କୁ ମୁଭ କରନ୍ତୁ"</string>
     <string name="move_to_position" msgid="6750008980455459790">"<xliff:g id="NUMBER">%1$s</xliff:g> ସ୍ଥିତିକୁ ନିଅନ୍ତୁ"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"ପସନ୍ଦର ସ୍ଥିତି <xliff:g id="NUMBER">%1$s</xliff:g>କୁ ନିଅନ୍ତୁ"</string>
     <string name="item_moved" msgid="4606538322571412879">"ଆଇଟମ୍‌ ଘୁଞ୍ଚେଇ ଦିଆଗଲା"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"ଫୋଲ୍ଡରରେ ଆଇଟମ୍‌ ଯୋଡ଼ାଗଲା"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"ଏହି ନାମରେ ଫୋଲ୍ଡର ତିଆରି କରନ୍ତୁ: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"ଫୋଲ୍ଡର ତିଆରି କରାଗଲା"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"ହାମ୍‌ ସ୍କ୍ରୀନକୁ ଘୁଞ୍ଚାନ୍ତୁ"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"ହୋମ ସ୍କ୍ରିନକୁ ମୁଭ କରନ୍ତୁ"</string>
     <string name="action_resize" msgid="1802976324781771067">"ଆକାର ବଦଳାନ୍ତୁ"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"ଚଉଡ଼ା ବଢ଼ାନ୍ତୁ"</string>
     <string name="action_increase_height" msgid="459390020612501122">"ଉଚ୍ଚତା ବଢ଼ାନ୍ତୁ"</string>
@@ -156,15 +160,18 @@
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"ବ୍ୟକ୍ତିଗତ"</string>
     <string name="all_apps_work_tab" msgid="4884822796154055118">"ୱାର୍କ"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"ୱର୍କ ପ୍ରୋଫାଇଲ୍‌"</string>
-    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"ୱାର୍କ ଆପଗୁଡ଼ିକୁ ବ୍ୟାଜ୍ କରାଯାଇଛି ଏବଂ ସେଗୁଡ଼ିକ ଆପଣଙ୍କ IT ଆଡମିନଙ୍କୁ ଦୃଶ୍ୟମାନ ହେଉଛି"</string>
+    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"ୱାର୍କ ଆପ୍ସକୁ ବେଜ କରାଯାଇଛି ଏବଂ ସେଗୁଡ଼ିକ ଆପଣଙ୍କ IT ଆଡମିନଙ୍କୁ ଦେଖାଯାଉଛି"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"ବୁଝିଗଲି"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"ୱାର୍କ ଆପ୍ସ ବିରତ କରାଯାଇଛି"</string>
-    <string name="work_apps_paused_body" msgid="261634750995824906">"ଆପଣଙ୍କ ୱାର୍କ ଆପଗୁଡ଼ିକ ଆପଣଙ୍କୁ ବିଜ୍ଞପ୍ତି ପଠାଇପାରିବ ନାହିଁ, ଆପଣଙ୍କ ବ୍ୟାଟେରୀକୁ ବ୍ୟବହାର କରିପାରିବ ନାହିଁ କିମ୍ବା ଆପଣଙ୍କର ଲୋକେସନକୁ ଆକ୍ସେସ୍ କରିପାରିବ ନାହିଁ"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"ୱାର୍କ ଆପଗୁଡ଼ିକ ବନ୍ଦ ଅଛି। ଆପଣଙ୍କ ୱାର୍କ ଆପଗୁଡ଼ିକ ଆପଣଙ୍କୁ ବିଜ୍ଞପ୍ତି ପଠାଇପାରିବ ନାହିଁ, ଆପଣଙ୍କ ବ୍ୟାଟେରୀକୁ ବ୍ୟବହାର କରିପାରିବ ନାହିଁ କିମ୍ବା ଆପଣଙ୍କର ଲୋକେସନକୁ ଆକ୍ସେସ୍ କରିପାରିବ ନାହିଁ"</string>
-    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"ୱାର୍କ ଆପଗୁଡ଼ିକୁ ବ୍ୟାଜ୍ କରାଯାଇଛି ଏବଂ ଆପଣଙ୍କ IT ଆଡମିନଙ୍କୁ ଦେଖାଯାଉଛି"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"ଆପଣ ଆପଣଙ୍କ ୱାର୍କ ଆପ୍ସରୁ ବିଜ୍ଞପ୍ତି ପାଇବେ ନାହିଁ"</string>
+    <string name="work_apps_paused_body" msgid="261634750995824906">"ଆପଣଙ୍କ ୱାର୍କ ଆପ୍ସ ଆପଣଙ୍କୁ ବିଜ୍ଞପ୍ତି ପଠାଇପାରିବ ନାହିଁ, ଆପଣଙ୍କ ବ୍ୟାଟେରୀକୁ ବ୍ୟବହାର କରିପାରିବ ନାହିଁ କିମ୍ବା ଆପଣଙ୍କର ଲୋକେସନକୁ ଆକ୍ସେସ କରିପାରିବ ନାହିଁ"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"ଆପଣ ଆପଣଙ୍କ ୱାର୍କ ଆପ୍ସରୁ ଫୋନ କଲ, ଟେକ୍ସଟ ମେସେଜ କିମ୍ବା ବିଜ୍ଞପ୍ତି ପାଇବେ ନାହିଁ"</string>
+    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"ୱାର୍କ ଆପ୍ସ ବ୍ୟାଜ କରାଯାଇଛି ଏବଂ ସେଗୁଡ଼ିକ ଆପଣଙ୍କ IT ଆଡମିନଙ୍କୁ ଦୃଶ୍ୟମାନ ହେଉଛି"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"ବୁଝିଗଲି"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"ୱାର୍କ ଆପଗୁଡ଼ିକୁ ବନ୍ଦ କରନ୍ତୁ"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"ୱାର୍କ ଆପଗୁଡ଼ିକୁ ଚାଲୁ କରନ୍ତୁ"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"ୱାର୍କ ଆପ୍ସ ବିରତ କରନ୍ତୁ"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"ପୁଣି ଚାଲୁ କରନ୍ତୁ"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"ଫିଲ୍ଟର୍"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"ଆପଣଙ୍କ ଫୋନରେ ସନ୍ଧାନ କରନ୍ତୁ"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ଆପଣଙ୍କ ଟାବଲେଟରେ ସନ୍ଧାନ କରନ୍ତୁ"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"ବିଫଳ ହୋଇଛି: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 2d70d7f..f9a66df 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"ਸ਼ਾਰਟਕੱਟ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
     <string name="home_screen" msgid="5629429142036709174">"ਮੁੱਖ ਪੰਨਾ"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"ਸਪਲਿਟ ਸਕ੍ਰੀਨ"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"ਸਿਖਰ \'ਤੇ ਵੰਡੋ"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"ਖੱਬੇ ਪਾਸੇ ਵੰਡੋ"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"ਸੱਜੇ ਪਾਸੇ ਵੰਡੋ"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s ਲਈ ਐਪ ਜਾਣਕਾਰੀ"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"ਐਪ ਜੋੜਾਬੱਧ ਰੱਖਿਅਤ ਕਰੋ"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"ਕਿਸੇ ਵਿਜੇਟ ਨੂੰ ਲਿਜਾਉਣ ਲਈ ਸਪਰਸ਼ ਕਰਕੇ ਰੱਖੋ।"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"ਵਿਜੇਟ ਲਿਜਾਉਣ ਲਈ ਜਾਂ ਵਿਉਂਂਤੀਆਂ ਕਾਰਵਾਈਆਂ ਵਰਤਣ ਲਈ ਦੋ ਵਾਰ ਟੈਪ ਕਰਕੇ ਦਬਾ ਕੇ ਰੱਖੋ।"</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d ਚੌੜਾਈ ਅਤੇ %2$d ਲੰਬਾਈ"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> ਵਿਜੇਟ"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"ਵਿਜੇਟ ਨੂੰ ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਇੱਧਰ-ਉੱਧਰ ਲਿਜਾਉਣ ਲਈ ਸਪਰਸ਼ ਕਰਕੇ ਦਬਾਈ ਰੱਖੋ"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਸ਼ਾਮਲ ਕਰੋ"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"ਵਿਜੇਟ ਨੂੰ ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਇੱਧਰ-ਉੱਧਰ ਲਿਜਾਉਣ ਲਈ ਸਪਰਸ਼ ਕਰ ਕੇ ਦਬਾਈ ਰੱਖੋ"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਸ਼ਾਮਲ ਕਰੋ"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> ਵਿਜੇਟ ਨੂੰ ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"ਸੁਝਾਅ"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# ਵਿਜੇਟ}one{# ਵਿਜੇਟ}other{# ਵਿਜੇਟ}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# ਸ਼ਾਰਟਕੱਟ}one{# ਸ਼ਾਰਟਕੱਟ}other{# ਸ਼ਾਰਟਕੱਟ}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ਨਿੱਜੀ"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ਕਾਰਜ-ਸਥਾਨ"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"ਗੱਲਾਂਬਾਤਾਂ"</string>
-    <string name="widget_education_header" msgid="4874760613775913787">"ਤੁਹਾਡੀਆਂ ਉਂਗਲਾਂ \'ਤੇ ਲਾਹੇਵੰਦ ਜਾਣਕਾਰੀ"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"ਐਪਾਂ ਨੂੰ ਖੋਲ੍ਹੇ ਬਿਨਾਂ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਤੁਸੀਂ ਆਪਣੀ ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਵਿਜੇਟ ਸ਼ਾਮਲ ਕਰ ਸਕਦੇ ਹੋ"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"ਨੋਟ ਬਣਾਉਣਾ"</string>
+    <string name="widget_education_header" msgid="4874760613775913787">"ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਤੁਰੰਤ ਪ੍ਰਾਪਤ ਕਰੋ"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"ਐਪਾਂ ਨੂੰ ਖੋਲ੍ਹੇ ਬਿਨਾਂ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਤੁਸੀਂ ਆਪਣੀ ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਵਿਜੇਟ ਸ਼ਾਮਲ ਕਰ ਸਕਦੇ ਹੋ"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"ਵਿਜੇਟ ਸੈਟਿੰਗਾਂ ਨੂੰ ਬਦਲਣ ਲਈ ਟੈਪ ਕਰੋ"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"ਸਮਝ ਲਿਆ"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"ਵਿਜੇਟ ਸੈਟਿੰਗਾਂ ਬਦਲੋ"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"ਐਪਾਂ ਖੋਜੋ"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"ਐਪਾਂ ਨੂੰ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..."</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" ਨਾਲ ਮੇਲ ਖਾਂਦੀਆਂ ਕੋਈ ਐਪਾਂ ਨਹੀਂ ਮਿਲੀਆਂ"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"ਹੋਰ ਐਪਾਂ ਖੋਜੋ"</string>
     <string name="label_application" msgid="8531721983832654978">"ਐਪ"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"ਸਾਰੀਆਂ ਐਪਾਂ"</string>
     <string name="notifications_header" msgid="1404149926117359025">"ਸੂਚਨਾਵਾਂ"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"ਕਿਸੇ ਸ਼ਾਰਟਕੱਟ ਨੂੰ ਲਿਜਾਉਣ ਲਈ ਸਪੱਰਸ਼ ਕਰਕੇ ਦਬਾਈ ਰੱਖੋ।"</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"ਕਿਸੇ ਸ਼ਾਰਟਕੱਟ ਨੂੰ ਲਿਜਾਉਣ ਲਈ ਡਬਲ ਟੈਪ ਕਰਕੇ ਦਬਾਈ ਰੱਖੋ ਜਾਂ ਵਿਉਂਤੀਆਂ ਕਾਰਵਾਈਆਂ ਵਰਤੋ।"</string>
-    <string name="out_of_space" msgid="6692471482459245734">"ਇਸ ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਜਗ੍ਹਾ ਨਹੀਂ ਬਚੀ"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"ਇਸ ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਜਗ੍ਹਾ ਨਹੀਂ ਬਚੀ"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"ਮਨਪਸੰਦ ਟ੍ਰੇ ਵਿੱਚ ਹੋਰ ਖਾਲੀ ਸਥਾਨ ਨਹੀਂ।"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"ਐਪ ਸੂਚੀ"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"ਖੋਜ ਨਤੀਜੇ"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"ਪੂਰਵ-ਅਨੁਮਾਨ ਪਿੰਨ ਕਰੋ"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"ਸ਼ਾਰਟਕੱਟ ਸਥਾਪਤ ਕਰੋ"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"ਇੱਕ ਐਪ ਨੂੰ ਵਰਤੋਂਕਾਰ ਦੇ ਦਖ਼ਲ ਤੋਂ ਬਿਨਾਂ ਸ਼ਾਰਟਕੱਟ ਸ਼ਾਮਲ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।"</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"ਹੋਮ ਸੈਟਿੰਗਾਂ ਅਤੇ ਸ਼ਾਰਟਕੱਟ ਪੜ੍ਹੋ"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"ਐਪ ਨੂੰ ਹੋਮ ਵਿੱਚ ਸੈਟਿੰਗਾਂ ਅਤੇ ਸ਼ਾਰਟਕੱਟ ਪੜ੍ਹਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।"</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"ਹੋਮ ਸੈਟਿੰਗਾਂ ਅਤੇ ਸ਼ਾਰਟਕੱਟ ਲਿਖੋ"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"ਐਪ ਨੂੰ ਹੋਮ ਵਿੱਚ ਸੈਟਿੰਗਾਂ ਅਤੇ ਸ਼ਾਰਟਕੱਟ ਬਦਲਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।"</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਨੂੰ ਫ਼ੋਨ ਕਾਲਾਂ ਕਰਨ ਦੀ ਆਗਿਆ ਨਹੀਂ ਹੈ"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"ਹੋਮ ਸੈਟਿੰਗਾਂ ਅਤੇ ਸ਼ਾਰਟਕੱਟ ਪੜ੍ਹੋ"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"ਐਪ ਨੂੰ ਹੋਮ ਵਿੱਚ ਸੈਟਿੰਗਾਂ ਅਤੇ ਸ਼ਾਰਟਕੱਟ ਪੜ੍ਹਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।"</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"ਹੋਮ ਸੈਟਿੰਗਾਂ ਅਤੇ ਸ਼ਾਰਟਕੱਟ ਲਿਖੋ"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"ਐਪ ਨੂੰ ਹੋਮ ਵਿੱਚ ਸੈਟਿੰਗਾਂ ਅਤੇ ਸ਼ਾਰਟਕੱਟ ਬਦਲਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।"</string>
     <string name="gadget_error_text" msgid="740356548025791839">"ਵਿਜੇਟ ਨੂੰ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"ਵਿਜੇਟ ਸੈਟਿੰਗਾਂ"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"ਸੈੱਟਅੱਪ ਪੂਰਾ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"ਇਹ ਇੱਕ ਸਿਸਟਮ ਐਪ ਹੈ ਅਤੇ ਇਸਨੂੰ ਅਣਇੰਸਟੌਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।"</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"ਨਾਮ ਦਾ ਸੰਪਾਦਨ ਕਰੋ"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਨੂੰ ਅਯੋਗ ਬਣਾਇਆ ਗਿਆ"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} \'ਤੇ # ਸੂਚਨਾ ਹੈ}one{{app_name} \'ਤੇ # ਸੂਚਨਾ ਹੈ}other{{app_name} \'ਤੇ # ਸੂਚਨਾਵਾਂ ਹਨ}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} \'ਤੇ # ਸੂਚਨਾ ਹੈ}one{{app_name} \'ਤੇ # ਸੂਚਨਾ ਹੈ}other{{app_name} \'ਤੇ # ਸੂਚਨਾਵਾਂ ਹਨ}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"ਸਫ਼ਾ %2$d ਦਾ %1$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"ਹੋਮ ਸਕ੍ਰੀਨ %2$d ਦੀ %1$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"ਨਵਾਂ ਹੋਮ ਸਕ੍ਰੀਨ ਸਫ਼ਾ"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"ਫੋਲਡਰ: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> ਜਾਂ ਹੋਰ ਆਈਟਮਾਂ"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"ਵਾਲਪੇਪਰ"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"ਵਾਲਪੇਪਰ ਅਤੇ ਸਟਾਈਲ"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"ਹੋਮ ਸਕ੍ਰੀਨ ਦਾ ਸੰਪਾਦਨ ਕਰੋ"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"ਹੋਮ ਸੈਟਿੰਗਾਂ"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਦੁਆਰਾ ਅਯੋਗ ਬਣਾਈ ਗਈ"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"ਹੋਮ ਸਕ੍ਰੀਨ ਨੂੰ ਘੁਮਾਉਣ ਦੀ ਆਗਿਆ ਦਿਓ"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"ਹੋਮ ਸਕ੍ਰੀਨ ਨੂੰ ਘੁਮਾਉਣ ਦੀ ਆਗਿਆ ਦਿਓ"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"ਜਦੋਂ ਫ਼ੋਨ ਘੁਮਾਇਆ ਜਾਂਦਾ ਹੈ"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"ਸੂਚਨਾ ਬਿੰਦੂ"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"ਚਾਲੂ"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"ਸੂਚਨਾ ਬਿੰਦੂਆਂ ਦਿਖਾਉਣ ਲਈ, <xliff:g id="NAME">%1$s</xliff:g> ਲਈ ਐਪ ਸੂਚਨਾਵਾਂ ਚਾਲੂ ਕਰੋ"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"ਸੈਟਿੰਗਾਂ ਬਦਲੋ"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"ਸੂਚਨਾ ਬਿੰਦੂ ਦਿਖਾਓ"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਐਪ ਪ੍ਰਤੀਕਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰੋ"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"ਵਿਕਾਸਕਾਰ ਚੋਣਾਂ"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਐਪ ਪ੍ਰਤੀਕਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰੋ"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"ਨਵੀਆਂ ਐਪਾਂ ਲਈ"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"ਅਗਿਆਤ"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"ਹਟਾਓ"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> ਨੂੰ ਸਥਾਪਤ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ, <xliff:g id="PROGRESS">%2$s</xliff:g> ਪੂਰਾ ਹੋਇਆ"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> ਡਾਉਨਲੋਡ ਹੋਰ ਰਿਹਾ ਹੈ, <xliff:g id="PROGRESS">%2$s</xliff:g> ਸੰਪੂਰਣ"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> ਸਥਾਪਤ ਕਰਨ ਦੀ ਉਡੀਕ ਕਰ ਰਿਹਾ ਹੈ"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"ਐਪ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਦੀ ਲੋੜ ਹੈ"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"ਇਸ ਪ੍ਰਤੀਕ ਲਈ ਐਪ ਨੂੰ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਸ ਸ਼ਾਰਟਕੱਟ ਨੂੰ ਮੁੜ-ਚਾਲੂ ਕਰਨ ਜਾਂ ਪ੍ਰਤੀਕ ਨੂੰ ਹਟਾਉਣ ਲਈ ਤੁਸੀਂ ਹੱਥੀਂ ਅੱਪਡੇਟ ਕਰ ਸਕਦੇ ਹੋ।"</string>
+    <string name="dialog_update" msgid="2178028071796141234">"ਅੱਪਡੇਟ ਕਰੋ"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"ਹਟਾਓ"</string>
     <string name="widgets_list" msgid="796804551140113767">"ਵਿਜੇਟਾਂ ਦੀ ਸੂਚੀ"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"ਵਿਜੇਟਾਂ ਦੀ ਸੂਚੀ ਬੰਦ ਕੀਤੀ ਗਈ"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਸ਼ਾਮਲ ਕਰੋ"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਸ਼ਾਮਲ ਕਰੋ"</string>
     <string name="action_move_here" msgid="2170188780612570250">"ਆਈਟਮ ਨੂੰ ਇੱਥੇ ਮੂਵ ਕਰੋ"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"ਆਈਟਮ ਨੂੰ ਹੋਮ ਸਕ੍ਰੀਨ ਵਿੱਚ ਜੋੜਿਆ ਗਿਆ"</string>
     <string name="item_removed" msgid="851119963877842327">"ਆਈਟਮ ਹਟਾਈ ਗਈ"</string>
     <string name="undo" msgid="4151576204245173321">"ਅਣਕੀਤਾ ਕਰੋ"</string>
     <string name="action_move" msgid="4339390619886385032">"ਆਈਟਮ ਨੂੰ ਮੂਵ ਕਰੋ"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"ਕਤਾਰ <xliff:g id="NUMBER_0">%1$s</xliff:g> ਕਾਲਮ <xliff:g id="NUMBER_1">%2$s</xliff:g> ਵਿੱਚ ਮੂਵ ਕਰੋ"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g> ਵਿੱਚ ਕਤਾਰ <xliff:g id="NUMBER_0">%1$s</xliff:g> ਦੇ ਕਾਲਮ <xliff:g id="NUMBER_1">%2$s</xliff:g> \'ਤੇ ਜਾਓ"</string>
     <string name="move_to_position" msgid="6750008980455459790">"ਸਥਿਤੀ <xliff:g id="NUMBER">%1$s</xliff:g> ਵਿੱਚ ਮੂਵ ਕਰੋ"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"ਮਨਪਸੰਦ ਸਥਿਤੀ <xliff:g id="NUMBER">%1$s</xliff:g> ਵਿੱਚ ਮੂਵ ਕਰੋ"</string>
     <string name="item_moved" msgid="4606538322571412879">"ਆਈਟਮ ਮੂਵ ਕੀਤੀ ਗਈ"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"ਆਈਟਮ ਨੂੰ ਫੋਲਡਰ ਵਿੱਚ ਜੋੜਿਆ ਗਿਆ"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"ਇਸਦੇ ਨਾਲ ਫੋਲਡਰ ਬਣਾਓ: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"ਫੋਲਡਰ ਬਣਾਇਆ ਗਿਆ"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"ਹੋਮ ਸਕ੍ਰੀਨ ਵਿੱਚ ਮੂਵ ਕਰੋ"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਲਿਜਾਓ"</string>
     <string name="action_resize" msgid="1802976324781771067">"ਮੁੜ ਆਕਾਰ ਦਿਓ"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"ਚੌੜਾਈ ਵਧਾਓ"</string>
     <string name="action_increase_height" msgid="459390020612501122">"ਉਂਚਾਈ ਵਧਾਓ"</string>
@@ -156,15 +160,18 @@
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"ਨਿੱਜੀ"</string>
     <string name="all_apps_work_tab" msgid="4884822796154055118">"ਕੰਮ ਸੰਬੰਧੀ"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ"</string>
-    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਬੈਜ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਇਹ ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਦਿਸਣਗੀਆਂ"</string>
+    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਬੈਜ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਇਹ ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਦਿਸਣਗੀਆਂ"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"ਸਮਝ ਲਿਆ"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਰੋਕਿਆ ਗਿਆ ਹੈ"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"ਤੁਹਾਨੂੰ ਆਪਣੀਆਂ ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਤੋਂ ਸੂਚਨਾਵਾਂ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੋਣਗੀਆਂ"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"ਤੁਹਾਡੀਆਂ ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਤੁਹਾਨੂੰ ਸੂਚਨਾਵਾਂ ਨਹੀਂ ਭੇਜ ਸਕਦੀਆਂ, ਤੁਹਾਡੀ ਬੈਟਰੀ ਨਹੀਂ ਵਰਤ ਸਕਦੀਆਂ ਜਾਂ ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕਰ ਸਕਦੀਆਂ"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਬੰਦ ਹਨ। ਤੁਹਾਡੀਆਂ ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਤੁਹਾਨੂੰ ਸੂਚਨਾਵਾਂ ਨਹੀਂ ਭੇਜ ਸਕਦੀਆਂ, ਤੁਹਾਡੀ ਬੈਟਰੀ ਨਹੀਂ ਵਰਤ ਸਕਦੀਆਂ ਜਾਂ ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕਰ ਸਕਦੀਆਂ"</string>
-    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਬੈਜ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਇਹ ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਦਿਸਣਗੀਆਂ"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"ਤੁਹਾਨੂੰ ਆਪਣੀਆਂ ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਤੋਂ ਫ਼ੋਨ ਕਾਲਾਂ, ਲਿਖਤ ਸੁਨੇਹੇ ਜਾਂ ਸੂਚਨਾਵਾਂ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੋਣਗੀਆਂ"</string>
+    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਬੈਜ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਇਹ ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਦਿਸਣਗੀਆਂ"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"ਸਮਝ ਲਿਆ"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਬੰਦ ਕਰੋ"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਚਾਲੂ ਕਰੋ"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਰੋਕੋ"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"ਰੋਕ ਹਟਾਓ"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"ਫਿਲਟਰ"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"ਆਪਣਾ ਫ਼ੋਨ ਖੋਜੋ"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ਆਪਣਾ ਟੈਬਲੈੱਟ ਖੋਜੋ"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"ਇਹ ਕਾਰਵਾਈ ਅਸਫਲ ਹੋਈ: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index f730e68..4f3abe3 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Skrót nie jest dostępny"</string>
     <string name="home_screen" msgid="5629429142036709174">"Ekran główny"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Podziel ekran"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Podziel u góry"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Podziel po lewej"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Podziel po prawej"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Informacje o aplikacji: %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Zapisz parę aplikacji"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Naciśnij i przytrzymaj, aby przenieść widżet."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Naciśnij dwukrotnie i przytrzymaj, aby przenieść widżet lub użyć działań niestandardowych."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"Szerokość %1$d, wysokość %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Widżet <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Kliknij i przytrzymaj widżet, by poruszać nim po ekranie głównym"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Dodaj do ekranu głównego"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Aby poruszać widżetem po ekranie głównym, kliknij go i przytrzymaj"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Dodaj do ekranu głównego"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Widżet <xliff:g id="WIDGET_NAME">%1$s</xliff:g> został dodany do ekranu głównego"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Sugestie"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widżet}few{# widżety}many{# widżetów}other{# widżetu}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# skrót}few{# skróty}many{# skrótów}other{# skrótu}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Osobiste"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Służbowe"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Rozmowy"</string>
-    <string name="widget_education_header" msgid="4874760613775913787">"Użyteczne informacje w zasięgu ręki"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Aby uzyskać informacje bez otwierania aplikacji, możesz dodać widżety do ekranu głównego"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Notatki"</string>
+    <string name="widget_education_header" msgid="4874760613775913787">"Użyteczne informacje w zasięgu ręki"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Możesz dodać widżety do ekranu głównego, aby uzyskiwać informacje bez otwierania aplikacji"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Kliknij, aby zmienić ustawienia widżetu"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Zmień ustawienia widżetu"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Wyszukaj aplikacje"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Ładuję aplikacje…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Nie znaleziono aplikacji pasujących do zapytania „<xliff:g id="QUERY">%1$s</xliff:g>”"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Wyszukaj więcej aplikacji"</string>
     <string name="label_application" msgid="8531721983832654978">"Aplikacja"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Wszystkie aplikacje"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Powiadomienia"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Naciśnij i przytrzymaj, aby przenieść skrót."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Naciśnij dwukrotnie i przytrzymaj, aby przenieść skrót lub użyć działań niestandardowych."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Brak miejsca na tym ekranie głównym"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Brak miejsca na tym ekranie głównym"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Brak miejsca w Ulubionych"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Lista aplikacji"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Wyniki wyszukiwania"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Przypnij podpowiedź"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"Instalowanie skrótów"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Pozwala aplikacji dodawać skróty bez interwencji użytkownika."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"odczytywanie ustawień i skrótów na ekranie głównym"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Pozwala aplikacji na odczytywanie ustawień i skrótów na ekranie głównym."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"zapisywanie ustawień i skrótów na ekranie głównym"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Umożliwia aplikacji zmianę ustawień i skrótów na ekranie głównym."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> nie może wykonywać połączeń telefonicznych"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"Odczytuje ustawienia i skróty na ekranie głównym"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Umożliwia aplikacji odczytywanie ustawień i skrótów na ekranie głównym."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"Zapisuje ustawienia i skróty na ekranie głównym"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Umożliwia aplikacji zmianę ustawień i skrótów na ekranie głównym."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Nie udało się załadować widżetu"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Ustawienia widżetu"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Kliknij, aby dokończyć konfigurację"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"To aplikacja systemowa i nie można jej odinstalować."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Edytuj nazwę"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> jest wyłączona"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} – # powiadomienie}few{{app_name} – # powiadomienia}many{{app_name} – # powiadomień}other{{app_name} – # powiadomienia}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} – # powiadomienie}few{{app_name} – # powiadomienia}many{{app_name} – # powiadomień}other{{app_name} – # powiadomienia}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Strona %1$d z %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Ekran główny %1$d z %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Nowa strona ekranu głównego"</string>
@@ -103,18 +101,20 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Folder: <xliff:g id="NAME">%1$s</xliff:g>, liczba elementów: <xliff:g id="SIZE">%2$d</xliff:g> lub więcej"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Tapety"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Tapeta i styl"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Edytuj ekran główny"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Ustawienia ekranu głównego"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Funkcja wyłączona przez administratora"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Zezwalaj na obrót ekranu głównego"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Zezwalaj na obrót ekranu głównego"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Po obróceniu telefonu"</string>
-    <string name="notification_dots_title" msgid="9062440428204120317">"Plakietki z powiadomieniami"</string>
-    <string name="notification_dots_desc_on" msgid="1679848116452218908">"Włączono"</string>
-    <string name="notification_dots_desc_off" msgid="1760796511504341095">"Wyłączono"</string>
+    <string name="notification_dots_title" msgid="9062440428204120317">"Kropki powiadomień"</string>
+    <string name="notification_dots_desc_on" msgid="1679848116452218908">"Włączone"</string>
+    <string name="notification_dots_desc_off" msgid="1760796511504341095">"Wyłączone"</string>
     <string name="title_missing_notification_access" msgid="7503287056163941064">"Wymagany jest dostęp do powiadomień"</string>
-    <string name="msg_missing_notification_access" msgid="281113995110910548">"Aby pokazać plakietki z powiadomieniami, włącz powiadomienia aplikacji <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="msg_missing_notification_access" msgid="281113995110910548">"Aby pokazywać kropki powiadomień, włącz powiadomienia aplikacji <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Zmień ustawienia"</string>
-    <string name="notification_dots_service_title" msgid="4284221181793592871">"Pokaż plakietki z powiadomieniami"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Dodawaj ikony aplikacji do ekranu głównego"</string>
+    <string name="notification_dots_service_title" msgid="4284221181793592871">"Pokaż kropki powiadomień"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Opcje programisty"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Dodawaj ikony aplikacji do ekranu głównego"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"W przypadku nowych aplikacji"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Brak informacji"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Usuń"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Instaluję aplikację <xliff:g id="NAME">%1$s</xliff:g>, postęp: <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Pobieranie elementu <xliff:g id="NAME">%1$s</xliff:g>, ukończono: <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> oczekuje na instalację"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Wymagana aktualizacja aplikacji"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Aplikacja z tą ikoną nie jest aktualizowana. Możesz zaktualizować ją ręcznie, aby ponownie uruchomić ten skrót, lub usunąć ikonę."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Aktualizuj"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Usuń"</string>
     <string name="widgets_list" msgid="796804551140113767">"Lista widgetów"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Lista widgetów zamknięta"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Dodaj do ekranu głównego"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Dodaj do ekranu głównego"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Przenieś element tutaj"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Element został dodany do ekranu głównego"</string>
     <string name="item_removed" msgid="851119963877842327">"Element został usunięty"</string>
     <string name="undo" msgid="4151576204245173321">"Cofnij"</string>
     <string name="action_move" msgid="4339390619886385032">"Przenieś element"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Przenieś do wiersza <xliff:g id="NUMBER_0">%1$s</xliff:g> w kolumnie <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Przenieś do wiersza <xliff:g id="NUMBER_0">%1$s</xliff:g> w kolumnie <xliff:g id="NUMBER_1">%2$s</xliff:g>, komórka: <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Przenieś do pozycji <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Przenieś do pozycji ulubionych: <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Element został przeniesiony"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Element został dodany do folderu"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Utwórz folder z: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Folder został utworzony"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Przenieś na ekran główny"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Przenieś na ekran główny"</string>
     <string name="action_resize" msgid="1802976324781771067">"Zmień rozmiar"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Zwiększ szerokość"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Zwiększ wysokość"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Aplikacje służbowe mają plakietki i są widoczne dla administratora IT"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Aplikacje służbowe zostały wstrzymane"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Nie będziesz otrzymywać powiadomień z aplikacji służbowych"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Aplikacje służbowe nie mogą wysyłać powiadomień, używać baterii ani uzyskiwać dostępu do Twojej lokalizacji"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Aplikacje służbowe są wyłączone i nie mogą wysyłać powiadomień, używać baterii ani uzyskiwać dostępu do Twojej lokalizacji"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Nie będziesz otrzymywać połączeń telefonicznych, SMS-ów ani powiadomień z aplikacji służbowych"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Aplikacje służbowe mają plakietki i są widoczne dla administratora IT"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Wyłącz aplikacje służbowe"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Włącz aplikacje służbowe"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Wstrzymaj aplikacje służbowe"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Cofnij wstrzymywanie"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtruj"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Przeszukuj telefon"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Przeszukuj tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Niepowodzenie: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 0ddef70..0acf63e 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -28,20 +28,19 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"O atalho não está disponível"</string>
     <string name="home_screen" msgid="5629429142036709174">"Página inicial"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Ecrã dividido"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Divisão na parte superior"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Divisão à esquerda"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Divisão à direita"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Informações da app para %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Guardar par de apps"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Toque sem soltar para mover um widget."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Toque duas vezes sem soltar para mover um widget ou utilizar ações personalizadas."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de largura por %2$d de altura"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Toque sem soltar no widget para o mover à volta do ecrã principal"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Adicionar ao ecrã principal"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Toque sem soltar no widget para o mover no ecrã principal"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Adicionar ao ecrã principal"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g> adicionado ao ecrã principal"</string>
-    <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}one{# widget(s)}other{# widgets}}"</string>
-    <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# atalho}one{# atalho(s)}other{# atalhos}}"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Sugestões"</string>
+    <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}other{# widgets}}"</string>
+    <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# atalho}other{# atalhos}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
     <string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
     <string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Pesquisar"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Pessoais"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Trabalho"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Conversas"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Tomar notas"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Informações úteis à sua disposição"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Para obter informações sem abrir apps, pode adicionar widgets ao seu ecrã principal"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Para obter informações sem abrir apps, pode adicionar widgets ao seu ecrã principal"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Toque para alterar as definições do widget"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Alterar definições do widget"</string>
-    <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Pesquisar aplicações"</string>
+    <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Pesquisar apps"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"A carregar aplicações…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Nenhuma app correspondente a \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Pesquisar mais aplicações"</string>
     <string name="label_application" msgid="8531721983832654978">"Aplicação"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Todas as apps"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Notificações"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Toque sem soltar para mover um atalho."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Toque duas vezes sem soltar para mover um atalho ou utilizar ações personalizadas."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Sem espaço neste ecrã principal."</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Sem espaço neste ecrã principal"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Não existe mais espaço no tabuleiro de Favoritos"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Lista de aplicações"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Resultados da pesquisa"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Fixar previsão"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"instalar atalhos"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Permite a uma app adicionar atalhos sem a intervenção do utilizador."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"ler definições e atalhos do Ecrã Principal"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Permite à app ler as definições e os atalhos no Ecrã Principal."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"escrever definições e atalhos do Ecrã principal"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Permite à app alterar as definições e os atalhos no Ecrã Principal."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"O <xliff:g id="APP_NAME">%1$s</xliff:g> não tem autorização para efetuar chamadas telefónicas"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"ler definições e atalhos do ecrã Principal"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Permite que a app leia as definições e os atalhos no ecrã principal."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"escrever definições e atalhos do ecrã principal"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Permite que a app altere as definições e os atalhos no ecrã principal."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Não é possível carregar o widget"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Definições de widget"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Toque para concluir a configuração"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"É uma app de sistema e não pode ser desinstalada."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Edite o nome"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> desativado"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{A app {app_name} tem # notificação}one{A app {app_name} tem # notificação(ões)}other{A app {app_name} tem # notificações}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{A app {app_name} tem # notificação}other{A app {app_name} tem # notificações}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Página %1$d de %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Ecrã principal %1$d de %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Nova página do ecrã principal"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Pasta: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> ou mais itens"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Imagens de fundo"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Imagem fundo/estilo"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Editar ecrã principal"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Definições de início"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Desativada pelo gestor"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Permitir rotação do ecrã principal"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Permitir rotação do ecrã principal"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Quando o telemóvel é rodado"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Pontos de notificação"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Ativados"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Para mostrar os Pontos de notificação, ative as notificações de aplicações para o <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Alterar definições"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Mostrar pontos de notificação"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Adic. ícones de apps ao ecrã principal"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Opções de programador"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Adicionar ícones de apps ao ecrã principal"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Para novas apps"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Desconhecido"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Remover"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"A instalar <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="PROGRESS">%2$s</xliff:g> concluído"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"A transferir o <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="PROGRESS">%2$s</xliff:g> concluído"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"A aguardar a instalação do <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Atualização da app necessária"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"A app deste ícone não está atualizada. Pode atualizar manualmente para reativar este atalho ou remover o ícone."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Atualizar"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Remover"</string>
     <string name="widgets_list" msgid="796804551140113767">"Lista de widgets"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Lista de widgets fechada."</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Adicionar ao ecrã principal"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Adicionar ao ecrã principal"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Mover o item para aqui"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Item adicionado ao ecrã principal"</string>
     <string name="item_removed" msgid="851119963877842327">"Item removido"</string>
     <string name="undo" msgid="4151576204245173321">"Anular"</string>
     <string name="action_move" msgid="4339390619886385032">"Mover item"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Mover para a linha <xliff:g id="NUMBER_0">%1$s</xliff:g>, coluna <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Mova para a linha <xliff:g id="NUMBER_0">%1$s</xliff:g>, coluna <xliff:g id="NUMBER_1">%2$s</xliff:g> em <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Mover para a posição <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Mover para a posição <xliff:g id="NUMBER">%1$s</xliff:g> dos favoritos"</string>
     <string name="item_moved" msgid="4606538322571412879">"Item movido"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Item adicionado à pasta"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Criar pasta com: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Pasta criada"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Mover para o Ecrã principal"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Mover para o ecrã principal"</string>
     <string name="action_resize" msgid="1802976324781771067">"Redimensionar"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Aumentar largura"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Aumentar altura"</string>
@@ -158,13 +162,16 @@
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"Perfil de trabalho"</string>
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"As apps de trabalho têm um emblema e estão visíveis para o seu administrador de TI"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
-    <string name="work_apps_paused_title" msgid="3040901117349444598">"As apps de trabalho estão em pausa"</string>
+    <string name="work_apps_paused_title" msgid="3040901117349444598">"As apps de trabalho estão suspensas"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Não vai receber notificações das apps de trabalho"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"As apps de trabalho não podem enviar-lhe notificações, utilizar a bateria ou aceder à sua localização"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"As apps de trabalho estão desativadas. As apps de trabalho não podem enviar-lhe notificações, utilizar a bateria ou aceder à sua localização"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Não vai receber chamadas, mensagens de texto nem notificações das apps de trabalho"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"As apps de trabalho têm um emblema e estão visíveis para o seu administrador de TI"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Desativar apps de trabalho"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Ativar apps de trabalho"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Pausar apps de trabalho"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Retomar"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtrar"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Pesquise no telemóvel"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Pesquise no tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Falhou: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 7beedcb..e0c9b84 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"O atalho não está disponível"</string>
     <string name="home_screen" msgid="5629429142036709174">"Início"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Tela dividida"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Dividir para cima"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Dividir para a esquerda"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Dividir para a direita"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Informações do app %1$s"</string>
-    <string name="long_press_widget_to_add" msgid="3587712543577675817">"Toque e mantenha pressionado para mover um widget."</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Salvar par de apps"</string>
+    <string name="long_press_widget_to_add" msgid="3587712543577675817">"Toque e pressione para mover um widget."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Toque duas vezes e mantenha a tela pressionada para mover um widget ou usar ações personalizadas."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d de largura por %2$d de altura"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Toque no widget e mantenha-o pressionado para movê-lo pela tela inicial"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Adicionar à tela inicial"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Toque no widget e o pressione para definir a posição dele na tela inicial"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Adicionar à tela inicial"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Widget <xliff:g id="WIDGET_NAME">%1$s</xliff:g> adicionado à tela inicial"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Sugestões"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}one{# widget}other{# widgets}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# atalho}one{# atalho}other{# atalhos}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Pessoais"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Trabalho"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Conversas"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Anotações"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Informações úteis ao seu alcance"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Para receber informações sem precisar abrir apps, adicione widgets à sua tela inicial"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Para ver informações sem precisar abrir os apps, adicione widgets à sua tela inicial"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Toque para mudar as configurações do widget"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Ok"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Mudar as configurações do widget"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Pesquisar apps"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Carregando apps…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Nenhum app encontrado que corresponda a \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Pesquisar mais apps"</string>
     <string name="label_application" msgid="8531721983832654978">"App"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Todos os apps"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Notificações"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Toque e mantenha a tela pressionada para mover um atalho."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Toque duas vezes e mantenha a tela pressionada para mover um atalho ou usar ações personalizadas."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Não há espaço nesta tela inicial"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Não há espaço nesta tela inicial"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Sem espaço na bandeja de favoritos"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Lista de apps"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Resultados da pesquisa"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Fixar previsão"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"instalar atalhos"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Permite que um app adicione atalhos sem intervenção do usuário."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"ler configurações e atalhos da tela inicial"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Permite que o app leia as configurações e os atalhos na tela inicial."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"gravar configurações e atalhos da tela inicial"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Permite que o app altere as configurações e os atalhos na tela inicial."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> não tem permissão para fazer chamadas"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"ler configurações e atalhos da tela inicial"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Permite que o app leia as configurações e os atalhos na tela inicial."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"gravar configurações e atalhos da tela inicial"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Permite que o app mude as configurações e os atalhos na tela inicial."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Não é possível carregar o widget"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Configurações de widget"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Toque para concluir a configuração"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Este é um app do sistema e não pode ser desinstalado."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Editar nome"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> desativado"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{O app {app_name} tem # notificação}one{O app {app_name} tem # notificação}other{O app {app_name} tem # notificações}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{O app {app_name} tem # notificação}one{O app {app_name} tem # notificação}other{O app {app_name} tem # notificações}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Página %1$d de %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Tela inicial %1$d de %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Nova página na tela inicial"</string>
@@ -103,18 +101,20 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Pasta: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> ou mais itens"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Planos de fundo"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Plano de fundo e estilo"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Editar tela inicial"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Configurações da tela inicial"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Desativado pelo administrador"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Permitir rotação da tela inicial"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Permitir a rotação da tela inicial"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Quando o smartphone for girado"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Pontos de notificação"</string>
-    <string name="notification_dots_desc_on" msgid="1679848116452218908">"Ativado"</string>
+    <string name="notification_dots_desc_on" msgid="1679848116452218908">"Ativados"</string>
     <string name="notification_dots_desc_off" msgid="1760796511504341095">"Desativado"</string>
     <string name="title_missing_notification_access" msgid="7503287056163941064">"Acesso a notificações necessário"</string>
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Para mostrar pontos de notificação, ative as notificações de app para <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Alterar configurações"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Mostrar pontos de notificação"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Adicionar ícones de apps à tela inicial"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Opções do desenvolvedor"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Adicionar ícones de apps à tela inicial"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Para novos apps"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Desconhecido"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Remover"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Instalando <xliff:g id="NAME">%1$s</xliff:g>. <xliff:g id="PROGRESS">%2$s</xliff:g> concluído"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Fazendo download de <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="PROGRESS">%2$s</xliff:g> concluído"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"Aguardando instalação de <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Atualização obrigatória do app"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"O app desse ícone não está atualizado. Você pode remover o ícone ou atualizar o app manualmente para reativar esse atalho."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Atualizar"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Remover"</string>
     <string name="widgets_list" msgid="796804551140113767">"Lista de widgets"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Lista de widgets fechada"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Adicionar à tela inicial"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Adicionar à tela inicial"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Mover item para cá"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Item adicionado à tela inicial"</string>
     <string name="item_removed" msgid="851119963877842327">"Item removido"</string>
     <string name="undo" msgid="4151576204245173321">"Desfazer"</string>
     <string name="action_move" msgid="4339390619886385032">"Mover item"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Mover para a linha <xliff:g id="NUMBER_0">%1$s</xliff:g>, coluna <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Mover para a linha <xliff:g id="NUMBER_0">%1$s</xliff:g>, coluna <xliff:g id="NUMBER_1">%2$s</xliff:g> na <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Mover para a posição <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Mover para a posição <xliff:g id="NUMBER">%1$s</xliff:g> dos favoritos"</string>
     <string name="item_moved" msgid="4606538322571412879">"Item movido"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Item adicionado à pasta"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Criar pasta com: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Pasta criada"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Mover para a tela inicial"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Mover para a tela inicial"</string>
     <string name="action_resize" msgid="1802976324781771067">"Redimensionar"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Aumentar largura"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Aumentar altura"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Os apps de trabalho são identificados e ficam visíveis para o adm. de TI"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Ok"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Os apps de trabalho foram pausados"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Você não vai receber notificações dos seus apps de trabalho"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Os apps de trabalho não podem enviar notificações, usar a bateria nem acessar o local"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Os apps de trabalho estão desativados. Eles não podem enviar notificações, usar a bateria nem acessar o local"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Você não vai receber ligações, mensagens de texto ou notificações dos seus apps de trabalho"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Os apps de trabalho são identificados e ficam visíveis para o adm. de TI"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Ok"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Desativar apps de trabalho"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Ativar apps de trabalho"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Pausar apps de trabalho"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Ativar"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtrar"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Pesquisar no smartphone"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Pesquisar no tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Falha: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 14db745..d6c5e5e 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -28,130 +28,134 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Comanda rapidă nu este disponibilă"</string>
     <string name="home_screen" msgid="5629429142036709174">"Pagina de pornire"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Ecran împărțit"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Împărțiți în sus"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Împărțiți în stânga"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Împărțiți în dreapta"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Informații despre aplicație pentru %1$s"</string>
-    <string name="long_press_widget_to_add" msgid="3587712543577675817">"Atingeți și țineți apăsat pentru a muta un widget."</string>
-    <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Atingeți de două ori și țineți apăsat pentru a muta un widget sau folosiți acțiuni personalizate."</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Salvează perechea de aplicații"</string>
+    <string name="long_press_widget_to_add" msgid="3587712543577675817">"Atinge și ține apăsat pentru a muta un widget."</string>
+    <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Atinge de două ori și ține apăsat pentru a muta un widget sau folosește acțiuni personalizate."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d lățime și %2$d înălțime"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Widgetul <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Atingeți lung widgetul pentru a-l muta pe ecranul de pornire"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Adăugați pe ecranul de pornire"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Atinge lung widgetul pentru a-l muta pe ecranul de pornire"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Adaugă pe ecranul de pornire"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Widgetul <xliff:g id="WIDGET_NAME">%1$s</xliff:g> a fost adăugat pe ecranul de pornire"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Sugestii"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}few{# widgeturi}other{# de widgeturi}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# comandă rapidă}few{# comenzi rapide}other{# de comenzi rapide}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g> <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
     <string name="widget_button_text" msgid="2880537293434387943">"Widgeturi"</string>
     <string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Căutare"</string>
-    <string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Ștergeți textul din caseta de căutare"</string>
+    <string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Șterge textul din caseta de căutare"</string>
     <string name="no_widgets_available" msgid="4337693382501046170">"Widgeturile și comenzile rapide nu sunt disponibile"</string>
     <string name="no_search_results" msgid="3787956167293097509">"Nu au fost găsite widgeturi sau comenzi rapide"</string>
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personale"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Serviciu"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Conversații"</string>
-    <string name="widget_education_header" msgid="4874760613775913787">"Informații utile la îndemâna dvs."</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Pentru a primi informații fără să deschideți aplicațiile, puteți adăuga widgeturi pe ecranul de pornire"</string>
-    <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Atingeți ca să schimbați setările pentru widgeturi"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Luare de notițe"</string>
+    <string name="widget_education_header" msgid="4874760613775913787">"Informații utile la îndemâna ta"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Pentru a primi informații fără să deschizi aplicațiile, poți adăuga widgeturi pe ecranul de pornire"</string>
+    <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Atinge ca să schimbi setările pentru widgeturi"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
-    <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Modificați setările pentru widgeturi"</string>
-    <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Căutați aplicații"</string>
+    <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Modifică setările pentru widgeturi"</string>
+    <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Caută aplicații"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Se încarcă aplicații…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Nu s-a găsit nicio aplicație pentru „<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Căutați mai multe aplicații"</string>
     <string name="label_application" msgid="8531721983832654978">"Aplicație"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Toate aplicațiile"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Notificări"</string>
-    <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Atingeți și țineți apăsat pentru a muta comanda rapidă."</string>
-    <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Atingeți de două ori și țineți apăsat pentru a muta o comandă rapidă sau folosiți acțiuni personalizate."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Nu există spațiu liber pe acest ecran de pornire"</string>
+    <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Atinge și ține apăsat ca să muți comanda rapidă."</string>
+    <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Atinge de două ori și ține apăsat pentru a muta o comandă rapidă sau folosește acțiuni personalizate."</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Nu există spațiu liber pe acest ecran de pornire"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Spațiu epuizat în bara Preferate"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Lista de aplicații"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Rezultatele căutării"</string>
     <string name="all_apps_button_personal_label" msgid="1315764287305224468">"Lista de aplicații personale"</string>
     <string name="all_apps_button_work_label" msgid="7270707118948892488">"Lista de aplicații de serviciu"</string>
-    <string name="remove_drop_target_label" msgid="7812859488053230776">"Eliminați"</string>
-    <string name="uninstall_drop_target_label" msgid="4722034217958379417">"Dezinstalați"</string>
+    <string name="remove_drop_target_label" msgid="7812859488053230776">"Elimină"</string>
+    <string name="uninstall_drop_target_label" msgid="4722034217958379417">"Dezinstalează"</string>
     <string name="app_info_drop_target_label" msgid="692894985365717661">"Informații despre aplicații"</string>
-    <string name="install_drop_target_label" msgid="2539096853673231757">"Instalați"</string>
+    <string name="install_drop_target_label" msgid="2539096853673231757">"Instalează"</string>
     <string name="dismiss_prediction_label" msgid="3357562989568808658">"Nu sugera aplicația"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"Fixează predicția"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"instalează comenzi rapide"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Permite unei aplicații să adauge comenzi rapide fără intervenția utilizatorului."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"citește setări și comenzi rapide pentru ecranul de pornire"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Permite aplicației să citească setările și comenzile rapide din ecranul de pornire."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"scrie setări și comenzi rapide pentru ecranul de pornire"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Permite aplicației să modifice setările și comenzile rapide din ecranul de pornire."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> nu are permisiunea de a apela"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"citește setările și comenzile rapide de pe ecranul de pornire"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Permite aplicației să citească setările și comenzile rapide de pe ecranul de pornire."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"scrie setările și comenzile rapide de pe ecranul de pornire"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Permite aplicației să modifice setările și comenzile rapide de pe ecranul de pornire."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Widgetul nu poate fi încărcat"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Setări pentru widget"</string>
-    <string name="gadget_complete_setup_text" msgid="309040266978007925">"Atingeți pentru a finaliza configurarea"</string>
+    <string name="gadget_complete_setup_text" msgid="309040266978007925">"Atinge pentru a finaliza configurarea"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Aceasta este o aplicație de sistem și nu poate fi dezinstalată."</string>
-    <string name="folder_hint_text" msgid="5174843001373488816">"Modificați numele"</string>
+    <string name="folder_hint_text" msgid="5174843001373488816">"Modifică numele"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"S-a dezactivat <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} are # notificare}few{{app_name} are # notificări}other{{app_name} are # de notificări}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} are # notificare}few{{app_name} are # notificări}other{{app_name} are # de notificări}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Pagina %1$d din %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Ecranul de pornire %1$d din %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Pagină nouă pe ecranul de pornire"</string>
     <string name="folder_opened" msgid="94695026776264709">"Dosar deschis, <xliff:g id="WIDTH">%1$d</xliff:g> pe <xliff:g id="HEIGHT">%2$d</xliff:g>"</string>
-    <string name="folder_tap_to_close" msgid="4625795376335528256">"Atingeți pentru a închide dosarul"</string>
-    <string name="folder_tap_to_rename" msgid="4017685068016979677">"Atingeți pentru a salva noul nume"</string>
+    <string name="folder_tap_to_close" msgid="4625795376335528256">"Atinge pentru a închide dosarul"</string>
+    <string name="folder_tap_to_rename" msgid="4017685068016979677">"Atinge pentru a salva noul nume"</string>
     <string name="folder_closed" msgid="4100806530910930934">"Dosar închis"</string>
     <string name="folder_renamed" msgid="1794088362165669656">"Dosar redenumit <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_name_format_exact" msgid="8626242716117004803">"Dosar: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> elemente"</string>
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Dosar: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> sau mai multe elemente"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Imagini de fundal"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Imagine de fundal și stil"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Editează ecranul de pornire"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Setări ecran de pornire"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Dezactivată de administrator"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Permite rotirea ecranului de pornire"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Permite rotirea ecranului de pornire"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Când telefonul este rotit"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Puncte de notificare"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Activate"</string>
     <string name="notification_dots_desc_off" msgid="1760796511504341095">"Dezactivate"</string>
     <string name="title_missing_notification_access" msgid="7503287056163941064">"Este necesar accesul la notificări"</string>
-    <string name="msg_missing_notification_access" msgid="281113995110910548">"Pentru a afișa punctele de notificare, activați notificările din aplicație pentru <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="title_change_settings" msgid="1376365968844349552">"Modificați setările"</string>
-    <string name="notification_dots_service_title" msgid="4284221181793592871">"Afișați punctele de notificare"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Adaugă pictograme de aplicații pe ecran"</string>
+    <string name="msg_missing_notification_access" msgid="281113995110910548">"Pentru a afișa punctele de notificare, activează notificările din aplicație pentru <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="title_change_settings" msgid="1376365968844349552">"Modifică setările"</string>
+    <string name="notification_dots_service_title" msgid="4284221181793592871">"Afișează punctele de notificare"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Opțiuni dezvoltator"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Adaugă pictograme de aplicații pe ecranul de pornire"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Pentru aplicații noi"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Necunoscut"</string>
-    <string name="abandoned_clean_this" msgid="7610119707847920412">"Eliminați"</string>
-    <string name="abandoned_search" msgid="891119232568284442">"Căutați"</string>
+    <string name="abandoned_clean_this" msgid="7610119707847920412">"Elimină"</string>
+    <string name="abandoned_search" msgid="891119232568284442">"Caută"</string>
     <string name="abandoned_promises_title" msgid="7096178467971716750">"Aplicația nu este instalată"</string>
-    <string name="abandoned_promise_explanation" msgid="3990027586878167529">"Aplicația pentru această pictogramă nu este instalată. Puteți să ștergeți pictograma sau să căutați aplicația și s-o instalați manual."</string>
+    <string name="abandoned_promise_explanation" msgid="3990027586878167529">"Aplicația pentru această pictogramă nu este instalată. Poți să ștergi pictograma sau să cauți aplicația și s-o instalezi manual."</string>
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> se instalează, <xliff:g id="PROGRESS">%2$s</xliff:g> finalizat"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> se descarcă (finalizat <xliff:g id="PROGRESS">%2$s</xliff:g>)"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> așteaptă instalarea"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Este necesară actualizarea aplicației"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Aplicația pentru această pictogramă nu este actualizată. Poți să actualizezi manual ca să reactivezi comanda rapidă sau să elimini pictograma."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Actualizează"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Elimină"</string>
     <string name="widgets_list" msgid="796804551140113767">"Listă de widgeturi"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Lista de widgeturi este închisă"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Adăugați pe ecranul de pornire"</string>
-    <string name="action_move_here" msgid="2170188780612570250">"Mutați elementul aici"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Adaugă pe ecranul de pornire"</string>
+    <string name="action_move_here" msgid="2170188780612570250">"Mută elementul aici"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Element adăugat pe ecranul de pornire"</string>
     <string name="item_removed" msgid="851119963877842327">"Element eliminat"</string>
-    <string name="undo" msgid="4151576204245173321">"Anulați"</string>
-    <string name="action_move" msgid="4339390619886385032">"Mutați elementul"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Mutați pe rândul <xliff:g id="NUMBER_0">%1$s</xliff:g>, coloana <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
-    <string name="move_to_position" msgid="6750008980455459790">"Mutați pe poziția <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
-    <string name="move_to_hotseat_position" msgid="6295412897075147808">"Mutați în preferate, pe poziția <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="undo" msgid="4151576204245173321">"Anulează"</string>
+    <string name="action_move" msgid="4339390619886385032">"Mută elementul"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Mută în rândul <xliff:g id="NUMBER_0">%1$s</xliff:g> coloana <xliff:g id="NUMBER_1">%2$s</xliff:g> din <xliff:g id="STRING">%3$s</xliff:g>"</string>
+    <string name="move_to_position" msgid="6750008980455459790">"Mută pe poziția <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
+    <string name="move_to_hotseat_position" msgid="6295412897075147808">"Mută în preferate, pe poziția <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Element mutat"</string>
-    <string name="add_to_folder" msgid="9040534766770853243">"Adăugați în dosar: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="add_to_folder_with_app" msgid="4534929978967147231">"Adăugați în dosarul cu <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="add_to_folder" msgid="9040534766770853243">"Adaugă în dosar: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="add_to_folder_with_app" msgid="4534929978967147231">"Adaugă în dosarul cu <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="added_to_folder" msgid="4793259502305558003">"Element adăugat în dosar"</string>
-    <string name="create_folder_with" msgid="4050141361160214248">"Creați dosar cu: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="create_folder_with" msgid="4050141361160214248">"Creează dosar cu: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Dosar creat"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Mutați pe ecranul de pornire"</string>
-    <string name="action_resize" msgid="1802976324781771067">"Redimensionați"</string>
-    <string name="action_increase_width" msgid="8773715375078513326">"Creșteți lățimea"</string>
-    <string name="action_increase_height" msgid="459390020612501122">"Creșteți înălțimea"</string>
-    <string name="action_decrease_width" msgid="1374549771083094654">"Reduceți lățimea"</string>
-    <string name="action_decrease_height" msgid="282377193880900022">"Reduceți înălțimea"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Mută pe ecranul de pornire"</string>
+    <string name="action_resize" msgid="1802976324781771067">"Redimensionează"</string>
+    <string name="action_increase_width" msgid="8773715375078513326">"Crește lățimea"</string>
+    <string name="action_increase_height" msgid="459390020612501122">"Crește înălțimea"</string>
+    <string name="action_decrease_width" msgid="1374549771083094654">"Redu lățimea"</string>
+    <string name="action_decrease_height" msgid="282377193880900022">"Redu înălțimea"</string>
     <string name="widget_resized" msgid="9130327887929620">"Widgetul a fost redimensionat la lățimea <xliff:g id="NUMBER_0">%1$s</xliff:g> și înălțimea <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
     <string name="action_deep_shortcut" msgid="2864038805849372848">"Comenzi rapide"</string>
     <string name="shortcuts_menu_with_notifications_description" msgid="2676582286544232849">"Comenzi rapide și notificări"</string>
-    <string name="action_dismiss_notification" msgid="5909461085055959187">"Închideți"</string>
-    <string name="accessibility_close" msgid="2277148124685870734">"Închideți"</string>
+    <string name="action_dismiss_notification" msgid="5909461085055959187">"Închide"</string>
+    <string name="accessibility_close" msgid="2277148124685870734">"Închide"</string>
     <string name="notification_dismissed" msgid="6002233469409822874">"Notificare închisă"</string>
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"Personale"</string>
     <string name="all_apps_work_tab" msgid="4884822796154055118">"Profesionale"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Aplicațiile pentru lucru sunt marcate și vizibile pentru administratorul IT"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Aplicațiile pentru lucru sunt întrerupte"</string>
-    <string name="work_apps_paused_body" msgid="261634750995824906">"Aplicațiile pentru lucru nu pot să vă trimită notificări, să folosească bateria sau să vă acceseze locația"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Aplicațiile pentru lucru sunt dezactivate. Acestea nu pot să vă trimită notificări, să folosească bateria sau să vă acceseze locația."</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Nu vei primi notificări de la aplicațiile pentru lucru"</string>
+    <string name="work_apps_paused_body" msgid="261634750995824906">"Aplicațiile pentru lucru nu pot să-ți trimită notificări, să folosească bateria sau să-ți acceseze locația"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Nu vei primi apeluri telefonice, mesaje text sau notificări de la aplicațiile pentru lucru"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Aplicațiile pentru lucru sunt marcate și vizibile pentru administratorul IT"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Dezactivați aplicațiile pentru lucru"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Activați aplicațiile pentru lucru"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Întrerupe aplicațiile pentru lucru"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Anulează întreruperea"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtru"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Caută pe telefon"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Caută pe tabletă"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Eșuare: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 4e72d40..6315ee5 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -28,20 +28,19 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Ярлык недоступен"</string>
     <string name="home_screen" msgid="5629429142036709174">"Главный экран"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Разделить экран"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Приложение сверху"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Приложение слева"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Приложение справа"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Сведения о приложении \"%1$s\""</string>
-    <string name="long_press_widget_to_add" msgid="3587712543577675817">"Нажмите и удерживайте для переноса виджета."</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Сохранить настройки одновременного использования двух приложений"</string>
+    <string name="long_press_widget_to_add" msgid="3587712543577675817">"Чтобы переместить виджет, нажмите на него и удерживайте"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Чтобы использовать специальные действия или перенести виджет, нажмите на него дважды и удерживайте."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d x %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"Ширина %1$d, высота %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Виджет \"<xliff:g id="WIDGET_NAME">%1$s</xliff:g>\""</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Чтобы переместить виджет, нажмите на него и удерживайте."</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Добавить на главный экран"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Нажмите на виджет и удерживайте его, чтобы переместить в нужное место на главном экране."</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Добавить на главный экран"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Виджет \"<xliff:g id="WIDGET_NAME">%1$s</xliff:g>\" добавлен на главный экран"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Подсказки"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# виджет}one{# виджет}few{# виджета}many{# виджетов}other{# виджета}}"</string>
-    <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# быстрая команда}one{# быстрая команда}few{# быстрые команды}many{# быстрых команд}other{# быстрой команды}}"</string>
+    <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# ярлык}one{# ярлык}few{# ярлыка}many{# ярлыков}other{# ярлыка}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
     <string name="widget_button_text" msgid="2880537293434387943">"Виджеты"</string>
     <string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Поиск"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Личные виджеты"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Рабочие виджеты"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Разговоры"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Создание заметок"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Вся нужная информация перед глазами"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Чтобы не открывать приложения каждый раз, когда нужна информация, добавьте виджеты на главный экран."</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Чтобы не открывать приложения каждый раз, когда нужна информация, добавьте виджеты на главный экран."</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Нажмите, чтобы изменить настройки виджета"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"ОК"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Изменить настройки виджета"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Поиск приложений"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Загрузка приложений…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"По запросу \"<xliff:g id="QUERY">%1$s</xliff:g>\" ничего не найдено"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Искать другие приложения"</string>
     <string name="label_application" msgid="8531721983832654978">"Приложение"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Все приложения"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Уведомления"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Нажмите и удерживайте для переноса ярлыка."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Чтобы использовать специальные действия или перенести ярлык, нажмите на него дважды и удерживайте."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"На главном экране нет свободного места."</string>
+    <string name="out_of_space" msgid="6455557115204099579">"На главном экране нет свободного места."</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"В разделе \"Избранное\" больше нет места"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Список приложений"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Результаты поиска"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Закрепить рекомендацию"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"Создание ярлыков"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Приложение сможет самостоятельно добавлять ярлыки."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"Доступ к настройкам и ярлыкам главного экрана"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Приложение получит доступ к данным о настройках и ярлыках на главном экране."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"Изменение настроек и ярлыков главного экрана"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Приложение сможет изменять настройки и ярлыки на главном экране."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"Приложение <xliff:g id="APP_NAME">%1$s</xliff:g> не может делать телефонные звонки"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"Доступ к данным о настройках и ярлыках на главном экране"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Приложение получит доступ к данным о настройках и ярлыках на главном экране."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"Изменение настроек и ярлыков на главном экране"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Приложение сможет изменять настройки и ярлыки на главном экране."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Не удается загрузить виджет."</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Настройки виджета"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Нажмите, чтобы завершить настройку."</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Это системное приложение, его нельзя удалить."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Измените название"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Приложение <xliff:g id="APP_NAME">%1$s</xliff:g> отключено"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{В приложении \"{app_name}\" # уведомление}one{В приложении \"{app_name}\" # уведомление}few{В приложении \"{app_name}\" # уведомления}many{В приложении \"{app_name}\" # уведомлений}other{В приложении \"{app_name}\" # уведомления}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{В приложении \"{app_name}\" # уведомление}one{В приложении \"{app_name}\" # уведомление}few{В приложении \"{app_name}\" # уведомления}many{В приложении \"{app_name}\" # уведомлений}other{В приложении \"{app_name}\" # уведомления}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Стр. %1$d из %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Главный экран %1$d из %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Новый экран"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Папка \"<xliff:g id="NAME">%1$s</xliff:g>\" (объектов: <xliff:g id="SIZE">%2$d</xliff:g> или больше)"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Обои"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Обои и стиль"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Изменить главный экран"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Главный экран"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Функция отключена администратором"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Разрешить поворачивать главный экран"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Разрешить поворачивать главный экран"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"При повороте телефона"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Значки уведомлений"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Включены"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Чтобы показывать значки уведомлений, включите уведомления в приложении \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Изменить настройки"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Показывать значки уведомлений"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Добавлять значки на главный экран"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Для разработчиков"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Добавлять значки приложений на главный экран"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Добавлять значки установленных приложений на главный экран"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Неизвестно"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Убрать"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Установка приложения \"<xliff:g id="NAME">%1$s</xliff:g>\" (выполнено <xliff:g id="PROGRESS">%2$s</xliff:g>)"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Скачивается \"<xliff:g id="NAME">%1$s</xliff:g>\" (<xliff:g id="PROGRESS">%2$s</xliff:g>)"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"Ожидание установки \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Обновите приложение"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Эта версия приложения устарела. Обновите его вручную, чтобы снова пользоваться ярлыком, или удалите значок."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Обновить"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Удалить"</string>
     <string name="widgets_list" msgid="796804551140113767">"Список виджетов"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Список виджетов закрыт"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Добавить на главный экран"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Добавить на главный экран"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Переместить элемент сюда"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Элемент добавлен на главный экран"</string>
-    <string name="item_removed" msgid="851119963877842327">"Объект удален."</string>
+    <string name="item_removed" msgid="851119963877842327">"Объект убран."</string>
     <string name="undo" msgid="4151576204245173321">"Отменить"</string>
     <string name="action_move" msgid="4339390619886385032">"Переместить элемент"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Переместить в ячейку <xliff:g id="NUMBER_0">%1$s</xliff:g> <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Переместите в строку <xliff:g id="NUMBER_0">%1$s</xliff:g> столбца <xliff:g id="NUMBER_1">%2$s</xliff:g> на экране \"<xliff:g id="STRING">%3$s</xliff:g>\""</string>
     <string name="move_to_position" msgid="6750008980455459790">"Переместить в позицию <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Переместить в Избранное (<xliff:g id="NUMBER">%1$s</xliff:g>)"</string>
     <string name="item_moved" msgid="4606538322571412879">"Элемент перемещен."</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Элемент добавлен в папку."</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Создать папку с элементом <xliff:g id="NAME">%1$s</xliff:g>."</string>
     <string name="folder_created" msgid="6409794597405184510">"Папка создана."</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Переместить на главный экран"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Переместить на главный экран"</string>
     <string name="action_resize" msgid="1802976324781771067">"Изменить размер"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Увеличить ширину"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Увеличить высоту"</string>
@@ -156,15 +160,18 @@
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"Личные"</string>
     <string name="all_apps_work_tab" msgid="4884822796154055118">"Рабочие"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"Рабочий профиль"</string>
-    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"У рабочих приложений есть специальная пометка. Они видны системному администратору."</string>
+    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"У рабочих приложений есть специальный значок. Они видны системному администратору."</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"ОК"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Рабочие приложения приостановлены"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Вы не будете получать уведомления от рабочих приложений."</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Рабочие приложения не могут отправлять уведомления, расходовать заряд батареи и получать доступ к данным о вашем местоположении."</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Рабочие приложения отключены. Они не могут отправлять уведомления, расходовать заряд батареи и получать доступ к вашему местоположению."</string>
-    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"У рабочих приложений есть специальная пометка. Они видны системному администратору."</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Вы не будете получать вызовы, текстовые сообщения и уведомления от рабочих приложений."</string>
+    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"У рабочих приложений есть специальный значок. Они видны системному администратору."</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"ОК"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Отключить рабочие приложения"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Включить рабочие приложения"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Приостановить рабочие приложения"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Возобновить"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Фильтр"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Поиск на телефоне"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Поиск на планшете"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Не удалось выполнить действие (<xliff:g id="WHAT">%1$s</xliff:g>)."</string>
 </resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 17531bd..15bc4a7 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"කෙටි මග ලබා ගත නොහැකිය"</string>
     <string name="home_screen" msgid="5629429142036709174">"මුල් පිටුව"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"බෙදුම් තිරය"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"ඉහළ බෙදන්න"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"වම බෙදන්න"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"දකුණ බෙදන්න"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s සඳහා යෙදුම් තතු"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"යෙදුම් යුගල සුරකින්න"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"විජට් එකක් ගෙන යාමට ස්පර්ශ කර අල්ලා ගෙන සිටින්න."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"විජට් එකක් ගෙන යාමට හෝ අභිරුචි ක්‍රියා භාවිත කිරීමට දෙවරක් තට්ටු කර අල්ලා ගෙන සිටින්න."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"පළල %1$d උස %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> විජට්ටුව"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"එය මුල් පිටු තිරය වටා ගෙන යාමට විජට් එක ස්පර්ශ කර අල්ලා ගන්න"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"මුල් පිටු තිරය වෙත එක් කරන්න"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"විජට් එක මුල් පිටු තිරය වටා ගෙන යාමට විජට් එක ස්පර්ශ කර අල්ලාගෙන සිටින්න"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"මුල් තිරය වෙත එක් කරන්න"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> විජට්ටුව මුල් පිටු තිරය වෙත එක් කරන ලදි"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"යෝජනා"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{විජට් #}one{විජට් #}other{විජට් #}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{කෙටි මං #}one{කෙටි මං #}other{කෙටි මං #}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"පුද්ගලික"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"කාර්යාලය"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"සංවාද"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"සටහන් කර ගැනීම"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"ප්‍රයෝජනවත් තොරතුරු ඔබගේ ඇඟිලි තුඩු අග"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"යෙදුම් විවෘත නොකර තොරතුරු ලබා ගැනීම සඳහා, ඔබට ඔබගේ මුල් තිරයට විජට් එක් කළ හැකිය"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"යෙදුම් විවෘත නොකර තොරතුරු ලබා ගැනීම සඳහා, ඔබට ඔබගේ මුල් තිරයට විජට් එක් කළ හැකිය"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"විජට් සැකසීම් වෙනස් කිරීමට තට්ටු කරන්න"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"තේරුණා"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"විජට් සැකසීම් වෙනස් කරන්න"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"යෙදුම් සොයන්න"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"යෙදුම් පූරණය වෙමින්…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" සමග ගැළපෙන යෙදුම් හමු නොවිණි"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"තව යෙදුම් සඳහා සොයන්න"</string>
     <string name="label_application" msgid="8531721983832654978">"යෙදුම"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"සියලු යෙදුම්"</string>
     <string name="notifications_header" msgid="1404149926117359025">"දැනුම්දීම්"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"කෙටි මගක් ගෙන යාමට ස්පර්ශ කර අල්ලාගෙන සිටින්න."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"කෙටි මගක් ගෙන යාමට හෝ අභිරුචි ක්‍රියා භාවිත කිරීමට දෙවරක් තට්ටු කර අල්ලා ගෙන සිටින්න."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"මෙම මුල් තිරයේ ඉඩ නැත"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"මෙම මුල් තිරයේ ඉඩ නැත"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"ප්‍රියතම දෑ ඇති තැටියේ තවත් ඉඩ නොමැත"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"යෙදුම් ලැයිස්තුව"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"සෙවීම් ප්‍රතිඵල"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"පුරෝකථනය අමුණන්න"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"කෙටිමං ස්ථාපනය කරන්න"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"පරිශීලක මැදිහත්වීමෙන් තොරව කෙටිමං එක් කිරීමට යෙදුමකට අවසර දෙයි."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"මුල් පිටු සැකසීම් සහ කෙටිමං කියවන්න"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"මුල් පිටුවේ ඇති සැකසීම් සහ කෙටිමං කියවීමට යෙදුමකට අවසර දෙයි."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"මුල් පිටු සැකසීම් සහ කෙටිමං ලියන්න"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"මුල් පිටුවේ සැකසීම් සහ කෙටිමං ඉවත් කිරීමට යෙදුමට අවසර දෙයි."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> හට දුරකථන ඇමතුම් සිදු කිරීමට ඉඩ නොදේ"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"මුල් පිටු සැකසීම් සහ කෙටි මං කියවන්න"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"මුල් පිටුවේ ඇති සැකසීම් සහ කෙටි මං කියවීමට යෙදුමට ඉඩ දෙයි."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"මුල් පිටු සැකසීම් සහ කෙටි මං ලියන්න"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"මුල් පිටුවේ සැකසීම් සහ කෙටි මං ඉවත් කිරීමට යෙදුමට ඉඩ දෙයි."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"විජට් පූරණය කළ නොහැකිය"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"විජට් සැකසීම්"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"පිහිටුවීම අවසන් කිරීමට තට්ටු කරන්න"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"මෙය පද්ධති යෙදුමක් වන අතර අස්ථාපනය කළ නොහැක."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"නම සංස්කරණය කරන්න"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> අබල කෙරිණි"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} හට දැනුම්දීම් #ක් ඇත}one{{app_name} හට දැනුම්දීම් #ක් ඇත}other{{app_name} හට දැනුම්දීම් #ක් ඇත}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} හට දැනුම්දීම් #ක් ඇත}one{{app_name} හට දැනුම්දීම් #ක් ඇත}other{{app_name} හට දැනුම්දීම් #ක් ඇත}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"%2$d හි %1$d පිටුව"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"මුල් පිටු තිරය %2$d හි %1$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"නව මුල් පිටුව"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"ෆෝල්ඩර: <xliff:g id="NAME">%1$s</xliff:g>, අයිතම <xliff:g id="SIZE">%2$d</xliff:g>ක් හෝ වැඩි ගණනක්"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"වෝල්පේපර"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"වෝල්පේපරය සහ මෝස්තරය"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"මුල් තිරය සංස්කරණය කරන්න"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"නිවසේ සැකසීම්"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"ඔබගේ පරිපාලක විසින් අබල කරන ලදී"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"මුල් පිටු තිරය කරකැවීමට ඉඩ දෙන්න"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"මුල් තිරය කරකැවීමට ඉඩ දෙන්න"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"දුරකථනය කරකවන විට"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"දැනුම්දීම් තිත්"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"ක්‍රියාත්මකයි"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"දැනුම්දීම් තිත් පෙන්වීමට, <xliff:g id="NAME">%1$s</xliff:g> සඳහා යෙදුම් දැනුම්දීම් සබල කරන්න"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"සැකසීම් වෙනස් කරන්න"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"දැනුම්දීම් තිත් පෙන්වන්න"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"මුල් තිරයට යෙදුම් අයිකන එක් කරන්න"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"සංවර්ධක විකල්ප"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"මුල් තිරයට යෙදුම් නිරූපක එක් කරන්න"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"නව යෙදුම් සඳහා"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"නොදනී"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"ඉවත් කරන්න"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> ස්ථාපනය කරමින්, <xliff:g id="PROGRESS">%2$s</xliff:g> සම්පූර්ණයි"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> බාගත කරමින්, <xliff:g id="PROGRESS">%2$s</xliff:g> සම්පූර්ණයි"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> ස්ථාපනය කිරීමට බලා සිටිමින්"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"යෙදුම් යාවත්කාලීනයක් අවශ්‍යයි"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"මෙම නිරූපකය සඳහා යෙදුම යාවත්කාලීන කර නැත. ඔබට මෙම කෙටි මඟ යළි සබල කිරීමට හෝ නිරූපකය ඉවත් කිරීමට හස්තීයව යාවත්කාලීන කළ හැකිය."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"යාවත්කාලීන කරන්න"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"ඉවත් කරන්න"</string>
     <string name="widgets_list" msgid="796804551140113767">"විජට් ලැයිස්තුව"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"විජට් ලැයිස්තුව වසා ඇත"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"මුල් තිරය වෙත එක් කරන්න"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"මුල් තිරය වෙත එක් කරන්න"</string>
     <string name="action_move_here" msgid="2170188780612570250">"මෙතනට අයිතමය ගෙන එන්න"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"අයිතමය මුල් තිරය වෙත එකතු කරන ලදි"</string>
     <string name="item_removed" msgid="851119963877842327">"අයිතමය ඉවත් කරන ලදි"</string>
     <string name="undo" msgid="4151576204245173321">"අස් කරන්න"</string>
     <string name="action_move" msgid="4339390619886385032">"අයිතමය ගෙනයන්න"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"පේළිය <xliff:g id="NUMBER_0">%1$s</xliff:g> තීරුව <xliff:g id="NUMBER_1">%2$s</xliff:g> වෙත ගෙන යන්න"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g> තුළ <xliff:g id="NUMBER_0">%1$s</xliff:g> තීරුවේ<xliff:g id="NUMBER_1">%2$s</xliff:g> පේළියට යන්න"</string>
     <string name="move_to_position" msgid="6750008980455459790">"<xliff:g id="NUMBER">%1$s</xliff:g> ස්ථානය වෙත ගෙන යන්න"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"ප්‍රියතම ස්ථානය <xliff:g id="NUMBER">%1$s</xliff:g> වෙත ගෙන යන්න"</string>
     <string name="item_moved" msgid="4606538322571412879">"අයිතමය ගෙන යන ලදි"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"අයිතමය ෆෝඩරය වෙතට එක් කරන ලදි"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"මේ සමග ෆෝල්ඩරය සාදන්න: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"ෆෝල්ඩරය සාදන ලදි"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"මුල් තිරය වෙත ගෙන යන්න"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"මුල් තිරය වෙත ගෙන යන්න"</string>
     <string name="action_resize" msgid="1802976324781771067">"නැවත ප්‍රමාණගත කිරීම"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"පළල වැඩි කරන්න"</string>
     <string name="action_increase_height" msgid="459390020612501122">"උස වැඩි කරන්න"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"කාර්යාල යෙදුම්වලට ලාංඡන යොදා ඇති අතර ඔබගේ IT පරිපාලකට දෘශ්‍යමාන වේ"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"තේරුණා"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"කාර්යාල යෙදුම් විරාම කර ඇත"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"ඔබට ඔබේ කාර්යාල යෙදුම්වලින් දැනුම්දීම් නොලැබෙනු ඇත"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"ඔබගේ කාර්යාල යෙදුම්වලට ඔබට දැනුම්දීම් එවීමට, ඔබගේ බැටරිය භාවිත කිරීමට හෝ ඔබගේ ස්ථානයට ප්‍රවේශ වීමට නොහැකිය"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"කාර්යාල යෙදුම් ක්‍රියාවිරහිතයි. ඔබගේ කාර්යාල යෙදුම්වලට ඔබට දැනුම්දීම් එවීමට, ඔබගේ බැටරිය භාවිත කිරීමට හෝ ඔබගේ ස්ථානයට ප්‍රවේශ වීමට නොහැකිය"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"ඔබට ඔබේ කාර්යාල යෙදුම්වලින් දුරකථන ඇමතුම්, පෙළ පණිවිඩ, හෝ දැනුම්දීම් නොලැබෙනු ඇත"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"කාර්යාල යෙදුම්වලට ලාංඡන යොදා ඇති අතර ඔබගේ IT පරිපාලකට දෘශ්‍යමාන වේ"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"තේරුණා"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"කාර්යාල යෙදුම් ක්‍රියාවිරහිත කරන්න"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"කාර්යාල යෙදුම් ක්‍රියාත්මක කරන්න"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"කාර්යාල යෙදුම් විරාම කරන්න"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"විරාම නොකරන්න"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"පෙරහන"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"ඔබගේ දුරකථනය සොයන්න"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ඔබගේ ටැබ්ලටය සොයන්න"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"අසාර්ථකයි: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 3f212dc..2028c35 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Skratky nie sú k dispozícii"</string>
     <string name="home_screen" msgid="5629429142036709174">"Domov"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Rozdeliť obrazovku"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Rozdeliť hore"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Rozdeliť vľavo"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Rozdeliť vpravo"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Informácie o aplikácii pre %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Uložiť pár aplikácií"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Pridržaním presuňte miniaplikáciu."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dvojitým klepnutím a pridržaním presuňte miniaplikáciu alebo použite vlastné akcie."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"šírka %1$d, výška %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Miniaplikácia <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Po pridržaní môžete miniaplikáciu posúvať po ploche"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Pridať na plochu"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Pridržaním môžete miniaplikáciu posúvať po ploche"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Pridať na plochu"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Na plochu bola pridaná miniaplikácia <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Návrhy"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# miniaplikácia}few{# miniaplikácie}many{# widgets}other{# miniaplikácií}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# odkaz}few{# odkazy}many{# shortcuts}other{# odkazov}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Osobné"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Práca"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Konverzácie"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Zapisovanie poznámok"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Užitočné informácie poruke"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Ak chcete získavať informácie bez otvárania aplikácií, môžete si pridať miniaplikácie na plochu"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Ak chcete získavať informácie bez otvárania aplikácií, môžete si na plochu pridať miniaplikácie"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Klepnutím zmeňte nastavenia miniaplikácie"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Dobre"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Zmena nastavení miniaplikácie"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Hľadať aplikácie"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Načítavajú sa aplikácie…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Nenašli sa žiadne aplikácie zodpovedajúce dopytu <xliff:g id="QUERY">%1$s</xliff:g>"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Hľadať ďalšie aplikácie"</string>
     <string name="label_application" msgid="8531721983832654978">"Aplikácia"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Všetky aplikácie"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Upozornenia"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Pridržaním presuňte skratku."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dvojitým klepnutím a pridržaním presuňte odkaz alebo použite vlastné akcie."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Na tejto ploche nie je miesto"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Na tejto ploche nie je miesto"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Na paneli Obľúbené položky už nie je miesto"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Zoznam aplikácií"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Výsledky vyhľadávania"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Pripnúť predpoveď"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"inštalácia odkazov"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Povoľuje aplikácii pridať odkazy bez zásahu používateľa."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"čítanie nastavení a odkazov plochy"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Povoľuje aplikácii čítať nastavenia a odkazy na ploche."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"zápis nastavení a odkazov plochy"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Povoľuje aplikácii zmeniť nastavenia a odkazy na ploche."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"Aplikácia <xliff:g id="APP_NAME">%1$s</xliff:g> nemá povolenie uskutočňovať telefonické hovory"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"čítanie nastavení a odkazov plochy"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Povoľuje aplikácii čítať nastavenia a odkazy na ploche."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"zápis nastavení a odkazov plochy"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Povoľuje aplikácii meniť nastavenia a odkazy na ploche."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Miniaplikáciu sa nepodarilo načítať"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Nastavenia miniaplikácie"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Nastavenie dokončíte klepnutím"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Toto je systémová aplikácia a nedá sa odinštalovať."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Úprava názvu"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Aplikácia <xliff:g id="APP_NAME">%1$s</xliff:g> je deaktivovaná"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{Aplikácia {app_name} má # upozornenie}few{Aplikácia {app_name} má # upozornenia}many{{app_name} has # notifications}other{Aplikácia {app_name} má # upozornení}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{Aplikácia {app_name} má # upozornenie}few{Aplikácia {app_name} má # upozornenia}many{{app_name} has # notifications}other{Aplikácia {app_name} má # upozornení}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Stránka %1$d z %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Plocha %1$d z %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Nová stránka plochy"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Priečinok: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> alebo viac položiek"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Tapety"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Tapeta a štýl"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Upraviť plochu"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Nastavenia plochy"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Zakázané vaším správcom"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Povoliť otáčanie plochy"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Povoliť otáčanie plochy"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Pri otočení telefónu"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Bodky upozornení"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Zapnuté"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Ak chcete, aby sa zobrazovali bodky upozornení, zapnite upozornenia aplikácie <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Zmeniť nastavenia"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Zobrazovať bodky upozornení"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Pridať ikony aplikácií na plochu"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Pre vývojárov"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Pridávať ikony aplikácií na plochu"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Pri inštalácii novej aplikácie"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Neznáme"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Odstrániť"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Inštaluje sa <xliff:g id="NAME">%1$s</xliff:g>. Dokončené: <xliff:g id="PROGRESS">%2$s</xliff:g>."</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Sťahuje sa aplikácia <xliff:g id="NAME">%1$s</xliff:g>. Stiahnuté: <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"Aplikácia <xliff:g id="NAME">%1$s</xliff:g> čaká na inštaláciu"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Vyžaduje sa aktualizácia aplikácie"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Aplikácia, ktorú zastupuje táto ikona, nie je aktualizovaná. Môžete ju ručne aktualizovať, aby odkaz znova fungoval, prípadne môžete ikonu odstrániť."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Aktualizovať"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Odstrániť"</string>
     <string name="widgets_list" msgid="796804551140113767">"Zoznam miniaplikácií"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Zoznam miniaplikácií je zavretý"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Pridať na plochu"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Pridať na plochu"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Presunúť položku sem"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Položka bola pridaná na plochu"</string>
     <string name="item_removed" msgid="851119963877842327">"Položka bola odstránená"</string>
     <string name="undo" msgid="4151576204245173321">"Späť"</string>
     <string name="action_move" msgid="4339390619886385032">"Presunúť položku"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Presunúť do stĺpca <xliff:g id="NUMBER_1">%2$s</xliff:g> v riadku <xliff:g id="NUMBER_0">%1$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Premiestnite položku do <xliff:g id="NUMBER_0">%1$s</xliff:g>. riadka <xliff:g id="NUMBER_1">%2$s</xliff:g>. stĺpca na obrazovke <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Presunúť na <xliff:g id="NUMBER">%1$s</xliff:g>. miesto"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Presunúť na <xliff:g id="NUMBER">%1$s</xliff:g>. miesto v obľúbených položkách"</string>
     <string name="item_moved" msgid="4606538322571412879">"Položka bola presunutá"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Položka bola pridaná do priečinka"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Vytvoriť priečinok pomocou: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Priečinok bol vytvorený"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Presunúť na plochu"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Presunúť na plochu"</string>
     <string name="action_resize" msgid="1802976324781771067">"Zmeniť veľkosť"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Zvýšiť šírku"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Zväčšiť výšku"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Pracovné aplikácie majú odznak a zobrazujú sa správcovi IT"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Dobre"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Pracovné aplikácie sú pozastavené"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Nebudete dostávať upozornenia z pracovných aplikácií"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Pracovné aplikácie nemôžu posielať upozornenia ani používať batériu či polohu."</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Pracovné aplikácie sú vypnuté. Nemôžu posielať upozornenia ani používať batériu či polohu."</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Nebudete prijímať telefonické hovory ani dostávať textové správy či upozornenia z pracovných aplikácií"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Pracovné aplikácie majú odznak a zobrazujú sa správcovi IT"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Dobre"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Vypnúť pracovné aplikácie"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Zapnúť pracovné aplikácie"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Pozastaviť pracovné aplikácie"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Zrušiť pozastavenie"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtrujte"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Vyhľadávanie v telefóne"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Vyhľadávanie v tablete"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Zlyhalo: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 485a525..e6197c7 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Bližnjica ni na voljo"</string>
     <string name="home_screen" msgid="5629429142036709174">"Začetni zaslon"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Razdeljen zaslon"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Zgornja stran razdeljenega zaslona"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Leva stran razdeljenega zaslona"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Desna stran razdeljenega zaslona"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Podatki o aplikaciji za: %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Shrani par aplikacij"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Pridržite pripomoček, da ga premaknete."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Dvakrat se dotaknite pripomočka in ga pridržite, da ga premaknete, ali pa uporabite dejanja po meri."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"Širina %1$d, višina %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Pripomoček <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Pridržite pripomoček, če ga želite premikati po začetnem zaslonu."</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Dodaj na začetni zaslon"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Dotaknite se pripomočka in ga pridržite, če ga želite premikati po začetnem zaslonu."</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Dodaj na začetni zaslon"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Pripomoček »<xliff:g id="WIDGET_NAME">%1$s</xliff:g>« je dodan na začetni zaslon."</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Predlogi"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# pripomoček}one{# pripomoček}two{# pripomočka}few{# pripomočki}other{# pripomočkov}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# bližnjica}one{# bližnjica}two{# bližnjici}few{# bližnjice}other{# bližnjic}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Osebni"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Služba"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Pogovori"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Ustvarjanje zapiskov"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Koristne informacije na dosegu prstov"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Če si želite podatke ogledati brez odpiranja aplikacij, lahko na začetni zaslon dodate pripomočke."</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Če si želite podatke ogledati brez odpiranja aplikacij, lahko na začetni zaslon dodate pripomočke."</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Dotaknite se, če želite spremeniti nastavitve pripomočka."</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Razumem"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Spreminjanje nastavitev pripomočka"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Iskanje programov"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Nalaganje aplikacij …"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Ni aplikacij, ki bi ustrezale poizvedbi »<xliff:g id="QUERY">%1$s</xliff:g>«"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Iskanje več aplikacij"</string>
     <string name="label_application" msgid="8531721983832654978">"Aplikacija"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Vse aplikacije"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Obvestila"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Pridržite bližnjico, da jo premaknete."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Dvakrat se dotaknite bližnjice in jo pridržite, da jo premaknete, ali pa uporabite dejanja po meri."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Na tem začetnem zaslonu ni prostora."</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Na tem začetnem zaslonu ni prostora."</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"V vrstici za priljubljene ni več prostora"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Seznam aplikacij"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Rezultati iskanja"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Predvidevanje pripenjanja"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"namestitev bližnjic"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Aplikaciji dovoli dodajanje bližnjic brez posredovanja uporabnika."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"branje nastavitev in bližnjic na začetnem zaslonu"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Aplikaciji dovoli branje nastavitev in bližnjic na začetnem zaslonu."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"zapis nastavitev in bližnjic na začetnem zaslonu"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Aplikaciji dovoli spreminjanje nastavitev in bližnjic na začetnem zaslonu."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"Aplikaciji <xliff:g id="APP_NAME">%1$s</xliff:g> ni dovoljeno opravljanje klicev"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"branje nastavitev in bližnjic na začetnem zaslonu"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Aplikaciji dovoli branje nastavitev in bližnjic na začetnem zaslonu."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"zapisovanje nastavitev in bližnjic začetnega zaslona"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Aplikaciji dovoli spreminjanje nastavitev in bližnjic na začetnem zaslonu."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Pripomočka ni mogoče naložiti."</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Nastavitve pripomočka"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Dotaknite se, da dokončate postopek nastavitve."</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"To je sistemska aplikacija in je ni mogoče odstraniti."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Urejanje imena"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> je onemogočena"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} ima # obvestilo}one{{app_name} ima # obvestilo}two{{app_name} ima # obvestili}few{{app_name} ima # obvestila}other{{app_name} ima # obvestil}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} ima # obvestilo.}one{{app_name} ima # obvestilo.}two{{app_name} ima # obvestili.}few{{app_name} ima # obvestila.}other{{app_name} ima # obvestil.}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Stran %1$d od %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Začetni zaslon %1$d od %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Nova stran na začetnem zaslonu"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Mapa: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> ali več elementov"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Ozadja"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Zaslonsko ozadje in slog"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Urejanje začetnega zaslona"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Domače nastavitve"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Onemogočil skrbnik."</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Omogoči sukanje začetnega zaslona"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Dovoli sukanje začetnega zaslona"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Ko se telefon zasuka"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Obvestilne pike"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Vklopljeno"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Za prikaz obvestilnih pik vklopite obvestila aplikacije <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Spremeni nastavitve"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Pokaži obvestilne pike"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Dodaj ikone aplikacij na začetni zaslon"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Možnosti za razvijalce"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Dodaj ikone aplikacij na začetni zaslon"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Za nove aplikacije"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Neznano"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Odstrani"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> se namešča, dokončano: <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Prenašanje aplikacije <xliff:g id="NAME">%1$s</xliff:g>; preneseno <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"Aplikacija <xliff:g id="NAME">%1$s</xliff:g> čaka na namestitev"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Zahtevana je posodobitev aplikacije"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Aplikacija za to ikono ni posodobljena. Lahko jo ročno posodobite, da znova omogočite to bližnjico, ali pa odstranite ikono."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Posodobi"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Odstrani"</string>
     <string name="widgets_list" msgid="796804551140113767">"Seznam pripomočkov"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Seznam pripomočkov se je zaprl"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Dodajanje na začetni zaslon"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Dodajanje na začetni zaslon"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Premik elementa sem"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Element je bil dodan na začetni zaslon"</string>
-    <string name="item_removed" msgid="851119963877842327">"Element je bil odstranjen"</string>
+    <string name="item_removed" msgid="851119963877842327">"Element je bil odstranjen."</string>
     <string name="undo" msgid="4151576204245173321">"Razveljavi"</string>
     <string name="action_move" msgid="4339390619886385032">"Premik elementa"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Premik v <xliff:g id="NUMBER_0">%1$s</xliff:g>. vrstico <xliff:g id="NUMBER_1">%2$s</xliff:g>. stolpca"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Premik v vrstico <xliff:g id="NUMBER_0">%1$s</xliff:g> v stolpcu <xliff:g id="NUMBER_1">%2$s</xliff:g> na »<xliff:g id="STRING">%3$s</xliff:g>«"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Premk na mesto št. <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Premik na mesto priljubljenih št. <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Element je premaknjen"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Element je dodan v mapo"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Ustvarjanje mape s tem: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Mapa je ustvarjena"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Premik na začetni zaslon"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Premik na začetni zaslon"</string>
     <string name="action_resize" msgid="1802976324781771067">"Spreminjanje velikosti"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Povečanje širine"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Povečanje višine"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Delovne aplikacije so označene z značko in vidne skrbniku za IT."</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Razumem"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Delovne aplikacije so začasno zaustavljene"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Obvestil iz delovnih aplikacij ne boste prejemali."</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Delovne aplikacije ne smejo pošiljati obvestil, porabljati energije baterije ali dostopati do lokacije."</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Delovne aplikacije so izklopljene in ne smejo pošiljati obvestil, porabljati energije baterije ali dostopati do lokacije."</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Telefonskih klicev, sporočil SMS in obvestil iz delovnih aplikacij ne boste prejemali."</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Delovne aplikacije so označene z značko in vidne skrbniku za IT."</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"V redu"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Izklopi delovne aplikacije"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Vklopi delovne aplikacije"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Začasno zaustavi delovne aplikacije"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Znova aktiviraj"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtriranje"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Iskanje po telefonu"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Iskanje po tabličnem računalniku"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Ni uspelo: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 88ed4fa..c6b8e7c 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Shkurtorja nuk është e disponueshme"</string>
     <string name="home_screen" msgid="5629429142036709174">"Ekrani bazë"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Ekrani i ndarë"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Ndaj lart"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Ndaj majtas"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Ndaj djathtas"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Informacioni i aplikacionit për %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Ruaj çiftin e aplikacioneve"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Prek dhe mbaj shtypur një miniaplikacion për ta zhvendosur."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Trokit dy herë dhe mbaje shtypur një miniapliikacion për ta zhvendosur atë ose për të përdorur veprimet e personalizuara."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d i gjerë me %2$d i lartë"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> miniaplikacion"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Prek dhe mbaj të shtypur miniaplikacionin për ta lëvizur nëpër \"Ekranin bazë\""</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Shto në \"Ekranin bazë\""</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Prek dhe mbaj të shtypur miniaplikacionin për ta lëvizur atë nëpër ekranin bazë"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Shto në ekranin bazë"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Miniaplikacioni <xliff:g id="WIDGET_NAME">%1$s</xliff:g> u shtua në ekranin bazë"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Sugjerime"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# miniaplikacion}other{# miniaplikacione}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# shkurtore}other{# shkurtore}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personale"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Puna"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Bisedat"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Mbajtja e shënimeve"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Informacione të dobishme në majë të gishtave të tu"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Për të marrë informacione pa i hapur aplikacionet, mund të shtosh miniaplikacione në ekranin bazë"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Për të marrë informacione pa i hapur aplikacionet, mund të shtosh miniaplikacione në ekranin bazë"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Trokit për të ndryshuar cilësimet e miniaplikacionit"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"E kuptova"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Ndrysho cilësimet e miniaplikacionit"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Kërko për aplikacione"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Po ngarkon aplikacionet..."</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Nuk u gjet asnjë aplikacion që përputhet me \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Kërko për më shumë aplikacione"</string>
     <string name="label_application" msgid="8531721983832654978">"Aplikacioni"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Të gjitha aplikacionet"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Njoftimet"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Prek dhe mbaj shtypur një shkurtore për ta zhvendosur."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Trokit dy herë dhe mbaje shtypur një shkurtore për ta zhvendosur atë ose për të përdorur veprimet e personalizuara."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Nuk ka vend në këtë ekran bazë"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Nuk ka më hapësirë në këtë ekran bazë"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Nuk ka më hapësirë në tabakanë \"Të preferuarat\""</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Lista e aplikacioneve"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Rezultatet e kërkimit"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Gozhdo parashikimin"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"instalimi i shkurtoreve"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Lejon një aplikacion të shtojë shkurtore pa ndërhyrjen e përdoruesit."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"lexo cilësimet dhe shkurtoret e ekranit bazë"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Lejon aplikacionin të lexojë cilësimet dhe shkurtoret në ekranin bazë."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"shkruaj cilësimet dhe shkurtoret e ekranit bazë"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Lejon aplikacionin të ndryshojë cilësimet dhe shkurtoret në ekranin bazë."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> nuk lejohet të kryejë telefonata"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"lexo cilësimet dhe shkurtoret e ekranit bazë"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Lejon aplikacionin që të lexojë cilësimet dhe shkurtoret në ekranin bazë."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"shkruaj cilësimet dhe shkurtoret e ekranit bazë"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Lejon aplikacionin që të ndryshojë cilësimet dhe shkurtoret në ekranin bazë."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"S\'mund të ngarkohet miniaplikacioni"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Cilësimet e miniaplikacionit"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Trokit për të përfunduar konfigurimin"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Ky është aplikacion sistemi dhe nuk mund të çinstalohet."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Redakto emrin"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> u çaktivizua"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} ka # njoftim}other{{app_name} ka # njoftime}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} ka # njoftim}other{{app_name} ka # njoftime}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Faqja: %1$d nga gjithsej %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Ekrani bazë: %1$d nga gjithsej %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Faqja e ekranit të ri kryesor"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Dosja: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> ose më shumë artikuj"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Imazhet e sfondit"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Imazhi i sfondit dhe stili"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Modifiko ekranin bazë"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Cilësimet e ekranit bazë"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Çaktivizuar nga administratori"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Lejo rrotullimin e ekranit bazë"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Lejo rrotullimin e ekranit bazë"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Kur telefoni rrotullohet"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Pikat e njoftimeve"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Aktiv"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Për të shfaqur \"Pikat e njoftimeve\", aktivizo njoftimet e aplikacionit për <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Ndrysho cilësimet"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Shfaq pikat e njoftimeve"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Shto ikona aplikacionesh në ekranin bazë"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Opsionet e zhvilluesit‏"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Shto ikona aplikacionesh në ekranin bazë"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Për aplikacionet e reja"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"I panjohur"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Hiq"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> po instalohet, <xliff:g id="PROGRESS">%2$s</xliff:g> i përfunduar"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> po shkarkohet, <xliff:g id="PROGRESS">%2$s</xliff:g> të përfunduara"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> po pret të instalohet"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Kërkohet përditësimi i aplikacionit"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Aplikacioni për këtë ikonë nuk është përditësuar. Mund ta përditësosh manualisht për të riaktivizuar këtë shkurtore ose hiq ikonën."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Përditëso"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Hiq"</string>
     <string name="widgets_list" msgid="796804551140113767">"Lista e miniaplikacioneve"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Lista e miniaplikacioneve u mbyll"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Shto në Ekranin bazë"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Shto në ekranin bazë"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Zhvendose artikullin këtu"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Artikulli u shtua tek ekrani bazë"</string>
     <string name="item_removed" msgid="851119963877842327">"Artikulli u hoq"</string>
     <string name="undo" msgid="4151576204245173321">"Zhbëj"</string>
     <string name="action_move" msgid="4339390619886385032">"Zhvendose artikullin"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Zhvendos te rreshti <xliff:g id="NUMBER_0">%1$s</xliff:g>, kolona <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Kalo te rreshti <xliff:g id="NUMBER_0">%1$s</xliff:g> kolona <xliff:g id="NUMBER_1">%2$s</xliff:g> në <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Zhvendos te pozicioni <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Zhvendos te pozicioni <xliff:g id="NUMBER">%1$s</xliff:g> i preferencave"</string>
     <string name="item_moved" msgid="4606538322571412879">"Artikulli u zhvendos"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Artikulli u shtua te dosja"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Krijo një dosje me: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Dosja u krijua"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Zhvendose në Ekranin bazë"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Kaloje në ekranin bazë"</string>
     <string name="action_resize" msgid="1802976324781771067">"Ndrysho madhësinë"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Rrit gjerësinë"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Rrit lartësinë"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Aplikacionet e punës janë të shënuara dhe të dukshme për administratorin e teknologjisë së informacionit"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"E kuptova"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Aplikacionet e punës janë vendosur në pauzë"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Nuk do të marrësh njoftime nga aplikacionet e punës"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Aplikacionet e tua të punës nuk mund të të dërgojnë njoftime, të përdorin baterinë tënde apo të kenë qasje në vendndodhjen tënde"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Aplikacionet e punës janë joaktive. Aplikacionet e tua të punës nuk mund të të dërgojnë njoftime, të përdorin baterinë tënde apo të kenë qasje në vendndodhjen tënde"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Nuk do të marrësh telefonata, mesazhe me tekst ose njoftime nga aplikacionet e punës"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Aplikacionet e punës janë të shënuara dhe të dukshme për administratorin e teknologjisë së informacionit"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"E kuptova"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Çaktivizo aplikacionet e punës"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Aktivizo aplikacionet e punës"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Vendos në pauzë aplikacionet e punës"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Hiq nga pauza"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtro"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Kërko në telefonin tënd"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Kërko në tabletin tënd"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Dështoi: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index e719db6..a4d7795 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Пречица није доступна"</string>
     <string name="home_screen" msgid="5629429142036709174">"Почетни екран"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Подељени екран"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Подели у врху"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Подели лево"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Подели десно"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Информације о апликацији за: %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Сачувај пар апликација"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Додирните и задржите ради померања виџета."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Двапут додирните и задржите да бисте померали виџет или користите прилагођене радње."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d×%2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"ширина од %1$d и висина од %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> виџет"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Додирните и задржите виџет да бисте га померали по почетном екрану"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Додај на почетни екран"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Додирните и задржите виџет да бисте га померали по почетном екрану"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Додај на почетни екран"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Додали сте виџет <xliff:g id="WIDGET_NAME">%1$s</xliff:g> на почетни екран"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Предлози"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# виџет}one{# виџет}few{# виџета}other{# виџета}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# пречица}one{# пречица}few{# пречице}other{# пречица}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -47,25 +46,25 @@
     <string name="widgets_full_sheet_search_bar_hint" msgid="8484659090860596457">"Претражите"</string>
     <string name="widgets_full_sheet_cancel_button_description" msgid="5766167035728653605">"Обришите текст из оквира за претрагу"</string>
     <string name="no_widgets_available" msgid="4337693382501046170">"Виџети и пречице нису доступни"</string>
-    <string name="no_search_results" msgid="3787956167293097509">"Није пронађен ниједан виџет или пречица"</string>
+    <string name="no_search_results" msgid="3787956167293097509">"Није пронађен ниједан виџет ни пречица"</string>
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Лично"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Посао"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Конверзације"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Прављење бележака"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Корисне информације надохват руке"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Да бисте пронашли информације без отварања апликација, можете да додате виџете на почетни екран"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Да бисте пронашли информације без отварања апликација, можете да додате виџете на почетни екран"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Додирните да бисте променили подешавања виџета"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Важи"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Промените подешавања виџета"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Претражите апликације"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Апликације се учитавају…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Није пронађена ниједна апликација за „<xliff:g id="QUERY">%1$s</xliff:g>“"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Претражи још апликација"</string>
     <string name="label_application" msgid="8531721983832654978">"Апликација"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Све апликације"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Обавештења"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Додирните и задржите ради померања пречице."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Двапут додирните и задржите да бисте померали пречицу или користите прилагођене радње."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Нема простора на овом почетном екрану"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Нема места на овом почетном екрану"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Нема више простора на траци Омиљено"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Листа апликација"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Резултати претраге"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Закачи предвиђање"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"инсталирање пречица"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Дозвољава апликацији да додаје пречице без интервенције корисника."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"читање подешавања и пречица на почетном екрану"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Дозвољава апликацији да чита подешавања и пречице на почетном екрану."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"уписивање подешавања и пречица на почетном екрану"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Дозвољава апликацији да мења подешавања и пречице на почетном екрану."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> нема дозволу за упућивање телефонских позива"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"читање подешавања и пречица на почетном екрану"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Дозвољава апликацији да чита подешавања и пречице на почетном екрану."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"уписивање подешавања и пречица на почетном екрану"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Дозвољава апликацији да мења подешавања и пречице на почетном екрану."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Учитавање виџета није успело"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Подешавања виџета"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Додирните да бисте довршили подешавање"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Ово је системска апликација и не може да се деинсталира."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Измените назив"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Апликација <xliff:g id="APP_NAME">%1$s</xliff:g> је онемогућена"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name}, има # обавештење}one{{app_name}, има # обавештење}few{{app_name}, има # обавештења}other{{app_name}, има # обавештења}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name}, има # обавештење}one{{app_name}, има # обавештење}few{{app_name}, има # обавештења}other{{app_name}, има # обавештења}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"%1$d. страница од %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"%1$d. почетни екран од %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Нова страница почетног екрана"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Фолдер: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> или више ставки"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Позадине"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Позадина и стил"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Измени почетни екран"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Подешавања почетног екрана"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Администратор је онемогућио"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Дозволи ротацију почетног екрана"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Дозволи ротацију почетног екрана"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Када се телефон ротира"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Тачке за обавештења"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Укључено"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Да бисте приказали тачке за обавештења, укључите обавештења за апликацију <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Промените подешавања"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Приказуј тачке за обавештења"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Додај иконе апликација на почетни екран"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Опције за програмера"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Додај иконе апликација на почетни екран"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"За нове апликације"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Непознато"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Уклони"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> се инсталира, <xliff:g id="PROGRESS">%2$s</xliff:g> готово"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> се преузима, завршено је <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> чека на инсталирање"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Треба да ажурирате апликацију"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Апликација за ову икону није ажурирана. Можете да је ручно ажурирате да бисте поново омогућили ову пречицу или уклоните икону."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Ажурирај"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Уклони"</string>
     <string name="widgets_list" msgid="796804551140113767">"Листа виџета"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Листа виџета је затворена"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Додајте на почетни екран"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Додајте на почетни екран"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Премести ставку овде"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Ставка је додата на почетни екран"</string>
     <string name="item_removed" msgid="851119963877842327">"Ставка је уклоњена"</string>
     <string name="undo" msgid="4151576204245173321">"Опозови"</string>
     <string name="action_move" msgid="4339390619886385032">"Премести ставку"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Премести у ред <xliff:g id="NUMBER_0">%1$s</xliff:g> и колону <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Преместите у ред <xliff:g id="NUMBER_0">%1$s</xliff:g> колону <xliff:g id="NUMBER_1">%2$s</xliff:g> на <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Премести на <xliff:g id="NUMBER">%1$s</xliff:g>. позицију"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Премести на <xliff:g id="NUMBER">%1$s</xliff:g>. позицију у омиљеним"</string>
     <string name="item_moved" msgid="4606538322571412879">"Ставка је премештена"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Ставка је додата у фолдер"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Направите фолдер са: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Фолдер је направљен"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Премести на почетни екран"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Преместите на почетни екран"</string>
     <string name="action_resize" msgid="1802976324781771067">"Промени величину"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Повећај ширину"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Повећај висину"</string>
@@ -153,18 +157,21 @@
     <string name="action_dismiss_notification" msgid="5909461085055959187">"Одбаци"</string>
     <string name="accessibility_close" msgid="2277148124685870734">"Затвори"</string>
     <string name="notification_dismissed" msgid="6002233469409822874">"Обавештење је одбачено"</string>
-    <string name="all_apps_personal_tab" msgid="4190252696685155002">"Личне"</string>
-    <string name="all_apps_work_tab" msgid="4884822796154055118">"Пословне"</string>
+    <string name="all_apps_personal_tab" msgid="4190252696685155002">"Лично"</string>
+    <string name="all_apps_work_tab" msgid="4884822796154055118">"Посао"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"Пословни профил"</string>
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Пословне апликације су означене значком и ИТ администратор може да их види"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Важи"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Пословне апликације су паузиране"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Нећете добијати обавештења из пословних апликација"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Пословне апликације не могу да вам шаљу обавештења, користе батерију нити приступају локацији"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Пословне апликације су искључене. Пословне апликације не могу да вам шаљу обавештења, користе батерију нити приступају локацији"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Нећете примати телефонске позиве, текстуалне поруке нити обавештења из пословних апликација"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Пословне апликације су означене значком и ИТ администратор може да их види"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Важи"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Искључи пословне апликације"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Укључи пословне апликације"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Паузирај пословне апликације"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Поново активирај"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Филтер"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Претражите телефон"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Претражите таблет"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Није успело: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index e590ec9..cd946e7 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Genvägen är inte tillgänglig"</string>
     <string name="home_screen" msgid="5629429142036709174">"Startskärm"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Delad skärm"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Upptill på delad skärm"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Till vänster på delad skärm"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Till höger på delad skärm"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Appinformation för %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Spara appar som ska användas tillsammans"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Tryck länge för att flytta en widget."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Tryck snabbt två gånger och håll kvar för att flytta en widget eller använda anpassade åtgärder."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d bred gånger %2$d hög"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Widget för <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Tryck länge på widgeten om du vill flytta den på startskärmen"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Lägg till på startskärmen"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Tryck länge på widgeten om du vill flytta den på startskärmen"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Lägg till på startskärmen"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Widget för <xliff:g id="WIDGET_NAME">%1$s</xliff:g> har lagts till på startskärmen"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Förslag"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}other{# widgetar}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# genväg}other{# genvägar}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Privata"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Arbete"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Konversationer"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Anteckna"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Användbar information nära till hands"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Om du vill ha information utan att öppna appar kan du lägga till widgetar på startskärmen"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Om du vill ha information utan att öppna appar kan du lägga till widgetar på startskärmen"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Tryck för att ändra inställningarna för widgeten"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Ändra inställningarna för widgeten"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Sök efter appar"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Läser in appar …"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Inga appar som matchar <xliff:g id="QUERY">%1$s</xliff:g> hittades"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Sök efter fler appar"</string>
     <string name="label_application" msgid="8531721983832654978">"App"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Alla appar"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Aviseringar"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Tryck länge för att flytta en genväg."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Tryck snabbt två gånger och håll kvar för att flytta en genväg eller använda anpassade åtgärder."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Det finns inte plats på den här startskärmen."</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Det finns inte plats på den här startskärmen"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Favoritfältet är fullt"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Applista"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Sökresultat"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Fäst förslag"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"installera genvägar"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Tillåter att en app lägger till genvägar utan åtgärd från användaren."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"läsa inställningar och genvägar för startsidan"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Tillåter att appen läser inställningar och genvägar på startsidan."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"skriva inställningar och genvägar för startsidan"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Tillåter att appen ändrar inställningar och genvägar på startsidan."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> har inte behörighet att ringa samtal"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"läsa inställningar och genvägar på startskärmen"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Tillåter att appen läser inställningar och genvägar på startskärmen."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"skriva inställningar och genvägar på startskärmen"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Tillåter att appen ändrar inställningar och genvägar på startskärmen."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Det gick inte att läsa in widgeten"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Widgetinställningar"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Tryck för att slutföra konfigureringen"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Det här är en systemapp som inte kan avinstalleras."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Redigera namn"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> har inaktiverats"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} har # avisering}other{{app_name} har # aviseringar}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} har # avisering}other{{app_name} har # aviseringar}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Sidan %1$d av %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Startskärmen %1$d av %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Ny sida på startskärmen"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Mapp: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> eller fler objekt"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Bakgrunder"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Bakgrund och utseende"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Redigera startskärm"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Startinställningar"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Inaktiverat av administratören"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Tillåt rotering av startskärmen"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Tillåt rotering av startskärmen"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"När mobilen vrids"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Aviseringsprickar"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"På"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Aktivera appaviseringar för <xliff:g id="NAME">%1$s</xliff:g> om du vill att aviseringsprickar ska visas"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Ändra inställningar"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Visa aviseringsprickar"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Lägg till appikoner på startskärmen"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Utvecklaralternativ"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Lägg till appikoner på startskärmen"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"För nya appar"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Okänt"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Ta bort"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> installeras. <xliff:g id="PROGRESS">%2$s</xliff:g> har slutförts"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> laddas ned, <xliff:g id="PROGRESS">%2$s</xliff:g> klart"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> väntar på installation"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Du måste uppdatera appen"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Appen för den här ikonen har inte uppdaterats. Du kan uppdatera den manuellt för att återaktivera genvägen eller ta bort ikonen."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Uppdatera"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Ta bort"</string>
     <string name="widgets_list" msgid="796804551140113767">"Widgetlista"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Widgetslistan har stängts"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Lägg till på startskärmen"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Lägg till på startskärmen"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Flytta objekt hit"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Objektet har lagts till på startskärmen"</string>
     <string name="item_removed" msgid="851119963877842327">"Objektet har tagits bort"</string>
     <string name="undo" msgid="4151576204245173321">"Ångra"</string>
     <string name="action_move" msgid="4339390619886385032">"Flytta objekt"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Flytta till rad <xliff:g id="NUMBER_0">%1$s</xliff:g>, kolumn <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Flytta till rad <xliff:g id="NUMBER_0">%1$s</xliff:g> kolumn <xliff:g id="NUMBER_1">%2$s</xliff:g> i <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Flytta till plats <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Flytta till favoritplats <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Objektet har flyttats"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Objektet har lagts till i mappen"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Skapa mapp med: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Mappen har skapats"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Flytta till startskärmen"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Flytta till startskärmen"</string>
     <string name="action_resize" msgid="1802976324781771067">"Ändra storlek"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Öka bredden"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Öka höjden"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Jobbappar är märkta och synliga för IT-administratören"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Jobbappar har pausats"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Du får inga aviseringar från dina jobbappar"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Dina jobbappar kan inte skicka aviseringar, använda batteriet eller komma åt din plats"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Jobbappar är inaktiverade. Dina jobbappar kan inte skicka aviseringar, använda batteriet eller komma åt din plats"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Du får inga telefonsamtal, sms eller aviseringar från dina jobbappar"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Jobbappar är märkta och synliga för IT-administratören"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Inaktivera jobbappar"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Aktivera jobbappar"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Pausa jobbappar"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Återuppta"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filter"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Sök på telefonen"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Sök på surfplattan"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Misslyckades: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index fa58703..2686f8a 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Hakuna njia ya mkato"</string>
     <string name="home_screen" msgid="5629429142036709174">"Skrini ya kwanza"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Gawa skrini"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Gawanya sehemu ya juu"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Gawanya sehemu ya kushoto"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Gawanya sehemu ya kulia"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Maelezo ya programu ya %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Hifadhi jozi ya programu"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Gusa na ushikilie ili usogeze wijeti."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Gusa mara mbili na ushikilie ili usogeze wijeti au utumie vitendo maalum."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"Upana wa %1$d na kimo cha %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Wijeti ya <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Gusa na ushikilie wijeti ili uisogeze kwenye Skrini ya kwanza"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Weka kwenye Skrini ya kwanza"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Gusa na ushikilie wijeti ili uisogeze kwenye skrini ya kwanza"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Weka kwenye skrini ya kwanza"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Umeongeza wijeti ya <xliff:g id="WIDGET_NAME">%1$s</xliff:g> kwenye skrini ya kwanza"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Mapendekezo"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{Wijeti #}other{Wijeti #}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{Njia # ya mkato}other{Njia # za mkato}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,46 +50,45 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Binafsi"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Kazini"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Mazungumzo"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Kuandika madokezo"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Maelezo muhimu, popote ulipo"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Ili upate maelezo bila kufungua programu, unaweza kuweka wijeti kwenye Skrini yako ya kwanza"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Ili upate maelezo bila kufungua programu, unaweza kuweka wijeti kwenye skrini yako ya kwanza"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Gusa ili ubadilishe mipangilio ya wijeti"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Nimeelewa"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Badilisha mipangilio ya wijeti"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Tafuta programu"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Inapakia programu..."</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Haikupata programu zozote zinazolingana na \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Tafuta programu zaidi"</string>
     <string name="label_application" msgid="8531721983832654978">"Programu"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Programu zote"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Arifa"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Gusa na ushikilie ili usogeze njia ya mkato."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Gusa mara mbili na ushikilie ili usogeze njia ya mkato au utumie vitendo maalum."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Hakuna nafasi kwenye Skrini hii ya kwanza"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Hakuna nafasi kwenye skrini hii ya kwanza"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Hakuna nafasi zaidi katika treya ya Vipendeleo"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Orodha ya programu"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Matokeo ya utafutaji"</string>
     <string name="all_apps_button_personal_label" msgid="1315764287305224468">"Orodha ya programu za binafsi"</string>
     <string name="all_apps_button_work_label" msgid="7270707118948892488">"Orodha ya programu za kazini"</string>
     <string name="remove_drop_target_label" msgid="7812859488053230776">"Ondoa"</string>
-    <string name="uninstall_drop_target_label" msgid="4722034217958379417">"Sakinua"</string>
+    <string name="uninstall_drop_target_label" msgid="4722034217958379417">"Ondoa"</string>
     <string name="app_info_drop_target_label" msgid="692894985365717661">"Maelezo ya programu"</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"Sakinisha"</string>
     <string name="dismiss_prediction_label" msgid="3357562989568808658">"Isipendekeze programu"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"Bandika Utabiri"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"kuweka njia za mkato"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Huruhusu programu kuongeza njia za mkato bila mtumiaji kuingilia kati."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"soma mipangilio ya Mwanzo na njia za mkato"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Huruhusu programu kusoma mipangilio na njia za mikato zilizo katika skirini ya Mwanzo."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"andika mipangilio ya skrini ya Mwanzo na njia za mkato"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Huruhusu programu kubadilisha mipangilio na njia za mkato katika skrini ya Mwanzo."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> hairuhusiwi kupiga simu"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"kusoma mipangilio ya skrini ya kwanza na njia za mkato"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Huruhusu programu kusoma mipangilio na njia za mikato katika skrini ya kwanza."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"kuandika mipangilio ya skrini ya kwanza na njia za mkato"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Huruhusu programu kubadilisha mipangilio na njia za mkato katika skrini ya kwanza."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Imeshindwa kupakia wijeti"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Mipangilio ya wijeti"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Gusa ili umalize kuweka mipangilio"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Hii ni programu ya mfumo na haiwezi kuondolewa."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Badilisha Jina"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> imezimwa"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} ina arifa #}other{{app_name} ina arifa #}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} ina arifa #}other{{app_name} ina arifa #}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Ukurasa%1$d wa %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Skrini ya mwanzo %1$d ya %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Ukurasa mpya wa skrini ya kwanza"</string>
@@ -102,10 +100,11 @@
     <string name="folder_name_format_exact" msgid="8626242716117004803">"Folda: <xliff:g id="NAME">%1$s</xliff:g>, vipengee <xliff:g id="SIZE">%2$d</xliff:g>"</string>
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Folda: <xliff:g id="NAME">%1$s</xliff:g>, vipengee <xliff:g id="SIZE">%2$d</xliff:g> au zaidi"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Mandhari"</string>
-    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Mandhari na muundo"</string>
+    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Mandhari na mtindo"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Badilisha Skrini ya Kwanza"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Mipangilio ya mwanzo"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Imezimwa na msimamizi wako"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Ruhusu kuzungusha skrini ya Kwanza"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Ruhusu kipengele cha kuzungusha skrini ya kwanza"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Simu inapozungushwa"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Vitone vya arifa"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Imewashwa"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Ili kuonyesha Vitone vya Arifa, washa kipengele cha arifa za programu katika <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Badilisha mipangilio"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Onyesha vitone vya arifa"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Weka aikoni za programu kwenye Skrini ya kwanza"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Chaguo za Wasanidi Programu"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Weka aikoni za programu kwenye skrini ya kwanza"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Kwa ajili ya programu mpya"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Yasiyojulikana"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Ondoa"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Inasakinisha <xliff:g id="NAME">%1$s</xliff:g>, imekamilika <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> inapakuliwa, <xliff:g id="PROGRESS">%2$s</xliff:g> imekamilika"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> inasubiri kusakinisha"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Unahitaji kusasisha programu"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Programu ya aikoni hii haijasasishwa. Unaweza kusasisha mwenyewe ili uruhusu upya njia hii ya mkato au uondoe aikoni."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Sasisha"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Ondoa"</string>
     <string name="widgets_list" msgid="796804551140113767">"Orodha ya wijeti"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Orodha ya wijeti imefungwa"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Weka kwenye Skrini ya Kwanza"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Weka kwenye skrini ya kwanza"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Hamishia kipengee hapa"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Kipengee kimeongezwa kwenye skrini ya kwanza"</string>
     <string name="item_removed" msgid="851119963877842327">"Kipengee kimeondolewa"</string>
     <string name="undo" msgid="4151576204245173321">"Tendua"</string>
     <string name="action_move" msgid="4339390619886385032">"Hamisha kipengee"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Hamishia safu mlalo <xliff:g id="NUMBER_0">%1$s</xliff:g> safu wima <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Hamishia safu mlalo <xliff:g id="NUMBER_0">%1$s</xliff:g> safu wima <xliff:g id="NUMBER_1">%2$s</xliff:g> kwenye <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Hamishia nafasi ya <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Hamishia nafasi inayopendwa ya <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Kipengee kimesogezwa"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Kipengee kimeongezwa kwenye folda"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Unda folda ukitumia: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Folda imeundwa"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Hamishia Skrini ya kwanza"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Hamishia kwenye skrini ya kwanza"</string>
     <string name="action_resize" msgid="1802976324781771067">"Badilisha ukubwa"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Ongeza upana"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Ongeza urefu"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Programu za kazini zina beji na msimamizi wako wa TEHAMA anaziona"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Nimeelewa"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Programu za kazini zimesimamishwa"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Hutaweza kupokea arifa kutoka kwenye programu zako za kazini"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Programu zako za kazini haziwezi kukutumia arifa, kutumia betri yako au kufikia maelezo ya mahali ulipo"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Programu za kazini zimezimwa. Programu zako za kazini haziwezi kukutumia arifa, kutumia betri yako au kufikia maelezo ya mahali ulipo"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Hutaweza kupokea simu, ujumbe wa maandishi au arifa kutoka kwenye programu zako za kazini"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Programu za kazini zina beji na msimamizi wako wa TEHAMA anaziona"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Nimeelewa"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Zima programu za kazini"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Washa programu za kazini"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Simamisha programu za kazini"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Acha kusimamisha"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Kichujio"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Tafuta kwenye simu yako"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Tafuta kwenye kompyuta kibao yako"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Hitilafu: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-sw600dp-land/dimens.xml b/res/values-sw600dp-land/dimens.xml
index 63970cd..92f6881 100644
--- a/res/values-sw600dp-land/dimens.xml
+++ b/res/values-sw600dp-land/dimens.xml
@@ -30,6 +30,4 @@
     <dimen name="dynamic_grid_edge_margin">11.33dp</dimen>
     <dimen name="cell_layout_padding">11.33dp</dimen>
 
-<!-- AllApps -->
-    <dimen name="all_apps_bottom_sheet_horizontal_padding">52dp</dimen>
 </resources>
diff --git a/res/values-sw600dp/config.xml b/res/values-sw600dp/config.xml
index 072b92d..e718d9c 100644
--- a/res/values-sw600dp/config.xml
+++ b/res/values-sw600dp/config.xml
@@ -18,4 +18,11 @@
     <!-- The duration of the PagedView page snap animation -->
     <integer name="config_pageSnapAnimationDuration">550</integer>
 
+    <!-- The duration of the Widget picker opening and closing animation -->
+    <integer name="config_bottomSheetOpenDuration">500</integer>
+    <integer name="config_bottomSheetCloseDuration">500</integer>
+
+    <!-- The duration of the AllApps opening and closing animation -->
+    <integer name="config_allAppsOpenDuration">@integer/config_bottomSheetOpenDuration</integer>
+    <integer name="config_allAppsCloseDuration">@integer/config_bottomSheetCloseDuration</integer>
 </resources>
diff --git a/res/values-sw600dp/dimens.xml b/res/values-sw600dp/dimens.xml
index d69e777..cc1f09e 100644
--- a/res/values-sw600dp/dimens.xml
+++ b/res/values-sw600dp/dimens.xml
@@ -26,7 +26,6 @@
 
 <!-- AllApps -->
     <dimen name="all_apps_search_bar_content_overlap">0dp</dimen>
-    <dimen name="all_apps_bottom_sheet_horizontal_padding">48dp</dimen>
 
 <!-- Fast scroll -->
     <dimen name="fastscroll_popup_width">75dp</dimen>
@@ -36,7 +35,6 @@
 
 <!-- Dynamic grid -->
     <dimen name="dynamic_grid_edge_margin">9dp</dimen>
-    <dimen name="dynamic_grid_icon_drawable_padding">7dp</dimen>
     <dimen name="cell_layout_padding">9dp</dimen>
 
 <!-- Hotseat -->
diff --git a/res/values-sw600dp/styles.xml b/res/values-sw600dp/styles.xml
new file mode 100644
index 0000000..63bd46b
--- /dev/null
+++ b/res/values-sw600dp/styles.xml
@@ -0,0 +1,21 @@
+<?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.
+  -->
+
+<resources>
+    <style name="CellStyleDefault">
+        <item name="iconDrawablePadding">7dp</item>
+    </style>
+</resources>
\ No newline at end of file
diff --git a/res/values-sw720dp-land/dimens.xml b/res/values-sw720dp-land/dimens.xml
index 235631d..4d0ac38 100644
--- a/res/values-sw720dp-land/dimens.xml
+++ b/res/values-sw720dp-land/dimens.xml
@@ -22,9 +22,6 @@
     <dimen name="dynamic_grid_edge_margin">21.93dp</dimen>
     <dimen name="cell_layout_padding">29.33dp</dimen>
 
-<!-- AllApps -->
-    <dimen name="all_apps_bottom_sheet_horizontal_padding">32dp</dimen>
-
 <!-- Dragging-->
     <dimen name="drop_target_top_margin">0dp</dimen>
     <dimen name="drop_target_bottom_margin">32dp</dimen>
@@ -34,6 +31,7 @@
 
 <!-- Widget picker-->
     <dimen name="widget_list_horizontal_margin">49dp</dimen>
+    <dimen name="widget_list_horizontal_margin_two_pane">24dp</dimen>
 
 <!-- Bottom sheet-->
     <dimen name="bottom_sheet_extra_top_padding">0dp</dimen>
diff --git a/res/values-sw720dp/dimens.xml b/res/values-sw720dp/dimens.xml
index 7b2ed8b..2b0382d 100644
--- a/res/values-sw720dp/dimens.xml
+++ b/res/values-sw720dp/dimens.xml
@@ -18,9 +18,6 @@
 <!-- PagedView  -->
     <dimen name="min_page_snap_velocity">3400dp</dimen>
 
-<!-- AllApps -->
-    <dimen name="all_apps_bottom_sheet_horizontal_padding">28dp</dimen>
-
 <!-- Dynamic grid -->
     <dimen name="dynamic_grid_edge_margin">27.59dp</dimen>
     <dimen name="cell_layout_padding">36dp</dimen>
@@ -29,7 +26,7 @@
     <dimen name="drop_target_text_size">20sp</dimen>
     <dimen name="dynamic_grid_drop_target_size">72dp</dimen>
     <dimen name="drop_target_button_drawable_horizontal_padding">24dp</dimen>
-    <dimen name="drop_target_button_drawable_vertical_padding">20dp</dimen>
+    <dimen name="drop_target_button_drawable_vertical_padding">8dp</dimen>
     <dimen name="drop_target_button_gap">32dp</dimen>
     <dimen name="drop_target_button_workspace_edge_gap">32dp</dimen>
     <dimen name="drop_target_top_margin">110dp</dimen>
@@ -43,4 +40,7 @@
 
 <!-- Bottom sheet-->
     <dimen name="bottom_sheet_extra_top_padding">300dp</dimen>
+
+    <!--  Folder spaces  -->
+    <dimen name="folder_footer_horiz_padding">24dp</dimen>
 </resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 2fa95f8..8d9b2cc 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"ஷார்ட்கட் இல்லை"</string>
     <string name="home_screen" msgid="5629429142036709174">"முகப்பு"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"திரைப் பிரிப்பு"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"மேற்புறமாகப் பிரி"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"இடதுபுறமாகப் பிரி"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"வலதுபுறமாகப் பிரி"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$sக்கான ஆப்ஸ் தகவல்கள்"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"ஆப்ஸ் ஜோடியைச் சேமி"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"விட்ஜெட்டை நகர்த்தத் தொட்டுப் பிடிக்கவும்."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"விட்ஜெட்டை நகர்த்த இருமுறை தட்டிப் பிடிக்கவும் அல்லது பிரத்தியேகச் செயல்களைப் பயன்படுத்தவும்."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d அகலத்திற்கு %2$d உயரம்"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> விட்ஜெட்"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"முகப்புத் திரைக்கு விட்ஜெட்டை நகர்த்த அதைத் தொட்டுப் பிடிக்கவும்"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"முகப்புத் திரையில் சேர்"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"முகப்புத் திரையைச் சுற்றி விட்ஜெட்டை நகர்த்த அதைத் தொட்டுப் பிடியுங்கள்"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"முகப்புத் திரையில் சேர்"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> விட்ஜெட் முகப்புத் திரையில் சேர்க்கப்பட்டது"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"பரிந்துரைகள்"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# விட்ஜெட்}other{# விட்ஜெட்டுகள்}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# ஷார்ட்கட்}other{# ஷார்ட்கட்கள்}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"தனிப்பட்டவை"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"பணி"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"உரையாடல்கள்"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"குறிப்பெடுத்தல்"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"விரல்நுனியில் பயனுள்ள தகவல்களைப் பெறுங்கள்"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"ஆப்ஸைத் திறக்காமல் தகவல்களைப் பெற, முகப்புத் திரையில் விட்ஜெட்டுகளைச் சேர்க்கலாம்"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"முகப்புத் திரையில் விட்ஜெட்டுகளைச் சேர்த்து ஆப்ஸைத் திறக்காமலேயே தகவல்களைப் பெறலாம்"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"விட்ஜெட் அமைப்புகளை மாற்றத் தட்டவும்"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"சரி"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"விட்ஜெட் அமைப்புகளை மாற்றும்"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"ஆப்ஸில் தேடுக"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"ஆப்ஸை ஏற்றுகிறது…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" உடன் பொருந்தும் ஆப்ஸ் இல்லை"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"கூடுதல் பயன்பாடுகளைத் தேடு"</string>
     <string name="label_application" msgid="8531721983832654978">"ஆப்ஸ்"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"அனைத்து ஆப்ஸும்"</string>
     <string name="notifications_header" msgid="1404149926117359025">"அறிவிப்புகள்"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"ஷார்ட்கட்டை நகர்த்தத் தொட்டுப் பிடிக்கவும்."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"ஷார்ட்கட்டை நகர்த்த இருமுறை தட்டிப் பிடிக்கவும் அல்லது பிரத்தியேகச் செயல்களைப் பயன்படுத்தவும்."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"இந்த முகப்புத் திரையில் இடமில்லை"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"இந்த முகப்புத் திரையில் இடமில்லை"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"பிடித்தவை ட்ரேயில் இடமில்லை"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"ஆப்ஸின் பட்டியல்"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"தேடல் முடிவுகள்"</string>
@@ -75,22 +74,21 @@
     <string name="uninstall_drop_target_label" msgid="4722034217958379417">"நிறுவல் நீக்கு"</string>
     <string name="app_info_drop_target_label" msgid="692894985365717661">"ஆப்ஸ் தகவல்"</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"நிறுவு"</string>
-    <string name="dismiss_prediction_label" msgid="3357562989568808658">"ஆப்ஸைப் பரிந்துரைக்க வேண்டாம்"</string>
+    <string name="dismiss_prediction_label" msgid="3357562989568808658">"பரிந்துரைக்காதே"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"கணிக்கப்பட்ட ஆப்ஸைப் பின் செய்தல்"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"குறுக்குவழிகளை நிறுவுதல்"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"பயனரின் அனுமதி இல்லாமல் குறுக்குவழிகளைச் சேர்க்கப் ஆப்ஸை அனுமதிக்கிறது."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"முகப்பின் அமைப்பு மற்றும் குறுக்குவழிகளைப் படித்தல்"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"முகப்பில் உள்ள அமைப்பு மற்றும் குறுக்குவழிகளைப் படிக்க ஆப்ஸை அனுமதிக்கிறது."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"முகப்பின் அமைப்பு மற்றும் குறுக்குவழிகளை எழுதுதல்"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"முகப்பில் உள்ள அமைப்பு மற்றும் குறுக்குவழிகளை மாற்ற ஆப்ஸை அனுமதிக்கிறது."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"ஃபோன் அழைப்புகள் செய்ய, <xliff:g id="APP_NAME">%1$s</xliff:g> அனுமதிக்கப்படவில்லை"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"முகப்புத் திரையின் அமைப்புகளையும் ஷார்ட்கட்களையும் படித்தல்"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"முகப்புத் திரையிலுள்ள அமைப்புகளையும் ஷார்ட்கட்களையும் படிக்க ஆப்ஸை அனுமதிக்கும்."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"முகப்புத் திரையின் அமைப்புகளையும் ஷார்ட்கட்களையும் எழுதுதல்"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"முகப்புத் திரையிலுள்ள அமைப்புகளையும் ஷார்ட்கட்களையும் மாற்ற ஆப்ஸை அனுமதிக்கும்."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"விட்ஜெட்டை ஏற்ற முடியவில்லை"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"விட்ஜெட் அமைப்புகள்"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"அமைவை நிறைவுசெய்யத் தட்டவும்"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"இது அமைப்பு ஆப்ஸ் என்பதால் நிறுவல் நீக்கம் செய்ய முடியாது."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"பெயரைத் திருத்துதல்"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> முடக்கப்பட்டது"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} ஆப்ஸில் # அறிவிப்பு வந்துள்ளது}other{{app_name} ஆப்ஸில் # அறிவிப்புகள் வந்துள்ளன}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} ஆப்ஸில் # அறிவிப்பு உள்ளது}other{{app_name} ஆப்ஸில் # அறிவிப்புகள் உள்ளன}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"பக்கம் %1$d / %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"முகப்புத் திரை %1$d of %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"புதிய முகப்புத் திரை பக்கம்"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"ஃபோல்டர்: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> அல்லது அதற்கு அதிகமான ஃபைல்கள்"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"வால்பேப்பர்கள்"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"வால்பேப்பர் &amp; ஸ்டைல்"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"முகப்புத் திரையில் மாற்று"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"முகப்பு அமைப்புகள்"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"உங்கள் நிர்வாகி முடக்கியுள்ளார்"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"முகப்புத் திரை சுழற்சியை அனுமதி"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"முகப்புத் திரை சுழற்சியை அனுமதித்தல்"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"மொபைலைச் சுழற்றும் போது"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"அறிவிப்புப் புள்ளிகள்"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"ஆன்"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"அறிவிப்புப் புள்ளிகளைக் காட்ட, <xliff:g id="NAME">%1$s</xliff:g> இன் ஆப்ஸ் அறிவிப்புகளை இயக்கவும்"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"அமைப்புகளை மாற்று"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"அறிவிப்புப் புள்ளிகளைக் காட்டு"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"முகப்புத் திரையில் ஆப்ஸ் ஐகான்களைச் சேர்"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"டெவெலப்பர் விருப்பங்கள்"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"முகப்புத் திரையில் ஆப்ஸ் ஐகான்களைச் சேர்"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"புதிய ஆப்ஸை நிறுவும்போது"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"தெரியாதது"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"அகற்று"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> நிறுவப்படுகிறது, <xliff:g id="PROGRESS">%2$s</xliff:g> முடிந்தது"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g>ஐப் பதிவிறக்குகிறது, <xliff:g id="PROGRESS">%2$s</xliff:g> முடிந்தது"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g>ஐ நிறுவுவதற்காகக் காத்திருக்கிறது"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"ஆப்ஸைப் புதுப்பியுங்கள்"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"இந்த ஐகானுக்கான ஆப்ஸ் புதுப்பிக்கப்படவில்லை. இந்த ஷார்ட்கட்டை மீண்டும் இயக்கவோ ஐகானை அகற்றவோ நீங்களாகவே புதுப்பிக்கலாம்."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"புதுப்பி"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"அகற்று"</string>
     <string name="widgets_list" msgid="796804551140113767">"விட்ஜெட்கள் பட்டியல்"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"விட்ஜெட்கள் பட்டியல் மூடப்பட்டது"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"முகப்புத் திரையில் சேருங்கள்"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"முகப்புத் திரையில் சேர்"</string>
     <string name="action_move_here" msgid="2170188780612570250">"இங்கு நகர்த்து"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"முகப்புத் திரையில் சேர்க்கப்பட்டது"</string>
     <string name="item_removed" msgid="851119963877842327">"அகற்றப்பட்டது"</string>
     <string name="undo" msgid="4151576204245173321">"செயல்தவிர்"</string>
     <string name="action_move" msgid="4339390619886385032">"நகர்த்து"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"<xliff:g id="NUMBER_0">%1$s</xliff:g> வரிசை, <xliff:g id="NUMBER_1">%2$s</xliff:g> நெடுவரிசைக்கு நகர்த்து"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g> என்பதில் <xliff:g id="NUMBER_0">%1$s</xliff:g>வது வரிசை <xliff:g id="NUMBER_1">%2$s</xliff:g>வது நெடுவரிசைக்கு நகர்த்தப்படும்"</string>
     <string name="move_to_position" msgid="6750008980455459790">"நிலை <xliff:g id="NUMBER">%1$s</xliff:g>க்கு நகர்த்து"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"விரும்பும் நிலை <xliff:g id="NUMBER">%1$s</xliff:g>க்கு நகர்த்து"</string>
     <string name="item_moved" msgid="4606538322571412879">"உருப்படி நகர்த்தப்பட்டது"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"ஃபோல்டரில் உருப்படி சேர்க்கப்பட்டது"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"இதனுடன் ஃபோல்டரை உருவாக்கும்: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"ஃபோல்டர் உருவாக்கப்பட்டது"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"முகப்புத் திரைக்கு நகர்த்து"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"முகப்புத் திரைக்கு நகர்த்து"</string>
     <string name="action_resize" msgid="1802976324781771067">"அளவு மாற்று"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"அகலத்தை அதிகரி"</string>
     <string name="action_increase_height" msgid="459390020612501122">"உயரத்தை அதிகரி"</string>
@@ -156,15 +160,18 @@
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"தனிப்பட்டவை"</string>
     <string name="all_apps_work_tab" msgid="4884822796154055118">"பணி"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"பணிக் கணக்கு"</string>
-    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"பணி ஆப்ஸில் பேட்ஜ் இடப்பட்டுள்ளன. உங்கள் IT நிர்வாகியால் அவற்றைப் பார்க்க முடியும்"</string>
+    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"பணி ஆப்ஸில் பேட்ஜ் இடப்பட்டிருக்கும், உங்கள் IT நிர்வாகியால் பணி ஆப்ஸைப் பார்க்க முடியும்"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"முடிந்தது"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"பணி ஆப்ஸ் இடைநிறுத்தப்பட்டுள்ளன"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"உங்கள் பணி ஆப்ஸிலிருந்து அறிவிப்புகளைப் பெறமாட்டீர்கள்"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"பணி ஆப்ஸால் உங்களுக்கு அறிவிப்புகளை அனுப்பவோ பேட்டரியைப் பயன்படுத்தவோ உங்கள் இருப்பிடத்தை அணுகவோ முடியாது"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"பணி ஆப்ஸ் முடக்கப்பட்டுள்ளன. அவற்றால் உங்களுக்கு அறிவிப்புகளை அனுப்பவோ பேட்டரியைப் பயன்படுத்தவோ உங்கள் இருப்பிடத்தை அணுகவோ முடியாது"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"உங்கள் பணி ஆப்ஸிலிருந்து மொபைல் அழைப்புகள், மெசேஜ்கள், அறிவிப்புகள் ஆகியவற்றைப் பெறமாட்டீர்கள்"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"பணி ஆப்ஸ் பேட்ஜ் குறியிடப்பட்டுள்ளன. மேலும் உங்கள் IT நிர்வாகியால் அவற்றைப் பார்க்க முடியும்"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"சரி"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"பணி ஆப்ஸை முடக்கு"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"பணி ஆப்ஸை இயக்கு"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"பணி ஆப்ஸை இடைநிறுத்து"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"மீண்டும் இயக்கு"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"வடிப்பான்"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"உங்கள் மொபைலில் தேடுதல்"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"உங்கள் டேப்லெட்டில் தேடுதல்"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"தோல்வி: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index ce364bd..08e633d 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -27,19 +27,18 @@
     <string name="safemode_widget_error" msgid="4863470563535682004">"సురక్షిత మోడ్‌లో విడ్జెట్‌లు నిలిపివేయబడ్డాయి"</string>
     <string name="shortcut_not_available" msgid="2536503539825726397">"షార్ట్‌కట్ అందుబాటులో లేదు"</string>
     <string name="home_screen" msgid="5629429142036709174">"మొదటి ట్యాబ్"</string>
-    <string name="recent_task_option_split_screen" msgid="6690461455618725183">"స్క్రీన్‌ను విభజించు"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"స్ప్లిట్ ఎగువన"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"స్ప్లిట్ ఎడమవైపు"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"స్ప్లిట్ కుడివైపు"</string>
+    <string name="recent_task_option_split_screen" msgid="6690461455618725183">"స్ప్లిట్ స్క్రీన్"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s కోసం యాప్ సమాచారం"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"యాప్ పెయిర్‌ను సేవ్ చేయండి"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"విడ్జెట్‌ను తరలించడానికి తాకి &amp; నొక్కి ఉంచండి."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"విడ్జెట్‌ను తరలించడానికి లేదా అనుకూల చర్యలను ఉపయోగించడానికి రెండుసార్లు నొక్కండి &amp; హోల్డ్ చేయి."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d వెడల్పు X %2$d ఎత్తు"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> విడ్జెట్"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"ఈ విడ్జెట్‌ను మొదటి స్క్రీన్‌లో కావాల్సిన చోట ఉంచడానికి, దాన్ని తాకి అలాగే నొక్కి పట్టుకోండి"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"మొదటి స్క్రీన్‌కు జోడించు"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"విడ్జెట్‌ను మొదటి స్క్రీన్‌లో తిప్పడానికి దాన్ని తాకి, &amp; నొక్కి పట్టుకోండి"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"మొదటి స్క్రీన్‌కు జోడించండి"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"మొదటి స్క్రీన్‌కు <xliff:g id="WIDGET_NAME">%1$s</xliff:g> విడ్జెట్ జోడించబడింది"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"సూచనలు"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# విడ్జెట్}other{# విడ్జెట్‌లు}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# షార్ట్‌కట్}other{# షార్ట్‌కట్‌లు}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,46 +50,45 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"వ్యక్తిగత గ్యాడ్జెట్స్"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"ఆఫీస్"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"సంభాషణలు"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"నోట్-టేకింగ్"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"మీ చేతివేళ్ల మీద ఉపయోగకరమైన సమాచారం"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"యాప్‌లను తెరవకుండా సమాచారం పొందడానికి, మీరు మీ మొదటి స్క్రీన్‌కు విడ్జెట్‌లను జోడించవచ్చు"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"యాప్‌లను తెరవకుండా సమాచారాన్ని పొందడానికి, మీరు మీ మొదటి స్క్రీన్‌కు విడ్జెట్‌లను జోడించవచ్చు"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"విడ్జెట్ సెట్టింగ్‌లను మార్చడానికి ట్యాప్ చేయండి"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"అర్థమైంది"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"విడ్జెట్ సెట్టింగ్‌లను మార్చండి"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"యాప్‌ల కోసం సెర్చ్ చేయండి"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"అప్లికేషన్‌లను లోడ్ చేస్తోంది…"</string>
-    <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\"కి సరిపోలే అప్లికేషన్‌లేవీ కనుగొనబడలేదు"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"మరిన్ని యాప్‌ల కోసం సెర్చ్ చేయండి"</string>
+    <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\"కి మ్యాచ్ అయ్యే అప్లికేషన్‌లేవీ కనుగొనబడలేదు"</string>
     <string name="label_application" msgid="8531721983832654978">"యాప్"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"అన్ని యాప్‌లు"</string>
     <string name="notifications_header" msgid="1404149926117359025">"నోటిఫికేషన్‌లు"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"షార్ట్‌కట్‌ను తరలించడానికి తాకి &amp; నొక్కి ఉంచు."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"షార్ట్‌కట్‌ను తరలించడానికి లేదా అనుకూల చర్యలను ఉపయోగించడానికి రెండుసార్లు నొక్కండి &amp; హోల్డ్ చేయండి."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"ఈ మొదటి స్క్రీన్‌లో స్థలం లేదు"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"ఈ మొదటి స్క్రీన్‌లో స్థలం లేదు"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"ఇష్టమైనవి ట్రేలో ఖాళీ లేదు"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"యాప్‌ల లిస్ట్‌"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"సెర్చ్ ఫలితాలు"</string>
     <string name="all_apps_button_personal_label" msgid="1315764287305224468">"వ్యక్తిగత యాప్‌ల లిస్ట్‌"</string>
     <string name="all_apps_button_work_label" msgid="7270707118948892488">"కార్యాలయ యాప్‌ల లిస్ట్‌"</string>
-    <string name="remove_drop_target_label" msgid="7812859488053230776">"తీసివేయి"</string>
-    <string name="uninstall_drop_target_label" msgid="4722034217958379417">"అన్ఇన్‌స్టాల్ చేయి"</string>
+    <string name="remove_drop_target_label" msgid="7812859488053230776">"తీసివేయండి"</string>
+    <string name="uninstall_drop_target_label" msgid="4722034217958379417">"అన్ఇన్‌స్టాల్ చేయండి"</string>
     <string name="app_info_drop_target_label" msgid="692894985365717661">"యాప్ సమాచారం"</string>
     <string name="install_drop_target_label" msgid="2539096853673231757">"ఇన్‌స్టాల్ చేయండి"</string>
-    <string name="dismiss_prediction_label" msgid="3357562989568808658">"యాప్‌ను సూచించవద్దు"</string>
+    <string name="dismiss_prediction_label" msgid="3357562989568808658">"యాప్ సూచించకు"</string>
     <string name="pin_prediction" msgid="4196423321649756498">"సూచనను పిన్ చేయండి"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"షార్ట్‌కట్‌లను ఇన్‌స్టాల్ చేయడం"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"వినియోగదారు ప్రమేయం లేకుండా షార్ట్‌కట్‌లను జోడించడానికి యాప్‌ను అనుమతిస్తుంది."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"హోమ్ సెట్టింగ్‌లు మరియు షార్ట్‌కట్‌లను చదవడం"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"హోమ్‌లో సెట్టింగ్‌లు మరియు షార్ట్‌కట్‌లను చదవడానికి యాప్‌ను అనుమతిస్తుంది."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"హోమ్ సెట్టింగ్‌లు మరియు షార్ట్‌కట్‌లను రాయడం"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"హోమ్‌లో సెట్టింగ్‌లు మరియు షార్ట్‌కట్‌లను మార్చడానికి యాప్‌ను అనుమతిస్తుంది."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"ఫోన్ కాల్స్‌ను చేసేందుకు <xliff:g id="APP_NAME">%1$s</xliff:g>కి అనుమతి లేదు"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"హోమ్ సెట్టింగ్‌లు, షార్ట్‌కట్‌లను చదవండి"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"హోమ్‌లో సెట్టింగ్‌లు, షార్ట్‌కట్‌లను చదవడానికి యాప్‌ను అనుమతిస్తుంది."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"హోమ్ సెట్టింగ్‌లు, షార్ట్‌కట్‌లను రాయండి"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"హోమ్‌లో సెట్టింగ్‌లు, షార్ట్‌కట్‌లను మార్చడానికి యాప్‌ను అనుమతిస్తుంది."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"విడ్జెట్‌ను లోడ్ చేయడం సాధ్యం కాలేదు"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"విడ్జెట్ సెట్టింగ్‌లు"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"సెటప్‌ను ముగించడానికి ట్యాప్ చేయండి"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"ఇది సిస్టమ్ యాప్ మరియు దీన్ని అన్‌ఇన్‌స్టాల్ చేయడం సాధ్యపడదు."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"పేరును ఎడిట్ చేయండి"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> నిలిపివేయబడింది"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name}లో # నోటిఫికేషన్ ఉంది}other{{app_name}లో # నోటిఫికేషన్‌లు ఉన్నాయి}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name}లో # నోటిఫికేషన్ ఉంది}other{{app_name}లో # నోటిఫికేషన్‌లు ఉన్నాయి}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"%2$dలో %1$dవ పేజీ"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"%2$dలో %1$dవ హోమ్ స్క్రీన్"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"కొత్త హోమ్ స్క్రీన్ పేజీ"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"ఫోల్డర్: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> లేదా అంతకంటే ఎక్కువ ఐటెమ్‌లు"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"వాల్‌పేపర్‌లు"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"వాల్‌పేపర్ &amp; స్టయిల్"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"మొదటి స్క్రీన్‌ను ఎడిట్ చేయండి"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"మొదటి స్క్రీన్ సెట్టింగ్‌లు"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"మీ నిర్వాహకులు నిలిపివేసారు"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"మొదటి స్క్రీన్ రొటేషన్‌ను అనుమతించండి"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"మొదటి స్క్రీన్ రొటేషన్‌ను అనుమతించండి"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"ఫోన్‌‌ను తిప్పినప్పుడు"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"నోటిఫికేషన్ డాట్‌లు"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"ఆన్"</string>
@@ -114,43 +113,48 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"నోటిఫికేషన్ డాట్‌లను చూపించడానికి <xliff:g id="NAME">%1$s</xliff:g>కు యాప్ నోటిఫికేషన్‌లను ఆన్ చేయండి"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"సెట్టింగ్‌లను మార్చు"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"నోటిఫికేషన్ డాట్‌లను చూపు"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"యాప్ చిహ్నాలను మొదటి స్క్రీన్‌కు జోడించు"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"డెవలపర్ ఆప్షన్‌లు"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"యాప్ చిహ్నాలను మొదటి స్క్రీన్‌కు జోడించండి"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"కొత్త యాప్‌ల కోసం"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"తెలియదు"</string>
-    <string name="abandoned_clean_this" msgid="7610119707847920412">"తీసివేయి"</string>
+    <string name="abandoned_clean_this" msgid="7610119707847920412">"తీసివేయండి"</string>
     <string name="abandoned_search" msgid="891119232568284442">"సెర్చ్"</string>
     <string name="abandoned_promises_title" msgid="7096178467971716750">"ఈ యాప్ ఇన్‌స్టాల్ చేయబడలేదు"</string>
     <string name="abandoned_promise_explanation" msgid="3990027586878167529">"ఈ ఐకాన్‌కు చెందిన యాప్ ఇన్‌స్టాల్ చేయలేదు. మీరు దీన్ని తీసివేయవచ్చు లేదా ఆ యాప్ కోసం సెర్చ్ చేసి, దాన్ని మాన్యువల్‌గా ఇన్‌స్టాల్ చేయవచ్చు."</string>
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g>‌ను ఇన్‌స్టాల్ చేయడం, <xliff:g id="PROGRESS">%2$s</xliff:g> పూర్తయింది"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> డౌన్‌లోడ్ అవుతోంది, <xliff:g id="PROGRESS">%2$s</xliff:g> పూర్తయింది"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> ఇన్‌స్టాల్ కావడానికి వేచి ఉంది"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"యాప్‌ను అప్‌డేట్ చేయడం అవసరం"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"ఈ చిహ్నం కోసం యాప్ అప్‌డేట్ చేయబడలేదు. మీరు ఈ షార్ట్‌కట్‌ను మళ్లీ ఎనేబుల్ చేయడానికి మాన్యువల్‌గా అప్‌డేట్ చేయవచ్చు లేదా చిహ్నాన్ని తీసివేయవచ్చు."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"అప్‌డేట్ చేయండి"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"తీసివేయండి"</string>
     <string name="widgets_list" msgid="796804551140113767">"విడ్జెట్‌ల లిస్ట్‌"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"విడ్జెట్‌ల లిస్ట్‌ మూసివేయబడింది"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"హోమ్ స్క్రీన్‌కు జోడించండి"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"మొదటి స్క్రీన్‌కు జోడించండి"</string>
     <string name="action_move_here" msgid="2170188780612570250">"అంశాన్ని ఇక్కడికి తరలించు"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"అంశం హోమ్‌స్క్రీన్‌కి జోడించబడింది"</string>
     <string name="item_removed" msgid="851119963877842327">"ఐటెమ్ తీసివేయబడింది"</string>
     <string name="undo" msgid="4151576204245173321">"చర్య రద్దు"</string>
     <string name="action_move" msgid="4339390619886385032">"అంశాన్ని తరలించు"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"అడ్డు వరుస <xliff:g id="NUMBER_0">%1$s</xliff:g> నిలువు వరుస <xliff:g id="NUMBER_1">%2$s</xliff:g>కి తరలించు"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g> లో <xliff:g id="NUMBER_0">%1$s</xliff:g> అడ్డు వరుస <xliff:g id="NUMBER_1">%2$s</xliff:g>నిలువు వరుసకు తరలించండి"</string>
     <string name="move_to_position" msgid="6750008980455459790">"<xliff:g id="NUMBER">%1$s</xliff:g>వ స్థానానికి తరలించు"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"ఇష్టమైనవిలో <xliff:g id="NUMBER">%1$s</xliff:g>వ స్థానానికి తరలించు"</string>
     <string name="item_moved" msgid="4606538322571412879">"అంశం తరలించబడింది"</string>
     <string name="add_to_folder" msgid="9040534766770853243">"ఈ ఫోల్డర్‌కి జోడించండి: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="add_to_folder_with_app" msgid="4534929978967147231">"<xliff:g id="NAME">%1$s</xliff:g> గల ఫోల్డర్‌కు జోడించు"</string>
+    <string name="add_to_folder_with_app" msgid="4534929978967147231">"<xliff:g id="NAME">%1$s</xliff:g> గల ఫోల్డర్‌కు జోడించండి"</string>
     <string name="added_to_folder" msgid="4793259502305558003">"అంశం ఫోల్డర్‌కు జోడించబడింది"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"ఈ పేరుతో ఫోల్డర్‌ను క్రియేట్ చేయండి: <xliff:g id="NAME">%1$s</xliff:g>"</string>
-    <string name="folder_created" msgid="6409794597405184510">"ఫోల్డర్ సృష్టించబడింది"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"హోమ్‌స్క్రీన్‌కు తరలించు"</string>
-    <string name="action_resize" msgid="1802976324781771067">"పరిమాణం మార్చు"</string>
+    <string name="folder_created" msgid="6409794597405184510">"ఫోల్డర్ క్రియేట్ చేయబడింది"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"మొదటి స్క్రీన్‌కు తరలించండి"</string>
+    <string name="action_resize" msgid="1802976324781771067">"సైజ్‌ మార్చు"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"వెడల్పును పెంచు"</string>
     <string name="action_increase_height" msgid="459390020612501122">"ఎత్తును పెంచు"</string>
     <string name="action_decrease_width" msgid="1374549771083094654">"వెడల్పును తగ్గించు"</string>
     <string name="action_decrease_height" msgid="282377193880900022">"ఎత్తును తగ్గించు"</string>
-    <string name="widget_resized" msgid="9130327887929620">"విడ్జెట్ పరిమాణం వెడల్పు <xliff:g id="NUMBER_0">%1$s</xliff:g>కి, ఎత్తు <xliff:g id="NUMBER_1">%2$s</xliff:g>కి మార్చబడింది"</string>
+    <string name="widget_resized" msgid="9130327887929620">"విడ్జెట్ సైజ్‌ వెడల్పు <xliff:g id="NUMBER_0">%1$s</xliff:g>కి, ఎత్తు <xliff:g id="NUMBER_1">%2$s</xliff:g>కి మార్చబడింది"</string>
     <string name="action_deep_shortcut" msgid="2864038805849372848">"షార్ట్‌కట్స్"</string>
     <string name="shortcuts_menu_with_notifications_description" msgid="2676582286544232849">"షార్ట్‌కట్‌లు మరియు నోటిఫికేషన్‌లు"</string>
-    <string name="action_dismiss_notification" msgid="5909461085055959187">"తీసివేయి"</string>
+    <string name="action_dismiss_notification" msgid="5909461085055959187">"తీసివేయండి"</string>
     <string name="accessibility_close" msgid="2277148124685870734">"మూసివేస్తుంది"</string>
     <string name="notification_dismissed" msgid="6002233469409822874">"నోటిఫికేషన్ తీసివేయబడింది"</string>
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"వ్యక్తిగతం"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"వర్క్ యాప్‌లకు బ్యాడ్జ్ ఉంటుంది, అవి మీ IT అడ్మిన్‌కు కనిపిస్తాయి"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"అర్థమైంది"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"వర్క్ యాప్‌లు పాజ్ చేయబడ్డాయి"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"మీ వర్క్ యాప్‌ల నుండి మీకు నోటిఫికేషన్‌లు అందవు"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"మీకు నోటిఫికేషన్‌లు పంపడం, మీ బ్యాటరీని ఉపయోగించడం, లేదా మీ లొకేషన్‌ను యాక్సెస్ చేయడం మీ వర్క్ యాప్‌లకు సాధ్యపడదు"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"వర్క్ యాప్‌లు ఆఫ్‌లో ఉన్నాయి. మీకు నోటిఫికేషన్‌లు పంపడం, మీ బ్యాటరీని ఉపయోగించడం, లేదా మీ లొకేషన్‌ను యాక్సెస్ చేయడం మీ వర్క్ యాప్‌లకు సాధ్యపడదు"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"మీ వర్క్ యాప్‌ల నుండి మీకు ఫోన్ కాల్స్, టెక్స్ట్ మెసేజ్‌లు, లేదా నోటిఫికేషన్‌లు అందవు"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"వర్క్ యాప్‌లకు బ్యాడ్జ్ ఉంటుంది, అవి మీ IT అడ్మిన్‌కు కనిపిస్తాయి"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"అర్థమైంది"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"వర్క్ యాప్‌లను ఆఫ్ చేయండి"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"వర్క్ యాప్‌లను ఆన్ చేయి"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"వర్క్ యాప్‌లను పాజ్ చేయండి"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"పాజ్ నుండి తీసివేయండి"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"ఫిల్టర్ చేయి"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"మీ ఫోన్‌లో సెర్చ్ చేయండి"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"మీ టాబ్లెట్‌లో సెర్చ్ చేయండి"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"విఫలమైంది: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 768bff6..4b64993 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -27,19 +27,18 @@
     <string name="safemode_widget_error" msgid="4863470563535682004">"มีการปิดใช้งานวิดเจ็ตในเซฟโหมด"</string>
     <string name="shortcut_not_available" msgid="2536503539825726397">"ทางลัดไม่พร้อมใช้งาน"</string>
     <string name="home_screen" msgid="5629429142036709174">"หน้าแรก"</string>
-    <string name="recent_task_option_split_screen" msgid="6690461455618725183">"แบ่งหน้าจอ"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"แยกไปด้านบน"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"แยกไปทางซ้าย"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"แยกไปทางขวา"</string>
+    <string name="recent_task_option_split_screen" msgid="6690461455618725183">"แยกหน้าจอ"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"ข้อมูลแอปสำหรับ %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"บันทึกคู่แอป"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"แตะค้างไว้เพื่อย้ายวิดเจ็ต"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"แตะสองครั้งค้างไว้เพื่อย้ายวิดเจ็ตหรือใช้การดำเนินการที่กำหนดเอง"</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"กว้าง %1$d x สูง %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"วิดเจ็ต <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"แตะวิดเจ็ตค้างไว้เพื่อย้ายไปรอบๆ หน้าจอหลัก"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"เพิ่มลงในหน้าจอหลัก"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"แตะวิดเจ็ตค้างไว้เพื่อย้ายไปรอบๆ หน้าจอหลัก"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"เพิ่มลงในหน้าจอหลัก"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"เพิ่มวิดเจ็ต <xliff:g id="WIDGET_NAME">%1$s</xliff:g> ลงในหน้าจอหลักแล้ว"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"คำแนะนำ"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{วิดเจ็ต # รายการ}other{วิดเจ็ต # รายการ}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{ทางลัด # รายการ}other{ทางลัด # รายการ}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ส่วนตัว"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"งาน"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"การสนทนา"</string>
-    <string name="widget_education_header" msgid="4874760613775913787">"เข้าถึงข้อมูลที่เป็นประโยชน์ได้ที่ปลายนิ้ว"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"หากต้องการรับข้อมูลโดยไม่เปิดแอป ให้เพิ่มวิดเจ็ตลงในหน้าจอหลัก"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"การจดบันทึก"</string>
+    <string name="widget_education_header" msgid="4874760613775913787">"เข้าถึงข้อมูลที่เป็นประโยชน์ได้จากปลายนิ้ว"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"หากต้องการรับข้อมูลโดยไม่เปิดแอป ให้เพิ่มวิดเจ็ตลงในหน้าจอหลัก"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"แตะเพื่อเปลี่ยนการตั้งค่าวิดเจ็ต"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"รับทราบ"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"เปลี่ยนการตั้งค่าวิดเจ็ต"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"ค้นหาแอป"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"กำลังโหลดแอป…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"ไม่พบแอปที่ตรงกับ \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"ค้นหาแอปเพิ่มเติม"</string>
     <string name="label_application" msgid="8531721983832654978">"แอป"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"แอปทั้งหมด"</string>
     <string name="notifications_header" msgid="1404149926117359025">"การแจ้งเตือน"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"แตะค้างไว้เพื่อย้ายทางลัด"</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"แตะสองครั้งค้างไว้เพื่อย้ายทางลัดหรือใช้การดำเนินการที่กำหนดเอง"</string>
-    <string name="out_of_space" msgid="6692471482459245734">"ไม่มีที่ว่างในหน้าจอหลักนี้"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"ไม่มีที่ว่างในหน้าจอหลักนี้"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"ไม่มีพื้นที่เหลือในถาดรายการโปรด"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"รายชื่อแอป"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"ผลการค้นหา"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"ปักหมุดแอปที่คาดการณ์ไว้"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"ติดตั้งทางลัด"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"อนุญาตให้แอปเพิ่มทางลัดโดยไม่ต้องให้ผู้ใช้จัดการ"</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"อ่านการตั้งค่าและทางลัดหน้าแรกแล้ว"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"อนุญาตให้แอปอ่านการตั้งค่าและทางลัดในหน้าแรก"</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"เขียนการตั้งค่าและทางลัดหน้าแรกแล้ว"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"อนุญาตให้แอปเปลี่ยนการตั้งค่าและทางลัดในหน้าแรก"</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> ไม่ได้รับอนุญาตให้โทรออก"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"อ่านการตั้งค่าและทางลัดในหน้าแรก"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"อนุญาตให้แอปอ่านการตั้งค่าและทางลัดในหน้าแรก"</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"เขียนการตั้งค่าและทางลัดในหน้าแรก"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"อนุญาตให้แอปเปลี่ยนการตั้งค่าและทางลัดในหน้าแรก"</string>
     <string name="gadget_error_text" msgid="740356548025791839">"โหลดวิดเจ็ตไม่ได้"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"การตั้งค่าวิดเจ็ต"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"แตะเพื่อสิ้นสุดการตั้งค่า"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"นี่เป็นแอประบบและไม่สามารถถอนการติดตั้งได้"</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"แก้ไขชื่อ"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"ปิดใช้ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} มีการแจ้งเตือน # รายการ}other{{app_name} มีการแจ้งเตือน # รายการ}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} มีการแจ้งเตือน # รายการ}other{{app_name} มีการแจ้งเตือน # รายการ}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"หน้า %1$d จาก %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"หน้าจอหลัก %1$d จาก %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"หน้าใหม่ในหน้าจอหลัก"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"โฟลเดอร์: <xliff:g id="NAME">%1$s</xliff:g>, อย่างน้อย <xliff:g id="SIZE">%2$d</xliff:g> รายการ"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"วอลเปเปอร์"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"วอลเปเปอร์และรูปแบบ"</string>
-    <string name="settings_button_text" msgid="8873672322605444408">"การตั้งค่าหน้าแรก"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"แก้ไขหน้าจอหลัก"</string>
+    <string name="settings_button_text" msgid="8873672322605444408">"การตั้งค่าหน้าจอหลัก"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"ปิดใช้โดยผู้ดูแลระบบ"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"อนุญาตให้หมุนหน้าจอหลัก"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"อนุญาตให้หมุนหน้าจอหลัก"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"เมื่อหมุนโทรศัพท์"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"เครื่องหมายจุดแสดงการแจ้งเตือน"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"เปิด"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"เปิดการแจ้งเตือนแอปของ <xliff:g id="NAME">%1$s</xliff:g> เพื่อแสดงเครื่องหมายจุดแสดงการแจ้งเตือน"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"เปลี่ยนการตั้งค่า"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"แสดงเครื่องหมายจุดแสดงการแจ้งเตือน"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"เพิ่มไอคอนแอปในหน้าจอหลัก"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"ตัวเลือกสำหรับนักพัฒนาแอป"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"เพิ่มไอคอนแอปในหน้าจอหลัก"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"สำหรับแอปใหม่"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"ไม่รู้จัก"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"ลบ"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"กำลังติดตั้ง <xliff:g id="NAME">%1$s</xliff:g> เสร็จแล้ว <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"กำลังดาวน์โหลด <xliff:g id="NAME">%1$s</xliff:g> เสร็จแล้ว <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> กำลังรอติดตั้ง"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"ต้องอัปเดตแอป"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"แอปสำหรับไอคอนนี้ยังไม่ได้อัปเดต คุณอัปเดตด้วยตนเองได้โดยเปิดใช้ทางลัดนี้อีกครั้งหรือนำไอคอนออก"</string>
+    <string name="dialog_update" msgid="2178028071796141234">"อัปเดต"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"นำออก"</string>
     <string name="widgets_list" msgid="796804551140113767">"รายการวิดเจ็ต"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"ปิดรายการวิดเจ็ตแล้ว"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"เพิ่มลงในหน้าจอหลัก"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"เพิ่มลงในหน้าจอหลัก"</string>
     <string name="action_move_here" msgid="2170188780612570250">"ย้ายรายการมาที่นี่"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"เพิ่มรายการไปยังหน้าจอหลักแล้ว"</string>
     <string name="item_removed" msgid="851119963877842327">"นำรายการออกแล้ว"</string>
     <string name="undo" msgid="4151576204245173321">"เลิกทำ"</string>
     <string name="action_move" msgid="4339390619886385032">"ย้ายรายการ"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"ย้ายไปที่แถว <xliff:g id="NUMBER_0">%1$s</xliff:g> คอลัมน์ <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"ย้ายไปยังแถว <xliff:g id="NUMBER_0">%1$s</xliff:g> คอลัมน์ <xliff:g id="NUMBER_1">%2$s</xliff:g> ใน <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"ย้ายไปยังตำแหน่ง <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"ย้ายไปยังตำแหน่งที่ <xliff:g id="NUMBER">%1$s</xliff:g> ของรายการโปรด"</string>
     <string name="item_moved" msgid="4606538322571412879">"ย้ายรายการแล้ว"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"เพิ่มรายการไปยังโฟลเดอร์แล้ว"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"สร้างโฟลเดอร์ด้วย: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"สร้างโฟลเดอร์แล้ว"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"ย้ายไปที่หน้าจอหลัก"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"ย้ายไปที่หน้าจอหลัก"</string>
     <string name="action_resize" msgid="1802976324781771067">"ปรับขนาด"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"เพิ่มความกว้าง"</string>
     <string name="action_increase_height" msgid="459390020612501122">"เพิ่มความสูง"</string>
@@ -158,13 +162,16 @@
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"โปรไฟล์งาน"</string>
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"แอปงานจะติดป้ายไว้และผู้ดูแลระบบไอทีจะมองเห็น"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"รับทราบ"</string>
-    <string name="work_apps_paused_title" msgid="3040901117349444598">"แอปงานปิดอยู่"</string>
+    <string name="work_apps_paused_title" msgid="3040901117349444598">"แอปงานหยุดชั่วคราว"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"คุณจะไม่ได้รับการแจ้งเตือนจากแอปงาน"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"แอปงานจะส่งการแจ้งเตือน ใช้แบตเตอรี่ หรือเข้าถึงตำแหน่งของคุณไม่ได้"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"แอปงานปิดอยู่ แอปงานจะส่งการแจ้งเตือน ใช้แบตเตอรี่ หรือเข้าถึงตำแหน่งของคุณไม่ได้"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"คุณจะไม่ได้รับสายโทรเข้า, SMS หรือการแจ้งเตือนจากแอปงาน"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"แอปงานจะติดป้ายไว้และผู้ดูแลระบบไอทีจะมองเห็น"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"รับทราบ"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"ปิดแอปงาน"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"เปิดแอปงาน"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"หยุดแอปงานชั่วคราว"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"ยกเลิกการหยุดชั่วคราว"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"ตัวกรอง"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"ค้นหาในโทรศัพท์"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"ค้นหาในแท็บเล็ต"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"ไม่สำเร็จ: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 49465c5..61f9227 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Hindi available ang shortcut"</string>
     <string name="home_screen" msgid="5629429142036709174">"Home"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Split screen"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Hatiin sa itaas"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Hatiin sa kaliwa"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Hatiin sa kanan"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Impormasyon ng app para sa %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"I-save ang pares ng app"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Pindutin nang matagal para ilipat ang widget."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"I-double tap at pindutin nang matagal para ilipat ang widget o gumamit ng mga custom na pagkilos."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d ang lapad at %2$d ang taas"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> widget"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Pindutin nang matagal ang widget para ilipat-lipat ito sa Home screen"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Idagdag sa Home screen"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Pindutin nang matagal ang widget para ilipat-lipat ito sa home screen"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Idagdag sa home screen"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Idinagdag sa home screen ang widget na <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Mga Suhestyon"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}one{# widget}other{# na widget}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# shortcut}one{# shortcut}other{# na shortcut}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Personal"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Trabaho"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Mga Pag-uusap"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Pagtatala"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Abot-kamay na mahalagang impormasyon"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Para makakuha ng impormasyon nang hindi nagbubukas ng mga app, puwede kang magdagdag ng mga widget sa iyong Home screen"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Para makakuha ng impormasyon nang hindi nagbubukas ng mga app, puwede kang magdagdag ng mga widget sa iyong home screen"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"I-tap para baguhin ang mga setting ng widget"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Baguhin ang mga setting ng widget"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Maghanap ng mga app"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Naglo-load ng mga app…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Walang nahanap na app na tumutugma sa \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Maghanap ng higit pang mga app"</string>
     <string name="label_application" msgid="8531721983832654978">"App"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Lahat ng app"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Mga Notification"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Pindutin nang matagal para ilipat ang shortcut."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"I-double tap at pindutin nang matagal para ilipat ang shortcut o gumamit ng mga custom na pagkilos."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Walang espasyo sa Home screen na ito"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Walang espasyo sa home screen na ito"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Wala nang lugar sa tray ng Mga Paborito"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Listahan ng mga app"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Mga resulta ng paghahanap"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"I-pin ang Hula"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"i-install ang mga shortcut"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Pinapayagan ang isang app na magdagdag ng mga shortcut nang walang panghihimasok ng user."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"basahin ang mga setting at shortcut ng Home"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Pinapayagan ang app na basahin ang mga setting at shortcut sa Home."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"magsulat ng mga setting at shortcut ng Home"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Pinapayagan ang app na baguhin ang mga setting at shortcut sa Home."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"Hindi pinahihintulutang tumawag ang <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"basahin ang mga setting at shortcut ng home"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Binibigyang-daan ang app na basahin ang mga setting at shortcut sa home."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"magsulat ng mga setting at shortcut ng home"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Binibigyang-daan ang app na baguhin ang mga setting at shortcut sa home."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Hindi ma-load ang widget"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Mga setting ng widget"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"I-tap para tapusin ang pag-set up"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Isa itong app ng system at hindi maaaring i-uninstall."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"I-edit ang Pangalan"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Naka-disable ang <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{May # notification ang {app_name}}one{May # notification ang {app_name}}other{May # na notification ang {app_name}}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{May # notification ang {app_name}}one{May # notification ang {app_name}}other{May # na notification ang {app_name}}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Pahina %1$d ng %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Home screen %1$d ng %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Bagong page ng home screen"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Folder: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> o higit pang item"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Mga Wallpaper"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Wallpaper &amp; istilo"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"I-edit ang Home Screen"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Mga setting ng Home"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Na-disable ng iyong admin"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Payagan ang pag-rotate ng Home screen"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Payagan ang pag-rotate ng home screen"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Kailan maro-rotate ang telepono"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Mga notification dot"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Naka-on"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Upang ipakita ang Mga Notification Dot, i-on ang mga notification ng app para sa <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Baguhin ang mga setting"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Ipakita ang mga notification dot"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Magdagdag ng mga app icon sa Home screen"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Mga Opsyon ng Developer"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Magdagdag ng mga icon ng app sa home screen"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Para sa mga bagong app"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Hindi kilala"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Alisin"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Ini-install ang <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="PROGRESS">%2$s</xliff:g> kumpleto"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Dina-download na ang <xliff:g id="NAME">%1$s</xliff:g>, tapos na ang <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"Hinihintay nang mag-install ang <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Kinakailangang i-update ang app"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Hindi updated ang app para sa icon na ito. Puwede kang manual na mag-update para ma-enable ulit ang shortcut na ito, o alisin ang icon."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"I-update"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Alisin"</string>
     <string name="widgets_list" msgid="796804551140113767">"Listahan ng mga widget"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Nakasara ang listahan ng mga widget"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Idagdag sa Home screen"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Idagdag sa home screen"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Ilipat ang item dito"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Naidagdag sa home screen ang item"</string>
     <string name="item_removed" msgid="851119963877842327">"Naalis na ang item"</string>
     <string name="undo" msgid="4151576204245173321">"I-undo"</string>
     <string name="action_move" msgid="4339390619886385032">"Ilipat ang item"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Ilipat sa row <xliff:g id="NUMBER_0">%1$s</xliff:g> column <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Pumunta sa row <xliff:g id="NUMBER_0">%1$s</xliff:g> column <xliff:g id="NUMBER_1">%2$s</xliff:g> sa <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Ilipat sa posisyon <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Ilipat sa posisyon <xliff:g id="NUMBER">%1$s</xliff:g> sa mga paborito"</string>
     <string name="item_moved" msgid="4606538322571412879">"Nalipat ang item"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Idinagdag ang item sa folder"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Gumawa ng folder na may: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Nagawa ang folder"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Ilipat sa Home screen"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Ilipat sa home screen"</string>
     <string name="action_resize" msgid="1802976324781771067">"I-resize"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Dagdagan ang lapad"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Dagdagan ang taas"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"May badge at nakikita ng iyong IT admin ang mga app para sa trabaho"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Naka-pause ang mga app para sa trabaho"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Hindi ka makakatanggap ng mga notification mula sa iyong mga app para sa trabaho"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Ang mga app mo para sa trabaho ay hindi makakapagpadala sa iyo ng mga notification, makakagamit ng baterya mo, o makaka-access ng iyong lokasyon"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Naka-off ang mga app para sa trabaho. Ang mga app mo para sa trabaho ay hindi makakapagpadala sa iyo ng mga notification, makakagamit ng baterya mo, o makaka-access ng iyong lokasyon"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Hindi ka makakatanggap ng mga tawag sa telepono, text message, o notification mula sa iyong mga app para sa trabaho"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"May badge at nakikita ng iyong IT admin ang mga app para sa trabaho"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"I-off ang mga app para sa trabaho"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"I-on ang mga app para sa trabaho"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"I-pause ang mga app para sa trabaho"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"I-unpause"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filter"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Maghanap sa iyong telepono"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Maghanap sa iyong tablet"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Hindi nagawa: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index bb0e1a8..ef28f18 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Kısayol kullanılamıyor"</string>
     <string name="home_screen" msgid="5629429142036709174">"Ana ekran"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Bölünmüş ekran"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Üst tarafta böl"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Sol tarafta böl"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Sağ tarafta böl"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s uygulama bilgileri"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Uygulama çiftini kaydedin"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Widget\'ı taşımak için dokunup basılı tutun."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Widget\'ı taşımak veya özel işlemleri kullanmak için iki kez dokunup basılı tutun."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"genişlik: %1$d, yükseklik: %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> widget\'ı"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Ana ekranda taşımak için widget\'a dokunup basılı tutun"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Ana ekrana ekle"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Ana ekranda taşımak için widget\'a dokunup basılı tutun"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Ana ekrana ekle"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> widget\'ı ana ekrana eklendi"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Öneriler"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# widget}other{# widget}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# kısayol}other{# kısayol}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Kişisel"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"İş"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Görüşmeler"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Not alma"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Faydalı bilgiler parmaklarınızın ucunda"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Uygulamaları açmadan bilgi almak için Ana ekranınıza widget\'lar ekleyebilirsiniz"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Uygulama açmadan bilgi almak için ana ekranınıza widget ekleyebilirsiniz"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Widget ayarlarını değiştirmek için dokunun"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Anladım"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Widget ayarlarını değiştir"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Uygulamalarda ara"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Uygulamalar yükleniyor…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" ile eşleşen uygulama bulunamadı"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Başka uygulamalar ara"</string>
     <string name="label_application" msgid="8531721983832654978">"Uygulama"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Tüm uygulamalar"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Bildirimler"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Kısayolu taşımak için dokunup basılı tutun."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Kısayolu taşımak veya özel işlemleri kullanmak için iki kez dokunup basılı tutun."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Bu Ana ekranda yer yok"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Bu ana ekranda yer yok"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Favoriler tepsisinde başka yer kalmadı"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Uygulamalar listesi"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Arama sonuçları"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Tahmini Sabitle"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"kısayolları yükle"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Uygulamaya, kullanıcı müdahalesi olmadan kısayol ekleme izni verir."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"Ana ekran ayarlarını ve kısayollarını oku"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Uygulamaya, Ana ekrandaki ayarları ve kısayolları okuma izni verir."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"Ana ekran ayarlarını ve kısayollarını yaz"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Uygulamaya, Ana ekrandaki ayarları ve kısayolları değiştirme izni verir."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> uygulamasının telefon etmesine izin verilmiyor"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"ana ekran ayarlarını ve kısayollarını oku"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Uygulamaya ana ekrandaki ayarları ve kısayolları okuma izni verir."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"ana ekran ayarlarını ve kısayollarını yaz"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Uygulamaya ana ekrandaki ayarları ve kısayolları değiştirme izni verir."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Widget yüklenemiyor"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Widget ayarları"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Kurulumu tamamlamak için dokunun"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Bu bir sistem uygulamasıdır ve yüklemesi kaldırılamaz."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Adı Düzenle"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> devre dışı"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} uygulamasının # bildirimi var}other{{app_name} uygulamasının # bildirimi var}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} uygulamasının # bildirimi var}other{{app_name} uygulamasının # bildirimi var}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Sayfa %1$d / %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Ana ekran %1$d / %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Yeni ana ekran sayfası"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Klasör: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> veya daha fazla öğe"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Duvar Kağıtları"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Duvar kağıdı ve stil"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Ana ekranı düzenleyin"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Ana ekran ayarları"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Yöneticiniz tarafından devre dışı bırakıldı"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Ana ekranı döndürmeye izin ver"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Ana ekranı döndürmeye izin ver"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Telefon döndürüldüğünde"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Bildirim noktaları"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Açık"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Bildirim Noktaları\'nı göstermek için <xliff:g id="NAME">%1$s</xliff:g> uygulamasının bildirimlerini açın"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Ayarları değiştir"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Bildirim noktalarını göster"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Uygulama simgelerini Ana ekrana ekle"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Geliştirici Seçenekleri"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Uygulama simgelerini ana ekrana ekle"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Yeni uygulamalar için"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Bilinmiyor"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Kaldır"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> yükleniyor, <xliff:g id="PROGRESS">%2$s</xliff:g> tamamlandı"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> indiriliyor, <xliff:g id="PROGRESS">%2$s</xliff:g> tamamlandı"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> uygulaması yüklenmek için bekliyor"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Uygulama güncellemesi gerekli"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Bu simgenin uygulaması güncellenmemiş. Simgeyi kaldırabilir ya da uygulamayı manuel olarak güncelleyerek bu kısayolu yeniden etkinleştirebilirsiniz."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Güncelle"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Kaldır"</string>
     <string name="widgets_list" msgid="796804551140113767">"Widget listesi"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Widget listesi kapalı"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Ana ekrana ekle"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Ana ekrana ekle"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Öğeyi buraya taşı"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Öğe ana ekrana eklendi"</string>
-    <string name="item_removed" msgid="851119963877842327">"Öğe kaldırıldı"</string>
+    <string name="item_removed" msgid="851119963877842327">"Öğe silindi"</string>
     <string name="undo" msgid="4151576204245173321">"Geri al"</string>
     <string name="action_move" msgid="4339390619886385032">"Öğeyi taşı"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"<xliff:g id="NUMBER_0">%1$s</xliff:g>. satır <xliff:g id="NUMBER_1">%2$s</xliff:g>. sütuna taşı"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g> sayfasında <xliff:g id="NUMBER_0">%1$s</xliff:g>. satır <xliff:g id="NUMBER_1">%2$s</xliff:g>. sütuna taşı"</string>
     <string name="move_to_position" msgid="6750008980455459790">"<xliff:g id="NUMBER">%1$s</xliff:g>. sıraya taşı"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Favorilerde <xliff:g id="NUMBER">%1$s</xliff:g>. sıraya taşı"</string>
     <string name="item_moved" msgid="4606538322571412879">"Öğe taşındı"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Öğe, klasöre eklendi"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Şu öğeyle klasör oluştur: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Klasör oluşturuldu"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Ana ekrana taşı"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Ana ekrana taşı"</string>
     <string name="action_resize" msgid="1802976324781771067">"Yeniden boyutlandır"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Genişliği artır"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Yüksekliği artır"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"İş uygulamaları rozetle işaretlenmiş olup BT yöneticisi tarafından görülebilir"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Anladım"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"İş uygulamaları duraklatıldı"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"İş uygulamalarınızdan bildirim almazsınız"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"İş uygulamaları size bildirim gönderemez, pilinizi kullanamaz veya konum bilginize erişemez"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"İş uygulamaları kapalı. İş uygulamalarınız size bildirim gönderemez, pilinizi kullanamaz veya konum bilginize erişemez"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"İş uygulamalarınızdan telefon araması, kısa mesaj veya bildirim almazsınız"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"İş uygulamaları rozetle işaretlenmiş olup BT yöneticisi tarafından görülebilir"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Anladım"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"İş uygulamalarını kapat"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"İş uygulamalarını aç"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"İş uygulamalarını duraklat"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Devam ettir"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Filtre"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"telefonunuzda arama yapmak"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Tabletinizde arama yapma"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Başarısız: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 998ad84..822936b 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Ярлик недоступний"</string>
     <string name="home_screen" msgid="5629429142036709174">"Головний екран"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Розділити екран"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Розділити вгорі"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Розділити зліва"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Розділити справа"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Інформація про додаток для %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Зберегти пару додатків"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Натисніть і втримуйте, щоб перемістити віджет."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Двічі натисніть і втримуйте віджет, щоб перемістити його або виконати інші дії."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"Ширина – %1$d, висота – %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Віджет <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Натисніть і втримуйте віджет, щоб перемістити його в потрібне місце на головному екрані"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Додати на головний екран"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Натисніть і втримуйте віджет, щоб перемістити його в потрібне місце на головному екрані"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Додати на головний екран"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Віджет <xliff:g id="WIDGET_NAME">%1$s</xliff:g> додано на головний екран"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Пропозиції"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# віджет}one{# віджет}few{# віджети}many{# віджетів}other{# віджета}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# ярлик}one{# ярлик}few{# ярлики}many{# ярликів}other{# ярлика}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Особисті"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Робочі"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Розмови"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Створення нотаток"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Корисна інформація завжди під рукою"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Щоб отримувати інформацію, не відкриваючи додатки, ви можете додати на головний екран віджети"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Щоб отримувати інформацію, не відкриваючи додатки, ви можете додати на головний екран віджети"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Натисніть, щоб змінити налаштування віджета"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Змінити налаштування віджета"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Пошук додатків"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Завантаження додатків…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Немає додатків для запиту \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Шукати ще додатки"</string>
     <string name="label_application" msgid="8531721983832654978">"Додаток"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Усі додатки"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Сповіщення"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Натисніть і втримуйте, щоб перемістити ярлик."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Двічі натисніть і втримуйте ярлик, щоб перемістити його або виконати інші дії."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"На головному екрані немає місця"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"На головному екрані немає місця"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"В області \"Вибране\" немає місця"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Список додатків"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Результати пошуку"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Закріпити передбачений додаток"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"створення ярликів"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Дозволяє програмі самостійно додавати ярлики."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"читати налаштування та ярлики головного екрана"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Дозволяє програмі читати налаштування та ярлики на головному екрані."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"записувати налаштування та ярлики головного екрана"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Дозволяє програмі змінювати налаштування та ярлики на головному екрані."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"Додаток <xliff:g id="APP_NAME">%1$s</xliff:g> не має дозволу телефонувати"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"читати налаштування та ярлики головного екрана"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Дозволяє додатку читати налаштування та ярлики на головному екрані."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"записувати налаштування та ярлики головного екрана"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Дозволяє додатку змінювати налаштування та ярлики на головному екрані."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Не вдається завантажити віджет"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Налаштування віджета"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Торкніться, щоб завершити налаштування"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Це системна програма, її неможливо видалити."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Редагувати назву"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> вимкнено"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{Додаток {app_name} має # сповіщення}one{Додаток {app_name} має # сповіщення}few{Додаток {app_name} має # сповіщення}many{Додаток {app_name} має # сповіщень}other{Додаток {app_name} має # сповіщення}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{Додаток {app_name} має # сповіщення}one{Додаток {app_name} має # сповіщення}few{Додаток {app_name} має # сповіщення}many{Додаток {app_name} має # сповіщень}other{Додаток {app_name} має # сповіщення}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Сторінка %1$d з %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Головний екран %1$d з %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Нова сторінка головного екрана"</string>
@@ -102,10 +100,11 @@
     <string name="folder_name_format_exact" msgid="8626242716117004803">"Папка \"<xliff:g id="NAME">%1$s</xliff:g>\", елементів: <xliff:g id="SIZE">%2$d</xliff:g>"</string>
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Папка \"<xliff:g id="NAME">%1$s</xliff:g>\", елементів: <xliff:g id="SIZE">%2$d</xliff:g> або більше"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Фонові малюнки"</string>
-    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Оформлення та стиль"</string>
+    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Оформлення і стиль"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Редагувати головний екран"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Налаштування головного екрана"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Вимкнув адміністратор"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Дозволити обертання головного екрана"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Дозволити обертання головного екрана"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Коли телефон обертається"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Значки сповіщень"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Увімкнено"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Щоб показувати значки сповіщень, увімкніть сповіщення в додатку <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Змінити налаштування"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Показувати значки сповіщень"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Додавати значки додатків на головний екран"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Параметри розробника"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Розміщати значки додатків на головному екрані"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Для нових додатків"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Невідомо"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Прибрати"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> встановлюється, виконано <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> завантажується, <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> очікує на завантаження"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Потрібно оновити додаток"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Додаток для цього значка не оновлено. Ви можете оновити його вручну, щоб знову ввімкнути цю швидку команду, або можете вилучити значок."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Оновити"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Вилучити"</string>
     <string name="widgets_list" msgid="796804551140113767">"Список віджетів"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Список віджектів закрито"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Додати на головний екран"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Додати на головний екран"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Перемістити елемент сюди"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Елемент додано на головний екран"</string>
     <string name="item_removed" msgid="851119963877842327">"Елемент вилучено"</string>
     <string name="undo" msgid="4151576204245173321">"Відмінити"</string>
     <string name="action_move" msgid="4339390619886385032">"Перемістити елемент"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Перемістити в рядок <xliff:g id="NUMBER_0">%1$s</xliff:g>, стовпець <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Перенести: <xliff:g id="STRING">%3$s</xliff:g>, рядок <xliff:g id="NUMBER_0">%1$s</xliff:g>, стовпець <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Перемістити на <xliff:g id="NUMBER">%1$s</xliff:g> місце"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Перемістити у вибране на <xliff:g id="NUMBER">%1$s</xliff:g> місце"</string>
     <string name="item_moved" msgid="4606538322571412879">"Елемент переміщено"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Елемент додано в папку"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Створити папку з: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Папку створено"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Перемістити на головний екран"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Перемістити на головний екран"</string>
     <string name="action_resize" msgid="1802976324781771067">"Змінити розміри"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Збільшити ширину"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Збільшити висоту"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Робочі додатки мають спеціальну позначку. Їх бачить системний адміністратор."</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Робочі додатки призупинено"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Ви не отримуватимете сповіщення від робочих додатків"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Ваші робочі додатки не можуть надсилати сповіщення, використовувати заряд акумулятора й отримувати доступ до геоданих"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Робочі додатки вимкнено. Вони не можуть надсилати сповіщення, використовувати заряд акумулятора й отримувати доступ до геоданих."</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Ви не отримуватимете телефонні виклики, текстові повідомлення, а також сповіщення від робочих додатків"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Робочі додатки мають спеціальну позначку. Їх бачить системноий адміністратор."</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Зрозуміло"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Вимкнути робочі додатки"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Увімкнути робочі додатки"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Призупинити робочі додатки"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Відновити"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Фільтр"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Пошук на телефоні"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Пошук на планшеті"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Не вдалося <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 1b4a3d1..1fffcfd 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"شارٹ کٹ دستیاب نہیں ہے"</string>
     <string name="home_screen" msgid="5629429142036709174">"ہوم"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"اسپلٹ اسکرین"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"اوپر کی طرف تقسیم کریں"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"بائیں طرف تقسیم کریں"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"دائیں طرف تقسیم کریں"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"‏%1$s کے لیے ایپ کی معلومات"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"ایپس کے جوڑے کو محفوظ کریں"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"ویجیٹ منتقل کرنے کے لیے ٹچ کریں اور پکڑ کر رکھیں۔"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"ویجیٹ کو منتقل کرنے یا حسب ضرورت کارروائیاں استعمال کرنے کے لیے دوبار تھپتھپائیں اور پکڑ کر رکھیں۔"</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"‏%1$d چوڑا اور ‎%2$d اونچا"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> ویجیٹ"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"ویجیٹ کو ہوم اسکرین کے چاروں طرف منتقل کرنے کیلئے اسے ٹچ کریں اور دبائے رکھیں"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"ہوم اسکرین میں شامل کریں"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"ویجیٹ کو ہوم اسکرین کے چاروں طرف منتقل کرنے کے لیے اسے ٹچ کریں اور دبائے رکھیں"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"ہوم اسکرین میں شامل کریں"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> ویجیٹ کو ہوم اسکرین میں شامل کیا گیا"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"تجاویز"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# ویجیٹ}other{# ویجیٹس}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# شارٹ کٹ}other{# شارٹ کٹس}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>، <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"ذاتی"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"دفتری ویجیٹس"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"گفتگوئیں"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"نوٹ لکھنا"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"مفید معلومات کو آسانی سے حاصل کریں"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"ایپس کو کھولے بغیر معلومات حاصل کرنے کے لیے آپ اپنی ہوم اسکرین پر ویجیٹس شامل کر سکتے ہیں"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"ایپس کو کھولے بغیر معلومات حاصل کرنے کے لیے آپ اپنی ہوم اسکرین پر ویجیٹس شامل کر سکتے ہیں"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"ویجیٹ ترتیبات تبدیل کرنے کے لیے تھپتھپائیں"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"سمجھ آ گئی"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"ویجیٹ ترتیبات تبدیل کریں"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"ایپس تلاش کریں"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"ایپس لوڈ کی جا رہی ہیں…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"\"<xliff:g id="QUERY">%1$s</xliff:g>\" سے مماثل کوئی ایپس نہیں ملیں"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"مزید ایپس تلاش کریں"</string>
     <string name="label_application" msgid="8531721983832654978">"ایپ"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"سبھی ایپس"</string>
     <string name="notifications_header" msgid="1404149926117359025">"اطلاعات"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"شارٹ کٹ منتقل کرنے کیلیے ٹچ کریں اور پکڑ کر رکھیں۔"</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"شارٹ کٹ کو منتقل کرنے یا حسب ضرورت کارروائیاں استعمال کرنے کے لیے دوبار تھپتھپائیں اور پکڑ کر رکھیں۔"</string>
-    <string name="out_of_space" msgid="6692471482459245734">"اس ہوم اسکرین پر کوئی گنجائش نہیں ہے"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"اس ہوم اسکرین پر کوئی گنجائش نہیں ہے"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"پسندیدہ ٹرے میں مزید کوئی گنجائش نہیں ہے"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"ایپس کی فہرست"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"تلاش کے نتائج"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"پیشگوئی پن کریں"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"شارٹ کٹس انسٹال کریں"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"کسی ایپ کو صارف کی مداخلت کے بغیر شارٹ کٹس شامل کرنے کی اجازت دیتا ہے۔"</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"ہوم ترتیبات اور شارٹ کٹس کو پڑھیں"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"ایپ کو ہوم میں ترتیبات اور شارٹ کٹس کو پڑھنے کی اجازت دیتا ہے۔"</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"ہوم ترتیبات اور شارٹ کٹس کو لکھیں"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"ایپ کو ہوم میں ترتیبات اور شارٹ کٹس کو تبدیل کرنے کی اجازت دیتا ہے۔"</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> کو فون کالیں کرنے کی اجازت نہیں ہے"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"ہوم ترتیبات اور شارٹ کٹس کو پڑھیں"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"اس سے ایپ کو ہوم اسکرین میں ترتیبات اور شارٹ کٹس کو پڑھنے کی اجازت ملتی ہے۔"</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"ہوم ترتیبات اور شارٹ کٹس کو لکھیں"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"اس سے ایپ کو ہوم اسکرین میں ترتیبات اور شارٹ کٹس کو تبدیل کرنے کی اجازت ملتی ہے۔"</string>
     <string name="gadget_error_text" msgid="740356548025791839">"ویجیٹ لوڈ نہیں کیا جا سکتا"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"ویجیٹ کی ترتیبات"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"سیٹ اپ مکمل کرنے کیلئے تھپتھپائیں"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"یہ ایک سسٹم ایپ ہے اور اسے اَن انسٹال نہیں کیا جا سکتا ہے۔"</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"نام میں ترمیم کریں"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> غیر فعال ہے"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} میں # اطلاع ہے}other{{app_name} میں # اطلاعات ہیں}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} میں # اطلاع ہے}other{{app_name} میں # اطلاعات ہیں}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"‏صفحہ ‎%1$d از ‎%2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"‏ہوم اسکرین ‎%1$d از ‎%2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"نیا ہوم اسکرین صفحہ"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"فولڈر: <xliff:g id="NAME">%1$s</xliff:g>، <xliff:g id="SIZE">%2$d</xliff:g> یا مزید آئٹمز"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"وال پیپرز"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"وال پیپر اور طرز"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"ہوم اسکرین میں ترمیم کریں"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"ہوم ترتیبات"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"آپ کے منتظم کی طرف سے غیر فعال کر دیا گیا"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"ہوم اسکرین گھمانے کی اجازت دیں"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"ہوم اسکرین گھمانے کی اجازت دیں"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"جب فون گھمایا جاتا ہے"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"اطلاعاتی ڈاٹس"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"آن ہے"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"اطلاعاتی ڈاٹس دکھانے کی خاطر <xliff:g id="NAME">%1$s</xliff:g> کیلئے ایپ کی اطلاعات آن کریں"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"ترتیبات تبدیل کریں"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"اطلاعاتی ڈاٹس دکھائیں"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"ہوم اسکرین میں ایپ آئیکنز شامل کریں"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"ڈویلپر کے اختیارات"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"ہوم اسکرین میں ایپ آئیکنز شامل کریں"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"نئی ایپس کیلئے"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"نامعلوم"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"ہٹائیں"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> انسٹال کی جا رہی ہے، <xliff:g id="PROGRESS">%2$s</xliff:g> مکمل ہو گئی"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> ڈاؤن لوڈ ہو رہا ہے، <xliff:g id="PROGRESS">%2$s</xliff:g> مکمل ہو گیا"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> انسٹال ہونے کا انتظار کر رہی ہے"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"ایپ کی اپ ڈیٹ درکار ہے"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"اس آئیکن کیلئے ایپ کو اپ ڈیٹ نہیں کیا گیا ہے۔ آپ اس شارٹ کٹ کو دوبارہ فعال کرنے کے لیے دستی طور پر اپ ڈیٹ کر سکتے ہیں، یا آئیکن کو ہٹا سکتے ہیں۔"</string>
+    <string name="dialog_update" msgid="2178028071796141234">"اپ ڈیٹ کریں"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"ہٹائیں"</string>
     <string name="widgets_list" msgid="796804551140113767">"ویجیٹس کی فہرست"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"ویجیٹس کی فہرست بند کر دی گئی"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"ہوم اسکرین میں شامل کریں"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"ہوم اسکرین میں شامل کریں"</string>
     <string name="action_move_here" msgid="2170188780612570250">"آئٹم یہاں منتقل کریں"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"آئٹم کو ہوم اسکرین میں شامل کر دیا گیا"</string>
     <string name="item_removed" msgid="851119963877842327">"آئٹم ہٹا دیا گیا"</string>
     <string name="undo" msgid="4151576204245173321">"کالعدم کریں"</string>
     <string name="action_move" msgid="4339390619886385032">"آئٹم منتقل کریں"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"قطار <xliff:g id="NUMBER_0">%1$s</xliff:g> کالم <xliff:g id="NUMBER_1">%2$s</xliff:g> میں منتقل کریں"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g> میں قطار <xliff:g id="NUMBER_0">%1$s</xliff:g> کالم <xliff:g id="NUMBER_1">%2$s</xliff:g> میں منتقل کریں"</string>
     <string name="move_to_position" msgid="6750008980455459790">"پوزیشن <xliff:g id="NUMBER">%1$s</xliff:g> میں منتقل کریں"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"پسندیدہ پوزیشن <xliff:g id="NUMBER">%1$s</xliff:g> میں منتقل کریں"</string>
     <string name="item_moved" msgid="4606538322571412879">"آئٹم منتقل کر دیا گیا"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"آئٹم فولڈر میں شامل کر دیا گیا"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"اس کے ساتھ فولڈر بنائیں: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"فولڈر بنا دیا گیا"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"ہوم اسکرین میں منتقل کریں"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"ہوم اسکرین پر منتقل کریں"</string>
     <string name="action_resize" msgid="1802976324781771067">"سائز تبدیل کریں"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"چوڑائی بڑھائیں"</string>
     <string name="action_increase_height" msgid="459390020612501122">"اونچائی بڑھائیں"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"‏ورک ایپس پر بَیج لگا ہوتا ہے اور آپ کا IT منتظم انہیں دیکھ سکتا ہے"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"سمجھ آ گئی"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"ورک ایپس موقوف ہیں"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"آپ کو اپنی ورک ایپس سے اطلاعات موصول نہیں ہوں گی"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"آپ کی ورک ایپس آپ کو اطلاعات نہیں بھیج سکتیں، آپ کی بیٹری کا استعمال یا آپ کے مقام تک رسائی حاصل نہیں کر سکتی ہیں"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"ورک ایپس آف ہیں۔ آپ کی ورک ایپس آپ کو اطلاعات نہیں بھیج سکتیں، آپ کی بیٹری استعمال یا آپ کے مقام تک رسائی حاصل نہیں کر سکتی ہیں"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"آپ کو اپنی ورک ایپس سے فون کالز، ٹیکسٹ پیغامات یا اطلاعات موصول نہیں ہوں گی"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"‏ورک ایپس پر بَیج لگا ہوتا ہے اور آپ کا IT منتظم انہیں دیکھ سکتا ہے"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"سمجھ آ گئی"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"ورک ایپس آف کریں"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"ورک ایپس آن کریں"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"ورک ایپس موقوف کریں"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"چلائیں"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"فلٹر"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"اپنے فون پر تلاش کریں"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"اپنے ٹیبلیٹ پر تلاش کریں"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"ناکام ہو گيا: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 8984af8..db381ca 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Tezkor tugmadan foydalanib bo‘lmaydi"</string>
     <string name="home_screen" msgid="5629429142036709174">"Bosh ekran"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Ekranni ikkiga ajratish"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Yuqoriga ajratish"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Chapga ajratish"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Oʻngga ajratish"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s ilovasi axboroti"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Ilova juftini saqlash"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Vidjetni bosib turgan holatda suring."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Ikki marta bosib va bosib turgan holatda vidjetni tanlang yoki maxsus amaldan foydalaning."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"Eni %1$d, bo‘yi %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> ta vidjet"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Vidjetni ushlagan holda kerakli joyga siljiting"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Bosh ekranga chiqarish"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Bosh ekranda surish uchun vidjet ustiga bosib turing"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Bosh ekranga chiqarish"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"<xliff:g id="WIDGET_NAME">%1$s</xliff:g> vidjeti bosh ekranga qoʻshildi"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Takliflar"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# ta vidjet}other{# ta vidjet}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# ta yorliq}other{# ta yorliq}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Shaxsiy"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Ish"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Suhbatlar"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Qayd olish"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Barcha kerakli axborot doim yoningizda"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Kerakli ilovalarni ochmasdan turib ulardan axborot olish uchun vidjetlarni bosh ekranga chiqaring"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Kerakli ilovalarni ochmasdan turib ulardan axborot olish uchun vidjetlarni bosh ekranga chiqaring"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Vidjet sozlamalarini oʻzgartirish uchun bosing"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"OK"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Vidjet sozlamalarini oʻzgartirish"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Ilovalarni qidirish"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Ilovalar yuklanmoqda…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"“<xliff:g id="QUERY">%1$s</xliff:g>” bilan mos hech qanday ilova topilmadi"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Boshqa ilovalarni qidirish"</string>
     <string name="label_application" msgid="8531721983832654978">"Ilova"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Barcha ilovalar"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Bildirishnomalar"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Yorliqni bosib turgan holatda suring."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Ikki marta bosing va yorliqni bosib turgan holatda suring yoki maxsus amaldan foydalaning."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Bosh ekranda joy qolmadi."</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Bosh ekranda joy qolmadi"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Ajratilganlarda birorta ham xona yo‘q"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Ilovalar ro‘yxati"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Qidiruv natijalari"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Tavsiyani mahkamlash"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"yorliqlar yaratish"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Ilovalarga foydalanuvchidan so‘ramasdan yorliqlar qo‘shishga ruxsat beradi."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"Uy sozlamalari va yorliqlarini o‘qish"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Ilovaga \"Uy\" ekranidagi yorliqlar va sozlamalarni o‘qish uchun ruxsat beradi."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"Uy sozlamalari va yorliqlarini yozish"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Ilovaga \"Uy\" ekranidagi yorliqlar va sozlamalrni o‘zgartirish uchun ruxsat beradi."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilovasiga qo‘ng‘iroqlarni amalga oshirishga ruxsat berilmagan"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"Bosh ekrandagi sozlamalar va yorliqlarni koʻrish"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Ilovaga bosh ekrandagi yorliqlar va sozlamalarni oʻqish uchun ruxsat beradi."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"Bosh ekrandagi sozlamalar va yorliqlarni oʻzgartirish"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Ilova bosh ekrandagi yorliqlar va sozlamalarni oʻzgartirishi mumkin."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Vidjet yuklanmadi"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Vidjet sozlamalari"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Sozlashni yakunlash uchun bosing"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Bu tizim ilovasi, shuning uchun o‘chirib bo‘lmaydi."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Nomini tahrirlash"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilovasi o‘chirib qo‘yildi"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} ilovasida # ta bildirishnoma bor}other{{app_name} ilovasida # ta bildirishnoma bor}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} ilovasida # ta bildirishnoma bor}other{{app_name} ilovasida # ta bildirishnoma bor}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"%2$ddan %1$d ta sahifa"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Uy ekrani %2$ddan %1$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Yangi bosh ekran sahifasi"</string>
@@ -103,18 +101,20 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Jild: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> va undan ortiq fayllar"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Fon rasmlari"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Fon rasmi va uslubi"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Bosh ekranni tahrirlash"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Bosh ekran sozlamalari"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Administrator tomonidan o‘chirilgan"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Bosh ekranni burishga ruxsat"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Bosh ekranni burishga ruxsat"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Telefon burilganda"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Bildirishnoma belgilari"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Yoniq"</string>
-    <string name="notification_dots_desc_off" msgid="1760796511504341095">"Yoqilmagan"</string>
+    <string name="notification_dots_desc_off" msgid="1760796511504341095">"Oʻchiq"</string>
     <string name="title_missing_notification_access" msgid="7503287056163941064">"Bildirishnomalarga ruxsat berilmagan"</string>
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Bildirishnoma belgilarini ko‘rsatish uchun <xliff:g id="NAME">%1$s</xliff:g> ilovasida bildirishnomalarni yoqing"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Sozlamalarni o‘zgartirish"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Bildirishnoma belgilarini chiqarish"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Ilova ikonkalarini bosh ekranga chiqarish"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Dasturchi sozlamalari"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Ilova ikonkalarini bosh ekranga chiqarish"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Yangi o‘rnatilgan ilovalar ikonkasini bosh ekranga chiqarish"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Noma’lum"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Olib tashlash"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"<xliff:g id="NAME">%1$s</xliff:g> oʻrnatlmoqda, <xliff:g id="PROGRESS">%2$s</xliff:g> yakunlandi"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"<xliff:g id="NAME">%1$s</xliff:g> yuklab olinmoqda, <xliff:g id="PROGRESS">%2$s</xliff:g> bajarildi"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> ilovasi o‘rnatilishi kutilmoqda"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Ilovani yangilash zarur"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Bu belgi uchun ilova yangilanmagan. Ushbu yorliqni qayta yoqish uchun oddiy usulda yangilashingiz yoki belgini olib tashlashingiz mumkin."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Yangilash"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Olib tashlash"</string>
     <string name="widgets_list" msgid="796804551140113767">"Vidjetlar ro‘yxati"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Vidjetlar ro‘yxati yopildi"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Bosh ekranga chiqarish"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Bosh ekranga chiqarish"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Obyektni bu yerga ko‘chirish"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Obyekt bosh ekranga qo‘shildi"</string>
     <string name="item_removed" msgid="851119963877842327">"Element olib tashlandi"</string>
     <string name="undo" msgid="4151576204245173321">"Qaytarish"</string>
     <string name="action_move" msgid="4339390619886385032">"Obyektni ko‘chirib o‘tkazish"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"<xliff:g id="NUMBER_0">%1$s</xliff:g> <xliff:g id="NUMBER_1">%2$s</xliff:g> katakka olish"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"<xliff:g id="STRING">%3$s</xliff:g> ichidagi <xliff:g id="NUMBER_0">%1$s</xliff:g>-qator <xliff:g id="NUMBER_1">%2$s</xliff:g>-ustuniga oʻting"</string>
     <string name="move_to_position" msgid="6750008980455459790">"<xliff:g id="NUMBER">%1$s</xliff:g>-joyga olish"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Sevimlilarga olish (<xliff:g id="NUMBER">%1$s</xliff:g>)"</string>
     <string name="item_moved" msgid="4606538322571412879">"Element ko‘chirib o‘tkazildi"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Element jildga qo‘shildi"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"<xliff:g id="NAME">%1$s</xliff:g> bilan jild yaratish"</string>
     <string name="folder_created" msgid="6409794597405184510">"Jild yaratildi"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Bosh ekranga ko‘chirish"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Bosh ekranga koʻchirish"</string>
     <string name="action_resize" msgid="1802976324781771067">"O‘lchamini o‘zgartirish"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Enini uzaytirish"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Bo‘yini uzaytirish"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Ishga oid ilovalarning maxsus belgisi bor hamda ular administratoringizga koʻrinadi"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Ishga oid ilovalar pauza qilingan"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Ishga oid ilovalardan bildirishnomalar kelmaydi"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Ishga oid ilovalar batareya sarfi haqida bildirishnomalar yubora olmaydi va joylashuv axborotidan foydalana olmaydi"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Ishga oid ilovalar faolsizlantirilgan. Ular batareya sarfi haqida bildirishnomalar yubora olmaydi va joylashuv axborotidan foydalana olmaydi"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Ishga oid ilovalardan telefon chaqiruvi, SMS xabar yoki bildirishnoma kelmaydi"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Ishga oid ilovalarning maxsus belgisi bor hamda ular administratoringizga koʻrinadi"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"OK"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Ishga oid ilovalarni faolsizlantirish"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Ishga oid ilovalarni yoqish"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Ishga oid ilovalarni pauza qilish"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Pauzadan chiqarish"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Saralash"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Telefondan qidirish"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Planshetingizni qidiring"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Xato: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-v31/colors.xml b/res/values-v31/colors.xml
index 7bbdbd1..4ffff57 100644
--- a/res/values-v31/colors.xml
+++ b/res/values-v31/colors.xml
@@ -20,19 +20,26 @@
     <color name="popup_color_primary_light">@android:color/system_accent2_50</color>
     <color name="popup_color_secondary_light">@android:color/system_neutral2_100</color>
     <color name="popup_color_tertiary_light">@android:color/system_neutral2_300</color>
+    <color name="popup_text_color_light">@android:color/system_neutral1_900</color>
     <color name="popup_color_neutral_dark">@android:color/system_neutral1_1000</color>
     <color name="popup_color_primary_dark">@android:color/system_neutral2_800</color>
     <color name="popup_color_secondary_dark">@android:color/system_neutral1_900</color>
     <color name="popup_color_tertiary_dark">@android:color/system_neutral2_700</color>
+    <color name="popup_text_color_dark">@android:color/system_neutral1_100</color>
 
     <color name="popup_notification_dot_light">@android:color/system_accent1_100</color>
     <color name="popup_notification_dot_dark">@android:color/system_accent2_600</color>
 
+    <color name="notification_dot_color_light">@android:color/system_accent3_200</color>
+    <color name="notification_dot_color_dark">@android:color/system_accent3_100</color>
+
     <color name="workspace_text_color_light">@android:color/system_neutral1_0</color>
     <color name="workspace_text_color_dark">@android:color/system_neutral1_1000</color>
 
-    <color name="folder_hint_text_color_light">@android:color/system_neutral1_50</color>
-    <color name="folder_hint_text_color_dark">@android:color/system_neutral2_700</color>
+    <color name="folder_text_color_light">@android:color/system_neutral1_900</color>
+    <color name="folder_text_color_dark">@android:color/system_neutral1_100</color>
+    <color name="folder_hint_text_color_light">@android:color/system_neutral2_700</color>
+    <color name="folder_hint_text_color_dark">@android:color/system_neutral2_200</color>
 
     <color name="text_color_primary_dark">@android:color/system_neutral1_50</color>
     <color name="text_color_secondary_dark">@android:color/system_neutral2_200</color>
@@ -40,9 +47,8 @@
 
     <color name="wallpaper_popup_scrim">@android:color/system_neutral1_900</color>
 
-    <color name="folder_dot_color">@android:color/system_accent3_100</color>
     <color name="folder_pagination_color_light">@android:color/system_accent1_600</color>
-    <color name="folder_pagination_color_dark">@android:color/system_accent2_100</color>
+    <color name="folder_pagination_color_dark">@android:color/system_accent1_200</color>
 
     <color name="home_settings_header_accent">@android:color/system_accent1_600</color>
     <color name="home_settings_header_collapsed">@android:color/system_neutral1_100</color>
@@ -55,5 +61,45 @@
     <color name="home_settings_track_off_color">@android:color/system_neutral2_600</color>
 
     <color name="workspace_accent_color_light">@android:color/system_accent1_100</color>
-    <color name="workspace_accent_color_dark">@android:color/system_accent2_600</color>
+    <color name="workspace_accent_color_dark">@android:color/system_accent1_900</color>
+    <color name="workspace_surface_color">@android:color/system_accent1_100</color>
+    <color name="drop_target_hover_text_color_light">@android:color/system_accent1_900</color>
+    <color name="drop_target_hover_text_color_dark">@android:color/system_accent1_100</color>
+    <color name="drop_target_hover_button_color_light">@android:color/system_accent1_100</color>
+    <color name="drop_target_hover_button_color_dark">@android:color/system_accent1_700</color>
+
+    <color name="preload_icon_accent_color_light">@android:color/system_accent1_600</color>
+    <color name="preload_icon_background_color_light">@android:color/system_accent2_200</color>
+    <color name="preload_icon_accent_color_dark">@android:color/system_accent1_300</color>
+    <color name="preload_icon_background_color_dark">@android:color/system_neutral2_700</color>
+
+    <color name="widget_picker_title_color_light">
+        @android:color/system_neutral1_900</color>
+    <color name="widget_picker_header_app_title_color_light">
+        @android:color/system_neutral1_900</color>
+    <color name="widget_picker_header_app_subtitle_color_light">
+        @android:color/system_neutral2_700</color>
+    <color name="widget_picker_header_background_color_light">
+        @android:color/system_accent2_100</color>
+    <color name="widget_picker_suggestions_icon_background_color_light">
+        @android:color/system_accent1_0</color>
+    <color name="widget_picker_suggestions_icon_color_light">
+        @android:color/system_accent1_600</color>
+    <color name="widget_picker_search_text_color_light">
+        @android:color/system_neutral2_700</color>
+    <color name="widget_picker_tab_background_selected_light">
+        @android:color/system_accent1_600</color>
+    <color name="widget_picker_tab_background_unselected_light">
+        @android:color/system_neutral1_100</color>
+    <color name="widget_picker_selected_tab_text_color_light">
+        @android:color/system_accent1_0</color>
+    <color name="widget_picker_unselected_tab_text_color_light">
+        @android:color/system_neutral2_700</color>
+    <color name="widget_picker_collapse_handle_color_light">
+        @android:color/system_neutral2_200</color>
+
+    <color name="work_fab_bg_color">
+        @android:color/system_accent1_200</color>
+    <color name="work_fab_icon_color">
+        @android:color/system_accent1_900</color>
 </resources>
diff --git a/res/values-v31/styles.xml b/res/values-v31/styles.xml
index 008a77c..932ce38 100644
--- a/res/values-v31/styles.xml
+++ b/res/values-v31/styles.xml
@@ -24,7 +24,7 @@
         <item name="android:listPreferredItemPaddingStart">24dp</item>
         <item name="android:navigationBarColor">@android:color/transparent</item>
         <item name="android:statusBarColor">@android:color/transparent</item>
-        <item name="android:switchStyle">@style/HomeSettings.SwitchStyle</item>
+        <item name="android:switchStyle">@style/SwitchStyle</item>
         <item name="android:textAppearanceListItem">@style/HomeSettings.PreferenceTitle</item>
         <item name="android:windowActionBar">false</item>
         <item name="android:windowNoTitle">true</item>
@@ -61,13 +61,6 @@
         <item name="iconSpaceReserved">@bool/home_settings_icon_space_reserved</item>
     </style>
 
-    <style name="HomeSettings.SwitchStyle"
-            parent="@android:style/Widget.Material.CompoundButton.Switch">
-        <item name="android:switchMinWidth">52dp</item>
-        <item name="android:thumb">@drawable/home_settings_switch_thumb</item>
-        <item name="android:track">@drawable/home_settings_switch_track</item>
-    </style>
-
     <style name="HomeSettings.PreferenceTitle"
             parent="@android:style/TextAppearance.Material.Subhead">
         <item name="android:fontFamily">google-sans</item>
diff --git a/res/values-v33/style.xml b/res/values-v33/style.xml
index bd48468..1261b23 100644
--- a/res/values-v33/style.xml
+++ b/res/values-v33/style.xml
@@ -23,7 +23,7 @@
         <item name="android:listPreferredItemPaddingStart">24dp</item>
         <item name="android:navigationBarColor">@android:color/transparent</item>
         <item name="android:statusBarColor">@android:color/transparent</item>
-        <item name="android:switchStyle">@style/HomeSettings.SwitchStyle</item>
+        <item name="android:switchStyle">@style/SwitchStyle</item>
         <item name="android:textAppearanceListItem">@style/HomeSettings.PreferenceTitle</item>
         <item name="android:windowActionBar">false</item>
         <item name="android:windowNoTitle">true</item>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 6972ee3..b73bc61 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Lối tắt không khả dụng"</string>
     <string name="home_screen" msgid="5629429142036709174">"Màn hình chính"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Chia đôi màn hình"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Chia đôi màn hình lên phía trên cùng"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Chia đôi màn hình về bên trái"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Chia đôi màn hình về bên phải"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Thông tin ứng dụng cho %1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Lưu cặp ứng dụng"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Chạm và giữ để di chuyển một tiện ích."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Nhấn đúp và giữ để di chuyển một tiện ích hoặc sử dụng các thao tác tùy chỉnh."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"Rộng %1$d x cao %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Tiện ích <xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Chạm và giữ để di chuyển tiện ích xung quanh Màn hình chính"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Thêm vào Màn hình chính"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Chạm và giữ tiện ích để di chuyển tiện ích đó xung quanh màn hình chính"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Thêm vào màn hình chính"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Đã thêm tiện ích <xliff:g id="WIDGET_NAME">%1$s</xliff:g> vào màn hình chính"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Nội dung đề xuất"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# tiện ích}other{# tiện ích}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# lối tắt}other{# lối tắt}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Cá nhân"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Công việc"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Cuộc trò chuyện"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Ghi chú"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Thông tin hữu ích ngay trong tầm tay bạn"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Để nhận thông tin mà không cần mở các ứng dụng, bạn có thể thêm tiện ích vào Màn hình chính"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Để nhận thông tin mà không cần mở các ứng dụng, bạn có thể thêm tiện ích vào màn hình chính"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Nhấn để thay đổi chế độ cài đặt tiện ích"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Tôi hiểu"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Thay đổi chế độ cài đặt tiện ích"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Tìm kiếm ứng dụng"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Đang tải ứng dụng…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Không tìm thấy ứng dụng nào phù hợp với \"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Tìm kiếm thêm ứng dụng"</string>
     <string name="label_application" msgid="8531721983832654978">"Ứng dụng"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"Tất cả ứng dụng"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Thông báo"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Chạm và giữ để di chuyển một lối tắt."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Nhấn đúp và giữ để di chuyển một lối tắt hoặc sử dụng các thao tác tùy chỉnh."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Không còn khoảng trống trên Màn hình chính này"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Không còn khoảng trống trên màn hình chính này"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Không còn chỗ trong khay Mục yêu thích"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Danh sách ứng dụng"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Kết quả tìm kiếm"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Ghim ứng dụng dự đoán"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"cài đặt lối tắt"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Cho phép ứng dụng thêm lối tắt mà không cần sự can thiệp của người dùng."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"đọc cài đặt và lối tắt trên Màn hình chính"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Cho phép ứng dụng đọc cài đặt và lối tắt trên Màn hình chính."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"ghi cài đặt và lối tắt trên Màn hình chính"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Cho phép ứng dụng thay đổi cài đặt và lối tắt trên Màn hình chính."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> không được phép thực hiện cuộc gọi điện thoại"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"đọc lối tắt và các chế độ cài đặt trên màn hình chính"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Cho phép ứng dụng đọc các chế độ cài đặt và lối tắt trên màn hình chính."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"ghi lối tắt và các chế độ cài đặt trên màn hình chính"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Cho phép ứng dụng thay đổi các chế độ cài đặt và lối tắt trên màn hình chính."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Không thể tải tiện ích"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Cài đặt tiện ích"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Nhấn để hoàn tất thiết lập"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Đây là ứng dụng hệ thống và không thể gỡ cài đặt."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Chỉnh sửa tên"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Đã vô hiệu hóa <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{{app_name} có # thông báo}other{{app_name} có # thông báo}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{{app_name} có # thông báo}other{{app_name} có # thông báo}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Trang %1$d / %2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Màn hình chính %1$d / %2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Trang màn hình chính mới"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Thư mục: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> mục trở lên"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Hình nền"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Hình nền và phong cách"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Chỉnh sửa Màn hình chính"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"Cài đặt màn hình chính"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Bị tắt bởi quản trị viên của bạn"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Cho phép xoay Màn hình chính"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Cho phép xoay màn hình chính"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Khi xoay điện thoại"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Dấu chấm thông báo"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Đang bật"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Để hiển thị Dấu chấm thông báo, hãy bật thông báo ứng dụng cho <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Thay đổi cài đặt"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Hiện dấu chấm thông báo"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Thêm biểu tượng ứng dụng vào Màn hình chính"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Tùy chọn cho nhà phát triển"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Thêm biểu tượng ứng dụng vào màn hình chính"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Cho ứng dụng mới"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Không xác định"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Xóa"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"Đang cài đặt <xliff:g id="NAME">%1$s</xliff:g>, hoàn tất <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"Đang tải xuống <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="PROGRESS">%2$s</xliff:g> hoàn tất"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"Đang chờ cài đặt <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Cần cập nhật ứng dụng"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"Ứng dụng cho biểu tượng này chưa được cập nhật. Bạn có thể cập nhật theo cách thủ công để bật lại phím tắt này hoặc xóa biểu tượng."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Cập nhật"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Xóa"</string>
     <string name="widgets_list" msgid="796804551140113767">"Danh sách tiện ích"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Đã đóng danh sách tiện ích"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Thêm vào màn hình chính"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Thêm vào màn hình chính"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Di chuyển mục vào đây"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Đã thêm mục vào màn hình chính"</string>
     <string name="item_removed" msgid="851119963877842327">"Đã xóa mục"</string>
     <string name="undo" msgid="4151576204245173321">"Hủy"</string>
     <string name="action_move" msgid="4339390619886385032">"Di chuyển mục"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Di chuyển đến hàng <xliff:g id="NUMBER_0">%1$s</xliff:g> cột <xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Di chuyển đến hàng <xliff:g id="NUMBER_0">%1$s</xliff:g> cột <xliff:g id="NUMBER_1">%2$s</xliff:g> tại <xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Di chuyển tới vị trí <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Di chuyển tới vị trí mục yêu thích <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Đã di chuyển mục"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Đã thêm mục vào thư mục"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Tạo thư mục bằng: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Đã tạo thư mục"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Di chuyển đến màn hình chính"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Di chuyển đến màn hình chính"</string>
     <string name="action_resize" msgid="1802976324781771067">"Đổi kích thước"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Tăng chiều rộng"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Tăng chiều cao"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Các ứng dụng công việc được gắn huy hiệu và quản trị viên CNTT có thể nhìn thấy"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"OK"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Đã tạm dừng các ứng dụng công việc"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Bạn sẽ không nhận được thông báo từ các ứng dụng công việc"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Các ứng dụng công việc không thể gửi thông báo cho bạn, sử dụng pin hoặc truy cập thông tin vị trí của bạn"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Ứng dụng công việc đang tắt. Các ứng dụng công việc không thể gửi thông báo cho bạn, sử dụng pin hoặc truy cập thông tin vị trí của bạn"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Bạn sẽ không nhận được tin nhắn văn bản, cuộc gọi điện thoại hoặc thông báo từ các ứng dụng công việc"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Các ứng dụng công việc được gắn huy hiệu và quản trị viên CNTT có thể nhìn thấy"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Tôi hiểu"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Tắt ứng dụng công việc"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Bật ứng dụng công việc"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Tạm dừng các ứng dụng công việc"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Bỏ tạm dừng"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Bộ lọc"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Tìm trên điện thoại"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Tìm kiếm trong máy tính bảng của bạn"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Không thực hiện được thao tác: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index c7eb21e..20c8ea9 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"无法使用快捷方式"</string>
     <string name="home_screen" msgid="5629429142036709174">"主屏幕"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"分屏"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"上分屏"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"左分屏"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"右分屏"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s 的应用信息"</string>
-    <string name="long_press_widget_to_add" msgid="3587712543577675817">"轻触并按住微件即可移动该微件。"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"保存应用对"</string>
+    <string name="long_press_widget_to_add" msgid="3587712543577675817">"轻触并按住即可移动微件。"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"点按两次并按住微件即可移动该微件或使用自定义操作。"</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"宽 %1$d,高 %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"“<xliff:g id="WIDGET_NAME">%1$s</xliff:g>”微件"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"轻触并按住该微件即可将其在主屏幕上四处移动"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"添加到主屏幕"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"轻触并按住此微件即可在主屏幕上随意移动它"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"添加到主屏幕"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"已将“<xliff:g id="WIDGET_NAME">%1$s</xliff:g>”微件添加到主屏幕"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"建议"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# 个微件}other{# 个微件}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# 个快捷方式}other{# 个快捷方式}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>,<xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"个人"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"工作"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"对话"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"记事"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"实用信息触手可及"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"要想不打开应用就能获取信息,您可以将相应微件添加到主屏幕"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"要想不打开应用就能获取信息,您可以将相应微件添加到主屏幕"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"点按即可更改微件设置"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"知道了"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"更改微件设置"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"搜索应用"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"正在加载应用…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"未找到与“<xliff:g id="QUERY">%1$s</xliff:g>”相符的应用"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"搜索更多应用"</string>
     <string name="label_application" msgid="8531721983832654978">"应用"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"所有应用"</string>
     <string name="notifications_header" msgid="1404149926117359025">"通知"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"轻触并按住快捷方式即可移动该快捷方式。"</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"点按两次并按住快捷方式即可移动该快捷方式或使用自定义操作。"</string>
-    <string name="out_of_space" msgid="6692471482459245734">"此主屏幕上已没有空间"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"此主屏幕上已没有空间"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"收藏栏已满"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"应用列表"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"搜索结果"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"固定预测的应用"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"安装快捷方式"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"允许应用自行添加快捷方式。"</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"读取主屏幕设置和快捷方式"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"允许应用读取主屏幕中的设置和快捷方式。"</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"写入主屏幕设置和快捷方式"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"允许应用更改主屏幕中的设置和快捷方式。"</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"不允许使用“<xliff:g id="APP_NAME">%1$s</xliff:g>”拨打电话"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"读取主屏幕设置和快捷方式"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"允许此应用读取主屏幕中的设置和快捷方式。"</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"写入主屏幕设置和快捷方式"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"允许此应用更改主屏幕中的设置和快捷方式。"</string>
     <string name="gadget_error_text" msgid="740356548025791839">"无法加载微件"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"微件设置"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"点按即可完成设置"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"这是系统应用,无法卸载。"</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"修改名称"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"已停用<xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{“{app_name}”有 # 条通知}other{“{app_name}”有 # 条通知}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{“{app_name}”有 # 条通知}other{“{app_name}”有 # 条通知}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"第%1$d页,共%2$d页"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"主屏幕:第%1$d屏,共%2$d屏"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"主屏幕新页面"</string>
@@ -102,10 +100,11 @@
     <string name="folder_name_format_exact" msgid="8626242716117004803">"文件夹:<xliff:g id="NAME">%1$s</xliff:g>,<xliff:g id="SIZE">%2$d</xliff:g> 个项目"</string>
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"文件夹:<xliff:g id="NAME">%1$s</xliff:g>,<xliff:g id="SIZE">%2$d</xliff:g> 个或更多项目"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"壁纸"</string>
-    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"壁纸和样式"</string>
+    <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"壁纸与个性化"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"修改主屏幕"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"主屏幕设置"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"已被您的管理员停用"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"允许旋转主屏幕"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"允许旋转主屏幕"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"手机旋转时"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"通知圆点"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"已开启"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"要显示通知圆点,请开启<xliff:g id="NAME">%1$s</xliff:g>的应用通知功能"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"更改设置"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"显示通知圆点"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"将应用图标添加到主屏幕"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"开发者选项"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"将应用图标添加到主屏幕"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"适用于新应用"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"未知"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"移除"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"正在安装<xliff:g id="NAME">%1$s</xliff:g>,已完成 <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"正在下载<xliff:g id="NAME">%1$s</xliff:g>,已完成 <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g>正在等待安装"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"需要更新应用"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"此图标对应的应用未更新。您可以手动更新以重新启用该快捷方式,或者移除此图标。"</string>
+    <string name="dialog_update" msgid="2178028071796141234">"更新"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"移除"</string>
     <string name="widgets_list" msgid="796804551140113767">"微件列表"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"微件列表已关闭"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"添加到主屏幕"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"添加到主屏幕"</string>
     <string name="action_move_here" msgid="2170188780612570250">"将项目移至此处"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"已将项目添加到主屏幕"</string>
     <string name="item_removed" msgid="851119963877842327">"项目已移除"</string>
     <string name="undo" msgid="4151576204245173321">"撤消"</string>
     <string name="action_move" msgid="4339390619886385032">"移动项目"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"移至第 <xliff:g id="NUMBER_0">%1$s</xliff:g> 行第 <xliff:g id="NUMBER_1">%2$s</xliff:g> 列"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"移至<xliff:g id="STRING">%3$s</xliff:g>中的第 <xliff:g id="NUMBER_0">%1$s</xliff:g> 行第 <xliff:g id="NUMBER_1">%2$s</xliff:g> 列"</string>
     <string name="move_to_position" msgid="6750008980455459790">"移至第 <xliff:g id="NUMBER">%1$s</xliff:g> 个位置"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"移至收藏夹第 <xliff:g id="NUMBER">%1$s</xliff:g> 个位置"</string>
     <string name="item_moved" msgid="4606538322571412879">"已移动项目"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"项目已添加到文件夹"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"创建“<xliff:g id="NAME">%1$s</xliff:g>”文件夹"</string>
     <string name="folder_created" msgid="6409794597405184510">"文件夹已创建"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"移至主屏幕"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"移至主屏幕"</string>
     <string name="action_resize" msgid="1802976324781771067">"调整大小"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"增加宽度"</string>
     <string name="action_increase_height" msgid="459390020612501122">"增加高度"</string>
@@ -156,15 +160,18 @@
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"个人"</string>
     <string name="all_apps_work_tab" msgid="4884822796154055118">"工作"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"工作资料"</string>
-    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"工作应用带有标志,您的 IT 管理员可以看到此类应用"</string>
+    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"工作应用都有相应的标志,且您的 IT 管理员可以看到它们"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"知道了"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"工作应用已暂停"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"您将不会收到来自工作应用的通知"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"工作应用无法向您发送通知、不能耗用电池电量,也无法获取您的位置信息"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"工作应用已关闭。工作应用无法向您发送通知、不能耗用电池电量,也无法获取您的位置信息"</string>
-    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"工作应用带有标志,您的 IT 管理员可以看到工作应用"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"您将不会收到来自工作应用的来电、短信或通知"</string>
+    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"工作应用都有相应的标志,且您的 IT 管理员可以看到它们"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"知道了"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"关闭工作应用"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"开启工作应用"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"暂停工作应用"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"取消暂停"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"过滤器"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"手机内搜索"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"平板电脑内搜索"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"失败:<xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index a278327..a01b263 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"沒有可用的捷徑"</string>
     <string name="home_screen" msgid="5629429142036709174">"主畫面"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"分割螢幕"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"頂部分割"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"左側分割"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"右側分割"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"%1$s 的應用程式資料"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"儲存應用程式配對"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"輕觸並按住即可移動小工具。"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"㩒兩下之後㩒住,就可以郁小工具或者用自訂操作。"</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d 闊,%2$d 高"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"「<xliff:g id="WIDGET_NAME">%1$s</xliff:g>」小工具"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"按住小工具即可隨意在主畫面上移動"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"新增至主畫面"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"按住小工具即可移到主畫面的任何位置"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"加去主畫面"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"已經將「<xliff:g id="WIDGET_NAME">%1$s</xliff:g>」小工具加咗去主畫面"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"建議"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# 個小工具}other{# 個小工具}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# 個捷徑}other{# 個捷徑}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>、<xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"個人"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"工作"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"對話"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"做筆記"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"實用資訊,唾手可得"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"將小工具新增到主畫面,不用開啟應用程式就可直接查看資訊"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"只要將小工具新增至主畫面,就可以直接查看資料,無需開啟應用程式"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"輕按即可變更小工具設定"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"知道了"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"變更小工具設定"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"搜尋應用程式"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"正在載入應用程式…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"找不到與「<xliff:g id="QUERY">%1$s</xliff:g>」相符的應用程式"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"搜尋更多應用程式"</string>
     <string name="label_application" msgid="8531721983832654978">"應用程式"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"所有應用程式"</string>
     <string name="notifications_header" msgid="1404149926117359025">"通知"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"輕觸並按住即可移動捷徑。"</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"㩒兩下之後㩒住,就可以郁捷徑或者用自訂操作。"</string>
-    <string name="out_of_space" msgid="6692471482459245734">"這個主畫面沒有空間了"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"主畫面空間已滿"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"我的收藏寄存區沒有足夠空間"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"應用程式清單"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"搜尋結果"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"固定預測"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"安裝捷徑"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"允許應用程式無需使用者許可也可新增捷徑。"</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"讀取主畫面的設定和捷徑"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"允許應用程式讀取主畫面中的設定和捷徑。"</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"寫入主畫面的設定和捷徑"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"允許應用程式更改主畫面中的設定和捷徑。"</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"不允許 <xliff:g id="APP_NAME">%1$s</xliff:g> 撥打電話"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"讀取主畫面設定和捷徑"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"允許應用程式讀取主畫面中的設定和捷徑。"</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"寫入主畫面設定和捷徑"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"允許應用程式變更主畫面中的設定和捷徑。"</string>
     <string name="gadget_error_text" msgid="740356548025791839">"無法載入小工具"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"小工具設定"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"輕按即可完成設定"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"這是系統應用程式,無法將其解除安裝。"</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"編輯名稱"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」已停用"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{「{app_name}」有 # 項通知}other{「{app_name}」有 # 項通知}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{「{app_name}」有 # 項通知}other{「{app_name}」有 # 項通知}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"第 %1$d 頁,共 %2$d 頁"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"主畫面 %1$d,共 %2$d 個"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"新主畫面頁面"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"資料夾:<xliff:g id="NAME">%1$s</xliff:g>,<xliff:g id="SIZE">%2$d</xliff:g> 個或以上的項目"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"桌布"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"桌布和樣式"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"編輯主畫面"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"主畫面設定"</string>
-    <string name="msg_disabled_by_admin" msgid="6898038085516271325">"已由您的管理員停用"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"允許主畫面旋轉"</string>
+    <string name="msg_disabled_by_admin" msgid="6898038085516271325">"已由你的管理員停用"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"允許旋轉主畫面"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"當手機旋轉時"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"通知圓點"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"開啟"</string>
@@ -114,25 +113,30 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"如要顯示「通知圓點」,請開啟「<xliff:g id="NAME">%1$s</xliff:g>」的應用程式通知功能"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"變更設定"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"顯示通知圓點"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"將應用程式圖示新增至主畫面"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"開發人員選項"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"將應用程式圖示新增至主畫面"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"新安裝的應用程式"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"不明"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"移除"</string>
     <string name="abandoned_search" msgid="891119232568284442">"搜尋"</string>
     <string name="abandoned_promises_title" msgid="7096178467971716750">"尚未安裝這個應用程式"</string>
-    <string name="abandoned_promise_explanation" msgid="3990027586878167529">"您尚未安裝這個圖示代表的應用程式。您可以移除這個圖示,也可以搜尋該應用程式並手動安裝。"</string>
+    <string name="abandoned_promise_explanation" msgid="3990027586878167529">"你尚未安裝這個圖示代表的應用程式。你可以移除這個圖示,也可以搜尋該應用程式並手動安裝。"</string>
     <string name="app_installing_title" msgid="5864044122733792085">"正在安裝「<xliff:g id="NAME">%1$s</xliff:g>」(已完成 <xliff:g id="PROGRESS">%2$s</xliff:g>)"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"正在下載 <xliff:g id="NAME">%1$s</xliff:g>,已完成 <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"正在等待安裝 <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"必須更新應用程式"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"你尚未更新這個圖示代表的應用程式。你可以手動更新以重新啟用此快速鍵,或者移除圖示。"</string>
+    <string name="dialog_update" msgid="2178028071796141234">"更新"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"移除"</string>
     <string name="widgets_list" msgid="796804551140113767">"小工具清單"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"已經關閉嘅小工具清單"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"新增至主畫面"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"加去主畫面"</string>
     <string name="action_move_here" msgid="2170188780612570250">"移動項目至這裡"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"已將項目加入至主畫面"</string>
     <string name="item_removed" msgid="851119963877842327">"項目已移除"</string>
     <string name="undo" msgid="4151576204245173321">"復原"</string>
     <string name="action_move" msgid="4339390619886385032">"移動項目"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"移動至第 <xliff:g id="NUMBER_0">%1$s</xliff:g> 行第 <xliff:g id="NUMBER_1">%2$s</xliff:g> 列"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"移去 <xliff:g id="STRING">%3$s</xliff:g> 嘅第 <xliff:g id="NUMBER_0">%1$s</xliff:g> 列,第 <xliff:g id="NUMBER_1">%2$s</xliff:g> 欄"</string>
     <string name="move_to_position" msgid="6750008980455459790">"移動至位置 <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"移動至喜愛的位置 <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"已移動項目"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"項目已加入資料夾"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"使用以下項目建立資料夾:<xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"已建立資料夾"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"移動至主畫面"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"移去主畫面"</string>
     <string name="action_resize" msgid="1802976324781771067">"重新調整大小"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"增加闊度"</string>
     <string name="action_increase_height" msgid="459390020612501122">"增加高度"</string>
@@ -156,15 +160,18 @@
     <string name="all_apps_personal_tab" msgid="4190252696685155002">"個人"</string>
     <string name="all_apps_work_tab" msgid="4884822796154055118">"工作"</string>
     <string name="work_profile_toggle_label" msgid="3081029915775481146">"工作設定檔"</string>
-    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"工作應用程式均加有標誌。您的 IT 管理員可以看到這些應用程式"</string>
+    <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"工作應用程式均加有標誌。你的 IT 管理員可以看到這些應用程式"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"知道了"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"已暫停工作應用程式"</string>
-    <string name="work_apps_paused_body" msgid="261634750995824906">"工作應用程式無法向您傳送通知、使用電池電量或存取您的位置"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"已暫停工作應用程式。工作應用程式無法向您傳送通知、使用電池電量或存取您的位置"</string>
-    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"工作應用程式均加有標誌。您的 IT 管理員可以看到這些應用程式"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"你不會收到工作應用程式的通知"</string>
+    <string name="work_apps_paused_body" msgid="261634750995824906">"工作應用程式無法向你傳送通知、使用電池電量或存取你的位置"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"你不會收到工作應用程式的來電、短訊或通知"</string>
+    <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"工作應用程式均加有標誌。你的 IT 管理員可以看到這些應用程式"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"知道了"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"關閉工作應用程式"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"開啟工作應用程式"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"暫停工作應用程式"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"取消暫停"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"篩選器"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"搜尋手機內容"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"搜尋平板電腦內容"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"操作失敗:<xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index a2cfcc7..69d1d90 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"目前無法使用捷徑"</string>
     <string name="home_screen" msgid="5629429142036709174">"主畫面"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"分割畫面"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"分割上方畫面"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"分割左側畫面"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"分割右側畫面"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"「%1$s」的應用程式資訊"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"儲存應用程式配對"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"按住即可移動小工具。"</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"輕觸兩下並按住即可移動小工具或使用自訂操作。"</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"寬度為 %1$d,高度為 %2$d"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"「<xliff:g id="WIDGET_NAME">%1$s</xliff:g>」小工具"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"按住小工具即可將它拖放到主畫面上的任何位置"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"新增到主畫面"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"按住小工具即可將它移到主畫面上的任何位置"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"新增至主畫面"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"已將「<xliff:g id="WIDGET_NAME">%1$s</xliff:g>」小工具新增到主畫面"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"建議"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{# 項小工具}other{# 項小工具}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{# 個捷徑}other{# 個捷徑}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>、<xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"個人"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"工作"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"對話"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"做筆記"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"實用資訊隨手可得"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"只要將小工具新增到主畫面,就可以直接查看資訊,不必開啟應用程式"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"只要將小工具新增到主畫面,就可以直接查看資訊,不必開啟應用程式"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"輕觸即可變更小工具設定"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"我知道了"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"變更小工具設定"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"搜尋應用程式"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"正在載入應用程式…"</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"找不到與「<xliff:g id="QUERY">%1$s</xliff:g>」相符的應用程式"</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"搜尋更多應用程式"</string>
     <string name="label_application" msgid="8531721983832654978">"應用程式"</string>
     <string name="all_apps_label" msgid="5015784846527570951">"所有應用程式"</string>
     <string name="notifications_header" msgid="1404149926117359025">"通知"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"按住即可移動捷徑。"</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"輕觸兩下並按住即可移動捷徑或使用自訂操作。"</string>
-    <string name="out_of_space" msgid="6692471482459245734">"這個主畫面已無空間"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"主畫面空間已滿"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"「我的最愛」匣已無可用空間"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"應用程式清單"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"搜尋結果"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"固定預測的應用程式"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"安裝捷徑"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"允許應用程式自動新增捷徑。"</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"讀取主畫面的設定和捷徑"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"允許應用程式讀取主畫面中的設定和捷徑。"</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"寫入主畫面設定和捷徑"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"允許應用程式變更主畫面中的設定和捷徑。"</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> 無法撥打電話"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"讀取主畫面設定和捷徑"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"允許應用程式讀取主畫面中的設定和捷徑。"</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"寫入主畫面設定和捷徑"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"允許應用程式變更主畫面中的設定和捷徑。"</string>
     <string name="gadget_error_text" msgid="740356548025791839">"無法載入小工具"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"小工具設定"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"輕觸即可完成設定"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"這是系統應用程式,不可解除安裝。"</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"編輯名稱"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"已停用 <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{「{app_name}」有 # 則通知}other{「{app_name}」有 # 則通知}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{「{app_name}」應用程式有 # 則通知}other{「{app_name}」應用程式有 # 則通知}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"第 %1$d 頁,共 %2$d 頁"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"主畫面:第 %1$d 頁,共 %2$d 頁"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"新的主畫面頁面"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"資料夾:<xliff:g id="NAME">%1$s</xliff:g>,<xliff:g id="SIZE">%2$d</xliff:g> 個以上的項目"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"桌布"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"桌布和樣式"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"編輯主畫面"</string>
     <string name="settings_button_text" msgid="8873672322605444408">"主畫面設定"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"已由你的管理員停用"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"允許旋轉主畫面"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"允許旋轉主畫面"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"當手機旋轉時"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"通知圓點"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"開啟"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"如要顯示通知圓點,請開啟「<xliff:g id="NAME">%1$s</xliff:g>」的應用程式通知功能"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"變更設定"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"顯示通知圓點"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"將應用程式圖示加到主畫面"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"開發人員選項"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"將應用程式圖示加到主畫面"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"適用於新安裝的應用程式"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"不明"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"移除"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"正在安裝「<xliff:g id="NAME">%1$s</xliff:g>」(已完成 <xliff:g id="PROGRESS">%2$s</xliff:g>)"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"正在下載「<xliff:g id="NAME">%1$s</xliff:g>」,已完成 <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"正在等待安裝「<xliff:g id="NAME">%1$s</xliff:g>」"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"必須更新應用程式"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"這個圖示代表的應用程式未更新。手動更新即可重新啟用這個捷徑,你也可以移除圖示。"</string>
+    <string name="dialog_update" msgid="2178028071796141234">"更新"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"移除"</string>
     <string name="widgets_list" msgid="796804551140113767">"小工具清單"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"已關閉小工具清單"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"新增至主畫面"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"新增至主畫面"</string>
     <string name="action_move_here" msgid="2170188780612570250">"將項目移至這裡"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"已將項目新增到主畫面"</string>
     <string name="item_removed" msgid="851119963877842327">"已移除項目"</string>
     <string name="undo" msgid="4151576204245173321">"復原"</string>
     <string name="action_move" msgid="4339390619886385032">"移動項目"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"移至第 <xliff:g id="NUMBER_0">%1$s</xliff:g> 列第 <xliff:g id="NUMBER_1">%2$s</xliff:g> 欄"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"移動至 <xliff:g id="STRING">%3$s</xliff:g> 的第 <xliff:g id="NUMBER_0">%1$s</xliff:g> 列,第 <xliff:g id="NUMBER_1">%2$s</xliff:g> 欄"</string>
     <string name="move_to_position" msgid="6750008980455459790">"移至位置 <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"移至收藏位置 <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"已移動項目"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"已將項目新增到資料夾"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"建立「<xliff:g id="NAME">%1$s</xliff:g>」資料夾"</string>
     <string name="folder_created" msgid="6409794597405184510">"已建立資料夾"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"移至主畫面"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"移至主畫面"</string>
     <string name="action_resize" msgid="1802976324781771067">"調整大小"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"增加寬度"</string>
     <string name="action_increase_height" msgid="459390020612501122">"增加高度"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"工作應用程式會加上標記,且你的 IT 管理員可以看到這類應用程式"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"我知道了"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"系統已暫停工作應用程式"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"你將不會收到工作應用程式的通知"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"工作應用程式不會消耗電量、無法傳送通知,也無法存取你的位置資訊"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"工作應用程式已關閉。工作應用程式不會消耗電量、無法傳送通知,也無法存取你的位置資訊"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"你將不會收到工作應用程式的訊息或通知,也無法使用工作應用程式接聽來電"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"工作應用程式會加上標記,且你的 IT 管理員可以看到這類應用程式"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"我知道了"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"關閉工作應用程式"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"開啟工作應用程式"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"暫停工作應用程式"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"取消暫停"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"篩選器"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"搜尋手機內容"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"搜尋平板電腦內容"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"失敗:<xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index ca01769..d9ed3f0 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -28,18 +28,17 @@
     <string name="shortcut_not_available" msgid="2536503539825726397">"Isinqamuleli asitholakali"</string>
     <string name="home_screen" msgid="5629429142036709174">"Ikhaya"</string>
     <string name="recent_task_option_split_screen" msgid="6690461455618725183">"Hlukanisa isikrini"</string>
-    <string name="split_screen_position_top" msgid="1504965011158689649">"Hlukanisa phezulu"</string>
-    <string name="split_screen_position_left" msgid="7537793098851830883">"Hlukanisa ngakwesobunxele"</string>
-    <string name="split_screen_position_right" msgid="1569377524925193369">"Hlukanisa ngakwesokudla"</string>
     <string name="split_app_info_accessibility" msgid="5475288491241414932">"Ulwazi lwe-App ye-%1$s"</string>
+    <string name="save_app_pair" msgid="5647523853662686243">"Londoloza i-app ebhangqiwe"</string>
     <string name="long_press_widget_to_add" msgid="3587712543577675817">"Thinta uphinde ubambe ukuze uhambise iwijethi."</string>
     <string name="long_accessible_way_to_add" msgid="2733588281439571974">"Thepha kabili uphinde ubambe ukuze uhambise iwijethi noma usebenzise izindlela ezingokwezifiso."</string>
     <string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
     <string name="widget_accessible_dims_format" msgid="3640149169885301790">"%1$d ububanzi ngokungu-%2$d ukuya phezulu"</string>
     <string name="widget_preview_context_description" msgid="9045841361655787574">"Iwijethi elingu-<xliff:g id="WIDGET_NAME">%1$s</xliff:g>"</string>
-    <string name="add_item_request_drag_hint" msgid="5653291305078645405">"Thinta uphinde ubambe iwijethi ukuyihambisa Kusikrini sasekhaya"</string>
-    <string name="add_to_home_screen" msgid="8631549138215492708">"Engeza kusikrini sasekhaya"</string>
+    <string name="add_item_request_drag_hint" msgid="8730547755622776606">"Thinta uphinde ubambe iwijethi ukuyihambisa kusikrini sasekhaya"</string>
+    <string name="add_to_home_screen" msgid="9168649446635919791">"Faka kusikrini sasekhaya"</string>
     <string name="added_to_home_screen_accessibility_text" msgid="4451545765448884415">"Iwijethi ye-<xliff:g id="WIDGET_NAME">%1$s</xliff:g> yengezwe kusikrini sasekhaya"</string>
+    <string name="suggested_widgets_header_title" msgid="1844314680798145222">"Iziphakamiso"</string>
     <string name="widgets_count" msgid="6467746476364652096">"{count,plural, =1{iwijethi #}one{amawijethi #}other{amawijethi #}}"</string>
     <string name="shortcuts_count" msgid="8471715556199592381">"{count,plural, =1{isinqamuleli #}one{izinqamuleli #}other{izinqamuleli #}}"</string>
     <string name="widgets_and_shortcuts_count" msgid="7209136747878365116">"<xliff:g id="WIDGETS_COUNT">%1$s</xliff:g>, <xliff:g id="SHORTCUTS_COUNT">%2$s</xliff:g>"</string>
@@ -51,21 +50,21 @@
     <string name="widgets_full_sheet_personal_tab" msgid="2743540105607120182">"Okwabantu siqu"</string>
     <string name="widgets_full_sheet_work_tab" msgid="3767150027110633765">"Umsebenzi"</string>
     <string name="widget_category_conversations" msgid="8894438636213590446">"Izingxoxo"</string>
+    <string name="widget_category_note_taking" msgid="3469689394504266039">"Ukuthatha amanothi"</string>
     <string name="widget_education_header" msgid="4874760613775913787">"Ulwazi oluwusizo phambi nje kwakho"</string>
-    <string name="widget_education_content" msgid="745542879510751525">"Ukuze utholeulwazi ngaphandle kokuvula ama-app, ungakwazi ukwengeza amawijethi kusikrini sakho sasekhaya"</string>
+    <string name="widget_education_content" msgid="1731667670753497052">"Ukuze uthole ulwazi ngaphandle kokuvula ama-app, ungakwazi ukwengeza amawijethi kusikrini sakho sasekhaya"</string>
     <string name="reconfigurable_widget_education_tip" msgid="6336962690888067057">"Thepha ukuze ushintshe amasethingi ewijethi"</string>
     <string name="widget_education_close_button" msgid="8676165703104836580">"Ngiyezwa"</string>
     <string name="widget_reconfigure_button_content_description" msgid="8811472721881205250">"Shintsha amasethingi ewijethi"</string>
     <string name="all_apps_search_bar_hint" msgid="1390553134053255246">"Sesha izinhlelo zokusebenza"</string>
     <string name="all_apps_loading_message" msgid="5813968043155271636">"Ilayisha izinhlelo zokusebenza..."</string>
     <string name="all_apps_no_search_results" msgid="3200346862396363786">"Azikho izinhlelo zokusebenza ezitholiwe ezifana ne-\"<xliff:g id="QUERY">%1$s</xliff:g>\""</string>
-    <string name="all_apps_search_market_message" msgid="1366263386197059176">"Sesha izinhlelo zokusebenza eziningi"</string>
     <string name="label_application" msgid="8531721983832654978">"Uhlelo lokusebenza"</string>
-    <string name="all_apps_label" msgid="5015784846527570951">"Zonke izinhlelo zokusebenza"</string>
+    <string name="all_apps_label" msgid="5015784846527570951">"Wonke ama-app"</string>
     <string name="notifications_header" msgid="1404149926117359025">"Izaziso"</string>
     <string name="long_press_shortcut_to_add" msgid="5405328730817637737">"Thinta uphinde ubambe ukuze uhambise isinqamuleli."</string>
     <string name="long_accessible_way_to_add_shortcut" msgid="2199537273817090740">"Thepha kabili uphinde ubambe ukuze uhambise isinqamuleli noma usebenzise izenzo ezingokwezifiso."</string>
-    <string name="out_of_space" msgid="6692471482459245734">"Asikho isikhala kulesi sikrini sasekhaya"</string>
+    <string name="out_of_space" msgid="6455557115204099579">"Asikho isikhala kulesi sikrini sasekhaya"</string>
     <string name="hotseat_out_of_space" msgid="7448809638125333693">"Asisekho isikhala kwitreyi lezintandokazi"</string>
     <string name="all_apps_button_label" msgid="8130441508702294465">"Uhlu lwezinhlelo zokusebenza"</string>
     <string name="all_apps_search_results" msgid="5889367432531296759">"Imiphumela yosesho"</string>
@@ -79,18 +78,17 @@
     <string name="pin_prediction" msgid="4196423321649756498">"Ukubikezela Iphinikhodi"</string>
     <string name="permlab_install_shortcut" msgid="5632423390354674437">"faka izinqamuleli"</string>
     <string name="permdesc_install_shortcut" msgid="923466509822011139">"Ivumela uhlelo lokusebenza ukufaka izinqamuleli ngaphandle kokungenelela komsebenzisi."</string>
-    <string name="permlab_read_settings" msgid="1941457408239617576">"funda izilungiselelo zokuthi Ikhaya nezinqamuleli"</string>
-    <string name="permdesc_read_settings" msgid="5833423719057558387">"Ivumela uhlelo lokusebenza ukuthi lifunde izilungiselelo nezinqamuleli ekhaya."</string>
-    <string name="permlab_write_settings" msgid="3574213698004620587">"bhala izilungiselelo zokuthi Ikhaya nezinqamuleli"</string>
-    <string name="permdesc_write_settings" msgid="5440712911516509985">"Ivumela uhlelo lokusebenza ukuthi lushintshe izilungiselelo nezinqamuleli Ekhaya."</string>
-    <string name="msg_no_phone_permission" msgid="9208659281529857371">"<xliff:g id="APP_NAME">%1$s</xliff:g> ayivunyelwe ukwenza amakholi wefoni"</string>
+    <string name="permlab_read_settings" msgid="5136500343007704955">"funda amasethingi wasekhaya nezinqamuleli"</string>
+    <string name="permdesc_read_settings" msgid="4208061150510996676">"Ivumela i-app ukuthi ifunde amasethingi nezinqamuleli ekhaya."</string>
+    <string name="permlab_write_settings" msgid="4820028712156303762">"bhala amasethingi wasekhaya nezinqamuleli"</string>
+    <string name="permdesc_write_settings" msgid="726859348127868466">"Ivumela ama-app ukushintsha amasethingi nezinqamuleli ekhaya."</string>
     <string name="gadget_error_text" msgid="740356548025791839">"Ayikwazi ukulayisha iwijethi"</string>
     <string name="gadget_setup_text" msgid="8348374825537681407">"Amasethingi ewijethi"</string>
     <string name="gadget_complete_setup_text" msgid="309040266978007925">"Thepha ukuze uqede ukusetha"</string>
     <string name="uninstall_system_app_text" msgid="4172046090762920660">"Lolu uhlelo lokusebenza lwesistimu futhi alikwazi ukukhishwa."</string>
     <string name="folder_hint_text" msgid="5174843001373488816">"Hlela igama"</string>
     <string name="disabled_app_label" msgid="6673129024321402780">"Kukhutshaziwe <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
-    <string name="dotted_app_label" msgid="1704091277755818896">"{count,plural,offset:1 =1{I-{app_name}, inesaziso esingu-#}one{I-{app_name}, inezaziso ezingu-#}other{I-{app_name}, inezaziso ezingu-#}}"</string>
+    <string name="dotted_app_label" msgid="1865617679843363410">"{count,plural, =1{I-{app_name} inesaziso esi-#}one{I-{app_name} inezaziso ezingu-#}other{I-{app_name} inezaziso ezingu-#}}"</string>
     <string name="default_scroll_format" msgid="7475544710230993317">"Ikhasi elingu-%1$d kwangu-%2$d"</string>
     <string name="workspace_scroll_format" msgid="8458889198184077399">"Isikrini sasekhaya esingu-%1$d se-%2$d"</string>
     <string name="workspace_new_page" msgid="257366611030256142">"Ikhasi elisha lesikrini sasekhaya"</string>
@@ -103,9 +101,10 @@
     <string name="folder_name_format_overflow" msgid="4270108890534995199">"Ifolda: <xliff:g id="NAME">%1$s</xliff:g>, <xliff:g id="SIZE">%2$d</xliff:g> noma izinto eziningi"</string>
     <string name="wallpaper_button_text" msgid="8404103075899945851">"Izithombe zangemuva"</string>
     <string name="styles_wallpaper_button_text" msgid="8216961355289236794">"Isithombe sangemuva nesitayela"</string>
-    <string name="settings_button_text" msgid="8873672322605444408">"Izilungiselelo zasekhaya"</string>
+    <string name="edit_home_screen" msgid="8947858375782098427">"Hlela Isikrini Sasekhaya"</string>
+    <string name="settings_button_text" msgid="8873672322605444408">"Amasethingi asekhaya"</string>
     <string name="msg_disabled_by_admin" msgid="6898038085516271325">"Kukhutshazwe umlawuli wakho"</string>
-    <string name="allow_rotation_title" msgid="7728578836261442095">"Vumela ukuphendukiswa kwesikrini sasekhaya"</string>
+    <string name="allow_rotation_title" msgid="7222049633713050106">"Vumela ukuzungezisa kwesikrini sasekhaya"</string>
     <string name="allow_rotation_desc" msgid="8662546029078692509">"Uma ifoni iphendukiswa"</string>
     <string name="notification_dots_title" msgid="9062440428204120317">"Amacashazi esaziso"</string>
     <string name="notification_dots_desc_on" msgid="1679848116452218908">"Vuliwe"</string>
@@ -114,7 +113,8 @@
     <string name="msg_missing_notification_access" msgid="281113995110910548">"Ukuze ubonisa amcashazi esaziso, vula izaziso zohlelo lokusebenza ze-<xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="title_change_settings" msgid="1376365968844349552">"Shintsha izilungiselelo"</string>
     <string name="notification_dots_service_title" msgid="4284221181793592871">"Bonisa amacashazi esaziso"</string>
-    <string name="auto_add_shortcuts_label" msgid="3698776050751790653">"Engeza izithonjana zohlelo lokusebenza kusikrini sasekhaya"</string>
+    <string name="developer_options_title" msgid="700788437593726194">"Izinketho zonjiniyela"</string>
+    <string name="auto_add_shortcuts_label" msgid="4926805029653694105">"Engeza izithonjana ze-app kusikrini sasekhaya"</string>
     <string name="auto_add_shortcuts_description" msgid="7117251166066978730">"Kwezinhlelo zokusebenza ezintsha"</string>
     <string name="package_state_unknown" msgid="7592128424511031410">"Akwaziwa"</string>
     <string name="abandoned_clean_this" msgid="7610119707847920412">"Susa"</string>
@@ -124,15 +124,19 @@
     <string name="app_installing_title" msgid="5864044122733792085">"I-<xliff:g id="NAME">%1$s</xliff:g> iyafakwa, seyiqede <xliff:g id="PROGRESS">%2$s</xliff:g>"</string>
     <string name="app_downloading_title" msgid="8336702962104482644">"I-<xliff:g id="NAME">%1$s</xliff:g> iyalandwa, <xliff:g id="PROGRESS">%2$s</xliff:g> kuqediwe"</string>
     <string name="app_waiting_download_title" msgid="7053938513995617849">"<xliff:g id="NAME">%1$s</xliff:g> ilinde ukufakwa"</string>
+    <string name="dialog_update_title" msgid="114234265740994042">"Kudingeka isibuyekezo se-app"</string>
+    <string name="dialog_update_message" msgid="4176784553982226114">"I-app yalesi sithonjana ibuyekeziwe. Ungabuyekeza mathupha ukuze uphinde unike amandla lesi sinqamuleli, noma ususe isithonjana."</string>
+    <string name="dialog_update" msgid="2178028071796141234">"Vuselela"</string>
+    <string name="dialog_remove" msgid="6510806469849709407">"Susa"</string>
     <string name="widgets_list" msgid="796804551140113767">"Uhlu lwamawijethi"</string>
     <string name="widgets_list_closed" msgid="6141506579418771922">"Uhlu lwamawijethi luvaliwe"</string>
-    <string name="action_add_to_workspace" msgid="8902165848117513641">"Faka kusikrini sasekhaya"</string>
+    <string name="action_add_to_workspace" msgid="215894119683164916">"Faka kusikrini sasekhaya"</string>
     <string name="action_move_here" msgid="2170188780612570250">"Hambisa into lapha"</string>
     <string name="item_added_to_workspace" msgid="4211073925752213539">"Into ingezwe kusikrini sasekhaya"</string>
     <string name="item_removed" msgid="851119963877842327">"Into isusiwe"</string>
     <string name="undo" msgid="4151576204245173321">"Susa"</string>
     <string name="action_move" msgid="4339390619886385032">"Hambisa into"</string>
-    <string name="move_to_empty_cell" msgid="2833711483015685619">"Hambisa kurowu engu-<xliff:g id="NUMBER_0">%1$s</xliff:g> ikholomu engu-<xliff:g id="NUMBER_1">%2$s</xliff:g>"</string>
+    <string name="move_to_empty_cell_description" msgid="5254852678218206889">"Hamba emugqeni <xliff:g id="NUMBER_0">%1$s</xliff:g> ikholomu <xliff:g id="NUMBER_1">%2$s</xliff:g> ku-<xliff:g id="STRING">%3$s</xliff:g>"</string>
     <string name="move_to_position" msgid="6750008980455459790">"Hambisa kusimo esingu-<xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="move_to_hotseat_position" msgid="6295412897075147808">"Hambisa kusimo sezintandokazi esingu-<xliff:g id="NUMBER">%1$s</xliff:g>"</string>
     <string name="item_moved" msgid="4606538322571412879">"Into ihanjisiwe"</string>
@@ -141,7 +145,7 @@
     <string name="added_to_folder" msgid="4793259502305558003">"Into ingeziwe kufolda"</string>
     <string name="create_folder_with" msgid="4050141361160214248">"Dala ifolda nge-: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="folder_created" msgid="6409794597405184510">"Ifolda idaliwe"</string>
-    <string name="action_move_to_workspace" msgid="1603837886334246317">"Hambisa kusikrini sasekhaya"</string>
+    <string name="action_move_to_workspace" msgid="39528912300293768">"Hambisa kusikrini sasekhaya"</string>
     <string name="action_resize" msgid="1802976324781771067">"Shintsha usayizi"</string>
     <string name="action_increase_width" msgid="8773715375078513326">"Khuphula ububanzi"</string>
     <string name="action_increase_height" msgid="459390020612501122">"Khuphula ubude"</string>
@@ -159,12 +163,15 @@
     <string name="work_profile_edu_work_apps" msgid="7895468576497746520">"Ama-app omsebenzi anebheji futhi ayabonakala kumphathi wakho we-IT"</string>
     <string name="work_profile_edu_accept" msgid="6069788082535149071">"Ngiyezwa"</string>
     <string name="work_apps_paused_title" msgid="3040901117349444598">"Izinhlelo zokusebenza zomsebenzi ziphunyuziwe"</string>
+    <string name="work_apps_paused_info_body" msgid="1687828929959237477">"Ngeke uze uthole izaziso kua-app akho"</string>
     <string name="work_apps_paused_body" msgid="261634750995824906">"Ama-app akho omsebenzi awakwazi ukukuthumela izaziso, ukusebenzisa ibhethri lakho, noma ukufinyelela indawo yakho"</string>
-    <string name="work_apps_paused_content_description" msgid="5149623040804051095">"Ama-app omsebenzi avaliwe. Ama-app akho omsebenzi awakwazi ukukuthumela izaziso, ukusebenzisa ibhethri lakho, noma ukufinyelela indawo yakho"</string>
+    <string name="work_apps_paused_telephony_unavailable_body" msgid="8358872357502756790">"Ngeke uthole amakholi wefoni, imilayezo yombhalo, noma izaziso ezivela kuma-app"</string>
     <string name="work_apps_paused_edu_banner" msgid="8872412121608402058">"Ama-app omsebenzi anebheji futhi ayabonakala kumphathi wakho we-IT"</string>
     <string name="work_apps_paused_edu_accept" msgid="6377476824357318532">"Ngiyezwa"</string>
-    <string name="work_apps_pause_btn_text" msgid="1921059713673767460">"Vala ama-app omsebenzi"</string>
-    <string name="work_apps_enable_btn_text" msgid="1156432622148413741">"Vula ama-app omsebenzi"</string>
+    <string name="work_apps_pause_btn_text" msgid="4669288269140620646">"Misa ama-app omsebenzi"</string>
+    <string name="work_apps_enable_btn_text" msgid="1736198302467317371">"Susa ukumisa"</string>
     <string name="developer_options_filter_hint" msgid="5896817443635989056">"Hlunga"</string>
+    <string name="search_pref_screen_title" msgid="3258959643336315962">"Sesha ifoni yakho"</string>
+    <string name="search_pref_screen_title_tablet" msgid="5220319680451343959">"Sesha ithebulethi yakho"</string>
     <string name="remote_action_failed" msgid="1383965239183576790">"Yehlulekile: <xliff:g id="WHAT">%1$s</xliff:g>"</string>
 </resources>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 13f20c2..b023d10 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -25,6 +25,8 @@
     <attr name="popupColorPrimary" format="color" />
     <attr name="popupColorSecondary" format="color" />
     <attr name="popupColorTertiary" format="color" />
+    <attr name="popupColorBackground" format="color" />
+    <attr name="popupTextColor" format="color" />
     <attr name="popupShadeFirst" format="color" />
     <attr name="popupShadeSecond" format="color" />
     <attr name="popupShadeThird" format="color" />
@@ -40,25 +42,36 @@
     <attr name="eduHalfSheetBGColor" format="color" />
     <attr name="overviewScrimColor" format="color" />
     <attr name="popupNotificationDotColor" format="color" />
+    <attr name="notificationDotColor" format="color" />
 
-    <attr name="folderDotColor" format="color" />
     <attr name="folderPaginationColor" format="color" />
     <attr name="folderPreviewColor" format="color" />
     <attr name="folderBackgroundColor" format="color" />
     <attr name="folderIconRadius" format="float" />
     <attr name="folderIconBorderColor" format="color" />
     <attr name="folderTextColor" format="color" />
-    <attr name="folderHintColor" format="color" />
+    <attr name="folderHintTextColor" format="color" />
     <attr name="isFolderDarkText" format="boolean" />
-    <attr name="workProfileOverlayTextColor" format="color" />
     <attr name="workspaceAccentColor" format="color" />
+    <attr name="workspaceSurfaceColor" format="color" />
     <attr name="dropTargetHoverTextColor" format="color" />
-
-    <attr name="allAppsButtonBgColor" format="color" />
-    <attr name="allAppsButtonColor1" format="color" />
-    <attr name="allAppsButtonColor2" format="color" />
-    <attr name="allAppsButtonColor3" format="color" />
-    <attr name="allAppsButtonColor4" format="color" />
+    <attr name="dropTargetHoverButtonColor" format="color" />
+    <attr name="preloadIconAccentColor" format="color" />
+    <attr name="preloadIconBackgroundColor" format="color" />
+    <attr name="widgetPickerTitleColor" format="color"/>
+    <attr name="widgetPickerPrimarySurfaceColor" format="color"/>
+    <attr name="widgetPickerSecondarySurfaceColor" format="color"/>
+    <attr name="widgetPickerHeaderAppTitleColor" format="color"/>
+    <attr name="widgetPickerHeaderAppSubtitleColor" format="color"/>
+    <attr name="widgetPickerHeaderBackgroundColor" format="color"/>
+    <attr name="widgetPickerSuggestionsIconBackgroundColor" format="color"/>
+    <attr name="widgetPickerSuggestionsIconColor" format="color"/>
+    <attr name="widgetPickerTabBackgroundSelected" format="color"/>
+    <attr name="widgetPickerTabBackgroundUnselected" format="color"/>
+    <attr name="widgetPickerSearchTextColor" format="color"/>
+    <attr name="widgetPickerSelectedTabTextColor" format="color"/>
+    <attr name="widgetPickerUnselectedTabTextColor" format="color"/>
+    <attr name="widgetPickerCollapseHandleColor" format="color"/>
 
     <!-- BubbleTextView specific attributes. -->
     <declare-styleable name="BubbleTextView">
@@ -81,7 +94,6 @@
     <declare-styleable name="FolderIconPreview">
         <attr name="folderPreviewColor" />
         <attr name="folderIconBorderColor" />
-        <attr name="folderDotColor" />
     </declare-styleable>
 
     <declare-styleable name="SearchResultSuggestion">
@@ -134,6 +146,10 @@
         <attr name="layout_ignoreInsets" format="boolean" />
     </declare-styleable>
 
+    <declare-styleable name="StickyScroller_Layout">
+        <attr name="layout_sticky" format="boolean" />
+    </declare-styleable>
+
     <declare-styleable name="GridDisplayOption">
         <attr name="name" format="string" />
 
@@ -141,9 +157,19 @@
         <attr name="numColumns" format="integer" />
         <!--  numSearchContainerColumns defaults to numColumns, if not specified -->
         <attr name="numSearchContainerColumns" format="integer" />
+
+        <!-- Support attributes in CellStyle. defaults to CellStyleDefault -->
+        <attr name="cellStyle" format="reference" />
+
         <!-- numFolderRows & numFolderColumns defaults to numRows & numColumns, if not specified -->
         <attr name="numFolderRows" format="integer" />
         <attr name="numFolderColumns" format="integer" />
+        <!-- Support attributes in FolderStyle -->
+        <attr name="folderStyle" format="reference" />
+
+        <!-- Support attributes in AllAppsStyle. Defaults to AllAppsStyleDefault -->
+        <attr name="allAppsStyle" format="reference" />
+
         <!-- numAllAppsColumns defaults to numColumns, if not specified -->
         <attr name="numAllAppsColumns" format="integer" />
         <!-- Number of columns to use when extending the all-apps size,
@@ -152,9 +178,6 @@
 
         <!-- numHotseatIcons defaults to numColumns, if not specified -->
         <attr name="numHotseatIcons" format="integer" />
-        <!-- Number of icons to use when shrinking the hotseat size,
-         defaults to numHotseatIcons / 2 -->
-        <attr name="numShrunkenHotseatIcons" format="integer" />
         <!-- Number of icons to use when extending the hotseat size,
          defaults to 2 * numHotseatIcons -->
         <attr name="numExtendedHotseatIcons" format="integer" />
@@ -170,14 +193,20 @@
         <!-- defaults to numColumns, if not specified -->
         <attr name="hotseatColumnSpanTwoPanelPortrait" format="integer" />
 
+        <!-- Spacing to have at the end of the nav buttons in large screen 3 button nav,
+             defaults to @dimen/taskbar_button_margin_default -->
+        <attr name="inlineNavButtonsEndSpacing" format="reference" />
+
         <attr name="dbFile" format="string" />
         <attr name="defaultLayoutId" format="reference" />
-        <attr name="defaultSplitDisplayLayoutId" format="reference" />
         <attr name="demoModeLayoutId" format="reference" />
         <attr name="isScalable" format="boolean" />
         <attr name="devicePaddingId" format="reference" />
+        <!-- File that contains the specs for the workspace.
+        Needs FeatureFlags.ENABLE_RESPONSIVE_WORKSPACE enabled -->
+        <attr name="workspaceSpecsId" format="reference" />
         <!-- By default all categories are enabled -->
-        <attr name="deviceCategory" format="integer" >
+        <attr name="deviceCategory" format="integer">
             <!-- Enable on phone only -->
             <flag name="phone" value="1" />
             <!-- Enable on tablets only -->
@@ -186,6 +215,18 @@
             <flag name="multi_display" value="4" />
         </attr>
 
+        <!-- By default all are false -->
+        <attr name="inlineQsb" format="integer">
+            <!-- Enable on landscape only -->
+            <flag name="portrait" value="1" />
+            <!-- Enable on portrait only -->
+            <flag name="landscape" value="2" />
+            <!-- Enable on two panel portrait only -->
+            <flag name="twoPanelPortrait" value="4" />
+            <!-- Enable on two panel landscape only -->
+            <flag name="twoPanelLandscape" value="8" />
+        </attr>
+
     </declare-styleable>
 
     <declare-styleable name="DevicePadding">
@@ -198,6 +239,25 @@
         <attr name="c" format="float|dimension" />
     </declare-styleable>
 
+    <declare-styleable name="PersonalWorkSlidingTabStrip">
+        <attr name="alignOnIcon" format="boolean" />
+    </declare-styleable>
+
+    <!--  Responsive grids attributes  -->
+    <declare-styleable name="WorkspaceSpec">
+        <attr name="specType" format="integer">
+            <enum name="height" value="0" />
+            <enum name="width" value="1" />
+        </attr>
+        <attr name="maxAvailableSize" format="dimension" />
+    </declare-styleable>
+
+    <declare-styleable name="SpecSize">
+        <attr name="fixedSize" format="dimension" />
+        <attr name="ofAvailableSpace" format="float" />
+        <attr name="ofRemainderSpace" format="float" />
+    </declare-styleable>
+
     <declare-styleable name="ProfileDisplayOption">
         <attr name="name" />
         <attr name="minWidthDps" format="float" />
@@ -252,9 +312,10 @@
         if not specified -->
         <attr name="borderSpaceTwoPanelLandscapeVertical" format="float" />
 
-        <!-- These min cell values are only used if GridDisplayOption#isScalable is true -->
-        <!-- defaults to minCellHeight, if not specified -->
+        <!-- defaults to minCellHeight if not specified when GridDisplayOption#isScalable is true.
+         Must be defined when GridDisplayOption#isScalable is false. -->
         <attr name="allAppsCellHeight" format="float" />
+        <!-- These min cell values are only used if GridDisplayOption#isScalable is true -->
         <!-- defaults to minCellWidth, if not specified -->
         <attr name="allAppsCellWidth" format="float" />
         <!-- defaults to allAppsCellHeight, if not specified -->
@@ -273,6 +334,8 @@
         <!-- defaults to iconImageSize, if not specified -->
         <attr name="allAppsIconSize" format="float" />
         <!-- defaults to allAppsIconSize, if not specified -->
+        <attr name="allAppsIconSizeLandscape" format="float" />
+        <!-- defaults to allAppsIconSize, if not specified -->
         <attr name="allAppsIconSizeTwoPanelPortrait" format="float" />
         <!-- defaults to allAppsIconSize, if not specified -->
         <attr name="allAppsIconSizeTwoPanelLandscape" format="float" />
@@ -317,14 +380,32 @@
         if not specified -->
         <attr name="allAppsBorderSpaceTwoPanelLandscapeVertical" format="float" />
 
-        <!-- defaults to borderSpaceDps, if not specified -->
-        <attr name="hotseatBorderSpace" format="float" />
-        <!-- defaults to hotseatBorderSpace, if not specified -->
-        <attr name="hotseatBorderSpaceLandscape" format="float" />
-        <!-- defaults to hotseatBorderSpace, if not specified -->
-        <attr name="hotseatBorderSpaceTwoPanelLandscape" format="float" />
-        <!-- defaults to hotseatBorderSpace, if not specified -->
-        <attr name="hotseatBorderSpaceTwoPanelPortrait" format="float" />
+        <!-- defaults to res.hotseat_bar_bottom_space_default, if not specified -->
+        <attr name="hotseatBarBottomSpace" format="float" />
+        <!-- defaults to hotseatBarBottomSpace, if not specified -->
+        <attr name="hotseatBarBottomSpaceLandscape" format="float" />
+        <!-- defaults to hotseatBarBottomSpace, if not specified -->
+        <attr name="hotseatBarBottomSpaceTwoPanelLandscape" format="float" />
+        <!-- defaults to hotseatBarBottomSpace, if not specified -->
+        <attr name="hotseatBarBottomSpaceTwoPanelPortrait" format="float" />
+
+        <!-- defaults to res.hotseat_qsb_space_default, if not specified -->
+        <attr name="hotseatQsbSpace" format="float" />
+        <!-- defaults to hotseatQsbSpace, if not specified -->
+        <attr name="hotseatQsbSpaceLandscape" format="float" />
+        <!-- defaults to hotseatQsbSpace, if not specified -->
+        <attr name="hotseatQsbSpaceTwoPanelLandscape" format="float" />
+        <!-- defaults to hotseatQsbSpace, if not specified -->
+        <attr name="hotseatQsbSpaceTwoPanelPortrait" format="float" />
+
+        <!-- defaults to res.taskbar_icon_size, if not specified -->
+        <attr name="transientTaskbarIconSize" format="float" />
+        <!-- defaults to transientTaskbarIconSize, if not specified -->
+        <attr name="transientTaskbarIconSizeLandscape" format="float" />
+        <!-- defaults to transientTaskbarIconSize, if not specified -->
+        <attr name="transientTaskbarIconSizeTwoPanelLandscape" format="float" />
+        <!-- defaults to transientTaskbarIconSize, if not specified -->
+        <attr name="transientTaskbarIconSizeTwoPanelPortrait" format="float" />
 
         <attr name="iconImageSize" format="float" />
         <!-- defaults to iconImageSize, if not specified -->
@@ -342,6 +423,16 @@
         <!-- defaults to iconTextSize, if not specified -->
         <attr name="iconTextSizeTwoPanelLandscape" format="float" />
 
+        <!-- If true, used to layout taskbar in 3 button navigation mode. -->
+        <!-- defaults to false if not specified -->
+        <attr name="startAlignTaskbar" format="boolean" />
+        <!-- defaults to startAlignTaskbar, if not specified -->
+        <attr name="startAlignTaskbarLandscape" format="boolean" />
+        <!-- defaults to startAlignTaskbarLandscape, if not specified -->
+        <attr name="startAlignTaskbarTwoPanelLandscape" format="boolean" />
+        <!-- defaults to startAlignTaskbar, if not specified -->
+        <attr name="startAlignTaskbarTwoPanelPortrait" format="boolean" />
+
         <!-- If set, this display option is used to determine the default grid -->
         <attr name="canBeDefault" format="boolean" />
 
@@ -354,17 +445,21 @@
         <!-- defaults to horizontalMargin if not specified -->
         <attr name="horizontalMarginTwoPanelPortrait" format="float"/>
 
-        <!-- By default all are false -->
-        <attr name="inlineQsb" format="integer" >
-            <!-- Enable on landscape only -->
-            <flag name="portrait" value="1" />
-            <!-- Enable on portrait only -->
-            <flag name="landscape" value="2" />
-            <!-- Enable on two panel portrait only -->
-            <flag name="twoPanelPortrait" value="4" />
-            <!-- Enable on two panel landscape only -->
-            <flag name="twoPanelLandscape" value="8" />
-        </attr>
+    </declare-styleable>
+
+    <declare-styleable name="FolderStyle">
+        <!-- defaults to minCellHeight if not specified
+        when GridDisplayOption#isScalable is true. -->
+        <attr name="folderCellHeight" format="dimension" />
+        <!-- defaults to minCellWidth, if not specified -->
+        <attr name="folderCellWidth" format="dimension" />
+        <!-- space to be used horizontally and vertically between icons,
+        and to the left and right of folder -->
+        <attr name="folderBorderSpace" format="dimension" />
+        <!-- height of the footer of the folder -->
+        <attr name="folderFooterHeight" format="dimension" />
+        <!-- padding on top of the folder -->
+        <attr name="folderTopPadding" format="dimension" />
     </declare-styleable>
 
     <declare-styleable name="CellLayout">
@@ -375,6 +470,14 @@
         </attr>
     </declare-styleable>
 
+    <declare-styleable name="CellStyle">
+        <attr name="iconDrawablePadding" format="dimension" />
+    </declare-styleable>
+
+    <declare-styleable name="AllAppsStyle">
+        <attr name="horizontalPadding" format="dimension" />
+    </declare-styleable>
+
     <declare-styleable name="ShadowDrawable">
         <attr name="android:src" />
         <attr name="android:shadowColor" />
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 2bc9239..ad7a10b 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -39,10 +39,12 @@
     <color name="popup_color_primary_light">#FFF</color>
     <color name="popup_color_secondary_light">#F1F3F4</color>
     <color name="popup_color_tertiary_light">#E0E0E0</color> <!-- Gray 300 -->
+    <color name="popup_text_color_light">#1F1F1F</color>
     <color name="popup_color_neutral_dark">#3C4043</color> <!-- Gray 800 -->
     <color name="popup_color_primary_dark">#3C4043</color> <!-- Gray 800 -->
     <color name="popup_color_secondary_dark">#202124</color>
     <color name="popup_color_tertiary_dark">#757575</color> <!-- Gray 600 -->
+    <color name="popup_text_color_dark">#E3E3E3</color>
 
     <color name="popup_shade_first_light">#F9F9F9</color>
     <color name="popup_shade_second_light">#F1F1F1</color>
@@ -54,35 +56,76 @@
     <color name="popup_notification_dot_light">#FFF</color>
     <color name="popup_notification_dot_dark">#757575</color>
 
+    <color name="notification_dot_color_light">#6DD58C</color>
+    <color name="notification_dot_color_dark">#C4EED0</color>
+
     <color name="workspace_text_color_light">#FFF</color>
     <color name="workspace_text_color_dark">#FF000000</color>
 
-    <color name="folder_hint_text_color_light">#FFF</color>
-    <color name="folder_hint_text_color_dark">#FF000000</color>
+    <color name="folder_text_color_light">#1F1F1F</color>
+    <color name="folder_text_color_dark">#E3E3E3</color>
+    <color name="folder_hint_text_color_light">#444746</color>
+    <color name="folder_hint_text_color_dark">#C4C7C5</color>
 
-    <color name="folder_background_light">#F9F9F9</color>
-    <color name="folder_background_dark">#464746</color>
+    <color name="folder_background_light">#EFEDED</color>
+    <color name="folder_background_dark">#1F2020</color>
 
-    <color name="folder_preview_light">#F9F9F9</color>
-    <color name="folder_preview_dark">#464746</color>
+    <color name="folder_preview_light">#7FCFFF</color>
+    <color name="folder_preview_dark">#2A2A2A</color>
 
-    <color name="folder_dot_color">?attr/colorPrimary</color>
-    <color name="folder_pagination_color_light">#ff006c5f</color>
-    <color name="folder_pagination_color_dark">#ffbfebe3</color>
+    <color name="folder_pagination_color_light">#0B57D0</color>
+    <color name="folder_pagination_color_dark">#A8C7FA</color>
 
     <color name="text_color_primary_dark">#FFFFFFFF</color>
     <color name="text_color_secondary_dark">#FFFFFFFF</color>
     <color name="text_color_tertiary_dark">#CCFFFFFF</color>
 
     <color name="wallpaper_popup_scrim">?android:attr/colorAccent</color>
-    <color name="wallpaper_scrim_color">#0D878787</color>
 
-    <color name="workspace_accent_color_light">#ff8df5e3</color>
-    <color name="workspace_accent_color_dark">#ff3d665f</color>
+    <color name="workspace_accent_color_light">#D3E3FD</color>
+    <color name="workspace_accent_color_dark">#041E49</color>
+    <color name="workspace_surface_color">#D3E3FD</color>
+    <color name="drop_target_hover_text_color_light">#041E49</color>
+    <color name="drop_target_hover_text_color_dark">#D3E3FD</color>
+    <color name="drop_target_hover_button_color_light">#D3E3FD</color>
+    <color name="drop_target_hover_button_color_dark">#0842A0</color>
 
-    <color name="all_apps_button_bg_color">#F7F9FA</color>
-    <color name="all_apps_button_color_1">#00677E</color>
-    <color name="all_apps_button_color_2">#00677E</color>
-    <color name="all_apps_button_color_3">#5F757E</color>
-    <color name="all_apps_button_color_4">#005A6E</color>
+    <color name="preload_icon_accent_color_light">#00668B</color>
+    <color name="preload_icon_background_color_light">#B5CAD7</color>
+    <color name="preload_icon_accent_color_dark">#4BB6E8</color>
+    <color name="preload_icon_background_color_dark">#40484D</color>
+
+    <color name="work_turn_on_stroke">?android:attr/colorAccent</color>
+    <color name="work_fab_bg_color">#A8C7FA</color>
+    <color name="work_fab_icon_color">#041E49</color>
+
+    <color name="widget_picker_primary_surface_color_light">#EFEDED</color>
+    <color name="widget_picker_secondary_surface_color_light">#FAF9F8</color>
+    <color name="widget_picker_title_color_light">#1F1F1F</color>
+    <color name="widget_picker_header_app_title_color_light">#1F1F1F</color>
+    <color name="widget_picker_header_app_subtitle_color_light">#444746</color>
+    <color name="widget_picker_header_background_color_light">#C2E7FF</color>
+    <color name="widget_picker_suggestions_icon_background_color_light">#FFFFFF</color>
+    <color name="widget_picker_suggestions_icon_color_light">#0B57D0</color>
+    <color name="widget_picker_search_text_color_light">#444746</color>
+    <color name="widget_picker_tab_background_selected_light">#0B57D0</color>
+    <color name="widget_picker_tab_background_unselected_light">#E3E3E3</color>
+    <color name="widget_picker_selected_tab_text_color_light">#FFFFFF</color>
+    <color name="widget_picker_unselected_tab_text_color_light">#444746</color>
+    <color name="widget_picker_collapse_handle_color_light">#C4C7C5</color>
+
+    <color name="widget_picker_primary_surface_color_dark">#1F2020</color>
+    <color name="widget_picker_secondary_surface_color_dark">#393939</color>
+    <color name="widget_picker_title_color_dark">#E3E3E3</color>
+    <color name="widget_picker_header_app_title_color_dark">#E3E3E3</color>
+    <color name="widget_picker_header_app_subtitle_color_dark">#C4C7C5</color>
+    <color name="widget_picker_header_background_color_dark">#004A77</color>
+    <color name="widget_picker_suggestions_icon_background_color_dark">#FFFFFFFF</color>
+    <color name="widget_picker_suggestions_icon_color_dark">#062E6F</color>
+    <color name="widget_picker_search_text_color_dark">#C4C7C5</color>
+    <color name="widget_picker_tab_background_selected_dark">#A8C7FA</color>
+    <color name="widget_picker_tab_background_unselected_dark">#343535</color>
+    <color name="widget_picker_selected_tab_text_color_dark">#2D312F</color>
+    <color name="widget_picker_unselected_tab_text_color_dark">#C4C7C5</color>
+    <color name="widget_picker_collapse_handle_color_dark">#444746</color>
 </resources>
diff --git a/res/values/config.xml b/res/values/config.xml
index 9aa1f03..5a6698b 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -49,9 +49,6 @@
     <!-- View tag key used to determine if we should fade in the child views.. -->
     <string name="popup_container_iterate_children" translatable="false">popup_container_iterate_children</string>
 
-    <!-- config used to determine if header protection is supported in AllApps -->
-    <bool name="config_header_protection_supported">false</bool>
-
     <!-- Workspace -->
     <!-- The duration (in ms) of the fade animation on the object outlines, used when
          we are dragging objects around on the home screen. -->
@@ -85,6 +82,8 @@
     <string name="launcher_activity_logic_class" translatable="false"></string>
     <string name="model_delegate_class" translatable="false"></string>
     <string name="window_manager_proxy_class" translatable="false"></string>
+    <string name="secondary_display_predictions_class" translatable="false"></string>
+    <string name="widget_holder_factory_class" translatable="false"></string>
 
     <!-- View ID to use for QSB widget -->
     <item type="id" name="qsb_widget" />
@@ -130,6 +129,11 @@
     <item type="id" name="search_container_all_apps" />
     <item type="id" name="search_container_hotseat" />
 
+    <!-- Scalable Grid configuration -->
+    <!-- This is a float because it is converted to dp later in DeviceProfile -->
+    <dimen name="hotseat_bar_bottom_space_default">48</dimen>
+    <dimen name="hotseat_qsb_space_default">0</dimen>
+
     <!-- Recents -->
     <item type="id" name="overview_panel"/>
 
@@ -151,6 +155,7 @@
 
     <item name="swipe_up_rect_scale_damping_ratio" type="dimen" format="float">0.75</item>
     <item name="swipe_up_rect_scale_stiffness" type="dimen" format="float">200</item>
+    <item name="swipe_up_rect_scale_higher_stiffness" type="dimen" format="float">400</item>
 
     <item name="swipe_up_rect_xy_fling_friction" type="dimen" format="float">1.5</item>
 
@@ -159,6 +164,17 @@
     <item name="swipe_up_rect_xy_damping_ratio" type="dimen" format="float">0.8</item>
     <item name="swipe_up_rect_xy_stiffness" type="dimen" format="float">200</item>
 
+    <!-- Taskbar -->
+    <!-- This is a float because it is converted to dp later in DeviceProfile -->
+    <item name="taskbar_icon_size" type="dimen" format="float">0</item>
+
+    <!-- These params are only used for hotseat items on devices that have a taskbar. -->
+    <item name="taskbar_swipe_up_rect_x_stiffness" type="dimen" format="float">350</item>
+    <item name="taskbar_swipe_up_rect_x_damping" type="dimen" format="float">0.9</item>
+    <item name="taskbar_swipe_up_rect_y_stiffness" type="dimen" format="float">200</item>
+    <item name="taskbar_swipe_up_rect_y_damping" type="dimen" format="float">0.78</item>
+    <item name="taskbar_swipe_up_rect_scale_stiffness" type="dimen" format="float">200</item>
+
     <item name="staggered_damping_ratio" type="dimen" format="float">0.7</item>
     <item name="staggered_stiffness" type="dimen" format="float">150</item>
     <dimen name="unlock_staggered_velocity_dp_per_s">2dp</dimen>
@@ -186,4 +202,19 @@
     <dimen name="swipe_back_window_scale_x_margin">10dp</dimen>
     <dimen name="swipe_back_window_max_delta_y">160dp</dimen>
     <dimen name="swipe_back_window_corner_radius">40dp</dimen>
+
+    <!-- The duration of the bottom sheet opening and closing animation -->
+    <integer name="config_bottomSheetOpenDuration">267</integer>
+    <integer name="config_bottomSheetCloseDuration">267</integer>
+
+    <!-- The duration of the AllApps opening and closing animation -->
+    <integer name="config_allAppsOpenDuration">600</integer>
+    <integer name="config_allAppsCloseDuration">300</integer>
+
+    <!-- The max scale for the wallpaper when it's zoomed in -->
+    <item name="config_wallpaperMaxScale" format="float" type="dimen">0</item>
+
+    <!-- Whether the floating rotation button should be on the left/right in the device's natural
+         orientation -->
+    <bool name="floating_rotation_button_position_left">true</bool>
 </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 8403af4..786088e 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -21,9 +21,6 @@
     <!-- Dynamic Grid -->
     <dimen name="dynamic_grid_edge_margin">10.77dp</dimen>
     <dimen name="dynamic_grid_left_right_margin">8dp</dimen>
-    <dimen name="dynamic_grid_icon_drawable_padding">7dp</dimen>
-    <!-- Minimum space between workspace and hotseat in spring loaded mode -->
-    <dimen name="dynamic_grid_min_spring_loaded_space">8dp</dimen>
     <!-- Minimum amount of next page visible in spring loaded mode -->
     <dimen name="dynamic_grid_spring_loaded_min_next_space_visible">24dp</dimen>
 
@@ -32,25 +29,13 @@
     <dimen name="dynamic_grid_cell_padding_x">8dp</dimen>
 
     <!-- Hotseat -->
-    <dimen name="dynamic_grid_hotseat_top_padding">8dp</dimen>
-    <dimen name="dynamic_grid_hotseat_bottom_padding">2dp</dimen>
     <dimen name="dynamic_grid_hotseat_bottom_tall_padding">0dp</dimen>
-    <dimen name="inline_qsb_bottom_margin">0dp</dimen>
     <dimen name="spring_loaded_hotseat_top_margin">76dp</dimen>
 
-    <!-- Qsb -->
-    <!-- Used for adjusting the position of QSB when placed in hotseat. This is a ratio and a higher
-     number signifies that the QSB is close to the hotseat icons and a lower number signifies that
-      it is close to the bottom of the screen -->
-    <item name="qsb_center_factor" format="float" type="dimen">0.325</item>
-
-    <!-- Extra bottom padding for non-tall devices. -->
-    <dimen name="dynamic_grid_hotseat_bottom_non_tall_padding">0dp</dimen>
-    <dimen name="dynamic_grid_hotseat_extra_vertical_size">34dp</dimen>
     <dimen name="dynamic_grid_hotseat_side_padding">0dp</dimen>
 
     <!-- Scalable Grid -->
-    <dimen name="scalable_grid_qsb_bottom_margin">42dp</dimen>
+    <dimen name="min_qsb_margin">8dp</dimen>
 
     <!-- Workspace page indicator -->
     <dimen name="workspace_page_indicator_height">24dp</dimen>
@@ -101,6 +86,8 @@
     -->
     <dimen name="fastscroll_width">58dp</dimen>
     <dimen name="fastscroll_end_margin">-26dp</dimen>
+    <!-- Extra margin between bottom of the scrollbar and the search bar protection layer. -->
+    <dimen name="fastscroll_bottom_margin_floating_search">4dp</dimen>
 
     <!-- PagedView -->
     <dimen name="fling_threshold_velocity">500dp</dimen>
@@ -116,15 +103,14 @@
     <dimen name="all_apps_search_bar_content_overlap">24dp</dimen>
     <dimen name="all_apps_search_bar_bottom_padding">30dp</dimen>
     <dimen name="all_apps_empty_search_message_top_offset">40dp</dimen>
-    <dimen name="all_apps_empty_search_bg_top_offset">144dp</dimen>
-    <dimen name="all_apps_background_canvas_width">700dp</dimen>
-    <dimen name="all_apps_background_canvas_height">475dp</dimen>
     <dimen name="all_apps_header_pill_height">48dp</dimen>
     <dimen name="all_apps_header_pill_corner_radius">12dp</dimen>
     <dimen name="all_apps_header_tab_height">48dp</dimen>
     <dimen name="all_apps_tabs_indicator_height">2dp</dimen>
     <dimen name="all_apps_header_top_margin">33dp</dimen>
     <dimen name="all_apps_header_top_padding">36dp</dimen>
+    <!-- Additional top padding to add when Floating Searchbar is enabled. -->
+    <dimen name="all_apps_additional_top_padding_floating_search">16dp</dimen>
     <dimen name="all_apps_header_bottom_padding">14dp</dimen>
     <dimen name="all_apps_header_top_adjustment">6dp</dimen>
     <dimen name="all_apps_header_bottom_adjustment">4dp</dimen>
@@ -132,31 +118,28 @@
     <dimen name="all_apps_work_profile_tab_footer_bottom_padding">20dp</dimen>
     <dimen name="all_apps_tabs_button_horizontal_padding">4dp</dimen>
     <dimen name="all_apps_tabs_vertical_padding">6dp</dimen>
+    <dimen name="all_apps_tabs_margin_top">8dp</dimen>
     <dimen name="all_apps_divider_height">2dp</dimen>
     <dimen name="all_apps_divider_width">128dp</dimen>
     <dimen name="all_apps_content_fade_in_offset">150dp</dimen>
     <dimen name="all_apps_tip_bottom_margin">8dp</dimen>
     <dimen name="all_apps_height_extra">6dp</dimen>
-    <dimen name="all_apps_bottom_sheet_horizontal_padding">0dp</dimen>
     <dimen name="all_apps_paged_view_top_padding">40dp</dimen>
-    <dimen name="all_apps_personal_work_tabs_vertical_margin">16dp</dimen>
 
     <dimen name="all_apps_icon_drawable_padding">8dp</dimen>
+    <dimen name="all_apps_predicted_icon_vertical_padding">8dp</dimen>
     <!-- The size of corner radius of the arrow in the arrow toast. -->
     <dimen name="arrow_toast_corner_radius">2dp</dimen>
     <dimen name="arrow_toast_elevation">2dp</dimen>
     <dimen name="arrow_toast_arrow_width">10dp</dimen>
 
-    <!-- Search bar in All Apps -->
-    <dimen name="all_apps_header_max_elevation">3dp</dimen>
-    <dimen name="all_apps_header_scroll_to_elevation">16dp</dimen>
-    <dimen name="all_apps_header_shadow_height">6dp</dimen>
-
     <dimen name="all_apps_divider_margin_vertical">8dp</dimen>
 
     <!-- Floating action button inside work tab to toggle work profile -->
     <dimen name="work_fab_height">56dp</dimen>
     <dimen name="work_fab_radius">16dp</dimen>
+    <dimen name="work_fab_icon_size">24dp</dimen>
+    <dimen name="work_fab_text_start_margin">8dp</dimen>
     <dimen name="work_card_padding_horizontal">10dp</dimen>
     <dimen name="work_card_button_height">52dp</dimen>
     <dimen name="work_fab_margin">16dp</dimen>
@@ -166,6 +149,7 @@
     <dimen name="work_edu_card_margin">16dp</dimen>
     <dimen name="work_edu_card_radius">16dp</dimen>
     <dimen name="work_edu_card_bottom_margin">26dp</dimen>
+    <dimen name="work_apps_paused_button_stroke">1dp</dimen>
 
     <dimen name="work_card_margin">24dp</dimen>
     <!-- (x) icon button inside work edu card -->
@@ -188,6 +172,7 @@
     <dimen name="widget_tabs_button_horizontal_padding">4dp</dimen>
     <dimen name="widget_tabs_horizontal_padding">16dp</dimen>
     <dimen name="widget_apps_tabs_vertical_padding">6dp</dimen>
+    <dimen name="widget_picker_landscape_tablet_left_right_margin">117dp</dimen>
 
     <dimen name="recommended_widgets_table_vertical_padding">8dp</dimen>
 
@@ -202,6 +187,7 @@
     <dimen name="widget_list_header_view_vertical_padding">20dp</dimen>
     <dimen name="widget_list_entry_spacing">2dp</dimen>
     <dimen name="widget_list_horizontal_margin">16dp</dimen>
+    <dimen name="widget_list_horizontal_margin_two_pane">24dp</dimen>
 
     <dimen name="widget_preview_shadow_blur">0.5dp</dimen>
     <dimen name="widget_preview_key_shadow_distance">1dp</dimen>
@@ -237,9 +223,11 @@
     <dimen name="drop_target_text_size">16sp</dimen>
     <dimen name="drop_target_shadow_elevation">2dp</dimen>
     <dimen name="drop_target_bar_margin_horizontal">4dp</dimen>
+    <dimen name="drop_target_button_drawable_size">20dp</dimen>
     <dimen name="drop_target_button_drawable_padding">8dp</dimen>
     <dimen name="drop_target_button_drawable_horizontal_padding">16dp</dimen>
     <dimen name="drop_target_button_drawable_vertical_padding">8dp</dimen>
+    <dimen name="drop_target_button_frame_radius">80dp</dimen>
     <dimen name="drop_target_button_gap">28dp</dimen>
     <dimen name="drop_target_button_workspace_edge_gap">0dp</dimen>
 
@@ -257,12 +245,15 @@
 
     <!-- Folders -->
     <dimen name="page_indicator_dot_size">8dp</dimen>
+    <dimen name="page_indicator_dot_size_v2">6dp</dimen>
+    <dimen name="page_indicator_size">10dp</dimen>
+
 
     <dimen name="folder_cell_x_padding">9dp</dimen>
     <dimen name="folder_cell_y_padding">6dp</dimen>
     <!-- label text size = workspace text size multiplied by this scale -->
     <dimen name="folder_label_text_scale">1.14</dimen>
-    <dimen name="folder_label_height">48dp</dimen>
+    <dimen name="folder_footer_height_default">56dp</dimen>
 
     <dimen name="folder_content_padding_left_right">8dp</dimen>
     <dimen name="folder_content_padding_top">16dp</dimen>
@@ -286,7 +277,7 @@
     <dimen name="deep_shortcuts_elevation">2dp</dimen>
     <dimen name="bg_popup_padding">2dp</dimen>
     <dimen name="bg_popup_item_width">216dp</dimen>
-    <dimen name="bg_popup_item_height">56dp</dimen>
+    <dimen name="bg_popup_item_height">52dp</dimen>
     <dimen name="bg_popup_item_vertical_padding">12dp</dimen>
     <dimen name="pre_drag_view_scale">6dp</dimen>
     <!-- an icon with shortcuts must be dragged this far before the container is removed. -->
@@ -295,10 +286,10 @@
     <dimen name="popup_margin">2dp</dimen>
     <dimen name="popup_single_item_radius">100dp</dimen>
     <dimen name="popup_smaller_radius">4dp</dimen>
-    <dimen name="deep_shortcut_drawable_padding">12dp</dimen>
+    <dimen name="deep_shortcut_drawable_padding">16dp</dimen>
     <dimen name="deep_shortcut_drag_handle_size">16dp</dimen>
     <dimen name="popup_padding_start">10dp</dimen>
-    <dimen name="popup_padding_end">16dp</dimen>
+    <dimen name="popup_padding_end">14dp</dimen>
     <dimen name="popup_vertical_padding">4dp</dimen>
     <dimen name="popup_arrow_width">12dp</dimen>
     <dimen name="popup_arrow_height">10dp</dimen>
@@ -306,32 +297,40 @@
     <!-- popup_padding_start + deep_shortcut_icon_size / 2 -->
     <dimen name="popup_arrow_horizontal_center_offset">26dp</dimen>
     <dimen name="popup_arrow_corner_radius">2dp</dimen>
-    <!-- popup_padding_start + deep_shortcut_icon_size + 10dp -->
-    <dimen name="deep_shortcuts_text_padding_start">52dp</dimen>
+    <!-- popup_padding_start + deep_shortcut_icon_size + 12dp -->
+    <dimen name="deep_shortcuts_text_padding_start">54dp</dimen>
     <dimen name="system_shortcut_icon_size">20dp</dimen>
     <!-- popup_arrow_horizontal_center_offset - system_shortcut_icon_size / 2 -->
     <dimen name="system_shortcut_margin_start">16dp</dimen>
-    <dimen name="system_shortcut_header_height">56dp</dimen>
+    <dimen name="system_shortcut_header_height">52dp</dimen>
     <dimen name="system_shortcut_header_icon_touch_size">48dp</dimen>
     <!-- (system_shortcut_header_icon_touch_size - system_shortcut_icon_size) / 2 -->
     <dimen name="system_shortcut_header_icon_padding">14dp</dimen>
+    <!-- side of start/end icon near to container edge -->
+    <dimen name="system_shortcut_header_icon_padding_outer">16dp</dimen>
+    <!-- side of start/end icon far from container edge -->
+    <dimen name="system_shortcut_header_icon_padding_inner">12dp</dimen>
+
 
     <!-- Notifications -->
     <dimen name="bg_round_rect_radius">8dp</dimen>
+    <dimen name="notification_container_height">104dp</dimen>
     <dimen name="notification_max_trans">8dp</dimen>
     <dimen name="notification_space">8dp</dimen>
-    <dimen name="notification_padding">16dp</dimen>
-    <dimen name="notification_padding_top">18dp</dimen>
+    <dimen name="notification_padding_end">16dp</dimen>
+    <dimen name="notification_padding_bottom">12dp</dimen>
+    <dimen name="notification_padding_top">12dp</dimen>
+    <dimen name="notification_padding_header_top">16dp</dimen>
+    <dimen name="notification_header_padding_start">14dp</dimen>
     <dimen name="notification_header_text_size">14sp</dimen>
     <dimen name="notification_header_count_text_size">12sp</dimen>
     <dimen name="notification_main_title_size">14sp</dimen>
     <dimen name="notification_main_text_size">14sp</dimen>
     <dimen name="notification_circle_icon_size">24dp</dimen>
     <dimen name="notification_icon_size">32dp</dimen>
-    <!-- Space between edge and icon and icon and text -->
-    <dimen name="notification_icon_padding">12dp</dimen>
+    <dimen name="notification_icon_padding_start">10dp</dimen>
     <!-- notification_icon_padding + notification_icon_size + notification_icon_padding -->
-    <dimen name="notification_main_text_padding_start">56dp</dimen>
+    <dimen name="notification_main_text_padding_start">54dp</dimen>
     <dimen name="horizontal_ellipsis_size">18dp</dimen>
 
     <!-- Overview -->
@@ -340,7 +339,7 @@
 
     <!-- Snackbar -->
     <dimen name="snackbar_height">48dp</dimen>
-    <dimen name="snackbar_content_height">32dp</dimen>
+    <dimen name="snackbar_content_height">48dp</dimen>
     <dimen name="snackbar_padding">8dp</dimen>
     <dimen name="snackbar_min_margin_left_right">6dp</dimen>
     <dimen name="snackbar_max_margin_left_right">72dp</dimen>
@@ -354,7 +353,7 @@
     <dimen name="developer_options_filter_margins">10dp</dimen>
 
     <!-- Theming related -->
-    <dimen name="default_dialog_corner_radius">8dp</dimen>
+    <dimen name="default_dialog_corner_radius">26dp</dimen>
     <dimen name="dialogCornerRadius">@dimen/default_dialog_corner_radius</dimen>
 
     <!-- Onboarding bottomsheet related -->
@@ -364,9 +363,27 @@
     <dimen name="taskbar_size">0dp</dimen>
     <dimen name="taskbar_stashed_size">0dp</dimen>
     <dimen name="qsb_widget_height">0dp</dimen>
-    <dimen name="taskbar_icon_size">44dp</dimen>
-    <!-- Note that this applies to both sides of all icons, so visible space is double this. -->
-    <dimen name="taskbar_icon_spacing">8dp</dimen>
+    <dimen name="qsb_shadow_height">0dp</dimen>
+    <dimen name="min_hotseat_icon_space">18dp</dimen>
+    <dimen name="max_hotseat_icon_space">50dp</dimen>
+    <dimen name="min_hotseat_qsb_width">0dp</dimen>
+
+    <!-- Transient taskbar (placeholders to compile in Launcher3 without Quickstep) -->
+    <dimen name="transient_taskbar_padding">0dp</dimen>
+    <dimen name="transient_taskbar_bottom_margin">0dp</dimen>
+    <dimen name="transient_taskbar_shadow_blur">0dp</dimen>
+    <dimen name="transient_taskbar_key_shadow_distance">0dp</dimen>
+    <dimen name="transient_taskbar_stashed_height">0dp</dimen>
+    <dimen name="transient_taskbar_clamped_offset_bound">0dp</dimen>
+    <dimen name="taskbar_icon_spacing">0dp</dimen>
+    <dimen name="taskbar_nav_buttons_size">0dp</dimen>
+    <dimen name="taskbar_contextual_button_margin">0dp</dimen>
+    <dimen name="taskbar_hotseat_nav_spacing">0dp</dimen>
+    <dimen name="taskbar_button_margin_default">0dp</dimen>
+    <dimen name="taskbar_button_space_inbetween">0dp</dimen>
+    <dimen name="taskbar_button_space_inbetween_phone">0dp</dimen>
+    <dimen name="taskbar_button_margin_split">0dp</dimen>
+    <dimen name="taskbar_button_margin_6_5">0dp</dimen>
 
     <!-- Size of the maximum radius for the enforced rounded rectangles. -->
     <dimen name="enforced_rounded_corner_max_radius">16dp</dimen>
@@ -379,7 +396,6 @@
     <dimen name="task_thumbnail_icon_drawable_size">0dp</dimen>
     <dimen name="task_thumbnail_icon_drawable_size_grid">0dp</dimen>
     <dimen name="overview_task_margin">0dp</dimen>
-    <dimen name="overview_task_margin_grid">0dp</dimen>
     <dimen name="overview_actions_height">0dp</dimen>
     <dimen name="overview_actions_button_spacing">0dp</dimen>
     <dimen name="overview_actions_margin_gesture">0dp</dimen>
@@ -391,8 +407,13 @@
     <dimen name="split_placeholder_inset">16dp</dimen>
     <dimen name="split_placeholder_icon_size">44dp</dimen>
     <dimen name="task_menu_width_grid">216dp</dimen>
-
-
+    <dimen name="split_instructions_radius">22dp</dimen>
+    <dimen name="split_instructions_elevation">1dp</dimen>
+    <dimen name="split_instructions_horizontal_padding">24dp</dimen>
+    <dimen name="split_instructions_vertical_padding">12dp</dimen>
+    <dimen name="split_instructions_bottom_margin_phone_landscape">24dp</dimen>
+    <dimen name="split_instructions_bottom_margin_phone_portrait">60dp</dimen>
+    
     <!-- Workspace grid visualization parameters -->
     <dimen name="grid_visualization_rounding_radius">28dp</dimen>
     <dimen name="grid_visualization_horizontal_cell_spacing">6dp</dimen>
@@ -405,8 +426,16 @@
 
     <!-- Bottom sheet related parameters -->
     <dimen name="bottom_sheet_extra_top_padding">0dp</dimen>
+    <dimen name="bottom_sheet_handle_area_height">36dp</dimen>
     <dimen name="bottom_sheet_handle_width">32dp</dimen>
     <dimen name="bottom_sheet_handle_height">4dp</dimen>
     <dimen name="bottom_sheet_handle_margin">16dp</dimen>
     <dimen name="bottom_sheet_handle_corner_radius">2dp</dimen>
+
+    <!-- State transition -->
+    <item name="workspace_content_scale" format="float" type="dimen">0.97</item>
+
+    <!--  Folder spaces  -->
+    <dimen name="folder_top_padding_default">24dp</dimen>
+    <dimen name="folder_footer_horiz_padding">20dp</dimen>
 </resources>
diff --git a/res/values/id.xml b/res/values/id.xml
index af21b27..7b812de 100644
--- a/res/values/id.xml
+++ b/res/values/id.xml
@@ -16,11 +16,9 @@
 -->
 <resources>
     <item type="id" name="apps_list_view_work" />
-    <item type="id" name="tag_widget_entry" />
     <item type="id" name="view_type_widgets_space" />
     <item type="id" name="view_type_widgets_list" />
     <item type="id" name="view_type_widgets_header" />
-    <item type="id" name="view_type_widgets_search_header" />
     <!--  Used for A11y actions in staged split to identify each task uniquely  -->
     <item type="id" name="split_topLeft_appInfo" />
     <item type="id" name="split_bottomRight_appInfo" />
@@ -30,6 +28,7 @@
     <item type="id" name="home" />
     <item type="id" name="recent_apps" />
     <item type="id" name="back" />
+    <item type="id" name="close"/>
     <item type="id" name="ime_switcher" />
     <item type="id" name="accessibility_button" />
     <item type="id" name="rotate_suggestion" />
@@ -38,4 +37,10 @@
     <item type="id" name="quick_settings_button" />
     <item type="id" name="notifications_button" />
     <item type="id" name="cache_entry_tag_id" />
+
+    <item type="id" name="saved_clip_children_tag_id" />
+
+    <item type="id" name="saved_floating_widget_foreground" />
+    <item type="id" name="saved_floating_widget_background" />
+
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 847e4a8..c2eb373 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -40,11 +40,11 @@
     <!-- Options for recent tasks -->
     <!-- Title for an option to enter split screen mode for a given app -->
     <string name="recent_task_option_split_screen">Split screen</string>
-    <string name="split_screen_position_top">Split top</string>
-    <string name="split_screen_position_left">Split left</string>
-    <string name="split_screen_position_right">Split right</string>
     <string name="split_app_info_accessibility">App info for %1$s</string>
 
+    <!-- App pairs -->
+    <string name="save_app_pair">Save app pair</string>
+
     <!-- Widgets -->
     <!-- Message to tell the user to press and hold on a widget to add it [CHAR_LIMIT=50] -->
     <string name="long_press_widget_to_add">Touch &amp; hold to move a widget.</string>
@@ -66,6 +66,9 @@
     <!-- Accessibility spoken message announced when a widget gets added to the home screen using a
          button in a dialog. [CHAR_LIMIT=none] -->
     <string name="added_to_home_screen_accessibility_text"><xliff:g id="widget_name" example="Calendar month view">%1$s</xliff:g> widget added to home screen</string>
+    <!-- Widget suggestions header title in the full widgets picker for large screen devices
+    in landscape mode. [CHAR_LIMIT=50] -->
+    <string name="suggested_widgets_header_title">Suggestions</string>
     <!-- Label for showing the number of widgets an app has in the full widgets picker.
          [CHAR_LIMIT=25][ICU SYNTAX] -->
     <string name="widgets_count">
@@ -103,6 +106,9 @@
     <!-- A widget category label for grouping widgets related to conversations. [CHAR_LIMIT=30] -->
     <string name="widget_category_conversations">Conversations</string>
 
+    <!-- A widget category label for grouping widgets related to note taking. [CHAR_LIMIT=30] -->
+    <string name="widget_category_note_taking">Note-taking</string>
+
     <!-- Title of a dialog. This dialog lets a user know how they can use widgets on their phone.
          [CHAR_LIMIT=NONE] -->
     <string name="widget_education_header">Useful info at your fingertips</string>
@@ -128,8 +134,6 @@
     <string name="all_apps_loading_message">Loading apps&#8230;</string>
     <!-- No-search-results text. [CHAR_LIMIT=50] -->
     <string name="all_apps_no_search_results">No apps found matching \"<xliff:g id="query" example="Android">%1$s</xliff:g>\"</string>
-    <!-- Label for the button which allows the user to get app search results. [CHAR_LIMIT=50] -->
-    <string name="all_apps_search_market_message">Search for more apps</string>
     <!-- Label for an icon representing any generic app. [CHAR_LIMIT=50] -->
     <string name="label_application">App</string>
     <!-- Label for the header text of the All Apps section in All Apps view, used to separate Predicted Apps and Actions section from All Apps section. [CHAR_LIMIT=50] -->
@@ -191,9 +195,6 @@
     <string name="permdesc_write_settings">Allows the app to change the settings and
         shortcuts in home.</string>
 
-    <!-- Toast shown on clicking a direct call shortcut. [CHAR_LIMIT=80] -->
-    <string name="msg_no_phone_permission"><xliff:g id="app_name" example="Launcher3">%1$s</xliff:g> is not allowed to make phone calls</string>
-
     <!-- Widgets: -->
     <skip />
 
@@ -252,6 +253,8 @@
     <string name="wallpaper_button_text">Wallpapers</string>
     <!-- Text for wallpaper change button [CHAR LIMIT=30]-->
     <string name="styles_wallpaper_button_text">Wallpaper &amp; style</string>
+    <!-- Text for edit home screen button [CHAR LIMIT=30]-->
+    <string name="edit_home_screen">Edit Home Screen</string>
     <!-- Text for settings button [CHAR LIMIT=20]-->
     <string name="settings_button_text">Home settings</string>
     <!-- Message shown when a feature is disabled by the administrator -->
@@ -344,7 +347,7 @@
     <string name="action_move">Move item</string>
 
     <!-- Accessibility description to move item to empty cell. -->
-    <string name="move_to_empty_cell">Move to row <xliff:g id="number" example="1">%1$s</xliff:g> column <xliff:g id="number" example="1">%2$s</xliff:g></string>
+    <string name="move_to_empty_cell_description">Move to row <xliff:g id="number" example="1">%1$s</xliff:g> column <xliff:g id="number" example="1">%2$s</xliff:g> in <xliff:g id="string" example="Home screen 2 of 4">%3$s</xliff:g></string>
 
     <!-- Accessibility description to move item inside a folder. -->
     <string name="move_to_position">Move to position <xliff:g id="number" example="1">%1$s</xliff:g></string>
@@ -421,10 +424,12 @@
 
     <!--- heading shown when user opens work apps tab while work apps are paused -->
     <string name="work_apps_paused_title">Work apps are paused</string>
-    <!--- body shown when user opens work apps tab while work apps are paused -->
+    <!--- body shown when user opens work apps tab while work apps are paused.-->
+    <string name="work_apps_paused_info_body">You won’t receive notifications from your work apps</string>
+    <!--- body shown when user opens work apps tab while work apps are paused. -->
     <string name="work_apps_paused_body">Your work apps can’t send you notifications, use your battery, or access your location</string>
-    <!-- content description for paused work apps list -->
-    <string name="work_apps_paused_content_description">Work apps are off. Your work apps can’t send you notifications, use your battery, or access your location</string>
+    <!--- body shown when user opens work apps tab while work apps are paused and calls and texts are unavailable-->
+    <string name="work_apps_paused_telephony_unavailable_body">You won’t receive phone calls, text messages, or notifications from your work apps</string>
     <!-- string shown in educational banner about work profile -->
     <string name="work_apps_paused_edu_banner">Work apps are badged and visible to your IT admin</string>
     <!-- button string shown to dismiss work tab education -->
@@ -433,7 +438,7 @@
     <!-- button string shown pause work profile -->
     <string name="work_apps_pause_btn_text">Pause work apps</string>
     <!-- button string shown enable work profile -->
-    <string name="work_apps_enable_btn_text">Turn on work apps</string>
+    <string name="work_apps_enable_btn_text">Unpause</string>
 
     <!-- A hint shown in launcher settings develop options filter box -->
     <string name="developer_options_filter_hint">Filter</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 2109510..876c3a8 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -20,6 +20,7 @@
 <resources>
     <!-- Launcher theme -->
     <style name="BaseLauncherTheme" parent="@android:style/Theme.DeviceDefault.Light">
+        <item name="disabledIconAlpha">.54</item>
         <item name="android:colorBackgroundCacheHint">@null</item>
         <item name="android:colorEdgeEffect">#FF757575</item>
         <item name="android:windowActionBar">false</item>
@@ -33,14 +34,16 @@
         <item name="allAppsScrimColor">?android:attr/colorBackgroundFloating</item>
         <item name="allappsHeaderProtectionColor">@color/popup_color_tertiary_light</item>
         <item name="allAppsNavBarScrimColor">#66FFFFFF</item>
-        <item name="allAppsTheme">@style/AllAppsTheme</item>
         <item name="popupColorPrimary">@color/popup_color_primary_light</item>
         <item name="popupColorSecondary">@color/popup_color_secondary_light</item>
         <item name="popupColorTertiary">@color/popup_color_tertiary_light</item>
+        <item name="popupColorBackground">#EFEDED</item>
+        <item name="popupTextColor">@color/popup_text_color_light</item>
         <item name="popupShadeFirst">@color/popup_shade_first_light</item>
         <item name="popupShadeSecond">@color/popup_shade_second_light</item>
         <item name="popupShadeThird">@color/popup_shade_third_light</item>
         <item name="popupNotificationDotColor">@color/popup_notification_dot_light</item>
+        <item name="notificationDotColor">@color/notification_dot_color_light</item>
         <item name="isMainColorDark">false</item>
         <item name="isWorkspaceDarkText">false</item>
         <item name="workspaceTextColor">@color/workspace_text_color_light</item>
@@ -49,37 +52,40 @@
         <item name="workspaceKeyShadowColor">#89000000</item>
         <item name="workspaceStatusBarScrim">@drawable/workspace_bg</item>
         <item name="widgetsTheme">@style/WidgetContainerTheme</item>
-        <item name="folderDotColor">@color/folder_dot_color</item>
         <item name="folderPaginationColor">@color/folder_pagination_color_light</item>
         <item name="folderPreviewColor">@color/folder_preview_light</item>
         <item name="folderBackgroundColor">@color/folder_background_light</item>
         <item name="folderIconBorderColor">?android:attr/colorPrimary</item>
-        <item name="folderTextColor">@color/workspace_text_color_dark</item>
         <item name="isFolderDarkText">true</item>
-        <item name="folderHintColor">@color/folder_hint_text_color_dark</item>
+        <item name="folderTextColor">@color/folder_text_color_light</item>
+        <item name="folderHintTextColor">@color/folder_hint_text_color_light</item>
         <item name="loadingIconColor">#CCFFFFFF</item>
         <item name="iconOnlyShortcutColor">?android:attr/textColorSecondary</item>
-        <item name="workProfileOverlayTextColor">#FF212121</item>
         <item name="eduHalfSheetBGColor">?android:attr/colorAccent</item>
-        <item name="disabledIconAlpha">.54</item>
         <item name="workspaceAccentColor">@color/workspace_accent_color_light</item>
-        <item name="dropTargetHoverTextColor">@color/workspace_text_color_dark</item>
+        <item name="workspaceSurfaceColor">@color/workspace_surface_color</item>
+        <item name="dropTargetHoverTextColor">@color/drop_target_hover_text_color_light</item>
+        <item name="dropTargetHoverButtonColor">@color/drop_target_hover_button_color_light</item>
         <item name="overviewScrimColor">@color/overview_scrim</item>
-
+        <item name="preloadIconAccentColor">@color/preload_icon_accent_color_light</item>
+        <item name="preloadIconBackgroundColor">@color/preload_icon_background_color_light</item>
         <item name="android:windowTranslucentStatus">false</item>
         <item name="android:windowTranslucentNavigation">false</item>
         <item name="android:windowDrawsSystemBarBackgrounds">true</item>
         <item name="android:statusBarColor">#00000000</item>
         <item name="android:navigationBarColor">#00000000</item>
-
-
+        <item name="android:switchStyle">@style/SwitchStyle</item>
     </style>
 
-    <style name="LauncherTheme.DarkMainColor" parent="@style/LauncherTheme">
-        <item name="disabledIconAlpha">.54</item>
-
+    <style name="SwitchStyle"
+        parent="@android:style/Widget.Material.CompoundButton.Switch">
+        <item name="android:switchMinWidth">52dp</item>
+        <item name="android:thumb">@drawable/home_settings_switch_thumb</item>
+        <item name="android:track">@drawable/home_settings_switch_track</item>
     </style>
 
+    <style name="LauncherTheme.DarkMainColor" parent="@style/LauncherTheme" />
+
     <style name="LauncherTheme.DarkText" parent="@style/LauncherTheme">
         <item name="workspaceTextColor">@color/workspace_text_color_dark</item>
         <item name="workspaceShadowColor">@android:color/transparent</item>
@@ -88,7 +94,8 @@
         <item name="isWorkspaceDarkText">true</item>
         <item name="workspaceStatusBarScrim">@null</item>
         <item name="workspaceAccentColor">@color/workspace_accent_color_dark</item>
-        <item name="dropTargetHoverTextColor">@color/workspace_text_color_light</item>
+        <item name="dropTargetHoverTextColor">@color/drop_target_hover_text_color_dark</item>
+        <item name="dropTargetHoverButtonColor">@color/drop_target_hover_button_color_dark</item>
     </style>
 
     <style name="LauncherTheme.Dark" parent="@style/LauncherTheme">
@@ -100,34 +107,34 @@
         <item name="android:colorPrimary">#FF212121</item>
         <item name="allAppsScrimColor">?android:attr/colorBackgroundFloating</item>
         <item name="allAppsNavBarScrimColor">#80000000</item>
-        <item name="allAppsTheme">@style/AllAppsTheme.Dark</item>
         <item name="popupColorPrimary">@color/popup_color_primary_dark</item>
         <item name="popupColorSecondary">@color/popup_color_secondary_dark</item>
         <item name="popupColorTertiary">@color/popup_color_tertiary_dark</item>
+        <item name="popupColorBackground">#1F2020</item>
+        <item name="popupTextColor">@color/popup_text_color_dark</item>
         <item name="popupNotificationDotColor">@color/popup_notification_dot_dark</item>
         <item name="popupShadeFirst">@color/popup_shade_first_dark</item>
         <item name="popupShadeSecond">@color/popup_shade_second_dark</item>
         <item name="popupShadeThird">@color/popup_shade_third_dark</item>
+        <item name="notificationDotColor">@color/notification_dot_color_dark</item>
         <item name="widgetsTheme">@style/WidgetContainerTheme.Dark</item>
-        <item name="folderDotColor">@color/folder_dot_color</item>
         <item name="folderPaginationColor">@color/folder_pagination_color_dark</item>
         <item name="folderPreviewColor">@color/folder_preview_dark</item>
         <item name="folderBackgroundColor">@color/folder_background_dark</item>
         <item name="folderIconBorderColor">?android:attr/colorPrimary</item>
-        <item name="folderTextColor">@color/workspace_text_color_light</item>
         <item name="isFolderDarkText">false</item>
-        <item name="folderHintColor">@color/folder_hint_text_color_light</item>
+        <item name="folderTextColor">@color/folder_text_color_dark</item>
+        <item name="folderHintTextColor">@color/folder_hint_text_color_dark</item>
         <item name="isMainColorDark">true</item>
         <item name="loadingIconColor">#99FFFFFF</item>
         <item name="iconOnlyShortcutColor">#B3FFFFFF</item>
-        <item name="workProfileOverlayTextColor">@android:color/white</item>
         <item name="eduHalfSheetBGColor">#DD000000</item>
         <item name="overviewScrimColor">@color/overview_scrim_dark</item>
+        <item name="preloadIconAccentColor">@color/preload_icon_accent_color_dark</item>
+        <item name="preloadIconBackgroundColor">@color/preload_icon_background_color_dark</item>
     </style>
 
-    <style name="LauncherTheme.Dark.DarkMainColor" parent="@style/LauncherTheme.Dark">
-        <item name="disabledIconAlpha">.54</item>
-    </style>
+    <style name="LauncherTheme.Dark.DarkMainColor" parent="@style/LauncherTheme.Dark"/>
 
     <style name="LauncherTheme.Dark.DarkText" parent="@style/LauncherTheme.Dark">
         <item name="android:colorControlHighlight">#19212121</item>
@@ -138,7 +145,8 @@
         <item name="isWorkspaceDarkText">true</item>
         <item name="workspaceStatusBarScrim">@null</item>
         <item name="workspaceAccentColor">@color/workspace_accent_color_dark</item>
-        <item name="dropTargetHoverTextColor">@color/workspace_text_color_light</item>
+        <item name="dropTargetHoverTextColor">@color/drop_target_hover_text_color_dark</item>
+        <item name="dropTargetHoverButtonColor">@color/drop_target_hover_button_color_dark</item>
     </style>
 
     <!-- A derivative project can extend these themes to customize the application theme without
@@ -182,10 +190,63 @@
         <item name="android:colorPrimaryDark">#E8EAED</item>
         <item name="android:textColorSecondary">?android:attr/textColorPrimary</item>
         <item name="android:colorEdgeEffect">?android:attr/textColorSecondary</item>
+        <item name="widgetPickerPrimarySurfaceColor">
+            @color/widget_picker_primary_surface_color_light</item>
+        <item name="widgetPickerSecondarySurfaceColor">
+            @color/widget_picker_secondary_surface_color_light</item>
+        <item name="widgetPickerTitleColor">@color/widget_picker_title_color_light</item>
+        <item name="widgetPickerHeaderAppTitleColor">
+            @color/widget_picker_header_app_title_color_light</item>
+        <item name="widgetPickerHeaderAppSubtitleColor">
+            @color/widget_picker_header_app_subtitle_color_light</item>
+        <item name="widgetPickerHeaderBackgroundColor">
+            @color/widget_picker_header_background_color_light</item>
+        <item name="widgetPickerSuggestionsIconBackgroundColor">
+            @color/widget_picker_suggestions_icon_background_color_light</item>
+        <item name="widgetPickerSuggestionsIconColor">
+            @color/widget_picker_suggestions_icon_color_light</item>
+        <item name="widgetPickerSearchTextColor">@color/widget_picker_search_text_color_light</item>
+        <item name="widgetPickerTabBackgroundSelected">
+            @color/widget_picker_tab_background_selected_light</item>
+        <item name="widgetPickerTabBackgroundUnselected">
+            @color/widget_picker_tab_background_unselected_light</item>
+        <item name="widgetPickerSelectedTabTextColor">
+            @color/widget_picker_selected_tab_text_color_light</item>
+        <item name="widgetPickerUnselectedTabTextColor">
+            @color/widget_picker_unselected_tab_text_color_light</item>
+        <item name="widgetPickerCollapseHandleColor">
+            @color/widget_picker_collapse_handle_color_light</item>
     </style>
     <style name="WidgetContainerTheme.Dark" parent="AppTheme.Dark">
         <item name="android:colorEdgeEffect">?android:attr/textColorSecondary</item>
         <item name="android:colorPrimaryDark">#616161</item> <!-- Gray 700 -->
+        <item name="widgetPickerPrimarySurfaceColor">
+            @color/widget_picker_primary_surface_color_dark</item>
+        <item name="widgetPickerSecondarySurfaceColor">
+            @color/widget_picker_secondary_surface_color_dark</item>
+        <item name="widgetPickerTitleColor">
+            @color/widget_picker_title_color_dark</item>
+        <item name="widgetPickerHeaderAppTitleColor">
+            @color/widget_picker_header_app_title_color_dark</item>
+        <item name="widgetPickerHeaderAppSubtitleColor">
+            @color/widget_picker_header_app_subtitle_color_dark</item>
+        <item name="widgetPickerHeaderBackgroundColor">
+            @color/widget_picker_header_background_color_dark</item>
+        <item name="widgetPickerSuggestionsIconBackgroundColor">
+            @color/widget_picker_suggestions_icon_background_color_dark</item>
+        <item name="widgetPickerSuggestionsIconColor">
+            @color/widget_picker_suggestions_icon_color_dark</item>
+        <item name="widgetPickerSearchTextColor">@color/widget_picker_search_text_color_dark</item>
+        <item name="widgetPickerTabBackgroundSelected">
+            @color/widget_picker_tab_background_selected_dark</item>
+        <item name="widgetPickerTabBackgroundUnselected">
+            @color/widget_picker_tab_background_unselected_dark</item>
+        <item name="widgetPickerSelectedTabTextColor">
+            @color/widget_picker_selected_tab_text_color_dark</item>
+        <item name="widgetPickerUnselectedTabTextColor">
+            @color/widget_picker_unselected_tab_text_color_dark</item>
+        <item name="widgetPickerCollapseHandleColor">
+            @color/widget_picker_collapse_handle_color_dark</item>
     </style>
 
     <style name="FastScrollerPopup" parent="@android:style/TextAppearance.DeviceDefault.DialogWindowTitle">
@@ -203,22 +264,6 @@
         <item name="android:importantForAccessibility">no</item>
     </style>
 
-    <style name="AllAppsButtonTheme">
-        <item name="allAppsButtonBgColor">@color/all_apps_button_bg_color</item>
-        <item name="allAppsButtonColor1">@color/all_apps_button_color_1</item>
-        <item name="allAppsButtonColor2">@color/all_apps_button_color_2</item>
-        <item name="allAppsButtonColor3">@color/all_apps_button_color_3</item>
-        <item name="allAppsButtonColor4">@color/all_apps_button_color_4</item>
-    </style>
-
-    <style name="AllAppsTheme">
-        <item name="disabledIconAlpha">.54</item>
-    </style>
-
-    <style name="AllAppsTheme.Dark">
-        <item name="disabledIconAlpha">.54</item>
-    </style>
-
     <style name="BaseIconRoot" parent="@android:style/TextAppearance.DeviceDefault.DialogWindowTitle"/>
 
     <style name="BaseIconUnBounded" parent="BaseIconRoot">
@@ -269,10 +314,16 @@
         <item name="android:colorControlHighlight">?attr/popupColorTertiary</item>
     </style>
 
+    <style name="PopupItemIconOnly">
+        <item name="android:colorControlHighlight">?attr/popupColorTertiary</item>
+        <item name="android:background">?android:attr/selectableItemBackgroundBorderless</item>
+    </style>
+
     <!-- Drop targets -->
-    <style name="DropTargetButtonBase" parent="@android:style/TextAppearance.DeviceDefault">
+    <style name="DropTargetButtonBase" parent="@android:style/TextAppearance.DeviceDefault.Medium">
         <item name="android:drawablePadding">@dimen/drop_target_button_drawable_padding</item>
         <item name="android:padding">14dp</item>
+        <item name="android:includeFontPadding">false</item>
         <item name="android:textColor">@color/drop_target_text</item>
         <item name="android:textSize">@dimen/drop_target_text_size</item>
         <item name="android:singleLine">true</item>
@@ -288,17 +339,6 @@
 
     <style name="TextTitle" parent="@android:style/TextAppearance.DeviceDefault" />
 
-    <style name="AllAppsEmptySearchBackground">
-        <item name="android:colorPrimary">#E0E0E0</item>
-        <item name="android:colorControlHighlight">#19BDBDBD</item>
-        <item name="android:colorForeground">@color/all_apps_bg_hand_fill</item>
-    </style>
-    <style name="AllAppsEmptySearchBackground.Dark">
-        <item name="android:colorPrimary">#9AA0A6</item>
-        <item name="android:colorControlHighlight">#19DFE1E5</item>
-        <item name="android:colorForeground">@color/all_apps_bg_hand_fill_dark</item>
-    </style>
-
     <style name="Button.TopRounded.Bordered" parent="@android:style/Widget.Material.Button">
         <item name="android:background">@drawable/button_top_rounded_bordered_ripple</item>
         <item name="android:stateListAnimator">@null</item>
@@ -324,4 +364,21 @@
         <item name="android:windowLightStatusBar">true</item>
         <item name="android:windowTranslucentStatus">true</item>
     </style>
+
+    <style name="FolderStyleDefault">
+        <item name="folderTopPadding">24dp</item>
+        <item name="folderCellHeight">94dp</item>
+        <item name="folderCellWidth">80dp</item>
+        <item name="folderBorderSpace">16dp</item>
+        <item name="folderFooterHeight">56dp</item>
+    </style>
+
+    <style name="CellStyleDefault">
+        <item name="iconDrawablePadding">7dp</item>
+    </style>
+
+    <style name="AllAppsStyleDefault">
+        <item name="horizontalPadding">16dp</item>
+    </style>
+
 </resources>
diff --git a/res/xml/default_test_workspace.xml b/res/xml/default_test_workspace.xml
deleted file mode 100644
index bd718b3..0000000
--- a/res/xml/default_test_workspace.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<!-- Split display specific version of Launcher3/res/xml/default_workspace_4x4.xml -->
-<favorites xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3" >
-
-    <!-- Launcher Test Activity -->
-    <resolve
-        launcher:container="-101"
-        launcher:screen="0"
-        launcher:x="0"
-        launcher:y="0" >
-        <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.CATEGORY_TEST;component=com.google.android.apps.nexuslauncher.tests/com.android.launcher3.testcomponent.BaseTestingActivity;end" />
-    </resolve>
-
-</favorites>
diff --git a/res/xml/device_profiles.xml b/res/xml/device_profiles.xml
index 0802552..c9a44a1 100644
--- a/res/xml/device_profiles.xml
+++ b/res/xml/device_profiles.xml
@@ -26,7 +26,7 @@
         launcher:numHotseatIcons="3"
         launcher:dbFile="launcher_3_by_3.db"
         launcher:defaultLayoutId="@xml/default_workspace_3x3"
-        launcher:deviceCategory="phone|multi_display" >
+        launcher:deviceCategory="phone" >
 
         <display-option
             launcher:name="Super Short Stubby"
@@ -57,7 +57,9 @@
         launcher:numFolderRows="3"
         launcher:numFolderColumns="4"
         launcher:numHotseatIcons="4"
+        launcher:numExtendedHotseatIcons="6"
         launcher:dbFile="launcher_4_by_4.db"
+        launcher:inlineNavButtonsEndSpacing="@dimen/taskbar_button_margin_split"
         launcher:defaultLayoutId="@xml/default_workspace_4x4"
         launcher:deviceCategory="phone|multi_display" >
 
@@ -120,7 +122,9 @@
         launcher:numFolderRows="4"
         launcher:numFolderColumns="4"
         launcher:numHotseatIcons="5"
+        launcher:numExtendedHotseatIcons="6"
         launcher:dbFile="launcher.db"
+        launcher:inlineNavButtonsEndSpacing="@dimen/taskbar_button_margin_split"
         launcher:defaultLayoutId="@xml/default_workspace_5x5"
         launcher:deviceCategory="phone|multi_display" >
 
@@ -167,6 +171,7 @@
         launcher:hotseatColumnSpanLandscape="4"
         launcher:numAllAppsColumns="6"
         launcher:isScalable="true"
+        launcher:inlineNavButtonsEndSpacing="@dimen/taskbar_button_margin_6_5"
         launcher:devicePaddingId="@xml/paddings_6x5"
         launcher:dbFile="launcher_6_by_5.db"
         launcher:defaultLayoutId="@xml/default_workspace_6x5"
@@ -197,8 +202,8 @@
             launcher:allAppsBorderSpaceHorizontal="8"
             launcher:allAppsBorderSpaceVertical="16"
             launcher:allAppsBorderSpaceLandscape="16"
-            launcher:hotseatBorderSpace="58"
-            launcher:hotseatBorderSpaceLandscape="50.4"
+            launcher:hotseatBarBottomSpace="76"
+            launcher:hotseatBarBottomSpaceLandscape="40"
             launcher:canBeDefault="true" />
 
     </grid-option>
diff --git a/res/xml/dynamic_resources.xml b/res/xml/dynamic_resources.xml
index 3a3e239..f7a631b 100644
--- a/res/xml/dynamic_resources.xml
+++ b/res/xml/dynamic_resources.xml
@@ -4,6 +4,5 @@
     <entry id="@color/delete_target_hover_tint" />
     <entry id="@color/delete_target_hover_tint" />
     <entry id="@color/delete_target_hover_tint" />
-    <entry id="@color/wallpaper_scrim_color" />
 
 </DynamicResources>
diff --git a/res/xml/launcher_preferences.xml b/res/xml/launcher_preferences.xml
index 8a0c909..284ab9e 100644
--- a/res/xml/launcher_preferences.xml
+++ b/res/xml/launcher_preferences.xml
@@ -50,10 +50,4 @@
         launcher:logIdOn="615"
         launcher:logIdOff="616" />
 
-    <androidx.preference.PreferenceScreen
-        android:key="pref_developer_options"
-        android:persistent="false"
-        android:title="@string/developer_options_title"
-        android:fragment="com.android.launcher3.settings.DeveloperOptionsFragment"/>
-
 </androidx.preference.PreferenceScreen>
diff --git a/res/xml/paddings_6x5.xml b/res/xml/paddings_6x5.xml
index a72f554..2f421b7 100644
--- a/res/xml/paddings_6x5.xml
+++ b/res/xml/paddings_6x5.xml
@@ -17,60 +17,29 @@
 
 <device-paddings xmlns:launcher="http://schemas.android.com/apk/res-auto" >
 
-    <!--  Some non default screen sizes  -->
     <device-padding
-        launcher:maxEmptySpace="30dp">
+        launcher:maxEmptySpace="100dp">
         <workspaceTopPadding
-            launcher:a="0.34"
+            launcher:a="0.31"
             launcher:b="0"/>
         <workspaceBottomPadding
-            launcher:a="0.26"
+            launcher:a="0.69"
             launcher:b="0"/>
         <hotseatBottomPadding
-            launcher:a="0.4"
-            launcher:b="0"/>
-    </device-padding>
-
-    <device-padding
-        launcher:maxEmptySpace="170dp">
-        <workspaceTopPadding
             launcher:a="0"
-            launcher:b="20dp"/>
-        <workspaceBottomPadding
-            launcher:a="0.4"
-            launcher:b="0"
-            launcher:c="20dp"/>
-        <hotseatBottomPadding
-            launcher:a="0.6"
-            launcher:b="0"
-            launcher:c="20dp"/>
-    </device-padding>
-
-    <device-padding
-        launcher:maxEmptySpace="410dp">
-        <workspaceTopPadding
-            launcher:a="0"
-            launcher:b="112dp"/>
-        <workspaceBottomPadding
-            launcher:a="0.4"
-            launcher:b="0"
-            launcher:c="112dp"/>
-        <hotseatBottomPadding
-            launcher:a="0.6"
-            launcher:b="0"
-            launcher:c="112dp"/>
+            launcher:b="0"/>
     </device-padding>
 
     <device-padding
         launcher:maxEmptySpace="9999dp">
         <workspaceTopPadding
-            launcher:a="0.40"
-            launcher:c="36dp"/>
+            launcher:a="0.48"
+            launcher:b="0"/>
         <workspaceBottomPadding
-            launcher:a="0.60"
-            launcher:c="36dp"/>
+            launcher:a="0.52"
+            launcher:b="0"/>
         <hotseatBottomPadding
             launcher:a="0"
-            launcher:b="36dp"/>
+            launcher:b="0"/>
     </device-padding>
 </device-paddings>
\ No newline at end of file
diff --git a/res/xml/paddings_handhelds.xml b/res/xml/paddings_handhelds.xml
new file mode 100644
index 0000000..b9549a6
--- /dev/null
+++ b/res/xml/paddings_handhelds.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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.
+  -->
+
+<!-- Putting in the test/xml folder gives an error that maxEmptySpace doesn't exist -->
+<device-paddings xmlns:launcher="http://schemas.android.com/apk/res-auto" >
+
+    <device-padding
+        launcher:maxEmptySpace="9999dp">
+        <workspaceTopPadding
+            launcher:a="0.48"
+            launcher:b="0"/>
+        <workspaceBottomPadding
+            launcher:a="0.52"
+            launcher:b="0"/>
+        <hotseatBottomPadding
+            launcher:a="0"
+            launcher:b="0"/>
+    </device-padding>
+</device-paddings>
\ No newline at end of file
diff --git a/res/xml/widget_sections.xml b/res/xml/widget_sections.xml
index d755de6..742991f 100644
--- a/res/xml/widget_sections.xml
+++ b/res/xml/widget_sections.xml
@@ -22,4 +22,10 @@
         launcher:sectionTitle="@string/widget_category_conversations">
         <widget launcher:provider="com.android.systemui/.people.widget.PeopleSpaceWidgetProvider" />
     </section>
+    <section
+        launcher:category="1"
+        launcher:sectionDrawable="@drawable/ic_note_taking_widget_category"
+        launcher:sectionTitle="@string/widget_category_note_taking">
+        <widget launcher:provider="com.android.systemui/.notetask.shortcut.CreateNoteTaskShortcutActivity" />
+    </section>
 </widget-sections>
\ No newline at end of file
diff --git a/src/com/android/launcher3/AbstractFloatingView.java b/src/com/android/launcher3/AbstractFloatingView.java
index 21dbc5f..31f9bfe 100644
--- a/src/com/android/launcher3/AbstractFloatingView.java
+++ b/src/com/android/launcher3/AbstractFloatingView.java
@@ -24,7 +24,9 @@
 import static com.android.launcher3.compat.AccessibilityManagerCompat.sendCustomAccessibilityEvent;
 
 import android.annotation.SuppressLint;
+import android.annotation.TargetApi;
 import android.content.Context;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.util.Pair;
 import android.view.MotionEvent;
@@ -32,6 +34,7 @@
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.view.animation.Interpolator;
 import android.widget.LinearLayout;
+import android.window.OnBackAnimationCallback;
 
 import androidx.annotation.IntDef;
 
@@ -46,7 +49,9 @@
 /**
  * Base class for a View which shows a floating UI on top of the launcher UI.
  */
-public abstract class AbstractFloatingView extends LinearLayout implements TouchController {
+@TargetApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
+public abstract class AbstractFloatingView extends LinearLayout implements TouchController,
+        OnBackAnimationCallback {
 
     @IntDef(flag = true, value = {
             TYPE_FOLDER,
@@ -63,11 +68,14 @@
             TYPE_TASK_MENU,
             TYPE_OPTIONS_POPUP,
             TYPE_ICON_SURFACE,
+            TYPE_OPTIONS_POPUP_DIALOG,
             TYPE_PIN_WIDGET_FROM_EXTERNAL_POPUP,
             TYPE_WIDGETS_EDUCATION_DIALOG,
             TYPE_TASKBAR_EDUCATION_DIALOG,
             TYPE_TASKBAR_ALL_APPS,
-            TYPE_OPTIONS_POPUP_DIALOG
+            TYPE_ADD_TO_HOME_CONFIRMATION,
+            TYPE_TASKBAR_OVERLAY_PROXY,
+            TYPE_TASKBAR_PINNING_POPUP
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface FloatingViewType {}
@@ -87,13 +95,15 @@
     public static final int TYPE_TASK_MENU = 1 << 11;
     public static final int TYPE_OPTIONS_POPUP = 1 << 12;
     public static final int TYPE_ICON_SURFACE = 1 << 13;
-    public static final int TYPE_OPTIONS_POPUP_DIALOG = 1 << 18;
+    public static final int TYPE_OPTIONS_POPUP_DIALOG = 1 << 14;
 
-    public static final int TYPE_PIN_WIDGET_FROM_EXTERNAL_POPUP = 1 << 14;
-    public static final int TYPE_WIDGETS_EDUCATION_DIALOG = 1 << 15;
-    public static final int TYPE_TASKBAR_EDUCATION_DIALOG = 1 << 16;
-    public static final int TYPE_TASKBAR_ALL_APPS = 1 << 17;
-    public static final int TYPE_ADD_TO_HOME_CONFIRMATION = 1 << 18;
+    public static final int TYPE_PIN_WIDGET_FROM_EXTERNAL_POPUP = 1 << 15;
+    public static final int TYPE_WIDGETS_EDUCATION_DIALOG = 1 << 16;
+    public static final int TYPE_TASKBAR_EDUCATION_DIALOG = 1 << 17;
+    public static final int TYPE_TASKBAR_ALL_APPS = 1 << 18;
+    public static final int TYPE_ADD_TO_HOME_CONFIRMATION = 1 << 19;
+    public static final int TYPE_TASKBAR_OVERLAY_PROXY = 1 << 20;
+    public static final int TYPE_TASKBAR_PINNING_POPUP = 1 << 21;
 
     public static final int TYPE_ALL = TYPE_FOLDER | TYPE_ACTION_POPUP
             | TYPE_WIDGETS_BOTTOM_SHEET | TYPE_WIDGET_RESIZE_FRAME | TYPE_WIDGETS_FULL_SHEET
@@ -101,17 +111,15 @@
             | TYPE_OPTIONS_POPUP | TYPE_SNACKBAR | TYPE_LISTENER | TYPE_ALL_APPS_EDU
             | TYPE_ICON_SURFACE | TYPE_DRAG_DROP_POPUP | TYPE_PIN_WIDGET_FROM_EXTERNAL_POPUP
             | TYPE_WIDGETS_EDUCATION_DIALOG | TYPE_TASKBAR_EDUCATION_DIALOG | TYPE_TASKBAR_ALL_APPS
-            | TYPE_OPTIONS_POPUP_DIALOG | TYPE_ADD_TO_HOME_CONFIRMATION;
+            | TYPE_OPTIONS_POPUP_DIALOG | TYPE_ADD_TO_HOME_CONFIRMATION
+            | TYPE_TASKBAR_OVERLAY_PROXY | TYPE_TASKBAR_PINNING_POPUP;
 
     // Type of popups which should be kept open during launcher rebind
     public static final int TYPE_REBIND_SAFE = TYPE_WIDGETS_FULL_SHEET
             | TYPE_WIDGETS_BOTTOM_SHEET | TYPE_ON_BOARD_POPUP | TYPE_DISCOVERY_BOUNCE
             | TYPE_ALL_APPS_EDU | TYPE_ICON_SURFACE | TYPE_WIDGETS_EDUCATION_DIALOG
-            | TYPE_TASKBAR_EDUCATION_DIALOG | TYPE_TASKBAR_ALL_APPS | TYPE_OPTIONS_POPUP_DIALOG;
-
-    // Usually we show the back button when a floating view is open. Instead, hide for these types.
-    public static final int TYPE_HIDE_BACK_BUTTON = TYPE_ON_BOARD_POPUP | TYPE_DISCOVERY_BOUNCE
-            | TYPE_SNACKBAR | TYPE_WIDGET_RESIZE_FRAME | TYPE_LISTENER;
+            | TYPE_TASKBAR_EDUCATION_DIALOG | TYPE_TASKBAR_ALL_APPS | TYPE_OPTIONS_POPUP_DIALOG
+            | TYPE_TASKBAR_OVERLAY_PROXY;
 
     public static final int TYPE_ACCESSIBLE = TYPE_ALL & ~TYPE_DISCOVERY_BOUNCE & ~TYPE_LISTENER
             & ~TYPE_ALL_APPS_EDU;
@@ -121,6 +129,10 @@
             TYPE_WIDGETS_FULL_SHEET | TYPE_WIDGET_RESIZE_FRAME | TYPE_ON_BOARD_POPUP |
             TYPE_DISCOVERY_BOUNCE | TYPE_TASK_MENU | TYPE_DRAG_DROP_POPUP;
 
+    // Floating views that are exclusive to the taskbar overlay window.
+    public static final int TYPE_TASKBAR_OVERLAYS =
+            TYPE_TASKBAR_ALL_APPS | TYPE_TASKBAR_EDUCATION_DIALOG;
+
     protected boolean mIsOpen;
 
     public AbstractFloatingView(Context context, AttributeSet attrs) {
@@ -164,13 +176,17 @@
 
     protected abstract boolean isOfType(@FloatingViewType int type);
 
-    /** @return Whether the back is consumed. If false, Launcher will handle the back as well. */
-    public boolean onBackPressed() {
-        close(true);
+    /** Return true if this view can consume back press. */
+    public boolean canHandleBack() {
         return true;
     }
 
     @Override
+    public void onBackInvoked() {
+        close(true);
+    }
+
+    @Override
     public boolean onControllerTouchEvent(MotionEvent ev) {
         return false;
     }
diff --git a/src/com/android/launcher3/Alarm.java b/src/com/android/launcher3/Alarm.java
index d5b434c..e4aebf6 100644
--- a/src/com/android/launcher3/Alarm.java
+++ b/src/com/android/launcher3/Alarm.java
@@ -30,6 +30,7 @@
     private Handler mHandler;
     private OnAlarmListener mAlarmListener;
     private boolean mAlarmPending = false;
+    private long mLastSetTimeout;
 
     public Alarm() {
         mHandler = new Handler();
@@ -46,6 +47,7 @@
         mAlarmPending = true;
         long oldTriggerTime = mAlarmTriggerTime;
         mAlarmTriggerTime = currentTime + millisecondsInFuture;
+        mLastSetTimeout = millisecondsInFuture;
 
         // If the previous alarm was set for a longer duration, cancel it.
         if (mWaitingForCallback && oldTriggerTime > mAlarmTriggerTime) {
@@ -84,4 +86,9 @@
     public boolean alarmPending() {
         return mAlarmPending;
     }
+
+    /** Returns the last value passed to {@link #setAlarm(long)} */
+    public long getLastSetTimeout() {
+        return mLastSetTimeout;
+    }
 }
diff --git a/src/com/android/launcher3/AppWidgetResizeFrame.java b/src/com/android/launcher3/AppWidgetResizeFrame.java
index 4b4a017..7131452 100644
--- a/src/com/android/launcher3/AppWidgetResizeFrame.java
+++ b/src/com/android/launcher3/AppWidgetResizeFrame.java
@@ -1,7 +1,5 @@
 package com.android.launcher3;
 
-import static android.appwidget.AppWidgetHostView.getDefaultPaddingForWidget;
-
 import static com.android.launcher3.CellLayout.SPRING_LOADED_PROGRESS;
 import static com.android.launcher3.LauncherAnimUtils.LAYOUT_HEIGHT;
 import static com.android.launcher3.LauncherAnimUtils.LAYOUT_WIDTH;
@@ -24,6 +22,7 @@
 import android.view.KeyEvent;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.ViewGroup;
 import android.widget.ImageButton;
 import android.widget.ImageView;
 
@@ -31,6 +30,8 @@
 import androidx.annotation.Px;
 
 import com.android.launcher3.accessibility.DragViewStateAnnouncer;
+import com.android.launcher3.celllayout.CellLayoutLayoutParams;
+import com.android.launcher3.celllayout.CellPosMapper.CellPos;
 import com.android.launcher3.dragndrop.DragLayer;
 import com.android.launcher3.keyboard.ViewGroupFocusHelper;
 import com.android.launcher3.logging.InstanceId;
@@ -68,30 +69,12 @@
 
     private final View[] mDragHandles = new View[HANDLE_COUNT];
     private final List<Rect> mSystemGestureExclusionRects = new ArrayList<>(HANDLE_COUNT);
-    private final OnAttachStateChangeListener mWidgetViewAttachStateChangeListener =
-            new OnAttachStateChangeListener() {
-                @Override
-                public void onViewAttachedToWindow(View view) {
-                    // Do nothing
-                }
-
-                @Override
-                public void onViewDetachedFromWindow(View view) {
-                    // When the app widget view is detached, we should close the resize frame.
-                    // An example is when the dragging starts, the widget view is detached from
-                    // CellLayout and then reattached to DragLayout.
-                    close(false);
-                }
-            };
-
 
     private LauncherAppWidgetHostView mWidgetView;
     private CellLayout mCellLayout;
     private DragLayer mDragLayer;
     private ImageButton mReconfigureButton;
 
-    private Rect mWidgetPadding;
-
     private final int mBackgroundPadding;
     private final int mTouchTargetWidth;
 
@@ -221,11 +204,7 @@
     private void setupForWidget(LauncherAppWidgetHostView widgetView, CellLayout cellLayout,
             DragLayer dragLayer) {
         mCellLayout = cellLayout;
-        if (mWidgetView != null) {
-            mWidgetView.removeOnAttachStateChangeListener(mWidgetViewAttachStateChangeListener);
-        }
         mWidgetView = widgetView;
-        mWidgetView.addOnAttachStateChangeListener(mWidgetViewAttachStateChangeListener);
         LauncherAppWidgetProviderInfo info = (LauncherAppWidgetProviderInfo)
                 widgetView.getAppWidgetInfo();
         mDragLayer = dragLayer;
@@ -235,9 +214,6 @@
         mMaxHSpan = info.maxSpanX;
         mMaxVSpan = info.maxSpanY;
 
-        mWidgetPadding = getDefaultPaddingForWidget(getContext(),
-                widgetView.getAppWidgetInfo().provider, null);
-
         // Only show resize handles for the directions in which resizing is possible.
         InvariantDeviceProfile idp = LauncherAppState.getIDP(cellLayout.getContext());
         mVerticalResizeActive = (info.resizeMode & AppWidgetProviderInfo.RESIZE_VERTICAL) != 0
@@ -267,11 +243,11 @@
                                 /* widgetHandler= */ null,
                                 (ItemInfo) mWidgetView.getTag()));
                 mLauncher
-                    .getAppWidgetHost()
-                    .startConfigActivity(
-                            mLauncher,
-                            mWidgetView.getAppWidgetId(),
-                            Launcher.REQUEST_RECONFIGURE_APPWIDGET);
+                        .getAppWidgetHolder()
+                        .startConfigActivity(
+                                mLauncher,
+                                mWidgetView.getAppWidgetId(),
+                                Launcher.REQUEST_RECONFIGURE_APPWIDGET);
             });
             if (!hasSeenReconfigurableWidgetEducationTip()) {
                 post(() -> {
@@ -284,10 +260,13 @@
             }
         }
 
-        CellLayout.LayoutParams lp = (CellLayout.LayoutParams) mWidgetView.getLayoutParams();
+        CellLayoutLayoutParams lp = (CellLayoutLayoutParams) mWidgetView.getLayoutParams();
         ItemInfo widgetInfo = (ItemInfo) mWidgetView.getTag();
-        lp.cellX = lp.tmpCellX = widgetInfo.cellX;
-        lp.cellY = lp.tmpCellY = widgetInfo.cellY;
+        CellPos presenterPos = mLauncher.getCellPosMapper().mapModelToPresenter(widgetInfo);
+        lp.setCellX(presenterPos.cellX);
+        lp.setTmpCellX(presenterPos.cellX);
+        lp.setCellY(presenterPos.cellY);
+        lp.setTmpCellY(presenterPos.cellY);
         lp.cellHSpan = widgetInfo.spanX;
         lp.cellVSpan = widgetInfo.spanY;
         lp.isLockedToGrid = true;
@@ -423,6 +402,10 @@
      *  Based on the current deltas, we determine if and how to resize the widget.
      */
     private void resizeWidgetIfNeeded(boolean onDismiss) {
+        ViewGroup.LayoutParams wlp = mWidgetView.getLayoutParams();
+        if (!(wlp instanceof CellLayoutLayoutParams)) {
+            return;
+        }
         DeviceProfile dp = mLauncher.getDeviceProfile();
         float xThreshold = mCellLayout.getCellWidth() + dp.cellLayoutBorderSpacePx.x;
         float yThreshold = mCellLayout.getCellHeight() + dp.cellLayoutBorderSpacePx.y;
@@ -435,12 +418,12 @@
         mDirectionVector[0] = 0;
         mDirectionVector[1] = 0;
 
-        CellLayout.LayoutParams lp = (CellLayout.LayoutParams) mWidgetView.getLayoutParams();
+        CellLayoutLayoutParams lp = (CellLayoutLayoutParams) wlp;
 
         int spanX = lp.cellHSpan;
         int spanY = lp.cellVSpan;
-        int cellX = lp.useTmpCoords ? lp.tmpCellX : lp.cellX;
-        int cellY = lp.useTmpCoords ? lp.tmpCellY : lp.cellY;
+        int cellX = lp.useTmpCoords ? lp.getTmpCellX() : lp.getCellX();
+        int cellY = lp.useTmpCoords ? lp.getTmpCellY() : lp.getCellY();
 
         // For each border, we bound the resizing based on the minimum width, and the maximum
         // expandability.
@@ -481,8 +464,8 @@
                         mLauncher.getString(R.string.widget_resized, spanX, spanY));
             }
 
-            lp.tmpCellX = cellX;
-            lp.tmpCellY = cellY;
+            lp.setTmpCellX(cellX);
+            lp.setTmpCellY(cellY);
             lp.cellHSpan = spanX;
             lp.cellVSpan = spanY;
             mRunningVInc += vSpanDelta;
@@ -527,16 +510,12 @@
      */
     private void getSnappedRectRelativeToDragLayer(Rect out) {
         float scale = mWidgetView.getScaleToFit();
-
         mDragLayer.getViewRectRelativeToSelf(mWidgetView, out);
 
-        int width = 2 * mBackgroundPadding
-                + (int) (scale * (out.width() - mWidgetPadding.left - mWidgetPadding.right));
-        int height = 2 * mBackgroundPadding
-                + (int) (scale * (out.height() - mWidgetPadding.top - mWidgetPadding.bottom));
-
-        int x = (int) (out.left - mBackgroundPadding + scale * mWidgetPadding.left);
-        int y = (int) (out.top - mBackgroundPadding + scale * mWidgetPadding.top);
+        int width = 2 * mBackgroundPadding + Math.round(scale * out.width());
+        int height = 2 * mBackgroundPadding + Math.round(scale * out.height());
+        int x = out.left - mBackgroundPadding;
+        int y = out.top - mBackgroundPadding;
 
         out.left = x;
         out.top = y;
@@ -687,9 +666,6 @@
     @Override
     protected void handleClose(boolean animate) {
         mDragLayer.removeView(this);
-        if (mWidgetView != null) {
-            mWidgetView.removeOnAttachStateChangeListener(mWidgetViewAttachStateChangeListener);
-        }
     }
 
     private void updateInvalidResizeEffect(CellLayout cellLayout, CellLayout pairedCellLayout,
@@ -840,6 +816,6 @@
     private boolean hasSeenReconfigurableWidgetEducationTip() {
         return mLauncher.getSharedPrefs()
                 .getBoolean(KEY_RECONFIGURABLE_WIDGET_EDUCATION_TIP_SEEN, false)
-                || Utilities.IS_RUNNING_IN_TEST_HARNESS;
+                || Utilities.isRunningInTestHarness();
     }
 }
diff --git a/src/com/android/launcher3/AppWidgetsRestoredReceiver.java b/src/com/android/launcher3/AppWidgetsRestoredReceiver.java
index 75e89b2..ec874b9 100644
--- a/src/com/android/launcher3/AppWidgetsRestoredReceiver.java
+++ b/src/com/android/launcher3/AppWidgetsRestoredReceiver.java
@@ -6,22 +6,24 @@
 import android.appwidget.AppWidgetManager;
 import android.appwidget.AppWidgetProviderInfo;
 import android.content.BroadcastReceiver;
-import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
 import android.database.Cursor;
 import android.util.Log;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.WorkerThread;
 
 import com.android.launcher3.LauncherSettings.Favorites;
 import com.android.launcher3.model.LoaderTask;
+import com.android.launcher3.model.ModelDbController;
 import com.android.launcher3.model.WidgetsModel;
 import com.android.launcher3.model.data.LauncherAppWidgetInfo;
 import com.android.launcher3.pm.UserCache;
 import com.android.launcher3.provider.RestoreDbTask;
 import com.android.launcher3.util.ContentWriter;
-import com.android.launcher3.widget.LauncherAppWidgetHost;
+import com.android.launcher3.util.IntArray;
+import com.android.launcher3.widget.LauncherWidgetHolder;
 
 public class AppWidgetsRestoredReceiver extends BroadcastReceiver {
 
@@ -32,7 +34,7 @@
         if (AppWidgetManager.ACTION_APPWIDGET_HOST_RESTORED.equals(intent.getAction())) {
             int hostId = intent.getIntExtra(AppWidgetManager.EXTRA_HOST_ID, 0);
             Log.d(TAG, "Widget ID map received for host:" + hostId);
-            if (hostId != LauncherAppWidgetHost.APPWIDGET_HOST_ID) {
+            if (hostId != LauncherWidgetHolder.APPWIDGET_HOST_ID) {
                 return;
             }
 
@@ -50,11 +52,11 @@
      * Updates the app widgets whose id has changed during the restore process.
      */
     @WorkerThread
-    public static void restoreAppWidgetIds(Context context, int[] oldWidgetIds, int[] newWidgetIds) {
-        AppWidgetHost appWidgetHost = new LauncherAppWidgetHost(context);
+    public static void restoreAppWidgetIds(Context context, ModelDbController controller,
+            int[] oldWidgetIds, int[] newWidgetIds, @NonNull AppWidgetHost host) {
         if (WidgetsModel.GO_DISABLE_WIDGETS) {
             Log.e(TAG, "Skipping widget ID remap as widgets not supported");
-            appWidgetHost.deleteHost();
+            host.deleteHost();
             return;
         }
         if (!RestoreDbTask.isPending(context)) {
@@ -63,13 +65,20 @@
             Log.e(TAG, "Skipping widget ID remap as DB already in use");
             for (int widgetId : newWidgetIds) {
                 Log.d(TAG, "Deleting widgetId: " + widgetId);
-                appWidgetHost.deleteAppWidgetId(widgetId);
+                host.deleteAppWidgetId(widgetId);
             }
             return;
         }
-        final ContentResolver cr = context.getContentResolver();
+
         final AppWidgetManager widgets = AppWidgetManager.getInstance(context);
 
+        Log.d(TAG, "restoreAppWidgetIds: "
+                + "oldWidgetIds=" + IntArray.wrap(oldWidgetIds).toConcatString()
+                + ", newWidgetIds=" + IntArray.wrap(newWidgetIds).toConcatString());
+
+        // TODO(b/234700507): Remove the logs after the bug is fixed
+        logDatabaseWidgetInfo(controller);
+
         for (int i = 0; i < oldWidgetIds.length; i++) {
             Log.i(TAG, "Widget state restore id " + oldWidgetIds[i] + " => " + newWidgetIds[i]);
 
@@ -86,32 +95,34 @@
             // recreate the widget during loading with the correct host provider.
             long mainProfileId = UserCache.INSTANCE.get(context)
                     .getSerialNumberForUser(myUserHandle());
+            long controllerProfileId = controller.getSerialNumberForUser(myUserHandle());
             String oldWidgetId = Integer.toString(oldWidgetIds[i]);
             final String where = "appWidgetId=? and (restored & 1) = 1 and profileId=?";
-            final String[] args = new String[] { oldWidgetId, Long.toString(mainProfileId) };
-            int result = new ContentWriter(context, new ContentWriter.CommitParams(where, args))
+            String profileId = Long.toString(mainProfileId);
+            final String[] args = new String[] { oldWidgetId, profileId };
+            Log.d(TAG, "restoreAppWidgetIds: querying profile id=" + profileId
+                    + " with controller profile ID=" + controllerProfileId);
+            int result = new ContentWriter(context,
+                            new ContentWriter.CommitParams(controller, where, args))
                     .put(LauncherSettings.Favorites.APPWIDGET_ID, newWidgetIds[i])
                     .put(LauncherSettings.Favorites.RESTORED, state)
                     .commit();
             if (result == 0) {
-                Cursor cursor = cr.query(Favorites.CONTENT_URI,
-                        new String[] {Favorites.APPWIDGET_ID},
-                        "appWidgetId=?", new String[] { oldWidgetId }, null);
-                try {
+                // TODO(b/234700507): Remove the logs after the bug is fixed
+                Log.e(TAG, "restoreAppWidgetIds: remapping failed since the widget is not in"
+                        + " the database anymore");
+                try (Cursor cursor = controller.getDb().query(
+                        Favorites.TABLE_NAME,
+                        new String[]{Favorites.APPWIDGET_ID},
+                        "appWidgetId=?", new String[]{oldWidgetId}, null, null, null)) {
                     if (!cursor.moveToFirst()) {
                         // The widget no long exists.
-                        appWidgetHost.deleteAppWidgetId(newWidgetIds[i]);
+                        Log.d(TAG, "Deleting widgetId: " + newWidgetIds[i] + " with old id: "
+                                + oldWidgetId);
+                        host.deleteAppWidgetId(newWidgetIds[i]);
                     }
-                } finally {
-                    cursor.close();
                 }
             }
-            // attempt to update widget id in backup table as well
-            new ContentWriter(context, ContentWriter.CommitParams.backupCommitParams(
-                    "appWidgetId=? and profileId=?", args))
-                    .put(LauncherSettings.Favorites.APPWIDGET_ID, newWidgetIds[i])
-                    .put(LauncherSettings.Favorites.RESTORED, state)
-                    .commit();
         }
 
         LauncherAppState app = LauncherAppState.getInstanceNoCreate();
@@ -119,4 +130,48 @@
             app.getModel().forceReload();
         }
     }
+
+    private static void logDatabaseWidgetInfo(ModelDbController controller) {
+        try (Cursor cursor = controller.getDb().query(Favorites.TABLE_NAME,
+                new String[]{Favorites.APPWIDGET_ID, Favorites.RESTORED, Favorites.PROFILE_ID},
+                Favorites.APPWIDGET_ID + "!=" + LauncherAppWidgetInfo.NO_ID, null,
+                null, null, null)) {
+            IntArray widgetIdList = new IntArray();
+            IntArray widgetRestoreList = new IntArray();
+            IntArray widgetProfileIdList = new IntArray();
+
+            if (cursor.moveToFirst()) {
+                final int widgetIdColumnIndex = cursor.getColumnIndex(Favorites.APPWIDGET_ID);
+                final int widgetRestoredColumnIndex = cursor.getColumnIndex(Favorites.RESTORED);
+                final int widgetProfileIdIndex = cursor.getColumnIndex(Favorites.PROFILE_ID);
+                while (!cursor.isAfterLast()) {
+                    int widgetId = cursor.getInt(widgetIdColumnIndex);
+                    int widgetRestoredFlag = cursor.getInt(widgetRestoredColumnIndex);
+                    int widgetProfileId = cursor.getInt(widgetProfileIdIndex);
+
+                    widgetIdList.add(widgetId);
+                    widgetRestoreList.add(widgetRestoredFlag);
+                    widgetProfileIdList.add(widgetProfileId);
+                    cursor.moveToNext();
+                }
+            }
+
+            StringBuilder builder = new StringBuilder();
+            builder.append("[");
+            for (int i = 0; i < widgetIdList.size(); i++) {
+                builder.append("[")
+                        .append(widgetIdList.get(i))
+                        .append(", ")
+                        .append(widgetRestoreList.get(i))
+                        .append(", ")
+                        .append(widgetProfileIdList.get(i))
+                        .append("]");
+            }
+            builder.append("]");
+            Log.d(TAG, "restoreAppWidgetIds: all widget ids in database: "
+                    + builder.toString());
+        } catch (Exception ex) {
+            Log.e(TAG, "Getting widget ids from the database failed", ex);
+        }
+    }
 }
diff --git a/src/com/android/launcher3/AutoInstallsLayout.java b/src/com/android/launcher3/AutoInstallsLayout.java
index 64666b0..ede7e2f 100644
--- a/src/com/android/launcher3/AutoInstallsLayout.java
+++ b/src/com/android/launcher3/AutoInstallsLayout.java
@@ -16,44 +16,55 @@
 
 package com.android.launcher3;
 
-import android.appwidget.AppWidgetHost;
+import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION;
+
 import android.content.ComponentName;
 import android.content.ContentValues;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
+import android.content.pm.LauncherActivityInfo;
+import android.content.pm.LauncherApps;
 import android.content.pm.PackageManager;
 import android.content.res.Resources;
+import android.content.res.Resources.NotFoundException;
+import android.content.res.XmlResourceParser;
 import android.database.sqlite.SQLiteDatabase;
-import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Bundle;
+import android.os.Process;
 import android.text.TextUtils;
 import android.util.ArrayMap;
 import android.util.AttributeSet;
 import android.util.Log;
-import android.util.Pair;
-import android.util.Patterns;
 import android.util.Xml;
 
 import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.annotation.WorkerThread;
+import androidx.annotation.XmlRes;
 
 import com.android.launcher3.LauncherProvider.SqlArguments;
 import com.android.launcher3.LauncherSettings.Favorites;
-import com.android.launcher3.icons.GraphicsUtils;
-import com.android.launcher3.icons.LauncherIcons;
+import com.android.launcher3.model.data.AppInfo;
 import com.android.launcher3.model.data.LauncherAppWidgetInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
+import com.android.launcher3.pm.UserCache;
 import com.android.launcher3.qsb.QsbContainerView;
+import com.android.launcher3.shortcuts.ShortcutKey;
+import com.android.launcher3.uioverrides.ApiWrapper;
 import com.android.launcher3.util.IntArray;
-import com.android.launcher3.util.PackageManagerHelper;
+import com.android.launcher3.util.Partner;
 import com.android.launcher3.util.Thunk;
+import com.android.launcher3.widget.LauncherWidgetHolder;
 
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
 import java.io.IOException;
+import java.util.Collections;
 import java.util.Locale;
+import java.util.Map;
 import java.util.function.Supplier;
 
 /**
@@ -74,21 +85,18 @@
     private static final String FORMATTED_LAYOUT_RES = "default_layout_%dx%d";
     private static final String LAYOUT_RES = "default_layout";
 
-    static AutoInstallsLayout get(Context context, AppWidgetHost appWidgetHost,
+    public static AutoInstallsLayout get(Context context, LauncherWidgetHolder appWidgetHolder,
             LayoutParserCallback callback) {
-        Pair<String, Resources> customizationApkInfo = PackageManagerHelper.findSystemApk(
-                ACTION_LAUNCHER_CUSTOMIZATION, context.getPackageManager());
-        if (customizationApkInfo == null) {
+        Partner partner = Partner.get(context.getPackageManager(), ACTION_LAUNCHER_CUSTOMIZATION);
+        if (partner == null) {
             return null;
         }
-        String pkg = customizationApkInfo.first;
-        Resources targetRes = customizationApkInfo.second;
         InvariantDeviceProfile grid = LauncherAppState.getIDP(context);
 
         // Try with grid size and hotseat count
         String layoutName = String.format(Locale.ENGLISH, FORMATTED_LAYOUT_RES_WITH_HOSTEAT,
                 grid.numColumns, grid.numRows, grid.numDatabaseHotseatIcons);
-        int layoutId = targetRes.getIdentifier(layoutName, "xml", pkg);
+        int layoutId = partner.getXmlResId(layoutName);
 
         // Try with only grid size
         if (layoutId == 0) {
@@ -96,21 +104,21 @@
                     + " not found. Trying layout without hosteat");
             layoutName = String.format(Locale.ENGLISH, FORMATTED_LAYOUT_RES,
                     grid.numColumns, grid.numRows);
-            layoutId = targetRes.getIdentifier(layoutName, "xml", pkg);
+            layoutId = partner.getXmlResId(layoutName);
         }
 
         // Try the default layout
         if (layoutId == 0) {
             Log.d(TAG, "Formatted layout: " + layoutName + " not found. Trying the default layout");
-            layoutId = targetRes.getIdentifier(LAYOUT_RES, "xml", pkg);
+            layoutId = partner.getXmlResId(LAYOUT_RES);
         }
 
         if (layoutId == 0) {
-            Log.e(TAG, "Layout definition not found in package: " + pkg);
+            Log.e(TAG, "Layout definition not found in package: " + partner.getPackageName());
             return null;
         }
-        return new AutoInstallsLayout(context, appWidgetHost, callback, targetRes, layoutId,
-                TAG_WORKSPACE);
+        return new AutoInstallsLayout(context, appWidgetHolder, callback, partner.getResources(),
+                layoutId, TAG_WORKSPACE);
     }
 
     // Object Tags
@@ -132,6 +140,7 @@
     private static final String ATTR_TITLE = "title";
     private static final String ATTR_TITLE_TEXT = "titleText";
     private static final String ATTR_SCREEN = "screen";
+    private static final String ATTR_SHORTCUT_ID = "shortcutId";
 
     // x and y can be specified as negative integers, in which case -1 represents the
     // last row / column, -2 represents the second last, and so on.
@@ -140,8 +149,6 @@
 
     private static final String ATTR_SPAN_X = "spanX";
     private static final String ATTR_SPAN_Y = "spanY";
-    private static final String ATTR_ICON = "icon";
-    private static final String ATTR_URL = "url";
 
     // Attrs for "Include"
     private static final String ATTR_WORKSPACE = "workspace";
@@ -153,20 +160,18 @@
     private static final String HOTSEAT_CONTAINER_NAME =
             Favorites.containerToString(Favorites.CONTAINER_HOTSEAT);
 
-    @Thunk
-    final Context mContext;
-    @Thunk
-    final AppWidgetHost mAppWidgetHost;
+    protected final Context mContext;
+    protected final LauncherWidgetHolder mAppWidgetHolder;
     protected final LayoutParserCallback mCallback;
 
     protected final PackageManager mPackageManager;
-    protected final Resources mSourceRes;
+    protected final SourceResources mSourceRes;
     protected final Supplier<XmlPullParser> mInitialLayoutSupplier;
 
     private final InvariantDeviceProfile mIdp;
     private final int mRowCount;
     private final int mColumnCount;
-
+    private final Map<String, LauncherActivityInfo> mActivityOverride;
     private final int[] mTemp = new int[2];
     @Thunk
     final ContentValues mValues;
@@ -174,17 +179,18 @@
 
     protected SQLiteDatabase mDb;
 
-    public AutoInstallsLayout(Context context, AppWidgetHost appWidgetHost,
+    public AutoInstallsLayout(Context context, LauncherWidgetHolder appWidgetHolder,
             LayoutParserCallback callback, Resources res,
             int layoutId, String rootTag) {
-        this(context, appWidgetHost, callback, res, () -> res.getXml(layoutId), rootTag);
+        this(context, appWidgetHolder, callback, SourceResources.wrap(res),
+                () -> res.getXml(layoutId), rootTag);
     }
 
-    public AutoInstallsLayout(Context context, AppWidgetHost appWidgetHost,
-            LayoutParserCallback callback, Resources res,
+    public AutoInstallsLayout(Context context, LauncherWidgetHolder appWidgetHolder,
+            LayoutParserCallback callback, SourceResources res,
             Supplier<XmlPullParser> initialLayoutSupplier, String rootTag) {
         mContext = context;
-        mAppWidgetHost = appWidgetHost;
+        mAppWidgetHolder = appWidgetHolder;
         mCallback = callback;
 
         mPackageManager = context.getPackageManager();
@@ -197,6 +203,7 @@
         mIdp = LauncherAppState.getIDP(context);
         mRowCount = mIdp.numRows;
         mColumnCount = mIdp.numColumns;
+        mActivityOverride = ApiWrapper.getActivityOverrides(context);
     }
 
     /**
@@ -303,6 +310,17 @@
         mValues.put(Favorites.SPANX, 1);
         mValues.put(Favorites.SPANY, 1);
         mValues.put(Favorites._ID, id);
+
+        if (type == ITEM_TYPE_APPLICATION) {
+            ComponentName cn = intent.getComponent();
+            if (cn != null && mActivityOverride.containsKey(cn.getPackageName())) {
+                LauncherActivityInfo replacementInfo = mActivityOverride.get(cn.getPackageName());
+                mValues.put(Favorites.PROFILE_ID, UserCache.INSTANCE.get(mContext)
+                        .getSerialNumberForUser(replacementInfo.getUser()));
+                mValues.put(Favorites.INTENT, AppInfo.makeLaunchIntent(replacementInfo).toUri(0));
+            }
+        }
+
         if (mCallback.insertAndCheck(mDb, mValues) < 0) {
             return -1;
         } else {
@@ -314,7 +332,7 @@
         ArrayMap<String, TagParser> parsers = new ArrayMap<>();
         parsers.put(TAG_APP_ICON, new AppShortcutParser());
         parsers.put(TAG_AUTO_INSTALL, new AutoInstallParser());
-        parsers.put(TAG_SHORTCUT, new ShortcutParser(mSourceRes));
+        parsers.put(TAG_SHORTCUT, new ShortcutParser());
         return parsers;
     }
 
@@ -325,7 +343,7 @@
         parsers.put(TAG_FOLDER, new FolderParser());
         parsers.put(TAG_APPWIDGET, new PendingWidgetParser());
         parsers.put(TAG_SEARCH_WIDGET, new SearchWidgetParser());
-        parsers.put(TAG_SHORTCUT, new ShortcutParser(mSourceRes));
+        parsers.put(TAG_SHORTCUT, new ShortcutParser());
         return parsers;
     }
 
@@ -368,7 +386,7 @@
                                     | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
 
                     return addShortcut(info.loadLabel(mPackageManager).toString(),
-                            intent, Favorites.ITEM_TYPE_APPLICATION);
+                            intent, ITEM_TYPE_APPLICATION);
                 } catch (PackageManager.NameNotFoundException e) {
                     Log.e(TAG, "Favorite not found: " + packageName + "/" + className);
                 }
@@ -408,64 +426,32 @@
                     .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                             | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
             return addShortcut(mContext.getString(R.string.package_state_unknown), intent,
-                    Favorites.ITEM_TYPE_APPLICATION);
+                    ITEM_TYPE_APPLICATION);
         }
     }
 
     /**
-     * Parses a web shortcut. Required attributes url, icon, title
+     * Parses a deep shortcut. Required attributes packageName and shortcutId
      */
     protected class ShortcutParser implements TagParser {
 
-        private final Resources mIconRes;
-
-        public ShortcutParser(Resources iconRes) {
-            mIconRes = iconRes;
-        }
-
         @Override
         public int parseAndAdd(XmlPullParser parser) {
-            final int titleResId = getAttributeResourceValue(parser, ATTR_TITLE, 0);
-            final int iconId = getAttributeResourceValue(parser, ATTR_ICON, 0);
+            final String packageName = getAttributeValue(parser, ATTR_PACKAGE_NAME);
+            final String shortcutId = getAttributeValue(parser, ATTR_SHORTCUT_ID);
 
-            if (titleResId == 0 || iconId == 0) {
-                if (LOGD) Log.d(TAG, "Ignoring shortcut");
-                return -1;
+            try {
+                LauncherApps launcherApps = mContext.getSystemService(LauncherApps.class);
+                launcherApps.pinShortcuts(packageName, Collections.singletonList(shortcutId),
+                        Process.myUserHandle());
+                Intent intent = ShortcutKey.makeIntent(shortcutId, packageName);
+                mValues.put(Favorites.RESTORED, WorkspaceItemInfo.FLAG_RESTORED_ICON);
+                return addShortcut(null, intent, Favorites.ITEM_TYPE_DEEP_SHORTCUT);
+            } catch (Exception e) {
+                Log.e(TAG, "Unable to pin the shortcut for shortcut id = " + shortcutId
+                        + " and package name = " + packageName, e);
             }
-
-            final Intent intent = parseIntent(parser);
-            if (intent == null) {
-                return -1;
-            }
-
-            Drawable icon = mIconRes.getDrawable(iconId);
-            if (icon == null) {
-                if (LOGD) Log.d(TAG, "Ignoring shortcut, can't load icon");
-                return -1;
-            }
-
-            // Auto installs should always support the current platform version.
-            LauncherIcons li = LauncherIcons.obtain(mContext);
-            mValues.put(LauncherSettings.Favorites.ICON, GraphicsUtils.flattenBitmap(
-                    li.createBadgedIconBitmap(icon).icon));
-            li.recycle();
-
-            mValues.put(Favorites.ICON_PACKAGE, mIconRes.getResourcePackageName(iconId));
-            mValues.put(Favorites.ICON_RESOURCE, mIconRes.getResourceName(iconId));
-
-            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
-                    Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
-            return addShortcut(mSourceRes.getString(titleResId),
-                    intent, Favorites.ITEM_TYPE_SHORTCUT);
-        }
-
-        protected Intent parseIntent(XmlPullParser parser) {
-            final String url = getAttributeValue(parser, ATTR_URL);
-            if (TextUtils.isEmpty(url) || !Patterns.WEB_URL.matcher(url).matches()) {
-                if (LOGD) Log.d(TAG, "Ignoring shortcut, invalid url: " + url);
-                return null;
-            }
-            return new Intent(Intent.ACTION_VIEW, null).setData(Uri.parse(url));
+            return -1;
         }
     }
 
@@ -551,6 +537,7 @@
     protected class SearchWidgetParser extends PendingWidgetParser {
         @Override
         @Nullable
+        @WorkerThread
         public ComponentName getComponentName(XmlPullParser parser) {
             return QsbContainerView.getSearchComponentName(mContext);
         }
@@ -577,8 +564,7 @@
         }
 
         @Override
-        public int parseAndAdd(XmlPullParser parser)
-                throws XmlPullParserException, IOException {
+        public int parseAndAdd(XmlPullParser parser) throws XmlPullParserException, IOException {
             final String title;
             final int titleResId = getAttributeResourceValue(parser, ATTR_TITLE, 0);
             if (titleResId != 0) {
@@ -721,4 +707,43 @@
     static void copyInteger(ContentValues from, ContentValues to, String key) {
         to.put(key, from.getAsInteger(key));
     }
+
+    /**
+     * Wrapper over resources for easier abstraction
+     */
+    public interface SourceResources {
+
+        /**
+         * Refer {@link Resources#getXml(int)}
+         */
+        default XmlResourceParser getXml(@XmlRes int id) throws NotFoundException {
+            throw new NotFoundException();
+        }
+
+        /**
+         * Refer {@link Resources#getString(int)}
+         */
+        default String getString(@StringRes int id) throws NotFoundException {
+            throw new NotFoundException();
+        }
+
+        /**
+         * Returns a {@link SourceResources} corresponding to the provided resources
+         */
+        static SourceResources wrap(Resources res) {
+            return new SourceResources() {
+                @Override
+                public XmlResourceParser getXml(int id) {
+                    return res.getXml(id);
+                }
+
+                @Override
+                public String getString(int id) {
+                    return res.getString(id);
+                }
+            };
+        }
+    }
+
+
 }
diff --git a/src/com/android/launcher3/BaseActivity.java b/src/com/android/launcher3/BaseActivity.java
index 73d3e33..05a6452 100644
--- a/src/com/android/launcher3/BaseActivity.java
+++ b/src/com/android/launcher3/BaseActivity.java
@@ -16,6 +16,8 @@
 
 package com.android.launcher3;
 
+import static com.android.launcher3.util.FlagDebugUtils.appendFlag;
+import static com.android.launcher3.util.FlagDebugUtils.formatFlagChange;
 import static com.android.launcher3.util.SystemUiController.UI_STATE_FULLSCREEN_TASK;
 
 import static java.lang.annotation.RetentionPolicy.SOURCE;
@@ -25,29 +27,35 @@
 import android.content.ContextWrapper;
 import android.content.Intent;
 import android.content.res.Configuration;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.window.OnBackInvokedDispatcher;
 
 import androidx.annotation.IntDef;
 
-import com.android.launcher3.DeviceProfile.DeviceProfileListenable;
 import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
 import com.android.launcher3.logging.StatsLogManager;
+import com.android.launcher3.testing.TestLogging;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.util.SystemUiController;
 import com.android.launcher3.util.ViewCache;
-import com.android.launcher3.views.AppLauncher;
+import com.android.launcher3.views.ActivityContext;
 import com.android.launcher3.views.ScrimView;
 
 import java.io.PrintWriter;
 import java.lang.annotation.Retention;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.StringJoiner;
 
 /**
  * Launcher BaseActivity
  */
-public abstract class BaseActivity extends Activity implements AppLauncher,
-        DeviceProfileListenable {
+public abstract class BaseActivity extends Activity implements ActivityContext {
 
     private static final String TAG = "BaseActivity";
+    static final boolean DEBUG = false;
 
     public static final int INVISIBLE_BY_STATE_HANDLER = 1 << 0;
     public static final int INVISIBLE_BY_APP_TRANSITIONS = 1 << 1;
@@ -70,15 +78,16 @@
             flag = true,
             value = {INVISIBLE_BY_STATE_HANDLER, INVISIBLE_BY_APP_TRANSITIONS,
                     INVISIBLE_BY_PENDING_FLAGS, PENDING_INVISIBLE_BY_WALLPAPER_ANIMATION})
-    public @interface InvisibilityFlags{}
+    public @interface InvisibilityFlags {
+    }
 
     private final ArrayList<OnDeviceProfileChangeListener> mDPChangeListeners = new ArrayList<>();
     private final ArrayList<MultiWindowModeChangedListener> mMultiWindowModeChangedListeners =
             new ArrayList<>();
 
     protected DeviceProfile mDeviceProfile;
-    protected StatsLogManager mStatsLogManager;
     protected SystemUiController mSystemUiController;
+    private StatsLogManager mStatsLogManager;
 
 
     public static final int ACTIVITY_STATE_STARTED = 1 << 0;
@@ -95,6 +104,7 @@
     /**
      * State flag indicating if the user is active or the activity when to background as a result
      * of user action.
+     *
      * @see #isUserActive()
      */
     public static final int ACTIVITY_STATE_USER_ACTIVE = 1 << 4;
@@ -118,14 +128,28 @@
                     ACTIVITY_STATE_WINDOW_FOCUSED,
                     ACTIVITY_STATE_USER_ACTIVE,
                     ACTIVITY_STATE_TRANSITION_ACTIVE})
-    public @interface ActivityFlags{}
+    public @interface ActivityFlags {
+    }
+
+    /** Returns a human-readable string for the specified {@link ActivityFlags}. */
+    public static String getActivityStateString(@ActivityFlags int flags) {
+        StringJoiner result = new StringJoiner("|");
+        appendFlag(result, flags, ACTIVITY_STATE_STARTED, "state_started");
+        appendFlag(result, flags, ACTIVITY_STATE_RESUMED, "state_resumed");
+        appendFlag(result, flags, ACTIVITY_STATE_DEFERRED_RESUMED, "state_deferred_resumed");
+        appendFlag(result, flags, ACTIVITY_STATE_WINDOW_FOCUSED, "state_window_focused");
+        appendFlag(result, flags, ACTIVITY_STATE_USER_ACTIVE, "state_user_active");
+        appendFlag(result, flags, ACTIVITY_STATE_TRANSITION_ACTIVE, "state_transition_active");
+        return result.toString();
+    }
 
     @ActivityFlags
     private int mActivityFlags;
 
     // When the recents animation is running, the visibility of the Launcher is managed by the
     // animation
-    @InvisibilityFlags private int mForceInvisible;
+    @InvisibilityFlags
+    private int mForceInvisible;
 
     private final ViewCache mViewCache = new ViewCache();
 
@@ -172,6 +196,12 @@
     }
 
     @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        registerBackDispatcher();
+    }
+
+    @Override
     protected void onStart() {
         addActivityFlags(ACTIVITY_STATE_STARTED);
         super.onStart();
@@ -179,8 +209,7 @@
 
     @Override
     protected void onResume() {
-        addActivityFlags(ACTIVITY_STATE_RESUMED | ACTIVITY_STATE_USER_ACTIVE);
-        removeActivityFlags(ACTIVITY_STATE_USER_WILL_BE_ACTIVE);
+        setResumed();
         super.onResume();
     }
 
@@ -211,7 +240,7 @@
 
     @Override
     protected void onPause() {
-        removeActivityFlags(ACTIVITY_STATE_RESUMED | ACTIVITY_STATE_DEFERRED_RESUMED);
+        setPaused();
         super.onPause();
 
         // Reset the overridden sysui flags used for the task-swipe launch animation, we do this
@@ -232,6 +261,17 @@
 
     }
 
+    protected void registerBackDispatcher() {
+        if (Utilities.ATLEAST_T) {
+            getOnBackInvokedDispatcher().registerOnBackInvokedCallback(
+                    OnBackInvokedDispatcher.PRIORITY_DEFAULT,
+                    () -> {
+                        onBackPressed();
+                        TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "onBackInvoked");
+                    });
+        }
+    }
+
     public boolean isStarted() {
         return (mActivityFlags & ACTIVITY_STATE_STARTED) != 0;
     }
@@ -243,6 +283,21 @@
         return (mActivityFlags & ACTIVITY_STATE_RESUMED) != 0;
     }
 
+    /**
+     * Sets the activity to appear as paused.
+     */
+    public void setPaused() {
+        removeActivityFlags(ACTIVITY_STATE_RESUMED | ACTIVITY_STATE_DEFERRED_RESUMED);
+    }
+
+    /**
+     * Sets the activity to appear as resumed.
+     */
+    public void setResumed() {
+        addActivityFlags(ACTIVITY_STATE_RESUMED | ACTIVITY_STATE_USER_ACTIVE);
+        removeActivityFlags(ACTIVITY_STATE_USER_WILL_BE_ACTIVE);
+    }
+
     public boolean isUserActive() {
         return (mActivityFlags & ACTIVITY_STATE_USER_ACTIVE) != 0;
     }
@@ -251,17 +306,29 @@
         return mActivityFlags;
     }
 
-    protected void addActivityFlags(int flags) {
-        mActivityFlags |= flags;
-        onActivityFlagsChanged(flags);
+    protected void addActivityFlags(int toAdd) {
+        final int oldFlags = mActivityFlags;
+        mActivityFlags |= toAdd;
+        if (DEBUG) {
+            Log.d(TAG, "Launcher flags updated: " + formatFlagChange(mActivityFlags, oldFlags,
+                    BaseActivity::getActivityStateString));
+        }
+        onActivityFlagsChanged(toAdd);
     }
 
-    protected void removeActivityFlags(int flags) {
-        mActivityFlags &= ~flags;
-        onActivityFlagsChanged(flags);
+    protected void removeActivityFlags(int toRemove) {
+        final int oldFlags = mActivityFlags;
+        mActivityFlags &= ~toRemove;
+        if (DEBUG) {
+            Log.d(TAG, "Launcher flags updated: " + formatFlagChange(mActivityFlags, oldFlags,
+                    BaseActivity::getActivityStateString));
+        }
+
+        onActivityFlagsChanged(toRemove);
     }
 
-    protected void onActivityFlagsChanged(int changeBits) { }
+    protected void onActivityFlagsChanged(int changeBits) {
+    }
 
     public void addMultiWindowModeChangedListener(MultiWindowModeChangedListener listener) {
         mMultiWindowModeChangedListeners.add(listener);
@@ -274,6 +341,7 @@
     /**
      * Used to set the override visibility state, used only to handle the transition home with the
      * recents animation.
+     *
      * @see QuickstepTransitionManager#createWallpaperOpenRunner
      */
     public void addForceInvisibleFlag(@InvisibilityFlags int flag) {
@@ -295,6 +363,12 @@
         return (mForceInvisible & mask) != 0;
     }
 
+    /**
+     * Attempts to clear accessibility focus on {@param view}.
+     */
+    public void tryClearAccessibilityFocus(View view) {
+    }
+
     public interface MultiWindowModeChangedListener {
         void onMultiWindowModeChanged(boolean isInMultiWindowMode);
     }
@@ -304,7 +378,7 @@
                 + getDeviceProfile().isVerticalBarLayout());
         writer.println(prefix + "orientation=" + getResources().getConfiguration().orientation);
         writer.println(prefix + "mSystemUiController: " + mSystemUiController);
-        writer.println(prefix + "mActivityFlags: " + mActivityFlags);
+        writer.println(prefix + "mActivityFlags: " + getActivityStateString(mActivityFlags));
         writer.println(prefix + "mForceInvisible: " + mForceInvisible);
     }
 
diff --git a/src/com/android/launcher3/BaseDraggingActivity.java b/src/com/android/launcher3/BaseDraggingActivity.java
index 6de3884..8876a1b 100644
--- a/src/com/android/launcher3/BaseDraggingActivity.java
+++ b/src/com/android/launcher3/BaseDraggingActivity.java
@@ -18,6 +18,7 @@
 
 import static com.android.launcher3.util.DisplayController.CHANGE_ROTATION;
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
+import static com.android.launcher3.util.Executors.THREAD_POOL_EXECUTOR;
 
 import android.app.WallpaperColors;
 import android.app.WallpaperManager;
@@ -34,9 +35,6 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
-import com.android.launcher3.allapps.ActivityAllAppsContainerView;
-import com.android.launcher3.allapps.search.DefaultSearchAdapterProvider;
-import com.android.launcher3.allapps.search.SearchAdapterProvider;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.touch.ItemClickHandler;
 import com.android.launcher3.util.ActivityOptionsWrapper;
@@ -79,8 +77,8 @@
 
         // Update theme
         if (Utilities.ATLEAST_P) {
-            getSystemService(WallpaperManager.class)
-                    .addOnColorsChangedListener(this, MAIN_EXECUTOR.getHandler());
+            THREAD_POOL_EXECUTOR.execute(() -> getSystemService(WallpaperManager.class)
+                    .addOnColorsChangedListener(this, MAIN_EXECUTOR.getHandler()));
         }
         int themeRes = Themes.getActivityThemeRes(this);
         if (themeRes != mThemeRes) {
@@ -128,9 +126,13 @@
         mCurrentActionMode = null;
     }
 
+    protected boolean isInAutoCancelActionMode() {
+        return mCurrentActionMode != null && AUTO_CANCEL_ACTION_MODE == mCurrentActionMode.getTag();
+    }
+
     @Override
     public boolean finishAutoCancelActionMode() {
-        if (mCurrentActionMode != null && AUTO_CANCEL_ACTION_MODE == mCurrentActionMode.getTag()) {
+        if (isInAutoCancelActionMode()) {
             mCurrentActionMode.finish();
             return true;
         }
@@ -154,6 +156,13 @@
     }
 
     @Override
+    public ActivityOptionsWrapper makeDefaultActivityOptions(int splashScreenStyle) {
+        ActivityOptionsWrapper wrapper = super.makeDefaultActivityOptions(splashScreenStyle);
+        addOnResumeCallback(wrapper.onEndCallback::executeAllAndDestroy);
+        return wrapper;
+    }
+
+    @Override
     protected void onStart() {
         super.onStart();
 
@@ -212,16 +221,6 @@
         return new WindowBounds(new Rect(0, 0, mwSize.x, mwSize.y), new Rect());
     }
 
-    /**
-     * Creates and returns {@link SearchAdapterProvider} for build variant specific search result
-     * views
-     */
-    @Override
-    public SearchAdapterProvider<?> createSearchAdapterProvider(
-            ActivityAllAppsContainerView<?> allApps) {
-        return new DefaultSearchAdapterProvider(this);
-    }
-
     @Override
     public boolean isAppBlockedForSafeMode() {
         return mIsSafeModeEnabled;
diff --git a/src/com/android/launcher3/BubbleTextView.java b/src/com/android/launcher3/BubbleTextView.java
index 5fb8925..f920d75 100644
--- a/src/com/android/launcher3/BubbleTextView.java
+++ b/src/com/android/launcher3/BubbleTextView.java
@@ -16,11 +16,14 @@
 
 package com.android.launcher3;
 
+import static com.android.launcher3.config.FeatureFlags.ENABLE_DOWNLOAD_APP_UX_V2;
 import static com.android.launcher3.config.FeatureFlags.ENABLE_ICON_LABEL_AUTO_SCALING;
 import static com.android.launcher3.graphics.PreloadIconDrawable.newPendingIcon;
 import static com.android.launcher3.icons.BitmapInfo.FLAG_NO_BADGE;
 import static com.android.launcher3.icons.BitmapInfo.FLAG_THEMED;
 import static com.android.launcher3.icons.GraphicsUtils.setColorAlphaBound;
+import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_INCREMENTAL_DOWNLOAD_ACTIVE;
+import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_INSTALL_SESSION_ACTIVE;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
@@ -31,7 +34,6 @@
 import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.Paint;
-import android.graphics.PointF;
 import android.graphics.Rect;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
@@ -50,8 +52,10 @@
 
 import androidx.annotation.Nullable;
 import androidx.annotation.UiThread;
+import androidx.annotation.VisibleForTesting;
 
 import com.android.launcher3.accessibility.BaseAccessibilityDelegate;
+import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.dot.DotInfo;
 import com.android.launcher3.dragndrop.DragOptions.PreDragCondition;
 import com.android.launcher3.dragndrop.DraggableView;
@@ -68,8 +72,12 @@
 import com.android.launcher3.model.data.ItemInfoWithIcon;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
 import com.android.launcher3.popup.PopupContainerWithArrow;
+import com.android.launcher3.search.StringMatcherUtility;
+import com.android.launcher3.util.IntArray;
+import com.android.launcher3.util.MultiTranslateDelegate;
 import com.android.launcher3.util.SafeCloseable;
 import com.android.launcher3.util.ShortcutUtil;
+import com.android.launcher3.util.Themes;
 import com.android.launcher3.views.ActivityContext;
 import com.android.launcher3.views.IconLabelDotView;
 
@@ -94,18 +102,19 @@
 
     private static final float MIN_LETTER_SPACING = -0.05f;
     private static final int MAX_SEARCH_LOOP_COUNT = 20;
+    private static final Character NEW_LINE = '\n';
+    private static final String EMPTY = "";
+    private static final StringMatcherUtility.StringMatcher MATCHER =
+            StringMatcherUtility.StringMatcher.getInstance();
 
     private static final int[] STATE_PRESSED = new int[]{android.R.attr.state_pressed};
 
-    private final PointF mTranslationForReorderBounce = new PointF(0, 0);
-    private final PointF mTranslationForReorderPreview = new PointF(0, 0);
-
-    private float mTranslationXForTaskbarAlignmentAnimation = 0f;
-
-    private final PointF mTranslationForMoveFromCenterAnimation = new PointF(0, 0);
-
     private float mScaleForReorderBounce = 1f;
 
+    private IntArray mBreakPointsIntArray;
+    private CharSequence mLastOriginalText;
+    private CharSequence mLastModifiedText;
+
     private static final Property<BubbleTextView, Float> DOT_SCALE_PROPERTY
             = new Property<BubbleTextView, Float>(Float.TYPE, "dotScale") {
         @Override
@@ -133,11 +142,12 @@
         }
     };
 
+    private final MultiTranslateDelegate mTranslateDelegate = new MultiTranslateDelegate(this);
     private final ActivityContext mActivity;
     private FastBitmapDrawable mIcon;
     private boolean mCenterVertically;
 
-    protected final int mDisplay;
+    protected int mDisplay;
 
     private final CheckLongPressHelper mLongPressHelper;
 
@@ -210,6 +220,7 @@
             setCompoundDrawablePadding(grid.folderChildDrawablePaddingPx);
             defaultIconSize = grid.folderChildIconSizePx;
         } else if (mDisplay == DISPLAY_SEARCH_RESULT) {
+            setTextSize(TypedValue.COMPLEX_UNIT_PX, grid.allAppsIconTextSizePx);
             defaultIconSize = getResources().getDimensionPixelSize(R.dimen.search_row_icon_size);
         } else if (mDisplay == DISPLAY_SEARCH_RESULT_SMALL) {
             defaultIconSize = getResources().getDimensionPixelSize(
@@ -258,6 +269,10 @@
         mDotParams.scale = 0f;
         mForceHideDot = false;
         setBackground(null);
+        if (FeatureFlags.ENABLE_TWOLINE_ALLAPPS.get()
+                || FeatureFlags.ENABLE_TWOLINE_DEVICESEARCH.get()) {
+            setMaxLines(1);
+        }
 
         setTag(null);
         if (mIconLoadRequest != null) {
@@ -291,7 +306,7 @@
 
     @UiThread
     public void applyFromWorkspaceItem(WorkspaceItemInfo info, boolean animate, int staggerIndex) {
-        applyFromWorkspaceItem(info, false);
+        applyFromWorkspaceItem(info, null);
     }
 
     /**
@@ -320,10 +335,10 @@
     }
 
     @UiThread
-    public void applyFromWorkspaceItem(WorkspaceItemInfo info, boolean promiseStateChanged) {
+    public void applyFromWorkspaceItem(WorkspaceItemInfo info, PreloadIconDrawable icon) {
         applyIconAndLabel(info);
         setItemInfo(info);
-        applyLoadingState(promiseStateChanged);
+        applyLoadingState(icon);
         applyDotState(info, false /* animate */);
         setDownloadStateContentDescription(info, info.getProgressLevel());
     }
@@ -367,23 +382,41 @@
 
     @UiThread
     protected void applyIconAndLabel(ItemInfoWithIcon info) {
-        boolean useTheme = mDisplay == DISPLAY_WORKSPACE || mDisplay == DISPLAY_FOLDER
-                || mDisplay == DISPLAY_TASKBAR;
-        int flags = useTheme ? FLAG_THEMED : 0;
+        int flags = shouldUseTheme() ? FLAG_THEMED : 0;
         if (mHideBadge) {
             flags |= FLAG_NO_BADGE;
         }
         FastBitmapDrawable iconDrawable = info.newIcon(getContext(), flags);
         mDotParams.appColor = iconDrawable.getIconColor();
-        mDotParams.dotColor = getContext().getResources()
-                .getColor(android.R.color.system_accent3_200, getContext().getTheme());
+        mDotParams.dotColor = Themes.getAttrColor(getContext(), R.attr.notificationDotColor);
         setIcon(iconDrawable);
         applyLabel(info);
     }
 
+    protected boolean shouldUseTheme() {
+        return mDisplay == DISPLAY_WORKSPACE || mDisplay == DISPLAY_FOLDER
+                || mDisplay == DISPLAY_TASKBAR;
+    }
+
+    /**
+     *  Only if actual text can be displayed in two line, the {@code true} value will be effective.
+     */
+    protected boolean shouldUseTwoLine() {
+        return (FeatureFlags.ENABLE_TWOLINE_ALLAPPS.get() && mDisplay == DISPLAY_ALL_APPS)
+                || (FeatureFlags.ENABLE_TWOLINE_DEVICESEARCH.get()
+                && mDisplay == DISPLAY_SEARCH_RESULT);
+    }
+
     @UiThread
-    private void applyLabel(ItemInfoWithIcon info) {
-        setText(info.title);
+    @VisibleForTesting
+    public void applyLabel(ItemInfoWithIcon info) {
+        CharSequence label = info.title;
+        if (label != null) {
+            mLastOriginalText = label;
+            mLastModifiedText = mLastOriginalText;
+            mBreakPointsIntArray = StringMatcherUtility.getListOfBreakpoints(label, MATCHER);
+            setText(label);
+        }
         if (info.contentDescription != null) {
             setContentDescription(info.isDisabled()
                     ? getContext().getString(R.string.disabled_app_label, info.contentDescription)
@@ -391,6 +424,12 @@
         }
     }
 
+    /** This is used for testing to forcefully set the display to ALL_APPS */
+    @VisibleForTesting
+    public void setDisplayAllApps() {
+        mDisplay = DISPLAY_ALL_APPS;
+    }
+
     /**
      * Overrides the default long press timeout.
      */
@@ -607,15 +646,16 @@
      * Get the icon bounds on the view depending on the layout type.
      */
     public void getIconBounds(int iconSize, Rect outBounds) {
-        Utilities.setRectToViewCenter(this, iconSize, outBounds);
+        outBounds.set(0, 0, iconSize, iconSize);
         if (mLayoutHorizontal) {
+            int top = (getHeight() - iconSize) / 2;
             if (mIsRtl) {
-                outBounds.offsetTo(getWidth() - iconSize - getPaddingRight(), outBounds.top);
+                outBounds.offsetTo(getWidth() - iconSize - getPaddingRight(), top);
             } else {
-                outBounds.offsetTo(getPaddingLeft(), outBounds.top);
+                outBounds.offsetTo(getPaddingLeft(), top);
             }
         } else {
-            outBounds.offsetTo(outBounds.left, getPaddingTop());
+            outBounds.offset((getWidth() - iconSize) / 2, getPaddingTop());
         }
     }
 
@@ -636,6 +676,26 @@
             setPadding(getPaddingLeft(), (height - cellHeightPx) / 2, getPaddingRight(),
                     getPaddingBottom());
         }
+        // Only apply two line for all_apps and device search only if necessary.
+        if (shouldUseTwoLine() && (mLastOriginalText != null)) {
+            CharSequence modifiedString = modifyTitleToSupportMultiLine(
+                    MeasureSpec.getSize(widthMeasureSpec) - getCompoundPaddingLeft()
+                            - getCompoundPaddingRight(),
+                    mLastOriginalText,
+                    getPaint(), mBreakPointsIntArray);
+            if (!TextUtils.equals(modifiedString, mLastModifiedText)) {
+                mLastModifiedText = modifiedString;
+                setText(modifiedString);
+                // if text contains NEW_LINE, set max lines to 2
+                if (TextUtils.indexOf(modifiedString, NEW_LINE) != -1) {
+                    setSingleLine(false);
+                    setMaxLines(2);
+                } else {
+                    setSingleLine(true);
+                    setMaxLines(1);
+                }
+            }
+        }
         super.onMeasure(widthMeasureSpec, heightMeasureSpec);
     }
 
@@ -696,6 +756,73 @@
         return ObjectAnimator.ofFloat(this, TEXT_ALPHA_PROPERTY, toAlpha);
     }
 
+    /**
+     * Generate a new string that will support two line text depending on the current string.
+     * This method calculates the limited width of a text view and creates a string to fit as
+     * many words as it can until the limit is reached. Once the limit is reached, we decide to
+     * either return the original title or continue on a new line. How to get the new string is by
+     * iterating through the list of break points and determining if the strings between the break
+     * points can fit within the line it is in.
+     *  Example assuming each character takes up one spot:
+     *  title = "Battery Stats", breakpoint = [6], stringPtr = 0, limitedWidth = 7
+     *  We get the current word -> from sublist(0, breakpoint[i]+1) so sublist (0,7) -> Battery,
+     *  now stringPtr = 7 then from sublist(7) the current string is " Stats" and the runningWidth
+     *  at this point exceeds limitedWidth and so we put " Stats" onto the next line (after checking
+     *  if the first char is a SPACE, we trim to append "Stats". So resulting string would be
+     *  "Battery\nStats"
+     */
+    public static CharSequence modifyTitleToSupportMultiLine(int limitedWidth, CharSequence title,
+            TextPaint paint, IntArray breakPoints) {
+        // current title is less than the width allowed so we can just skip
+        if (title == null || paint.measureText(title, 0, title.length()) <= limitedWidth) {
+            return title;
+        }
+        float currentWordWidth, runningWidth = 0;
+        CharSequence currentWord;
+        StringBuilder newString = new StringBuilder();
+        int stringPtr = 0;
+        for (int i = 0; i < breakPoints.size()+1; i++) {
+            if (i < breakPoints.size()) {
+                currentWord = title.subSequence(stringPtr, breakPoints.get(i)+1);
+            } else {
+                // last word from recent breakpoint until the end of the string
+                currentWord = title.subSequence(stringPtr, title.length());
+            }
+            currentWordWidth = paint.measureText(currentWord,0, currentWord.length());
+            runningWidth += currentWordWidth;
+            if (runningWidth <= limitedWidth) {
+                newString.append(currentWord);
+            } else {
+                // there is no more space
+                if (i == 0) {
+                    // if the first words exceeds width, just return as the first line will ellipse
+                    return title;
+                } else {
+                    // If putting word onto a new line, make sure there is no space or new line
+                    // character in the beginning of the current word and just put in the rest of
+                    // the characters.
+                    CharSequence lastCharacters = title.subSequence(stringPtr, title.length());
+                    int beginningLetterType =
+                            Character.getType(Character.codePointAt(lastCharacters,0));
+                    if (beginningLetterType == Character.SPACE_SEPARATOR
+                            || beginningLetterType == Character.LINE_SEPARATOR) {
+                        lastCharacters = lastCharacters.length() > 1
+                                ? lastCharacters.subSequence(1, lastCharacters.length())
+                                : EMPTY;
+                    }
+                    newString.append(NEW_LINE).append(lastCharacters);
+                    return newString.toString();
+                }
+            }
+            if (i >= breakPoints.size()) {
+                // no need to look forward into the string if we've already finished processing
+                break;
+            }
+            stringPtr = breakPoints.get(i)+1;
+        }
+        return newString.toString();
+    }
+
     @Override
     public void cancelLongPress() {
         super.cancelLongPress();
@@ -709,23 +836,23 @@
      * If this app is installed and downloading incrementally, the progress bar will be updated
      * with the total download progress.
      */
-    public void applyLoadingState(boolean promiseStateChanged) {
+    public void applyLoadingState(PreloadIconDrawable icon) {
         if (getTag() instanceof ItemInfoWithIcon) {
             WorkspaceItemInfo info = (WorkspaceItemInfo) getTag();
-            if ((info.runtimeStatusFlags & ItemInfoWithIcon.FLAG_INCREMENTAL_DOWNLOAD_ACTIVE)
-                    != 0) {
-                updateProgressBarUi(info.getProgressLevel() == 100);
-            } else if (info.hasPromiseIconUi() || (info.runtimeStatusFlags
-                        & ItemInfoWithIcon.FLAG_INSTALL_SESSION_ACTIVE) != 0) {
-                updateProgressBarUi(promiseStateChanged);
+            if ((info.runtimeStatusFlags & FLAG_INCREMENTAL_DOWNLOAD_ACTIVE) != 0
+                    || info.hasPromiseIconUi()
+                    || (info.runtimeStatusFlags & FLAG_INSTALL_SESSION_ACTIVE) != 0
+                    || (ENABLE_DOWNLOAD_APP_UX_V2.get() && icon != null)) {
+                updateProgressBarUi(info.getProgressLevel() == 100 ? icon : null);
             }
         }
     }
 
-    private void updateProgressBarUi(boolean maybePerformFinishedAnimation) {
+    private void updateProgressBarUi(PreloadIconDrawable oldIcon) {
+        FastBitmapDrawable originalIcon = mIcon;
         PreloadIconDrawable preloadDrawable = applyProgressLevel();
-        if (preloadDrawable != null && maybePerformFinishedAnimation) {
-            preloadDrawable.maybePerformFinishedAnimation();
+        if (preloadDrawable != null && oldIcon != null) {
+            preloadDrawable.maybePerformFinishedAnimation(oldIcon, () -> setIcon(originalIcon));
         }
     }
 
@@ -752,7 +879,9 @@
             if (mIcon instanceof PreloadIconDrawable) {
                 preloadIconDrawable = (PreloadIconDrawable) mIcon;
                 preloadIconDrawable.setLevel(progressLevel);
-                preloadIconDrawable.setIsDisabled(!info.isAppStartable());
+                preloadIconDrawable.setIsDisabled(ENABLE_DOWNLOAD_APP_UX_V2.get()
+                        ? info.getProgressLevel() == 0
+                        : !info.isAppStartable());
             } else {
                 preloadIconDrawable = makePreloadIcon();
                 setIcon(preloadIconDrawable);
@@ -777,8 +906,9 @@
         final PreloadIconDrawable preloadDrawable = newPendingIcon(getContext(), info);
 
         preloadDrawable.setLevel(progressLevel);
-        preloadDrawable.setIsDisabled(!info.isAppStartable());
-
+        preloadDrawable.setIsDisabled(ENABLE_DOWNLOAD_APP_UX_V2.get()
+                ? info.getProgressLevel() == 0
+                : !info.isAppStartable());
         return preloadDrawable;
     }
 
@@ -823,12 +953,12 @@
                 != 0) {
             String percentageString = NumberFormat.getPercentInstance()
                     .format(progressLevel * 0.01);
-            if ((info.runtimeStatusFlags & ItemInfoWithIcon.FLAG_INSTALL_SESSION_ACTIVE) != 0) {
+            if ((info.runtimeStatusFlags & FLAG_INSTALL_SESSION_ACTIVE) != 0) {
                 setContentDescription(getContext()
                         .getString(
                             R.string.app_installing_title, info.title, percentageString));
             } else if ((info.runtimeStatusFlags
-                    & ItemInfoWithIcon.FLAG_INCREMENTAL_DOWNLOAD_ACTIVE) != 0) {
+                    & FLAG_INCREMENTAL_DOWNLOAD_ACTIVE) != 0) {
                 setContentDescription(getContext()
                         .getString(
                             R.string.app_downloading_title, info.title, percentageString));
@@ -859,6 +989,13 @@
         applyCompoundDrawables(icon);
     }
 
+    /** Sets the icon visual state to disabled or not. */
+    public void setIconDisabled(boolean isDisabled) {
+        if (mIcon != null) {
+            mIcon.setIsDisabled(isDisabled);
+        }
+    }
+
     protected boolean iconUpdateAnimationEnabled() {
         return mEnableIconUpdateAnimation;
     }
@@ -942,71 +1079,28 @@
         return mIconSize;
     }
 
-    private void updateTranslation() {
-        super.setTranslationX(mTranslationForReorderBounce.x + mTranslationForReorderPreview.x
-                + mTranslationForMoveFromCenterAnimation.x
-                + mTranslationXForTaskbarAlignmentAnimation);
-        super.setTranslationY(mTranslationForReorderBounce.y + mTranslationForReorderPreview.y
-                + mTranslationForMoveFromCenterAnimation.y);
-    }
-
-    public void setReorderBounceOffset(float x, float y) {
-        mTranslationForReorderBounce.set(x, y);
-        updateTranslation();
-    }
-
-    public void getReorderBounceOffset(PointF offset) {
-        offset.set(mTranslationForReorderBounce);
+    public boolean isDisplaySearchResult() {
+        return mDisplay == DISPLAY_SEARCH_RESULT ||
+                mDisplay == DISPLAY_SEARCH_RESULT_SMALL;
     }
 
     @Override
-    public void setReorderPreviewOffset(float x, float y) {
-        mTranslationForReorderPreview.set(x, y);
-        updateTranslation();
+    public MultiTranslateDelegate getTranslateDelegate() {
+        return mTranslateDelegate;
     }
 
     @Override
-    public void getReorderPreviewOffset(PointF offset) {
-        offset.set(mTranslationForReorderPreview);
-    }
-
     public void setReorderBounceScale(float scale) {
         mScaleForReorderBounce = scale;
         super.setScaleX(scale);
         super.setScaleY(scale);
     }
 
+    @Override
     public float getReorderBounceScale() {
         return mScaleForReorderBounce;
     }
 
-    /**
-     * Sets translation values for move from center animation
-     */
-    public void setTranslationForMoveFromCenterAnimation(float x, float y) {
-        mTranslationForMoveFromCenterAnimation.set(x, y);
-        updateTranslation();
-    }
-
-    /**
-     * Sets translationX for taskbar to launcher alignment animation
-     */
-    public void setTranslationXForTaskbarAlignmentAnimation(float translationX) {
-        mTranslationXForTaskbarAlignmentAnimation = translationX;
-        updateTranslation();
-    }
-
-    /**
-     * Returns translationX value for taskbar to launcher alignment animation
-     */
-    public float getTranslationXForTaskbarAlignmentAnimation() {
-        return mTranslationXForTaskbarAlignmentAnimation;
-    }
-
-    public View getView() {
-        return this;
-    }
-
     @Override
     public int getViewType() {
         return DRAGGABLE_ICON;
diff --git a/src/com/android/launcher3/ButtonDropTarget.java b/src/com/android/launcher3/ButtonDropTarget.java
index 3b24df2..108e557 100644
--- a/src/com/android/launcher3/ButtonDropTarget.java
+++ b/src/com/android/launcher3/ButtonDropTarget.java
@@ -18,10 +18,9 @@
 
 import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
 
-import static com.android.launcher3.LauncherState.NORMAL;
-
 import android.content.Context;
 import android.content.res.Resources;
+import android.graphics.Paint;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.text.InputType;
@@ -34,12 +33,15 @@
 import android.widget.PopupWindow;
 import android.widget.TextView;
 
+import androidx.annotation.VisibleForTesting;
+
 import com.android.launcher3.anim.Interpolators;
 import com.android.launcher3.dragndrop.DragController;
 import com.android.launcher3.dragndrop.DragLayer;
 import com.android.launcher3.dragndrop.DragOptions;
 import com.android.launcher3.dragndrop.DragView;
 import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.views.ActivityContext;
 
 /**
  * Implements a DropTarget.
@@ -57,8 +59,8 @@
     public static final int TOOLTIP_LEFT = 1;
     public static final int TOOLTIP_RIGHT = 2;
 
-    protected final Launcher mLauncher;
-
+    protected final ActivityContext mActivityContext;
+    protected final DropTargetHandler mDropTargetHandler;
     protected DropTargetBar mDropTargetBar;
 
     /** Whether this drop target is active for the current drag */
@@ -81,17 +83,21 @@
     private PopupWindow mToolTip;
     private int mToolTipLocation;
 
+    public ButtonDropTarget(Context context) {
+        this(context, null, 0);
+    }
     public ButtonDropTarget(Context context, AttributeSet attrs) {
         this(context, attrs, 0);
     }
 
     public ButtonDropTarget(Context context, AttributeSet attrs, int defStyle) {
         super(context, attrs, defStyle);
-        mLauncher = Launcher.getLauncher(context);
+        mActivityContext = ActivityContext.lookupContext(context);
+        mDropTargetHandler = mActivityContext.getDropTargetHandler();
 
         Resources resources = getResources();
         mDragDistanceThreshold = resources.getDimensionPixelSize(R.dimen.drag_distanceThreshold);
-        mDrawableSize = resources.getDimensionPixelSize(R.dimen.drop_target_text_size);
+        mDrawableSize = resources.getDimensionPixelSize(R.dimen.drop_target_button_drawable_size);
         mDrawablePadding = resources.getDimensionPixelSize(
                 R.dimen.drop_target_button_drawable_padding);
     }
@@ -109,6 +115,12 @@
         setContentDescription(mText);
     }
 
+    protected void updateText(CharSequence text) {
+        setText(text);
+        mText = getText();
+        setContentDescription(mText);
+    }
+
     protected void setDrawable(int resId) {
         // We do not set the drawable in the xml as that inflates two drawables corresponding to
         // drawableLeft and drawableStart.
@@ -208,7 +220,8 @@
     @Override
     public boolean isDropEnabled() {
         return mActive && (mAccessibleDrag ||
-                mLauncher.getDragController().getDistanceDragged() >= mDragDistanceThreshold);
+                mActivityContext.getDragController().getDistanceDragged()
+                        >= mDragDistanceThreshold);
     }
 
     @Override
@@ -227,7 +240,8 @@
             // FlingAnimation handles the animation and then calls completeDrop().
             return;
         }
-        final DragLayer dragLayer = mLauncher.getDragLayer();
+
+        final DragLayer dragLayer = mDropTargetHandler.getDragLayer();
         final DragView dragView = d.dragView;
         final Rect to = getIconRect(d);
         final float scale = (float) to.width() / dragView.getMeasuredWidth();
@@ -238,9 +252,10 @@
         Runnable onAnimationEndRunnable = () -> {
             completeDrop(d);
             mDropTargetBar.onDragEnd();
-            mLauncher.getStateManager().goToState(NORMAL);
+            mDropTargetHandler.onDropAnimationComplete();
         };
 
+
         dragLayer.animateView(d.dragView, to, scale, 0.1f, 0.1f,
                 DRAG_VIEW_DROP_DURATION,
                 Interpolators.DEACCEL_2, onAnimationEndRunnable,
@@ -259,10 +274,10 @@
     @Override
     public void getHitRectRelativeToDragLayer(android.graphics.Rect outRect) {
         super.getHitRect(outRect);
-        outRect.bottom += mLauncher.getDeviceProfile().dropTargetDragPaddingPx;
+        outRect.bottom += mActivityContext.getDeviceProfile().dropTargetDragPaddingPx;
 
         sTempCords[0] = sTempCords[1] = 0;
-        mLauncher.getDragLayer().getDescendantCoordRelativeToSelf(this, sTempCords);
+        mActivityContext.getDragLayer().getDescendantCoordRelativeToSelf(this, sTempCords);
         outRect.offsetTo(sTempCords[0], sTempCords[1]);
     }
 
@@ -271,7 +286,7 @@
         int viewHeight = dragObject.dragView.getMeasuredHeight();
         int drawableWidth = mDrawable.getIntrinsicWidth();
         int drawableHeight = mDrawable.getIntrinsicHeight();
-        DragLayer dragLayer = mLauncher.getDragLayer();
+        DragLayer dragLayer = mDropTargetHandler.getDragLayer();
 
         // Find the rect to animate to (the view is center aligned)
         Rect to = new Rect();
@@ -312,7 +327,7 @@
 
     @Override
     public void onClick(View v) {
-        mLauncher.getAccessibilityDelegate().handleAccessibleDrop(this, null, null);
+        mDropTargetHandler.onClick(this);
     }
 
     public void setTextVisible(boolean isVisible) {
@@ -374,11 +389,78 @@
         hideTooltip();
     }
 
+    /**
+     * Returns if the text will be truncated within the provided availableWidth.
+     */
     public boolean isTextTruncated(int availableWidth) {
-        availableWidth -= (getPaddingLeft() + getPaddingRight() + mDrawable.getIntrinsicWidth()
-                + getCompoundDrawablePadding());
-        CharSequence displayedText = TextUtils.ellipsize(mText, getPaint(), availableWidth,
+        availableWidth -= getPaddingLeft() + getPaddingRight();
+        if (mIconVisible) {
+            availableWidth -= mDrawable.getIntrinsicWidth() + getCompoundDrawablePadding();
+        }
+        if (availableWidth <= 0) {
+            return true;
+        }
+        CharSequence firstLine = TextUtils.ellipsize(mText, getPaint(), availableWidth,
                 TextUtils.TruncateAt.END);
-        return !mText.equals(displayedText);
+        if (!mTextMultiLine) {
+            return !TextUtils.equals(mText, firstLine);
+        }
+        if (TextUtils.equals(mText, firstLine)) {
+            // When multi-line is active, if it can display as one line, then text is not truncated.
+            return false;
+        }
+        CharSequence secondLine =
+                TextUtils.ellipsize(mText.subSequence(firstLine.length(), mText.length()),
+                        getPaint(), availableWidth, TextUtils.TruncateAt.END);
+        return !(TextUtils.equals(mText.subSequence(0, firstLine.length()), firstLine)
+                && TextUtils.equals(mText.subSequence(firstLine.length(), secondLine.length()),
+                secondLine));
+    }
+
+    /**
+     * Returns if the text will be clipped vertically within the provided availableHeight.
+     */
+    @VisibleForTesting
+    protected boolean isTextClippedVertically(int availableHeight) {
+        Paint.FontMetricsInt fontMetricsInt = getPaint().getFontMetricsInt();
+        int lineCount = (getLineCount() <= 0) ? 1 : getLineCount();
+        int textHeight = lineCount * (fontMetricsInt.bottom - fontMetricsInt.top);
+
+        return textHeight + getPaddingTop() + getPaddingBottom() >= availableHeight;
+    }
+
+    /**
+     * Reduce the size of the text until it fits the measured width or reaches a minimum.
+     *
+     * The minimum size is defined by {@code R.dimen.button_drop_target_min_text_size} and
+     * it diminishes by intervals defined by
+     * {@code R.dimen.button_drop_target_resize_text_increment}
+     * This functionality is very similar to the option
+     * {@link TextView#setAutoSizeTextTypeWithDefaults(int)} but can't be used in this view because
+     * the layout width is {@code WRAP_CONTENT}.
+     *
+     * @return The biggest text size in SP that makes the text fit or if the text can't fit returns
+     *         the min available value
+     */
+    public float resizeTextToFit() {
+        float minSize = Utilities.pxToSp(getResources()
+                .getDimensionPixelSize(R.dimen.button_drop_target_min_text_size));
+        float step = Utilities.pxToSp(getResources()
+                .getDimensionPixelSize(R.dimen.button_drop_target_resize_text_increment));
+        float textSize = Utilities.pxToSp(getTextSize());
+
+        int availableWidth = getMeasuredWidth();
+        int availableHeight = getMeasuredHeight();
+
+        while (isTextTruncated(availableWidth) || isTextClippedVertically(availableHeight)) {
+            textSize -= step;
+            if (textSize < minSize) {
+                textSize = minSize;
+                setTextSize(textSize);
+                break;
+            }
+            setTextSize(textSize);
+        }
+        return textSize;
     }
 }
diff --git a/src/com/android/launcher3/CellLayout.java b/src/com/android/launcher3/CellLayout.java
index 300e7bf..61b2748 100644
--- a/src/com/android/launcher3/CellLayout.java
+++ b/src/com/android/launcher3/CellLayout.java
@@ -18,9 +18,12 @@
 
 import static android.animation.ValueAnimator.areAnimatorsEnabled;
 
+import static com.android.launcher3.LauncherState.EDIT_MODE;
 import static com.android.launcher3.anim.Interpolators.DEACCEL_1_5;
 import static com.android.launcher3.dragndrop.DraggableView.DRAGGABLE_ICON;
 import static com.android.launcher3.icons.IconNormalizer.ICON_VISIBLE_AREA_FACTOR;
+import static com.android.launcher3.util.MultiTranslateDelegate.INDEX_REORDER_BOUNCE_OFFSET;
+import static com.android.launcher3.util.MultiTranslateDelegate.INDEX_REORDER_PREVIEW_OFFSET;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
@@ -54,13 +57,15 @@
 import android.view.accessibility.AccessibilityEvent;
 
 import androidx.annotation.IntDef;
-import androidx.annotation.Nullable;
 import androidx.core.graphics.ColorUtils;
 import androidx.core.view.ViewCompat;
 
 import com.android.launcher3.LauncherSettings.Favorites;
 import com.android.launcher3.accessibility.DragAndDropAccessibilityDelegate;
 import com.android.launcher3.anim.Interpolators;
+import com.android.launcher3.celllayout.CellLayoutLayoutParams;
+import com.android.launcher3.celllayout.CellPosMapper.CellPos;
+import com.android.launcher3.celllayout.ReorderAlgorithm;
 import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.dragndrop.DraggableView;
 import com.android.launcher3.folder.PreviewBackground;
@@ -68,6 +73,7 @@
 import com.android.launcher3.model.data.LauncherAppWidgetInfo;
 import com.android.launcher3.util.CellAndSpan;
 import com.android.launcher3.util.GridOccupancy;
+import com.android.launcher3.util.MultiTranslateDelegate;
 import com.android.launcher3.util.ParcelableSparseArray;
 import com.android.launcher3.util.Themes;
 import com.android.launcher3.util.Thunk;
@@ -80,12 +86,16 @@
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.List;
 import java.util.Stack;
 
 public class CellLayout extends ViewGroup {
     private static final String TAG = "CellLayout";
     private static final boolean LOGD = false;
 
+    /** The color of the "leave-behind" shape when a folder is opened from Hotseat. */
+    private static final int FOLDER_LEAVE_BEHIND_COLOR = Color.argb(160, 245, 245, 245);
+
     protected final ActivityContext mActivity;
     @ViewDebug.ExportedProperty(category = "launcher")
     @Thunk int mCellWidth;
@@ -94,12 +104,12 @@
     private int mFixedCellWidth;
     private int mFixedCellHeight;
     @ViewDebug.ExportedProperty(category = "launcher")
-    private Point mBorderSpace;
+    protected Point mBorderSpace;
 
     @ViewDebug.ExportedProperty(category = "launcher")
-    private int mCountX;
+    protected int mCountX;
     @ViewDebug.ExportedProperty(category = "launcher")
-    private int mCountY;
+    protected int mCountY;
 
     private boolean mDropPending = false;
 
@@ -109,8 +119,8 @@
     @Thunk final int[] mTempLocation = new int[2];
     final PointF mTmpPointF = new PointF();
 
-    private GridOccupancy mOccupied;
-    private GridOccupancy mTmpOccupied;
+    protected GridOccupancy mOccupied;
+    public GridOccupancy mTmpOccupied;
 
     private OnTouchListener mInterceptTouchListener;
 
@@ -119,7 +129,7 @@
 
     private static final int[] BACKGROUND_STATE_ACTIVE = new int[] { android.R.attr.state_active };
     private static final int[] BACKGROUND_STATE_DEFAULT = EMPTY_STATE_SET;
-    private final Drawable mBackground;
+    protected final Drawable mBackground;
 
     // These values allow a fixed measurement to be set on the CellLayout.
     private int mFixedWidth = -1;
@@ -130,7 +140,7 @@
 
     // These arrays are used to implement the drag visualization on x-large screens.
     // They are used as circular arrays, indexed by mDragOutlineCurrent.
-    @Thunk final CellLayout.LayoutParams[] mDragOutlines = new CellLayout.LayoutParams[4];
+    @Thunk final CellLayoutLayoutParams[] mDragOutlines = new CellLayoutLayoutParams[4];
     @Thunk final float[] mDragOutlineAlphas = new float[mDragOutlines.length];
     private final InterruptibleInOutAnimator[] mDragOutlineAnims =
             new InterruptibleInOutAnimator[mDragOutlines.length];
@@ -139,7 +149,7 @@
     private int mDragOutlineCurrent = 0;
     private final Paint mDragOutlinePaint = new Paint();
 
-    @Thunk final ArrayMap<LayoutParams, Animator> mReorderAnimators = new ArrayMap<>();
+    @Thunk final ArrayMap<CellLayoutLayoutParams, Animator> mReorderAnimators = new ArrayMap<>();
     @Thunk final ArrayMap<Reorderable, ReorderPreviewAnimation> mShakeAnimators = new ArrayMap<>();
 
     private boolean mItemPlacementDirty = false;
@@ -152,7 +162,7 @@
     private int mGridVisualizationRoundingRadius;
     private float mGridAlpha = 0f;
     private int mGridColor = 0;
-    private float mSpringLoadedProgress = 0f;
+    protected float mSpringLoadedProgress = 0f;
     private float mScrollProgress = 0f;
 
     // When a drag operation is in progress, holds the nearest cell to the touch point
@@ -162,7 +172,7 @@
     private boolean mDragging = false;
 
     private final TimeInterpolator mEaseOutInterpolator;
-    private final ShortcutAndWidgetContainer mShortcutsAndWidgets;
+    protected final ShortcutAndWidgetContainer mShortcutsAndWidgets;
 
     @Retention(RetentionPolicy.SOURCE)
     @IntDef({WORKSPACE, HOTSEAT, FOLDER})
@@ -189,9 +199,9 @@
 
     private final ArrayList<View> mIntersectingViews = new ArrayList<>();
     private final Rect mOccupiedRect = new Rect();
-    private final int[] mDirectionVector = new int[2];
+    public final int[] mDirectionVector = new int[2];
 
-    final int[] mPreviousReorderDirection = new int[2];
+    ItemConfiguration mPreviousSolution = null;
     private static final int INVALID_DIRECTION = -100;
 
     private final Rect mTempRect = new Rect();
@@ -245,9 +255,6 @@
         mOccupied =  new GridOccupancy(mCountX, mCountY);
         mTmpOccupied = new GridOccupancy(mCountX, mCountY);
 
-        mPreviousReorderDirection[0] = INVALID_DIRECTION;
-        mPreviousReorderDirection[1] = INVALID_DIRECTION;
-
         mFolderLeaveBehind.mDelegateCellX = -1;
         mFolderLeaveBehind.mDelegateCellY = -1;
 
@@ -269,7 +276,7 @@
         mDragCell[0] = mDragCell[1] = -1;
         mDragCellSpan[0] = mDragCellSpan[1] = -1;
         for (int i = 0; i < mDragOutlines.length; i++) {
-            mDragOutlines[i] = new CellLayout.LayoutParams(0, 0, 0, 0);
+            mDragOutlines[i] = new CellLayoutLayoutParams(0, 0, 0, 0);
         }
         mDragOutlinePaint.setColor(Themes.getAttrColor(context, R.attr.workspaceTextColor));
 
@@ -375,7 +382,8 @@
     private void resetCellSizeInternal(DeviceProfile deviceProfile) {
         switch (mContainerType) {
             case FOLDER:
-                mBorderSpace = new Point(deviceProfile.folderCellLayoutBorderSpacePx);
+                mBorderSpace = new Point(deviceProfile.folderCellLayoutBorderSpacePx,
+                        deviceProfile.folderCellLayoutBorderSpacePx);
                 break;
             case HOTSEAT:
                 mBorderSpace = new Point(deviceProfile.hotseatBorderSpace,
@@ -404,7 +412,6 @@
         mCountY = y;
         mOccupied = new GridOccupancy(mCountX, mCountY);
         mTmpOccupied = new GridOccupancy(mCountX, mCountY);
-        mTempRectStack.clear();
         mShortcutsAndWidgets.setCellDimensions(mCellWidth, mCellHeight, mCountX, mCountY,
                 mBorderSpace);
         requestLayout();
@@ -496,8 +503,8 @@
 
                     // Draw reorder drag target.
                     debugPaint.setColor(Color.RED);
-                    canvas.drawCircle(cellCenter[0], cellCenter[1], getReorderRadius(targetCell),
-                            debugPaint);
+                    canvas.drawCircle(cellCenter[0], cellCenter[1],
+                            getReorderRadius(targetCell, 1, 1), debugPaint);
 
                     // Draw folder creation drag target.
                     if (canCreateFolder) {
@@ -525,7 +532,7 @@
                     mFolderLeaveBehind.mDelegateCellY, mTempLocation);
             canvas.save();
             canvas.translate(mTempLocation[0], mTempLocation[1]);
-            mFolderLeaveBehind.drawLeaveBehind(canvas);
+            mFolderLeaveBehind.drawLeaveBehind(canvas, FOLDER_LEAVE_BEHIND_COLOR);
             canvas.restore();
         }
 
@@ -564,8 +571,10 @@
         return mSpringLoadedProgress;
     }
 
-    private void updateBgAlpha() {
-        mBackground.setAlpha((int) (mSpringLoadedProgress * 255));
+    protected void updateBgAlpha() {
+        if (!getWorkspace().mLauncher.isInState(EDIT_MODE)) {
+            mBackground.setAlpha((int) (mSpringLoadedProgress * 255));
+        }
     }
 
     /**
@@ -621,8 +630,8 @@
                 if (alpha <= 0) continue;
 
                 mVisualizeGridPaint.setAlpha(255);
-                int x = mDragOutlines[i].cellX;
-                int y = mDragOutlines[i].cellY;
+                int x = mDragOutlines[i].getCellX();
+                int y = mDragOutlines[i].getCellY();
                 int spanX = mDragOutlines[i].cellHSpan;
                 int spanY = mDragOutlines[i].cellVSpan;
 
@@ -737,9 +746,19 @@
         return mContainerType == WORKSPACE;
     }
 
-    public boolean addViewToCellLayout(View child, int index, int childId, LayoutParams params,
-            boolean markCells) {
-        final LayoutParams lp = params;
+    /**
+     * Adds the given view to the CellLayout
+     *
+     * @param child view to add.
+     * @param index index of the CellLayout children where to add the view.
+     * @param childId id of the view.
+     * @param params represent the logic of the view on the CellLayout.
+     * @param markCells if the occupied cells should be marked or not
+     * @return if adding the view was successful
+     */
+    public boolean addViewToCellLayout(View child, int index, int childId,
+            CellLayoutLayoutParams params, boolean markCells) {
+        final CellLayoutLayoutParams lp = params;
 
         // Hotseat icons - remove text
         if (child instanceof BubbleTextView) {
@@ -752,7 +771,8 @@
 
         // Generate an id for each view, this assumes we have at most 256x256 cells
         // per workspace screen
-        if (lp.cellX >= 0 && lp.cellX <= mCountX - 1 && lp.cellY >= 0 && lp.cellY <= mCountY - 1) {
+        if (lp.getCellX() >= 0 && lp.getCellX() <= mCountX - 1
+                && lp.getCellY() >= 0 && lp.getCellY() <= mCountY - 1) {
             // If the horizontal or vertical span is set to -1, it is taken to
             // mean that it spans the extent of the CellLayout
             if (lp.cellHSpan < 0) lp.cellHSpan = mCountX;
@@ -829,8 +849,8 @@
         final int hStartPadding = getPaddingLeft();
         final int vStartPadding = getPaddingTop();
 
-        result[0] = (x - hStartPadding) / mCellWidth;
-        result[1] = (y - vStartPadding) / mCellHeight;
+        result[0] = (x - hStartPadding) / (mCellWidth + mBorderSpace.x);
+        result[1] = (y - vStartPadding) / (mCellHeight + mBorderSpace.y);
 
         final int xAxis = mCountX;
         final int yAxis = mCountY;
@@ -842,16 +862,6 @@
     }
 
     /**
-     * Given a point, return the cell that most closely encloses that point
-     * @param x X coordinate of the point
-     * @param y Y coordinate of the point
-     * @param result Array of 2 ints to hold the x and y coordinate of the cell
-     */
-    void pointToCellRounded(int x, int y, int[] result) {
-        pointToCellExact(x + (mCellWidth / 2), y + (mCellHeight / 2), result);
-    }
-
-    /**
      * Given a cell coordinate, return the point that represents the upper left corner of that cell
      *
      * @param cellX X coordinate of the cell
@@ -885,7 +895,7 @@
      *
      * @param result Array of 2 ints to hold the x and y coordinate of the point
      */
-    void regionToCenterPoint(int cellX, int cellY, int spanX, int spanY, int[] result) {
+    public void regionToCenterPoint(int cellX, int cellY, int spanX, int spanY, int[] result) {
         cellToRect(cellX, cellY, spanX, spanY, mTempRect);
         result[0] = mTempRect.centerX();
         result[1] = mTempRect.centerY();
@@ -922,21 +932,21 @@
         DeviceProfile grid = mActivity.getDeviceProfile();
         float iconVisibleRadius = ICON_VISIBLE_AREA_FACTOR * grid.iconSizePx / 2;
         // Halfway between reorder radius and icon.
-        return (getReorderRadius(targetCell) + iconVisibleRadius) / 2;
+        return (getReorderRadius(targetCell, 1, 1) + iconVisibleRadius) / 2;
     }
 
     /**
      * Returns the max distance from the center of a cell that will start to reorder on drag over.
      */
-    public float getReorderRadius(int[] targetCell) {
+    public float getReorderRadius(int[] targetCell, int spanX, int spanY) {
         int[] centerPoint = mTmpPoint;
         getWorkspaceCellVisualCenter(targetCell[0], targetCell[1], centerPoint);
 
         Rect cellBoundsWithSpacing = mTempRect;
-        cellToRect(targetCell[0], targetCell[1], 1, 1, cellBoundsWithSpacing);
+        cellToRect(targetCell[0], targetCell[1], spanX, spanY, cellBoundsWithSpacing);
         cellBoundsWithSpacing.inset(-mBorderSpace.x / 2, -mBorderSpace.y / 2);
 
-        if (canCreateFolder(getChildAt(targetCell[0], targetCell[1]))) {
+        if (canCreateFolder(getChildAt(targetCell[0], targetCell[1])) && spanX == 1 && spanY == 1) {
             // Take only the circle in the smaller dimension, to ensure we don't start reordering
             // too soon before accepting a folder drop.
             int minRadius = centerPoint[0] - cellBoundsWithSpacing.left;
@@ -946,8 +956,9 @@
             return minRadius;
         }
         // Take up the entire cell, including space between this cell and the adjacent ones.
-        return (float) Math.hypot(cellBoundsWithSpacing.width() / 2f,
-                cellBoundsWithSpacing.height() / 2f);
+        // Multiply by span to scale radius
+        return (float) Math.hypot(spanX * cellBoundsWithSpacing.width() / 2f,
+                spanY * cellBoundsWithSpacing.height() / 2f);
     }
 
     public int getCellWidth() {
@@ -1056,7 +1067,7 @@
         ShortcutAndWidgetContainer clc = getShortcutsAndWidgets();
 
         if (clc.indexOfChild(child) != -1 && (child instanceof Reorderable)) {
-            final LayoutParams lp = (LayoutParams) child.getLayoutParams();
+            final CellLayoutLayoutParams lp = (CellLayoutLayoutParams) child.getLayoutParams();
             final ItemInfo info = (ItemInfo) child.getTag();
             final Reorderable item = (Reorderable) child;
 
@@ -1069,7 +1080,7 @@
 
             if (adjustOccupied) {
                 GridOccupancy occupied = permanent ? mOccupied : mTmpOccupied;
-                occupied.markCells(lp.cellX, lp.cellY, lp.cellHSpan, lp.cellVSpan, false);
+                occupied.markCells(lp.getCellX(), lp.getCellY(), lp.cellHSpan, lp.cellVSpan, false);
                 occupied.markCells(cellX, cellY, lp.cellHSpan, lp.cellVSpan, true);
             }
 
@@ -1080,11 +1091,11 @@
             final int oldY = lp.y;
             lp.isLockedToGrid = true;
             if (permanent) {
-                lp.cellX = info.cellX = cellX;
-                lp.cellY = info.cellY = cellY;
+                lp.setCellX(cellX);
+                lp.setCellY(cellY);
             } else {
-                lp.tmpCellX = cellX;
-                lp.tmpCellY = cellY;
+                lp.setTmpCellX(cellX);
+                lp.setTmpCellY(cellY);
             }
             clc.setupLp(child);
             final int newX = lp.x;
@@ -1094,13 +1105,12 @@
             lp.isLockedToGrid = false;
             // End compute new x and y
 
-            item.getReorderPreviewOffset(mTmpPointF);
-            final float initPreviewOffsetX = mTmpPointF.x;
-            final float initPreviewOffsetY = mTmpPointF.y;
+            MultiTranslateDelegate mtd = item.getTranslateDelegate();
+            float initPreviewOffsetX = mtd.getTranslationX(INDEX_REORDER_PREVIEW_OFFSET).getValue();
+            float initPreviewOffsetY = mtd.getTranslationY(INDEX_REORDER_PREVIEW_OFFSET).getValue();
             final float finalPreviewOffsetX = newX - oldX;
             final float finalPreviewOffsetY = newY - oldY;
 
-
             // Exit early if we're not actually moving the view
             if (finalPreviewOffsetX == 0 && finalPreviewOffsetY == 0
                     && initPreviewOffsetX == 0 && initPreviewOffsetY == 0) {
@@ -1118,7 +1128,7 @@
                     float r = (Float) animation.getAnimatedValue();
                     float x = (1 - r) * initPreviewOffsetX + r * finalPreviewOffsetX;
                     float y = (1 - r) * initPreviewOffsetY + r * finalPreviewOffsetY;
-                    item.setReorderPreviewOffset(x, y);
+                    item.getTranslateDelegate().setTranslation(INDEX_REORDER_PREVIEW_OFFSET, x, y);
                 }
             });
             va.addListener(new AnimatorListenerAdapter() {
@@ -1129,7 +1139,8 @@
                     // place just yet.
                     if (!cancelled) {
                         lp.isLockedToGrid = true;
-                        item.setReorderPreviewOffset(0, 0);
+                        item.getTranslateDelegate()
+                                .setTranslation(INDEX_REORDER_PREVIEW_OFFSET, 0, 0);
                         child.requestLayout();
                     }
                     if (mReorderAnimators.containsKey(lp)) {
@@ -1163,9 +1174,9 @@
             mDragOutlineAnims[oldIndex].animateOut();
             mDragOutlineCurrent = (oldIndex + 1) % mDragOutlines.length;
 
-            LayoutParams cell = mDragOutlines[mDragOutlineCurrent];
-            cell.cellX = cellX;
-            cell.cellY = cellY;
+            CellLayoutLayoutParams cell = mDragOutlines[mDragOutlineCurrent];
+            cell.setCellX(cellX);
+            cell.setCellY(cellY);
             cell.cellHSpan = spanX;
             cell.cellVSpan = spanY;
 
@@ -1202,13 +1213,14 @@
             int row = cellY + 1;
             int col = workspace.mIsRtl ? mCountX - cellX : cellX + 1;
             int panelCount = workspace.getPanelCount();
+            int screenId = workspace.getIdForScreen(this);
+            int pageIndex = workspace.getPageIndexForScreenId(screenId);
             if (panelCount > 1) {
                 // Increment the column if the target is on the right side of a two panel home
-                int screenId = workspace.getIdForScreen(this);
-                int pageIndex = workspace.getPageIndexForScreenId(screenId);
                 col += (pageIndex % panelCount) * mCountX;
             }
-            return getContext().getString(R.string.move_to_empty_cell, row, col);
+            return getContext().getString(R.string.move_to_empty_cell_description, row, col,
+                    workspace.getPageDescription(pageIndex));
         }
     }
 
@@ -1237,33 +1249,19 @@
      * @return The X, Y cell of a vacant area that can contain this object,
      *         nearest the requested location.
      */
-    int[] findNearestVacantArea(int pixelX, int pixelY, int minSpanX, int minSpanY, int spanX,
-            int spanY, int[] result, int[] resultSpan) {
-        return findNearestArea(pixelX, pixelY, minSpanX, minSpanY, spanX, spanY, true,
+    public int[] findNearestVacantArea(int pixelX, int pixelY, int minSpanX, int minSpanY,
+            int spanX, int spanY, int[] result, int[] resultSpan) {
+        return findNearestArea(pixelX, pixelY, minSpanX, minSpanY, spanX, spanY, false,
                 result, resultSpan);
     }
 
-    private final Stack<Rect> mTempRectStack = new Stack<>();
-    private void lazyInitTempRectStack() {
-        if (mTempRectStack.isEmpty()) {
-            for (int i = 0; i < mCountX * mCountY; i++) {
-                mTempRectStack.push(new Rect());
-            }
-        }
-    }
-
-    private void recycleTempRects(Stack<Rect> used) {
-        while (!used.isEmpty()) {
-            mTempRectStack.push(used.pop());
-        }
-    }
-
     /**
      * Find a vacant area that will fit the given bounds nearest the requested
      * cell location. Uses Euclidean distance to score multiple vacant areas.
-     *
-     * @param pixelX The X location at which you want to search for a vacant area.
-     * @param pixelY The Y location at which you want to search for a vacant area.
+     * @param relativeXPos The X location relative to the Cell layout at which you want to search
+     *                     for a vacant area.
+     * @param relativeYPos The Y location relative to the Cell layout at which you want to search
+     *                     for a vacant area.
      * @param minSpanX The minimum horizontal span required
      * @param minSpanY The minimum vertical span required
      * @param spanX Horizontal span of the object.
@@ -1274,15 +1272,13 @@
      * @return The X, Y cell of a vacant area that can contain this object,
      *         nearest the requested location.
      */
-    private int[] findNearestArea(int pixelX, int pixelY, int minSpanX, int minSpanY, int spanX,
-            int spanY, boolean ignoreOccupied, int[] result, int[] resultSpan) {
-        lazyInitTempRectStack();
-
-        // For items with a spanX / spanY > 1, the passed in point (pixelX, pixelY) corresponds
-        // to the center of the item, but we are searching based on the top-left cell, so
-        // we translate the point over to correspond to the top-left.
-        pixelX -= mCellWidth * (spanX - 1) / 2f;
-        pixelY -= mCellHeight * (spanY - 1) / 2f;
+    protected int[] findNearestArea(int relativeXPos, int relativeYPos, int minSpanX, int minSpanY,
+            int spanX, int spanY, boolean ignoreOccupied, int[] result, int[] resultSpan) {
+        // For items with a spanX / spanY > 1, the passed in point (relativeXPos, relativeYPos)
+        // corresponds to the center of the item, but we are searching based on the top-left cell,
+        // so we translate the point over to correspond to the top-left.
+        relativeXPos = (int) (relativeXPos - (mCellWidth + mBorderSpace.x) * (spanX - 1) / 2f);
+        relativeYPos = (int) (relativeYPos - (mCellHeight + mBorderSpace.y) * (spanY - 1) / 2f);
 
         // Keep track of best-scoring drop area
         final int[] bestXY = result != null ? result : new int[2];
@@ -1303,7 +1299,7 @@
             for (int x = 0; x < countX - (minSpanX - 1); x++) {
                 int ySize = -1;
                 int xSize = -1;
-                if (ignoreOccupied) {
+                if (!ignoreOccupied) {
                     // First, let's see if this thing fits anywhere
                     for (int i = 0; i < minSpanX; i++) {
                         for (int j = 0; j < minSpanY; j++) {
@@ -1347,9 +1343,6 @@
                         hitMaxY |= ySize >= spanY;
                         incX = !incX;
                     }
-                    incX = true;
-                    hitMaxX = xSize >= spanX;
-                    hitMaxY = ySize >= spanY;
                 }
                 final int[] cellXY = mTmpPoint;
                 cellToCenterPoint(x, y, cellXY);
@@ -1357,8 +1350,7 @@
                 // We verify that the current rect is not a sub-rect of any of our previous
                 // candidates. In this case, the current rect is disqualified in favour of the
                 // containing rect.
-                Rect currentRect = mTempRectStack.pop();
-                currentRect.set(x, y, x + xSize, y + ySize);
+                Rect currentRect = new Rect(x, y, x + xSize, y + ySize);
                 boolean contained = false;
                 for (Rect r : validRegions) {
                     if (r.contains(currentRect)) {
@@ -1367,7 +1359,7 @@
                     }
                 }
                 validRegions.push(currentRect);
-                double distance = Math.hypot(cellXY[0] - pixelX,  cellXY[1] - pixelY);
+                double distance = Math.hypot(cellXY[0] - relativeXPos,  cellXY[1] - relativeYPos);
 
                 if ((distance <= bestDistance && !contained) ||
                         currentRect.contains(bestRect)) {
@@ -1388,10 +1380,372 @@
             bestXY[0] = -1;
             bestXY[1] = -1;
         }
-        recycleTempRects(validRegions);
         return bestXY;
     }
 
+    public GridOccupancy getOccupied() {
+        return mOccupied;
+    }
+
+    private void copySolutionToTempState(ItemConfiguration solution, View dragView) {
+        mTmpOccupied.clear();
+
+        int childCount = mShortcutsAndWidgets.getChildCount();
+        for (int i = 0; i < childCount; i++) {
+            View child = mShortcutsAndWidgets.getChildAt(i);
+            if (child == dragView) continue;
+            CellLayoutLayoutParams lp = (CellLayoutLayoutParams) child.getLayoutParams();
+            CellAndSpan c = solution.map.get(child);
+            if (c != null) {
+                lp.setTmpCellX(c.cellX);
+                lp.setTmpCellY(c.cellY);
+                lp.cellHSpan = c.spanX;
+                lp.cellVSpan = c.spanY;
+                mTmpOccupied.markCells(c, true);
+            }
+        }
+        mTmpOccupied.markCells(solution, true);
+    }
+
+    private void animateItemsToSolution(ItemConfiguration solution, View dragView, boolean
+            commitDragView) {
+
+        GridOccupancy occupied = DESTRUCTIVE_REORDER ? mOccupied : mTmpOccupied;
+        occupied.clear();
+
+        int childCount = mShortcutsAndWidgets.getChildCount();
+        for (int i = 0; i < childCount; i++) {
+            View child = mShortcutsAndWidgets.getChildAt(i);
+            if (child == dragView) continue;
+            CellAndSpan c = solution.map.get(child);
+            if (c != null) {
+                animateChildToPosition(child, c.cellX, c.cellY, REORDER_ANIMATION_DURATION, 0,
+                        DESTRUCTIVE_REORDER, false);
+                occupied.markCells(c, true);
+            }
+        }
+        if (commitDragView) {
+            occupied.markCells(solution, true);
+        }
+    }
+
+
+    // This method starts or changes the reorder preview animations
+    private void beginOrAdjustReorderPreviewAnimations(ItemConfiguration solution,
+            View dragView, int mode) {
+        int childCount = mShortcutsAndWidgets.getChildCount();
+        for (int i = 0; i < childCount; i++) {
+            View child = mShortcutsAndWidgets.getChildAt(i);
+            if (child == dragView) continue;
+            CellAndSpan c = solution.map.get(child);
+            boolean skip = mode == ReorderPreviewAnimation.MODE_HINT && solution.intersectingViews
+                    != null && !solution.intersectingViews.contains(child);
+
+
+            CellLayoutLayoutParams lp = (CellLayoutLayoutParams) child.getLayoutParams();
+            if (c != null && !skip && (child instanceof Reorderable)) {
+                ReorderPreviewAnimation rha = new ReorderPreviewAnimation(child,
+                        mode, lp.getCellX(), lp.getCellY(), c.cellX, c.cellY, c.spanX, c.spanY);
+                rha.animate();
+            }
+        }
+    }
+
+    private static final Property<ReorderPreviewAnimation, Float> ANIMATION_PROGRESS =
+            new Property<ReorderPreviewAnimation, Float>(float.class, "animationProgress") {
+                @Override
+                public Float get(ReorderPreviewAnimation anim) {
+                    return anim.animationProgress;
+                }
+
+                @Override
+                public void set(ReorderPreviewAnimation anim, Float progress) {
+                    anim.setAnimationProgress(progress);
+                }
+            };
+
+    // Class which represents the reorder preview animations. These animations show that an item is
+    // in a temporary state, and hint at where the item will return to.
+    class ReorderPreviewAnimation<T extends View & Reorderable> {
+        final T child;
+        float finalDeltaX;
+        float finalDeltaY;
+        float initDeltaX;
+        float initDeltaY;
+        final float finalScale;
+        float initScale;
+        final int mode;
+        boolean repeating = false;
+        private static final int PREVIEW_DURATION = 300;
+        private static final int HINT_DURATION = Workspace.REORDER_TIMEOUT;
+
+        private static final float CHILD_DIVIDEND = 4.0f;
+
+        public static final int MODE_HINT = 0;
+        public static final int MODE_PREVIEW = 1;
+
+        float animationProgress = 0;
+        ValueAnimator a;
+
+        ReorderPreviewAnimation(View childView, int mode, int cellX0, int cellY0,
+                int cellX1, int cellY1, int spanX, int spanY) {
+            regionToCenterPoint(cellX0, cellY0, spanX, spanY, mTmpPoint);
+            final int x0 = mTmpPoint[0];
+            final int y0 = mTmpPoint[1];
+            regionToCenterPoint(cellX1, cellY1, spanX, spanY, mTmpPoint);
+            final int x1 = mTmpPoint[0];
+            final int y1 = mTmpPoint[1];
+            final int dX = x1 - x0;
+            final int dY = y1 - y0;
+
+            this.child = (T) childView;
+            this.mode = mode;
+            finalDeltaX = 0;
+            finalDeltaY = 0;
+
+            MultiTranslateDelegate mtd = child.getTranslateDelegate();
+            initDeltaX = mtd.getTranslationX(INDEX_REORDER_BOUNCE_OFFSET).getValue();
+            initDeltaY = mtd.getTranslationY(INDEX_REORDER_BOUNCE_OFFSET).getValue();
+            initScale = child.getReorderBounceScale();
+            finalScale = mChildScale - (CHILD_DIVIDEND / child.getWidth()) * initScale;
+
+            int dir = mode == MODE_HINT ? -1 : 1;
+            if (dX == dY && dX == 0) {
+            } else {
+                if (dY == 0) {
+                    finalDeltaX = -dir * Math.signum(dX) * mReorderPreviewAnimationMagnitude;
+                } else if (dX == 0) {
+                    finalDeltaY = -dir * Math.signum(dY) * mReorderPreviewAnimationMagnitude;
+                } else {
+                    double angle = Math.atan( (float) (dY) / dX);
+                    finalDeltaX = (int) (-dir * Math.signum(dX)
+                            * Math.abs(Math.cos(angle) * mReorderPreviewAnimationMagnitude));
+                    finalDeltaY = (int) (-dir * Math.signum(dY)
+                            * Math.abs(Math.sin(angle) * mReorderPreviewAnimationMagnitude));
+                }
+            }
+        }
+
+        void setInitialAnimationValuesToBaseline() {
+            initScale = mChildScale;
+            initDeltaX = 0;
+            initDeltaY = 0;
+        }
+
+        void animate() {
+            boolean noMovement = (finalDeltaX == 0) && (finalDeltaY == 0);
+
+            if (mShakeAnimators.containsKey(child)) {
+                ReorderPreviewAnimation oldAnimation = mShakeAnimators.get(child);
+                mShakeAnimators.remove(child);
+
+                if (noMovement) {
+                    // A previous animation for this item exists, and no new animation will exist.
+                    // Finish the old animation smoothly.
+                    oldAnimation.finishAnimation();
+                    return;
+                } else {
+                    // A previous animation for this item exists, and a new one will exist. Stop
+                    // the old animation in its tracks, and proceed with the new one.
+                    oldAnimation.cancel();
+                }
+            }
+            if (noMovement) {
+                return;
+            }
+
+            ValueAnimator va = ObjectAnimator.ofFloat(this, ANIMATION_PROGRESS, 0, 1);
+            a = va;
+
+            // Animations are disabled in power save mode, causing the repeated animation to jump
+            // spastically between beginning and end states. Since this looks bad, we don't repeat
+            // the animation in power save mode.
+            if (areAnimatorsEnabled()) {
+                va.setRepeatMode(ValueAnimator.REVERSE);
+                va.setRepeatCount(ValueAnimator.INFINITE);
+            }
+
+            va.setDuration(mode == MODE_HINT ? HINT_DURATION : PREVIEW_DURATION);
+            va.setStartDelay((int) (Math.random() * 60));
+            va.addListener(new AnimatorListenerAdapter() {
+                public void onAnimationRepeat(Animator animation) {
+                    // We make sure to end only after a full period
+                    setInitialAnimationValuesToBaseline();
+                    repeating = true;
+                }
+            });
+            mShakeAnimators.put(child, this);
+            va.start();
+        }
+
+        private void setAnimationProgress(float progress) {
+            animationProgress = progress;
+            float r1 = (mode == MODE_HINT && repeating) ? 1.0f : animationProgress;
+            float x = r1 * finalDeltaX + (1 - r1) * initDeltaX;
+            float y = r1 * finalDeltaY + (1 - r1) * initDeltaY;
+            child.getTranslateDelegate().setTranslation(INDEX_REORDER_BOUNCE_OFFSET, x, y);
+            float s = animationProgress * finalScale + (1 - animationProgress) * initScale;
+            child.setReorderBounceScale(s);
+        }
+
+        private void cancel() {
+            if (a != null) {
+                a.cancel();
+            }
+        }
+
+        /**
+         * Smoothly returns the item to its baseline position / scale
+         */
+        @Thunk void finishAnimation() {
+            if (a != null) {
+                a.cancel();
+            }
+
+            setInitialAnimationValuesToBaseline();
+            ValueAnimator va = ObjectAnimator.ofFloat(this, ANIMATION_PROGRESS,
+                    animationProgress, 0);
+            a = va;
+            a.setInterpolator(DEACCEL_1_5);
+            a.setDuration(REORDER_ANIMATION_DURATION);
+            a.start();
+        }
+    }
+
+    private void completeAndClearReorderPreviewAnimations() {
+        for (ReorderPreviewAnimation a: mShakeAnimators.values()) {
+            a.finishAnimation();
+        }
+        mShakeAnimators.clear();
+    }
+
+    private void commitTempPlacement(View dragView) {
+        mTmpOccupied.copyTo(mOccupied);
+
+        int screenId = getWorkspace().getIdForScreen(this);
+        int container = Favorites.CONTAINER_DESKTOP;
+
+        if (mContainerType == HOTSEAT) {
+            screenId = -1;
+            container = Favorites.CONTAINER_HOTSEAT;
+        }
+
+        int childCount = mShortcutsAndWidgets.getChildCount();
+        for (int i = 0; i < childCount; i++) {
+            View child = mShortcutsAndWidgets.getChildAt(i);
+            CellLayoutLayoutParams lp = (CellLayoutLayoutParams) child.getLayoutParams();
+            ItemInfo info = (ItemInfo) child.getTag();
+            // We do a null check here because the item info can be null in the case of the
+            // AllApps button in the hotseat.
+            if (info != null && child != dragView) {
+                CellPos presenterPos = mActivity.getCellPosMapper().mapModelToPresenter(info);
+                final boolean requiresDbUpdate = (presenterPos.cellX != lp.getTmpCellX()
+                        || presenterPos.cellY != lp.getTmpCellY() || info.spanX != lp.cellHSpan
+                        || info.spanY != lp.cellVSpan || presenterPos.screenId != screenId);
+
+                lp.setCellX(lp.getTmpCellX());
+                lp.setCellY(lp.getTmpCellY());
+                if (requiresDbUpdate) {
+                    Launcher.cast(mActivity).getModelWriter().modifyItemInDatabase(info, container,
+                            screenId, lp.getCellX(), lp.getCellY(), lp.cellHSpan, lp.cellVSpan);
+                }
+            }
+        }
+    }
+
+    private void setUseTempCoords(boolean useTempCoords) {
+        int childCount = mShortcutsAndWidgets.getChildCount();
+        for (int i = 0; i < childCount; i++) {
+            CellLayoutLayoutParams lp = (CellLayoutLayoutParams) mShortcutsAndWidgets.getChildAt(
+                    i).getLayoutParams();
+            lp.useTmpCoords = useTempCoords;
+        }
+    }
+
+    // For a given cell and span, fetch the set of views intersecting the region.
+    public void getViewsIntersectingRegion(int cellX, int cellY, int spanX, int spanY,
+            View dragView, Rect boundingRect, ArrayList<View> intersectingViews) {
+        if (boundingRect != null) {
+            boundingRect.set(cellX, cellY, cellX + spanX, cellY + spanY);
+        }
+        intersectingViews.clear();
+        Rect r0 = new Rect(cellX, cellY, cellX + spanX, cellY + spanY);
+        Rect r1 = new Rect();
+        final int count = mShortcutsAndWidgets.getChildCount();
+        for (int i = 0; i < count; i++) {
+            View child = mShortcutsAndWidgets.getChildAt(i);
+            if (child == dragView) continue;
+            CellLayoutLayoutParams
+                    lp = (CellLayoutLayoutParams) child.getLayoutParams();
+            r1.set(lp.getCellX(), lp.getCellY(), lp.getCellX() + lp.cellHSpan,
+                    lp.getCellY() + lp.cellVSpan);
+            if (Rect.intersects(r0, r1)) {
+                mIntersectingViews.add(child);
+                if (boundingRect != null) {
+                    boundingRect.union(r1);
+                }
+            }
+        }
+    }
+
+    public boolean isNearestDropLocationOccupied(int pixelX, int pixelY, int spanX, int spanY,
+            View dragView, int[] result) {
+        result = findNearestAreaIgnoreOccupied(pixelX, pixelY, spanX, spanY, result);
+        getViewsIntersectingRegion(result[0], result[1], spanX, spanY, dragView, null,
+                mIntersectingViews);
+        return !mIntersectingViews.isEmpty();
+    }
+
+    void revertTempState() {
+        completeAndClearReorderPreviewAnimations();
+        if (isItemPlacementDirty() && !DESTRUCTIVE_REORDER) {
+            final int count = mShortcutsAndWidgets.getChildCount();
+            for (int i = 0; i < count; i++) {
+                View child = mShortcutsAndWidgets.getChildAt(i);
+                CellLayoutLayoutParams
+                        lp = (CellLayoutLayoutParams) child.getLayoutParams();
+                if (lp.getTmpCellX() != lp.getCellX() || lp.getTmpCellY() != lp.getCellY()) {
+                    lp.setTmpCellX(lp.getCellX());
+                    lp.setTmpCellY(lp.getCellY());
+                    animateChildToPosition(child, lp.getCellX(), lp.getCellY(),
+                            REORDER_ANIMATION_DURATION, 0, false, false);
+                }
+            }
+            setItemPlacementDirty(false);
+        }
+    }
+
+    boolean createAreaForResize(int cellX, int cellY, int spanX, int spanY,
+            View dragView, int[] direction, boolean commit) {
+        int[] pixelXY = new int[2];
+        regionToCenterPoint(cellX, cellY, spanX, spanY, pixelXY);
+
+        // First we determine if things have moved enough to cause a different layout
+        ItemConfiguration swapSolution = findReorderSolution(pixelXY[0], pixelXY[1], spanX, spanY,
+                spanX,  spanY, direction, dragView,  true,  new ItemConfiguration());
+
+        setUseTempCoords(true);
+        if (swapSolution != null && swapSolution.isSolution) {
+            // If we're just testing for a possible location (MODE_ACCEPT_DROP), we don't bother
+            // committing anything or animating anything as we just want to determine if a solution
+            // exists
+            copySolutionToTempState(swapSolution, dragView);
+            setItemPlacementDirty(true);
+            animateItemsToSolution(swapSolution, dragView, commit);
+
+            if (commit) {
+                commitTempPlacement(null);
+                completeAndClearReorderPreviewAnimations();
+                setItemPlacementDirty(false);
+            } else {
+                beginOrAdjustReorderPreviewAnimations(swapSolution, dragView,
+                        ReorderPreviewAnimation.MODE_PREVIEW);
+            }
+            mShortcutsAndWidgets.requestLayout();
+        }
+        return swapSolution.isSolution;
+    }
+
     /**
      * Find a vacant area that will fit the given bounds nearest the requested
      * cell location, and will also weigh in a suggested direction vector of the
@@ -1478,6 +1832,101 @@
         return success;
     }
 
+    private boolean pushViewsToTempLocation(ArrayList<View> views, Rect rectOccupiedByPotentialDrop,
+            int[] direction, View dragView, ItemConfiguration currentState) {
+
+        ViewCluster cluster = new ViewCluster(views, currentState);
+        Rect clusterRect = cluster.getBoundingRect();
+        int whichEdge;
+        int pushDistance;
+        boolean fail = false;
+
+        // Determine the edge of the cluster that will be leading the push and how far
+        // the cluster must be shifted.
+        if (direction[0] < 0) {
+            whichEdge = ViewCluster.LEFT;
+            pushDistance = clusterRect.right - rectOccupiedByPotentialDrop.left;
+        } else if (direction[0] > 0) {
+            whichEdge = ViewCluster.RIGHT;
+            pushDistance = rectOccupiedByPotentialDrop.right - clusterRect.left;
+        } else if (direction[1] < 0) {
+            whichEdge = ViewCluster.TOP;
+            pushDistance = clusterRect.bottom - rectOccupiedByPotentialDrop.top;
+        } else {
+            whichEdge = ViewCluster.BOTTOM;
+            pushDistance = rectOccupiedByPotentialDrop.bottom - clusterRect.top;
+        }
+
+        // Break early for invalid push distance.
+        if (pushDistance <= 0) {
+            return false;
+        }
+
+        // Mark the occupied state as false for the group of views we want to move.
+        for (View v: views) {
+            CellAndSpan c = currentState.map.get(v);
+            mTmpOccupied.markCells(c, false);
+        }
+
+        // We save the current configuration -- if we fail to find a solution we will revert
+        // to the initial state. The process of finding a solution modifies the configuration
+        // in place, hence the need for revert in the failure case.
+        currentState.save();
+
+        // The pushing algorithm is simplified by considering the views in the order in which
+        // they would be pushed by the cluster. For example, if the cluster is leading with its
+        // left edge, we consider sort the views by their right edge, from right to left.
+        cluster.sortConfigurationForEdgePush(whichEdge);
+
+        while (pushDistance > 0 && !fail) {
+            for (View v: currentState.sortedViews) {
+                // For each view that isn't in the cluster, we see if the leading edge of the
+                // cluster is contacting the edge of that view. If so, we add that view to the
+                // cluster.
+                if (!cluster.views.contains(v) && v != dragView) {
+                    if (cluster.isViewTouchingEdge(v, whichEdge)) {
+                        CellLayoutLayoutParams lp = (CellLayoutLayoutParams) v.getLayoutParams();
+                        if (!lp.canReorder) {
+                            // The push solution includes the all apps button, this is not viable.
+                            fail = true;
+                            break;
+                        }
+                        cluster.addView(v);
+                        CellAndSpan c = currentState.map.get(v);
+
+                        // Adding view to cluster, mark it as not occupied.
+                        mTmpOccupied.markCells(c, false);
+                    }
+                }
+            }
+            pushDistance--;
+
+            // The cluster has been completed, now we move the whole thing over in the appropriate
+            // direction.
+            cluster.shift(whichEdge, 1);
+        }
+
+        boolean foundSolution = false;
+        clusterRect = cluster.getBoundingRect();
+
+        // Due to the nature of the algorithm, the only check required to verify a valid solution
+        // is to ensure that completed shifted cluster lies completely within the cell layout.
+        if (!fail && clusterRect.left >= 0 && clusterRect.right <= mCountX && clusterRect.top >= 0 &&
+                clusterRect.bottom <= mCountY) {
+            foundSolution = true;
+        } else {
+            currentState.restore();
+        }
+
+        // In either case, we set the occupied array as marked for the location of the views
+        for (View v: cluster.views) {
+            CellAndSpan c = currentState.map.get(v);
+            mTmpOccupied.markCells(c, true);
+        }
+
+        return foundSolution;
+    }
+
     /**
      * This helper class defines a cluster of views. It helps with defining complex edges
      * of the cluster and determining how those edges interact with other views. The edges
@@ -1663,152 +2112,6 @@
         }
     }
 
-    private boolean pushViewsToTempLocation(ArrayList<View> views, Rect rectOccupiedByPotentialDrop,
-            int[] direction, View dragView, ItemConfiguration currentState) {
-
-        ViewCluster cluster = new ViewCluster(views, currentState);
-        Rect clusterRect = cluster.getBoundingRect();
-        int whichEdge;
-        int pushDistance;
-        boolean fail = false;
-
-        // Determine the edge of the cluster that will be leading the push and how far
-        // the cluster must be shifted.
-        if (direction[0] < 0) {
-            whichEdge = ViewCluster.LEFT;
-            pushDistance = clusterRect.right - rectOccupiedByPotentialDrop.left;
-        } else if (direction[0] > 0) {
-            whichEdge = ViewCluster.RIGHT;
-            pushDistance = rectOccupiedByPotentialDrop.right - clusterRect.left;
-        } else if (direction[1] < 0) {
-            whichEdge = ViewCluster.TOP;
-            pushDistance = clusterRect.bottom - rectOccupiedByPotentialDrop.top;
-        } else {
-            whichEdge = ViewCluster.BOTTOM;
-            pushDistance = rectOccupiedByPotentialDrop.bottom - clusterRect.top;
-        }
-
-        // Break early for invalid push distance.
-        if (pushDistance <= 0) {
-            return false;
-        }
-
-        // Mark the occupied state as false for the group of views we want to move.
-        for (View v: views) {
-            CellAndSpan c = currentState.map.get(v);
-            mTmpOccupied.markCells(c, false);
-        }
-
-        // We save the current configuration -- if we fail to find a solution we will revert
-        // to the initial state. The process of finding a solution modifies the configuration
-        // in place, hence the need for revert in the failure case.
-        currentState.save();
-
-        // The pushing algorithm is simplified by considering the views in the order in which
-        // they would be pushed by the cluster. For example, if the cluster is leading with its
-        // left edge, we consider sort the views by their right edge, from right to left.
-        cluster.sortConfigurationForEdgePush(whichEdge);
-
-        while (pushDistance > 0 && !fail) {
-            for (View v: currentState.sortedViews) {
-                // For each view that isn't in the cluster, we see if the leading edge of the
-                // cluster is contacting the edge of that view. If so, we add that view to the
-                // cluster.
-                if (!cluster.views.contains(v) && v != dragView) {
-                    if (cluster.isViewTouchingEdge(v, whichEdge)) {
-                        LayoutParams lp = (LayoutParams) v.getLayoutParams();
-                        if (!lp.canReorder) {
-                            // The push solution includes the all apps button, this is not viable.
-                            fail = true;
-                            break;
-                        }
-                        cluster.addView(v);
-                        CellAndSpan c = currentState.map.get(v);
-
-                        // Adding view to cluster, mark it as not occupied.
-                        mTmpOccupied.markCells(c, false);
-                    }
-                }
-            }
-            pushDistance--;
-
-            // The cluster has been completed, now we move the whole thing over in the appropriate
-            // direction.
-            cluster.shift(whichEdge, 1);
-        }
-
-        boolean foundSolution = false;
-        clusterRect = cluster.getBoundingRect();
-
-        // Due to the nature of the algorithm, the only check required to verify a valid solution
-        // is to ensure that completed shifted cluster lies completely within the cell layout.
-        if (!fail && clusterRect.left >= 0 && clusterRect.right <= mCountX && clusterRect.top >= 0 &&
-                clusterRect.bottom <= mCountY) {
-            foundSolution = true;
-        } else {
-            currentState.restore();
-        }
-
-        // In either case, we set the occupied array as marked for the location of the views
-        for (View v: cluster.views) {
-            CellAndSpan c = currentState.map.get(v);
-            mTmpOccupied.markCells(c, true);
-        }
-
-        return foundSolution;
-    }
-
-    private boolean addViewsToTempLocation(ArrayList<View> views, Rect rectOccupiedByPotentialDrop,
-            int[] direction, View dragView, ItemConfiguration currentState) {
-        if (views.size() == 0) return true;
-
-        boolean success = false;
-        Rect boundingRect = new Rect();
-        // We construct a rect which represents the entire group of views passed in
-        currentState.getBoundingRectForViews(views, boundingRect);
-
-        // Mark the occupied state as false for the group of views we want to move.
-        for (View v: views) {
-            CellAndSpan c = currentState.map.get(v);
-            mTmpOccupied.markCells(c, false);
-        }
-
-        GridOccupancy blockOccupied = new GridOccupancy(boundingRect.width(), boundingRect.height());
-        int top = boundingRect.top;
-        int left = boundingRect.left;
-        // We mark more precisely which parts of the bounding rect are truly occupied, allowing
-        // for interlocking.
-        for (View v: views) {
-            CellAndSpan c = currentState.map.get(v);
-            blockOccupied.markCells(c.cellX - left, c.cellY - top, c.spanX, c.spanY, true);
-        }
-
-        mTmpOccupied.markCells(rectOccupiedByPotentialDrop, true);
-
-        findNearestArea(boundingRect.left, boundingRect.top, boundingRect.width(),
-                boundingRect.height(), direction,
-                mTmpOccupied.cells, blockOccupied.cells, mTempLocation);
-
-        // If we successfuly found a location by pushing the block of views, we commit it
-        if (mTempLocation[0] >= 0 && mTempLocation[1] >= 0) {
-            int deltaX = mTempLocation[0] - boundingRect.left;
-            int deltaY = mTempLocation[1] - boundingRect.top;
-            for (View v: views) {
-                CellAndSpan c = currentState.map.get(v);
-                c.cellX += deltaX;
-                c.cellY += deltaY;
-            }
-            success = true;
-        }
-
-        // In either case, we set the occupied array as marked for the location of the views
-        for (View v: views) {
-            CellAndSpan c = currentState.map.get(v);
-            mTmpOccupied.markCells(c, true);
-        }
-        return success;
-    }
-
     // This method tries to find a reordering solution which satisfies the push mechanic by trying
     // to push items in each of the cardinal directions, in an order based on the direction vector
     // passed.
@@ -1906,7 +2209,124 @@
         return false;
     }
 
-    private boolean rearrangementExists(int cellX, int cellY, int spanX, int spanY, int[] direction,
+    /*
+     * Returns a pair (x, y), where x,y are in {-1, 0, 1} corresponding to vector between
+     * the provided point and the provided cell
+     */
+    private void computeDirectionVector(float deltaX, float deltaY, int[] result) {
+        double angle = Math.atan(deltaY / deltaX);
+
+        result[0] = 0;
+        result[1] = 0;
+        if (Math.abs(Math.cos(angle)) > 0.5f) {
+            result[0] = (int) Math.signum(deltaX);
+        }
+        if (Math.abs(Math.sin(angle)) > 0.5f) {
+            result[1] = (int) Math.signum(deltaY);
+        }
+    }
+
+    /* This seems like it should be obvious and straight-forward, but when the direction vector
+    needs to match with the notion of the dragView pushing other views, we have to employ
+    a slightly more subtle notion of the direction vector. The question is what two points is
+    the vector between? The center of the dragView and its desired destination? Not quite, as
+    this doesn't necessarily coincide with the interaction of the dragView and items occupying
+    those cells. Instead we use some heuristics to often lock the vector to up, down, left
+    or right, which helps make pushing feel right.
+    */
+    public void getDirectionVectorForDrop(int dragViewCenterX, int dragViewCenterY, int spanX,
+            int spanY, View dragView, int[] resultDirection) {
+
+        //TODO(adamcohen) b/151776141 use the items visual center for the direction vector
+        int[] targetDestination = new int[2];
+
+        findNearestAreaIgnoreOccupied(dragViewCenterX, dragViewCenterY, spanX, spanY,
+                targetDestination);
+        Rect dragRect = new Rect();
+        cellToRect(targetDestination[0], targetDestination[1], spanX, spanY, dragRect);
+        dragRect.offset(dragViewCenterX - dragRect.centerX(), dragViewCenterY - dragRect.centerY());
+
+        Rect dropRegionRect = new Rect();
+        getViewsIntersectingRegion(targetDestination[0], targetDestination[1], spanX, spanY,
+                dragView, dropRegionRect, mIntersectingViews);
+
+        int dropRegionSpanX = dropRegionRect.width();
+        int dropRegionSpanY = dropRegionRect.height();
+
+        cellToRect(dropRegionRect.left, dropRegionRect.top, dropRegionRect.width(),
+                dropRegionRect.height(), dropRegionRect);
+
+        int deltaX = (dropRegionRect.centerX() - dragViewCenterX) / spanX;
+        int deltaY = (dropRegionRect.centerY() - dragViewCenterY) / spanY;
+
+        if (dropRegionSpanX == mCountX || spanX == mCountX) {
+            deltaX = 0;
+        }
+        if (dropRegionSpanY == mCountY || spanY == mCountY) {
+            deltaY = 0;
+        }
+
+        if (deltaX == 0 && deltaY == 0) {
+            // No idea what to do, give a random direction.
+            resultDirection[0] = 1;
+            resultDirection[1] = 0;
+        } else {
+            computeDirectionVector(deltaX, deltaY, resultDirection);
+        }
+    }
+
+    private boolean addViewsToTempLocation(ArrayList<View> views, Rect rectOccupiedByPotentialDrop,
+            int[] direction, View dragView, ItemConfiguration currentState) {
+        if (views.size() == 0) return true;
+
+        boolean success = false;
+        Rect boundingRect = new Rect();
+        // We construct a rect which represents the entire group of views passed in
+        currentState.getBoundingRectForViews(views, boundingRect);
+
+        // Mark the occupied state as false for the group of views we want to move.
+        for (View v: views) {
+            CellAndSpan c = currentState.map.get(v);
+            mTmpOccupied.markCells(c, false);
+        }
+
+        GridOccupancy blockOccupied = new GridOccupancy(boundingRect.width(), boundingRect.height());
+        int top = boundingRect.top;
+        int left = boundingRect.left;
+        // We mark more precisely which parts of the bounding rect are truly occupied, allowing
+        // for interlocking.
+        for (View v: views) {
+            CellAndSpan c = currentState.map.get(v);
+            blockOccupied.markCells(c.cellX - left, c.cellY - top, c.spanX, c.spanY, true);
+        }
+
+        mTmpOccupied.markCells(rectOccupiedByPotentialDrop, true);
+
+        findNearestArea(boundingRect.left, boundingRect.top, boundingRect.width(),
+                boundingRect.height(), direction,
+                mTmpOccupied.cells, blockOccupied.cells, mTempLocation);
+
+        // If we successfully found a location by pushing the block of views, we commit it
+        if (mTempLocation[0] >= 0 && mTempLocation[1] >= 0) {
+            int deltaX = mTempLocation[0] - boundingRect.left;
+            int deltaY = mTempLocation[1] - boundingRect.top;
+            for (View v: views) {
+                CellAndSpan c = currentState.map.get(v);
+                c.cellX += deltaX;
+                c.cellY += deltaY;
+            }
+            success = true;
+        }
+
+        // In either case, we set the occupied array as marked for the location of the views
+        for (View v: views) {
+            CellAndSpan c = currentState.map.get(v);
+            mTmpOccupied.markCells(c, true);
+        }
+        return success;
+    }
+
+    public boolean rearrangementExists(int cellX, int cellY, int spanX, int spanY, int[] direction,
             View ignoreView, ItemConfiguration solution) {
         // Return early if get invalid cell positions
         if (cellX < 0 || cellY < 0) return false;
@@ -1924,10 +2344,19 @@
         }
         Rect r0 = new Rect(cellX, cellY, cellX + spanX, cellY + spanY);
         Rect r1 = new Rect();
-        for (View child: solution.map.keySet()) {
+        // The views need to be sorted so that the results are deterministic on the views positions
+        // and not by the views hash which is "random".
+        // The views are sorted twice, once for the X position and a second time for the Y position
+        // to ensure same order everytime.
+        Comparator comparator = Comparator.comparing(view ->
+                        ((CellLayoutLayoutParams) ((View) view).getLayoutParams()).getCellX())
+                .thenComparing(view ->
+                        ((CellLayoutLayoutParams) ((View) view).getLayoutParams()).getCellY());
+        List<View> views = solution.map.keySet().stream().sorted(comparator).toList();
+        for (View child : views) {
             if (child == ignoreView) continue;
             CellAndSpan c = solution.map.get(child);
-            LayoutParams lp = (LayoutParams) child.getLayoutParams();
+            CellLayoutLayoutParams lp = (CellLayoutLayoutParams) child.getLayoutParams();
             r1.set(c.cellX, c.cellY, c.cellX + c.spanX, c.cellY + c.spanY);
             if (Rect.intersects(r0, r1)) {
                 if (!lp.canReorder) {
@@ -1962,605 +2391,139 @@
         return true;
     }
 
-    /*
-     * Returns a pair (x, y), where x,y are in {-1, 0, 1} corresponding to vector between
-     * the provided point and the provided cell
-     */
-    private void computeDirectionVector(float deltaX, float deltaY, int[] result) {
-        double angle = Math.atan(deltaY / deltaX);
-
-        result[0] = 0;
-        result[1] = 0;
-        if (Math.abs(Math.cos(angle)) > 0.5f) {
-            result[0] = (int) Math.signum(deltaX);
-        }
-        if (Math.abs(Math.sin(angle)) > 0.5f) {
-            result[1] = (int) Math.signum(deltaY);
-        }
+    public ReorderAlgorithm createReorderAlgorithm() {
+        return new ReorderAlgorithm(this);
     }
 
-    private ItemConfiguration findReorderSolution(int pixelX, int pixelY, int minSpanX, int minSpanY,
-            int spanX, int spanY, int[] direction, View dragView, boolean decX,
+    protected ItemConfiguration findReorderSolution(int pixelX, int pixelY, int minSpanX,
+            int minSpanY, int spanX, int spanY, int[] direction, View dragView, boolean decX,
             ItemConfiguration solution) {
-        // Copy the current state into the solution. This solution will be manipulated as necessary.
-        copyCurrentStateToSolution(solution, false);
-        // Copy the current occupied array into the temporary occupied array. This array will be
-        // manipulated as necessary to find a solution.
-        mOccupied.copyTo(mTmpOccupied);
-
-        // We find the nearest cell into which we would place the dragged item, assuming there's
-        // nothing in its way.
-        int result[] = new int[2];
-        result = findNearestArea(pixelX, pixelY, spanX, spanY, result);
-
-        boolean success;
-        // First we try the exact nearest position of the item being dragged,
-        // we will then want to try to move this around to other neighbouring positions
-        success = rearrangementExists(result[0], result[1], spanX, spanY, direction, dragView,
-                solution);
-
-        if (!success) {
-            // We try shrinking the widget down to size in an alternating pattern, shrink 1 in
-            // x, then 1 in y etc.
-            if (spanX > minSpanX && (minSpanY == spanY || decX)) {
-                return findReorderSolution(pixelX, pixelY, minSpanX, minSpanY, spanX - 1, spanY,
-                        direction, dragView, false, solution);
-            } else if (spanY > minSpanY) {
-                return findReorderSolution(pixelX, pixelY, minSpanX, minSpanY, spanX, spanY - 1,
-                        direction, dragView, true, solution);
-            }
-            solution.isSolution = false;
-        } else {
-            solution.isSolution = true;
-            solution.cellX = result[0];
-            solution.cellY = result[1];
-            solution.spanX = spanX;
-            solution.spanY = spanY;
-        }
-        return solution;
+        return createReorderAlgorithm().findReorderSolution(pixelX, pixelY, minSpanX, minSpanY,
+                spanX, spanY, direction, dragView, decX, solution);
     }
 
-    private void copyCurrentStateToSolution(ItemConfiguration solution, boolean temp) {
+    public void copyCurrentStateToSolution(ItemConfiguration solution, boolean temp) {
         int childCount = mShortcutsAndWidgets.getChildCount();
         for (int i = 0; i < childCount; i++) {
             View child = mShortcutsAndWidgets.getChildAt(i);
-            LayoutParams lp = (LayoutParams) child.getLayoutParams();
+            CellLayoutLayoutParams lp = (CellLayoutLayoutParams) child.getLayoutParams();
             CellAndSpan c;
             if (temp) {
-                c = new CellAndSpan(lp.tmpCellX, lp.tmpCellY, lp.cellHSpan, lp.cellVSpan);
+                c = new CellAndSpan(lp.getTmpCellX(), lp.getTmpCellY(), lp.cellHSpan, lp.cellVSpan);
             } else {
-                c = new CellAndSpan(lp.cellX, lp.cellY, lp.cellHSpan, lp.cellVSpan);
+                c = new CellAndSpan(lp.getCellX(), lp.getCellY(), lp.cellHSpan, lp.cellVSpan);
             }
             solution.add(child, c);
         }
     }
 
-    private void copySolutionToTempState(ItemConfiguration solution, View dragView) {
-        mTmpOccupied.clear();
-
-        int childCount = mShortcutsAndWidgets.getChildCount();
-        for (int i = 0; i < childCount; i++) {
-            View child = mShortcutsAndWidgets.getChildAt(i);
-            if (child == dragView) continue;
-            LayoutParams lp = (LayoutParams) child.getLayoutParams();
-            CellAndSpan c = solution.map.get(child);
-            if (c != null) {
-                lp.tmpCellX = c.cellX;
-                lp.tmpCellY = c.cellY;
-                lp.cellHSpan = c.spanX;
-                lp.cellVSpan = c.spanY;
-                mTmpOccupied.markCells(c, true);
-            }
-        }
-        mTmpOccupied.markCells(solution, true);
-    }
-
-    private void animateItemsToSolution(ItemConfiguration solution, View dragView, boolean
-            commitDragView) {
-
-        GridOccupancy occupied = DESTRUCTIVE_REORDER ? mOccupied : mTmpOccupied;
-        occupied.clear();
-
-        int childCount = mShortcutsAndWidgets.getChildCount();
-        for (int i = 0; i < childCount; i++) {
-            View child = mShortcutsAndWidgets.getChildAt(i);
-            if (child == dragView) continue;
-            CellAndSpan c = solution.map.get(child);
-            if (c != null) {
-                animateChildToPosition(child, c.cellX, c.cellY, REORDER_ANIMATION_DURATION, 0,
-                        DESTRUCTIVE_REORDER, false);
-                occupied.markCells(c, true);
-            }
-        }
-        if (commitDragView) {
-            occupied.markCells(solution, true);
-        }
-    }
-
-
-    // This method starts or changes the reorder preview animations
-    private void beginOrAdjustReorderPreviewAnimations(ItemConfiguration solution,
-            View dragView, int mode) {
-        int childCount = mShortcutsAndWidgets.getChildCount();
-        for (int i = 0; i < childCount; i++) {
-            View child = mShortcutsAndWidgets.getChildAt(i);
-            if (child == dragView) continue;
-            CellAndSpan c = solution.map.get(child);
-            boolean skip = mode == ReorderPreviewAnimation.MODE_HINT && solution.intersectingViews
-                    != null && !solution.intersectingViews.contains(child);
-
-
-            LayoutParams lp = (LayoutParams) child.getLayoutParams();
-            if (c != null && !skip && (child instanceof Reorderable)) {
-                ReorderPreviewAnimation rha = new ReorderPreviewAnimation((Reorderable) child,
-                        mode, lp.cellX, lp.cellY, c.cellX, c.cellY, c.spanX, c.spanY);
-                rha.animate();
-            }
-        }
-    }
-
-    private static final Property<ReorderPreviewAnimation, Float> ANIMATION_PROGRESS =
-            new Property<ReorderPreviewAnimation, Float>(float.class, "animationProgress") {
-                @Override
-                public Float get(ReorderPreviewAnimation anim) {
-                    return anim.animationProgress;
-                }
-
-                @Override
-                public void set(ReorderPreviewAnimation anim, Float progress) {
-                    anim.setAnimationProgress(progress);
-                }
-            };
-
-    // Class which represents the reorder preview animations. These animations show that an item is
-    // in a temporary state, and hint at where the item will return to.
-    class ReorderPreviewAnimation {
-        final Reorderable child;
-        float finalDeltaX;
-        float finalDeltaY;
-        float initDeltaX;
-        float initDeltaY;
-        final float finalScale;
-        float initScale;
-        final int mode;
-        boolean repeating = false;
-        private static final int PREVIEW_DURATION = 300;
-        private static final int HINT_DURATION = Workspace.REORDER_TIMEOUT;
-
-        private static final float CHILD_DIVIDEND = 4.0f;
-
-        public static final int MODE_HINT = 0;
-        public static final int MODE_PREVIEW = 1;
-
-        float animationProgress = 0;
-        ValueAnimator a;
-
-        public ReorderPreviewAnimation(Reorderable child, int mode, int cellX0, int cellY0,
-                int cellX1, int cellY1, int spanX, int spanY) {
-            regionToCenterPoint(cellX0, cellY0, spanX, spanY, mTmpPoint);
-            final int x0 = mTmpPoint[0];
-            final int y0 = mTmpPoint[1];
-            regionToCenterPoint(cellX1, cellY1, spanX, spanY, mTmpPoint);
-            final int x1 = mTmpPoint[0];
-            final int y1 = mTmpPoint[1];
-            final int dX = x1 - x0;
-            final int dY = y1 - y0;
-
-            this.child = child;
-            this.mode = mode;
-            finalDeltaX = 0;
-            finalDeltaY = 0;
-
-            child.getReorderBounceOffset(mTmpPointF);
-            initDeltaX = mTmpPointF.x;
-            initDeltaY = mTmpPointF.y;
-            initScale = child.getReorderBounceScale();
-            finalScale = mChildScale - (CHILD_DIVIDEND / child.getView().getWidth()) * initScale;
-
-            int dir = mode == MODE_HINT ? -1 : 1;
-            if (dX == dY && dX == 0) {
-            } else {
-                if (dY == 0) {
-                    finalDeltaX = -dir * Math.signum(dX) * mReorderPreviewAnimationMagnitude;
-                } else if (dX == 0) {
-                    finalDeltaY = -dir * Math.signum(dY) * mReorderPreviewAnimationMagnitude;
-                } else {
-                    double angle = Math.atan( (float) (dY) / dX);
-                    finalDeltaX = (int) (-dir * Math.signum(dX)
-                            * Math.abs(Math.cos(angle) * mReorderPreviewAnimationMagnitude));
-                    finalDeltaY = (int) (-dir * Math.signum(dY)
-                            * Math.abs(Math.sin(angle) * mReorderPreviewAnimationMagnitude));
-                }
-            }
-        }
-
-        void setInitialAnimationValuesToBaseline() {
-            initScale = mChildScale;
-            initDeltaX = 0;
-            initDeltaY = 0;
-        }
-
-        void animate() {
-            boolean noMovement = (finalDeltaX == 0) && (finalDeltaY == 0);
-
-            if (mShakeAnimators.containsKey(child)) {
-                ReorderPreviewAnimation oldAnimation = mShakeAnimators.get(child);
-                mShakeAnimators.remove(child);
-
-                if (noMovement) {
-                    // A previous animation for this item exists, and no new animation will exist.
-                    // Finish the old animation smoothly.
-                    oldAnimation.finishAnimation();
-                    return;
-                } else {
-                    // A previous animation for this item exists, and a new one will exist. Stop
-                    // the old animation in its tracks, and proceed with the new one.
-                    oldAnimation.cancel();
-                }
-            }
-            if (noMovement) {
-                return;
-            }
-
-            ValueAnimator va = ObjectAnimator.ofFloat(this, ANIMATION_PROGRESS, 0, 1);
-            a = va;
-
-            // Animations are disabled in power save mode, causing the repeated animation to jump
-            // spastically between beginning and end states. Since this looks bad, we don't repeat
-            // the animation in power save mode.
-            if (areAnimatorsEnabled()) {
-                va.setRepeatMode(ValueAnimator.REVERSE);
-                va.setRepeatCount(ValueAnimator.INFINITE);
-            }
-
-            va.setDuration(mode == MODE_HINT ? HINT_DURATION : PREVIEW_DURATION);
-            va.setStartDelay((int) (Math.random() * 60));
-            va.addListener(new AnimatorListenerAdapter() {
-                public void onAnimationRepeat(Animator animation) {
-                    // We make sure to end only after a full period
-                    setInitialAnimationValuesToBaseline();
-                    repeating = true;
-                }
-            });
-            mShakeAnimators.put(child, this);
-            va.start();
-        }
-
-        private void setAnimationProgress(float progress) {
-            animationProgress = progress;
-            float r1 = (mode == MODE_HINT && repeating) ? 1.0f : animationProgress;
-            float x = r1 * finalDeltaX + (1 - r1) * initDeltaX;
-            float y = r1 * finalDeltaY + (1 - r1) * initDeltaY;
-            child.setReorderBounceOffset(x, y);
-            float s = animationProgress * finalScale + (1 - animationProgress) * initScale;
-            child.setReorderBounceScale(s);
-        }
-
-        private void cancel() {
-            if (a != null) {
-                a.cancel();
-            }
-        }
-
-        /**
-         * Smoothly returns the item to its baseline position / scale
-         */
-        @Thunk void finishAnimation() {
-            if (a != null) {
-                a.cancel();
-            }
-
-            setInitialAnimationValuesToBaseline();
-            ValueAnimator va = ObjectAnimator.ofFloat(this, ANIMATION_PROGRESS,
-                    animationProgress, 0);
-            a = va;
-            a.setInterpolator(DEACCEL_1_5);
-            a.setDuration(REORDER_ANIMATION_DURATION);
-            a.start();
-        }
-    }
-
-    private void completeAndClearReorderPreviewAnimations() {
-        for (ReorderPreviewAnimation a: mShakeAnimators.values()) {
-            a.finishAnimation();
-        }
-        mShakeAnimators.clear();
-    }
-
-    private void commitTempPlacement(View dragView) {
-        mTmpOccupied.copyTo(mOccupied);
-
-        int screenId = getWorkspace().getIdForScreen(this);
-        int container = Favorites.CONTAINER_DESKTOP;
-
-        if (mContainerType == HOTSEAT) {
-            screenId = -1;
-            container = Favorites.CONTAINER_HOTSEAT;
-        }
-
-        int childCount = mShortcutsAndWidgets.getChildCount();
-        for (int i = 0; i < childCount; i++) {
-            View child = mShortcutsAndWidgets.getChildAt(i);
-            LayoutParams lp = (LayoutParams) child.getLayoutParams();
-            ItemInfo info = (ItemInfo) child.getTag();
-            // We do a null check here because the item info can be null in the case of the
-            // AllApps button in the hotseat.
-            if (info != null && child != dragView) {
-                final boolean requiresDbUpdate = (info.cellX != lp.tmpCellX
-                        || info.cellY != lp.tmpCellY || info.spanX != lp.cellHSpan
-                        || info.spanY != lp.cellVSpan);
-
-                info.cellX = lp.cellX = lp.tmpCellX;
-                info.cellY = lp.cellY = lp.tmpCellY;
-                info.spanX = lp.cellHSpan;
-                info.spanY = lp.cellVSpan;
-
-                if (requiresDbUpdate) {
-                    Launcher.cast(mActivity).getModelWriter().modifyItemInDatabase(info, container,
-                            screenId, info.cellX, info.cellY, info.spanX, info.spanY);
-                }
-            }
-        }
-    }
-
-    private void setUseTempCoords(boolean useTempCoords) {
-        int childCount = mShortcutsAndWidgets.getChildCount();
-        for (int i = 0; i < childCount; i++) {
-            LayoutParams lp = (LayoutParams) mShortcutsAndWidgets.getChildAt(i).getLayoutParams();
-            lp.useTmpCoords = useTempCoords;
-        }
-    }
-
-    private ItemConfiguration findConfigurationNoShuffle(int pixelX, int pixelY, int minSpanX, int minSpanY,
-            int spanX, int spanY, View dragView, ItemConfiguration solution) {
-        int[] result = new int[2];
-        int[] resultSpan = new int[2];
-        findNearestVacantArea(pixelX, pixelY, minSpanX, minSpanY, spanX, spanY, result,
-                resultSpan);
-        if (result[0] >= 0 && result[1] >= 0) {
-            copyCurrentStateToSolution(solution, false);
-            solution.cellX = result[0];
-            solution.cellY = result[1];
-            solution.spanX = resultSpan[0];
-            solution.spanY = resultSpan[1];
-            solution.isSolution = true;
-        } else {
-            solution.isSolution = false;
-        }
-        return solution;
-    }
-
-    /* This seems like it should be obvious and straight-forward, but when the direction vector
-    needs to match with the notion of the dragView pushing other views, we have to employ
-    a slightly more subtle notion of the direction vector. The question is what two points is
-    the vector between? The center of the dragView and its desired destination? Not quite, as
-    this doesn't necessarily coincide with the interaction of the dragView and items occupying
-    those cells. Instead we use some heuristics to often lock the vector to up, down, left
-    or right, which helps make pushing feel right.
-    */
-    private void getDirectionVectorForDrop(int dragViewCenterX, int dragViewCenterY, int spanX,
-            int spanY, View dragView, int[] resultDirection) {
-
-        //TODO(adamcohen) b/151776141 use the items visual center for the direction vector
-        int[] targetDestination = new int[2];
-
-        findNearestArea(dragViewCenterX, dragViewCenterY, spanX, spanY, targetDestination);
-        Rect dragRect = new Rect();
-        cellToRect(targetDestination[0], targetDestination[1], spanX, spanY, dragRect);
-        dragRect.offset(dragViewCenterX - dragRect.centerX(), dragViewCenterY - dragRect.centerY());
-
-        Rect dropRegionRect = new Rect();
-        getViewsIntersectingRegion(targetDestination[0], targetDestination[1], spanX, spanY,
-                dragView, dropRegionRect, mIntersectingViews);
-
-        int dropRegionSpanX = dropRegionRect.width();
-        int dropRegionSpanY = dropRegionRect.height();
-
-        cellToRect(dropRegionRect.left, dropRegionRect.top, dropRegionRect.width(),
-                dropRegionRect.height(), dropRegionRect);
-
-        int deltaX = (dropRegionRect.centerX() - dragViewCenterX) / spanX;
-        int deltaY = (dropRegionRect.centerY() - dragViewCenterY) / spanY;
-
-        if (dropRegionSpanX == mCountX || spanX == mCountX) {
-            deltaX = 0;
-        }
-        if (dropRegionSpanY == mCountY || spanY == mCountY) {
-            deltaY = 0;
-        }
-
-        if (deltaX == 0 && deltaY == 0) {
-            // No idea what to do, give a random direction.
-            resultDirection[0] = 1;
-            resultDirection[1] = 0;
-        } else {
-            computeDirectionVector(deltaX, deltaY, resultDirection);
-        }
-    }
-
-    // For a given cell and span, fetch the set of views intersecting the region.
-    private void getViewsIntersectingRegion(int cellX, int cellY, int spanX, int spanY,
-            View dragView, Rect boundingRect, ArrayList<View> intersectingViews) {
-        if (boundingRect != null) {
-            boundingRect.set(cellX, cellY, cellX + spanX, cellY + spanY);
-        }
-        intersectingViews.clear();
-        Rect r0 = new Rect(cellX, cellY, cellX + spanX, cellY + spanY);
-        Rect r1 = new Rect();
-        final int count = mShortcutsAndWidgets.getChildCount();
-        for (int i = 0; i < count; i++) {
-            View child = mShortcutsAndWidgets.getChildAt(i);
-            if (child == dragView) continue;
-            LayoutParams lp = (LayoutParams) child.getLayoutParams();
-            r1.set(lp.cellX, lp.cellY, lp.cellX + lp.cellHSpan, lp.cellY + lp.cellVSpan);
-            if (Rect.intersects(r0, r1)) {
-                mIntersectingViews.add(child);
-                if (boundingRect != null) {
-                    boundingRect.union(r1);
-                }
-            }
-        }
-    }
-
-    boolean isNearestDropLocationOccupied(int pixelX, int pixelY, int spanX, int spanY,
-            View dragView, int[] result) {
-        result = findNearestArea(pixelX, pixelY, spanX, spanY, result);
-        getViewsIntersectingRegion(result[0], result[1], spanX, spanY, dragView, null,
-                mIntersectingViews);
-        return !mIntersectingViews.isEmpty();
-    }
-
-    void revertTempState() {
-        completeAndClearReorderPreviewAnimations();
-        if (isItemPlacementDirty() && !DESTRUCTIVE_REORDER) {
-            final int count = mShortcutsAndWidgets.getChildCount();
-            for (int i = 0; i < count; i++) {
-                View child = mShortcutsAndWidgets.getChildAt(i);
-                LayoutParams lp = (LayoutParams) child.getLayoutParams();
-                if (lp.tmpCellX != lp.cellX || lp.tmpCellY != lp.cellY) {
-                    lp.tmpCellX = lp.cellX;
-                    lp.tmpCellY = lp.cellY;
-                    animateChildToPosition(child, lp.cellX, lp.cellY, REORDER_ANIMATION_DURATION,
-                            0, false, false);
-                }
-            }
-            setItemPlacementDirty(false);
-        }
-    }
-
-    boolean createAreaForResize(int cellX, int cellY, int spanX, int spanY,
-            View dragView, int[] direction, boolean commit) {
-        int[] pixelXY = new int[2];
-        regionToCenterPoint(cellX, cellY, spanX, spanY, pixelXY);
-
-        // First we determine if things have moved enough to cause a different layout
-        ItemConfiguration swapSolution = findReorderSolution(pixelXY[0], pixelXY[1], spanX, spanY,
-                spanX,  spanY, direction, dragView,  true,  new ItemConfiguration());
-
-        setUseTempCoords(true);
-        if (swapSolution != null && swapSolution.isSolution) {
-            // If we're just testing for a possible location (MODE_ACCEPT_DROP), we don't bother
-            // committing anything or animating anything as we just want to determine if a solution
-            // exists
-            copySolutionToTempState(swapSolution, dragView);
-            setItemPlacementDirty(true);
-            animateItemsToSolution(swapSolution, dragView, commit);
-
-            if (commit) {
-                commitTempPlacement(null);
-                completeAndClearReorderPreviewAnimations();
-                setItemPlacementDirty(false);
-            } else {
-                beginOrAdjustReorderPreviewAnimations(swapSolution, dragView,
-                        ReorderPreviewAnimation.MODE_PREVIEW);
-            }
-            mShortcutsAndWidgets.requestLayout();
-        }
-        return swapSolution.isSolution;
+    /**
+     * When the user drags an Item in the workspace sometimes we need to move the items already in
+     * the workspace to make space for the new item, this function return a solution for that
+     * reorder.
+     *
+     * @param pixelX X coordinate in the screen of the dragView in pixels
+     * @param pixelY Y coordinate in the screen of the dragView in pixels
+     * @param minSpanX minimum horizontal span the item can be shrunk to
+     * @param minSpanY minimum vertical span the item can be shrunk to
+     * @param spanX occupied horizontal span
+     * @param spanY occupied vertical span
+     * @param dragView the view of the item being draged
+     * @return returns a solution for the given parameters, the solution contains all the icons and
+     *         the locations they should be in the given solution.
+     */
+    public ItemConfiguration calculateReorder(int pixelX, int pixelY, int minSpanX, int minSpanY,
+            int spanX, int spanY, View dragView) {
+        return createReorderAlgorithm().calculateReorder(pixelX, pixelY, minSpanX, minSpanY,
+                spanX, spanY, dragView);
     }
 
     int[] performReorder(int pixelX, int pixelY, int minSpanX, int minSpanY, int spanX, int spanY,
-            View dragView, int[] result, int resultSpan[], int mode) {
-        // First we determine if things have moved enough to cause a different layout
-        result = findNearestArea(pixelX, pixelY, spanX, spanY, result);
-
+            View dragView, int[] result, int[] resultSpan, int mode) {
         if (resultSpan == null) {
-            resultSpan = new int[2];
+            resultSpan = new int[]{-1, -1};
         }
-
-        // When we are checking drop validity or actually dropping, we don't recompute the
-        // direction vector, since we want the solution to match the preview, and it's possible
-        // that the exact position of the item has changed to result in a new reordering outcome.
-        if ((mode == MODE_ON_DROP || mode == MODE_ON_DROP_EXTERNAL || mode == MODE_ACCEPT_DROP)
-                && mPreviousReorderDirection[0] != INVALID_DIRECTION) {
-            mDirectionVector[0] = mPreviousReorderDirection[0];
-            mDirectionVector[1] = mPreviousReorderDirection[1];
-            // We reset this vector after drop
-            if (mode == MODE_ON_DROP || mode == MODE_ON_DROP_EXTERNAL) {
-                mPreviousReorderDirection[0] = INVALID_DIRECTION;
-                mPreviousReorderDirection[1] = INVALID_DIRECTION;
-            }
-        } else {
-            getDirectionVectorForDrop(pixelX, pixelY, spanX, spanY, dragView, mDirectionVector);
-            mPreviousReorderDirection[0] = mDirectionVector[0];
-            mPreviousReorderDirection[1] = mDirectionVector[1];
+        if (result == null) {
+            result = new int[]{-1, -1};
         }
 
-        // Find a solution involving pushing / displacing any items in the way
-        ItemConfiguration swapSolution = findReorderSolution(pixelX, pixelY, minSpanX, minSpanY,
-                spanX,  spanY, mDirectionVector, dragView,  true,  new ItemConfiguration());
-
-        // We attempt the approach which doesn't shuffle views at all
-        ItemConfiguration noShuffleSolution = findConfigurationNoShuffle(pixelX, pixelY, minSpanX,
-                minSpanY, spanX, spanY, dragView, new ItemConfiguration());
-
         ItemConfiguration finalSolution = null;
-
-        // If the reorder solution requires resizing (shrinking) the item being dropped, we instead
-        // favor a solution in which the item is not resized, but
-        if (swapSolution.isSolution && swapSolution.area() >= noShuffleSolution.area()) {
-            finalSolution = swapSolution;
-        } else if (noShuffleSolution.isSolution) {
-            finalSolution = noShuffleSolution;
-        }
-
-        if (mode == MODE_SHOW_REORDER_HINT) {
-            if (finalSolution != null) {
-                beginOrAdjustReorderPreviewAnimations(finalSolution, dragView,
-                        ReorderPreviewAnimation.MODE_HINT);
-                result[0] = finalSolution.cellX;
-                result[1] = finalSolution.cellY;
-                resultSpan[0] = finalSolution.spanX;
-                resultSpan[1] = finalSolution.spanY;
-            } else {
-                result[0] = result[1] = resultSpan[0] = resultSpan[1] = -1;
+        // We want the solution to match the animation of the preview and to match the drop so we
+        // only recalculate in mode MODE_SHOW_REORDER_HINT because that the first one to run in the
+        // reorder cycle.
+        if (mode == MODE_SHOW_REORDER_HINT || mPreviousSolution == null) {
+            finalSolution = calculateReorder(pixelX, pixelY, minSpanX, minSpanY, spanX, spanY,
+                    dragView);
+            mPreviousSolution = finalSolution;
+        } else {
+            finalSolution = mPreviousSolution;
+            // We reset this vector after drop
+            if (mode == MODE_ON_DROP || mode == MODE_ON_DROP_EXTERNAL) {
+                mPreviousSolution = null;
             }
-            return result;
         }
 
-        boolean foundSolution = true;
-        if (!DESTRUCTIVE_REORDER) {
-            setUseTempCoords(true);
-        }
-
-        if (finalSolution != null) {
+        if (finalSolution == null || !finalSolution.isSolution) {
+            result[0] = result[1] = resultSpan[0] = resultSpan[1] = -1;
+        } else {
             result[0] = finalSolution.cellX;
             result[1] = finalSolution.cellY;
             resultSpan[0] = finalSolution.spanX;
             resultSpan[1] = finalSolution.spanY;
+            performReorder(finalSolution, dragView, mode);
+        }
+        return result;
+    }
 
-            // If we're just testing for a possible location (MODE_ACCEPT_DROP), we don't bother
-            // committing anything or animating anything as we just want to determine if a solution
-            // exists
-            if (mode == MODE_DRAG_OVER || mode == MODE_ON_DROP || mode == MODE_ON_DROP_EXTERNAL) {
-                if (!DESTRUCTIVE_REORDER) {
-                    copySolutionToTempState(finalSolution, dragView);
-                }
-                setItemPlacementDirty(true);
-                animateItemsToSolution(finalSolution, dragView, mode == MODE_ON_DROP);
-
-                if (!DESTRUCTIVE_REORDER &&
-                        (mode == MODE_ON_DROP || mode == MODE_ON_DROP_EXTERNAL)) {
-                    // Since the temp solution didn't update dragView, don't commit it either
-                    commitTempPlacement(dragView);
-                    completeAndClearReorderPreviewAnimations();
-                    setItemPlacementDirty(false);
-                } else {
-                    beginOrAdjustReorderPreviewAnimations(finalSolution, dragView,
-                            ReorderPreviewAnimation.MODE_PREVIEW);
-                }
+    /**
+     * Animates and submits in the DB the given ItemConfiguration depending of the mode.
+     *
+     * @param solution represents widgets on the screen which the Workspace will animate to and
+     * would be submitted to the database.
+     * @param dragView view which is being dragged over the workspace that trigger the reorder
+     * @param mode depending on the mode different animations would be played and depending on the
+     *             mode the solution would be submitted or not the database.
+     *             The possible modes are {@link MODE_SHOW_REORDER_HINT}, {@link MODE_DRAG_OVER},
+     *             {@link MODE_ON_DROP}, {@link MODE_ON_DROP_EXTERNAL}, {@link  MODE_ACCEPT_DROP}
+     *             defined in {@link CellLayout}.
+     */
+    public void performReorder(ItemConfiguration solution, View dragView, int mode) {
+        if (mode == MODE_SHOW_REORDER_HINT) {
+            beginOrAdjustReorderPreviewAnimations(solution, dragView,
+                    ReorderPreviewAnimation.MODE_HINT);
+            return;
+        }
+        // If we're just testing for a possible location (MODE_ACCEPT_DROP), we don't bother
+        // committing anything or animating anything as we just want to determine if a solution
+        // exists
+        if (mode == MODE_DRAG_OVER || mode == MODE_ON_DROP || mode == MODE_ON_DROP_EXTERNAL) {
+            if (!DESTRUCTIVE_REORDER) {
+                setUseTempCoords(true);
             }
-        } else {
-            foundSolution = false;
-            result[0] = result[1] = resultSpan[0] = resultSpan[1] = -1;
+
+            if (!DESTRUCTIVE_REORDER) {
+                copySolutionToTempState(solution, dragView);
+            }
+            setItemPlacementDirty(true);
+            animateItemsToSolution(solution, dragView, mode == MODE_ON_DROP);
+
+            if (!DESTRUCTIVE_REORDER
+                    && (mode == MODE_ON_DROP || mode == MODE_ON_DROP_EXTERNAL)) {
+                // Since the temp solution didn't update dragView, don't commit it either
+                commitTempPlacement(dragView);
+                completeAndClearReorderPreviewAnimations();
+                setItemPlacementDirty(false);
+            } else {
+                beginOrAdjustReorderPreviewAnimations(solution, dragView,
+                        ReorderPreviewAnimation.MODE_PREVIEW);
+            }
         }
 
-        if ((mode == MODE_ON_DROP || !foundSolution) && !DESTRUCTIVE_REORDER) {
+        if (mode == MODE_ON_DROP && !DESTRUCTIVE_REORDER) {
             setUseTempCoords(false);
         }
 
         mShortcutsAndWidgets.requestLayout();
-        return result;
     }
 
     void setItemPlacementDirty(boolean dirty) {
@@ -2570,38 +2533,41 @@
         return mItemPlacementDirty;
     }
 
-    private static class ItemConfiguration extends CellAndSpan {
-        final ArrayMap<View, CellAndSpan> map = new ArrayMap<>();
+    /**
+     * Represents the solution to a reorder of items in the Workspace.
+     */
+    public static class ItemConfiguration extends CellAndSpan {
+        public final ArrayMap<View, CellAndSpan> map = new ArrayMap<>();
         private final ArrayMap<View, CellAndSpan> savedMap = new ArrayMap<>();
-        final ArrayList<View> sortedViews = new ArrayList<>();
-        ArrayList<View> intersectingViews;
-        boolean isSolution = false;
+        public final ArrayList<View> sortedViews = new ArrayList<>();
+        public ArrayList<View> intersectingViews;
+        public boolean isSolution = false;
 
-        void save() {
+        public void save() {
             // Copy current state into savedMap
             for (View v: map.keySet()) {
                 savedMap.get(v).copyFrom(map.get(v));
             }
         }
 
-        void restore() {
+        public void restore() {
             // Restore current state from savedMap
             for (View v: savedMap.keySet()) {
                 map.get(v).copyFrom(savedMap.get(v));
             }
         }
 
-        void add(View v, CellAndSpan cs) {
+        public void add(View v, CellAndSpan cs) {
             map.put(v, cs);
             savedMap.put(v, new CellAndSpan());
             sortedViews.add(v);
         }
 
-        int area() {
+        public int area() {
             return spanX * spanY;
         }
 
-        void getBoundingRectForViews(ArrayList<View> views, Rect outRect) {
+        public void getBoundingRectForViews(ArrayList<View> views, Rect outRect) {
             boolean first = true;
             for (View v: views) {
                 CellAndSpan c = map.get(v);
@@ -2627,8 +2593,9 @@
      * @return The X, Y cell of a vacant area that can contain this object,
      *         nearest the requested location.
      */
-    public int[] findNearestArea(int pixelX, int pixelY, int spanX, int spanY, int[] result) {
-        return findNearestArea(pixelX, pixelY, spanX, spanY, spanX, spanY, false, result, null);
+    public int[] findNearestAreaIgnoreOccupied(int pixelX, int pixelY, int spanX, int spanY,
+            int[] result) {
+        return findNearestArea(pixelX, pixelY, spanX, spanY, spanX, spanY, true, result, null);
     }
 
     boolean existsEmptyCell() {
@@ -2662,6 +2629,7 @@
      */
     void onDragEnter() {
         mDragging = true;
+        mPreviousSolution = null;
     }
 
     /**
@@ -2676,6 +2644,7 @@
         }
 
         // Invalidate the drag data
+        mPreviousSolution = null;
         mDragCell[0] = mDragCell[1] = -1;
         mDragCellSpan[0] = mDragCellSpan[1] = -1;
         mDragOutlineAnims[mDragOutlineCurrent].animateOut();
@@ -2693,7 +2662,8 @@
      */
     void onDropChild(View child) {
         if (child != null) {
-            LayoutParams lp = (LayoutParams) child.getLayoutParams();
+            CellLayoutLayoutParams
+                    lp = (CellLayoutLayoutParams) child.getLayoutParams();
             lp.dropped = true;
             child.requestLayout();
             markCellsAsOccupiedForView(child);
@@ -2731,24 +2701,28 @@
         if (view instanceof LauncherAppWidgetHostView
                 && view.getTag() instanceof LauncherAppWidgetInfo) {
             LauncherAppWidgetInfo info = (LauncherAppWidgetInfo) view.getTag();
-            mOccupied.markCells(info.cellX, info.cellY, info.spanX, info.spanY, true);
+            CellPos pos = mActivity.getCellPosMapper().mapModelToPresenter(info);
+            mOccupied.markCells(pos.cellX, pos.cellY, info.spanX, info.spanY, true);
             return;
         }
         if (view == null || view.getParent() != mShortcutsAndWidgets) return;
-        LayoutParams lp = (LayoutParams) view.getLayoutParams();
-        mOccupied.markCells(lp.cellX, lp.cellY, lp.cellHSpan, lp.cellVSpan, true);
+        CellLayoutLayoutParams
+                lp = (CellLayoutLayoutParams) view.getLayoutParams();
+        mOccupied.markCells(lp.getCellX(), lp.getCellY(), lp.cellHSpan, lp.cellVSpan, true);
     }
 
     public void markCellsAsUnoccupiedForView(View view) {
         if (view instanceof LauncherAppWidgetHostView
                 && view.getTag() instanceof LauncherAppWidgetInfo) {
             LauncherAppWidgetInfo info = (LauncherAppWidgetInfo) view.getTag();
-            mOccupied.markCells(info.cellX, info.cellY, info.spanX, info.spanY, false);
+            CellPos pos = mActivity.getCellPosMapper().mapModelToPresenter(info);
+            mOccupied.markCells(pos.cellX, pos.cellY, info.spanX, info.spanY, false);
             return;
         }
         if (view == null || view.getParent() != mShortcutsAndWidgets) return;
-        LayoutParams lp = (LayoutParams) view.getLayoutParams();
-        mOccupied.markCells(lp.cellX, lp.cellY, lp.cellHSpan, lp.cellVSpan, false);
+        CellLayoutLayoutParams
+                lp = (CellLayoutLayoutParams) view.getLayoutParams();
+        mOccupied.markCells(lp.getCellX(), lp.getCellY(), lp.cellHSpan, lp.cellVSpan, false);
     }
 
     public int getDesiredWidth() {
@@ -2771,165 +2745,17 @@
 
     @Override
     public ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs) {
-        return new CellLayout.LayoutParams(getContext(), attrs);
+        return new CellLayoutLayoutParams(getContext(), attrs);
     }
 
     @Override
     protected boolean checkLayoutParams(ViewGroup.LayoutParams p) {
-        return p instanceof CellLayout.LayoutParams;
+        return p instanceof CellLayoutLayoutParams;
     }
 
     @Override
     protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p) {
-        return new CellLayout.LayoutParams(p);
-    }
-
-    public static class LayoutParams extends ViewGroup.MarginLayoutParams {
-        /**
-         * Horizontal location of the item in the grid.
-         */
-        @ViewDebug.ExportedProperty
-        public int cellX;
-
-        /**
-         * Vertical location of the item in the grid.
-         */
-        @ViewDebug.ExportedProperty
-        public int cellY;
-
-        /**
-         * Temporary horizontal location of the item in the grid during reorder
-         */
-        public int tmpCellX;
-
-        /**
-         * Temporary vertical location of the item in the grid during reorder
-         */
-        public int tmpCellY;
-
-        /**
-         * Indicates that the temporary coordinates should be used to layout the items
-         */
-        public boolean useTmpCoords;
-
-        /**
-         * Number of cells spanned horizontally by the item.
-         */
-        @ViewDebug.ExportedProperty
-        public int cellHSpan;
-
-        /**
-         * Number of cells spanned vertically by the item.
-         */
-        @ViewDebug.ExportedProperty
-        public int cellVSpan;
-
-        /**
-         * Indicates whether the item will set its x, y, width and height parameters freely,
-         * or whether these will be computed based on cellX, cellY, cellHSpan and cellVSpan.
-         */
-        public boolean isLockedToGrid = true;
-
-        /**
-         * Indicates whether this item can be reordered. Always true except in the case of the
-         * the AllApps button and QSB place holder.
-         */
-        public boolean canReorder = true;
-
-        // X coordinate of the view in the layout.
-        @ViewDebug.ExportedProperty
-        public int x;
-        // Y coordinate of the view in the layout.
-        @ViewDebug.ExportedProperty
-        public int y;
-
-        boolean dropped;
-
-        public LayoutParams(Context c, AttributeSet attrs) {
-            super(c, attrs);
-            cellHSpan = 1;
-            cellVSpan = 1;
-        }
-
-        public LayoutParams(ViewGroup.LayoutParams source) {
-            super(source);
-            cellHSpan = 1;
-            cellVSpan = 1;
-        }
-
-        public LayoutParams(LayoutParams source) {
-            super(source);
-            this.cellX = source.cellX;
-            this.cellY = source.cellY;
-            this.cellHSpan = source.cellHSpan;
-            this.cellVSpan = source.cellVSpan;
-        }
-
-        public LayoutParams(int cellX, int cellY, int cellHSpan, int cellVSpan) {
-            super(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
-            this.cellX = cellX;
-            this.cellY = cellY;
-            this.cellHSpan = cellHSpan;
-            this.cellVSpan = cellVSpan;
-        }
-
-        public void setup(int cellWidth, int cellHeight, boolean invertHorizontally, int colCount,
-                int rowCount, Point borderSpace, @Nullable Rect inset) {
-            setup(cellWidth, cellHeight, invertHorizontally, colCount, rowCount, 1.0f, 1.0f,
-                    borderSpace, inset);
-        }
-
-        /**
-         * Use this method, as opposed to {@link #setup(int, int, boolean, int, int, Point, Rect)},
-         * if the view needs to be scaled.
-         *
-         * ie. In multi-window mode, we setup widgets so that they are measured and laid out
-         * using their full/invariant device profile sizes.
-         */
-        public void setup(int cellWidth, int cellHeight, boolean invertHorizontally, int colCount,
-                int rowCount, float cellScaleX, float cellScaleY, Point borderSpace,
-                @Nullable Rect inset) {
-            if (isLockedToGrid) {
-                final int myCellHSpan = cellHSpan;
-                final int myCellVSpan = cellVSpan;
-                int myCellX = useTmpCoords ? tmpCellX : cellX;
-                int myCellY = useTmpCoords ? tmpCellY : cellY;
-
-                if (invertHorizontally) {
-                    myCellX = colCount - myCellX - cellHSpan;
-                }
-
-                int hBorderSpacing = (myCellHSpan - 1) * borderSpace.x;
-                int vBorderSpacing = (myCellVSpan - 1) * borderSpace.y;
-
-                float myCellWidth = ((myCellHSpan * cellWidth) + hBorderSpacing) / cellScaleX;
-                float myCellHeight = ((myCellVSpan * cellHeight) + vBorderSpacing) / cellScaleY;
-
-                width = Math.round(myCellWidth) - leftMargin - rightMargin;
-                height = Math.round(myCellHeight) - topMargin - bottomMargin;
-                x = leftMargin + (myCellX * cellWidth) + (myCellX * borderSpace.x);
-                y = topMargin + (myCellY * cellHeight) + (myCellY * borderSpace.y);
-
-                if (inset != null) {
-                    x -= inset.left;
-                    y -= inset.top;
-                    width += inset.left + inset.right;
-                    height += inset.top + inset.bottom;
-                }
-            }
-        }
-
-        /**
-         * Sets the position to the provided point
-         */
-        public void setCellXY(Point point) {
-            cellX = point.x;
-            cellY = point.y;
-        }
-
-        public String toString() {
-            return "(" + this.cellX + ", " + this.cellY + ")";
-        }
+        return new CellLayoutLayoutParams(p);
     }
 
     // This class stores info for two purposes:
@@ -2943,13 +2769,13 @@
         final int screenId;
         final int container;
 
-        public CellInfo(View v, ItemInfo info) {
-            cellX = info.cellX;
-            cellY = info.cellY;
+        public CellInfo(View v, ItemInfo info, CellPos cellPos) {
+            cellX = cellPos.cellX;
+            cellY = cellPos.cellY;
             spanX = info.spanX;
             spanY = info.spanY;
             cell = v;
-            screenId = info.screenId;
+            screenId = cellPos.screenId;
             container = info.container;
         }
 
diff --git a/src/com/android/launcher3/CheckLongPressHelper.java b/src/com/android/launcher3/CheckLongPressHelper.java
index c707df0..3e4e96b 100644
--- a/src/com/android/launcher3/CheckLongPressHelper.java
+++ b/src/com/android/launcher3/CheckLongPressHelper.java
@@ -16,12 +16,16 @@
 
 package com.android.launcher3;
 
+import android.os.Handler;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewConfiguration;
 
+import com.android.launcher3.util.TouchUtil;
+
 /**
- * Utility class to handle tripper long press on a view with custom timeout and stylus event
+ * Utility class to handle tripper long press or right click on a view with custom timeout and
+ * stylus event
  */
 public class CheckLongPressHelper {
 
@@ -34,6 +38,7 @@
     private float mLongPressTimeoutFactor = DEFAULT_LONG_PRESS_TIMEOUT_FACTOR;
 
     private boolean mHasPerformedLongPress;
+    private boolean mIsInMouseRightClick;
 
     private Runnable mPendingCheckForLongPress;
 
@@ -59,6 +64,26 @@
                 // start fresh on touch down.
                 cancelLongPress();
 
+                // Mouse right click should immediately trigger a long press
+                if (TouchUtil.isMouseRightClickDownOrMove(ev)) {
+                    mIsInMouseRightClick = true;
+                    triggerLongPress();
+                    final Handler handler = mView.getHandler();
+                    if (handler != null) {
+                        // Send an ACTION_UP to end this click gesture to avoid user dragging with
+                        // mouse's right button. Note that we need to call
+                        // {@link Handler#postAtFrontOfQueue()} instead of {@link View#post()} to
+                        // make sure ACTION_UP is sent before any ACTION_MOVE if user is dragging.
+                        final MotionEvent actionUpEvent = MotionEvent.obtain(ev);
+                        actionUpEvent.setAction(MotionEvent.ACTION_UP);
+                        handler.postAtFrontOfQueue(() -> {
+                            mView.getRootView().dispatchTouchEvent(actionUpEvent);
+                            actionUpEvent.recycle();
+                        });
+                    }
+                    break;
+                }
+
                 postCheckForLongPress();
                 if (isStylusButtonPressed(ev)) {
                     triggerLongPress();
@@ -70,7 +95,8 @@
                 cancelLongPress();
                 break;
             case MotionEvent.ACTION_MOVE:
-                if (!Utilities.pointInView(mView, ev.getX(), ev.getY(), mSlop)) {
+                if (mIsInMouseRightClick
+                        || !Utilities.pointInView(mView, ev.getX(), ev.getY(), mSlop)) {
                     cancelLongPress();
                 } else if (mPendingCheckForLongPress != null && isStylusButtonPressed(ev)) {
                     // Only trigger long press if it has not been cancelled before
@@ -98,9 +124,10 @@
     }
 
     /**
-     * Cancels any pending long press
+     * Cancels any pending long press and right click
      */
     public void cancelLongPress() {
+        mIsInMouseRightClick = false;
         mHasPerformedLongPress = false;
         clearCallbacks();
     }
diff --git a/src/com/android/launcher3/DefaultLayoutParser.java b/src/com/android/launcher3/DefaultLayoutParser.java
index 4daca8b..c748693 100644
--- a/src/com/android/launcher3/DefaultLayoutParser.java
+++ b/src/com/android/launcher3/DefaultLayoutParser.java
@@ -1,33 +1,29 @@
 package com.android.launcher3;
 
-import android.appwidget.AppWidgetHost;
 import android.appwidget.AppWidgetManager;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
-import android.content.pm.LauncherApps;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.res.Resources;
 import android.os.Bundle;
-import android.os.Process;
 import android.text.TextUtils;
 import android.util.ArrayMap;
 import android.util.Log;
 
 import com.android.launcher3.LauncherSettings.Favorites;
-import com.android.launcher3.model.data.WorkspaceItemInfo;
-import com.android.launcher3.shortcuts.ShortcutKey;
+import com.android.launcher3.util.Partner;
 import com.android.launcher3.util.Thunk;
+import com.android.launcher3.widget.LauncherWidgetHolder;
 
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
 import java.io.IOException;
 import java.net.URISyntaxException;
-import java.util.Collections;
 import java.util.List;
 
 /**
@@ -48,28 +44,24 @@
     private static final String ATTR_CONTAINER = "container";
     private static final String ATTR_SCREEN = "screen";
     private static final String ATTR_FOLDER_ITEMS = "folderItems";
-    private static final String ATTR_SHORTCUT_ID = "shortcutId";
-    private static final String ATTR_PACKAGE_NAME = "packageName";
+
+    public static final String RES_PARTNER_FOLDER = "partner_folder";
+    public static final String RES_PARTNER_DEFAULT_LAYOUT = "partner_default_layout";
 
     // TODO: Remove support for this broadcast, instead use widget options to send bind time options
     private static final String ACTION_APPWIDGET_DEFAULT_WORKSPACE_CONFIGURE =
             "com.android.launcher.action.APPWIDGET_DEFAULT_WORKSPACE_CONFIGURE";
 
-    public DefaultLayoutParser(Context context, AppWidgetHost appWidgetHost,
+    public DefaultLayoutParser(Context context, LauncherWidgetHolder appWidgetHolder,
             LayoutParserCallback callback, Resources sourceRes, int layoutId) {
-        super(context, appWidgetHost, callback, sourceRes, layoutId, TAG_FAVORITES);
+        super(context, appWidgetHolder, callback, sourceRes, layoutId, TAG_FAVORITES);
     }
 
     @Override
     protected ArrayMap<String, TagParser> getFolderElementsMap() {
-        return getFolderElementsMap(mSourceRes);
-    }
-
-    @Thunk
-    ArrayMap<String, TagParser> getFolderElementsMap(Resources res) {
         ArrayMap<String, TagParser> parsers = new ArrayMap<>();
         parsers.put(TAG_FAVORITE, new AppShortcutWithUriParser());
-        parsers.put(TAG_SHORTCUT, new UriShortcutParser(res));
+        parsers.put(TAG_SHORTCUT, new ShortcutParser());
         return parsers;
     }
 
@@ -79,7 +71,7 @@
         parsers.put(TAG_FAVORITE, new AppShortcutWithUriParser());
         parsers.put(TAG_APPWIDGET, new AppWidgetParser());
         parsers.put(TAG_SEARCH_WIDGET, new SearchWidgetParser());
-        parsers.put(TAG_SHORTCUT, new UriShortcutParser(mSourceRes));
+        parsers.put(TAG_SHORTCUT, new ShortcutParser());
         parsers.put(TAG_RESOLVE, new ResolveParser());
         parsers.put(TAG_FOLDER, new MyFolderParser());
         parsers.put(TAG_PARTNER_FOLDER, new PartnerFolderParser());
@@ -186,57 +178,6 @@
     }
 
     /**
-     * Shortcut parser which allows any uri and not just web urls.
-     */
-    public class UriShortcutParser extends ShortcutParser {
-
-        public UriShortcutParser(Resources iconRes) {
-            super(iconRes);
-        }
-
-        @Override
-        public int parseAndAdd(XmlPullParser parser) {
-            final String packageName = getAttributeValue(parser, ATTR_PACKAGE_NAME);
-            final String shortcutId = getAttributeValue(parser, ATTR_SHORTCUT_ID);
-            if (!TextUtils.isEmpty(packageName) && !TextUtils.isEmpty(shortcutId)) {
-                return parseAndAddDeepShortcut(shortcutId, packageName);
-            }
-            return super.parseAndAdd(parser);
-        }
-
-        /**
-         * This method parses and adds a deep shortcut.
-         * @return item id if the shortcut is successfully added else -1
-         */
-        private int parseAndAddDeepShortcut(String shortcutId, String packageName) {
-            try {
-                LauncherApps launcherApps = mContext.getSystemService(LauncherApps.class);
-                launcherApps.pinShortcuts(packageName, Collections.singletonList(shortcutId),
-                        Process.myUserHandle());
-                Intent intent = ShortcutKey.makeIntent(shortcutId, packageName);
-                mValues.put(Favorites.RESTORED, WorkspaceItemInfo.FLAG_RESTORED_ICON);
-                return addShortcut(null, intent, Favorites.ITEM_TYPE_DEEP_SHORTCUT);
-            } catch (Exception e) {
-                Log.e(TAG, "Unable to pin the shortcut for shortcut id = " + shortcutId
-                        + " and package name = " + packageName);
-            }
-            return -1;
-        }
-
-        @Override
-        protected Intent parseIntent(XmlPullParser parser) {
-            String uri = null;
-            try {
-                uri = getAttributeValue(parser, ATTR_URI);
-                return Intent.parseUri(uri, 0);
-            } catch (URISyntaxException e) {
-                Log.w(TAG, "Shortcut has malformed uri: " + uri);
-                return null; // Oh well
-            }
-        }
-    }
-
-    /**
      * Contains a list of <favorite> nodes, and accepts the first successfully parsed node.
      */
     public class ResolveParser implements TagParser {
@@ -278,14 +219,11 @@
             // Folder contents come from an external XML resource
             final Partner partner = Partner.get(mPackageManager);
             if (partner != null) {
-                final Resources partnerRes = partner.getResources();
-                final int resId = partnerRes.getIdentifier(Partner.RES_FOLDER,
-                        "xml", partner.getPackageName());
+                final int resId = partner.getXmlResId(RES_PARTNER_FOLDER);
                 if (resId != 0) {
-                    final XmlPullParser partnerParser = partnerRes.getXml(resId);
+                    final XmlPullParser partnerParser = partner.getResources().getXml(resId);
                     beginDocument(partnerParser, TAG_FOLDER);
-
-                    FolderParser folderParser = new FolderParser(getFolderElementsMap(partnerRes));
+                    FolderParser folderParser = new FolderParser(getFolderElementsMap());
                     return folderParser.parseAndAdd(partnerParser);
                 }
             }
@@ -336,11 +274,11 @@
             final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(mContext);
             int insertedId = -1;
             try {
-                int appWidgetId = mAppWidgetHost.allocateAppWidgetId();
+                int appWidgetId = mAppWidgetHolder.allocateAppWidgetId();
 
                 if (!appWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId, cn)) {
                     Log.e(TAG, "Unable to bind app widget id " + cn);
-                    mAppWidgetHost.deleteAppWidgetId(appWidgetId);
+                    mAppWidgetHolder.deleteAppWidgetId(appWidgetId);
                     return -1;
                 }
 
@@ -349,7 +287,7 @@
                 mValues.put(Favorites._ID, mCallback.generateNewItemId());
                 insertedId = mCallback.insertAndCheck(mDb, mValues);
                 if (insertedId < 0) {
-                    mAppWidgetHost.deleteAppWidgetId(appWidgetId);
+                    mAppWidgetHolder.deleteAppWidgetId(appWidgetId);
                     return insertedId;
                 }
 
diff --git a/src/com/android/launcher3/DeleteDropTarget.java b/src/com/android/launcher3/DeleteDropTarget.java
index 95d3ad9..9a5627a 100644
--- a/src/com/android/launcher3/DeleteDropTarget.java
+++ b/src/com/android/launcher3/DeleteDropTarget.java
@@ -18,24 +18,19 @@
 
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ITEM_DROPPED_ON_CANCEL;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ITEM_DROPPED_ON_REMOVE;
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_UNDO;
 
 import android.content.Context;
 import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.view.View;
 
-import com.android.launcher3.LauncherSettings.Favorites;
 import com.android.launcher3.accessibility.LauncherAccessibilityDelegate;
 import com.android.launcher3.dragndrop.DragOptions;
 import com.android.launcher3.logging.StatsLogManager;
-import com.android.launcher3.model.ModelWriter;
 import com.android.launcher3.model.data.FolderInfo;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.LauncherAppWidgetInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
-import com.android.launcher3.util.IntSet;
-import com.android.launcher3.views.Snackbar;
 
 public class DeleteDropTarget extends ButtonDropTarget {
 
@@ -43,6 +38,10 @@
 
     private StatsLogManager.LauncherEvent mLauncherEvent;
 
+    public DeleteDropTarget(Context context) {
+        this(context, null, 0);
+    }
+
     public DeleteDropTarget(Context context, AttributeSet attrs) {
         this(context, attrs, 0);
     }
@@ -120,8 +119,7 @@
     @Override
     public void onDrop(DragObject d, DragOptions options) {
         if (canRemove(d.dragInfo)) {
-            mLauncher.getModelWriter().prepareToUndoDelete();
-            d.dragInfo.container = NO_ID;
+            mDropTargetHandler.prepareToUndoDelete();
         }
         super.onDrop(d, options);
         mStatsLogManager.logger().withInstanceId(d.logInstanceId)
@@ -132,26 +130,8 @@
     public void completeDrop(DragObject d) {
         ItemInfo item = d.dragInfo;
         if (canRemove(item)) {
-            ItemInfo pageItem = item;
-            if (item.container <= 0) {
-                View v = mLauncher.getWorkspace().getHomescreenIconByItemId(item.container);
-                if (v != null) {
-                    pageItem = (ItemInfo) v.getTag();
-                }
-            }
-            IntSet pageIds = pageItem.container == Favorites.CONTAINER_DESKTOP
-                    ? IntSet.wrap(pageItem.screenId)
-                    : mLauncher.getWorkspace().getCurrentPageScreenIds();
-
             onAccessibilityDrop(null, item);
-            ModelWriter modelWriter = mLauncher.getModelWriter();
-            Runnable onUndoClicked = () -> {
-                mLauncher.setPagesToBindSynchronously(pageIds);
-                modelWriter.abortDelete();
-                mLauncher.getStatsLogManager().logger().log(LAUNCHER_UNDO);
-            };
-            Snackbar.show(mLauncher, R.string.item_removed, R.string.undo,
-                    modelWriter::commitDelete, onUndoClicked);
+            mDropTargetHandler.onDeleteComplete(item);
         }
     }
 
@@ -163,9 +143,7 @@
         // Remove the item from launcher and the db, we can ignore the containerInfo in this call
         // because we already remove the drag view from the folder (if the drag originated from
         // a folder) in Folder.beginDrag()
-        mLauncher.removeItem(view, item, true /* deleteFromDb */, "removed by accessibility drop");
-        mLauncher.getWorkspace().stripEmptyScreens();
-        mLauncher.getDragLayer()
-                .announceForAccessibility(getContext().getString(R.string.item_removed));
+        CharSequence announcement = getContext().getString(R.string.item_removed);
+        mDropTargetHandler.onAccessibilityDelete(view, item, announcement);
     }
 }
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index b276397..fb41044 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -20,41 +20,61 @@
 import static com.android.launcher3.InvariantDeviceProfile.INDEX_LANDSCAPE;
 import static com.android.launcher3.InvariantDeviceProfile.INDEX_TWO_PANEL_LANDSCAPE;
 import static com.android.launcher3.InvariantDeviceProfile.INDEX_TWO_PANEL_PORTRAIT;
-import static com.android.launcher3.ResourceUtils.pxFromDp;
 import static com.android.launcher3.Utilities.dpiFromPx;
 import static com.android.launcher3.Utilities.pxFromSp;
+import static com.android.launcher3.anim.Interpolators.LINEAR;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_MULTI_DISPLAY_PARTIAL_DEPTH;
 import static com.android.launcher3.folder.ClippedFolderIconLayoutRule.ICON_OVERLAP_FACTOR;
+import static com.android.launcher3.icons.GraphicsUtils.getShapePath;
+import static com.android.launcher3.testing.shared.ResourceUtils.INVALID_RESOURCE_HANDLE;
+import static com.android.launcher3.testing.shared.ResourceUtils.pxFromDp;
+import static com.android.launcher3.testing.shared.ResourceUtils.roundPxValueFromFloat;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
 import android.content.res.Configuration;
 import android.content.res.Resources;
-import android.graphics.Path;
+import android.content.res.TypedArray;
 import android.graphics.Point;
 import android.graphics.PointF;
 import android.graphics.Rect;
 import android.util.DisplayMetrics;
+import android.util.SparseArray;
 import android.view.Surface;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.content.res.ResourcesCompat;
+
 import com.android.launcher3.CellLayout.ContainerType;
 import com.android.launcher3.DevicePaddings.DevicePadding;
+import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.icons.DotRenderer;
-import com.android.launcher3.icons.GraphicsUtils;
 import com.android.launcher3.icons.IconNormalizer;
+import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.uioverrides.ApiWrapper;
 import com.android.launcher3.util.DisplayController;
 import com.android.launcher3.util.DisplayController.Info;
+import com.android.launcher3.util.ResourceHelper;
 import com.android.launcher3.util.WindowBounds;
+import com.android.launcher3.workspace.CalculatedWorkspaceSpec;
+import com.android.launcher3.workspace.WorkspaceSpecs;
 
 import java.io.PrintWriter;
-import java.util.List;
+import java.util.Locale;
+import java.util.function.Consumer;
 
 @SuppressLint("NewApi")
 public class DeviceProfile {
 
     private static final int DEFAULT_DOT_SIZE = 100;
-    // Ratio of empty space, qsb should take up to appear visually centered.
-    private final float mQsbCenterFactor;
+    private static final float ALL_APPS_TABLET_MAX_ROWS = 5.5f;
+    private static final float MIN_FOLDER_TEXT_SIZE_SP = 16f;
+    private static final float MIN_WIDGET_PADDING_DP = 6f;
+
+    public static final PointF DEFAULT_SCALE = new PointF(1.0f, 1.0f);
+    public static final ViewScaleProvider DEFAULT_PROVIDER = itemInfo -> DEFAULT_SCALE;
+    public static final Consumer<DeviceProfile> DEFAULT_DIMENSION_PROVIDER = dp -> {};
 
     public final InvariantDeviceProfile inv;
     private final Info mInfo;
@@ -64,6 +84,7 @@
     public final boolean isTablet;
     public final boolean isPhone;
     public final boolean transposeLayoutWithOrientation;
+    public final boolean isMultiDisplay;
     public final boolean isTwoPanels;
     public final boolean isQsbInline;
 
@@ -85,6 +106,12 @@
     public final boolean isScalableGrid;
     private final int mTypeIndex;
 
+    // Responsive grid
+    private final boolean mIsResponsiveGrid;
+    private WorkspaceSpecs mWorkspaceSpecs;
+    private CalculatedWorkspaceSpec mResponsiveWidthSpec;
+    private CalculatedWorkspaceSpec mResponsiveHeightSpec;
+
     /**
      * The maximum amount of left/right workspace padding as a percentage of the screen width.
      * To be clear, this means that up to 7% of the screen width can be used as left padding, and
@@ -107,15 +134,13 @@
     public Rect cellLayoutPaddingPx = new Rect();
 
     public final int edgeMarginPx;
-    public float workspaceSpringLoadShrunkTop;
-    public float workspaceSpringLoadShrunkBottom;
-    public final int workspaceSpringLoadedBottomSpace;
+    public final float workspaceContentScale;
     public final int workspaceSpringLoadedMinNextPageVisiblePx;
 
     private final int extraSpace;
+    private int maxEmptySpace;
     public int workspaceTopPadding;
     public int workspaceBottomPadding;
-    public int extraHotseatBottomPadding;
 
     // Workspace page indicator
     public final int workspacePageIndicatorHeight;
@@ -138,12 +163,12 @@
     // Folder
     public float folderLabelTextScale;
     public int folderLabelTextSizePx;
+    public int folderFooterHeightPx;
     public int folderIconSizePx;
     public int folderIconOffsetYPx;
 
     // Folder content
-    public Point folderCellLayoutBorderSpacePx;
-    public int folderCellLayoutBorderSpaceOriginalPx;
+    public int folderCellLayoutBorderSpacePx;
     public int folderContentPaddingLeftRight;
     public int folderContentPaddingTop;
 
@@ -157,31 +182,41 @@
     public int folderChildDrawablePaddingPx;
 
     // Hotseat
-    public int hotseatBarSizeExtraSpacePx;
-    public final int numShownHotseatIcons;
+    public int numShownHotseatIcons;
     public int hotseatCellHeightPx;
-    private final int hotseatExtraVerticalSize;
-    private final boolean areNavButtonsInline;
+    public final boolean areNavButtonsInline;
     // In portrait: size = height, in landscape: size = width
     public int hotseatBarSizePx;
-    public int hotseatBarTopPaddingPx;
-    public final int hotseatBarBottomPaddingPx;
+    public int hotseatBarBottomSpacePx;
+    public int hotseatBarEndOffset;
+    public int hotseatQsbSpace;
     public int springLoadedHotseatBarTopMarginPx;
     // Start is the side next to the nav bar, end is the side next to the workspace
     public final int hotseatBarSidePaddingStartPx;
     public final int hotseatBarSidePaddingEndPx;
+    public int hotseatQsbWidth; // only used when isQsbInline
     public final int hotseatQsbHeight;
+    public final int hotseatQsbVisualHeight;
+    private final int hotseatQsbShadowHeight;
     public int hotseatBorderSpace;
+    private final int mMinHotseatIconSpacePx;
+    private final int mMinHotseatQsbWidthPx;
+    private final int mMaxHotseatIconSpacePx;
+    public final int inlineNavButtonsEndSpacingPx;
 
-    public final float qsbBottomMarginOriginalPx;
-    public int qsbBottomMarginPx;
-    public int qsbWidth; // only used when isQsbInline
+    // Bottom sheets
+    public int bottomSheetTopPadding;
+    public int bottomSheetOpenDuration;
+    public int bottomSheetCloseDuration;
+    public float bottomSheetWorkspaceScale;
+    public float bottomSheetDepth;
 
     // All apps
     public Point allAppsBorderSpacePx;
     public int allAppsShiftRange;
     public int allAppsTopPadding;
-    public int bottomSheetTopPadding;
+    public int allAppsOpenDuration;
+    public int allAppsCloseDuration;
     public int allAppsCellHeightPx;
     public int allAppsCellWidthPx;
     public int allAppsIconSizePx;
@@ -193,7 +228,6 @@
 
     // Overview
     public int overviewTaskMarginPx;
-    public int overviewTaskMarginGridPx;
     public int overviewTaskIconSizePx;
     public int overviewTaskIconDrawableSizePx;
     public int overviewTaskIconDrawableSizeGridPx;
@@ -205,8 +239,11 @@
     public int overviewRowSpacing;
     public int overviewGridSideMargin;
 
+    // Split staging
+    public int splitPlaceholderInset;
+
     // Widgets
-    public final PointF appWidgetScale = new PointF(1.0f, 1.0f);
+    private final ViewScaleProvider mViewScaleProvider;
 
     // Drop Target
     public int dropTargetBarSizePx;
@@ -222,45 +259,58 @@
     // Insets
     private final Rect mInsets = new Rect();
     public final Rect workspacePadding = new Rect();
-    private final Rect mHotseatPadding = new Rect();
+    // Additional padding added to the widget inside its cellSpace. It is applied outside
+    // the widgetView, such that the actual view size is same as the widget size.
+    public final Rect widgetPadding = new Rect();
+
     // When true, nav bar is on the left side of the screen.
     private boolean mIsSeascape;
 
     // Notification dots
-    public DotRenderer mDotRendererWorkSpace;
-    public DotRenderer mDotRendererAllApps;
+    public final DotRenderer mDotRendererWorkSpace;
+    public final DotRenderer mDotRendererAllApps;
 
     // Taskbar
     public boolean isTaskbarPresent;
     // Whether Taskbar will inset the bottom of apps by taskbarSize.
     public boolean isTaskbarPresentInApps;
-    public int taskbarSize;
-    public int stashedTaskbarSize;
+    public final int taskbarHeight;
+    public final int stashedTaskbarHeight;
+    public final int taskbarBottomMargin;
+    public final int taskbarIconSize;
+    // If true, used to layout taskbar in 3 button navigation mode.
+    public final boolean startAlignTaskbar;
 
     // DragController
     public int flingToDeleteThresholdVelocity;
 
     /** TODO: Once we fully migrate to staged split, remove "isMultiWindowMode" */
     DeviceProfile(Context context, InvariantDeviceProfile inv, Info info, WindowBounds windowBounds,
-            boolean isMultiWindowMode, boolean transposeLayoutWithOrientation,
-            boolean useTwoPanels, boolean isGestureMode) {
+            SparseArray<DotRenderer> dotRendererCache, boolean isMultiWindowMode,
+            boolean transposeLayoutWithOrientation, boolean isMultiDisplay, boolean isGestureMode,
+            @NonNull final ViewScaleProvider viewScaleProvider,
+            @NonNull final Consumer<DeviceProfile> dimensionOverrideProvider) {
 
         this.inv = inv;
         this.isLandscape = windowBounds.isLandscape();
         this.isMultiWindowMode = isMultiWindowMode;
         this.transposeLayoutWithOrientation = transposeLayoutWithOrientation;
+        this.isMultiDisplay = isMultiDisplay;
         this.isGestureMode = isGestureMode;
         windowX = windowBounds.bounds.left;
         windowY = windowBounds.bounds.top;
         this.rotationHint = windowBounds.rotationHint;
         mInsets.set(windowBounds.insets);
 
+        // TODO(b/241386436): shouldn't change any launcher behaviour
+        mIsResponsiveGrid = inv.workspaceSpecsId != INVALID_RESOURCE_HANDLE;
+
         isScalableGrid = inv.isScalable && !isVerticalBarLayout() && !isMultiWindowMode;
         // Determine device posture.
         mInfo = info;
         isTablet = info.isTablet(windowBounds);
         isPhone = !isTablet;
-        isTwoPanels = isTablet && useTwoPanels;
+        isTwoPanels = isTablet && isMultiDisplay;
         isTaskbarPresent = isTablet && ApiWrapper.TASKBAR_DRAWN_IN_PROCESS;
 
         // Some more constants.
@@ -275,12 +325,9 @@
         widthPx = windowBounds.bounds.width();
         heightPx = windowBounds.bounds.height();
         availableWidthPx = windowBounds.availableSize.x;
-        availableHeightPx =  windowBounds.availableSize.y;
+        availableHeightPx = windowBounds.availableSize.y;
 
         aspectRatio = ((float) Math.max(widthPx, heightPx)) / Math.min(widthPx, heightPx);
-        boolean isTallDevice = Float.compare(aspectRatio, TALL_DEVICE_ASPECT_RATIO_THRESHOLD) >= 0;
-        mQsbCenterFactor = res.getFloat(R.dimen.qsb_center_factor);
-
         if (isTwoPanels) {
             if (isLandscape) {
                 mTypeIndex = INDEX_TWO_PANEL_LANDSCAPE;
@@ -295,12 +342,35 @@
             }
         }
 
-        if (isTaskbarPresent) {
-            taskbarSize = res.getDimensionPixelSize(R.dimen.taskbar_size);
-            stashedTaskbarSize = res.getDimensionPixelSize(R.dimen.taskbar_stashed_size);
+        if (mIsResponsiveGrid) {
+            mWorkspaceSpecs = new WorkspaceSpecs(new ResourceHelper(context, inv.workspaceSpecsId));
+            mResponsiveWidthSpec = mWorkspaceSpecs.getCalculatedWidthSpec(inv.numColumns,
+                    availableWidthPx);
+            mResponsiveHeightSpec = mWorkspaceSpecs.getCalculatedHeightSpec(inv.numRows,
+                    availableHeightPx);
+        }
+
+        if (DisplayController.isTransientTaskbar(context)) {
+            float invTransientIconSizeDp = inv.transientTaskbarIconSize[mTypeIndex];
+            taskbarIconSize = pxFromDp(invTransientIconSizeDp, mMetrics);
+            taskbarHeight = taskbarIconSize
+                    + (2 * res.getDimensionPixelSize(R.dimen.transient_taskbar_padding));
+            stashedTaskbarHeight =
+                    res.getDimensionPixelSize(R.dimen.transient_taskbar_stashed_height);
+            taskbarBottomMargin =
+                    res.getDimensionPixelSize(R.dimen.transient_taskbar_bottom_margin);
+            startAlignTaskbar = false;
+        } else {
+            taskbarIconSize = pxFromDp(ResourcesCompat.getFloat(res, R.dimen.taskbar_icon_size),
+                    mMetrics);
+            taskbarHeight = res.getDimensionPixelSize(R.dimen.taskbar_size);
+            stashedTaskbarHeight = res.getDimensionPixelSize(R.dimen.taskbar_stashed_size);
+            taskbarBottomMargin = 0;
+            startAlignTaskbar = inv.startAlignTaskbar[mTypeIndex];
         }
 
         edgeMarginPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_edge_margin);
+        workspaceContentScale = res.getFloat(R.dimen.workspace_content_scale);
 
         desiredWorkspaceHorizontalMarginPx = getHorizontalMarginPx(inv, res);
         desiredWorkspaceHorizontalMarginOriginalPx = desiredWorkspaceHorizontalMarginPx;
@@ -312,32 +382,75 @@
         bottomSheetTopPadding = mInsets.top // statusbar height
                 + res.getDimensionPixelSize(R.dimen.bottom_sheet_extra_top_padding)
                 + (isTablet ? 0 : edgeMarginPx); // phones need edgeMarginPx additional padding
+        bottomSheetOpenDuration = res.getInteger(R.integer.config_bottomSheetOpenDuration);
+        bottomSheetCloseDuration = res.getInteger(R.integer.config_bottomSheetCloseDuration);
+        if (isTablet) {
+            bottomSheetWorkspaceScale = workspaceContentScale;
+            if (isMultiDisplay && !ENABLE_MULTI_DISPLAY_PARTIAL_DEPTH.get()) {
+                // TODO(b/259893832): Revert to use maxWallpaperScale to calculate bottomSheetDepth
+                // when screen recorder bug is fixed.
+                bottomSheetDepth = 1f;
+            } else {
+                // The goal is to set wallpaper to zoom at workspaceContentScale when in AllApps.
+                // When depth is 0, wallpaper zoom is set to maxWallpaperScale.
+                // When depth is 1, wallpaper zoom is set to 1.
+                // For depth to achieve zoom set to maxWallpaperScale * workspaceContentScale:
+                float maxWallpaperScale = res.getFloat(R.dimen.config_wallpaperMaxScale);
+                bottomSheetDepth = Utilities.mapToRange(maxWallpaperScale * workspaceContentScale,
+                        maxWallpaperScale, 1f, 0f, 1f, LINEAR);
+            }
+        } else {
+            bottomSheetWorkspaceScale = 1f;
+            bottomSheetDepth = 0f;
+        }
 
-        allAppsTopPadding = isTablet ? bottomSheetTopPadding : 0;
-        allAppsShiftRange = isTablet
-                ? heightPx - allAppsTopPadding
-                : res.getDimensionPixelSize(R.dimen.all_apps_starting_vertical_translate);
         folderLabelTextScale = res.getFloat(R.dimen.folder_label_text_scale);
-        folderContentPaddingLeftRight =
-                res.getDimensionPixelSize(R.dimen.folder_content_padding_left_right);
-        folderContentPaddingTop = res.getDimensionPixelSize(R.dimen.folder_content_padding_top);
+
+        if (isScalableGrid && inv.folderStyle != INVALID_RESOURCE_HANDLE) {
+            TypedArray folderStyle = context.obtainStyledAttributes(inv.folderStyle,
+                    R.styleable.FolderStyle);
+            // These are re-set in #updateFolderCellSize if the grid is not scalable
+            folderCellHeightPx = folderStyle.getDimensionPixelSize(
+                    R.styleable.FolderStyle_folderCellHeight, 0);
+            folderCellWidthPx = folderStyle.getDimensionPixelSize(
+                    R.styleable.FolderStyle_folderCellWidth, 0);
+
+            folderContentPaddingTop = folderStyle.getDimensionPixelSize(
+                    R.styleable.FolderStyle_folderTopPadding, 0);
+            folderCellLayoutBorderSpacePx = folderStyle.getDimensionPixelSize(
+                    R.styleable.FolderStyle_folderBorderSpace, 0);
+            folderFooterHeightPx = folderStyle.getDimensionPixelSize(
+                    R.styleable.FolderStyle_folderFooterHeight, 0);
+            folderStyle.recycle();
+        } else {
+            folderCellLayoutBorderSpacePx = 0;
+            folderFooterHeightPx = res.getDimensionPixelSize(R.dimen.folder_footer_height_default);
+            folderContentPaddingTop = res.getDimensionPixelSize(R.dimen.folder_top_padding_default);
+        }
 
         cellLayoutBorderSpacePx = getCellLayoutBorderSpace(inv);
+        cellLayoutBorderSpaceOriginalPx = new Point(cellLayoutBorderSpacePx);
         allAppsBorderSpacePx = new Point(
                 pxFromDp(inv.allAppsBorderSpaces[mTypeIndex].x, mMetrics),
                 pxFromDp(inv.allAppsBorderSpaces[mTypeIndex].y, mMetrics));
-        cellLayoutBorderSpaceOriginalPx = new Point(cellLayoutBorderSpacePx);
-        folderCellLayoutBorderSpaceOriginalPx = pxFromDp(inv.folderBorderSpace, mMetrics);
-        folderCellLayoutBorderSpacePx = new Point(folderCellLayoutBorderSpaceOriginalPx,
-                folderCellLayoutBorderSpaceOriginalPx);
+        setupAllAppsStyle(context);
 
         workspacePageIndicatorHeight = res.getDimensionPixelSize(
                 R.dimen.workspace_page_indicator_height);
         mWorkspacePageIndicatorOverlapWorkspace =
                 res.getDimensionPixelSize(R.dimen.workspace_page_indicator_overlap_workspace);
 
-        iconDrawablePaddingOriginalPx =
-                res.getDimensionPixelSize(R.dimen.dynamic_grid_icon_drawable_padding);
+        TypedArray cellStyle;
+        if (inv.cellStyle != INVALID_RESOURCE_HANDLE) {
+            cellStyle = context.obtainStyledAttributes(inv.cellStyle,
+                    R.styleable.CellStyle);
+        } else {
+            cellStyle = context.obtainStyledAttributes(R.style.CellStyleDefault,
+                    R.styleable.CellStyle);
+        }
+        iconDrawablePaddingOriginalPx = cellStyle.getDimensionPixelSize(
+                R.styleable.CellStyle_iconDrawablePadding, 0);
+        cellStyle.recycle();
 
         dropTargetBarSizePx = res.getDimensionPixelSize(R.dimen.dynamic_grid_drop_target_size);
         dropTargetBarTopMarginPx = res.getDimensionPixelSize(R.dimen.drop_target_top_margin);
@@ -352,44 +465,50 @@
         dropTargetButtonWorkspaceEdgeGapPx = res.getDimensionPixelSize(
                 R.dimen.drop_target_button_workspace_edge_gap);
 
-        workspaceSpringLoadedBottomSpace =
-                res.getDimensionPixelSize(R.dimen.dynamic_grid_min_spring_loaded_space);
         workspaceSpringLoadedMinNextPageVisiblePx = res.getDimensionPixelSize(
                 R.dimen.dynamic_grid_spring_loaded_min_next_space_visible);
 
         workspaceCellPaddingXPx = res.getDimensionPixelSize(R.dimen.dynamic_grid_cell_padding_x);
 
         hotseatQsbHeight = res.getDimensionPixelSize(R.dimen.qsb_widget_height);
+        hotseatQsbShadowHeight = res.getDimensionPixelSize(R.dimen.qsb_shadow_height);
+        hotseatQsbVisualHeight = hotseatQsbHeight - 2 * hotseatQsbShadowHeight;
+
         // Whether QSB might be inline in appropriate orientation (e.g. landscape).
         boolean canQsbInline = (isTwoPanels ? inv.inlineQsb[INDEX_TWO_PANEL_PORTRAIT]
                 || inv.inlineQsb[INDEX_TWO_PANEL_LANDSCAPE]
                 : inv.inlineQsb[INDEX_DEFAULT] || inv.inlineQsb[INDEX_LANDSCAPE])
                 && hotseatQsbHeight > 0;
-        isQsbInline = inv.inlineQsb[mTypeIndex] && canQsbInline;
+        isQsbInline = isScalableGrid && inv.inlineQsb[mTypeIndex] && canQsbInline;
 
-        // We shrink hotseat sizes regardless of orientation, if nav buttons are inline and QSB
-        // might be inline in either orientations, to keep hotseat size consistent across rotation.
         areNavButtonsInline = isTaskbarPresent && !isGestureMode;
-        if (areNavButtonsInline && canQsbInline) {
-            numShownHotseatIcons = inv.numShrunkenHotseatIcons;
-        } else {
-            numShownHotseatIcons =
-                    isTwoPanels ? inv.numDatabaseHotseatIcons : inv.numShownHotseatIcons;
-        }
+        numShownHotseatIcons =
+                isTwoPanels ? inv.numDatabaseHotseatIcons : inv.numShownHotseatIcons;
 
         numShownAllAppsColumns =
                 isTwoPanels ? inv.numDatabaseAllAppsColumns : inv.numAllAppsColumns;
-        hotseatBarSizeExtraSpacePx = 0;
-        hotseatBarTopPaddingPx =
-                res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_top_padding);
-        if (isQsbInline) {
-            hotseatBarBottomPaddingPx = res.getDimensionPixelSize(R.dimen.inline_qsb_bottom_margin);
+
+        int hotseatBarBottomSpace = pxFromDp(inv.hotseatBarBottomSpace[mTypeIndex], mMetrics);
+        int minQsbMargin = res.getDimensionPixelSize(R.dimen.min_qsb_margin);
+        hotseatQsbSpace = pxFromDp(inv.hotseatQsbSpace[mTypeIndex], mMetrics);
+        // Have a little space between the inset and the QSB
+        if (mInsets.bottom + minQsbMargin > hotseatBarBottomSpace) {
+            int availableSpace = hotseatQsbSpace - (mInsets.bottom - hotseatBarBottomSpace);
+
+            // Only change the spaces if there is space
+            if (availableSpace > 0) {
+                // Make sure there is enough space between hotseat/QSB and QSB/navBar
+                if (availableSpace < minQsbMargin * 2) {
+                    minQsbMargin = availableSpace / 2;
+                    hotseatQsbSpace = minQsbMargin;
+                } else {
+                    hotseatQsbSpace -= minQsbMargin;
+                }
+            }
+            hotseatBarBottomSpacePx = mInsets.bottom + minQsbMargin;
+
         } else {
-            hotseatBarBottomPaddingPx = (isTallDevice ? res.getDimensionPixelSize(
-                    R.dimen.dynamic_grid_hotseat_bottom_tall_padding)
-                    : res.getDimensionPixelSize(
-                            R.dimen.dynamic_grid_hotseat_bottom_non_tall_padding))
-                    + res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_bottom_padding);
+            hotseatBarBottomSpacePx = hotseatBarBottomSpace;
         }
 
         springLoadedHotseatBarTopMarginPx = res.getDimensionPixelSize(
@@ -398,47 +517,50 @@
                 res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_side_padding);
         // Add a bit of space between nav bar and hotseat in vertical bar layout.
         hotseatBarSidePaddingStartPx = isVerticalBarLayout() ? workspacePageIndicatorHeight : 0;
-        hotseatExtraVerticalSize =
-                res.getDimensionPixelSize(R.dimen.dynamic_grid_hotseat_extra_vertical_size);
-        updateHotseatIconSize(pxFromDp(inv.iconSize[INDEX_DEFAULT], mMetrics));
-
-        qsbBottomMarginOriginalPx = isScalableGrid
-                ? res.getDimensionPixelSize(R.dimen.scalable_grid_qsb_bottom_margin)
-                : 0;
+        updateHotseatSizes(pxFromDp(inv.iconSize[INDEX_DEFAULT], mMetrics));
+        if (areNavButtonsInline && !isPhone) {
+            inlineNavButtonsEndSpacingPx =
+                    res.getDimensionPixelSize(inv.inlineNavButtonsEndSpacing);
+            /*
+             * 3 nav buttons +
+             * Spacing between nav buttons +
+             * Space at the end for contextual buttons
+             */
+            hotseatBarEndOffset = 3 * res.getDimensionPixelSize(R.dimen.taskbar_nav_buttons_size)
+                    + 2 * res.getDimensionPixelSize(R.dimen.taskbar_button_space_inbetween)
+                    + inlineNavButtonsEndSpacingPx;
+        } else {
+            inlineNavButtonsEndSpacingPx = 0;
+            hotseatBarEndOffset = 0;
+        }
 
         overviewTaskMarginPx = res.getDimensionPixelSize(R.dimen.overview_task_margin);
-        overviewTaskMarginGridPx = res.getDimensionPixelSize(R.dimen.overview_task_margin_grid);
         overviewTaskIconSizePx = res.getDimensionPixelSize(R.dimen.task_thumbnail_icon_size);
         overviewTaskIconDrawableSizePx =
                 res.getDimensionPixelSize(R.dimen.task_thumbnail_icon_drawable_size);
         overviewTaskIconDrawableSizeGridPx =
                 res.getDimensionPixelSize(R.dimen.task_thumbnail_icon_drawable_size_grid);
-        overviewTaskThumbnailTopMarginPx = overviewTaskIconSizePx + overviewTaskMarginPx * 2;
-        // In vertical bar, use the smaller task margin for the top regardless of mode.
-        overviewActionsTopMarginPx = isVerticalBarLayout()
-                ? overviewTaskMarginPx
-                : res.getDimensionPixelSize(R.dimen.overview_actions_top_margin);
+        overviewTaskThumbnailTopMarginPx = overviewTaskIconSizePx + overviewTaskMarginPx;
+        overviewActionsTopMarginPx = res.getDimensionPixelSize(R.dimen.overview_actions_top_margin);
         overviewPageSpacing = res.getDimensionPixelSize(R.dimen.overview_page_spacing);
         overviewActionsButtonSpacing = res.getDimensionPixelSize(
                 R.dimen.overview_actions_button_spacing);
         overviewActionsHeight = res.getDimensionPixelSize(R.dimen.overview_actions_height);
-        // Grid task's top margin is only overviewTaskIconSizePx + overviewTaskMarginGridPx, but
-        // overviewTaskThumbnailTopMarginPx is applied to all TaskThumbnailView, so exclude the
-        // extra  margin when calculating row spacing.
-        int extraTopMargin = overviewTaskThumbnailTopMarginPx - overviewTaskIconSizePx
-                - overviewTaskMarginGridPx;
-        overviewRowSpacing = res.getDimensionPixelSize(R.dimen.overview_grid_row_spacing)
-                - extraTopMargin;
+        overviewRowSpacing = res.getDimensionPixelSize(R.dimen.overview_grid_row_spacing);
         overviewGridSideMargin = res.getDimensionPixelSize(R.dimen.overview_grid_side_margin);
 
+        splitPlaceholderInset = res.getDimensionPixelSize(R.dimen.split_placeholder_inset);
+
         // Calculate all of the remaining variables.
         extraSpace = updateAvailableDimensions(res);
 
         // Now that we have all of the variables calculated, we can tune certain sizes.
-        if (isScalableGrid && inv.devicePaddings != null) {
+        if (isScalableGrid && inv.devicePaddingId != INVALID_RESOURCE_HANDLE) {
             // Paddings were created assuming no scaling, so we first unscale the extra space.
             int unscaledExtraSpace = (int) (extraSpace / cellScaleToFit);
-            DevicePadding padding = inv.devicePaddings.getDevicePadding(unscaledExtraSpace);
+            DevicePaddings devicePaddings = new DevicePaddings(context, inv.devicePaddingId);
+            DevicePadding padding = devicePaddings.getDevicePadding(unscaledExtraSpace);
+            maxEmptySpace = padding.getMaxEmptySpacePx();
 
             int paddingWorkspaceTop = padding.getWorkspaceTopPadding(unscaledExtraSpace);
             int paddingWorkspaceBottom = padding.getWorkspaceBottomPadding(unscaledExtraSpace);
@@ -446,42 +568,6 @@
 
             workspaceTopPadding = Math.round(paddingWorkspaceTop * cellScaleToFit);
             workspaceBottomPadding = Math.round(paddingWorkspaceBottom * cellScaleToFit);
-            extraHotseatBottomPadding = Math.round(paddingHotseatBottom * cellScaleToFit);
-
-            hotseatBarSizePx += extraHotseatBottomPadding;
-
-            qsbBottomMarginPx = Math.round(qsbBottomMarginOriginalPx * cellScaleToFit);
-        } else if (!isVerticalBarLayout() && isPhone && isTallDevice) {
-            // We increase the hotseat size when there is extra space.
-
-            if (Float.compare(aspectRatio, TALLER_DEVICE_ASPECT_RATIO_THRESHOLD) >= 0
-                    && extraSpace >= Utilities.dpToPx(TALL_DEVICE_EXTRA_SPACE_THRESHOLD_DP)) {
-                // For taller devices, we will take a piece of the extra space from each row,
-                // and add it to the space above and below the hotseat.
-
-                // For devices with more extra space, we take a larger piece from each cell.
-                int piece = extraSpace < Utilities.dpToPx(TALL_DEVICE_MORE_EXTRA_SPACE_THRESHOLD_DP)
-                        ? 7 : 5;
-
-                int extraSpace = ((getCellSize().y - iconSizePx - iconDrawablePaddingPx * 2)
-                        * inv.numRows) / piece;
-
-                workspaceTopPadding = extraSpace / 8;
-                int halfLeftOver = (extraSpace - workspaceTopPadding) / 2;
-                hotseatBarTopPaddingPx += halfLeftOver;
-                hotseatBarSizeExtraSpacePx = halfLeftOver;
-            } else {
-                // ie. For a display with a large aspect ratio, we can keep the icons on the
-                // workspace in portrait mode closer together by adding more height to the hotseat.
-                // Note: This calculation was created after noticing a pattern in the design spec.
-                hotseatBarSizeExtraSpacePx = getCellSize().y - iconSizePx
-                        - iconDrawablePaddingPx * 2 - workspacePageIndicatorHeight;
-            }
-
-            updateHotseatIconSize(iconSizePx);
-
-            // Recalculate the available dimensions using the new hotseat size.
-            updateAvailableDimensions(res);
         }
 
         int cellLayoutPadding =
@@ -491,25 +577,60 @@
                 cellLayoutPadding);
         updateWorkspacePadding();
 
+        // Folder scaling requires correct workspace paddings
+        updateAvailableFolderCellDimensions(res);
+
+        mMinHotseatIconSpacePx = res.getDimensionPixelSize(R.dimen.min_hotseat_icon_space);
+        mMinHotseatQsbWidthPx = res.getDimensionPixelSize(R.dimen.min_hotseat_qsb_width);
+        mMaxHotseatIconSpacePx = areNavButtonsInline
+                ? res.getDimensionPixelSize(R.dimen.max_hotseat_icon_space) : Integer.MAX_VALUE;
         // Hotseat and QSB width depends on updated cellSize and workspace padding
-        hotseatBorderSpace = calculateHotseatBorderSpace();
-        qsbWidth = calculateQsbWidth();
+        recalculateHotseatWidthAndBorderSpace();
+
+        // AllApps height calculation depends on updated cellSize
+        if (isTablet) {
+            int collapseHandleHeight =
+                    res.getDimensionPixelOffset(R.dimen.bottom_sheet_handle_area_height);
+            int contentHeight = heightPx - collapseHandleHeight - hotseatQsbHeight;
+            int targetContentHeight = (int) (allAppsCellHeightPx * ALL_APPS_TABLET_MAX_ROWS);
+            allAppsTopPadding = Math.max(mInsets.top, contentHeight - targetContentHeight);
+            allAppsShiftRange = heightPx - allAppsTopPadding;
+        } else {
+            allAppsTopPadding = 0;
+            allAppsShiftRange =
+                    res.getDimensionPixelSize(R.dimen.all_apps_starting_vertical_translate);
+        }
+        allAppsOpenDuration = res.getInteger(R.integer.config_allAppsOpenDuration);
+        allAppsCloseDuration = res.getInteger(R.integer.config_allAppsCloseDuration);
 
         flingToDeleteThresholdVelocity = res.getDimensionPixelSize(
                 R.dimen.drag_flingToDeleteMinVelocity);
 
+        mViewScaleProvider = viewScaleProvider;
+
+        dimensionOverrideProvider.accept(this);
+
         // This is done last, after iconSizePx is calculated above.
-        Path dotPath = GraphicsUtils.getShapePath(DEFAULT_DOT_SIZE);
-        mDotRendererWorkSpace = new DotRenderer(iconSizePx, dotPath, DEFAULT_DOT_SIZE);
-        mDotRendererAllApps = iconSizePx == allAppsIconSizePx ? mDotRendererWorkSpace :
-                new DotRenderer(allAppsIconSizePx, dotPath, DEFAULT_DOT_SIZE);
+        mDotRendererWorkSpace = createDotRenderer(context, iconSizePx, dotRendererCache);
+        mDotRendererAllApps = createDotRenderer(context, allAppsIconSizePx, dotRendererCache);
+    }
+
+    private static DotRenderer createDotRenderer(
+            @NonNull Context context, int size, @NonNull SparseArray<DotRenderer> cache) {
+        DotRenderer renderer = cache.get(size);
+        if (renderer == null) {
+            renderer = new DotRenderer(size, getShapePath(context, DEFAULT_DOT_SIZE),
+                    DEFAULT_DOT_SIZE);
+            cache.put(size, renderer);
+        }
+        return renderer;
     }
 
     /**
      * QSB width is always calculated because when in 3 button nav the width doesn't follow the
      * width of the hotseat.
      */
-    private int calculateQsbWidth() {
+    private int calculateQsbWidth(int hotseatBorderSpace) {
         if (isQsbInline) {
             int columns = getPanelCount() * inv.numColumns;
             return getIconToIconWidthForColumns(columns)
@@ -524,7 +645,7 @@
     private int getIconToIconWidthForColumns(int columns) {
         return columns * getCellSize().x
                 + (columns - 1) * cellLayoutBorderSpacePx.x
-                - (getCellSize().x - iconSizePx);  // left and right cell space
+                - getCellHorizontalSpace();
     }
 
     private int getHorizontalMarginPx(InvariantDeviceProfile idp, Resources res) {
@@ -537,22 +658,80 @@
                 : res.getDimensionPixelSize(R.dimen.dynamic_grid_left_right_margin);
     }
 
-    private void updateHotseatIconSize(int hotseatIconSizePx) {
+    /** Updates hotseatCellHeightPx and hotseatBarSizePx */
+    private void updateHotseatSizes(int hotseatIconSizePx) {
         // Ensure there is enough space for folder icons, which have a slightly larger radius.
         hotseatCellHeightPx = (int) Math.ceil(hotseatIconSizePx * ICON_OVERLAP_FACTOR);
+
         if (isVerticalBarLayout()) {
             hotseatBarSizePx = hotseatIconSizePx + hotseatBarSidePaddingStartPx
                     + hotseatBarSidePaddingEndPx;
+        } else if (isQsbInline) {
+            hotseatBarSizePx = Math.max(hotseatIconSizePx, hotseatQsbVisualHeight)
+                    + hotseatBarBottomSpacePx;
         } else {
-            hotseatBarSizePx = hotseatIconSizePx + hotseatBarTopPaddingPx
-                    + hotseatBarBottomPaddingPx + (isScalableGrid ? 0 : hotseatExtraVerticalSize)
-                    + hotseatBarSizeExtraSpacePx;
+            hotseatBarSizePx = hotseatIconSizePx
+                    + hotseatQsbSpace
+                    + hotseatQsbVisualHeight
+                    + hotseatBarBottomSpacePx;
         }
     }
 
+    /**
+     * Calculates the width of the hotseat, changing spaces between the icons and removing icons if
+     * necessary.
+     */
+    public void recalculateHotseatWidthAndBorderSpace() {
+        if (!isScalableGrid) return;
+
+        int columns = inv.hotseatColumnSpan[mTypeIndex];
+        float hotseatWidthPx = getIconToIconWidthForColumns(columns);
+        hotseatBorderSpace = calculateHotseatBorderSpace(hotseatWidthPx, /* numExtraBorder= */ 0);
+        hotseatQsbWidth = calculateQsbWidth(hotseatBorderSpace);
+        // Spaces should be correct when the nav buttons are not inline
+        if (!areNavButtonsInline) {
+            return;
+        }
+
+        // The side space with inline buttons should be what is defined in InvariantDeviceProfile
+        int sideSpacePx = inlineNavButtonsEndSpacingPx;
+        int maxHotseatWidthPx = availableWidthPx - sideSpacePx - hotseatBarEndOffset;
+        int maxHotseatIconsWidthPx = maxHotseatWidthPx - (isQsbInline ? hotseatQsbWidth : 0);
+        hotseatBorderSpace = calculateHotseatBorderSpace(maxHotseatIconsWidthPx,
+                (isQsbInline ? 1 : 0) + /* border between nav buttons and first icon */ 1);
+
+        if (hotseatBorderSpace >= mMinHotseatIconSpacePx) {
+            return;
+        }
+
+        // Border space can't be less than the minimum
+        hotseatBorderSpace = mMinHotseatIconSpacePx;
+        int requiredWidth = getHotseatRequiredWidth();
+
+        // If there is an inline qsb, change its size
+        if (isQsbInline) {
+            hotseatQsbWidth -= requiredWidth - maxHotseatWidthPx;
+            if (hotseatQsbWidth >= mMinHotseatQsbWidthPx) {
+                return;
+            }
+
+            // QSB can't be less than the minimum
+            hotseatQsbWidth = mMinHotseatQsbWidthPx;
+        }
+
+        maxHotseatIconsWidthPx = maxHotseatWidthPx - (isQsbInline ? hotseatQsbWidth : 0);
+
+        // If it still doesn't fit, start removing icons
+        do {
+            numShownHotseatIcons--;
+            hotseatBorderSpace = calculateHotseatBorderSpace(maxHotseatIconsWidthPx,
+                    (isQsbInline ? 1 : 0) + /* border between nav buttons and first icon */ 1);
+        } while (hotseatBorderSpace < mMinHotseatIconSpacePx && numShownHotseatIcons > 1);
+
+    }
+
     private Point getCellLayoutBorderSpace(InvariantDeviceProfile idp) {
         return getCellLayoutBorderSpace(idp, 1f);
-
     }
 
     private Point getCellLayoutBorderSpace(InvariantDeviceProfile idp, float scale) {
@@ -570,31 +749,21 @@
         return mInfo;
     }
 
-    /**
-     * We inset the widget padding added by the system and instead rely on the border spacing
-     * between cells to create reliable consistency between widgets
-     */
-    public boolean shouldInsetWidgets() {
-        Rect widgetPadding = inv.defaultWidgetPadding;
-
-        // Check all sides to ensure that the widget won't overlap into another cell, or into
-        // status bar.
-        return workspaceTopPadding > widgetPadding.top
-                && cellLayoutBorderSpacePx.x > widgetPadding.left
-                && cellLayoutBorderSpacePx.y > widgetPadding.top
-                && cellLayoutBorderSpacePx.x > widgetPadding.right
-                && cellLayoutBorderSpacePx.y > widgetPadding.bottom;
-    }
-
     public Builder toBuilder(Context context) {
         WindowBounds bounds = new WindowBounds(
                 widthPx, heightPx, availableWidthPx, availableHeightPx, rotationHint);
         bounds.bounds.offsetTo(windowX, windowY);
         bounds.insets.set(mInsets);
+
+        SparseArray<DotRenderer> dotRendererCache = new SparseArray<>();
+        dotRendererCache.put(iconSizePx, mDotRendererWorkSpace);
+        dotRendererCache.put(allAppsIconSizePx, mDotRendererAllApps);
+
         return new Builder(context, inv, mInfo)
                 .setWindowBounds(bounds)
-                .setUseTwoPanels(isTwoPanels)
+                .setIsMultiDisplay(isMultiDisplay)
                 .setMultiWindowMode(isMultiWindowMode)
+                .setDotRendererCache(dotRendererCache)
                 .setGestureMode(isGestureMode);
     }
 
@@ -611,13 +780,18 @@
                 .setMultiWindowMode(true)
                 .build();
 
-        profile.hideWorkspaceLabelsIfNotEnoughSpace();
-
         // We use these scales to measure and layout the widgets using their full invariant profile
         // sizes and then draw them scaled and centered to fit in their multi-window mode cellspans.
         float appWidgetScaleX = (float) profile.getCellSize().x / getCellSize().x;
         float appWidgetScaleY = (float) profile.getCellSize().y / getCellSize().y;
-        profile.appWidgetScale.set(appWidgetScaleX, appWidgetScaleY);
+        if (appWidgetScaleX != 1 || appWidgetScaleY != 1) {
+            final PointF p = new PointF(appWidgetScaleX, appWidgetScaleY);
+            profile = profile.toBuilder(context)
+                    .setViewScaleProvider(i -> p)
+                    .build();
+        }
+
+        profile.hideWorkspaceLabelsIfNotEnoughSpace();
 
         return profile;
     }
@@ -655,9 +829,6 @@
         int cellLayoutHorizontalPadding =
                 (cellLayoutPaddingPx.left + cellLayoutPaddingPx.right) / 2;
         if (isTablet) {
-            allAppsLeftRightPadding =
-                    res.getDimensionPixelSize(R.dimen.all_apps_bottom_sheet_horizontal_padding);
-
             int usedWidth = (allAppsCellWidthPx * numShownAllAppsColumns)
                     + (allAppsBorderSpacePx.x * (numShownAllAppsColumns - 1))
                     + allAppsLeftRightPadding * 2;
@@ -668,10 +839,29 @@
         }
     }
 
+    private void setupAllAppsStyle(Context context) {
+        TypedArray allAppsStyle;
+        if (inv.allAppsStyle != INVALID_RESOURCE_HANDLE) {
+            allAppsStyle = context.obtainStyledAttributes(inv.allAppsStyle,
+                    R.styleable.AllAppsStyle);
+        } else {
+            allAppsStyle = context.obtainStyledAttributes(R.style.AllAppsStyleDefault,
+                    R.styleable.AllAppsStyle);
+        }
+        allAppsLeftRightPadding = allAppsStyle.getDimensionPixelSize(
+                R.styleable.AllAppsStyle_horizontalPadding, 0);
+        allAppsStyle.recycle();
+    }
+
     /**
      * Returns the amount of extra (or unused) vertical space.
      */
     private int updateAvailableDimensions(Resources res) {
+        float invIconSizeDp = inv.iconSize[mTypeIndex];
+        float invIconTextSizeSp = inv.iconTextSize[mTypeIndex];
+        iconSizePx = Math.max(1, pxFromDp(invIconSizeDp, mMetrics));
+        iconTextSizePx = pxFromSp(invIconTextSizeSp, mMetrics);
+
         updateIconSize(1f, res);
 
         updateWorkspacePadding();
@@ -701,7 +891,6 @@
             extraHeight = Math.max(0, maxHeight - getCellLayoutHeightSpecification());
         }
 
-        updateAvailableFolderCellDimensions(res);
         return Math.round(extraHeight);
     }
 
@@ -728,20 +917,64 @@
 
         // Workspace
         final boolean isVerticalLayout = isVerticalBarLayout();
-        float invIconSizeDp = inv.iconSize[mTypeIndex];
-        float invIconTextSizeSp = inv.iconTextSize[mTypeIndex];
-
-        iconSizePx = Math.max(1, pxFromDp(invIconSizeDp, mMetrics, iconScale));
-        iconTextSizePx = (int) (pxFromSp(invIconTextSizeSp, mMetrics) * iconScale);
         iconDrawablePaddingPx = (int) (iconDrawablePaddingOriginalPx * iconScale);
-
         cellLayoutBorderSpacePx = getCellLayoutBorderSpace(inv, scale);
 
         if (isScalableGrid) {
             cellWidthPx = pxFromDp(inv.minCellSize[mTypeIndex].x, mMetrics, scale);
             cellHeightPx = pxFromDp(inv.minCellSize[mTypeIndex].y, mMetrics, scale);
-            int cellContentHeight = iconSizePx + iconDrawablePaddingPx
-                    + Utilities.calculateTextHeight(iconTextSizePx);
+
+            if (cellWidthPx < iconSizePx) {
+                // If cellWidth no longer fit iconSize, reduce borderSpace to make cellWidth bigger.
+                int numColumns = getPanelCount() * inv.numColumns;
+                int numBorders = numColumns - 1;
+                int extraWidthRequired = (iconSizePx - cellWidthPx) * numColumns;
+                if (cellLayoutBorderSpacePx.x * numBorders >= extraWidthRequired) {
+                    cellWidthPx = iconSizePx;
+                    cellLayoutBorderSpacePx.x -= extraWidthRequired / numBorders;
+                } else {
+                    // If it still doesn't fit, set borderSpace to 0 and distribute the space for
+                    // cellWidth, and reduce iconSize.
+                    cellWidthPx = (cellWidthPx * numColumns
+                            + cellLayoutBorderSpacePx.x * numBorders) / numColumns;
+                    iconSizePx = Math.min(iconSizePx, cellWidthPx);
+                    cellLayoutBorderSpacePx.x = 0;
+                }
+            }
+
+            int cellTextAndPaddingHeight =
+                    iconDrawablePaddingPx + Utilities.calculateTextHeight(iconTextSizePx);
+            int cellContentHeight = iconSizePx + cellTextAndPaddingHeight;
+            if (cellHeightPx < cellContentHeight) {
+                // If cellHeight no longer fit iconSize, reduce borderSpace to make cellHeight
+                // bigger.
+                int numBorders = inv.numRows - 1;
+                int extraHeightRequired = (cellContentHeight - cellHeightPx) * inv.numRows;
+                if (cellLayoutBorderSpacePx.y * numBorders >= extraHeightRequired) {
+                    cellHeightPx = cellContentHeight;
+                    cellLayoutBorderSpacePx.y -= extraHeightRequired / numBorders;
+                } else {
+                    // If it still doesn't fit, set borderSpace to 0 to recover space.
+                    cellHeightPx = (cellHeightPx * inv.numRows
+                            + cellLayoutBorderSpacePx.y * numBorders) / inv.numRows;
+                    cellLayoutBorderSpacePx.y = 0;
+                    // Reduce iconDrawablePaddingPx to make cellContentHeight smaller.
+                    int cellContentWithoutPadding = cellContentHeight - iconDrawablePaddingPx;
+                    if (cellContentWithoutPadding <= cellHeightPx) {
+                        iconDrawablePaddingPx = cellContentHeight - cellHeightPx;
+                    } else {
+                        // If it still doesn't fit, set iconDrawablePaddingPx to 0 to recover space,
+                        // then proportional reduce iconSizePx and iconTextSizePx to fit.
+                        iconDrawablePaddingPx = 0;
+                        float ratio = cellHeightPx / (float) cellContentWithoutPadding;
+                        iconSizePx = (int) (iconSizePx * ratio);
+                        iconTextSizePx = (int) (iconTextSizePx * ratio);
+                    }
+                    cellTextAndPaddingHeight =
+                            iconDrawablePaddingPx + Utilities.calculateTextHeight(iconTextSizePx);
+                }
+                cellContentHeight = iconSizePx + cellTextAndPaddingHeight;
+            }
             cellYPaddingPx = Math.max(0, cellHeightPx - cellContentHeight) / 2;
             desiredWorkspaceHorizontalMarginPx =
                     (int) (desiredWorkspaceHorizontalMarginOriginalPx * scale);
@@ -764,28 +997,34 @@
         // All apps
         updateAllAppsIconSize(scale, res);
 
-        updateHotseatIconSize(iconSizePx);
+        updateHotseatSizes(iconSizePx);
 
         // Folder icon
         folderIconSizePx = IconNormalizer.getNormalizedCircleSize(iconSizePx);
         folderIconOffsetYPx = (iconSizePx - folderIconSizePx) / 2;
+
+        // Update widget padding:
+        float minSpacing = pxFromDp(MIN_WIDGET_PADDING_DP, mMetrics);
+        if (cellLayoutBorderSpacePx.x < minSpacing
+                || cellLayoutBorderSpacePx.y < minSpacing) {
+            widgetPadding.left = widgetPadding.right =
+                    Math.round(Math.max(0, minSpacing - cellLayoutBorderSpacePx.x));
+            widgetPadding.top = widgetPadding.bottom =
+                    Math.round(Math.max(0, minSpacing - cellLayoutBorderSpacePx.y));
+        } else {
+            widgetPadding.setEmpty();
+        }
     }
 
     /**
-     * Hotseat width spans a certain number of columns on scalable grids.
-     * This method calculates the space between the icons to achieve that width.
+     * This method calculates the space between the icons to achieve a certain width.
      */
-    private int calculateHotseatBorderSpace() {
-        if (!isScalableGrid) return 0;
-        //TODO(http://b/228998082) remove this when 3 button spaces are fixed
-        if (areNavButtonsInline) {
-            return pxFromDp(inv.hotseatBorderSpaces[mTypeIndex], mMetrics);
-        } else {
-            int columns = inv.hotseatColumnSpan[mTypeIndex];
-            float hotseatWidthPx = getIconToIconWidthForColumns(columns);
-            float hotseatIconsTotalPx = iconSizePx * numShownHotseatIcons;
-            return (int) (hotseatWidthPx - hotseatIconsTotalPx) / (numShownHotseatIcons - 1);
-        }
+    private int calculateHotseatBorderSpace(float hotseatWidthPx, int numExtraBorder) {
+        float hotseatIconsTotalPx = iconSizePx * numShownHotseatIcons;
+        int hotseatBorderSpacePx =
+                (int) (hotseatWidthPx - hotseatIconsTotalPx)
+                        / (numShownHotseatIcons - 1 + numExtraBorder);
+        return Math.min(hotseatBorderSpacePx, mMaxHotseatIconSpacePx);
     }
 
 
@@ -798,17 +1037,41 @@
                 pxFromDp(inv.allAppsBorderSpaces[mTypeIndex].y, mMetrics, scale));
         // AllApps cells don't have real space between cells,
         // so we add the border space to the cell height
-        allAppsCellHeightPx = pxFromDp(inv.allAppsCellSize[mTypeIndex].y, mMetrics, scale)
+        allAppsCellHeightPx = pxFromDp(inv.allAppsCellSize[mTypeIndex].y, mMetrics)
                 + allAppsBorderSpacePx.y;
         // but width is just the cell,
         // the border is added in #updateAllAppsContainerWidth
-        allAppsCellWidthPx = pxFromDp(inv.allAppsCellSize[mTypeIndex].x, mMetrics, scale);
         if (isScalableGrid) {
-            allAppsIconSizePx =
-                    pxFromDp(inv.allAppsIconSize[mTypeIndex], mMetrics, scale);
-            allAppsIconTextSizePx =
-                    pxFromSp(inv.allAppsIconTextSize[mTypeIndex], mMetrics, scale);
+            allAppsIconSizePx = pxFromDp(inv.allAppsIconSize[mTypeIndex], mMetrics);
+            allAppsIconTextSizePx = pxFromSp(inv.allAppsIconTextSize[mTypeIndex], mMetrics);
             allAppsIconDrawablePaddingPx = iconDrawablePaddingOriginalPx;
+            allAppsCellWidthPx = pxFromDp(inv.allAppsCellSize[mTypeIndex].x, mMetrics, scale);
+
+            if (allAppsCellWidthPx < allAppsIconSizePx) {
+                // If allAppsCellWidth no longer fit allAppsIconSize, reduce allAppsBorderSpace to
+                // make allAppsCellWidth bigger.
+                int numBorders = inv.numAllAppsColumns - 1;
+                int extraWidthRequired =
+                        (allAppsIconSizePx - allAppsCellWidthPx) * inv.numAllAppsColumns;
+                if (allAppsBorderSpacePx.x * numBorders >= extraWidthRequired) {
+                    allAppsCellWidthPx = allAppsIconSizePx;
+                    allAppsBorderSpacePx.x -= extraWidthRequired / numBorders;
+                } else {
+                    // If it still doesn't fit, set allAppsBorderSpace to 0 and distribute the space
+                    // for allAppsCellWidth, and reduce allAppsIconSize.
+                    allAppsCellWidthPx = (allAppsCellWidthPx * inv.numAllAppsColumns
+                            + allAppsBorderSpacePx.x * numBorders) / inv.numAllAppsColumns;
+                    allAppsIconSizePx = Math.min(allAppsIconSizePx, allAppsCellWidthPx);
+                    allAppsBorderSpacePx.x = 0;
+                }
+            }
+
+            int cellContentHeight = allAppsIconSizePx
+                    + Utilities.calculateTextHeight(allAppsIconTextSizePx) + allAppsBorderSpacePx.y;
+            if (allAppsCellHeightPx < cellContentHeight) {
+                // Increase allAppsCellHeight to fit its content.
+                allAppsCellHeightPx = cellContentHeight;
+            }
         } else {
             float invIconSizeDp = inv.allAppsIconSize[mTypeIndex];
             float invIconTextSizeSp = inv.allAppsIconTextSize[mTypeIndex];
@@ -816,6 +1079,7 @@
             allAppsIconTextSizePx = (int) (pxFromSp(invIconTextSizeSp, mMetrics) * scale);
             allAppsIconDrawablePaddingPx =
                     res.getDimensionPixelSize(R.dimen.all_apps_icon_drawable_padding);
+            allAppsCellWidthPx = allAppsIconSizePx + (2 * allAppsIconDrawablePaddingPx);
         }
 
         updateAllAppsContainerWidth(res);
@@ -827,24 +1091,22 @@
     private void updateAvailableFolderCellDimensions(Resources res) {
         updateFolderCellSize(1f, res);
 
-        final int folderBottomPanelSize = res.getDimensionPixelSize(R.dimen.folder_label_height);
-
-        // Don't let the folder get too close to the edges of the screen.
-        int folderMargin = edgeMarginPx * 2;
+        // For usability we can't have the folder use the whole width of the screen
         Point totalWorkspacePadding = getTotalWorkspacePadding();
 
-        // Check if the icons fit within the available height.
+        // Check if the folder fit within the available height.
         float contentUsedHeight = folderCellHeightPx * inv.numFolderRows
-                + ((inv.numFolderRows - 1) * folderCellLayoutBorderSpacePx.y);
-        int contentMaxHeight = availableHeightPx - totalWorkspacePadding.y - folderBottomPanelSize
-                - folderMargin - folderContentPaddingTop;
+                + ((inv.numFolderRows - 1) * folderCellLayoutBorderSpacePx)
+                + folderFooterHeightPx
+                + folderContentPaddingTop;
+        int contentMaxHeight = availableHeightPx - totalWorkspacePadding.y;
         float scaleY = contentMaxHeight / contentUsedHeight;
 
-        // Check if the icons fit within the available width.
+        // Check if the folder fit within the available width.
         float contentUsedWidth = folderCellWidthPx * inv.numFolderColumns
-                + ((inv.numFolderColumns - 1) * folderCellLayoutBorderSpacePx.x);
-        int contentMaxWidth = availableWidthPx - totalWorkspacePadding.x - folderMargin
-                - folderContentPaddingLeftRight * 2;
+                + ((inv.numFolderColumns - 1) * folderCellLayoutBorderSpacePx)
+                + folderContentPaddingLeftRight * 2;
+        int contentMaxWidth = availableWidthPx - totalWorkspacePadding.x;
         float scaleX = contentMaxWidth / contentUsedWidth;
 
         float scale = Math.min(scaleX, scaleY);
@@ -854,27 +1116,29 @@
     }
 
     private void updateFolderCellSize(float scale, Resources res) {
-        float invIconSizeDp = isVerticalBarLayout()
-                ? inv.iconSize[INDEX_LANDSCAPE]
-                : inv.iconSize[INDEX_DEFAULT];
+        float invIconSizeDp = inv.iconSize[mTypeIndex];
         folderChildIconSizePx = Math.max(1, pxFromDp(invIconSizeDp, mMetrics, scale));
-        folderChildTextSizePx =
-                pxFromSp(inv.iconTextSize[INDEX_DEFAULT], mMetrics, scale);
-        folderLabelTextSizePx = (int) (folderChildTextSizePx * folderLabelTextScale);
+        folderChildTextSizePx = pxFromSp(inv.iconTextSize[mTypeIndex], mMetrics, scale);
+        folderLabelTextSizePx = Math.max(pxFromSp(MIN_FOLDER_TEXT_SIZE_SP, mMetrics, scale),
+                (int) (folderChildTextSizePx * folderLabelTextScale));
 
         int textHeight = Utilities.calculateTextHeight(folderChildTextSizePx);
 
         if (isScalableGrid) {
-            int minWidth = folderChildIconSizePx + iconDrawablePaddingPx * 2;
-            int minHeight = folderChildIconSizePx + iconDrawablePaddingPx * 2 + textHeight;
+            if (inv.folderStyle == INVALID_RESOURCE_HANDLE) {
+                folderCellWidthPx = roundPxValueFromFloat(getCellSize().x * scale);
+                folderCellHeightPx = roundPxValueFromFloat(getCellSize().y * scale);
+            } else {
+                folderCellWidthPx = roundPxValueFromFloat(folderCellWidthPx * scale);
+                folderCellHeightPx = roundPxValueFromFloat(folderCellHeightPx * scale);
+            }
 
-            folderCellWidthPx = (int) Math.max(minWidth, cellWidthPx * scale);
-            folderCellHeightPx = (int) Math.max(minHeight, cellHeightPx * scale);
+            folderContentPaddingTop = roundPxValueFromFloat(folderContentPaddingTop * scale);
+            folderCellLayoutBorderSpacePx = roundPxValueFromFloat(
+                    folderCellLayoutBorderSpacePx * scale);
+            folderFooterHeightPx = roundPxValueFromFloat(folderFooterHeightPx * scale);
 
-            int scaledSpace = (int) (folderCellLayoutBorderSpaceOriginalPx * scale);
-            folderCellLayoutBorderSpacePx = new Point(scaledSpace, scaledSpace);
-            folderContentPaddingLeftRight = scaledSpace;
-            folderContentPaddingTop = scaledSpace;
+            folderContentPaddingLeftRight = folderCellLayoutBorderSpacePx;
         } else {
             int cellPaddingX = (int) (res.getDimensionPixelSize(R.dimen.folder_cell_x_padding)
                     * scale);
@@ -883,6 +1147,14 @@
 
             folderCellWidthPx = folderChildIconSizePx + 2 * cellPaddingX;
             folderCellHeightPx = folderChildIconSizePx + 2 * cellPaddingY + textHeight;
+            folderContentPaddingTop = roundPxValueFromFloat(folderContentPaddingTop * scale);
+            folderContentPaddingLeftRight =
+                    res.getDimensionPixelSize(R.dimen.folder_content_padding_left_right);
+            folderFooterHeightPx =
+                    roundPxValueFromFloat(
+                            res.getDimensionPixelSize(R.dimen.folder_footer_height_default)
+                                    * scale);
+
         }
 
         folderChildDrawablePaddingPx = Math.max(0,
@@ -922,6 +1194,13 @@
     }
 
     /**
+     * Returns the left and right space on the cell, which is the cell width - icon size
+     */
+    public int getCellHorizontalSpace() {
+        return getCellSize().x - iconSizePx;
+    }
+
+    /**
      * Gets the number of panels within the workspace.
      */
     public int getPanelCount() {
@@ -932,46 +1211,42 @@
      * Gets the space in px from the bottom of last item in the vertical-bar hotseat to the
      * bottom of the screen.
      */
-    public int getVerticalHotseatLastItemBottomOffset() {
+    private int getVerticalHotseatLastItemBottomOffset(Context context) {
+        Rect hotseatBarPadding = getHotseatLayoutPadding(context);
         int cellHeight = calculateCellHeight(
-                heightPx - mHotseatPadding.top - mHotseatPadding.bottom, hotseatBorderSpace,
+                heightPx - hotseatBarPadding.top - hotseatBarPadding.bottom, hotseatBorderSpace,
                 numShownHotseatIcons);
-        int hotseatSize = (cellHeight * numShownHotseatIcons)
-                + (hotseatBorderSpace * (numShownHotseatIcons - 1));
-        int extraHotseatEndSpacing = (heightPx - hotseatSize) / 2;
         int extraIconEndSpacing = (cellHeight - iconSizePx) / 2;
-        return extraHotseatEndSpacing + extraIconEndSpacing + mHotseatPadding.bottom;
+        return extraIconEndSpacing + hotseatBarPadding.bottom;
     }
 
     /**
      * Gets the scaled top of the workspace in px for the spring-loaded edit state.
      */
     public float getCellLayoutSpringLoadShrunkTop() {
-        workspaceSpringLoadShrunkTop = mInsets.top + dropTargetBarTopMarginPx + dropTargetBarSizePx
+        return mInsets.top + dropTargetBarTopMarginPx + dropTargetBarSizePx
                 + dropTargetBarBottomMarginPx;
-        return workspaceSpringLoadShrunkTop;
     }
 
     /**
      * Gets the scaled bottom of the workspace in px for the spring-loaded edit state.
      */
-    private float getCellLayoutSpringLoadShrunkBottom() {
+    public float getCellLayoutSpringLoadShrunkBottom(Context context) {
         int topOfHotseat = hotseatBarSizePx + springLoadedHotseatBarTopMarginPx;
-        workspaceSpringLoadShrunkBottom =
-                heightPx - (isVerticalBarLayout() ? getVerticalHotseatLastItemBottomOffset()
-                        : topOfHotseat);
-        return workspaceSpringLoadShrunkBottom;
+        return heightPx - (isVerticalBarLayout()
+                ? getVerticalHotseatLastItemBottomOffset(context) : topOfHotseat);
     }
 
     /**
      * Gets the scale of the workspace for the spring-loaded edit state.
      */
-    public float getWorkspaceSpringLoadScale() {
-        float scale = (getCellLayoutSpringLoadShrunkBottom() - getCellLayoutSpringLoadShrunkTop())
-                / getCellLayoutHeight();
+    public float getWorkspaceSpringLoadScale(Context context) {
+        float scale =
+                (getCellLayoutSpringLoadShrunkBottom(context) - getCellLayoutSpringLoadShrunkTop())
+                        / getCellLayoutHeight();
         scale = Math.min(scale, 1f);
 
-        // Reduce scale if next pages would not be visible after scaling the workspace
+        // Reduce scale if next pages would not be visible after scaling the workspace.
         int workspaceWidth = availableWidthPx;
         float scaledWorkspaceWidth = workspaceWidth * scale;
         float maxAvailableWidth = workspaceWidth - (2 * workspaceSpringLoadedMinNextPageVisiblePx);
@@ -1022,10 +1297,11 @@
                 padding.right = hotseatBarSizePx;
             }
         } else {
-            // Pad the bottom of the workspace with search/hotseat bar sizes
-            int hotseatTop = hotseatBarSizePx;
-            int paddingBottom = hotseatTop + workspacePageIndicatorHeight
-                    + workspaceBottomPadding - mWorkspacePageIndicatorOverlapWorkspace;
+            // Pad the bottom of the workspace with hotseat bar
+            // and leave a bit of space in case a widget go all the way down
+            int paddingBottom = hotseatBarSizePx + workspaceBottomPadding
+                    + workspacePageIndicatorHeight - mWorkspacePageIndicatorOverlapWorkspace
+                    - mInsets.bottom;
             int paddingTop = workspaceTopPadding + (isScalableGrid ? 0 : edgeMarginPx);
             int paddingSide = desiredWorkspaceHorizontalMarginPx;
 
@@ -1052,6 +1328,7 @@
      * Returns the padding for hotseat view
      */
     public Rect getHotseatLayoutPadding(Context context) {
+        Rect hotseatBarPadding = new Rect();
         if (isVerticalBarLayout()) {
             // The hotseat icons will be placed in the middle of the hotseat cells.
             // Changing the hotseatCellHeightPx is not affecting hotseat icon positions
@@ -1065,50 +1342,48 @@
                     + diffOverlapFactor), 0);
 
             if (isSeascape()) {
-                mHotseatPadding.set(mInsets.left + hotseatBarSidePaddingStartPx, paddingTop,
+                hotseatBarPadding.set(mInsets.left + hotseatBarSidePaddingStartPx, paddingTop,
                         hotseatBarSidePaddingEndPx, paddingBottom);
             } else {
-                mHotseatPadding.set(hotseatBarSidePaddingEndPx, paddingTop,
+                hotseatBarPadding.set(hotseatBarSidePaddingEndPx, paddingTop,
                         mInsets.right + hotseatBarSidePaddingStartPx, paddingBottom);
             }
         } else if (isTaskbarPresent) {
             // Center the QSB vertically with hotseat
-            int hotseatBottomPadding = getHotseatBottomPadding();
-            int hotseatTopPadding =
-                    workspacePadding.bottom - hotseatBottomPadding - hotseatCellHeightPx;
+            int hotseatBarBottomPadding = getHotseatBarBottomPadding();
+            int hotseatBarTopPadding =
+                    hotseatBarSizePx - hotseatBarBottomPadding - hotseatCellHeightPx;
 
-            // Push icons to the side
-            int additionalQsbSpace = isQsbInline ? qsbWidth + hotseatBorderSpace : 0;
-            int requiredWidth = iconSizePx * numShownHotseatIcons
-                    + hotseatBorderSpace * (numShownHotseatIcons - 1)
-                    + additionalQsbSpace;
-            int endOffset = ApiWrapper.getHotseatEndOffset(context);
-            int hotseatWidth = Math.min(requiredWidth, availableWidthPx - endOffset);
-            int sideSpacing = (availableWidthPx - hotseatWidth) / 2;
+            int hotseatWidth = getHotseatRequiredWidth();
+            int startSpacing;
+            int endSpacing;
+            // Hotseat aligns to the left with nav buttons
+            if (hotseatBarEndOffset > 0) {
+                startSpacing = inlineNavButtonsEndSpacingPx;
+                endSpacing = availableWidthPx - hotseatWidth - startSpacing + hotseatBorderSpace;
+            } else {
+                startSpacing = (availableWidthPx - hotseatWidth) / 2;
+                endSpacing = startSpacing;
+            }
+            startSpacing += getAdditionalQsbSpace();
 
-            mHotseatPadding.set(sideSpacing, hotseatTopPadding, sideSpacing, hotseatBottomPadding);
-
+            hotseatBarPadding.top = hotseatBarTopPadding;
+            hotseatBarPadding.bottom = hotseatBarBottomPadding;
             boolean isRtl = Utilities.isRtl(context.getResources());
             if (isRtl) {
-                mHotseatPadding.right += additionalQsbSpace;
+                hotseatBarPadding.left = endSpacing;
+                hotseatBarPadding.right = startSpacing;
             } else {
-                mHotseatPadding.left += additionalQsbSpace;
+                hotseatBarPadding.left = startSpacing;
+                hotseatBarPadding.right = endSpacing;
             }
 
-            if (endOffset > sideSpacing) {
-                int diff = isRtl
-                        ? sideSpacing - endOffset
-                        : endOffset - sideSpacing;
-                mHotseatPadding.left -= diff;
-                mHotseatPadding.right += diff;
-            }
         } else if (isScalableGrid) {
-            int sideSpacing = (availableWidthPx - qsbWidth) / 2;
-            mHotseatPadding.set(sideSpacing,
-                    hotseatBarTopPaddingPx,
+            int sideSpacing = (availableWidthPx - hotseatQsbWidth) / 2;
+            hotseatBarPadding.set(sideSpacing,
+                    0,
                     sideSpacing,
-                    hotseatBarSizePx - hotseatCellHeightPx - hotseatBarTopPaddingPx
-                            + mInsets.bottom);
+                    getHotseatBarBottomPadding());
         } else {
             // We want the edges of the hotseat to line up with the edges of the workspace, but the
             // icons in the hotseat are a different size, and so don't line up perfectly. To account
@@ -1117,14 +1392,29 @@
             float workspaceCellWidth = (float) widthPx / inv.numColumns;
             float hotseatCellWidth = (float) widthPx / numShownHotseatIcons;
             int hotseatAdjustment = Math.round((workspaceCellWidth - hotseatCellWidth) / 2);
-            mHotseatPadding.set(hotseatAdjustment + workspacePadding.left + cellLayoutPaddingPx.left
-                            + mInsets.left, hotseatBarTopPaddingPx,
+            hotseatBarPadding.set(
+                    hotseatAdjustment + workspacePadding.left + cellLayoutPaddingPx.left
+                            + mInsets.left,
+                    0,
                     hotseatAdjustment + workspacePadding.right + cellLayoutPaddingPx.right
                             + mInsets.right,
-                    hotseatBarSizePx - hotseatCellHeightPx - hotseatBarTopPaddingPx
-                            + mInsets.bottom);
+                    getHotseatBarBottomPadding());
         }
-        return mHotseatPadding;
+        return hotseatBarPadding;
+    }
+
+    private int getAdditionalQsbSpace() {
+        return isQsbInline ? hotseatQsbWidth + hotseatBorderSpace : 0;
+    }
+
+    /**
+     * Calculate how much space the hotseat needs to be shown completely
+     */
+    private int getHotseatRequiredWidth() {
+        int additionalQsbSpace = getAdditionalQsbSpace();
+        return iconSizePx * numShownHotseatIcons
+                + hotseatBorderSpace * (numShownHotseatIcons - (areNavButtonsInline ? 0 : 1))
+                + additionalQsbSpace;
     }
 
     /**
@@ -1132,27 +1422,22 @@
      */
     public int getQsbOffsetY() {
         if (isQsbInline) {
-            return hotseatBarBottomPaddingPx;
-        }
-
-        int freeSpace = isTaskbarPresent
-                ? workspacePadding.bottom
-                : hotseatBarSizePx - hotseatCellHeightPx - hotseatQsbHeight;
-
-        if (isScalableGrid && qsbBottomMarginPx > mInsets.bottom) {
-            // Note that taskbarSize = 0 unless isTaskbarPresent.
-            return Math.min(qsbBottomMarginPx + taskbarSize, freeSpace);
+            return getHotseatBarBottomPadding() - ((hotseatQsbHeight - hotseatCellHeightPx) / 2);
+        } else if (isTaskbarPresent) { // QSB on top
+            return hotseatBarSizePx - hotseatQsbHeight + hotseatQsbShadowHeight;
         } else {
-            return (int) (freeSpace * mQsbCenterFactor)
-                    + (isTaskbarPresent ? taskbarSize : mInsets.bottom);
+            return hotseatBarBottomSpacePx - hotseatQsbShadowHeight;
         }
     }
 
-    private int getHotseatBottomPadding() {
-        if (isQsbInline) {
-            return getQsbOffsetY() - (Math.abs(hotseatQsbHeight - hotseatCellHeightPx) / 2);
+    /**
+     * Returns the number of pixels the hotseat is translated from the bottom of the screen.
+     */
+    private int getHotseatBarBottomPadding() {
+        if (isTaskbarPresent) { // QSB on top or inline
+            return hotseatBarBottomSpacePx - (Math.abs(hotseatCellHeightPx - iconSizePx) / 2);
         } else {
-            return (getQsbOffsetY() - taskbarSize) / 2;
+            return hotseatBarSizePx - hotseatCellHeightPx;
         }
     }
 
@@ -1160,28 +1445,41 @@
      * Returns the number of pixels the taskbar is translated from the bottom of the screen.
      */
     public int getTaskbarOffsetY() {
-        int taskbarIconBottomSpace = (taskbarSize - iconSizePx) / 2;
+        int taskbarIconBottomSpace = (taskbarHeight - iconSizePx) / 2;
         int launcherIconBottomSpace =
                 Math.min((hotseatCellHeightPx - iconSizePx) / 2, gridVisualizationPaddingY);
-        return getHotseatBottomPadding() + launcherIconBottomSpace - taskbarIconBottomSpace;
+        return getHotseatBarBottomPadding() + launcherIconBottomSpace - taskbarIconBottomSpace;
     }
 
     /**
      * Returns the number of pixels required below OverviewActions excluding insets.
      */
     public int getOverviewActionsClaimedSpaceBelow() {
-        if (isTaskbarPresent && !isGestureMode) {
-            // Align vertically to where nav buttons are.
-            return  ((taskbarSize - overviewActionsHeight) / 2) + getTaskbarOffsetY();
+        if (isTaskbarPresent) {
+            return taskbarHeight + taskbarBottomMargin * 2;
         }
-
-        return isTaskbarPresent ? stashedTaskbarSize : mInsets.bottom;
+        return mInsets.bottom;
     }
 
     /** Gets the space that the overview actions will take, including bottom margin. */
     public int getOverviewActionsClaimedSpace() {
-        return overviewActionsTopMarginPx + overviewActionsHeight
-                + getOverviewActionsClaimedSpaceBelow();
+        int overviewActionsSpace = isTablet && FeatureFlags.ENABLE_GRID_ONLY_OVERVIEW.get()
+                ? 0
+                : (overviewActionsTopMarginPx + overviewActionsHeight);
+        return overviewActionsSpace + getOverviewActionsClaimedSpaceBelow();
+    }
+
+    /**
+     * Takes the View and return the scales of width and height depending on the DeviceProfile
+     * specifications
+     *
+     * @param itemInfo The tag of the widget view
+     * @return A PointF instance with the x set to be the scale of width, and y being the scale of
+     * height
+     */
+    @NonNull
+    public PointF getAppWidgetScale(@Nullable final ItemInfo itemInfo) {
+        return mViewScaleProvider.getScaleFromItemInfo(itemInfo);
     }
 
     /**
@@ -1196,7 +1494,7 @@
                     mInsets.top + availableHeightPx);
         } else {
             // Folders should only appear below the drop target bar and above the hotseat
-            int hotseatTop = isTaskbarPresent ? taskbarSize : hotseatBarSizePx;
+            int hotseatTop = isTaskbarPresent ? taskbarHeight : hotseatBarSizePx;
             return new Rect(mInsets.left + edgeMarginPx,
                     mInsets.top + dropTargetBarSizePx + edgeMarginPx,
                     mInsets.left + availableWidthPx - edgeMarginPx,
@@ -1267,7 +1565,12 @@
         return "\t" + name + ": " + value + "px (" + dpiFromPx(value, mMetrics.densityDpi) + "dp)";
     }
 
-    public void dump(String prefix, PrintWriter writer) {
+    private String dpPointFToString(String name, PointF value) {
+        return String.format(Locale.ENGLISH, "\t%s: PointF(%.1f, %.1f)dp", name, value.x, value.y);
+    }
+
+    /** Dumps various DeviceProfile variables to the specified writer. */
+    public void dump(Context context, String prefix, PrintWriter writer) {
         writer.println(prefix + "DeviceProfile:");
         writer.println(prefix + "\t1 dp = " + mMetrics.density + " px");
 
@@ -1294,6 +1597,7 @@
 
         writer.println(prefix + "\taspectRatio:" + aspectRatio);
 
+        writer.println(prefix + "\tisResponsiveGrid:" + mIsResponsiveGrid);
         writer.println(prefix + "\tisScalableGrid:" + isScalableGrid);
 
         writer.println(prefix + "\tinv.numRows: " + inv.numRows);
@@ -1301,7 +1605,7 @@
         writer.println(prefix + "\tinv.numSearchContainerColumns: "
                 + inv.numSearchContainerColumns);
 
-        writer.println(prefix + "\tminCellSize: " + inv.minCellSize[mTypeIndex] + "dp");
+        writer.println(prefix + dpPointFToString("minCellSize", inv.minCellSize[mTypeIndex]));
 
         writer.println(prefix + pxToDpStr("cellWidthPx", cellWidthPx));
         writer.println(prefix + pxToDpStr("cellHeightPx", cellHeightPx));
@@ -1313,9 +1617,12 @@
                 cellLayoutBorderSpacePx.x));
         writer.println(prefix + pxToDpStr("cellLayoutBorderSpacePx Vertical",
                 cellLayoutBorderSpacePx.y));
-        writer.println(prefix + pxToDpStr("cellLayoutPaddingPx.left", cellLayoutPaddingPx.left));
-        writer.println(prefix + pxToDpStr("cellLayoutPaddingPx.top", cellLayoutPaddingPx.top));
-        writer.println(prefix + pxToDpStr("cellLayoutPaddingPx.right", cellLayoutPaddingPx.right));
+        writer.println(
+                prefix + pxToDpStr("cellLayoutPaddingPx.left", cellLayoutPaddingPx.left));
+        writer.println(
+                prefix + pxToDpStr("cellLayoutPaddingPx.top", cellLayoutPaddingPx.top));
+        writer.println(
+                prefix + pxToDpStr("cellLayoutPaddingPx.right", cellLayoutPaddingPx.right));
         writer.println(
                 prefix + pxToDpStr("cellLayoutPaddingPx.bottom", cellLayoutPaddingPx.bottom));
 
@@ -1323,30 +1630,39 @@
         writer.println(prefix + pxToDpStr("iconTextSizePx", iconTextSizePx));
         writer.println(prefix + pxToDpStr("iconDrawablePaddingPx", iconDrawablePaddingPx));
 
+        writer.println(prefix + "\tinv.numFolderRows: " + inv.numFolderRows);
+        writer.println(prefix + "\tinv.numFolderColumns: " + inv.numFolderColumns);
         writer.println(prefix + pxToDpStr("folderCellWidthPx", folderCellWidthPx));
         writer.println(prefix + pxToDpStr("folderCellHeightPx", folderCellHeightPx));
         writer.println(prefix + pxToDpStr("folderChildIconSizePx", folderChildIconSizePx));
         writer.println(prefix + pxToDpStr("folderChildTextSizePx", folderChildTextSizePx));
         writer.println(prefix + pxToDpStr("folderChildDrawablePaddingPx",
                 folderChildDrawablePaddingPx));
-        writer.println(prefix + pxToDpStr("folderCellLayoutBorderSpaceOriginalPx",
-                folderCellLayoutBorderSpaceOriginalPx));
-        writer.println(prefix + pxToDpStr("folderCellLayoutBorderSpacePx Horizontal",
-                folderCellLayoutBorderSpacePx.x));
-        writer.println(prefix + pxToDpStr("folderCellLayoutBorderSpacePx Vertical",
-                folderCellLayoutBorderSpacePx.y));
+        writer.println(prefix + pxToDpStr("folderCellLayoutBorderSpacePx",
+                folderCellLayoutBorderSpacePx));
+        writer.println(prefix + pxToDpStr("folderContentPaddingLeftRight",
+                folderContentPaddingLeftRight));
+        writer.println(prefix + pxToDpStr("folderTopPadding", folderContentPaddingTop));
+        writer.println(prefix + pxToDpStr("folderFooterHeight", folderFooterHeightPx));
 
         writer.println(prefix + pxToDpStr("bottomSheetTopPadding", bottomSheetTopPadding));
+        writer.println(prefix + "\tbottomSheetOpenDuration: " + bottomSheetOpenDuration);
+        writer.println(prefix + "\tbottomSheetCloseDuration: " + bottomSheetCloseDuration);
+        writer.println(prefix + "\tbottomSheetWorkspaceScale: " + bottomSheetWorkspaceScale);
+        writer.println(prefix + "\tbottomSheetDepth: " + bottomSheetDepth);
 
         writer.println(prefix + pxToDpStr("allAppsShiftRange", allAppsShiftRange));
         writer.println(prefix + pxToDpStr("allAppsTopPadding", allAppsTopPadding));
+        writer.println(prefix + "\tallAppsOpenDuration: " + allAppsOpenDuration);
+        writer.println(prefix + "\tallAppsCloseDuration: " + allAppsCloseDuration);
         writer.println(prefix + pxToDpStr("allAppsIconSizePx", allAppsIconSizePx));
         writer.println(prefix + pxToDpStr("allAppsIconTextSizePx", allAppsIconTextSizePx));
         writer.println(prefix + pxToDpStr("allAppsIconDrawablePaddingPx",
                 allAppsIconDrawablePaddingPx));
         writer.println(prefix + pxToDpStr("allAppsCellHeightPx", allAppsCellHeightPx));
         writer.println(prefix + pxToDpStr("allAppsCellWidthPx", allAppsCellWidthPx));
-        writer.println(prefix + pxToDpStr("allAppsBorderSpacePx", allAppsBorderSpacePx.x));
+        writer.println(prefix + pxToDpStr("allAppsBorderSpacePxX", allAppsBorderSpacePx.x));
+        writer.println(prefix + pxToDpStr("allAppsBorderSpacePxY", allAppsBorderSpacePx.y));
         writer.println(prefix + "\tnumShownAllAppsColumns: " + numShownAllAppsColumns);
         writer.println(prefix + pxToDpStr("allAppsLeftRightPadding", allAppsLeftRightPadding));
         writer.println(prefix + pxToDpStr("allAppsLeftRightMargin", allAppsLeftRightMargin));
@@ -1354,26 +1670,36 @@
         writer.println(prefix + pxToDpStr("hotseatBarSizePx", hotseatBarSizePx));
         writer.println(prefix + "\tinv.hotseatColumnSpan: " + inv.hotseatColumnSpan[mTypeIndex]);
         writer.println(prefix + pxToDpStr("hotseatCellHeightPx", hotseatCellHeightPx));
-        writer.println(prefix + pxToDpStr("hotseatBarTopPaddingPx", hotseatBarTopPaddingPx));
-        writer.println(prefix + pxToDpStr("hotseatBarBottomPaddingPx", hotseatBarBottomPaddingPx));
+        writer.println(prefix + pxToDpStr("hotseatBarBottomSpacePx", hotseatBarBottomSpacePx));
         writer.println(prefix + pxToDpStr("hotseatBarSidePaddingStartPx",
                 hotseatBarSidePaddingStartPx));
         writer.println(prefix + pxToDpStr("hotseatBarSidePaddingEndPx",
                 hotseatBarSidePaddingEndPx));
+        writer.println(prefix + pxToDpStr("hotseatBarEndOffset", hotseatBarEndOffset));
+        writer.println(prefix + pxToDpStr("hotseatQsbSpace", hotseatQsbSpace));
+        writer.println(prefix + pxToDpStr("hotseatQsbHeight", hotseatQsbHeight));
         writer.println(prefix + pxToDpStr("springLoadedHotseatBarTopMarginPx",
                 springLoadedHotseatBarTopMarginPx));
-        writer.println(prefix + pxToDpStr("mHotseatPadding.top", mHotseatPadding.top));
-        writer.println(prefix + pxToDpStr("mHotseatPadding.bottom", mHotseatPadding.bottom));
-        writer.println(prefix + pxToDpStr("mHotseatPadding.left", mHotseatPadding.left));
-        writer.println(prefix + pxToDpStr("mHotseatPadding.right", mHotseatPadding.right));
+        Rect hotseatLayoutPadding = getHotseatLayoutPadding(context);
+        writer.println(prefix + pxToDpStr("getHotseatLayoutPadding(context).top",
+                hotseatLayoutPadding.top));
+        writer.println(prefix + pxToDpStr("getHotseatLayoutPadding(context).bottom",
+                hotseatLayoutPadding.bottom));
+        writer.println(prefix + pxToDpStr("getHotseatLayoutPadding(context).left",
+                hotseatLayoutPadding.left));
+        writer.println(prefix + pxToDpStr("getHotseatLayoutPadding(context).right",
+                hotseatLayoutPadding.right));
         writer.println(prefix + "\tnumShownHotseatIcons: " + numShownHotseatIcons);
         writer.println(prefix + pxToDpStr("hotseatBorderSpace", hotseatBorderSpace));
         writer.println(prefix + "\tisQsbInline: " + isQsbInline);
-        writer.println(prefix + pxToDpStr("qsbWidth", qsbWidth));
+        writer.println(prefix + pxToDpStr("hotseatQsbWidth", hotseatQsbWidth));
 
         writer.println(prefix + "\tisTaskbarPresent:" + isTaskbarPresent);
         writer.println(prefix + "\tisTaskbarPresentInApps:" + isTaskbarPresentInApps);
-        writer.println(prefix + pxToDpStr("taskbarSize", taskbarSize));
+        writer.println(prefix + pxToDpStr("taskbarHeight", taskbarHeight));
+        writer.println(prefix + pxToDpStr("stashedTaskbarHeight", stashedTaskbarHeight));
+        writer.println(prefix + pxToDpStr("taskbarBottomMargin", taskbarBottomMargin));
+        writer.println(prefix + pxToDpStr("taskbarIconSize", taskbarIconSize));
 
         writer.println(prefix + pxToDpStr("desiredWorkspaceHorizontalMarginPx",
                 desiredWorkspaceHorizontalMarginPx));
@@ -1387,17 +1713,11 @@
         writer.println(prefix + pxToDpStr("extraSpace", extraSpace));
         writer.println(prefix + pxToDpStr("unscaled extraSpace", extraSpace / iconScale));
 
-        if (inv.devicePaddings != null) {
-            int unscaledExtraSpace = (int) (extraSpace / iconScale);
-            writer.println(prefix + pxToDpStr("maxEmptySpace",
-                    inv.devicePaddings.getDevicePadding(unscaledExtraSpace).getMaxEmptySpacePx()));
-        }
+        writer.println(prefix + pxToDpStr("maxEmptySpace", maxEmptySpace));
         writer.println(prefix + pxToDpStr("workspaceTopPadding", workspaceTopPadding));
         writer.println(prefix + pxToDpStr("workspaceBottomPadding", workspaceBottomPadding));
-        writer.println(prefix + pxToDpStr("extraHotseatBottomPadding", extraHotseatBottomPadding));
 
         writer.println(prefix + pxToDpStr("overviewTaskMarginPx", overviewTaskMarginPx));
-        writer.println(prefix + pxToDpStr("overviewTaskMarginGridPx", overviewTaskMarginGridPx));
         writer.println(prefix + pxToDpStr("overviewTaskIconSizePx", overviewTaskIconSizePx));
         writer.println(prefix + pxToDpStr("overviewTaskIconDrawableSizePx",
                 overviewTaskIconDrawableSizePx));
@@ -1409,6 +1729,8 @@
                 overviewActionsTopMarginPx));
         writer.println(prefix + pxToDpStr("overviewActionsHeight",
                 overviewActionsHeight));
+        writer.println(prefix + pxToDpStr("overviewActionsClaimedSpaceBelow",
+                getOverviewActionsClaimedSpaceBelow()));
         writer.println(prefix + pxToDpStr("overviewActionsButtonSpacing",
                 overviewActionsButtonSpacing));
         writer.println(prefix + pxToDpStr("overviewPageSpacing", overviewPageSpacing));
@@ -1420,16 +1742,26 @@
         writer.println(
                 prefix + pxToDpStr("dropTargetBarBottomMarginPx", dropTargetBarBottomMarginPx));
 
-        writer.println(
-                prefix + pxToDpStr("workspaceSpringLoadShrunkTop", workspaceSpringLoadShrunkTop));
-        writer.println(prefix + pxToDpStr("workspaceSpringLoadShrunkBottom",
-                workspaceSpringLoadShrunkBottom));
-        writer.println(prefix + pxToDpStr("workspaceSpringLoadedBottomSpace",
-                workspaceSpringLoadedBottomSpace));
+        writer.println(prefix + pxToDpStr("getCellLayoutSpringLoadShrunkTop()",
+                getCellLayoutSpringLoadShrunkTop()));
+        writer.println(prefix + pxToDpStr("getCellLayoutSpringLoadShrunkBottom()",
+                getCellLayoutSpringLoadShrunkBottom(context)));
         writer.println(prefix + pxToDpStr("workspaceSpringLoadedMinNextPageVisiblePx",
                 workspaceSpringLoadedMinNextPageVisiblePx));
-        writer.println(
-                prefix + pxToDpStr("getWorkspaceSpringLoadScale()", getWorkspaceSpringLoadScale()));
+        writer.println(prefix + pxToDpStr("getWorkspaceSpringLoadScale()",
+                getWorkspaceSpringLoadScale(context)));
+        writer.println(prefix + pxToDpStr("getCellLayoutHeight()", getCellLayoutHeight()));
+        writer.println(prefix + pxToDpStr("getCellLayoutWidth()", getCellLayoutWidth()));
+    }
+
+    /** Returns a reduced representation of this DeviceProfile. */
+    public String toSmallString() {
+        return "isTablet:" + isTablet + ", "
+                + "isMultiDisplay:" + isMultiDisplay + ", "
+                + "widthPx:" + widthPx + ", "
+                + "heightPx:" + heightPx + ", "
+                + "insets:" + mInsets + ", "
+                + "rotationHint:" + rotationHint;
     }
 
     private static Context getContext(Context c, Info info, int orientation, WindowBounds bounds) {
@@ -1454,33 +1786,20 @@
         void onDeviceProfileChanged(DeviceProfile dp);
     }
 
-    /** Allows registering listeners for {@link DeviceProfile} changes. */
-    public interface DeviceProfileListenable {
-
-        /** The current device profile. */
-        DeviceProfile getDeviceProfile();
-
-        /** Registered {@link OnDeviceProfileChangeListener} instances. */
-        List<OnDeviceProfileChangeListener> getOnDeviceProfileChangeListeners();
-
-        /** Notifies listeners of a {@link DeviceProfile} change. */
-        default void dispatchDeviceProfileChanged() {
-            DeviceProfile deviceProfile = getDeviceProfile();
-            List<OnDeviceProfileChangeListener> listeners = getOnDeviceProfileChangeListeners();
-            for (int i = listeners.size() - 1; i >= 0; i--) {
-                listeners.get(i).onDeviceProfileChanged(deviceProfile);
-            }
-        }
-
-        /** Register listener for {@link DeviceProfile} changes. */
-        default void addOnDeviceProfileChangeListener(OnDeviceProfileChangeListener listener) {
-            getOnDeviceProfileChangeListeners().add(listener);
-        }
-
-        /** Unregister listener for {@link DeviceProfile} changes. */
-        default void removeOnDeviceProfileChangeListener(OnDeviceProfileChangeListener listener) {
-            getOnDeviceProfileChangeListeners().remove(listener);
-        }
+    /**
+     * Handler that deals with ItemInfo of the views for the DeviceProfile
+     */
+    @FunctionalInterface
+    public interface ViewScaleProvider {
+        /**
+         * Get the scales from the view
+         *
+         * @param itemInfo The tag of the widget view
+         * @return PointF instance containing the scale information, or null if using the default
+         * app widget scale of this device profile.
+         */
+        @NonNull
+        PointF getScaleFromItemInfo(@Nullable ItemInfo itemInfo);
     }
 
     public static class Builder {
@@ -1489,11 +1808,16 @@
         private Info mInfo;
 
         private WindowBounds mWindowBounds;
-        private boolean mUseTwoPanels;
+        private boolean mIsMultiDisplay;
 
         private boolean mIsMultiWindowMode = false;
         private Boolean mTransposeLayoutWithOrientation;
         private Boolean mIsGestureMode;
+        private ViewScaleProvider mViewScaleProvider = null;
+
+        private SparseArray<DotRenderer> mDotRendererCache;
+
+        private Consumer<DeviceProfile> mOverrideProvider;
 
         public Builder(Context context, InvariantDeviceProfile inv, Info info) {
             mContext = context;
@@ -1506,11 +1830,15 @@
             return this;
         }
 
-        public Builder setUseTwoPanels(boolean useTwoPanels) {
-            mUseTwoPanels = useTwoPanels;
+        public Builder setIsMultiDisplay(boolean isMultiDisplay) {
+            mIsMultiDisplay = isMultiDisplay;
             return this;
         }
 
+        public Builder setDotRendererCache(SparseArray<DotRenderer> dotRendererCache) {
+            mDotRendererCache = dotRendererCache;
+            return this;
+        }
 
         public Builder setWindowBounds(WindowBounds bounds) {
             mWindowBounds = bounds;
@@ -1527,6 +1855,24 @@
             return this;
         }
 
+        public Builder withDimensionsOverride(Consumer<DeviceProfile> overrideProvider) {
+            mOverrideProvider = overrideProvider;
+            return this;
+        }
+
+        /**
+         * Set the viewScaleProvider for the builder
+         *
+         * @param viewScaleProvider The viewScaleProvider to be set for the
+         *                          DeviceProfile
+         * @return This builder
+         */
+        @NonNull
+        public Builder setViewScaleProvider(@Nullable ViewScaleProvider viewScaleProvider) {
+            mViewScaleProvider = viewScaleProvider;
+            return this;
+        }
+
         public DeviceProfile build() {
             if (mWindowBounds == null) {
                 throw new IllegalArgumentException("Window bounds not set");
@@ -1535,10 +1881,20 @@
                 mTransposeLayoutWithOrientation = !mInfo.isTablet(mWindowBounds);
             }
             if (mIsGestureMode == null) {
-                mIsGestureMode = DisplayController.getNavigationMode(mContext).hasGestures;
+                mIsGestureMode = mInfo.navigationMode.hasGestures;
             }
-            return new DeviceProfile(mContext, mInv, mInfo, mWindowBounds, mIsMultiWindowMode,
-                    mTransposeLayoutWithOrientation, mUseTwoPanels, mIsGestureMode);
+            if (mDotRendererCache == null) {
+                mDotRendererCache = new SparseArray<>();
+            }
+            if (mViewScaleProvider == null) {
+                mViewScaleProvider = DEFAULT_PROVIDER;
+            }
+            if (mOverrideProvider == null) {
+                mOverrideProvider = DEFAULT_DIMENSION_PROVIDER;
+            }
+            return new DeviceProfile(mContext, mInv, mInfo, mWindowBounds, mDotRendererCache,
+                    mIsMultiWindowMode, mTransposeLayoutWithOrientation, mIsMultiDisplay,
+                    mIsGestureMode, mViewScaleProvider, mOverrideProvider);
         }
     }
 
diff --git a/src/com/android/launcher3/DropTarget.java b/src/com/android/launcher3/DropTarget.java
index 70d8476..2d99510 100644
--- a/src/com/android/launcher3/DropTarget.java
+++ b/src/com/android/launcher3/DropTarget.java
@@ -20,7 +20,6 @@
 import android.graphics.Rect;
 
 import com.android.launcher3.accessibility.DragViewStateAnnouncer;
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.dragndrop.DragOptions;
 import com.android.launcher3.dragndrop.DragView;
 import com.android.launcher3.dragndrop.DraggableView;
@@ -82,11 +81,8 @@
         public final InstanceId logInstanceId = new InstanceIdSequence().newInstanceId();
 
         public DragObject(Context context) {
-            if (FeatureFlags.FOLDER_NAME_SUGGEST.get()) {
-                Executors.MODEL_EXECUTOR.post(() -> {
-                    folderNameProvider = FolderNameProvider.newInstance(context);
-                });
-            }
+            Executors.MODEL_EXECUTOR.post(() ->
+                    folderNameProvider = FolderNameProvider.newInstance(context));
         }
 
         /**
diff --git a/src/com/android/launcher3/DropTargetBar.java b/src/com/android/launcher3/DropTargetBar.java
index d908440..addcac9 100644
--- a/src/com/android/launcher3/DropTargetBar.java
+++ b/src/com/android/launcher3/DropTargetBar.java
@@ -23,7 +23,6 @@
 import android.content.Context;
 import android.graphics.Rect;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.util.TypedValue;
 import android.view.Gravity;
 import android.view.View;
@@ -31,13 +30,10 @@
 import android.view.ViewPropertyAnimator;
 import android.widget.FrameLayout;
 
-import androidx.annotation.NonNull;
-
 import com.android.launcher3.anim.Interpolators;
 import com.android.launcher3.dragndrop.DragController;
 import com.android.launcher3.dragndrop.DragController.DragListener;
 import com.android.launcher3.dragndrop.DragOptions;
-import com.android.launcher3.testing.TestProtocol;
 
 /*
  * The top bar containing various drop targets: Delete/App Info/Uninstall.
@@ -151,23 +147,28 @@
             int widthSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST);
 
             ButtonDropTarget firstButton = mTempTargets[0];
+            firstButton.setTextSize(TypedValue.COMPLEX_UNIT_PX,
+                    mLauncher.getDeviceProfile().dropTargetTextSizePx);
             firstButton.setTextVisible(true);
             firstButton.setIconVisible(true);
             firstButton.measure(widthSpec, heightSpec);
+            firstButton.resizeTextToFit();
         } else if (visibleCount == 2) {
             DeviceProfile dp = mLauncher.getDeviceProfile();
             int verticalPadding = dp.dropTargetVerticalPaddingPx;
             int horizontalPadding = dp.dropTargetHorizontalPaddingPx;
 
             ButtonDropTarget firstButton = mTempTargets[0];
+            firstButton.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp.dropTargetTextSizePx);
             firstButton.setTextVisible(true);
             firstButton.setIconVisible(true);
             firstButton.setTextMultiLine(false);
-            // Reset second button padding in case it was previously changed to multi-line text.
+            // Reset first button padding in case it was previously changed to multi-line text.
             firstButton.setPadding(horizontalPadding, verticalPadding, horizontalPadding,
                     verticalPadding);
 
             ButtonDropTarget secondButton = mTempTargets[1];
+            secondButton.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp.dropTargetTextSizePx);
             secondButton.setTextVisible(true);
             secondButton.setIconVisible(true);
             secondButton.setTextMultiLine(false);
@@ -175,28 +176,23 @@
             secondButton.setPadding(horizontalPadding, verticalPadding, horizontalPadding,
                     verticalPadding);
 
-            float scale = dp.getWorkspaceSpringLoadScale();
-            int scaledPanelWidth = (int) (dp.getCellLayoutWidth() * scale);
-
             int availableWidth;
             if (dp.isTwoPanels) {
-                // Both buttons for two panel fit to the width of one Cell Layout (less
-                // half of the center gap between the buttons).
-                int halfButtonGap = dp.dropTargetGapPx / 2;
-                availableWidth = scaledPanelWidth - halfButtonGap / 2;
+                // Each button for two panel fits to half the width of the screen excluding the
+                // center gap between the buttons.
+                availableWidth = (dp.availableWidthPx - dp.dropTargetGapPx) / 2;
             } else {
-                // Both buttons plus the button gap do not display past the edge of the scaled
-                // workspace, less a pre-defined gap from the edge of the workspace.
-                availableWidth = scaledPanelWidth - dp.dropTargetGapPx
-                        - 2 * dp.dropTargetButtonWorkspaceEdgeGapPx;
+                // Both buttons plus the button gap do not display past the edge of the screen.
+                availableWidth = dp.availableWidthPx - dp.dropTargetGapPx;
             }
 
             int widthSpec = MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.AT_MOST);
             firstButton.measure(widthSpec, heightSpec);
             if (!mIsVertical) {
-                // Remove icons and put the button's text on two lines if text is truncated.
+                // Remove both icons and put the button's text on two lines if text is truncated.
                 if (firstButton.isTextTruncated(availableWidth)) {
                     firstButton.setIconVisible(false);
+                    secondButton.setIconVisible(false);
                     firstButton.setTextMultiLine(true);
                     firstButton.setPadding(horizontalPadding, verticalPadding / 2,
                             horizontalPadding, verticalPadding / 2);
@@ -209,13 +205,24 @@
             }
             secondButton.measure(widthSpec, heightSpec);
             if (!mIsVertical) {
+                // Remove both icons and put the button's text on two lines if text is truncated.
                 if (secondButton.isTextTruncated(availableWidth)) {
                     secondButton.setIconVisible(false);
+                    firstButton.setIconVisible(false);
                     secondButton.setTextMultiLine(true);
                     secondButton.setPadding(horizontalPadding, verticalPadding / 2,
                             horizontalPadding, verticalPadding / 2);
                 }
             }
+
+            // If text is still truncated, shrink to fit in measured width and resize both targets.
+            float minTextSize =
+                    Math.min(firstButton.resizeTextToFit(), secondButton.resizeTextToFit());
+            if (firstButton.getTextSize() != minTextSize
+                    || secondButton.getTextSize() != minTextSize) {
+                firstButton.setTextSize(minTextSize);
+                secondButton.setTextSize(minTextSize);
+            }
         }
         setMeasuredDimension(width, height);
     }
@@ -229,7 +236,7 @@
 
         DeviceProfile dp = mLauncher.getDeviceProfile();
         // Center vertical bar over scaled workspace, accounting for hotseat offset.
-        float scale = dp.getWorkspaceSpringLoadScale();
+        float scale = dp.getWorkspaceSpringLoadScale(mLauncher);
         Workspace<?> ws = mLauncher.getWorkspace();
         int barCenter;
         if (dp.isTwoPanels) {
@@ -289,9 +296,6 @@
     }
 
     public void animateToVisibility(boolean isVisible) {
-        if (TestProtocol.sDebugTracing) {
-            Log.d(TestProtocol.NO_DROP_TARGET, "8");
-        }
         if (mVisible != isVisible) {
             mVisible = isVisible;
 
@@ -318,9 +322,6 @@
      */
     @Override
     public void onDragStart(DropTarget.DragObject dragObject, DragOptions options) {
-        if (TestProtocol.sDebugTracing) {
-            Log.d(TestProtocol.NO_DROP_TARGET, "7");
-        }
         animateToVisibility(true);
     }
 
@@ -344,16 +345,4 @@
     public ButtonDropTarget[] getDropTargets() {
         return getVisibility() == View.VISIBLE ? mDropTargets : new ButtonDropTarget[0];
     }
-
-    @Override
-    protected void onVisibilityChanged(@NonNull View changedView, int visibility) {
-        super.onVisibilityChanged(changedView, visibility);
-        if (TestProtocol.sDebugTracing) {
-            if (visibility == VISIBLE) {
-                Log.d(TestProtocol.NO_DROP_TARGET, "9");
-            } else {
-                Log.d(TestProtocol.NO_DROP_TARGET, "Hiding drop target", new Exception());
-            }
-        }
-    }
 }
diff --git a/src/com/android/launcher3/DropTargetHandler.kt b/src/com/android/launcher3/DropTargetHandler.kt
new file mode 100644
index 0000000..6560e16
--- /dev/null
+++ b/src/com/android/launcher3/DropTargetHandler.kt
@@ -0,0 +1,116 @@
+package com.android.launcher3
+
+import android.content.ComponentName
+import android.view.View
+import com.android.launcher3.DropTarget.DragObject
+import com.android.launcher3.SecondaryDropTarget.DeferredOnComplete
+import com.android.launcher3.dragndrop.DragLayer
+import com.android.launcher3.logging.StatsLogManager.LauncherEvent
+import com.android.launcher3.model.data.ItemInfo
+import com.android.launcher3.model.data.LauncherAppWidgetInfo
+import com.android.launcher3.util.IntSet
+import com.android.launcher3.util.PendingRequestArgs
+import com.android.launcher3.views.Snackbar
+
+/**
+ * Handler class for drop target actions that require modifying or interacting with launcher.
+ *
+ * This class is created by Launcher and provided the instance of launcher when created, which
+ * allows us to decouple drop target controllers from Launcher to enable easier testing.
+ */
+class DropTargetHandler(launcher: Launcher) {
+    val mLauncher: Launcher = launcher
+
+    fun onDropAnimationComplete() {
+        mLauncher.stateManager.goToState(LauncherState.NORMAL)
+    }
+
+    fun onSecondaryTargetCompleteDrop(target: ComponentName?, d: DragObject) {
+        when (val dragSource = d.dragSource) {
+            is DeferredOnComplete -> {
+                val deferred: DeferredOnComplete = dragSource
+                if (d.dragSource is SecondaryDropTarget.DeferredOnComplete) {
+                    target?.let {
+                        deferred.mPackageName = it.packageName
+                        mLauncher.addOnResumeCallback { deferred.onLauncherResume() }
+                    }
+                        ?: deferred.sendFailure()
+                }
+            }
+        }
+    }
+
+    fun reconfigureWidget(widgetId: Int, info: ItemInfo) {
+        mLauncher.setWaitingForResult(PendingRequestArgs.forWidgetInfo(widgetId, null, info))
+        mLauncher.appWidgetHolder.startConfigActivity(
+            mLauncher,
+            widgetId,
+            Launcher.REQUEST_RECONFIGURE_APPWIDGET
+        )
+    }
+
+    fun dismissPrediction(
+        announcement: CharSequence,
+        onActionClicked: Runnable,
+        onDismiss: Runnable?
+    ) {
+        mLauncher.dragLayer.announceForAccessibility(announcement)
+        Snackbar.show(mLauncher, R.string.item_removed, R.string.undo, onDismiss, onActionClicked)
+    }
+
+    fun getViewUnderDrag(info: ItemInfo): View? {
+        return if (
+            info is LauncherAppWidgetInfo &&
+                info.container == LauncherSettings.Favorites.CONTAINER_DESKTOP &&
+                mLauncher.workspace.dragInfo != null
+        ) {
+            mLauncher.workspace.dragInfo.cell
+        } else null
+    }
+
+    fun prepareToUndoDelete() {
+        mLauncher.modelWriter.prepareToUndoDelete()
+    }
+
+    fun onDeleteComplete(item: ItemInfo) {
+        var pageItem: ItemInfo = item
+        if (item.container <= 0) {
+            val v = mLauncher.workspace.getHomescreenIconByItemId(item.container)
+            v?.let { pageItem = v.tag as ItemInfo }
+        }
+        val pageIds =
+            if (pageItem.container == LauncherSettings.Favorites.CONTAINER_DESKTOP)
+                IntSet.wrap(pageItem.screenId)
+            else mLauncher.workspace.currentPageScreenIds
+        val onUndoClicked = Runnable {
+            mLauncher.setPagesToBindSynchronously(pageIds)
+            mLauncher.modelWriter.abortDelete()
+            mLauncher.statsLogManager.logger().log(LauncherEvent.LAUNCHER_UNDO)
+        }
+
+        Snackbar.show(
+            mLauncher,
+            R.string.item_removed,
+            R.string.undo,
+            mLauncher.modelWriter::commitDelete,
+            onUndoClicked
+        )
+    }
+
+    fun onAccessibilityDelete(view: View?, item: ItemInfo, announcement: CharSequence) {
+        // Remove the item from launcher and the db, we can ignore the containerInfo in this call
+        // because we already remove the drag view from the folder (if the drag originated from
+        // a folder) in Folder.beginDrag()
+        mLauncher.removeItem(view, item, true /* deleteFromDb */, "removed by accessibility drop")
+        mLauncher.workspace.stripEmptyScreens()
+        mLauncher.dragLayer.announceForAccessibility(announcement)
+    }
+
+    fun getDragLayer(): DragLayer {
+        return mLauncher.dragLayer
+    }
+
+    fun onClick(buttonDropTarget: ButtonDropTarget) {
+        mLauncher.accessibilityDelegate.handleAccessibleDrop(buttonDropTarget, null, null)
+    }
+}
diff --git a/src/com/android/launcher3/ExtendedEditText.java b/src/com/android/launcher3/ExtendedEditText.java
index 4629ca7..f94a3c5 100644
--- a/src/com/android/launcher3/ExtendedEditText.java
+++ b/src/com/android/launcher3/ExtendedEditText.java
@@ -15,9 +15,10 @@
  */
 package com.android.launcher3;
 
-import static com.android.launcher3.util.UiThreadHelper.hideKeyboardAsync;
+import static com.android.launcher3.logging.KeyboardStateManager.KeyboardState.SHOW;
 
 import android.content.Context;
+import android.graphics.Rect;
 import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.view.DragEvent;
@@ -27,14 +28,17 @@
 
 import com.android.launcher3.views.ActivityContext;
 
+import java.util.HashSet;
+import java.util.Set;
+
 
 /**
  * The edit text that reports back when the back key has been pressed.
  * Note: AppCompatEditText doesn't fully support #displayCompletions and #onCommitCompletion
  */
 public class ExtendedEditText extends EditText {
+    private final Set<OnFocusChangeListener> mOnFocusChangeListeners = new HashSet<>();
 
-    private boolean mShowImeAfterFirstLayout;
     private boolean mForceDisableSuggestions = false;
 
     /**
@@ -85,28 +89,21 @@
         return false;
     }
 
-    @Override
-    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
-        super.onLayout(changed, left, top, right, bottom);
-        if (mShowImeAfterFirstLayout) {
-            // soft input only shows one frame after the layout of the EditText happens,
-            post(() -> {
-                showSoftInput();
-                mShowImeAfterFirstLayout = false;
-            });
-        }
-    }
-
-
     public void showKeyboard() {
-        mShowImeAfterFirstLayout = !showSoftInput();
+        onKeyboardShown();
+        showSoftInput();
     }
 
     public void hideKeyboard() {
-        hideKeyboardAsync(ActivityContext.lookupContext(getContext()), getWindowToken());
+        ActivityContext.lookupContext(getContext()).hideKeyboard();
         clearFocus();
     }
 
+    protected void onKeyboardShown() {
+        ActivityContext.lookupContext(getContext()).getStatsLogManager()
+                .keyboardStateManager().setKeyboardState(SHOW);
+    }
+
     private boolean showSoftInput() {
         return requestFocus() &&
                 getContext().getSystemService(InputMethodManager.class)
@@ -138,4 +135,38 @@
             setText("");
         }
     }
+
+    /**
+     * This method should be preferred to {@link #setOnFocusChangeListener(OnFocusChangeListener)},
+     * as it allows for multiple listeners from different sources.
+     */
+    public void addOnFocusChangeListener(OnFocusChangeListener listener) {
+        mOnFocusChangeListeners.add(listener);
+    }
+
+    /**
+     * Removes the given listener from the set of registered focus listeners, or does nothing if it
+     * wasn't registered in the first place.
+     */
+    public void removeOnFocusChangeListener(OnFocusChangeListener listener) {
+        mOnFocusChangeListeners.remove(listener);
+    }
+
+    @Override
+    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
+        super.onFocusChanged(focused, direction, previouslyFocusedRect);
+        for (OnFocusChangeListener listener : mOnFocusChangeListeners) {
+            listener.onFocusChange(this, focused);
+        }
+    }
+
+    /**
+     * Save the input, suggestion, hint states when it's on focus, and set to unfocused states.
+     */
+    public void saveFocusedStateAndUpdateToUnfocusedState() {}
+
+    /**
+     * Restore to the previous saved focused state.
+     */
+    public void restoreToFocusedState() {}
 }
diff --git a/src/com/android/launcher3/FastScrollRecyclerView.java b/src/com/android/launcher3/FastScrollRecyclerView.java
index f117069..c16b319 100644
--- a/src/com/android/launcher3/FastScrollRecyclerView.java
+++ b/src/com/android/launcher3/FastScrollRecyclerView.java
@@ -20,7 +20,6 @@
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.View;
-import android.view.ViewGroup;
 import android.view.accessibility.AccessibilityNodeInfo;
 
 import androidx.annotation.Nullable;
@@ -53,16 +52,9 @@
         super(context, attrs, defStyleAttr);
     }
 
-    @Override
-    protected void onAttachedToWindow() {
-        super.onAttachedToWindow();
-        bindFastScrollbar();
-    }
-
-    public void bindFastScrollbar() {
-        ViewGroup parent = (ViewGroup) getParent().getParent();
-        mScrollbar = parent.findViewById(R.id.fast_scroller);
-        mScrollbar.setRecyclerView(this, parent.findViewById(R.id.fast_scroller_popup));
+    public void bindFastScrollbar(RecyclerViewFastScroller scrollbar) {
+        mScrollbar = scrollbar;
+        mScrollbar.setRecyclerView(this);
         onUpdateScrollbar(0);
     }
 
@@ -75,26 +67,34 @@
         return getPaddingTop();
     }
 
+    public int getScrollBarMarginBottom() {
+        return getPaddingBottom();
+    }
+
     /**
      * Returns the height of the fast scroll bar
      */
     public int getScrollbarTrackHeight() {
-        return mScrollbar.getHeight() - getScrollBarTop() - getPaddingBottom();
+        return mScrollbar.getHeight() - getScrollBarTop() - getScrollBarMarginBottom();
     }
 
     /**
      * Returns the available scroll height:
      *   AvailableScrollHeight = Total height of the all items - last page height
      */
-    protected abstract int getAvailableScrollHeight();
+    protected int getAvailableScrollHeight() {
+        // AvailableScrollHeight = Total height of the all items - first page height
+        int firstPageHeight = getMeasuredHeight() - getPaddingTop() - getPaddingBottom();
+        int availableScrollHeight = computeVerticalScrollRange() - firstPageHeight;
+        return Math.max(0, availableScrollHeight);
+    }
 
     /**
      * Returns the available scroll bar height:
      *   AvailableScrollBarHeight = Total height of the visible view - thumb height
      */
     protected int getAvailableScrollBarHeight() {
-        int availableScrollBarHeight = getScrollbarTrackHeight() - mScrollbar.getThumbHeight();
-        return availableScrollBarHeight;
+        return getScrollbarTrackHeight() - mScrollbar.getThumbHeight();
     }
 
     /**
@@ -138,10 +138,7 @@
 
         // IF scroller is at the very top OR there is no scroll bar because there is probably not
         // enough items to scroll, THEN it's okay for the container to be pulled down.
-        if (getCurrentScrollY() == 0) {
-            return true;
-        }
-        return getAdapter() == null || getAdapter().getItemCount() == 0;
+        return computeVerticalScrollOffset() == 0;
     }
 
     /**
@@ -154,14 +151,6 @@
     /**
      * Maps the touch (from 0..1) to the adapter position that should be visible.
      * <p>Override in each subclass of this base class.
-     *
-     * @return the scroll top of this recycler view.
-     */
-    public abstract int getCurrentScrollY();
-
-    /**
-     * Maps the touch (from 0..1) to the adapter position that should be visible.
-     * <p>Override in each subclass of this base class.
      */
     public abstract String scrollToPositionAtProgress(float touchFraction);
 
diff --git a/src/com/android/launcher3/Hotseat.java b/src/com/android/launcher3/Hotseat.java
index 76106fc..03afba1 100644
--- a/src/com/android/launcher3/Hotseat.java
+++ b/src/com/android/launcher3/Hotseat.java
@@ -27,10 +27,6 @@
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
 
-import androidx.annotation.Nullable;
-
-import java.util.function.Consumer;
-
 /**
  * View class that represents the bottom row of the home screen.
  */
@@ -43,11 +39,8 @@
     private boolean mHasVerticalHotseat;
     private Workspace<?> mWorkspace;
     private boolean mSendTouchToWorkspace;
-    @Nullable
-    private Consumer<Boolean> mOnVisibilityAggregatedCallback;
 
     private final View mQsb;
-    private final int mQsbHeight;
 
     public Hotseat(Context context) {
         this(context, null);
@@ -62,8 +55,6 @@
 
         mQsb = LayoutInflater.from(context).inflate(R.layout.search_container_hotseat, this, false);
         addView(mQsb);
-
-        mQsbHeight = getResources().getDimensionPixelSize(R.dimen.qsb_widget_height);
     }
 
     /**
@@ -111,9 +102,7 @@
             mQsb.setVisibility(View.VISIBLE);
             lp.gravity = Gravity.BOTTOM;
             lp.width = ViewGroup.LayoutParams.MATCH_PARENT;
-            lp.height = grid.isTaskbarPresent
-                    ? grid.workspacePadding.bottom
-                    : grid.hotseatBarSizePx + insets.bottom;
+            lp.height = grid.hotseatBarSizePx;
         }
 
         Rect padding = grid.getHotseatLayoutPadding(getContext());
@@ -156,46 +145,32 @@
     }
 
     @Override
-    public void onVisibilityAggregated(boolean isVisible) {
-        super.onVisibilityAggregated(isVisible);
-
-        if (mOnVisibilityAggregatedCallback != null) {
-            mOnVisibilityAggregatedCallback.accept(isVisible);
-        }
-    }
-
-    /** Sets a callback to be called onVisibilityAggregated */
-    public void setOnVisibilityAggregatedCallback(@Nullable Consumer<Boolean> callback) {
-        mOnVisibilityAggregatedCallback = callback;
-    }
-
-    @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         super.onMeasure(widthMeasureSpec, heightMeasureSpec);
 
-        int qsbWidth = mActivity.getDeviceProfile().qsbWidth;
-
-        mQsb.measure(MeasureSpec.makeMeasureSpec(qsbWidth, MeasureSpec.EXACTLY),
-                MeasureSpec.makeMeasureSpec(mQsbHeight, MeasureSpec.EXACTLY));
+        DeviceProfile dp = mActivity.getDeviceProfile();
+        mQsb.measure(MeasureSpec.makeMeasureSpec(dp.hotseatQsbWidth, MeasureSpec.EXACTLY),
+                MeasureSpec.makeMeasureSpec(dp.hotseatQsbHeight, MeasureSpec.EXACTLY));
     }
 
     @Override
     protected void onLayout(boolean changed, int l, int t, int r, int b) {
         super.onLayout(changed, l, t, r, b);
 
-        int qsbWidth = mQsb.getMeasuredWidth();
+        int qsbMeasuredWidth = mQsb.getMeasuredWidth();
         int left;
-        if (mActivity.getDeviceProfile().isQsbInline) {
-            int qsbSpace = mActivity.getDeviceProfile().hotseatBorderSpace;
+        DeviceProfile dp = mActivity.getDeviceProfile();
+        if (dp.isQsbInline) {
+            int qsbSpace = dp.hotseatBorderSpace;
             left = Utilities.isRtl(getResources()) ? r - getPaddingRight() + qsbSpace
-                    : l + getPaddingLeft() - qsbWidth - qsbSpace;
+                    : l + getPaddingLeft() - qsbMeasuredWidth - qsbSpace;
         } else {
-            left = (r - l - qsbWidth) / 2;
+            left = (r - l - qsbMeasuredWidth) / 2;
         }
-        int right = left + qsbWidth;
+        int right = left + qsbMeasuredWidth;
 
-        int bottom = b - t - mActivity.getDeviceProfile().getQsbOffsetY();
-        int top = bottom - mQsbHeight;
+        int bottom = b - t - dp.getQsbOffsetY();
+        int top = bottom - dp.hotseatQsbHeight;
         mQsb.layout(left, top, right, bottom);
     }
 
@@ -206,6 +181,13 @@
         getShortcutsAndWidgets().setAlpha(alpha);
     }
 
+    /**
+     * Sets the alpha value of just our QSB.
+     */
+    public void setQsbAlpha(float alpha) {
+        mQsb.setAlpha(alpha);
+    }
+
     public float getIconsAlpha() {
         return getShortcutsAndWidgets().getAlpha();
     }
diff --git a/src/com/android/launcher3/InvariantDeviceProfile.java b/src/com/android/launcher3/InvariantDeviceProfile.java
index db43b44..376f54d 100644
--- a/src/com/android/launcher3/InvariantDeviceProfile.java
+++ b/src/com/android/launcher3/InvariantDeviceProfile.java
@@ -16,16 +16,16 @@
 
 package com.android.launcher3;
 
+import static com.android.launcher3.LauncherPrefs.GRID_NAME;
 import static com.android.launcher3.Utilities.dpiFromPx;
 import static com.android.launcher3.config.FeatureFlags.ENABLE_TWO_PANEL_HOME;
+import static com.android.launcher3.testing.shared.ResourceUtils.INVALID_RESOURCE_HANDLE;
 import static com.android.launcher3.util.DisplayController.CHANGE_DENSITY;
 import static com.android.launcher3.util.DisplayController.CHANGE_NAVIGATION_MODE;
 import static com.android.launcher3.util.DisplayController.CHANGE_SUPPORTED_BOUNDS;
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
 
 import android.annotation.TargetApi;
-import android.appwidget.AppWidgetHostView;
-import android.content.ComponentName;
 import android.content.Context;
 import android.content.res.Configuration;
 import android.content.res.Resources;
@@ -33,27 +33,31 @@
 import android.content.res.XmlResourceParser;
 import android.graphics.Point;
 import android.graphics.PointF;
-import android.graphics.Rect;
 import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.util.DisplayMetrics;
 import android.util.Log;
 import android.util.SparseArray;
-import android.util.TypedValue;
 import android.util.Xml;
 import android.view.Display;
 
+import androidx.annotation.DimenRes;
 import androidx.annotation.IntDef;
-import androidx.annotation.Nullable;
+import androidx.annotation.StyleRes;
 import androidx.annotation.VisibleForTesting;
+import androidx.annotation.XmlRes;
+import androidx.core.content.res.ResourcesCompat;
 
+import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.icons.DotRenderer;
 import com.android.launcher3.model.DeviceGridState;
 import com.android.launcher3.provider.RestoreDbTask;
+import com.android.launcher3.testing.shared.ResourceUtils;
 import com.android.launcher3.util.DisplayController;
 import com.android.launcher3.util.DisplayController.Info;
-import com.android.launcher3.util.IntArray;
+import com.android.launcher3.util.LockedUserState;
 import com.android.launcher3.util.MainThreadInitializedObject;
-import com.android.launcher3.util.Themes;
+import com.android.launcher3.util.Partner;
 import com.android.launcher3.util.WindowBounds;
 import com.android.launcher3.util.window.WindowManagerProxy;
 
@@ -61,14 +65,13 @@
 import org.xmlpull.v1.XmlPullParserException;
 
 import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
+import java.util.stream.Collectors;
 
 public class InvariantDeviceProfile {
 
@@ -79,13 +82,12 @@
 
     @Retention(RetentionPolicy.SOURCE)
     @IntDef({TYPE_PHONE, TYPE_MULTI_DISPLAY, TYPE_TABLET})
-    public @interface DeviceType{}
+    public @interface DeviceType {}
+
     public static final int TYPE_PHONE = 0;
     public static final int TYPE_MULTI_DISPLAY = 1;
     public static final int TYPE_TABLET = 2;
 
-    private static final String KEY_IDP_GRID_NAME = "idp_grid_name";
-
     private static final float ICON_SIZE_DEFINED_IN_APP_DP = 48;
 
     // Constants that affects the interpolation curve between statically defined device profile
@@ -104,6 +106,11 @@
     static final int INDEX_TWO_PANEL_PORTRAIT = 2;
     static final int INDEX_TWO_PANEL_LANDSCAPE = 3;
 
+    /** These resources are used to override the device profile */
+    private static final String RES_GRID_NUM_ROWS = "grid_num_rows";
+    private static final String RES_GRID_NUM_COLUMNS = "grid_num_columns";
+    private static final String RES_GRID_ICON_SIZE_DP = "grid_icon_size_dp";
+
     /**
      * Number of icons per row and column in the workspace.
      */
@@ -125,8 +132,11 @@
     public PointF[] minCellSize;
 
     public PointF[] borderSpaces;
-    public float folderBorderSpace;
-    public float[] hotseatBorderSpaces;
+    public @DimenRes int inlineNavButtonsEndSpacing;
+
+    public @StyleRes int folderStyle;
+
+    public @StyleRes int cellStyle;
 
     public float[] horizontalMargin;
 
@@ -135,7 +145,9 @@
     public float[] allAppsIconTextSize;
     public PointF[] allAppsBorderSpaces;
 
-    private SparseArray<TypedValue> mExtraAttrs;
+    public float[] transientTaskbarIconSize;
+
+    public boolean[] startAlignTaskbar;
 
     /**
      * Number of icons inside the hotseat area.
@@ -143,11 +155,6 @@
     public int numShownHotseatIcons;
 
     /**
-     * Number of icons inside the hotseat area when using 3 buttons navigation.
-     */
-    public int numShrunkenHotseatIcons;
-
-    /**
      * Number of icons inside the hotseat area that is stored in the database. This is greater than
      * or equal to numnShownHotseatIcons, allowing for a seamless transition between two hotseat
      * sizes that share the same DB.
@@ -155,34 +162,36 @@
     public int numDatabaseHotseatIcons;
 
     public int[] hotseatColumnSpan;
+    public float[] hotseatBarBottomSpace;
+    public float[] hotseatQsbSpace;
 
     /**
      * Number of columns in the all apps list.
      */
     public int numAllAppsColumns;
     public int numDatabaseAllAppsColumns;
+    public @StyleRes int allAppsStyle;
 
     /**
      * Do not query directly. see {@link DeviceProfile#isScalableGrid}.
      */
     protected boolean isScalable;
-    public int devicePaddingId;
+    @XmlRes
+    public int devicePaddingId = INVALID_RESOURCE_HANDLE;
+    @XmlRes
+    public int workspaceSpecsId = INVALID_RESOURCE_HANDLE;
 
     public String dbFile;
     public int defaultLayoutId;
-    int demoModeLayoutId;
-    boolean[] inlineQsb = new boolean[COUNT_SIZES];
+    public int demoModeLayoutId;
+    public boolean[] inlineQsb = new boolean[COUNT_SIZES];
 
     /**
      * An immutable list of supported profiles.
      */
     public List<DeviceProfile> supportedProfiles = Collections.EMPTY_LIST;
 
-    @Nullable
-    public DevicePaddings devicePaddings;
-
     public Point defaultWallpaperSize;
-    public Rect defaultWidgetPadding;
 
     private final ArrayList<OnIDPChangeListener> mChangeListeners = new ArrayList<>();
 
@@ -194,9 +203,11 @@
         String gridName = getCurrentGridName(context);
         String newGridName = initGrid(context, gridName);
         if (!newGridName.equals(gridName)) {
-            Utilities.getPrefs(context).edit().putString(KEY_IDP_GRID_NAME, newGridName).apply();
+            LauncherPrefs.get(context).put(GRID_NAME, newGridName);
         }
-        new DeviceGridState(this).writeToPrefs(context);
+        LockedUserState.get(context).runOnUserUnlocked(() -> {
+            new DeviceGridState(this).writeToPrefs(context);
+        });
 
         DisplayController.INSTANCE.get(context).setPriorityListener(
                 (displayContext, info, flags) -> {
@@ -234,7 +245,8 @@
                         /*allowDisabledGrid=*/false),
                 defaultDeviceType);
 
-        Info myInfo = new Info(context, display);
+        Context displayContext = context.createDisplayContext(display);
+        Info myInfo = new Info(displayContext);
         @DeviceType int deviceType = getDeviceType(myInfo);
         DisplayOption myDisplayOption = invDistWeightedInterpolate(
                 myInfo,
@@ -255,8 +267,6 @@
                 COUNT_SIZES);
         System.arraycopy(defaultDisplayOption.borderSpaces, 0, result.borderSpaces, 0,
                 COUNT_SIZES);
-        System.arraycopy(defaultDisplayOption.inlineQsb, 0, result.inlineQsb, 0,
-                COUNT_SIZES);
 
         initGrid(context, myInfo, result, deviceType);
     }
@@ -303,8 +313,7 @@
     }
 
     public static String getCurrentGridName(Context context) {
-        return Utilities.isGridOptionsEnabled(context)
-                ? Utilities.getPrefs(context).getString(KEY_IDP_GRID_NAME, null) : null;
+        return LauncherPrefs.get(context).get(GRID_NAME);
     }
 
     private String initGrid(Context context, String gridName) {
@@ -320,6 +329,11 @@
         return displayOption.grid.name;
     }
 
+    @VisibleForTesting
+    public static String getDefaultGridName(Context context) {
+        return new InvariantDeviceProfile().initGrid(context, null);
+    }
+
     private void initGrid(Context context, Info displayInfo, DisplayOption displayOption,
             @DeviceType int deviceType) {
         DisplayMetrics metrics = context.getResources().getDisplayMetrics();
@@ -330,13 +344,19 @@
         dbFile = closestProfile.dbFile;
         defaultLayoutId = closestProfile.defaultLayoutId;
         demoModeLayoutId = closestProfile.demoModeLayoutId;
+
         numFolderRows = closestProfile.numFolderRows;
         numFolderColumns = closestProfile.numFolderColumns;
+        folderStyle = closestProfile.folderStyle;
+
+        cellStyle = closestProfile.cellStyle;
+
         isScalable = closestProfile.isScalable;
         devicePaddingId = closestProfile.devicePaddingId;
+        workspaceSpecsId = closestProfile.mWorkspaceSpecsId;
         this.deviceType = deviceType;
 
-        mExtraAttrs = closestProfile.extraAttrs;
+        inlineNavButtonsEndSpacing = closestProfile.inlineNavButtonsEndSpacing;
 
         iconSize = displayOption.iconSizes;
         float maxIconSize = iconSize[0];
@@ -351,16 +371,17 @@
         minCellSize = displayOption.minCellSize;
 
         borderSpaces = displayOption.borderSpaces;
-        folderBorderSpace = displayOption.folderBorderSpace;
 
         horizontalMargin = displayOption.horizontalMargin;
 
         numShownHotseatIcons = closestProfile.numHotseatIcons;
-        numShrunkenHotseatIcons = closestProfile.numShrunkenHotseatIcons;
         numDatabaseHotseatIcons = deviceType == TYPE_MULTI_DISPLAY
                 ? closestProfile.numDatabaseHotseatIcons : closestProfile.numHotseatIcons;
         hotseatColumnSpan = closestProfile.hotseatColumnSpan;
-        hotseatBorderSpaces = displayOption.hotseatBorderSpaces;
+        hotseatBarBottomSpace = displayOption.hotseatBarBottomSpace;
+        hotseatQsbSpace = displayOption.hotseatQsbSpace;
+
+        allAppsStyle = closestProfile.allAppsStyle;
 
         numAllAppsColumns = closestProfile.numAllAppsColumns;
         numDatabaseAllAppsColumns = deviceType == TYPE_MULTI_DISPLAY
@@ -370,16 +391,12 @@
         allAppsBorderSpaces = displayOption.allAppsBorderSpaces;
         allAppsIconSize = displayOption.allAppsIconSizes;
         allAppsIconTextSize = displayOption.allAppsIconTextSizes;
-        if (!Utilities.isGridOptionsEnabled(context)) {
-            allAppsIconSize = iconSize;
-            allAppsIconTextSize = iconTextSize;
-        }
 
-        if (devicePaddingId != 0) {
-            devicePaddings = new DevicePaddings(context, devicePaddingId);
-        }
+        inlineQsb = closestProfile.inlineQsb;
 
-        inlineQsb = displayOption.inlineQsb;
+        transientTaskbarIconSize = displayOption.transientTaskbarIconSize;
+
+        startAlignTaskbar = displayOption.startAlignTaskbar;
 
         // If the partner customization apk contains any grid overrides, apply them
         // Supported overrides: numRows, numColumns, iconSize
@@ -387,10 +404,12 @@
 
         final List<DeviceProfile> localSupportedProfiles = new ArrayList<>();
         defaultWallpaperSize = new Point(displayInfo.currentSize);
+        SparseArray<DotRenderer> dotRendererCache = new SparseArray<>();
         for (WindowBounds bounds : displayInfo.supportedBounds) {
             localSupportedProfiles.add(new DeviceProfile.Builder(context, this, displayInfo)
-                    .setUseTwoPanels(deviceType == TYPE_MULTI_DISPLAY)
+                    .setIsMultiDisplay(deviceType == TYPE_MULTI_DISPLAY)
                     .setWindowBounds(bounds)
+                    .setDotRendererCache(dotRendererCache)
                     .build());
 
             // Wallpaper size should be the maximum of the all possible sizes Launcher expects
@@ -410,8 +429,20 @@
         }
         supportedProfiles = Collections.unmodifiableList(localSupportedProfiles);
 
-        ComponentName cn = new ComponentName(context.getPackageName(), getClass().getName());
-        defaultWidgetPadding = AppWidgetHostView.getDefaultPaddingForWidget(context, cn, null);
+        int numMinShownHotseatIconsForTablet = supportedProfiles
+                .stream()
+                .filter(deviceProfile -> deviceProfile.isTablet)
+                .mapToInt(deviceProfile -> deviceProfile.numShownHotseatIcons)
+                .min()
+                .orElse(0);
+
+        supportedProfiles
+                .stream()
+                .filter(deviceProfile -> deviceProfile.isTablet)
+                .forEach(deviceProfile -> {
+                    deviceProfile.numShownHotseatIcons = numMinShownHotseatIconsForTablet;
+                    deviceProfile.recalculateHotseatWidthAndBorderSpace();
+                });
     }
 
     public void addOnChangeListener(OnIDPChangeListener listener) {
@@ -424,9 +455,8 @@
 
 
     public void setCurrentGrid(Context context, String gridName) {
-        Context appContext = context.getApplicationContext();
-        Utilities.getPrefs(appContext).edit().putString(KEY_IDP_GRID_NAME, gridName).apply();
-        MAIN_EXECUTOR.execute(() -> onConfigChanged(appContext));
+        LauncherPrefs.get(context).put(GRID_NAME, gridName);
+        MAIN_EXECUTOR.execute(() -> onConfigChanged(context.getApplicationContext()));
     }
 
     private Object[] toModelState() {
@@ -460,9 +490,8 @@
                 if ((type == XmlPullParser.START_TAG)
                         && GridOption.TAG_NAME.equals(parser.getName())) {
 
-                    GridOption gridOption = new GridOption(context, Xml.asAttributeSet(parser),
-                            deviceType);
-                    if (gridOption.isEnabled || allowDisabledGrid) {
+                    GridOption gridOption = new GridOption(context, Xml.asAttributeSet(parser));
+                    if (gridOption.isEnabled(deviceType) || allowDisabledGrid) {
                         final int displayDepth = parser.getDepth();
                         while (((type = parser.next()) != XmlPullParser.END_TAG
                                 || parser.getDepth() > displayDepth)
@@ -484,7 +513,7 @@
         if (!TextUtils.isEmpty(gridName)) {
             for (DisplayOption option : profiles) {
                 if (gridName.equals(option.grid.name)
-                        && (option.grid.isEnabled || allowDisabledGrid)) {
+                        && (option.grid.isEnabled(deviceType) || allowDisabledGrid)) {
                     filteredProfiles.add(option);
                 }
             }
@@ -507,6 +536,16 @@
      * @return all the grid options that can be shown on the device
      */
     public List<GridOption> parseAllGridOptions(Context context) {
+        return parseAllDefinedGridOptions(context)
+                .stream()
+                .filter(go -> go.isEnabled(deviceType))
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * @return all the grid options that can be shown on the device
+     */
+    public static List<GridOption> parseAllDefinedGridOptions(Context context) {
         List<GridOption> result = new ArrayList<>();
 
         try (XmlResourceParser parser = context.getResources().getXml(R.xml.device_profiles)) {
@@ -516,11 +555,7 @@
                     || parser.getDepth() > depth) && type != XmlPullParser.END_DOCUMENT) {
                 if ((type == XmlPullParser.START_TAG)
                         && GridOption.TAG_NAME.equals(parser.getName())) {
-                    GridOption option =
-                            new GridOption(context, Xml.asAttributeSet(parser), deviceType);
-                    if (option.isEnabled) {
-                        result.add(option);
-                    }
+                    result.add(new GridOption(context, Xml.asAttributeSet(parser)));
                 }
             }
         } catch (IOException | XmlPullParserException e) {
@@ -561,8 +596,24 @@
      */
     private void applyPartnerDeviceProfileOverrides(Context context, DisplayMetrics dm) {
         Partner p = Partner.get(context.getPackageManager());
-        if (p != null) {
-            p.applyInvariantDeviceProfileOverrides(this, dm);
+        if (p == null) {
+            return;
+        }
+        try {
+            int numRows = p.getIntValue(RES_GRID_NUM_ROWS, -1);
+            int numColumns = p.getIntValue(RES_GRID_NUM_COLUMNS, -1);
+            float iconSizePx = p.getDimenValue(RES_GRID_ICON_SIZE_DP, -1);
+
+            if (numRows > 0 && numColumns > 0) {
+                this.numRows = numRows;
+                this.numColumns = numColumns;
+            }
+            if (iconSizePx > 0) {
+                this.iconSize[InvariantDeviceProfile.INDEX_DEFAULT] =
+                        Utilities.dpiFromPx(iconSizePx, dm.densityDpi);
+            }
+        } catch (Resources.NotFoundException ex) {
+            Log.e(TAG, "Invalid Partner grid resource!", ex);
         }
     }
 
@@ -633,18 +684,6 @@
         float screenHeight = config.screenHeightDp * res.getDisplayMetrics().density;
         int rotation = WindowManagerProxy.INSTANCE.get(context).getRotation(context);
 
-        if (Utilities.IS_DEBUG_DEVICE) {
-            StringWriter stringWriter = new StringWriter();
-            PrintWriter printWriter = new PrintWriter(stringWriter);
-            DisplayController.INSTANCE.get(context).dump(printWriter);
-            printWriter.flush();
-            Log.d("b/231312158", "getDeviceProfile -"
-                            + "\nconfig: " + config
-                            + "\ndisplayMetrics: " + res.getDisplayMetrics()
-                            + "\nrotation: " + rotation
-                            + "\n" + stringWriter.toString(),
-                    new Exception());
-        }
         return getBestMatch(screenWidth, screenHeight, rotation);
     }
 
@@ -725,22 +764,34 @@
         private static final int DEVICE_CATEGORY_ALL =
                 DEVICE_CATEGORY_PHONE | DEVICE_CATEGORY_TABLET | DEVICE_CATEGORY_MULTI_DISPLAY;
 
+        private static final int INLINE_QSB_FOR_PORTRAIT = 1 << 0;
+        private static final int INLINE_QSB_FOR_LANDSCAPE = 1 << 1;
+        private static final int INLINE_QSB_FOR_TWO_PANEL_PORTRAIT = 1 << 2;
+        private static final int INLINE_QSB_FOR_TWO_PANEL_LANDSCAPE = 1 << 3;
+        private static final int DONT_INLINE_QSB = 0;
+
         public final String name;
         public final int numRows;
         public final int numColumns;
         public final int numSearchContainerColumns;
-        public final boolean isEnabled;
+        public final int deviceCategory;
 
         private final int numFolderRows;
         private final int numFolderColumns;
+        private final @StyleRes int folderStyle;
+        private final @StyleRes int cellStyle;
 
+        private final @StyleRes int allAppsStyle;
         private final int numAllAppsColumns;
         private final int numDatabaseAllAppsColumns;
         private final int numHotseatIcons;
-        private final int numShrunkenHotseatIcons;
         private final int numDatabaseHotseatIcons;
+
         private final int[] hotseatColumnSpan = new int[COUNT_SIZES];
 
+        private final boolean[] inlineQsb = new boolean[COUNT_SIZES];
+
+        private @DimenRes int inlineNavButtonsEndSpacing;
         private final String dbFile;
 
         private final int defaultLayoutId;
@@ -748,10 +799,9 @@
 
         private final boolean isScalable;
         private final int devicePaddingId;
+        private final int mWorkspaceSpecsId;
 
-        private final SparseArray<TypedValue> extraAttrs;
-
-        public GridOption(Context context, AttributeSet attrs, @DeviceType int deviceType) {
+        public GridOption(Context context, AttributeSet attrs) {
             TypedArray a = context.obtainStyledAttributes(
                     attrs, R.styleable.GridDisplayOption);
             name = a.getString(R.styleable.GridDisplayOption_name);
@@ -761,13 +811,13 @@
                     R.styleable.GridDisplayOption_numSearchContainerColumns, numColumns);
 
             dbFile = a.getString(R.styleable.GridDisplayOption_dbFile);
-            defaultLayoutId = a.getResourceId(deviceType == TYPE_MULTI_DISPLAY && a.hasValue(
-                    R.styleable.GridDisplayOption_defaultSplitDisplayLayoutId)
-                    ? R.styleable.GridDisplayOption_defaultSplitDisplayLayoutId
-                    : R.styleable.GridDisplayOption_defaultLayoutId, 0);
+            defaultLayoutId = a.getResourceId(
+                    R.styleable.GridDisplayOption_defaultLayoutId, 0);
             demoModeLayoutId = a.getResourceId(
                     R.styleable.GridDisplayOption_demoModeLayoutId, defaultLayoutId);
 
+            allAppsStyle = a.getResourceId(R.styleable.GridDisplayOption_allAppsStyle,
+                    R.style.AllAppsStyleDefault);
             numAllAppsColumns = a.getInt(
                     R.styleable.GridDisplayOption_numAllAppsColumns, numColumns);
             numDatabaseAllAppsColumns = a.getInt(
@@ -775,10 +825,9 @@
 
             numHotseatIcons = a.getInt(
                     R.styleable.GridDisplayOption_numHotseatIcons, numColumns);
-            numShrunkenHotseatIcons = a.getInt(
-                    R.styleable.GridDisplayOption_numShrunkenHotseatIcons, numHotseatIcons / 2);
             numDatabaseHotseatIcons = a.getInt(
                     R.styleable.GridDisplayOption_numExtendedHotseatIcons, 2 * numHotseatIcons);
+
             hotseatColumnSpan[INDEX_DEFAULT] = a.getInt(
                     R.styleable.GridDisplayOption_hotseatColumnSpan, numColumns);
             hotseatColumnSpan[INDEX_LANDSCAPE] = a.getInt(
@@ -790,74 +839,36 @@
                     R.styleable.GridDisplayOption_hotseatColumnSpanTwoPanelPortrait,
                     numColumns);
 
+            inlineNavButtonsEndSpacing =
+                    a.getResourceId(R.styleable.GridDisplayOption_inlineNavButtonsEndSpacing,
+                            R.dimen.taskbar_button_margin_default);
+
             numFolderRows = a.getInt(
                     R.styleable.GridDisplayOption_numFolderRows, numRows);
             numFolderColumns = a.getInt(
                     R.styleable.GridDisplayOption_numFolderColumns, numColumns);
 
+            folderStyle = a.getResourceId(R.styleable.GridDisplayOption_folderStyle,
+                    INVALID_RESOURCE_HANDLE);
+
+            cellStyle = a.getResourceId(R.styleable.GridDisplayOption_cellStyle,
+                    R.style.CellStyleDefault);
+
             isScalable = a.getBoolean(
                     R.styleable.GridDisplayOption_isScalable, false);
             devicePaddingId = a.getResourceId(
-                    R.styleable.GridDisplayOption_devicePaddingId, 0);
-
-            int deviceCategory = a.getInt(R.styleable.GridDisplayOption_deviceCategory,
+                    R.styleable.GridDisplayOption_devicePaddingId, INVALID_RESOURCE_HANDLE);
+            deviceCategory = a.getInt(R.styleable.GridDisplayOption_deviceCategory,
                     DEVICE_CATEGORY_ALL);
-            isEnabled = (deviceType == TYPE_PHONE
-                        && ((deviceCategory & DEVICE_CATEGORY_PHONE) == DEVICE_CATEGORY_PHONE))
-                    || (deviceType == TYPE_TABLET
-                        && ((deviceCategory & DEVICE_CATEGORY_TABLET) == DEVICE_CATEGORY_TABLET))
-                    || (deviceType == TYPE_MULTI_DISPLAY
-                        && ((deviceCategory & DEVICE_CATEGORY_MULTI_DISPLAY)
-                            == DEVICE_CATEGORY_MULTI_DISPLAY));
 
-            a.recycle();
-            extraAttrs = Themes.createValueMap(context, attrs,
-                    IntArray.wrap(R.styleable.GridDisplayOption));
-        }
-    }
+            if (FeatureFlags.ENABLE_RESPONSIVE_WORKSPACE.get()) {
+                mWorkspaceSpecsId = a.getResourceId(
+                        R.styleable.GridDisplayOption_workspaceSpecsId, INVALID_RESOURCE_HANDLE);
+            } else {
+                mWorkspaceSpecsId = INVALID_RESOURCE_HANDLE;
+            }
 
-    @VisibleForTesting
-    static final class DisplayOption {
-        private static final int INLINE_QSB_FOR_PORTRAIT = 1 << 0;
-        private static final int INLINE_QSB_FOR_LANDSCAPE = 1 << 1;
-        private static final int INLINE_QSB_FOR_TWO_PANEL_PORTRAIT = 1 << 2;
-        private static final int INLINE_QSB_FOR_TWO_PANEL_LANDSCAPE = 1 << 3;
-        private static final int DONT_INLINE_QSB = 0;
-
-        public final GridOption grid;
-
-        private final float minWidthDps;
-        private final float minHeightDps;
-        private final boolean canBeDefault;
-        private final boolean[] inlineQsb = new boolean[COUNT_SIZES];
-
-        private final PointF[] minCellSize = new PointF[COUNT_SIZES];
-
-        private float folderBorderSpace;
-        private final PointF[] borderSpaces = new PointF[COUNT_SIZES];
-        private final float[] horizontalMargin = new float[COUNT_SIZES];
-        //TODO(http://b/228998082) remove this when 3 button spaces are fixed
-        private final float[] hotseatBorderSpaces = new float[COUNT_SIZES];
-
-        private final float[] iconSizes = new float[COUNT_SIZES];
-        private final float[] textSizes = new float[COUNT_SIZES];
-
-        private final PointF[] allAppsCellSize = new PointF[COUNT_SIZES];
-        private final float[] allAppsIconSizes = new float[COUNT_SIZES];
-        private final float[] allAppsIconTextSizes = new float[COUNT_SIZES];
-        private final PointF[] allAppsBorderSpaces = new PointF[COUNT_SIZES];
-
-        DisplayOption(GridOption grid, Context context, AttributeSet attrs) {
-            this.grid = grid;
-
-            TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ProfileDisplayOption);
-
-            minWidthDps = a.getFloat(R.styleable.ProfileDisplayOption_minWidthDps, 0);
-            minHeightDps = a.getFloat(R.styleable.ProfileDisplayOption_minHeightDps, 0);
-
-            canBeDefault = a.getBoolean(R.styleable.ProfileDisplayOption_canBeDefault, false);
-
-            int inlineForRotation = a.getInt(R.styleable.ProfileDisplayOption_inlineQsb,
+            int inlineForRotation = a.getInt(R.styleable.GridDisplayOption_inlineQsb,
                     DONT_INLINE_QSB);
             inlineQsb[INDEX_DEFAULT] =
                     (inlineForRotation & INLINE_QSB_FOR_PORTRAIT) == INLINE_QSB_FOR_PORTRAIT;
@@ -870,6 +881,63 @@
                     (inlineForRotation & INLINE_QSB_FOR_TWO_PANEL_LANDSCAPE)
                             == INLINE_QSB_FOR_TWO_PANEL_LANDSCAPE;
 
+            a.recycle();
+        }
+
+        public boolean isEnabled(@DeviceType int deviceType) {
+            switch (deviceType) {
+                case TYPE_PHONE:
+                    return (deviceCategory & DEVICE_CATEGORY_PHONE) == DEVICE_CATEGORY_PHONE;
+                case TYPE_TABLET:
+                    return (deviceCategory & DEVICE_CATEGORY_TABLET) == DEVICE_CATEGORY_TABLET;
+                case TYPE_MULTI_DISPLAY:
+                    return (deviceCategory & DEVICE_CATEGORY_MULTI_DISPLAY)
+                            == DEVICE_CATEGORY_MULTI_DISPLAY;
+                default:
+                    return false;
+            }
+        }
+    }
+
+    @VisibleForTesting
+    static final class DisplayOption {
+        public final GridOption grid;
+
+        private final float minWidthDps;
+        private final float minHeightDps;
+        private final boolean canBeDefault;
+
+        private final PointF[] minCellSize = new PointF[COUNT_SIZES];
+
+        private final PointF[] borderSpaces = new PointF[COUNT_SIZES];
+        private final float[] horizontalMargin = new float[COUNT_SIZES];
+        private final float[] hotseatBarBottomSpace = new float[COUNT_SIZES];
+        private final float[] hotseatQsbSpace = new float[COUNT_SIZES];
+
+        private final float[] iconSizes = new float[COUNT_SIZES];
+        private final float[] textSizes = new float[COUNT_SIZES];
+
+        private final PointF[] allAppsCellSize = new PointF[COUNT_SIZES];
+        private final float[] allAppsIconSizes = new float[COUNT_SIZES];
+        private final float[] allAppsIconTextSizes = new float[COUNT_SIZES];
+        private final PointF[] allAppsBorderSpaces = new PointF[COUNT_SIZES];
+
+        private final float[] transientTaskbarIconSize = new float[COUNT_SIZES];
+
+        private final boolean[] startAlignTaskbar = new boolean[COUNT_SIZES];
+
+        DisplayOption(GridOption grid, Context context, AttributeSet attrs) {
+            this.grid = grid;
+
+            Resources res = context.getResources();
+
+            TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ProfileDisplayOption);
+
+            minWidthDps = a.getFloat(R.styleable.ProfileDisplayOption_minWidthDps, 0);
+            minHeightDps = a.getFloat(R.styleable.ProfileDisplayOption_minHeightDps, 0);
+
+            canBeDefault = a.getBoolean(R.styleable.ProfileDisplayOption_canBeDefault, false);
+
             float x;
             float y;
 
@@ -929,8 +997,6 @@
                     borderSpaceTwoPanelLandscape);
             borderSpaces[INDEX_TWO_PANEL_LANDSCAPE] = new PointF(x, y);
 
-            folderBorderSpace = borderSpace;
-
             x = a.getFloat(R.styleable.ProfileDisplayOption_allAppsCellWidth,
                     minCellSize[INDEX_DEFAULT].x);
             y = a.getFloat(R.styleable.ProfileDisplayOption_allAppsCellHeight,
@@ -1009,7 +1075,9 @@
 
             allAppsIconSizes[INDEX_DEFAULT] = a.getFloat(
                     R.styleable.ProfileDisplayOption_allAppsIconSize, iconSizes[INDEX_DEFAULT]);
-            allAppsIconSizes[INDEX_LANDSCAPE] = allAppsIconSizes[INDEX_DEFAULT];
+            allAppsIconSizes[INDEX_LANDSCAPE] = a.getFloat(
+                    R.styleable.ProfileDisplayOption_allAppsIconSizeLandscape,
+                    allAppsIconSizes[INDEX_DEFAULT]);
             allAppsIconSizes[INDEX_TWO_PANEL_PORTRAIT] = a.getFloat(
                     R.styleable.ProfileDisplayOption_allAppsIconSizeTwoPanelPortrait,
                     allAppsIconSizes[INDEX_DEFAULT]);
@@ -1051,17 +1119,56 @@
                     R.styleable.ProfileDisplayOption_horizontalMarginTwoPanelPortrait,
                     horizontalMargin[INDEX_DEFAULT]);
 
-            hotseatBorderSpaces[INDEX_DEFAULT] = a.getFloat(
-                    R.styleable.ProfileDisplayOption_hotseatBorderSpace, borderSpace);
-            hotseatBorderSpaces[INDEX_LANDSCAPE] = a.getFloat(
-                    R.styleable.ProfileDisplayOption_hotseatBorderSpaceLandscape,
-                    hotseatBorderSpaces[INDEX_DEFAULT]);
-            hotseatBorderSpaces[INDEX_TWO_PANEL_LANDSCAPE] = a.getFloat(
-                    R.styleable.ProfileDisplayOption_hotseatBorderSpaceTwoPanelLandscape,
-                    hotseatBorderSpaces[INDEX_DEFAULT]);
-            hotseatBorderSpaces[INDEX_TWO_PANEL_PORTRAIT] = a.getFloat(
-                    R.styleable.ProfileDisplayOption_hotseatBorderSpaceTwoPanelPortrait,
-                    hotseatBorderSpaces[INDEX_DEFAULT]);
+            hotseatBarBottomSpace[INDEX_DEFAULT] = a.getFloat(
+                    R.styleable.ProfileDisplayOption_hotseatBarBottomSpace,
+                    ResourcesCompat.getFloat(res, R.dimen.hotseat_bar_bottom_space_default));
+            hotseatBarBottomSpace[INDEX_LANDSCAPE] = a.getFloat(
+                    R.styleable.ProfileDisplayOption_hotseatBarBottomSpaceLandscape,
+                    hotseatBarBottomSpace[INDEX_DEFAULT]);
+            hotseatBarBottomSpace[INDEX_TWO_PANEL_LANDSCAPE] = a.getFloat(
+                    R.styleable.ProfileDisplayOption_hotseatBarBottomSpaceTwoPanelLandscape,
+                    hotseatBarBottomSpace[INDEX_DEFAULT]);
+            hotseatBarBottomSpace[INDEX_TWO_PANEL_PORTRAIT] = a.getFloat(
+                    R.styleable.ProfileDisplayOption_hotseatBarBottomSpaceTwoPanelPortrait,
+                    hotseatBarBottomSpace[INDEX_DEFAULT]);
+
+            hotseatQsbSpace[INDEX_DEFAULT] = a.getFloat(
+                    R.styleable.ProfileDisplayOption_hotseatQsbSpace,
+                    ResourcesCompat.getFloat(res, R.dimen.hotseat_qsb_space_default));
+            hotseatQsbSpace[INDEX_LANDSCAPE] = a.getFloat(
+                    R.styleable.ProfileDisplayOption_hotseatQsbSpaceLandscape,
+                    hotseatQsbSpace[INDEX_DEFAULT]);
+            hotseatQsbSpace[INDEX_TWO_PANEL_LANDSCAPE] = a.getFloat(
+                    R.styleable.ProfileDisplayOption_hotseatQsbSpaceTwoPanelLandscape,
+                    hotseatQsbSpace[INDEX_DEFAULT]);
+            hotseatQsbSpace[INDEX_TWO_PANEL_PORTRAIT] = a.getFloat(
+                    R.styleable.ProfileDisplayOption_hotseatQsbSpaceTwoPanelPortrait,
+                    hotseatQsbSpace[INDEX_DEFAULT]);
+
+            transientTaskbarIconSize[INDEX_DEFAULT] = a.getFloat(
+                    R.styleable.ProfileDisplayOption_transientTaskbarIconSize,
+                    ResourcesCompat.getFloat(res, R.dimen.taskbar_icon_size));
+            transientTaskbarIconSize[INDEX_LANDSCAPE] = a.getFloat(
+                    R.styleable.ProfileDisplayOption_transientTaskbarIconSizeLandscape,
+                    transientTaskbarIconSize[INDEX_DEFAULT]);
+            transientTaskbarIconSize[INDEX_TWO_PANEL_LANDSCAPE] = a.getFloat(
+                    R.styleable.ProfileDisplayOption_transientTaskbarIconSizeTwoPanelLandscape,
+                    transientTaskbarIconSize[INDEX_DEFAULT]);
+            transientTaskbarIconSize[INDEX_TWO_PANEL_PORTRAIT] = a.getFloat(
+                    R.styleable.ProfileDisplayOption_transientTaskbarIconSizeTwoPanelPortrait,
+                    transientTaskbarIconSize[INDEX_DEFAULT]);
+
+            startAlignTaskbar[INDEX_DEFAULT] = a.getBoolean(
+                    R.styleable.ProfileDisplayOption_startAlignTaskbar, false);
+            startAlignTaskbar[INDEX_LANDSCAPE] = a.getBoolean(
+                    R.styleable.ProfileDisplayOption_startAlignTaskbarLandscape,
+                    startAlignTaskbar[INDEX_DEFAULT]);
+            startAlignTaskbar[INDEX_TWO_PANEL_LANDSCAPE] = a.getBoolean(
+                    R.styleable.ProfileDisplayOption_startAlignTaskbarTwoPanelLandscape,
+                    startAlignTaskbar[INDEX_LANDSCAPE]);
+            startAlignTaskbar[INDEX_TWO_PANEL_PORTRAIT] = a.getBoolean(
+                    R.styleable.ProfileDisplayOption_startAlignTaskbarTwoPanelPortrait,
+                    startAlignTaskbar[INDEX_DEFAULT]);
 
             a.recycle();
         }
@@ -1084,7 +1191,8 @@
                 allAppsIconSizes[i] = 0;
                 allAppsIconTextSizes[i] = 0;
                 allAppsBorderSpaces[i] = new PointF();
-                inlineQsb[i] = false;
+                transientTaskbarIconSize[i] = 0;
+                startAlignTaskbar[i] = false;
             }
         }
 
@@ -1097,17 +1205,17 @@
                 minCellSize[i].x *= w;
                 minCellSize[i].y *= w;
                 horizontalMargin[i] *= w;
-                hotseatBorderSpaces[i] *= w;
+                hotseatBarBottomSpace[i] *= w;
+                hotseatQsbSpace[i] *= w;
                 allAppsCellSize[i].x *= w;
                 allAppsCellSize[i].y *= w;
                 allAppsIconSizes[i] *= w;
                 allAppsIconTextSizes[i] *= w;
                 allAppsBorderSpaces[i].x *= w;
                 allAppsBorderSpaces[i].y *= w;
+                transientTaskbarIconSize[i] *= w;
             }
 
-            folderBorderSpace *= w;
-
             return this;
         }
 
@@ -1120,18 +1228,18 @@
                 minCellSize[i].x += p.minCellSize[i].x;
                 minCellSize[i].y += p.minCellSize[i].y;
                 horizontalMargin[i] += p.horizontalMargin[i];
-                hotseatBorderSpaces[i] += p.hotseatBorderSpaces[i];
+                hotseatBarBottomSpace[i] += p.hotseatBarBottomSpace[i];
+                hotseatQsbSpace[i] += p.hotseatQsbSpace[i];
                 allAppsCellSize[i].x += p.allAppsCellSize[i].x;
                 allAppsCellSize[i].y += p.allAppsCellSize[i].y;
                 allAppsIconSizes[i] += p.allAppsIconSizes[i];
                 allAppsIconTextSizes[i] += p.allAppsIconTextSizes[i];
                 allAppsBorderSpaces[i].x += p.allAppsBorderSpaces[i].x;
                 allAppsBorderSpaces[i].y += p.allAppsBorderSpaces[i].y;
-                inlineQsb[i] |= p.inlineQsb[i];
+                transientTaskbarIconSize[i] += p.transientTaskbarIconSize[i];
+                startAlignTaskbar[i] |= p.startAlignTaskbar[i];
             }
 
-            folderBorderSpace += p.folderBorderSpace;
-
             return this;
         }
     }
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index ebed31b..37a20bf 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -18,10 +18,7 @@
 
 import static android.app.PendingIntent.FLAG_IMMUTABLE;
 import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
-import static android.content.pm.ActivityInfo.CONFIG_ORIENTATION;
-import static android.content.pm.ActivityInfo.CONFIG_SCREEN_SIZE;
 import static android.content.pm.ActivityInfo.CONFIG_UI_MODE;
-import static android.view.View.IMPORTANT_FOR_ACCESSIBILITY_NO;
 import static android.view.accessibility.AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
 
 import static com.android.launcher3.AbstractFloatingView.TYPE_ALL;
@@ -30,10 +27,14 @@
 import static com.android.launcher3.AbstractFloatingView.TYPE_REBIND_SAFE;
 import static com.android.launcher3.AbstractFloatingView.TYPE_SNACKBAR;
 import static com.android.launcher3.AbstractFloatingView.getTopOpenViewWithType;
+import static com.android.launcher3.LauncherAnimUtils.HOTSEAT_SCALE_PROPERTY_FACTORY;
+import static com.android.launcher3.LauncherAnimUtils.SCALE_INDEX_WIDGET_TRANSITION;
 import static com.android.launcher3.LauncherAnimUtils.SPRING_LOADED_EXIT_DELAY;
+import static com.android.launcher3.LauncherAnimUtils.WORKSPACE_SCALE_PROPERTY_FACTORY;
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_DESKTOP;
 import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION;
 import static com.android.launcher3.LauncherState.ALL_APPS;
-import static com.android.launcher3.LauncherState.FLAG_CLOSE_POPUPS;
+import static com.android.launcher3.LauncherState.EDIT_MODE;
 import static com.android.launcher3.LauncherState.FLAG_MULTI_PAGE;
 import static com.android.launcher3.LauncherState.FLAG_NON_INTERACTIVE;
 import static com.android.launcher3.LauncherState.NORMAL;
@@ -42,6 +43,10 @@
 import static com.android.launcher3.LauncherState.SPRING_LOADED;
 import static com.android.launcher3.Utilities.postAsyncCallback;
 import static com.android.launcher3.accessibility.LauncherAccessibilityDelegate.getSupportedActions;
+import static com.android.launcher3.anim.Interpolators.EMPHASIZED;
+import static com.android.launcher3.config.FeatureFlags.FOLDABLE_SINGLE_PAGE;
+import static com.android.launcher3.config.FeatureFlags.MULTI_SELECT_EDIT_MODE;
+import static com.android.launcher3.config.FeatureFlags.SHOW_DOT_PAGINATION;
 import static com.android.launcher3.logging.StatsLogManager.EventEnum;
 import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_BACKGROUND;
 import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_HOME;
@@ -50,7 +55,17 @@
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_EXIT;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ONRESUME;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ONSTOP;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_SWIPELEFT;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_SWIPERIGHT;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_WIDGET_RECONFIGURED;
+import static com.android.launcher3.logging.StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_ACTIVITY_ON_CREATE;
+import static com.android.launcher3.logging.StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION;
+import static com.android.launcher3.logging.StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_VIEW_INFLATION;
+import static com.android.launcher3.logging.StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_ASYNC;
+import static com.android.launcher3.logging.StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC;
+import static com.android.launcher3.logging.StatsLogManager.StatsLatencyLogger.LatencyType.COLD;
+import static com.android.launcher3.logging.StatsLogManager.StatsLatencyLogger.LatencyType.COLD_DEVICE_REBOOTING;
+import static com.android.launcher3.logging.StatsLogManager.StatsLatencyLogger.LatencyType.WARM;
 import static com.android.launcher3.model.ItemInstallQueue.FLAG_ACTIVITY_PAUSED;
 import static com.android.launcher3.model.ItemInstallQueue.FLAG_DRAG_AND_DROP;
 import static com.android.launcher3.popup.SystemShortcut.APP_INFO;
@@ -58,7 +73,7 @@
 import static com.android.launcher3.popup.SystemShortcut.WIDGETS;
 import static com.android.launcher3.states.RotationHelper.REQUEST_LOCK;
 import static com.android.launcher3.states.RotationHelper.REQUEST_NONE;
-import static com.android.launcher3.testing.TestProtocol.BAD_STATE;
+import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
 import static com.android.launcher3.util.ItemInfoMatcher.forFolderMatch;
 
 import android.animation.Animator;
@@ -73,30 +88,28 @@
 import android.appwidget.AppWidgetHostView;
 import android.appwidget.AppWidgetManager;
 import android.content.ActivityNotFoundException;
-import android.content.BroadcastReceiver;
 import android.content.ComponentCallbacks2;
 import android.content.Context;
 import android.content.Intent;
-import android.content.IntentFilter;
 import android.content.IntentSender;
 import android.content.SharedPreferences;
-import android.content.pm.PackageManager;
 import android.content.res.Configuration;
 import android.database.sqlite.SQLiteDatabase;
-import android.graphics.Bitmap;
+import android.graphics.Color;
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.CancellationSignal;
 import android.os.Parcelable;
-import android.os.Process;
 import android.os.StrictMode;
 import android.os.SystemClock;
 import android.os.Trace;
 import android.os.UserHandle;
 import android.text.TextUtils;
 import android.text.method.TextKeyListener;
+import android.util.AttributeSet;
+import android.util.FloatProperty;
 import android.util.Log;
 import android.util.SparseArray;
 import android.view.KeyEvent;
@@ -107,17 +120,20 @@
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.ViewTreeObserver;
 import android.view.ViewTreeObserver.OnPreDrawListener;
 import android.view.WindowManager.LayoutParams;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.animation.OvershootInterpolator;
-import android.widget.ImageView;
-import android.widget.Toast;
+import android.window.BackEvent;
+import android.window.OnBackAnimationCallback;
 
 import androidx.annotation.CallSuper;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
 import androidx.annotation.StringRes;
+import androidx.annotation.UiThread;
 import androidx.annotation.VisibleForTesting;
 
 import com.android.launcher3.DropTarget.DragObject;
@@ -127,9 +143,12 @@
 import com.android.launcher3.allapps.AllAppsRecyclerView;
 import com.android.launcher3.allapps.AllAppsStore;
 import com.android.launcher3.allapps.AllAppsTransitionController;
-import com.android.launcher3.allapps.BaseAllAppsContainerView;
+import com.android.launcher3.allapps.BaseSearchConfig;
 import com.android.launcher3.allapps.DiscoveryBounce;
 import com.android.launcher3.anim.PropertyListBuilder;
+import com.android.launcher3.celllayout.CellPosMapper;
+import com.android.launcher3.celllayout.CellPosMapper.CellPos;
+import com.android.launcher3.celllayout.CellPosMapper.TwoPanelCellPosMapper;
 import com.android.launcher3.compat.AccessibilityManagerCompat;
 import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.dot.DotInfo;
@@ -138,9 +157,9 @@
 import com.android.launcher3.dragndrop.DragOptions;
 import com.android.launcher3.dragndrop.DragView;
 import com.android.launcher3.dragndrop.LauncherDragController;
+import com.android.launcher3.folder.Folder;
 import com.android.launcher3.folder.FolderGridOrganizer;
 import com.android.launcher3.folder.FolderIcon;
-import com.android.launcher3.icons.BitmapRenderer;
 import com.android.launcher3.icons.IconCache;
 import com.android.launcher3.keyboard.ViewGroupFocusHelper;
 import com.android.launcher3.logger.LauncherAtom;
@@ -149,10 +168,10 @@
 import com.android.launcher3.logging.FileLog;
 import com.android.launcher3.logging.InstanceId;
 import com.android.launcher3.logging.InstanceIdSequence;
+import com.android.launcher3.logging.StartupLatencyLogger;
 import com.android.launcher3.logging.StatsLogManager;
 import com.android.launcher3.model.BgDataModel.Callbacks;
 import com.android.launcher3.model.ItemInstallQueue;
-import com.android.launcher3.model.ModelUtils;
 import com.android.launcher3.model.ModelWriter;
 import com.android.launcher3.model.StringCache;
 import com.android.launcher3.model.WidgetsModel;
@@ -162,6 +181,7 @@
 import com.android.launcher3.model.data.LauncherAppWidgetInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
 import com.android.launcher3.notification.NotificationListener;
+import com.android.launcher3.pageindicators.WorkspacePageIndicator;
 import com.android.launcher3.pm.PinRequestHelper;
 import com.android.launcher3.pm.UserCache;
 import com.android.launcher3.popup.ArrowPopup;
@@ -174,36 +194,38 @@
 import com.android.launcher3.statemanager.StatefulActivity;
 import com.android.launcher3.states.RotationHelper;
 import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.touch.AllAppsSwipeController;
-import com.android.launcher3.touch.ItemClickHandler;
 import com.android.launcher3.uioverrides.plugins.PluginManagerWrapper;
 import com.android.launcher3.util.ActivityResultInfo;
 import com.android.launcher3.util.ActivityTracker;
 import com.android.launcher3.util.ComponentKey;
 import com.android.launcher3.util.IntArray;
 import com.android.launcher3.util.IntSet;
+import com.android.launcher3.util.LockedUserState;
 import com.android.launcher3.util.OnboardingPrefs;
-import com.android.launcher3.util.PackageManagerHelper;
 import com.android.launcher3.util.PackageUserKey;
 import com.android.launcher3.util.PendingRequestArgs;
+import com.android.launcher3.util.Preconditions;
 import com.android.launcher3.util.RunnableList;
 import com.android.launcher3.util.SafeCloseable;
+import com.android.launcher3.util.ScreenOnTracker;
+import com.android.launcher3.util.ScreenOnTracker.ScreenOnListener;
 import com.android.launcher3.util.SystemUiController;
 import com.android.launcher3.util.Themes;
 import com.android.launcher3.util.Thunk;
 import com.android.launcher3.util.TouchController;
 import com.android.launcher3.util.TraceHelper;
-import com.android.launcher3.util.UiThreadHelper;
 import com.android.launcher3.util.ViewOnDrawExecutor;
 import com.android.launcher3.views.ActivityContext;
+import com.android.launcher3.views.ComposeInitializer;
 import com.android.launcher3.views.FloatingIconView;
 import com.android.launcher3.views.FloatingSurfaceView;
 import com.android.launcher3.views.OptionsPopupView;
 import com.android.launcher3.views.ScrimView;
-import com.android.launcher3.widget.LauncherAppWidgetHost;
 import com.android.launcher3.widget.LauncherAppWidgetHostView;
 import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
+import com.android.launcher3.widget.LauncherWidgetHolder;
 import com.android.launcher3.widget.PendingAddShortcutInfo;
 import com.android.launcher3.widget.PendingAddWidgetInfo;
 import com.android.launcher3.widget.PendingAppWidgetHostView;
@@ -217,7 +239,6 @@
 import com.android.systemui.plugins.shared.LauncherExterns;
 import com.android.systemui.plugins.shared.LauncherOverlayManager;
 import com.android.systemui.plugins.shared.LauncherOverlayManager.LauncherOverlay;
-import com.android.systemui.plugins.shared.LauncherOverlayManager.LauncherOverlayCallbacks;
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
@@ -227,6 +248,7 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import java.util.function.Predicate;
 import java.util.function.Supplier;
@@ -237,7 +259,7 @@
  */
 public class Launcher extends StatefulActivity<LauncherState>
         implements LauncherExterns, Callbacks, InvariantDeviceProfile.OnIDPChangeListener,
-        PluginListener<LauncherOverlayPlugin>, LauncherOverlayCallbacks {
+        PluginListener<LauncherOverlayPlugin> {
     public static final String TAG = "Launcher";
 
     public static final ActivityTracker<Launcher> ACTIVITY_TRACKER = new ActivityTracker<>();
@@ -255,8 +277,6 @@
     public static final int REQUEST_BIND_PENDING_APPWIDGET = 12;
     public static final int REQUEST_RECONFIGURE_APPWIDGET = 13;
 
-    private static final int REQUEST_PERMISSION_CALL_PHONE = 14;
-
     private static final float BOUNCE_ANIMATION_TENSION = 1.3f;
 
     /**
@@ -266,7 +286,7 @@
     protected static final int REQUEST_LAST = 100;
 
     // Type: int
-    private static final String RUNTIME_STATE = "launcher.state";
+    protected static final String RUNTIME_STATE = "launcher.state";
     // Type: PendingRequestArgs
     private static final String RUNTIME_STATE_PENDING_REQUEST_ARGS = "launcher.request_args";
     // Type: int
@@ -278,11 +298,19 @@
     // Type int[]
     private static final String RUNTIME_STATE_CURRENT_SCREEN_IDS = "launcher.current_screen_ids";
 
+    // Type PendingSplitSelectInfo<Parcelable>
+    protected static final String PENDING_SPLIT_SELECT_INFO = "launcher.pending_split_select_info";
+
+    public static final String INTENT_ACTION_ALL_APPS_TOGGLE =
+            "launcher.intent_action_all_apps_toggle";
+
     public static final String ON_CREATE_EVT = "Launcher.onCreate";
     public static final String ON_START_EVT = "Launcher.onStart";
     public static final String ON_RESUME_EVT = "Launcher.onResume";
     public static final String ON_NEW_INTENT_EVT = "Launcher.onNewIntent";
 
+    private static boolean sIsNewProcess = true;
+
     private StateManager<LauncherState> mStateManager;
 
     private static final int ON_ACTIVITY_RESULT_ANIMATION_DELAY = 500;
@@ -292,23 +320,29 @@
     private static final int NEW_APPS_ANIMATION_INACTIVE_TIMEOUT_SECONDS = 5;
     @Thunk @VisibleForTesting public static final int NEW_APPS_ANIMATION_DELAY = 500;
 
-    private static final int THEME_CROSS_FADE_ANIMATION_DURATION = 375;
-
     private static final String DISPLAY_WORKSPACE_TRACE_METHOD_NAME = "DisplayWorkspaceFirstFrame";
     private static final String DISPLAY_ALL_APPS_TRACE_METHOD_NAME = "DisplayAllApps";
     public static final int DISPLAY_WORKSPACE_TRACE_COOKIE = 0;
     public static final int DISPLAY_ALL_APPS_TRACE_COOKIE = 1;
 
-    private Configuration mOldConfig;
+    private static final FloatProperty<Workspace<?>> WORKSPACE_WIDGET_SCALE =
+            WORKSPACE_SCALE_PROPERTY_FACTORY.get(SCALE_INDEX_WIDGET_TRANSITION);
+    private static final FloatProperty<Hotseat> HOTSEAT_WIDGET_SCALE =
+            HOTSEAT_SCALE_PROPERTY_FACTORY.get(SCALE_INDEX_WIDGET_TRANSITION);
+
+    private static final boolean DESKTOP_MODE_1_SUPPORTED =
+            "1".equals(Utilities.getSystemProperty("persist.wm.debug.desktop_mode", "0"));
+
+    private static final boolean DESKTOP_MODE_2_SUPPORTED =
+            "1".equals(Utilities.getSystemProperty("persist.wm.debug.desktop_mode_2", "0"));
 
     @Thunk
     Workspace<?> mWorkspace;
     @Thunk
     DragLayer mDragLayer;
-    private DragController mDragController;
 
     private WidgetManagerHelper mAppWidgetManager;
-    private LauncherAppWidgetHost mAppWidgetHost;
+    private LauncherWidgetHolder mAppWidgetHolder;
 
     private final int[] mTmpAddItemCellCoordinates = new int[2];
 
@@ -369,6 +403,7 @@
     private RotationHelper mRotationHelper;
 
     protected LauncherOverlayManager mOverlayManager;
+    protected DragController mDragController;
     // If true, overlay callbacks are deferred
     private boolean mDeferOverlayCallbacks;
     private final Runnable mDeferredOverlayCallbacks = this::checkIfOverlayStillDeferred;
@@ -386,10 +421,23 @@
     private LauncherState mPrevLauncherState;
 
     private StringCache mStringCache;
+    private BaseSearchConfig mBaseSearchConfig;
+    private StartupLatencyLogger mStartupLatencyLogger;
+    private CellPosMapper mCellPosMapper = CellPosMapper.DEFAULT;
 
     @Override
     @TargetApi(Build.VERSION_CODES.S)
     protected void onCreate(Bundle savedInstanceState) {
+        mStartupLatencyLogger = createStartupLatencyLogger(
+                sIsNewProcess
+                        ? LockedUserState.get(this).isUserUnlockedAtLauncherStartup()
+                            ? COLD
+                            : COLD_DEVICE_REBOOTING
+                        : WARM);
+        sIsNewProcess = false;
+        mStartupLatencyLogger
+                .logStart(LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION)
+                .logStart(LAUNCHER_LATENCY_STARTUP_ACTIVITY_ON_CREATE);
         // Only use a hard-coded cookie since we only want to trace this once.
         if (Utilities.ATLEAST_S) {
             Trace.beginAsyncSection(
@@ -454,30 +502,31 @@
         super.onCreate(savedInstanceState);
 
         LauncherAppState app = LauncherAppState.getInstance(this);
-        mOldConfig = new Configuration(getResources().getConfiguration());
         mModel = app.getModel();
 
         mRotationHelper = new RotationHelper(this);
         InvariantDeviceProfile idp = app.getInvariantDeviceProfile();
         initDeviceProfile(idp);
         idp.addOnChangeListener(this);
-        mSharedPrefs = Utilities.getPrefs(this);
+        mSharedPrefs = LauncherPrefs.getPrefs(this);
         mIconCache = app.getIconCache();
         mAccessibilityDelegate = createAccessibilityDelegate();
 
-        mDragController = new LauncherDragController(this);
+        initDragController();
         mAllAppsController = new AllAppsTransitionController(this);
         mStateManager = new StateManager<>(this, NORMAL);
 
         mOnboardingPrefs = createOnboardingPrefs(mSharedPrefs);
 
-        mAppWidgetManager = new WidgetManagerHelper(this);
-        mAppWidgetHost = createAppWidgetHost();
-        mAppWidgetHost.startListening();
+        // TODO: move the SearchConfig to SearchState when new LauncherState is created.
+        mBaseSearchConfig = new BaseSearchConfig();
 
-        inflateRootView(R.layout.launcher);
         setupViews();
-        crossFadeWithPreviousAppearance();
+
+        mAppWidgetManager = new WidgetManagerHelper(this);
+        mAppWidgetHolder = createAppWidgetHolder();
+        mAppWidgetHolder.startListening();
+
         mPopupDataProvider = new PopupDataProvider(this::updateNotificationDots);
 
         boolean internalStateHandled = ACTIVITY_TRACKER.handleCreate(this);
@@ -498,9 +547,9 @@
             }
         }
 
+        mStartupLatencyLogger.logWorkspaceLoadStartTime();
         if (!mModel.addCallbacksAndLoad(this)) {
             if (!internalStateHandled) {
-                Log.d(BAD_STATE, "Launcher onCreate not binding sync, prevent drawing");
                 // If we are not binding synchronously, pause drawing until initial bind complete,
                 // so that the system could continue to show the device loading prompt
                 mOnInitialBindListener = Boolean.FALSE::booleanValue;
@@ -511,14 +560,15 @@
         setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
 
         setContentView(getRootView());
+        ComposeInitializer.initCompose(this);
+
         if (mOnInitialBindListener != null) {
             getRootView().getViewTreeObserver().addOnPreDrawListener(mOnInitialBindListener);
         }
         getRootView().dispatchInsets();
 
-        // Listen for broadcasts
-        registerReceiver(mScreenOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
-
+        // Listen for screen turning off
+        ScreenOnTracker.INSTANCE.get(this).addListener(mScreenOnListener);
         getSystemUiController().updateUiState(SystemUiController.UI_STATE_BASE_WINDOW,
                 Themes.getAttrBoolean(this, R.attr.isWorkspaceDarkText));
 
@@ -539,6 +589,72 @@
             getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
         }
         setTitle(R.string.home_screen);
+        mStartupLatencyLogger.logEnd(LAUNCHER_LATENCY_STARTUP_ACTIVITY_ON_CREATE);
+    }
+
+    /**
+     * Create {@link StartupLatencyLogger} that only collects launcher startup latency metrics
+     * without sending them anywhere. Child class can override this method to create logger
+     * that overrides {@link StartupLatencyLogger#log()} to report those metrics.
+     */
+    protected StartupLatencyLogger createStartupLatencyLogger(
+            StatsLogManager.StatsLatencyLogger.LatencyType latencyType) {
+        return new StartupLatencyLogger(latencyType);
+    }
+
+    /**
+     * Provide {@link OnBackAnimationCallback} in below order:
+     * <ol>
+     *  <li> auto cancel action mode handler
+     *  <li> drag handler
+     *  <li> view handler
+     *  <li> state handler
+     * </ol>
+     *
+     * A back gesture (a single click on back button, or a swipe back gesture that contains a series
+     * of swipe events) should be handled by the same handler from above list. For a new back
+     * gesture, a new handler should be regenerated.
+     *
+     * Note that state handler will always be handling the back press event if the previous 3 don't.
+     */
+    @NonNull
+    @RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
+    protected OnBackAnimationCallback getOnBackAnimationCallback() {
+        // #1 auto cancel action mode handler
+        if (isInAutoCancelActionMode()) {
+            return this::finishAutoCancelActionMode;
+        }
+
+        // #2 drag handler
+        if (mDragController.isDragging()) {
+            return mDragController::cancelDrag;
+        }
+
+        // #3 view handler
+        AbstractFloatingView topView =
+                AbstractFloatingView.getTopOpenView(Launcher.this);
+        if (topView != null && topView.canHandleBack()) {
+            return topView;
+        }
+
+        // #4 state handler
+        return new OnBackAnimationCallback() {
+            @Override
+            public void onBackInvoked() {
+                onStateBack();
+            }
+
+            @Override
+            public void onBackProgressed(@NonNull BackEvent backEvent) {
+                mStateManager.getState().onBackProgressed(
+                        Launcher.this, backEvent.getProgress());
+            }
+
+            @Override
+            public void onBackCancelled() {
+                mStateManager.getState().onBackCancelled(Launcher.this);
+            }
+        };
     }
 
     protected LauncherOverlayManager getDefaultOverlay() {
@@ -603,20 +719,24 @@
         dispatchDeviceProfileChanged();
     }
 
-    @Override
-    public void onConfigurationChanged(Configuration newConfig) {
-        int diff = newConfig.diff(mOldConfig);
-        if ((diff & (CONFIG_ORIENTATION | CONFIG_SCREEN_SIZE)) != 0) {
-            onIdpChanged(false);
-        }
-
-        mOldConfig.setTo(newConfig);
-        super.onConfigurationChanged(newConfig);
+    /**
+     * Initializes the drag controller.
+     */
+    protected void initDragController() {
+        mDragController = new LauncherDragController(this);
     }
 
     @Override
     public void onIdpChanged(boolean modelPropertiesChanged) {
-        initDeviceProfile(mDeviceProfile.inv);
+        onHandleConfigurationChanged();
+    }
+
+    @Override
+    protected void onHandleConfigurationChanged() {
+        if (!initDeviceProfile(mDeviceProfile.inv)) {
+            return;
+        }
+
         dispatchDeviceProfileChanged();
         reapplyUi();
         mDragLayer.recreateControllers();
@@ -632,23 +752,35 @@
     }
 
     /**
-     * Called when one handed mode activated and deactivated.
-     * @param activated true if one handed mode activated, false otherwise.
+     * Returns {@code true} if a new DeviceProfile is initialized, and {@code false} otherwise.
      */
-    public void onOneHandedStateChanged(boolean activated) {
-        mDragLayer.onOneHandedModeStateChanged(activated);
-    }
-
-    protected void initDeviceProfile(InvariantDeviceProfile idp) {
+    protected boolean initDeviceProfile(InvariantDeviceProfile idp) {
         // Load configuration-specific DeviceProfile
-        mDeviceProfile = idp.getDeviceProfile(this);
+        DeviceProfile deviceProfile = idp.getDeviceProfile(this);
+        if (mDeviceProfile == deviceProfile) {
+            return false;
+        }
+
+        mDeviceProfile = deviceProfile;
         if (isInMultiWindowMode()) {
             mDeviceProfile = mDeviceProfile.getMultiWindowProfile(
                     this, getMultiWindowDisplaySize());
         }
 
         onDeviceProfileInitiated();
-        mModelWriter = mModel.getWriter(getDeviceProfile().isVerticalBarLayout(), true, this);
+        if (FOLDABLE_SINGLE_PAGE.get() && mDeviceProfile.isTwoPanels) {
+            mCellPosMapper = new TwoPanelCellPosMapper(mDeviceProfile.inv.numColumns);
+        } else {
+            mCellPosMapper = CellPosMapper.DEFAULT;
+        }
+        mModelWriter = mModel.getWriter(getDeviceProfile().isVerticalBarLayout(), true,
+                mCellPosMapper, this);
+        return true;
+    }
+
+    @Override
+    public CellPosMapper getCellPosMapper() {
+        return mCellPosMapper;
     }
 
     public RotationHelper getRotationHelper() {
@@ -671,17 +803,9 @@
      */
     @Override
     public void setLauncherOverlay(LauncherOverlay overlay) {
-        if (overlay != null) {
-            overlay.setOverlayCallbacks(this);
-        }
         mWorkspace.setLauncherOverlay(overlay);
     }
 
-    @Override
-    public void runOnOverlayHidden(Runnable runnable) {
-        getWorkspace().runOnOverlayHidden(runnable);
-    }
-
     public boolean setLauncherCallbacks(LauncherCallbacks callbacks) {
         mLauncherCallbacks = callbacks;
         return true;
@@ -724,23 +848,25 @@
      */
     private int completeAdd(
             int requestCode, Intent intent, int appWidgetId, PendingRequestArgs info) {
-        int screenId = info.screenId;
-        if (info.container == LauncherSettings.Favorites.CONTAINER_DESKTOP) {
+        CellPos cellPos = getCellPosMapper().mapModelToPresenter(info);
+        int screenId = cellPos.screenId;
+        if (info.container == CONTAINER_DESKTOP) {
             // When the screen id represents an actual screen (as opposed to a rank) we make sure
             // that the drop page actually exists.
-            screenId = ensurePendingDropLayoutExists(info.screenId);
+            screenId = ensurePendingDropLayoutExists(cellPos.screenId);
         }
 
         switch (requestCode) {
             case REQUEST_CREATE_SHORTCUT:
-                completeAddShortcut(intent, info.container, screenId, info.cellX, info.cellY, info);
+                completeAddShortcut(intent, info.container, screenId,
+                        cellPos.cellX, cellPos.cellY, info);
                 announceForAccessibility(R.string.item_added_to_workspace);
                 break;
             case REQUEST_CREATE_APPWIDGET:
                 completeAddAppWidget(appWidgetId, info, null, null);
                 break;
             case REQUEST_RECONFIGURE_APPWIDGET:
-                mStatsLogManager.logger().withItemInfo(info).log(LAUNCHER_WIDGET_RECONFIGURED);
+                getStatsLogManager().logger().withItemInfo(info).log(LAUNCHER_WIDGET_RECONFIGURED);
                 completeRestoreAppWidget(appWidgetId, LauncherAppWidgetInfo.RESTORE_COMPLETED);
                 break;
             case REQUEST_BIND_PENDING_APPWIDGET: {
@@ -781,12 +907,8 @@
 
         final int pendingAddWidgetId = requestArgs.getWidgetId();
 
-        Runnable exitSpringLoaded = new Runnable() {
-            @Override
-            public void run() {
-                mStateManager.goToState(NORMAL, SPRING_LOADED_EXIT_DELAY);
-            }
-        };
+        Runnable exitSpringLoaded = MULTI_SELECT_EDIT_MODE.get() ? null
+                : () -> mStateManager.goToState(NORMAL, SPRING_LOADED_EXIT_DELAY);
 
         if (requestCode == REQUEST_BIND_APPWIDGET) {
             // This is called only if the user did not previously have permissions to bind widgets
@@ -829,14 +951,17 @@
                         ON_ACTIVITY_RESULT_ANIMATION_DELAY, false,
                         () -> getStateManager().goToState(NORMAL));
             } else {
-                if (requestArgs.container == LauncherSettings.Favorites.CONTAINER_DESKTOP) {
+                CellPos presenterPos = getCellPosMapper().mapModelToPresenter(requestArgs);
+                if (requestArgs.container == CONTAINER_DESKTOP) {
                     // When the screen id represents an actual screen (as opposed to a rank)
                     // we make sure that the drop page actually exists.
-                    requestArgs.screenId =
-                            ensurePendingDropLayoutExists(requestArgs.screenId);
+                    int newScreenId = ensurePendingDropLayoutExists(presenterPos.screenId);
+                    requestArgs.screenId = getCellPosMapper().mapPresenterToModel(
+                            presenterPos.cellX, presenterPos.cellY, newScreenId, CONTAINER_DESKTOP)
+                                    .screenId;
                 }
                 final CellLayout dropLayout =
-                        mWorkspace.getScreenWithId(requestArgs.screenId);
+                        mWorkspace.getScreenWithId(presenterPos.screenId);
 
                 dropLayout.setDropPending(true);
                 final Runnable onComplete = new Runnable() {
@@ -885,32 +1010,6 @@
         handleActivityResult(requestCode, resultCode, data);
     }
 
-    @Override
-    public void onRequestPermissionsResult(int requestCode, String[] permissions,
-            int[] grantResults) {
-        PendingRequestArgs pendingArgs = mPendingRequestArgs;
-        if (requestCode == REQUEST_PERMISSION_CALL_PHONE && pendingArgs != null
-                && pendingArgs.getRequestCode() == REQUEST_PERMISSION_CALL_PHONE) {
-            setWaitingForResult(null);
-
-            View v = null;
-            CellLayout layout = getCellLayout(pendingArgs.container, pendingArgs.screenId);
-            if (layout != null) {
-                v = layout.getChildAt(pendingArgs.cellX, pendingArgs.cellY);
-            }
-            Intent intent = pendingArgs.getPendingIntent();
-
-            if (grantResults.length > 0
-                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-                startActivitySafely(v, intent, null);
-            } else {
-                // TODO: Show a snack bar with link to settings
-                Toast.makeText(this, getString(R.string.msg_no_phone_permission,
-                        getString(R.string.derived_app_name)), Toast.LENGTH_SHORT).show();
-            }
-        }
-    }
-
     /**
      * Check to see if a given screen id exists. If not, create it at the end, return the new id.
      *
@@ -932,25 +1031,25 @@
     @Thunk
     void completeTwoStageWidgetDrop(
             final int resultCode, final int appWidgetId, final PendingRequestArgs requestArgs) {
-        CellLayout cellLayout = mWorkspace.getScreenWithId(requestArgs.screenId);
+        CellLayout cellLayout = mWorkspace.getScreenWithId(
+                getCellPosMapper().mapModelToPresenter(requestArgs).screenId);
         Runnable onCompleteRunnable = null;
         int animationType = 0;
 
         AppWidgetHostView boundWidget = null;
         if (resultCode == RESULT_OK) {
             animationType = Workspace.COMPLETE_TWO_STAGE_WIDGET_DROP_ANIMATION;
-            final AppWidgetHostView layout = mAppWidgetHost.createView(this, appWidgetId,
+            final AppWidgetHostView layout = mAppWidgetHolder.createView(this, appWidgetId,
                     requestArgs.getWidgetHandler().getProviderInfo(this));
             boundWidget = layout;
-            onCompleteRunnable = new Runnable() {
-                @Override
-                public void run() {
-                    completeAddAppWidget(appWidgetId, requestArgs, layout, null);
+            onCompleteRunnable = () -> {
+                completeAddAppWidget(appWidgetId, requestArgs, layout, null);
+                if (!isInState(EDIT_MODE)) {
                     mStateManager.goToState(NORMAL, SPRING_LOADED_EXIT_DELAY);
                 }
             };
         } else if (resultCode == RESULT_CANCELED) {
-            mAppWidgetHost.deleteAppWidgetId(appWidgetId);
+            mAppWidgetHolder.deleteAppWidgetId(appWidgetId);
             animationType = Workspace.CANCEL_TWO_STAGE_WIDGET_DROP_ANIMATION;
         }
         if (mDragLayer.getAnimatedView() != null) {
@@ -973,7 +1072,7 @@
         }
         hideKeyboard();
         logStopAndResume(false /* isResume */);
-        mAppWidgetHost.setActivityStarted(false);
+        mAppWidgetHolder.setActivityStarted(false);
         NotificationListener.removeNotificationsChangedListener(getPopupDataProvider());
     }
 
@@ -986,7 +1085,7 @@
             mOverlayManager.onActivityStarted(this);
         }
 
-        mAppWidgetHost.setActivityStarted(true);
+        mAppWidgetHolder.setActivityStarted(true);
         TraceHelper.INSTANCE.endSection(traceToken);
     }
 
@@ -1006,7 +1105,7 @@
         NotificationListener.addNotificationsChangedListener(mPopupDataProvider);
 
         DiscoveryBounce.showForHomeIfNeeded(this);
-        mAppWidgetHost.setActivityResumed(true);
+        mAppWidgetHolder.setActivityResumed(true);
     }
 
     private void logStopAndResume(boolean isResume) {
@@ -1080,11 +1179,7 @@
         }
         addActivityFlags(ACTIVITY_STATE_TRANSITION_ACTIVE);
 
-        if (state.hasFlag(FLAG_CLOSE_POPUPS)) {
-            AbstractFloatingView.closeAllOpenViews(this, !state.hasFlag(FLAG_NON_INTERACTIVE));
-        }
-
-        if (state == SPRING_LOADED) {
+        if (state == SPRING_LOADED || state == EDIT_MODE) {
             // Prevent any Un/InstallShortcutReceivers from updating the db while we are
             // not on homescreen
             ItemInstallQueue.INSTANCE.get(this).pauseModelPush(FLAG_DRAG_AND_DROP);
@@ -1110,6 +1205,7 @@
                         .log(getAllAppsEntryEvent().get());
             }
         }
+        updateDisallowBack();
     }
 
     /**
@@ -1124,7 +1220,7 @@
     @Override
     public void onStateSetEnd(LauncherState state) {
         super.onStateSetEnd(state);
-        getAppWidgetHost().setStateIsNormal(state == LauncherState.NORMAL);
+        getAppWidgetHolder().setStateIsNormal(state == LauncherState.NORMAL);
         getWorkspace().setClipChildren(!state.hasFlag(FLAG_MULTI_PAGE));
 
         finishAutoCancelActionMode();
@@ -1171,7 +1267,6 @@
             mOverlayManager.onActivityResumed(this);
         }
 
-        AbstractFloatingView.closeAllOpenViewsExcept(this, false, TYPE_REBIND_SAFE);
         DragView.removeAllViews(this);
         TraceHelper.INSTANCE.endSection(traceToken);
     }
@@ -1189,19 +1284,7 @@
         if (!mDeferOverlayCallbacks) {
             mOverlayManager.onActivityPaused(this);
         }
-        mAppWidgetHost.setActivityResumed(false);
-    }
-
-    /**
-     * {@code LauncherOverlayCallbacks} scroll amount.
-     * Indicates transition progress to -1 screen.
-     * @param progress From 0 to 1.
-     */
-    @Override
-    public void onScrollChanged(float progress) {
-        if (mWorkspace != null) {
-            mWorkspace.onOverlayScrollChanged(progress);
-        }
+        mAppWidgetHolder.setActivityResumed(false);
     }
 
     /**
@@ -1245,6 +1328,10 @@
      * Finds all the views we need and configure them properly.
      */
     protected void setupViews() {
+        mStartupLatencyLogger.logStart(LAUNCHER_LATENCY_STARTUP_VIEW_INFLATION);
+        inflateRootView(R.layout.launcher);
+        mStartupLatencyLogger.logEnd(LAUNCHER_LATENCY_STARTUP_VIEW_INFLATION);
+
         mDragLayer = findViewById(R.id.drag_layer);
         mFocusHandler = mDragLayer.getFocusIndicatorHelper();
         mWorkspace = mDragLayer.findViewById(R.id.workspace);
@@ -1268,6 +1355,7 @@
 
         // Setup Apps
         mAppsView = findViewById(R.id.apps_view);
+        mAppsView.setAllAppsTransitionController(mAllAppsController);
 
         // Setup Scrim
         mScrimView = findViewById(R.id.scrim_view);
@@ -1275,6 +1363,23 @@
         // Setup the drag controller (drop targets have to be added in reverse order in priority)
         mDropTargetBar.setup(mDragController);
         mAllAppsController.setupViews(mScrimView, mAppsView);
+
+        if (SHOW_DOT_PAGINATION.get()) {
+            mWorkspace.getPageIndicator().setShouldAutoHide(true);
+            mWorkspace.getPageIndicator().setPaintColor(
+                    Themes.getAttrBoolean(this, R.attr.isWorkspaceDarkText)
+                            ? Color.BLACK
+                            : Color.WHITE);
+        }
+    }
+
+    @Override
+    public View onCreateView(View parent, String name, Context context, AttributeSet attrs) {
+        if (SHOW_DOT_PAGINATION.get() && WorkspacePageIndicator.class.getName().equals(name)) {
+            return LayoutInflater.from(context).inflate(R.layout.page_indicator_dots,
+                    (ViewGroup) parent, false);
+        }
+        return super.onCreateView(parent, name, context, attrs);
     }
 
     /**
@@ -1300,7 +1405,7 @@
         BubbleTextView favorite = (BubbleTextView) LayoutInflater.from(parent.getContext())
                 .inflate(R.layout.app_icon, parent, false);
         favorite.applyFromWorkspaceItem(info);
-        favorite.setOnClickListener(ItemClickHandler.INSTANCE);
+        favorite.setOnClickListener(getItemOnClickListener());
         favorite.setOnFocusChangeListener(mFocusHandler);
         return favorite;
     }
@@ -1322,21 +1427,9 @@
 
         WorkspaceItemInfo info = PinRequestHelper.createWorkspaceItemFromPinItemRequest(
                     this, PinRequestHelper.getPinItemRequest(data), 0);
-
         if (info == null) {
-            // Legacy shortcuts are only supported for primary profile.
-            info = Process.myUserHandle().equals(args.user)
-                    ? ModelUtils.fromLegacyShortcutIntent(this, data) : null;
-
-            if (info == null) {
-                Log.e(TAG, "Unable to parse a valid custom shortcut result");
-                return;
-            } else if (!new PackageManagerHelper(this).hasPermissionForActivity(
-                    info.intent, args.getPendingIntent().getComponent().getPackageName())) {
-                // The app is trying to add a shortcut without sufficient permissions
-                Log.e(TAG, "Ignoring malicious intent " + info.intent.toUri(0));
-                return;
-            }
+            Log.e(TAG, "Unable to parse a valid shortcut result");
+            return;
         }
 
         if (container < 0) {
@@ -1403,7 +1496,7 @@
 
         if (hostView == null) {
             // Perform actual inflation because we're live
-            hostView = mAppWidgetHost.createView(this, appWidgetId, appWidgetInfo);
+            hostView = mAppWidgetHolder.createView(this, appWidgetId, appWidgetInfo);
         }
 
         LauncherAppWidgetInfo launcherInfo;
@@ -1421,9 +1514,9 @@
             launcherInfo.sourceContainer =
                     ((PendingRequestArgs) itemInfo).getWidgetSourceContainer();
         }
-
+        CellPos presenterPos = getCellPosMapper().mapModelToPresenter(itemInfo);
         getModelWriter().addItemToDatabase(launcherInfo,
-                itemInfo.container, itemInfo.screenId, itemInfo.cellX, itemInfo.cellY);
+                itemInfo.container, presenterPos.screenId, presenterPos.cellX, presenterPos.cellY);
 
         hostView.setVisibility(View.VISIBLE);
         prepareAppWidget(hostView, launcherInfo);
@@ -1433,14 +1526,15 @@
         // Show the widget resize frame.
         if (hostView instanceof LauncherAppWidgetHostView) {
             final LauncherAppWidgetHostView launcherHostView = (LauncherAppWidgetHostView) hostView;
-            CellLayout cellLayout = getCellLayout(launcherInfo.container, launcherInfo.screenId);
+            CellLayout cellLayout = getCellLayout(launcherInfo.container, presenterPos.screenId);
             if (mStateManager.getState() == NORMAL) {
                 AppWidgetResizeFrame.showForWidget(launcherHostView, cellLayout);
             } else {
                 mStateManager.addStateListener(new StateManager.StateListener<LauncherState>() {
                     @Override
                     public void onStateTransitionComplete(LauncherState finalState) {
-                        if (mPrevLauncherState == SPRING_LOADED && finalState == NORMAL) {
+                        if ((mPrevLauncherState == SPRING_LOADED || mPrevLauncherState == EDIT_MODE)
+                                && finalState == NORMAL) {
                             AppWidgetResizeFrame.showForWidget(launcherHostView, cellLayout);
                             mStateManager.removeStateListener(this);
                         }
@@ -1457,12 +1551,7 @@
         hostView.setOnFocusChangeListener(mFocusHandler);
     }
 
-    private final BroadcastReceiver mScreenOffReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            onScreenOff();
-        }
-    };
+    private final ScreenOnListener mScreenOnListener = this::onScreenOnChanged;
 
     private void updateNotificationDots(Predicate<PackageUserKey> updatedDots) {
         mWorkspace.updateNotificationDots(updatedDots);
@@ -1486,16 +1575,6 @@
     public Object onRetainNonConfigurationInstance() {
         NonConfigInstance instance = new NonConfigInstance();
         instance.config = new Configuration(mOldConfig);
-
-        int width = mDragLayer.getWidth();
-        int height = mDragLayer.getHeight();
-
-        if (FeatureFlags.ENABLE_LAUNCHER_ACTIVITY_THEME_CROSSFADE.get()
-                && width > 0
-                && height > 0) {
-            instance.snapshot =
-                    BitmapRenderer.createHardwareBitmap(width, height, mDragLayer::draw);
-        }
         return instance;
     }
 
@@ -1534,19 +1613,22 @@
         return mScrimView;
     }
 
-    public LauncherAppWidgetHost getAppWidgetHost() {
-        return mAppWidgetHost;
+    public LauncherWidgetHolder getAppWidgetHolder() {
+        return mAppWidgetHolder;
     }
 
-    protected LauncherAppWidgetHost createAppWidgetHost() {
-        return new LauncherAppWidgetHost(this,
-                appWidgetId -> getWorkspace().removeWidget(appWidgetId));
+    protected LauncherWidgetHolder createAppWidgetHolder() {
+        return LauncherWidgetHolder.HolderFactory.newFactory(this).newInstance(
+                this, appWidgetId -> getWorkspace().removeWidget(appWidgetId));
     }
 
     public LauncherModel getModel() {
         return mModel;
     }
 
+    /**
+     * Returns the ModelWriter writer, make sure to call the function every time you want to use it.
+     */
     public ModelWriter getModelWriter() {
         return mModelWriter;
     }
@@ -1558,16 +1640,20 @@
 
     @Override
     public SharedPreferences getDevicePrefs() {
-        return Utilities.getDevicePrefs(this);
+        return LauncherPrefs.getDevicePrefs(this);
     }
 
     public int getOrientation() {
         return mOldConfig.orientation;
     }
 
+    public BaseSearchConfig getSearchConfig() {
+        return mBaseSearchConfig;
+    }
+
     @Override
     protected void onNewIntent(Intent intent) {
-        if (Utilities.IS_RUNNING_IN_TEST_HARNESS) {
+        if (Utilities.isRunningInTestHarness()) {
             Log.d(TestProtocol.PERMANENT_DIAG_TAG, "Launcher.onNewIntent: " + intent);
         }
         Object traceToken = TraceHelper.INSTANCE.beginSection(ON_NEW_INTENT_EVT);
@@ -1582,7 +1668,6 @@
                 && AbstractFloatingView.getTopOpenView(this) == null;
         boolean isActionMain = Intent.ACTION_MAIN.equals(intent.getAction());
         boolean internalStateHandled = ACTIVITY_TRACKER.handleNewIntent(this);
-        hideKeyboard();
 
         if (isActionMain) {
             if (!internalStateHandled) {
@@ -1612,6 +1697,8 @@
             handleGestureContract(intent);
         } else if (Intent.ACTION_ALL_APPS.equals(intent.getAction())) {
             showAllAppsFromIntent(alreadyOnHome);
+        } else if (INTENT_ACTION_ALL_APPS_TOGGLE.equals(intent.getAction())) {
+            toggleAllAppsFromIntent(alreadyOnHome);
         } else if (Intent.ACTION_SHOW_WORK_APPS.equals(intent.getAction())) {
             showAllAppsWorkTabFromIntent(alreadyOnHome);
         }
@@ -1619,6 +1706,14 @@
         TraceHelper.INSTANCE.endSection(traceToken);
     }
 
+    protected void toggleAllAppsFromIntent(boolean alreadyOnHome) {
+        if (getStateManager().isInStableState(ALL_APPS)) {
+            getStateManager().goToState(NORMAL, alreadyOnHome);
+        } else {
+            showAllAppsFromIntent(alreadyOnHome);
+        }
+    }
+
     protected void showAllAppsFromIntent(boolean alreadyOnHome) {
         AbstractFloatingView.closeAllOpenViews(this);
         getStateManager().goToState(ALL_APPS, alreadyOnHome);
@@ -1626,7 +1721,7 @@
 
     private void showAllAppsWorkTabFromIntent(boolean alreadyOnHome) {
         showAllAppsFromIntent(alreadyOnHome);
-        mAppsView.switchToTab(BaseAllAppsContainerView.AdapterHolder.WORK);
+        mAppsView.switchToTab(ActivityAllAppsContainerView.AdapterHolder.WORK);
     }
 
     /**
@@ -1640,16 +1735,6 @@
         }
     }
 
-    /**
-     * Hides the keyboard if visible
-     */
-    public void hideKeyboard() {
-        final View v = getWindow().peekDecorView();
-        if (v != null && v.getWindowToken() != null) {
-            UiThreadHelper.hideKeyboardAsync(this, v.getWindowToken());
-        }
-    }
-
     @Override
     public void onRestoreInstanceState(Bundle state) {
         super.onRestoreInstanceState(state);
@@ -1679,6 +1764,10 @@
             outState.remove(RUNTIME_STATE_WIDGET_PANEL);
         }
 
+        // We close any open folders and shortcut containers that are not safe for rebind,
+        // and we need to make sure this state is reflected.
+        AbstractFloatingView.closeAllOpenViewsExcept(
+                this, isStarted() && !isForceInvisible(), TYPE_REBIND_SAFE);
         finishAutoCancelActionMode();
 
         if (mPendingRequestArgs != null) {
@@ -1699,7 +1788,7 @@
         super.onDestroy();
         ACTIVITY_TRACKER.onActivityDestroyed(this);
 
-        unregisterReceiver(mScreenOffReceiver);
+        ScreenOnTracker.INSTANCE.get(this).removeListener(mScreenOnListener);
         mWorkspace.removeFolderListeners();
         PluginManagerWrapper.INSTANCE.get(this).removePluginListener(this);
 
@@ -1707,10 +1796,11 @@
         mRotationHelper.destroy();
 
         try {
-            mAppWidgetHost.stopListening();
+            mAppWidgetHolder.stopListening();
         } catch (NullPointerException ex) {
             Log.w(TAG, "problem while stopping AppWidgetHost during Launcher destruction", ex);
         }
+        mAppWidgetHolder.destroy();
 
         TextKeyListener.getInstance().release();
         clearPendingBinds();
@@ -1729,6 +1819,11 @@
     }
 
     @Override
+    public DropTargetHandler getDropTargetHandler() {
+        return new DropTargetHandler(this);
+    }
+
+    @Override
     public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
         if (requestCode != -1) {
             mPendingActivityRequestCode = requestCode;
@@ -1807,13 +1902,9 @@
                 REQUEST_CREATE_APPWIDGET)) {
             // If the configuration flow was not started, add the widget
 
-            Runnable onComplete = new Runnable() {
-                @Override
-                public void run() {
-                    // Exit spring loaded mode if necessary after adding the widget
-                    mStateManager.goToState(NORMAL, SPRING_LOADED_EXIT_DELAY);
-                }
-            };
+            // Exit spring loaded mode if necessary after adding the widget
+            Runnable onComplete = MULTI_SELECT_EDIT_MODE.get() ? null
+                    : () -> mStateManager.goToState(NORMAL, SPRING_LOADED_EXIT_DELAY);
             completeAddAppWidget(appWidgetId, info, boundWidget,
                     addFlowHandler.getProviderInfo(this));
             mWorkspace.removeExtraEmptyScreenDelayed(delay, false, onComplete);
@@ -1822,12 +1913,17 @@
 
     public void addPendingItem(PendingAddItemInfo info, int container, int screenId,
             int[] cell, int spanX, int spanY) {
-        info.container = container;
-        info.screenId = screenId;
-        if (cell != null) {
-            info.cellX = cell[0];
-            info.cellY = cell[1];
+        if (cell == null) {
+            CellPos modelPos = getCellPosMapper().mapPresenterToModel(0, 0, screenId, container);
+            info.screenId = modelPos.screenId;
+        } else {
+            CellPos modelPos = getCellPosMapper().mapPresenterToModel(
+                    cell[0],  cell[1], screenId, container);
+            info.screenId = modelPos.screenId;
+            info.cellX = modelPos.cellX;
+            info.cellY = modelPos.cellY;
         }
+        info.container = container;
         info.spanX = spanX;
         info.spanY = spanY;
 
@@ -1851,7 +1947,7 @@
         Intent intent = new Intent(Intent.ACTION_CREATE_SHORTCUT).setComponent(info.componentName);
         setWaitingForResult(PendingRequestArgs.forIntent(REQUEST_CREATE_SHORTCUT, intent, info));
         TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "start: processShortcutFromDrop");
-        if (!info.activityInfo.startConfigActivity(this, REQUEST_CREATE_SHORTCUT)) {
+        if (!info.getActivityInfo(this).startConfigActivity(this, REQUEST_CREATE_SHORTCUT)) {
             handleActivityResult(REQUEST_CREATE_SHORTCUT, RESULT_CANCELED, null);
         }
     }
@@ -1882,7 +1978,7 @@
                 appWidgetId = CustomWidgetManager.INSTANCE.get(this).getWidgetIdForCustomProvider(
                         info.componentName);
             } else {
-                appWidgetId = getAppWidgetHost().allocateAppWidgetId();
+                appWidgetId = getAppWidgetHolder().allocateAppWidgetId();
             }
             Bundle options = info.bindOptions;
 
@@ -1996,7 +2092,7 @@
             final LauncherAppWidgetInfo widgetInfo = (LauncherAppWidgetInfo) itemInfo;
             mWorkspace.removeWorkspaceItem(v);
             if (deleteFromDb) {
-                getModelWriter().deleteWidgetInfo(widgetInfo, getAppWidgetHost(), reason);
+                getModelWriter().deleteWidgetInfo(widgetInfo, getAppWidgetHolder(), reason);
             }
         } else {
             return false;
@@ -2035,33 +2131,19 @@
     }
 
     @Override
+    @TargetApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
     public void onBackPressed() {
-        if (finishAutoCancelActionMode()) {
-            return;
-        }
-
-        if (mDragController.isDragging()) {
-            mDragController.cancelDrag();
-            return;
-        }
-
-        // Note: There should be at most one log per method call. This is enforced implicitly
-        // by using if-else statements.
-        AbstractFloatingView topView = AbstractFloatingView.getTopOpenView(this);
-        if (topView == null || !topView.onBackPressed()) {
-            // Not handled by the floating view.
-            onStateBack();
-        }
+        getOnBackAnimationCallback().onBackInvoked();
     }
 
     protected void onStateBack() {
         mStateManager.getState().onBackPressed(this);
     }
 
-    protected void onScreenOff() {
+    protected void onScreenOnChanged(boolean isOn) {
         // Reset AllApps to its initial state only if we are not in the middle of
         // processing a multi-step drop
-        if (mPendingRequestArgs == null) {
+        if (!isOn && mPendingRequestArgs == null) {
             if (!isInState(NORMAL)) {
                 onUiChangedWhileSleeping();
             }
@@ -2069,52 +2151,39 @@
         }
     }
 
-    @TargetApi(Build.VERSION_CODES.M)
     @Override
-    public boolean onErrorStartingShortcut(Intent intent, ItemInfo info) {
-        // Due to legacy reasons, direct call shortcuts require Launchers to have the
-        // corresponding permission. Show the appropriate permission prompt if that
-        // is the case.
-        if (intent.getComponent() == null
-                && Intent.ACTION_CALL.equals(intent.getAction())
-                && checkSelfPermission(android.Manifest.permission.CALL_PHONE) !=
-                PackageManager.PERMISSION_GRANTED) {
-
-            setWaitingForResult(PendingRequestArgs
-                    .forIntent(REQUEST_PERMISSION_CALL_PHONE, intent, info));
-            requestPermissions(new String[]{android.Manifest.permission.CALL_PHONE},
-                    REQUEST_PERMISSION_CALL_PHONE);
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    @Override
-    public boolean startActivitySafely(View v, Intent intent, ItemInfo item) {
+    public RunnableList startActivitySafely(View v, Intent intent, ItemInfo item) {
         if (!hasBeenResumed()) {
+            RunnableList result = new RunnableList();
             // Workaround an issue where the WM launch animation is clobbered when finishing the
             // recents animation into launcher. Defer launching the activity until Launcher is
             // next resumed.
-            addOnResumeCallback(() -> startActivitySafely(v, intent, item));
+            addOnResumeCallback(() -> {
+                RunnableList actualResult = startActivitySafely(v, intent, item);
+                if (actualResult != null) {
+                    actualResult.add(result::executeAllAndDestroy);
+                } else {
+                    result.executeAllAndDestroy();
+                }
+            });
             if (mOnDeferredActivityLaunchCallback != null) {
                 mOnDeferredActivityLaunchCallback.run();
                 mOnDeferredActivityLaunchCallback = null;
             }
-            return true;
+            return result;
         }
 
-        boolean success = super.startActivitySafely(v, intent, item);
-        if (success && v instanceof BubbleTextView) {
+        RunnableList result = super.startActivitySafely(v, intent, item);
+        if (result != null && v instanceof BubbleTextView) {
             // This is set to the view that launched the activity that navigated the user away
             // from launcher. Since there is no callback for when the activity has finished
             // launching, enable the press state and keep this reference to reset the press
             // state when we return to launcher.
             BubbleTextView btv = (BubbleTextView) v;
             btv.setStayPressed(true);
-            addOnResumeCallback(() -> btv.setStayPressed(false));
+            result.add(() -> btv.setStayPressed(false));
         }
-        return success;
+        return result;
     }
 
     boolean isHotseatLayout(View layout) {
@@ -2188,10 +2257,6 @@
 
         IntSet result = new IntSet();
         if (visibleIds.isEmpty()) {
-            if (TestProtocol.sDebugTracing) {
-                Log.d(TestProtocol.NULL_INT_SET, "getPagesToBindSynchronously (1): "
-                        + result);
-            }
             return result;
         }
         for (int id : orderedScreenIds.toArray()) {
@@ -2212,10 +2277,6 @@
             // pages being hidden in single panel.
             result.add(pairId);
         }
-        if (TestProtocol.sDebugTracing) {
-            Log.d(TestProtocol.NULL_INT_SET, "getPagesToBindSynchronously (2): "
-                    + result);
-        }
         return result;
     }
 
@@ -2237,7 +2298,7 @@
 
     /**
      * Refreshes the shortcuts shown on the workspace.
-     *
+     * <p>
      * Implementation of the method from LauncherModel.Callbacks.
      */
     public void startBinding() {
@@ -2254,7 +2315,7 @@
 
         mWorkspace.clearDropTargets();
         mWorkspace.removeAllWorkspaceScreens();
-        mAppWidgetHost.clearViews();
+        mAppWidgetHolder.clearViews();
 
         if (mHotseat != null) {
             mHotseat.resetLayout(getDeviceProfile().isVerticalBarLayout());
@@ -2390,6 +2451,12 @@
                             (FolderInfo) item);
                     break;
                 }
+                case LauncherSettings.Favorites.ITEM_TYPE_APP_PAIR: {
+                    FolderInfo info = (FolderInfo) item;
+                    // TODO (jeremysim b/274189428): Create app pair icon
+                    view = null;
+                    break;
+                }
                 case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET:
                 case LauncherSettings.Favorites.ITEM_TYPE_CUSTOM_APPWIDGET: {
                     view = inflateAppWidget((LauncherAppWidgetInfo) item);
@@ -2405,10 +2472,11 @@
             /*
              * Remove colliding items.
              */
-            if (item.container == LauncherSettings.Favorites.CONTAINER_DESKTOP) {
-                CellLayout cl = mWorkspace.getScreenWithId(item.screenId);
-                if (cl != null && cl.isOccupied(item.cellX, item.cellY)) {
-                    View v = cl.getChildAt(item.cellX, item.cellY);
+            CellPos presenterPos = getCellPosMapper().mapModelToPresenter(item);
+            if (item.container == CONTAINER_DESKTOP) {
+                CellLayout cl = mWorkspace.getScreenWithId(presenterPos.screenId);
+                if (cl != null && cl.isOccupied(presenterPos.cellX, presenterPos.cellY)) {
+                    View v = cl.getChildAt(presenterPos.cellX, presenterPos.cellY);
                     if (v == null) {
                         Log.e(TAG, "bindItems failed when removing colliding item=" + item);
                     }
@@ -2419,10 +2487,6 @@
                         throw (new RuntimeException(desc));
                     } else {
                         getModelWriter().deleteItemFromDatabase(item, desc);
-                        if (TestProtocol.sDebugTracing) {
-                            Log.d(TestProtocol.MISSING_PROMISE_ICON,
-                                    TAG + "bindItems failed for item=" + item);
-                        }
                         continue;
                     }
                 }
@@ -2434,7 +2498,7 @@
                 view.setScaleX(0f);
                 view.setScaleY(0f);
                 bounceAnims.add(createNewAppBounceAnimation(view, i));
-                newItemsScreenId = item.screenId;
+                newItemsScreenId = presenterPos.screenId;
             }
 
             if (newView == null) {
@@ -2561,7 +2625,7 @@
                 if (item.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_ID_NOT_VALID)) {
                     if (!item.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_ID_ALLOCATED)) {
                         // Id has not been allocated yet. Allocate a new id.
-                        item.appWidgetId = mAppWidgetHost.allocateAppWidgetId();
+                        item.appWidgetId = mAppWidgetHolder.allocateAppWidgetId();
                         item.restoreStatus |= LauncherAppWidgetInfo.FLAG_ID_ALLOCATED;
 
                         // Also try to bind the widget. If the bind fails, the user will be shown
@@ -2623,18 +2687,18 @@
                 // Verify that we own the widget
                 if (appWidgetInfo == null) {
                     FileLog.e(TAG, "Removing invalid widget: id=" + item.appWidgetId);
-                    getModelWriter().deleteWidgetInfo(item, getAppWidgetHost(), removalReason);
+                    getModelWriter().deleteWidgetInfo(item, getAppWidgetHolder(), removalReason);
                     return null;
                 }
 
                 item.minSpanX = appWidgetInfo.minSpanX;
                 item.minSpanY = appWidgetInfo.minSpanY;
-                view = mAppWidgetHost.createView(this, item.appWidgetId, appWidgetInfo);
+                view = mAppWidgetHolder.createView(this, item.appWidgetId, appWidgetInfo);
             } else if (!item.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_ID_NOT_VALID)
                     && appWidgetInfo != null) {
-                mAppWidgetHost.addPendingView(item.appWidgetId,
+                mAppWidgetHolder.addPendingView(item.appWidgetId,
                         new PendingAppWidgetHostView(this, item, mIconCache, false));
-                view = mAppWidgetHost.createView(this, item.appWidgetId, appWidgetInfo);
+                view = mAppWidgetHolder.createView(this, item.appWidgetId, appWidgetInfo);
             } else {
                 view = new PendingAppWidgetHostView(this, item, mIconCache, false);
             }
@@ -2680,7 +2744,8 @@
 
     @Override
     @TargetApi(Build.VERSION_CODES.S)
-    public void onInitialBindComplete(IntSet boundPages, RunnableList pendingTasks) {
+    public void onInitialBindComplete(IntSet boundPages, RunnableList pendingTasks,
+            int workspaceItemCount, boolean isBindSync) {
         mSynchronouslyBoundPages = boundPages;
         mPagesToBindSynchronously = new IntSet();
 
@@ -2704,11 +2769,31 @@
             Trace.endAsyncSection(DISPLAY_WORKSPACE_TRACE_METHOD_NAME,
                     DISPLAY_WORKSPACE_TRACE_COOKIE);
         }
+        mStartupLatencyLogger
+                .logCardinality(workspaceItemCount)
+                .logEnd(isBindSync
+                        ? LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC
+                        : LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_ASYNC);
+        // In the first rootview's onDraw after onInitialBindComplete(), log end of startup latency.
+        getRootView().getViewTreeObserver().addOnDrawListener(
+                new ViewTreeObserver.OnDrawListener() {
+
+                    @Override
+                    public void onDraw() {
+                        mStartupLatencyLogger
+                                .logEnd(LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION)
+                                .log()
+                                .reset();
+                        MAIN_EXECUTOR.getHandler().postAtFrontOfQueue(
+                                () -> getRootView().getViewTreeObserver()
+                                        .removeOnDrawListener(this));
+                    }
+                });
     }
 
     /**
      * Callback saying that there aren't any more items to bind.
-     *
+     * <p>
      * Implementation of the method from LauncherModel.Callbacks.
      */
     public void finishBindingItems(IntSet pagesBoundFirst) {
@@ -2738,6 +2823,8 @@
         getViewCache().setCacheSize(R.layout.folder_page, 2);
 
         TraceHelper.INSTANCE.endSection(traceToken);
+
+        mWorkspace.removeExtraEmptyScreen(true);
     }
 
     private boolean canAnimatePageChange() {
@@ -2776,7 +2863,7 @@
             View v = getFirstMatch(Collections.singletonList(activeRecyclerView),
                     preferredItem, packageAndUserAndApp);
 
-            if (v != null && activeRecyclerView.getCurrentScrollY() > 0) {
+            if (v != null && activeRecyclerView.computeVerticalScrollOffset() > 0) {
                 RectF locationBounds = new RectF();
                 FloatingIconView.getLocationBoundsForView(this, v, false, locationBounds,
                         new Rect());
@@ -2787,16 +2874,30 @@
             }
 
             return v;
-        } else {
-            List<ViewGroup> containers = new ArrayList<>(mWorkspace.getPanelCount() + 1);
-            containers.add(mWorkspace.getHotseat().getShortcutsAndWidgets());
-            mWorkspace.forEachVisiblePage(page
-                    -> containers.add(((CellLayout) page).getShortcutsAndWidgets()));
-
-            // Order: Preferred item by itself or in folder, then by matching package/user
-            return getFirstMatch(containers, preferredItem, forFolderMatch(preferredItem),
-                    packageAndUserAndApp, forFolderMatch(packageAndUserAndApp));
         }
+
+        // Look for the item inside the folder at the current page
+        Folder folder = Folder.getOpen(this);
+        if (folder != null) {
+            View v = getFirstMatch(Collections.singletonList(
+                    folder.getContent().getCurrentCellLayout().getShortcutsAndWidgets()),
+                    preferredItem,
+                    packageAndUserAndApp);
+            if (v == null) {
+                folder.close(isStarted() && !isForceInvisible());
+            } else {
+                return v;
+            }
+        }
+
+        List<ViewGroup> containers = new ArrayList<>(mWorkspace.getPanelCount() + 1);
+        containers.add(mWorkspace.getHotseat().getShortcutsAndWidgets());
+        mWorkspace.forEachVisiblePage(page
+                -> containers.add(((CellLayout) page).getShortcutsAndWidgets()));
+
+        // Order: Preferred item by itself or in folder, then by matching package/user
+        return getFirstMatch(containers, preferredItem, forFolderMatch(preferredItem),
+                packageAndUserAndApp, forFolderMatch(packageAndUserAndApp));
     }
 
     /**
@@ -2849,7 +2950,16 @@
     /**
      * Informs us that the overlay (-1 screen, typically), has either become visible or invisible.
      */
-    public void onOverlayVisibilityChanged(boolean visible) {}
+    public void onOverlayVisibilityChanged(boolean visible) {
+        getStatsLogManager().logger()
+                .withSrcState(LAUNCHER_STATE_HOME)
+                .withDstState(LAUNCHER_STATE_HOME)
+                .withContainerInfo(LauncherAtom.ContainerInfo.newBuilder()
+                        .setWorkspace(WorkspaceContainer.newBuilder()
+                                .setPageIndex(visible ? 0 : -1))
+                        .build())
+                .log(visible ? LAUNCHER_SWIPELEFT : LAUNCHER_SWIPERIGHT);
+    }
 
     /**
      * Informs us that the page transition has ended, so that we can react to the newly selected
@@ -2864,8 +2974,12 @@
      */
     @Override
     @TargetApi(Build.VERSION_CODES.S)
-    public void bindAllApplications(AppInfo[] apps, int flags) {
-        mAppsView.getAppsStore().setApps(apps, flags);
+    @UiThread
+    public void bindAllApplications(AppInfo[] apps, int flags,
+            Map<PackageUserKey, Integer> packageUserKeytoUidMap) {
+        Preconditions.assertUIThread();
+        AllAppsStore appsStore = mAppsView.getAppsStore();
+        appsStore.setApps(apps, flags, packageUserKeytoUidMap);
         PopupContainerWithArrow.dismissInvalidPopup(this);
         if (Utilities.ATLEAST_S) {
             Trace.endAsyncSection(DISPLAY_ALL_APPS_TRACE_METHOD_NAME,
@@ -2990,13 +3104,14 @@
         writer.println(prefix + "\tmPendingRequestArgs=" + mPendingRequestArgs
                 + " mPendingActivityResult=" + mPendingActivityResult);
         writer.println(prefix + "\tmRotationHelper: " + mRotationHelper);
-        writer.println(prefix + "\tmAppWidgetHost.isListening: " + mAppWidgetHost.isListening());
+        writer.println(prefix + "\tmAppWidgetHolder.isListening: "
+                + mAppWidgetHolder.isListening());
 
         // Extra logging for general debugging
         mDragLayer.dump(prefix, writer);
         mStateManager.dump(prefix, writer);
         mPopupDataProvider.dump(prefix, writer);
-        mDeviceProfile.dump(prefix, writer);
+        mDeviceProfile.dump(this, prefix, writer);
 
         try {
             FileLog.flushAll(writer);
@@ -3061,6 +3176,16 @@
     }
 
     @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        if (keyCode == KeyEvent.KEYCODE_ESCAPE) {
+            // Close any open floating views.
+            closeOpenViews();
+            return true;
+        }
+        return super.onKeyDown(keyCode, event);
+    }
+
+    @Override
     public boolean onKeyUp(int keyCode, KeyEvent event) {
         if (keyCode == KeyEvent.KEYCODE_MENU) {
             // KEYCODE_MENU is sent by some tests, for example
@@ -3072,7 +3197,7 @@
 
                 // Setting the touch point to (-1, -1) will show the options popup in the center of
                 // the screen.
-                if (Utilities.IS_RUNNING_IN_TEST_HARNESS) {
+                if (Utilities.isRunningInTestHarness()) {
                     Log.d(TestProtocol.PERMANENT_DIAG_TAG, "Opening options popup on key up");
                 }
                 showDefaultOptions(-1, -1);
@@ -3103,7 +3228,7 @@
     }
 
     @Override
-    public boolean shouldUseColorExtractionForPopup() {
+    public boolean canUseMultipleShadesForPopup() {
         return getTopOpenViewWithType(this, TYPE_FOLDER) == null
                 && getStateManager().getState() != LauncherState.ALL_APPS;
     }
@@ -3120,7 +3245,22 @@
 
     public void useFadeOutAnimationForLauncherStart(CancellationSignal signal) { }
 
-    public void onDragLayerHierarchyChanged() { }
+    public void onDragLayerHierarchyChanged() {
+        updateDisallowBack();
+    }
+
+    private void updateDisallowBack() {
+        if (DESKTOP_MODE_1_SUPPORTED || DESKTOP_MODE_2_SUPPORTED) {
+            // Do not disable back in launcher when prototype behavior is enabled
+            return;
+        }
+        LauncherRootView rv = getRootView();
+        if (rv != null) {
+            boolean disableBack = getStateManager().getState() == NORMAL
+                    && AbstractFloatingView.getTopOpenView(this) == null;
+            rv.setDisallowBackGesture(disableBack);
+        }
+    }
 
     @Override
     public void returnToHomescreen() {
@@ -3144,6 +3284,10 @@
         return new LauncherAccessibilityDelegate(this);
     }
 
+    /** Enables/disabled the hotseat prediction icon long press edu for testing. */
+    @VisibleForTesting
+    public void enableHotseatEdu(boolean enable) {}
+
     /**
      * @see LauncherState#getOverviewScaleAndOffset(Launcher)
      */
@@ -3162,41 +3306,6 @@
         return (T) activityContext;
     }
 
-    /**
-     * Cross-fades the launcher's updated appearance with its previous appearance.
-     *
-     * This method is used to cross-fade UI updates on activity creation, specifically dark mode
-     * updates.
-     */
-    private void crossFadeWithPreviousAppearance() {
-        NonConfigInstance lastInstance = (NonConfigInstance) getLastNonConfigurationInstance();
-
-        if (lastInstance == null || lastInstance.snapshot == null) {
-            return;
-        }
-
-        ImageView crossFadeHelper = new ImageView(this);
-        crossFadeHelper.setImageBitmap(lastInstance.snapshot);
-        crossFadeHelper.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO);
-
-        InsettableFrameLayout.LayoutParams layoutParams = new InsettableFrameLayout.LayoutParams(
-                InsettableFrameLayout.LayoutParams.MATCH_PARENT,
-                InsettableFrameLayout.LayoutParams.MATCH_PARENT);
-
-        layoutParams.ignoreInsets = true;
-
-        crossFadeHelper.setLayoutParams(layoutParams);
-
-        getRootView().addView(crossFadeHelper);
-
-        crossFadeHelper
-                .animate()
-                .setDuration(THEME_CROSS_FADE_ANIMATION_DURATION)
-                .alpha(0f)
-                .withEndAction(() -> getRootView().removeView(crossFadeHelper))
-                .start();
-    }
-
     public boolean supportsAdaptiveIconAnimation(View clickedView) {
         return false;
     }
@@ -3220,12 +3329,14 @@
      * @param progress Transition progress from 0 to 1; where 0 => home and 1 => widgets.
      */
     public void onWidgetsTransition(float progress) {
-        // No-Op
+        float scale = Utilities.mapToRange(progress, 0f, 1f, 1f,
+                mDeviceProfile.bottomSheetWorkspaceScale, EMPHASIZED);
+        WORKSPACE_WIDGET_SCALE.set(getWorkspace(), scale);
+        HOTSEAT_WIDGET_SCALE.set(getHotseat(), scale);
     }
 
     private static class NonConfigInstance {
         public Configuration config;
-        public Bitmap snapshot;
     }
 
     @Override
@@ -3266,4 +3377,12 @@
             return false; // Return false to continue iterating through all the items.
         });
     }
+
+    /**
+     * Returns {@code true} if there are visible tasks with windowing mode set to
+     * {@link android.app.WindowConfiguration#WINDOWING_MODE_FREEFORM}
+     */
+    public boolean areFreeformTasksVisible() {
+        return false; // Base launcher does not track freeform tasks
+    }
 }
diff --git a/src/com/android/launcher3/LauncherAnimUtils.java b/src/com/android/launcher3/LauncherAnimUtils.java
index 808bf96..c20f323 100644
--- a/src/com/android/launcher3/LauncherAnimUtils.java
+++ b/src/com/android/launcher3/LauncherAnimUtils.java
@@ -26,6 +26,8 @@
 import android.util.IntProperty;
 import android.view.View;
 import android.view.ViewGroup.LayoutParams;
+import android.widget.ImageView;
+import android.widget.TextView;
 
 import com.android.launcher3.util.MultiScalePropertyFactory;
 
@@ -80,9 +82,9 @@
             new MultiScalePropertyFactory<Hotseat>("hotseat_scale_property");
 
     public static final int SCALE_INDEX_UNFOLD_ANIMATION = 1;
-    public static final int SCALE_INDEX_UNLOCK_ANIMATION = 2;
-    public static final int SCALE_INDEX_WORKSPACE_STATE = 3;
-    public static final int SCALE_INDEX_REVEAL_ANIM = 4;
+    public static final int SCALE_INDEX_WORKSPACE_STATE = 2;
+    public static final int SCALE_INDEX_REVEAL_ANIM = 3;
+    public static final int SCALE_INDEX_WIDGET_TRANSITION = 4;
 
     /** Increase the duration if we prevented the fling, as we are going against a high velocity. */
     public static int blockedFlingDurationFactor(float velocity) {
@@ -115,6 +117,32 @@
                 }
             };
 
+    public static final IntProperty<TextView> TEXT_COLOR =
+            new IntProperty<TextView>("textColor") {
+                @Override
+                public Integer get(TextView view) {
+                    return view.getTextColors().getDefaultColor();
+                }
+
+                @Override
+                public void setValue(TextView view, int color) {
+                    view.setTextColor(color);
+                }
+            };
+
+    public static final IntProperty<TextView> HINT_TEXT_COLOR =
+            new IntProperty<TextView>("hintTextColor") {
+                @Override
+                public Integer get(TextView view) {
+                    return view.getHintTextColors().getDefaultColor();
+                }
+
+                @Override
+                public void setValue(TextView view, int color) {
+                    view.setHintTextColor(color);
+                }
+            };
+
     public static final FloatProperty<View> VIEW_TRANSLATE_X =
             View.TRANSLATION_X instanceof FloatProperty ? (FloatProperty) View.TRANSLATION_X
                     : new FloatProperty<View>("translateX") {
@@ -173,6 +201,23 @@
                 }
             };
 
+    public static final FloatProperty<ImageView> ROTATION_DRAWABLE_PERCENT =
+            new FloatProperty<ImageView>("drawableRotationPercent") {
+                // RotateDrawable linearly interpolates the rotation degrees between fromDegrees
+                // and toDegrees using the drawable level as a percent of its MAX_LEVEL.
+                private static final int MAX_LEVEL = 10000;
+
+                @Override
+                public void setValue(ImageView view, float percent) {
+                    view.setImageLevel((int) (percent * MAX_LEVEL));
+                }
+
+                @Override
+                public Float get(ImageView view) {
+                    return view.getDrawable().getLevel() / (float) MAX_LEVEL;
+                }
+            };
+
     /**
      * Utility method to create an {@link AnimatorListener} which executes a callback on animation
      * cancel.
@@ -191,4 +236,32 @@
             }
         };
     }
+
+    /**
+     * A property that updates the specified property within a given range of values (ie. even if
+     * the animator goes beyond 0..1, the interpolated value will still be bounded).
+     * @param <T> the specified property
+     */
+    public static class ClampedProperty<T> extends FloatProperty<T> {
+        private final FloatProperty<T> mProperty;
+        private final float mMinValue;
+        private final float mMaxValue;
+
+        public ClampedProperty(FloatProperty<T> property, float minValue, float maxValue) {
+            super(property.getName() + "Clamped");
+            mProperty = property;
+            mMinValue = minValue;
+            mMaxValue = maxValue;
+        }
+
+        @Override
+        public void setValue(T t, float v) {
+            mProperty.set(t, Utilities.boundToRange(v, mMinValue, mMaxValue));
+        }
+
+        @Override
+        public Float get(T t) {
+            return mProperty.get(t);
+        }
+    }
 }
diff --git a/src/com/android/launcher3/LauncherAppState.java b/src/com/android/launcher3/LauncherAppState.java
index 597bc8d..4d15ac7 100644
--- a/src/com/android/launcher3/LauncherAppState.java
+++ b/src/com/android/launcher3/LauncherAppState.java
@@ -18,8 +18,8 @@
 
 import static android.app.admin.DevicePolicyManager.ACTION_DEVICE_POLICY_RESOURCE_UPDATED;
 
-import static com.android.launcher3.Utilities.getDevicePrefs;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_THEMED_ICONS;
+import static com.android.launcher3.LauncherPrefs.ICON_STATE;
+import static com.android.launcher3.LauncherPrefs.THEMED_ICONS;
 import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
 import static com.android.launcher3.util.SettingsCache.NOTIFICATION_BADGING_URI;
 
@@ -31,7 +31,11 @@
 import android.content.pm.LauncherApps;
 import android.os.UserHandle;
 import android.util.Log;
+import android.util.SparseArray;
+import android.widget.RemoteViews;
 
+import androidx.annotation.GuardedBy;
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import com.android.launcher3.config.FeatureFlags;
@@ -44,6 +48,7 @@
 import com.android.launcher3.pm.InstallSessionHelper;
 import com.android.launcher3.pm.InstallSessionTracker;
 import com.android.launcher3.pm.UserCache;
+import com.android.launcher3.util.LockedUserState;
 import com.android.launcher3.util.MainThreadInitializedObject;
 import com.android.launcher3.util.Preconditions;
 import com.android.launcher3.util.RunnableList;
@@ -56,7 +61,7 @@
 public class LauncherAppState implements SafeCloseable {
 
     public static final String ACTION_FORCE_ROLOAD = "force-reload-launcher";
-    private static final String KEY_ICON_STATE = "pref_icon_shape_path";
+    public static final String KEY_ICON_STATE = "pref_icon_shape_path";
 
     // We do not need any synchronization for this variable as its only written on UI thread.
     public static final MainThreadInitializedObject<LauncherAppState> INSTANCE =
@@ -69,6 +74,12 @@
     private final InvariantDeviceProfile mInvariantDeviceProfile;
     private final RunnableList mOnTerminateCallback = new RunnableList();
 
+    // WORKAROUND: b/269335387 remove this after widget background listener is enabled
+    /* Array of RemoteViews cached by Launcher process */
+    @GuardedBy("itself")
+    @NonNull
+    public final SparseArray<RemoteViews> mCachedRemoteViews = new SparseArray<>();
+
     public static LauncherAppState getInstance(final Context context) {
         return INSTANCE.get(context);
     }
@@ -100,34 +111,34 @@
                 Intent.ACTION_MANAGED_PROFILE_AVAILABLE,
                 Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE,
                 Intent.ACTION_MANAGED_PROFILE_UNLOCKED,
+                Intent.ACTION_PROFILE_INACCESSIBLE,
                 ACTION_DEVICE_POLICY_RESOURCE_UPDATED);
         if (FeatureFlags.IS_STUDIO_BUILD) {
-            modelChangeReceiver.register(mContext, Context.RECEIVER_EXPORTED, ACTION_FORCE_ROLOAD);
+            modelChangeReceiver.register(mContext, ACTION_FORCE_ROLOAD);
         }
         mOnTerminateCallback.add(() -> mContext.unregisterReceiver(modelChangeReceiver));
 
-        CustomWidgetManager.INSTANCE.get(mContext)
-                .setWidgetRefreshCallback(mModel::refreshAndBindWidgetsAndShortcuts);
-
         SafeCloseable userChangeListener = UserCache.INSTANCE.get(mContext)
                 .addUserChangeListener(mModel::forceReload);
         mOnTerminateCallback.add(userChangeListener::close);
 
-        IconObserver observer = new IconObserver();
-        SafeCloseable iconChangeTracker = mIconProvider.registerIconChangeListener(
-                observer, MODEL_EXECUTOR.getHandler());
-        mOnTerminateCallback.add(iconChangeTracker::close);
-        MODEL_EXECUTOR.execute(observer::verifyIconChanged);
-        if (ENABLE_THEMED_ICONS.get()) {
-            SharedPreferences prefs = Utilities.getPrefs(mContext);
-            prefs.registerOnSharedPreferenceChangeListener(observer);
-            mOnTerminateCallback.add(
-                    () -> prefs.unregisterOnSharedPreferenceChangeListener(observer));
-        }
+        LockedUserState.get(context).runOnUserUnlocked(() -> {
+            CustomWidgetManager.INSTANCE.get(mContext)
+                    .setWidgetRefreshCallback(mModel::refreshAndBindWidgetsAndShortcuts);
 
-        InstallSessionTracker installSessionTracker =
-                InstallSessionHelper.INSTANCE.get(context).registerInstallTracker(mModel);
-        mOnTerminateCallback.add(installSessionTracker::unregister);
+            IconObserver observer = new IconObserver();
+            SafeCloseable iconChangeTracker = mIconProvider.registerIconChangeListener(
+                    observer, MODEL_EXECUTOR.getHandler());
+            mOnTerminateCallback.add(iconChangeTracker::close);
+            MODEL_EXECUTOR.execute(observer::verifyIconChanged);
+            LauncherPrefs.get(context).addListener(observer, THEMED_ICONS);
+            mOnTerminateCallback.add(
+                    () -> LauncherPrefs.get(mContext).removeListener(observer, THEMED_ICONS));
+
+            InstallSessionTracker installSessionTracker =
+                    InstallSessionHelper.INSTANCE.get(context).registerInstallTracker(mModel);
+            mOnTerminateCallback.add(installSessionTracker::unregister);
+        });
 
         // Register an observer to rebind the notification listener when dots are re-enabled.
         SettingsCache settingsCache = SettingsCache.INSTANCE.get(mContext);
@@ -210,12 +221,12 @@
         public void onSystemIconStateChanged(String iconState) {
             IconShape.init(mContext);
             refreshAndReloadLauncher();
-            getDevicePrefs(mContext).edit().putString(KEY_ICON_STATE, iconState).apply();
+            LauncherPrefs.get(mContext).put(ICON_STATE, iconState);
         }
 
         void verifyIconChanged() {
             String iconState = mIconProvider.getSystemIconState();
-            if (!iconState.equals(getDevicePrefs(mContext).getString(KEY_ICON_STATE, ""))) {
+            if (!iconState.equals(LauncherPrefs.get(mContext).get(ICON_STATE))) {
                 onSystemIconStateChanged(iconState);
             }
         }
diff --git a/src/com/android/launcher3/LauncherFiles.java b/src/com/android/launcher3/LauncherFiles.java
index e59eac8..d730cea 100644
--- a/src/com/android/launcher3/LauncherFiles.java
+++ b/src/com/android/launcher3/LauncherFiles.java
@@ -47,9 +47,12 @@
             DEVICE_PREFERENCES_KEY + XML,
             APP_ICONS_DB));
 
-    public static final List<String> ALL_FILES = Collections.unmodifiableList(
-            new ArrayList<String>() {{
-                addAll(GRID_DB_FILES);
-                addAll(OTHER_FILES);
-            }});
+    private static List<String> createAllFiles() {
+        ArrayList<String> result = new ArrayList<>();
+        result.addAll(GRID_DB_FILES);
+        result.addAll(OTHER_FILES);
+        return Collections.unmodifiableList(result);
+    }
+
+    public static final List<String> ALL_FILES = createAllFiles();
 }
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index de0d300..4e066b0 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -20,6 +20,9 @@
 
 import static com.android.launcher3.LauncherAppState.ACTION_FORCE_ROLOAD;
 import static com.android.launcher3.config.FeatureFlags.IS_STUDIO_BUILD;
+import static com.android.launcher3.testing.shared.TestProtocol.WORK_TAB_MISSING;
+import static com.android.launcher3.testing.shared.TestProtocol.sDebugTracing;
+import static com.android.launcher3.testing.shared.TestProtocol.testLogD;
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
 import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
 
@@ -33,9 +36,11 @@
 import android.util.Log;
 import android.util.Pair;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.WorkerThread;
 
+import com.android.launcher3.celllayout.CellPosMapper;
 import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.icons.IconCache;
 import com.android.launcher3.logging.FileLog;
@@ -46,8 +51,9 @@
 import com.android.launcher3.model.BgDataModel.Callbacks;
 import com.android.launcher3.model.CacheDataUpdatedTask;
 import com.android.launcher3.model.ItemInstallQueue;
-import com.android.launcher3.model.LoaderResults;
+import com.android.launcher3.model.LauncherBinder;
 import com.android.launcher3.model.LoaderTask;
+import com.android.launcher3.model.ModelDbController;
 import com.android.launcher3.model.ModelDelegate;
 import com.android.launcher3.model.ModelWriter;
 import com.android.launcher3.model.PackageIncrementalDownloadUpdatedTask;
@@ -63,7 +69,7 @@
 import com.android.launcher3.pm.PackageInstallInfo;
 import com.android.launcher3.pm.UserCache;
 import com.android.launcher3.shortcuts.ShortcutRequest;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.util.IntSet;
 import com.android.launcher3.util.ItemInfoMatcher;
 import com.android.launcher3.util.PackageUserKey;
@@ -89,9 +95,22 @@
 
     static final String TAG = "Launcher.Model";
 
-    private final LauncherAppState mApp;
-    private final Object mLock = new Object();
+    // Broadcast intent to track when the profile gets locked:
+    // ACTION_MANAGED_PROFILE_UNAVAILABLE can be used until Android U where profile no longer gets
+    // locked when paused.
+    // ACTION_PROFILE_INACCESSIBLE always means that the profile is getting locked but it only
+    // appeared in Android S.
+    private static final String ACTION_PROFILE_LOCKED = Utilities.ATLEAST_U
+            ? Intent.ACTION_PROFILE_INACCESSIBLE
+            : Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE;
 
+    @NonNull
+    private final LauncherAppState mApp;
+    @NonNull
+    private final ModelDbController mModelDbController;
+    @NonNull
+    private final Object mLock = new Object();
+    @Nullable
     private LoaderTask mLoaderTask;
     private boolean mIsLoaderTaskRunning;
 
@@ -107,20 +126,25 @@
         }
     }
 
+    @NonNull
     private final ArrayList<Callbacks> mCallbacksList = new ArrayList<>(1);
 
     // < only access in worker thread >
+    @NonNull
     private final AllAppsList mBgAllAppsList;
 
     /**
      * All the static data should be accessed on the background thread, A lock should be acquired
      * on this object when accessing any data from this model.
      */
+    @NonNull
     private final BgDataModel mBgDataModel = new BgDataModel();
 
+    @NonNull
     private final ModelDelegate mModelDelegate;
 
     // Runnable to check if the shortcuts permission has changed.
+    @NonNull
     private final Runnable mDataValidationCheck = new Runnable() {
         @Override
         public void run() {
@@ -130,67 +154,79 @@
         }
     };
 
-    LauncherModel(Context context, LauncherAppState app, IconCache iconCache, AppFilter appFilter,
-            boolean isPrimaryInstance) {
+    LauncherModel(@NonNull final Context context, @NonNull final LauncherAppState app,
+            @NonNull final IconCache iconCache, @NonNull final AppFilter appFilter,
+            final boolean isPrimaryInstance) {
         mApp = app;
+        mModelDbController = new ModelDbController(context);
         mBgAllAppsList = new AllAppsList(iconCache, appFilter);
         mModelDelegate = ModelDelegate.newInstance(context, app, mBgAllAppsList, mBgDataModel,
                 isPrimaryInstance);
     }
 
+    @NonNull
     public ModelDelegate getModelDelegate() {
         return mModelDelegate;
     }
 
+    public ModelDbController getModelDbController() {
+        return mModelDbController;
+    }
+
     /**
      * Adds the provided items to the workspace.
      */
-    public void addAndBindAddedWorkspaceItems(List<Pair<ItemInfo, Object>> itemList) {
+    public void addAndBindAddedWorkspaceItems(
+            @NonNull final List<Pair<ItemInfo, Object>> itemList) {
         for (Callbacks cb : getCallbacks()) {
             cb.preAddApps();
         }
         enqueueModelUpdateTask(new AddWorkspaceItemsTask(itemList));
     }
 
-    public ModelWriter getWriter(boolean hasVerticalHotseat, boolean verifyChanges,
-            @Nullable Callbacks owner) {
+    @NonNull
+    public ModelWriter getWriter(final boolean hasVerticalHotseat, final boolean verifyChanges,
+            CellPosMapper cellPosMapper, @Nullable final Callbacks owner) {
         return new ModelWriter(mApp.getContext(), this, mBgDataModel,
-                hasVerticalHotseat, verifyChanges, owner);
+                hasVerticalHotseat, verifyChanges, cellPosMapper, owner);
     }
 
     @Override
-    public void onPackageChanged(String packageName, UserHandle user) {
+    public void onPackageChanged(
+            @NonNull final String packageName, @NonNull final UserHandle user) {
         int op = PackageUpdatedTask.OP_UPDATE;
         enqueueModelUpdateTask(new PackageUpdatedTask(op, user, packageName));
     }
 
     @Override
-    public void onPackageRemoved(String packageName, UserHandle user) {
+    public void onPackageRemoved(
+            @NonNull final String packageName, @NonNull final UserHandle user) {
         onPackagesRemoved(user, packageName);
     }
 
-    public void onPackagesRemoved(UserHandle user, String... packages) {
+    public void onPackagesRemoved(
+            @NonNull final UserHandle user, @NonNull final String... packages) {
         int op = PackageUpdatedTask.OP_REMOVE;
         FileLog.d(TAG, "package removed received " + TextUtils.join(",", packages));
         enqueueModelUpdateTask(new PackageUpdatedTask(op, user, packages));
     }
 
     @Override
-    public void onPackageAdded(String packageName, UserHandle user) {
+    public void onPackageAdded(@NonNull final String packageName, @NonNull final UserHandle user) {
         int op = PackageUpdatedTask.OP_ADD;
         enqueueModelUpdateTask(new PackageUpdatedTask(op, user, packageName));
     }
 
     @Override
-    public void onPackagesAvailable(String[] packageNames, UserHandle user,
-            boolean replacing) {
+    public void onPackagesAvailable(@NonNull final String[] packageNames,
+            @NonNull final UserHandle user, final boolean replacing) {
         enqueueModelUpdateTask(
                 new PackageUpdatedTask(PackageUpdatedTask.OP_UPDATE, user, packageNames));
     }
 
     @Override
-    public void onPackagesUnavailable(String[] packageNames, UserHandle user,
-            boolean replacing) {
+    public void onPackagesUnavailable(@NonNull final String[] packageNames,
+            @NonNull final UserHandle user, final boolean replacing) {
         if (!replacing) {
             enqueueModelUpdateTask(new PackageUpdatedTask(
                     PackageUpdatedTask.OP_UNAVAILABLE, user, packageNames));
@@ -198,20 +234,22 @@
     }
 
     @Override
-    public void onPackagesSuspended(String[] packageNames, UserHandle user) {
+    public void onPackagesSuspended(
+            @NonNull final String[] packageNames, @NonNull final UserHandle user) {
         enqueueModelUpdateTask(new PackageUpdatedTask(
                 PackageUpdatedTask.OP_SUSPEND, user, packageNames));
     }
 
     @Override
-    public void onPackagesUnsuspended(String[] packageNames, UserHandle user) {
+    public void onPackagesUnsuspended(
+            @NonNull final String[] packageNames, @NonNull final UserHandle user) {
         enqueueModelUpdateTask(new PackageUpdatedTask(
                 PackageUpdatedTask.OP_UNSUSPEND, user, packageNames));
     }
 
     @Override
-    public void onPackageLoadingProgressChanged(
-                String packageName, UserHandle user, float progress) {
+    public void onPackageLoadingProgressChanged(@NonNull final String packageName,
+            @NonNull final UserHandle user, final float progress) {
         if (Utilities.ATLEAST_S) {
             enqueueModelUpdateTask(new PackageIncrementalDownloadUpdatedTask(
                     packageName, user, progress));
@@ -219,8 +257,8 @@
     }
 
     @Override
-    public void onShortcutsChanged(String packageName, List<ShortcutInfo> shortcuts,
-            UserHandle user) {
+    public void onShortcutsChanged(@NonNull final String packageName,
+            @NonNull final List<ShortcutInfo> shortcuts, @NonNull final UserHandle user) {
         enqueueModelUpdateTask(new ShortcutsChangedTask(packageName, shortcuts, user, true));
     }
 
@@ -228,7 +266,8 @@
      * Called when the icon for an app changes, outside of package event
      */
     @WorkerThread
-    public void onAppIconChanged(String packageName, UserHandle user) {
+    public void onAppIconChanged(@NonNull final String packageName,
+            @NonNull final UserHandle user) {
         // Update the icon for the calendar package
         Context context = mApp.getContext();
         onPackageChanged(packageName, user);
@@ -256,16 +295,21 @@
         MODEL_EXECUTOR.execute(mModelDelegate::destroy);
     }
 
-    public void onBroadcastIntent(Intent intent) {
-        if (DEBUG_RECEIVER) Log.d(TAG, "onReceive intent=" + intent);
+    public void onBroadcastIntent(@NonNull final Intent intent) {
+        if (DEBUG_RECEIVER || sDebugTracing) Log.d(TAG, "onReceive intent=" + intent);
         final String action = intent.getAction();
         if (Intent.ACTION_LOCALE_CHANGED.equals(action)) {
             // If we have changed locale we need to clear out the labels in all apps/workspace.
             forceReload();
-        } else if (Intent.ACTION_MANAGED_PROFILE_AVAILABLE.equals(action) ||
-                Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE.equals(action) ||
-                Intent.ACTION_MANAGED_PROFILE_UNLOCKED.equals(action)) {
+        } else if (Intent.ACTION_MANAGED_PROFILE_AVAILABLE.equals(action)
+                || Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE.equals(action)
+                || Intent.ACTION_MANAGED_PROFILE_UNLOCKED.equals(action)
+                || Intent.ACTION_PROFILE_INACCESSIBLE.equals(action)) {
             UserHandle user = intent.getParcelableExtra(Intent.EXTRA_USER);
+            if (TestProtocol.sDebugTracing) {
+                Log.d(TestProtocol.WORK_TAB_MISSING, "onBroadcastIntent intentAction: " + action +
+                        " user: " + user);
+            }
             if (user != null) {
                 if (Intent.ACTION_MANAGED_PROFILE_AVAILABLE.equals(action) ||
                         Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE.equals(action)) {
@@ -273,10 +317,8 @@
                             PackageUpdatedTask.OP_USER_AVAILABILITY_CHANGE, user));
                 }
 
-                // ACTION_MANAGED_PROFILE_UNAVAILABLE sends the profile back to locked mode, so
-                // we need to run the state change task again.
-                if (Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE.equals(action) ||
-                        Intent.ACTION_MANAGED_PROFILE_UNLOCKED.equals(action)) {
+                if (ACTION_PROFILE_LOCKED.equals(action)
+                        || Intent.ACTION_MANAGED_PROFILE_UNLOCKED.equals(action)) {
                     enqueueModelUpdateTask(new UserLockStateChangedTask(
                             user, Intent.ACTION_MANAGED_PROFILE_UNLOCKED.equals(action)));
                 }
@@ -322,7 +364,7 @@
     /**
      * Removes an existing callback
      */
-    public void removeCallbacks(Callbacks callbacks) {
+    public void removeCallbacks(@NonNull final Callbacks callbacks) {
         synchronized (mCallbacksList) {
             Preconditions.assertUIThread();
             if (mCallbacksList.remove(callbacks)) {
@@ -338,7 +380,7 @@
      * Adds a callbacks to receive model updates
      * @return true if workspace load was performed synchronously
      */
-    public boolean addCallbacksAndLoad(Callbacks callbacks) {
+    public boolean addCallbacksAndLoad(@NonNull final Callbacks callbacks) {
         synchronized (mLock) {
             addCallbacks(callbacks);
             return startLoader(new Callbacks[] { callbacks });
@@ -349,15 +391,9 @@
     /**
      * Adds a callbacks to receive model updates
      */
-    public void addCallbacks(Callbacks callbacks) {
+    public void addCallbacks(@NonNull final Callbacks callbacks) {
         Preconditions.assertUIThread();
         synchronized (mCallbacksList) {
-            if (TestProtocol.sDebugTracing) {
-                Log.d(TestProtocol.NULL_INT_SET, "addCallbacks pointer: "
-                        + callbacks
-                        + ", name: "
-                        + callbacks.getClass().getName(), new Exception());
-            }
             mCallbacksList.add(callbacks);
         }
     }
@@ -370,7 +406,7 @@
         return startLoader(new Callbacks[0]);
     }
 
-    private boolean startLoader(Callbacks[] newCallbacks) {
+    private boolean startLoader(@NonNull final Callbacks[] newCallbacks) {
         // Enable queue before starting loader. It will get disabled in Launcher#finishBindingItems
         ItemInstallQueue.INSTANCE.get(mApp.getContext())
                 .pauseModelPush(ItemInstallQueue.FLAG_LOADER_RUNNING);
@@ -387,22 +423,25 @@
                     MAIN_EXECUTOR.execute(cb::clearPendingBinds);
                 }
 
-                LoaderResults loaderResults = new LoaderResults(
+                LauncherBinder launcherBinder = new LauncherBinder(
                         mApp, mBgDataModel, mBgAllAppsList, callbacksList);
                 if (bindDirectly) {
                     // Divide the set of loaded items into those that we are binding synchronously,
                     // and everything else that is to be bound normally (asynchronously).
-                    loaderResults.bindWorkspace(bindAllCallbacks);
+                    launcherBinder.bindWorkspace(bindAllCallbacks, /* isBindSync= */ true);
                     // For now, continue posting the binding of AllApps as there are other
                     // issues that arise from that.
-                    loaderResults.bindAllApps();
-                    loaderResults.bindDeepShortcuts();
-                    loaderResults.bindWidgets();
+                    launcherBinder.bindAllApps();
+                    launcherBinder.bindDeepShortcuts();
+                    launcherBinder.bindWidgets();
+                    if (FeatureFlags.CHANGE_MODEL_DELEGATE_LOADING_ORDER.get()) {
+                        mModelDelegate.bindAllModelExtras(callbacksList);
+                    }
                     return true;
                 } else {
                     stopLoader();
                     mLoaderTask = new LoaderTask(
-                            mApp, mBgAllAppsList, mBgDataModel, mModelDelegate, loaderResults);
+                            mApp, mBgAllAppsList, mBgDataModel, mModelDelegate, launcherBinder);
 
                     // Always post the loader task, instead of running directly
                     // (even on same thread) so that we exit any nested synchronized blocks
@@ -433,7 +472,7 @@
      * Loads the model if not loaded
      * @param callback called with the data model upon successful load or null on model thread.
      */
-    public void loadAsync(Consumer<BgDataModel> callback) {
+    public void loadAsync(@NonNull final Consumer<BgDataModel> callback) {
         synchronized (mLock) {
             if (!mModelLoaded && !mIsLoaderTaskRunning) {
                 startLoader();
@@ -443,11 +482,12 @@
     }
 
     @Override
-    public void onInstallSessionCreated(final PackageInstallInfo sessionInfo) {
+    public void onInstallSessionCreated(@NonNull final PackageInstallInfo sessionInfo) {
         if (FeatureFlags.PROMISE_APPS_IN_ALL_APPS.get()) {
             enqueueModelUpdateTask(new BaseModelUpdateTask() {
                 @Override
-                public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) {
+                public void execute(@NonNull final LauncherAppState app,
+                        @NonNull final BgDataModel dataModel, @NonNull final AllAppsList apps) {
                     apps.addPromiseApp(app.getContext(), sessionInfo);
                     bindApplicationsIfNeeded();
                 }
@@ -456,13 +496,12 @@
     }
 
     @Override
-    public void onSessionFailure(String packageName, UserHandle user) {
-        if (!FeatureFlags.PROMISE_APPS_NEW_INSTALLS.get()) {
-            return;
-        }
+    public void onSessionFailure(@NonNull final String packageName,
+            @NonNull final UserHandle user) {
         enqueueModelUpdateTask(new BaseModelUpdateTask() {
             @Override
-            public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) {
+            public void execute(@NonNull final LauncherAppState app,
+                    @NonNull final BgDataModel dataModel, @NonNull final AllAppsList apps) {
                 final IntSet removedIds = new IntSet();
                 synchronized (dataModel) {
                     for (ItemInfo info : dataModel.itemsIdMap) {
@@ -486,7 +525,7 @@
     }
 
     @Override
-    public void onPackageStateChanged(PackageInstallInfo installInfo) {
+    public void onPackageStateChanged(@NonNull final PackageInstallInfo installInfo) {
         enqueueModelUpdateTask(new PackageInstallStateChangedTask(installInfo));
     }
 
@@ -494,7 +533,8 @@
      * Updates the icons and label of all pending icons for the provided package name.
      */
     @Override
-    public void onUpdateSessionDisplay(PackageUserKey key, PackageInstaller.SessionInfo info) {
+    public void onUpdateSessionDisplay(@NonNull final PackageUserKey key,
+            @NonNull final PackageInstaller.SessionInfo info) {
         mApp.getIconCache().updateSessionCache(key, info);
 
         HashSet<String> packages = new HashSet<>();
@@ -505,9 +545,10 @@
 
     public class LoaderTransaction implements AutoCloseable {
 
+        @NonNull
         private final LoaderTask mTask;
 
-        private LoaderTransaction(LoaderTask task) throws CancellationException {
+        private LoaderTransaction(@NonNull final LoaderTask task) throws CancellationException {
             synchronized (mLock) {
                 if (mLoaderTask != task) {
                     throw new CancellationException("Loader already stopped");
@@ -522,6 +563,7 @@
             synchronized (mLock) {
                 // Everything loaded bind the data.
                 mModelLoaded = true;
+                testLogD(WORK_TAB_MISSING, "launcher model loaded");
             }
         }
 
@@ -537,7 +579,8 @@
         }
     }
 
-    public LoaderTransaction beginLoader(LoaderTask task) throws CancellationException {
+    public LoaderTransaction beginLoader(@NonNull final LoaderTask task)
+            throws CancellationException {
         return new LoaderTransaction(task);
     }
 
@@ -554,7 +597,8 @@
     /**
      * Called when the icons for packages have been updated in the icon cache.
      */
-    public void onPackageIconsUpdated(HashSet<String> updatedPackages, UserHandle user) {
+    public void onPackageIconsUpdated(@NonNull final HashSet<String> updatedPackages,
+            @NonNull final UserHandle user) {
         // If any package icon has changed (app was updated while launcher was dead),
         // update the corresponding shortcuts.
         enqueueModelUpdateTask(new CacheDataUpdatedTask(
@@ -564,17 +608,19 @@
     /**
      * Called when the labels for the widgets has updated in the icon cache.
      */
-    public void onWidgetLabelsUpdated(HashSet<String> updatedPackages, UserHandle user) {
+    public void onWidgetLabelsUpdated(@NonNull final HashSet<String> updatedPackages,
+            @NonNull final UserHandle user) {
         enqueueModelUpdateTask(new BaseModelUpdateTask() {
             @Override
-            public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) {
+            public void execute(@NonNull final LauncherAppState app,
+                    @NonNull final BgDataModel dataModel, @NonNull final AllAppsList apps) {
                 dataModel.widgetsModel.onPackageIconsUpdated(updatedPackages, user, app);
                 bindUpdatedWidgets(dataModel);
             }
         });
     }
 
-    public void enqueueModelUpdateTask(ModelUpdateTask task) {
+    public void enqueueModelUpdateTask(@NonNull final ModelUpdateTask task) {
         if (mModelDestroyed) {
             return;
         }
@@ -588,7 +634,7 @@
      */
     public interface CallbackTask {
 
-        void execute(Callbacks callbacks);
+        void execute(@NonNull Callbacks callbacks);
     }
 
     /**
@@ -599,12 +645,14 @@
         /**
          * Called before the task is posted to initialize the internal state.
          */
-        void init(LauncherAppState app, LauncherModel model,
-                BgDataModel dataModel, AllAppsList allAppsList, Executor uiExecutor);
+        void init(@NonNull LauncherAppState app, @NonNull LauncherModel model,
+                @NonNull BgDataModel dataModel, @NonNull AllAppsList allAppsList,
+                @NonNull Executor uiExecutor);
 
     }
 
-    public void updateAndBindWorkspaceItem(WorkspaceItemInfo si, ShortcutInfo info) {
+    public void updateAndBindWorkspaceItem(@NonNull final WorkspaceItemInfo si,
+            @NonNull final ShortcutInfo info) {
         updateAndBindWorkspaceItem(() -> {
             si.updateFromDeepShortcutInfo(info, mApp.getContext());
             mApp.getIconCache().getShortcutIcon(si, info);
@@ -615,10 +663,12 @@
     /**
      * Utility method to update a shortcut on the background thread.
      */
-    public void updateAndBindWorkspaceItem(final Supplier<WorkspaceItemInfo> itemProvider) {
+    public void updateAndBindWorkspaceItem(
+            @NonNull final Supplier<WorkspaceItemInfo> itemProvider) {
         enqueueModelUpdateTask(new BaseModelUpdateTask() {
             @Override
-            public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) {
+            public void execute(@NonNull final LauncherAppState app,
+                    @NonNull final BgDataModel dataModel, @NonNull final AllAppsList apps) {
                 WorkspaceItemInfo info = itemProvider.get();
                 getModelWriter().updateItemInDatabase(info);
                 ArrayList<WorkspaceItemInfo> update = new ArrayList<>();
@@ -631,14 +681,16 @@
     public void refreshAndBindWidgetsAndShortcuts(@Nullable final PackageUserKey packageUser) {
         enqueueModelUpdateTask(new BaseModelUpdateTask() {
             @Override
-            public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) {
+            public void execute(@NonNull final LauncherAppState app,
+                    @NonNull final BgDataModel dataModel, @NonNull final AllAppsList apps) {
                 dataModel.widgetsModel.update(app, packageUser);
                 bindUpdatedWidgets(dataModel);
             }
         });
     }
 
-    public void dumpState(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) {
+    public void dumpState(@Nullable final String prefix, @Nullable final FileDescriptor fd,
+            @NonNull final PrintWriter writer, @NonNull final String[] args) {
         if (args.length > 0 && TextUtils.equals(args[0], "--all")) {
             writer.println(prefix + "All apps list: size=" + mBgAllAppsList.data.size());
             for (AppInfo info : mBgAllAppsList.data) {
@@ -664,6 +716,7 @@
     /**
      * Returns an array of currently attached callbacks
      */
+    @NonNull
     public Callbacks[] getCallbacks() {
         synchronized (mCallbacksList) {
             return mCallbacksList.toArray(new Callbacks[mCallbacksList.size()]);
diff --git a/src/com/android/launcher3/LauncherPrefs.kt b/src/com/android/launcher3/LauncherPrefs.kt
new file mode 100644
index 0000000..c98df1b
--- /dev/null
+++ b/src/com/android/launcher3/LauncherPrefs.kt
@@ -0,0 +1,423 @@
+/*
+ * 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.launcher3
+
+import android.content.Context
+import android.content.Context.MODE_PRIVATE
+import android.content.SharedPreferences
+import android.content.SharedPreferences.OnSharedPreferenceChangeListener
+import android.util.Log
+import androidx.annotation.VisibleForTesting
+import com.android.launcher3.LauncherFiles.DEVICE_PREFERENCES_KEY
+import com.android.launcher3.LauncherFiles.SHARED_PREFERENCES_KEY
+import com.android.launcher3.allapps.WorkProfileManager
+import com.android.launcher3.model.DeviceGridState
+import com.android.launcher3.pm.InstallSessionHelper
+import com.android.launcher3.provider.RestoreDbTask
+import com.android.launcher3.states.RotationHelper
+import com.android.launcher3.util.DisplayController
+import com.android.launcher3.util.MainThreadInitializedObject
+import com.android.launcher3.util.Themes
+
+/**
+ * Use same context for shared preferences, so that we use a single cached instance
+ *
+ * TODO(b/262721340): Replace all direct SharedPreference refs with LauncherPrefs / Item methods.
+ * TODO(b/274501660): Fix ReorderWidgets#simpleReorder test before enabling
+ *   isBootAwareStartupDataEnabled
+ */
+class LauncherPrefs(private val encryptedContext: Context) {
+    private val deviceProtectedStorageContext =
+        encryptedContext.createDeviceProtectedStorageContext()
+
+    private val bootAwarePrefs
+        get() =
+            deviceProtectedStorageContext.getSharedPreferences(BOOT_AWARE_PREFS_KEY, MODE_PRIVATE)
+
+    private val Item.encryptedPrefs
+        get() = encryptedContext.getSharedPreferences(sharedPrefFile, MODE_PRIVATE)
+
+    // This call to `SharedPreferences` needs to be explicit rather than using `get` since doing so
+    // would result in a circular dependency between `isStartupDataMigrated` and `choosePreferences`
+    val isStartupDataMigrated: Boolean
+        get() =
+            bootAwarePrefs.getBoolean(
+                IS_STARTUP_DATA_MIGRATED.sharedPrefKey,
+                IS_STARTUP_DATA_MIGRATED.defaultValue
+            )
+
+    private fun chooseSharedPreferences(item: Item): SharedPreferences =
+        if (isBootAwareStartupDataEnabled && item.isBootAware && isStartupDataMigrated)
+            bootAwarePrefs
+        else item.encryptedPrefs
+
+    /** Wrapper around `getInner` for a `ContextualItem` */
+    fun <T> get(item: ContextualItem<T>): T =
+        getInner(item, item.defaultValueFromContext(encryptedContext))
+
+    /** Wrapper around `getInner` for an `Item` */
+    fun <T> get(item: ConstantItem<T>): T = getInner(item, item.defaultValue)
+
+    /**
+     * Retrieves the value for an [Item] from [SharedPreferences]. It handles method typing via the
+     * default value type, and will throw an error if the type of the item provided is not a
+     * `String`, `Boolean`, `Float`, `Int`, `Long`, or `Set<String>`.
+     */
+    @Suppress("IMPLICIT_CAST_TO_ANY", "UNCHECKED_CAST")
+    private fun <T> getInner(item: Item, default: T): T {
+        val sp = chooseSharedPreferences(item)
+
+        return when (item.type) {
+            String::class.java -> sp.getString(item.sharedPrefKey, default as? String)
+            Boolean::class.java,
+            java.lang.Boolean::class.java -> sp.getBoolean(item.sharedPrefKey, default as Boolean)
+            Int::class.java,
+            java.lang.Integer::class.java -> sp.getInt(item.sharedPrefKey, default as Int)
+            Float::class.java,
+            java.lang.Float::class.java -> sp.getFloat(item.sharedPrefKey, default as Float)
+            Long::class.java,
+            java.lang.Long::class.java -> sp.getLong(item.sharedPrefKey, default as Long)
+            Set::class.java -> sp.getStringSet(item.sharedPrefKey, default as? Set<String>)
+            else ->
+                throw IllegalArgumentException(
+                    "item type: ${item.type}" + " is not compatible with sharedPref methods"
+                )
+        }
+            as T
+    }
+
+    /**
+     * Stores each of the values provided in `SharedPreferences` according to the configuration
+     * contained within the associated items provided. Internally, it uses apply, so the caller
+     * cannot assume that the values that have been put are immediately available for use.
+     *
+     * The forEach loop is necessary here since there is 1 `SharedPreference.Editor` returned from
+     * prepareToPutValue(itemsToValues) for every distinct `SharedPreferences` file present in the
+     * provided item configurations.
+     */
+    fun put(vararg itemsToValues: Pair<Item, Any>): Unit =
+        prepareToPutValues(itemsToValues).forEach { it.apply() }
+
+    /** See referenced `put` method above. */
+    fun <T : Any> put(item: Item, value: T): Unit = put(item.to(value))
+
+    /**
+     * Synchronously stores all the values provided according to their associated Item
+     * configuration.
+     */
+    fun putSync(vararg itemsToValues: Pair<Item, Any>): Unit =
+        prepareToPutValues(itemsToValues).forEach { it.commit() }
+
+    /**
+     * Updates the values stored in `SharedPreferences` for each corresponding Item-value pair. If
+     * the item is boot aware, this method updates both the boot aware and the encrypted files. This
+     * is done because: 1) It allows for easy roll-back if the data is already in encrypted prefs
+     * and we need to turn off the boot aware data feature & 2) It simplifies Backup/Restore, which
+     * already points to encrypted storage.
+     *
+     * Returns a list of editors with all transactions added so that the caller can determine to use
+     * .apply() or .commit()
+     */
+    private fun prepareToPutValues(
+        updates: Array<out Pair<Item, Any>>
+    ): List<SharedPreferences.Editor> {
+        val updatesPerPrefFile = updates.groupBy { it.first.encryptedPrefs }.toMutableMap()
+
+        if (isBootAwareStartupDataEnabled) {
+            val bootAwareUpdates = updates.filter { it.first.isBootAware }
+            if (bootAwareUpdates.isNotEmpty()) {
+                updatesPerPrefFile[bootAwarePrefs] = bootAwareUpdates
+            }
+        }
+
+        return updatesPerPrefFile.map { prefToItemValueList ->
+            prefToItemValueList.key.edit().apply {
+                prefToItemValueList.value.forEach { itemToValue: Pair<Item, Any> ->
+                    putValue(itemToValue.first, itemToValue.second)
+                }
+            }
+        }
+    }
+
+    /**
+     * Handles adding values to `SharedPreferences` regardless of type. This method is especially
+     * helpful for updating `SharedPreferences` values for `List<<Item>Any>` that have multiple
+     * types of Item values.
+     */
+    @Suppress("UNCHECKED_CAST")
+    private fun SharedPreferences.Editor.putValue(
+        item: Item,
+        value: Any?
+    ): SharedPreferences.Editor =
+        when (item.type) {
+            String::class.java -> putString(item.sharedPrefKey, value as? String)
+            Boolean::class.java,
+            java.lang.Boolean::class.java -> putBoolean(item.sharedPrefKey, value as Boolean)
+            Int::class.java,
+            java.lang.Integer::class.java -> putInt(item.sharedPrefKey, value as Int)
+            Float::class.java,
+            java.lang.Float::class.java -> putFloat(item.sharedPrefKey, value as Float)
+            Long::class.java,
+            java.lang.Long::class.java -> putLong(item.sharedPrefKey, value as Long)
+            Set::class.java -> putStringSet(item.sharedPrefKey, value as? Set<String>)
+            else ->
+                throw IllegalArgumentException(
+                    "item type: ${item.type} is not compatible with sharedPref methods"
+                )
+        }
+
+    /**
+     * After calling this method, the listener will be notified of any future updates to the
+     * `SharedPreferences` files associated with the provided list of items. The listener will need
+     * to filter update notifications so they don't activate for non-relevant updates.
+     */
+    fun addListener(listener: OnSharedPreferenceChangeListener, vararg items: Item) {
+        items
+            .map { chooseSharedPreferences(it) }
+            .distinct()
+            .forEach { it.registerOnSharedPreferenceChangeListener(listener) }
+    }
+
+    /**
+     * Stops the listener from getting notified of any more updates to any of the
+     * `SharedPreferences` files associated with any of the provided list of [Item].
+     */
+    fun removeListener(listener: OnSharedPreferenceChangeListener, vararg items: Item) {
+        // If a listener is not registered to a SharedPreference, unregistering it does nothing
+        items
+            .map { chooseSharedPreferences(it) }
+            .distinct()
+            .forEach { it.unregisterOnSharedPreferenceChangeListener(listener) }
+    }
+
+    /**
+     * Checks if all the provided [Item] have values stored in their corresponding
+     * `SharedPreferences` files.
+     */
+    fun has(vararg items: Item): Boolean {
+        items
+            .groupBy { chooseSharedPreferences(it) }
+            .forEach { (prefs, itemsSublist) ->
+                if (!itemsSublist.none { !prefs.contains(it.sharedPrefKey) }) return false
+            }
+        return true
+    }
+
+    /**
+     * Asynchronously removes the [Item]'s value from its corresponding `SharedPreferences` file.
+     */
+    fun remove(vararg items: Item) = prepareToRemove(items).forEach { it.apply() }
+
+    /** Synchronously removes the [Item]'s value from its corresponding `SharedPreferences` file. */
+    fun removeSync(vararg items: Item) = prepareToRemove(items).forEach { it.commit() }
+
+    /**
+     * Removes the key value pairs stored in `SharedPreferences` for each corresponding Item. If the
+     * item is boot aware, this method removes the data from both the boot aware and encrypted
+     * files.
+     *
+     * @return a list of editors with all transactions added so that the caller can determine to use
+     *   .apply() or .commit()
+     */
+    private fun prepareToRemove(items: Array<out Item>): List<SharedPreferences.Editor> {
+        val itemsPerFile = items.groupBy { it.encryptedPrefs }.toMutableMap()
+
+        if (isBootAwareStartupDataEnabled) {
+            val bootAwareUpdates = items.filter { it.isBootAware }
+            if (bootAwareUpdates.isNotEmpty()) {
+                itemsPerFile[bootAwarePrefs] = bootAwareUpdates
+            }
+        }
+
+        return itemsPerFile.map { (prefs, items) ->
+            prefs.edit().also { editor ->
+                items.forEach { item -> editor.remove(item.sharedPrefKey) }
+            }
+        }
+    }
+
+    fun migrateStartupDataToDeviceProtectedStorage() {
+        if (!isBootAwareStartupDataEnabled) return
+
+        Log.d(
+            TAG,
+            "Migrating data to unencrypted shared preferences to enable preloading " +
+                "while the user is locked the next time the device reboots."
+        )
+
+        with(bootAwarePrefs.edit()) {
+            BOOT_AWARE_ITEMS.forEach { putValue(it, get(it)) }
+            putBoolean(IS_STARTUP_DATA_MIGRATED.sharedPrefKey, true)
+            apply()
+        }
+    }
+
+    companion object {
+        private const val TAG = "LauncherPrefs"
+        @VisibleForTesting const val BOOT_AWARE_PREFS_KEY = "boot_aware_prefs"
+
+        @JvmField var INSTANCE = MainThreadInitializedObject { LauncherPrefs(it) }
+
+        @JvmStatic fun get(context: Context): LauncherPrefs = INSTANCE.get(context)
+
+        const val TASKBAR_PINNING_KEY = "TASKBAR_PINNING_KEY"
+        @JvmField val ICON_STATE = nonRestorableItem(LauncherAppState.KEY_ICON_STATE, "", true)
+        @JvmField val THEMED_ICONS = backedUpItem(Themes.KEY_THEMED_ICONS, false, true)
+        @JvmField val PROMISE_ICON_IDS = backedUpItem(InstallSessionHelper.PROMISE_ICON_IDS, "")
+        @JvmField val WORK_EDU_STEP = backedUpItem(WorkProfileManager.KEY_WORK_EDU_STEP, 0)
+        @JvmField val WORKSPACE_SIZE = backedUpItem(DeviceGridState.KEY_WORKSPACE_SIZE, "", true)
+        @JvmField val HOTSEAT_COUNT = backedUpItem(DeviceGridState.KEY_HOTSEAT_COUNT, -1, true)
+        @JvmField val TASKBAR_PINNING = backedUpItem(TASKBAR_PINNING_KEY, false)
+
+        @JvmField
+        val DEVICE_TYPE =
+            backedUpItem(DeviceGridState.KEY_DEVICE_TYPE, InvariantDeviceProfile.TYPE_PHONE, true)
+        @JvmField val DB_FILE = backedUpItem(DeviceGridState.KEY_DB_FILE, "", true)
+        @JvmField
+        val RESTORE_DEVICE =
+            backedUpItem(
+                RestoreDbTask.RESTORED_DEVICE_TYPE,
+                InvariantDeviceProfile.TYPE_PHONE,
+                true
+            )
+        @JvmField val APP_WIDGET_IDS = backedUpItem(RestoreDbTask.APPWIDGET_IDS, "")
+        @JvmField val OLD_APP_WIDGET_IDS = backedUpItem(RestoreDbTask.APPWIDGET_OLD_IDS, "")
+        @JvmField
+        val GRID_NAME =
+            ConstantItem(
+                "idp_grid_name",
+                isBackedUp = true,
+                defaultValue = null,
+                isBootAware = true,
+                type = String::class.java
+            )
+        @JvmField
+        val ALLOW_ROTATION =
+            backedUpItem(RotationHelper.ALLOW_ROTATION_PREFERENCE_KEY, Boolean::class.java) {
+                RotationHelper.getAllowRotationDefaultValue(DisplayController.INSTANCE.get(it).info)
+            }
+        @JvmField
+        val IS_STARTUP_DATA_MIGRATED =
+            ConstantItem(
+                "is_startup_data_boot_aware",
+                isBackedUp = false,
+                defaultValue = false,
+                isBootAware = true
+            )
+
+        @VisibleForTesting
+        @JvmStatic
+        fun <T> backedUpItem(
+            sharedPrefKey: String,
+            defaultValue: T,
+            isBootAware: Boolean = false
+        ): ConstantItem<T> =
+            ConstantItem(sharedPrefKey, isBackedUp = true, defaultValue, isBootAware)
+
+        @JvmStatic
+        fun <T> backedUpItem(
+            sharedPrefKey: String,
+            type: Class<out T>,
+            isBootAware: Boolean = false,
+            defaultValueFromContext: (c: Context) -> T
+        ): ContextualItem<T> =
+            ContextualItem(
+                sharedPrefKey,
+                isBackedUp = true,
+                defaultValueFromContext,
+                isBootAware,
+                type
+            )
+
+        @VisibleForTesting
+        @JvmStatic
+        fun <T> nonRestorableItem(
+            sharedPrefKey: String,
+            defaultValue: T,
+            isBootAware: Boolean = false
+        ): ConstantItem<T> =
+            ConstantItem(sharedPrefKey, isBackedUp = false, defaultValue, isBootAware)
+
+        @Deprecated("Don't use shared preferences directly. Use other LauncherPref methods.")
+        @JvmStatic
+        fun getPrefs(context: Context): SharedPreferences {
+            // Use application context for shared preferences, so we use single cached instance
+            return context.applicationContext.getSharedPreferences(
+                SHARED_PREFERENCES_KEY,
+                MODE_PRIVATE
+            )
+        }
+
+        @Deprecated("Don't use shared preferences directly. Use other LauncherPref methods.")
+        @JvmStatic
+        fun getDevicePrefs(context: Context): SharedPreferences {
+            // Use application context for shared preferences, so we use a single cached instance
+            return context.applicationContext.getSharedPreferences(
+                DEVICE_PREFERENCES_KEY,
+                MODE_PRIVATE
+            )
+        }
+    }
+}
+
+// This is hard-coded to false for now until it is time to release this optimization. It is only
+// a var because the unit tests are setting this to true so they can run.
+@VisibleForTesting var isBootAwareStartupDataEnabled: Boolean = false
+
+private val BOOT_AWARE_ITEMS: MutableSet<ConstantItem<*>> = mutableSetOf()
+
+abstract class Item {
+    abstract val sharedPrefKey: String
+    abstract val isBackedUp: Boolean
+    abstract val type: Class<*>
+    abstract val isBootAware: Boolean
+    val sharedPrefFile: String
+        get() = if (isBackedUp) SHARED_PREFERENCES_KEY else DEVICE_PREFERENCES_KEY
+
+    fun <T> to(value: T): Pair<Item, T> = Pair(this, value)
+}
+
+data class ConstantItem<T>(
+    override val sharedPrefKey: String,
+    override val isBackedUp: Boolean,
+    val defaultValue: T,
+    override val isBootAware: Boolean,
+    // The default value can be null. If so, the type needs to be explicitly stated, or else NPE
+    override val type: Class<out T> = defaultValue!!::class.java
+) : Item() {
+    init {
+        if (isBootAware && isBootAwareStartupDataEnabled) {
+            BOOT_AWARE_ITEMS.add(this)
+        }
+    }
+}
+
+data class ContextualItem<T>(
+    override val sharedPrefKey: String,
+    override val isBackedUp: Boolean,
+    private val defaultSupplier: (c: Context) -> T,
+    override val isBootAware: Boolean,
+    override val type: Class<out T>
+) : Item() {
+    private var default: T? = null
+
+    fun defaultValueFromContext(context: Context): T {
+        if (default == null) {
+            default = defaultSupplier(context)
+        }
+        return default!!
+    }
+}
diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java
index 5aa8a46..9abec50 100644
--- a/src/com/android/launcher3/LauncherProvider.java
+++ b/src/com/android/launcher3/LauncherProvider.java
@@ -16,13 +16,7 @@
 
 package com.android.launcher3;
 
-import static com.android.launcher3.provider.LauncherDbUtils.copyTable;
-import static com.android.launcher3.provider.LauncherDbUtils.dropTable;
-import static com.android.launcher3.provider.LauncherDbUtils.tableExists;
-
 import android.annotation.TargetApi;
-import android.app.backup.BackupManager;
-import android.appwidget.AppWidgetHost;
 import android.appwidget.AppWidgetManager;
 import android.content.ComponentName;
 import android.content.ContentProvider;
@@ -30,88 +24,31 @@
 import android.content.ContentProviderResult;
 import android.content.ContentUris;
 import android.content.ContentValues;
-import android.content.Context;
-import android.content.Intent;
 import android.content.OperationApplicationException;
-import android.content.SharedPreferences;
-import android.content.pm.ProviderInfo;
-import android.content.res.Resources;
 import android.database.Cursor;
-import android.database.DatabaseUtils;
-import android.database.SQLException;
-import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteQueryBuilder;
-import android.database.sqlite.SQLiteStatement;
 import android.net.Uri;
 import android.os.Binder;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Process;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.provider.BaseColumns;
-import android.provider.Settings;
 import android.text.TextUtils;
 import android.util.Log;
-import android.util.Xml;
 
-import com.android.launcher3.AutoInstallsLayout.LayoutParserCallback;
 import com.android.launcher3.LauncherSettings.Favorites;
 import com.android.launcher3.config.FeatureFlags;
-import com.android.launcher3.logging.FileLog;
-import com.android.launcher3.model.DbDowngradeHelper;
-import com.android.launcher3.pm.UserCache;
-import com.android.launcher3.provider.LauncherDbUtils;
+import com.android.launcher3.model.ModelDbController;
 import com.android.launcher3.provider.LauncherDbUtils.SQLiteTransaction;
-import com.android.launcher3.provider.RestoreDbTask;
-import com.android.launcher3.util.IOUtils;
-import com.android.launcher3.util.IntArray;
-import com.android.launcher3.util.IntSet;
-import com.android.launcher3.util.NoLocaleSQLiteHelper;
-import com.android.launcher3.util.PackageManagerHelper;
-import com.android.launcher3.util.Thunk;
-import com.android.launcher3.widget.LauncherAppWidgetHost;
+import com.android.launcher3.widget.LauncherWidgetHolder;
 
-import org.xmlpull.v1.XmlPullParser;
-
-import java.io.File;
 import java.io.FileDescriptor;
-import java.io.InputStream;
 import java.io.PrintWriter;
-import java.io.StringReader;
-import java.net.URISyntaxException;
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Locale;
-import java.util.concurrent.TimeUnit;
-import java.util.function.Supplier;
 
 public class LauncherProvider extends ContentProvider {
     private static final String TAG = "LauncherProvider";
-    private static final boolean LOGD = false;
-
-    private static final String DOWNGRADE_SCHEMA_FILE = "downgrade_schema.json";
-    private static final long RESTORE_BACKUP_TABLE_DELAY = TimeUnit.SECONDS.toMillis(30);
-
-    /**
-     * Represents the schema of the database. Changes in scheme need not be backwards compatible.
-     * When increasing the scheme version, ensure that downgrade_schema.json is updated
-     */
-    public static final int SCHEMA_VERSION = 31;
 
     public static final String AUTHORITY = BuildConfig.APPLICATION_ID + ".settings";
-    public static final String KEY_LAYOUT_PROVIDER_AUTHORITY = "KEY_LAYOUT_PROVIDER_AUTHORITY";
-
-    private static final int TEST_WORKSPACE_LAYOUT_RES_XML = R.xml.default_test_workspace;
-
-    static final String EMPTY_DATABASE_CREATED = "EMPTY_DATABASE_CREATED";
-
-    protected DatabaseHelper mOpenHelper;
-    protected String mProviderAuthority;
-
-    private long mLastRestoreTimestamp = 0L;
-
-    private boolean mUseTestWorkspaceLayout;
 
     /**
      * $ adb shell dumpsys activity provider com.android.launcher3
@@ -137,6 +74,10 @@
         return true;
     }
 
+    public ModelDbController getModelDbController() {
+        return LauncherAppState.getInstance(getContext()).getModel().getModelDbController();
+    }
+
     @Override
     public String getType(Uri uri) {
         SqlArguments args = new SqlArguments(uri, null, null);
@@ -147,64 +88,20 @@
         }
     }
 
-    /**
-     * Overridden in tests
-     */
-    protected synchronized void createDbIfNotExists() {
-        if (mOpenHelper == null) {
-            mOpenHelper = DatabaseHelper.createDatabaseHelper(
-                    getContext(), false /* forMigration */);
-
-            RestoreDbTask.restoreIfNeeded(getContext(), mOpenHelper);
-        }
-    }
-
-    private synchronized boolean prepForMigration(String dbFile, String targetTableName,
-            Supplier<DatabaseHelper> src, Supplier<DatabaseHelper> dst) {
-        if (TextUtils.equals(dbFile, mOpenHelper.getDatabaseName())) {
-            Log.e("b/198965093", "prepForMigration - target db is same as current: " + dbFile);
-            return false;
-        }
-
-        final DatabaseHelper helper = src.get();
-        mOpenHelper = dst.get();
-        copyTable(helper.getReadableDatabase(), Favorites.TABLE_NAME,
-                mOpenHelper.getWritableDatabase(), targetTableName, getContext());
-        helper.close();
-        return true;
-    }
-
     @Override
     public Cursor query(Uri uri, String[] projection, String selection,
             String[] selectionArgs, String sortOrder) {
-        createDbIfNotExists();
 
         SqlArguments args = new SqlArguments(uri, selection, selectionArgs);
         SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
         qb.setTables(args.table);
 
-        SQLiteDatabase db = mOpenHelper.getWritableDatabase();
-        Cursor result = qb.query(db, projection, args.where, args.args, null, null, sortOrder);
-        final Bundle extra = new Bundle();
-        extra.putString(LauncherSettings.Settings.EXTRA_DB_NAME, mOpenHelper.getDatabaseName());
-        result.setExtras(extra);
+        Cursor result = getModelDbController().query(
+                args.table, projection, args.where, args.args, sortOrder);
         result.setNotificationUri(getContext().getContentResolver(), uri);
-
         return result;
     }
 
-    @Thunk static int dbInsertAndCheck(DatabaseHelper helper,
-            SQLiteDatabase db, String table, String nullColumnHack, ContentValues values) {
-        if (values == null) {
-            throw new RuntimeException("Error: attempting to insert null values");
-        }
-        if (!values.containsKey(LauncherSettings.Favorites._ID)) {
-            throw new RuntimeException("Error: attempting to add item without specifying an id");
-        }
-        helper.checkId(values);
-        return (int) db.insert(table, nullColumnHack, values);
-    }
-
     private void reloadLauncherIfExternal() {
         if (Binder.getCallingPid() != Process.myPid()) {
             LauncherAppState app = LauncherAppState.getInstanceNoCreate();
@@ -216,9 +113,6 @@
 
     @Override
     public Uri insert(Uri uri, ContentValues initialValues) {
-        createDbIfNotExists();
-        SqlArguments args = new SqlArguments(uri);
-
         // In very limited cases, we support system|signature permission apps to modify the db.
         if (Binder.getCallingPid() != Process.myPid()) {
             if (!initializeExternalAdd(initialValues)) {
@@ -226,11 +120,9 @@
             }
         }
 
-        SQLiteDatabase db = mOpenHelper.getWritableDatabase();
-        addModifiedTime(initialValues);
-        final int rowId = dbInsertAndCheck(mOpenHelper, db, args.table, null, initialValues);
+        SqlArguments args = new SqlArguments(uri);
+        int rowId = getModelDbController().insert(args.table, initialValues);
         if (rowId < 0) return null;
-        onAddOrDeleteOp(db);
 
         uri = ContentUris.withAppendedId(uri, rowId);
         reloadLauncherIfExternal();
@@ -239,7 +131,7 @@
 
     private boolean initializeExternalAdd(ContentValues values) {
         // 1. Ensure that externally added items have a valid item id
-        int id = mOpenHelper.generateNewItemId();
+        int id = getModelDbController().generateNewItemId();
         values.put(LauncherSettings.Favorites._ID, id);
 
         // 2. In the case of an app widget, and if no app widget id is specified, we
@@ -254,17 +146,20 @@
                     values.getAsString(Favorites.APPWIDGET_PROVIDER));
 
             if (cn != null) {
+                LauncherWidgetHolder widgetHolder = LauncherWidgetHolder.newInstance(getContext());
                 try {
-                    AppWidgetHost widgetHost = mOpenHelper.newLauncherWidgetHost();
-                    int appWidgetId = widgetHost.allocateAppWidgetId();
+                    int appWidgetId = widgetHolder.allocateAppWidgetId();
                     values.put(LauncherSettings.Favorites.APPWIDGET_ID, appWidgetId);
                     if (!appWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId,cn)) {
-                        widgetHost.deleteAppWidgetId(appWidgetId);
+                        widgetHolder.deleteAppWidgetId(appWidgetId);
                         return false;
                     }
                 } catch (RuntimeException e) {
                     Log.e(TAG, "Failed to initialize external widget", e);
                     return false;
+                } finally {
+                    // Necessary to destroy the holder to free up possible activity context
+                    widgetHolder.destroy();
                 }
             } else {
                 return false;
@@ -276,22 +171,8 @@
 
     @Override
     public int bulkInsert(Uri uri, ContentValues[] values) {
-        createDbIfNotExists();
         SqlArguments args = new SqlArguments(uri);
-
-        SQLiteDatabase db = mOpenHelper.getWritableDatabase();
-        try (SQLiteTransaction t = new SQLiteTransaction(db)) {
-            int numValues = values.length;
-            for (int i = 0; i < numValues; i++) {
-                addModifiedTime(values[i]);
-                if (dbInsertAndCheck(mOpenHelper, db, args.table, null, values[i]) < 0) {
-                    return 0;
-                }
-            }
-            onAddOrDeleteOp(db);
-            t.commit();
-        }
-
+        getModelDbController().bulkInsert(args.table, values);
         reloadLauncherIfExternal();
         return values.length;
     }
@@ -300,23 +181,13 @@
     @Override
     public ContentProviderResult[] applyBatch(ArrayList<ContentProviderOperation> operations)
             throws OperationApplicationException {
-        createDbIfNotExists();
-        try (SQLiteTransaction t = new SQLiteTransaction(mOpenHelper.getWritableDatabase())) {
-            boolean isAddOrDelete = false;
-
+        try (SQLiteTransaction t = getModelDbController().newTransaction()) {
             final int numOperations = operations.size();
             final ContentProviderResult[] results = new ContentProviderResult[numOperations];
             for (int i = 0; i < numOperations; i++) {
                 ContentProviderOperation op = operations.get(i);
                 results[i] = op.apply(this, results, i);
-
-                isAddOrDelete |= (op.isInsert() || op.isDelete()) &&
-                        results[i].count != null && results[i].count > 0;
             }
-            if (isAddOrDelete) {
-                onAddOrDeleteOp(t.getDb());
-            }
-
             t.commit();
             reloadLauncherIfExternal();
             return results;
@@ -325,18 +196,9 @@
 
     @Override
     public int delete(Uri uri, String selection, String[] selectionArgs) {
-        createDbIfNotExists();
         SqlArguments args = new SqlArguments(uri, selection, selectionArgs);
-
-        SQLiteDatabase db = mOpenHelper.getWritableDatabase();
-
-        if (Binder.getCallingPid() != Process.myPid()
-                && Favorites.TABLE_NAME.equalsIgnoreCase(args.table)) {
-            mOpenHelper.removeGhostWidgets(mOpenHelper.getWritableDatabase());
-        }
-        int count = db.delete(args.table, args.where, args.args);
+        int count = getModelDbController().delete(args.table, args.where, args.args);
         if (count > 0) {
-            onAddOrDeleteOp(db);
             reloadLauncherIfExternal();
         }
         return count;
@@ -344,12 +206,8 @@
 
     @Override
     public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
-        createDbIfNotExists();
         SqlArguments args = new SqlArguments(uri, selection, selectionArgs);
-
-        addModifiedTime(values);
-        SQLiteDatabase db = mOpenHelper.getWritableDatabase();
-        int count = db.update(args.table, values, args.where, args.args);
+        int count = getModelDbController().update(args.table, values, args.where, args.args);
         reloadLauncherIfExternal();
         return count;
     }
@@ -359,759 +217,56 @@
         if (Binder.getCallingUid() != Process.myUid()) {
             return null;
         }
-        createDbIfNotExists();
 
         switch (method) {
             case LauncherSettings.Settings.METHOD_CLEAR_EMPTY_DB_FLAG: {
-                clearFlagEmptyDbCreated();
+                getModelDbController().clearEmptyDbFlag();
                 return null;
             }
-            case LauncherSettings.Settings.METHOD_WAS_EMPTY_DB_CREATED : {
-                Bundle result = new Bundle();
-                result.putBoolean(LauncherSettings.Settings.EXTRA_VALUE,
-                        Utilities.getPrefs(getContext()).getBoolean(
-                                mOpenHelper.getKey(EMPTY_DATABASE_CREATED), false));
-                return result;
-            }
             case LauncherSettings.Settings.METHOD_DELETE_EMPTY_FOLDERS: {
                 Bundle result = new Bundle();
-                result.putIntArray(LauncherSettings.Settings.EXTRA_VALUE, deleteEmptyFolders()
-                        .toArray());
+                result.putIntArray(LauncherSettings.Settings.EXTRA_VALUE,
+                        getModelDbController().deleteEmptyFolders().toArray());
                 return result;
             }
             case LauncherSettings.Settings.METHOD_NEW_ITEM_ID: {
                 Bundle result = new Bundle();
                 result.putInt(LauncherSettings.Settings.EXTRA_VALUE,
-                        mOpenHelper.generateNewItemId());
+                        getModelDbController().generateNewItemId());
                 return result;
             }
             case LauncherSettings.Settings.METHOD_NEW_SCREEN_ID: {
                 Bundle result = new Bundle();
                 result.putInt(LauncherSettings.Settings.EXTRA_VALUE,
-                        mOpenHelper.getNewScreenId());
+                        getModelDbController().getNewScreenId());
                 return result;
             }
             case LauncherSettings.Settings.METHOD_CREATE_EMPTY_DB: {
-                mOpenHelper.createEmptyDB(mOpenHelper.getWritableDatabase());
-                return null;
-            }
-            case LauncherSettings.Settings.METHOD_SET_USE_TEST_WORKSPACE_LAYOUT_FLAG: {
-                mUseTestWorkspaceLayout = true;
-                return null;
-            }
-            case LauncherSettings.Settings.METHOD_CLEAR_USE_TEST_WORKSPACE_LAYOUT_FLAG: {
-                mUseTestWorkspaceLayout = false;
+                getModelDbController().createEmptyDB();
                 return null;
             }
             case LauncherSettings.Settings.METHOD_LOAD_DEFAULT_FAVORITES: {
-                loadDefaultFavoritesIfNecessary();
+                getModelDbController().loadDefaultFavoritesIfNecessary();
                 return null;
             }
             case LauncherSettings.Settings.METHOD_REMOVE_GHOST_WIDGETS: {
-                mOpenHelper.removeGhostWidgets(mOpenHelper.getWritableDatabase());
+                getModelDbController().removeGhostWidgets();
                 return null;
             }
             case LauncherSettings.Settings.METHOD_NEW_TRANSACTION: {
                 Bundle result = new Bundle();
                 result.putBinder(LauncherSettings.Settings.EXTRA_VALUE,
-                        new SQLiteTransaction(mOpenHelper.getWritableDatabase()));
+                        getModelDbController().newTransaction());
                 return result;
             }
-            case LauncherSettings.Settings.METHOD_REFRESH_BACKUP_TABLE: {
-                mOpenHelper.mBackupTableExists = tableExists(mOpenHelper.getReadableDatabase(),
-                        Favorites.BACKUP_TABLE_NAME);
-                return null;
-            }
             case LauncherSettings.Settings.METHOD_REFRESH_HOTSEAT_RESTORE_TABLE: {
-                mOpenHelper.mHotseatRestoreTableExists = tableExists(
-                        mOpenHelper.getReadableDatabase(), Favorites.HYBRID_HOTSEAT_BACKUP_TABLE);
-                return null;
-            }
-            case LauncherSettings.Settings.METHOD_RESTORE_BACKUP_TABLE: {
-                final long ts = System.currentTimeMillis();
-                if (ts - mLastRestoreTimestamp > RESTORE_BACKUP_TABLE_DELAY) {
-                    mLastRestoreTimestamp = ts;
-                    RestoreDbTask.restoreIfPossible(
-                            getContext(), mOpenHelper, new BackupManager(getContext()));
-                }
-                return null;
-            }
-            case LauncherSettings.Settings.METHOD_UPDATE_CURRENT_OPEN_HELPER: {
-                Bundle result = new Bundle();
-                result.putBoolean(LauncherSettings.Settings.EXTRA_VALUE,
-                        prepForMigration(
-                                arg /* dbFile */,
-                                Favorites.TMP_TABLE,
-                                () -> mOpenHelper,
-                                () -> DatabaseHelper.createDatabaseHelper(
-                                        getContext(), true /* forMigration */)));
-                return result;
-            }
-            case LauncherSettings.Settings.METHOD_PREP_FOR_PREVIEW: {
-                Bundle result = new Bundle();
-                result.putBoolean(LauncherSettings.Settings.EXTRA_VALUE,
-                        prepForMigration(
-                                arg /* dbFile */,
-                                Favorites.PREVIEW_TABLE_NAME,
-                                () -> DatabaseHelper.createDatabaseHelper(
-                                        getContext(), arg, true /* forMigration */),
-                                () -> mOpenHelper));
-                return result;
-            }
-            case LauncherSettings.Settings.METHOD_SWITCH_DATABASE: {
-                if (TextUtils.equals(arg, mOpenHelper.getDatabaseName())) return null;
-                final DatabaseHelper helper = mOpenHelper;
-                if (extras == null || !extras.containsKey(KEY_LAYOUT_PROVIDER_AUTHORITY)) {
-                    mProviderAuthority = null;
-                } else {
-                    mProviderAuthority = extras.getString(KEY_LAYOUT_PROVIDER_AUTHORITY);
-                }
-                mOpenHelper = DatabaseHelper.createDatabaseHelper(
-                        getContext(), arg, false /* forMigration */);
-                helper.close();
-                LauncherAppState app = LauncherAppState.getInstanceNoCreate();
-                if (app == null) return null;
-                app.getModel().forceReload();
+                getModelDbController().refreshHotseatRestoreTable();
                 return null;
             }
         }
         return null;
     }
 
-    private void onAddOrDeleteOp(SQLiteDatabase db) {
-        mOpenHelper.onAddOrDeleteOp(db);
-    }
-
-    /**
-     * Deletes any empty folder from the DB.
-     * @return Ids of deleted folders.
-     */
-    private IntArray deleteEmptyFolders() {
-        SQLiteDatabase db = mOpenHelper.getWritableDatabase();
-        try (SQLiteTransaction t = new SQLiteTransaction(db)) {
-            // Select folders whose id do not match any container value.
-            String selection = LauncherSettings.Favorites.ITEM_TYPE + " = "
-                    + LauncherSettings.Favorites.ITEM_TYPE_FOLDER + " AND "
-                    + LauncherSettings.Favorites._ID +  " NOT IN (SELECT " +
-                            LauncherSettings.Favorites.CONTAINER + " FROM "
-                                + Favorites.TABLE_NAME + ")";
-
-            IntArray folderIds = LauncherDbUtils.queryIntArray(false, db, Favorites.TABLE_NAME,
-                    Favorites._ID, selection, null, null);
-            if (!folderIds.isEmpty()) {
-                db.delete(Favorites.TABLE_NAME, Utilities.createDbSelectionQuery(
-                        LauncherSettings.Favorites._ID, folderIds), null);
-            }
-            t.commit();
-            return folderIds;
-        } catch (SQLException ex) {
-            Log.e(TAG, ex.getMessage(), ex);
-            return new IntArray();
-        }
-    }
-
-    @Thunk static void addModifiedTime(ContentValues values) {
-        values.put(LauncherSettings.Favorites.MODIFIED, System.currentTimeMillis());
-    }
-
-    private void clearFlagEmptyDbCreated() {
-        Utilities.getPrefs(getContext()).edit()
-                .remove(mOpenHelper.getKey(EMPTY_DATABASE_CREATED)).commit();
-    }
-
-    /**
-     * Loads the default workspace based on the following priority scheme:
-     *   1) From the app restrictions
-     *   2) From a package provided by play store
-     *   3) From a partner configuration APK, already in the system image
-     *   4) The default configuration for the particular device
-     */
-    synchronized private void loadDefaultFavoritesIfNecessary() {
-        SharedPreferences sp = Utilities.getPrefs(getContext());
-
-        if (sp.getBoolean(mOpenHelper.getKey(EMPTY_DATABASE_CREATED), false)) {
-            Log.d(TAG, "loading default workspace");
-
-            AppWidgetHost widgetHost = mOpenHelper.newLauncherWidgetHost();
-            AutoInstallsLayout loader = createWorkspaceLoaderFromAppRestriction(widgetHost);
-            if (loader == null) {
-                loader = AutoInstallsLayout.get(getContext(),widgetHost, mOpenHelper);
-            }
-            if (loader == null) {
-                final Partner partner = Partner.get(getContext().getPackageManager());
-                if (partner != null && partner.hasDefaultLayout()) {
-                    final Resources partnerRes = partner.getResources();
-                    int workspaceResId = partnerRes.getIdentifier(Partner.RES_DEFAULT_LAYOUT,
-                            "xml", partner.getPackageName());
-                    if (workspaceResId != 0) {
-                        loader = new DefaultLayoutParser(getContext(), widgetHost,
-                                mOpenHelper, partnerRes, workspaceResId);
-                    }
-                }
-            }
-
-            final boolean usingExternallyProvidedLayout = loader != null;
-            if (loader == null) {
-                loader = getDefaultLayoutParser(widgetHost);
-            }
-
-            // There might be some partially restored DB items, due to buggy restore logic in
-            // previous versions of launcher.
-            mOpenHelper.createEmptyDB(mOpenHelper.getWritableDatabase());
-            // Populate favorites table with initial favorites
-            if ((mOpenHelper.loadFavorites(mOpenHelper.getWritableDatabase(), loader) <= 0)
-                    && usingExternallyProvidedLayout) {
-                // Unable to load external layout. Cleanup and load the internal layout.
-                mOpenHelper.createEmptyDB(mOpenHelper.getWritableDatabase());
-                mOpenHelper.loadFavorites(mOpenHelper.getWritableDatabase(),
-                        getDefaultLayoutParser(widgetHost));
-            }
-            clearFlagEmptyDbCreated();
-        }
-    }
-
-    /**
-     * Creates workspace loader from an XML resource listed in the app restrictions.
-     *
-     * @return the loader if the restrictions are set and the resource exists; null otherwise.
-     */
-    private AutoInstallsLayout createWorkspaceLoaderFromAppRestriction(AppWidgetHost widgetHost) {
-        Context ctx = getContext();
-        final String authority;
-        if (!TextUtils.isEmpty(mProviderAuthority)) {
-            authority = mProviderAuthority;
-        } else {
-            authority = Settings.Secure.getString(ctx.getContentResolver(),
-                    "launcher3.layout.provider");
-        }
-        if (TextUtils.isEmpty(authority)) {
-            return null;
-        }
-
-        ProviderInfo pi = ctx.getPackageManager().resolveContentProvider(authority, 0);
-        if (pi == null) {
-            Log.e(TAG, "No provider found for authority " + authority);
-            return null;
-        }
-        Uri uri = getLayoutUri(authority, ctx);
-        try (InputStream in = ctx.getContentResolver().openInputStream(uri)) {
-            // Read the full xml so that we fail early in case of any IO error.
-            String layout = new String(IOUtils.toByteArray(in));
-            XmlPullParser parser = Xml.newPullParser();
-            parser.setInput(new StringReader(layout));
-
-            Log.d(TAG, "Loading layout from " + authority);
-            return new AutoInstallsLayout(ctx, widgetHost, mOpenHelper,
-                    ctx.getPackageManager().getResourcesForApplication(pi.applicationInfo),
-                    () -> parser, AutoInstallsLayout.TAG_WORKSPACE);
-        } catch (Exception e) {
-            Log.e(TAG, "Error getting layout stream from: " + authority , e);
-            return null;
-        }
-    }
-
-    public static Uri getLayoutUri(String authority, Context ctx) {
-        InvariantDeviceProfile grid = LauncherAppState.getIDP(ctx);
-        return new Uri.Builder().scheme("content").authority(authority).path("launcher_layout")
-                .appendQueryParameter("version", "1")
-                .appendQueryParameter("gridWidth", Integer.toString(grid.numColumns))
-                .appendQueryParameter("gridHeight", Integer.toString(grid.numRows))
-                .appendQueryParameter("hotseatSize", Integer.toString(grid.numDatabaseHotseatIcons))
-                .build();
-    }
-
-    private DefaultLayoutParser getDefaultLayoutParser(AppWidgetHost widgetHost) {
-        InvariantDeviceProfile idp = LauncherAppState.getIDP(getContext());
-        int defaultLayout = mUseTestWorkspaceLayout
-                ? TEST_WORKSPACE_LAYOUT_RES_XML : idp.defaultLayoutId;
-
-        if (getContext().getSystemService(UserManager.class).isDemoUser()
-                && idp.demoModeLayoutId != 0) {
-            defaultLayout = idp.demoModeLayoutId;
-        }
-
-        return new DefaultLayoutParser(getContext(), widgetHost,
-                mOpenHelper, getContext().getResources(), defaultLayout);
-    }
-
-    /**
-     * The class is subclassed in tests to create an in-memory db.
-     */
-    public static class DatabaseHelper extends NoLocaleSQLiteHelper implements
-            LayoutParserCallback {
-        private final Context mContext;
-        private final boolean mForMigration;
-        private int mMaxItemId = -1;
-        private boolean mBackupTableExists;
-        private boolean mHotseatRestoreTableExists;
-
-        static DatabaseHelper createDatabaseHelper(Context context, boolean forMigration) {
-            return createDatabaseHelper(context, null, forMigration);
-        }
-
-        static DatabaseHelper createDatabaseHelper(Context context, String dbName,
-                boolean forMigration) {
-            if (dbName == null) {
-                dbName = InvariantDeviceProfile.INSTANCE.get(context).dbFile;
-            }
-            DatabaseHelper databaseHelper = new DatabaseHelper(context, dbName, forMigration);
-            // Table creation sometimes fails silently, which leads to a crash loop.
-            // This way, we will try to create a table every time after crash, so the device
-            // would eventually be able to recover.
-            if (!tableExists(databaseHelper.getReadableDatabase(), Favorites.TABLE_NAME)) {
-                Log.e(TAG, "Tables are missing after onCreate has been called. Trying to recreate");
-                // This operation is a no-op if the table already exists.
-                databaseHelper.addFavoritesTable(databaseHelper.getWritableDatabase(), true);
-            }
-            databaseHelper.mHotseatRestoreTableExists = tableExists(
-                    databaseHelper.getReadableDatabase(), Favorites.HYBRID_HOTSEAT_BACKUP_TABLE);
-
-            databaseHelper.initIds();
-            return databaseHelper;
-        }
-
-        /**
-         * Constructor used in tests and for restore.
-         */
-        public DatabaseHelper(Context context, String dbName, boolean forMigration) {
-            super(context, dbName, SCHEMA_VERSION);
-            mContext = context;
-            mForMigration = forMigration;
-        }
-
-        protected void initIds() {
-            // In the case where neither onCreate nor onUpgrade gets called, we read the maxId from
-            // the DB here
-            if (mMaxItemId == -1) {
-                mMaxItemId = initializeMaxItemId(getWritableDatabase());
-            }
-        }
-
-        @Override
-        public void onCreate(SQLiteDatabase db) {
-            if (LOGD) Log.d(TAG, "creating new launcher database");
-
-            mMaxItemId = 1;
-
-            addFavoritesTable(db, false);
-
-            // Fresh and clean launcher DB.
-            mMaxItemId = initializeMaxItemId(db);
-            if (!mForMigration) {
-                onEmptyDbCreated();
-            }
-        }
-
-        protected void onAddOrDeleteOp(SQLiteDatabase db) {
-            if (mBackupTableExists) {
-                dropTable(db, Favorites.BACKUP_TABLE_NAME);
-                mBackupTableExists = false;
-            }
-            if (mHotseatRestoreTableExists) {
-                dropTable(db, Favorites.HYBRID_HOTSEAT_BACKUP_TABLE);
-                mHotseatRestoreTableExists = false;
-            }
-        }
-
-        /**
-         * Re-composite given key in respect to database. If the current db is
-         * {@link LauncherFiles#LAUNCHER_DB}, return the key as-is. Otherwise append the db name to
-         * given key. e.g. consider key="EMPTY_DATABASE_CREATED", dbName="minimal.db", the returning
-         * string will be "EMPTY_DATABASE_CREATED@minimal.db".
-         */
-        String getKey(final String key) {
-            if (TextUtils.equals(getDatabaseName(), LauncherFiles.LAUNCHER_DB)) {
-                return key;
-            }
-            return key + "@" + getDatabaseName();
-        }
-
-        /**
-         * Overriden in tests.
-         */
-        protected void onEmptyDbCreated() {
-            // Set the flag for empty DB
-            Utilities.getPrefs(mContext).edit().putBoolean(getKey(EMPTY_DATABASE_CREATED), true)
-                    .commit();
-        }
-
-        public long getSerialNumberForUser(UserHandle user) {
-            return UserCache.INSTANCE.get(mContext).getSerialNumberForUser(user);
-        }
-
-        public long getDefaultUserSerial() {
-            return getSerialNumberForUser(Process.myUserHandle());
-        }
-
-        private void addFavoritesTable(SQLiteDatabase db, boolean optional) {
-            Favorites.addTableToDb(db, getDefaultUserSerial(), optional);
-        }
-
-        @Override
-        public void onOpen(SQLiteDatabase db) {
-            super.onOpen(db);
-
-            File schemaFile = mContext.getFileStreamPath(DOWNGRADE_SCHEMA_FILE);
-            if (!schemaFile.exists()) {
-                handleOneTimeDataUpgrade(db);
-            }
-            DbDowngradeHelper.updateSchemaFile(schemaFile, SCHEMA_VERSION, mContext);
-        }
-
-        /**
-         * One-time data updated before support of onDowngrade was added. This update is backwards
-         * compatible and can safely be run multiple times.
-         * Note: No new logic should be added here after release, as the new logic might not get
-         * executed on an existing device.
-         * TODO: Move this to db upgrade path, once the downgrade path is released.
-         */
-        protected void handleOneTimeDataUpgrade(SQLiteDatabase db) {
-            // Remove "profile extra"
-            UserCache um = UserCache.INSTANCE.get(mContext);
-            for (UserHandle user : um.getUserProfiles()) {
-                long serial = um.getSerialNumberForUser(user);
-                String sql = "update favorites set intent = replace(intent, "
-                        + "';l.profile=" + serial + ";', ';') where itemType = 0;";
-                db.execSQL(sql);
-            }
-        }
-
-        @Override
-        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
-            if (LOGD) Log.d(TAG, "onUpgrade triggered: " + oldVersion);
-            switch (oldVersion) {
-                // The version cannot be lower that 12, as Launcher3 never supported a lower
-                // version of the DB.
-                case 12:
-                    // No-op
-                case 13: {
-                    try (SQLiteTransaction t = new SQLiteTransaction(db)) {
-                        // Insert new column for holding widget provider name
-                        db.execSQL("ALTER TABLE favorites " +
-                                "ADD COLUMN appWidgetProvider TEXT;");
-                        t.commit();
-                    } catch (SQLException ex) {
-                        Log.e(TAG, ex.getMessage(), ex);
-                        // Old version remains, which means we wipe old data
-                        break;
-                    }
-                }
-                case 14: {
-                    if (!addIntegerColumn(db, Favorites.MODIFIED, 0)) {
-                        // Old version remains, which means we wipe old data
-                        break;
-                    }
-                }
-                case 15: {
-                    if (!addIntegerColumn(db, Favorites.RESTORED, 0)) {
-                        // Old version remains, which means we wipe old data
-                        break;
-                    }
-                }
-                case 16:
-                    // No-op
-                case 17:
-                    // No-op
-                case 18:
-                    // No-op
-                case 19: {
-                    // Add userId column
-                    if (!addIntegerColumn(db, Favorites.PROFILE_ID, getDefaultUserSerial())) {
-                        // Old version remains, which means we wipe old data
-                        break;
-                    }
-                }
-                case 20:
-                    if (!updateFolderItemsRank(db, true)) {
-                        break;
-                    }
-                case 21:
-                    // No-op
-                case 22: {
-                    if (!addIntegerColumn(db, Favorites.OPTIONS, 0)) {
-                        // Old version remains, which means we wipe old data
-                        break;
-                    }
-                }
-                case 23:
-                    // No-op
-                case 24:
-                    // No-op
-                case 25:
-                    convertShortcutsToLauncherActivities(db);
-                case 26:
-                    // QSB was moved to the grid. Ignore overlapping items
-                case 27: {
-                    // Update the favorites table so that the screen ids are ordered based on
-                    // workspace page rank.
-                    IntArray finalScreens = LauncherDbUtils.queryIntArray(false, db,
-                            "workspaceScreens", BaseColumns._ID, null, null, "screenRank");
-                    int[] original = finalScreens.toArray();
-                    Arrays.sort(original);
-                    String updatemap = "";
-                    for (int i = 0; i < original.length; i++) {
-                        if (finalScreens.get(i) != original[i]) {
-                            updatemap += String.format(Locale.ENGLISH, " WHEN %1$s=%2$d THEN %3$d",
-                                    Favorites.SCREEN, finalScreens.get(i), original[i]);
-                        }
-                    }
-                    if (!TextUtils.isEmpty(updatemap)) {
-                        String query = String.format(Locale.ENGLISH,
-                                "UPDATE %1$s SET %2$s=CASE %3$s ELSE %2$s END WHERE %4$s = %5$d",
-                                Favorites.TABLE_NAME, Favorites.SCREEN, updatemap,
-                                Favorites.CONTAINER, Favorites.CONTAINER_DESKTOP);
-                        db.execSQL(query);
-                    }
-                    dropTable(db, "workspaceScreens");
-                }
-                case 28: {
-                    boolean columnAdded = addIntegerColumn(
-                            db, Favorites.APPWIDGET_SOURCE, Favorites.CONTAINER_UNKNOWN);
-                    if (!columnAdded) {
-                        // Old version remains, which means we wipe old data
-                        break;
-                    }
-                }
-                case 29: {
-                    // Remove widget panel related leftover workspace items
-                    db.delete(Favorites.TABLE_NAME, Utilities.createDbSelectionQuery(
-                            Favorites.SCREEN, IntArray.wrap(-777, -778)), null);
-                }
-                case 30: {
-                    if (FeatureFlags.QSB_ON_FIRST_SCREEN) {
-                        // Clean up first row in screen 0 as it might contain junk data.
-                        Log.d(TAG, "Cleaning up first row");
-                        db.delete(Favorites.TABLE_NAME,
-                                String.format(Locale.ENGLISH,
-                                        "%1$s = %2$d AND %3$s = %4$d AND %5$s = %6$d",
-                                        Favorites.SCREEN, 0,
-                                        Favorites.CONTAINER, Favorites.CONTAINER_DESKTOP,
-                                        Favorites.CELLY, 0), null);
-                    }
-                    return;
-                }
-                case 31: {
-                    // DB Upgraded successfully
-                    return;
-                }
-            }
-
-            // DB was not upgraded
-            Log.w(TAG, "Destroying all old data.");
-            createEmptyDB(db);
-        }
-
-        @Override
-        public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
-            try {
-                DbDowngradeHelper.parse(mContext.getFileStreamPath(DOWNGRADE_SCHEMA_FILE))
-                        .onDowngrade(db, oldVersion, newVersion);
-            } catch (Exception e) {
-                Log.d(TAG, "Unable to downgrade from: " + oldVersion + " to " + newVersion +
-                        ". Wiping databse.", e);
-                createEmptyDB(db);
-            }
-        }
-
-        /**
-         * Clears all the data for a fresh start.
-         */
-        public void createEmptyDB(SQLiteDatabase db) {
-            try (SQLiteTransaction t = new SQLiteTransaction(db)) {
-                dropTable(db, Favorites.TABLE_NAME);
-                dropTable(db, "workspaceScreens");
-                onCreate(db);
-                t.commit();
-            }
-        }
-
-        /**
-         * Removes widgets which are registered to the Launcher's host, but are not present
-         * in our model.
-         */
-        public void removeGhostWidgets(SQLiteDatabase db) {
-            // Get all existing widget ids.
-            final AppWidgetHost host = newLauncherWidgetHost();
-            final int[] allWidgets;
-            try {
-                // Although the method was defined in O, it has existed since the beginning of time,
-                // so it might work on older platforms as well.
-                allWidgets = host.getAppWidgetIds();
-            } catch (IncompatibleClassChangeError e) {
-                Log.e(TAG, "getAppWidgetIds not supported", e);
-                return;
-            }
-            final IntSet validWidgets = IntSet.wrap(LauncherDbUtils.queryIntArray(false, db,
-                    Favorites.TABLE_NAME, Favorites.APPWIDGET_ID,
-                    "itemType=" + Favorites.ITEM_TYPE_APPWIDGET, null, null));
-            for (int widgetId : allWidgets) {
-                if (!validWidgets.contains(widgetId)) {
-                    try {
-                        FileLog.d(TAG, "Deleting invalid widget " + widgetId);
-                        host.deleteAppWidgetId(widgetId);
-                    } catch (RuntimeException e) {
-                        // Ignore
-                    }
-                }
-            }
-        }
-
-        /**
-         * Replaces all shortcuts of type {@link Favorites#ITEM_TYPE_SHORTCUT} which have a valid
-         * launcher activity target with {@link Favorites#ITEM_TYPE_APPLICATION}.
-         */
-        @Thunk void convertShortcutsToLauncherActivities(SQLiteDatabase db) {
-            try (SQLiteTransaction t = new SQLiteTransaction(db);
-                 // Only consider the primary user as other users can't have a shortcut.
-                 Cursor c = db.query(Favorites.TABLE_NAME,
-                         new String[] { Favorites._ID, Favorites.INTENT},
-                         "itemType=" + Favorites.ITEM_TYPE_SHORTCUT +
-                                 " AND profileId=" + getDefaultUserSerial(),
-                         null, null, null, null);
-                 SQLiteStatement updateStmt = db.compileStatement("UPDATE favorites SET itemType="
-                         + Favorites.ITEM_TYPE_APPLICATION + " WHERE _id=?")
-            ) {
-                final int idIndex = c.getColumnIndexOrThrow(Favorites._ID);
-                final int intentIndex = c.getColumnIndexOrThrow(Favorites.INTENT);
-
-                while (c.moveToNext()) {
-                    String intentDescription = c.getString(intentIndex);
-                    Intent intent;
-                    try {
-                        intent = Intent.parseUri(intentDescription, 0);
-                    } catch (URISyntaxException e) {
-                        Log.e(TAG, "Unable to parse intent", e);
-                        continue;
-                    }
-
-                    if (!PackageManagerHelper.isLauncherAppTarget(intent)) {
-                        continue;
-                    }
-
-                    int id = c.getInt(idIndex);
-                    updateStmt.bindLong(1, id);
-                    updateStmt.executeUpdateDelete();
-                }
-                t.commit();
-            } catch (SQLException ex) {
-                Log.w(TAG, "Error deduping shortcuts", ex);
-            }
-        }
-
-        @Thunk boolean updateFolderItemsRank(SQLiteDatabase db, boolean addRankColumn) {
-            try (SQLiteTransaction t = new SQLiteTransaction(db)) {
-                if (addRankColumn) {
-                    // Insert new column for holding rank
-                    db.execSQL("ALTER TABLE favorites ADD COLUMN rank INTEGER NOT NULL DEFAULT 0;");
-                }
-
-                // Get a map for folder ID to folder width
-                Cursor c = db.rawQuery("SELECT container, MAX(cellX) FROM favorites"
-                        + " WHERE container IN (SELECT _id FROM favorites WHERE itemType = ?)"
-                        + " GROUP BY container;",
-                        new String[] {Integer.toString(LauncherSettings.Favorites.ITEM_TYPE_FOLDER)});
-
-                while (c.moveToNext()) {
-                    db.execSQL("UPDATE favorites SET rank=cellX+(cellY*?) WHERE "
-                            + "container=? AND cellX IS NOT NULL AND cellY IS NOT NULL;",
-                            new Object[] {c.getLong(1) + 1, c.getLong(0)});
-                }
-
-                c.close();
-                t.commit();
-            } catch (SQLException ex) {
-                // Old version remains, which means we wipe old data
-                Log.e(TAG, ex.getMessage(), ex);
-                return false;
-            }
-            return true;
-        }
-
-        private boolean addIntegerColumn(SQLiteDatabase db, String columnName, long defaultValue) {
-            try (SQLiteTransaction t = new SQLiteTransaction(db)) {
-                db.execSQL("ALTER TABLE favorites ADD COLUMN "
-                        + columnName + " INTEGER NOT NULL DEFAULT " + defaultValue + ";");
-                t.commit();
-            } catch (SQLException ex) {
-                Log.e(TAG, ex.getMessage(), ex);
-                return false;
-            }
-            return true;
-        }
-
-        // Generates a new ID to use for an object in your database. This method should be only
-        // called from the main UI thread. As an exception, we do call it when we call the
-        // constructor from the worker thread; however, this doesn't extend until after the
-        // constructor is called, and we only pass a reference to LauncherProvider to LauncherApp
-        // after that point
-        @Override
-        public int generateNewItemId() {
-            if (mMaxItemId < 0) {
-                throw new RuntimeException("Error: max item id was not initialized");
-            }
-            mMaxItemId += 1;
-            return mMaxItemId;
-        }
-
-        public AppWidgetHost newLauncherWidgetHost() {
-            return new LauncherAppWidgetHost(mContext);
-        }
-
-        @Override
-        public int insertAndCheck(SQLiteDatabase db, ContentValues values) {
-            return dbInsertAndCheck(this, db, Favorites.TABLE_NAME, null, values);
-        }
-
-        public void checkId(ContentValues values) {
-            int id = values.getAsInteger(Favorites._ID);
-            mMaxItemId = Math.max(id, mMaxItemId);
-        }
-
-        private int initializeMaxItemId(SQLiteDatabase db) {
-            return getMaxId(db, "SELECT MAX(%1$s) FROM %2$s", Favorites._ID, Favorites.TABLE_NAME);
-        }
-
-        // Returns a new ID to use for an workspace screen in your database that is greater than all
-        // existing screen IDs.
-        private int getNewScreenId() {
-            return getMaxId(getWritableDatabase(),
-                    "SELECT MAX(%1$s) FROM %2$s WHERE %3$s = %4$d AND %1$s >= 0",
-                    Favorites.SCREEN, Favorites.TABLE_NAME, Favorites.CONTAINER,
-                    Favorites.CONTAINER_DESKTOP) + 1;
-        }
-
-        @Thunk int loadFavorites(SQLiteDatabase db, AutoInstallsLayout loader) {
-            // TODO: Use multiple loaders with fall-back and transaction.
-            int count = loader.loadLayout(db, new IntArray());
-
-            // Ensure that the max ids are initialized
-            mMaxItemId = initializeMaxItemId(db);
-            return count;
-        }
-    }
-
-    /**
-     * @return the max _id in the provided table.
-     */
-    @Thunk static int getMaxId(SQLiteDatabase db, String query, Object... args) {
-        int max = 0;
-        try (SQLiteStatement prog = db.compileStatement(
-                String.format(Locale.ENGLISH, query, args))) {
-            max = (int) DatabaseUtils.longForQuery(prog, null);
-            if (max < 0) {
-                throw new RuntimeException("Error: could not query max id");
-            }
-        } catch (IllegalArgumentException exception) {
-            String message = exception.getMessage();
-            if (message.contains("re-open") && message.contains("already-closed")) {
-                // Don't crash trying to end a transaction an an already closed DB. See b/173162852.
-            } else {
-                throw exception;
-            }
-        }
-        return max;
-    }
-
     static class SqlArguments {
         public final String table;
         public final String where;
diff --git a/src/com/android/launcher3/LauncherRootView.java b/src/com/android/launcher3/LauncherRootView.java
index a5c5c02..1592154 100644
--- a/src/com/android/launcher3/LauncherRootView.java
+++ b/src/com/android/launcher3/LauncherRootView.java
@@ -55,6 +55,8 @@
 
     @Override
     public WindowInsets onApplyWindowInsets(WindowInsets insets) {
+        mActivity.handleConfigurationChanged(mActivity.getResources().getConfiguration());
+
         insets = WindowManagerProxy.INSTANCE.get(getContext())
                 .normalizeWindowInsets(getContext(), insets, mTempRect);
         handleSystemWindowInsets(mTempRect);
diff --git a/src/com/android/launcher3/LauncherSettings.java b/src/com/android/launcher3/LauncherSettings.java
index 66195f3..7fda326 100644
--- a/src/com/android/launcher3/LauncherSettings.java
+++ b/src/com/android/launcher3/LauncherSettings.java
@@ -30,6 +30,24 @@
 public class LauncherSettings {
 
     /**
+     * Types of animations.
+     */
+    public static final class Animation {
+        /**
+         * The default animation for a given view/item info type.
+         */
+        public static final int DEFAULT = 0;
+        /**
+         * An animation using the view's background.
+         */
+        public static final int VIEW_BACKGROUND = 1;
+        /**
+         * The default animation for a given view/item info type, but without the splash icon.
+         */
+        public static final int DEFAULT_NO_ICON = 2;
+    }
+
+    /**
      * Favorites.
      */
     public static final class Favorites implements BaseColumns {
@@ -95,14 +113,14 @@
         public static final int ITEM_TYPE_DEEP_SHORTCUT = 6;
 
         /**
-         * The favroite is a search action
+         * The favorite is an app pair for launching split screen
          */
-        public static final int ITEM_TYPE_SEARCH_ACTION = 7;
+        public static final int ITEM_TYPE_APP_PAIR = 10;
 
+        // *** Below enum values are used for metrics purpose but not used in Favorites DB ***
 
         /**
          * Type of the item is recents task.
-         * TODO(hyunyoungs): move constants not related to Favorites DB to a better location.
          */
         public static final int ITEM_TYPE_TASK = 7;
 
@@ -112,16 +130,9 @@
         public static final int ITEM_TYPE_QSB = 8;
 
         /**
-         * The icon package name in Intent.ShortcutIconResource
-         * <P>Type: TEXT</P>
+         * The favorite is a search action
          */
-        public static final String ICON_PACKAGE = "iconPackage";
-
-        /**
-         * The icon resource name in Intent.ShortcutIconResource
-         * <P>Type: TEXT</P>
-         */
-        public static final String ICON_RESOURCE = "iconResource";
+        public static final int ITEM_TYPE_SEARCH_ACTION = 9;
 
         /**
          * The custom icon bitmap.
@@ -132,21 +143,11 @@
         public static final String TABLE_NAME = "favorites";
 
         /**
-         * Backup table created when the favorites table is modified during grid migration
-         */
-        public static final String BACKUP_TABLE_NAME = "favorites_bakup";
-
-        /**
          * Backup table created when user hotseat is moved to workspace for hybrid hotseat
          */
         public static final String HYBRID_HOTSEAT_BACKUP_TABLE = "hotseat_restore_backup";
 
         /**
-         * Temporary table used specifically for grid migrations during wallpaper preview
-         */
-        public static final String PREVIEW_TABLE_NAME = "favorites_preview";
-
-        /**
          * Temporary table used specifically for multi-db grid migrations
          */
         public static final String TMP_TABLE = "favorites_tmp";
@@ -158,24 +159,6 @@
                 + LauncherProvider.AUTHORITY + "/" + TABLE_NAME);
 
         /**
-         * The content:// style URL for "favorites_bakup" table
-         */
-        public static final Uri BACKUP_CONTENT_URI = Uri.parse("content://"
-                + LauncherProvider.AUTHORITY + "/" + BACKUP_TABLE_NAME);
-
-        /**
-         * The content:// style URL for "favorites_preview" table
-         */
-        public static final Uri PREVIEW_CONTENT_URI = Uri.parse("content://"
-                + LauncherProvider.AUTHORITY + "/" + PREVIEW_TABLE_NAME);
-
-        /**
-         * The content:// style URL for "favorites_tmp" table
-         */
-        public static final Uri TMP_CONTENT_URI = Uri.parse("content://"
-                + LauncherProvider.AUTHORITY + "/" + TMP_TABLE);
-
-        /**
          * The content:// style URL for a given row, identified by its id.
          *
          * @param id The row id.
@@ -206,12 +189,9 @@
         public static final int CONTAINER_BOTTOM_WIDGETS_TRAY = -112;
         public static final int CONTAINER_PIN_WIDGETS = -113;
         public static final int CONTAINER_WALLPAPERS = -114;
-        // Represents search results view.
-        public static final int CONTAINER_SEARCH_RESULTS = -106;
         public static final int CONTAINER_SHORTCUTS = -107;
         public static final int CONTAINER_SETTINGS = -108;
         public static final int CONTAINER_TASKSWITCHER = -109;
-        public static final int CONTAINER_QSB = -110;
 
         // Represents any of the extended containers implemented in non-AOSP variants.
         public static final int EXTENDED_CONTAINERS = -200;
@@ -225,7 +205,6 @@
                 case CONTAINER_PREDICTION: return "prediction";
                 case CONTAINER_ALL_APPS: return "all_apps";
                 case CONTAINER_WIDGETS_TRAY: return "widgets_tray";
-                case CONTAINER_SEARCH_RESULTS: return "search_result";
                 case CONTAINER_SHORTCUTS: return "shortcuts";
                 default: return String.valueOf(container);
             }
@@ -241,6 +220,7 @@
                 case ITEM_TYPE_DEEP_SHORTCUT: return "DEEPSHORTCUT";
                 case ITEM_TYPE_TASK: return "TASK";
                 case ITEM_TYPE_QSB: return "QSB";
+                case ITEM_TYPE_APP_PAIR: return "APP_PAIR";
                 default: return String.valueOf(type);
             }
         }
@@ -342,8 +322,6 @@
                     "spanY INTEGER," +
                     "itemType INTEGER," +
                     "appWidgetId INTEGER NOT NULL DEFAULT -1," +
-                    "iconPackage TEXT," +
-                    "iconResource TEXT," +
                     "icon BLOB," +
                     "appWidgetProvider TEXT," +
                     "modified INTEGER NOT NULL DEFAULT 0," +
@@ -365,7 +343,6 @@
                 LauncherProvider.AUTHORITY + "/settings");
 
         public static final String METHOD_CLEAR_EMPTY_DB_FLAG = "clear_empty_db_flag";
-        public static final String METHOD_WAS_EMPTY_DB_CREATED = "get_empty_db_flag";
 
         public static final String METHOD_DELETE_EMPTY_FOLDERS = "delete_empty_folders";
 
@@ -374,44 +351,29 @@
 
         public static final String METHOD_CREATE_EMPTY_DB = "create_empty_db";
 
-        public static final String METHOD_SET_USE_TEST_WORKSPACE_LAYOUT_FLAG =
-                "set_use_test_workspace_layout_flag";
-
-        public static final String METHOD_CLEAR_USE_TEST_WORKSPACE_LAYOUT_FLAG =
-                "clear_use_test_workspace_layout_flag";
-
         public static final String METHOD_LOAD_DEFAULT_FAVORITES = "load_default_favorites";
 
         public static final String METHOD_REMOVE_GHOST_WIDGETS = "remove_ghost_widgets";
 
         public static final String METHOD_NEW_TRANSACTION = "new_db_transaction";
 
-        public static final String METHOD_REFRESH_BACKUP_TABLE = "refresh_backup_table";
-
         public static final String METHOD_REFRESH_HOTSEAT_RESTORE_TABLE = "restore_hotseat_table";
 
-        public static final String METHOD_RESTORE_BACKUP_TABLE = "restore_backup_table";
-
-        public static final String METHOD_UPDATE_CURRENT_OPEN_HELPER = "update_current_open_helper";
-
-        public static final String METHOD_PREP_FOR_PREVIEW = "prep_for_preview";
-
-        public static final String METHOD_SWITCH_DATABASE = "switch_database";
-
         public static final String EXTRA_VALUE = "value";
 
         public static final String EXTRA_DB_NAME = "db_name";
 
+        public static final String LAYOUT_DIGEST_KEY = "launcher3.layout.provider.blob";
+        public static final String LAYOUT_DIGEST_LABEL = "launcher-layout";
+        public static final String LAYOUT_DIGEST_TAG = "ignore";
+
         public static Bundle call(ContentResolver cr, String method) {
             return call(cr, method, null /* arg */);
         }
 
         public static Bundle call(ContentResolver cr, String method, String arg) {
-            return call(cr, method, arg, null /* extras */);
+            return cr.call(CONTENT_URI, method, arg, null);
         }
 
-        public static Bundle call(ContentResolver cr, String method, String arg, Bundle extras) {
-            return cr.call(CONTENT_URI, method, arg, extras);
-        }
     }
 }
diff --git a/src/com/android/launcher3/LauncherState.java b/src/com/android/launcher3/LauncherState.java
index ea6a919..8b124dc 100644
--- a/src/com/android/launcher3/LauncherState.java
+++ b/src/com/android/launcher3/LauncherState.java
@@ -19,28 +19,33 @@
 import static com.android.launcher3.anim.Interpolators.DEACCEL_2;
 import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_HOME;
 import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_OVERVIEW;
-import static com.android.launcher3.testing.TestProtocol.ALL_APPS_STATE_ORDINAL;
-import static com.android.launcher3.testing.TestProtocol.BACKGROUND_APP_STATE_ORDINAL;
-import static com.android.launcher3.testing.TestProtocol.HINT_STATE_ORDINAL;
-import static com.android.launcher3.testing.TestProtocol.HINT_STATE_TWO_BUTTON_ORDINAL;
-import static com.android.launcher3.testing.TestProtocol.NORMAL_STATE_ORDINAL;
-import static com.android.launcher3.testing.TestProtocol.OVERVIEW_MODAL_TASK_STATE_ORDINAL;
-import static com.android.launcher3.testing.TestProtocol.OVERVIEW_SPLIT_SELECT_ORDINAL;
-import static com.android.launcher3.testing.TestProtocol.OVERVIEW_STATE_ORDINAL;
-import static com.android.launcher3.testing.TestProtocol.QUICK_SWITCH_STATE_ORDINAL;
-import static com.android.launcher3.testing.TestProtocol.SPRING_LOADED_STATE_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.ALL_APPS_STATE_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.BACKGROUND_APP_STATE_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.EDIT_MODE_STATE_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.HINT_STATE_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.HINT_STATE_TWO_BUTTON_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.NORMAL_STATE_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.OVERVIEW_MODAL_TASK_STATE_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.OVERVIEW_SPLIT_SELECT_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.OVERVIEW_STATE_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.QUICK_SWITCH_STATE_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.SPRING_LOADED_STATE_ORDINAL;
 
 import android.content.Context;
 import android.graphics.Color;
 import android.view.animation.Interpolator;
 
+import androidx.annotation.FloatRange;
+
 import com.android.launcher3.statemanager.BaseState;
 import com.android.launcher3.statemanager.StateManager;
+import com.android.launcher3.states.EditModeState;
 import com.android.launcher3.states.HintState;
 import com.android.launcher3.states.SpringLoadedState;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.uioverrides.states.AllAppsState;
 import com.android.launcher3.uioverrides.states.OverviewState;
+import com.android.launcher3.views.ActivityContext;
 
 import java.util.Arrays;
 
@@ -71,17 +76,14 @@
     public static final int FLAG_WORKSPACE_ICONS_CAN_BE_DRAGGED = BaseState.getFlag(2);
     // Flag to indicate that workspace should draw page background
     public static final int FLAG_WORKSPACE_HAS_BACKGROUNDS = BaseState.getFlag(3);
-    // True if the back button should be hidden when in this state (assuming no floating views are
-    // open, launcher has window focus, etc).
-    public static final int FLAG_HIDE_BACK_BUTTON = BaseState.getFlag(4);
     // Flag to indicate if the state would have scrim over sysui region: statu sbar and nav bar
-    public static final int FLAG_HAS_SYS_UI_SCRIM = BaseState.getFlag(5);
+    public static final int FLAG_HAS_SYS_UI_SCRIM = BaseState.getFlag(4);
     // Flag to inticate that all popups should be closed when this state is enabled.
-    public static final int FLAG_CLOSE_POPUPS = BaseState.getFlag(6);
-    public static final int FLAG_OVERVIEW_UI = BaseState.getFlag(7);
+    public static final int FLAG_CLOSE_POPUPS = BaseState.getFlag(5);
+    public static final int FLAG_OVERVIEW_UI = BaseState.getFlag(6);
 
     // Flag indicating that hotseat and its contents are not accessible.
-    public static final int FLAG_HOTSEAT_INACCESSIBLE = BaseState.getFlag(8);
+    public static final int FLAG_HOTSEAT_INACCESSIBLE = BaseState.getFlag(7);
 
 
     public static final float NO_OFFSET = 0;
@@ -103,15 +105,14 @@
                 }
             };
 
-    private static final LauncherState[] sAllStates = new LauncherState[10];
+    private static final LauncherState[] sAllStates = new LauncherState[11];
 
     /**
      * TODO: Create a separate class for NORMAL state.
      */
     public static final LauncherState NORMAL = new LauncherState(NORMAL_STATE_ORDINAL,
             LAUNCHER_STATE_HOME,
-            FLAG_DISABLE_RESTORE | FLAG_WORKSPACE_ICONS_CAN_BE_DRAGGED | FLAG_HIDE_BACK_BUTTON |
-                    FLAG_HAS_SYS_UI_SCRIM) {
+            FLAG_DISABLE_RESTORE | FLAG_WORKSPACE_ICONS_CAN_BE_DRAGGED | FLAG_HAS_SYS_UI_SCRIM) {
         @Override
         public int getTransitionDuration(Context context, boolean isToState) {
             // Arbitrary duration, when going to NORMAL we use the state we're coming from instead.
@@ -124,6 +125,7 @@
      */
     public static final LauncherState SPRING_LOADED = new SpringLoadedState(
             SPRING_LOADED_STATE_ORDINAL);
+    public static final LauncherState EDIT_MODE = new EditModeState(EDIT_MODE_STATE_ORDINAL);
     public static final LauncherState ALL_APPS = new AllAppsState(ALL_APPS_STATE_ORDINAL);
     public static final LauncherState HINT_STATE = new HintState(HINT_STATE_ORDINAL);
     public static final LauncherState HINT_STATE_TWO_BUTTON = new HintState(
@@ -132,7 +134,11 @@
     public static final LauncherState OVERVIEW = new OverviewState(OVERVIEW_STATE_ORDINAL);
     public static final LauncherState OVERVIEW_MODAL_TASK = OverviewState.newModalTaskState(
             OVERVIEW_MODAL_TASK_STATE_ORDINAL);
-    public static final LauncherState QUICK_SWITCH =
+    /**
+     * State when user performs a quickswitch gesture from home/workspace to the most recent
+     * app
+     */
+    public static final LauncherState QUICK_SWITCH_FROM_HOME =
             OverviewState.newSwitchState(QUICK_SWITCH_STATE_ORDINAL);
     public static final LauncherState BACKGROUND_APP =
             OverviewState.newBackgroundState(BACKGROUND_APP_STATE_ORDINAL);
@@ -208,14 +214,32 @@
         return (getVisibleElements(launcher) & elements) == elements;
     }
 
-    /** Returns whether taskbar is stashed and thus should replace hotseat with a handle */
+    /**
+     * Returns whether taskbar is stashed and thus should either:
+     * 1) replace hotseat or taskbar icons with a handle in gesture navigation mode or
+     * 2) fade out the hotseat or taskbar icons in 3-button navigation mode.
+     */
     public boolean isTaskbarStashed(Launcher launcher) {
         return false;
     }
 
     /** Returns whether taskbar is aligned with the hotseat vs position inside apps */
     public boolean isTaskbarAlignedWithHotseat(Launcher launcher) {
-        return !isTaskbarStashed(launcher);
+        return true;
+    }
+
+    /**
+     * Returns whether taskbar global drag is disallowed in this state.
+     */
+    public boolean disallowTaskbarGlobalDrag() {
+        return false;
+    }
+
+    /**
+     * Returns whether the taskbar shortcut should trigger split selection mode.
+     */
+    public boolean allowTaskbarInitialSplitSelection() {
+        return false;
     }
 
     /**
@@ -261,7 +285,8 @@
      *
      * 0 means completely zoomed in, without blurs. 1 is zoomed out, with blurs.
      */
-    public final float getDepth(Context context) {
+    public final  <DEVICE_PROFILE_CONTEXT extends Context & ActivityContext>
+            float getDepth(DEVICE_PROFILE_CONTEXT context) {
         return getDepth(context,
                 BaseDraggingActivity.fromContext(context).getDeviceProfile().isMultiWindowMode);
     }
@@ -271,14 +296,16 @@
      *
      * @see #getDepth(Context).
      */
-    public final float getDepth(Context context, boolean isMultiWindowMode) {
+    public final <DEVICE_PROFILE_CONTEXT extends Context & ActivityContext>
+            float getDepth(DEVICE_PROFILE_CONTEXT context, boolean isMultiWindowMode) {
         if (isMultiWindowMode) {
             return 0;
         }
         return getDepthUnchecked(context);
     }
 
-    protected float getDepthUnchecked(Context context) {
+    protected <DEVICE_PROFILE_CONTEXT extends Context & ActivityContext>
+            float getDepthUnchecked(DEVICE_PROFILE_CONTEXT context) {
         return 0f;
     }
 
@@ -304,7 +331,9 @@
      * Gets the translation provider for workspace pages.
      */
     public PageTranslationProvider getWorkspacePageTranslationProvider(Launcher launcher) {
-        if (this != SPRING_LOADED || !launcher.getDeviceProfile().isTwoPanels) {
+        if (this != SPRING_LOADED
+                || this != EDIT_MODE
+                || !launcher.getDeviceProfile().isTwoPanels) {
             return DEFAULT_PAGE_TRANSLATION_PROVIDER;
         }
         final float quarterPageSpacing = launcher.getWorkspace().getPageSpacing() / 4f;
@@ -319,6 +348,16 @@
         };
     }
 
+    /**
+     * Called when leaving this LauncherState
+     * @param launcher - Launcher instance
+     * @param toState - New LauncherState that is being entered
+     */
+    public void onLeavingState(Launcher launcher, LauncherState toState) {
+        // no-op
+        // override to handle when leaving current LauncherState
+    }
+
     @Override
     public LauncherState getHistoryForState(LauncherState previousState) {
         // No history is supported
@@ -338,6 +377,27 @@
         }
     }
 
+    /**
+     * Find {@link StateManager} and target {@link LauncherState} to handle back progress in
+     * predictive back gesture.
+     */
+    public void onBackProgressed(
+            Launcher launcher, @FloatRange(from = 0.0, to = 1.0) float backProgress) {
+        StateManager<LauncherState> lsm = launcher.getStateManager();
+        LauncherState toState = lsm.getLastState();
+        lsm.onBackProgressed(toState, backProgress);
+    }
+
+    /**
+     * Find {@link StateManager} and target {@link LauncherState} to handle backProgress in
+     * predictive back gesture.
+     */
+    public void onBackCancelled(Launcher launcher) {
+        StateManager<LauncherState> lsm = launcher.getStateManager();
+        LauncherState toState = lsm.getLastState();
+        lsm.onBackCancelled(toState);
+    }
+
     public static abstract class PageAlphaProvider {
 
         public final Interpolator interpolator;
diff --git a/src/com/android/launcher3/MainProcessInitializer.java b/src/com/android/launcher3/MainProcessInitializer.java
index f2a3de7..3d7e11e 100644
--- a/src/com/android/launcher3/MainProcessInitializer.java
+++ b/src/com/android/launcher3/MainProcessInitializer.java
@@ -18,7 +18,6 @@
 
 import android.content.Context;
 
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.graphics.BitmapCreationCheck;
 import com.android.launcher3.graphics.IconShape;
 import com.android.launcher3.logging.FileLog;
@@ -37,7 +36,6 @@
 
     protected void init(Context context) {
         FileLog.setDir(context.getApplicationContext().getFilesDir());
-        FeatureFlags.initialize(context);
         IconShape.init(context);
 
         if (BitmapCreationCheck.ENABLED) {
diff --git a/src/com/android/launcher3/MotionEventsUtils.java b/src/com/android/launcher3/MotionEventsUtils.java
new file mode 100644
index 0000000..40de003
--- /dev/null
+++ b/src/com/android/launcher3/MotionEventsUtils.java
@@ -0,0 +1,56 @@
+/*
+ * 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.launcher3;
+
+import static android.view.MotionEvent.CLASSIFICATION_TWO_FINGER_SWIPE;
+
+import static com.android.launcher3.config.FeatureFlags.ENABLE_TRACKPAD_GESTURE;
+
+import android.annotation.TargetApi;
+import android.os.Build;
+import android.view.MotionEvent;
+
+/** Handles motion events from trackpad. */
+public class MotionEventsUtils {
+
+    /** {@link MotionEvent#CLASSIFICATION_MULTI_FINGER_SWIPE} is hidden. */
+    public static final int CLASSIFICATION_MULTI_FINGER_SWIPE = 4;
+
+    @TargetApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
+    public static boolean isTrackpadScroll(MotionEvent event) {
+        return ENABLE_TRACKPAD_GESTURE.get()
+                && event.getClassification() == CLASSIFICATION_TWO_FINGER_SWIPE;
+    }
+
+    @TargetApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
+    public static boolean isTrackpadMultiFingerSwipe(MotionEvent event) {
+        return ENABLE_TRACKPAD_GESTURE.get()
+                && event.getClassification() == CLASSIFICATION_MULTI_FINGER_SWIPE;
+    }
+
+    public static boolean isTrackpadThreeFingerSwipe(MotionEvent event) {
+        return isTrackpadMultiFingerSwipe(event) && event.getPointerCount() == 3;
+    }
+
+    public static boolean isTrackpadFourFingerSwipe(MotionEvent event) {
+        return isTrackpadMultiFingerSwipe(event) && event.getPointerCount() == 4;
+    }
+
+    public static boolean isTrackpadMotionEvent(MotionEvent event) {
+        return isTrackpadScroll(event) || isTrackpadMultiFingerSwipe(event);
+    }
+}
diff --git a/src/com/android/launcher3/MultipageCellLayout.java b/src/com/android/launcher3/MultipageCellLayout.java
new file mode 100644
index 0000000..44a1414
--- /dev/null
+++ b/src/com/android/launcher3/MultipageCellLayout.java
@@ -0,0 +1,187 @@
+/*
+ * 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.launcher3;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.view.View;
+
+import com.android.launcher3.celllayout.CellLayoutLayoutParams;
+import com.android.launcher3.celllayout.MulticellReorderAlgorithm;
+import com.android.launcher3.util.CellAndSpan;
+import com.android.launcher3.util.GridOccupancy;
+
+/**
+ * CellLayout that simulates a split in the middle for use in foldable devices.
+ */
+public class MultipageCellLayout extends CellLayout {
+
+    private final Drawable mLeftBackground;
+    private final Drawable mRightBackground;
+
+    private boolean mSeamWasAdded = false;
+
+    public MultipageCellLayout(Context context) {
+        this(context, null);
+    }
+
+    public MultipageCellLayout(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    @Override
+    protected int[] findNearestArea(int relativeXPos, int relativeYPos, int minSpanX, int minSpanY,
+            int spanX, int spanY, boolean ignoreOccupied, int[] result, int[] resultSpan) {
+        return createReorderAlgorithm().simulateSeam(
+                () -> super.findNearestArea(relativeXPos, relativeYPos, minSpanX, minSpanY, spanX,
+                        spanY, ignoreOccupied, result, resultSpan));
+    }
+
+    @Override
+    public void getDirectionVectorForDrop(int dragViewCenterX, int dragViewCenterY, int spanX,
+            int spanY, View dragView, int[] resultDirection) {
+        createReorderAlgorithm().simulateSeam(
+                () -> {
+                    super.getDirectionVectorForDrop(dragViewCenterX, dragViewCenterY, spanX, spanY,
+                            dragView, resultDirection);
+                    return 0;
+                });
+    }
+
+    @Override
+    public boolean isNearestDropLocationOccupied(int pixelX, int pixelY, int spanX, int spanY,
+            View dragView, int[] result) {
+        return createReorderAlgorithm().simulateSeam(
+                () -> super.isNearestDropLocationOccupied(pixelX, pixelY, spanX, spanY, dragView,
+                        result));
+    }
+
+    public MultipageCellLayout(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+        mLeftBackground = getContext().getDrawable(R.drawable.bg_celllayout);
+        mLeftBackground.setCallback(this);
+        mLeftBackground.setAlpha(0);
+
+        mRightBackground = getContext().getDrawable(R.drawable.bg_celllayout);
+        mRightBackground.setCallback(this);
+        mRightBackground.setAlpha(0);
+
+        DeviceProfile deviceProfile = mActivity.getDeviceProfile();
+
+        mCountX = deviceProfile.inv.numColumns * 2;
+        mCountY = deviceProfile.inv.numRows;
+        setGridSize(mCountX, mCountY);
+    }
+
+    @Override
+    boolean createAreaForResize(int cellX, int cellY, int spanX, int spanY, View dragView,
+            int[] direction, boolean commit) {
+        // Add seam to x position
+        if (cellX >= mCountX / 2) {
+            cellX++;
+        }
+        int finalCellX = cellX;
+        return createReorderAlgorithm().simulateSeam(
+                () -> super.createAreaForResize(finalCellX, cellY, spanX, spanY, dragView,
+                        direction, commit));
+    }
+
+    @Override
+    int[] performReorder(int pixelX, int pixelY, int minSpanX, int minSpanY, int spanX, int spanY,
+            View dragView, int[] result, int[] resultSpan, int mode) {
+        if (pixelX >= getWidth() / 2) {
+            pixelX += getCellWidth();
+        }
+        return super.performReorder(pixelX, pixelY, minSpanX, minSpanY, spanX, spanY, dragView,
+                result, resultSpan, mode);
+    }
+
+    @Override
+    public MulticellReorderAlgorithm createReorderAlgorithm() {
+        return new MulticellReorderAlgorithm(this);
+    }
+
+    @Override
+    public void copyCurrentStateToSolution(ItemConfiguration solution, boolean temp) {
+        int childCount = mShortcutsAndWidgets.getChildCount();
+        for (int i = 0; i < childCount; i++) {
+            View child = mShortcutsAndWidgets.getChildAt(i);
+            CellLayoutLayoutParams lp = (CellLayoutLayoutParams) child.getLayoutParams();
+            int seamOffset = lp.getCellX() >= mCountX / 2 && lp.canReorder ? 1 : 0;
+            CellAndSpan c = new CellAndSpan(lp.getCellX() + seamOffset, lp.getCellY(), lp.cellHSpan,
+                    lp.cellVSpan);
+            solution.add(child, c);
+        }
+    }
+
+    @Override
+    public int getUnusedHorizontalSpace() {
+        return (int) Math.ceil(
+                (getMeasuredWidth() - getPaddingLeft() - getPaddingRight() - (mCountX * mCellWidth)
+                        - ((mCountX - 1) * mBorderSpace.x)) / 2f);
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        if (mLeftBackground.getAlpha() > 0) {
+            mLeftBackground.setState(mBackground.getState());
+            mLeftBackground.draw(canvas);
+        }
+        if (mRightBackground.getAlpha() > 0) {
+            mRightBackground.setState(mBackground.getState());
+            mRightBackground.draw(canvas);
+        }
+
+        super.onDraw(canvas);
+    }
+
+    @Override
+    protected void updateBgAlpha() {
+        mLeftBackground.setAlpha((int) (mSpringLoadedProgress * 255));
+        mRightBackground.setAlpha((int) (mSpringLoadedProgress * 255));
+    }
+
+    @Override
+    protected void onLayout(boolean changed, int l, int t, int r, int b) {
+        super.onLayout(changed, l, t, r, b);
+        Rect rect = mBackground.getBounds();
+        mLeftBackground.setBounds(rect.left, rect.top, rect.right / 2 - 20, rect.bottom);
+        mRightBackground.setBounds(rect.right / 2 + 20, rect.top, rect.right, rect.bottom);
+    }
+
+    public void setCountX(int countX) {
+        mCountX = countX;
+    }
+
+    public void setCountY(int countY) {
+        mCountY = countY;
+    }
+
+    public void setOccupied(GridOccupancy occupied) {
+        mOccupied = occupied;
+    }
+
+    public boolean isSeamWasAdded() {
+        return mSeamWasAdded;
+    }
+
+    public void setSeamWasAdded(boolean seamWasAdded) {
+        mSeamWasAdded = seamWasAdded;
+    }
+}
diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java
index cba0b7d..af64b3b 100644
--- a/src/com/android/launcher3/PagedView.java
+++ b/src/com/android/launcher3/PagedView.java
@@ -16,8 +16,6 @@
 
 package com.android.launcher3;
 
-import static androidx.annotation.VisibleForTesting.PACKAGE_PRIVATE;
-
 import static com.android.launcher3.anim.Interpolators.SCROLL;
 import static com.android.launcher3.compat.AccessibilityManagerCompat.isAccessibilityEnabled;
 import static com.android.launcher3.compat.AccessibilityManagerCompat.isObservedEventType;
@@ -52,7 +50,6 @@
 import android.widget.ScrollView;
 
 import androidx.annotation.Nullable;
-import androidx.annotation.VisibleForTesting;
 
 import com.android.launcher3.compat.AccessibilityManagerCompat;
 import com.android.launcher3.config.FeatureFlags;
@@ -116,8 +113,7 @@
     private float mDownMotionX;
     private float mDownMotionY;
     private float mDownMotionPrimary;
-    private float mLastMotion;
-    private float mLastMotionRemainder;
+    private int mLastMotion;
     private float mTotalMotion;
     // Used in special cases where the fling checks can be relaxed for an intentional gesture
     private boolean mAllowEasyFling;
@@ -259,8 +255,13 @@
         abortScrollerAnimation(true);
     }
 
+    protected void onScrollerAnimationAborted() {
+        // No-Op
+    }
+
     private void abortScrollerAnimation(boolean resetNextPage) {
         mScroller.abortAnimation();
+        onScrollerAnimationAborted();
         // We need to clean up the next page here to avoid computeScrollHelper from
         // updating current page on the pass.
         if (resetNextPage) {
@@ -314,7 +315,6 @@
     /**
      * Returns an IntSet with the indices of the currently visible pages
      */
-    @VisibleForTesting(otherwise = PACKAGE_PRIVATE)
     public IntSet getVisiblePageIndices() {
         return getPageIndices(mCurrentPage);
     }
@@ -555,11 +555,11 @@
             if (mAllowOverScroll) {
                 if (newPos < mMinScroll && oldPos >= mMinScroll) {
                     mEdgeGlowLeft.onAbsorb((int) mScroller.getCurrVelocity());
-                    mScroller.abortAnimation();
+                    abortScrollerAnimation(false);
                     onEdgeAbsorbingScroll();
                 } else if (newPos > mMaxScroll && oldPos <= mMaxScroll) {
                     mEdgeGlowRight.onAbsorb((int) mScroller.getCurrVelocity());
-                    mScroller.abortAnimation();
+                    abortScrollerAnimation(false);
                     onEdgeAbsorbingScroll();
                 }
             }
@@ -569,7 +569,7 @@
             int finalPos = mOrientationHandler.getPrimaryValue(mScroller.getFinalX(),
                     mScroller.getFinalY());
             if (newPos == finalPos && mEdgeGlowLeft.isFinished() && mEdgeGlowRight.isFinished()) {
-                mScroller.abortAnimation();
+                abortScrollerAnimation(false);
             }
 
             invalidate();
@@ -694,7 +694,7 @@
     }
 
     /** Returns true iff this PagedView's scroll amounts are initialized to each page index. */
-    protected boolean pageScrollsInitialized() {
+    protected boolean isPageScrollsInitialized() {
         return mPageScrolls != null && mPageScrolls.length == getChildCount();
     }
 
@@ -703,12 +703,12 @@
      */
     public void runOnPageScrollsInitialized(Runnable callback) {
         mOnPageScrollsInitializedCallbacks.add(callback);
-        if (pageScrollsInitialized()) {
+        if (isPageScrollsInitialized()) {
             onPageScrollsInitialized();
         }
     }
 
-    private void onPageScrollsInitialized() {
+    protected void onPageScrollsInitialized() {
         for (Runnable callback : mOnPageScrollsInitializedCallbacks) {
             callback.run();
         }
@@ -722,7 +722,7 @@
         final int childCount = getChildCount();
         int[] pageScrolls = mPageScrolls;
         boolean pageScrollChanged = false;
-        if (!pageScrollsInitialized()) {
+        if (!isPageScrollsInitialized()) {
             pageScrolls = new int[childCount];
             pageScrollChanged = true;
         }
@@ -767,6 +767,13 @@
         }
 
         if (mScroller.isFinished() && pageScrollChanged) {
+            // TODO(b/246283207): Remove logging once root cause of flake detected.
+            if (Utilities.isRunningInTestHarness() && !(this instanceof Workspace)) {
+                Log.d("b/246283207", this.getClass().getSimpleName() + "#onLayout() -> "
+                        + "if(mScroller.isFinished() && pageScrollChanged) -> getNextPage(): "
+                        + getNextPage() + ", getScrollForPage(getNextPage()): "
+                        + getScrollForPage(getNextPage()));
+            }
             setCurrentPage(getNextPage());
         }
         onPageScrollsInitialized();
@@ -1064,8 +1071,8 @@
                 // Remember location of down touch
                 mDownMotionX = x;
                 mDownMotionY = y;
-                mDownMotionPrimary = mLastMotion = mOrientationHandler.getPrimaryDirection(ev, 0);
-                mLastMotionRemainder = 0;
+                mDownMotionPrimary = mOrientationHandler.getPrimaryDirection(ev, 0);
+                mLastMotion = (int) mDownMotionPrimary;
                 mTotalMotion = 0;
                 mAllowEasyFling = false;
                 mActivePointerId = ev.getPointerId(0);
@@ -1147,8 +1154,7 @@
             // Scroll if the user moved far enough along the X axis
             mIsBeingDragged = true;
             mTotalMotion += Math.abs(mLastMotion - primaryDirection);
-            mLastMotion = primaryDirection;
-            mLastMotionRemainder = 0;
+            mLastMotion = (int) primaryDirection;
             pageBeginTransition();
             // Stop listening for things like pinches.
             requestDisallowInterceptTouchEvent(true);
@@ -1187,9 +1193,7 @@
     }
 
     public int getScrollForPage(int index) {
-        // TODO(b/233112195): Use !pageScrollsInitialized() instead of mPageScrolls == null, once we
-        // root cause where we should be using runOnPageScrollsInitialized().
-        if (mPageScrolls == null || index >= mPageScrolls.length || index < 0) {
+        if (!isPageScrollsInitialized() || index >= mPageScrolls.length || index < 0) {
             return 0;
         } else {
             return mPageScrolls[index];
@@ -1199,7 +1203,7 @@
     // While layout transitions are occurring, a child's position may stray from its baseline
     // position. This method returns the magnitude of this stray at any given time.
     public int getLayoutTransitionOffsetForPage(int index) {
-        if (!pageScrollsInitialized() || index >= mPageScrolls.length || index < 0) {
+        if (!isPageScrollsInitialized() || index >= mPageScrolls.length || index < 0) {
             return 0;
         } else {
             View child = getChildAt(index);
@@ -1259,8 +1263,8 @@
             // Remember where the motion event started
             mDownMotionX = ev.getX();
             mDownMotionY = ev.getY();
-            mDownMotionPrimary = mLastMotion = mOrientationHandler.getPrimaryDirection(ev, 0);
-            mLastMotionRemainder = 0;
+            mDownMotionPrimary = mOrientationHandler.getPrimaryDirection(ev, 0);
+            mLastMotion = (int) mDownMotionPrimary;
             mTotalMotion = 0;
             mAllowEasyFling = false;
             mActivePointerId = ev.getPointerId(0);
@@ -1281,28 +1285,29 @@
                 final int pointerIndex = ev.findPointerIndex(mActivePointerId);
 
                 if (pointerIndex == -1) return true;
-                float oldScroll = mOrientationHandler.getPrimaryScroll(this);
-                float dx = ev.getX(pointerIndex);
-                float dy = ev.getY(pointerIndex);
+                int oldScroll = mOrientationHandler.getPrimaryScroll(this);
+                int dx = (int) ev.getX(pointerIndex);
+                int dy = (int) ev.getY(pointerIndex);
 
-                float direction = mOrientationHandler.getPrimaryValue(dx, dy);
-                float delta = mLastMotion + mLastMotionRemainder - direction;
+                int direction = mOrientationHandler.getPrimaryValue(dx, dy);
+                int delta = mLastMotion - direction;
 
                 int width = getWidth();
                 int height = getHeight();
-                int size = mOrientationHandler.getPrimaryValue(width, height);
-
-                final float displacement = mOrientationHandler.getSecondaryValue(dx, dy)
-                        / mOrientationHandler.getSecondaryValue(width, height);
+                float size = mOrientationHandler.getPrimaryValue(width, height);
+                float displacement = (width == 0 || height == 0) ? 0
+                        : (float) mOrientationHandler.getSecondaryValue(dx, dy)
+                                / mOrientationHandler.getSecondaryValue(width, height);
                 mTotalMotion += Math.abs(delta);
 
                 if (mAllowOverScroll) {
-                    float consumed = 0;
+                    int consumed = 0;
                     if (delta < 0 && mEdgeGlowRight.getDistance() != 0f) {
-                        consumed = size * mEdgeGlowRight.onPullDistance(delta / size, displacement);
+                        consumed = Math.round(size *
+                                mEdgeGlowRight.onPullDistance(delta / size, displacement));
                     } else if (delta > 0 && mEdgeGlowLeft.getDistance() != 0f) {
-                        consumed = -size * mEdgeGlowLeft.onPullDistance(
-                                -delta / size, 1 - displacement);
+                        consumed = Math.round(-size *
+                                mEdgeGlowLeft.onPullDistance(-delta / size, 1 - displacement));
                     }
                     delta -= consumed;
                 }
@@ -1312,11 +1317,9 @@
                 // keep the remainder because we are actually testing if we've moved from the last
                 // scrolled position (which is discrete).
                 mLastMotion = direction;
-                int movedDelta = (int) delta;
-                mLastMotionRemainder = delta - movedDelta;
 
                 if (delta != 0) {
-                    mOrientationHandler.setPrimary(this, VIEW_SCROLL_BY, movedDelta);
+                    mOrientationHandler.setPrimary(this, VIEW_SCROLL_BY, delta);
 
                     if (mAllowOverScroll) {
                         final float pulledToX = oldScroll + delta;
@@ -1360,12 +1363,18 @@
                 int velocity = (int) mOrientationHandler.getPrimaryVelocity(velocityTracker,
                         mActivePointerId);
                 float delta = primaryDirection - mDownMotionPrimary;
-                int pageOrientedSize = (int) (mOrientationHandler.getMeasuredSize(
-                        getPageAt(mCurrentPage))
+
+                View current = getPageAt(mCurrentPage);
+                if (current == null) {
+                    Log.e(TAG, "current page was null. this should not happen.");
+                    return true;
+                }
+
+                int pageOrientedSize = (int) (mOrientationHandler.getMeasuredSize(current)
                         * mOrientationHandler.getPrimaryScale(this));
                 boolean isSignificantMove = isSignificantMove(Math.abs(delta), pageOrientedSize);
 
-                mTotalMotion += Math.abs(mLastMotion + mLastMotionRemainder - primaryDirection);
+                mTotalMotion += Math.abs(mLastMotion - primaryDirection);
                 boolean passedSlop = mAllowEasyFling || mTotalMotion > mPageSlop;
                 boolean isFling = passedSlop && shouldFlingForVelocity(velocity);
                 boolean isDeltaLeft = mIsRtl ? delta > 0 : delta < 0;
@@ -1394,15 +1403,17 @@
                             (isFling && !isVelocityLeft)) && mCurrentPage > 0) {
                         finalPage = returnToOriginalPage
                                 ? mCurrentPage : mCurrentPage - getPanelCount();
-                        snapToPageWithVelocity(finalPage, velocity);
+                        runOnPageScrollsInitialized(
+                                () -> snapToPageWithVelocity(finalPage, velocity));
                     } else if (((isSignificantMove && isDeltaLeft && !isFling) ||
                             (isFling && isVelocityLeft)) &&
                             mCurrentPage < getChildCount() - 1) {
                         finalPage = returnToOriginalPage
                                 ? mCurrentPage : mCurrentPage + getPanelCount();
-                        snapToPageWithVelocity(finalPage, velocity);
+                        runOnPageScrollsInitialized(
+                                () -> snapToPageWithVelocity(finalPage, velocity));
                     } else {
-                        snapToDestination();
+                        runOnPageScrollsInitialized(this::snapToDestination);
                     }
                 } else {
                     if (!mScroller.isFinished()) {
@@ -1425,7 +1436,7 @@
 
                         int finalPos = mScroller.getFinalX();
                         mNextPage = getDestinationPage(finalPos);
-                        onNotSnappingToPageInFreeScroll();
+                        runOnPageScrollsInitialized(this::onNotSnappingToPageInFreeScroll);
                     }
                     invalidate();
                 }
@@ -1439,7 +1450,7 @@
 
         case MotionEvent.ACTION_CANCEL:
             if (mIsBeingDragged) {
-                snapToDestination();
+                runOnPageScrollsInitialized(this::snapToDestination);
             }
             mEdgeGlowLeft.onRelease();
             mEdgeGlowRight.onRelease();
@@ -1548,9 +1559,8 @@
             // active pointer and adjust accordingly.
             // TODO: Make this decision more intelligent.
             final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
-            mLastMotion = mDownMotionPrimary = mOrientationHandler.getPrimaryDirection(ev,
-                newPointerIndex);
-            mLastMotionRemainder = 0;
+            mDownMotionPrimary = mOrientationHandler.getPrimaryDirection(ev, newPointerIndex);
+            mLastMotion = (int) mDownMotionPrimary;
             mActivePointerId = ev.getPointerId(newPointerIndex);
             if (mVelocityTracker != null) {
                 mVelocityTracker.clear();
@@ -1604,7 +1614,7 @@
     }
 
     private int getDisplacementFromScreenCenter(int childIndex, int screenCenter) {
-        int childSize = Math.round(getChildVisibleSize(childIndex));
+        int childSize = getChildVisibleSize(childIndex);
         int halfChildSize = (childSize / 2);
         int childCenter = getChildOffset(childIndex) + halfChildSize;
         return childCenter - screenCenter;
@@ -1701,7 +1711,7 @@
             return false;
         }
 
-        if (FeatureFlags.IS_STUDIO_BUILD && !Utilities.IS_RUNNING_IN_TEST_HARNESS) {
+        if (FeatureFlags.IS_STUDIO_BUILD && !Utilities.isRunningInTestHarness()) {
             duration *= Settings.Global.getFloat(getContext().getContentResolver(),
                     Settings.Global.WINDOW_ANIMATION_SCALE, 1);
         }
diff --git a/src/com/android/launcher3/Partner.java b/src/com/android/launcher3/Partner.java
deleted file mode 100644
index 2e27f32..0000000
--- a/src/com/android/launcher3/Partner.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (C) 2014 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.launcher3;
-
-import static com.android.launcher3.util.PackageManagerHelper.findSystemApk;
-
-import android.content.pm.PackageManager;
-import android.content.res.Resources;
-import android.util.DisplayMetrics;
-import android.util.Log;
-import android.util.Pair;
-
-import java.io.File;
-
-/**
- * Utilities to discover and interact with partner customizations. There can
- * only be one set of customizations on a device, and it must be bundled with
- * the system.
- */
-public class Partner {
-
-    static final String TAG = "Launcher.Partner";
-
-    /** Marker action used to discover partner */
-    private static final String
-            ACTION_PARTNER_CUSTOMIZATION = "com.android.launcher3.action.PARTNER_CUSTOMIZATION";
-
-    public static final String RES_FOLDER = "partner_folder";
-    public static final String RES_WALLPAPERS = "partner_wallpapers";
-    public static final String RES_DEFAULT_LAYOUT = "partner_default_layout";
-
-    public static final String RES_DEFAULT_WALLPAPER_HIDDEN = "default_wallpapper_hidden";
-    public static final String RES_SYSTEM_WALLPAPER_DIR = "system_wallpaper_directory";
-
-    public static final String RES_REQUIRE_FIRST_RUN_FLOW = "requires_first_run_flow";
-
-    /** These resources are used to override the device profile  */
-    public static final String RES_GRID_NUM_ROWS = "grid_num_rows";
-    public static final String RES_GRID_NUM_COLUMNS = "grid_num_columns";
-    public static final String RES_GRID_ICON_SIZE_DP = "grid_icon_size_dp";
-
-    /**
-     * Find and return partner details, or {@code null} if none exists.
-     */
-    public static synchronized Partner get(PackageManager pm) {
-        Pair<String, Resources> apkInfo = findSystemApk(ACTION_PARTNER_CUSTOMIZATION, pm);
-        return apkInfo != null ? new Partner(apkInfo.first, apkInfo.second) : null;
-    }
-
-    private final String mPackageName;
-    private final Resources mResources;
-
-    private Partner(String packageName, Resources res) {
-        mPackageName = packageName;
-        mResources = res;
-    }
-
-    public String getPackageName() {
-        return mPackageName;
-    }
-
-    public Resources getResources() {
-        return mResources;
-    }
-
-    public boolean hasDefaultLayout() {
-        int defaultLayout = getResources().getIdentifier(Partner.RES_DEFAULT_LAYOUT,
-                "xml", getPackageName());
-        return defaultLayout != 0;
-    }
-
-    public boolean hasFolder() {
-        int folder = getResources().getIdentifier(Partner.RES_FOLDER,
-                "xml", getPackageName());
-        return folder != 0;
-    }
-
-    public boolean hideDefaultWallpaper() {
-        int resId = getResources().getIdentifier(RES_DEFAULT_WALLPAPER_HIDDEN, "bool",
-                getPackageName());
-        return resId != 0 && getResources().getBoolean(resId);
-    }
-
-    public File getWallpaperDirectory() {
-        int resId = getResources().getIdentifier(RES_SYSTEM_WALLPAPER_DIR, "string",
-                getPackageName());
-        return (resId != 0) ? new File(getResources().getString(resId)) : null;
-    }
-
-    public boolean requiresFirstRunFlow() {
-        int resId = getResources().getIdentifier(RES_REQUIRE_FIRST_RUN_FLOW, "bool",
-                getPackageName());
-        return resId != 0 && getResources().getBoolean(resId);
-    }
-
-    public void applyInvariantDeviceProfileOverrides(InvariantDeviceProfile inv, DisplayMetrics dm) {
-        int numRows = -1;
-        int numColumns = -1;
-        float iconSize = -1;
-
-        try {
-            int resId = getResources().getIdentifier(RES_GRID_NUM_ROWS,
-                    "integer", getPackageName());
-            if (resId > 0) {
-                numRows = getResources().getInteger(resId);
-            }
-
-            resId = getResources().getIdentifier(RES_GRID_NUM_COLUMNS,
-                    "integer", getPackageName());
-            if (resId > 0) {
-                numColumns = getResources().getInteger(resId);
-            }
-
-            resId = getResources().getIdentifier(RES_GRID_ICON_SIZE_DP,
-                    "dimen", getPackageName());
-            if (resId > 0) {
-                int px = getResources().getDimensionPixelSize(resId);
-                iconSize = Utilities.dpiFromPx((float) px, dm.densityDpi);
-            }
-        } catch (Resources.NotFoundException ex) {
-            Log.e(TAG, "Invalid Partner grid resource!", ex);
-            return;
-        }
-
-        if (numRows > 0 && numColumns > 0) {
-            inv.numRows = numRows;
-            inv.numColumns = numColumns;
-        }
-
-        if (iconSize > 0) {
-            inv.iconSize[InvariantDeviceProfile.INDEX_DEFAULT] = iconSize;
-        }
-    }
-}
diff --git a/src/com/android/launcher3/PendingAddItemInfo.java b/src/com/android/launcher3/PendingAddItemInfo.java
index be994ee..000ddd8 100644
--- a/src/com/android/launcher3/PendingAddItemInfo.java
+++ b/src/com/android/launcher3/PendingAddItemInfo.java
@@ -18,9 +18,10 @@
 
 import android.content.ComponentName;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
-import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.model.data.ItemInfoWithIcon;
 
 import java.util.Optional;
 
@@ -28,13 +29,20 @@
  * Meta data that is used for deferred binding. e.g., this object is used to pass information on
  * draggable targets when they are dropped onto the workspace from another container.
  */
-public class PendingAddItemInfo extends ItemInfo {
+public class PendingAddItemInfo extends ItemInfoWithIcon {
 
     /**
      * The component that will be created.
      */
     public ComponentName componentName;
 
+    public PendingAddItemInfo() { }
+
+    public PendingAddItemInfo(PendingAddItemInfo info) {
+        super(info);
+        componentName = info.componentName;
+    }
+
     @Override
     protected String dumpProperties() {
         return super.dumpProperties() + " componentName=" + componentName;
@@ -43,14 +51,20 @@
     /**
      * Returns shallow copy of the object.
      */
+    @NonNull
     @Override
-    public ItemInfo makeShallowCopy() {
+    public PendingAddItemInfo makeShallowCopy() {
         PendingAddItemInfo itemInfo = new PendingAddItemInfo();
         itemInfo.copyFrom(this);
         itemInfo.componentName = this.componentName;
         return itemInfo;
     }
 
+    @Override
+    public PendingAddItemInfo clone() {
+        return makeShallowCopy();
+    }
+
     @Nullable
     @Override
     public ComponentName getTargetComponent() {
diff --git a/src/com/android/launcher3/Reorderable.java b/src/com/android/launcher3/Reorderable.java
index 047fb01..5afd95d 100644
--- a/src/com/android/launcher3/Reorderable.java
+++ b/src/com/android/launcher3/Reorderable.java
@@ -16,33 +16,19 @@
 
 package com.android.launcher3;
 
-import android.graphics.PointF;
-import android.view.View;
+import com.android.launcher3.util.MultiTranslateDelegate;
 
 public interface Reorderable {
 
     /**
-     * Set the offset related to reorder hint and bounce animations
+     * Returns the delegate to control translation
      */
-    void setReorderBounceOffset(float x, float y);
-
-    void getReorderBounceOffset(PointF offset);
-
-    /**
-     * Set the offset related to previewing the new reordered position
-     */
-    void setReorderPreviewOffset(float x, float y);
-
-    void getReorderPreviewOffset(PointF offset);
+    MultiTranslateDelegate getTranslateDelegate();
 
     /**
      * Set the scale related to reorder hint and "bounce" animations
      */
     void setReorderBounceScale(float scale);
-    float getReorderBounceScale();
 
-    /**
-     * Get the com.android.view related to this object
-     */
-    View getView();
+    float getReorderBounceScale();
 }
diff --git a/src/com/android/launcher3/SecondaryDropTarget.java b/src/com/android/launcher3/SecondaryDropTarget.java
index f8bc1f4..2dd610cb 100644
--- a/src/com/android/launcher3/SecondaryDropTarget.java
+++ b/src/com/android/launcher3/SecondaryDropTarget.java
@@ -3,8 +3,6 @@
 import static android.appwidget.AppWidgetManager.INVALID_APPWIDGET_ID;
 import static android.appwidget.AppWidgetProviderInfo.WIDGET_FEATURE_RECONFIGURABLE;
 
-import static com.android.launcher3.Launcher.REQUEST_RECONFIGURE_APPWIDGET;
-import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_DESKTOP;
 import static com.android.launcher3.accessibility.LauncherAccessibilityDelegate.DISMISS_PREDICTION;
 import static com.android.launcher3.accessibility.LauncherAccessibilityDelegate.INVALID;
 import static com.android.launcher3.accessibility.LauncherAccessibilityDelegate.RECONFIGURE;
@@ -45,10 +43,7 @@
 import com.android.launcher3.logging.StatsLogManager.StatsLogger;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.ItemInfoWithIcon;
-import com.android.launcher3.model.data.LauncherAppWidgetInfo;
 import com.android.launcher3.util.PackageManagerHelper;
-import com.android.launcher3.util.PendingRequestArgs;
-import com.android.launcher3.views.Snackbar;
 import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
 
 import java.net.URISyntaxException;
@@ -159,7 +154,7 @@
                 return RECONFIGURE;
             }
             return INVALID;
-        } else if (FeatureFlags.ENABLE_PREDICTION_DISMISS.get() && info.isPredictedItem()) {
+        } else if (info.isPredictedItem()) {
             return DISMISS_PREDICTION;
         }
 
@@ -204,7 +199,7 @@
             user = item.user;
         }
         if (intent != null) {
-            LauncherActivityInfo info = mLauncher.getSystemService(LauncherApps.class)
+            LauncherActivityInfo info = getContext().getSystemService(LauncherApps.class)
                     .resolveActivity(intent, user);
             if (info != null
                     && (info.getApplicationInfo().flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
@@ -239,23 +234,11 @@
     public void completeDrop(final DragObject d) {
         ComponentName target = performDropAction(getViewUnderDrag(d.dragInfo), d.dragInfo,
                 d.logInstanceId);
-        if (d.dragSource instanceof DeferredOnComplete) {
-            DeferredOnComplete deferred = (DeferredOnComplete) d.dragSource;
-            if (target != null) {
-                deferred.mPackageName = target.getPackageName();
-                mLauncher.addOnResumeCallback(deferred::onLauncherResume);
-            } else {
-                deferred.sendFailure();
-            }
-        }
+        mDropTargetHandler.onSecondaryTargetCompleteDrop(target, d);
     }
 
     private View getViewUnderDrag(ItemInfo info) {
-        if (info instanceof LauncherAppWidgetInfo && info.container == CONTAINER_DESKTOP &&
-                mLauncher.getWorkspace().getDragInfo() != null) {
-            return mLauncher.getWorkspace().getDragInfo().cell;
-        }
-        return null;
+        return mDropTargetHandler.getViewUnderDrag(info);
     }
 
     /**
@@ -286,18 +269,15 @@
         if (mCurrentAccessibilityAction == RECONFIGURE) {
             int widgetId = getReconfigurableWidgetId(view);
             if (widgetId != INVALID_APPWIDGET_ID) {
-                mLauncher.setWaitingForResult(
-                        PendingRequestArgs.forWidgetInfo(widgetId, null, info));
-                mLauncher.getAppWidgetHost().startConfigActivity(mLauncher, widgetId,
-                        REQUEST_RECONFIGURE_APPWIDGET);
+                mDropTargetHandler.reconfigureWidget(widgetId, info);
             }
             return null;
         }
         if (mCurrentAccessibilityAction == DISMISS_PREDICTION) {
             if (FeatureFlags.ENABLE_DISMISS_PREDICTION_UNDO.get()) {
-                mLauncher.getDragLayer()
-                        .announceForAccessibility(getContext().getString(R.string.item_removed));
-                Snackbar.show(mLauncher, R.string.item_removed, R.string.undo, () -> { }, () -> {
+                CharSequence announcement = getContext().getString(R.string.item_removed);
+                mDropTargetHandler
+                        .dismissPrediction(announcement, () -> {}, () -> {
                     mStatsLogManager.logger()
                             .withInstanceId(instanceId)
                             .withItemInfo(info)
@@ -306,20 +286,23 @@
             }
             return null;
         }
-        // else: mCurrentAccessibilityAction == UNINSTALL
 
         ComponentName cn = getUninstallTarget(info);
         if (cn == null) {
             // System applications cannot be installed. For now, show a toast explaining that.
             // We may give them the option of disabling apps this way.
-            Toast.makeText(mLauncher, R.string.uninstall_system_app_text, Toast.LENGTH_SHORT).show();
+            Toast.makeText(
+                    getContext(),
+                    R.string.uninstall_system_app_text,
+                    Toast.LENGTH_SHORT
+                ).show();
             return null;
         }
         try {
-            Intent i = Intent.parseUri(mLauncher.getString(R.string.delete_package_intent), 0)
+            Intent i = Intent.parseUri(getContext().getString(R.string.delete_package_intent), 0)
                     .setData(Uri.fromParts("package", cn.getPackageName(), cn.getClassName()))
                     .putExtra(Intent.EXTRA_USER, info.user);
-            mLauncher.startActivity(i);
+            getContext().startActivity(i);
             FileLog.d(TAG, "start uninstall activity " + cn.getPackageName());
             return cn;
         } catch (URISyntaxException e) {
@@ -339,12 +322,12 @@
      * A wrapper around {@link DragSource} which delays the {@link #onDropCompleted} action until
      * {@link #onLauncherResume}
      */
-    private class DeferredOnComplete implements DragSource {
+    protected class DeferredOnComplete implements DragSource {
 
         private final DragSource mOriginal;
         private final Context mContext;
 
-        private String mPackageName;
+        protected String mPackageName;
         private DragObject mDragObject;
 
         public DeferredOnComplete(DragSource original, Context context) {
diff --git a/src/com/android/launcher3/SessionCommitReceiver.java b/src/com/android/launcher3/SessionCommitReceiver.java
index b81637f..aaccb7d 100644
--- a/src/com/android/launcher3/SessionCommitReceiver.java
+++ b/src/com/android/launcher3/SessionCommitReceiver.java
@@ -24,14 +24,12 @@
 import android.content.pm.PackageManager;
 import android.os.UserHandle;
 import android.text.TextUtils;
-import android.util.Log;
 
 import androidx.annotation.WorkerThread;
 
 import com.android.launcher3.logging.FileLog;
 import com.android.launcher3.model.ItemInstallQueue;
 import com.android.launcher3.pm.InstallSessionHelper;
-import com.android.launcher3.testing.TestProtocol;
 import com.android.launcher3.util.Executors;
 
 /**
@@ -53,9 +51,6 @@
     private static void processIntent(Context context, Intent intent) {
         if (!isEnabled(context)) {
             // User has decided to not add icons on homescreen.
-            if (TestProtocol.sDebugTracing) {
-                Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + " not enabled");
-            }
             return;
         }
 
@@ -64,27 +59,14 @@
         if (!PackageInstaller.ACTION_SESSION_COMMITTED.equals(intent.getAction())
                 || info == null || user == null) {
             // Invalid intent.
-            if (TestProtocol.sDebugTracing) {
-                Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + " invalid intent");
-            }
             return;
         }
 
         InstallSessionHelper packageInstallerCompat = InstallSessionHelper.INSTANCE.get(context);
-        packageInstallerCompat.restoreDbIfApplicable(info);
         if (TextUtils.isEmpty(info.getAppPackageName())
                 || info.getInstallReason() != PackageManager.INSTALL_REASON_USER
                 || packageInstallerCompat.promiseIconAddedForId(info.getSessionId())) {
             packageInstallerCompat.removePromiseIconId(info.getSessionId());
-            if (TestProtocol.sDebugTracing) {
-                int id = info.getSessionId();
-                Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG
-                        + ", TextUtils.isEmpty=" + TextUtils.isEmpty(info.getAppPackageName())
-                        + ", info.getInstallReason()=" + info.getInstallReason()
-                        + ", INSTALL_REASON_USER=" + PackageManager.INSTALL_REASON_USER
-                        + ", icon added=" + packageInstallerCompat.promiseIconAddedForId(id)
-                );
-            }
             return;
         }
 
@@ -98,6 +80,6 @@
     }
 
     public static boolean isEnabled(Context context) {
-        return Utilities.getPrefs(context).getBoolean(ADD_ICON_PREFERENCE_KEY, true);
+        return LauncherPrefs.getPrefs(context).getBoolean(ADD_ICON_PREFERENCE_KEY, true);
     }
 }
diff --git a/src/com/android/launcher3/ShortcutAndWidgetContainer.java b/src/com/android/launcher3/ShortcutAndWidgetContainer.java
index 5583eae..a0ceefb 100644
--- a/src/com/android/launcher3/ShortcutAndWidgetContainer.java
+++ b/src/com/android/launcher3/ShortcutAndWidgetContainer.java
@@ -21,17 +21,21 @@
 import static com.android.launcher3.CellLayout.FOLDER;
 import static com.android.launcher3.CellLayout.HOTSEAT;
 import static com.android.launcher3.CellLayout.WORKSPACE;
+import static com.android.launcher3.util.MultiTranslateDelegate.INDEX_WIDGET_CENTERING;
 
 import android.app.WallpaperManager;
 import android.content.Context;
 import android.graphics.Point;
+import android.graphics.PointF;
 import android.graphics.Rect;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 
 import com.android.launcher3.CellLayout.ContainerType;
+import com.android.launcher3.celllayout.CellLayoutLayoutParams;
 import com.android.launcher3.folder.FolderIcon;
+import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.views.ActivityContext;
 import com.android.launcher3.widget.NavigableAppWidgetHostView;
 
@@ -42,8 +46,6 @@
     // return an (x, y) value from helper functions. Do NOT use them to maintain other state.
     private final int[] mTmpCellXY = new int[2];
 
-    private final Rect mTempRect = new Rect();
-
     @ContainerType
     private final int mContainerType;
     private final WallpaperManager mWallpaperManager;
@@ -78,10 +80,10 @@
         final int count = getChildCount();
         for (int i = 0; i < count; i++) {
             View child = getChildAt(i);
-            CellLayout.LayoutParams lp = (CellLayout.LayoutParams) child.getLayoutParams();
+            CellLayoutLayoutParams lp = (CellLayoutLayoutParams) child.getLayoutParams();
 
-            if ((lp.cellX <= cellX) && (cellX < lp.cellX + lp.cellHSpan)
-                    && (lp.cellY <= cellY) && (cellY < lp.cellY + lp.cellVSpan)) {
+            if ((lp.getCellX() <= cellX) && (cellX < lp.getCellX() + lp.cellHSpan)
+                    && (lp.getCellY() <= cellY) && (cellY < lp.getCellY() + lp.cellVSpan)) {
                 return child;
             }
         }
@@ -104,16 +106,28 @@
         }
     }
 
+    /**
+     * Adds view to Layout a new position and it does not trigger a layout request.
+     * For more information check documentation for
+     * {@code ViewGroup#addViewInLayout(View, int, LayoutParams, boolean)}
+     *
+     * @param child view to be added
+     * @return true if the child was added, false otherwise
+     */
+    public boolean addViewInLayout(View child, LayoutParams layoutParams) {
+        return super.addViewInLayout(child, -1, layoutParams, true);
+    }
+
     public void setupLp(View child) {
-        CellLayout.LayoutParams lp = (CellLayout.LayoutParams) child.getLayoutParams();
+        CellLayoutLayoutParams lp = (CellLayoutLayoutParams) child.getLayoutParams();
         if (child instanceof NavigableAppWidgetHostView) {
             DeviceProfile profile = mActivity.getDeviceProfile();
-            ((NavigableAppWidgetHostView) child).getWidgetInset(profile, mTempRect);
+            final PointF appWidgetScale = profile.getAppWidgetScale((ItemInfo) child.getTag());
             lp.setup(mCellWidth, mCellHeight, invertLayoutHorizontally(), mCountX, mCountY,
-                    profile.appWidgetScale.x, profile.appWidgetScale.y, mBorderSpace, mTempRect);
+                    appWidgetScale.x, appWidgetScale.y, mBorderSpace, profile.widgetPadding);
         } else {
             lp.setup(mCellWidth, mCellHeight, invertLayoutHorizontally(), mCountX, mCountY,
-                    mBorderSpace, null);
+                    mBorderSpace);
         }
     }
 
@@ -128,16 +142,16 @@
     }
 
     public void measureChild(View child) {
-        CellLayout.LayoutParams lp = (CellLayout.LayoutParams) child.getLayoutParams();
+        CellLayoutLayoutParams lp = (CellLayoutLayoutParams) child.getLayoutParams();
         final DeviceProfile dp = mActivity.getDeviceProfile();
 
         if (child instanceof NavigableAppWidgetHostView) {
-            ((NavigableAppWidgetHostView) child).getWidgetInset(dp, mTempRect);
+            final PointF appWidgetScale = dp.getAppWidgetScale((ItemInfo) child.getTag());
             lp.setup(mCellWidth, mCellHeight, invertLayoutHorizontally(), mCountX, mCountY,
-                    dp.appWidgetScale.x, dp.appWidgetScale.y, mBorderSpace, mTempRect);
+                    appWidgetScale.x, appWidgetScale.y, mBorderSpace, dp.widgetPadding);
         } else {
             lp.setup(mCellWidth, mCellHeight, invertLayoutHorizontally(), mCountX, mCountY,
-                    mBorderSpace, null);
+                    mBorderSpace);
             // Center the icon/folder
             int cHeight = getCellContentHeight();
             int cellPaddingY = dp.isScalableGrid && mContainerType == WORKSPACE
@@ -147,7 +161,7 @@
             // No need to add padding when cell layout border spacing is present.
             boolean noPaddingX =
                     (dp.cellLayoutBorderSpacePx.x > 0 && mContainerType == WORKSPACE)
-                            || (dp.folderCellLayoutBorderSpacePx.x > 0 && mContainerType == FOLDER)
+                            || (dp.folderCellLayoutBorderSpacePx > 0 && mContainerType == FOLDER)
                             || (dp.hotseatBorderSpace > 0 && mContainerType == HOTSEAT);
             int cellPaddingX = noPaddingX
                     ? 0
@@ -171,7 +185,6 @@
         for (int i = 0; i < count; i++) {
             final View child = getChildAt(i);
             if (child.getVisibility() != GONE) {
-                CellLayout.LayoutParams lp = (CellLayout.LayoutParams) child.getLayoutParams();
                 layoutChild(child);
             }
         }
@@ -181,17 +194,19 @@
      * Core logic to layout a child for this ViewGroup.
      */
     public void layoutChild(View child) {
-        CellLayout.LayoutParams lp = (CellLayout.LayoutParams) child.getLayoutParams();
+        CellLayoutLayoutParams lp = (CellLayoutLayoutParams) child.getLayoutParams();
         if (child instanceof NavigableAppWidgetHostView) {
             NavigableAppWidgetHostView nahv = (NavigableAppWidgetHostView) child;
 
             // Scale and center the widget to fit within its cells.
             DeviceProfile profile = mActivity.getDeviceProfile();
-            float scaleX = profile.appWidgetScale.x;
-            float scaleY = profile.appWidgetScale.y;
+            final PointF appWidgetScale = profile.getAppWidgetScale((ItemInfo) child.getTag());
+            float scaleX = appWidgetScale.x;
+            float scaleY = appWidgetScale.y;
 
             nahv.setScaleToFit(Math.min(scaleX, scaleY));
-            nahv.setTranslationForCentering(-(lp.width - (lp.width * scaleX)) / 2.0f,
+            nahv.getTranslateDelegate().setTranslation(INDEX_WIDGET_CENTERING,
+                    -(lp.width - (lp.width * scaleX)) / 2.0f,
                     -(lp.height - (lp.height * scaleY)) / 2.0f);
         }
 
@@ -250,18 +265,18 @@
 
     @Override
     public void drawFolderLeaveBehindForIcon(FolderIcon child) {
-        CellLayout.LayoutParams lp = (CellLayout.LayoutParams) child.getLayoutParams();
+        CellLayoutLayoutParams lp = (CellLayoutLayoutParams) child.getLayoutParams();
         // While the folder is open, the position of the icon cannot change.
         lp.canReorder = false;
         if (mContainerType == HOTSEAT) {
             CellLayout cl = (CellLayout) getParent();
-            cl.setFolderLeaveBehindCell(lp.cellX, lp.cellY);
+            cl.setFolderLeaveBehindCell(lp.getCellX(), lp.getCellY());
         }
     }
 
     @Override
     public void clearFolderLeaveBehind(FolderIcon child) {
-        ((CellLayout.LayoutParams) child.getLayoutParams()).canReorder = true;
+        ((CellLayoutLayoutParams) child.getLayoutParams()).canReorder = true;
         if (mContainerType == HOTSEAT) {
             CellLayout cl = (CellLayout) getParent();
             cl.clearFolderLeaveBehind();
diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java
index 7b96838..709c57c 100644
--- a/src/com/android/launcher3/Utilities.java
+++ b/src/com/android/launcher3/Utilities.java
@@ -26,32 +26,24 @@
 import android.app.ActivityManager;
 import android.app.Person;
 import android.app.WallpaperManager;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
 import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
 import android.content.pm.LauncherActivityInfo;
 import android.content.pm.LauncherApps;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
 import android.content.pm.ShortcutInfo;
 import android.content.res.Configuration;
 import android.content.res.Resources;
-import android.database.ContentObserver;
 import android.graphics.Color;
 import android.graphics.ColorFilter;
 import android.graphics.LightingColorFilter;
 import android.graphics.Matrix;
 import android.graphics.Paint;
 import android.graphics.Point;
+import android.graphics.PointF;
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.graphics.drawable.AdaptiveIconDrawable;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
-import android.net.Uri;
 import android.os.Build;
 import android.os.Build.VERSION_CODES;
 import android.os.DeadObjectException;
@@ -71,25 +63,23 @@
 import android.view.View;
 import android.view.ViewConfiguration;
 import android.view.animation.Interpolator;
-import android.widget.LinearLayout;
 
 import androidx.annotation.ChecksSdkIntAtLeast;
+import androidx.annotation.IntDef;
 import androidx.annotation.NonNull;
 import androidx.core.graphics.ColorUtils;
 
 import com.android.launcher3.dragndrop.FolderAdaptiveIcon;
-import com.android.launcher3.graphics.GridCustomizationsProvider;
 import com.android.launcher3.graphics.TintedDrawableSpan;
 import com.android.launcher3.icons.ShortcutCachingLogic;
 import com.android.launcher3.icons.ThemedIconDrawable;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.ItemInfoWithIcon;
-import com.android.launcher3.model.data.SearchActionItemInfo;
 import com.android.launcher3.pm.ShortcutConfigActivityInfo;
 import com.android.launcher3.shortcuts.ShortcutKey;
 import com.android.launcher3.shortcuts.ShortcutRequest;
+import com.android.launcher3.testing.shared.ResourceUtils;
 import com.android.launcher3.util.IntArray;
-import com.android.launcher3.util.PackageManagerHelper;
 import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption;
 import com.android.launcher3.util.Themes;
 import com.android.launcher3.views.ActivityContext;
@@ -97,11 +87,9 @@
 import com.android.launcher3.widget.PendingAddShortcutInfo;
 
 import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
-import java.util.function.Consumer;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -115,8 +103,6 @@
     private static final Pattern sTrimPattern =
             Pattern.compile("^[\\s|\\p{javaSpaceChar}]*(.*)[\\s|\\p{javaSpaceChar}]*$");
 
-    private static final int[] sLoc0 = new int[2];
-    private static final int[] sLoc1 = new int[2];
     private static final Matrix sMatrix = new Matrix();
     private static final Matrix sInverseMatrix = new Matrix();
 
@@ -138,6 +124,9 @@
     @ChecksSdkIntAtLeast(api = VERSION_CODES.TIRAMISU, codename = "T")
     public static final boolean ATLEAST_T = Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU;
 
+    @ChecksSdkIntAtLeast(api = VERSION_CODES.UPSIDE_DOWN_CAKE, codename = "U")
+    public static final boolean ATLEAST_U = Build.VERSION.SDK_INT >= VERSION_CODES.UPSIDE_DOWN_CAKE;
+
     /**
      * Set on a motion event dispatched from the nav bar. See {@link MotionEvent#setEdgeFlags(int)}.
      */
@@ -146,10 +135,18 @@
     /**
      * Indicates if the device has a debug build. Should only be used to store additional info or
      * add extra logging and not for changing the app behavior.
+     * @deprecated Use {@link BuildConfig#IS_DEBUG_DEVICE} directly
      */
-    public static final boolean IS_DEBUG_DEVICE =
-            Build.TYPE.toLowerCase(Locale.ROOT).contains("debug") ||
-            Build.TYPE.toLowerCase(Locale.ROOT).equals("eng");
+    @Deprecated
+    public static final boolean IS_DEBUG_DEVICE = BuildConfig.IS_DEBUG_DEVICE;
+
+    public static final int TRANSLATE_UP = 0;
+    public static final int TRANSLATE_DOWN = 1;
+    public static final int TRANSLATE_LEFT = 2;
+    public static final int TRANSLATE_RIGHT = 3;
+
+    @IntDef({TRANSLATE_UP, TRANSLATE_DOWN, TRANSLATE_LEFT, TRANSLATE_RIGHT})
+    public @interface AdjustmentDirection{}
 
     /**
      * Returns true if theme is dark.
@@ -165,31 +162,20 @@
                         Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0;
     }
 
-    // An intent extra to indicate the horizontal scroll of the wallpaper.
-    public static final String EXTRA_WALLPAPER_OFFSET = "com.android.launcher3.WALLPAPER_OFFSET";
-    public static final String EXTRA_WALLPAPER_FLAVOR = "com.android.launcher3.WALLPAPER_FLAVOR";
+    private static boolean sIsRunningInTestHarness = ActivityManager.isRunningInTestHarness();
 
-    // An intent extra to indicate the launch source by launcher.
-    public static final String EXTRA_WALLPAPER_LAUNCH_SOURCE =
-            "com.android.wallpaper.LAUNCH_SOURCE";
-
-    public static boolean IS_RUNNING_IN_TEST_HARNESS =
-                    ActivityManager.isRunningInTestHarness();
+    public static boolean isRunningInTestHarness() {
+        return sIsRunningInTestHarness;
+    }
 
     public static void enableRunningInTestHarnessForTests() {
-        IS_RUNNING_IN_TEST_HARNESS = true;
+        sIsRunningInTestHarness = true;
     }
 
     public static boolean isPropertyEnabled(String propertyName) {
         return Log.isLoggable(propertyName, Log.VERBOSE);
     }
 
-    public static boolean existsStyleWallpapers(Context context) {
-        ResolveInfo ri = context.getPackageManager().resolveActivity(
-                PackageManagerHelper.getStyleWallpapersIntent(context), 0);
-        return ri != null;
-    }
-
     /**
      * Given a coordinate relative to the descendant, find the coordinate in a parent view's
      * coordinates.
@@ -303,9 +289,9 @@
      * Sets {@param out} to be same as {@param in} by rounding individual values
      */
     public static void roundArray(float[] in, int[] out) {
-       for (int i = 0; i < in.length; i++) {
-           out[i] = Math.round(in[i]);
-       }
+        for (int i = 0; i < in.length; i++) {
+            out[i] = Math.round(in[i]);
+        }
     }
 
     public static void offsetPoints(float[] points, float offsetX, float offsetY) {
@@ -326,40 +312,23 @@
                 localY < (v.getHeight() + slop);
     }
 
-    public static int[] getCenterDeltaInScreenSpace(View v0, View v1) {
-        v0.getLocationInWindow(sLoc0);
-        v1.getLocationInWindow(sLoc1);
-
-        sLoc0[0] += (v0.getMeasuredWidth() * v0.getScaleX()) / 2;
-        sLoc0[1] += (v0.getMeasuredHeight() * v0.getScaleY()) / 2;
-        sLoc1[0] += (v1.getMeasuredWidth() * v1.getScaleX()) / 2;
-        sLoc1[1] += (v1.getMeasuredHeight() * v1.getScaleY()) / 2;
-        return new int[] {sLoc1[0] - sLoc0[0], sLoc1[1] - sLoc0[1]};
+    public static void scaleRectFAboutCenter(RectF r, float scale) {
+        scaleRectFAboutCenter(r, scale, scale);
     }
 
     /**
-     * Helper method to set rectOut with rectFSrc.
+     * Similar to {@link #scaleRectAboutCenter(Rect, float)} except this allows different scales
+     * for X and Y
      */
-    public static void setRect(RectF rectFSrc, Rect rectOut) {
-        rectOut.left = (int) rectFSrc.left;
-        rectOut.top = (int) rectFSrc.top;
-        rectOut.right = (int) rectFSrc.right;
-        rectOut.bottom = (int) rectFSrc.bottom;
-    }
-
-    public static void scaleRectFAboutCenter(RectF r, float scale) {
-        scaleRectFAboutPivot(r, scale, r.centerX(), r.centerY());
-    }
-
-    public static void scaleRectFAboutPivot(RectF r, float scale, float px, float py) {
-        if (scale != 1.0f) {
-            r.offset(-px, -py);
-            r.left = r.left * scale;
-            r.top = r.top * scale ;
-            r.right = r.right * scale;
-            r.bottom = r.bottom * scale;
-            r.offset(px, py);
-        }
+    public static void scaleRectFAboutCenter(RectF r, float scaleX, float scaleY) {
+        float px = r.centerX();
+        float py = r.centerY();
+        r.offset(-px, -py);
+        r.left = r.left * scaleX;
+        r.top = r.top * scaleY;
+        r.right = r.right * scaleX;
+        r.bottom = r.bottom * scaleY;
+        r.offset(px, py);
     }
 
     public static void scaleRectAboutCenter(Rect r, float scale) {
@@ -367,27 +336,14 @@
             int cx = r.centerX();
             int cy = r.centerY();
             r.offset(-cx, -cy);
-            scaleRect(r, scale);
-            r.offset(cx, cy);
-        }
-    }
-
-    public static void scaleRect(Rect r, float scale) {
-        if (scale != 1.0f) {
             r.left = (int) (r.left * scale + 0.5f);
             r.top = (int) (r.top * scale + 0.5f);
             r.right = (int) (r.right * scale + 0.5f);
             r.bottom = (int) (r.bottom * scale + 0.5f);
+            r.offset(cx, cy);
         }
     }
 
-    public static void insetRect(Rect r, Rect insets) {
-        r.left = Math.min(r.right, r.left + insets.left);
-        r.top = Math.min(r.bottom, r.top + insets.top);
-        r.right = Math.max(r.left, r.right - insets.right);
-        r.bottom = Math.max(r.top, r.bottom - insets.bottom);
-    }
-
     public static float shrinkRect(Rect r, float scaleX, float scaleY) {
         float scale = Math.min(Math.min(scaleX, scaleY), 1.0f);
         if (scale < 1.0f) {
@@ -403,18 +359,18 @@
     }
 
     /**
-     * Similar to {@link #scaleRectAboutCenter(Rect, float)} except this allows different scales
-     * for X and Y
+     * Sets the x and y pivots for scaling from one Rect to another.
+     *
+     * @param src the source rectangle to scale from.
+     * @param dst the destination rectangle to scale to.
+     * @param outPivot the pivots set for scaling from src to dst.
      */
-    public static void scaleRectFAboutCenter(RectF r, float scaleX, float scaleY) {
-        float px = r.centerX();
-        float py = r.centerY();
-        r.offset(-px, -py);
-        r.left = r.left * scaleX;
-        r.top = r.top * scaleY;
-        r.right = r.right * scaleX;
-        r.bottom = r.bottom * scaleY;
-        r.offset(px, py);
+    public static void getPivotsForScalingRectToRect(Rect src, Rect dst, PointF outPivot) {
+        float pivotXPct = ((float) src.left - dst.left) / ((float) dst.width() - src.width());
+        outPivot.x = dst.left + dst.width() * pivotXPct;
+
+        float pivotYPct = ((float) src.top - dst.top) / ((float) dst.height() - src.height());
+        outPivot.y = dst.top + dst.height() * pivotYPct;
     }
 
     /**
@@ -452,30 +408,6 @@
     }
 
     /**
-     * Bounds parameter to the range [0, 1]
-     */
-    public static float saturate(float a) {
-        return boundToRange(a, 0, 1.0f);
-    }
-
-    /**
-     * Returns the compliment (1 - a) of the parameter.
-     */
-    public static float comp(float a) {
-        return 1 - a;
-    }
-
-    /**
-     * Returns the "probabilistic or" of a and b. (a + b - ab).
-     * Useful beyond probability, can be used to combine two unit progresses for example.
-     */
-    public static float or(float a, float b) {
-        float satA = saturate(a);
-        float satB = saturate(b);
-        return satA + satB - (satA * satB);
-    }
-
-    /**
      * Trims the string, removing all whitespace at the beginning and end of the string.
      * Non-breaking whitespaces are also removed.
      */
@@ -519,14 +451,19 @@
         return (int) (dp * Resources.getSystem().getDisplayMetrics().density);
     }
 
+    /** Converts a dp value to pixels for a certain density. */
+    public static int dpToPx(float dp, int densityDpi) {
+        float densityRatio = (float) densityDpi / DisplayMetrics.DENSITY_DEFAULT;
+        return (int) (dp * densityRatio);
+    }
 
     public static int pxFromSp(float size, DisplayMetrics metrics) {
         return pxFromSp(size, metrics, 1f);
     }
 
     public static int pxFromSp(float size, DisplayMetrics metrics, float scale) {
-        return Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,
-                size, metrics) * scale);
+        float value = scale * TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, size, metrics);
+        return ResourceUtils.roundPxValueFromFloat(value);
     }
 
     public static String createDbSelectionQuery(String columnName, IntArray values) {
@@ -552,18 +489,6 @@
     }
 
     /**
-     * Using the view's bounds and icon size, calculate where the icon bounds will
-     * be if it was positioned at the center of the view.
-     */
-    public static void setRectToViewCenter(View iconView, int iconSize, Rect outBounds) {
-        int top = (iconView.getHeight() - iconSize) / 2;
-        int left = (iconView.getWidth() - iconSize) / 2;
-        int right = left + iconSize;
-        int bottom = top + iconSize;
-        outBounds.set(left, top, right, bottom);
-    }
-
-    /**
      * Ensures that a value is within given bounds. Specifically:
      * If value is less than lowerBound, return lowerBound; else if value is greater than upperBound,
      * return upperBound; else return value unchanged.
@@ -587,15 +512,6 @@
     }
 
     /**
-     * Returns an intent for starting the default home activity
-     */
-    public static Intent createHomeIntent() {
-        return new Intent(Intent.ACTION_MAIN)
-                .addCategory(Intent.CATEGORY_HOME)
-                .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-    }
-
-    /**
      * Wraps a message with a TTS span, so that a different message is spoken than
      * what is getting displayed.
      * @param msg original message
@@ -622,18 +538,6 @@
         return spanned;
     }
 
-    public static SharedPreferences getPrefs(Context context) {
-        // Use application context for shared preferences, so that we use a single cached instance
-        return context.getApplicationContext().getSharedPreferences(
-                LauncherFiles.SHARED_PREFERENCES_KEY, Context.MODE_PRIVATE);
-    }
-
-    public static SharedPreferences getDevicePrefs(Context context) {
-        // Use application context for shared preferences, so that we use a single cached instance
-        return context.getApplicationContext().getSharedPreferences(
-                LauncherFiles.DEVICE_PREFERENCES_KEY, Context.MODE_PRIVATE);
-    }
-
     public static boolean isWallpaperSupported(Context context) {
         return context.getSystemService(WallpaperManager.class).isWallpaperSupported();
     }
@@ -647,42 +551,6 @@
                 || e.getCause() instanceof DeadObjectException;
     }
 
-    public static boolean isGridOptionsEnabled(Context context) {
-        return isComponentEnabled(context.getPackageManager(),
-                context.getPackageName(),
-                GridCustomizationsProvider.class.getName());
-    }
-
-    private static boolean isComponentEnabled(PackageManager pm, String pkgName, String clsName) {
-        ComponentName componentName = new ComponentName(pkgName, clsName);
-        int componentEnabledSetting = pm.getComponentEnabledSetting(componentName);
-
-        switch (componentEnabledSetting) {
-            case PackageManager.COMPONENT_ENABLED_STATE_DISABLED:
-                return false;
-            case PackageManager.COMPONENT_ENABLED_STATE_ENABLED:
-                return true;
-            case PackageManager.COMPONENT_ENABLED_STATE_DEFAULT:
-            default:
-                // We need to get the application info to get the component's default state
-                try {
-                    PackageInfo packageInfo = pm.getPackageInfo(pkgName,
-                            PackageManager.GET_PROVIDERS | PackageManager.GET_DISABLED_COMPONENTS);
-
-                    if (packageInfo.providers != null) {
-                        return Arrays.stream(packageInfo.providers).anyMatch(
-                                pi -> pi.name.equals(clsName) && pi.isEnabled());
-                    }
-
-                    // the component is not declared in the AndroidManifest
-                    return false;
-                } catch (PackageManager.NameNotFoundException e) {
-                    // the package isn't installed on the device
-                    return false;
-                }
-        }
-    }
-
     /**
      * Utility method to post a runnable on the handler, skipping the synchronization barriers.
      */
@@ -692,12 +560,6 @@
         handler.sendMessage(msg);
     }
 
-    public static void unregisterReceiverSafely(Context context, BroadcastReceiver receiver) {
-        try {
-            context.unregisterReceiver(receiver);
-        } catch (IllegalArgumentException e) {}
-    }
-
     /**
      * Returns the full drawable for info without any flattening or pre-processing.
      *
@@ -726,6 +588,12 @@
             int width, int height, Object[] outObj) {
         ActivityContext activity = ActivityContext.lookupContext(context);
         LauncherAppState appState = LauncherAppState.getInstance(context);
+        if (info instanceof PendingAddShortcutInfo) {
+            ShortcutConfigActivityInfo activityInfo =
+                    ((PendingAddShortcutInfo) info).getActivityInfo(context);
+            outObj[0] = activityInfo;
+            return activityInfo.getFullResIcon(appState.getIconCache());
+        }
         if (info.itemType == LauncherSettings.Favorites.ITEM_TYPE_APPLICATION) {
             LauncherActivityInfo activityInfo = context.getSystemService(LauncherApps.class)
                     .resolveActivity(info.getIntent(), info.user);
@@ -734,12 +602,6 @@
                     .getIconProvider().getIcon(
                             activityInfo, activity.getDeviceProfile().inv.fillResIconDpi);
         } else if (info.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
-            if (info instanceof PendingAddShortcutInfo) {
-                ShortcutConfigActivityInfo activityInfo =
-                        ((PendingAddShortcutInfo) info).activityInfo;
-                outObj[0] = activityInfo;
-                return activityInfo.getFullResIcon(appState.getIconCache());
-            }
             List<ShortcutInfo> si = ShortcutKey.fromItemInfo(info)
                     .buildRequest(context)
                     .query(ShortcutRequest.ALL);
@@ -759,8 +621,8 @@
             outObj[0] = icon;
             return icon;
         } else if (info.itemType == LauncherSettings.Favorites.ITEM_TYPE_SEARCH_ACTION
-                && info instanceof SearchActionItemInfo) {
-            return ((SearchActionItemInfo) info).bitmap.newIcon(context);
+                && info instanceof ItemInfoWithIcon) {
+            return ((ItemInfoWithIcon) info).bitmap.newIcon(context);
         } else {
             return null;
         }
@@ -795,14 +657,6 @@
         }
     }
 
-    /**
-     * @return true is the extra is either null or is of type {@param type}
-     */
-    public static boolean isValidExtraType(Intent intent, String key, Class type) {
-        Object extra = intent.getParcelableExtra(key);
-        return extra == null || type.isInstance(extra);
-    }
-
     public static float squaredHypot(float x, float y) {
         return x * x + y * y;
     }
@@ -813,28 +667,6 @@
     }
 
     /**
-     * Helper method to create a content provider
-     */
-    public static ContentObserver newContentObserver(Handler handler, Consumer<Uri> command) {
-        return new ContentObserver(handler) {
-            @Override
-            public void onChange(boolean selfChange, Uri uri) {
-                command.accept(uri);
-            }
-        };
-    }
-
-    /**
-     * Compares the ratio of two quantities and returns whether that ratio is greater than the
-     * provided bound. Order of quantities does not matter. Bound should be a decimal representation
-     * of a percentage.
-     */
-    public static boolean isRelativePercentDifferenceGreaterThan(float first, float second,
-            float bound) {
-        return (Math.abs(first - second) / Math.abs((first + second) / 2.0f)) > bound;
-    }
-
-    /**
      * Rotates `inOutBounds` by `delta` 90-degree increments. Rotation is visually CCW. Parent
      * sizes represent the "space" that will rotate carrying inOutBounds along with it to determine
      * the final bounds.
@@ -882,16 +714,6 @@
                 ColorUtils.blendARGB(0, color, tintAmount));
     }
 
-    /**
-     * Sets start margin on the provided {@param view} to be {@param margin}.
-     * Assumes {@param view} is a child of {@link LinearLayout}
-     */
-    public static void setStartMarginForView(View view, int margin) {
-        LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) view.getLayoutParams();
-        lp.setMarginStart(margin);
-        view.setLayoutParams(lp);
-    }
-
     public static Rect getViewBounds(@NonNull View v) {
         int[] pos = new int[2];
         v.getLocationOnScreen(pos);
@@ -900,36 +722,84 @@
 
     /**
      * Returns a list of screen-splitting options depending on the device orientation (split top for
-     * portrait, split left for landscape, split left and right for landscape tablets, etc.)
+     * portrait, split right for landscape)
      */
     public static List<SplitPositionOption> getSplitPositionOptions(
             DeviceProfile dp) {
-        List<SplitPositionOption> options = new ArrayList<>();
-        // Add both left and right options if we're in tablet mode
-        if (dp.isTablet && dp.isLandscape) {
-            options.add(new SplitPositionOption(
-                    R.drawable.ic_split_left, R.string.split_screen_position_left,
-                    STAGE_POSITION_TOP_OR_LEFT, STAGE_TYPE_MAIN));
-            options.add(new SplitPositionOption(
-                    R.drawable.ic_split_right, R.string.split_screen_position_right,
-                    STAGE_POSITION_BOTTOM_OR_RIGHT, STAGE_TYPE_MAIN));
-        } else {
-            if (dp.isSeascape()) {
-                // Add left/right options
-                options.add(new SplitPositionOption(
-                        R.drawable.ic_split_right, R.string.split_screen_position_right,
-                        STAGE_POSITION_BOTTOM_OR_RIGHT, STAGE_TYPE_MAIN));
-            } else if (dp.isLandscape) {
-                options.add(new SplitPositionOption(
-                        R.drawable.ic_split_left, R.string.split_screen_position_left,
-                        STAGE_POSITION_TOP_OR_LEFT, STAGE_TYPE_MAIN));
-            } else {
-                // Only add top option
-                options.add(new SplitPositionOption(
-                        R.drawable.ic_split_top, R.string.split_screen_position_top,
-                        STAGE_POSITION_TOP_OR_LEFT, STAGE_TYPE_MAIN));
-            }
+        return Collections.singletonList(new SplitPositionOption(
+                dp.isLandscape ? R.drawable.ic_split_horizontal : R.drawable.ic_split_vertical,
+                R.string.recent_task_option_split_screen,
+                dp.isLandscape ? STAGE_POSITION_BOTTOM_OR_RIGHT : STAGE_POSITION_TOP_OR_LEFT,
+                STAGE_TYPE_MAIN
+        ));
+    }
+
+    /** Logs the Scale and Translate properties of a matrix. Ignores skew and perspective. */
+    public static void logMatrix(String label, Matrix matrix) {
+        float[] matrixValues = new float[9];
+        matrix.getValues(matrixValues);
+        Log.d(label, String.format("%s: %s\nscale (x,y) = (%f, %f)\ntranslate (x,y) = (%f, %f)",
+                label, matrix, matrixValues[Matrix.MSCALE_X], matrixValues[Matrix.MSCALE_Y],
+                matrixValues[Matrix.MTRANS_X], matrixValues[Matrix.MTRANS_Y]
+        ));
+    }
+
+    /**
+     * Translates the {@code targetView} so that it overlaps with {@code exclusionBounds} as little
+     * as possible, while remaining within {@code inclusionBounds}.
+     * <p>
+     * {@code inclusionBounds} will always take precedence over {@code exclusionBounds}, so if
+     * {@code targetView} needs to be translated outside of {@code inclusionBounds} to fully fix an
+     * overlap with {@code exclusionBounds}, then {@code targetView} will only be translated up to
+     * the border of {@code inclusionBounds}.
+     * <p>
+     * Note: {@code targetViewBounds}, {@code inclusionBounds} and {@code exclusionBounds} must all
+     * be in relation to the same reference point on screen.
+     * <p>
+     * @param targetView the view being translated
+     * @param targetViewBounds the bounds of the {@code targetView}
+     * @param inclusionBounds the bounds the {@code targetView} absolutely must stay within
+     * @param exclusionBounds the bounds to try to move the {@code targetView} away from
+     * @param adjustmentDirection the translation direction that should be attempted to fix an
+     *                            overlap
+     */
+    public static void translateOverlappingView(
+            @NonNull View targetView,
+            @NonNull Rect targetViewBounds,
+            @NonNull Rect inclusionBounds,
+            @NonNull Rect exclusionBounds,
+            @AdjustmentDirection int adjustmentDirection) {
+        switch (adjustmentDirection) {
+            case TRANSLATE_RIGHT:
+                targetView.setTranslationX(Math.min(
+                        // Translate to the right if the view is overlapping on the left.
+                        Math.max(0, exclusionBounds.right - targetViewBounds.left),
+                        // Do not translate beyond the inclusion bounds.
+                        inclusionBounds.right - targetViewBounds.right));
+                break;
+            case TRANSLATE_LEFT:
+                targetView.setTranslationX(Math.max(
+                        // Translate to the left if the view is overlapping on the right.
+                        Math.min(0, exclusionBounds.left - targetViewBounds.right),
+                        // Do not translate beyond the inclusion bounds.
+                        inclusionBounds.left - targetViewBounds.left));
+                break;
+            case TRANSLATE_DOWN:
+                targetView.setTranslationY(Math.min(
+                        // Translate downwards if the view is overlapping on the top.
+                        Math.max(0, exclusionBounds.bottom - targetViewBounds.top),
+                        // Do not translate beyond the inclusion bounds.
+                        inclusionBounds.bottom - targetViewBounds.bottom));
+                break;
+            case TRANSLATE_UP:
+                targetView.setTranslationY(Math.max(
+                        // Translate upwards if the view is overlapping on the bottom.
+                        Math.min(0, exclusionBounds.top - targetViewBounds.bottom),
+                        // Do not translate beyond the inclusion bounds.
+                        inclusionBounds.top - targetViewBounds.top));
+                break;
+            default:
+                // No-Op
         }
-        return options;
     }
 }
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 4903d77..73bb828 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -19,18 +19,19 @@
 import static com.android.launcher3.LauncherAnimUtils.SPRING_LOADED_EXIT_DELAY;
 import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION;
 import static com.android.launcher3.LauncherState.ALL_APPS;
+import static com.android.launcher3.LauncherState.EDIT_MODE;
 import static com.android.launcher3.LauncherState.FLAG_MULTI_PAGE;
 import static com.android.launcher3.LauncherState.FLAG_WORKSPACE_ICONS_CAN_BE_DRAGGED;
 import static com.android.launcher3.LauncherState.FLAG_WORKSPACE_INACCESSIBLE;
 import static com.android.launcher3.LauncherState.HINT_STATE;
 import static com.android.launcher3.LauncherState.NORMAL;
 import static com.android.launcher3.LauncherState.SPRING_LOADED;
+import static com.android.launcher3.MotionEventsUtils.isTrackpadMultiFingerSwipe;
 import static com.android.launcher3.anim.AnimatorListeners.forSuccessCallback;
-import static com.android.launcher3.dragndrop.DragLayer.ALPHA_INDEX_OVERLAY;
+import static com.android.launcher3.config.FeatureFlags.FOLDABLE_SINGLE_PAGE;
 import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_HOME;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_SWIPELEFT;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_SWIPERIGHT;
-import static com.android.launcher3.testing.TestProtocol.BAD_STATE;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
@@ -45,6 +46,7 @@
 import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.Point;
+import android.graphics.PointF;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.os.Handler;
@@ -53,20 +55,25 @@
 import android.util.AttributeSet;
 import android.util.Log;
 import android.util.SparseArray;
+import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
-import android.view.ViewTreeObserver;
 import android.view.accessibility.AccessibilityNodeInfo;
+import android.widget.FrameLayout;
 import android.widget.Toast;
 
 import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
 
 import com.android.launcher3.accessibility.AccessibleDragListenerAdapter;
 import com.android.launcher3.accessibility.WorkspaceAccessibilityHelper;
 import com.android.launcher3.anim.Interpolators;
 import com.android.launcher3.anim.PendingAnimation;
+import com.android.launcher3.celllayout.CellLayoutLayoutParams;
+import com.android.launcher3.celllayout.CellPosMapper;
+import com.android.launcher3.celllayout.CellPosMapper.CellPos;
 import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.dot.FolderDotInfo;
 import com.android.launcher3.dragndrop.DragController;
@@ -106,9 +113,9 @@
 import com.android.launcher3.util.RunnableList;
 import com.android.launcher3.util.Thunk;
 import com.android.launcher3.util.WallpaperOffsetInterpolator;
-import com.android.launcher3.widget.LauncherAppWidgetHost;
-import com.android.launcher3.widget.LauncherAppWidgetHost.ProviderChangedListener;
 import com.android.launcher3.widget.LauncherAppWidgetHostView;
+import com.android.launcher3.widget.LauncherWidgetHolder;
+import com.android.launcher3.widget.LauncherWidgetHolder.ProviderChangedListener;
 import com.android.launcher3.widget.NavigableAppWidgetHostView;
 import com.android.launcher3.widget.PendingAddShortcutInfo;
 import com.android.launcher3.widget.PendingAddWidgetInfo;
@@ -117,6 +124,7 @@
 import com.android.launcher3.widget.dragndrop.AppWidgetHostViewDragListener;
 import com.android.launcher3.widget.util.WidgetSizes;
 import com.android.systemui.plugins.shared.LauncherOverlayManager.LauncherOverlay;
+import com.android.systemui.plugins.shared.LauncherOverlayManager.LauncherOverlayCallbacks;
 
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -129,19 +137,24 @@
  * The workspace is a wide area with a wallpaper and a finite number of pages.
  * Each page contains a number of icons, folders or widgets the user can
  * interact with. A workspace is meant to be used with a fixed width only.
+ *
  * @param <T> Class that extends View and PageIndicator
  */
 public class Workspace<T extends View & PageIndicator> extends PagedView<T>
         implements DropTarget, DragSource, View.OnTouchListener,
         DragController.DragListener, Insettable, StateHandler<LauncherState>,
-        WorkspaceLayoutManager, LauncherBindableItemsContainer {
+        WorkspaceLayoutManager, LauncherBindableItemsContainer, LauncherOverlayCallbacks {
 
-    /** The value that {@link #mTransitionProgress} must be greater than for
-     * {@link #transitionStateShouldAllowDrop()} to return true. */
+    /**
+     * The value that {@link #mTransitionProgress} must be greater than for
+     * {@link #transitionStateShouldAllowDrop()} to return true.
+     */
     private static final float ALLOW_DROP_TRANSITION_PROGRESS = 0.25f;
 
-    /** The value that {@link #mTransitionProgress} must be greater than for
-     * {@link #isFinishedSwitchingState()} ()} to return true. */
+    /**
+     * The value that {@link #mTransitionProgress} must be greater than for
+     * {@link #isFinishedSwitchingState()} ()} to return true.
+     */
     private static final float FINISHED_SWITCHING_STATE_TRANSITION_PROGRESS = 0.5f;
 
     private static final float SIGNIFICANT_MOVE_SCREEN_WIDTH_PERCENTAGE = 0.15f;
@@ -152,36 +165,42 @@
 
     public static final int DEFAULT_PAGE = 0;
 
-    private static final int DEFAULT_SMARTSPACE_HEIGHT = 1;
-
-    private static final int EXPANDED_SMARTSPACE_HEIGHT = 2;
+    private final int mAllAppsIconSize;
 
     private LayoutTransition mLayoutTransition;
-    @Thunk final WallpaperManager mWallpaperManager;
+    @Thunk
+    final WallpaperManager mWallpaperManager;
 
-    private ShortcutAndWidgetContainer mDragSourceInternal;
+    protected ShortcutAndWidgetContainer mDragSourceInternal;
 
-    @Thunk final IntSparseArrayMap<CellLayout> mWorkspaceScreens = new IntSparseArrayMap<>();
-    @Thunk final IntArray mScreenOrder = new IntArray();
+    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
+    @Thunk
+    public final IntSparseArrayMap<CellLayout> mWorkspaceScreens = new IntSparseArrayMap<>();
 
-    @Thunk boolean mDeferRemoveExtraEmptyScreen = false;
+    @Thunk
+    final IntArray mScreenOrder = new IntArray();
+
+    @Thunk
+    boolean mDeferRemoveExtraEmptyScreen = false;
 
     /**
      * CellInfo for the cell that is currently being dragged
      */
-    private CellLayout.CellInfo mDragInfo;
+    protected CellLayout.CellInfo mDragInfo;
 
     /**
      * Target drop area calculated during last acceptDrop call.
      */
-    @Thunk int[] mTargetCell = new int[2];
+    @Thunk
+    int[] mTargetCell = new int[2];
     private int mDragOverX = -1;
     private int mDragOverY = -1;
 
     /**
      * The CellLayout that is currently being dragged over
      */
-    @Thunk CellLayout mDragTargetLayout = null;
+    @Thunk
+    CellLayout mDragTargetLayout = null;
     /**
      * The CellLayout that we will show as highlighted
      */
@@ -192,13 +211,16 @@
      */
     private CellLayout mDropToLayout = null;
 
-    @Thunk final Launcher mLauncher;
-    @Thunk DragController mDragController;
+    @Thunk
+    final Launcher mLauncher;
+    @Thunk
+    DragController mDragController;
 
-    private final int[] mTempXY = new int[2];
+    protected final int[] mTempXY = new int[2];
     private final float[] mTempFXY = new float[2];
     private final Rect mTempRect = new Rect();
-    @Thunk float[] mDragViewVisualCenter = new float[2];
+    @Thunk
+    float[] mDragViewVisualCenter = new float[2];
 
     private SpringLoadedDragController mSpringLoadedDragController;
 
@@ -214,7 +236,7 @@
     private boolean mUnlockWallpaperFromDefaultPageOnLayout;
 
     public static final int REORDER_TIMEOUT = 650;
-    private final Alarm mReorderAlarm = new Alarm();
+    protected final Alarm mReorderAlarm = new Alarm();
     private PreviewBackground mFolderCreateBg;
     private FolderIcon mDragOverFolderIcon = null;
     private boolean mCreateUserFolderOnDrop = false;
@@ -223,8 +245,8 @@
     // Variables relating to touch disambiguation (scrolling workspace vs. scrolling a widget)
     private float mXDown;
     private float mYDown;
-    private View mQsb;
-    private boolean mIsEventOverQsb;
+    private View mFirstPagePinnedItem;
+    private boolean mIsEventOverFirstPagePinnedItem;
 
     final static float START_DAMPING_TOUCH_SLOP_ANGLE = (float) Math.PI / 6;
     final static float MAX_SWIPE_ANGLE = (float) Math.PI / 3;
@@ -242,9 +264,11 @@
     private static final int DRAG_MODE_CREATE_FOLDER = 1;
     private static final int DRAG_MODE_ADD_TO_FOLDER = 2;
     private static final int DRAG_MODE_REORDER = 3;
-    private int mDragMode = DRAG_MODE_NONE;
-    @Thunk int mLastReorderX = -1;
-    @Thunk int mLastReorderY = -1;
+    protected int mDragMode = DRAG_MODE_NONE;
+    @Thunk
+    int mLastReorderX = -1;
+    @Thunk
+    int mLastReorderY = -1;
 
     private SparseArray<Parcelable> mSavedStates;
     private final IntArray mRestoredPages = new IntArray();
@@ -254,14 +278,12 @@
 
     // State related to Launcher Overlay
     private OverlayEdgeEffect mOverlayEdgeEffect;
-    boolean mOverlayShown = false;
-    private Runnable mOnOverlayHiddenCallback;
+    private boolean mOverlayShown = false;
+    private float mOverlayProgress; // 1 -> overlay completely visible, 0 -> home visible
+    private final List<LauncherOverlayCallbacks> mOverlayCallbacks = new ArrayList<>();
 
     private boolean mForceDrawAdjacentPages = false;
 
-    // Total over scrollX in the overlay direction.
-    private float mOverlayTranslation;
-
     // Handles workspace state transitions
     private final WorkspaceStateTransitionAnimation mStateTransitionAnimation;
 
@@ -271,7 +293,7 @@
      * Used to inflate the Workspace from XML.
      *
      * @param context The application's context.
-     * @param attrs The attributes set containing the Workspace's customization values.
+     * @param attrs   The attributes set containing the Workspace's customization values.
      */
     public Workspace(Context context, AttributeSet attrs) {
         this(context, attrs, 0);
@@ -280,8 +302,8 @@
     /**
      * Used to inflate the Workspace from XML.
      *
-     * @param context The application's context.
-     * @param attrs The attributes set containing the Workspace's customization values.
+     * @param context  The application's context.
+     * @param attrs    The attributes set containing the Workspace's customization values.
      * @param defStyle Unused.
      */
     public Workspace(Context context, AttributeSet attrs, int defStyle) {
@@ -290,7 +312,7 @@
         mLauncher = Launcher.getLauncher(context);
         mStateTransitionAnimation = new WorkspaceStateTransitionAnimation(mLauncher, this);
         mWallpaperManager = WallpaperManager.getInstance(context);
-
+        mAllAppsIconSize = mLauncher.getDeviceProfile().allAppsIconSizePx;
         mWallpaperOffset = new WallpaperOffsetInterpolator(this);
 
         setHapticFeedbackEnabled(false);
@@ -326,6 +348,26 @@
 
         updateCellLayoutPadding();
         updateWorkspaceWidgetsSizes();
+        setPageIndicatorInset();
+    }
+
+    private void setPageIndicatorInset() {
+        DeviceProfile grid = mLauncher.getDeviceProfile();
+
+        FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mPageIndicator.getLayoutParams();
+
+        // Set insets for page indicator
+        Rect padding = grid.workspacePadding;
+        if (grid.isVerticalBarLayout()) {
+            lp.leftMargin = padding.left + grid.workspaceCellPaddingXPx;
+            lp.rightMargin = padding.right + grid.workspaceCellPaddingXPx;
+            lp.bottomMargin = padding.bottom;
+        } else {
+            lp.leftMargin = lp.rightMargin = 0;
+            lp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM;
+            lp.bottomMargin = grid.hotseatBarSizePx;
+        }
+        mPageIndicator.setLayoutParams(lp);
     }
 
     private void updateCellLayoutPadding() {
@@ -370,7 +412,8 @@
             float scale = 1;
             if (isWidget) {
                 DeviceProfile profile = mLauncher.getDeviceProfile();
-                scale = Utilities.shrinkRect(r, profile.appWidgetScale.x, profile.appWidgetScale.y);
+                final PointF appWidgetScale = profile.getAppWidgetScale(null);
+                scale = Utilities.shrinkRect(r, appWidgetScale.x, appWidgetScale.y);
             }
             size[0] = r.width();
             size[1] = r.height();
@@ -396,7 +439,9 @@
         return mWallpaperOffset.wallpaperOffsetForScroll(pageScroll);
     }
 
-    /** Returns the number of pages used for the wallpaper parallax. */
+    /**
+     * Returns the number of pages used for the wallpaper parallax.
+     */
     public int getNumPagesForWallpaperParallax() {
         return mWallpaperOffset.getNumPagesForWallpaperParallax();
     }
@@ -450,15 +495,16 @@
             }
         }
 
-        // Always enter the spring loaded mode
-        mLauncher.getStateManager().goToState(SPRING_LOADED);
+        if (!mLauncher.isInState(EDIT_MODE)) {
+            mLauncher.getStateManager().goToState(SPRING_LOADED);
+        }
         mStatsLogManager.logger().withItemInfo(dragObject.dragInfo)
                 .withInstanceId(dragObject.logInstanceId)
                 .log(LauncherEvent.LAUNCHER_ITEM_DRAG_STARTED);
     }
 
     private boolean isTwoPanelEnabled() {
-        return mLauncher.mDeviceProfile.isTwoPanels;
+        return !FOLDABLE_SINGLE_PAGE.get() && mLauncher.mDeviceProfile.isTwoPanels;
     }
 
     @Override
@@ -528,6 +574,7 @@
     void enableLayoutTransitions() {
         setLayoutTransition(mLayoutTransition);
     }
+
     void disableLayoutTransitions() {
         setLayoutTransition(null);
     }
@@ -553,22 +600,22 @@
 
         // Add the first page
         CellLayout firstPage = insertNewWorkspaceScreen(Workspace.FIRST_SCREEN_ID, getChildCount());
-        // Always add a QSB on the first screen.
-        if (mQsb == null) {
-            // In transposed layout, we add the QSB in the Grid. As workspace does not touch the
-            // edges, we do not need a full width QSB.
-            mQsb = LayoutInflater.from(getContext())
+        // Always add a first page pinned widget on the first screen.
+        if (mFirstPagePinnedItem == null) {
+            // In transposed layout, we add the first page pinned widget in the Grid.
+            // As workspace does not touch the edges, we do not need a full
+            // width first page pinned widget.
+            mFirstPagePinnedItem = LayoutInflater.from(getContext())
                     .inflate(R.layout.search_container_workspace, firstPage, false);
         }
 
-        int cellVSpan = FeatureFlags.EXPANDED_SMARTSPACE.get()
-                ? EXPANDED_SMARTSPACE_HEIGHT : DEFAULT_SMARTSPACE_HEIGHT;
         int cellHSpan = mLauncher.getDeviceProfile().inv.numSearchContainerColumns;
-        CellLayout.LayoutParams lp = new CellLayout.LayoutParams(0, 0, cellHSpan, cellVSpan);
+        CellLayoutLayoutParams lp = new CellLayoutLayoutParams(0, 0, cellHSpan, 1);
         lp.canReorder = false;
-        if (!firstPage.addViewToCellLayout(mQsb, 0, R.id.search_container_workspace, lp, true)) {
+        if (!firstPage.addViewToCellLayout(
+                mFirstPagePinnedItem, 0, R.id.search_container_workspace, lp, true)) {
             Log.e(TAG, "Failed to add to item at (0, 0) to CellLayout");
-            mQsb = null;
+            mFirstPagePinnedItem = null;
         }
     }
 
@@ -577,9 +624,9 @@
         // transition animations competing with us changing the scroll when we add pages
         disableLayoutTransitions();
 
-        // Recycle the QSB widget
-        if (mQsb != null) {
-            ((ViewGroup) mQsb.getParent()).removeView(mQsb);
+        // Recycle the first page pinned widget
+        if (mFirstPagePinnedItem != null) {
+            ((ViewGroup) mFirstPagePinnedItem.getParent()).removeView(mFirstPagePinnedItem);
         }
 
         // Remove the pages and clear the screen models
@@ -619,8 +666,15 @@
 
         // Inflate the cell layout, but do not add it automatically so that we can get the newly
         // created CellLayout.
-        CellLayout newScreen = (CellLayout) LayoutInflater.from(getContext()).inflate(
-                        R.layout.workspace_screen, this, false /* attachToRoot */);
+        DeviceProfile dp = mLauncher.getDeviceProfile();
+        CellLayout newScreen;
+        if (FOLDABLE_SINGLE_PAGE.get() && dp.isTwoPanels) {
+            newScreen = (CellLayout) LayoutInflater.from(getContext()).inflate(
+                    R.layout.workspace_screen_foldable, this, false /* attachToRoot */);
+        } else {
+            newScreen = (CellLayout) LayoutInflater.from(getContext()).inflate(
+                    R.layout.workspace_screen, this, false /* attachToRoot */);
+        }
 
         mWorkspaceScreens.put(screenId, newScreen);
         mScreenOrder.add(insertIndex, screenId);
@@ -642,7 +696,8 @@
 
             // If the icon was dragged from Hotseat, there is no page pair
             if (isTwoPanelEnabled() && !(mDragSourceInternal.getParent() instanceof Hotseat)) {
-                int pagePairScreenId = getScreenPair(dragObject.dragInfo.screenId);
+                int pagePairScreenId = getScreenPair(getCellPosMapper().mapModelToPresenter(
+                        dragObject.dragInfo).screenId);
                 CellLayout pagePair = mWorkspaceScreens.get(pagePairScreenId);
                 dragSourceChildCount += pagePair.getShortcutsAndWidgets().getChildCount();
             }
@@ -658,7 +713,7 @@
                 lastChildOnScreen = true;
             }
             CellLayout cl = (CellLayout) mDragSourceInternal.getParent();
-            if (getLeftmostVisiblePageForIndex(indexOfChild(cl))
+            if (!FOLDABLE_SINGLE_PAGE.get() && getLeftmostVisiblePageForIndex(indexOfChild(cl))
                     == getLeftmostVisiblePageForIndex(getPageCount() - 1)) {
                 childOnFinalScreen = true;
             }
@@ -757,17 +812,17 @@
      * Empty page(s) from the end of mWorkspaceScreens will always be removed. The pages with
      * ID = Workspace.EXTRA_EMPTY_SCREEN_IDS will be removed if there are other non-empty pages.
      * If there are no more non-empty pages left, extra empty page(s) will either stay or get added.
-     *
+     * <p>
      * If stripEmptyScreens is true, all empty pages (not just the ones on the end) will be removed
      * from the Workspace, and if there are no more pages left then extra empty page(s) will be
      * added.
-     *
+     * <p>
      * The number of extra empty pages is equal to what getPanelCount() returns.
-     *
+     * <p>
      * After the method returns the possible pages are:
      * stripEmptyScreens = true : [non-empty pages, extra empty page(s) alone]
      * stripEmptyScreens = false : [non-empty pages, empty pages (not in the end),
-     *                             extra empty page(s) alone]
+     * extra empty page(s) alone]
      */
     public void removeExtraEmptyScreenDelayed(
             int delay, boolean stripEmptyScreens, Runnable onComplete) {
@@ -818,11 +873,11 @@
     }
 
     /**
-     *  Commits the extra empty pages then returns the screen ids of those new screens.
-     *  Usually there's only one extra empty screen, but when two panel home is enabled we commit
-     *  two extra screens.
-     *
-     *  Returns an empty IntSet in case we cannot commit any new screens.
+     * Commits the extra empty pages then returns the screen ids of those new screens.
+     * Usually there's only one extra empty screen, but when two panel home is enabled we commit
+     * two extra screens.
+     * <p>
+     * Returns an empty IntSet in case we cannot commit any new screens.
      */
     public IntSet commitExtraEmptyScreens() {
         if (mLauncher.isWorkspaceLoading()) {
@@ -843,7 +898,7 @@
         mScreenOrder.removeValue(emptyScreenId);
 
         int newScreenId = LauncherSettings.Settings.call(getContext().getContentResolver(),
-                LauncherSettings.Settings.METHOD_NEW_SCREEN_ID)
+                        LauncherSettings.Settings.METHOD_NEW_SCREEN_ID)
                 .getInt(LauncherSettings.Settings.EXTRA_VALUE);
         // Launcher database isn't aware of empty pages that are already bound, so we need to
         // skip those IDs manually.
@@ -1009,6 +1064,29 @@
     }
 
     /**
+     * Needed here because launcher has a fullscreen exclusion rect and doesn't pilfer the pointers.
+     */
+    @Override
+    public boolean onInterceptTouchEvent(MotionEvent ev) {
+        if (isTrackpadMultiFingerSwipe(ev)) {
+            return false;
+        }
+        return super.onInterceptTouchEvent(ev);
+    }
+
+    /**
+     * Needed here because launcher has a fullscreen exclusion rect and doesn't pilfer the pointers.
+     */
+    @SuppressLint("ClickableViewAccessibility")
+    @Override
+    public boolean onTouchEvent(MotionEvent ev) {
+        if (isTrackpadMultiFingerSwipe(ev)) {
+            return false;
+        }
+        return super.onTouchEvent(ev);
+    }
+
+    /**
      * Called directly from a CellLayout (not by the framework), after we've been added as a
      * listener via setOnInterceptTouchEventListener(). This allows us to tell the CellLayout
      * that it should intercept touch events, which is not something that is normally supported.
@@ -1028,8 +1106,10 @@
         return mIsSwitchingState;
     }
 
-    /** This differs from isSwitchingState in that we take into account how far the transition
-     *  has completed. */
+    /**
+     * This differs from isSwitchingState in that we take into account how far the transition
+     * has completed.
+     */
     public boolean isFinishedSwitchingState() {
         return !mIsSwitchingState
                 || (mTransitionProgress > FINISHED_SWITCHING_STATE_TRANSITION_PROGRESS);
@@ -1050,20 +1130,23 @@
 
         mXDown = ev.getX();
         mYDown = ev.getY();
-        if (mQsb != null) {
-            mTempFXY[0] = mXDown + getScrollX();
-            mTempFXY[1] = mYDown + getScrollY();
-            Utilities.mapCoordInSelfToDescendant(mQsb, this, mTempFXY);
-            mIsEventOverQsb = mQsb.getLeft() <= mTempFXY[0] && mQsb.getRight() >= mTempFXY[0]
-                    && mQsb.getTop() <= mTempFXY[1] && mQsb.getBottom() >= mTempFXY[1];
+        if (mFirstPagePinnedItem != null) {
+            final float[] tempFXY = new float[2];
+            tempFXY[0] = mXDown;
+            tempFXY[1] = mYDown;
+            Utilities.mapCoordInSelfToDescendant(mFirstPagePinnedItem, this, tempFXY);
+            mIsEventOverFirstPagePinnedItem = mFirstPagePinnedItem.getLeft() <= tempFXY[0]
+                    && mFirstPagePinnedItem.getRight() >= tempFXY[0]
+                    && mFirstPagePinnedItem.getTop() <= tempFXY[1]
+                    && mFirstPagePinnedItem.getBottom() >= tempFXY[1];
         } else {
-            mIsEventOverQsb = false;
+            mIsEventOverFirstPagePinnedItem = false;
         }
     }
 
     @Override
     protected void determineScrollingStart(MotionEvent ev) {
-        if (!isFinishedSwitchingState() || mIsEventOverQsb) return;
+        if (!isFinishedSwitchingState() || mIsEventOverFirstPagePinnedItem) return;
 
         float deltaX = ev.getX() - mXDown;
         float absDeltaX = Math.abs(deltaX);
@@ -1124,9 +1207,15 @@
     }
 
     public void setLauncherOverlay(LauncherOverlay overlay) {
-        mOverlayEdgeEffect = overlay == null ? null : new OverlayEdgeEffect(getContext(), overlay);
-        EdgeEffectCompat newEffect = overlay == null
-                ? new EdgeEffectCompat(getContext()) : mOverlayEdgeEffect;
+        final EdgeEffectCompat newEffect;
+        if (overlay == null) {
+            newEffect = new EdgeEffectCompat(getContext());
+            mOverlayEdgeEffect = null;
+        } else {
+            newEffect = mOverlayEdgeEffect = new OverlayEdgeEffect(getContext(), overlay);
+            overlay.setOverlayCallbacks(this);
+        }
+
         if (mIsRtl) {
             mEdgeGlowRight = newEffect;
         } else {
@@ -1176,133 +1265,46 @@
     @Override
     protected boolean shouldFlingForVelocity(int velocityX) {
         // When the overlay is moving, the fling or settle transition is controlled by the overlay.
-        return Float.compare(Math.abs(mOverlayTranslation), 0) == 0 &&
-                super.shouldFlingForVelocity(velocityX);
+        return Float.compare(Math.abs(mOverlayProgress), 0) == 0
+                && super.shouldFlingForVelocity(velocityX);
     }
 
     /**
      * The overlay scroll is being controlled locally, just update our overlay effect
      */
+    @Override
     public void onOverlayScrollChanged(float scroll) {
-        if (Float.compare(scroll, 1f) == 0) {
+        mOverlayProgress = Utilities.boundToRange(scroll, 0, 1);
+        if (Float.compare(mOverlayProgress, 1f) == 0) {
             if (!mOverlayShown) {
-                mLauncher.getStatsLogManager().logger()
-                        .withSrcState(LAUNCHER_STATE_HOME)
-                        .withDstState(LAUNCHER_STATE_HOME)
-                        .withContainerInfo(LauncherAtom.ContainerInfo.newBuilder()
-                                .setWorkspace(
-                                        LauncherAtom.WorkspaceContainer.newBuilder()
-                                                .setPageIndex(0))
-                                .build())
-                        .log(LAUNCHER_SWIPELEFT);
+                mOverlayShown = true;
+                mLauncher.onOverlayVisibilityChanged(true);
             }
-            mOverlayShown = true;
-
-            // Let the Launcher activity know that the overlay is now visible.
-            mLauncher.onOverlayVisibilityChanged(mOverlayShown);
-
-            // Not announcing the overlay page for accessibility since it announces itself.
-        } else if (Float.compare(scroll, 0f) == 0) {
+        } else if (Float.compare(mOverlayProgress, 0f) == 0) {
             if (mOverlayShown) {
-                // TODO: this is logged unnecessarily on home gesture.
-                mLauncher.getStatsLogManager().logger()
-                        .withSrcState(LAUNCHER_STATE_HOME)
-                        .withDstState(LAUNCHER_STATE_HOME)
-                        .withContainerInfo(LauncherAtom.ContainerInfo.newBuilder()
-                                .setWorkspace(
-                                        LauncherAtom.WorkspaceContainer.newBuilder()
-                                                .setPageIndex(-1))
-                                .build())
-                        .log(LAUNCHER_SWIPERIGHT);
-            } else if (Float.compare(mOverlayTranslation, 0f) != 0) {
-                // When arriving to 0 overscroll from non-zero overscroll, announce page for
-                // accessibility since default announcements were disabled while in overscroll
-                // state.
-                // Not doing this if mOverlayShown because in that case the accessibility service
-                // will announce the launcher window description upon regaining focus after
-                // switching from the overlay screen.
-                announcePageForAccessibility();
+                mOverlayShown = false;
+                mLauncher.onOverlayVisibilityChanged(false);
             }
-            mOverlayShown = false;
-
-            // Let the Launcher activity know that the overlay is no longer visible.
-            mLauncher.onOverlayVisibilityChanged(mOverlayShown);
-
-            tryRunOverlayCallback();
         }
-
-        float offset = 0f;
-
-        scroll = Math.max(scroll - offset, 0);
-        scroll = Math.min(1, scroll / (1 - offset));
-
-        float alpha = 1 - Interpolators.DEACCEL_3.getInterpolation(scroll);
-        float transX = mLauncher.getDragLayer().getMeasuredWidth() * scroll;
-
-        if (mIsRtl) {
-            transX = -transX;
+        int count = mOverlayCallbacks.size();
+        for (int i = 0; i < count; i++) {
+            mOverlayCallbacks.get(i).onOverlayScrollChanged(mOverlayProgress);
         }
-        mOverlayTranslation = transX;
-
-        // TODO(adamcohen): figure out a final effect here. We may need to recommend
-        // different effects based on device performance. On at least one relatively high-end
-        // device I've tried, translating the launcher causes things to get quite laggy.
-        mLauncher.getDragLayer().setTranslationX(transX);
-        Log.d(BAD_STATE, "Workspace onOverlayScrollChanged DragLayer ALPHA_INDEX_OVERLAY=" + alpha);
-        mLauncher.getDragLayer().getAlphaProperty(ALPHA_INDEX_OVERLAY).setValue(alpha);
     }
 
     /**
-     * @return false if the callback is still pending
+     * Adds a callback for receiving overlay progress
      */
-    private boolean tryRunOverlayCallback() {
-        if (mOnOverlayHiddenCallback == null) {
-            // Return true as no callback is pending. This is used by OnWindowFocusChangeListener
-            // to remove itself if multiple focus handles were added.
-            return true;
-        }
-        if (mOverlayShown || !hasWindowFocus()) {
-            return false;
-        }
-
-        mOnOverlayHiddenCallback.run();
-        mOnOverlayHiddenCallback = null;
-        return true;
+    public void addOverlayCallback(LauncherOverlayCallbacks callback) {
+        mOverlayCallbacks.add(callback);
+        callback.onOverlayScrollChanged(mOverlayProgress);
     }
 
     /**
-     * Runs the given callback when the minus one overlay is hidden. Specifically, it is run
-     * when launcher's window has focus and the overlay is no longer being shown. If a callback
-     * is already present, the new callback will chain off it so both are run.
-     *
-     * @return Whether the callback was deferred.
+     * Removes a previously added overlay progress callback
      */
-    public boolean runOnOverlayHidden(Runnable callback) {
-        if (mOnOverlayHiddenCallback == null) {
-            mOnOverlayHiddenCallback = callback;
-        } else {
-            // Chain the new callback onto the previous callback(s).
-            Runnable oldCallback = mOnOverlayHiddenCallback;
-            mOnOverlayHiddenCallback = () -> {
-                oldCallback.run();
-                callback.run();
-            };
-        }
-        if (!tryRunOverlayCallback()) {
-            ViewTreeObserver observer = getViewTreeObserver();
-            if (observer != null && observer.isAlive()) {
-                observer.addOnWindowFocusChangeListener(
-                        new ViewTreeObserver.OnWindowFocusChangeListener() {
-                            @Override
-                            public void onWindowFocusChanged(boolean hasFocus) {
-                                if (tryRunOverlayCallback() && observer.isAlive()) {
-                                    observer.removeOnWindowFocusChangeListener(this);
-                                }
-                            }});
-            }
-            return true;
-        }
-        return false;
+    public void removeOverlayCallback(LauncherOverlayCallbacks callback) {
+        mOverlayCallbacks.remove(callback);
     }
 
     @Override
@@ -1432,10 +1434,13 @@
     }
 
     private boolean workspaceInScrollableState() {
-        return mLauncher.isInState(SPRING_LOADED) || !workspaceInModalState();
+        return mLauncher.isInState(SPRING_LOADED) || mLauncher.isInState(EDIT_MODE)
+                || !workspaceInModalState();
     }
 
-    /** Returns whether a drag should be allowed to be started from the current workspace state. */
+    /**
+     * Returns whether a drag should be allowed to be started from the current workspace state.
+     */
     public boolean workspaceIconsCanBeDragged() {
         return mLauncher.getStateManager().getState().hasFlag(FLAG_WORKSPACE_ICONS_CAN_BE_DRAGGED);
     }
@@ -1467,7 +1472,7 @@
                 // In overview mode, make sure that the two side pages are visible.
                 leftScreen = Utilities.boundToRange(getCurrentPage() - 1, 0, rightScreen);
                 rightScreen = Utilities.boundToRange(getCurrentPage() + 1,
-                    leftScreen, getPageCount() - 1);
+                        leftScreen, getPageCount() - 1);
             }
 
             if (leftScreen == rightScreen) {
@@ -1524,6 +1529,7 @@
     @Override
     public void setState(LauncherState toState) {
         onStartStateTransition();
+        mLauncher.getStateManager().getState().onLeavingState(mLauncher, toState);
         mStateTransitionAnimation.setState(toState);
         onEndStateTransition();
     }
@@ -1535,6 +1541,7 @@
     public void setStateWithAnimation(
             LauncherState toState, StateAnimationConfig config, PendingAnimation animation) {
         StateTransitionListener listener = new StateTransitionListener();
+        mLauncher.getStateManager().getState().onLeavingState(mLauncher, toState);
         mStateTransitionAnimation.setStateWithAnimation(toState, config, animation);
 
         // Invalidate the pages now, so that we have the visible pages before the
@@ -1659,17 +1666,14 @@
             scale = previewProvider.getScaleAndPosition(contentView, mTempXY);
         }
 
-        int halfPadding = previewProvider.previewPadding / 2;
         int dragLayerX = mTempXY[0];
         int dragLayerY = mTempXY[1];
 
-        Point dragVisualizeOffset = null;
         Rect dragRect = new Rect();
 
         if (draggableView != null) {
             draggableView.getSourceVisualDragBounds(dragRect);
             dragLayerY += dragRect.top;
-            dragVisualizeOffset = new Point(- halfPadding, halfPadding);
         }
 
 
@@ -1677,8 +1681,23 @@
             mDragSourceInternal = (ShortcutAndWidgetContainer) child.getParent();
         }
 
-        if (child instanceof BubbleTextView && !dragOptions.isAccessibleDrag) {
-            dragOptions.preDragCondition = ((BubbleTextView) child).startLongPressAction();
+        if (child instanceof BubbleTextView) {
+            BubbleTextView btv = (BubbleTextView) child;
+            if (!dragOptions.isAccessibleDrag) {
+                dragOptions.preDragCondition = btv.startLongPressAction();
+            }
+            if (btv.isDisplaySearchResult()) {
+                dragOptions.preDragEndScale = (float) mAllAppsIconSize / btv.getIconSize();
+            }
+        }
+
+        if (dragOptions.preDragCondition != null) {
+            int xDragOffSet = dragOptions.preDragCondition.getDragOffset().x;
+            int yDragOffSet = dragOptions.preDragCondition.getDragOffset().y;
+            if (xDragOffSet != 0 || yDragOffSet != 0) {
+                dragLayerX += xDragOffSet;
+                dragLayerY += yDragOffSet;
+            }
         }
 
         final DragView dv;
@@ -1693,7 +1712,6 @@
                     dragLayerY,
                     source,
                     dragObject,
-                    dragVisualizeOffset,
                     dragRect,
                     scale * iconScale,
                     scale,
@@ -1706,7 +1724,6 @@
                     dragLayerY,
                     source,
                     dragObject,
-                    dragVisualizeOffset,
                     dragRect,
                     scale * iconScale,
                     scale,
@@ -1794,7 +1811,7 @@
     }
 
     boolean willCreateUserFolder(ItemInfo info, CellLayout target, int[] targetCell,
-            float distance, boolean considerTimeout) {
+                                 float distance, boolean considerTimeout) {
         if (distance > target.getFolderCreationRadius(targetCell)) return false;
         View dropOverView = target.getChildAt(targetCell[0], targetCell[1]);
         return willCreateUserFolder(info, dropOverView, considerTimeout);
@@ -1802,8 +1819,9 @@
 
     boolean willCreateUserFolder(ItemInfo info, View dropOverView, boolean considerTimeout) {
         if (dropOverView != null) {
-            CellLayout.LayoutParams lp = (CellLayout.LayoutParams) dropOverView.getLayoutParams();
-            if (lp.useTmpCoords && (lp.tmpCellX != lp.cellX || lp.tmpCellY != lp.cellY)) {
+            CellLayoutLayoutParams lp = (CellLayoutLayoutParams) dropOverView.getLayoutParams();
+            if (lp.useTmpCoords && (lp.getTmpCellX() != lp.getCellX()
+                    || lp.getTmpCellY() != lp.getCellY())) {
                 return false;
             }
         }
@@ -1829,16 +1847,18 @@
     }
 
     boolean willAddToExistingUserFolder(ItemInfo dragInfo, CellLayout target, int[] targetCell,
-            float distance) {
+                                        float distance) {
         if (distance > target.getFolderCreationRadius(targetCell)) return false;
         View dropOverView = target.getChildAt(targetCell[0], targetCell[1]);
         return willAddToExistingUserFolder(dragInfo, dropOverView);
 
     }
+
     boolean willAddToExistingUserFolder(ItemInfo dragInfo, View dropOverView) {
         if (dropOverView != null) {
-            CellLayout.LayoutParams lp = (CellLayout.LayoutParams) dropOverView.getLayoutParams();
-            if (lp.useTmpCoords && (lp.tmpCellX != lp.cellX || lp.tmpCellY != lp.cellY)) {
+            CellLayoutLayoutParams lp = (CellLayoutLayoutParams) dropOverView.getLayoutParams();
+            if (lp.useTmpCoords && (lp.getTmpCellX() != lp.getCellX()
+                    || lp.getTmpCellY() != lp.getCellY())) {
                 return false;
             }
         }
@@ -1934,7 +1954,7 @@
     }
 
     @Override
-    public void prepareAccessibilityDrop() { }
+    public void prepareAccessibilityDrop() {}
 
     @Override
     public void onDrop(final DragObject d, DragOptions options) {
@@ -1952,8 +1972,8 @@
         boolean resizeOnDrop = false;
         Runnable onCompleteRunnable = null;
         if (d.dragSource != this || mDragInfo == null) {
-            final int[] touchXY = new int[] { (int) mDragViewVisualCenter[0],
-                    (int) mDragViewVisualCenter[1] };
+            final int[] touchXY = new int[]{(int) mDragViewVisualCenter[0],
+                    (int) mDragViewVisualCenter[1]};
             onDropExternal(touchXY, dropTargetLayout, d);
         } else {
             final View cell = mDragInfo.cell;
@@ -1980,11 +2000,13 @@
 
                 // If the item being dropped is a shortcut and the nearest drop
                 // cell also contains a shortcut, then create a folder with the two shortcuts.
-                if (createUserFolderIfNecessary(cell, container,
-                        dropTargetLayout, mTargetCell, distance, false, d)
+                if (createUserFolderIfNecessary(cell, container, dropTargetLayout, mTargetCell,
+                        distance, false, d)
                         || addToExistingFolderIfNecessary(cell, dropTargetLayout, mTargetCell,
-                                distance, d, false)) {
-                    mLauncher.getStateManager().goToState(NORMAL, SPRING_LOADED_EXIT_DELAY);
+                        distance, d, false)) {
+                    if (!mLauncher.isInState(EDIT_MODE)) {
+                        mLauncher.getStateManager().goToState(NORMAL, SPRING_LOADED_EXIT_DELAY);
+                    }
                     return;
                 }
 
@@ -1998,8 +2020,11 @@
                     minSpanY = item.minSpanY;
                 }
 
-                droppedOnOriginalCell = item.screenId == screenId && item.container == container
-                        && item.cellX == mTargetCell[0] && item.cellY == mTargetCell[1];
+                CellPos originalPresenterPos = getCellPosMapper().mapModelToPresenter(item);
+                droppedOnOriginalCell = originalPresenterPos.screenId == screenId
+                        && item.container == container
+                        && originalPresenterPos.cellX == mTargetCell[0]
+                        && originalPresenterPos.cellY == mTargetCell[1];
                 droppedOnOriginalCellDuringTransition = droppedOnOriginalCell && mIsSwitchingState;
 
                 // When quickly moving an item, a user may accidentally rearrange their
@@ -2012,8 +2037,8 @@
                     mTargetCell[0] = mTargetCell[1] = -1;
                 } else {
                     mTargetCell = dropTargetLayout.performReorder((int) mDragViewVisualCenter[0],
-                            (int) mDragViewVisualCenter[1], minSpanX, minSpanY, spanX, spanY, cell,
-                            mTargetCell, resultSpan, CellLayout.MODE_ON_DROP);
+                            (int) mDragViewVisualCenter[1], minSpanX, minSpanY, spanX, spanY,
+                            cell, mTargetCell, resultSpan, CellLayout.MODE_ON_DROP);
                 }
 
                 boolean foundCell = mTargetCell[0] >= 0 && mTargetCell[1] >= 0;
@@ -2054,32 +2079,25 @@
                     }
 
                     // update the item's position after drop
-                    CellLayout.LayoutParams lp = (CellLayout.LayoutParams) cell.getLayoutParams();
-                    lp.cellX = lp.tmpCellX = mTargetCell[0];
-                    lp.cellY = lp.tmpCellY = mTargetCell[1];
+                    CellLayoutLayoutParams lp = (CellLayoutLayoutParams) cell.getLayoutParams();
+                    lp.setTmpCellX(mTargetCell[0]);
+                    lp.setCellX(mTargetCell[0]);
+                    lp.setTmpCellY(mTargetCell[1]);
+                    lp.setCellY(mTargetCell[1]);
                     lp.cellHSpan = item.spanX;
                     lp.cellVSpan = item.spanY;
                     lp.isLockedToGrid = true;
 
                     if (container != LauncherSettings.Favorites.CONTAINER_HOTSEAT &&
                             cell instanceof LauncherAppWidgetHostView) {
-                        final CellLayout cellLayout = dropTargetLayout;
+
                         // We post this call so that the widget has a chance to be placed
                         // in its final location
-
-                        final LauncherAppWidgetHostView hostView = (LauncherAppWidgetHostView) cell;
-                        AppWidgetProviderInfo pInfo = hostView.getAppWidgetInfo();
-                        if (pInfo != null && pInfo.resizeMode != AppWidgetProviderInfo.RESIZE_NONE
-                                && !options.isAccessibleDrag) {
-                            onCompleteRunnable = () -> {
-                                if (!isPageInTransition()) {
-                                    AppWidgetResizeFrame.showForWidget(hostView, cellLayout);
-                                }
-                            };
-                        }
+                        onCompleteRunnable = getWidgetResizeFrameRunnable(options,
+                                (LauncherAppWidgetHostView) cell, dropTargetLayout);
                     }
                     mLauncher.getModelWriter().modifyItemInDatabase(info, container, screenId,
-                            lp.cellX, lp.cellY, item.spanX, item.spanY);
+                            lp.getCellX(), lp.getCellY(), item.spanX, item.spanY);
                 } else {
                     if (!returnToOriginalCellToPreventShuffling) {
                         onNoCellFound(dropTargetLayout, d.dragInfo, d.logInstanceId);
@@ -2089,16 +2107,24 @@
                     }
 
                     // If we can't find a drop location, we return the item to its original position
-                    CellLayout.LayoutParams lp = (CellLayout.LayoutParams) cell.getLayoutParams();
-                    mTargetCell[0] = lp.cellX;
-                    mTargetCell[1] = lp.cellY;
+                    CellLayoutLayoutParams lp = (CellLayoutLayoutParams) cell.getLayoutParams();
+                    mTargetCell[0] = lp.getCellX();
+                    mTargetCell[1] = lp.getCellY();
                     CellLayout layout = (CellLayout) cell.getParent().getParent();
                     layout.markCellsAsOccupiedForView(cell);
                 }
             } else {
                 // When drag is cancelled, reattach content view back to its original parent.
-                if (mDragInfo.cell instanceof LauncherAppWidgetHostView) {
+                if (cell instanceof LauncherAppWidgetHostView) {
                     d.dragView.detachContentView(/* reattachToPreviousParent= */ true);
+
+                    final CellLayout cellLayout = getParentCellLayoutForView(cell);
+                    boolean pageIsVisible = isVisible(cellLayout);
+
+                    if (pageIsVisible) {
+                        onCompleteRunnable = getWidgetResizeFrameRunnable(options,
+                                (LauncherAppWidgetHostView) cell, cellLayout);
+                    }
                 }
             }
 
@@ -2109,14 +2135,19 @@
                     // spring-loaded mode so the page meets the icon where it was picked up.
                     final RunnableList callbackList = new RunnableList();
                     final Runnable onCompleteCallback = onCompleteRunnable;
+                    LauncherState currentState = mLauncher.getStateManager().getState();
                     mLauncher.getDragController().animateDragViewToOriginalPosition(
                             /* onComplete= */ callbackList::executeAllAndDestroy, cell,
-                            SPRING_LOADED.getTransitionDuration(mLauncher, true /* isToState */));
-                    mLauncher.getStateManager().goToState(NORMAL, /* delay= */ 0,
-                            onCompleteCallback == null
-                                    ? null
-                                    : forSuccessCallback(
-                                            () -> callbackList.add(onCompleteCallback)));
+                            currentState.getTransitionDuration(mLauncher, true /* isToState */));
+                    if (!mLauncher.isInState(EDIT_MODE)) {
+                        mLauncher.getStateManager().goToState(NORMAL, /* delay= */ 0,
+                                onCompleteCallback == null
+                                        ? null
+                                        : forSuccessCallback(
+                                                () -> callbackList.add(onCompleteCallback)));
+                    } else if (onCompleteCallback != null) {
+                        forSuccessCallback(() -> callbackList.add(onCompleteCallback));
+                    }
                     mLauncher.getDropTargetBar().onDragEnd();
                     parent.onDropChild(cell);
                     return;
@@ -2124,7 +2155,8 @@
                 final ItemInfo info = (ItemInfo) cell.getTag();
                 boolean isWidget = info.itemType == LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET
                         || info.itemType == LauncherSettings.Favorites.ITEM_TYPE_CUSTOM_APPWIDGET;
-                if (isWidget) {
+                if (isWidget && dropTargetLayout != null) {
+                    // animate widget to a valid place
                     int animationType = resizeOnDrop ? ANIMATE_INTO_POSITION_AND_RESIZE :
                             ANIMATE_INTO_POSITION_AND_DISAPPEAR;
                     animateWidgetDrop(info, parent, d.dragView, null, animationType, cell, false);
@@ -2139,8 +2171,12 @@
             }
             parent.onDropChild(cell);
 
-            mLauncher.getStateManager().goToState(NORMAL, SPRING_LOADED_EXIT_DELAY,
-                    onCompleteRunnable == null ? null : forSuccessCallback(onCompleteRunnable));
+            if (!mLauncher.isInState(EDIT_MODE)) {
+                mLauncher.getStateManager().goToState(NORMAL, SPRING_LOADED_EXIT_DELAY,
+                        onCompleteRunnable == null ? null : forSuccessCallback(onCompleteRunnable));
+            } else if (onCompleteRunnable != null) {
+                forSuccessCallback(onCompleteRunnable);
+            }
             mStatsLogManager.logger().withItemInfo(d.dragInfo).withInstanceId(d.logInstanceId)
                     .log(LauncherEvent.LAUNCHER_ITEM_DROP_COMPLETED);
         }
@@ -2150,6 +2186,21 @@
         }
     }
 
+    @Nullable
+    private Runnable getWidgetResizeFrameRunnable(DragOptions options,
+            LauncherAppWidgetHostView hostView, CellLayout cellLayout) {
+        AppWidgetProviderInfo pInfo = hostView.getAppWidgetInfo();
+        if (pInfo != null && pInfo.resizeMode != AppWidgetProviderInfo.RESIZE_NONE
+                && !options.isAccessibleDrag) {
+            return () -> {
+                if (!isPageInTransition()) {
+                    AppWidgetResizeFrame.showForWidget(hostView, cellLayout);
+                }
+            };
+        }
+        return null;
+    }
+
     public void onNoCellFound(
             View dropTargetLayout, ItemInfo itemInfo, @Nullable InstanceId logInstanceId) {
         int strId = mLauncher.isHotseatLayout(dropTargetLayout)
@@ -2297,7 +2348,7 @@
         }
     }
 
-    private void cleanupFolderCreation() {
+    protected void cleanupFolderCreation() {
         if (mFolderCreateBg != null) {
             mFolderCreateBg.animateToRest();
         }
@@ -2310,7 +2361,7 @@
         }
     }
 
-    private void cleanupReorder(boolean cancelAlarm) {
+    protected void cleanupReorder(boolean cancelAlarm) {
         // Any pending reorders are canceled
         if (cancelAlarm) {
             mReorderAlarm.cancelAlarm();
@@ -2331,8 +2382,9 @@
 
     /**
      * Updates the point in {@param xy} to point to the co-ordinate space of {@param layout}
+     *
      * @param layout either hotseat of a page in workspace
-     * @param xy the point location in workspace co-ordinate space
+     * @param xy     the point location in workspace co-ordinate space
      */
     private void mapPointFromDropLayout(CellLayout layout, float[] xy) {
         if (mLauncher.isHotseatLayout(layout)) {
@@ -2386,7 +2438,7 @@
             }
 
             mTargetCell = findNearestArea((int) mDragViewVisualCenter[0],
-                    (int) mDragViewVisualCenter[1], minSpanX, minSpanY,
+                    (int) mDragViewVisualCenter[1], item.spanX, item.spanY,
                     mDragTargetLayout, mTargetCell);
             int reorderX = mTargetCell[0];
             int reorderY = mTargetCell[1];
@@ -2399,29 +2451,11 @@
             manageFolderFeedback(targetCellDistance, d);
 
             boolean nearestDropOccupied = mDragTargetLayout.isNearestDropLocationOccupied((int)
-                    mDragViewVisualCenter[0], (int) mDragViewVisualCenter[1], item.spanX,
+                            mDragViewVisualCenter[0], (int) mDragViewVisualCenter[1], item.spanX,
                     item.spanY, child, mTargetCell);
 
-            if (!nearestDropOccupied) {
-                mDragTargetLayout.visualizeDropLocation(mTargetCell[0], mTargetCell[1],
-                        item.spanX, item.spanY, d);
-            } else if ((mDragMode == DRAG_MODE_NONE || mDragMode == DRAG_MODE_REORDER)
-                    && !mReorderAlarm.alarmPending()
-                    && (mLastReorderX != reorderX || mLastReorderY != reorderY)
-                    && targetCellDistance < mDragTargetLayout.getReorderRadius(mTargetCell)) {
-
-                int[] resultSpan = new int[2];
-                mDragTargetLayout.performReorder((int) mDragViewVisualCenter[0],
-                        (int) mDragViewVisualCenter[1], minSpanX, minSpanY, item.spanX, item.spanY,
-                        child, mTargetCell, resultSpan, CellLayout.MODE_SHOW_REORDER_HINT);
-
-                // Otherwise, if we aren't adding to or creating a folder and there's no pending
-                // reorder, then we schedule a reorder
-                ReorderAlarmListener listener = new ReorderAlarmListener(mDragViewVisualCenter,
-                        minSpanX, minSpanY, item.spanX, item.spanY, d, child);
-                mReorderAlarm.setOnAlarmListener(listener);
-                mReorderAlarm.setAlarm(REORDER_TIMEOUT);
-            }
+            manageReorderOnDragOver(d, targetCellDistance, nearestDropOccupied, minSpanX, minSpanY,
+                    reorderX, reorderY);
 
             if (mDragMode == DRAG_MODE_CREATE_FOLDER || mDragMode == DRAG_MODE_ADD_TO_FOLDER ||
                     !nearestDropOccupied) {
@@ -2432,6 +2466,40 @@
         }
     }
 
+    protected void manageReorderOnDragOver(DragObject d, float targetCellDistance,
+            boolean nearestDropOccupied, int minSpanX, int minSpanY, int reorderX, int reorderY) {
+
+        ItemInfo item = d.dragInfo;
+        final View child = (mDragInfo == null) ? null : mDragInfo.cell;
+        if (!nearestDropOccupied) {
+            int[] span = new int[2];
+            mDragTargetLayout.performReorder((int) mDragViewVisualCenter[0],
+                    (int) mDragViewVisualCenter[1], minSpanX, minSpanY, item.spanX, item.spanY,
+                    child, mTargetCell, span, CellLayout.MODE_SHOW_REORDER_HINT);
+            mDragTargetLayout.visualizeDropLocation(mTargetCell[0], mTargetCell[1], span[0],
+                    span[1], d);
+            nearestDropOccupied = mDragTargetLayout.isNearestDropLocationOccupied((int)
+                            mDragViewVisualCenter[0], (int) mDragViewVisualCenter[1], item.spanX,
+                    item.spanY, child, mTargetCell);
+        } else if ((mDragMode == DRAG_MODE_NONE || mDragMode == DRAG_MODE_REORDER)
+                && (mLastReorderX != reorderX || mLastReorderY != reorderY)
+                && targetCellDistance < mDragTargetLayout.getReorderRadius(mTargetCell, item.spanX,
+                item.spanY)) {
+            mReorderAlarm.cancelAlarm();
+            mLastReorderX = reorderX;
+            mLastReorderY = reorderY;
+            mDragTargetLayout.performReorder((int) mDragViewVisualCenter[0],
+                    (int) mDragViewVisualCenter[1], minSpanX, minSpanY, item.spanX, item.spanY,
+                    child, mTargetCell, new int[2], CellLayout.MODE_SHOW_REORDER_HINT);
+            // Otherwise, if we aren't adding to or creating a folder and there's no pending
+            // reorder, then we schedule a reorder
+            ReorderAlarmListener listener = new ReorderAlarmListener(mDragViewVisualCenter,
+                    minSpanX, minSpanY, item.spanX, item.spanY, d, child);
+            mReorderAlarm.setOnAlarmListener(listener);
+            mReorderAlarm.setAlarm(REORDER_TIMEOUT);
+        }
+    }
+
     /**
      * Updates {@link #mDragTargetLayout} and {@link #mDragOverlappingLayout}
      * based on the DragObject's position.
@@ -2484,10 +2552,10 @@
     }
 
     private boolean isDragObjectOverSmartSpace(DragObject dragObject) {
-        if (mQsb == null) {
+        if (mFirstPagePinnedItem == null) {
             return false;
         }
-        getViewBoundsRelativeToWorkspace(mQsb, mTempRect);
+        getViewBoundsRelativeToWorkspace(mFirstPagePinnedItem, mTempRect);
         return mTempRect.contains(dragObject.x, dragObject.y);
     }
 
@@ -2613,7 +2681,7 @@
         final View child;
 
         public ReorderAlarmListener(float[] dragViewCenter, int minSpanX, int minSpanY, int spanX,
-                int spanY, DragObject dragObject, View child) {
+                                    int spanY, DragObject dragObject, View child) {
             this.dragViewCenter = dragViewCenter;
             this.minSpanX = minSpanX;
             this.minSpanY = minSpanY;
@@ -2628,12 +2696,10 @@
             mTargetCell = findNearestArea((int) mDragViewVisualCenter[0],
                     (int) mDragViewVisualCenter[1], minSpanX, minSpanY, mDragTargetLayout,
                     mTargetCell);
-            mLastReorderX = mTargetCell[0];
-            mLastReorderY = mTargetCell[1];
 
             mTargetCell = mDragTargetLayout.performReorder((int) mDragViewVisualCenter[0],
-                (int) mDragViewVisualCenter[1], minSpanX, minSpanY, spanX, spanY,
-                child, mTargetCell, resultSpan, CellLayout.MODE_DRAG_OVER);
+                    (int) mDragViewVisualCenter[1], minSpanX, minSpanY, spanX, spanY,
+                    child, mTargetCell, resultSpan, CellLayout.MODE_DRAG_OVER);
 
             if (mTargetCell[0] < 0 || mTargetCell[1] < 0) {
                 mDragTargetLayout.revertTempState();
@@ -2641,7 +2707,6 @@
                 setDragMode(DRAG_MODE_REORDER);
             }
 
-            boolean resize = resultSpan[0] != spanX || resultSpan[1] != spanY;
             mDragTargetLayout.visualizeDropLocation(mTargetCell[0], mTargetCell[1],
                     resultSpan[0], resultSpan[1], dragObject);
         }
@@ -2658,14 +2723,14 @@
      * Drop an item that didn't originate on one of the workspace screens.
      * It may have come from Launcher (e.g. from all apps or customize), or it may have
      * come from another app altogether.
-     *
+     * <p>
      * NOTE: This can also be called when we are outside of a drag event, when we want
      * to add an item to one of the workspace screens.
      */
     private void onDropExternal(final int[] touchXY, final CellLayout cellLayout, DragObject d) {
         if (d.dragInfo instanceof PendingAddShortcutInfo) {
             WorkspaceItemInfo si = ((PendingAddShortcutInfo) d.dragInfo)
-                    .activityInfo.createWorkspaceItemInfo();
+                    .getActivityInfo(mLauncher).createWorkspaceItemInfo();
             if (si != null) {
                 d.dragInfo = si;
             }
@@ -2685,7 +2750,8 @@
         final int screenId = getIdForScreen(cellLayout);
         if (!mLauncher.isHotseatLayout(cellLayout)
                 && screenId != getScreenIdForPageIndex(mCurrentPage)
-                && !mLauncher.isInState(SPRING_LOADED)) {
+                && !mLauncher.isInState(SPRING_LOADED)
+                && !mLauncher.isInState(EDIT_MODE)) {
             snapToPage(getPageIndexForScreenId(screenId));
         }
 
@@ -2700,7 +2766,7 @@
                         mDragViewVisualCenter[0], mDragViewVisualCenter[1], mTargetCell);
                 if (willCreateUserFolder(d.dragInfo, cellLayout, mTargetCell, distance, true)
                         || willAddToExistingUserFolder(
-                                d.dragInfo, cellLayout, mTargetCell, distance)) {
+                        d.dragInfo, cellLayout, mTargetCell, distance)) {
                     findNearestVacantCell = false;
                 }
             }
@@ -2763,7 +2829,6 @@
         } else {
             // This is for other drag/drop cases, like dragging from All Apps
             mLauncher.getStateManager().goToState(NORMAL, SPRING_LOADED_EXIT_DELAY);
-
             View view;
 
             switch (info.itemType) {
@@ -2867,15 +2932,15 @@
         Rect r = estimateItemPosition(layout, targetCell[0], targetCell[1], spanX, spanY);
         if (info.itemType == LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET) {
             DeviceProfile profile = mLauncher.getDeviceProfile();
-            if (profile.shouldInsetWidgets() && finalView instanceof NavigableAppWidgetHostView) {
-                Rect widgetPadding = new Rect();
-                ((NavigableAppWidgetHostView) finalView).getWidgetInset(profile, widgetPadding);
+            if (finalView instanceof NavigableAppWidgetHostView) {
+                Rect widgetPadding = profile.widgetPadding;
                 r.left -= widgetPadding.left;
                 r.right += widgetPadding.right;
                 r.top -= widgetPadding.top;
                 r.bottom += widgetPadding.bottom;
             }
-            Utilities.shrinkRect(r, profile.appWidgetScale.x, profile.appWidgetScale.y);
+            PointF appWidgetScale = profile.getAppWidgetScale(null);
+            Utilities.shrinkRect(r, appWidgetScale.x, appWidgetScale.y);
         }
 
         mTempFXY[0] = r.left;
@@ -2934,7 +2999,7 @@
             Drawable crossFadeDrawable = createWidgetDrawable(info, finalView);
             dragView.crossFadeContent(crossFadeDrawable, (int) (duration * 0.8f));
         } else if (isWidget && external) {
-            scaleXY[0] = scaleXY[1] = Math.min(scaleXY[0],  scaleXY[1]);
+            scaleXY[0] = scaleXY[1] = Math.min(scaleXY[0], scaleXY[1]);
         }
 
         DragLayer dragLayer = mLauncher.getDragLayer();
@@ -2973,6 +3038,7 @@
             setScaleY(mStateTransitionAnimation.getFinalScale());
         }
     }
+
     public void resetTransitionTransform() {
         if (isSwitchingState()) {
             setScaleX(mCurrentScale);
@@ -2984,7 +3050,6 @@
      * Return the current CellInfo describing our current drag; this method exists
      * so that Launcher can sync this object with the correct info when the activity is created/
      * destroyed
-     *
      */
     public CellLayout.CellInfo getDragInfo() {
         return mDragInfo;
@@ -2992,12 +3057,13 @@
 
     /**
      * Calculate the nearest cell where the given object would be dropped.
-     *
+     * <p>
      * pixelX and pixelY should be in the coordinate system of layout
      */
-    @Thunk int[] findNearestArea(int pixelX, int pixelY,
-            int spanX, int spanY, CellLayout layout, int[] recycle) {
-        return layout.findNearestArea(
+    @Thunk
+    int[] findNearestArea(int pixelX, int pixelY,
+                          int spanX, int spanY, CellLayout layout, int[] recycle) {
+        return layout.findNearestAreaIgnoreOccupied(
                 pixelX, pixelY, spanX, spanY, recycle);
     }
 
@@ -3014,7 +3080,7 @@
      * Called at the end of a drag which originated on the workspace.
      */
     public void onDropCompleted(final View target, final DragObject d,
-            final boolean success) {
+                                final boolean success) {
         if (success) {
             if (target != this && mDragInfo != null) {
                 removeWorkspaceItem(mDragInfo.cell);
@@ -3061,6 +3127,7 @@
 
     /**
      * Removed widget from workspace by appWidgetId
+     *
      * @param appWidgetId
      */
     public void removeWidget(int appWidgetId) {
@@ -3267,6 +3334,7 @@
 
     /**
      * Perform {param operator} over all the items in a given {param layout}.
+     *
      * @return The first item that satisfies the operator or null.
      */
     public View mapOverCellLayout(CellLayout layout, ItemOperator operator) {
@@ -3321,10 +3389,10 @@
     /**
      * Remove workspace icons & widget information related to items in matcher.
      *
-     * @param matcher  the matcher generated by the caller.
+     * @param matcher the matcher generated by the caller.
      */
     public void persistRemoveItemsByMatcher(Predicate<ItemInfo> matcher,
-            @Nullable final String reason) {
+                                            @Nullable final String reason) {
         mLauncher.getModelWriter().deleteItemsFromDatabase(matcher, reason);
         removeItemsByMatcher(matcher);
     }
@@ -3332,7 +3400,7 @@
     public void widgetsRestored(final ArrayList<LauncherAppWidgetInfo> changedInfo) {
         if (!changedInfo.isEmpty()) {
             DeferredWidgetRefresh widgetRefresh = new DeferredWidgetRefresh(changedInfo,
-                    mLauncher.getAppWidgetHost());
+                    mLauncher.getAppWidgetHolder());
 
             LauncherAppWidgetInfo item = changedInfo.get(0);
             final AppWidgetProviderInfo widgetInfo;
@@ -3369,7 +3437,9 @@
         return mOverlayShown;
     }
 
-    /** Calls {@link #snapToPage(int)} on the {@link #DEFAULT_PAGE}, then requests focus on it. */
+    /**
+     * Calls {@link #snapToPage(int)} on the {@link #DEFAULT_PAGE}, then requests focus on it.
+     */
     public void moveToDefaultScreen() {
         int page = DEFAULT_PAGE;
         if (!workspaceInModalState() && getNextPage() != page) {
@@ -3409,7 +3479,7 @@
     protected boolean canAnnouncePageDescription() {
         // Disable announcements while overscrolling potentially to overlay screen because if we end
         // up on the overlay screen, it will take care of announcing itself.
-        return Float.compare(mOverlayTranslation, 0f) == 0;
+        return Float.compare(mOverlayProgress, 0f) == 0;
     }
 
     @Override
@@ -3418,7 +3488,11 @@
         return getPageDescription(page);
     }
 
-    private String getPageDescription(int page) {
+    /**
+     * @param page page index.
+     * @return Description of the page at the given page index.
+     */
+    public String getPageDescription(int page) {
         int nScreens = getChildCount();
         int extraScreenId = mScreenOrder.indexOf(EXTRA_EMPTY_SCREEN_ID);
         if (extraScreenId >= 0 && nScreens > 1) {
@@ -3448,25 +3522,30 @@
                 > deviceProfile.availableWidthPx * SIGNIFICANT_MOVE_SCREEN_WIDTH_PERCENTAGE;
     }
 
+    @Override
+    public CellPosMapper getCellPosMapper() {
+        return mLauncher.getCellPosMapper();
+    }
+
     /**
      * Used as a workaround to ensure that the AppWidgetService receives the
      * PACKAGE_ADDED broadcast before updating widgets.
      */
     private class DeferredWidgetRefresh implements Runnable, ProviderChangedListener {
         private final ArrayList<LauncherAppWidgetInfo> mInfos;
-        private final LauncherAppWidgetHost mHost;
+        private final LauncherWidgetHolder mWidgetHolder;
         private final Handler mHandler;
 
         private boolean mRefreshPending;
 
         DeferredWidgetRefresh(ArrayList<LauncherAppWidgetInfo> infos,
-            LauncherAppWidgetHost host) {
+                              LauncherWidgetHolder holder) {
             mInfos = infos;
-            mHost = host;
+            mWidgetHolder = holder;
             mHandler = mLauncher.mHandler;
             mRefreshPending = true;
 
-            mHost.addProviderChangeListener(this);
+            mWidgetHolder.addProviderChangeListener(this);
             // Force refresh after 10 seconds, if we don't get the provider changed event.
             // This could happen when the provider is no longer available in the app.
             Message msg = Message.obtain(mHandler, this);
@@ -3476,7 +3555,7 @@
 
         @Override
         public void run() {
-            mHost.removeProviderChangeListener(this);
+            mWidgetHolder.removeProviderChangeListener(this);
             mHandler.removeCallbacks(this);
 
             if (!mRefreshPending) {
diff --git a/src/com/android/launcher3/WorkspaceLayoutManager.java b/src/com/android/launcher3/WorkspaceLayoutManager.java
index 7e6e1b6..4768773 100644
--- a/src/com/android/launcher3/WorkspaceLayoutManager.java
+++ b/src/com/android/launcher3/WorkspaceLayoutManager.java
@@ -19,6 +19,9 @@
 import android.view.View;
 import android.view.ViewGroup;
 
+import com.android.launcher3.celllayout.CellLayoutLayoutParams;
+import com.android.launcher3.celllayout.CellPosMapper;
+import com.android.launcher3.celllayout.CellPosMapper.CellPos;
 import com.android.launcher3.folder.Folder;
 import com.android.launcher3.folder.FolderIcon;
 import com.android.launcher3.model.data.ItemInfo;
@@ -47,15 +50,16 @@
      * See {@link #addInScreen}.
      */
     default void addInScreenFromBind(View child, ItemInfo info) {
-        int x = info.cellX;
-        int y = info.cellY;
+        CellPos presenterPos = getCellPosMapper().mapModelToPresenter(info);
+        int x = presenterPos.cellX;
+        int y = presenterPos.cellY;
         if (info.container == LauncherSettings.Favorites.CONTAINER_HOTSEAT
                 || info.container == LauncherSettings.Favorites.CONTAINER_HOTSEAT_PREDICTION) {
-            int screenId = info.screenId;
+            int screenId = presenterPos.screenId;
             x = getHotseat().getCellXFromOrder(screenId);
             y = getHotseat().getCellYFromOrder(screenId);
         }
-        addInScreen(child, info.container, info.screenId, x, y, info.spanX, info.spanY);
+        addInScreen(child, info.container, presenterPos.screenId, x, y, info.spanX, info.spanY);
     }
 
     /**
@@ -63,7 +67,9 @@
      * See {@link #addInScreen(View, int, int, int, int, int, int)}.
      */
     default void addInScreen(View child, ItemInfo info) {
-        addInScreen(child, info.container, info.screenId, info.cellX, info.cellY,
+        CellPos presenterPos = getCellPosMapper().mapModelToPresenter(info);
+        addInScreen(child, info.container,
+                presenterPos.screenId, presenterPos.cellX, presenterPos.cellY,
                 info.spanX, info.spanY);
     }
 
@@ -111,13 +117,13 @@
         }
 
         ViewGroup.LayoutParams genericLp = child.getLayoutParams();
-        CellLayout.LayoutParams lp;
-        if (genericLp == null || !(genericLp instanceof CellLayout.LayoutParams)) {
-            lp = new CellLayout.LayoutParams(x, y, spanX, spanY);
+        CellLayoutLayoutParams lp;
+        if (genericLp == null || !(genericLp instanceof CellLayoutLayoutParams)) {
+            lp = new CellLayoutLayoutParams(x, y, spanX, spanY);
         } else {
-            lp = (CellLayout.LayoutParams) genericLp;
-            lp.cellX = x;
-            lp.cellY = y;
+            lp = (CellLayoutLayoutParams) genericLp;
+            lp.setCellX(x);
+            lp.setCellY(y);
             lp.cellHSpan = spanX;
             lp.cellVSpan = spanY;
         }
@@ -135,7 +141,8 @@
             // TODO: This branch occurs when the workspace is adding views
             // outside of the defined grid
             // maybe we should be deleting these items from the LauncherModel?
-            Log.e(TAG, "Failed to add to item at (" + lp.cellX + "," + lp.cellY + ") to CellLayout");
+            Log.e(TAG, "Failed to add to item at (" + lp.getCellX() + "," + lp.getCellY()
+                    + ") to CellLayout");
         }
 
         child.setHapticFeedbackEnabled(false);
@@ -149,6 +156,11 @@
         return ItemLongClickListener.INSTANCE_WORKSPACE;
     }
 
+    /**
+     * Returns the mapper for converting between model and presenter
+     */
+    CellPosMapper getCellPosMapper();
+
     Hotseat getHotseat();
 
     CellLayout getScreenWithId(int screenId);
diff --git a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
index a991c2f..565d7da 100644
--- a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
+++ b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
@@ -59,6 +59,7 @@
 import com.android.launcher3.anim.SpringAnimationBuilder;
 import com.android.launcher3.graphics.Scrim;
 import com.android.launcher3.graphics.SysUiScrim;
+import com.android.launcher3.states.EditModeState;
 import com.android.launcher3.states.SpringLoadedState;
 import com.android.launcher3.states.StateAnimationConfig;
 import com.android.launcher3.util.DynamicResource;
@@ -69,6 +70,8 @@
  */
 public class WorkspaceStateTransitionAnimation {
 
+    private static final float FIRST_PAGE_PINNED_WIDGET_DISABLED_ALPHA = 0.3f;
+
     private static final FloatProperty<Workspace<?>> WORKSPACE_SCALE_PROPERTY =
             WORKSPACE_SCALE_PROPERTY_FACTORY.get(SCALE_INDEX_WORKSPACE_STATE);
 
@@ -210,8 +213,8 @@
             PageAlphaProvider pageAlphaProvider, PropertySetter propertySetter,
             StateAnimationConfig config) {
         float pageAlpha = pageAlphaProvider.getPageAlpha(childIndex);
-        float springLoadedProgress = (state instanceof SpringLoadedState) ? 1.0f : 0f;
-
+        float springLoadedProgress =
+                (state instanceof  SpringLoadedState || state instanceof EditModeState) ? 1f : 0f;
         propertySetter.setFloat(cl,
                 CellLayout.SPRING_LOADED_PROGRESS, springLoadedProgress, ZOOM_OUT);
         Interpolator fadeInterpolator = config.getInterpolator(ANIM_WORKSPACE_FADE,
diff --git a/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java b/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java
index 79214e8..a7a25f4 100644
--- a/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java
+++ b/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java
@@ -1,5 +1,7 @@
 package com.android.launcher3.accessibility;
 
+import static android.view.accessibility.AccessibilityEvent.TYPE_VIEW_FOCUSED;
+import static android.view.accessibility.AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS;
 import static android.view.accessibility.AccessibilityNodeInfo.ACTION_LONG_CLICK;
 
 import static com.android.launcher3.LauncherState.NORMAL;
@@ -23,6 +25,7 @@
 import com.android.launcher3.PendingAddItemInfo;
 import com.android.launcher3.R;
 import com.android.launcher3.Workspace;
+import com.android.launcher3.celllayout.CellLayoutLayoutParams;
 import com.android.launcher3.dragndrop.DragOptions;
 import com.android.launcher3.dragndrop.DragOptions.PreDragCondition;
 import com.android.launcher3.dragndrop.DragView;
@@ -171,7 +174,11 @@
             mContext.getDragLayer().getDescendantRectRelativeToSelf(host, pos);
             ArrowPopup popup = OptionsPopupView.show(mContext, new RectF(pos), actions, false);
             popup.requestFocus();
-            popup.setOnCloseCallback(host::requestFocus);
+            popup.addOnCloseCallback(() -> {
+                host.requestFocus();
+                host.sendAccessibilityEvent(TYPE_VIEW_FOCUSED);
+                host.performAccessibilityAction(ACTION_ACCESSIBILITY_FOCUS, null);
+            });
             return true;
         } else if (action == DEEP_SHORTCUTS || action == SHORTCUTS_AND_NOTIFICATIONS) {
             BubbleTextView btv = host instanceof BubbleTextView ? (BubbleTextView) host
@@ -244,7 +251,7 @@
     }
 
     private boolean performResizeAction(int action, View host, LauncherAppWidgetInfo info) {
-        CellLayout.LayoutParams lp = (CellLayout.LayoutParams) host.getLayoutParams();
+        CellLayoutLayoutParams lp = (CellLayoutLayoutParams) host.getLayoutParams();
         CellLayout layout = (CellLayout) host.getParent().getParent();
         layout.markCellsAsUnoccupiedForView(host);
 
@@ -252,7 +259,7 @@
             if (((host.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL)
                     && layout.isRegionVacant(info.cellX - 1, info.cellY, 1, info.spanY))
                     || !layout.isRegionVacant(info.cellX + info.spanX, info.cellY, 1, info.spanY)) {
-                lp.cellX --;
+                lp.setCellX(lp.getCellX() - 1);
                 info.cellX --;
             }
             lp.cellHSpan ++;
@@ -262,7 +269,7 @@
             info.spanX --;
         } else if (action == R.string.action_increase_height) {
             if (!layout.isRegionVacant(info.cellX, info.cellY + info.spanY, info.spanX, 1)) {
-                lp.cellY --;
+                lp.setCellY(lp.getCellY() - 1);
                 info.cellY --;
             }
             lp.cellVSpan ++;
@@ -401,6 +408,14 @@
                         LauncherSettings.Favorites.CONTAINER_DESKTOP,
                         screenId, coordinates[0], coordinates[1]);
                 mContext.bindItems(Collections.singletonList(info), true, accessibility);
+            } else if (item instanceof FolderInfo fi) {
+                mContext.getModelWriter().addItemToDatabase(fi,
+                        LauncherSettings.Favorites.CONTAINER_DESKTOP, screenId, coordinates[0],
+                        coordinates[1]);
+                fi.contents.forEach(member -> {
+                    mContext.getModelWriter().addItemToDatabase(member, fi.id, -1, -1, -1);
+                });
+                mContext.bindItems(Collections.singletonList(fi), true, accessibility);
             }
         }));
         return true;
diff --git a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
index 53a6fd7..d4140d8 100644
--- a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java
@@ -15,45 +15,169 @@
  */
 package com.android.launcher3.allapps;
 
+import static com.android.launcher3.allapps.ActivityAllAppsContainerView.AdapterHolder.SEARCH;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_COUNT;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_TAP_ON_PERSONAL_TAB;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_TAP_ON_WORK_TAB;
+import static com.android.launcher3.testing.shared.TestProtocol.WORK_TAB_MISSING;
+import static com.android.launcher3.util.ScrollableLayoutManager.PREDICTIVE_BACK_MIN_SCALE;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.ValueAnimator;
 import android.content.Context;
-import android.content.Intent;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Outline;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.graphics.Path.Direction;
+import android.graphics.Point;
+import android.graphics.Rect;
+import android.graphics.RectF;
+import android.os.Bundle;
+import android.os.Parcelable;
+import android.os.Process;
+import android.os.UserManager;
 import android.util.AttributeSet;
+import android.util.FloatProperty;
+import android.util.Log;
+import android.util.SparseArray;
+import android.util.TypedValue;
 import android.view.KeyEvent;
+import android.view.LayoutInflater;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewOutlineProvider;
+import android.view.WindowInsets;
+import android.widget.Button;
 import android.widget.RelativeLayout;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.Px;
+import androidx.annotation.VisibleForTesting;
 import androidx.core.graphics.ColorUtils;
 import androidx.recyclerview.widget.RecyclerView;
 
-import com.android.launcher3.DeviceProfile.DeviceProfileListenable;
+import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
+import com.android.launcher3.DragSource;
+import com.android.launcher3.DropTarget.DragObject;
+import com.android.launcher3.Insettable;
+import com.android.launcher3.InsettableFrameLayout;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.allapps.BaseAllAppsAdapter.AdapterItem;
+import com.android.launcher3.allapps.search.DefaultSearchAdapterProvider;
 import com.android.launcher3.allapps.search.SearchAdapterProvider;
 import com.android.launcher3.config.FeatureFlags;
-import com.android.launcher3.util.PackageManagerHelper;
-import com.android.launcher3.views.AppLauncher;
+import com.android.launcher3.keyboard.FocusedItemDecorator;
+import com.android.launcher3.model.StringCache;
+import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.testing.shared.TestProtocol;
+import com.android.launcher3.util.ItemInfoMatcher;
+import com.android.launcher3.util.Themes;
+import com.android.launcher3.views.ActivityContext;
+import com.android.launcher3.views.BaseDragLayer;
+import com.android.launcher3.views.RecyclerViewFastScroller;
+import com.android.launcher3.views.ScrimView;
+import com.android.launcher3.views.SpringRelativeLayout;
+import com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip;
 
 import java.util.ArrayList;
-import java.util.Objects;
+import java.util.Arrays;
+import java.util.List;
+import java.util.function.Predicate;
+import java.util.stream.Stream;
 
 /**
  * All apps container view with search support for use in a dragging activity.
  *
  * @param <T> Type of context inflating all apps.
  */
-public class ActivityAllAppsContainerView<T extends Context & AppLauncher
-        & DeviceProfileListenable> extends BaseAllAppsContainerView<T> {
+public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
+        extends SpringRelativeLayout implements DragSource, Insettable,
+        OnDeviceProfileChangeListener, PersonalWorkSlidingTabStrip.OnActivePageChangedListener,
+        ScrimView.ScrimDrawingController {
 
-    protected SearchUiManager mSearchUiManager;
+
+    public static final FloatProperty<ActivityAllAppsContainerView<?>> BOTTOM_SHEET_ALPHA =
+            new FloatProperty<>("bottomSheetAlpha") {
+                @Override
+                public Float get(ActivityAllAppsContainerView<?> containerView) {
+                    return containerView.mBottomSheetAlpha;
+                }
+
+                @Override
+                public void setValue(ActivityAllAppsContainerView<?> containerView, float v) {
+                    containerView.setBottomSheetAlpha(v);
+                }
+            };
+
+    public static final float PULL_MULTIPLIER = .02f;
+    public static final float FLING_VELOCITY_MULTIPLIER = 1200f;
+    protected static final String BUNDLE_KEY_CURRENT_PAGE = "launcher.allapps.current_page";
+    private static final long DEFAULT_SEARCH_TRANSITION_DURATION_MS = 300;
+    // Render the header protection at all times to debug clipping issues.
+    private static final boolean DEBUG_HEADER_PROTECTION = false;
+    /** Context of an activity or window that is inflating this container. */
+
+    protected final T mActivityContext;
+    protected final List<AdapterHolder> mAH;
+    protected final Predicate<ItemInfo> mPersonalMatcher = ItemInfoMatcher.ofUser(
+            Process.myUserHandle());
+    protected final WorkProfileManager mWorkManager;
+    protected final Point mFastScrollerOffset = new Point();
+    protected final int mScrimColor;
+    protected final float mHeaderThreshold;
+
+    // Used to animate Search results out and A-Z apps in, or vice-versa.
+    private final SearchTransitionController mSearchTransitionController;
+    private final Paint mHeaderPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+    private final Rect mInsets = new Rect();
+    private final AllAppsStore mAllAppsStore = new AllAppsStore();
+    private final RecyclerView.OnScrollListener mScrollListener =
+            new RecyclerView.OnScrollListener() {
+                @Override
+                public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
+                    updateHeaderScroll(recyclerView.computeVerticalScrollOffset());
+                }
+            };
+    private final Paint mNavBarScrimPaint;
+    private final int mHeaderProtectionColor;
+    private final Path mTmpPath = new Path();
+    private final RectF mTmpRectF = new RectF();
+    protected AllAppsPagedView mViewPager;
+    protected FloatingHeaderView mHeader;
+    protected View mBottomSheetBackground;
+    protected RecyclerViewFastScroller mFastScroller;
+
     /**
-     * View that defines the search box. Result is rendered inside the recycler view defined in the
-     * base class.
+     * View that defines the search box. Result is rendered inside {@link #mSearchRecyclerView}.
      */
-    private View mSearchContainer;
+    protected View mSearchContainer;
+    protected SearchUiManager mSearchUiManager;
+    protected boolean mUsingTabs;
+    protected RecyclerViewFastScroller mTouchHandler;
+
     /** {@code true} when rendered view is in search state instead of the scroll state. */
     private boolean mIsSearching;
+    private boolean mRebindAdaptersAfterSearchAnimation;
+    private int mNavBarScrimHeight = 0;
+    private SearchRecyclerView mSearchRecyclerView;
+    protected SearchAdapterProvider<?> mMainAdapterProvider;
+    private View mBottomSheetHandleArea;
+    private boolean mHasWorkApps;
+    private float[] mBottomSheetCornerRadii;
+    private ScrimView mScrimView;
+    private int mHeaderColor;
+    private int mBottomSheetBackgroundColor;
+    private float mBottomSheetAlpha = 1f;
+    private boolean mForceBottomSheetVisible;
+    private int mTabsProtectionAlpha;
+    @Nullable private AllAppsTransitionController mAllAppsTransitionController;
 
     public ActivityAllAppsContainerView(Context context) {
         this(context, null);
@@ -65,79 +189,264 @@
 
     public ActivityAllAppsContainerView(Context context, AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr);
+        mActivityContext = ActivityContext.lookupContext(context);
+
+        mScrimColor = Themes.getAttrColor(context, R.attr.allAppsScrimColor);
+        mHeaderThreshold = getResources().getDimensionPixelSize(
+                R.dimen.dynamic_grid_cell_border_spacing);
+        mHeaderProtectionColor = Themes.getAttrColor(context, R.attr.allappsHeaderProtectionColor);
+
+        mWorkManager = new WorkProfileManager(
+                mActivityContext.getSystemService(UserManager.class),
+                this, mActivityContext.getStatsLogManager());
+        mAH = Arrays.asList(null, null, null);
+        mNavBarScrimPaint = new Paint();
+        mNavBarScrimPaint.setColor(Themes.getNavBarScrimColor(mActivityContext));
+
+        AllAppsStore.OnUpdateListener onAppsUpdated = this::onAppsUpdated;
+        if (TestProtocol.sDebugTracing) {
+            Log.d(WORK_TAB_MISSING, "ActivityAllAppsContainer#init registeringListener: " +
+                    onAppsUpdated);
+        }
+        mAllAppsStore.addUpdateListener(onAppsUpdated);
+
+        // This is a focus listener that proxies focus from a view into the list view.  This is to
+        // work around the search box from getting first focus and showing the cursor.
+        setOnFocusChangeListener((v, hasFocus) -> {
+            if (hasFocus && getActiveRecyclerView() != null) {
+                getActiveRecyclerView().requestFocus();
+            }
+        });
+        initContent();
+
+        mSearchTransitionController = new SearchTransitionController(this);
+    }
+
+    /**
+     * Initializes the view hierarchy and internal variables. Any initialization which actually uses
+     * these members should be done in {@link #onFinishInflate()}.
+     * In terms of subclass initialization, the following would be parallel order for activity:
+     *   initContent -> onPreCreate
+     *   constructor/init -> onCreate
+     *   onFinishInflate -> onPostCreate
+     */
+    protected void initContent() {
+        mMainAdapterProvider = createMainAdapterProvider();
+
+        mAH.set(AdapterHolder.MAIN, new AdapterHolder(AdapterHolder.MAIN,
+                new AlphabeticalAppsList<>(mActivityContext, mAllAppsStore, null)));
+        mAH.set(AdapterHolder.WORK, new AdapterHolder(AdapterHolder.WORK,
+                new AlphabeticalAppsList<>(mActivityContext, mAllAppsStore, mWorkManager)));
+        mAH.set(SEARCH, new AdapterHolder(SEARCH,
+                new AlphabeticalAppsList<>(mActivityContext, null, null)));
+
+        getLayoutInflater().inflate(R.layout.all_apps_content, this);
+        mHeader = findViewById(R.id.all_apps_header);
+        mBottomSheetBackground = findViewById(R.id.bottom_sheet_background);
+        mBottomSheetHandleArea = findViewById(R.id.bottom_sheet_handle_area);
+        mSearchRecyclerView = findViewById(R.id.search_results_list_view);
+        mFastScroller = findViewById(R.id.fast_scroller);
+        mFastScroller.setPopupView(findViewById(R.id.fast_scroller_popup));
+
+        // Add the search box above everything else.
+        mSearchContainer = inflateSearchBox();
+        addView(mSearchContainer);
+        mSearchUiManager = (SearchUiManager) mSearchContainer;
+    }
+
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+
+        mAH.get(SEARCH).setup(mSearchRecyclerView,
+                /* Filter out A-Z apps */ itemInfo -> false);
+        rebindAdapters(true /* force */);
+        float cornerRadius = Themes.getDialogCornerRadius(getContext());
+        mBottomSheetCornerRadii = new float[]{
+                cornerRadius,
+                cornerRadius, // Top left radius in px
+                cornerRadius,
+                cornerRadius, // Top right radius in px
+                0,
+                0, // Bottom right
+                0,
+                0 // Bottom left
+        };
+        final TypedValue value = new TypedValue();
+        getContext().getTheme().resolveAttribute(android.R.attr.colorBackground, value, true);
+        mBottomSheetBackgroundColor = value.data;
+        updateBackgroundVisibility(mActivityContext.getDeviceProfile());
+        mSearchUiManager.initializeSearch(this);
+    }
+
+    @Override
+    protected void onAttachedToWindow() {
+        super.onAttachedToWindow();
+        mActivityContext.addOnDeviceProfileChangeListener(this);
+    }
+
+    @Override
+    protected void onDetachedFromWindow() {
+        super.onDetachedFromWindow();
+        mActivityContext.removeOnDeviceProfileChangeListener(this);
     }
 
     public SearchUiManager getSearchUiManager() {
         return mSearchUiManager;
     }
 
+    public View getBottomSheetBackground() {
+        return mBottomSheetBackground;
+    }
+
+    /**
+     * Temporarily force the bottom sheet to be visible on non-tablets.
+     *
+     * @param force {@code true} means bottom sheet will be visible on phones until {@code reset()}.
+     **/
+    public void forceBottomSheetVisible(boolean force) {
+        mForceBottomSheetVisible = force;
+        updateBackgroundVisibility(mActivityContext.getDeviceProfile());
+    }
+
     public View getSearchView() {
         return mSearchContainer;
     }
 
-    /** Updates all apps container with the latest search query. */
-    public void setLastSearchQuery(String query) {
-        Intent marketSearchIntent = PackageManagerHelper.getMarketSearchIntent(
-                mActivityContext, query);
-        OnClickListener marketSearchClickListener = (v) -> mActivityContext.startActivitySafely(v,
-                marketSearchIntent, null);
-        for (int i = 0; i < mAH.size(); i++) {
-            mAH.get(i).mAdapter.setLastSearchQuery(query, marketSearchClickListener);
-        }
-        mIsSearching = true;
-        rebindAdapters();
-        mHeader.setCollapsed(true);
-    }
-
     /** Invoke when the current search session is finished. */
     public void onClearSearchResult() {
-        mIsSearching = false;
-        mHeader.setCollapsed(false);
+        getMainAdapterProvider().clearHighlightedItem();
+        animateToSearchState(false);
         rebindAdapters();
-        mHeader.reset(false);
     }
 
     /**
      * Sets results list for search
      */
     public void setSearchResults(ArrayList<AdapterItem> results) {
+        getMainAdapterProvider().clearHighlightedItem();
         if (getSearchResultList().setSearchResults(results)) {
-            for (int i = 0; i < mAH.size(); i++) {
-                if (mAH.get(i).mRecyclerView != null) {
-                    mAH.get(i).mRecyclerView.onSearchResultsChanged();
-                }
-            }
+            getSearchRecyclerView().onSearchResultsChanged();
+        }
+        if (results != null) {
+            animateToSearchState(true);
         }
     }
 
-    @Override
-    protected final SearchAdapterProvider<?> createMainAdapterProvider() {
-        return mActivityContext.createSearchAdapterProvider(this);
+    /**
+     * Sets results list for search.
+     *
+     * @param searchResultCode indicates if the result is final or intermediate for a given query
+     *                         since we can get search results from multiple sources.
+     */
+    public void setSearchResults(ArrayList<AdapterItem> results, int searchResultCode) {
+        setSearchResults(results);
     }
 
-    @Override
+    private void animateToSearchState(boolean goingToSearch) {
+        animateToSearchState(goingToSearch, DEFAULT_SEARCH_TRANSITION_DURATION_MS);
+    }
+
+    public void setAllAppsTransitionController(
+            AllAppsTransitionController allAppsTransitionController) {
+        mAllAppsTransitionController = allAppsTransitionController;
+    }
+
+    private void animateToSearchState(boolean goingToSearch, long durationMs) {
+        if (!mSearchTransitionController.isRunning() && goingToSearch == isSearching()) {
+            return;
+        }
+        mFastScroller.setVisibility(goingToSearch ? INVISIBLE : VISIBLE);
+        if (goingToSearch) {
+            // Fade out the button to pause work apps.
+            mWorkManager.onActivePageChanged(SEARCH);
+        } else if (mAllAppsTransitionController != null) {
+            // If exiting search, revert predictive back scale on all apps
+            mAllAppsTransitionController.animateAllAppsToNoScale();
+        }
+        mSearchTransitionController.animateToSearchState(goingToSearch, durationMs,
+                /* onEndRunnable = */ () -> {
+                    mIsSearching = goingToSearch;
+                    updateSearchResultsVisibility();
+                    int previousPage = getCurrentPage();
+                    if (mRebindAdaptersAfterSearchAnimation) {
+                        rebindAdapters(false);
+                        mRebindAdaptersAfterSearchAnimation = false;
+                    }
+                    if (!goingToSearch) {
+                        setSearchResults(null);
+                        if (mViewPager != null) {
+                            mViewPager.setCurrentPage(previousPage);
+                        }
+                        onActivePageChanged(previousPage);
+                    }
+                });
+    }
+
     public boolean shouldContainerScroll(MotionEvent ev) {
-        // IF the MotionEvent is inside the search box, and the container keeps on receiving
-        // touch input, container should move down.
-        if (mActivityContext.getDragLayer().isEventOverView(mSearchContainer, ev)) {
+        BaseDragLayer dragLayer = mActivityContext.getDragLayer();
+        // IF the MotionEvent is inside the search box or handle area, and the container keeps on
+        // receiving touch input, container should move down.
+        if (dragLayer.isEventOverView(mSearchContainer, ev)
+                || dragLayer.isEventOverView(mBottomSheetHandleArea, ev)) {
             return true;
         }
-        return super.shouldContainerScroll(ev);
+        AllAppsRecyclerView rv = getActiveRecyclerView();
+        if (rv == null) {
+            return true;
+        }
+        if (rv.getScrollbar() != null
+                && rv.getScrollbar().getThumbOffsetY() >= 0
+                && dragLayer.isEventOverView(rv.getScrollbar(), ev)) {
+            return false;
+        }
+        // Scroll if not within the container view (e.g. over large-screen scrim).
+        if (!dragLayer.isEventOverView(getVisibleContainerView(), ev)) {
+            return true;
+        }
+        return rv.shouldContainerScroll(ev, dragLayer);
     }
 
-    @Override
+    /**
+     * Resets the UI to be ready for fresh interactions in the future. Exits search and returns to
+     * A-Z apps list.
+     *
+     * @param animate Whether to animate the header during the reset (e.g. switching profile tabs).
+     **/
     public void reset(boolean animate) {
-        super.reset(animate);
-        // Reset the search bar after transitioning home.
-        mSearchUiManager.resetSearch();
+        reset(animate, true);
     }
 
-    @Override
-    protected void onFinishInflate() {
-        super.onFinishInflate();
-        mSearchContainer = findViewById(R.id.search_container_all_apps);
-        mSearchUiManager = (SearchUiManager) mSearchContainer;
-        mSearchUiManager.initializeSearch(this);
+    /**
+     * Resets the UI to be ready for fresh interactions in the future.
+     *
+     * @param animate Whether to animate the header during the reset (e.g. switching profile tabs).
+     * @param exitSearch Whether to force exit the search state and return to A-Z apps list.
+     **/
+    public void reset(boolean animate, boolean exitSearch) {
+        for (int i = 0; i < mAH.size(); i++) {
+            if (mAH.get(i).mRecyclerView != null) {
+                mAH.get(i).mRecyclerView.scrollToTop();
+            }
+        }
+        if (mTouchHandler != null) {
+            mTouchHandler.endFastScrolling();
+        }
+        if (mHeader != null && mHeader.getVisibility() == VISIBLE) {
+            mHeader.reset(animate);
+        }
+        forceBottomSheetVisible(false);
+        // Reset the base recycler view after transitioning home.
+        updateHeaderScroll(0);
+        if (exitSearch) {
+            // Reset the search bar after transitioning home.
+            mSearchUiManager.resetSearch();
+            // Animate to A-Z with 0 time to reset the animation with proper state management.
+            animateToSearchState(false, 0);
+        }
+        if (isSearching()) {
+            mWorkManager.reset();
+        }
     }
 
     @Override
@@ -146,50 +455,171 @@
         return super.dispatchKeyEvent(event);
     }
 
-    @Override
     public String getDescription() {
         if (!mUsingTabs && isSearching()) {
             return getContext().getString(R.string.all_apps_search_results);
         } else {
-            return super.getDescription();
+            StringCache cache = mActivityContext.getStringCache();
+            if (mUsingTabs) {
+                if (cache != null) {
+                    return isPersonalTab()
+                            ? cache.allAppsPersonalTabAccessibility
+                            : cache.allAppsWorkTabAccessibility;
+                } else {
+                    return isPersonalTab()
+                            ? getContext().getString(R.string.all_apps_button_personal_label)
+                            : getContext().getString(R.string.all_apps_button_work_label);
+                }
+            }
+            return getContext().getString(R.string.all_apps_button_label);
         }
     }
 
-    @Override
-    protected boolean shouldShowTabs() {
-        return super.shouldShowTabs() && !isSearching();
-    }
-
-    @Override
     public boolean isSearching() {
         return mIsSearching;
     }
 
     @Override
+    public void onActivePageChanged(int currentActivePage) {
+        if (mSearchTransitionController.isRunning()) {
+            // Will be called at the end of the animation.
+            return;
+        }
+        if (mAH.get(currentActivePage).mRecyclerView != null) {
+            mAH.get(currentActivePage).mRecyclerView.bindFastScrollbar(mFastScroller);
+        }
+        // Header keeps track of active recycler view to properly render header protection.
+        mHeader.setActiveRV(currentActivePage);
+        reset(true /* animate */, !isSearching() /* exitSearch */);
+
+        mWorkManager.onActivePageChanged(currentActivePage);
+    }
+
+    protected void rebindAdapters() {
+        rebindAdapters(false /* force */);
+    }
+
     protected void rebindAdapters(boolean force) {
-        super.rebindAdapters(force);
-        if (!FeatureFlags.ENABLE_DEVICE_SEARCH.get()
-                || getMainAdapterProvider().getDecorator() == null) {
+        if (mSearchTransitionController.isRunning()) {
+            mRebindAdaptersAfterSearchAnimation = true;
+            return;
+        }
+        updateSearchResultsVisibility();
+
+        boolean showTabs = shouldShowTabs();
+        if (showTabs == mUsingTabs && !force) {
             return;
         }
 
-        RecyclerView.ItemDecoration decoration = getMainAdapterProvider().getDecorator();
-        mAH.stream()
-                .map(adapterHolder -> adapterHolder.mRecyclerView)
-                .filter(Objects::nonNull)
-                .forEach(v -> {
-                    v.removeItemDecoration(decoration); // Remove in case it is already added.
-                    v.addItemDecoration(decoration);
-                });
+        if (!FeatureFlags.ENABLE_SEARCH_RESULT_BACKGROUND_DRAWABLES.get()) {
+            RecyclerView.ItemDecoration decoration = getMainAdapterProvider().getDecorator();
+            getSearchRecyclerView().removeItemDecoration(decoration);
+            getSearchRecyclerView().addItemDecoration(decoration);
+        }
+
+        // replaceAppsRVcontainer() needs to use both mUsingTabs value to remove the old view AND
+        // showTabs value to create new view. Hence the mUsingTabs new value assignment MUST happen
+        // after this call.
+        replaceAppsRVContainer(showTabs);
+        mUsingTabs = showTabs;
+
+        mAllAppsStore.unregisterIconContainer(mAH.get(AdapterHolder.MAIN).mRecyclerView);
+        mAllAppsStore.unregisterIconContainer(mAH.get(AdapterHolder.WORK).mRecyclerView);
+        mAllAppsStore.unregisterIconContainer(mAH.get(AdapterHolder.SEARCH).mRecyclerView);
+
+        if (mUsingTabs) {
+            mAH.get(AdapterHolder.MAIN).setup(mViewPager.getChildAt(0), mPersonalMatcher);
+            mAH.get(AdapterHolder.WORK).setup(mViewPager.getChildAt(1), mWorkManager.getMatcher());
+            mAH.get(AdapterHolder.WORK).mRecyclerView.setId(R.id.apps_list_view_work);
+            if (FeatureFlags.ENABLE_EXPANDING_PAUSE_WORK_BUTTON.get()) {
+                mAH.get(AdapterHolder.WORK).mRecyclerView.addOnScrollListener(
+                        mWorkManager.newScrollListener());
+            }
+            mViewPager.getPageIndicator().setActiveMarker(AdapterHolder.MAIN);
+            findViewById(R.id.tab_personal)
+                    .setOnClickListener((View view) -> {
+                        if (mViewPager.snapToPage(AdapterHolder.MAIN)) {
+                            mActivityContext.getStatsLogManager().logger()
+                                    .log(LAUNCHER_ALLAPPS_TAP_ON_PERSONAL_TAB);
+                        }
+                        mActivityContext.hideKeyboard();
+                    });
+            findViewById(R.id.tab_work)
+                    .setOnClickListener((View view) -> {
+                        if (mViewPager.snapToPage(AdapterHolder.WORK)) {
+                            mActivityContext.getStatsLogManager().logger()
+                                    .log(LAUNCHER_ALLAPPS_TAP_ON_WORK_TAB);
+                        }
+                        mActivityContext.hideKeyboard();
+                    });
+            setDeviceManagementResources();
+            onActivePageChanged(mViewPager.getNextPage());
+        } else {
+            mAH.get(AdapterHolder.MAIN).setup(findViewById(R.id.apps_list_view), null);
+            mAH.get(AdapterHolder.WORK).mRecyclerView = null;
+        }
+        setupHeader();
+
+        if (isSearchBarOnBottom()) {
+            // Keep the scroller above the search bar.
+            RelativeLayout.LayoutParams scrollerLayoutParams =
+                    (LayoutParams) mFastScroller.getLayoutParams();
+            scrollerLayoutParams.addRule(RelativeLayout.ABOVE, R.id.search_container_all_apps);
+            scrollerLayoutParams.removeRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
+            scrollerLayoutParams.bottomMargin = getResources().getDimensionPixelSize(
+                    R.dimen.fastscroll_bottom_margin_floating_search);
+        }
+
+        mAllAppsStore.registerIconContainer(mAH.get(AdapterHolder.MAIN).mRecyclerView);
+        mAllAppsStore.registerIconContainer(mAH.get(AdapterHolder.WORK).mRecyclerView);
+        mAllAppsStore.registerIconContainer(mAH.get(AdapterHolder.SEARCH).mRecyclerView);
     }
 
-    @Override
-    protected View replaceAppsRVContainer(boolean showTabs) {
-        View rvContainer = super.replaceAppsRVContainer(showTabs);
+    private void replaceAppsRVContainer(boolean showTabs) {
+        for (int i = AdapterHolder.MAIN; i <= AdapterHolder.WORK; i++) {
+            AdapterHolder adapterHolder = mAH.get(i);
+            if (adapterHolder.mRecyclerView != null) {
+                adapterHolder.mRecyclerView.setLayoutManager(null);
+                adapterHolder.mRecyclerView.setAdapter(null);
+            }
+        }
+        View oldView = getAppsRecyclerViewContainer();
+        int index = indexOfChild(oldView);
+        removeView(oldView);
+        int layout = showTabs ? R.layout.all_apps_tabs : R.layout.all_apps_rv_layout;
+        final View rvContainer = getLayoutInflater().inflate(layout, this, false);
+        addView(rvContainer, index);
+        if (showTabs) {
+            mViewPager = (AllAppsPagedView) rvContainer;
+            mViewPager.initParentViews(this);
+            mViewPager.getPageIndicator().setOnActivePageChangedListener(this);
+            mViewPager.setOutlineProvider(new ViewOutlineProvider() {
+                @Override
+                public void getOutline(View view, Outline outline) {
+                    @Px final int bottomOffsetPx =
+                            (int) (ActivityAllAppsContainerView.this.getMeasuredHeight()
+                                    * PREDICTIVE_BACK_MIN_SCALE);
+                    outline.setRect(
+                            0,
+                            0,
+                            view.getMeasuredWidth(),
+                            view.getMeasuredHeight() + bottomOffsetPx);
+                }
+            });
+
+            mWorkManager.reset();
+            post(() -> mAH.get(AdapterHolder.WORK).applyPadding());
+
+        } else {
+            mWorkManager.detachWorkModeSwitch();
+            mViewPager = null;
+        }
 
         removeCustomRules(rvContainer);
         removeCustomRules(getSearchRecyclerView());
-        if (FeatureFlags.ENABLE_FLOATING_SEARCH_BAR.get()) {
+        if (!isSearchSupported()) {
+            layoutWithoutSearchContainer(rvContainer, showTabs);
+        } else if (isSearchBarOnBottom()) {
             alignParentTop(rvContainer, showTabs);
             alignParentTop(getSearchRecyclerView(), /* tabs= */ false);
             layoutAboveSearchContainer(rvContainer);
@@ -199,24 +629,50 @@
             layoutBelowSearchContainer(getSearchRecyclerView(), /* tabs= */ false);
         }
 
-        return rvContainer;
+        updateSearchResultsVisibility();
     }
 
-    @Override
     void setupHeader() {
-        super.setupHeader();
+        mHeader.setVisibility(View.VISIBLE);
+        boolean tabsHidden = !mUsingTabs;
+        mHeader.setup(
+                mAH.get(AdapterHolder.MAIN).mRecyclerView,
+                mAH.get(AdapterHolder.WORK).mRecyclerView,
+                (SearchRecyclerView) mAH.get(SEARCH).mRecyclerView,
+                getCurrentPage(),
+                tabsHidden);
+
+        int padding = mHeader.getMaxTranslation();
+        mAH.forEach(adapterHolder -> {
+            adapterHolder.mPadding.top = padding;
+            adapterHolder.applyPadding();
+            if (adapterHolder.mRecyclerView != null) {
+                adapterHolder.mRecyclerView.scrollToTop();
+            }
+        });
 
         removeCustomRules(mHeader);
-        if (FeatureFlags.ENABLE_FLOATING_SEARCH_BAR.get()) {
+        if (!isSearchSupported()) {
+            layoutWithoutSearchContainer(mHeader, false /* includeTabsMargin */);
+        } else if (isSearchBarOnBottom()) {
             alignParentTop(mHeader, false /* includeTabsMargin */);
         } else {
             layoutBelowSearchContainer(mHeader, false /* includeTabsMargin */);
         }
     }
 
-    @Override
     protected void updateHeaderScroll(int scrolledOffset) {
-        super.updateHeaderScroll(scrolledOffset);
+        float prog1 = Utilities.boundToRange((float) scrolledOffset / mHeaderThreshold, 0f, 1f);
+        int headerColor = getHeaderColor(prog1);
+        int tabsAlpha = mHeader.getPeripheralProtectionHeight() == 0 ? 0
+                : (int) (Utilities.boundToRange(
+                        (scrolledOffset + mHeader.mSnappedScrolledY) / mHeaderThreshold, 0f, 1f)
+                        * 255);
+        if (headerColor != mHeaderColor || mTabsProtectionAlpha != tabsAlpha) {
+            mHeaderColor = headerColor;
+            mTabsProtectionAlpha = tabsAlpha;
+            invalidateHeader();
+        }
         if (mSearchUiManager.getEditText() == null) {
             return;
         }
@@ -231,19 +687,23 @@
         mSearchUiManager.setBackgroundVisibility(bgVisible, 1 - prog);
     }
 
-    @Override
     protected int getHeaderColor(float blendRatio) {
         return ColorUtils.setAlphaComponent(
-                super.getHeaderColor(blendRatio),
+                ColorUtils.blendARGB(mScrimColor, mHeaderProtectionColor, blendRatio),
                 (int) (mSearchContainer.getAlpha() * 255));
     }
 
-    @Override
-    public int getHeaderBottom() {
-        if (FeatureFlags.ENABLE_FLOATING_SEARCH_BAR.get()) {
-            return super.getHeaderBottom();
-        }
-        return super.getHeaderBottom() + mSearchContainer.getBottom();
+    /**
+     * It is up to the search container view created by {@link #inflateSearchBox()} to use the
+     * floating search bar flag to move itself to the bottom of this container. This method checks
+     * if that had been done; otherwise the flag will be ignored.
+     *
+     * @return true if the search bar is at the bottom of the container (as opposed to the top).
+     **/
+    private boolean isSearchBarOnBottom() {
+        return FeatureFlags.ENABLE_FLOATING_SEARCH_BAR.get()
+                && ((RelativeLayout.LayoutParams) mSearchContainer.getLayoutParams()).getRule(
+                ALIGN_PARENT_BOTTOM) == RelativeLayout.TRUE;
     }
 
     private void layoutBelowSearchContainer(View v, boolean includeTabsMargin) {
@@ -282,7 +742,7 @@
         layoutParams.topMargin =
                 includeTabsMargin
                         ? getContext().getResources().getDimensionPixelSize(
-                                R.dimen.all_apps_header_pill_height)
+                        R.dimen.all_apps_header_pill_height)
                         : 0;
     }
 
@@ -297,10 +757,618 @@
         layoutParams.removeRule(RelativeLayout.ALIGN_PARENT_TOP);
     }
 
-    @Override
-    protected BaseAllAppsAdapter<T> createAdapter(AlphabeticalAppsList<T> appsList,
-            BaseAdapterProvider[] adapterProviders) {
+    protected BaseAllAppsAdapter<T> createAdapter(AlphabeticalAppsList<T> appsList) {
         return new AllAppsGridAdapter<>(mActivityContext, getLayoutInflater(), appsList,
-                adapterProviders);
+                mMainAdapterProvider);
+    }
+
+    // TODO(b/216683257): Remove when Taskbar All Apps supports search.
+    protected boolean isSearchSupported() {
+        return true;
+    }
+
+    private void layoutWithoutSearchContainer(View v, boolean includeTabsMargin) {
+        if (!(v.getLayoutParams() instanceof RelativeLayout.LayoutParams)) {
+            return;
+        }
+
+        RelativeLayout.LayoutParams layoutParams = (LayoutParams) v.getLayoutParams();
+        layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
+        layoutParams.topMargin = getContext().getResources().getDimensionPixelSize(includeTabsMargin
+                ? R.dimen.all_apps_header_pill_height
+                : R.dimen.all_apps_header_top_margin);
+    }
+
+    public boolean isInAllApps() {
+        // TODO: Make this abstract
+        return true;
+    }
+
+    /**
+     * Inflates the search box
+     */
+    protected View inflateSearchBox() {
+        return getLayoutInflater().inflate(R.layout.search_container_all_apps, this, false);
+    }
+
+    /** Creates the adapter provider for the main section. */
+    protected SearchAdapterProvider<?> createMainAdapterProvider() {
+        return new DefaultSearchAdapterProvider(mActivityContext);
+    }
+
+    /** The adapter provider for the main section. */
+    public final SearchAdapterProvider<?> getMainAdapterProvider() {
+        return mMainAdapterProvider;
+    }
+
+    @Override
+    protected void dispatchRestoreInstanceState(SparseArray<Parcelable> sparseArray) {
+        try {
+            // Many slice view id is not properly assigned, and hence throws null
+            // pointer exception in the underneath method. Catching the exception
+            // simply doesn't restore these slice views. This doesn't have any
+            // user visible effect because because we query them again.
+            super.dispatchRestoreInstanceState(sparseArray);
+        } catch (Exception e) {
+            Log.e("AllAppsContainerView", "restoreInstanceState viewId = 0", e);
+        }
+
+        Bundle state = (Bundle) sparseArray.get(R.id.work_tab_state_id, null);
+        if (state != null) {
+            int currentPage = state.getInt(BUNDLE_KEY_CURRENT_PAGE, 0);
+            if (currentPage == AdapterHolder.WORK && mViewPager != null) {
+                mViewPager.setCurrentPage(currentPage);
+                rebindAdapters();
+            } else {
+                reset(true);
+            }
+        }
+    }
+
+    @Override
+    protected void dispatchSaveInstanceState(SparseArray<Parcelable> container) {
+        super.dispatchSaveInstanceState(container);
+        Bundle state = new Bundle();
+        state.putInt(BUNDLE_KEY_CURRENT_PAGE, getCurrentPage());
+        container.put(R.id.work_tab_state_id, state);
+    }
+
+    /**
+     * Sets the long click listener for icons
+     */
+    public void setOnIconLongClickListener(OnLongClickListener listener) {
+        for (AdapterHolder holder : mAH) {
+            holder.mAdapter.setOnIconLongClickListener(listener);
+        }
+    }
+
+    public AllAppsStore getAppsStore() {
+        return mAllAppsStore;
+    }
+
+    public WorkProfileManager getWorkManager() {
+        return mWorkManager;
+    }
+
+    @Override
+    public void onDeviceProfileChanged(DeviceProfile dp) {
+        for (AdapterHolder holder : mAH) {
+            holder.mAdapter.setAppsPerRow(dp.numShownAllAppsColumns);
+            if (holder.mRecyclerView != null) {
+                // Remove all views and clear the pool, while keeping the data same. After this
+                // call, all the viewHolders will be recreated.
+                holder.mRecyclerView.swapAdapter(holder.mRecyclerView.getAdapter(), true);
+                holder.mRecyclerView.getRecycledViewPool().clear();
+            }
+        }
+        updateBackgroundVisibility(dp);
+
+        int navBarScrimColor = Themes.getNavBarScrimColor(mActivityContext);
+        if (mNavBarScrimPaint.getColor() != navBarScrimColor) {
+            mNavBarScrimPaint.setColor(navBarScrimColor);
+            invalidate();
+        }
+    }
+
+    protected void updateBackgroundVisibility(DeviceProfile deviceProfile) {
+        boolean visible = deviceProfile.isTablet || mForceBottomSheetVisible;
+        mBottomSheetBackground.setVisibility(visible ? View.VISIBLE : View.GONE);
+        // Note: For tablets, the opaque background and header protection are added in drawOnScrim.
+        // For the taskbar entrypoint, the scrim is drawn by its abstract slide in view container,
+        // so its header protection is derived from this scrim instead.
+    }
+
+    private void setBottomSheetAlpha(float alpha) {
+        // Bottom sheet alpha is always 1 for tablets.
+        mBottomSheetAlpha = mActivityContext.getDeviceProfile().isTablet ? 1f : alpha;
+    }
+
+    private void onAppsUpdated() {
+        mHasWorkApps = Stream.of(mAllAppsStore.getApps()).anyMatch(mWorkManager.getMatcher());
+        if (TestProtocol.sDebugTracing) {
+            Log.d(WORK_TAB_MISSING, "ActivityAllAppsContainerView#onAppsUpdated hasWorkApps: " +
+                    mHasWorkApps + " allApps: " + mAllAppsStore.getApps().length);
+        }
+        if (!isSearching()) {
+            rebindAdapters();
+            if (mHasWorkApps) {
+                mWorkManager.reset();
+            }
+        }
+
+        mActivityContext.getStatsLogManager().logger()
+                .withCardinality(mAllAppsStore.getApps().length)
+                .log(LAUNCHER_ALLAPPS_COUNT);
+    }
+
+    @Override
+    public boolean onInterceptTouchEvent(MotionEvent ev) {
+        // The AllAppsContainerView houses the QSB and is hence visible from the Workspace
+        // Overview states. We shouldn't intercept for the scrubber in these cases.
+        if (!isInAllApps()) {
+            mTouchHandler = null;
+            return false;
+        }
+
+        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+            AllAppsRecyclerView rv = getActiveRecyclerView();
+            if (rv != null && rv.getScrollbar() != null
+                    && rv.getScrollbar().isHitInParent(ev.getX(), ev.getY(), mFastScrollerOffset)) {
+                mTouchHandler = rv.getScrollbar();
+            } else {
+                mTouchHandler = null;
+            }
+        }
+        if (mTouchHandler != null) {
+            return mTouchHandler.handleTouchEvent(ev, mFastScrollerOffset);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent ev) {
+        if (!isInAllApps()) {
+            return false;
+        }
+
+        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+            AllAppsRecyclerView rv = getActiveRecyclerView();
+            if (rv != null && rv.getScrollbar() != null
+                    && rv.getScrollbar().isHitInParent(ev.getX(), ev.getY(), mFastScrollerOffset)) {
+                mTouchHandler = rv.getScrollbar();
+            } else {
+                mTouchHandler = null;
+
+            }
+        }
+        if (mTouchHandler != null) {
+            mTouchHandler.handleTouchEvent(ev, mFastScrollerOffset);
+            return true;
+        }
+        if (isSearching()
+                && mActivityContext.getDragLayer().isEventOverView(getVisibleContainerView(), ev)) {
+            // if in search state, consume touch event.
+            return true;
+        }
+        return false;
+    }
+
+    /** The current active recycler view (A-Z list from one of the profiles, or search results). */
+    public AllAppsRecyclerView getActiveRecyclerView() {
+        if (isSearching()) {
+            return getSearchRecyclerView();
+        }
+        return getActiveAppsRecyclerView();
+    }
+
+    /** The current apps recycler view in the container. */
+    private AllAppsRecyclerView getActiveAppsRecyclerView() {
+        if (!mUsingTabs || isPersonalTab()) {
+            return mAH.get(AdapterHolder.MAIN).mRecyclerView;
+        } else {
+            return mAH.get(AdapterHolder.WORK).mRecyclerView;
+        }
+    }
+
+    /**
+     * The container for A-Z apps (the ViewPager for main+work tabs, or main RV). This is currently
+     * hidden while searching.
+     **/
+    public ViewGroup getAppsRecyclerViewContainer() {
+        return mViewPager != null ? mViewPager : findViewById(R.id.apps_list_view);
+    }
+
+    /** The RV for search results, which is hidden while A-Z apps are visible. */
+    public SearchRecyclerView getSearchRecyclerView() {
+        return mSearchRecyclerView;
+    }
+
+    protected boolean isPersonalTab() {
+        return mViewPager == null || mViewPager.getNextPage() == 0;
+    }
+
+    /**
+     * Switches the current page to the provided {@code tab} if tabs are supported, otherwise does
+     * nothing.
+     */
+    public void switchToTab(int tab) {
+        if (mUsingTabs) {
+            mViewPager.setCurrentPage(tab);
+        }
+    }
+
+    public LayoutInflater getLayoutInflater() {
+        return LayoutInflater.from(getContext());
+    }
+
+    @Override
+    public void onDropCompleted(View target, DragObject d, boolean success) {}
+
+    @Override
+    public void setInsets(Rect insets) {
+        mInsets.set(insets);
+        DeviceProfile grid = mActivityContext.getDeviceProfile();
+
+        applyAdapterSideAndBottomPaddings(grid);
+
+        MarginLayoutParams mlp = (MarginLayoutParams) getLayoutParams();
+        mlp.leftMargin = insets.left;
+        mlp.rightMargin = insets.right;
+        setLayoutParams(mlp);
+
+        if (grid.isVerticalBarLayout()) {
+            setPadding(grid.workspacePadding.left, 0, grid.workspacePadding.right, 0);
+        } else {
+            int topPadding = grid.allAppsTopPadding;
+            if (isSearchBarOnBottom() && !grid.isTablet) {
+                topPadding += getResources().getDimensionPixelSize(
+                        R.dimen.all_apps_additional_top_padding_floating_search);
+            }
+            setPadding(grid.allAppsLeftRightMargin, topPadding, grid.allAppsLeftRightMargin, 0);
+        }
+
+        InsettableFrameLayout.dispatchInsets(this, insets);
+    }
+
+    /**
+     * Returns a padding in case a scrim is shown on the bottom of the view and a padding is needed.
+     */
+    protected int computeNavBarScrimHeight(WindowInsets insets) {
+        return 0;
+    }
+
+    /**
+     * Returns the current height of nav bar scrim
+     */
+    public int getNavBarScrimHeight() {
+        return mNavBarScrimHeight;
+    }
+
+    @Override
+    public WindowInsets dispatchApplyWindowInsets(WindowInsets insets) {
+        mNavBarScrimHeight = computeNavBarScrimHeight(insets);
+        applyAdapterSideAndBottomPaddings(mActivityContext.getDeviceProfile());
+        return super.dispatchApplyWindowInsets(insets);
+    }
+
+    @Override
+    protected void dispatchDraw(Canvas canvas) {
+        super.dispatchDraw(canvas);
+
+        if (mNavBarScrimHeight > 0) {
+            canvas.drawRect(0, getHeight() - mNavBarScrimHeight, getWidth(), getHeight(),
+                    mNavBarScrimPaint);
+        }
+    }
+
+    protected void updateSearchResultsVisibility() {
+        if (isSearching()) {
+            getSearchRecyclerView().setVisibility(VISIBLE);
+            getAppsRecyclerViewContainer().setVisibility(GONE);
+            mHeader.setVisibility(GONE);
+        } else {
+            getSearchRecyclerView().setVisibility(GONE);
+            getAppsRecyclerViewContainer().setVisibility(VISIBLE);
+            mHeader.setVisibility(VISIBLE);
+        }
+        if (mHeader.isSetUp()) {
+            mHeader.setActiveRV(getCurrentPage());
+        }
+    }
+
+    private void applyAdapterSideAndBottomPaddings(DeviceProfile grid) {
+        int bottomPadding = Math.max(mInsets.bottom, mNavBarScrimHeight);
+        mAH.forEach(adapterHolder -> {
+            adapterHolder.mPadding.bottom = bottomPadding;
+            adapterHolder.mPadding.left =
+                    adapterHolder.mPadding.right = grid.allAppsLeftRightPadding;
+            adapterHolder.applyPadding();
+        });
+    }
+
+    private void setDeviceManagementResources() {
+        if (mActivityContext.getStringCache() != null) {
+            Button personalTab = findViewById(R.id.tab_personal);
+            personalTab.setText(mActivityContext.getStringCache().allAppsPersonalTab);
+
+            Button workTab = findViewById(R.id.tab_work);
+            workTab.setText(mActivityContext.getStringCache().allAppsWorkTab);
+        }
+    }
+
+    protected boolean shouldShowTabs() {
+        return mHasWorkApps;
+    }
+
+    // Used by tests only
+    private boolean isDescendantViewVisible(int viewId) {
+        final View view = findViewById(viewId);
+        if (view == null) return false;
+
+        if (!view.isShown()) return false;
+
+        return view.getGlobalVisibleRect(new Rect());
+    }
+
+    @VisibleForTesting
+    public boolean isPersonalTabVisible() {
+        return isDescendantViewVisible(R.id.tab_personal);
+    }
+
+    @VisibleForTesting
+    public boolean isWorkTabVisible() {
+        return isDescendantViewVisible(R.id.tab_work);
+    }
+
+    public AlphabeticalAppsList<T> getSearchResultList() {
+        return mAH.get(SEARCH).mAppsList;
+    }
+
+    public FloatingHeaderView getFloatingHeaderView() {
+        return mHeader;
+    }
+
+    @VisibleForTesting
+    public View getContentView() {
+        return isSearching() ? getSearchRecyclerView() : getAppsRecyclerViewContainer();
+    }
+
+    /** The current page visible in all apps. */
+    public int getCurrentPage() {
+        return isSearching()
+                ? SEARCH
+                : mViewPager == null ? AdapterHolder.MAIN : mViewPager.getNextPage();
+    }
+
+    /**
+     * Adds an update listener to animator that adds springs to the animation.
+     */
+    public void addSpringFromFlingUpdateListener(ValueAnimator animator,
+            float velocity /* release velocity */,
+            float progress /* portion of the distance to travel*/) {
+        animator.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationStart(Animator animator) {
+                float distance = (1 - progress) * getHeight(); // px
+                float settleVelocity = Math.min(0, distance
+                        / (AllAppsTransitionController.INTERP_COEFF * animator.getDuration())
+                        + velocity);
+                absorbSwipeUpVelocity(Math.max(1000, Math.abs(
+                        Math.round(settleVelocity * FLING_VELOCITY_MULTIPLIER))));
+            }
+        });
+    }
+
+    /** Invoked when the container is pulled. */
+    public void onPull(float deltaDistance, float displacement) {
+        absorbPullDeltaDistance(PULL_MULTIPLIER * deltaDistance, PULL_MULTIPLIER * displacement);
+        // Current motion spec is to actually push and not pull
+        // on this surface. However, until EdgeEffect.onPush (b/190612804) is
+        // implemented at view level, we will simply pull
+    }
+
+    @Override
+    public void getDrawingRect(Rect outRect) {
+        super.getDrawingRect(outRect);
+        outRect.offset(0, (int) getTranslationY());
+    }
+
+    @Override
+    public void setTranslationY(float translationY) {
+        super.setTranslationY(translationY);
+        invalidateHeader();
+    }
+
+    public void setScrimView(ScrimView scrimView) {
+        mScrimView = scrimView;
+    }
+
+    @Override
+    public void drawOnScrimWithScale(Canvas canvas, float scale) {
+        final View panel = mBottomSheetBackground;
+        final boolean hasBottomSheet = panel.getVisibility() == VISIBLE;
+        final float translationY = ((View) panel.getParent()).getTranslationY();
+
+        final float horizontalScaleOffset = (1 - scale) * panel.getWidth() / 2;
+        final float verticalScaleOffset = (1 - scale) * (panel.getHeight() - getHeight() / 2);
+
+        final float topNoScale = panel.getTop() + translationY;
+        final float topWithScale = topNoScale + verticalScaleOffset;
+        final float leftWithScale = panel.getLeft() + horizontalScaleOffset;
+        final float rightWithScale = panel.getRight() - horizontalScaleOffset;
+        // Draw full background panel for tablets.
+        if (hasBottomSheet) {
+            mHeaderPaint.setColor(mBottomSheetBackgroundColor);
+            mHeaderPaint.setAlpha((int) (255 * mBottomSheetAlpha));
+
+            mTmpRectF.set(
+                    leftWithScale,
+                    topWithScale,
+                    rightWithScale,
+                    panel.getBottom());
+            mTmpPath.reset();
+            mTmpPath.addRoundRect(mTmpRectF, mBottomSheetCornerRadii, Direction.CW);
+            canvas.drawPath(mTmpPath, mHeaderPaint);
+        }
+
+        if (DEBUG_HEADER_PROTECTION) {
+            mHeaderPaint.setColor(Color.MAGENTA);
+            mHeaderPaint.setAlpha(255);
+        } else {
+            mHeaderPaint.setColor(mHeaderColor);
+            mHeaderPaint.setAlpha((int) (getAlpha() * Color.alpha(mHeaderColor)));
+        }
+        if (mHeaderPaint.getColor() == mScrimColor || mHeaderPaint.getColor() == 0) {
+            return;
+        }
+
+        // Draw header on background panel
+        final float headerBottomNoScale =
+                getHeaderBottom() + getVisibleContainerView().getPaddingTop();
+        final float headerHeightNoScale = headerBottomNoScale - topNoScale;
+        final float headerBottomWithScaleOnTablet = topWithScale + headerHeightNoScale * scale;
+        final float headerBottomOffset = (getVisibleContainerView().getHeight() * (1 - scale) / 2);
+        final float headerBottomWithScaleOnPhone = headerBottomNoScale * scale + headerBottomOffset;
+        final FloatingHeaderView headerView = getFloatingHeaderView();
+        if (hasBottomSheet) {
+            // Start adding header protection if search bar or tabs will attach to the top.
+            if (!FeatureFlags.ENABLE_FLOATING_SEARCH_BAR.get() || mUsingTabs) {
+                mTmpRectF.set(
+                        leftWithScale,
+                        topWithScale,
+                        rightWithScale,
+                        headerBottomWithScaleOnTablet);
+                mTmpPath.reset();
+                mTmpPath.addRoundRect(mTmpRectF, mBottomSheetCornerRadii, Direction.CW);
+                canvas.drawPath(mTmpPath, mHeaderPaint);
+            }
+        } else {
+            canvas.drawRect(0, 0, canvas.getWidth(), headerBottomWithScaleOnPhone, mHeaderPaint);
+        }
+
+        // If tab exist (such as work profile), extend header with tab height
+        final int tabsHeight = headerView.getPeripheralProtectionHeight();
+        if (mTabsProtectionAlpha > 0 && tabsHeight != 0) {
+            if (DEBUG_HEADER_PROTECTION) {
+                mHeaderPaint.setColor(Color.BLUE);
+                mHeaderPaint.setAlpha(255);
+            } else {
+                mHeaderPaint.setAlpha((int) (getAlpha() * mTabsProtectionAlpha));
+            }
+            float left = 0f;
+            float right = canvas.getWidth();
+            if (hasBottomSheet) {
+                left = mBottomSheetBackground.getLeft() + horizontalScaleOffset;
+                right = mBottomSheetBackground.getRight() - horizontalScaleOffset;
+            }
+
+            final float tabTopWithScale = hasBottomSheet
+                    ? headerBottomWithScaleOnTablet
+                    : headerBottomWithScaleOnPhone;
+            final float tabBottomWithScale = tabTopWithScale + tabsHeight * scale;
+
+            canvas.drawRect(
+                    left,
+                    tabTopWithScale,
+                    right,
+                    tabBottomWithScale,
+                    mHeaderPaint);
+        }
+    }
+
+    /**
+     * redraws header protection
+     */
+    public void invalidateHeader() {
+        if (mScrimView != null) {
+            mScrimView.invalidate();
+        }
+    }
+
+    /** Returns the position of the bottom edge of the header */
+    public int getHeaderBottom() {
+        int bottom = (int) getTranslationY() + mHeader.getClipTop();
+        if (isSearchBarOnBottom()) {
+            if (mActivityContext.getDeviceProfile().isTablet) {
+                return bottom + mBottomSheetBackground.getTop();
+            }
+            return bottom;
+        }
+        return bottom + mHeader.getTop();
+    }
+
+    /**
+     * Returns a view that denotes the visible part of all apps container view.
+     */
+    public View getVisibleContainerView() {
+        return mBottomSheetBackground.getVisibility() == VISIBLE ? mBottomSheetBackground : this;
+    }
+
+    protected void onInitializeRecyclerView(RecyclerView rv) {
+        rv.addOnScrollListener(mScrollListener);
+    }
+
+    /** Returns the instance of @{code SearchTransitionController}. */
+    public SearchTransitionController getSearchTransitionController() {
+        return mSearchTransitionController;
+    }
+
+    /** Holds a {@link BaseAllAppsAdapter} and related fields. */
+    public class AdapterHolder {
+        public static final int MAIN = 0;
+        public static final int WORK = 1;
+        public static final int SEARCH = 2;
+
+        private final int mType;
+        public final BaseAllAppsAdapter<T> mAdapter;
+        final RecyclerView.LayoutManager mLayoutManager;
+        final AlphabeticalAppsList<T> mAppsList;
+        final Rect mPadding = new Rect();
+        AllAppsRecyclerView mRecyclerView;
+
+        AdapterHolder(int type, AlphabeticalAppsList<T> appsList) {
+            mType = type;
+            mAppsList = appsList;
+            mAdapter = createAdapter(mAppsList);
+            mAppsList.setAdapter(mAdapter);
+            mLayoutManager = mAdapter.getLayoutManager();
+        }
+
+        void setup(@NonNull View rv, @Nullable Predicate<ItemInfo> matcher) {
+            mAppsList.updateItemFilter(matcher);
+            mRecyclerView = (AllAppsRecyclerView) rv;
+            mRecyclerView.bindFastScrollbar(mFastScroller);
+            mRecyclerView.setEdgeEffectFactory(createEdgeEffectFactory());
+            mRecyclerView.setApps(mAppsList);
+            mRecyclerView.setLayoutManager(mLayoutManager);
+            mRecyclerView.setAdapter(mAdapter);
+            mRecyclerView.setHasFixedSize(true);
+            // No animations will occur when changes occur to the items in this RecyclerView.
+            mRecyclerView.setItemAnimator(null);
+            onInitializeRecyclerView(mRecyclerView);
+            FocusedItemDecorator focusedItemDecorator = new FocusedItemDecorator(mRecyclerView);
+            mRecyclerView.addItemDecoration(focusedItemDecorator);
+            mAdapter.setIconFocusListener(focusedItemDecorator.getFocusListener());
+            applyPadding();
+        }
+
+        void applyPadding() {
+            if (mRecyclerView != null) {
+                int bottomOffset = 0;
+                if (isWork() && mWorkManager.getWorkModeSwitch() != null) {
+                    bottomOffset = mInsets.bottom + mWorkManager.getWorkModeSwitch().getHeight();
+                }
+                mRecyclerView.setPadding(mPadding.left, mPadding.top, mPadding.right,
+                        mPadding.bottom + bottomOffset);
+            }
+        }
+
+        private boolean isWork() {
+            return mType == WORK;
+        }
+
+        private boolean isSearch() {
+            return mType == SEARCH;
+        }
     }
 }
diff --git a/src/com/android/launcher3/allapps/AllAppsBackgroundDrawable.java b/src/com/android/launcher3/allapps/AllAppsBackgroundDrawable.java
deleted file mode 100644
index 3830a93..0000000
--- a/src/com/android/launcher3/allapps/AllAppsBackgroundDrawable.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * Copyright (C) 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.
- */
-package com.android.launcher3.allapps;
-
-import android.animation.ObjectAnimator;
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Canvas;
-import android.graphics.ColorFilter;
-import android.graphics.PixelFormat;
-import android.graphics.Rect;
-import android.graphics.drawable.Drawable;
-import android.view.ContextThemeWrapper;
-import android.view.Gravity;
-
-import com.android.launcher3.LauncherAnimUtils;
-import com.android.launcher3.R;
-import com.android.launcher3.util.Themes;
-
-/**
- * This is a custom composite drawable that has a fixed virtual size and dynamically lays out its
- * children images relatively within its bounds.  This way, we can reduce the memory usage of a
- * single, large sparsely populated image.
- */
-public class AllAppsBackgroundDrawable extends Drawable {
-
-    /**
-     * A helper class to position and orient a drawable to be drawn.
-     */
-    protected static class TransformedImageDrawable {
-        private Drawable mImage;
-        private float mXPercent;
-        private float mYPercent;
-        private int mGravity;
-        private int mAlpha;
-
-        /**
-         * @param gravity If one of the Gravity center values, the x and y offset will take the width
-         *                and height of the image into account to center the image to the offset.
-         */
-        public TransformedImageDrawable(Context context, int resourceId, float xPct, float yPct,
-                int gravity) {
-            mImage = context.getDrawable(resourceId);
-            mXPercent = xPct;
-            mYPercent = yPct;
-            mGravity = gravity;
-        }
-
-        public void setAlpha(int alpha) {
-            mImage.setAlpha(alpha);
-            mAlpha = alpha;
-        }
-
-        public int getAlpha() {
-            return mAlpha;
-        }
-
-        public void updateBounds(Rect bounds) {
-            int width = mImage.getIntrinsicWidth();
-            int height = mImage.getIntrinsicHeight();
-            int left = bounds.left + (int) (mXPercent * bounds.width());
-            int top = bounds.top + (int) (mYPercent * bounds.height());
-            if ((mGravity & Gravity.CENTER_HORIZONTAL) == Gravity.CENTER_HORIZONTAL) {
-                left -= (width / 2);
-            }
-            if ((mGravity & Gravity.CENTER_VERTICAL) == Gravity.CENTER_VERTICAL) {
-                top -= (height / 2);
-            }
-            mImage.setBounds(left, top, left + width, top + height);
-        }
-
-        public void draw(Canvas canvas) {
-            mImage.draw(canvas);
-        }
-
-        public Rect getBounds() {
-            return mImage.getBounds();
-        }
-    }
-
-    protected final TransformedImageDrawable mHand;
-    protected final TransformedImageDrawable[] mIcons;
-    private final int mWidth;
-    private final int mHeight;
-
-    private ObjectAnimator mBackgroundAnim;
-
-    public AllAppsBackgroundDrawable(Context context) {
-        Resources res = context.getResources();
-        mWidth = res.getDimensionPixelSize(R.dimen.all_apps_background_canvas_width);
-        mHeight = res.getDimensionPixelSize(R.dimen.all_apps_background_canvas_height);
-
-        context = new ContextThemeWrapper(context,
-                Themes.getAttrBoolean(context, R.attr.isMainColorDark)
-                        ? R.style.AllAppsEmptySearchBackground_Dark
-                        : R.style.AllAppsEmptySearchBackground);
-        mHand = new TransformedImageDrawable(context, R.drawable.ic_all_apps_bg_hand,
-                0.575f, 0.f, Gravity.CENTER_HORIZONTAL);
-        mIcons = new TransformedImageDrawable[4];
-        mIcons[0] = new TransformedImageDrawable(context, R.drawable.ic_all_apps_bg_icon_1,
-                0.375f, 0, Gravity.CENTER_HORIZONTAL);
-        mIcons[1] = new TransformedImageDrawable(context, R.drawable.ic_all_apps_bg_icon_2,
-                0.3125f, 0.2f, Gravity.CENTER_HORIZONTAL);
-        mIcons[2] = new TransformedImageDrawable(context, R.drawable.ic_all_apps_bg_icon_3,
-                0.475f, 0.26f, Gravity.CENTER_HORIZONTAL);
-        mIcons[3] = new TransformedImageDrawable(context, R.drawable.ic_all_apps_bg_icon_4,
-                0.7f, 0.125f, Gravity.CENTER_HORIZONTAL);
-    }
-
-    /**
-     * Animates the background alpha.
-     */
-    public void animateBgAlpha(float finalAlpha, int duration) {
-        int finalAlphaI = (int) (finalAlpha * 255f);
-        if (getAlpha() != finalAlphaI) {
-            mBackgroundAnim = cancelAnimator(mBackgroundAnim);
-            mBackgroundAnim = ObjectAnimator.ofInt(this, LauncherAnimUtils.DRAWABLE_ALPHA,
-                    finalAlphaI);
-            mBackgroundAnim.setDuration(duration);
-            mBackgroundAnim.start();
-        }
-    }
-
-    /**
-     * Sets the background alpha immediately.
-     */
-    public void setBgAlpha(float finalAlpha) {
-        int finalAlphaI = (int) (finalAlpha * 255f);
-        if (getAlpha() != finalAlphaI) {
-            mBackgroundAnim = cancelAnimator(mBackgroundAnim);
-            setAlpha(finalAlphaI);
-        }
-    }
-
-    @Override
-    public int getIntrinsicWidth() {
-        return mWidth;
-    }
-
-    @Override
-    public int getIntrinsicHeight() {
-        return mHeight;
-    }
-
-    @Override
-    public void draw(Canvas canvas) {
-        mHand.draw(canvas);
-        for (int i = 0; i < mIcons.length; i++) {
-            mIcons[i].draw(canvas);
-        }
-    }
-
-    @Override
-    protected void onBoundsChange(Rect bounds) {
-        super.onBoundsChange(bounds);
-        mHand.updateBounds(bounds);
-        for (int i = 0; i < mIcons.length; i++) {
-            mIcons[i].updateBounds(bounds);
-        }
-        invalidateSelf();
-    }
-
-    @Override
-    public void setAlpha(int alpha) {
-        mHand.setAlpha(alpha);
-        for (int i = 0; i < mIcons.length; i++) {
-            mIcons[i].setAlpha(alpha);
-        }
-        invalidateSelf();
-    }
-
-    @Override
-    public int getAlpha() {
-        return mHand.getAlpha();
-    }
-
-    @Override
-    public void setColorFilter(ColorFilter colorFilter) {
-        // Do nothing
-    }
-
-    @Override
-    public int getOpacity() {
-        return PixelFormat.TRANSLUCENT;
-    }
-
-    private ObjectAnimator cancelAnimator(ObjectAnimator animator) {
-        if (animator != null) {
-            animator.cancel();
-        }
-        return null;
-    }
-}
diff --git a/src/com/android/launcher3/allapps/AllAppsGridAdapter.java b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java
index 33d2f2b..df383bf 100644
--- a/src/com/android/launcher3/allapps/AllAppsGridAdapter.java
+++ b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java
@@ -26,10 +26,14 @@
 import androidx.core.view.accessibility.AccessibilityRecordCompat;
 import androidx.recyclerview.widget.GridLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.Adapter;
 
+import com.android.launcher3.allapps.search.SearchAdapterProvider;
+import com.android.launcher3.util.ScrollableLayoutManager;
 import com.android.launcher3.views.ActivityContext;
 
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 /**
  * The grid view adapter of all the apps.
@@ -40,32 +44,62 @@
         BaseAllAppsAdapter<T> {
 
     public static final String TAG = "AppsGridAdapter";
-    private final GridLayoutManager mGridLayoutMgr;
-    private final GridSpanSizer mGridSizer;
+    private final AppsGridLayoutManager mGridLayoutMgr;
+    private final CopyOnWriteArrayList<OnLayoutCompletedListener> mOnLayoutCompletedListeners =
+            new CopyOnWriteArrayList<>();
+
+    /**
+     * Listener for {@link RecyclerView.LayoutManager#onLayoutCompleted(RecyclerView.State)}
+     */
+    public interface OnLayoutCompletedListener {
+        void onLayoutCompleted();
+    }
+
+    /**
+     * Adds a {@link OnLayoutCompletedListener} to receive a callback when {@link
+     * RecyclerView.LayoutManager#onLayoutCompleted(RecyclerView.State)} is called
+     */
+    public void addOnLayoutCompletedListener(OnLayoutCompletedListener listener) {
+        mOnLayoutCompletedListeners.add(listener);
+    }
+
+    /**
+     * Removes a {@link OnLayoutCompletedListener} to not receive a callback when {@link
+     * RecyclerView.LayoutManager#onLayoutCompleted(RecyclerView.State)} is called
+     */
+    public void removeOnLayoutCompletedListener(OnLayoutCompletedListener listener) {
+        mOnLayoutCompletedListeners.remove(listener);
+    }
+
 
     public AllAppsGridAdapter(T activityContext, LayoutInflater inflater,
-            AlphabeticalAppsList apps, BaseAdapterProvider[] adapterProviders) {
-        super(activityContext, inflater, apps, adapterProviders);
-        mGridSizer = new GridSpanSizer();
+            AlphabeticalAppsList apps, SearchAdapterProvider<?> adapterProvider) {
+        super(activityContext, inflater, apps, adapterProvider);
         mGridLayoutMgr = new AppsGridLayoutManager(mActivityContext);
-        mGridLayoutMgr.setSpanSizeLookup(mGridSizer);
+        mGridLayoutMgr.setSpanSizeLookup(new GridSpanSizer());
         setAppsPerRow(activityContext.getDeviceProfile().numShownAllAppsColumns);
     }
 
     /**
      * Returns the grid layout manager.
      */
-    public RecyclerView.LayoutManager getLayoutManager() {
+    public AppsGridLayoutManager getLayoutManager() {
         return mGridLayoutMgr;
     }
 
+    /** @return the column index that the given adapter index falls. */
+    public int getSpanIndex(int adapterIndex) {
+        AppsGridLayoutManager lm = getLayoutManager();
+        return lm.getSpanSizeLookup().getSpanIndex(adapterIndex, lm.getSpanCount());
+    }
+
     /**
      * A subclass of GridLayoutManager that overrides accessibility values during app search.
      */
-    public class AppsGridLayoutManager extends GridLayoutManager {
+    public class AppsGridLayoutManager extends ScrollableLayoutManager {
 
         public AppsGridLayoutManager(Context context) {
-            super(context, 1, GridLayoutManager.VERTICAL, false);
+            super(context);
         }
 
         @Override
@@ -125,17 +159,32 @@
             }
             return extraRows;
         }
+
+        @Override
+        public void onLayoutCompleted(RecyclerView.State state) {
+            super.onLayoutCompleted(state);
+            for (OnLayoutCompletedListener listener : mOnLayoutCompletedListeners) {
+                listener.onLayoutCompleted();
+            }
+        }
+
+        @Override
+        protected int incrementTotalHeight(Adapter adapter, int position, int heightUntilLastPos) {
+            AllAppsGridAdapter.AdapterItem item = mApps.getAdapterItems().get(position);
+            // only account for the first icon in the row since they are the same size within a row
+            return (isIconViewType(item.viewType) && item.rowAppIndex != 0)
+                    ? heightUntilLastPos
+                    : (heightUntilLastPos + mCachedSizes.get(item.viewType));
+        }
     }
 
     @Override
     public void setAppsPerRow(int appsPerRow) {
         mAppsPerRow = appsPerRow;
         int totalSpans = mAppsPerRow;
-        for (BaseAdapterProvider adapterProvider : mAdapterProviders) {
-            for (int itemPerRow : adapterProvider.getSupportedItemsPerRowArray()) {
-                if (totalSpans % itemPerRow != 0) {
-                    totalSpans *= itemPerRow;
-                }
+        for (int itemPerRow : mAdapterProvider.getSupportedItemsPerRowArray()) {
+            if (totalSpans % itemPerRow != 0) {
+                totalSpans *= itemPerRow;
             }
         }
         mGridLayoutMgr.setSpanCount(totalSpans);
@@ -153,14 +202,17 @@
 
         @Override
         public int getSpanSize(int position) {
-            int viewType = mApps.getAdapterItems().get(position).viewType;
             int totalSpans = mGridLayoutMgr.getSpanCount();
+            List<AdapterItem> items = mApps.getAdapterItems();
+            if (position >= items.size()) {
+                return totalSpans;
+            }
+            int viewType = items.get(position).viewType;
             if (isIconViewType(viewType)) {
                 return totalSpans / mAppsPerRow;
             } else {
-                BaseAdapterProvider adapterProvider = getAdapterProvider(viewType);
-                if (adapterProvider != null) {
-                    return totalSpans / adapterProvider.getItemsPerRow(viewType, mAppsPerRow);
+                if (mAdapterProvider.isViewSupported(viewType)) {
+                    return totalSpans / mAdapterProvider.getItemsPerRow(viewType, mAppsPerRow);
                 }
 
                 // Section breaks span the full width
diff --git a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java
index af17cf7..7c5c003 100644
--- a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java
+++ b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java
@@ -15,35 +15,34 @@
  */
 package com.android.launcher3.allapps;
 
-import static android.view.View.MeasureSpec.UNSPECIFIED;
-
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_SCROLLED;
+import static com.android.launcher3.logger.LauncherAtom.ContainerInfo;
+import static com.android.launcher3.logger.LauncherAtom.SearchResultContainer;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_PERSONAL_SCROLLED_DOWN;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_PERSONAL_SCROLLED_UP;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_SCROLLED_UNKNOWN_DIRECTION;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_SEARCH_SCROLLED_DOWN;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_SEARCH_SCROLLED_UP;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_VERTICAL_SWIPE_BEGIN;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_VERTICAL_SWIPE_END;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_WORK_FAB_BUTTON_COLLAPSE;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_WORK_FAB_BUTTON_EXTEND;
 import static com.android.launcher3.util.LogConfig.SEARCH_LOGGING;
-import static com.android.launcher3.util.UiThreadHelper.hideKeyboardAsync;
 
 import android.content.Context;
-import android.content.res.Resources;
 import android.graphics.Canvas;
-import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
 import android.util.Log;
-import android.util.SparseIntArray;
-import android.view.MotionEvent;
-import android.view.View;
 
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.ExtendedEditText;
 import com.android.launcher3.FastScrollRecyclerView;
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.logging.StatsLogManager;
 import com.android.launcher3.views.ActivityContext;
-import com.android.launcher3.views.RecyclerViewFastScroller;
 
 import java.util.List;
 
@@ -55,44 +54,11 @@
     private static final boolean DEBUG = false;
     private static final boolean DEBUG_LATENCY = Utilities.isPropertyEnabled(SEARCH_LOGGING);
 
-    protected AlphabeticalAppsList<?> mApps;
     protected final int mNumAppsPerRow;
-
-    // The specific view heights that we use to calculate scroll
-    private final SparseIntArray mViewHeights = new SparseIntArray();
-    private final SparseIntArray mCachedScrollPositions = new SparseIntArray();
     private final AllAppsFastScrollHelper mFastScrollHelper;
+    private int mCumulativeVerticalScroll;
 
-
-    private final AdapterDataObserver mObserver = new RecyclerView.AdapterDataObserver() {
-        public void onChanged() {
-            mCachedScrollPositions.clear();
-        }
-
-        @Override
-        public void onItemRangeChanged(int positionStart, int itemCount) {
-            onChanged();
-        }
-
-        @Override
-        public void onItemRangeInserted(int positionStart, int itemCount) {
-            onChanged();
-        }
-
-        @Override
-        public void onItemRangeRemoved(int positionStart, int itemCount) {
-            onChanged();
-        }
-
-        @Override
-        public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) {
-            onChanged();
-        }
-    };
-
-    // The empty-search result background
-    protected AllAppsBackgroundDrawable mEmptySearchBackground;
-    protected int mEmptySearchBackgroundTopOffset;
+    protected AlphabeticalAppsList<?> mApps;
 
     public AllAppsRecyclerView(Context context) {
         this(context, null);
@@ -109,9 +75,6 @@
     public AllAppsRecyclerView(Context context, AttributeSet attrs, int defStyleAttr,
             int defStyleRes) {
         super(context, attrs, defStyleAttr);
-        Resources res = getResources();
-        mEmptySearchBackgroundTopOffset = res.getDimensionPixelSize(
-                R.dimen.all_apps_empty_search_bg_top_offset);
         mNumAppsPerRow = LauncherAppState.getIDP(context).numColumns;
         mFastScrollHelper = new AllAppsFastScrollHelper(this);
     }
@@ -133,21 +96,12 @@
         int approxRows = (int) Math.ceil(grid.availableHeightPx / grid.allAppsIconSizePx);
         pool.setMaxRecycledViews(AllAppsGridAdapter.VIEW_TYPE_EMPTY_SEARCH, 1);
         pool.setMaxRecycledViews(AllAppsGridAdapter.VIEW_TYPE_ALL_APPS_DIVIDER, 1);
-        pool.setMaxRecycledViews(AllAppsGridAdapter.VIEW_TYPE_SEARCH_MARKET, 1);
         pool.setMaxRecycledViews(AllAppsGridAdapter.VIEW_TYPE_ICON, approxRows
                 * (mNumAppsPerRow + 1));
-
-        mViewHeights.clear();
-        mViewHeights.put(AllAppsGridAdapter.VIEW_TYPE_ICON, grid.allAppsCellHeightPx);
     }
 
-
     @Override
     public void onDraw(Canvas c) {
-        // Draw the background
-        if (mEmptySearchBackground != null && mEmptySearchBackground.getAlpha() > 0) {
-            mEmptySearchBackground.draw(c);
-        }
         if (DEBUG) {
             Log.d(TAG, "onDraw at = " + System.currentTimeMillis());
         }
@@ -159,33 +113,13 @@
     }
 
     @Override
-    protected boolean verifyDrawable(Drawable who) {
-        return who == mEmptySearchBackground || super.verifyDrawable(who);
-    }
-
-    @Override
     protected void onSizeChanged(int w, int h, int oldw, int oldh) {
-        updateEmptySearchBackgroundBounds();
         updatePoolSize();
     }
 
     public void onSearchResultsChanged() {
         // Always scroll the view to the top so the user can see the changed results
         scrollToTop();
-
-        if (mApps.hasNoFilteredResults() && !FeatureFlags.ENABLE_DEVICE_SEARCH.get()) {
-            if (mEmptySearchBackground == null) {
-                mEmptySearchBackground = new AllAppsBackgroundDrawable(getContext());
-                mEmptySearchBackground.setAlpha(0);
-                mEmptySearchBackground.setCallback(this);
-                updateEmptySearchBackgroundBounds();
-            }
-            mEmptySearchBackground.animateBgAlpha(1f, 150);
-        } else if (mEmptySearchBackground != null) {
-            // For the time being, we just immediately hide the background to ensure that it does
-            // not overlap with the results
-            mEmptySearchBackground.setBgAlpha(0f);
-        }
     }
 
     @Override
@@ -195,28 +129,24 @@
         StatsLogManager mgr = ActivityContext.lookupContext(getContext()).getStatsLogManager();
         switch (state) {
             case SCROLL_STATE_DRAGGING:
-                mgr.logger().log(LAUNCHER_ALLAPPS_SCROLLED);
+                mCumulativeVerticalScroll = 0;
                 requestFocus();
                 mgr.logger().sendToInteractionJankMonitor(
                         LAUNCHER_ALLAPPS_VERTICAL_SWIPE_BEGIN, this);
-                hideKeyboardAsync(ActivityContext.lookupContext(getContext()),
-                        getApplicationWindowToken());
+                ActivityContext.lookupContext(getContext()).hideKeyboard();
                 break;
             case SCROLL_STATE_IDLE:
                 mgr.logger().sendToInteractionJankMonitor(
                         LAUNCHER_ALLAPPS_VERTICAL_SWIPE_END, this);
+                logCumulativeVerticalScroll();
                 break;
         }
     }
 
     @Override
-    public boolean onInterceptTouchEvent(MotionEvent e) {
-        boolean result = super.onInterceptTouchEvent(e);
-        if (!result && e.getAction() == MotionEvent.ACTION_DOWN
-                && mEmptySearchBackground != null && mEmptySearchBackground.getAlpha() > 0) {
-            mEmptySearchBackground.setHotspot(e.getX(), e.getY());
-        }
-        return result;
+    public void onScrolled(int dx, int dy) {
+        super.onScrolled(dx, dy);
+        mCumulativeVerticalScroll += dy;
     }
 
     /**
@@ -249,17 +179,6 @@
     }
 
     @Override
-    public void setAdapter(Adapter adapter) {
-        if (getAdapter() != null) {
-            getAdapter().unregisterAdapterDataObserver(mObserver);
-        }
-        super.setAdapter(adapter);
-        if (adapter != null) {
-            adapter.registerAdapterDataObserver(mObserver);
-        }
-    }
-
-    @Override
     protected boolean isPaddingOffsetRequired() {
         return true;
     }
@@ -280,13 +199,13 @@
         List<AllAppsGridAdapter.AdapterItem> items = mApps.getAdapterItems();
 
         // Skip early if there are no items or we haven't been measured
-        if (items.isEmpty() || mNumAppsPerRow == 0) {
+        if (items.isEmpty() || mNumAppsPerRow == 0 || getChildCount() == 0) {
             mScrollbar.setThumbOffsetY(-1);
             return;
         }
 
         // Skip early if, there no child laid out in the container.
-        int scrollY = getCurrentScrollY();
+        int scrollY = computeVerticalScrollOffset();
         if (scrollY < 0) {
             mScrollbar.setThumbOffsetY(-1);
             return;
@@ -342,103 +261,57 @@
     }
 
     @Override
-    public int getCurrentScrollY() {
-        // Return early if there are no items or we haven't been measured
-        List<AllAppsGridAdapter.AdapterItem> items = mApps.getAdapterItems();
-        if (items.isEmpty() || mNumAppsPerRow == 0 || getChildCount() == 0) {
-            return -1;
-        }
-
-        // Calculate the y and offset for the item
-        View child = getChildAt(0);
-        int position = getChildAdapterPosition(child);
-        if (position == NO_POSITION) {
-            return -1;
-        }
-        return getPaddingTop() +
-                getCurrentScrollY(position, getLayoutManager().getDecoratedTop(child));
-    }
-
-    public int getCurrentScrollY(int position, int offset) {
-        List<AllAppsGridAdapter.AdapterItem> items = mApps.getAdapterItems();
-        AllAppsGridAdapter.AdapterItem posItem = position < items.size()
-                ? items.get(position) : null;
-        int y = mCachedScrollPositions.get(position, -1);
-        if (y < 0) {
-            y = 0;
-            for (int i = 0; i < position; i++) {
-                AllAppsGridAdapter.AdapterItem item = items.get(i);
-                if (AllAppsGridAdapter.isIconViewType(item.viewType)) {
-                    // Break once we reach the desired row
-                    if (posItem != null && posItem.viewType == item.viewType &&
-                            posItem.rowIndex == item.rowIndex) {
-                        break;
-                    }
-                    // Otherwise, only account for the first icon in the row since they are the same
-                    // size within a row
-                    if (item.rowAppIndex == 0) {
-                        y += mViewHeights.get(item.viewType, 0);
-                    }
-                } else {
-                    // Rest of the views span the full width
-                    int elHeight = mViewHeights.get(item.viewType);
-                    if (elHeight == 0) {
-                        ViewHolder holder = findViewHolderForAdapterPosition(i);
-                        if (holder == null) {
-                            holder = getAdapter().createViewHolder(this, item.viewType);
-                            getAdapter().onBindViewHolder(holder, i);
-                            holder.itemView.measure(UNSPECIFIED, UNSPECIFIED);
-                            elHeight = holder.itemView.getMeasuredHeight();
-
-                            getRecycledViewPool().putRecycledView(holder);
-                        } else {
-                            elHeight = holder.itemView.getMeasuredHeight();
-                        }
-                    }
-                    y += elHeight;
-                }
-            }
-            mCachedScrollPositions.put(position, y);
-        }
-        return y - offset;
-    }
-
-    /**
-     * Returns the available scroll height:
-     * AvailableScrollHeight = Total height of the all items - last page height
-     */
-    @Override
-    protected int getAvailableScrollHeight() {
-        return getPaddingTop() + getCurrentScrollY(getAdapter().getItemCount(), 0)
-                - getHeight() + getPaddingBottom();
-    }
-
     public int getScrollBarTop() {
-        return getResources().getDimensionPixelOffset(R.dimen.all_apps_header_top_padding);
+        return ActivityContext.lookupContext(getContext()).getAppsView().isSearchSupported()
+                ? getResources().getDimensionPixelOffset(R.dimen.all_apps_header_top_padding)
+                : 0;
     }
 
-    public RecyclerViewFastScroller getScrollbar() {
-        return mScrollbar;
-    }
-
-    /**
-     * Updates the bounds of the empty search background.
-     */
-    private void updateEmptySearchBackgroundBounds() {
-        if (mEmptySearchBackground == null) {
-            return;
-        }
-
-        // Center the empty search background on this new view bounds
-        int x = (getMeasuredWidth() - mEmptySearchBackground.getIntrinsicWidth()) / 2;
-        int y = mEmptySearchBackgroundTopOffset;
-        mEmptySearchBackground.setBounds(x, y,
-                x + mEmptySearchBackground.getIntrinsicWidth(),
-                y + mEmptySearchBackground.getIntrinsicHeight());
+    @Override
+    public int getScrollBarMarginBottom() {
+        return getRootWindowInsets() == null ? 0
+                : getRootWindowInsets().getSystemWindowInsetBottom();
     }
 
     @Override
     public boolean hasOverlappingRendering() {
         return false;
     }
+
+    private void logCumulativeVerticalScroll() {
+        ActivityContext context = ActivityContext.lookupContext(getContext());
+        StatsLogManager mgr = context.getStatsLogManager();
+        ActivityAllAppsContainerView<?> appsView = context.getAppsView();
+        ExtendedEditText editText = appsView.getSearchUiManager().getEditText();
+        ContainerInfo containerInfo = ContainerInfo.newBuilder().setSearchResultContainer(
+                SearchResultContainer
+                        .newBuilder()
+                        .setQueryLength((editText == null) ? -1 : editText.length())).build();
+        if (mCumulativeVerticalScroll == 0) {
+            // mCumulativeVerticalScroll == 0 when user comes back to original position, we
+            // don't know the direction of scrolling.
+            mgr.logger().withContainerInfo(containerInfo).log(
+                    LAUNCHER_ALLAPPS_SCROLLED_UNKNOWN_DIRECTION);
+            return;
+        } else if (appsView.isSearching()) {
+            // In search results page
+            mgr.logger().withContainerInfo(containerInfo).log((mCumulativeVerticalScroll > 0)
+                    ? LAUNCHER_ALLAPPS_SEARCH_SCROLLED_DOWN
+                    : LAUNCHER_ALLAPPS_SEARCH_SCROLLED_UP);
+            return;
+        } else if (appsView.mViewPager != null) {
+            int currentPage = appsView.mViewPager.getCurrentPage();
+            if (currentPage == ActivityAllAppsContainerView.AdapterHolder.WORK) {
+                // In work A-Z list
+                mgr.logger().withContainerInfo(containerInfo).log((mCumulativeVerticalScroll > 0)
+                        ? LAUNCHER_WORK_FAB_BUTTON_COLLAPSE
+                        : LAUNCHER_WORK_FAB_BUTTON_EXTEND);
+                return;
+            }
+        }
+        // In personal A-Z list
+        mgr.logger().withContainerInfo(containerInfo).log((mCumulativeVerticalScroll > 0)
+                ? LAUNCHER_ALLAPPS_PERSONAL_SCROLLED_DOWN
+                : LAUNCHER_ALLAPPS_PERSONAL_SCROLLED_UP);
+    }
 }
diff --git a/src/com/android/launcher3/allapps/AllAppsStore.java b/src/com/android/launcher3/allapps/AllAppsStore.java
index 7bc3eec..06af970 100644
--- a/src/com/android/launcher3/allapps/AllAppsStore.java
+++ b/src/com/android/launcher3/allapps/AllAppsStore.java
@@ -18,7 +18,10 @@
 import static com.android.launcher3.model.data.AppInfo.COMPONENT_KEY_COMPARATOR;
 import static com.android.launcher3.model.data.AppInfo.EMPTY_ARRAY;
 import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_SHOW_DOWNLOAD_PROGRESS_MASK;
+import static com.android.launcher3.testing.shared.TestProtocol.WORK_TAB_MISSING;
 
+import android.os.UserHandle;
+import android.util.Log;
 import android.view.View;
 import android.view.ViewGroup;
 
@@ -27,12 +30,15 @@
 import com.android.launcher3.BubbleTextView;
 import com.android.launcher3.model.data.AppInfo;
 import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.util.ComponentKey;
 import com.android.launcher3.util.PackageUserKey;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.function.Consumer;
 import java.util.function.Predicate;
@@ -54,8 +60,8 @@
 
     private final List<OnUpdateListener> mUpdateListeners = new CopyOnWriteArrayList<>();
     private final ArrayList<ViewGroup> mIconContainers = new ArrayList<>();
+    private Map<PackageUserKey, Integer> mPackageUserKeytoUidMap = Collections.emptyMap();
     private int mModelFlags;
-
     private int mDeferUpdatesFlags = 0;
     private boolean mUpdatePending = false;
 
@@ -64,12 +70,21 @@
     }
 
     /**
-     * Sets the current set of apps.
+     * Sets the current set of apps and sets mapping for {@link PackageUserKey} to Uid for
+     * the current set of apps.
      */
-    public void setApps(AppInfo[] apps, int flags) {
+    public void setApps(AppInfo[] apps, int flags, Map<PackageUserKey, Integer> map) {
         mApps = apps;
         mModelFlags = flags;
         notifyUpdate();
+        mPackageUserKeytoUidMap = map;
+    }
+
+    /**
+     * Look up for Uid using package name and user handle for the current set of apps.
+     */
+    public int lookUpForUid(String packageName, UserHandle user) {
+        return mPackageUserKeytoUidMap.getOrDefault(new PackageUserKey(packageName, user), -1);
     }
 
     /**
@@ -119,6 +134,9 @@
             return;
         }
         for (OnUpdateListener listener : mUpdateListeners) {
+            if (TestProtocol.sDebugTracing) {
+                Log.d(WORK_TAB_MISSING, "AllAppsStore#notifyUpdate listener: " + listener);
+            }
             listener.onAppsUpdated();
         }
     }
diff --git a/src/com/android/launcher3/allapps/AllAppsTransitionController.java b/src/com/android/launcher3/allapps/AllAppsTransitionController.java
index a4a2085..d4f152a 100644
--- a/src/com/android/launcher3/allapps/AllAppsTransitionController.java
+++ b/src/com/android/launcher3/allapps/AllAppsTransitionController.java
@@ -15,38 +15,57 @@
  */
 package com.android.launcher3.allapps;
 
+import static com.android.launcher3.LauncherAnimUtils.SCALE_PROPERTY;
+import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_Y;
 import static com.android.launcher3.LauncherState.ALL_APPS;
 import static com.android.launcher3.LauncherState.ALL_APPS_CONTENT;
 import static com.android.launcher3.LauncherState.NORMAL;
 import static com.android.launcher3.anim.Interpolators.DEACCEL_1_7;
+import static com.android.launcher3.anim.Interpolators.INSTANT;
 import static com.android.launcher3.anim.Interpolators.LINEAR;
 import static com.android.launcher3.anim.PropertySetter.NO_ANIM_PROPERTY_SETTER;
+import static com.android.launcher3.states.StateAnimationConfig.ANIM_ALL_APPS_BOTTOM_SHEET_FADE;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_ALL_APPS_FADE;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_VERTICAL_PROGRESS;
-import static com.android.launcher3.util.SystemUiController.UI_STATE_ALLAPPS;
+import static com.android.launcher3.util.SystemUiController.FLAG_DARK_NAV;
+import static com.android.launcher3.util.SystemUiController.FLAG_LIGHT_NAV;
+import static com.android.launcher3.util.SystemUiController.UI_STATE_ALL_APPS;
 
 import android.animation.Animator;
 import android.animation.Animator.AnimatorListener;
 import android.animation.ObjectAnimator;
+import android.animation.ValueAnimator;
 import android.util.FloatProperty;
 import android.view.HapticFeedbackConstants;
 import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewParent;
 import android.view.animation.Interpolator;
 
+import androidx.annotation.FloatRange;
+import androidx.annotation.Nullable;
+
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherState;
+import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.anim.AnimatorListeners;
+import com.android.launcher3.anim.Interpolators;
 import com.android.launcher3.anim.PendingAnimation;
 import com.android.launcher3.anim.PropertySetter;
 import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.statemanager.StateManager.StateHandler;
 import com.android.launcher3.states.StateAnimationConfig;
-import com.android.launcher3.util.MultiAdditivePropertyFactory;
+import com.android.launcher3.touch.AllAppsSwipeController;
+import com.android.launcher3.util.MultiPropertyFactory;
+import com.android.launcher3.util.MultiPropertyFactory.MultiProperty;
 import com.android.launcher3.util.MultiValueAlpha;
-import com.android.launcher3.util.UiThreadHelper;
+import com.android.launcher3.util.ScrollableLayoutManager;
+import com.android.launcher3.util.Themes;
+import com.android.launcher3.util.VibratorWrapper;
 import com.android.launcher3.views.ScrimView;
 
 /**
@@ -63,6 +82,11 @@
         implements StateHandler<LauncherState>, OnDeviceProfileChangeListener {
     // This constant should match the second derivative of the animator interpolator.
     public static final float INTERP_COEFF = 1.7f;
+    public static final int REVERT_SWIPE_ALL_APPS_TO_HOME_ANIMATION_DURATION_MS = 200;
+
+    private static final float NAV_BAR_COLOR_FORCE_UPDATE_THRESHOLD = 0.1f;
+    private static final float SWIPE_DRAG_COMMIT_THRESHOLD =
+            1 - AllAppsSwipeController.ALL_APPS_STATE_TRANSITION_MANUAL;
 
     public static final FloatProperty<AllAppsTransitionController> ALL_APPS_PROGRESS =
             new FloatProperty<AllAppsTransitionController>("allAppsProgress") {
@@ -78,6 +102,8 @@
                 }
             };
 
+    private static final float ALL_APPS_PULL_BACK_TRANSLATION_DEFAULT = 0f;
+
     public static final FloatProperty<AllAppsTransitionController> ALL_APPS_PULL_BACK_TRANSLATION =
             new FloatProperty<AllAppsTransitionController>("allAppsPullBackTranslation") {
 
@@ -86,8 +112,7 @@
                     if (controller.mIsTablet) {
                         return controller.mAppsView.getActiveRecyclerView().getTranslationY();
                     } else {
-                        return controller.getAppsViewPullbackTranslationY().get(
-                                controller.mAppsView);
+                        return controller.getAppsViewPullbackTranslationY().getValue();
                     }
                 }
 
@@ -95,13 +120,18 @@
                 public void setValue(AllAppsTransitionController controller, float translation) {
                     if (controller.mIsTablet) {
                         controller.mAppsView.getActiveRecyclerView().setTranslationY(translation);
+                        controller.getAppsViewPullbackTranslationY().setValue(
+                                ALL_APPS_PULL_BACK_TRANSLATION_DEFAULT);
                     } else {
-                        controller.getAppsViewPullbackTranslationY().set(controller.mAppsView,
-                                translation);
+                        controller.getAppsViewPullbackTranslationY().setValue(translation);
+                        controller.mAppsView.getActiveRecyclerView().setTranslationY(
+                                ALL_APPS_PULL_BACK_TRANSLATION_DEFAULT);
                     }
                 }
             };
 
+    private static final float ALL_APPS_PULL_BACK_ALPHA_DEFAULT = 1f;
+
     public static final FloatProperty<AllAppsTransitionController> ALL_APPS_PULL_BACK_ALPHA =
             new FloatProperty<AllAppsTransitionController>("allAppsPullBackAlpha") {
 
@@ -118,8 +148,12 @@
                 public void setValue(AllAppsTransitionController controller, float alpha) {
                     if (controller.mIsTablet) {
                         controller.mAppsView.getActiveRecyclerView().setAlpha(alpha);
+                        controller.getAppsViewPullbackAlpha().setValue(
+                                ALL_APPS_PULL_BACK_ALPHA_DEFAULT);
                     } else {
                         controller.getAppsViewPullbackAlpha().setValue(alpha);
+                        controller.mAppsView.getActiveRecyclerView().setAlpha(
+                                ALL_APPS_PULL_BACK_ALPHA_DEFAULT);
                     }
                 }
             };
@@ -131,8 +165,14 @@
     private ActivityAllAppsContainerView<Launcher> mAppsView;
 
     private final Launcher mLauncher;
+    private final AnimatedFloat mAllAppScale = new AnimatedFloat(this::onScaleProgressChanged);
+    private final int mNavScrimFlag;
+
     private boolean mIsVerticalLayout;
 
+    // Whether this class should take care of closing the keyboard.
+    private boolean mShouldControlKeyboard;
+
     // Animation in this class is controlled by a single variable {@link mProgress}.
     // Visually, it represents top y coordinate of the all apps container if multiplied with
     // {@link mShiftRange}.
@@ -144,21 +184,27 @@
 
     private ScrimView mScrimView;
 
-    private final MultiAdditivePropertyFactory<View>
-            mAppsViewTranslationYPropertyFactory = new MultiAdditivePropertyFactory<>(
-            "appsViewTranslationY", View.TRANSLATION_Y);
     private MultiValueAlpha mAppsViewAlpha;
+    private MultiPropertyFactory<View> mAppsViewTranslationY;
 
     private boolean mIsTablet;
 
+    private boolean mHasScaleEffect;
+    private final VibratorWrapper mVibratorWrapper;
+
     public AllAppsTransitionController(Launcher l) {
         mLauncher = l;
         DeviceProfile dp = mLauncher.getDeviceProfile();
-        setShiftRange(dp.allAppsShiftRange);
         mProgress = 1f;
         mIsVerticalLayout = dp.isVerticalBarLayout();
         mIsTablet = dp.isTablet;
+        mNavScrimFlag = Themes.getAttrBoolean(l, R.attr.isMainColorDark)
+                ? FLAG_DARK_NAV : FLAG_LIGHT_NAV;
+
+        setShiftRange(dp.allAppsShiftRange);
+        mAllAppScale.value = 1;
         mLauncher.addOnDeviceProfileChangeListener(this);
+        mVibratorWrapper = VibratorWrapper.INSTANCE.get(mLauncher.getApplicationContext());
     }
 
     public float getShiftRange() {
@@ -188,28 +234,33 @@
      */
     public void setProgress(float progress) {
         mProgress = progress;
-        getAppsViewProgressTranslationY().set(mAppsView, mProgress * mShiftRange);
+        getAppsViewProgressTranslationY().setValue(mProgress * mShiftRange);
         mLauncher.onAllAppsTransition(1 - progress);
+
+        boolean hasScrim = progress < NAV_BAR_COLOR_FORCE_UPDATE_THRESHOLD
+                && mLauncher.getAppsView().getNavBarScrimHeight() > 0;
+        mLauncher.getSystemUiController().updateUiState(
+                UI_STATE_ALL_APPS, hasScrim ? mNavScrimFlag : 0);
     }
 
     public float getProgress() {
         return mProgress;
     }
 
-    private FloatProperty<View> getAppsViewProgressTranslationY() {
-        return mAppsViewTranslationYPropertyFactory.get(INDEX_APPS_VIEW_PROGRESS);
+    private MultiProperty getAppsViewProgressTranslationY() {
+        return mAppsViewTranslationY.get(INDEX_APPS_VIEW_PROGRESS);
     }
 
-    private FloatProperty<View> getAppsViewPullbackTranslationY() {
-        return mAppsViewTranslationYPropertyFactory.get(INDEX_APPS_VIEW_PULLBACK);
+    private MultiProperty getAppsViewPullbackTranslationY() {
+        return mAppsViewTranslationY.get(INDEX_APPS_VIEW_PULLBACK);
     }
 
-    private MultiValueAlpha.AlphaProperty getAppsViewProgressAlpha() {
-        return mAppsViewAlpha.getProperty(INDEX_APPS_VIEW_PROGRESS);
+    private MultiProperty getAppsViewProgressAlpha() {
+        return mAppsViewAlpha.get(INDEX_APPS_VIEW_PROGRESS);
     }
 
-    private MultiValueAlpha.AlphaProperty getAppsViewPullbackAlpha() {
-        return mAppsViewAlpha.getProperty(INDEX_APPS_VIEW_PULLBACK);
+    private MultiProperty getAppsViewPullbackAlpha() {
+        return mAppsViewAlpha.get(INDEX_APPS_VIEW_PULLBACK);
     }
 
     /**
@@ -223,27 +274,107 @@
         onProgressAnimationEnd();
     }
 
+    @Override
+    public void onBackProgressed(
+            LauncherState toState, @FloatRange(from = 0.0, to = 1.0) float backProgress) {
+        if (!mLauncher.isInState(ALL_APPS) || !NORMAL.equals(toState)) {
+            return;
+        }
+
+        float deceleratedProgress =
+                Interpolators.PREDICTIVE_BACK_DECELERATED_EASE.getInterpolation(backProgress);
+        float scaleProgress = ScrollableLayoutManager.PREDICTIVE_BACK_MIN_SCALE
+                + (1 - ScrollableLayoutManager.PREDICTIVE_BACK_MIN_SCALE)
+                * (1 - deceleratedProgress);
+
+        mAllAppScale.updateValue(scaleProgress);
+    }
+
+    private void onScaleProgressChanged() {
+        final float scaleProgress = mAllAppScale.value;
+        SCALE_PROPERTY.set(mLauncher.getAppsView(), scaleProgress);
+        mLauncher.getScrimView().setScrimHeaderScale(scaleProgress);
+
+        AllAppsRecyclerView rv = mLauncher.getAppsView().getActiveRecyclerView();
+        if (rv != null && rv.getScrollbar() != null) {
+            rv.getScrollbar().setVisibility(scaleProgress < 1f ? View.INVISIBLE : View.VISIBLE);
+        }
+
+        // Disable view clipping from all apps' RecyclerView up to all apps view during scale
+        // animation, and vice versa. The goal is to display extra roll(s) app icons (rendered in
+        // {@link AppsGridLayoutManager#calculateExtraLayoutSpace}) during scale animation.
+        boolean hasScaleEffect = scaleProgress < 1f;
+        if (hasScaleEffect != mHasScaleEffect) {
+            mHasScaleEffect = hasScaleEffect;
+            if (mHasScaleEffect) {
+                setClipChildrenOnViewTree(rv, mLauncher.getAppsView(), false);
+            } else {
+                restoreClipChildrenOnViewTree(rv, mLauncher.getAppsView());
+            }
+        }
+    }
+
+    /** Animate all apps view to 1f scale. */
+    public void animateAllAppsToNoScale() {
+        mAllAppScale.animateToValue(1f)
+                .setDuration(REVERT_SWIPE_ALL_APPS_TO_HOME_ANIMATION_DURATION_MS)
+                .start();
+    }
+
     /**
      * Creates an animation which updates the vertical transition progress and updates all the
      * dependent UI using various animation events
+     *
+     * This method also dictates where along the progress the haptics should be played. As the user
+     * scrolls up from workspace or down from AllApps, a drag haptic is being played until the
+     * commit point where it plays a commit haptic. Where we play the haptics differs when going
+     * from workspace -> allApps and vice versa.
      */
     @Override
     public void setStateWithAnimation(LauncherState toState,
             StateAnimationConfig config, PendingAnimation builder) {
-        if (NORMAL.equals(toState) && mLauncher.isInState(ALL_APPS)) {
-            UiThreadHelper.hideKeyboardAsync(mLauncher, mLauncher.getAppsView().getWindowToken());
+        if (mLauncher.isInState(ALL_APPS) && !ALL_APPS.equals(toState)) {
+            // For atomic animations, we close the keyboard immediately.
+            if (!config.userControlled && mShouldControlKeyboard) {
+                mLauncher.getAppsView().getSearchUiManager().getEditText().hideKeyboard();
+            }
+
             builder.addEndListener(success -> {
                 // Reset pull back progress and alpha after switching states.
-                ALL_APPS_PULL_BACK_TRANSLATION.set(this, 0f);
-                ALL_APPS_PULL_BACK_ALPHA.set(this, 1f);
+                ALL_APPS_PULL_BACK_TRANSLATION.set(this, ALL_APPS_PULL_BACK_TRANSLATION_DEFAULT);
+                ALL_APPS_PULL_BACK_ALPHA.set(this, ALL_APPS_PULL_BACK_ALPHA_DEFAULT);
+
+                // We only want to close the keyboard if the animation has completed successfully.
+                // The reason is that with keyboard sync, if the user swipes down from All Apps with
+                // the keyboard open and then changes their mind and swipes back up, we want the
+                // keyboard to remain open. However an onCancel signal is sent to the listeners
+                // (success = false), so we need to check for that.
+                if (config.userControlled && success && mShouldControlKeyboard) {
+                    mLauncher.getAppsView().getSearchUiManager().getEditText().hideKeyboard();
+                }
+
+                mAllAppScale.updateValue(1f);
             });
         }
 
+        if(FeatureFlags.ENABLE_PREMIUM_HAPTICS_ALL_APPS.get() && config.userControlled
+                && Utilities.ATLEAST_S) {
+            if (toState == ALL_APPS) {
+                builder.addOnFrameListener(
+                        new VibrationAnimatorUpdateListener(this, mVibratorWrapper,
+                                SWIPE_DRAG_COMMIT_THRESHOLD, 1));
+            } else {
+                builder.addOnFrameListener(
+                        new VibrationAnimatorUpdateListener(this, mVibratorWrapper,
+                                0, SWIPE_DRAG_COMMIT_THRESHOLD));
+            }
+            builder.addEndListener(mVibratorWrapper::cancelVibrate);
+        }
+
         float targetProgress = toState.getVerticalProgress(mLauncher);
         if (Float.compare(mProgress, targetProgress) == 0) {
             setAlphas(toState, config, builder);
             // Fail fast
-            onProgressAnimationEnd();
             return;
         }
 
@@ -256,8 +387,9 @@
         builder.add(anim);
 
         setAlphas(toState, config, builder);
-
-        if (ALL_APPS.equals(toState) && mLauncher.isInState(NORMAL)) {
+        // This controls both haptics for tapping on QSB and going to all apps.
+        if (ALL_APPS.equals(toState) && mLauncher.isInState(NORMAL) &&
+                !FeatureFlags.ENABLE_PREMIUM_HAPTICS_ALL_APPS.get()) {
             mLauncher.getAppsView().performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY,
                     HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
         }
@@ -275,11 +407,17 @@
         boolean hasAllAppsContent = (visibleElements & ALL_APPS_CONTENT) != 0;
 
         Interpolator allAppsFade = config.getInterpolator(ANIM_ALL_APPS_FADE, LINEAR);
-        setter.setFloat(getAppsViewProgressAlpha(), MultiValueAlpha.VALUE,
+        setter.setFloat(getAppsViewProgressAlpha(), MultiPropertyFactory.MULTI_PROPERTY_VALUE,
+                hasAllAppsContent ? 1 : 0, allAppsFade);
+        setter.setFloat(getAppsViewPullbackAlpha(), MultiPropertyFactory.MULTI_PROPERTY_VALUE,
                 hasAllAppsContent ? 1 : 0, allAppsFade);
 
-        boolean shouldProtectHeader =
-                ALL_APPS == state || mLauncher.getStateManager().getState() == ALL_APPS;
+        setter.setFloat(mLauncher.getAppsView(),
+                ActivityAllAppsContainerView.BOTTOM_SHEET_ALPHA, hasAllAppsContent ? 1 : 0,
+                config.getInterpolator(ANIM_ALL_APPS_BOTTOM_SHEET_FADE, INSTANT));
+
+        boolean shouldProtectHeader = !config.hasAnimationFlag(StateAnimationConfig.SKIP_SCRIM)
+                && (ALL_APPS == state || mLauncher.getStateManager().getState() == ALL_APPS);
         mScrimView.setDrawingController(shouldProtectHeader ? mAppsView : null);
     }
 
@@ -293,14 +431,87 @@
     public void setupViews(ScrimView scrimView, ActivityAllAppsContainerView<Launcher> appsView) {
         mScrimView = scrimView;
         mAppsView = appsView;
-        if (FeatureFlags.ENABLE_DEVICE_SEARCH.get() && Utilities.ATLEAST_R) {
-            mLauncher.getSystemUiController().updateUiState(UI_STATE_ALLAPPS,
-                    View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
-                            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
-        }
         mAppsView.setScrimView(scrimView);
+
         mAppsViewAlpha = new MultiValueAlpha(mAppsView, APPS_VIEW_INDEX_COUNT);
         mAppsViewAlpha.setUpdateVisibility(true);
+        mAppsViewTranslationY = new MultiPropertyFactory<>(
+                mAppsView, VIEW_TRANSLATE_Y, APPS_VIEW_INDEX_COUNT, Float::sum);
+
+        mShouldControlKeyboard = !mLauncher.getSearchConfig().isKeyboardSyncEnabled();
+    }
+
+    /**
+     * Recursively call {@link ViewGroup#setClipChildren(boolean)} from {@link View} to ts parent
+     * (direct or indirect) inclusive. This method will also save the old clipChildren value on each
+     * view with {@link View#setTag(int, Object)}, which can be restored in
+     * {@link #restoreClipChildrenOnViewTree(View, ViewParent)}.
+     *
+     * Note that if parent is null or not a parent of the view, this method will be applied all the
+     * way to root view.
+     *
+     * @param v child view
+     * @param parent direct or indirect parent of child view
+     * @param clipChildren whether we should clip children
+     */
+    private static void setClipChildrenOnViewTree(
+            @Nullable View v,
+            @Nullable ViewParent parent,
+            boolean clipChildren) {
+        if (v == null) {
+            return;
+        }
+
+        if (v instanceof ViewGroup) {
+            ViewGroup viewGroup = (ViewGroup) v;
+            boolean oldClipChildren = viewGroup.getClipChildren();
+            if (oldClipChildren != clipChildren) {
+                v.setTag(R.id.saved_clip_children_tag_id, oldClipChildren);
+                viewGroup.setClipChildren(clipChildren);
+            }
+        }
+
+        if (v == parent) {
+            return;
+        }
+
+        if (v.getParent() instanceof View) {
+            setClipChildrenOnViewTree((View) v.getParent(), parent, clipChildren);
+        }
+    }
+
+    /**
+     * Recursively call {@link ViewGroup#setClipChildren(boolean)} to restore clip children value
+     * set in {@link #setClipChildrenOnViewTree(View, ViewParent, boolean)} on view to its parent
+     * (direct or indirect) inclusive.
+     *
+     * Note that if parent is null or not a parent of the view, this method will be applied all the
+     * way to root view.
+     *
+     * @param v child view
+     * @param parent direct or indirect parent of child view
+     */
+    private static void restoreClipChildrenOnViewTree(
+            @Nullable View v, @Nullable ViewParent parent) {
+        if (v == null) {
+            return;
+        }
+        if (v instanceof ViewGroup) {
+            ViewGroup viewGroup = (ViewGroup) v;
+            Object viewTag = viewGroup.getTag(R.id.saved_clip_children_tag_id);
+            if (viewTag instanceof Boolean) {
+                viewGroup.setClipChildren((boolean) viewTag);
+                viewGroup.setTag(R.id.saved_clip_children_tag_id, null);
+            }
+        }
+
+        if (v == parent) {
+            return;
+        }
+
+        if (v.getParent() instanceof View) {
+            restoreClipChildrenOnViewTree((View) v.getParent(), parent);
+        }
     }
 
     /**
@@ -315,9 +526,51 @@
      * TODO: This logic should go in {@link LauncherState}
      */
     private void onProgressAnimationEnd() {
-        if (FeatureFlags.ENABLE_DEVICE_SEARCH.get()) return;
         if (Float.compare(mProgress, 1f) == 0) {
-            mAppsView.reset(false /* animate */);
+            if (mShouldControlKeyboard) {
+                mLauncher.getAppsView().getSearchUiManager().getEditText().hideKeyboard();
+            }
+        }
+    }
+
+    /**
+     * This VibrationAnimatorUpdateListener class takes in four parameters, a controller, start
+     * threshold, end threshold, and a Vibrator wrapper. We use the progress given by the controller
+     * as it gives an accurate progress that dictates where the vibrator should vibrate.
+     * Note: once the user begins a gesture and does the commit haptic, there should not be anymore
+     * haptics played for that gesture.
+     */
+    private static class VibrationAnimatorUpdateListener implements
+            ValueAnimator.AnimatorUpdateListener {
+        private final VibratorWrapper mVibratorWrapper;
+        private final AllAppsTransitionController mController;
+        private final float mStartThreshold;
+        private final float mEndThreshold;
+        private boolean mHasCommitted;
+
+        VibrationAnimatorUpdateListener(AllAppsTransitionController controller,
+                                        VibratorWrapper vibratorWrapper, float startThreshold,
+                                        float endThreshold) {
+            mController = controller;
+            mVibratorWrapper = vibratorWrapper;
+            mStartThreshold = startThreshold;
+            mEndThreshold = endThreshold;
+        }
+
+        @Override
+        public void onAnimationUpdate(ValueAnimator animation) {
+            if (mHasCommitted) {
+                return;
+            }
+            float currentProgress =
+                    AllAppsTransitionController.ALL_APPS_PROGRESS.get(mController);
+            if (currentProgress > mStartThreshold && currentProgress < mEndThreshold) {
+                mVibratorWrapper.vibrateForDragTexture();
+            } else if (!(currentProgress == 0 || currentProgress == 1)) {
+                // This check guards against committing at the location of the start of the gesture
+                mVibratorWrapper.vibrateForDragCommit();
+                mHasCommitted = true;
+            }
         }
     }
 }
diff --git a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
index 45a567d..29767bf 100644
--- a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
+++ b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
@@ -15,17 +15,12 @@
  */
 package com.android.launcher3.allapps;
 
-import static com.android.launcher3.allapps.BaseAllAppsAdapter.VIEW_TYPE_ALL_APPS_DIVIDER;
-import static com.android.launcher3.allapps.BaseAllAppsAdapter.VIEW_TYPE_EMPTY_SEARCH;
-import static com.android.launcher3.allapps.BaseAllAppsAdapter.VIEW_TYPE_SEARCH_MARKET;
-
 import android.content.Context;
 
 import androidx.annotation.Nullable;
 import androidx.recyclerview.widget.DiffUtil;
 
 import com.android.launcher3.allapps.BaseAllAppsAdapter.AdapterItem;
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.model.data.AppInfo;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.util.LabelComparator;
@@ -50,7 +45,7 @@
 
     public static final String TAG = "AlphabeticalAppsList";
 
-    private final WorkAdapterProvider mWorkAdapterProvider;
+    private final WorkProfileManager mWorkProviderManager;
 
     /**
      * Info about a fast scroller section, depending if sections are merged, the fast scroller
@@ -92,11 +87,11 @@
     private Predicate<ItemInfo> mItemFilter;
 
     public AlphabeticalAppsList(Context context, @Nullable AllAppsStore appsStore,
-            WorkAdapterProvider adapterProvider) {
+            WorkProfileManager workProfileManager) {
         mAllAppsStore = appsStore;
         mActivityContext = ActivityContext.lookupContext(context);
         mAppNameComparator = new AppInfoComparator(context);
-        mWorkAdapterProvider = adapterProvider;
+        mWorkProviderManager = workProfileManager;
         mNumAppsPerRowAllApps = mActivityContext.getDeviceProfile().inv.numAllAppsColumns;
         if (mAllAppsStore != null) {
             mAllAppsStore.addUpdateListener(this);
@@ -173,13 +168,6 @@
     }
 
     /**
-     * Returns whether there are no filtered results.
-     */
-    public boolean hasNoFilteredResults() {
-        return hasSearchResults() && mAccessibilityResultsCount == 0;
-    }
-
-    /**
      * Sets results list for search
      */
     public boolean setSearchResults(ArrayList<AdapterItem> results) {
@@ -249,34 +237,26 @@
         // ordered set of sections
         if (hasSearchResults()) {
             mAdapterItems.addAll(mSearchResults);
-            if (!FeatureFlags.ENABLE_DEVICE_SEARCH.get()) {
-                // Append the search market item
-                if (hasNoFilteredResults()) {
-                    mAdapterItems.add(new AdapterItem(VIEW_TYPE_EMPTY_SEARCH));
-                } else {
-                    mAdapterItems.add(new AdapterItem(VIEW_TYPE_ALL_APPS_DIVIDER));
-                }
-                mAdapterItems.add(new AdapterItem(VIEW_TYPE_SEARCH_MARKET));
-            }
         } else {
             int position = 0;
-            if (mWorkAdapterProvider != null) {
-                position += mWorkAdapterProvider.addWorkItems(mAdapterItems);
-                if (!mWorkAdapterProvider.shouldShowWorkApps()) {
-                    return;
-                }
+            boolean addApps = true;
+            if (mWorkProviderManager != null) {
+                position += mWorkProviderManager.addWorkItems(mAdapterItems);
+                addApps = mWorkProviderManager.shouldShowWorkApps();
             }
-            String lastSectionName = null;
-            for (AppInfo info : mApps) {
-                mAdapterItems.add(AdapterItem.asApp(info));
+            if (addApps) {
+                String lastSectionName = null;
+                for (AppInfo info : mApps) {
+                    mAdapterItems.add(AdapterItem.asApp(info));
 
-                String sectionName = info.sectionName;
-                // Create a new section if the section names do not match
-                if (!sectionName.equals(lastSectionName)) {
-                    lastSectionName = sectionName;
-                    mFastScrollerSections.add(new FastScrollSectionInfo(sectionName, position));
+                    String sectionName = info.sectionName;
+                    // Create a new section if the section names do not match
+                    if (!sectionName.equals(lastSectionName)) {
+                        lastSectionName = sectionName;
+                        mFastScrollerSections.add(new FastScrollSectionInfo(sectionName, position));
+                    }
+                    position++;
                 }
-                position++;
             }
         }
         mAccessibilityResultsCount = (int) mAdapterItems.stream()
diff --git a/src/com/android/launcher3/allapps/BaseAdapterProvider.java b/src/com/android/launcher3/allapps/BaseAdapterProvider.java
deleted file mode 100644
index 308294c..0000000
--- a/src/com/android/launcher3/allapps/BaseAdapterProvider.java
+++ /dev/null
@@ -1,56 +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.launcher3.allapps;
-
-import android.view.LayoutInflater;
-import android.view.ViewGroup;
-
-/**
- * A UI expansion wrapper providing for providing dynamic recyclerview items
- */
-public abstract class BaseAdapterProvider {
-
-    /**
-     * Returns whether or not viewType can be handled by searchProvider
-     */
-    public abstract boolean isViewSupported(int viewType);
-
-    /**
-     * Called from RecyclerView.Adapter#onBindViewHolder
-     */
-    public abstract void onBindView(AllAppsGridAdapter.ViewHolder holder, int position);
-
-    /**
-     * Called from RecyclerView.Adapter#onCreateViewHolder
-     */
-    public abstract AllAppsGridAdapter.ViewHolder onCreateViewHolder(LayoutInflater layoutInflater,
-            ViewGroup parent, int viewType);
-
-    /**
-     * Returns supported item per row combinations supported
-     */
-    public int[] getSupportedItemsPerRowArray() {
-        return new int[]{};
-    }
-
-    /**
-     * Returns how many cells a view should span
-     */
-    public int getItemsPerRow(int viewType, int appsPerRow) {
-        return appsPerRow;
-    }
-
-}
diff --git a/src/com/android/launcher3/allapps/BaseAllAppsAdapter.java b/src/com/android/launcher3/allapps/BaseAllAppsAdapter.java
index fcba246..8fa4276 100644
--- a/src/com/android/launcher3/allapps/BaseAllAppsAdapter.java
+++ b/src/com/android/launcher3/allapps/BaseAllAppsAdapter.java
@@ -19,7 +19,6 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.OnClickListener;
@@ -28,18 +27,17 @@
 import android.view.ViewGroup;
 import android.widget.TextView;
 
-import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.android.launcher3.BubbleTextView;
 import com.android.launcher3.R;
+import com.android.launcher3.allapps.search.SearchAdapterProvider;
+import com.android.launcher3.Utilities;
 import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.model.data.AppInfo;
 import com.android.launcher3.views.ActivityContext;
 
-import java.util.Arrays;
-
 /**
  * Adapter for all the apps.
  *
@@ -54,21 +52,19 @@
     public static final int VIEW_TYPE_ICON = 1 << 1;
     // The message shown when there are no filtered results
     public static final int VIEW_TYPE_EMPTY_SEARCH = 1 << 2;
-    // The message to continue to a market search when there are no filtered results
-    public static final int VIEW_TYPE_SEARCH_MARKET = 1 << 3;
-
-    // We use various dividers for various purposes.  They share enough attributes to reuse layouts,
-    // but differ in enough attributes to require different view types
-
     // A divider that separates the apps list and the search market button
-    public static final int VIEW_TYPE_ALL_APPS_DIVIDER = 1 << 4;
+    public static final int VIEW_TYPE_ALL_APPS_DIVIDER = 1 << 3;
+
+    public static final int VIEW_TYPE_WORK_EDU_CARD = 1 << 4;
+    public static final int VIEW_TYPE_WORK_DISABLED_CARD = 1 << 5;
+
+    public static final int NEXT_ID = 6;
 
     // Common view type masks
     public static final int VIEW_TYPE_MASK_DIVIDER = VIEW_TYPE_ALL_APPS_DIVIDER;
     public static final int VIEW_TYPE_MASK_ICON = VIEW_TYPE_ICON;
 
-
-    protected final BaseAdapterProvider[] mAdapterProviders;
+    protected final SearchAdapterProvider<?> mAdapterProvider;
 
     /**
      * ViewHolder for each icon.
@@ -112,7 +108,7 @@
         }
 
         protected boolean isCountedForAccessibility() {
-            return viewType == VIEW_TYPE_ICON || viewType == VIEW_TYPE_SEARCH_MARKET;
+            return viewType == VIEW_TYPE_ICON;
         }
 
         /**
@@ -129,34 +125,36 @@
         public boolean isContentSame(AdapterItem other) {
             return itemInfo == null && other.itemInfo == null;
         }
+
+        /** Sets the alpha of the decorator for this item. Returns true if successful. */
+        public boolean setDecorationFillAlpha(int alpha) {
+            return false;
+        }
     }
 
     protected final T mActivityContext;
     protected final AlphabeticalAppsList<T> mApps;
     // The text to show when there are no search results and no market search handler.
-    protected String mEmptySearchMessage;
     protected int mAppsPerRow;
 
     protected final LayoutInflater mLayoutInflater;
     protected final OnClickListener mOnIconClickListener;
     protected OnLongClickListener mOnIconLongClickListener = INSTANCE_ALL_APPS;
     protected OnFocusChangeListener mIconFocusListener;
-    // The click listener to send off to the market app, updated each time the search query changes.
-    private OnClickListener mMarketSearchClickListener;
-    private final int mExtraHeight;
+    private final int mExtraTextHeight;
 
     public BaseAllAppsAdapter(T activityContext, LayoutInflater inflater,
-            AlphabeticalAppsList<T> apps, BaseAdapterProvider[] adapterProviders) {
+            AlphabeticalAppsList<T> apps, SearchAdapterProvider<?> adapterProvider) {
         Resources res = activityContext.getResources();
         mActivityContext = activityContext;
         mApps = apps;
-        mEmptySearchMessage = res.getString(R.string.all_apps_loading_message);
         mLayoutInflater = inflater;
 
         mOnIconClickListener = mActivityContext.getItemOnClickListener();
 
-        mAdapterProviders = adapterProviders;
-        mExtraHeight = res.getDimensionPixelSize(R.dimen.all_apps_height_extra);
+        mAdapterProvider = adapterProvider;
+        mExtraTextHeight = Utilities.calculateTextHeight(
+                mActivityContext.getDeviceProfile().allAppsIconTextSizePx);
     }
 
     /**
@@ -181,16 +179,6 @@
     }
 
     /**
-     * Sets the last search query that was made, used to show when there are no results and to also
-     * seed the intent for searching the market.
-     */
-    public void setLastSearchQuery(String query, OnClickListener marketSearchClickListener) {
-        Resources res = mActivityContext.getResources();
-        mEmptySearchMessage = res.getString(R.string.all_apps_no_search_results, query);
-        mMarketSearchClickListener = marketSearchClickListener;
-    }
-
-    /**
      * Returns the layout manager.
      */
     public abstract RecyclerView.LayoutManager getLayoutManager();
@@ -211,24 +199,24 @@
                 icon.getLayoutParams().height =
                         mActivityContext.getDeviceProfile().allAppsCellHeightPx;
                 if (FeatureFlags.ENABLE_TWOLINE_ALLAPPS.get()) {
-                    icon.getLayoutParams().height += mExtraHeight;
+                    icon.getLayoutParams().height += mExtraTextHeight;
                 }
                 return new ViewHolder(icon);
             case VIEW_TYPE_EMPTY_SEARCH:
                 return new ViewHolder(mLayoutInflater.inflate(R.layout.all_apps_empty_search,
                         parent, false));
-            case VIEW_TYPE_SEARCH_MARKET:
-                View searchMarketView = mLayoutInflater.inflate(R.layout.all_apps_search_market,
-                        parent, false);
-                searchMarketView.setOnClickListener(mMarketSearchClickListener);
-                return new ViewHolder(searchMarketView);
             case VIEW_TYPE_ALL_APPS_DIVIDER:
                 return new ViewHolder(mLayoutInflater.inflate(
                         R.layout.all_apps_divider, parent, false));
+            case VIEW_TYPE_WORK_EDU_CARD:
+                return new ViewHolder(mLayoutInflater.inflate(
+                        R.layout.work_apps_edu, parent, false));
+            case VIEW_TYPE_WORK_DISABLED_CARD:
+                return new ViewHolder(mLayoutInflater.inflate(
+                        R.layout.work_apps_paused, parent, false));
             default:
-                BaseAdapterProvider adapterProvider = getAdapterProvider(viewType);
-                if (adapterProvider != null) {
-                    return adapterProvider.onCreateViewHolder(mLayoutInflater, parent, viewType);
+                if (mAdapterProvider.isViewSupported(viewType)) {
+                    return mAdapterProvider.onCreateViewHolder(mLayoutInflater, parent, viewType);
                 }
                 throw new RuntimeException("Unexpected view type" + viewType);
         }
@@ -237,43 +225,36 @@
     @Override
     public void onBindViewHolder(ViewHolder holder, int position) {
         switch (holder.getItemViewType()) {
-            case VIEW_TYPE_ICON:
+            case VIEW_TYPE_ICON: {
                 AdapterItem adapterItem = mApps.getAdapterItems().get(position);
                 BubbleTextView icon = (BubbleTextView) holder.itemView;
                 icon.reset();
                 icon.applyFromApplicationInfo(adapterItem.itemInfo);
                 break;
-            case VIEW_TYPE_EMPTY_SEARCH:
-                TextView emptyViewText = (TextView) holder.itemView;
-                emptyViewText.setText(mEmptySearchMessage);
-                emptyViewText.setGravity(mApps.hasNoFilteredResults() ? Gravity.CENTER :
-                        Gravity.START | Gravity.CENTER_VERTICAL);
-                break;
-            case VIEW_TYPE_SEARCH_MARKET:
-                TextView searchView = (TextView) holder.itemView;
-                if (mMarketSearchClickListener != null) {
-                    searchView.setVisibility(View.VISIBLE);
-                } else {
-                    searchView.setVisibility(View.GONE);
+            }
+            case VIEW_TYPE_EMPTY_SEARCH: {
+                AppInfo info = mApps.getAdapterItems().get(position).itemInfo;
+                if (info != null) {
+                    ((TextView) holder.itemView).setText(mActivityContext.getString(
+                            R.string.all_apps_no_search_results, info.title));
                 }
                 break;
+            }
             case VIEW_TYPE_ALL_APPS_DIVIDER:
+            case VIEW_TYPE_WORK_DISABLED_CARD:
                 // nothing to do
                 break;
+            case VIEW_TYPE_WORK_EDU_CARD:
+                ((WorkEduCard) holder.itemView).setPosition(position);
+                break;
             default:
-                BaseAdapterProvider adapterProvider = getAdapterProvider(holder.getItemViewType());
-                if (adapterProvider != null) {
-                    adapterProvider.onBindView(holder, position);
+                if (mAdapterProvider.isViewSupported(holder.getItemViewType())) {
+                    mAdapterProvider.onBindView(holder, position);
                 }
         }
     }
 
     @Override
-    public void onViewRecycled(@NonNull ViewHolder holder) {
-        super.onViewRecycled(holder);
-    }
-
-    @Override
     public boolean onFailedToRecycleView(ViewHolder holder) {
         // Always recycle and we will reset the view when it is bound
         return true;
@@ -294,10 +275,4 @@
         return (viewType & viewTypeMask) != 0;
     }
 
-    @Nullable
-    protected BaseAdapterProvider getAdapterProvider(int viewType) {
-        return Arrays.stream(mAdapterProviders).filter(
-                adapterProvider -> adapterProvider.isViewSupported(viewType)).findFirst().orElse(
-                null);
-    }
 }
diff --git a/src/com/android/launcher3/allapps/BaseAllAppsContainerView.java b/src/com/android/launcher3/allapps/BaseAllAppsContainerView.java
deleted file mode 100644
index ecadec6..0000000
--- a/src/com/android/launcher3/allapps/BaseAllAppsContainerView.java
+++ /dev/null
@@ -1,850 +0,0 @@
-/*
- * Copyright (C) 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.
- */
-package com.android.launcher3.allapps;
-
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_TAP_ON_PERSONAL_TAB;
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_TAP_ON_WORK_TAB;
-import static com.android.launcher3.util.UiThreadHelper.hideKeyboardAsync;
-
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.animation.ValueAnimator;
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.graphics.Point;
-import android.graphics.Rect;
-import android.os.Bundle;
-import android.os.Parcelable;
-import android.os.Process;
-import android.os.UserManager;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.util.SparseArray;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.WindowInsets;
-import android.widget.Button;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.annotation.VisibleForTesting;
-import androidx.core.graphics.ColorUtils;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.android.launcher3.DeviceProfile;
-import com.android.launcher3.DeviceProfile.DeviceProfileListenable;
-import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
-import com.android.launcher3.DragSource;
-import com.android.launcher3.DropTarget.DragObject;
-import com.android.launcher3.Insettable;
-import com.android.launcher3.InsettableFrameLayout;
-import com.android.launcher3.R;
-import com.android.launcher3.Utilities;
-import com.android.launcher3.allapps.search.SearchAdapterProvider;
-import com.android.launcher3.keyboard.FocusedItemDecorator;
-import com.android.launcher3.model.StringCache;
-import com.android.launcher3.model.data.ItemInfo;
-import com.android.launcher3.util.ItemInfoMatcher;
-import com.android.launcher3.util.Themes;
-import com.android.launcher3.views.ActivityContext;
-import com.android.launcher3.views.BaseDragLayer;
-import com.android.launcher3.views.RecyclerViewFastScroller;
-import com.android.launcher3.views.ScrimView;
-import com.android.launcher3.views.SpringRelativeLayout;
-import com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip.OnActivePageChangedListener;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.function.Predicate;
-import java.util.stream.Stream;
-
-/**
- * Base all apps view container.
- *
- * @param <T> Type of context inflating all apps.
- */
-public abstract class BaseAllAppsContainerView<T extends Context & ActivityContext
-        & DeviceProfileListenable> extends SpringRelativeLayout implements DragSource, Insettable,
-        OnDeviceProfileChangeListener, OnActivePageChangedListener,
-        ScrimView.ScrimDrawingController {
-
-    protected static final String BUNDLE_KEY_CURRENT_PAGE = "launcher.allapps.current_page";
-
-    public static final float PULL_MULTIPLIER = .02f;
-    public static final float FLING_VELOCITY_MULTIPLIER = 1200f;
-
-    private final Paint mHeaderPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
-    private final Rect mInsets = new Rect();
-
-    /** Context of an activity or window that is inflating this container. */
-    protected final T mActivityContext;
-    protected final List<AdapterHolder> mAH;
-    protected final Predicate<ItemInfo> mPersonalMatcher = ItemInfoMatcher.ofUser(
-            Process.myUserHandle());
-    private final SearchAdapterProvider<?> mMainAdapterProvider;
-    private final AllAppsStore mAllAppsStore = new AllAppsStore();
-
-    private final RecyclerView.OnScrollListener mScrollListener =
-            new RecyclerView.OnScrollListener() {
-                @Override
-                public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
-                    updateHeaderScroll(((AllAppsRecyclerView) recyclerView).getCurrentScrollY());
-                }
-            };
-    private final WorkProfileManager mWorkManager;
-
-    private final Paint mNavBarScrimPaint;
-    private int mNavBarScrimHeight = 0;
-
-    private AllAppsPagedView mViewPager;
-    private SearchRecyclerView mSearchRecyclerView;
-
-    protected FloatingHeaderView mHeader;
-    private View mBottomSheetBackground;
-    private View mBottomSheetHandleArea;
-
-    protected boolean mUsingTabs;
-    private boolean mHasWorkApps;
-
-    protected RecyclerViewFastScroller mTouchHandler;
-    protected final Point mFastScrollerOffset = new Point();
-
-    private final int mScrimColor;
-    private final int mHeaderProtectionColor;
-    protected final float mHeaderThreshold;
-    private int mHeaderBottomAdjustment;
-    private ScrimView mScrimView;
-    private int mHeaderColor;
-    private int mTabsProtectionAlpha;
-
-    protected BaseAllAppsContainerView(Context context, AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
-        mActivityContext = ActivityContext.lookupContext(context);
-        mMainAdapterProvider = createMainAdapterProvider();
-
-        mScrimColor = Themes.getAttrColor(context, R.attr.allAppsScrimColor);
-        mHeaderThreshold = getResources().getDimensionPixelSize(
-                R.dimen.dynamic_grid_cell_border_spacing);
-        mHeaderBottomAdjustment = getResources().getDimensionPixelSize(
-                R.dimen.all_apps_header_bottom_adjustment);
-        mHeaderProtectionColor = Themes.getAttrColor(context, R.attr.allappsHeaderProtectionColor);
-
-        mWorkManager = new WorkProfileManager(
-                mActivityContext.getSystemService(UserManager.class),
-                this,
-                Utilities.getPrefs(mActivityContext), mActivityContext.getDeviceProfile());
-        mAH = Arrays.asList(null, null, null);
-        mAH.set(AdapterHolder.MAIN, new AdapterHolder(AdapterHolder.MAIN));
-        mAH.set(AdapterHolder.WORK, new AdapterHolder(AdapterHolder.WORK));
-        mAH.set(AdapterHolder.SEARCH, new AdapterHolder(AdapterHolder.SEARCH));
-
-        mNavBarScrimPaint = new Paint();
-        mNavBarScrimPaint.setColor(Themes.getAttrColor(context, R.attr.allAppsNavBarScrimColor));
-
-        mAllAppsStore.addUpdateListener(this::onAppsUpdated);
-        mActivityContext.addOnDeviceProfileChangeListener(this);
-    }
-
-    /** Creates the adapter provider for the main section. */
-    protected abstract SearchAdapterProvider<?> createMainAdapterProvider();
-
-    /** The adapter provider for the main section. */
-    public final SearchAdapterProvider<?> getMainAdapterProvider() {
-        return mMainAdapterProvider;
-    }
-
-    @Override
-    protected void dispatchRestoreInstanceState(SparseArray<Parcelable> sparseArray) {
-        try {
-            // Many slice view id is not properly assigned, and hence throws null
-            // pointer exception in the underneath method. Catching the exception
-            // simply doesn't restore these slice views. This doesn't have any
-            // user visible effect because because we query them again.
-            super.dispatchRestoreInstanceState(sparseArray);
-        } catch (Exception e) {
-            Log.e("AllAppsContainerView", "restoreInstanceState viewId = 0", e);
-        }
-
-        Bundle state = (Bundle) sparseArray.get(R.id.work_tab_state_id, null);
-        if (state != null) {
-            int currentPage = state.getInt(BUNDLE_KEY_CURRENT_PAGE, 0);
-            if (currentPage == AdapterHolder.WORK && mViewPager != null) {
-                mViewPager.setCurrentPage(currentPage);
-                rebindAdapters();
-            } else {
-                reset(true);
-            }
-        }
-
-    }
-
-    @Override
-    protected void dispatchSaveInstanceState(SparseArray<Parcelable> container) {
-        super.dispatchSaveInstanceState(container);
-        Bundle state = new Bundle();
-        state.putInt(BUNDLE_KEY_CURRENT_PAGE, getCurrentPage());
-        container.put(R.id.work_tab_state_id, state);
-    }
-
-    /**
-     * Sets the long click listener for icons
-     */
-    public void setOnIconLongClickListener(OnLongClickListener listener) {
-        for (AdapterHolder holder : mAH) {
-            holder.mAdapter.setOnIconLongClickListener(listener);
-        }
-    }
-
-    public AllAppsStore getAppsStore() {
-        return mAllAppsStore;
-    }
-
-    public WorkProfileManager getWorkManager() {
-        return mWorkManager;
-    }
-
-    @Override
-    public void onDeviceProfileChanged(DeviceProfile dp) {
-        for (AdapterHolder holder : mAH) {
-            holder.mAdapter.setAppsPerRow(dp.numShownAllAppsColumns);
-            if (holder.mRecyclerView != null) {
-                // Remove all views and clear the pool, while keeping the data same. After this
-                // call, all the viewHolders will be recreated.
-                holder.mRecyclerView.swapAdapter(holder.mRecyclerView.getAdapter(), true);
-                holder.mRecyclerView.getRecycledViewPool().clear();
-            }
-        }
-        updateBackground(dp);
-    }
-
-    protected void updateBackground(DeviceProfile deviceProfile) {
-        mBottomSheetBackground.setVisibility(deviceProfile.isTablet ? View.VISIBLE : View.GONE);
-    }
-
-    private void onAppsUpdated() {
-        mHasWorkApps = Stream.of(mAllAppsStore.getApps()).anyMatch(mWorkManager.getMatcher());
-        if (!isSearching()) {
-            rebindAdapters();
-            if (mHasWorkApps) {
-                mWorkManager.reset();
-            }
-        }
-    }
-
-    /**
-     * Returns whether the view itself will handle the touch event or not.
-     */
-    public boolean shouldContainerScroll(MotionEvent ev) {
-        BaseDragLayer dragLayer = mActivityContext.getDragLayer();
-        // Scroll if not within the container view (e.g. over large-screen scrim).
-        if (!dragLayer.isEventOverView(this, ev)) {
-            return true;
-        }
-        if (dragLayer.isEventOverView(mBottomSheetHandleArea, ev)) {
-            return true;
-        }
-        AllAppsRecyclerView rv = getActiveRecyclerView();
-        if (rv == null) {
-            return true;
-        }
-        if (rv.getScrollbar() != null
-                && rv.getScrollbar().getThumbOffsetY() >= 0
-                && dragLayer.isEventOverView(rv.getScrollbar(), ev)) {
-            return false;
-        }
-        return rv.shouldContainerScroll(ev, dragLayer);
-    }
-
-    @Override
-    public boolean onInterceptTouchEvent(MotionEvent ev) {
-        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
-            AllAppsRecyclerView rv = getActiveRecyclerView();
-            if (rv != null && rv.getScrollbar() != null
-                    && rv.getScrollbar().isHitInParent(ev.getX(), ev.getY(), mFastScrollerOffset)) {
-                mTouchHandler = rv.getScrollbar();
-            } else {
-                mTouchHandler = null;
-            }
-        }
-        if (mTouchHandler != null) {
-            return mTouchHandler.handleTouchEvent(ev, mFastScrollerOffset);
-        }
-        return false;
-    }
-
-    @Override
-    public boolean onTouchEvent(MotionEvent ev) {
-        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
-            AllAppsRecyclerView rv = getActiveRecyclerView();
-            if (rv != null && rv.getScrollbar() != null
-                    && rv.getScrollbar().isHitInParent(ev.getX(), ev.getY(), mFastScrollerOffset)) {
-                mTouchHandler = rv.getScrollbar();
-            } else {
-                mTouchHandler = null;
-
-            }
-        }
-        if (mTouchHandler != null) {
-            mTouchHandler.handleTouchEvent(ev, mFastScrollerOffset);
-            return true;
-        }
-        if (isSearching()) {
-            // if in search state, consume touch event.
-            return true;
-        }
-        return false;
-    }
-
-    /** Description of the container view based on its current state. */
-    public String getDescription() {
-        StringCache cache = mActivityContext.getStringCache();
-        if (mUsingTabs) {
-            if (cache != null) {
-                return isPersonalTab()
-                        ? cache.allAppsPersonalTabAccessibility
-                        : cache.allAppsWorkTabAccessibility;
-            } else {
-                return isPersonalTab()
-                        ? getContext().getString(R.string.all_apps_button_personal_label)
-                        : getContext().getString(R.string.all_apps_button_work_label);
-            }
-        }
-        return getContext().getString(R.string.all_apps_button_label);
-    }
-
-    /** The current active recycler view (A-Z list from one of the profiles, or search results). */
-    public AllAppsRecyclerView getActiveRecyclerView() {
-        if (isSearching()) {
-            return getSearchRecyclerView();
-        }
-        return getActiveAppsRecyclerView();
-    }
-
-    /** The current apps recycler view in the container. */
-    private AllAppsRecyclerView getActiveAppsRecyclerView() {
-        if (!mUsingTabs || isPersonalTab()) {
-            return mAH.get(AdapterHolder.MAIN).mRecyclerView;
-        } else {
-            return mAH.get(AdapterHolder.WORK).mRecyclerView;
-        }
-    }
-
-    /**
-     * The container for A-Z apps (the ViewPager for main+work tabs, or main RV). This is currently
-     * hidden while searching.
-     **/
-    private View getAppsRecyclerViewContainer() {
-        return mViewPager != null ? mViewPager : findViewById(R.id.apps_list_view);
-    }
-
-    /** The RV for search results, which is hidden while A-Z apps are visible. */
-    public SearchRecyclerView getSearchRecyclerView() {
-        return mSearchRecyclerView;
-    }
-
-    protected boolean isPersonalTab() {
-        return mViewPager == null || mViewPager.getNextPage() == 0;
-    }
-
-    /**
-     * Switches the current page to the provided {@code tab} if tabs are supported, otherwise does
-     * nothing.
-     */
-    public void switchToTab(int tab) {
-        if (mUsingTabs) {
-            mViewPager.setCurrentPage(tab);
-        }
-    }
-
-    public LayoutInflater getLayoutInflater() {
-        return LayoutInflater.from(getContext());
-    }
-
-    /**
-     * Resets the state of AllApps.
-     */
-    public void reset(boolean animate) {
-        for (int i = 0; i < mAH.size(); i++) {
-            if (mAH.get(i).mRecyclerView != null) {
-                mAH.get(i).mRecyclerView.scrollToTop();
-            }
-        }
-        if (isHeaderVisible()) {
-            mHeader.reset(animate);
-        }
-        // Reset the base recycler view after transitioning home.
-        updateHeaderScroll(0);
-    }
-
-    @Override
-    protected void onFinishInflate() {
-        super.onFinishInflate();
-
-        // This is a focus listener that proxies focus from a view into the list view.  This is to
-        // work around the search box from getting first focus and showing the cursor.
-        setOnFocusChangeListener((v, hasFocus) -> {
-            if (hasFocus && getActiveRecyclerView() != null) {
-                getActiveRecyclerView().requestFocus();
-            }
-        });
-
-        mHeader = findViewById(R.id.all_apps_header);
-        mSearchRecyclerView = findViewById(R.id.search_results_list_view);
-        mAH.get(AdapterHolder.SEARCH).setup(mSearchRecyclerView,
-                /* Filter out A-Z apps */ itemInfo -> false);
-        rebindAdapters(true /* force */);
-
-        mBottomSheetBackground = findViewById(R.id.bottom_sheet_background);
-        updateBackground(mActivityContext.getDeviceProfile());
-
-        mBottomSheetHandleArea = findViewById(R.id.bottom_sheet_handle_area);
-    }
-
-    @Override
-    public void onDropCompleted(View target, DragObject d, boolean success) {}
-
-    @Override
-    public void setInsets(Rect insets) {
-        mInsets.set(insets);
-        DeviceProfile grid = mActivityContext.getDeviceProfile();
-
-        applyAdapterSideAndBottomPaddings(grid);
-
-        MarginLayoutParams mlp = (MarginLayoutParams) getLayoutParams();
-        mlp.leftMargin = insets.left;
-        mlp.rightMargin = insets.right;
-        setLayoutParams(mlp);
-
-        if (grid.isVerticalBarLayout()) {
-            setPadding(grid.workspacePadding.left, 0, grid.workspacePadding.right, 0);
-        } else {
-            setPadding(grid.allAppsLeftRightMargin, grid.allAppsTopPadding,
-                    grid.allAppsLeftRightMargin, 0);
-        }
-
-        InsettableFrameLayout.dispatchInsets(this, insets);
-    }
-
-    /**
-     * Returns a padding in case a scrim is shown on the bottom of the view and a padding is needed.
-     */
-    protected int getNavBarScrimHeight(WindowInsets insets) {
-        return 0;
-    }
-
-    @Override
-    public WindowInsets dispatchApplyWindowInsets(WindowInsets insets) {
-        mNavBarScrimHeight = getNavBarScrimHeight(insets);
-        applyAdapterSideAndBottomPaddings(mActivityContext.getDeviceProfile());
-        return super.dispatchApplyWindowInsets(insets);
-    }
-
-    @Override
-    protected void dispatchDraw(Canvas canvas) {
-        super.dispatchDraw(canvas);
-
-        if (mNavBarScrimHeight > 0) {
-            canvas.drawRect(0, getHeight() - mNavBarScrimHeight, getWidth(), getHeight(),
-                    mNavBarScrimPaint);
-        }
-    }
-
-    protected void rebindAdapters() {
-        rebindAdapters(false /* force */);
-    }
-
-    protected void rebindAdapters(boolean force) {
-        updateSearchResultsVisibility();
-
-        boolean showTabs = shouldShowTabs();
-        if (showTabs == mUsingTabs && !force) {
-            return;
-        }
-
-        if (isSearching()) {
-            mUsingTabs = showTabs;
-            mWorkManager.detachWorkModeSwitch();
-            return;
-        }
-
-        // replaceAppsRVcontainer() needs to use both mUsingTabs value to remove the old view AND
-        // showTabs value to create new view. Hence the mUsingTabs new value assignment MUST happen
-        // after this call.
-        replaceAppsRVContainer(showTabs);
-        mUsingTabs = showTabs;
-
-        mAllAppsStore.unregisterIconContainer(mAH.get(AdapterHolder.MAIN).mRecyclerView);
-        mAllAppsStore.unregisterIconContainer(mAH.get(AdapterHolder.WORK).mRecyclerView);
-
-        if (mUsingTabs) {
-            mAH.get(AdapterHolder.MAIN).setup(mViewPager.getChildAt(0), mPersonalMatcher);
-            mAH.get(AdapterHolder.WORK).setup(mViewPager.getChildAt(1), mWorkManager.getMatcher());
-            mAH.get(AdapterHolder.WORK).mRecyclerView.setId(R.id.apps_list_view_work);
-            mViewPager.getPageIndicator().setActiveMarker(AdapterHolder.MAIN);
-            findViewById(R.id.tab_personal)
-                    .setOnClickListener((View view) -> {
-                        if (mViewPager.snapToPage(AdapterHolder.MAIN)) {
-                            mActivityContext.getStatsLogManager().logger()
-                                    .log(LAUNCHER_ALLAPPS_TAP_ON_PERSONAL_TAB);
-                        }
-                        hideKeyboardAsync(ActivityContext.lookupContext(getContext()),
-                                getApplicationWindowToken());
-                    });
-            findViewById(R.id.tab_work)
-                    .setOnClickListener((View view) -> {
-                        if (mViewPager.snapToPage(AdapterHolder.WORK)) {
-                            mActivityContext.getStatsLogManager().logger()
-                                    .log(LAUNCHER_ALLAPPS_TAP_ON_WORK_TAB);
-                        }
-                        hideKeyboardAsync(ActivityContext.lookupContext(getContext()),
-                                getApplicationWindowToken());
-                    });
-            setDeviceManagementResources();
-            onActivePageChanged(mViewPager.getNextPage());
-        } else {
-            mAH.get(AdapterHolder.MAIN).setup(findViewById(R.id.apps_list_view), null);
-            mAH.get(AdapterHolder.WORK).mRecyclerView = null;
-        }
-        setupHeader();
-
-        mAllAppsStore.registerIconContainer(mAH.get(AdapterHolder.MAIN).mRecyclerView);
-        mAllAppsStore.registerIconContainer(mAH.get(AdapterHolder.WORK).mRecyclerView);
-    }
-
-    private void updateSearchResultsVisibility() {
-        if (isSearching()) {
-            getSearchRecyclerView().setVisibility(VISIBLE);
-            getAppsRecyclerViewContainer().setVisibility(GONE);
-        } else {
-            getSearchRecyclerView().setVisibility(GONE);
-            getAppsRecyclerViewContainer().setVisibility(VISIBLE);
-        }
-        if (mHeader.isSetUp()) {
-            mHeader.setActiveRV(getCurrentPage());
-        }
-    }
-
-    private void applyAdapterSideAndBottomPaddings(DeviceProfile grid) {
-        int bottomPadding = Math.max(mInsets.bottom, mNavBarScrimHeight);
-        mAH.forEach(adapterHolder -> {
-            adapterHolder.mPadding.bottom = bottomPadding;
-            adapterHolder.mPadding.left =
-                    adapterHolder.mPadding.right = grid.allAppsLeftRightPadding;
-            adapterHolder.applyPadding();
-        });
-    }
-
-    private void setDeviceManagementResources() {
-        if (mActivityContext.getStringCache() != null) {
-            Button personalTab = findViewById(R.id.tab_personal);
-            personalTab.setText(mActivityContext.getStringCache().allAppsPersonalTab);
-
-            Button workTab = findViewById(R.id.tab_work);
-            workTab.setText(mActivityContext.getStringCache().allAppsWorkTab);
-        }
-    }
-
-    protected boolean shouldShowTabs() {
-        return mHasWorkApps;
-    }
-
-    protected boolean isSearching() {
-        return false;
-    }
-
-    protected View replaceAppsRVContainer(boolean showTabs) {
-        for (int i = AdapterHolder.MAIN; i <= AdapterHolder.WORK; i++) {
-            AdapterHolder adapterHolder = mAH.get(i);
-            if (adapterHolder.mRecyclerView != null) {
-                adapterHolder.mRecyclerView.setLayoutManager(null);
-                adapterHolder.mRecyclerView.setAdapter(null);
-            }
-        }
-        View oldView = getAppsRecyclerViewContainer();
-        int index = indexOfChild(oldView);
-        removeView(oldView);
-        int layout = showTabs ? R.layout.all_apps_tabs : R.layout.all_apps_rv_layout;
-        View newView = getLayoutInflater().inflate(layout, this, false);
-        addView(newView, index);
-        if (showTabs) {
-            mViewPager = (AllAppsPagedView) newView;
-            mViewPager.initParentViews(this);
-            mViewPager.getPageIndicator().setOnActivePageChangedListener(this);
-            if (mWorkManager.attachWorkModeSwitch()) {
-                mWorkManager.getWorkModeSwitch().post(
-                        () -> mAH.get(AdapterHolder.WORK).applyPadding());
-            }
-        } else {
-            mWorkManager.detachWorkModeSwitch();
-            mViewPager = null;
-        }
-        return newView;
-    }
-
-    @Override
-    public void onActivePageChanged(int currentActivePage) {
-        if (mAH.get(currentActivePage).mRecyclerView != null) {
-            mAH.get(currentActivePage).mRecyclerView.bindFastScrollbar();
-        }
-        reset(true /* animate */);
-
-        mWorkManager.onActivePageChanged(currentActivePage);
-    }
-
-    // Used by tests only
-    private boolean isDescendantViewVisible(int viewId) {
-        final View view = findViewById(viewId);
-        if (view == null) return false;
-
-        if (!view.isShown()) return false;
-
-        return view.getGlobalVisibleRect(new Rect());
-    }
-
-    @VisibleForTesting
-    public boolean isPersonalTabVisible() {
-        return isDescendantViewVisible(R.id.tab_personal);
-    }
-
-    @VisibleForTesting
-    public boolean isWorkTabVisible() {
-        return isDescendantViewVisible(R.id.tab_work);
-    }
-
-    public AlphabeticalAppsList<T> getSearchResultList() {
-        return mAH.get(AdapterHolder.SEARCH).mAppsList;
-    }
-
-    public FloatingHeaderView getFloatingHeaderView() {
-        return mHeader;
-    }
-
-    @VisibleForTesting
-    public View getContentView() {
-        return isSearching() ? getSearchRecyclerView() : getAppsRecyclerViewContainer();
-    }
-
-    /** The current page visible in all apps. */
-    public int getCurrentPage() {
-        return isSearching()
-                ? AdapterHolder.SEARCH
-                : mViewPager == null ? AdapterHolder.MAIN : mViewPager.getNextPage();
-    }
-
-    /** The scroll bar for the active apps recycler view. */
-    public RecyclerViewFastScroller getScrollBar() {
-        AllAppsRecyclerView rv = getActiveAppsRecyclerView();
-        return rv == null ? null : rv.getScrollbar();
-    }
-
-    void setupHeader() {
-        mHeader.setVisibility(View.VISIBLE);
-        boolean tabsHidden = !mUsingTabs;
-        mHeader.setup(
-                mAH.get(AdapterHolder.MAIN).mRecyclerView,
-                mAH.get(AdapterHolder.WORK).mRecyclerView,
-                (SearchRecyclerView) mAH.get(AdapterHolder.SEARCH).mRecyclerView,
-                getCurrentPage(),
-                tabsHidden);
-
-        int padding = mHeader.getMaxTranslation();
-        mAH.forEach(adapterHolder -> {
-            adapterHolder.mPadding.top = padding;
-            adapterHolder.applyPadding();
-            if (adapterHolder.mRecyclerView != null) {
-                adapterHolder.mRecyclerView.scrollToTop();
-            }
-        });
-    }
-
-    public boolean isHeaderVisible() {
-        return mHeader != null && mHeader.getVisibility() == View.VISIBLE;
-    }
-
-    /**
-     * Adds an update listener to animator that adds springs to the animation.
-     */
-    public void addSpringFromFlingUpdateListener(ValueAnimator animator,
-            float velocity /* release velocity */,
-            float progress /* portion of the distance to travel*/) {
-        animator.addListener(new AnimatorListenerAdapter() {
-            @Override
-            public void onAnimationStart(Animator animator) {
-                float distance = (1 - progress) * getHeight(); // px
-                float settleVelocity = Math.min(0, distance
-                        / (AllAppsTransitionController.INTERP_COEFF * animator.getDuration())
-                        + velocity);
-                absorbSwipeUpVelocity(Math.max(1000, Math.abs(
-                        Math.round(settleVelocity * FLING_VELOCITY_MULTIPLIER))));
-            }
-        });
-    }
-
-    /** Invoked when the container is pulled. */
-    public void onPull(float deltaDistance, float displacement) {
-        absorbPullDeltaDistance(PULL_MULTIPLIER * deltaDistance, PULL_MULTIPLIER * displacement);
-        // Current motion spec is to actually push and not pull
-        // on this surface. However, until EdgeEffect.onPush (b/190612804) is
-        // implemented at view level, we will simply pull
-    }
-
-    @Override
-    public void getDrawingRect(Rect outRect) {
-        super.getDrawingRect(outRect);
-        outRect.offset(0, (int) getTranslationY());
-    }
-
-    @Override
-    public void setTranslationY(float translationY) {
-        super.setTranslationY(translationY);
-        invalidateHeader();
-    }
-
-    public void setScrimView(ScrimView scrimView) {
-        mScrimView = scrimView;
-    }
-
-    @Override
-    public void drawOnScrim(Canvas canvas) {
-        if (!mHeader.isHeaderProtectionSupported()) {
-            return;
-        }
-        mHeaderPaint.setColor(mHeaderColor);
-        mHeaderPaint.setAlpha((int) (getAlpha() * Color.alpha(mHeaderColor)));
-        if (mHeaderPaint.getColor() != mScrimColor && mHeaderPaint.getColor() != 0) {
-            int bottom = getHeaderBottom();
-            if (!mUsingTabs) {
-                bottom += getFloatingHeaderView().getPaddingBottom() - mHeaderBottomAdjustment;
-            }
-            canvas.drawRect(0, 0, canvas.getWidth(), bottom, mHeaderPaint);
-            int tabsHeight = getFloatingHeaderView().getPeripheralProtectionHeight();
-            if (mTabsProtectionAlpha > 0 && tabsHeight != 0) {
-                mHeaderPaint.setAlpha((int) (getAlpha() * mTabsProtectionAlpha));
-                canvas.drawRect(0, bottom, canvas.getWidth(), bottom + tabsHeight, mHeaderPaint);
-            }
-        }
-    }
-
-    /**
-     * redraws header protection
-     */
-    public void invalidateHeader() {
-        if (mScrimView != null && mHeader.isHeaderProtectionSupported()) {
-            mScrimView.invalidate();
-        }
-    }
-
-    protected void updateHeaderScroll(int scrolledOffset) {
-        float prog = Utilities.boundToRange((float) scrolledOffset / mHeaderThreshold, 0f, 1f);
-        int headerColor = getHeaderColor(prog);
-        int tabsAlpha = mHeader.getPeripheralProtectionHeight() == 0 ? 0
-                : (int) (Utilities.boundToRange(
-                        (scrolledOffset + mHeader.mSnappedScrolledY) / mHeaderThreshold, 0f, 1f)
-                        * 255);
-        if (headerColor != mHeaderColor || mTabsProtectionAlpha != tabsAlpha) {
-            mHeaderColor = headerColor;
-            mTabsProtectionAlpha = tabsAlpha;
-            invalidateHeader();
-        }
-    }
-
-    protected int getHeaderColor(float blendRatio) {
-        return ColorUtils.blendARGB(mScrimColor, mHeaderProtectionColor, blendRatio);
-    }
-
-    protected abstract BaseAllAppsAdapter<T> createAdapter(AlphabeticalAppsList<T> mAppsList,
-            BaseAdapterProvider[] adapterProviders);
-
-    public int getHeaderBottom() {
-        return (int) getTranslationY();
-    }
-
-    /**
-     * Returns a view that denotes the visible part of all apps container view.
-     */
-    public View getVisibleContainerView() {
-        return mActivityContext.getDeviceProfile().isTablet ? mBottomSheetBackground : this;
-    }
-
-    /** Holds a {@link BaseAllAppsAdapter} and related fields. */
-    public class AdapterHolder {
-        public static final int MAIN = 0;
-        public static final int WORK = 1;
-        public static final int SEARCH = 2;
-
-        private final int mType;
-        public final BaseAllAppsAdapter<T> mAdapter;
-        final RecyclerView.LayoutManager mLayoutManager;
-        final AlphabeticalAppsList<T> mAppsList;
-        final Rect mPadding = new Rect();
-        AllAppsRecyclerView mRecyclerView;
-
-        AdapterHolder(int type) {
-            mType = type;
-            mAppsList = new AlphabeticalAppsList<>(mActivityContext,
-                    isSearch() ? null : mAllAppsStore,
-                    isWork() ? mWorkManager.getAdapterProvider() : null);
-
-            BaseAdapterProvider[] adapterProviders =
-                    isWork() ? new BaseAdapterProvider[]{mMainAdapterProvider,
-                            mWorkManager.getAdapterProvider()}
-                            : new BaseAdapterProvider[]{mMainAdapterProvider};
-
-            mAdapter = createAdapter(mAppsList, adapterProviders);
-            mAppsList.setAdapter(mAdapter);
-            mLayoutManager = mAdapter.getLayoutManager();
-        }
-
-        void setup(@NonNull View rv, @Nullable Predicate<ItemInfo> matcher) {
-            mAppsList.updateItemFilter(matcher);
-            mRecyclerView = (AllAppsRecyclerView) rv;
-            mRecyclerView.setEdgeEffectFactory(createEdgeEffectFactory());
-            mRecyclerView.setApps(mAppsList);
-            mRecyclerView.setLayoutManager(mLayoutManager);
-            mRecyclerView.setAdapter(mAdapter);
-            mRecyclerView.setHasFixedSize(true);
-            // No animations will occur when changes occur to the items in this RecyclerView.
-            mRecyclerView.setItemAnimator(null);
-            mRecyclerView.addOnScrollListener(mScrollListener);
-            FocusedItemDecorator focusedItemDecorator = new FocusedItemDecorator(mRecyclerView);
-            mRecyclerView.addItemDecoration(focusedItemDecorator);
-            mAdapter.setIconFocusListener(focusedItemDecorator.getFocusListener());
-            applyPadding();
-        }
-
-        void applyPadding() {
-            if (mRecyclerView != null) {
-                int bottomOffset = 0;
-                if (isWork() && mWorkManager.getWorkModeSwitch() != null) {
-                    bottomOffset = mInsets.bottom + mWorkManager.getWorkModeSwitch().getHeight();
-                }
-                mRecyclerView.setPadding(mPadding.left, mPadding.top, mPadding.right,
-                        mPadding.bottom + bottomOffset);
-            }
-        }
-
-        private boolean isWork() {
-            return mType == WORK;
-        }
-
-        private boolean isSearch() {
-            return mType == SEARCH;
-        }
-    }
-}
diff --git a/src_ui_overrides/com/android/launcher3/uioverrides/DeviceFlag.java b/src/com/android/launcher3/allapps/BaseSearchConfig.java
similarity index 60%
copy from src_ui_overrides/com/android/launcher3/uioverrides/DeviceFlag.java
copy to src/com/android/launcher3/allapps/BaseSearchConfig.java
index 5c1ac28..9f47e8d 100644
--- a/src_ui_overrides/com/android/launcher3/uioverrides/DeviceFlag.java
+++ b/src/com/android/launcher3/allapps/BaseSearchConfig.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * 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.
@@ -13,14 +13,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package com.android.launcher3.allapps;
 
-package com.android.launcher3.uioverrides;
+/** Base config values for search. */
+public class BaseSearchConfig {
+    public BaseSearchConfig() {}
 
-import com.android.launcher3.config.FeatureFlags.DebugFlag;
-
-public class DeviceFlag extends DebugFlag {
-
-    public DeviceFlag(String key, boolean defaultValue, String description) {
-        super(key, defaultValue, description);
+    /**
+     * Returns whether to enable the synchronized keyboard transition between Home and All Apps.
+     */
+    public boolean isKeyboardSyncEnabled() {
+        return false;
     }
 }
diff --git a/src/com/android/launcher3/allapps/DiscoveryBounce.java b/src/com/android/launcher3/allapps/DiscoveryBounce.java
index be261f7..df22425 100644
--- a/src/com/android/launcher3/allapps/DiscoveryBounce.java
+++ b/src/com/android/launcher3/allapps/DiscoveryBounce.java
@@ -81,10 +81,10 @@
     }
 
     @Override
-    public boolean onBackPressed() {
-        super.onBackPressed();
-        // Go back to the previous state (from a user's perspective this floating view isn't
-        // something to go back from).
+    public boolean canHandleBack() {
+        // Since DiscoveryBounce doesn't handle back, onBackInvoked() won't be called and we should
+        // close it without animation.
+        close(false);
         return false;
     }
 
@@ -127,7 +127,7 @@
                 || onboardingPrefs.getBoolean(OnboardingPrefs.HOME_BOUNCE_SEEN)
                 || AbstractFloatingView.getTopOpenView(launcher) != null
                 || launcher.getSystemService(UserManager.class).isDemoUser()
-                || Utilities.IS_RUNNING_IN_TEST_HARNESS) {
+                || Utilities.isRunningInTestHarness()) {
             return;
         }
 
diff --git a/src/com/android/launcher3/allapps/FloatingHeaderView.java b/src/com/android/launcher3/allapps/FloatingHeaderView.java
index d0331c9..330d13d 100644
--- a/src/com/android/launcher3/allapps/FloatingHeaderView.java
+++ b/src/com/android/launcher3/allapps/FloatingHeaderView.java
@@ -32,7 +32,7 @@
 
 import com.android.launcher3.Insettable;
 import com.android.launcher3.R;
-import com.android.launcher3.allapps.BaseAllAppsContainerView.AdapterHolder;
+import com.android.launcher3.allapps.ActivityAllAppsContainerView.AdapterHolder;
 import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.uioverrides.plugins.PluginManagerWrapper;
 import com.android.launcher3.views.ActivityContext;
@@ -41,6 +41,7 @@
 import com.android.systemui.plugins.PluginListener;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Map;
 
 public class FloatingHeaderView extends LinearLayout implements
@@ -66,13 +67,13 @@
                         mAnimator.cancel();
                     }
 
-                    int current = -mCurrentRV.getCurrentScrollY();
+                    int current = -mCurrentRV.computeVerticalScrollOffset();
                     boolean headerCollapsed = mHeaderCollapsed;
                     moved(current);
                     applyVerticalMove();
                     if (headerCollapsed != mHeaderCollapsed) {
-                        BaseAllAppsContainerView<?> parent =
-                                (BaseAllAppsContainerView<?>) getParent();
+                        ActivityAllAppsContainerView<?> parent =
+                                (ActivityAllAppsContainerView<?>) getParent();
                         parent.invalidateHeader();
                     }
                 }
@@ -81,16 +82,14 @@
     protected final Map<AllAppsRow, PluginHeaderRow> mPluginRows = new ArrayMap<>();
 
     // These two values are necessary to ensure that the header protection is drawn correctly.
-    private final int mHeaderTopAdjustment;
-    private final int mHeaderBottomAdjustment;
-    private final boolean mHeaderProtectionSupported;
+    private final int mTabsAdditionalPaddingTop;
+    private final int mTabsAdditionalPaddingBottom;
 
     protected ViewGroup mTabLayout;
     private AllAppsRecyclerView mMainRV;
     private AllAppsRecyclerView mWorkRV;
     private SearchRecyclerView mSearchRV;
     private AllAppsRecyclerView mCurrentRV;
-    public boolean mHeaderCollapsed;
     protected int mSnappedScrolledY;
     private int mTranslationY;
 
@@ -99,7 +98,12 @@
     protected boolean mTabsHidden;
     protected int mMaxTranslation;
 
-    private boolean mCollapsed = false;
+    // Whether the header has been scrolled off-screen.
+    private boolean mHeaderCollapsed;
+    // Whether floating rows like predicted apps are hidden.
+    private boolean mFloatingRowsCollapsed;
+    // Total height of all current floating rows. Collapsed rows == 0 height.
+    private int mFloatingRowsHeight;
 
     // This is initialized once during inflation and stays constant after that. Fixed views
     // cannot be added or removed dynamically.
@@ -109,21 +113,16 @@
     // enabled or disabled, and represent the current set of all rows.
     private FloatingHeaderRow[] mAllRows = FloatingHeaderRow.NO_ROWS;
 
-
     public FloatingHeaderView(@NonNull Context context) {
         this(context, null);
     }
 
     public FloatingHeaderView(@NonNull Context context, @Nullable AttributeSet attrs) {
         super(context, attrs);
-        mHeaderTopAdjustment = context.getResources()
+        mTabsAdditionalPaddingTop = context.getResources()
                 .getDimensionPixelSize(R.dimen.all_apps_header_top_adjustment);
-        mHeaderBottomAdjustment = context.getResources()
+        mTabsAdditionalPaddingBottom = context.getResources()
                 .getDimensionPixelSize(R.dimen.all_apps_header_bottom_adjustment);
-        mHeaderProtectionSupported = context.getResources().getBoolean(
-                R.bool.config_header_protection_supported)
-                // TODO(b/208599118) Support header protection for bottom sheet.
-                && !ActivityContext.lookupContext(context).getDeviceProfile().isTablet;
     }
 
     @Override
@@ -142,6 +141,7 @@
         }
         mFixedRows = rows.toArray(new FloatingHeaderRow[rows.size()]);
         mAllRows = mFixedRows;
+        updateFloatingRowsHeight();
     }
 
     @Override
@@ -173,6 +173,7 @@
                 count++;
             }
         }
+        updateFloatingRowsHeight();
     }
 
     @Override
@@ -189,8 +190,8 @@
         int oldMaxHeight = mMaxTranslation;
         updateExpectedHeight();
 
-        if (mMaxTranslation != oldMaxHeight || mCollapsed) {
-            BaseAllAppsContainerView<?> parent = (BaseAllAppsContainerView<?>) getParent();
+        if (mMaxTranslation != oldMaxHeight || mFloatingRowsCollapsed) {
+            ActivityAllAppsContainerView parent = (ActivityAllAppsContainerView) getParent();
             if (parent != null) {
                 parent.setupHeader();
             }
@@ -227,7 +228,7 @@
         updateExpectedHeight();
 
         mTabsHidden = tabsHidden;
-        mTabLayout.setVisibility(tabsHidden ? View.GONE : View.VISIBLE);
+        maybeSetTabVisibility(VISIBLE);
         mMainRV = mainRV;
         mWorkRV = workRV;
         mSearchRV = searchRV;
@@ -249,23 +250,29 @@
                 rvType == AdapterHolder.MAIN ? mMainRV
                 : rvType == AdapterHolder.WORK ? mWorkRV : mSearchRV;
         mCurrentRV.addOnScrollListener(mOnScrollListener);
+        maybeSetTabVisibility(rvType == AdapterHolder.SEARCH ? GONE : VISIBLE);
+    }
+
+    /** Update tab visibility to the given state, only if tabs are active (work profile exists). */
+    void maybeSetTabVisibility(int visibility) {
+        mTabLayout.setVisibility(mTabsHidden ? GONE : visibility);
     }
 
     private void updateExpectedHeight() {
+        updateFloatingRowsHeight();
         mMaxTranslation = 0;
-        if (mCollapsed) {
+        if (mFloatingRowsCollapsed) {
             return;
         }
-        for (FloatingHeaderRow row : mAllRows) {
-            mMaxTranslation += row.getExpectedHeight();
-        }
+        mMaxTranslation += mFloatingRowsHeight;
         if (!mTabsHidden) {
-            mMaxTranslation += mHeaderBottomAdjustment;
+            mMaxTranslation += mTabsAdditionalPaddingBottom
+                    + getResources().getDimensionPixelSize(R.dimen.all_apps_tabs_margin_top);
         }
     }
 
-    public int getMaxTranslation() {
-        if (mMaxTranslation == 0 && mTabsHidden) {
+    int getMaxTranslation() {
+        if (mMaxTranslation == 0 && (mTabsHidden || mFloatingRowsCollapsed)) {
             return getResources().getDimensionPixelSize(R.dimen.all_apps_search_bar_bottom_padding);
         } else if (mMaxTranslation > 0 && mTabsHidden) {
             return mMaxTranslation + getPaddingTop();
@@ -306,7 +313,7 @@
         int uncappedTranslationY = mTranslationY;
         mTranslationY = Math.max(mTranslationY, -mMaxTranslation);
 
-        if (mCollapsed || uncappedTranslationY < mTranslationY - getPaddingTop()) {
+        if (mFloatingRowsCollapsed || uncappedTranslationY < mTranslationY - getPaddingTop()) {
             // we hide it completely if already capped (for opening search anim)
             for (FloatingHeaderRow row : mAllRows) {
                 row.setVerticalScroll(0, true /* isScrolledOut */);
@@ -319,11 +326,12 @@
 
         mTabLayout.setTranslationY(mTranslationY);
 
-        int clipTop = getPaddingTop() - mHeaderTopAdjustment;
+        int clipTop = getPaddingTop() - mTabsAdditionalPaddingTop;
         if (mTabsHidden) {
-            clipTop += getPaddingBottom() - mHeaderBottomAdjustment;
+            // Add back spacing that is otherwise covered by the tabs.
+            clipTop += mTabsAdditionalPaddingTop;
         }
-        mRVClip.top = mTabsHidden ? clipTop : 0;
+        mRVClip.top = mTabsHidden || mFloatingRowsCollapsed ? clipTop : 0;
         mHeaderClip.top = clipTop;
         // clipping on a draw might cause additional redraw
         setClipBounds(mHeaderClip);
@@ -341,13 +349,19 @@
     /**
      * Hides all the floating rows
      */
-    public void setCollapsed(boolean collapse) {
-        if (mCollapsed == collapse) return;
+    public void setFloatingRowsCollapsed(boolean collapsed) {
+        if (mFloatingRowsCollapsed == collapsed) {
+            return;
+        }
 
-        mCollapsed = collapse;
+        mFloatingRowsCollapsed = collapsed;
         onHeightUpdated();
     }
 
+    public int getClipTop() {
+        return mHeaderClip.top;
+    }
+
     public void reset(boolean animate) {
         if (mAnimator.isStarted()) {
             mAnimator.cancel();
@@ -370,6 +384,30 @@
         return !mHeaderCollapsed;
     }
 
+    /** Returns true if personal/work tabs are currently in use. */
+    public boolean usingTabs() {
+        return !mTabsHidden;
+    }
+
+    ViewGroup getTabLayout() {
+        return mTabLayout;
+    }
+
+    /** Calculates the combined height of any floating rows (e.g. predicted apps, app divider). */
+    private void updateFloatingRowsHeight() {
+        mFloatingRowsHeight =
+                Arrays.stream(mAllRows).mapToInt(FloatingHeaderRow::getExpectedHeight).sum();
+    }
+
+    /** Gets the combined height of any floating rows (e.g. predicted apps, app divider). */
+    int getFloatingRowsHeight() {
+        return mFloatingRowsHeight;
+    }
+
+    int getTabsAdditionalPaddingBottom() {
+        return mTabsAdditionalPaddingBottom;
+    }
+
     @Override
     public void onAnimationUpdate(ValueAnimator animation) {
         mTranslationY = (Integer) animation.getAnimatedValue();
@@ -406,10 +444,6 @@
         p.y = getTop() - mCurrentRV.getTop() - ((ViewGroup) mCurrentRV.getParent()).getTop();
     }
 
-    public boolean isHeaderProtectionSupported() {
-        return mHeaderProtectionSupported;
-    }
-
     @Override
     public boolean hasOverlappingRendering() {
         return false;
@@ -434,16 +468,13 @@
     /**
      * Returns visible height of FloatingHeaderView contents requiring header protection
      */
-    public int getPeripheralProtectionHeight() {
-        if (!mHeaderProtectionSupported) {
-            return 0;
-        }
-
+    int getPeripheralProtectionHeight() {
         // we only want to show protection when work tab is available and header is either
         // collapsed or animating to/from collapsed state
-        if (mTabsHidden || !mHeaderCollapsed) {
+        if (mTabsHidden || mFloatingRowsCollapsed || !mHeaderCollapsed) {
             return 0;
         }
-        return Math.max(getHeight() - getPaddingTop() + mTranslationY, 0);
+        return Math.max(0,
+                getTabLayout().getBottom() - getPaddingTop() + getPaddingBottom() + mTranslationY);
     }
 }
diff --git a/src/com/android/launcher3/allapps/LauncherAllAppsContainerView.java b/src/com/android/launcher3/allapps/LauncherAllAppsContainerView.java
index 20f5e74..aefedae 100644
--- a/src/com/android/launcher3/allapps/LauncherAllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/LauncherAllAppsContainerView.java
@@ -17,7 +17,6 @@
 
 import android.content.Context;
 import android.util.AttributeSet;
-import android.view.MotionEvent;
 import android.view.WindowInsets;
 
 import com.android.launcher3.Launcher;
@@ -42,31 +41,16 @@
     }
 
     @Override
-    public boolean onInterceptTouchEvent(MotionEvent ev) {
-        // The AllAppsContainerView houses the QSB and is hence visible from the Workspace
-        // Overview states. We shouldn't intercept for the scrubber in these cases.
-        if (!mActivityContext.isInState(LauncherState.ALL_APPS)) {
-            mTouchHandler = null;
-            return false;
-        }
-
-        return super.onInterceptTouchEvent(ev);
-    }
-
-    @Override
-    public boolean onTouchEvent(MotionEvent ev) {
-        if (!mActivityContext.isInState(LauncherState.ALL_APPS)) {
-            return false;
-        }
-        return super.onTouchEvent(ev);
-    }
-
-    @Override
-    protected int getNavBarScrimHeight(WindowInsets insets) {
+    protected int computeNavBarScrimHeight(WindowInsets insets) {
         if (Utilities.ATLEAST_Q) {
             return insets.getTappableElementInsets().bottom;
         } else {
             return insets.getStableInsetBottom();
         }
     }
+
+    @Override
+    public boolean isInAllApps() {
+        return mActivityContext.getStateManager().isInStableState(LauncherState.ALL_APPS);
+    }
 }
diff --git a/src/com/android/launcher3/allapps/SearchRecyclerView.java b/src/com/android/launcher3/allapps/SearchRecyclerView.java
index 482bd29..9d1dfc0 100644
--- a/src/com/android/launcher3/allapps/SearchRecyclerView.java
+++ b/src/com/android/launcher3/allapps/SearchRecyclerView.java
@@ -17,12 +17,17 @@
 
 import android.content.Context;
 import android.util.AttributeSet;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.core.util.Consumer;
 
 import com.android.launcher3.views.RecyclerViewFastScroller;
 
 /** A RecyclerView for AllApps Search results. */
 public class SearchRecyclerView extends AllAppsRecyclerView {
-    private static final String TAG = "SearchRecyclerView";
+
+    private Consumer<View> mChildAttachedConsumer;
 
     public SearchRecyclerView(Context context) {
         this(context, null);
@@ -41,6 +46,11 @@
         super(context, attrs, defStyleAttr, defStyleRes);
     }
 
+    /** This will be called just before a new child is attached to the window. */
+    public void setChildAttachedConsumer(Consumer<View> childAttachedConsumer) {
+        mChildAttachedConsumer = childAttachedConsumer;
+    }
+
     @Override
     protected void updatePoolSize() {
         RecycledViewPool pool = getRecycledViewPool();
@@ -57,4 +67,12 @@
     public RecyclerViewFastScroller getScrollbar() {
         return null;
     }
+
+    @Override
+    public void onChildAttachedToWindow(@NonNull View child) {
+        if (mChildAttachedConsumer != null) {
+            mChildAttachedConsumer.accept(child);
+        }
+        super.onChildAttachedToWindow(child);
+    }
 }
diff --git a/src/com/android/launcher3/allapps/SearchTransitionController.java b/src/com/android/launcher3/allapps/SearchTransitionController.java
new file mode 100644
index 0000000..b01ea53
--- /dev/null
+++ b/src/com/android/launcher3/allapps/SearchTransitionController.java
@@ -0,0 +1,356 @@
+/*
+ * 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.launcher3.allapps;
+
+import static android.view.View.VISIBLE;
+
+import static androidx.recyclerview.widget.RecyclerView.NO_POSITION;
+
+import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION;
+import static com.android.launcher3.anim.AnimatorListeners.forEndCallback;
+import static com.android.launcher3.anim.AnimatorListeners.forSuccessCallback;
+import static com.android.launcher3.anim.Interpolators.DEACCEL_1_7;
+import static com.android.launcher3.anim.Interpolators.INSTANT;
+import static com.android.launcher3.anim.Interpolators.clampToProgress;
+
+import android.animation.ObjectAnimator;
+import android.animation.TimeInterpolator;
+import android.graphics.drawable.Drawable;
+import android.util.FloatProperty;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.animation.Interpolator;
+
+import com.android.launcher3.BubbleTextView;
+import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
+import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.model.data.ItemInfo;
+
+/** Coordinates the transition between Search and A-Z in All Apps. */
+public class SearchTransitionController {
+
+    private static final String LOG_TAG = "SearchTransitionCtrl";
+
+    // Interpolator when the user taps the QSB while already in All Apps.
+    private static final Interpolator INTERPOLATOR_WITHIN_ALL_APPS = DEACCEL_1_7;
+    // Interpolator when the user taps the QSB from home screen, so transition to all apps is
+    // happening simultaneously.
+    private static final Interpolator INTERPOLATOR_TRANSITIONING_TO_ALL_APPS = INSTANT;
+
+    /**
+     * These values represent points on the [0, 1] animation progress spectrum. They are used to
+     * animate items in the {@link SearchRecyclerView}.
+     */
+    private static final float TOP_CONTENT_FADE_PROGRESS_START = 0.133f;
+    private static final float CONTENT_FADE_PROGRESS_DURATION = 0.083f;
+    private static final float TOP_BACKGROUND_FADE_PROGRESS_START = 0.633f;
+    private static final float BACKGROUND_FADE_PROGRESS_DURATION = 0.15f;
+    private static final float CONTENT_STAGGER = 0.01f;  // Progress before next item starts fading.
+
+    private static final FloatProperty<SearchTransitionController> SEARCH_TO_AZ_PROGRESS =
+            new FloatProperty<SearchTransitionController>("searchToAzProgress") {
+                @Override
+                public Float get(SearchTransitionController controller) {
+                    return controller.getSearchToAzProgress();
+                }
+
+                @Override
+                public void setValue(SearchTransitionController controller, float progress) {
+                    controller.setSearchToAzProgress(progress);
+                }
+            };
+
+    private final ActivityAllAppsContainerView<?> mAllAppsContainerView;
+
+    private ObjectAnimator mSearchToAzAnimator = null;
+    private float mSearchToAzProgress = 1f;
+    private boolean mSkipNextAnimationWithinAllApps;
+
+    public SearchTransitionController(ActivityAllAppsContainerView<?> allAppsContainerView) {
+        mAllAppsContainerView = allAppsContainerView;
+    }
+
+    /** Returns true if a transition animation is currently in progress. */
+    public boolean isRunning() {
+        return mSearchToAzAnimator != null;
+    }
+
+    /**
+     * Starts the transition to or from search state. If a transition is already in progress, the
+     * animation will start from that point with the new duration, and the previous onEndRunnable
+     * will not be called.
+     *
+     * @param goingToSearch true if will be showing search results, otherwise will be showing a-z
+     * @param duration time in ms for the animation to run
+     * @param onEndRunnable will be called when the animation finishes, unless another animation is
+     *                      scheduled in the meantime
+     */
+    public void animateToSearchState(boolean goingToSearch, long duration, Runnable onEndRunnable) {
+        float targetProgress = goingToSearch ? 0 : 1;
+
+        if (mSearchToAzAnimator != null) {
+            mSearchToAzAnimator.cancel();
+        }
+
+        mSearchToAzAnimator = ObjectAnimator.ofFloat(this, SEARCH_TO_AZ_PROGRESS, targetProgress);
+        boolean inAllApps = mAllAppsContainerView.isInAllApps();
+        TimeInterpolator timeInterpolator =
+                inAllApps ? INTERPOLATOR_WITHIN_ALL_APPS : INTERPOLATOR_TRANSITIONING_TO_ALL_APPS;
+        if (mSkipNextAnimationWithinAllApps) {
+            timeInterpolator = INSTANT;
+            mSkipNextAnimationWithinAllApps = false;
+        }
+        if (timeInterpolator == INSTANT) {
+            duration = 0;  // Don't want to animate when coming from QSB.
+        }
+        mSearchToAzAnimator.setDuration(duration).setInterpolator(timeInterpolator);
+        mSearchToAzAnimator.addListener(forEndCallback(() -> mSearchToAzAnimator = null));
+        if (!goingToSearch) {
+            mSearchToAzAnimator.addListener(forSuccessCallback(() -> {
+                mAllAppsContainerView.getFloatingHeaderView().setFloatingRowsCollapsed(false);
+                mAllAppsContainerView.getFloatingHeaderView().reset(false /* animate */);
+                mAllAppsContainerView.getAppsRecyclerViewContainer().setTranslationY(0);
+            }));
+        }
+        mSearchToAzAnimator.addListener(forSuccessCallback(onEndRunnable));
+
+        mAllAppsContainerView.getFloatingHeaderView().setFloatingRowsCollapsed(true);
+        mAllAppsContainerView.getFloatingHeaderView().setVisibility(VISIBLE);
+        mAllAppsContainerView.getFloatingHeaderView().maybeSetTabVisibility(VISIBLE);
+        mAllAppsContainerView.getAppsRecyclerViewContainer().setVisibility(VISIBLE);
+        getSearchRecyclerView().setVisibility(VISIBLE);
+        getSearchRecyclerView().setChildAttachedConsumer(this::onSearchChildAttached);
+        mSearchToAzAnimator.start();
+    }
+
+    private SearchRecyclerView getSearchRecyclerView() {
+        return mAllAppsContainerView.getSearchRecyclerView();
+    }
+
+    private void setSearchToAzProgress(float searchToAzProgress) {
+        mSearchToAzProgress = searchToAzProgress;
+        int searchHeight = updateSearchRecyclerViewProgress();
+
+        FloatingHeaderView headerView = mAllAppsContainerView.getFloatingHeaderView();
+
+        // Add predictions + app divider height to account for predicted apps which will now be in
+        // the Search RV instead of the floating header view. Note `getFloatingRowsHeight` returns 0
+        // when predictions are not shown.
+        int appsTranslationY = searchHeight + headerView.getFloatingRowsHeight();
+
+        if (headerView.usingTabs()) {
+            // Move tabs below the search results, and fade them out in 20% of the animation.
+            headerView.setTranslationY(searchHeight);
+            headerView.setAlpha(clampToProgress(searchToAzProgress, 0.8f, 1f));
+
+            // Account for the additional padding added for the tabs.
+            appsTranslationY +=
+                    headerView.getTabsAdditionalPaddingBottom()
+                            + mAllAppsContainerView.getResources().getDimensionPixelOffset(
+                                    R.dimen.all_apps_tabs_margin_top)
+                            - headerView.getPaddingTop();
+        }
+
+        View appsContainer = mAllAppsContainerView.getAppsRecyclerViewContainer();
+        appsContainer.setTranslationY(appsTranslationY);
+        // Fade apps out with tabs (in 20% of the total animation).
+        appsContainer.setAlpha(clampToProgress(searchToAzProgress, 0.8f, 1f));
+    }
+
+    /**
+     * Updates the children views of SearchRecyclerView based on the current animation progress.
+     *
+     * @return the total height of animating views (excluding at most one row of app icons).
+     */
+    private int updateSearchRecyclerViewProgress() {
+        int numSearchResultsAnimated = 0;
+        int totalHeight = 0;
+        int appRowHeight = 0;
+        boolean appRowComplete = false;
+        Integer top = null;
+        SearchRecyclerView searchRecyclerView = getSearchRecyclerView();
+
+        for (int i = 0; i < searchRecyclerView.getChildCount(); i++) {
+            View searchResultView = searchRecyclerView.getChildAt(i);
+            if (searchResultView == null) {
+                continue;
+            }
+
+            if (top == null) {
+                top = searchResultView.getTop();
+            }
+
+            int adapterPosition = searchRecyclerView.getChildAdapterPosition(searchResultView);
+            int spanIndex = getSpanIndex(searchRecyclerView, adapterPosition);
+            appRowComplete |= appRowHeight > 0 && spanIndex == 0;
+            // We don't animate the first (currently only) app row we see, as that is assumed to be
+            // predicted/prefix-matched apps.
+            boolean shouldAnimate = !isAppIcon(searchResultView) || appRowComplete;
+
+            float contentAlpha = 1f;
+            float backgroundAlpha = 1f;
+            if (shouldAnimate) {
+                if (spanIndex > 0) {
+                    // Animate this item with the previous item on the same row.
+                    numSearchResultsAnimated--;
+                }
+
+                // Adjust content alpha based on start progress and stagger.
+                float startContentFadeProgress = Math.max(0,
+                        TOP_CONTENT_FADE_PROGRESS_START
+                                - CONTENT_STAGGER * numSearchResultsAnimated);
+                float endContentFadeProgress = Math.min(1,
+                        startContentFadeProgress + CONTENT_FADE_PROGRESS_DURATION);
+                contentAlpha = 1 - clampToProgress(mSearchToAzProgress,
+                        startContentFadeProgress, endContentFadeProgress);
+
+                // Adjust background (or decorator) alpha based on start progress and stagger.
+                float startBackgroundFadeProgress = Math.max(0,
+                        TOP_BACKGROUND_FADE_PROGRESS_START
+                                - CONTENT_STAGGER * numSearchResultsAnimated);
+                float endBackgroundFadeProgress = Math.min(1,
+                        startBackgroundFadeProgress + BACKGROUND_FADE_PROGRESS_DURATION);
+                backgroundAlpha = 1 - clampToProgress(mSearchToAzProgress,
+                        startBackgroundFadeProgress, endBackgroundFadeProgress);
+
+                numSearchResultsAnimated++;
+            }
+
+            Drawable background = searchResultView.getBackground();
+            if (background != null
+                    && searchResultView instanceof ViewGroup
+                    && FeatureFlags.ENABLE_SEARCH_RESULT_BACKGROUND_DRAWABLES.get()) {
+                searchResultView.setAlpha(1f);
+
+                // Apply content alpha to each child, since the view needs to be fully opaque for
+                // the background to show properly.
+                ViewGroup searchResultViewGroup = (ViewGroup) searchResultView;
+                for (int j = 0; j < searchResultViewGroup.getChildCount(); j++) {
+                    searchResultViewGroup.getChildAt(j).setAlpha(contentAlpha);
+                }
+
+                // Apply background alpha to the background drawable directly.
+                background.setAlpha((int) (255 * backgroundAlpha));
+            } else {
+                searchResultView.setAlpha(contentAlpha);
+
+                // Apply background alpha to decorator if possible.
+                if (adapterPosition != NO_POSITION) {
+                    searchRecyclerView.getApps().getAdapterItems().get(adapterPosition)
+                            .setDecorationFillAlpha((int) (255 * backgroundAlpha));
+                }
+
+                // Apply background alpha to view's background (e.g. for Search Edu card).
+                if (background != null) {
+                    background.setAlpha((int) (255 * backgroundAlpha));
+                }
+            }
+
+            float scaleY = 1;
+            if (shouldAnimate) {
+                scaleY = 1 - mSearchToAzProgress;
+            }
+            int scaledHeight = (int) (searchResultView.getHeight() * scaleY);
+            searchResultView.setScaleY(scaleY);
+
+            // For rows with multiple elements, only count the height once and translate elements to
+            // the same y position.
+            int y = top + totalHeight;
+            if (spanIndex > 0) {
+                // Continuation of an existing row; move this item into the row.
+                y -= scaledHeight;
+            } else {
+                // Start of a new row contributes to total height.
+                totalHeight += scaledHeight;
+                if (!shouldAnimate) {
+                    appRowHeight = scaledHeight;
+                }
+            }
+            searchResultView.setY(y);
+        }
+
+        return totalHeight - appRowHeight;
+    }
+
+    /** @return the column that the view at this position is found (0 assumed if indeterminate). */
+    private int getSpanIndex(SearchRecyclerView searchRecyclerView, int adapterPosition) {
+        if (adapterPosition == NO_POSITION) {
+            Log.w(LOG_TAG, "Can't determine span index - child not found in adapter");
+            return 0;
+        }
+        if (!(searchRecyclerView.getAdapter() instanceof AllAppsGridAdapter<?>)) {
+            Log.e(LOG_TAG, "Search RV doesn't have an AllAppsGridAdapter?");
+            // This case shouldn't happen, but for debug devices we will continue to create a more
+            // visible crash.
+            if (!Utilities.IS_DEBUG_DEVICE) {
+                return 0;
+            }
+        }
+        AllAppsGridAdapter<?> adapter = (AllAppsGridAdapter<?>) searchRecyclerView.getAdapter();
+        return adapter.getSpanIndex(adapterPosition);
+    }
+
+    private boolean isAppIcon(View item) {
+        return item instanceof BubbleTextView && item.getTag() instanceof ItemInfo
+                && ((ItemInfo) item.getTag()).itemType == ITEM_TYPE_APPLICATION;
+    }
+
+    /** Called just before a child is attached to the SearchRecyclerView. */
+    private void onSearchChildAttached(View child) {
+        // Avoid allocating hardware layers for alpha changes.
+        child.forceHasOverlappingRendering(false);
+        child.setPivotY(0);
+        if (mSearchToAzProgress > 0) {
+            // Before the child is rendered, apply the animation including it to avoid flicker.
+            updateSearchRecyclerViewProgress();
+        } else {
+            // Apply default states without processing the full layout.
+            child.setAlpha(1);
+            child.setScaleY(1);
+            child.setTranslationY(0);
+            int adapterPosition = getSearchRecyclerView().getChildAdapterPosition(child);
+            if (adapterPosition != NO_POSITION) {
+                getSearchRecyclerView().getApps().getAdapterItems().get(adapterPosition)
+                        .setDecorationFillAlpha(255);
+            }
+            if (child instanceof ViewGroup
+                    && FeatureFlags.ENABLE_SEARCH_RESULT_BACKGROUND_DRAWABLES.get()) {
+                ViewGroup childGroup = (ViewGroup) child;
+                for (int i = 0; i < childGroup.getChildCount(); i++) {
+                    childGroup.getChildAt(i).setAlpha(1f);
+                }
+            }
+            if (child.getBackground() != null) {
+                child.getBackground().setAlpha(255);
+            }
+        }
+    }
+
+    private float getSearchToAzProgress() {
+        return mSearchToAzProgress;
+    }
+
+    /**
+     * This should only be called from {@code LauncherSearchSessionManager} when app restarts due to
+     * theme changes.
+     */
+    public void setSkipAnimationWithinAllApps(boolean skip) {
+        mSkipNextAnimationWithinAllApps = skip;
+    }
+}
diff --git a/src/com/android/launcher3/allapps/SearchUiManager.java b/src/com/android/launcher3/allapps/SearchUiManager.java
index 6138bc4..2174936 100644
--- a/src/com/android/launcher3/allapps/SearchUiManager.java
+++ b/src/com/android/launcher3/allapps/SearchUiManager.java
@@ -64,7 +64,8 @@
     /**
      * sets highlight result's title
      */
-    default void setFocusedResultTitle(@Nullable  CharSequence title) { }
+    default void setFocusedResultTitle(
+            @Nullable CharSequence title, @Nullable CharSequence subtitle, boolean showArrow) {}
 
     /** Refresh the currently displayed list of results. */
     default void refreshResults() {}
diff --git a/src/com/android/launcher3/allapps/SecondaryLauncherAllAppsContainerView.java b/src/com/android/launcher3/allapps/SecondaryLauncherAllAppsContainerView.java
index 0719c43..d7f5463 100644
--- a/src/com/android/launcher3/allapps/SecondaryLauncherAllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/SecondaryLauncherAllAppsContainerView.java
@@ -41,5 +41,10 @@
     }
 
     @Override
-    protected void updateBackground(DeviceProfile deviceProfile) {}
+    protected void updateBackgroundVisibility(DeviceProfile deviceProfile) {}
+
+    @Override
+    public boolean isInAllApps() {
+        return mActivityContext.isAppDrawerShown();
+    }
 }
diff --git a/src/com/android/launcher3/allapps/WorkAdapterProvider.java b/src/com/android/launcher3/allapps/WorkAdapterProvider.java
deleted file mode 100644
index 76d08c8..0000000
--- a/src/com/android/launcher3/allapps/WorkAdapterProvider.java
+++ /dev/null
@@ -1,138 +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.launcher3.allapps;
-
-import android.content.SharedPreferences;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import com.android.launcher3.R;
-import com.android.launcher3.allapps.BaseAllAppsAdapter.AdapterItem;
-import com.android.launcher3.model.StringCache;
-import com.android.launcher3.views.ActivityContext;
-
-import java.util.ArrayList;
-
-/**
- * A UI expansion wrapper providing for providing work profile specific views
- */
-public class WorkAdapterProvider extends BaseAdapterProvider {
-
-    public static final String KEY_WORK_EDU_STEP = "showed_work_profile_edu";
-
-    private static final int VIEW_TYPE_WORK_EDU_CARD = 1 << 20;
-    private static final int VIEW_TYPE_WORK_DISABLED_CARD = 1 << 21;
-
-    @WorkProfileManager.WorkProfileState
-    private int mState;
-    private ActivityContext mActivityContext;
-    private SharedPreferences mPreferences;
-
-    WorkAdapterProvider(ActivityContext activityContext, SharedPreferences prefs) {
-        mActivityContext = activityContext;
-        mPreferences = prefs;
-    }
-
-    @Override
-    public void onBindView(AllAppsGridAdapter.ViewHolder holder, int position) {
-        if (holder.itemView instanceof WorkEduCard) {
-            ((WorkEduCard) holder.itemView).setPosition(position);
-        }
-    }
-
-    @Override
-    public AllAppsGridAdapter.ViewHolder onCreateViewHolder(LayoutInflater layoutInflater,
-            ViewGroup parent, int viewType) {
-        int viewId = viewType == VIEW_TYPE_WORK_DISABLED_CARD ? R.layout.work_apps_paused
-                : R.layout.work_apps_edu;
-        View view = layoutInflater.inflate(viewId, parent, false);
-        setDeviceManagementResources(view, viewType);
-        return new AllAppsGridAdapter.ViewHolder(view);
-    }
-
-    private void setDeviceManagementResources(View view, int viewType) {
-        StringCache cache = mActivityContext.getStringCache();
-        if (cache == null) {
-            return;
-        }
-        if (viewType == VIEW_TYPE_WORK_DISABLED_CARD) {
-            setWorkProfilePausedResources(view, cache);
-        } else {
-            setWorkProfileEduResources(view, cache);
-        }
-    }
-
-    private void setWorkProfilePausedResources(View view, StringCache cache) {
-        TextView title = view.findViewById(R.id.work_apps_paused_title);
-        title.setText(cache.workProfilePausedTitle);
-
-        TextView body = view.findViewById(R.id.work_apps_paused_content);
-        body.setText(cache.workProfilePausedDescription);
-
-        TextView button = view.findViewById(R.id.enable_work_apps);
-        button.setText(cache.workProfileEnableButton);
-    }
-
-    private void setWorkProfileEduResources(View view, StringCache cache) {
-        TextView title = view.findViewById(R.id.work_apps_paused_title);
-        title.setText(cache.workProfileEdu);
-
-    }
-
-    /**
-     * returns whether or not work apps should be visible in work tab.
-     */
-    public boolean shouldShowWorkApps() {
-        return mState != WorkProfileManager.STATE_DISABLED;
-    }
-
-    /**
-     * Adds work profile specific adapter items to adapterItems and returns number of items added
-     */
-    public int addWorkItems(ArrayList<AllAppsGridAdapter.AdapterItem> adapterItems) {
-        if (mState == WorkProfileManager.STATE_DISABLED) {
-            //add disabled card here.
-            adapterItems.add(new AdapterItem(VIEW_TYPE_WORK_DISABLED_CARD));
-        } else if (mState == WorkProfileManager.STATE_ENABLED && !isEduSeen()) {
-            adapterItems.add(new AdapterItem(VIEW_TYPE_WORK_EDU_CARD));
-        }
-
-        return adapterItems.size();
-    }
-
-    /**
-     * Sets the current state of work profile
-     */
-    public void updateCurrentState(@WorkProfileManager.WorkProfileState int state) {
-        mState = state;
-    }
-
-    @Override
-    public boolean isViewSupported(int viewType) {
-        return viewType == VIEW_TYPE_WORK_DISABLED_CARD || viewType == VIEW_TYPE_WORK_EDU_CARD;
-    }
-
-    @Override
-    public int getItemsPerRow(int viewType, int appsPerRow) {
-        return 1;
-    }
-
-    private boolean isEduSeen() {
-        return mPreferences.getInt(KEY_WORK_EDU_STEP, 0) != 0;
-    }
-}
diff --git a/src/com/android/launcher3/allapps/WorkEduCard.java b/src/com/android/launcher3/allapps/WorkEduCard.java
index 539cff1..b4cdc96 100644
--- a/src/com/android/launcher3/allapps/WorkEduCard.java
+++ b/src/com/android/launcher3/allapps/WorkEduCard.java
@@ -15,6 +15,7 @@
  */
 package com.android.launcher3.allapps;
 
+import static com.android.launcher3.LauncherPrefs.WORK_EDU_STEP;
 import static com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip.getTabWidth;
 
 import android.content.Context;
@@ -24,9 +25,11 @@
 import android.view.animation.Animation;
 import android.view.animation.AnimationUtils;
 import android.widget.FrameLayout;
+import android.widget.TextView;
 
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.R;
-import com.android.launcher3.Utilities;
+import com.android.launcher3.model.StringCache;
 import com.android.launcher3.views.ActivityContext;
 
 /**
@@ -72,13 +75,18 @@
     protected void onFinishInflate() {
         super.onFinishInflate();
         findViewById(R.id.action_btn).setOnClickListener(this);
+
+        StringCache cache = mActivityContext.getStringCache();
+        if (cache != null) {
+            TextView title = findViewById(R.id.work_apps_paused_title);
+            title.setText(cache.workProfileEdu);
+        }
     }
 
     @Override
     public void onClick(View view) {
         startAnimation(mDismissAnim);
-        Utilities.getPrefs(getContext()).edit().putInt(WorkAdapterProvider.KEY_WORK_EDU_STEP,
-                1).apply();
+        LauncherPrefs.get(getContext()).put(WORK_EDU_STEP, 1);
     }
 
     @Override
diff --git a/src/com/android/launcher3/allapps/WorkModeSwitch.java b/src/com/android/launcher3/allapps/WorkModeSwitch.java
index edb0128..8c2fb19 100644
--- a/src/com/android/launcher3/allapps/WorkModeSwitch.java
+++ b/src/com/android/launcher3/allapps/WorkModeSwitch.java
@@ -15,17 +15,21 @@
  */
 package com.android.launcher3.allapps;
 
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TURN_OFF_WORK_APPS_TAP;
 import static com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip.getTabWidth;
 
+import android.animation.LayoutTransition;
 import android.content.Context;
-import android.graphics.Insets;
 import android.graphics.Rect;
 import android.util.AttributeSet;
 import android.view.View;
-import android.view.ViewGroup.MarginLayoutParams;
 import android.view.WindowInsets;
-import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.core.graphics.Insets;
+import androidx.core.view.WindowInsetsCompat;
 
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Insettable;
@@ -33,77 +37,83 @@
 import com.android.launcher3.Utilities;
 import com.android.launcher3.anim.KeyboardInsetAnimationCallback;
 import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.logging.StatsLogManager;
 import com.android.launcher3.model.StringCache;
 import com.android.launcher3.views.ActivityContext;
-import com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip;
-
 /**
  * Work profile toggle switch shown at the bottom of AllApps work tab
  */
-public class WorkModeSwitch extends Button implements Insettable, View.OnClickListener,
-        KeyboardInsetAnimationCallback.KeyboardInsetListener,
-        PersonalWorkSlidingTabStrip.OnActivePageChangedListener {
+public class WorkModeSwitch extends LinearLayout implements Insettable,
+        KeyboardInsetAnimationCallback.KeyboardInsetListener {
 
     private static final int FLAG_FADE_ONGOING = 1 << 1;
     private static final int FLAG_TRANSLATION_ONGOING = 1 << 2;
     private static final int FLAG_PROFILE_TOGGLE_ONGOING = 1 << 3;
+    private static final int SCROLL_THRESHOLD_DP = 10;
 
     private final Rect mInsets = new Rect();
+    private final Rect mImeInsets = new Rect();
     private int mFlags;
-    private boolean mWorkEnabled;
-    private boolean mOnWorkTab;
+    private final ActivityContext mActivityContext;
 
-    public WorkModeSwitch(Context context) {
+    // Threshold when user scrolls up/down to determine when should button extend/collapse
+    private final int mScrollThreshold;
+    private ImageView mIcon;
+    private TextView mTextView;
+    private final StatsLogManager mStatsLogManager;
+
+
+    public WorkModeSwitch(@NonNull Context context) {
         this(context, null, 0);
     }
 
-    public WorkModeSwitch(Context context, AttributeSet attrs) {
+    public WorkModeSwitch(@NonNull Context context, @NonNull AttributeSet attrs) {
         this(context, attrs, 0);
     }
 
-    public WorkModeSwitch(Context context, AttributeSet attrs, int defStyleAttr) {
+    public WorkModeSwitch(@NonNull Context context, @NonNull AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr);
+        mScrollThreshold = Utilities.dpToPx(SCROLL_THRESHOLD_DP);
+        mActivityContext = ActivityContext.lookupContext(getContext());
+        mStatsLogManager = mActivityContext.getStatsLogManager();
     }
 
     @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
+
+        mIcon = findViewById(R.id.work_icon);
+        mTextView = findViewById(R.id.pause_text);
         setSelected(true);
-        setOnClickListener(this);
         if (Utilities.ATLEAST_R) {
             KeyboardInsetAnimationCallback keyboardInsetAnimationCallback =
                     new KeyboardInsetAnimationCallback(this);
             setWindowInsetsAnimationCallback(keyboardInsetAnimationCallback);
         }
-        ActivityContext activityContext = ActivityContext.lookupContext(getContext());
-        DeviceProfile grid = activityContext.getDeviceProfile();
-        setInsets(grid.getInsets());
 
-        StringCache cache = activityContext.getStringCache();
+        setInsets(mActivityContext.getDeviceProfile().getInsets());
+        StringCache cache = mActivityContext.getStringCache();
         if (cache != null) {
-            setText(cache.workProfilePauseButton);
+            mTextView.setText(cache.workProfilePauseButton);
         }
+
+        getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);
     }
 
     @Override
     public void setInsets(Rect insets) {
         mInsets.set(insets);
+        updateTranslationY();
         MarginLayoutParams lp = (MarginLayoutParams) getLayoutParams();
         if (lp != null) {
             int bottomMargin = getResources().getDimensionPixelSize(R.dimen.work_fab_margin_bottom);
+            DeviceProfile dp = ActivityContext.lookupContext(getContext()).getDeviceProfile();
             if (FeatureFlags.ENABLE_FLOATING_SEARCH_BAR.get()) {
-                bottomMargin <<= 1;  // Double margin to add space above search bar.
-                bottomMargin += getResources().getDimensionPixelSize(R.dimen.qsb_widget_height);
+                bottomMargin += dp.hotseatQsbHeight;
             }
 
-            DeviceProfile dp = ActivityContext.lookupContext(getContext()).getDeviceProfile();
-            lp.rightMargin = lp.leftMargin = dp.allAppsLeftRightPadding;
-            if (!dp.isGestureMode) {
-                if (dp.isTaskbarPresent) {
-                    bottomMargin += dp.taskbarSize;
-                } else {
-                    bottomMargin += insets.bottom;
-                }
+            if (!dp.isGestureMode && dp.isTaskbarPresent) {
+                bottomMargin += dp.taskbarHeight;
             }
 
             lp.bottomMargin = bottomMargin;
@@ -113,72 +123,65 @@
     @Override
     protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
         super.onLayout(changed, left, top, right, bottom);
-        DeviceProfile dp = ActivityContext.lookupContext(getContext()).getDeviceProfile();
         View parent = (View) getParent();
+        int allAppsLeftRightPadding = mActivityContext.getDeviceProfile().allAppsLeftRightPadding;
         int size = parent.getWidth() - parent.getPaddingLeft() - parent.getPaddingRight()
-                - 2 * dp.allAppsLeftRightPadding;
+                - 2 * allAppsLeftRightPadding;
         int tabWidth = getTabWidth(getContext(), size);
-        int shift = (size - tabWidth) / 2 + dp.allAppsLeftRightPadding;
+        int shift = (size - tabWidth) / 2 + allAppsLeftRightPadding;
         setTranslationX(Utilities.isRtl(getResources()) ? shift : -shift);
     }
 
     @Override
-    public void onActivePageChanged(int page) {
-        mOnWorkTab = page == ActivityAllAppsContainerView.AdapterHolder.WORK;
-        updateVisibility();
-    }
-
-    @Override
-    public void onClick(View view) {
-        if (Utilities.ATLEAST_P && isEnabled()) {
-            setFlag(FLAG_PROFILE_TOGGLE_ONGOING);
-            ActivityContext activityContext = ActivityContext.lookupContext(getContext());
-            activityContext.getStatsLogManager().logger().log(LAUNCHER_TURN_OFF_WORK_APPS_TAP);
-            activityContext.getAppsView().getWorkManager().setWorkProfileEnabled(false);
-        }
-    }
-
-    @Override
     public boolean isEnabled() {
         return super.isEnabled() && getVisibility() == VISIBLE && mFlags == 0;
     }
 
-    /**
-     * Sets the enabled or disabled state of the button
-     */
-    public void updateCurrentState(boolean isEnabled) {
-        removeFlag(FLAG_PROFILE_TOGGLE_ONGOING);
-        if (mWorkEnabled != isEnabled) {
-            mWorkEnabled = isEnabled;
-            updateVisibility();
-        }
-    }
-
-    private void updateVisibility() {
+    public void animateVisibility(boolean visible) {
         clearAnimation();
-        if (mWorkEnabled && mOnWorkTab) {
+        if (visible) {
             setFlag(FLAG_FADE_ONGOING);
             setVisibility(VISIBLE);
+            extend();
             animate().alpha(1).withEndAction(() -> removeFlag(FLAG_FADE_ONGOING)).start();
         } else if (getVisibility() != GONE) {
             setFlag(FLAG_FADE_ONGOING);
             animate().alpha(0).withEndAction(() -> {
                 removeFlag(FLAG_FADE_ONGOING);
-                this.setVisibility(GONE);
+                setVisibility(GONE);
             }).start();
         }
     }
 
     @Override
     public WindowInsets onApplyWindowInsets(WindowInsets insets) {
-        if (Utilities.ATLEAST_R && isEnabled()) {
-            setTranslationY(0);
-            if (insets.isVisible(WindowInsets.Type.ime())) {
-                Insets keyboardInsets = insets.getInsets(WindowInsets.Type.ime());
-                setTranslationY(mInsets.bottom - keyboardInsets.bottom);
-            }
+        WindowInsetsCompat windowInsetsCompat =
+                WindowInsetsCompat.toWindowInsetsCompat(insets, this);
+        if (windowInsetsCompat.isVisible(WindowInsetsCompat.Type.ime())) {
+            setInsets(mImeInsets, windowInsetsCompat.getInsets(WindowInsetsCompat.Type.ime()));
+        } else {
+            mImeInsets.setEmpty();
         }
-        return insets;
+        updateTranslationY();
+        return super.onApplyWindowInsets(insets);
+    }
+
+    void updateTranslationY() {
+        setTranslationY(-mImeInsets.bottom);
+    }
+
+    @Override
+    public void setTranslationY(float translationY) {
+        // Always translate at least enough for nav bar insets.
+        super.setTranslationY(Math.min(translationY, -mInsets.bottom));
+    }
+
+    private void setInsets(Rect rect, Insets insets) {
+        rect.set(insets.left, insets.top, insets.right, insets.bottom);
+    }
+
+    public Rect getImeInsets() {
+        return mImeInsets;
     }
 
     @Override
@@ -198,4 +201,16 @@
     private void removeFlag(int flag) {
         mFlags &= ~flag;
     }
+
+    public void extend() {
+        mTextView.setVisibility(VISIBLE);
+    }
+
+    public void shrink(){
+        mTextView.setVisibility(GONE);
+    }
+
+    public int getScrollThreshold() {
+        return mScrollThreshold;
+    }
 }
diff --git a/src/com/android/launcher3/allapps/WorkPausedCard.java b/src/com/android/launcher3/allapps/WorkPausedCard.java
index 729622f..26a7803 100644
--- a/src/com/android/launcher3/allapps/WorkPausedCard.java
+++ b/src/com/android/launcher3/allapps/WorkPausedCard.java
@@ -23,9 +23,11 @@
 import android.view.View;
 import android.widget.Button;
 import android.widget.LinearLayout;
+import android.widget.TextView;
 
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.model.StringCache;
 import com.android.launcher3.views.ActivityContext;
 
 /**
@@ -49,12 +51,27 @@
         mActivityContext = ActivityContext.lookupContext(getContext());
     }
 
-
     @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
         mBtn = findViewById(R.id.enable_work_apps);
         mBtn.setOnClickListener(this);
+
+        StringCache cache = mActivityContext.getStringCache();
+        if (cache != null) {
+            setWorkProfilePausedResources(cache);
+        }
+    }
+
+    private void setWorkProfilePausedResources(StringCache cache) {
+        TextView title = findViewById(R.id.work_apps_paused_title);
+        title.setText(cache.workProfilePausedTitle);
+
+        TextView body = findViewById(R.id.work_apps_paused_content);
+        body.setText(cache.workProfilePausedDescription);
+
+        TextView button = findViewById(R.id.enable_work_apps);
+        button.setText(cache.workProfileEnableButton);
     }
 
     @Override
diff --git a/src/com/android/launcher3/allapps/WorkProfileManager.java b/src/com/android/launcher3/allapps/WorkProfileManager.java
index 2f5b7a2..44c233f 100644
--- a/src/com/android/launcher3/allapps/WorkProfileManager.java
+++ b/src/com/android/launcher3/allapps/WorkProfileManager.java
@@ -15,46 +15,60 @@
  */
 package com.android.launcher3.allapps;
 
+import static com.android.launcher3.LauncherPrefs.WORK_EDU_STEP;
+import static com.android.launcher3.allapps.ActivityAllAppsContainerView.AdapterHolder.MAIN;
+import static com.android.launcher3.allapps.ActivityAllAppsContainerView.AdapterHolder.SEARCH;
+import static com.android.launcher3.allapps.ActivityAllAppsContainerView.AdapterHolder.WORK;
+import static com.android.launcher3.allapps.BaseAllAppsAdapter.VIEW_TYPE_WORK_DISABLED_CARD;
+import static com.android.launcher3.allapps.BaseAllAppsAdapter.VIEW_TYPE_WORK_EDU_CARD;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TURN_OFF_WORK_APPS_TAP;
 import static com.android.launcher3.model.BgDataModel.Callbacks.FLAG_HAS_SHORTCUT_PERMISSION;
 import static com.android.launcher3.model.BgDataModel.Callbacks.FLAG_QUIET_MODE_CHANGE_PERMISSION;
 import static com.android.launcher3.model.BgDataModel.Callbacks.FLAG_QUIET_MODE_ENABLED;
+import static com.android.launcher3.testing.shared.TestProtocol.WORK_TAB_MISSING;
 import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
 
-import android.content.SharedPreferences;
 import android.os.Build;
 import android.os.Process;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.util.Log;
+import android.view.View;
 
 import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.RequiresApi;
+import androidx.recyclerview.widget.RecyclerView;
 
-import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
+import com.android.launcher3.allapps.BaseAllAppsAdapter.AdapterItem;
+import com.android.launcher3.logging.StatsLogManager;
 import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
 import java.util.function.Predicate;
 
 /**
- * Companion class for {@link BaseAllAppsContainerView} to manage work tab and personal tab
+ * Companion class for {@link ActivityAllAppsContainerView} to manage work tab and personal tab
  * related
  * logic based on {@link WorkProfileState}?
  */
 public class WorkProfileManager implements PersonalWorkSlidingTabStrip.OnActivePageChangedListener {
     private static final String TAG = "WorkProfileManager";
 
+    public static final String KEY_WORK_EDU_STEP = "showed_work_profile_edu";
 
     public static final int STATE_ENABLED = 1;
     public static final int STATE_DISABLED = 2;
     public static final int STATE_TRANSITION = 3;
 
-    private final UserManager mUserManager;
-
     /**
      * Work profile manager states
      */
@@ -64,27 +78,25 @@
             STATE_TRANSITION
     })
     @Retention(RetentionPolicy.SOURCE)
-    public @interface WorkProfileState {
-    }
+    public @interface WorkProfileState { }
 
-    private final BaseAllAppsContainerView<?> mAllApps;
-    private final WorkAdapterProvider mAdapterProvider;
+    private final UserManager mUserManager;
+    private final ActivityAllAppsContainerView<?> mAllApps;
     private final Predicate<ItemInfo> mMatcher;
+    private final StatsLogManager mStatsLogManager;
 
     private WorkModeSwitch mWorkModeSwitch;
-    private final DeviceProfile mDeviceProfile;
 
     @WorkProfileState
     private int mCurrentState;
 
-
-    public WorkProfileManager(UserManager userManager, BaseAllAppsContainerView<?> allApps,
-            SharedPreferences preferences, DeviceProfile deviceProfile) {
+    public WorkProfileManager(
+            UserManager userManager, ActivityAllAppsContainerView allApps,
+            StatsLogManager statsLogManager) {
         mUserManager = userManager;
         mAllApps = allApps;
-        mDeviceProfile = deviceProfile;
-        mAdapterProvider = new WorkAdapterProvider(allApps.mActivityContext, preferences);
         mMatcher = mAllApps.mPersonalMatcher.negate();
+        mStatsLogManager = statsLogManager;
     }
 
     /**
@@ -105,8 +117,16 @@
 
     @Override
     public void onActivePageChanged(int page) {
+        updateWorkFAB(page);
+    }
+
+    private void updateWorkFAB(int page) {
         if (mWorkModeSwitch != null) {
-            mWorkModeSwitch.onActivePageChanged(page);
+            if (page == MAIN || page == SEARCH) {
+                mWorkModeSwitch.animateVisibility(false);
+            } else if (page == WORK && mCurrentState == STATE_ENABLED) {
+                mWorkModeSwitch.animateVisibility(true);
+            }
         }
     }
 
@@ -116,23 +136,40 @@
     public void reset() {
         boolean isEnabled = !mAllApps.getAppsStore().hasModelFlag(FLAG_QUIET_MODE_ENABLED);
         updateCurrentState(isEnabled ? STATE_ENABLED : STATE_DISABLED);
+        if (mWorkModeSwitch != null) {
+            // reset the position of the button and clear IME insets.
+            mWorkModeSwitch.getImeInsets().setEmpty();
+            mWorkModeSwitch.updateTranslationY();
+        }
     }
 
     private void updateCurrentState(@WorkProfileState int currentState) {
+        if (TestProtocol.sDebugTracing) {
+            Log.d(WORK_TAB_MISSING, "WorkProfileManager#updateCurrentState: " +
+                    currentState, new Throwable());
+        }
         mCurrentState = currentState;
-        mAdapterProvider.updateCurrentState(currentState);
         if (getAH() != null) {
             getAH().mAppsList.updateAdapterItems();
         }
         if (mWorkModeSwitch != null) {
-            mWorkModeSwitch.updateCurrentState(currentState == STATE_ENABLED);
+            updateWorkFAB(mAllApps.getCurrentPage());
+        }
+        if (mCurrentState == STATE_ENABLED) {
+            attachWorkModeSwitch();
+        } else if (mCurrentState == STATE_DISABLED) {
+            detachWorkModeSwitch();
         }
     }
 
     /**
-     * Creates and attaches for profile toggle button to {@link BaseAllAppsContainerView}
+     * Creates and attaches for profile toggle button to {@link ActivityAllAppsContainerView}
      */
     public boolean attachWorkModeSwitch() {
+        if (TestProtocol.sDebugTracing) {
+            Log.d(WORK_TAB_MISSING, "ActivityAllAppsContainerView#attachWorkModeSwitch "
+                    + "mWorkModeSwitch: " + mWorkModeSwitch);
+        }
         if (!mAllApps.getAppsStore().hasModelFlag(
                 FLAG_HAS_SHORTCUT_PERMISSION | FLAG_QUIET_MODE_CHANGE_PERMISSION)) {
             Log.e(TAG, "unable to attach work mode switch; Missing required permissions");
@@ -142,17 +179,20 @@
             mWorkModeSwitch = (WorkModeSwitch) mAllApps.getLayoutInflater().inflate(
                     R.layout.work_mode_fab, mAllApps, false);
         }
-        if (mWorkModeSwitch.getParent() != mAllApps) {
+        if (mWorkModeSwitch.getParent() == null) {
             mAllApps.addView(mWorkModeSwitch);
         }
+        if (mAllApps.getCurrentPage() != WORK) {
+            mWorkModeSwitch.animateVisibility(false);
+        }
         if (getAH() != null) {
             getAH().applyPadding();
         }
-        mWorkModeSwitch.updateCurrentState(mCurrentState == STATE_ENABLED);
+        mWorkModeSwitch.setOnClickListener(this::onWorkFabClicked);
         return true;
     }
     /**
-     * Removes work profile toggle button from {@link BaseAllAppsContainerView}
+     * Removes work profile toggle button from {@link ActivityAllAppsContainerView}
      */
     public void detachWorkModeSwitch() {
         if (mWorkModeSwitch != null && mWorkModeSwitch.getParent() == mAllApps) {
@@ -161,10 +201,6 @@
         mWorkModeSwitch = null;
     }
 
-    public WorkAdapterProvider getAdapterProvider() {
-        return mAdapterProvider;
-    }
-
     public Predicate<ItemInfo> getMatcher() {
         return mMatcher;
     }
@@ -174,11 +210,69 @@
         return mWorkModeSwitch;
     }
 
-    private BaseAllAppsContainerView<?>.AdapterHolder getAH() {
-        return mAllApps.mAH.get(BaseAllAppsContainerView.AdapterHolder.WORK);
+    private ActivityAllAppsContainerView.AdapterHolder getAH() {
+        return mAllApps.mAH.get(WORK);
     }
 
     public int getCurrentState() {
         return mCurrentState;
     }
+
+    /**
+     * returns whether or not work apps should be visible in work tab.
+     */
+    public boolean shouldShowWorkApps() {
+        return mCurrentState != WorkProfileManager.STATE_DISABLED;
+    }
+
+    /**
+     * Adds work profile specific adapter items to adapterItems and returns number of items added
+     */
+    public int addWorkItems(ArrayList<AdapterItem> adapterItems) {
+        if (mCurrentState == WorkProfileManager.STATE_DISABLED) {
+            //add disabled card here.
+            adapterItems.add(new AdapterItem(VIEW_TYPE_WORK_DISABLED_CARD));
+        } else if (mCurrentState == WorkProfileManager.STATE_ENABLED && !isEduSeen()) {
+            adapterItems.add(new AdapterItem(VIEW_TYPE_WORK_EDU_CARD));
+        }
+        return adapterItems.size();
+    }
+
+    private boolean isEduSeen() {
+        return LauncherPrefs.get(mAllApps.getContext()).get(WORK_EDU_STEP) != 0;
+    }
+
+    private void onWorkFabClicked(View view) {
+        if (Utilities.ATLEAST_P && mCurrentState == STATE_ENABLED && mWorkModeSwitch.isEnabled()) {
+            mStatsLogManager.logger().log(LAUNCHER_TURN_OFF_WORK_APPS_TAP);
+            setWorkProfileEnabled(false);
+        }
+    }
+
+    public RecyclerView.OnScrollListener newScrollListener() {
+        return new RecyclerView.OnScrollListener() {
+            int totalDelta = 0;
+            @Override
+            public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState){
+                if (newState == RecyclerView.SCROLL_STATE_IDLE) {
+                    totalDelta = 0;
+                }
+            }
+            @Override
+            public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
+                WorkModeSwitch fab = getWorkModeSwitch();
+                if (fab == null){
+                    return;
+                }
+                totalDelta = Utilities.boundToRange(totalDelta,
+                        -fab.getScrollThreshold(), fab.getScrollThreshold()) + dy;
+                boolean isScrollAtTop = recyclerView.computeVerticalScrollOffset() == 0;
+                if ((isScrollAtTop || totalDelta < -fab.getScrollThreshold())) {
+                    fab.extend();
+                } else if (totalDelta > fab.getScrollThreshold()) {
+                    fab.shrink();
+                }
+            }
+        };
+    }
 }
diff --git a/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java b/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java
index 886460e..4427a49 100644
--- a/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java
+++ b/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java
@@ -15,9 +15,6 @@
  */
 package com.android.launcher3.allapps.search;
 
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_FOCUSED_ITEM_SELECTED_WITH_IME;
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_QUICK_SEARCH_WITH_IME;
-
 import android.text.Editable;
 import android.text.SpannableStringBuilder;
 import android.text.TextUtils;
@@ -70,7 +67,7 @@
         mInput.addTextChangedListener(this);
         mInput.setOnEditorActionListener(this);
         mInput.setOnBackKeyListener(this);
-        mInput.setOnFocusChangeListener(this);
+        mInput.addOnFocusChangeListener(this);
         mSearchAlgorithm = searchAlgorithm;
     }
 
@@ -84,7 +81,10 @@
         mTextConversions = extractTextConversions(s);
     }
 
-    private static String[] extractTextConversions(CharSequence text) {
+    /**
+     * Extract text conversions from composing text and send them for search.
+     */
+    public static String[] extractTextConversions(CharSequence text) {
         if (text instanceof SpannableStringBuilder) {
             SpannableStringBuilder spanned = (SpannableStringBuilder) text;
             SuggestionSpan[] suggestionSpans =
@@ -122,10 +122,6 @@
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
 
         if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_GO) {
-            mLauncher.getStatsLogManager().logger()
-                    .log(actionId == EditorInfo.IME_ACTION_SEARCH
-                            ? LAUNCHER_ALLAPPS_QUICK_SEARCH_WITH_IME
-                            : LAUNCHER_ALLAPPS_FOCUSED_ITEM_SELECTED_WITH_IME);
             // selectFocusedView should return SearchTargetEvent that is passed onto onClick
             return mLauncher.getAppsView().getMainAdapterProvider().launchHighlightedItem();
         }
@@ -157,6 +153,7 @@
         mCallback.clearSearchResult();
         mInput.reset();
         mQuery = null;
+        mInput.removeOnFocusChangeListener(this);
     }
 
     /**
diff --git a/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java b/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java
index 6539c05..78c305b 100644
--- a/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java
+++ b/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java
@@ -131,7 +131,7 @@
     public void initializeSearch(ActivityAllAppsContainerView<?> appsView) {
         mAppsView = appsView;
         mSearchBarController.initialize(
-                new DefaultAppSearchAlgorithm(getContext()),
+                new DefaultAppSearchAlgorithm(getContext(), true),
                 this, mLauncher, this);
     }
 
@@ -168,14 +168,11 @@
     public void onSearchResult(String query, ArrayList<AdapterItem> items) {
         if (items != null) {
             mAppsView.setSearchResults(items);
-            mAppsView.setLastSearchQuery(query);
         }
     }
 
     @Override
     public void clearSearchResult() {
-        mAppsView.setSearchResults(null);
-
         // Clear the search query
         mSearchQueryBuilder.clear();
         mSearchQueryBuilder.clearSpans();
diff --git a/src/com/android/launcher3/allapps/search/DefaultAppSearchAlgorithm.java b/src/com/android/launcher3/allapps/search/DefaultAppSearchAlgorithm.java
index 4eceb71..ab47097 100644
--- a/src/com/android/launcher3/allapps/search/DefaultAppSearchAlgorithm.java
+++ b/src/com/android/launcher3/allapps/search/DefaultAppSearchAlgorithm.java
@@ -15,12 +15,14 @@
  */
 package com.android.launcher3.allapps.search;
 
+import static com.android.launcher3.allapps.BaseAllAppsAdapter.VIEW_TYPE_EMPTY_SEARCH;
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
 
 import android.content.Context;
 import android.os.Handler;
 
 import androidx.annotation.AnyThread;
+import androidx.annotation.NonNull;
 
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.allapps.BaseAllAppsAdapter.AdapterItem;
@@ -44,10 +46,16 @@
 
     private final LauncherAppState mAppState;
     private final Handler mResultHandler;
+    private final boolean mAddNoResultsMessage;
 
     public DefaultAppSearchAlgorithm(Context context) {
+        this(context, false);
+    }
+
+    public DefaultAppSearchAlgorithm(Context context, boolean addNoResultsMessage) {
         mAppState = LauncherAppState.getInstance(context);
         mResultHandler = new Handler(MAIN_EXECUTOR.getLooper());
+        mAddNoResultsMessage = addNoResultsMessage;
     }
 
     @Override
@@ -61,13 +69,26 @@
     public void doSearch(String query, SearchCallback<AdapterItem> callback) {
         mAppState.getModel().enqueueModelUpdateTask(new BaseModelUpdateTask() {
             @Override
-            public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) {
+            public void execute(@NonNull final LauncherAppState app,
+                    @NonNull final BgDataModel dataModel, @NonNull final AllAppsList apps) {
                 ArrayList<AdapterItem> result = getTitleMatchResult(apps.data, query);
+                if (mAddNoResultsMessage && result.isEmpty()) {
+                    result.add(getEmptyMessageAdapterItem(query));
+                }
                 mResultHandler.post(() -> callback.onSearchResult(query, result));
             }
         });
     }
 
+    private static AdapterItem getEmptyMessageAdapterItem(String query) {
+        AdapterItem item = new AdapterItem(VIEW_TYPE_EMPTY_SEARCH);
+        // Add a place holder info to propagate the query
+        AppInfo placeHolder = new AppInfo();
+        placeHolder.title = query;
+        item.itemInfo = placeHolder;
+        return item;
+    }
+
     /**
      * Filters {@link AppInfo}s matching specified query
      */
diff --git a/src/com/android/launcher3/allapps/search/DefaultSearchAdapterProvider.java b/src/com/android/launcher3/allapps/search/DefaultSearchAdapterProvider.java
index a95bd51..64fd237 100644
--- a/src/com/android/launcher3/allapps/search/DefaultSearchAdapterProvider.java
+++ b/src/com/android/launcher3/allapps/search/DefaultSearchAdapterProvider.java
@@ -15,36 +15,28 @@
  */
 package com.android.launcher3.allapps.search;
 
-import android.graphics.Canvas;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.android.launcher3.BubbleTextView;
 import com.android.launcher3.allapps.AllAppsGridAdapter;
 import com.android.launcher3.model.data.ItemInfo;
-import com.android.launcher3.views.AppLauncher;
+import com.android.launcher3.views.ActivityContext;
 
 /**
  * Provides views for local search results.
  */
-public class DefaultSearchAdapterProvider extends SearchAdapterProvider<AppLauncher> {
+public class DefaultSearchAdapterProvider extends SearchAdapterProvider<ActivityContext> {
 
     private final RecyclerView.ItemDecoration mDecoration;
     private View mHighlightedView;
 
-    public DefaultSearchAdapterProvider(AppLauncher launcher) {
+    public DefaultSearchAdapterProvider(ActivityContext launcher) {
         super(launcher);
-        mDecoration = new RecyclerView.ItemDecoration() {
-            @Override
-            public void onDraw(@NonNull Canvas c, @NonNull RecyclerView parent,
-                    @NonNull RecyclerView.State state) {
-                super.onDraw(c, parent, state);
-            }
-        };
+        mDecoration = new RecyclerView.ItemDecoration() { };
     }
 
     @Override
@@ -70,7 +62,8 @@
         if (mHighlightedView instanceof BubbleTextView
                 && mHighlightedView.getTag() instanceof ItemInfo) {
             ItemInfo itemInfo = (ItemInfo) mHighlightedView.getTag();
-            return mLauncher.startActivitySafely(mHighlightedView, itemInfo.getIntent(), itemInfo);
+            return mLauncher.startActivitySafely(
+                    mHighlightedView, itemInfo.getIntent(), itemInfo) != null;
         }
         return false;
     }
@@ -84,4 +77,9 @@
     public RecyclerView.ItemDecoration getDecorator() {
         return mDecoration;
     }
+
+    @Override
+    public void clearHighlightedItem() {
+        mHighlightedView = null;
+    }
 }
diff --git a/src/com/android/launcher3/allapps/search/SearchAdapterProvider.java b/src/com/android/launcher3/allapps/search/SearchAdapterProvider.java
index bc52784..15756f5 100644
--- a/src/com/android/launcher3/allapps/search/SearchAdapterProvider.java
+++ b/src/com/android/launcher3/allapps/search/SearchAdapterProvider.java
@@ -16,12 +16,13 @@
 
 package com.android.launcher3.allapps.search;
 
-import android.net.Uri;
+import android.view.LayoutInflater;
 import android.view.View;
+import android.view.ViewGroup;
 
 import androidx.recyclerview.widget.RecyclerView;
 
-import com.android.launcher3.allapps.BaseAdapterProvider;
+import com.android.launcher3.allapps.AllAppsGridAdapter;
 import com.android.launcher3.views.ActivityContext;
 
 /**
@@ -29,7 +30,7 @@
  *
  * @param <T> Context for this adapter provider.
  */
-public abstract class SearchAdapterProvider<T extends ActivityContext> extends BaseAdapterProvider {
+public abstract class SearchAdapterProvider<T extends ActivityContext> {
 
     protected final T mLauncher;
 
@@ -38,12 +39,6 @@
     }
 
     /**
-     * Called from LiveSearchManager to notify slice status updates.
-     */
-    public void onSliceStatusUpdate(Uri sliceUri) {
-    }
-
-    /**
      * Handles selection event on search adapter item. Returns false if provider can not handle
      * event
      */
@@ -58,4 +53,39 @@
      * Returns the item decorator.
      */
     public abstract RecyclerView.ItemDecoration getDecorator();
+
+    /**
+     * Clear the highlighted view.
+     */
+    public abstract void clearHighlightedItem();
+
+    /**
+     * Returns whether or not viewType can be handled by searchProvider
+     */
+    public abstract boolean isViewSupported(int viewType);
+
+    /**
+     * Called from RecyclerView.Adapter#onBindViewHolder
+     */
+    public abstract void onBindView(AllAppsGridAdapter.ViewHolder holder, int position);
+
+    /**
+     * Called from RecyclerView.Adapter#onCreateViewHolder
+     */
+    public abstract AllAppsGridAdapter.ViewHolder onCreateViewHolder(LayoutInflater layoutInflater,
+            ViewGroup parent, int viewType);
+
+    /**
+     * Returns supported item per row combinations supported
+     */
+    public int[] getSupportedItemsPerRowArray() {
+        return new int[]{};
+    }
+
+    /**
+     * Returns how many cells a view should span
+     */
+    public int getItemsPerRow(int viewType, int appsPerRow) {
+        return appsPerRow;
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/AnimatedFloat.java b/src/com/android/launcher3/anim/AnimatedFloat.java
similarity index 81%
rename from quickstep/src/com/android/quickstep/AnimatedFloat.java
rename to src/com/android/launcher3/anim/AnimatedFloat.java
index 6c7a885..2f3fa63 100644
--- a/quickstep/src/com/android/quickstep/AnimatedFloat.java
+++ b/src/com/android/launcher3/anim/AnimatedFloat.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * 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.
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.quickstep;
+package com.android.launcher3.anim;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
@@ -55,6 +55,11 @@
         mUpdateCallback = updateCallback;
     }
 
+    public AnimatedFloat(Runnable updateCallback, float initialValue) {
+        this(updateCallback);
+        value = initialValue;
+    }
+
     /**
      * Returns an animation from the current value to the given value.
      */
@@ -99,30 +104,23 @@
     }
 
     /**
-     * Starts the animation.
+     * Cancels the animation.
      */
-    public void startAnimation() {
-        if (mValueAnimator != null) {
-            mValueAnimator.start();
-        }
-    }
-
     public void cancelAnimation() {
         if (mValueAnimator != null) {
             mValueAnimator.cancel();
         }
     }
 
+    /**
+     * Ends the animation.
+     */
     public void finishAnimation() {
         if (mValueAnimator != null && mValueAnimator.isRunning()) {
             mValueAnimator.end();
         }
     }
 
-    public ObjectAnimator getCurrentAnimation() {
-        return mValueAnimator;
-    }
-
     public boolean isAnimating() {
         return mValueAnimator != null;
     }
@@ -133,4 +131,20 @@
     public boolean isAnimatingToValue(float endValue) {
         return isAnimating() && mEndValue != null && mEndValue == endValue;
     }
+
+    /**
+     * Returns the remaining time of the existing animation (if any).
+     */
+    public long getRemainingTime() {
+        return isAnimating() && mValueAnimator.isRunning()
+                ? Math.max(0, mValueAnimator.getDuration() - mValueAnimator.getCurrentPlayTime())
+                : 0;
+    }
+
+    /**
+     * Returns whether we are currently not animating, and the animation's value matches the given.
+     */
+    public boolean isSettledOnValue(float endValue) {
+        return !isAnimating() && value == endValue;
+    }
 }
diff --git a/src/com/android/launcher3/anim/AnimatedPropertySetter.java b/src/com/android/launcher3/anim/AnimatedPropertySetter.java
index e5f5e7c..82e645a 100644
--- a/src/com/android/launcher3/anim/AnimatedPropertySetter.java
+++ b/src/com/android/launcher3/anim/AnimatedPropertySetter.java
@@ -43,9 +43,17 @@
 
     @Override
     public Animator setViewAlpha(View view, float alpha, TimeInterpolator interpolator) {
-        if (view == null || view.getAlpha() == alpha) {
+        if (view == null) {
             return NO_OP;
         }
+
+        // Short-circuit if the view already has this alpha value, but make sure the visibility is
+        // set correctly for the requested alpha.
+        if (Float.compare(view.getAlpha(), alpha) == 0) {
+            AlphaUpdateListener.updateVisibility(view);
+            return NO_OP;
+        }
+
         ObjectAnimator anim = ObjectAnimator.ofFloat(view, View.ALPHA, alpha);
         anim.addListener(new AlphaUpdateListener(view));
         anim.setInterpolator(interpolator);
@@ -89,6 +97,18 @@
         return anim;
     }
 
+    @NonNull
+    @Override
+    public <T> Animator setColor(T target, IntProperty<T> property, int value,
+            TimeInterpolator interpolator) {
+        if (property.get(target) == value) {
+            return NO_OP;
+        }
+        Animator anim = ObjectAnimator.ofArgb(target, property, value);
+        anim.setInterpolator(interpolator);
+        add(anim);
+        return anim;
+    }
 
     /**
      * Adds a callback to be run on every frame of the animation
diff --git a/src/com/android/launcher3/anim/AnimationSuccessListener.java b/src/com/android/launcher3/anim/AnimationSuccessListener.java
index a312070..6196df2 100644
--- a/src/com/android/launcher3/anim/AnimationSuccessListener.java
+++ b/src/com/android/launcher3/anim/AnimationSuccessListener.java
@@ -19,6 +19,8 @@
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 
+import androidx.annotation.CallSuper;
+
 /**
  * Extension of {@link AnimatorListenerAdapter} for listening for non-cancelled animations
  */
@@ -27,6 +29,7 @@
     protected boolean mCancelled = false;
 
     @Override
+    @CallSuper
     public void onAnimationCancel(Animator animation) {
         mCancelled = true;
     }
diff --git a/src/com/android/launcher3/anim/FlingSpringAnim.java b/src/com/android/launcher3/anim/FlingSpringAnim.java
index 51eab4c..daf0156 100644
--- a/src/com/android/launcher3/anim/FlingSpringAnim.java
+++ b/src/com/android/launcher3/anim/FlingSpringAnim.java
@@ -41,11 +41,9 @@
 
     public <K> FlingSpringAnim(K object, Context context, FloatPropertyCompat<K> property,
             float startPosition, float targetPosition, float startVelocityPxPerS,
-            float minVisChange, float minValue, float maxValue,
+            float minVisChange, float minValue, float maxValue, float damping, float stiffness,
             OnAnimationEndListener onEndListener) {
         ResourceProvider rp = DynamicResource.provider(context);
-        float damping = rp.getFloat(R.dimen.swipe_up_rect_xy_damping_ratio);
-        float stiffness = rp.getFloat(R.dimen.swipe_up_rect_xy_stiffness);
         float friction = rp.getFloat(R.dimen.swipe_up_rect_xy_fling_friction);
 
         mFlingAnim = new FlingAnimation(object, property)
diff --git a/src/com/android/launcher3/anim/Interpolators.java b/src/com/android/launcher3/anim/Interpolators.java
index 0a77aa7..e886543 100644
--- a/src/com/android/launcher3/anim/Interpolators.java
+++ b/src/com/android/launcher3/anim/Interpolators.java
@@ -56,7 +56,13 @@
 
     public static final Interpolator DECELERATED_EASE = new PathInterpolator(0, 0, .2f, 1f);
     public static final Interpolator ACCELERATED_EASE = new PathInterpolator(0.4f, 0, 1f, 1f);
+    public static final Interpolator PREDICTIVE_BACK_DECELERATED_EASE =
+            new PathInterpolator(0, 0, 0, 1f);
 
+    /**
+     * The default emphasized interpolator. Used for hero / emphasized movement of content.
+     */
+    public static final Interpolator EMPHASIZED = createEmphasizedInterpolator();
     public static final Interpolator EMPHASIZED_ACCELERATE = new PathInterpolator(
             0.3f, 0f, 0.8f, 0.15f);
     public static final Interpolator EMPHASIZED_DECELERATE = new PathInterpolator(
@@ -79,6 +85,7 @@
         EXAGGERATED_EASE = new PathInterpolator(exaggeratedEase);
     }
 
+    public static final Interpolator OVERSHOOT_0_75 = new OvershootInterpolator(0.75f);
     public static final Interpolator OVERSHOOT_1_2 = new OvershootInterpolator(1.2f);
     public static final Interpolator OVERSHOOT_1_7 = new OvershootInterpolator(1.7f);
 
@@ -87,7 +94,6 @@
     public static final Interpolator TOUCH_RESPONSE_INTERPOLATOR_ACCEL_DEACCEL =
             v -> ACCEL_DEACCEL.getInterpolation(TOUCH_RESPONSE_INTERPOLATOR.getInterpolation(v));
 
-
     /**
      * Inversion of ZOOM_OUT, compounded with an ease-out.
      */
@@ -218,4 +224,14 @@
     public static Interpolator reverse(Interpolator interpolator) {
         return t -> 1 - interpolator.getInterpolation(1 - t);
     }
+
+    // Create the default emphasized interpolator
+    private static PathInterpolator createEmphasizedInterpolator() {
+        Path path = new Path();
+        // Doing the same as fast_out_extra_slow_in
+        path.moveTo(0f, 0f);
+        path.cubicTo(0.05f, 0f, 0.133333f, 0.06f, 0.166666f, 0.4f);
+        path.cubicTo(0.208333f, 0.82f, 0.25f, 1f, 1f, 1f);
+        return new PathInterpolator(path);
+    }
 }
diff --git a/src/com/android/launcher3/anim/KeyboardInsetAnimationCallback.java b/src/com/android/launcher3/anim/KeyboardInsetAnimationCallback.java
index 9d96365..b911928 100644
--- a/src/com/android/launcher3/anim/KeyboardInsetAnimationCallback.java
+++ b/src/com/android/launcher3/anim/KeyboardInsetAnimationCallback.java
@@ -27,7 +27,16 @@
 import java.util.List;
 
 /**
- * Callback that animates views above the IME
+ * Callback that animates views above the IME.
+ * <p>
+ * The expected stages of a keyboard transition are:
+ * <p>
+ * <ul>
+ *   <li>PREPARING: Keyboard insets haven't changed yet, but are about to.</li>
+ *   <li>STARTED: Keyboard insets have temporarily changed to the end state, but not drawn.</li>
+ *   <li>PROGRESSING: At least one frame of the animation has been drawn.</li>
+ *   <li>FINISHED: Keyboard has reached its end state, and animation is complete.</li>
+ * </ul>
  */
 @RequiresApi(api = Build.VERSION_CODES.R)
 public class KeyboardInsetAnimationCallback extends WindowInsetsAnimation.Callback {
@@ -46,6 +55,18 @@
         mInitialTranslation = mView.getTranslationY();
     }
 
+    @Override
+    public WindowInsetsAnimation.Bounds onStart(WindowInsetsAnimation animation,
+            WindowInsetsAnimation.Bounds bounds) {
+        // Final insets have temporarily been applied, so store the current translation as final.
+        mTerminalTranslation = mView.getTranslationY();
+        // Reset the translation in case the view is drawn before onProgress gets called.
+        mView.setTranslationY(mInitialTranslation);
+        if (mView instanceof KeyboardInsetListener) {
+            ((KeyboardInsetListener) mView).onTranslationStart();
+        }
+        return super.onStart(animation, bounds);
+    }
 
     @Override
     public WindowInsets onProgress(WindowInsets windowInsets, List<WindowInsetsAnimation> list) {
@@ -53,25 +74,26 @@
             mView.setTranslationY(mInitialTranslation);
             return windowInsets;
         }
-        float progress = list.get(0).getInterpolatedFraction();
+        WindowInsetsAnimation animation = list.get(0);
 
-        mView.setTranslationY(
-                Utilities.mapRange(progress, mInitialTranslation, mTerminalTranslation));
+        if (animation.getDurationMillis() > -1) {
+            float progress = animation.getInterpolatedFraction();
+            mView.setTranslationY(
+                    Utilities.mapRange(progress, mInitialTranslation, mTerminalTranslation));
+        } else {
+            // Manually controlled animation: Set translation to keyboard height.
+            int translationY = -windowInsets.getInsets(WindowInsets.Type.ime()).bottom;
+            if (mView.getParent() instanceof View) {
+                // Offset any translation of the parent (e.g. All Apps parallax).
+                translationY -= ((View) mView.getParent()).getTranslationY();
+            }
+            mView.setTranslationY(translationY);
+        }
 
         return windowInsets;
     }
 
     @Override
-    public WindowInsetsAnimation.Bounds onStart(WindowInsetsAnimation animation,
-            WindowInsetsAnimation.Bounds bounds) {
-        mTerminalTranslation = mView.getTranslationY();
-        if (mView instanceof KeyboardInsetListener) {
-            ((KeyboardInsetListener) mView).onTranslationStart();
-        }
-        return super.onStart(animation, bounds);
-    }
-
-    @Override
     public void onEnd(WindowInsetsAnimation animation) {
         if (mView instanceof KeyboardInsetListener) {
             ((KeyboardInsetListener) mView).onTranslationEnd();
diff --git a/src/com/android/launcher3/anim/PropertySetter.java b/src/com/android/launcher3/anim/PropertySetter.java
index d2207f6..6ba58b6 100644
--- a/src/com/android/launcher3/anim/PropertySetter.java
+++ b/src/com/android/launcher3/anim/PropertySetter.java
@@ -38,6 +38,7 @@
         public void add(Animator animatorSet) {
             animatorSet.setDuration(0);
             animatorSet.start();
+            animatorSet.end();
         }
     };
 
@@ -89,6 +90,16 @@
     }
 
     /**
+     * Updates a color property of the target using the provided interpolator
+     */
+    @NonNull
+    public <T> Animator setColor(T target, IntProperty<T> property, int value,
+            TimeInterpolator interpolator) {
+        property.setValue(target, value);
+        return NO_OP;
+    }
+
+    /**
      * Runs the animation as part of setting the property
      */
     public abstract void add(Animator animatorSet);
diff --git a/src/com/android/launcher3/celllayout/CellLayoutLayoutParams.java b/src/com/android/launcher3/celllayout/CellLayoutLayoutParams.java
new file mode 100644
index 0000000..bdf7643
--- /dev/null
+++ b/src/com/android/launcher3/celllayout/CellLayoutLayoutParams.java
@@ -0,0 +1,219 @@
+/*
+ * 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.launcher3.celllayout;
+
+import android.content.Context;
+import android.graphics.Point;
+import android.graphics.Rect;
+import android.util.AttributeSet;
+import android.view.ViewDebug;
+import android.view.ViewGroup;
+
+import androidx.annotation.Nullable;
+
+/**
+ * Represents the logic of where a view is in a CellLayout and its size
+ */
+public class CellLayoutLayoutParams extends ViewGroup.MarginLayoutParams {
+
+    @ViewDebug.ExportedProperty
+    private int mCellX;
+
+    @ViewDebug.ExportedProperty
+    private int mCellY;
+
+    private int mTmpCellX;
+
+    private int mTmpCellY;
+
+    /**
+     * Indicates that the temporary coordinates should be used to layout the items
+     */
+    public boolean useTmpCoords;
+
+    /**
+     * Number of cells spanned horizontally by the item.
+     */
+    @ViewDebug.ExportedProperty
+    public int cellHSpan;
+
+    /**
+     * Number of cells spanned vertically by the item.
+     */
+    @ViewDebug.ExportedProperty
+    public int cellVSpan;
+
+    /**
+     * Indicates whether the item will set its x, y, width and height parameters freely,
+     * or whether these will be computed based on cellX, cellY, cellHSpan and cellVSpan.
+     */
+    public boolean isLockedToGrid = true;
+
+    /**
+     * Indicates whether this item can be reordered. Always true except in the case of the
+     * the AllApps button and QSB place holder.
+     */
+    public boolean canReorder = true;
+
+    // X coordinate of the view in the layout.
+    @ViewDebug.ExportedProperty
+    public int x;
+    // Y coordinate of the view in the layout.
+    @ViewDebug.ExportedProperty
+    public int y;
+
+    public boolean dropped;
+
+    public CellLayoutLayoutParams(Context c, AttributeSet attrs) {
+        super(c, attrs);
+        cellHSpan = 1;
+        cellVSpan = 1;
+    }
+
+    public CellLayoutLayoutParams(ViewGroup.LayoutParams source) {
+        super(source);
+        cellHSpan = 1;
+        cellVSpan = 1;
+    }
+
+    public CellLayoutLayoutParams(CellLayoutLayoutParams source) {
+        super(source);
+        this.mCellX = source.getCellX();
+        this.mCellY = source.getCellY();
+        this.cellHSpan = source.cellHSpan;
+        this.cellVSpan = source.cellVSpan;
+        this.mTmpCellX = source.getTmpCellX();
+        this.mTmpCellY = source.getTmpCellY();
+        this.useTmpCoords = source.useTmpCoords;
+    }
+
+    public CellLayoutLayoutParams(int cellX, int cellY, int cellHSpan, int cellVSpan) {
+        super(CellLayoutLayoutParams.MATCH_PARENT, CellLayoutLayoutParams.MATCH_PARENT);
+        this.mCellX = cellX;
+        this.mCellY = cellY;
+        this.cellHSpan = cellHSpan;
+        this.cellVSpan = cellVSpan;
+    }
+
+    /**
+     * Updates the {@link CellLayoutLayoutParams} with the right measures using their
+     * full/invariant device profile sizes.
+     */
+    public void setup(int cellWidth, int cellHeight, boolean invertHorizontally, int colCount,
+            int rowCount, Point borderSpace) {
+        setup(cellWidth, cellHeight, invertHorizontally, colCount, rowCount, 1.0f, 1.0f,
+                borderSpace, null);
+    }
+
+    /**
+     * Use this method, as opposed to {@link #setup(int, int, boolean, int, int, Point)},
+     * if the view needs to be scaled.
+     *
+     * ie. In multi-window mode, we setup widgets so that they are measured and laid out
+     * using their full/invariant device profile sizes.
+     */
+    public void setup(int cellWidth, int cellHeight, boolean invertHorizontally, int colCount,
+            int rowCount, float cellScaleX, float cellScaleY, Point borderSpace,
+            @Nullable Rect inset) {
+        if (isLockedToGrid) {
+            final int myCellHSpan = cellHSpan;
+            final int myCellVSpan = cellVSpan;
+            int myCellX = useTmpCoords ? getTmpCellX() : getCellX();
+            int myCellY = useTmpCoords ? getTmpCellY() : getCellY();
+
+            if (invertHorizontally) {
+                myCellX = colCount - myCellX - cellHSpan;
+            }
+
+            int hBorderSpacing = (myCellHSpan - 1) * borderSpace.x;
+            int vBorderSpacing = (myCellVSpan - 1) * borderSpace.y;
+
+            float myCellWidth = ((myCellHSpan * cellWidth) + hBorderSpacing) / cellScaleX;
+            float myCellHeight = ((myCellVSpan * cellHeight) + vBorderSpacing) / cellScaleY;
+
+            width = Math.round(myCellWidth) - leftMargin - rightMargin;
+            height = Math.round(myCellHeight) - topMargin - bottomMargin;
+            x = leftMargin + (myCellX * cellWidth) + (myCellX * borderSpace.x);
+            y = topMargin + (myCellY * cellHeight) + (myCellY * borderSpace.y);
+
+            if (inset != null) {
+                x += inset.left;
+                y += inset.top;
+                width -= inset.left + inset.right;
+                height -= inset.top + inset.bottom;
+            }
+        }
+    }
+
+    /**
+     * Sets the position to the provided point
+     */
+    public void setCellXY(Point point) {
+        setCellX(point.x);
+        setCellY(point.y);
+    }
+
+    /**
+     * @return the string representation of the position of the {@link CellLayoutLayoutParams}
+     */
+    public String toString() {
+        return "(" + this.getCellX() + ", " + this.getCellY() + ")";
+    }
+
+    /**
+     * Horizontal location of the item in the grid.
+     */
+    public int getCellX() {
+        return mCellX;
+    }
+
+    public void setCellX(int cellX) {
+        this.mCellX = cellX;
+    }
+
+    /**
+     * Vertical location of the item in the grid.
+     */
+    public int getCellY() {
+        return mCellY;
+    }
+
+    public void setCellY(int cellY) {
+        this.mCellY = cellY;
+    }
+
+    /**
+     * Temporary horizontal location of the item in the grid during reorder
+     */
+    public int getTmpCellX() {
+        return mTmpCellX;
+    }
+
+    public void setTmpCellX(int tmpCellX) {
+        this.mTmpCellX = tmpCellX;
+    }
+
+    /**
+     * Temporary vertical location of the item in the grid during reorder
+     */
+    public int getTmpCellY() {
+        return mTmpCellY;
+    }
+
+    public void setTmpCellY(int tmpCellY) {
+        this.mTmpCellY = tmpCellY;
+    }
+}
diff --git a/src/com/android/launcher3/celllayout/CellPosMapper.java b/src/com/android/launcher3/celllayout/CellPosMapper.java
new file mode 100644
index 0000000..1891696
--- /dev/null
+++ b/src/com/android/launcher3/celllayout/CellPosMapper.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2026 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.launcher3.celllayout;
+
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_DESKTOP;
+
+import com.android.launcher3.model.data.ItemInfo;
+
+import java.util.Objects;
+
+/**
+ * Class for mapping between model position and presenter position.
+ */
+public class CellPosMapper {
+
+    public static final CellPosMapper DEFAULT = new CellPosMapper();
+
+    private CellPosMapper() { }
+
+    /**
+     * Maps the position in model to the position in view
+     */
+    public CellPos mapModelToPresenter(ItemInfo info) {
+        return new CellPos(info.cellX, info.cellY, info.screenId);
+    }
+
+    /**
+     * Maps the position in view to the position in model
+     */
+    public CellPos mapPresenterToModel(int presenterX, int presenterY, int presenterScreen,
+            int container) {
+        return new CellPos(presenterX, presenterY, presenterScreen);
+    }
+
+    /**
+     * Cell mapper which maps two panels into a single layout
+     */
+    public static class TwoPanelCellPosMapper extends CellPosMapper  {
+
+        private final int mColumnCount;
+
+        public TwoPanelCellPosMapper(int columnCount) {
+            mColumnCount = columnCount;
+        }
+
+        /**
+         * Maps the position in model to the position in view
+         */
+        public CellPos mapModelToPresenter(ItemInfo info) {
+            if (info.container != CONTAINER_DESKTOP || (info.screenId % 2) == 0) {
+                return super.mapModelToPresenter(info);
+            }
+            return new CellPos(info.cellX + mColumnCount, info.cellY, info.screenId - 1);
+        }
+
+        @Override
+        public CellPos mapPresenterToModel(int presenterX, int presenterY, int presenterScreen,
+                int container) {
+            if (container == CONTAINER_DESKTOP && (presenterScreen % 2) == 0
+                    && presenterX >= mColumnCount) {
+                return new CellPos(presenterX - mColumnCount, presenterY, presenterScreen + 1);
+            }
+            return super.mapPresenterToModel(presenterX, presenterY, presenterScreen, container);
+        }
+    }
+
+    /**
+     * Utility class to indicate the position of a cell
+     */
+    public static class CellPos {
+        public final int cellX;
+        public final int cellY;
+        public final int screenId;
+
+        public CellPos(int cellX, int cellY, int screenId) {
+            this.cellX = cellX;
+            this.cellY = cellY;
+            this.screenId = screenId;
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) return true;
+            if (!(o instanceof CellPos)) return false;
+            CellPos cellPos = (CellPos) o;
+            return cellX == cellPos.cellX && cellY == cellPos.cellY && screenId == cellPos.screenId;
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(cellX, cellY, screenId);
+        }
+    }
+}
diff --git a/src/com/android/launcher3/celllayout/MulticellReorderAlgorithm.java b/src/com/android/launcher3/celllayout/MulticellReorderAlgorithm.java
new file mode 100644
index 0000000..cb12161
--- /dev/null
+++ b/src/com/android/launcher3/celllayout/MulticellReorderAlgorithm.java
@@ -0,0 +1,127 @@
+/*
+ * 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.launcher3.celllayout;
+
+import android.view.View;
+
+import com.android.launcher3.CellLayout;
+import com.android.launcher3.MultipageCellLayout;
+import com.android.launcher3.util.GridOccupancy;
+
+import java.util.function.Supplier;
+
+/**
+ * Variant of ReorderAlgorithm which simulates a foldable screen and adds a seam in the middle
+ * to prevent items to be placed in the middle.
+ */
+public class MulticellReorderAlgorithm extends ReorderAlgorithm {
+
+    private final View mSeam;
+
+    public MulticellReorderAlgorithm(CellLayout cellLayout) {
+        super(cellLayout);
+        mSeam = new View(cellLayout.getContext());
+    }
+
+    private CellLayout.ItemConfiguration removeSeamFromSolution(
+            CellLayout.ItemConfiguration solution) {
+        solution.map.forEach((view, cell) -> cell.cellX =
+                cell.cellX > mCellLayout.getCountX() / 2 ? cell.cellX - 1 : cell.cellX);
+        solution.cellX =
+                solution.cellX > mCellLayout.getCountX() / 2 ? solution.cellX - 1 : solution.cellX;
+        return solution;
+    }
+
+    @Override
+    public CellLayout.ItemConfiguration closestEmptySpaceReorder(int pixelX, int pixelY,
+            int minSpanX, int minSpanY,
+            int spanX, int spanY) {
+        return removeSeamFromSolution(simulateSeam(
+                () -> super.closestEmptySpaceReorder(pixelX, pixelY, minSpanX, minSpanY, spanX,
+                        spanY)));
+    }
+
+    @Override
+    public CellLayout.ItemConfiguration findReorderSolution(int pixelX, int pixelY, int minSpanX,
+            int minSpanY, int spanX, int spanY, int[] direction, View dragView, boolean decX,
+            CellLayout.ItemConfiguration solution) {
+        return removeSeamFromSolution(simulateSeam(
+                () -> super.findReorderSolution(pixelX, pixelY, minSpanX, minSpanY, spanX, spanY,
+                        direction, dragView, decX, solution)));
+    }
+
+    @Override
+    public CellLayout.ItemConfiguration dropInPlaceSolution(int pixelX, int pixelY, int spanX,
+            int spanY,
+            View dragView) {
+        return removeSeamFromSolution(simulateSeam(
+                () -> super.dropInPlaceSolution(pixelX, pixelY, spanX, spanY, dragView)));
+    }
+
+    void addSeam() {
+        MultipageCellLayout mcl = (MultipageCellLayout) mCellLayout;
+        mcl.setSeamWasAdded(true);
+        CellLayoutLayoutParams lp = new CellLayoutLayoutParams(mcl.getCountX() / 2, 0, 1,
+                mcl.getCountY());
+        lp.canReorder = false;
+        mcl.setCountX(mcl.getCountX() + 1);
+        mcl.getShortcutsAndWidgets().addViewInLayout(mSeam, lp);
+        mcl.setOccupied(createGridOccupancyWithSeam(mcl.getOccupied()));
+        mcl.mTmpOccupied = new GridOccupancy(mcl.getCountX(), mcl.getCountY());
+    }
+
+    void removeSeam() {
+        MultipageCellLayout mcl = (MultipageCellLayout) mCellLayout;
+        mcl.setCountX(mcl.getCountX() - 1);
+        mcl.getShortcutsAndWidgets().removeViewInLayout(mSeam);
+        mcl.mTmpOccupied = new GridOccupancy(mcl.getCountX(), mcl.getCountY());
+        mcl.setSeamWasAdded(false);
+    }
+
+    /**
+     * The function supplied here will execute while the CellLayout has a simulated seam added.
+     * @param f function to run under simulation
+     * @param <T> return value of the supplied function
+     * @return Value of supplied function
+     */
+    public <T> T simulateSeam(Supplier<T> f) {
+        MultipageCellLayout mcl = (MultipageCellLayout) mCellLayout;
+        if (mcl.isSeamWasAdded()) {
+            return f.get();
+        }
+        GridOccupancy auxGrid = mcl.getOccupied();
+        addSeam();
+        T res = f.get();
+        removeSeam();
+        mcl.setOccupied(auxGrid);
+        return res;
+    }
+
+    GridOccupancy createGridOccupancyWithSeam(GridOccupancy gridOccupancy) {
+        GridOccupancy grid = new GridOccupancy(mCellLayout.getCountX(), mCellLayout.getCountY());
+        for (int x = 0; x < mCellLayout.getCountX(); x++) {
+            for (int y = 0; y < mCellLayout.getCountY(); y++) {
+                int offset = x >= mCellLayout.getCountX() / 2 ? 1 : 0;
+                if (x == mCellLayout.getCountX() / 2) {
+                    grid.cells[x][y] = true;
+                } else {
+                    grid.cells[x][y] = gridOccupancy.cells[x - offset][y];
+                }
+            }
+        }
+        return grid;
+    }
+}
diff --git a/src/com/android/launcher3/celllayout/ReorderAlgorithm.java b/src/com/android/launcher3/celllayout/ReorderAlgorithm.java
new file mode 100644
index 0000000..5e5eefe
--- /dev/null
+++ b/src/com/android/launcher3/celllayout/ReorderAlgorithm.java
@@ -0,0 +1,204 @@
+/*
+ * 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.launcher3.celllayout;
+
+import android.view.View;
+
+import com.android.launcher3.CellLayout;
+
+/**
+ * Contains the logic of a reorder.
+ *
+ * The content of this class was extracted from {@link CellLayout} and should mimic the exact
+ * same behaviour.
+ */
+public class ReorderAlgorithm {
+
+    CellLayout mCellLayout;
+
+    public ReorderAlgorithm(CellLayout cellLayout) {
+        mCellLayout = cellLayout;
+    }
+
+    /**
+     * This method differs from closestEmptySpaceReorder and dropInPlaceSolution because this method
+     * will move items around and will change the shape of the item if possible to try to find a
+     * solution.
+     *
+     * When changing the size of the widget this method will try first subtracting -1 in the x
+     * dimension and then subtracting -1 in the y dimension until finding a possible solution or
+     * until it no longer can reduce the span.
+     *
+     * @param pixelX    X coordinate in pixels in the screen
+     * @param pixelY    Y coordinate in pixels in the screen
+     * @param minSpanX  minimum possible horizontal span it will try to find a solution for.
+     * @param minSpanY  minimum possible vertical span it will try to find a solution for.
+     * @param spanX     horizontal cell span
+     * @param spanY     vertical cell span
+     * @param direction direction in which it will try to push the items intersecting the desired
+     *                  view
+     * @param dragView  view being dragged in reorder
+     * @param decX      whether it will decrease the horizontal or vertical span if it can't find a
+     *                  solution for the current span.
+     * @param solution  variable to store the solution
+     * @return the same solution variable
+     */
+    public CellLayout.ItemConfiguration findReorderSolution(int pixelX, int pixelY, int minSpanX,
+            int minSpanY, int spanX, int spanY, int[] direction, View dragView, boolean decX,
+            CellLayout.ItemConfiguration solution) {
+        // Copy the current state into the solution. This solution will be manipulated as necessary.
+        mCellLayout.copyCurrentStateToSolution(solution, false);
+        // Copy the current occupied array into the temporary occupied array. This array will be
+        // manipulated as necessary to find a solution.
+        mCellLayout.getOccupied().copyTo(mCellLayout.mTmpOccupied);
+
+        // We find the nearest cell into which we would place the dragged item, assuming there's
+        // nothing in its way.
+        int[] result = new int[2];
+        result = mCellLayout.findNearestAreaIgnoreOccupied(pixelX, pixelY, spanX, spanY, result);
+
+        boolean success;
+        // First we try the exact nearest position of the item being dragged,
+        // we will then want to try to move this around to other neighbouring positions
+        success = mCellLayout.rearrangementExists(result[0], result[1], spanX, spanY, direction,
+                dragView, solution);
+
+        if (!success) {
+            // We try shrinking the widget down to size in an alternating pattern, shrink 1 in
+            // x, then 1 in y etc.
+            if (spanX > minSpanX && (minSpanY == spanY || decX)) {
+                return findReorderSolution(pixelX, pixelY, minSpanX, minSpanY, spanX - 1, spanY,
+                        direction, dragView, false, solution);
+            } else if (spanY > minSpanY) {
+                return findReorderSolution(pixelX, pixelY, minSpanX, minSpanY, spanX, spanY - 1,
+                        direction, dragView, true, solution);
+            }
+            solution.isSolution = false;
+        } else {
+            solution.isSolution = true;
+            solution.cellX = result[0];
+            solution.cellY = result[1];
+            solution.spanX = spanX;
+            solution.spanY = spanY;
+        }
+        return solution;
+    }
+
+    /**
+     * Returns a "reorder" if there is empty space without rearranging anything.
+     *
+     * @param pixelX   X coordinate in pixels in the screen
+     * @param pixelY   Y coordinate in pixels in the screen
+     * @param spanX    horizontal cell span
+     * @param spanY    vertical cell span
+     * @param dragView view being dragged in reorder
+     * @return the configuration that represents the found reorder
+     */
+    public CellLayout.ItemConfiguration dropInPlaceSolution(int pixelX, int pixelY, int spanX,
+            int spanY, View dragView) {
+        int[] result = new int[2];
+        if (mCellLayout.isNearestDropLocationOccupied(pixelX, pixelY, spanX, spanY, dragView,
+                result)) {
+            result[0] = result[1] = -1;
+        }
+        CellLayout.ItemConfiguration solution = new CellLayout.ItemConfiguration();
+        mCellLayout.copyCurrentStateToSolution(solution, false);
+        solution.isSolution = result[0] != -1;
+        if (!solution.isSolution) {
+            return solution;
+        }
+        solution.cellX = result[0];
+        solution.cellY = result[1];
+        solution.spanX = spanX;
+        solution.spanY = spanY;
+        return solution;
+    }
+
+    /**
+     * Returns a "reorder" where we simply drop the item in the closest empty space, without moving
+     * any other item in the way.
+     *
+     * @param pixelX X coordinate in pixels in the screen
+     * @param pixelY Y coordinate in pixels in the screen
+     * @param spanX  horizontal cell span
+     * @param spanY  vertical cell span
+     * @return the configuration that represents the found reorder
+     */
+    public CellLayout.ItemConfiguration closestEmptySpaceReorder(int pixelX, int pixelY,
+            int minSpanX, int minSpanY, int spanX, int spanY) {
+        CellLayout.ItemConfiguration solution = new CellLayout.ItemConfiguration();
+        int[] result = new int[2];
+        int[] resultSpan = new int[2];
+        mCellLayout.findNearestVacantArea(pixelX, pixelY, minSpanX, minSpanY, spanX, spanY, result,
+                resultSpan);
+        if (result[0] >= 0 && result[1] >= 0) {
+            mCellLayout.copyCurrentStateToSolution(solution, false);
+            solution.cellX = result[0];
+            solution.cellY = result[1];
+            solution.spanX = resultSpan[0];
+            solution.spanY = resultSpan[1];
+            solution.isSolution = true;
+        } else {
+            solution.isSolution = false;
+        }
+        return solution;
+    }
+
+    /**
+     * When the user drags an Item in the workspace sometimes we need to move the items already in
+     * the workspace to make space for the new item, this function return a solution for that
+     * reorder.
+     *
+     * @param pixelX   X coordinate in the screen of the dragView in pixels
+     * @param pixelY   Y coordinate in the screen of the dragView in pixels
+     * @param minSpanX minimum horizontal span the item can be shrunk to
+     * @param minSpanY minimum vertical span the item can be shrunk to
+     * @param spanX    occupied horizontal span
+     * @param spanY    occupied vertical span
+     * @param dragView the view of the item being draged
+     * @return returns a solution for the given parameters, the solution contains all the icons and
+     * the locations they should be in the given solution.
+     */
+    public CellLayout.ItemConfiguration calculateReorder(int pixelX, int pixelY, int minSpanX,
+            int minSpanY, int spanX, int spanY, View dragView) {
+        mCellLayout.getDirectionVectorForDrop(pixelX, pixelY, spanX, spanY, dragView,
+                mCellLayout.mDirectionVector);
+
+        CellLayout.ItemConfiguration dropInPlaceSolution = dropInPlaceSolution(pixelX, pixelY,
+                spanX, spanY,
+                dragView);
+
+        // Find a solution involving pushing / displacing any items in the way
+        CellLayout.ItemConfiguration swapSolution = findReorderSolution(pixelX, pixelY, minSpanX,
+                minSpanY, spanX, spanY, mCellLayout.mDirectionVector, dragView, true,
+                new CellLayout.ItemConfiguration());
+
+        // We attempt the approach which doesn't shuffle views at all
+        CellLayout.ItemConfiguration closestSpaceSolution = closestEmptySpaceReorder(
+                pixelX, pixelY, minSpanX, minSpanY, spanX, spanY);
+
+        // If the reorder solution requires resizing (shrinking) the item being dropped, we instead
+        // favor a solution in which the item is not resized, but
+        if (swapSolution.isSolution && swapSolution.area() >= closestSpaceSolution.area()) {
+            return swapSolution;
+        } else if (closestSpaceSolution.isSolution) {
+            return closestSpaceSolution;
+        } else if (dropInPlaceSolution.isSolution) {
+            return dropInPlaceSolution;
+        }
+        return null;
+    }
+}
diff --git a/src/com/android/launcher3/compat/AccessibilityManagerCompat.java b/src/com/android/launcher3/compat/AccessibilityManagerCompat.java
index dd58123..24cc0ac 100644
--- a/src/com/android/launcher3/compat/AccessibilityManagerCompat.java
+++ b/src/com/android/launcher3/compat/AccessibilityManagerCompat.java
@@ -27,7 +27,7 @@
 import androidx.annotation.Nullable;
 
 import com.android.launcher3.Utilities;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 
 public class AccessibilityManagerCompat {
 
@@ -127,7 +127,7 @@
      */
     private static AccessibilityManager getAccessibilityManagerForTest(Context context) {
         // If not running in a test harness, don't participate in test exchanges.
-        if (!Utilities.IS_RUNNING_IN_TEST_HARNESS) return null;
+        if (!Utilities.isRunningInTestHarness()) return null;
 
         final AccessibilityManager accessibilityManager = getManager(context);
         if (!accessibilityManager.isEnabled()) return null;
diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java
index 33beacd..f88ff86 100644
--- a/src/com/android/launcher3/config/FeatureFlags.java
+++ b/src/com/android/launcher3/config/FeatureFlags.java
@@ -16,358 +16,436 @@
 
 package com.android.launcher3.config;
 
+import static com.android.launcher3.config.FeatureFlags.FlagState.DISABLED;
+import static com.android.launcher3.config.FeatureFlags.FlagState.ENABLED;
+import static com.android.launcher3.config.FeatureFlags.FlagState.TEAMFOOD;
+import static com.android.launcher3.uioverrides.flags.FlagsFactory.getDebugFlag;
+import static com.android.launcher3.uioverrides.flags.FlagsFactory.getReleaseFlag;
+
 import android.content.Context;
 
+import androidx.annotation.VisibleForTesting;
+
 import com.android.launcher3.BuildConfig;
 import com.android.launcher3.Utilities;
-import com.android.launcher3.uioverrides.DeviceFlag;
 
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.function.Predicate;
+import java.util.function.ToIntFunction;
 
 /**
  * Defines a set of flags used to control various launcher behaviors.
  *
+ * Please only add flags to your assigned block to prevent merge conflicts. If you do not have
+ * a block, please update the current empty block and add a new empty block below to prevent
+ * merge conflicts with the previous block.
+ * List of blocks can be found:
+ * <a href="http://go/gnl-flags-block-directory">here</a>
+ *
  * <p>All the flags should be defined here with appropriate default values.
  */
 public final class FeatureFlags {
 
-    private static final List<DebugFlag> sDebugFlags = new ArrayList<>();
-
-    public static final String FLAGS_PREF_NAME = "featureFlags";
+    @VisibleForTesting
+    public static Predicate<BooleanFlag> sBooleanReader = f -> f.mCurrentValue;
+    @VisibleForTesting
+    public static ToIntFunction<IntFlag> sIntReader = f -> f.mCurrentValue;
 
     private FeatureFlags() { }
 
     public static boolean showFlagTogglerUi(Context context) {
-        return Utilities.IS_DEBUG_DEVICE && Utilities.isDevelopersOptionsEnabled(context);
+        return BuildConfig.IS_DEBUG_DEVICE && Utilities.isDevelopersOptionsEnabled(context);
     }
 
     /**
      * True when the build has come from Android Studio and is being used for local debugging.
+     * @deprecated Use {@link BuildConfig#IS_STUDIO_BUILD} directly
      */
-    public static final boolean IS_STUDIO_BUILD = BuildConfig.DEBUG;
+    @Deprecated
+    public static final boolean IS_STUDIO_BUILD = BuildConfig.IS_STUDIO_BUILD;
 
     /**
      * Enable moving the QSB on the 0th screen of the workspace. This is not a configuration feature
      * and should be modified at a project level.
+     * @deprecated Use {@link BuildConfig#QSB_ON_FIRST_SCREEN} directly
      */
+    @Deprecated
     public static final boolean QSB_ON_FIRST_SCREEN = BuildConfig.QSB_ON_FIRST_SCREEN;
 
     /**
      * Feature flag to handle define config changes dynamically instead of killing the process.
-     *
+     * <p>
      *
      * To add a new flag that can be toggled through the flags UI:
-     *
+     * <p>
      * Declare a new ToggleableFlag below. Give it a unique key (e.g. "QSB_ON_FIRST_SCREEN"),
-     *    and set a default value for the flag. This will be the default value on Debug builds.
+     * and set a default value for the flag. This will be the default value on Debug builds.
+     * <p>
      */
-    // When enabled the promise icon is visible in all apps while installation an app.
-    public static final BooleanFlag PROMISE_APPS_IN_ALL_APPS = getDebugFlag(
-            "PROMISE_APPS_IN_ALL_APPS", false, "Add promise icon in all-apps");
+    // TODO(Block 1): Clean up flags
+    public static final BooleanFlag ENABLE_ONE_SEARCH_MOTION = getReleaseFlag(270394223,
+            "ENABLE_ONE_SEARCH_MOTION", ENABLED, "Enables animations in OneSearch.");
 
-    // When enabled a promise icon is added to the home screen when install session is active.
-    public static final BooleanFlag PROMISE_APPS_NEW_INSTALLS = getDebugFlag(
-            "PROMISE_APPS_NEW_INSTALLS", true,
-            "Adds a promise icon to the home screen for new install sessions.");
+    public static final BooleanFlag ENABLE_SEARCH_RESULT_BACKGROUND_DRAWABLES = getReleaseFlag(
+            270394041, "ENABLE_SEARCH_RESULT_BACKGROUND_DRAWABLES", DISABLED,
+            "Enable option to replace decorator-based search result backgrounds with drawables");
 
-    // TODO: b/206508141: Long pressing on some icons on home screen cause launcher to crash.
-    public static final BooleanFlag ENABLE_LOCAL_COLOR_POPUPS = getDebugFlag(
-            "ENABLE_LOCAL_COLOR_POPUPS", false, "Enable local color extraction for popups.");
+    public static final BooleanFlag ENABLE_SEARCH_RESULT_LAUNCH_TRANSITION = getReleaseFlag(
+            270394392, "ENABLE_SEARCH_RESULT_LAUNCH_TRANSITION", DISABLED,
+            "Enable option to launch search results using the new view container transitions");
 
-    public static final BooleanFlag KEYGUARD_ANIMATION = getDebugFlag(
-            "KEYGUARD_ANIMATION", false, "Enable animation for keyguard going away on wallpaper");
+    // TODO(Block 2): Clean up flags
+    public static final BooleanFlag ENABLE_MULTI_DISPLAY_PARTIAL_DEPTH = getDebugFlag(270395073,
+            "ENABLE_MULTI_DISPLAY_PARTIAL_DEPTH", DISABLED,
+            "Allow bottom sheet depth to be smaller than 1 for multi-display devices.");
 
-    public static final BooleanFlag ENABLE_QUICKSTEP_LIVE_TILE = getDebugFlag(
-            "ENABLE_QUICKSTEP_LIVE_TILE", true, "Enable live tile in Quickstep overview");
-
-    public static final BooleanFlag ENABLE_QUICKSTEP_WIDGET_APP_START = getDebugFlag(
-            "ENABLE_QUICKSTEP_WIDGET_APP_START", true,
-            "Enable Quickstep animation when launching activities from an app widget");
-
-    public static final BooleanFlag ENABLE_DEVICE_SEARCH = new DeviceFlag(
-            "ENABLE_DEVICE_SEARCH", true, "Allows on device search in all apps");
-
-    public static final BooleanFlag ENABLE_FLOATING_SEARCH_BAR =
-            getDebugFlag("ENABLE_FLOATING_SEARCH_BAR", false,
-                    "Keep All Apps search bar at the bottom (but above keyboard if open)");
-
-    public static final BooleanFlag ENABLE_QUICK_SEARCH = new DeviceFlag("ENABLE_QUICK_SEARCH",
-            true, "Use quick search behavior.");
-
-    public static final BooleanFlag COLLECT_SEARCH_HISTORY = new DeviceFlag(
-            "COLLECT_SEARCH_HISTORY", false, "Allow launcher to collect search history for log");
-
-    public static final BooleanFlag ENABLE_TWOLINE_ALLAPPS = getDebugFlag(
-            "ENABLE_TWOLINE_ALLAPPS", false, "Enables two line label inside all apps.");
-
-    public static final BooleanFlag ENABLE_DEVICE_SEARCH_PERFORMANCE_LOGGING = new DeviceFlag(
-            "ENABLE_DEVICE_SEARCH_PERFORMANCE_LOGGING", false,
-            "Allows on device search in all apps logging");
-
-    public static final BooleanFlag IME_STICKY_SNACKBAR_EDU = getDebugFlag(
-            "IME_STICKY_SNACKBAR_EDU", true, "Show sticky IME edu in AllApps");
-
-    public static final BooleanFlag ENABLE_PEOPLE_TILE_PREVIEW = getDebugFlag(
-            "ENABLE_PEOPLE_TILE_PREVIEW", false,
-            "Experimental: Shows conversation shortcuts on home screen as search results");
-
-    public static final BooleanFlag FOLDER_NAME_SUGGEST = new DeviceFlag(
-            "FOLDER_NAME_SUGGEST", true,
-            "Suggests folder names instead of blank text.");
-
-    public static final BooleanFlag FOLDER_NAME_MAJORITY_RANKING = getDebugFlag(
-            "FOLDER_NAME_MAJORITY_RANKING", true,
-            "Suggests folder names based on majority based ranking.");
-
-    public static final BooleanFlag ENABLE_PREDICTION_DISMISS = getDebugFlag(
-            "ENABLE_PREDICTION_DISMISS", true, "Allow option to dimiss apps from predicted list");
-
-    public static final BooleanFlag ASSISTANT_GIVES_LAUNCHER_FOCUS = getDebugFlag(
-            "ASSISTANT_GIVES_LAUNCHER_FOCUS", false,
-            "Allow Launcher to handle nav bar gestures while Assistant is running over it");
-
-    public static final BooleanFlag HOTSEAT_MIGRATE_TO_FOLDER = getDebugFlag(
-            "HOTSEAT_MIGRATE_TO_FOLDER", false, "Should move hotseat items into a folder");
-
-    public static final BooleanFlag ENABLE_DEEP_SHORTCUT_ICON_CACHE = getDebugFlag(
-            "ENABLE_DEEP_SHORTCUT_ICON_CACHE", true, "R/W deep shortcut in IconCache");
-
-    public static final BooleanFlag ENABLE_THEMED_ICONS = getDebugFlag(
-            "ENABLE_THEMED_ICONS", true, "Enable themed icons on workspace");
-
-    public static final BooleanFlag ENABLE_BULK_WORKSPACE_ICON_LOADING = getDebugFlag(
-            "ENABLE_BULK_WORKSPACE_ICON_LOADING",
-            true,
-            "Enable loading workspace icons in bulk.");
-
-    public static final BooleanFlag ENABLE_BULK_ALL_APPS_ICON_LOADING = getDebugFlag(
-            "ENABLE_BULK_ALL_APPS_ICON_LOADING",
-            true,
-            "Enable loading all apps icons in bulk.");
-
-    // Keep as DeviceFlag for remote disable in emergency.
-    public static final BooleanFlag ENABLE_OVERVIEW_SELECTIONS = new DeviceFlag(
-            "ENABLE_OVERVIEW_SELECTIONS", true, "Show Select Mode button in Overview Actions");
-
-    public static final BooleanFlag ENABLE_WIDGETS_PICKER_AIAI_SEARCH = new DeviceFlag(
-            "ENABLE_WIDGETS_PICKER_AIAI_SEARCH", true, "Enable AiAi search in the widgets picker");
-
-    public static final BooleanFlag ENABLE_OVERVIEW_SHARING_TO_PEOPLE = getDebugFlag(
-            "ENABLE_OVERVIEW_SHARING_TO_PEOPLE", true,
-            "Show indicators for content on Overview to share with top people. ");
-
-    public static final BooleanFlag ENABLE_DATABASE_RESTORE = getDebugFlag(
-            "ENABLE_DATABASE_RESTORE", false,
-            "Enable database restore when new restore session is created");
-
-    public static final BooleanFlag ENABLE_SMARTSPACE_DISMISS = getDebugFlag(
-            "ENABLE_SMARTSPACE_DISMISS", true,
-            "Adds a menu option to dismiss the current Enhanced Smartspace card.");
-
-    public static final BooleanFlag ALWAYS_USE_HARDWARE_OPTIMIZATION_FOR_FOLDER_ANIMATIONS =
-            getDebugFlag(
-            "ALWAYS_USE_HARDWARE_OPTIMIZATION_FOR_FOLDER_ANIMATIONS", false,
-            "Always use hardware optimization for folder animations.");
-
-    public static final BooleanFlag ENABLE_ALL_APPS_EDU = getDebugFlag(
-            "ENABLE_ALL_APPS_EDU", true,
-            "Shows user a tutorial on how to get to All Apps after X amount of attempts.");
-
-    public static final BooleanFlag SEPARATE_RECENTS_ACTIVITY = getDebugFlag(
-            "SEPARATE_RECENTS_ACTIVITY", false,
-            "Uses a separate recents activity instead of using the integrated recents+Launcher UI");
-
-    public static final BooleanFlag ENABLE_MINIMAL_DEVICE = getDebugFlag(
-            "ENABLE_MINIMAL_DEVICE", false,
-            "Allow user to toggle minimal device mode in launcher.");
-
-    public static final BooleanFlag EXPANDED_SMARTSPACE = new DeviceFlag(
-            "EXPANDED_SMARTSPACE", false, "Expands smartspace height to two rows. "
-              + "Any apps occupying the first row will be removed from workspace.");
-
-    // TODO: b/172467144 Remove ENABLE_LAUNCHER_ACTIVITY_THEME_CROSSFADE feature flag.
-    public static final BooleanFlag ENABLE_LAUNCHER_ACTIVITY_THEME_CROSSFADE = new DeviceFlag(
-            "ENABLE_LAUNCHER_ACTIVITY_THEME_CROSSFADE", false, "Enables a "
-            + "crossfade animation when the system these changes.");
-
-    // TODO: b/174174514 Remove ENABLE_APP_PREDICTIONS_WHILE_VISIBLE feature flag.
-    public static final BooleanFlag ENABLE_APP_PREDICTIONS_WHILE_VISIBLE = new DeviceFlag(
-            "ENABLE_APP_PREDICTIONS_WHILE_VISIBLE", true, "Allows app "
-            + "predictions to be updated while they are visible to the user.");
-
-    public static final BooleanFlag ENABLE_TASKBAR_POPUP_MENU = getDebugFlag(
-            "ENABLE_TASKBAR_POPUP_MENU", true, "Enables long pressing taskbar icons to show the"
-                    + " popup menu.");
-
-    public static final BooleanFlag ENABLE_TWO_PANEL_HOME = getDebugFlag(
-            "ENABLE_TWO_PANEL_HOME", true,
-            "Uses two panel on home screen. Only applicable on large screen devices.");
-
-    public static final BooleanFlag ENABLE_SCRIM_FOR_APP_LAUNCH = getDebugFlag(
-            "ENABLE_SCRIM_FOR_APP_LAUNCH", false,
-            "Enables scrim during app launch animation.");
-
-    public static final BooleanFlag ENABLE_SPLIT_SELECT = getDebugFlag(
-            "ENABLE_SPLIT_SELECT", true, "Uses new split screen selection overview UI");
-
-    public static final BooleanFlag ENABLE_ENFORCED_ROUNDED_CORNERS = new DeviceFlag(
-            "ENABLE_ENFORCED_ROUNDED_CORNERS", true, "Enforce rounded corners on all App Widgets");
-
-    public static final BooleanFlag ENABLE_LOCAL_RECOMMENDED_WIDGETS_FILTER = new DeviceFlag(
-            "ENABLE_LOCAL_RECOMMENDED_WIDGETS_FILTER", true,
-            "Enables a local filter for recommended widgets.");
-
-    public static final BooleanFlag NOTIFY_CRASHES = getDebugFlag("NOTIFY_CRASHES", false,
-            "Sends a notification whenever launcher encounters an uncaught exception.");
-
-    public static final BooleanFlag ENABLE_WALLPAPER_SCRIM = getDebugFlag(
-            "ENABLE_WALLPAPER_SCRIM", false,
-            "Enables scrim over wallpaper for text protection.");
-
-    public static final BooleanFlag WIDGETS_IN_LAUNCHER_PREVIEW = getDebugFlag(
-            "WIDGETS_IN_LAUNCHER_PREVIEW", true,
-            "Enables widgets in Launcher preview for the Wallpaper app.");
-
-    public static final BooleanFlag QUICK_WALLPAPER_PICKER = getDebugFlag(
-            "QUICK_WALLPAPER_PICKER", true,
-            "Shows quick wallpaper picker in long-press menu");
-
-    public static final BooleanFlag ENABLE_BACK_SWIPE_HOME_ANIMATION = getDebugFlag(
-            "ENABLE_BACK_SWIPE_HOME_ANIMATION", true,
-            "Enables home animation to icon when user swipes back.");
-
-    public static final BooleanFlag ENABLE_ICON_LABEL_AUTO_SCALING = getDebugFlag(
-            "ENABLE_ICON_LABEL_AUTO_SCALING", true,
-            "Enables scaling/spacing for icon labels to make more characters visible");
-
-    public static final BooleanFlag ENABLE_ALL_APPS_IN_TASKBAR = getDebugFlag(
-            "ENABLE_ALL_APPS_IN_TASKBAR", true,
-            "Enables accessing All Apps from the system Taskbar.");
-
-    public static final BooleanFlag ENABLE_ALL_APPS_BUTTON_IN_HOTSEAT = getDebugFlag(
-            "ENABLE_ALL_APPS_BUTTON_IN_HOTSEAT", false,
-            "Enables displaying the all apps button in the hotseat.");
-
-    public static final BooleanFlag ENABLE_ALL_APPS_ONE_SEARCH_IN_TASKBAR = getDebugFlag(
-            "ENABLE_ALL_APPS_ONE_SEARCH_IN_TASKBAR", false,
-            "Enables One Search box in Taskbar All Apps.");
-
-    public static final BooleanFlag ENABLE_SPLIT_FROM_WORKSPACE = getDebugFlag(
-            "ENABLE_SPLIT_FROM_WORKSPACE", true,
-            "Enable initiating split screen from workspace.");
-
-    public static final BooleanFlag ENABLE_NEW_MIGRATION_LOGIC = getDebugFlag(
-            "ENABLE_NEW_MIGRATION_LOGIC", true,
-            "Enable the new grid migration logic, keeping pages when src < dest");
-
-    public static final BooleanFlag ENABLE_ONE_SEARCH_MOTION = new DeviceFlag(
-            "ENABLE_ONE_SEARCH_MOTION", true, "Enables animations in OneSearch.");
-
-    public static final BooleanFlag ENABLE_SHOW_KEYBOARD_OPTION_IN_ALL_APPS = new DeviceFlag(
-            "ENABLE_SHOW_KEYBOARD_OPTION_IN_ALL_APPS", true,
-            "Enable option to show keyboard when going to all-apps");
-
-    public static final BooleanFlag USE_LOCAL_ICON_OVERRIDES = getDebugFlag(
-            "USE_LOCAL_ICON_OVERRIDES", true,
-            "Use inbuilt monochrome icons if app doesn't provide one");
-
-    public static final BooleanFlag ENABLE_DISMISS_PREDICTION_UNDO = getDebugFlag(
-            "ENABLE_DISMISS_PREDICTION_UNDO", false,
+    // TODO(Block 3): Clean up flags
+    public static final BooleanFlag ENABLE_DISMISS_PREDICTION_UNDO = getDebugFlag(270394476,
+            "ENABLE_DISMISS_PREDICTION_UNDO", DISABLED,
             "Show an 'Undo' snackbar when users dismiss a predicted hotseat item");
 
-    public static void initialize(Context context) {
-        synchronized (sDebugFlags) {
-            for (DebugFlag flag : sDebugFlags) {
-                flag.initialize(context);
-            }
-            sDebugFlags.sort((f1, f2) -> f1.key.compareToIgnoreCase(f2.key));
-        }
-    }
+    public static final BooleanFlag CONTINUOUS_VIEW_TREE_CAPTURE = getDebugFlag(270395171,
+            "CONTINUOUS_VIEW_TREE_CAPTURE", ENABLED, "Capture View tree every frame");
 
-    static List<DebugFlag> getDebugFlags() {
-        synchronized (sDebugFlags) {
-            return new ArrayList<>(sDebugFlags);
-        }
-    }
+    public static final BooleanFlag ENABLE_WORKSPACE_LOADING_OPTIMIZATION = getDebugFlag(251502424,
+            "ENABLE_WORKSPACE_LOADING_OPTIMIZATION", DISABLED,
+            "load the current workspace screen visible to the user before the rest rather than "
+                    + "loading all of them at once.");
 
-    public static void dump(PrintWriter pw) {
-        pw.println("DeviceFlags:");
-        synchronized (sDebugFlags) {
-            for (DebugFlag flag : sDebugFlags) {
-                if (flag instanceof DeviceFlag) {
-                    pw.println("  " + flag.toString());
-                }
-            }
-        }
-        pw.println("DebugFlags:");
-        synchronized (sDebugFlags) {
-            for (DebugFlag flag : sDebugFlags) {
-                if (!(flag instanceof DeviceFlag)) {
-                    pw.println("  " + flag.toString());
-                }
-            }
-        }
-    }
+    public static final BooleanFlag CHANGE_MODEL_DELEGATE_LOADING_ORDER = getDebugFlag(251502424,
+            "CHANGE_MODEL_DELEGATE_LOADING_ORDER", DISABLED,
+            "changes the timing of the loading and binding of delegate items during "
+                    + "data preparation for loading the home screen");
+
+    // TODO(Block 4): Cleanup flags
+    public static final BooleanFlag ENABLE_FLOATING_SEARCH_BAR =
+            getReleaseFlag(268388460, "ENABLE_FLOATING_SEARCH_BAR", DISABLED,
+                    "Keep All Apps search bar at the bottom (but above keyboard if open)");
+
+    public static final BooleanFlag ENABLE_ALL_APPS_FROM_OVERVIEW =
+            getDebugFlag(275132633, "ENABLE_ALL_APPS_FROM_OVERVIEW", DISABLED,
+                    "Allow entering All Apps from Overview (e.g. long swipe up from app)");
+
+    public static final BooleanFlag ENABLE_SHOW_KEYBOARD_OPTION_IN_ALL_APPS = getReleaseFlag(
+            270394468, "ENABLE_SHOW_KEYBOARD_OPTION_IN_ALL_APPS", ENABLED,
+            "Enable option to show keyboard when going to all-apps");
+
+    // TODO(Block 5): Clean up flags
+    public static final BooleanFlag ENABLE_TWOLINE_DEVICESEARCH = getDebugFlag(201388851,
+            "ENABLE_TWOLINE_DEVICESEARCH", TEAMFOOD,
+            "Enable two line label for icons with labels on device search.");
+
+    public static final BooleanFlag ENABLE_ICON_IN_TEXT_HEADER = getDebugFlag(270395143,
+            "ENABLE_ICON_IN_TEXT_HEADER", DISABLED, "Show icon in textheader");
+
+    public static final BooleanFlag ENABLE_PREMIUM_HAPTICS_ALL_APPS = getDebugFlag(270396358,
+            "ENABLE_PREMIUM_HAPTICS_ALL_APPS", DISABLED,
+            "Enables haptics opening/closing All apps");
+
+    // TODO(Block 6): Clean up flags
+    public static final BooleanFlag ENABLE_ALL_APPS_SEARCH_IN_TASKBAR = getDebugFlag(270393900,
+            "ENABLE_ALL_APPS_SEARCH_IN_TASKBAR", DISABLED,
+            "Enables Search box in Taskbar All Apps.");
+
+    public static final BooleanFlag SECONDARY_DRAG_N_DROP_TO_PIN = getDebugFlag(270395140,
+            "SECONDARY_DRAG_N_DROP_TO_PIN", DISABLED,
+            "Enable dragging and dropping to pin apps within secondary display");
+
+    // TODO(Block 7): Clean up flags
+    public static final BooleanFlag ENABLE_FORCED_MONO_ICON = getDebugFlag(270396209,
+            "ENABLE_FORCED_MONO_ICON", DISABLED,
+            "Enable the ability to generate monochromatic icons, if it is not provided by the app");
+
+    // TODO(Block 8): Clean up flags
+    public static final BooleanFlag ENABLE_MATERIAL_U_POPUP = getDebugFlag(270395516,
+            "ENABLE_MATERIAL_U_POPUP", ENABLED, "Switch popup UX to use material U");
+
+    // TODO(Block 9): Clean up flags
+    public static final BooleanFlag ENABLE_DOWNLOAD_APP_UX_V2 = getReleaseFlag(270395134,
+            "ENABLE_DOWNLOAD_APP_UX_V2", ENABLED, "Updates the download app UX"
+                    + " to have better visuals");
+
+    public static final BooleanFlag ENABLE_DOWNLOAD_APP_UX_V3 = getDebugFlag(270395186,
+            "ENABLE_DOWNLOAD_APP_UX_V3", ENABLED, "Updates the download app UX"
+                    + " to have better visuals, improve contrast, and color");
+
+    public static final BooleanFlag SHOW_DOT_PAGINATION = getDebugFlag(270395278,
+            "SHOW_DOT_PAGINATION", ENABLED, "Enable showing dot pagination in workspace");
+
+    public static final BooleanFlag LARGE_SCREEN_WIDGET_PICKER = getDebugFlag(270395809,
+            "LARGE_SCREEN_WIDGET_PICKER", ENABLED, "Enable new widget picker that takes "
+                    + "advantage of large screen format");
+
+    public static final BooleanFlag MULTI_SELECT_EDIT_MODE = getDebugFlag(270709220,
+            "MULTI_SELECT_EDIT_MODE", DISABLED, "Enable new multi-select edit mode "
+                    + "for home screen");
+
+    // TODO(Block 10): Clean up flags
+    public static final BooleanFlag ENABLE_BACK_SWIPE_LAUNCHER_ANIMATION = getDebugFlag(270614790,
+            "ENABLE_BACK_SWIPE_LAUNCHER_ANIMATION", DISABLED,
+            "Enables predictive back animation from all apps and widgets to home");
+
+    // TODO(Block 11): Clean up flags
+    public static final BooleanFlag ENABLE_TWO_PANEL_HOME = getDebugFlag(270392643,
+            "ENABLE_TWO_PANEL_HOME", ENABLED,
+            "Uses two panel on home screen. Only applicable on large screen devices.");
+
+    public static final BooleanFlag FOLDABLE_WORKSPACE_REORDER = getDebugFlag(270395070,
+            "FOLDABLE_WORKSPACE_REORDER", DISABLED,
+            "In foldables, when reordering the icons and widgets, is now going to use both sides");
+
+    public static final BooleanFlag FOLDABLE_SINGLE_PAGE = getDebugFlag(270395274,
+            "FOLDABLE_SINGLE_PAGE", ENABLED, "Use a single page for the workspace");
+
+    // TODO(Block 12): Clean up flags
+    public static final BooleanFlag ENABLE_MULTI_INSTANCE = getDebugFlag(270396680,
+            "ENABLE_MULTI_INSTANCE", DISABLED,
+            "Enables creation and filtering of multiple task instances in overview");
+
+    // TODO(Block 13): Clean up flags
+    public static final BooleanFlag ENABLE_DEVICE_SEARCH_PERFORMANCE_LOGGING = getReleaseFlag(
+            270391397, "ENABLE_DEVICE_SEARCH_PERFORMANCE_LOGGING", DISABLED,
+            "Allows on device search in all apps logging");
+
+    // TODO(Block 14): Cleanup flags
+    public static final BooleanFlag NOTIFY_CRASHES = getDebugFlag(270393108, "NOTIFY_CRASHES",
+            DISABLED, "Sends a notification whenever launcher encounters an uncaught exception.");
+
+    public static final BooleanFlag ENABLE_TRANSIENT_TASKBAR = getDebugFlag(270395798,
+            "ENABLE_TRANSIENT_TASKBAR", ENABLED, "Enables transient taskbar.");
+
+    // TODO(Block 16): Clean up flags
+    // When enabled the promise icon is visible in all apps while installation an app.
+    public static final BooleanFlag PROMISE_APPS_IN_ALL_APPS = getDebugFlag(270390012,
+            "PROMISE_APPS_IN_ALL_APPS", DISABLED, "Add promise icon in all-apps");
+
+    public static final BooleanFlag KEYGUARD_ANIMATION = getDebugFlag(270390904,
+            "KEYGUARD_ANIMATION", DISABLED,
+            "Enable animation for keyguard going away on wallpaper");
+
+    public static final BooleanFlag ENABLE_DEVICE_SEARCH = getReleaseFlag(270390907,
+            "ENABLE_DEVICE_SEARCH", ENABLED, "Allows on device search in all apps");
+
+    public static final BooleanFlag ENABLE_HIDE_HEADER = getReleaseFlag(270390930,
+            "ENABLE_HIDE_HEADER", ENABLED, "Hide header on keyboard before typing in all apps");
+
+    public static final BooleanFlag ENABLE_EXPANDING_PAUSE_WORK_BUTTON = getDebugFlag(270390779,
+            "ENABLE_EXPANDING_PAUSE_WORK_BUTTON", DISABLED,
+            "Expand and collapse pause work button while scrolling");
+
+    public static final BooleanFlag COLLECT_SEARCH_HISTORY = getReleaseFlag(270391455,
+            "COLLECT_SEARCH_HISTORY", DISABLED, "Allow launcher to collect search history for log");
+
+    public static final BooleanFlag ENABLE_TWOLINE_ALLAPPS = getDebugFlag(270390937,
+            "ENABLE_TWOLINE_ALLAPPS", TEAMFOOD, "Enables two line label inside all apps.");
+
+    public static final BooleanFlag IME_STICKY_SNACKBAR_EDU = getDebugFlag(270391693,
+            "IME_STICKY_SNACKBAR_EDU", ENABLED, "Show sticky IME edu in AllApps");
+
+    public static final BooleanFlag ENABLE_PEOPLE_TILE_PREVIEW = getDebugFlag(270391653,
+            "ENABLE_PEOPLE_TILE_PREVIEW", DISABLED,
+            "Experimental: Shows conversation shortcuts on home screen as search results");
+
+    public static final BooleanFlag FOLDER_NAME_MAJORITY_RANKING = getDebugFlag(270391638,
+            "FOLDER_NAME_MAJORITY_RANKING", ENABLED,
+            "Suggests folder names based on majority based ranking.");
+
+    public static final BooleanFlag INJECT_FALLBACK_APP_CORPUS_RESULTS = getReleaseFlag(270391706,
+            "INJECT_FALLBACK_APP_CORPUS_RESULTS", DISABLED,
+            "Inject fallback app corpus result when AiAi fails to return it.");
+
+    // TODO(Block 17): Clean up flags
+    public static final BooleanFlag ENABLE_TASKBAR_PINNING = getDebugFlag(270396583,
+            "ENABLE_TASKBAR_PINNING", DISABLED,
+            "Enables taskbar pinning to allow user to switch between transient and persistent "
+                    + "taskbar flavors");
+
+    // TODO(Block 18): Clean up flags
+    public static final BooleanFlag ENABLE_LAUNCH_FROM_STAGED_APP = getDebugFlag(270395567,
+            "ENABLE_LAUNCH_FROM_STAGED_APP", ENABLED,
+            "Enable the ability to tap a staged app during split select to launch it in full "
+                    + "screen");
+
+    public static final BooleanFlag ENABLE_APP_PAIRS = getDebugFlag(274189428,
+            "ENABLE_APP_PAIRS", DISABLED,
+            "Enables the ability to create and save app pairs on the Home screen for easy"
+                    + " split screen launching.");
+
+    // TODO(Block 19): Clean up flags
+    public static final BooleanFlag SCROLL_TOP_TO_RESET = getReleaseFlag(270395177,
+            "SCROLL_TOP_TO_RESET", ENABLED,
+            "Bring up IME and focus on input when scroll to top if 'Always show keyboard'"
+                    + " is enabled or in prefix state");
+
+    public static final BooleanFlag ENABLE_SEARCH_UNINSTALLED_APPS = getReleaseFlag(270395269,
+            "ENABLE_SEARCH_UNINSTALLED_APPS", DISABLED, "Search uninstalled app results.");
+
+    // TODO(Block 20): Clean up flags
+    public static final BooleanFlag ENABLE_SCRIM_FOR_APP_LAUNCH = getDebugFlag(270393276,
+            "ENABLE_SCRIM_FOR_APP_LAUNCH", DISABLED, "Enables scrim during app launch animation.");
+
+    public static final BooleanFlag ENABLE_BACK_SWIPE_HOME_ANIMATION = getDebugFlag(270393426,
+            "ENABLE_BACK_SWIPE_HOME_ANIMATION", ENABLED,
+            "Enables home animation to icon when user swipes back.");
+
+    // TODO(Block 21): Clean up flags
+    public static final BooleanFlag ENABLE_APP_ICON_FOR_INLINE_SHORTCUTS = getDebugFlag(270395087,
+            "ENABLE_APP_ICON_IN_INLINE_SHORTCUTS", DISABLED, "Show app icon for inline shortcut");
+
+    // TODO(Block 22): Clean up flags
+    public static final BooleanFlag RECEIVE_UNFOLD_EVENTS_FROM_SYSUI = getDebugFlag(270397209,
+            "RECEIVE_UNFOLD_EVENTS_FROM_SYSUI", ENABLED,
+            "Enables receiving unfold animation events from sysui instead of calculating "
+                    + "them in launcher process using hinge sensor values.");
+
+    public static final BooleanFlag ENABLE_WIDGET_TRANSITION_FOR_RESIZING = getDebugFlag(268553314,
+            "ENABLE_WIDGET_TRANSITION_FOR_RESIZING", DISABLED,
+            "Enable widget transition animation when resizing the widgets");
+
+    public static final BooleanFlag PREEMPTIVE_UNFOLD_ANIMATION_START = getDebugFlag(270397209,
+            "PREEMPTIVE_UNFOLD_ANIMATION_START", DISABLED,
+            "Enables starting the unfold animation preemptively when unfolding, without"
+                    + "waiting for SystemUI and then merging the SystemUI progress whenever we "
+                    + "start receiving the events");
+
+    // TODO(Block 23): Clean up flags
+    public static final BooleanFlag ENABLE_GRID_ONLY_OVERVIEW = getDebugFlag(270397206,
+            "ENABLE_GRID_ONLY_OVERVIEW", DISABLED,
+            "Enable a grid-only overview without a focused task.");
+
+    public static final BooleanFlag ENABLE_CURSOR_HOVER_STATES = getDebugFlag(243191650,
+            "ENABLE_CURSOR_HOVER_STATES", DISABLED,
+            "Enables cursor hover states for certain elements.");
+
+    // TODO(Block 24): Clean up flags
+    public static final BooleanFlag ENABLE_NEW_MIGRATION_LOGIC = getDebugFlag(270393455,
+            "ENABLE_NEW_MIGRATION_LOGIC", ENABLED,
+            "Enable the new grid migration logic, keeping pages when src < dest");
+
+    public static final BooleanFlag ENABLE_CACHED_WIDGET = getDebugFlag(270395008,
+            "ENABLE_CACHED_WIDGET", ENABLED,
+            "Show previously cached widgets as opposed to deferred widget where available");
+
+    // TODO(Block 25): Clean up flags
+    public static final BooleanFlag ENABLE_NEW_GESTURE_NAV_TUTORIAL = getDebugFlag(270396257,
+            "ENABLE_NEW_GESTURE_NAV_TUTORIAL", ENABLED,
+            "Enable the redesigned gesture navigation tutorial");
+
+    // TODO(Block 26): Clean up flags
+    public static final BooleanFlag ENABLE_WIDGET_HOST_IN_BACKGROUND = getDebugFlag(270394384,
+            "ENABLE_WIDGET_HOST_IN_BACKGROUND", ENABLED,
+            "Enable background widget updates listening for widget holder");
+
+    // TODO(Block 27): Clean up flags
+    public static final BooleanFlag ENABLE_OVERLAY_CONNECTION_OPTIM = getDebugFlag(270392629,
+            "ENABLE_OVERLAY_CONNECTION_OPTIM", DISABLED,
+            "Enable optimizing overlay service connection");
+
+    /**
+     * Enables region sampling for text color: Needs system health assessment before turning on
+     */
+    public static final BooleanFlag ENABLE_REGION_SAMPLING = getDebugFlag(270391669,
+            "ENABLE_REGION_SAMPLING", DISABLED,
+            "Enable region sampling to determine color of text on screen.");
+
+    public static final BooleanFlag ALWAYS_USE_HARDWARE_OPTIMIZATION_FOR_FOLDER_ANIMATIONS =
+            getDebugFlag(270393096, "ALWAYS_USE_HARDWARE_OPTIMIZATION_FOR_FOLDER_ANIMATIONS",
+            DISABLED, "Always use hardware optimization for folder animations.");
+
+    public static final BooleanFlag SEPARATE_RECENTS_ACTIVITY = getDebugFlag(270392980,
+            "SEPARATE_RECENTS_ACTIVITY", DISABLED,
+            "Uses a separate recents activity instead of using the integrated recents+Launcher UI");
+
+    public static final BooleanFlag ENABLE_ENFORCED_ROUNDED_CORNERS = getReleaseFlag(270393258,
+            "ENABLE_ENFORCED_ROUNDED_CORNERS", ENABLED,
+            "Enforce rounded corners on all App Widgets");
+
+    public static final BooleanFlag ENABLE_ICON_LABEL_AUTO_SCALING = getDebugFlag(270393294,
+            "ENABLE_ICON_LABEL_AUTO_SCALING", ENABLED,
+            "Enables scaling/spacing for icon labels to make more characters visible");
+
+    public static final BooleanFlag USE_LOCAL_ICON_OVERRIDES = getDebugFlag(270394973,
+            "USE_LOCAL_ICON_OVERRIDES", ENABLED,
+            "Use inbuilt monochrome icons if app doesn't provide one");
+
+    // TODO(Block 28): Clean up flags
+    public static final BooleanFlag ENABLE_SPLIT_FROM_WORKSPACE = getDebugFlag(270393906,
+            "ENABLE_SPLIT_FROM_WORKSPACE", ENABLED,
+            "Enable initiating split screen from workspace.");
+
+    public static final BooleanFlag ENABLE_SPLIT_FROM_FULLSCREEN_WITH_KEYBOARD_SHORTCUTS =
+            getDebugFlag(270394122, "ENABLE_SPLIT_FROM_FULLSCREEN_SHORTCUT", DISABLED,
+                    "Enable splitting from fullscreen app with keyboard shortcuts");
+
+    public static final BooleanFlag ENABLE_SPLIT_FROM_WORKSPACE_TO_WORKSPACE = getDebugFlag(
+            270393453, "ENABLE_SPLIT_FROM_WORKSPACE_TO_WORKSPACE", DISABLED,
+            "Enable initiating split screen from workspace to workspace.");
+
+    public static final BooleanFlag ENABLE_TRACKPAD_GESTURE = getDebugFlag(271010401,
+            "ENABLE_TRACKPAD_GESTURE", DISABLED, "Enables trackpad gesture.");
+
+    // TODO(Block 29): Clean up flags
+    public static final BooleanFlag ENABLE_ALL_APPS_BUTTON_IN_HOTSEAT = getDebugFlag(270393897,
+            "ENABLE_ALL_APPS_BUTTON_IN_HOTSEAT", DISABLED,
+            "Enables displaying the all apps button in the hotseat.");
+
+    public static final BooleanFlag ENABLE_KEYBOARD_QUICK_SWITCH = getDebugFlag(270396844,
+            "ENABLE_KEYBOARD_QUICK_SWITCH", ENABLED, "Enables keyboard quick switching");
+
+    public static final BooleanFlag ENABLE_KEYBOARD_TASKBAR_TOGGLE = getDebugFlag(281726846,
+            "ENABLE_KEYBOARD_TASKBAR_TOGGLE", ENABLED,
+            "Enables keyboard taskbar stash toggling");
+
+    // TODO(Block 30): Clean up flags
+    public static final BooleanFlag USE_SEARCH_REQUEST_TIMEOUT_OVERRIDES = getDebugFlag(270395010,
+            "USE_SEARCH_REQUEST_TIMEOUT_OVERRIDES", DISABLED,
+            "Use local overrides for search request timeout");
+
+    // TODO(Block 31)
+    public static final BooleanFlag ENABLE_SPLIT_LAUNCH_DATA_REFACTOR = getDebugFlag(279494325,
+            "ENABLE_SPLIT_LAUNCH_DATA_REFACTOR", ENABLED,
+            "Use refactored split launching code path");
+
+    // TODO(Block 32): Empty block
+
+    public static final BooleanFlag ENABLE_RESPONSIVE_WORKSPACE = getDebugFlag(241386436,
+            "ENABLE_RESPONSIVE_WORKSPACE", DISABLED,
+            "Enables new workspace grid calculations method.");
 
     public static class BooleanFlag {
 
-        public final String key;
-        public final boolean defaultValue;
+        private final boolean mCurrentValue;
 
-        public BooleanFlag(String key, boolean defaultValue) {
-            this.key = key;
-            this.defaultValue = defaultValue;
+        public BooleanFlag(boolean currentValue) {
+            mCurrentValue = currentValue;
         }
 
         public boolean get() {
-            return defaultValue;
-        }
-
-        @Override
-        public String toString() {
-            return appendProps(new StringBuilder()).toString();
-        }
-
-        protected StringBuilder appendProps(StringBuilder src) {
-            return src.append(key).append(", defaultValue=").append(defaultValue);
+            return sBooleanReader.test(this);
         }
     }
 
-    public static class DebugFlag extends BooleanFlag {
+    /**
+     * Class representing an integer flag
+     */
+    public static class IntFlag {
 
-        public final String description;
-        protected boolean mCurrentValue;
+        private final int mCurrentValue;
 
-        public DebugFlag(String key, boolean defaultValue, String description) {
-            super(key, defaultValue);
-            this.description = description;
-            mCurrentValue = this.defaultValue;
-            synchronized (sDebugFlags) {
-                sDebugFlags.add(this);
-            }
+        public IntFlag(int currentValue) {
+            mCurrentValue = currentValue;
         }
 
-        @Override
-        public boolean get() {
-            return mCurrentValue;
-        }
-
-        public void initialize(Context context) {
-            mCurrentValue = context.getSharedPreferences(FLAGS_PREF_NAME, Context.MODE_PRIVATE)
-                    .getBoolean(key, defaultValue);
-        }
-
-        @Override
-        protected StringBuilder appendProps(StringBuilder src) {
-            return super.appendProps(src).append(", mCurrentValue=").append(mCurrentValue);
+        public int get() {
+            return sIntReader.applyAsInt(this);
         }
     }
 
-    private static BooleanFlag getDebugFlag(String key, boolean defaultValue, String description) {
-        return Utilities.IS_DEBUG_DEVICE
-                ? new DebugFlag(key, defaultValue, description)
-                : new BooleanFlag(key, defaultValue);
+    /**
+     * Enabled state for a flag
+     */
+    public enum FlagState {
+        ENABLED,
+        DISABLED,
+        TEAMFOOD    // Enabled in team food
     }
 }
diff --git a/src/com/android/launcher3/config/FlagTogglerPrefUi.java b/src/com/android/launcher3/config/FlagTogglerPrefUi.java
deleted file mode 100644
index 6729f74..0000000
--- a/src/com/android/launcher3/config/FlagTogglerPrefUi.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (C) 2018 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.launcher3.config;
-
-import static com.android.launcher3.config.FeatureFlags.FLAGS_PREF_NAME;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.os.Process;
-import android.text.Html;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.widget.Toast;
-
-import androidx.preference.PreferenceDataStore;
-import androidx.preference.PreferenceFragmentCompat;
-import androidx.preference.PreferenceGroup;
-import androidx.preference.SwitchPreference;
-
-import com.android.launcher3.R;
-import com.android.launcher3.config.FeatureFlags.DebugFlag;
-
-/**
- * Dev-build only UI allowing developers to toggle flag settings. See {@link FeatureFlags}.
- */
-public final class FlagTogglerPrefUi {
-
-    private static final String TAG = "FlagTogglerPrefFrag";
-
-    private final PreferenceFragmentCompat mFragment;
-    private final Context mContext;
-    private final SharedPreferences mSharedPreferences;
-
-    private final PreferenceDataStore mDataStore = new PreferenceDataStore() {
-
-        @Override
-        public void putBoolean(String key, boolean value) {
-            for (DebugFlag flag : FeatureFlags.getDebugFlags()) {
-                if (flag.key.equals(key)) {
-                    SharedPreferences.Editor editor = mContext.getSharedPreferences(
-                            FLAGS_PREF_NAME, Context.MODE_PRIVATE).edit();
-                    if (value == flag.defaultValue) {
-                        editor.remove(key).apply();
-                    } else {
-                        editor.putBoolean(key, value).apply();
-                    }
-                    updateMenu();
-                }
-            }
-        }
-
-        @Override
-        public boolean getBoolean(String key, boolean defaultValue) {
-            for (DebugFlag flag : FeatureFlags.getDebugFlags()) {
-                if (flag.key.equals(key)) {
-                    return mContext.getSharedPreferences(FLAGS_PREF_NAME, Context.MODE_PRIVATE)
-                            .getBoolean(key, flag.defaultValue);
-                }
-            }
-            return defaultValue;
-        }
-    };
-
-    public FlagTogglerPrefUi(PreferenceFragmentCompat fragment) {
-        mFragment = fragment;
-        mContext = fragment.getActivity();
-        mSharedPreferences = mContext.getSharedPreferences(
-                FLAGS_PREF_NAME, Context.MODE_PRIVATE);
-    }
-
-    public void applyTo(PreferenceGroup parent) {
-        // For flag overrides we only want to store when the engineer chose to override the
-        // flag with a different value than the default. That way, when we flip flags in
-        // future, engineers will pick up the new value immediately. To accomplish this, we use a
-        // custom preference data store.
-        for (DebugFlag flag : FeatureFlags.getDebugFlags()) {
-            SwitchPreference switchPreference = new SwitchPreference(mContext);
-            switchPreference.setKey(flag.key);
-            switchPreference.setDefaultValue(flag.defaultValue);
-            switchPreference.setChecked(getFlagStateFromSharedPrefs(flag));
-            switchPreference.setTitle(flag.key);
-            updateSummary(switchPreference, flag);
-            switchPreference.setPreferenceDataStore(mDataStore);
-            parent.addPreference(switchPreference);
-        }
-        updateMenu();
-    }
-
-    /**
-     * Updates the summary to show the description and whether the flag overrides the default value.
-     */
-    private void updateSummary(SwitchPreference switchPreference, DebugFlag flag) {
-        String onWarning = flag.defaultValue ? "" : "<b>OVERRIDDEN</b><br>";
-        String offWarning = flag.defaultValue ? "<b>OVERRIDDEN</b><br>" : "";
-        switchPreference.setSummaryOn(Html.fromHtml(onWarning + flag.description));
-        switchPreference.setSummaryOff(Html.fromHtml(offWarning + flag.description));
-    }
-
-    private void updateMenu() {
-        mFragment.setHasOptionsMenu(anyChanged());
-        mFragment.getActivity().invalidateOptionsMenu();
-    }
-
-    public void onCreateOptionsMenu(Menu menu) {
-        if (anyChanged()) {
-            menu.add(0, R.id.menu_apply_flags, 0, "Apply")
-                    .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
-        }
-    }
-
-    public void onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId() == R.id.menu_apply_flags) {
-            mSharedPreferences.edit().commit();
-            Log.e(TAG,
-                    "Killing launcher process " + Process.myPid() + " to apply new flag values");
-            System.exit(0);
-        }
-    }
-
-    public void onStop() {
-        if (anyChanged()) {
-            Toast.makeText(mContext, "Flag won't be applied until you restart launcher",
-                    Toast.LENGTH_LONG).show();
-        }
-    }
-
-    private boolean getFlagStateFromSharedPrefs(DebugFlag flag) {
-        return mDataStore.getBoolean(flag.key, flag.defaultValue);
-    }
-
-    private boolean anyChanged() {
-        for (DebugFlag flag : FeatureFlags.getDebugFlags()) {
-            if (getFlagStateFromSharedPrefs(flag) != flag.get()) {
-                return true;
-            }
-        }
-        return false;
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/launcher3/dragndrop/AddItemActivity.java b/src/com/android/launcher3/dragndrop/AddItemActivity.java
index 466b268..00f4285 100644
--- a/src/com/android/launcher3/dragndrop/AddItemActivity.java
+++ b/src/com/android/launcher3/dragndrop/AddItemActivity.java
@@ -23,6 +23,7 @@
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ADD_EXTERNAL_ITEM_PLACED_AUTOMATICALLY;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ADD_EXTERNAL_ITEM_START;
 import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
+import static com.android.launcher3.widget.WidgetSections.NO_CATEGORY;
 
 import android.annotation.TargetApi;
 import android.app.ActivityOptions;
@@ -31,6 +32,7 @@
 import android.content.ClipData;
 import android.content.ClipDescription;
 import android.content.Intent;
+import android.content.pm.ApplicationInfo;
 import android.content.pm.LauncherApps.PinItemRequest;
 import android.content.pm.ShortcutInfo;
 import android.content.res.Configuration;
@@ -52,6 +54,8 @@
 import android.view.accessibility.AccessibilityManager;
 import android.widget.TextView;
 
+import androidx.annotation.Nullable;
+
 import com.android.launcher3.BaseActivity;
 import com.android.launcher3.InvariantDeviceProfile;
 import com.android.launcher3.Launcher;
@@ -60,14 +64,17 @@
 import com.android.launcher3.logging.StatsLogManager;
 import com.android.launcher3.model.ItemInstallQueue;
 import com.android.launcher3.model.WidgetItem;
+import com.android.launcher3.model.WidgetsModel;
 import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.model.data.PackageItemInfo;
 import com.android.launcher3.pm.PinRequestHelper;
+import com.android.launcher3.util.PackageManagerHelper;
 import com.android.launcher3.util.SystemUiController;
 import com.android.launcher3.views.AbstractSlideInView;
 import com.android.launcher3.views.BaseDragLayer;
 import com.android.launcher3.widget.AddItemWidgetsBottomSheet;
-import com.android.launcher3.widget.LauncherAppWidgetHost;
 import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
+import com.android.launcher3.widget.LauncherWidgetHolder;
 import com.android.launcher3.widget.NavigableAppWidgetHostView;
 import com.android.launcher3.widget.PendingAddShortcutInfo;
 import com.android.launcher3.widget.PendingAddWidgetInfo;
@@ -75,6 +82,7 @@
 import com.android.launcher3.widget.WidgetCellPreview;
 import com.android.launcher3.widget.WidgetImageView;
 import com.android.launcher3.widget.WidgetManagerHelper;
+import com.android.launcher3.widget.WidgetSections;
 
 import java.util.function.Supplier;
 
@@ -102,7 +110,8 @@
     private WidgetCell mWidgetCell;
 
     // Widget request specific options.
-    private LauncherAppWidgetHost mAppWidgetHost;
+    @Nullable
+    private LauncherWidgetHolder mAppWidgetHolder = null;
     private WidgetManagerHelper mAppWidgetManager;
     private int mPendingBindWidgetId;
     private Bundle mWidgetOptions;
@@ -136,13 +145,28 @@
         mAccessibilityManager =
                 getApplicationContext().getSystemService(AccessibilityManager.class);
 
-        if (mRequest.getRequestType() == PinItemRequest.REQUEST_TYPE_SHORTCUT) {
-            setupShortcut();
-        } else {
-            if (!setupWidget()) {
-                // TODO: show error toast?
-                finish();
-            }
+        final PackageItemInfo targetApp;
+        switch (mRequest.getRequestType()) {
+            case PinItemRequest.REQUEST_TYPE_SHORTCUT:
+                targetApp = setupShortcut();
+                break;
+            case PinItemRequest.REQUEST_TYPE_APPWIDGET:
+                targetApp = setupWidget();
+                break;
+            default:
+                targetApp = null;
+                break;
+        }
+        if (targetApp == null) {
+            // TODO: show error toast?
+            finish();
+            return;
+        }
+        ApplicationInfo info = new PackageManagerHelper(this)
+                .getApplicationInfo(targetApp.packageName, targetApp.user, 0);
+        if (info == null) {
+            finish();
+            return;
         }
 
         WidgetCellPreview previewContainer = mWidgetCell.findViewById(
@@ -156,8 +180,13 @@
             logCommand(LAUNCHER_ADD_EXTERNAL_ITEM_START);
         }
 
+        // Set the label synchronously instead of via IconCache as this is the first thing
+        // user sees
         TextView widgetAppName = findViewById(R.id.widget_appName);
-        widgetAppName.setText(getApplicationInfo().labelRes);
+        WidgetSections.WidgetSection section = targetApp.widgetCategory == NO_CATEGORY ? null
+                : WidgetSections.getWidgetSections(this).get(targetApp.widgetCategory);
+        widgetAppName.setText(section == null ? info.loadLabel(getPackageManager())
+                : getString(section.mSectionTitle));
 
         mSlideInView = findViewById(R.id.add_item_bottom_sheet);
         mSlideInView.addOnCloseListener(this);
@@ -246,25 +275,27 @@
         }
     }
 
-    private void setupShortcut() {
+    private PackageItemInfo setupShortcut() {
         PinShortcutRequestActivityInfo shortcutInfo =
                 new PinShortcutRequestActivityInfo(mRequest, this);
         mWidgetCell.getWidgetView().setTag(new PendingAddShortcutInfo(shortcutInfo));
         applyWidgetItemAsync(
                 () -> new WidgetItem(shortcutInfo, mApp.getIconCache(), getPackageManager()));
+        return new PackageItemInfo(mRequest.getShortcutInfo().getPackage(),
+                mRequest.getShortcutInfo().getUserHandle());
     }
 
-    private boolean setupWidget() {
-        LauncherAppWidgetProviderInfo widgetInfo = LauncherAppWidgetProviderInfo
+    private PackageItemInfo setupWidget() {
+        final LauncherAppWidgetProviderInfo widgetInfo = LauncherAppWidgetProviderInfo
                 .fromProviderInfo(this, mRequest.getAppWidgetProviderInfo(this));
         if (widgetInfo.minSpanX > mIdp.numColumns || widgetInfo.minSpanY > mIdp.numRows) {
             // Cannot add widget
-            return false;
+            return null;
         }
         mWidgetCell.setRemoteViewsPreview(PinItemDragListener.getPreview(mRequest));
 
         mAppWidgetManager = new WidgetManagerHelper(this);
-        mAppWidgetHost = new LauncherAppWidgetHost(this);
+        mAppWidgetHolder = LauncherWidgetHolder.newInstance(this);
 
         PendingAddWidgetInfo pendingInfo =
                 new PendingAddWidgetInfo(widgetInfo, CONTAINER_PIN_WIDGETS);
@@ -273,8 +304,10 @@
         mWidgetOptions = pendingInfo.getDefaultSizeOptions(this);
         mWidgetCell.getWidgetView().setTag(pendingInfo);
 
-        applyWidgetItemAsync(() -> new WidgetItem(widgetInfo, mIdp, mApp.getIconCache()));
-        return true;
+        applyWidgetItemAsync(() -> new WidgetItem(
+                widgetInfo, mIdp, mApp.getIconCache(), mApp.getContext()));
+        return WidgetsModel.newPendingItemInfo(this, widgetInfo.getComponent(),
+                widgetInfo.getUser());
     }
 
     private void applyWidgetItemAsync(final Supplier<WidgetItem> itemProvider) {
@@ -318,7 +351,7 @@
             return;
         }
 
-        mPendingBindWidgetId = mAppWidgetHost.allocateAppWidgetId();
+        mPendingBindWidgetId = mAppWidgetHolder.allocateAppWidgetId();
         AppWidgetProviderInfo widgetProviderInfo = mRequest.getAppWidgetProviderInfo(this);
         boolean success = mAppWidgetManager.bindAppWidgetIdIfAllowed(
                 mPendingBindWidgetId, widgetProviderInfo, mWidgetOptions);
@@ -329,7 +362,7 @@
         }
 
         // request bind widget
-        mAppWidgetHost.startBindFlow(this, mPendingBindWidgetId,
+        mAppWidgetHolder.startBindFlow(this, mPendingBindWidgetId,
                 mRequest.getAppWidgetProviderInfo(this), REQUEST_BIND_APPWIDGET);
     }
 
@@ -343,6 +376,15 @@
     }
 
     @Override
+    public void onDestroy() {
+        super.onDestroy();
+        if (mAppWidgetHolder != null) {
+            // Necessary to destroy the holder to free up possible activity context
+            mAppWidgetHolder.destroy();
+        }
+    }
+
+    @Override
     public void onBackPressed() {
         logCommand(LAUNCHER_ADD_EXTERNAL_ITEM_BACK);
         mSlideInView.close(/* animate= */ true);
@@ -358,7 +400,7 @@
                 acceptWidget(widgetId);
             } else {
                 // Simply wait it out.
-                mAppWidgetHost.deleteAppWidgetId(widgetId);
+                mAppWidgetHolder.deleteAppWidgetId(widgetId);
                 mPendingBindWidgetId = -1;
             }
             return;
diff --git a/src/com/android/launcher3/dragndrop/DragController.java b/src/com/android/launcher3/dragndrop/DragController.java
index 35cdfef..9867268 100644
--- a/src/com/android/launcher3/dragndrop/DragController.java
+++ b/src/com/android/launcher3/dragndrop/DragController.java
@@ -21,7 +21,6 @@
 import android.graphics.Point;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
-import android.util.Log;
 import android.view.DragEvent;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
@@ -31,10 +30,10 @@
 
 import com.android.launcher3.DragSource;
 import com.android.launcher3.DropTarget;
+import com.android.launcher3.anim.Interpolators;
 import com.android.launcher3.logging.InstanceId;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
-import com.android.launcher3.testing.TestProtocol;
 import com.android.launcher3.util.TouchController;
 import com.android.launcher3.views.ActivityContext;
 
@@ -90,6 +89,8 @@
 
     protected boolean mIsInPreDrag;
 
+    private final int DRAG_VIEW_SCALE_DURATION_MS = 500;
+
     /**
      * Interface to receive notifications when a drag starts or stops
      */
@@ -142,17 +143,12 @@
             int dragLayerY,
             DragSource source,
             ItemInfo dragInfo,
-            Point dragOffset,
             Rect dragRegion,
             float initialDragViewScale,
             float dragViewScaleOnDrop,
             DragOptions options) {
-        if (TestProtocol.sDebugTracing) {
-            Log.d(TestProtocol.NO_DROP_TARGET, "4");
-        }
-        return startDrag(drawable, /* view= */ null, originalView, dragLayerX, dragLayerY,
-                source, dragInfo, dragOffset, dragRegion, initialDragViewScale, dragViewScaleOnDrop,
-                options);
+        return startDrag(drawable, /* view= */ null, originalView, dragLayerX, dragLayerY, source,
+                dragInfo, dragRegion, initialDragViewScale, dragViewScaleOnDrop, options);
     }
 
     /**
@@ -182,14 +178,12 @@
             int dragLayerY,
             DragSource source,
             ItemInfo dragInfo,
-            Point dragOffset,
             Rect dragRegion,
             float initialDragViewScale,
             float dragViewScaleOnDrop,
             DragOptions options) {
-        return startDrag(/* drawable= */ null, view, originalView, dragLayerX, dragLayerY,
-                source, dragInfo, dragOffset, dragRegion, initialDragViewScale, dragViewScaleOnDrop,
-                options);
+        return startDrag(/* drawable= */ null, view, originalView, dragLayerX, dragLayerY, source,
+                dragInfo, dragRegion, initialDragViewScale, dragViewScaleOnDrop, options);
     }
 
     protected abstract DragView startDrag(
@@ -200,20 +194,25 @@
             int dragLayerY,
             DragSource source,
             ItemInfo dragInfo,
-            Point dragOffset,
             Rect dragRegion,
             float initialDragViewScale,
             float dragViewScaleOnDrop,
             DragOptions options);
 
     protected void callOnDragStart() {
-        if (TestProtocol.sDebugTracing) {
-            Log.d(TestProtocol.NO_DROP_TARGET, "6");
-        }
         if (mOptions.preDragCondition != null) {
             mOptions.preDragCondition.onPreDragEnd(mDragObject, true /* dragStarted*/);
         }
         mIsInPreDrag = false;
+        if (mOptions.preDragEndScale != 0) {
+            mDragObject.dragView
+                    .animate()
+                    .scaleX(mOptions.preDragEndScale)
+                    .scaleY(mOptions.preDragEndScale)
+                    .setInterpolator(Interpolators.EMPHASIZED)
+                    .setDuration(DRAG_VIEW_SCALE_DURATION_MS)
+                    .start();
+        }
         mDragObject.dragView.onDragStart();
         for (DragListener listener : new ArrayList<>(mListeners)) {
             listener.onDragStart(mDragObject, mOptions);
@@ -295,9 +294,9 @@
                 } else if (mIsInPreDrag) {
                     animateDragViewToOriginalPosition(null, null, -1);
                 }
+                mDragObject.dragView.clearAnimation();
                 mDragObject.dragView = null;
             }
-
             // Only end the drag if we are not deferred
             if (!isDeferred) {
                 callOnDragEnd();
diff --git a/src/com/android/launcher3/dragndrop/DragLayer.java b/src/com/android/launcher3/dragndrop/DragLayer.java
index 8eeca7d..366870b 100644
--- a/src/com/android/launcher3/dragndrop/DragLayer.java
+++ b/src/com/android/launcher3/dragndrop/DragLayer.java
@@ -43,26 +43,28 @@
 import android.view.animation.Interpolator;
 
 import com.android.launcher3.AbstractFloatingView;
-import com.android.launcher3.CellLayout;
 import com.android.launcher3.DropTargetBar;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.R;
 import com.android.launcher3.ShortcutAndWidgetContainer;
+import com.android.launcher3.Utilities;
 import com.android.launcher3.Workspace;
+import com.android.launcher3.anim.Interpolators;
 import com.android.launcher3.anim.PendingAnimation;
 import com.android.launcher3.anim.SpringProperty;
+import com.android.launcher3.celllayout.CellLayoutLayoutParams;
 import com.android.launcher3.folder.Folder;
 import com.android.launcher3.graphics.Scrim;
 import com.android.launcher3.keyboard.ViewGroupFocusHelper;
-import com.android.launcher3.util.TouchController;
 import com.android.launcher3.views.BaseDragLayer;
+import com.android.systemui.plugins.shared.LauncherOverlayManager.LauncherOverlayCallbacks;
 
 import java.util.ArrayList;
 
 /**
  * A ViewGroup that coordinates dragging across its descendants
  */
-public class DragLayer extends BaseDragLayer<Launcher> {
+public class DragLayer extends BaseDragLayer<Launcher> implements LauncherOverlayCallbacks {
 
     public static final int ALPHA_INDEX_OVERLAY = 0;
     private static final int ALPHA_CHANNEL_COUNT = 1;
@@ -70,6 +72,8 @@
     public static final int ANIMATION_END_DISAPPEAR = 0;
     public static final int ANIMATION_END_REMAIN_VISIBLE = 2;
 
+    private final boolean mIsRtl;
+
     private DragController mDragController;
 
     // Variables relating to animation of views after drop
@@ -100,6 +104,7 @@
         setChildrenDrawingOrderEnabled(true);
 
         mFocusIndicatorHelper = new ViewGroupFocusHelper(this);
+        mIsRtl = Utilities.isRtl(getResources());
     }
 
     /**
@@ -109,6 +114,7 @@
         mDragController = dragController;
         recreateControllers();
         mWorkspaceDragScrim = new Scrim(this);
+        workspace.addOverlayCallback(this);
     }
 
     @Override
@@ -237,7 +243,7 @@
             View anchorView) {
 
         ShortcutAndWidgetContainer parentChildren = (ShortcutAndWidgetContainer) child.getParent();
-        CellLayout.LayoutParams lp =  (CellLayout.LayoutParams) child.getLayoutParams();
+        CellLayoutLayoutParams lp =  (CellLayoutLayoutParams) child.getLayoutParams();
         parentChildren.measureChild(child);
         parentChildren.layoutChild(child);
 
@@ -467,13 +473,15 @@
         return mWorkspaceDragScrim;
     }
 
-    /**
-     * Called when one handed mode state changed.
-     * @param activated true if one handed mode activated, false otherwise.
-     */
-    public void onOneHandedModeStateChanged(boolean activated) {
-        for (TouchController controller : mControllers) {
-            controller.onOneHandedModeStateChanged(activated);
+    @Override
+    public void onOverlayScrollChanged(float progress) {
+        float alpha = 1 - Interpolators.DEACCEL_3.getInterpolation(progress);
+        float transX = getMeasuredWidth() * progress;
+
+        if (mIsRtl) {
+            transX = -transX;
         }
+        setTranslationX(transX);
+        getAlphaProperty(ALPHA_INDEX_OVERLAY).setValue(alpha);
     }
 }
diff --git a/src/com/android/launcher3/dragndrop/DragOptions.java b/src/com/android/launcher3/dragndrop/DragOptions.java
index e8ff8da..2af81db 100644
--- a/src/com/android/launcher3/dragndrop/DragOptions.java
+++ b/src/com/android/launcher3/dragndrop/DragOptions.java
@@ -40,6 +40,12 @@
     /** Determines when a pre-drag should transition to a drag. By default, this is immediate. */
     public PreDragCondition preDragCondition = null;
 
+    /**
+     * A drag scale that scales the original drag view size when the preDragCondition is met (or
+     * is ignored if preDragEndScale is 0).
+     */
+    public float preDragEndScale;
+
     /** Scale of the icons over the workspace icon size. */
     public float intrinsicIconScaleFactor = 1f;
 
@@ -72,5 +78,12 @@
          *                    This will be true if the condition was met, otherwise false.
          */
         void onPreDragEnd(DropTarget.DragObject dragObject, boolean dragStarted);
+
+        /**
+         * The offset points that should be overridden to update the dragLayer.
+         */
+        default Point getDragOffset() {
+            return new Point(0,0);
+        }
     }
 }
diff --git a/src/com/android/launcher3/dragndrop/DragView.java b/src/com/android/launcher3/dragndrop/DragView.java
index 0264ae2..0d0717e 100644
--- a/src/com/android/launcher3/dragndrop/DragView.java
+++ b/src/com/android/launcher3/dragndrop/DragView.java
@@ -37,7 +37,6 @@
 import android.graphics.ColorFilter;
 import android.graphics.Path;
 import android.graphics.Picture;
-import android.graphics.Point;
 import android.graphics.Rect;
 import android.graphics.drawable.AdaptiveIconDrawable;
 import android.graphics.drawable.ColorDrawable;
@@ -56,7 +55,6 @@
 import androidx.dynamicanimation.animation.SpringAnimation;
 import androidx.dynamicanimation.animation.SpringForce;
 
-import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.anim.Interpolators;
@@ -84,20 +82,23 @@
     protected final int mRegistrationX;
     protected final int mRegistrationY;
     private final float mInitialScale;
+    private final float mEndScale;
     protected final float mScaleOnDrop;
     protected final int[] mTempLoc = new int[2];
 
     private final RunnableList mOnDragStartCallback = new RunnableList();
 
-    private Point mDragVisualizeOffset = null;
+    private boolean mHasDragOffset;
     private Rect mDragRegion = null;
     protected final T mActivity;
     private final BaseDragLayer<T> mDragLayer;
     private boolean mHasDrawn = false;
 
-    final ValueAnimator mAnim;
+    final ValueAnimator mScaleAnim;
+    final ValueAnimator mShiftAnim;
+
     // Whether mAnim has started. Unlike mAnim.isStarted(), this is true even after mAnim ends.
-    private boolean mAnimStarted;
+    private boolean mScaleAnimStarted;
     private Runnable mOnAnimEndCallback = null;
 
     private int mLastTouchX;
@@ -159,27 +160,27 @@
             setClipToPadding(false);
         }
 
-        final float scale = (width + finalScaleDps) / width;
+        mEndScale = (width + finalScaleDps) / width;
 
         // Set the initial scale to avoid any jumps
         setScaleX(initialScale);
         setScaleY(initialScale);
 
         // Animate the view into the correct position
-        mAnim = ValueAnimator.ofFloat(0f, 1f);
-        mAnim.setDuration(VIEW_ZOOM_DURATION);
-        mAnim.addUpdateListener(animation -> {
+        mScaleAnim = ValueAnimator.ofFloat(0f, 1f);
+        mScaleAnim.setDuration(VIEW_ZOOM_DURATION);
+        mScaleAnim.addUpdateListener(animation -> {
             final float value = (Float) animation.getAnimatedValue();
-            setScaleX(initialScale + (value * (scale - initialScale)));
-            setScaleY(initialScale + (value * (scale - initialScale)));
+            setScaleX(Utilities.mapRange(value, initialScale, mEndScale));
+            setScaleY(Utilities.mapRange(value, initialScale, mEndScale));
             if (!isAttachedToWindow()) {
                 animation.cancel();
             }
         });
-        mAnim.addListener(new AnimatorListenerAdapter() {
+        mScaleAnim.addListener(new AnimatorListenerAdapter() {
             @Override
             public void onAnimationStart(Animator animation) {
-                mAnimStarted = true;
+                mScaleAnimStarted = true;
             }
 
             @Override
@@ -190,6 +191,8 @@
                 }
             }
         });
+        // Set up the shift animator.
+        mShiftAnim = ValueAnimator.ofFloat(0f, 1f);
 
         setDragRegion(new Rect(0, 0, width, height));
 
@@ -218,12 +221,6 @@
      */
     @TargetApi(Build.VERSION_CODES.O)
     public void setItemInfo(final ItemInfo info) {
-        if (info.itemType != LauncherSettings.Favorites.ITEM_TYPE_APPLICATION
-                && info.itemType != LauncherSettings.Favorites.ITEM_TYPE_SEARCH_ACTION
-                && info.itemType != LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT
-                && info.itemType != LauncherSettings.Favorites.ITEM_TYPE_FOLDER) {
-            return;
-        }
         // Load the adaptive icon on a background thread and add the view in ui thread.
         MODEL_EXECUTOR.getHandler().postAtFrontOfQueue(() -> {
             Object[] outObj = new Object[1];
@@ -325,12 +322,12 @@
         return mDragRegion.height();
     }
 
-    public void setDragVisualizeOffset(Point p) {
-        mDragVisualizeOffset = p;
+    public void setHasDragOffset(boolean hasDragOffset) {
+        mHasDragOffset = hasDragOffset;
     }
 
-    public Point getDragVisualizeOffset() {
-        return mDragVisualizeOffset;
+    public boolean getHasDragOffset() {
+        return mHasDragOffset;
     }
 
     public void setDragRegion(Rect r) {
@@ -363,7 +360,10 @@
             // If the content is already removed, ignore
             return;
         }
-        View newContent = getViewFromDrawable(getContext(), crossFadeDrawable);
+        ImageView newContent = getViewFromDrawable(getContext(), crossFadeDrawable);
+        // We need to fill the ImageView with the content, otherwise the shapes of the final view
+        // and the drag view might not match exactly
+        newContent.setScaleType(ImageView.ScaleType.FIT_XY);
         newContent.measure(makeMeasureSpec(mWidth, EXACTLY), makeMeasureSpec(mHeight, EXACTLY));
         newContent.layout(0, 0, mWidth, mHeight);
         addViewInLayout(newContent, 0, new LayoutParams(mWidth, mHeight));
@@ -395,22 +395,29 @@
 
         if (mContent != null) {
             // At the drag start, the source view visibility is set to invisible.
-            mContent.setVisibility(VISIBLE);
+            if (getHasDragOffset()) {
+                // If there is any dragOffset, this means the content will show away of the original
+                // icon location, otherwise it's fine since original content would just show at the
+                // same spot.
+                mContent.setVisibility(INVISIBLE);
+            } else {
+                mContent.setVisibility(VISIBLE);
+            }
         }
 
         move(touchX, touchY);
         // Post the animation to skip other expensive work happening on the first frame
-        post(mAnim::start);
+        post(mScaleAnim::start);
     }
 
     public void cancelAnimation() {
-        if (mAnim != null && mAnim.isRunning()) {
-            mAnim.cancel();
+        if (mScaleAnim != null && mScaleAnim.isRunning()) {
+            mScaleAnim.cancel();
         }
     }
 
-    public boolean isAnimationFinished() {
-        return mAnimStarted && !mAnim.isRunning();
+    public boolean isScaleAnimationFinished() {
+        return mScaleAnimStarted && !mScaleAnim.isRunning();
     }
 
     /**
@@ -437,13 +444,15 @@
             int duration);
 
     public void animateShift(final int shiftX, final int shiftY) {
-        if (mAnim.isStarted()) {
-            return;
-        }
+        if (mShiftAnim.isStarted()) return;
+
+        // Set mContent visibility to visible to show icon regardless in case it is INVISIBLE.
+        if (mContent != null) mContent.setVisibility(VISIBLE);
+
         mAnimatedShiftX = shiftX;
         mAnimatedShiftY = shiftY;
         applyTranslation();
-        mAnim.addUpdateListener(new AnimatorUpdateListener() {
+        mShiftAnim.addUpdateListener(new AnimatorUpdateListener() {
             @Override
             public void onAnimationUpdate(ValueAnimator animation) {
                 float fraction = 1 - animation.getAnimatedFraction();
@@ -452,6 +461,7 @@
                 applyTranslation();
             }
         });
+        mShiftAnim.start();
     }
 
     private void applyTranslation() {
@@ -512,6 +522,10 @@
         return mInitialScale;
     }
 
+    public float getEndScale() {
+        return mEndScale;
+    }
+
     @Override
     public boolean hasOverlappingRendering() {
         return false;
@@ -565,7 +579,8 @@
                     .setSpring(new SpringForce(0)
                             .setDampingRatio(DAMPENING_RATIO)
                             .setStiffness(STIFFNESS));
-            mDelta = view.getResources().getDisplayMetrics().density * PARALLAX_MAX_IN_DP;
+            mDelta = Math.min(
+                    range, view.getResources().getDisplayMetrics().density * PARALLAX_MAX_IN_DP);
         }
 
         public void animateToPos(float value) {
@@ -573,7 +588,7 @@
         }
     }
 
-    private static View getViewFromDrawable(Context context, Drawable drawable) {
+    private static ImageView getViewFromDrawable(Context context, Drawable drawable) {
         ImageView iv = new ImageView(context);
         iv.setImageDrawable(drawable);
         return iv;
diff --git a/src/com/android/launcher3/dragndrop/LauncherDragController.java b/src/com/android/launcher3/dragndrop/LauncherDragController.java
index dcbfa50..da6f446 100644
--- a/src/com/android/launcher3/dragndrop/LauncherDragController.java
+++ b/src/com/android/launcher3/dragndrop/LauncherDragController.java
@@ -17,14 +17,13 @@
 
 import static com.android.launcher3.AbstractFloatingView.TYPE_DISCOVERY_BOUNCE;
 import static com.android.launcher3.LauncherAnimUtils.SPRING_LOADED_EXIT_DELAY;
+import static com.android.launcher3.LauncherState.EDIT_MODE;
 import static com.android.launcher3.LauncherState.NORMAL;
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
 
 import android.content.res.Resources;
-import android.graphics.Point;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
-import android.util.Log;
 import android.view.HapticFeedbackConstants;
 import android.view.View;
 
@@ -37,7 +36,6 @@
 import com.android.launcher3.R;
 import com.android.launcher3.accessibility.DragViewStateAnnouncer;
 import com.android.launcher3.model.data.ItemInfo;
-import com.android.launcher3.testing.TestProtocol;
 
 /**
  * Drag controller for Launcher activity
@@ -62,14 +60,10 @@
             int dragLayerY,
             DragSource source,
             ItemInfo dragInfo,
-            Point dragOffset,
             Rect dragRegion,
             float initialDragViewScale,
             float dragViewScaleOnDrop,
             DragOptions options) {
-        if (TestProtocol.sDebugTracing) {
-            Log.d(TestProtocol.NO_DROP_TARGET, "5");
-        }
         if (PROFILE_DRAWING_DURING_DRAG) {
             android.os.Debug.startMethodTracing("Launcher");
         }
@@ -134,9 +128,11 @@
         mDragObject.dragInfo = dragInfo;
         mDragObject.originalDragInfo = mDragObject.dragInfo.makeShallowCopy();
 
-        if (dragOffset != null) {
-            dragView.setDragVisualizeOffset(new Point(dragOffset));
+        if (mOptions.preDragCondition != null) {
+            dragView.setHasDragOffset(mOptions.preDragCondition.getDragOffset().x != 0 ||
+                    mOptions.preDragCondition.getDragOffset().y != 0);
         }
+
         if (dragRegion != null) {
             dragView.setDragRegion(new Rect(dragRegion));
         }
@@ -162,7 +158,9 @@
 
     @Override
     protected void exitDrag() {
-        mActivity.getStateManager().goToState(NORMAL, SPRING_LOADED_EXIT_DELAY);
+        if (!mActivity.isInState(EDIT_MODE)) {
+            mActivity.getStateManager().goToState(NORMAL, SPRING_LOADED_EXIT_DELAY);
+        }
     }
 
     @Override
diff --git a/src/com/android/launcher3/dragndrop/LauncherDragView.java b/src/com/android/launcher3/dragndrop/LauncherDragView.java
index cc68e2e..4c43865 100644
--- a/src/com/android/launcher3/dragndrop/LauncherDragView.java
+++ b/src/com/android/launcher3/dragndrop/LauncherDragView.java
@@ -57,7 +57,8 @@
     @Override
     public void onStateTransitionComplete(LauncherState finalState) {
         setVisibility((finalState == LauncherState.NORMAL
-                || finalState == LauncherState.SPRING_LOADED) ? VISIBLE : INVISIBLE);
+                || finalState == LauncherState.SPRING_LOADED
+                || finalState == LauncherState.EDIT_MODE) ? VISIBLE : INVISIBLE);
     }
 
     @Override
diff --git a/src/com/android/launcher3/dragndrop/PinShortcutRequestActivityInfo.java b/src/com/android/launcher3/dragndrop/PinShortcutRequestActivityInfo.java
index f9916d0..7bdec1c 100644
--- a/src/com/android/launcher3/dragndrop/PinShortcutRequestActivityInfo.java
+++ b/src/com/android/launcher3/dragndrop/PinShortcutRequestActivityInfo.java
@@ -16,6 +16,11 @@
 
 package com.android.launcher3.dragndrop;
 
+import static com.android.launcher3.LauncherAnimUtils.SPRING_LOADED_EXIT_DELAY;
+import static com.android.launcher3.LauncherState.EDIT_MODE;
+import static com.android.launcher3.LauncherState.SPRING_LOADED;
+import static com.android.launcher3.config.FeatureFlags.MULTI_SELECT_EDIT_MODE;
+
 import android.annotation.TargetApi;
 import android.app.Activity;
 import android.content.ComponentName;
@@ -29,36 +34,40 @@
 import android.os.Process;
 
 import com.android.launcher3.Launcher;
-import com.android.launcher3.LauncherAnimUtils;
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.LauncherSettings;
-import com.android.launcher3.LauncherState;
 import com.android.launcher3.R;
 import com.android.launcher3.icons.IconCache;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
 import com.android.launcher3.pm.PinRequestHelper;
 import com.android.launcher3.pm.ShortcutConfigActivityInfo;
 
+import java.util.function.Supplier;
+
 /**
  * Extension of ShortcutConfigActivityInfo to be used in the confirmation prompt for pin item
  * request.
  */
 @TargetApi(Build.VERSION_CODES.O)
-class PinShortcutRequestActivityInfo extends ShortcutConfigActivityInfo {
+public class PinShortcutRequestActivityInfo extends ShortcutConfigActivityInfo {
 
     // Class name used in the target component, such that it will never represent an
     // actual existing class.
     private static final String STUB_COMPONENT_CLASS = "pinned-shortcut";
 
-    private final PinItemRequest mRequest;
+    private final Supplier<PinItemRequest> mRequestSupplier;
     private final ShortcutInfo mInfo;
     private final Context mContext;
 
     public PinShortcutRequestActivityInfo(PinItemRequest request, Context context) {
-        super(new ComponentName(request.getShortcutInfo().getPackage(), STUB_COMPONENT_CLASS),
-                request.getShortcutInfo().getUserHandle());
-        mRequest = request;
-        mInfo = request.getShortcutInfo();
+        this(request.getShortcutInfo(), () -> request, context);
+    }
+
+    public PinShortcutRequestActivityInfo(
+            ShortcutInfo si, Supplier<PinItemRequest> requestSupplier, Context context) {
+        super(new ComponentName(si.getPackage(), STUB_COMPONENT_CLASS), si.getUserHandle());
+        mRequestSupplier = requestSupplier;
+        mInfo = si;
         mContext = context;
     }
 
@@ -84,14 +93,14 @@
 
     @Override
     public WorkspaceItemInfo createWorkspaceItemInfo() {
+        long transitionDuration = (MULTI_SELECT_EDIT_MODE.get() ? EDIT_MODE : SPRING_LOADED)
+                .getTransitionDuration(Launcher.getLauncher(mContext), true /* isToState */);
         // Total duration for the drop animation to complete.
         long duration = mContext.getResources().getInteger(R.integer.config_dropAnimMaxDuration) +
-                LauncherAnimUtils.SPRING_LOADED_EXIT_DELAY +
-                LauncherState.SPRING_LOADED.getTransitionDuration(Launcher.getLauncher(mContext),
-                        true /* isToState */);
+                SPRING_LOADED_EXIT_DELAY + transitionDuration;
         // Delay the actual accept() call until the drop animation is complete.
         return PinRequestHelper.createWorkspaceItemFromPinItemRequest(
-                mContext, mRequest, duration);
+                mContext, mRequestSupplier.get(), duration);
     }
 
     @Override
diff --git a/src/com/android/launcher3/dragndrop/SpringLoadedDragController.java b/src/com/android/launcher3/dragndrop/SpringLoadedDragController.java
index fb8a1bc..fbe9e33 100644
--- a/src/com/android/launcher3/dragndrop/SpringLoadedDragController.java
+++ b/src/com/android/launcher3/dragndrop/SpringLoadedDragController.java
@@ -20,12 +20,14 @@
 import com.android.launcher3.CellLayout;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.OnAlarmListener;
+import com.android.launcher3.Utilities;
 import com.android.launcher3.Workspace;
 
 public class SpringLoadedDragController implements OnAlarmListener {
     // how long the user must hover over a mini-screen before it unshrinks
-    final long ENTER_SPRING_LOAD_HOVER_TIME = 500;
-    final long ENTER_SPRING_LOAD_CANCEL_HOVER_TIME = 950;
+    private static final long ENTER_SPRING_LOAD_HOVER_TIME = 500;
+    private static final long ENTER_SPRING_LOAD_HOVER_TIME_IN_TEST = 2000;
+    private static final long ENTER_SPRING_LOAD_CANCEL_HOVER_TIME = 950;
 
     Alarm mAlarm;
 
@@ -39,6 +41,13 @@
         mAlarm.setOnAlarmListener(this);
     }
 
+    private long getEnterSpringLoadHoverTime() {
+        // Some TAPL tests are flaky on Cuttlefish with a low waiting time
+        return Utilities.isRunningInTestHarness()
+                ? ENTER_SPRING_LOAD_HOVER_TIME_IN_TEST
+                : ENTER_SPRING_LOAD_HOVER_TIME;
+    }
+
     public void cancel() {
         mAlarm.cancelAlarm();
     }
@@ -46,8 +55,8 @@
     // Set a new alarm to expire for the screen that we are hovering over now
     public void setAlarm(CellLayout cl) {
         mAlarm.cancelAlarm();
-        mAlarm.setAlarm((cl == null) ? ENTER_SPRING_LOAD_CANCEL_HOVER_TIME :
-            ENTER_SPRING_LOAD_HOVER_TIME);
+        mAlarm.setAlarm((cl == null) ? ENTER_SPRING_LOAD_CANCEL_HOVER_TIME
+                : getEnterSpringLoadHoverTime());
         mScreen = cl;
     }
 
diff --git a/src/com/android/launcher3/folder/Folder.java b/src/com/android/launcher3/folder/Folder.java
index e68ebdb..4ae54e6 100644
--- a/src/com/android/launcher3/folder/Folder.java
+++ b/src/com/android/launcher3/folder/Folder.java
@@ -19,6 +19,7 @@
 import static android.text.TextUtils.isEmpty;
 
 import static com.android.launcher3.LauncherAnimUtils.SPRING_LOADED_EXIT_DELAY;
+import static com.android.launcher3.LauncherState.EDIT_MODE;
 import static com.android.launcher3.LauncherState.NORMAL;
 import static com.android.launcher3.compat.AccessibilityManagerCompat.sendCustomAccessibilityEvent;
 import static com.android.launcher3.config.FeatureFlags.ALWAYS_USE_HARDWARE_OPTIMIZATION_FOR_FOLDER_ANIMATIONS;
@@ -282,7 +283,6 @@
         mFolderName = findViewById(R.id.folder_name);
         mFolderName.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp.folderLabelTextSizePx);
         mFolderName.setOnBackKeyListener(this);
-        mFolderName.setOnFocusChangeListener(this);
         mFolderName.setOnEditorActionListener(this);
         mFolderName.setSelectAllOnFocus(true);
         mFolderName.setInputType(mFolderName.getInputType()
@@ -292,7 +292,7 @@
         mFolderName.forceDisableSuggestions(true);
 
         mFooter = findViewById(R.id.folder_footer);
-        mFooterHeight = getResources().getDimensionPixelSize(R.dimen.folder_label_height);
+        mFooterHeight = dp.folderFooterHeightPx;
 
         if (Utilities.ATLEAST_R) {
             mKeyboardInsetAnimationCallback = new KeyboardInsetAnimationCallback(this);
@@ -368,9 +368,7 @@
 
     public void startEditingFolderName() {
         post(() -> {
-            if (FeatureFlags.FOLDER_NAME_SUGGEST.get()) {
-                showLabelSuggestions();
-            }
+            showLabelSuggestions();
             mFolderName.setHint("");
             mIsEditingName = true;
         });
@@ -459,6 +457,13 @@
         // the folder itself.
         requestFocus();
         super.onAttachedToWindow();
+        mFolderName.addOnFocusChangeListener(this);
+    }
+
+    @Override
+    protected void onDetachedFromWindow() {
+        super.onDetachedFromWindow();
+        mFolderName.removeOnFocusChangeListener(this);
     }
 
     @Override
@@ -554,7 +559,7 @@
                 .inflate(R.layout.user_folder_icon_normalized, null);
     }
 
-    private void startAnimation(final AnimatorSet a) {
+    private void addAnimationStartListeners(AnimatorSet a) {
         mLauncherDelegate.forEachVisibleWorkspacePage(
                 visiblePage -> addAnimatorListenerForPage(a, (CellLayout) visiblePage));
 
@@ -570,7 +575,6 @@
                 mCurrentAnimator = null;
             }
         });
-        a.start();
     }
 
     private void addAnimatorListenerForPage(AnimatorSet a, CellLayout currentCellLayout) {
@@ -729,10 +733,15 @@
         }
 
         mPageIndicator.stopAllAnimations();
-        startAnimation(anim);
+
+        // b/282158620 because setCurrentPlayTime() below will start animator, we need to register
+        // {@link AnimatorListener} before it so that {@link AnimatorListener#onAnimationStart} can
+        // be called to register mCurrentAnimator, which will be used to cancel animator
+        addAnimationStartListeners(anim);
         // Because t=0 has the folder match the folder icon, we can skip the
         // first frame and have the same movement one frame earlier.
         anim.setCurrentPlayTime(Math.min(getSingleFrameMs(getContext()), anim.getTotalDuration()));
+        anim.start();
 
         // Make sure the folder picks up the last drag move even if the finger doesn't move.
         if (mDragController.isDragging()) {
@@ -810,7 +819,8 @@
                 mIsAnimatingClosed = false;
             }
         });
-        startAnimation(a);
+        addAnimationStartListeners(a);
+        a.start();
     }
 
     @Override
@@ -1080,8 +1090,7 @@
         if (!items.isEmpty()) {
             mLauncherDelegate.getModelWriter().moveItemsInDatabase(items, mInfo.id, 0);
         }
-        if (FeatureFlags.FOLDER_NAME_SUGGEST.get() && !isBind
-                && total > 1 /* no need to update if there's one icon */) {
+        if (!isBind && total > 1 /* no need to update if there's one icon */) {
             Executors.MODEL_EXECUTOR.post(() -> {
                 FolderNameInfos nameInfos = new FolderNameInfos();
                 FolderNameProvider fnp = FolderNameProvider.newInstance(getContext());
@@ -1170,14 +1179,6 @@
         mContent.setFixedSize(contentWidth, contentHeight);
         mContent.measure(contentAreaWidthSpec, contentAreaHeightSpec);
 
-        if (mContent.getChildCount() > 0) {
-            int cellIconGap = (mContent.getPageAt(0).getCellWidth()
-                    - mActivityContext.getDeviceProfile().iconSizePx) / 2;
-            mFooter.setPadding(mContent.getPaddingLeft() + cellIconGap,
-                    mFooter.getPaddingTop(),
-                    mContent.getPaddingRight() + cellIconGap,
-                    mFooter.getPaddingBottom());
-        }
         mFooter.measure(contentAreaWidthSpec,
                 MeasureSpec.makeMeasureSpec(mFooterHeight, MeasureSpec.EXACTLY));
 
@@ -1268,7 +1269,7 @@
         PendingAddShortcutInfo pasi = d.dragInfo instanceof PendingAddShortcutInfo
                 ? (PendingAddShortcutInfo) d.dragInfo : null;
         WorkspaceItemInfo pasiSi =
-                pasi != null ? pasi.activityInfo.createWorkspaceItemInfo() : null;
+                pasi != null ? pasi.getActivityInfo(launcher).createWorkspaceItemInfo() : null;
         if (pasi != null && pasiSi == null) {
             // There is no WorkspaceItemInfo, so we have to go through a configuration activity.
             pasi.container = mInfo.id;
@@ -1343,7 +1344,10 @@
                     mLauncherDelegate.getModelWriter());
         }
 
-        launcher.getStateManager().goToState(NORMAL, SPRING_LOADED_EXIT_DELAY);
+        if (!launcher.isInState(EDIT_MODE)) {
+            launcher.getStateManager().goToState(NORMAL, SPRING_LOADED_EXIT_DELAY);
+        }
+
         if (d.stateAnnouncer != null) {
             d.stateAnnouncer.completeAction(R.string.item_moved);
         }
@@ -1584,17 +1588,14 @@
         return getOpenView(activityContext, TYPE_FOLDER);
     }
 
-    /**
-     * Navigation bar back key or hardware input back key has been issued.
-     */
+    /** Navigation bar back key or hardware input back key has been issued. */
     @Override
-    public boolean onBackPressed() {
+    public void onBackInvoked() {
         if (isEditingName()) {
             mFolderName.dispatchBackKey();
         } else {
-            super.onBackPressed();
+            super.onBackInvoked();
         }
-        return true;
     }
 
     @Override
diff --git a/src/com/android/launcher3/folder/FolderAnimationManager.java b/src/com/android/launcher3/folder/FolderAnimationManager.java
index 61ffd9d..dd82ecf 100644
--- a/src/com/android/launcher3/folder/FolderAnimationManager.java
+++ b/src/com/android/launcher3/folder/FolderAnimationManager.java
@@ -43,6 +43,7 @@
 import com.android.launcher3.ShortcutAndWidgetContainer;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.anim.PropertyResetListener;
+import com.android.launcher3.celllayout.CellLayoutLayoutParams;
 import com.android.launcher3.util.Themes;
 import com.android.launcher3.views.BaseDragLayer;
 
@@ -167,9 +168,11 @@
         final int paddingOffsetY = (int) (mContent.getPaddingTop() * initialScale);
 
         int initialX = folderIconPos.left + mFolder.getPaddingLeft()
-                + mPreviewBackground.getOffsetX() - paddingOffsetX - previewItemOffsetX;
+                + Math.round(mPreviewBackground.getOffsetX() * scaleRelativeToDragLayer)
+                - paddingOffsetX - previewItemOffsetX;
         int initialY = folderIconPos.top + mFolder.getPaddingTop()
-                + mPreviewBackground.getOffsetY() - paddingOffsetY;
+                + Math.round(mPreviewBackground.getOffsetY() * scaleRelativeToDragLayer)
+                - paddingOffsetY;
         final float xDistance = initialX - lp.x;
         final float yDistance = initialY - lp.y;
 
@@ -215,6 +218,7 @@
         final int footerStartDelay;
         if (isLargeFolder()) {
             if (mIsOpening) {
+                mFolder.mFooter.setAlpha(0);
                 footerAlphaDuration = LARGE_FOLDER_FOOTER_DURATION;
                 footerStartDelay = mDuration - footerAlphaDuration;
             } else {
@@ -232,9 +236,9 @@
                 mFolder, startRect, endRect, finalRadius, !mIsOpening));
 
         // Create reveal animator for the folder content (capture the top 4 icons 2x2)
-        int width = mDeviceProfile.folderCellLayoutBorderSpacePx.x
+        int width = mDeviceProfile.folderCellLayoutBorderSpacePx
                 + mDeviceProfile.folderCellWidthPx * 2;
-        int height = mDeviceProfile.folderCellLayoutBorderSpacePx.y
+        int height = mDeviceProfile.folderCellLayoutBorderSpacePx
                 + mDeviceProfile.folderCellHeightPx * 2;
         int page = mIsOpening ? mContent.getCurrentPage() : mContent.getDestinationPage();
         int left = mContent.getPaddingLeft() + page * lp.width;
@@ -261,23 +265,41 @@
         Animator z = getAnimator(mFolder, View.TRANSLATION_Z, -mFolder.getElevation(), 0);
         play(a, z, mIsOpening ? midDuration : 0, midDuration);
 
-        // Store clip variables
-        CellLayout cellLayout = mContent.getCurrentCellLayout();
-        boolean folderClipChildren = mFolder.getClipChildren();
-        boolean folderClipToPadding = mFolder.getClipToPadding();
-        boolean contentClipChildren = mContent.getClipChildren();
-        boolean contentClipToPadding = mContent.getClipToPadding();
-        boolean cellLayoutClipChildren = cellLayout.getClipChildren();
-        boolean cellLayoutClipPadding = cellLayout.getClipToPadding();
-
-        mFolder.setClipChildren(false);
-        mFolder.setClipToPadding(false);
-        mContent.setClipChildren(false);
-        mContent.setClipToPadding(false);
-        cellLayout.setClipChildren(false);
-        cellLayout.setClipToPadding(false);
-
+        // Store clip variables.
+        // Because {@link #onAnimationStart} and {@link #onAnimationEnd} callbacks are sent to
+        // message queue and executed on separate frame, we should save states in
+        // {@link #onAnimationStart} instead of before creating animator, so that cancelling
+        // animation A and restarting animation B allows A to reset states in
+        // {@link #onAnimationEnd} before B reads new UI state from {@link #onAnimationStart}.
         a.addListener(new AnimatorListenerAdapter() {
+            private CellLayout mCellLayout;
+
+            private boolean mFolderClipChildren;
+            private boolean mFolderClipToPadding;
+            private boolean mContentClipChildren;
+            private boolean mContentClipToPadding;
+            private boolean mCellLayoutClipChildren;
+            private boolean mCellLayoutClipPadding;
+
+            @Override
+            public void onAnimationStart(Animator animator) {
+                super.onAnimationStart(animator);
+                mCellLayout = mContent.getCurrentCellLayout();
+                mFolderClipChildren = mFolder.getClipChildren();
+                mFolderClipToPadding = mFolder.getClipToPadding();
+                mContentClipChildren = mContent.getClipChildren();
+                mContentClipToPadding = mContent.getClipToPadding();
+                mCellLayoutClipChildren = mCellLayout.getClipChildren();
+                mCellLayoutClipPadding = mCellLayout.getClipToPadding();
+
+                mFolder.setClipChildren(false);
+                mFolder.setClipToPadding(false);
+                mContent.setClipChildren(false);
+                mContent.setClipToPadding(false);
+                mCellLayout.setClipChildren(false);
+                mCellLayout.setClipToPadding(false);
+            }
+
             @Override
             public void onAnimationEnd(Animator animation) {
                 super.onAnimationEnd(animation);
@@ -291,13 +313,12 @@
                 mFolder.mFooter.setTranslationX(0f);
                 mFolder.mFolderName.setAlpha(1f);
 
-                mFolder.setClipChildren(folderClipChildren);
-                mFolder.setClipToPadding(folderClipToPadding);
-                mContent.setClipChildren(contentClipChildren);
-                mContent.setClipToPadding(contentClipToPadding);
-                cellLayout.setClipChildren(cellLayoutClipChildren);
-                cellLayout.setClipToPadding(cellLayoutClipPadding);
-
+                mFolder.setClipChildren(mFolderClipChildren);
+                mFolder.setClipToPadding(mFolderClipToPadding);
+                mContent.setClipChildren(mContentClipChildren);
+                mContent.setClipToPadding(mContentClipToPadding);
+                mCellLayout.setClipChildren(mCellLayoutClipChildren);
+                mCellLayout.setClipToPadding(mCellLayoutClipPadding);
             }
         });
 
@@ -311,7 +332,7 @@
         addPreviewItemAnimators(a, initialScale / scaleRelativeToDragLayer,
                 // Background can have a scaled radius in drag and drop mode, so we need to add the
                 // difference to keep the preview items centered.
-                previewItemOffsetX + radiusDiff, radiusDiff);
+                (int) (previewItemOffsetX / scaleRelativeToDragLayer) + radiusDiff, radiusDiff);
         return a;
     }
 
@@ -341,7 +362,7 @@
         ShortcutAndWidgetContainer cwc = mContent.getPageAt(0).getShortcutsAndWidgets();
         for (int i = 0; i < numItemsInPreview; ++i) {
             final BubbleTextView btv = itemsInPreview.get(i);
-            CellLayout.LayoutParams btvLp = (CellLayout.LayoutParams) btv.getLayoutParams();
+            CellLayoutLayoutParams btvLp = (CellLayoutLayoutParams) btv.getLayoutParams();
 
             // Calculate the final values in the LayoutParams.
             btvLp.isLockedToGrid = true;
diff --git a/src/com/android/launcher3/folder/FolderIcon.java b/src/com/android/launcher3/folder/FolderIcon.java
index b1e2701..2c1100f 100644
--- a/src/com/android/launcher3/folder/FolderIcon.java
+++ b/src/com/android/launcher3/folder/FolderIcon.java
@@ -28,7 +28,6 @@
 import android.animation.ObjectAnimator;
 import android.content.Context;
 import android.graphics.Canvas;
-import android.graphics.PointF;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
@@ -41,6 +40,7 @@
 import android.widget.FrameLayout;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 
 import com.android.launcher3.Alarm;
 import com.android.launcher3.BubbleTextView;
@@ -57,7 +57,7 @@
 import com.android.launcher3.Workspace;
 import com.android.launcher3.allapps.ActivityAllAppsContainerView;
 import com.android.launcher3.anim.Interpolators;
-import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.celllayout.CellLayoutLayoutParams;
 import com.android.launcher3.dot.FolderDotInfo;
 import com.android.launcher3.dragndrop.BaseItemDragListener;
 import com.android.launcher3.dragndrop.DragLayer;
@@ -74,8 +74,8 @@
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.WorkspaceItemFactory;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
-import com.android.launcher3.touch.ItemClickHandler;
 import com.android.launcher3.util.Executors;
+import com.android.launcher3.util.MultiTranslateDelegate;
 import com.android.launcher3.util.Thunk;
 import com.android.launcher3.views.ActivityContext;
 import com.android.launcher3.views.IconLabelDotView;
@@ -92,6 +92,7 @@
 public class FolderIcon extends FrameLayout implements FolderListener, IconLabelDotView,
         DraggableView, Reorderable {
 
+    private final MultiTranslateDelegate mTranslateDelegate = new MultiTranslateDelegate(this);
     @Thunk ActivityContext mActivity;
     @Thunk Folder mFolder;
     public FolderInfo mInfo;
@@ -132,11 +133,6 @@
 
     private Rect mTouchArea = new Rect();
 
-    private final PointF mTranslationForMoveFromCenterAnimation = new PointF(0, 0);
-    private float mTranslationXForTaskbarAlignmentAnimation = 0f;
-
-    private final PointF mTranslationForReorderBounce = new PointF(0, 0);
-    private final PointF mTranslationForReorderPreview = new PointF(0, 0);
     private float mScaleForReorderBounce = 1f;
 
     private static final Property<FolderIcon, Float> DOT_SCALE_PROPERTY
@@ -181,8 +177,11 @@
         return icon;
     }
 
-    public static FolderIcon inflateIcon(int resId, ActivityContext activity, ViewGroup group,
-            FolderInfo folderInfo) {
+    /**
+     * Builds a FolderIcon to be added to the Launcher
+     */
+    public static FolderIcon inflateIcon(int resId, ActivityContext activity,
+            @Nullable ViewGroup group, FolderInfo folderInfo) {
         @SuppressWarnings("all") // suppress dead code warning
         final boolean error = INITIAL_ITEM_ANIMATION_DURATION >= DROP_IN_ANIMATION_DURATION;
         if (error) {
@@ -192,8 +191,10 @@
         }
 
         DeviceProfile grid = activity.getDeviceProfile();
-        FolderIcon icon = (FolderIcon) LayoutInflater.from(group.getContext())
-                .inflate(resId, group, false);
+        LayoutInflater inflater = (group != null)
+                ? LayoutInflater.from(group.getContext())
+                : activity.getLayoutInflater();
+        FolderIcon icon = (FolderIcon) inflater.inflate(resId, group, false);
 
         icon.setClipToPadding(false);
         icon.mFolderName = icon.findViewById(R.id.folder_icon_name);
@@ -203,7 +204,7 @@
         lp.topMargin = grid.iconSizePx + grid.iconDrawablePaddingPx;
 
         icon.setTag(folderInfo);
-        icon.setOnClickListener(ItemClickHandler.INSTANCE);
+        icon.setOnClickListener(activity.getItemOnClickListener());
         icon.mInfo = folderInfo;
         icon.mActivity = activity;
         icon.mDotRenderer = grid.mDotRendererWorkSpace;
@@ -278,10 +279,10 @@
 
     public void onDragEnter(ItemInfo dragInfo) {
         if (mFolder.isDestroyed() || !willAcceptItem(dragInfo)) return;
-        CellLayout.LayoutParams lp = (CellLayout.LayoutParams) getLayoutParams();
+        CellLayoutLayoutParams lp = (CellLayoutLayoutParams) getLayoutParams();
         CellLayout cl = (CellLayout) getParent().getParent();
 
-        mBackground.animateToAccept(cl, lp.cellX, lp.cellY);
+        mBackground.animateToAccept(cl, lp.getCellX(), lp.getCellY());
         mOpenAlarm.setOnAlarmListener(mOnOpenListener);
         if (SPRING_LOADING_ENABLED &&
                 ((dragInfo instanceof WorkspaceItemFactory)
@@ -410,7 +411,7 @@
                     () -> {
                         mPreviewItemManager.hidePreviewItem(finalIndex, false);
                         mFolder.showItem(item);
-                    }, 
+                    },
                     DragLayer.ANIMATION_END_DISAPPEAR, null);
 
             mFolder.hideItem(item);
@@ -418,35 +419,23 @@
             if (!itemAdded) mPreviewItemManager.hidePreviewItem(index, true);
 
             FolderNameInfos nameInfos = new FolderNameInfos();
-            if (FeatureFlags.FOLDER_NAME_SUGGEST.get()) {
-                Executors.MODEL_EXECUTOR.post(() -> {
-                    d.folderNameProvider.getSuggestedFolderName(
-                            getContext(), mInfo.contents, nameInfos);
-                    showFinalView(finalIndex, item, nameInfos, d.logInstanceId);
-                });
-            } else {
-                showFinalView(finalIndex, item, nameInfos, d.logInstanceId);
-            }
+            Executors.MODEL_EXECUTOR.post(() -> {
+                d.folderNameProvider.getSuggestedFolderName(
+                        getContext(), mInfo.contents, nameInfos);
+                postDelayed(() -> {
+                    setLabelSuggestion(nameInfos, d.logInstanceId);
+                    invalidate();
+                }, DROP_IN_ANIMATION_DURATION);
+            });
         } else {
             addItem(item);
         }
     }
 
-    private void showFinalView(int finalIndex, final WorkspaceItemInfo item,
-            FolderNameInfos nameInfos, InstanceId instanceId) {
-        postDelayed(() -> {
-            setLabelSuggestion(nameInfos, instanceId);
-            invalidate();
-        }, DROP_IN_ANIMATION_DURATION);
-    }
-
     /**
      * Set the suggested folder name.
      */
     public void setLabelSuggestion(FolderNameInfos nameInfos, InstanceId instanceId) {
-        if (!FeatureFlags.FOLDER_NAME_SUGGEST.get()) {
-            return;
-        }
         if (!mInfo.getLabelState().equals(LabelState.UNLABELED)) {
             return;
         }
@@ -628,11 +617,14 @@
     public void drawDot(Canvas canvas) {
         if (!mForceHideDot && ((mDotInfo != null && mDotInfo.hasDot()) || mDotScale > 0)) {
             Rect iconBounds = mDotParams.iconBounds;
+            // FolderIcon draws the icon to be top-aligned (with padding) & horizontally-centered
+            int iconSize = mActivity.getDeviceProfile().iconSizePx;
+            iconBounds.left = (getWidth() - iconSize) / 2;
+            iconBounds.right = iconBounds.left + iconSize;
+            iconBounds.top = getPaddingTop();
+            iconBounds.bottom = iconBounds.top + iconSize;
 
-            Utilities.setRectToViewCenter(this, mActivity.getDeviceProfile().iconSizePx,
-                    iconBounds);
-            iconBounds.offsetTo(iconBounds.left, getPaddingTop());
-            float iconScale = (float) mBackground.previewSize / iconBounds.width();
+            float iconScale = (float) mBackground.previewSize / iconSize;
             Utilities.scaleRectAboutCenter(iconBounds, iconScale);
 
             // If we are animating to the accepting state, animate the dot out.
@@ -770,71 +762,23 @@
         mPreviewItemManager.onFolderClose(currentPage);
     }
 
-    private void updateTranslation() {
-        super.setTranslationX(mTranslationForReorderBounce.x + mTranslationForReorderPreview.x
-                + mTranslationForMoveFromCenterAnimation.x
-                + mTranslationXForTaskbarAlignmentAnimation);
-        super.setTranslationY(mTranslationForReorderBounce.y + mTranslationForReorderPreview.y
-                + mTranslationForMoveFromCenterAnimation.y);
-    }
-
-    public void setReorderBounceOffset(float x, float y) {
-        mTranslationForReorderBounce.set(x, y);
-        updateTranslation();
-    }
-
-    public void getReorderBounceOffset(PointF offset) {
-        offset.set(mTranslationForReorderBounce);
-    }
-
-    /**
-     * Sets translationX value for taskbar to launcher alignment animation
-     */
-    public void setTranslationForTaskbarAlignmentAnimation(float translationX) {
-        mTranslationXForTaskbarAlignmentAnimation = translationX;
-        updateTranslation();
-    }
-
-    /**
-     * Returns translation values for taskbar to launcher alignment animation
-     */
-    public float getTranslationXForTaskbarAlignmentAnimation() {
-        return mTranslationXForTaskbarAlignmentAnimation;
-    }
-
-    /**
-     * Sets translation values for move from center animation
-     */
-    public void setTranslationForMoveFromCenterAnimation(float x, float y) {
-        mTranslationForMoveFromCenterAnimation.set(x, y);
-        updateTranslation();
+    @Override
+    public MultiTranslateDelegate getTranslateDelegate() {
+        return mTranslateDelegate;
     }
 
     @Override
-    public void setReorderPreviewOffset(float x, float y) {
-        mTranslationForReorderPreview.set(x, y);
-        updateTranslation();
-    }
-
-    @Override
-    public void getReorderPreviewOffset(PointF offset) {
-        offset.set(mTranslationForReorderPreview);
-    }
-
     public void setReorderBounceScale(float scale) {
         mScaleForReorderBounce = scale;
         super.setScaleX(scale);
         super.setScaleY(scale);
     }
 
+    @Override
     public float getReorderBounceScale() {
         return mScaleForReorderBounce;
     }
 
-    public View getView() {
-        return this;
-    }
-
     @Override
     public int getViewType() {
         return DRAGGABLE_ICON;
diff --git a/src/com/android/launcher3/folder/FolderNameProvider.java b/src/com/android/launcher3/folder/FolderNameProvider.java
index 5021644..bf59594 100644
--- a/src/com/android/launcher3/folder/FolderNameProvider.java
+++ b/src/com/android/launcher3/folder/FolderNameProvider.java
@@ -24,6 +24,7 @@
 import android.text.TextUtils;
 import android.util.Log;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.WorkerThread;
 
 import com.android.launcher3.LauncherAppState;
@@ -192,7 +193,8 @@
 
     private class FolderNameWorker extends BaseModelUpdateTask {
         @Override
-        public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) {
+        public void execute(@NonNull final LauncherAppState app,
+                @NonNull final BgDataModel dataModel, @NonNull final AllAppsList apps) {
             mFolderInfos = dataModel.folders.clone();
             mAppInfos = Arrays.asList(apps.copyData());
         }
diff --git a/src/com/android/launcher3/folder/FolderPagedView.java b/src/com/android/launcher3/folder/FolderPagedView.java
index 3d5aef5..36e5e1b 100644
--- a/src/com/android/launcher3/folder/FolderPagedView.java
+++ b/src/com/android/launcher3/folder/FolderPagedView.java
@@ -31,6 +31,8 @@
 import android.view.View;
 import android.view.ViewDebug;
 
+import androidx.annotation.Nullable;
+
 import com.android.launcher3.AbstractFloatingView;
 import com.android.launcher3.BubbleTextView;
 import com.android.launcher3.CellLayout;
@@ -41,11 +43,11 @@
 import com.android.launcher3.R;
 import com.android.launcher3.ShortcutAndWidgetContainer;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.celllayout.CellLayoutLayoutParams;
 import com.android.launcher3.keyboard.ViewGroupFocusHelper;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
 import com.android.launcher3.pageindicators.PageIndicatorDots;
-import com.android.launcher3.touch.ItemClickHandler;
 import com.android.launcher3.util.LauncherBindableItemsContainer.ItemOperator;
 import com.android.launcher3.util.Thunk;
 import com.android.launcher3.util.ViewCache;
@@ -202,7 +204,7 @@
     public void addViewForRank(View view, WorkspaceItemInfo item, int rank) {
         int pageNo = rank / mOrganizer.getMaxItemsPerPage();
 
-        CellLayout.LayoutParams lp = (CellLayout.LayoutParams) view.getLayoutParams();
+        CellLayoutLayoutParams lp = (CellLayoutLayoutParams) view.getLayoutParams();
         lp.setCellXY(mOrganizer.getPosForRank(rank));
         getPageAt(pageNo).addViewToCellLayout(view, -1, item.getViewId(), lp, true);
     }
@@ -215,26 +217,28 @@
         final BubbleTextView textView = mViewCache.getView(
                 R.layout.folder_application, getContext(), null);
         textView.applyFromWorkspaceItem(item);
-        textView.setOnClickListener(ItemClickHandler.INSTANCE);
+        textView.setOnClickListener(mFolder.mActivityContext.getItemOnClickListener());
         textView.setOnLongClickListener(mFolder);
         textView.setOnFocusChangeListener(mFocusIndicatorHelper);
-        CellLayout.LayoutParams lp = (CellLayout.LayoutParams) textView.getLayoutParams();
+        CellLayoutLayoutParams lp = (CellLayoutLayoutParams) textView.getLayoutParams();
         if (lp == null) {
-            textView.setLayoutParams(new CellLayout.LayoutParams(
+            textView.setLayoutParams(new CellLayoutLayoutParams(
                     item.cellX, item.cellY, item.spanX, item.spanY));
         } else {
-            lp.cellX = item.cellX;
-            lp.cellY = item.cellY;
+            lp.setCellX(item.cellX);
+            lp.setCellY(item.cellY);
             lp.cellHSpan = lp.cellVSpan = 1;
         }
         return textView;
     }
 
+    @Nullable
     @Override
     public CellLayout getPageAt(int index) {
         return (CellLayout) getChildAt(index);
     }
 
+    @Nullable
     public CellLayout getCurrentCellLayout() {
         return getPageAt(getNextPage());
     }
@@ -314,7 +318,7 @@
             }
 
             if (v != null) {
-                CellLayout.LayoutParams lp = (CellLayout.LayoutParams) v.getLayoutParams();
+                CellLayoutLayoutParams lp = (CellLayoutLayoutParams) v.getLayoutParams();
                 ItemInfo info = (ItemInfo) v.getTag();
                 lp.setCellXY(mOrganizer.getPosForRank(rank));
                 currentPage.addViewToCellLayout(v, -1, info.getViewId(), lp, true);
@@ -363,7 +367,7 @@
     public int findNearestArea(int pixelX, int pixelY) {
         int pageIndex = getNextPage();
         CellLayout page = getPageAt(pageIndex);
-        page.findNearestArea(pixelX, pixelY, 1, 1, sTmpArray);
+        page.findNearestAreaIgnoreOccupied(pixelX, pixelY, 1, 1, sTmpArray);
         if (mFolder.isLayoutRtl()) {
             sTmpArray[0] = page.getCountX() - sTmpArray[0] - 1;
         }
@@ -381,7 +385,7 @@
     }
 
     private View getViewInCurrentPage(ToIntFunction<ShortcutAndWidgetContainer> rankProvider) {
-        if (getChildCount() < 1) {
+        if (getChildCount() < 1 || getCurrentCellLayout() == null) {
             return null;
         }
         ShortcutAndWidgetContainer container = getCurrentCellLayout().getShortcutsAndWidgets();
@@ -420,10 +424,15 @@
      * Sets the focus on the first visible child.
      */
     public void setFocusOnFirstChild() {
-        View firstChild = getCurrentCellLayout().getChildAt(0, 0);
-        if (firstChild != null) {
-            firstChild.requestFocus();
+        CellLayout currentCellLayout = getCurrentCellLayout();
+        if (currentCellLayout == null) {
+            return;
         }
+        View firstChild = currentCellLayout.getChildAt(0, 0);
+        if (firstChild == null) {
+            return;
+        }
+        firstChild.requestFocus();
     }
 
     @Override
diff --git a/src/com/android/launcher3/folder/LauncherDelegate.java b/src/com/android/launcher3/folder/LauncherDelegate.java
index 1f0a011..3e55425 100644
--- a/src/com/android/launcher3/folder/LauncherDelegate.java
+++ b/src/com/android/launcher3/folder/LauncherDelegate.java
@@ -28,6 +28,7 @@
 import com.android.launcher3.DropTarget;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.celllayout.CellPosMapper;
 import com.android.launcher3.dragndrop.DragOptions;
 import com.android.launcher3.logging.InstanceId;
 import com.android.launcher3.logging.StatsLogManager.StatsLogger;
@@ -177,7 +178,7 @@
         ModelWriter getModelWriter() {
             if (mWriter == null) {
                 mWriter = LauncherAppState.getInstance((Context) mContext).getModel()
-                        .getWriter(false, false, null);
+                        .getWriter(false, false, CellPosMapper.DEFAULT, null);
             }
             return mWriter;
         }
diff --git a/src/com/android/launcher3/folder/PreviewBackground.java b/src/com/android/launcher3/folder/PreviewBackground.java
index 8f9fa8a..406955c 100644
--- a/src/com/android/launcher3/folder/PreviewBackground.java
+++ b/src/com/android/launcher3/folder/PreviewBackground.java
@@ -43,6 +43,7 @@
 import com.android.launcher3.CellLayout;
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.R;
+import com.android.launcher3.util.Themes;
 import com.android.launcher3.views.ActivityContext;
 
 /**
@@ -150,7 +151,7 @@
         mInvalidateDelegate = invalidateDelegate;
 
         TypedArray ta = context.getTheme().obtainStyledAttributes(R.styleable.FolderIconPreview);
-        mDotColor = ta.getColor(R.styleable.FolderIconPreview_folderDotColor, 0);
+        mDotColor = Themes.getAttrColor(context, R.attr.notificationDotColor);
         mStrokeColor = ta.getColor(R.styleable.FolderIconPreview_folderIconBorderColor, 0);
         mBgColor = ta.getColor(R.styleable.FolderIconPreview_folderPreviewColor, 0);
         ta.recycle();
@@ -333,12 +334,15 @@
                 getOffsetX() + inset, getOffsetY() + inset, getScaledRadius() - inset, mPaint);
     }
 
-    public void drawLeaveBehind(Canvas canvas) {
+    /**
+     * Draws the leave-behind circle on the given canvas and in the given color.
+     */
+    public void drawLeaveBehind(Canvas canvas, int color) {
         float originalScale = mScale;
         mScale = 0.5f;
 
         mPaint.setStyle(Paint.Style.FILL);
-        mPaint.setColor(Color.argb(160, 245, 245, 245));
+        mPaint.setColor(color);
         getShape().drawShape(canvas, getOffsetX(), getOffsetY(), getScaledRadius(), mPaint);
 
         mScale = originalScale;
diff --git a/src/com/android/launcher3/folder/PreviewItemManager.java b/src/com/android/launcher3/folder/PreviewItemManager.java
index 6355b62..2e5f2e5 100644
--- a/src/com/android/launcher3/folder/PreviewItemManager.java
+++ b/src/com/android/launcher3/folder/PreviewItemManager.java
@@ -79,6 +79,8 @@
     private int mPrevTopPadding = -1;
     private Drawable mReferenceDrawable = null;
 
+    private int mNumOfPrevItems = 0;
+
     // These hold the first page preview items
     private ArrayList<PreviewItemDrawingParams> mFirstPageParams = new ArrayList<>();
     // These hold the current page preview items. It is empty if the current page is the first page.
@@ -254,7 +256,6 @@
 
     void buildParamsForPage(int page, ArrayList<PreviewItemDrawingParams> params, boolean animate) {
         List<WorkspaceItemInfo> items = mIcon.getPreviewItemsOnPage(page);
-        int prevNumItems = params.size();
 
         // We adjust the size of the list to match the number of items in the preview.
         while (items.size() < params.size()) {
@@ -278,8 +279,9 @@
                     mReferenceDrawable = p.drawable;
                 }
             } else {
-                FolderPreviewItemAnim anim = new FolderPreviewItemAnim(this, p, i, prevNumItems, i,
-                        numItemsInFirstPagePreview, DROP_IN_ANIMATION_DURATION, null);
+                FolderPreviewItemAnim anim = new FolderPreviewItemAnim(this, p, i,
+                        mNumOfPrevItems, i, numItemsInFirstPagePreview, DROP_IN_ANIMATION_DURATION,
+                        null);
 
                 if (p.anim != null) {
                     if (p.anim.hasEqualFinalState(anim)) {
@@ -318,7 +320,9 @@
     }
 
     void updatePreviewItems(boolean animate) {
+        int numOfPrevItemsAux = mFirstPageParams.size();
         buildParamsForPage(0, mFirstPageParams, animate);
+        mNumOfPrevItems = numOfPrevItemsAux;
     }
 
     void updatePreviewItems(Predicate<WorkspaceItemInfo> itemCheck) {
diff --git a/src/com/android/launcher3/graphics/DragPreviewProvider.java b/src/com/android/launcher3/graphics/DragPreviewProvider.java
index f027b33..7457f30 100644
--- a/src/com/android/launcher3/graphics/DragPreviewProvider.java
+++ b/src/com/android/launcher3/graphics/DragPreviewProvider.java
@@ -16,24 +16,16 @@
 
 package com.android.launcher3.graphics;
 
-import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
-
 import android.content.Context;
 import android.graphics.Bitmap;
-import android.graphics.BlurMaskFilter;
 import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.PorterDuff;
-import android.graphics.PorterDuffXfermode;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.view.View;
 
 import androidx.annotation.Nullable;
 
-import com.android.launcher3.BubbleTextView;
 import com.android.launcher3.R;
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.dragndrop.DraggableView;
 import com.android.launcher3.icons.BitmapRenderer;
 import com.android.launcher3.icons.FastBitmapDrawable;
@@ -41,8 +33,6 @@
 import com.android.launcher3.views.ActivityContext;
 import com.android.launcher3.widget.LauncherAppWidgetHostView;
 
-import java.nio.ByteBuffer;
-
 /**
  * A utility class to generate preview bitmap for dragging.
  */
@@ -57,9 +47,6 @@
 
     public final int blurSizeOutline;
 
-    private OutlineGeneratorCallback mOutlineGeneratorCallback;
-    public Bitmap generatedDragOutline;
-
     public DragPreviewProvider(View view) {
         this(view, view.getContext());
     }
@@ -129,15 +116,6 @@
         return null;
     }
 
-    public final void generateDragOutline(Bitmap preview) {
-        if (FeatureFlags.IS_STUDIO_BUILD && mOutlineGeneratorCallback != null) {
-            throw new RuntimeException("Drag outline generated twice");
-        }
-
-        mOutlineGeneratorCallback = new OutlineGeneratorCallback(preview);
-        UI_HELPER_EXECUTOR.post(mOutlineGeneratorCallback);
-    }
-
     protected static Rect getDrawableBounds(Drawable d) {
         Rect bounds = new Rect();
         d.copyBounds(bounds);
@@ -184,92 +162,4 @@
     protected Bitmap convertPreviewToAlphaBitmap(Bitmap preview) {
         return preview.copy(Bitmap.Config.ALPHA_8, true);
     }
-
-    private class OutlineGeneratorCallback implements Runnable {
-
-        private final Bitmap mPreviewSnapshot;
-        private final Context mContext;
-        private final boolean mIsIcon;
-
-        OutlineGeneratorCallback(Bitmap preview) {
-            mPreviewSnapshot = preview;
-            mContext = mView.getContext();
-            mIsIcon = mView instanceof BubbleTextView;
-        }
-
-        @Override
-        public void run() {
-            Bitmap preview = convertPreviewToAlphaBitmap(mPreviewSnapshot);
-            if (mIsIcon) {
-                int size = ActivityContext.lookupContext(mContext).getDeviceProfile().iconSizePx;
-                preview = Bitmap.createScaledBitmap(preview, size, size, false);
-            }
-            //else case covers AppWidgetHost (doesn't drag/drop across different device profiles)
-
-            // We start by removing most of the alpha channel so as to ignore shadows, and
-            // other types of partial transparency when defining the shape of the object
-            byte[] pixels = new byte[preview.getWidth() * preview.getHeight()];
-            ByteBuffer buffer = ByteBuffer.wrap(pixels);
-            buffer.rewind();
-            preview.copyPixelsToBuffer(buffer);
-
-            for (int i = 0; i < pixels.length; i++) {
-                if ((pixels[i] & 0xFF) < 188) {
-                    pixels[i] = 0;
-                }
-            }
-
-            buffer.rewind();
-            preview.copyPixelsFromBuffer(buffer);
-
-            final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
-            Canvas canvas = new Canvas();
-
-            // calculate the outer blur first
-            paint.setMaskFilter(new BlurMaskFilter(blurSizeOutline, BlurMaskFilter.Blur.OUTER));
-            int[] outerBlurOffset = new int[2];
-            Bitmap thickOuterBlur = preview.extractAlpha(paint, outerBlurOffset);
-
-            paint.setMaskFilter(new BlurMaskFilter(
-                    mContext.getResources().getDimension(R.dimen.blur_size_thin_outline),
-                    BlurMaskFilter.Blur.OUTER));
-            int[] brightOutlineOffset = new int[2];
-            Bitmap brightOutline = preview.extractAlpha(paint, brightOutlineOffset);
-
-            // calculate the inner blur
-            canvas.setBitmap(preview);
-            canvas.drawColor(0xFF000000, PorterDuff.Mode.SRC_OUT);
-            paint.setMaskFilter(new BlurMaskFilter(blurSizeOutline, BlurMaskFilter.Blur.NORMAL));
-            int[] thickInnerBlurOffset = new int[2];
-            Bitmap thickInnerBlur = preview.extractAlpha(paint, thickInnerBlurOffset);
-
-            // mask out the inner blur
-            paint.setMaskFilter(null);
-            paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));
-            canvas.setBitmap(thickInnerBlur);
-            canvas.drawBitmap(preview, -thickInnerBlurOffset[0],
-                    -thickInnerBlurOffset[1], paint);
-            canvas.drawRect(0, 0, -thickInnerBlurOffset[0], thickInnerBlur.getHeight(), paint);
-            canvas.drawRect(0, 0, thickInnerBlur.getWidth(), -thickInnerBlurOffset[1], paint);
-
-            // draw the inner and outer blur
-            paint.setXfermode(null);
-            canvas.setBitmap(preview);
-            canvas.drawColor(0, PorterDuff.Mode.CLEAR);
-            canvas.drawBitmap(thickInnerBlur, thickInnerBlurOffset[0], thickInnerBlurOffset[1],
-                    paint);
-            canvas.drawBitmap(thickOuterBlur, outerBlurOffset[0], outerBlurOffset[1], paint);
-
-            // draw the bright outline
-            canvas.drawBitmap(brightOutline, brightOutlineOffset[0], brightOutlineOffset[1], paint);
-
-            // cleanup
-            canvas.setBitmap(null);
-            brightOutline.recycle();
-            thickOuterBlur.recycle();
-            thickInnerBlur.recycle();
-
-            generatedDragOutline = preview;
-        }
-    }
 }
diff --git a/src/com/android/launcher3/graphics/GridCustomizationsProvider.java b/src/com/android/launcher3/graphics/GridCustomizationsProvider.java
index fc8d855..ae5d8d4 100644
--- a/src/com/android/launcher3/graphics/GridCustomizationsProvider.java
+++ b/src/com/android/launcher3/graphics/GridCustomizationsProvider.java
@@ -1,8 +1,7 @@
 package com.android.launcher3.graphics;
 
-import static com.android.launcher3.Utilities.getPrefs;
+import static com.android.launcher3.LauncherPrefs.THEMED_ICONS;
 import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
-import static com.android.launcher3.util.Themes.KEY_THEMED_ICONS;
 import static com.android.launcher3.util.Themes.isThemedIconEnabled;
 
 import android.annotation.TargetApi;
@@ -25,8 +24,8 @@
 
 import com.android.launcher3.InvariantDeviceProfile;
 import com.android.launcher3.InvariantDeviceProfile.GridOption;
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.Utilities;
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.util.Executors;
 
 /**
@@ -67,6 +66,9 @@
 
     private static final String KEY_SURFACE_PACKAGE = "surface_package";
     private static final String KEY_CALLBACK = "callback";
+    public static final String KEY_HIDE_BOTTOM_ROW = "hide_bottom_row";
+
+    private static final int MESSAGE_ID_UPDATE_PREVIEW = 1337;
 
     private final ArrayMap<IBinder, PreviewLifecycleObserver> mActivePreviews = new ArrayMap<>();
 
@@ -80,7 +82,7 @@
             String[] selectionArgs, String sortOrder) {
         switch (uri.getPath()) {
             case KEY_LIST_OPTIONS: {
-                MatrixCursor cursor = new MatrixCursor(new String[] {
+                MatrixCursor cursor = new MatrixCursor(new String[]{
                         KEY_NAME, KEY_ROWS, KEY_COLS, KEY_PREVIEW_COUNT, KEY_IS_DEFAULT});
                 InvariantDeviceProfile idp = InvariantDeviceProfile.INSTANCE.get(getContext());
                 for (GridOption gridOption : idp.parseAllGridOptions(getContext())) {
@@ -96,7 +98,7 @@
             }
             case GET_ICON_THEMED:
             case ICON_THEMED: {
-                MatrixCursor cursor = new MatrixCursor(new String[] {BOOLEAN_VALUE});
+                MatrixCursor cursor = new MatrixCursor(new String[]{BOOLEAN_VALUE});
                 cursor.newRow().add(BOOLEAN_VALUE, isThemedIconEnabled(getContext()) ? 1 : 0);
                 return cursor;
             }
@@ -139,15 +141,14 @@
                 }
 
                 idp.setCurrentGrid(getContext(), gridName);
+                getContext().getContentResolver().notifyChange(uri, null);
                 return 1;
             }
             case ICON_THEMED:
             case SET_ICON_THEMED: {
-                if (FeatureFlags.ENABLE_THEMED_ICONS.get()) {
-                    getPrefs(getContext()).edit()
-                            .putBoolean(KEY_THEMED_ICONS, values.getAsBoolean(BOOLEAN_VALUE))
-                            .apply();
-                }
+                LauncherPrefs.get(getContext())
+                        .put(THEMED_ICONS, values.getAsBoolean(BOOLEAN_VALUE));
+                getContext().getContentResolver().notifyChange(uri, null);
                 return 1;
             }
             default:
@@ -226,7 +227,14 @@
 
         @Override
         public boolean handleMessage(Message message) {
-            destroyObserver(this);
+            if (destroyed) {
+                return true;
+            }
+            if (message.what == MESSAGE_ID_UPDATE_PREVIEW) {
+                renderer.hideBottomRow(message.getData().getBoolean(KEY_HIDE_BOTTOM_ROW));
+            } else {
+                destroyObserver(this);
+            }
             return true;
         }
 
diff --git a/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java b/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java
index d5bcb0c..47677ea 100644
--- a/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java
+++ b/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java
@@ -20,6 +20,7 @@
 import static android.view.View.MeasureSpec.makeMeasureSpec;
 import static android.view.View.VISIBLE;
 
+import static com.android.launcher3.DeviceProfile.DEFAULT_SCALE;
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_HOTSEAT_PREDICTION;
 import static com.android.launcher3.model.ModelUtils.filterCurrentWorkspaceItems;
 import static com.android.launcher3.model.ModelUtils.getMissingHotseatRanks;
@@ -36,6 +37,7 @@
 import android.content.Intent;
 import android.content.res.TypedArray;
 import android.graphics.Color;
+import android.graphics.PointF;
 import android.graphics.Rect;
 import android.graphics.drawable.AdaptiveIconDrawable;
 import android.graphics.drawable.ColorDrawable;
@@ -43,6 +45,8 @@
 import android.os.Handler;
 import android.os.Looper;
 import android.util.AttributeSet;
+import android.util.Size;
+import android.util.SparseArray;
 import android.util.SparseIntArray;
 import android.view.ContextThemeWrapper;
 import android.view.LayoutInflater;
@@ -53,18 +57,25 @@
 import android.view.WindowManager;
 import android.widget.TextClock;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.launcher3.BubbleTextView;
 import com.android.launcher3.CellLayout;
 import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
 import com.android.launcher3.Hotseat;
 import com.android.launcher3.InsettableFrameLayout;
 import com.android.launcher3.InvariantDeviceProfile;
 import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.LauncherSettings.Favorites;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.Workspace;
 import com.android.launcher3.WorkspaceLayoutManager;
+import com.android.launcher3.celllayout.CellLayoutLayoutParams;
+import com.android.launcher3.celllayout.CellPosMapper;
 import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.folder.FolderIcon;
 import com.android.launcher3.icons.BaseIconFactory;
@@ -91,11 +102,11 @@
 import com.android.launcher3.views.ActivityContext;
 import com.android.launcher3.views.BaseDragLayer;
 import com.android.launcher3.widget.BaseLauncherAppWidgetHostView;
-import com.android.launcher3.widget.LauncherAppWidgetHost;
 import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
+import com.android.launcher3.widget.LauncherWidgetHolder;
 import com.android.launcher3.widget.LocalColorExtractor;
-import com.android.launcher3.widget.NavigableAppWidgetHostView;
 import com.android.launcher3.widget.custom.CustomWidgetManager;
+import com.android.launcher3.widget.util.WidgetSizes;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -127,7 +138,7 @@
                 new ConcurrentLinkedQueue<>();
 
         public PreviewContext(Context base, InvariantDeviceProfile idp) {
-            super(base, UserCache.INSTANCE, InstallSessionHelper.INSTANCE,
+            super(base, UserCache.INSTANCE, InstallSessionHelper.INSTANCE, LauncherPrefs.INSTANCE,
                     LauncherAppState.INSTANCE, InvariantDeviceProfile.INSTANCE,
                     CustomWidgetManager.INSTANCE, PluginManagerWrapper.INSTANCE,
                     WindowManagerProxy.INSTANCE, DisplayController.INSTANCE);
@@ -165,10 +176,12 @@
         }
     }
 
+    private final List<OnDeviceProfileChangeListener> mDpChangeListeners = new ArrayList<>();
     private final Handler mUiHandler;
     private final Context mContext;
     private final InvariantDeviceProfile mIdp;
     private final DeviceProfile mDp;
+    private final DeviceProfile mDpOrig;
     private final Rect mInsets;
     private final WorkspaceItemInfo mWorkspaceItemInfo;
     private final LayoutInflater mHomeElementInflater;
@@ -177,16 +190,27 @@
     private final Map<Integer, CellLayout> mWorkspaceScreens = new HashMap<>();
     private final AppWidgetHost mAppWidgetHost;
     private final SparseIntArray mWallpaperColorResources;
+    private final SparseArray<Size> mLauncherWidgetSpanInfo;
 
     public LauncherPreviewRenderer(Context context,
             InvariantDeviceProfile idp,
-            WallpaperColors wallpaperColorsOverride) {
+            WallpaperColors wallpaperColorsOverride,
+            @Nullable final SparseArray<Size> launcherWidgetSpanInfo) {
 
         super(context);
         mUiHandler = new Handler(Looper.getMainLooper());
         mContext = context;
         mIdp = idp;
-        mDp = idp.getDeviceProfile(context).copy(context);
+        mDp = idp.getDeviceProfile(context).toBuilder(context).setViewScaleProvider(
+                this::getAppWidgetScale).build();
+        if (context instanceof PreviewContext) {
+            Context tempContext = ((PreviewContext) context).getBaseContext();
+            mDpOrig = new InvariantDeviceProfile(tempContext, InvariantDeviceProfile
+                    .getCurrentGridName(tempContext)).getDeviceProfile(tempContext)
+                    .copy(tempContext);
+        } else {
+            mDpOrig = mDp;
+        }
 
         WindowInsets currentWindowInsets = context.getSystemService(WindowManager.class)
                 .getCurrentWindowMetrics().getWindowInsets();
@@ -224,6 +248,9 @@
         mHotseat = mRootView.findViewById(R.id.hotseat);
         mHotseat.resetLayout(false);
 
+        mLauncherWidgetSpanInfo = launcherWidgetSpanInfo == null ? new SparseArray<>() :
+                launcherWidgetSpanInfo;
+
         CellLayout firstScreen = mRootView.findViewById(R.id.workspace);
         firstScreen.setPadding(mDp.workspacePadding.left + mDp.cellLayoutPaddingPx.left,
                 mDp.workspacePadding.top + mDp.cellLayoutPaddingPx.top,
@@ -253,9 +280,7 @@
         } else {
             mWallpaperColorResources = null;
         }
-        mAppWidgetHost = FeatureFlags.WIDGETS_IN_LAUNCHER_PREVIEW.get()
-                ? new LauncherPreviewAppWidgetHost(context)
-                : null;
+        mAppWidgetHost = new LauncherPreviewAppWidgetHost(context);
     }
 
     /** Populate preview and render it. */
@@ -307,15 +332,44 @@
     }
 
     @Override
+    public List<OnDeviceProfileChangeListener> getOnDeviceProfileChangeListeners() {
+        return mDpChangeListeners;
+    }
+
+    @Override
     public Hotseat getHotseat() {
         return mHotseat;
     }
 
+    /**
+     * Hides the components in the bottom row.
+     *
+     * @param hide True to hide and false to show.
+     */
+    public void hideBottomRow(boolean hide) {
+        mUiHandler.post(() -> {
+            if (mDp.isTaskbarPresent) {
+                // hotseat icons on bottom
+                mHotseat.setIconsAlpha(hide ? 0 : 1);
+                if (mDp.isQsbInline) {
+                    mHotseat.setQsbAlpha(hide ? 0 : 1);
+                }
+            } else {
+                mHotseat.setQsbAlpha(hide ? 0 : 1);
+            }
+        });
+    }
+
     @Override
     public CellLayout getScreenWithId(int screenId) {
         return mWorkspaceScreens.get(screenId);
     }
 
+    @Override
+    public CellPosMapper getCellPosMapper() {
+        return CellPosMapper.DEFAULT;
+    }
+
     private void inflateAndAddIcon(WorkspaceItemInfo info) {
         CellLayout screen = mWorkspaceScreens.get(info.screenId);
         BubbleTextView icon = (BubbleTextView) mHomeElementInflater.inflate(
@@ -359,19 +413,8 @@
 
     private void inflateAndAddWidgets(
             LauncherAppWidgetInfo info, LauncherAppWidgetProviderInfo providerInfo) {
-        AppWidgetHostView view;
-        if (FeatureFlags.WIDGETS_IN_LAUNCHER_PREVIEW.get()) {
-            view = mAppWidgetHost.createView(mContext, info.appWidgetId, providerInfo);
-        } else {
-            view = new NavigableAppWidgetHostView(this) {
-                @Override
-                protected boolean shouldAllowDirectClick() {
-                    return false;
-                }
-            };
-            view.setAppWidget(-1, providerInfo);
-            view.updateAppWidget(null);
-        }
+        AppWidgetHostView view = mAppWidgetHost.createView(
+                mContext, info.appWidgetId, providerInfo);
 
         if (mWallpaperColorResources != null) {
             view.setColorResources(mWallpaperColorResources);
@@ -381,6 +424,23 @@
         addInScreenFromBind(view, info);
     }
 
+    @NonNull
+    private PointF getAppWidgetScale(@Nullable ItemInfo itemInfo) {
+        if (!(itemInfo instanceof LauncherAppWidgetInfo)) {
+            return DEFAULT_SCALE;
+        }
+        LauncherAppWidgetInfo info = (LauncherAppWidgetInfo) itemInfo;
+        final Size launcherWidgetSize = mLauncherWidgetSpanInfo.get(info.appWidgetId);
+        if (launcherWidgetSize == null) {
+            return DEFAULT_SCALE;
+        }
+        final Size origSize = WidgetSizes.getWidgetSizePx(mDpOrig,
+                launcherWidgetSize.getWidth(), launcherWidgetSize.getHeight());
+        final Size newSize = WidgetSizes.getWidgetSizePx(mDp, info.spanX, info.spanY);
+        return new PointF((float) newSize.getWidth() / origSize.getWidth(),
+                (float) newSize.getHeight() / origSize.getHeight());
+    }
+
     private void inflateAndAddPredictedIcon(WorkspaceItemInfo info) {
         CellLayout screen = mWorkspaceScreens.get(info.screenId);
         View view = PredictedAppIconInflater.inflate(mHomeElementInflater, screen, info);
@@ -472,10 +532,9 @@
         // Add first page QSB
         if (FeatureFlags.QSB_ON_FIRST_SCREEN) {
             CellLayout firstScreen = mWorkspaceScreens.get(FIRST_SCREEN_ID);
-            View qsb = mHomeElementInflater.inflate(R.layout.qsb_preview, firstScreen,
-                    false);
-            CellLayout.LayoutParams lp =
-                    new CellLayout.LayoutParams(0, 0, firstScreen.getCountX(), 1);
+            View qsb = mHomeElementInflater.inflate(R.layout.qsb_preview, firstScreen, false);
+            CellLayoutLayoutParams lp = new CellLayoutLayoutParams(
+                    0, 0, firstScreen.getCountX(), 1);
             lp.canReorder = false;
             firstScreen.addViewToCellLayout(qsb, 0, R.id.search_container_workspace, lp, true);
         }
@@ -495,7 +554,7 @@
     private class LauncherPreviewAppWidgetHost extends AppWidgetHost {
 
         private LauncherPreviewAppWidgetHost(Context context) {
-            super(context, LauncherAppWidgetHost.APPWIDGET_HOST_ID);
+            super(context, LauncherWidgetHolder.APPWIDGET_HOST_ID);
         }
 
         @Override
diff --git a/src/com/android/launcher3/graphics/PreloadIconDrawable.java b/src/com/android/launcher3/graphics/PreloadIconDrawable.java
index d2e4c51..d366c4a 100644
--- a/src/com/android/launcher3/graphics/PreloadIconDrawable.java
+++ b/src/com/android/launcher3/graphics/PreloadIconDrawable.java
@@ -17,6 +17,11 @@
 
 package com.android.launcher3.graphics;
 
+import static com.android.launcher3.anim.Interpolators.EMPHASIZED;
+import static com.android.launcher3.anim.Interpolators.LINEAR;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_DOWNLOAD_APP_UX_V2;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_DOWNLOAD_APP_UX_V3;
+
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ObjectAnimator;
@@ -28,20 +33,19 @@
 import android.graphics.Path;
 import android.graphics.PathMeasure;
 import android.graphics.Rect;
-import android.util.Pair;
 import android.util.Property;
-import android.util.SparseArray;
-import android.view.ContextThemeWrapper;
 
+import androidx.core.graphics.ColorUtils;
+
+import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
-import com.android.launcher3.anim.Interpolators;
+import com.android.launcher3.anim.AnimatedFloat;
+import com.android.launcher3.anim.AnimatorListeners;
 import com.android.launcher3.icons.FastBitmapDrawable;
 import com.android.launcher3.icons.GraphicsUtils;
 import com.android.launcher3.model.data.ItemInfoWithIcon;
 import com.android.launcher3.util.Themes;
 
-import java.lang.ref.WeakReference;
-
 /**
  * Extension of {@link FastBitmapDrawable} which shows a progress bar around the icon.
  */
@@ -61,24 +65,22 @@
             };
 
     private static final int DEFAULT_PATH_SIZE = 100;
-    private static final float PROGRESS_WIDTH = 7;
-    private static final float PROGRESS_GAP = 2;
     private static final int MAX_PAINT_ALPHA = 255;
+    private static final int TRACK_ALPHA = (int) (0.27f * MAX_PAINT_ALPHA);
+    private static final int DISABLED_ICON_ALPHA = (int) (0.6f * MAX_PAINT_ALPHA);
 
     private static final long DURATION_SCALE = 500;
+    private static final long SCALE_AND_ALPHA_ANIM_DURATION = 500;
 
     // The smaller the number, the faster the animation would be.
     // Duration = COMPLETE_ANIM_FRACTION * DURATION_SCALE
-    private static final float COMPLETE_ANIM_FRACTION = 0.3f;
+    private static final float COMPLETE_ANIM_FRACTION = 1f;
 
-    private static final int COLOR_TRACK = 0x77EEEEEE;
-    private static final int COLOR_SHADOW = 0x55000000;
-
-    private static final float SMALL_SCALE = 0.6f;
-
-    private static final SparseArray<WeakReference<Pair<Path, Bitmap>>> sShadowCache =
-            new SparseArray<>();
-
+    private static final float SMALL_SCALE = ENABLE_DOWNLOAD_APP_UX_V3.get() ? 0.8f : 0.7f;
+    private static final float PROGRESS_STROKE_SCALE = ENABLE_DOWNLOAD_APP_UX_V2.get()
+            ? 0.055f
+            : 0.075f;
+    private static final float PROGRESS_BOUNDS_SCALE = 0.075f;
     private static final int PRELOAD_ACCENT_COLOR_INDEX = 0;
     private static final int PRELOAD_BACKGROUND_COLOR_INDEX = 1;
 
@@ -94,21 +96,26 @@
     private final Path mScaledProgressPath;
     private final Paint mProgressPaint;
 
-    private Bitmap mShadowBitmap;
     private final int mIndicatorColor;
     private final int mSystemAccentColor;
     private final int mSystemBackgroundColor;
+
+    private int mProgressColor;
+    private int mTrackColor;
+    private int mPlateColor;
+
     private final boolean mIsDarkMode;
 
-    private int mTrackAlpha;
     private float mTrackLength;
-    private float mIconScale;
 
     private boolean mRanFinishAnimation;
 
     // Progress of the internal state. [0, 1] indicates the fraction of completed progress,
     // [1, (1 + COMPLETE_ANIM_FRACTION)] indicates the progress of zoom animation.
     private float mInternalStateProgress;
+    // This multiplier is used to animate scale when going from 0 to non-zero and expanding
+    private final Runnable mInvalidateRunnable = this::invalidateSelf;
+    private final AnimatedFloat mIconScaleMultiplier = new AnimatedFloat(mInvalidateRunnable);
 
     private ObjectAnimator mCurrentAnim;
 
@@ -119,77 +126,85 @@
                 info,
                 IconPalette.getPreloadProgressColor(context, info.bitmap.color),
                 getPreloadColors(context),
-                Utilities.isDarkTheme(context));
+                Utilities.isDarkTheme(context),
+                GraphicsUtils.getShapePath(context, DEFAULT_PATH_SIZE));
     }
 
     public PreloadIconDrawable(
             ItemInfoWithIcon info,
             int indicatorColor,
             int[] preloadColors,
-            boolean isDarkMode) {
+            boolean isDarkMode,
+            Path shapePath) {
         super(info.bitmap);
         mItem = info;
-        mShapePath = GraphicsUtils.getShapePath(DEFAULT_PATH_SIZE);
+        mShapePath = shapePath;
         mScaledTrackPath = new Path();
         mScaledProgressPath = new Path();
 
         mProgressPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
-        mProgressPaint.setStyle(Paint.Style.STROKE);
         mProgressPaint.setStrokeCap(Paint.Cap.ROUND);
+        if (ENABLE_DOWNLOAD_APP_UX_V3.get()) {
+            mProgressPaint.setAlpha(MAX_PAINT_ALPHA);
+        }
         mIndicatorColor = indicatorColor;
 
+        // This is the color
+        int primaryIconColor = mItem.bitmap.color;
+
+        // Progress color
+        float[] m3HCT = new float[3];
+        ColorUtils.colorToM3HCT(primaryIconColor, m3HCT);
+        mProgressColor = ColorUtils.M3HCTtoColor(
+                m3HCT[0],
+                m3HCT[1],
+                isDarkMode ? Math.max(m3HCT[2], 55) : Math.min(m3HCT[2], 40));
+
+        // Track color
+        mTrackColor = ColorUtils.M3HCTtoColor(
+                m3HCT[0],
+                16,
+                isDarkMode ? 30 : 90
+        );
+        // Plate color
+        mPlateColor = ColorUtils.M3HCTtoColor(
+                m3HCT[0],
+                isDarkMode ? 36 : 24,
+                isDarkMode ? (isThemed() ? 10 : 20) : 80
+        );
+
         mSystemAccentColor = preloadColors[PRELOAD_ACCENT_COLOR_INDEX];
         mSystemBackgroundColor = preloadColors[PRELOAD_BACKGROUND_COLOR_INDEX];
         mIsDarkMode = isDarkMode;
 
+        // If it's a pending app we will animate scale and alpha when it's no longer pending.
+        mIconScaleMultiplier.updateValue(info.getProgressLevel() == 0 ? 0 : 1);
+
         setLevel(info.getProgressLevel());
-        setIsStartable(info.isAppStartable());
+        if (!ENABLE_DOWNLOAD_APP_UX_V2.get()) {
+            setIsStartable(info.isAppStartable());
+        }
     }
 
     @Override
     protected void onBoundsChange(Rect bounds) {
         super.onBoundsChange(bounds);
+
+        float progressWidth = bounds.width() * PROGRESS_BOUNDS_SCALE;
         mTmpMatrix.setScale(
-                (bounds.width() - 2 * PROGRESS_WIDTH - 2 * PROGRESS_GAP) / DEFAULT_PATH_SIZE,
-                (bounds.height() - 2 * PROGRESS_WIDTH - 2 * PROGRESS_GAP) / DEFAULT_PATH_SIZE);
-        mTmpMatrix.postTranslate(
-                bounds.left + PROGRESS_WIDTH + PROGRESS_GAP,
-                bounds.top + PROGRESS_WIDTH + PROGRESS_GAP);
+                (bounds.width() - 2 * progressWidth) / DEFAULT_PATH_SIZE,
+                (bounds.height() - 2 * progressWidth) / DEFAULT_PATH_SIZE);
+        mTmpMatrix.postTranslate(bounds.left + progressWidth, bounds.top + progressWidth);
 
         mShapePath.transform(mTmpMatrix, mScaledTrackPath);
-        float scale = bounds.width() / DEFAULT_PATH_SIZE;
-        mProgressPaint.setStrokeWidth(PROGRESS_WIDTH * scale);
+        mProgressPaint.setStrokeWidth(PROGRESS_STROKE_SCALE * bounds.width());
 
-        mShadowBitmap = getShadowBitmap(bounds.width(), bounds.height(),
-                (PROGRESS_GAP ) * scale);
         mPathMeasure.setPath(mScaledTrackPath, true);
         mTrackLength = mPathMeasure.getLength();
 
         setInternalProgress(mInternalStateProgress);
     }
 
-    private Bitmap getShadowBitmap(int width, int height, float shadowRadius) {
-        int key = ((width << 16) | height) * (mIsDarkMode ? -1 : 1);
-        WeakReference<Pair<Path, Bitmap>> shadowRef = sShadowCache.get(key);
-        Pair<Path, Bitmap> cache = shadowRef != null ? shadowRef.get() : null;
-        Bitmap shadow = cache != null && cache.first.equals(mShapePath) ? cache.second : null;
-        if (shadow != null) {
-            return shadow;
-        }
-        shadow = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
-        Canvas c = new Canvas(shadow);
-        mProgressPaint.setShadowLayer(shadowRadius, 0, 0, mIsStartable
-                ? COLOR_SHADOW : mSystemAccentColor);
-        mProgressPaint.setColor(mIsStartable ? COLOR_TRACK : mSystemBackgroundColor);
-        mProgressPaint.setAlpha(MAX_PAINT_ALPHA);
-        c.drawPath(mScaledTrackPath, mProgressPaint);
-        mProgressPaint.clearShadowLayer();
-        c.setBitmap(null);
-
-        sShadowCache.put(key, new WeakReference<>(Pair.create(mShapePath, shadow)));
-        return shadow;
-    }
-
     @Override
     public void drawInternal(Canvas canvas, Rect bounds) {
         if (mRanFinishAnimation) {
@@ -197,27 +212,61 @@
             return;
         }
 
-        // Draw track.
-        mProgressPaint.setColor(mIsStartable ? mIndicatorColor : mSystemAccentColor);
-        mProgressPaint.setAlpha(mTrackAlpha);
-        if (mShadowBitmap != null) {
-            canvas.drawBitmap(mShadowBitmap, bounds.left, bounds.top, mProgressPaint);
+        if (mInternalStateProgress > 0
+                && (ENABLE_DOWNLOAD_APP_UX_V3.get() || !ENABLE_DOWNLOAD_APP_UX_V2.get())) {
+            // Draw background.
+            mProgressPaint.setStyle(ENABLE_DOWNLOAD_APP_UX_V3.get()
+                    ? Paint.Style.FILL
+                    : Paint.Style.FILL_AND_STROKE);
+            mProgressPaint.setColor(ENABLE_DOWNLOAD_APP_UX_V3.get()
+                    ? mPlateColor
+                    : mSystemBackgroundColor);
+            canvas.drawPath(mScaledTrackPath, mProgressPaint);
         }
-        canvas.drawPath(mScaledProgressPath, mProgressPaint);
+
+        if (!ENABLE_DOWNLOAD_APP_UX_V2.get() || mInternalStateProgress > 0) {
+            // Draw track and progress.
+            mProgressPaint.setStyle(Paint.Style.STROKE);
+            mProgressPaint.setColor(ENABLE_DOWNLOAD_APP_UX_V3.get()
+                    ? mTrackColor
+                    : mSystemAccentColor);
+            if (!ENABLE_DOWNLOAD_APP_UX_V3.get()) {
+                mProgressPaint.setAlpha(TRACK_ALPHA);
+            }
+            canvas.drawPath(mScaledTrackPath, mProgressPaint);
+            mProgressPaint.setAlpha(MAX_PAINT_ALPHA);
+            if (ENABLE_DOWNLOAD_APP_UX_V3.get()) {
+                mProgressPaint.setColor(mProgressColor);
+            }
+            canvas.drawPath(mScaledProgressPath, mProgressPaint);
+        }
 
         int saveCount = canvas.save();
-        canvas.scale(mIconScale, mIconScale, bounds.exactCenterX(), bounds.exactCenterY());
+        float scale = ENABLE_DOWNLOAD_APP_UX_V2.get()
+                ? 1 - mIconScaleMultiplier.value * (1 - SMALL_SCALE)
+                : SMALL_SCALE;
+        canvas.scale(scale, scale, bounds.exactCenterX(), bounds.exactCenterY());
+
         super.drawInternal(canvas, bounds);
         canvas.restoreToCount(saveCount);
     }
 
+    @Override
+    protected void updateFilter() {
+        if (!ENABLE_DOWNLOAD_APP_UX_V2.get()) {
+            setAlpha(mIsDisabled ? DISABLED_ICON_ALPHA : MAX_PAINT_ALPHA);
+        } else {
+            super.updateFilter();
+        }
+    }
+
     /**
      * Updates the install progress based on the level
      */
     @Override
     protected boolean onLevelChange(int level) {
         // Run the animation if we have already been bound.
-        updateInternalState(level * 0.01f,  getBounds().width() > 0, false);
+        updateInternalState(level * 0.01f, false, null);
         return true;
     }
 
@@ -225,12 +274,22 @@
      * Runs the finish animation if it is has not been run after last call to
      * {@link #onLevelChange}
      */
-    public void maybePerformFinishedAnimation() {
+    public void maybePerformFinishedAnimation(
+            PreloadIconDrawable oldIcon, Runnable onFinishCallback) {
+
+        mProgressColor = oldIcon.mProgressColor;
+        mTrackColor = oldIcon.mTrackColor;
+        mPlateColor = oldIcon.mPlateColor;
+
+        if (oldIcon.mInternalStateProgress >= 1) {
+            mInternalStateProgress = oldIcon.mInternalStateProgress;
+        }
+
         // If the drawable was recently initialized, skip the progress animation.
         if (mInternalStateProgress == 0) {
             mInternalStateProgress = 1;
         }
-        updateInternalState(1 + COMPLETE_ANIM_FRACTION, true, true);
+        updateInternalState(1 + COMPLETE_ANIM_FRACTION, true, onFinishCallback);
     }
 
     public boolean hasNotCompleted() {
@@ -245,26 +304,29 @@
         }
     }
 
-    private void updateInternalState(float finalProgress, boolean shouldAnimate, boolean isFinish) {
+    private void updateInternalState(
+            float finalProgress, boolean isFinish, Runnable onFinishCallback) {
         if (mCurrentAnim != null) {
             mCurrentAnim.cancel();
             mCurrentAnim = null;
         }
 
-        if (Float.compare(finalProgress, mInternalStateProgress) == 0) {
-            return;
-        }
-        if (finalProgress < mInternalStateProgress) {
-            shouldAnimate = false;
-        }
-        if (!shouldAnimate || mRanFinishAnimation) {
+        boolean animateProgress =
+                finalProgress >= mInternalStateProgress && getBounds().width() > 0;
+        if (!animateProgress || mRanFinishAnimation) {
             setInternalProgress(finalProgress);
+            if (isFinish && onFinishCallback != null) {
+                onFinishCallback.run();
+            }
         } else {
             mCurrentAnim = ObjectAnimator.ofFloat(this, INTERNAL_STATE, finalProgress);
             mCurrentAnim.setDuration(
                     (long) ((finalProgress - mInternalStateProgress) * DURATION_SCALE));
-            mCurrentAnim.setInterpolator(Interpolators.LINEAR);
+            mCurrentAnim.setInterpolator(LINEAR);
             if (isFinish) {
+                if (onFinishCallback != null) {
+                    mCurrentAnim.addListener(AnimatorListeners.forEndCallback(onFinishCallback));
+                }
                 mCurrentAnim.addListener(new AnimatorListenerAdapter() {
                     @Override
                     public void onAnimationEnd(Animator animation) {
@@ -279,64 +341,56 @@
     /**
      * Sets the internal progress and updates the UI accordingly
      *   for progress <= 0:
-     *     - icon in the small scale and disabled state
-     *     - progress track is visible
+     *     - icon is pending
+     *     - progress track is not visible
      *     - progress bar is not visible
-     *   for 0 < progress < 1
-     *     - icon in the small scale and disabled state
+     *   for progress < 1:
+     *     - icon without pending motion
      *     - progress track is visible
-     *     - progress bar is visible with dominant color. Progress bar is drawn as a fraction of
+     *     - progress bar is visible. Progress bar is drawn as a fraction of
      *       {@link #mScaledTrackPath}.
      *       @see PathMeasure#getSegment(float, float, Path, boolean)
-     *   for 1 <= progress < (1 + COMPLETE_ANIM_FRACTION)
-     *     - we calculate fraction of progress in the above range
-     *     - progress track is drawn with alpha based on fraction
-     *     - progress bar is drawn at 100% with alpha based on fraction
-     *     - icon is scaled up based on fraction and is drawn in enabled state
-     *   for progress >= (1 + COMPLETE_ANIM_FRACTION)
-     *     - only icon is drawn in normal state
+     *   for progress > 1:
+     *     - scale the icon back to full size
      */
     private void setInternalProgress(float progress) {
-        mInternalStateProgress = progress;
-        if (progress <= 0) {
-            mIconScale = SMALL_SCALE;
-            mScaledTrackPath.reset();
-            mTrackAlpha = MAX_PAINT_ALPHA;
+        // Animate scale and alpha from pending to downloading state.
+        if (ENABLE_DOWNLOAD_APP_UX_V2.get() && progress > 0 && mInternalStateProgress == 0) {
+            // Progress is changing for the first time, animate the icon scale
+            Animator iconScaleAnimator = mIconScaleMultiplier.animateToValue(1);
+            iconScaleAnimator.setDuration(SCALE_AND_ALPHA_ANIM_DURATION);
+            iconScaleAnimator.setInterpolator(EMPHASIZED);
+            iconScaleAnimator.start();
         }
 
-        if (progress < 1 && progress > 0) {
-            mPathMeasure.getSegment(0, progress * mTrackLength, mScaledProgressPath, true);
-            mIconScale = SMALL_SCALE;
-            mTrackAlpha = MAX_PAINT_ALPHA;
-        } else if (progress >= 1) {
-            setIsDisabled(mItem.isDisabled());
-            mScaledTrackPath.set(mScaledProgressPath);
-            float fraction = (progress - 1) / COMPLETE_ANIM_FRACTION;
-
-            if (fraction >= 1) {
-                // Animation has completed
-                mIconScale = 1;
-                mTrackAlpha = 0;
-            } else {
-                mTrackAlpha = Math.round((1 - fraction) * MAX_PAINT_ALPHA);
-                mIconScale = SMALL_SCALE + (1 - SMALL_SCALE) * fraction;
+        mInternalStateProgress = progress;
+        if (progress <= 0) {
+            if (!ENABLE_DOWNLOAD_APP_UX_V2.get()) {
+                mScaledTrackPath.reset();
+            }
+            mIconScaleMultiplier.updateValue(0);
+        } else {
+            mPathMeasure.getSegment(
+                    0, Math.min(progress, 1) * mTrackLength, mScaledProgressPath, true);
+            if (progress > 1 && ENABLE_DOWNLOAD_APP_UX_V2.get()) {
+                // map the scale back to original value
+                mIconScaleMultiplier.updateValue(Utilities.mapBoundToRange(
+                        progress - 1, 0, COMPLETE_ANIM_FRACTION, 1, 0, EMPHASIZED));
             }
         }
         invalidateSelf();
     }
 
     private static int[] getPreloadColors(Context context) {
-        Context dayNightThemeContext = new ContextThemeWrapper(
-                context, android.R.style.Theme_DeviceDefault_DayNight);
         int[] preloadColors = new int[2];
 
-        preloadColors[PRELOAD_ACCENT_COLOR_INDEX] = Themes.getColorAccent(dayNightThemeContext);
-        preloadColors[PRELOAD_BACKGROUND_COLOR_INDEX] = Themes.getColorBackgroundFloating(
-                dayNightThemeContext);
+        preloadColors[PRELOAD_ACCENT_COLOR_INDEX] = Themes.getAttrColor(context,
+                R.attr.preloadIconAccentColor);
+        preloadColors[PRELOAD_BACKGROUND_COLOR_INDEX] = Themes.getAttrColor(context,
+                R.attr.preloadIconBackgroundColor);
 
         return preloadColors;
     }
-
     /**
      * Returns a FastBitmapDrawable with the icon.
      */
@@ -352,7 +406,8 @@
                 mItem,
                 mIndicatorColor,
                 new int[] {mSystemAccentColor, mSystemBackgroundColor},
-                mIsDarkMode);
+                mIsDarkMode,
+                mShapePath);
     }
 
     protected static class PreloadIconConstantState extends FastBitmapConstantState {
@@ -362,6 +417,7 @@
         protected final int[] mPreloadColors;
         protected final boolean mIsDarkMode;
         protected final int mLevel;
+        private final Path mShapePath;
 
         public PreloadIconConstantState(
                 Bitmap bitmap,
@@ -369,13 +425,15 @@
                 ItemInfoWithIcon info,
                 int indicatorColor,
                 int[] preloadColors,
-                boolean isDarkMode) {
+                boolean isDarkMode,
+                Path shapePath) {
             super(bitmap, iconColor);
             mInfo = info;
             mIndicatorColor = indicatorColor;
             mPreloadColors = preloadColors;
             mIsDarkMode = isDarkMode;
             mLevel = info.getProgressLevel();
+            mShapePath = shapePath;
         }
 
         @Override
@@ -384,7 +442,8 @@
                     mInfo,
                     mIndicatorColor,
                     mPreloadColors,
-                    mIsDarkMode);
+                    mIsDarkMode,
+                    mShapePath);
         }
     }
 }
diff --git a/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java b/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java
index fd11b37..e89c0c5 100644
--- a/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java
+++ b/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java
@@ -16,16 +16,20 @@
 
 package com.android.launcher3.graphics;
 
+import static com.android.launcher3.LauncherSettings.Favorites.TABLE_NAME;
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
 import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
 
 import android.app.WallpaperColors;
 import android.appwidget.AppWidgetProviderInfo;
 import android.content.Context;
+import android.database.Cursor;
 import android.hardware.display.DisplayManager;
 import android.os.Bundle;
 import android.os.IBinder;
 import android.util.Log;
+import android.util.Size;
+import android.util.SparseArray;
 import android.view.ContextThemeWrapper;
 import android.view.Display;
 import android.view.SurfaceControlViewHost;
@@ -34,6 +38,8 @@
 import android.view.WindowManager.LayoutParams;
 import android.view.animation.AccelerateDecelerateInterpolator;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.annotation.UiThread;
 import androidx.annotation.WorkerThread;
 
@@ -45,8 +51,12 @@
 import com.android.launcher3.Workspace;
 import com.android.launcher3.graphics.LauncherPreviewRenderer.PreviewContext;
 import com.android.launcher3.model.BgDataModel;
-import com.android.launcher3.model.GridSizeMigrationTaskV2;
+import com.android.launcher3.model.BgDataModel.Callbacks;
+import com.android.launcher3.model.GridSizeMigrationUtil;
+import com.android.launcher3.model.LauncherBinder;
 import com.android.launcher3.model.LoaderTask;
+import com.android.launcher3.model.ModelDbController;
+import com.android.launcher3.provider.LauncherDbUtils;
 import com.android.launcher3.util.ComponentKey;
 import com.android.launcher3.util.RunnableList;
 import com.android.launcher3.util.Themes;
@@ -82,6 +92,8 @@
     private final SurfaceControlViewHost mSurfaceControlViewHost;
 
     private boolean mDestroyed = false;
+    private LauncherPreviewRenderer mRenderer;
+    private boolean mHideQsb;
 
     public PreviewSurfaceRenderer(Context context, Bundle bundle) throws Exception {
         mContext = context;
@@ -92,6 +104,7 @@
             gridName = InvariantDeviceProfile.getCurrentGridName(context);
         }
         mWallpaperColors = bundle.getParcelable(KEY_COLORS);
+        mHideQsb = bundle.getBoolean(GridCustomizationsProvider.KEY_HIDE_BOTTOM_ROW);
         mIdp = new InvariantDeviceProfile(context, gridName);
 
         mHostToken = bundle.getBinder(KEY_HOST_TOKEN);
@@ -124,16 +137,66 @@
     }
 
     /**
+     * A function that queries for the launcher app widget span info
+     *
+     * @param context The context to get the content resolver from, should be related to launcher
+     * @return A SparseArray with the app widget id being the key and the span info being the values
+     */
+    @WorkerThread
+    @Nullable
+    public SparseArray<Size> getLoadedLauncherWidgetInfo(
+            @NonNull final Context context) {
+        final SparseArray<Size> widgetInfo = new SparseArray<>();
+        final String query = LauncherSettings.Favorites.ITEM_TYPE + " = "
+                + LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET;
+
+        ModelDbController mainController =
+                LauncherAppState.getInstance(mContext).getModel().getModelDbController();
+        try (Cursor c = mainController.query(TABLE_NAME,
+                new String[] {
+                        LauncherSettings.Favorites.APPWIDGET_ID,
+                        LauncherSettings.Favorites.SPANX,
+                        LauncherSettings.Favorites.SPANY
+                }, query, null, null)) {
+            final int appWidgetIdIndex = c.getColumnIndexOrThrow(
+                    LauncherSettings.Favorites.APPWIDGET_ID);
+            final int spanXIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.SPANX);
+            final int spanYIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites.SPANY);
+            while (c.moveToNext()) {
+                final int appWidgetId = c.getInt(appWidgetIdIndex);
+                final int spanX = c.getInt(spanXIndex);
+                final int spanY = c.getInt(spanYIndex);
+
+                widgetInfo.append(appWidgetId, new Size(spanX, spanY));
+            }
+        } catch (Exception e) {
+            Log.e(TAG, "Error querying for launcher widget info", e);
+            return null;
+        }
+
+        return widgetInfo;
+    }
+
+    /**
      * Generates the preview in background
      */
     public void loadAsync() {
         MODEL_EXECUTOR.execute(this::loadModelData);
     }
 
+    /**
+     * Hides the components in the bottom row.
+     *
+     * @param hide True to hide and false to show.
+     */
+    public void hideBottomRow(boolean hide) {
+        if (mRenderer != null) {
+            mRenderer.hideBottomRow(hide);
+        }
+    }
+
     @WorkerThread
     private void loadModelData() {
-        final boolean migrated = doGridMigrationIfNecessary();
-
         final Context inflationContext;
         if (mWallpaperColors != null) {
             // Create a themed context, without affecting the main application context
@@ -151,31 +214,47 @@
                     Themes.getActivityThemeRes(mContext));
         }
 
-        if (migrated) {
+        if (GridSizeMigrationUtil.needsToMigrate(inflationContext, mIdp)) {
+            // Start the migration
             PreviewContext previewContext = new PreviewContext(inflationContext, mIdp);
+            // Copy existing data to preview DB
+            LauncherDbUtils.copyTable(LauncherAppState.getInstance(mContext)
+                    .getModel().getModelDbController().getDb(),
+                    TABLE_NAME,
+                    LauncherAppState.getInstance(previewContext)
+                            .getModel().getModelDbController().getDb(),
+                    TABLE_NAME,
+                    mContext);
+            LauncherAppState.getInstance(previewContext)
+                    .getModel().getModelDbController().clearEmptyDbFlag();
+
+            BgDataModel bgModel = new BgDataModel();
             new LoaderTask(
                     LauncherAppState.getInstance(previewContext),
                     /* bgAllAppsList= */ null,
-                    new BgDataModel(),
+                    bgModel,
                     LauncherAppState.getInstance(previewContext).getModel().getModelDelegate(),
-                    /* results= */ null) {
+                    new LauncherBinder(LauncherAppState.getInstance(previewContext), bgModel,
+                            /* bgAllAppsList= */ null, new Callbacks[0])) {
 
                 @Override
                 public void run() {
                     DeviceProfile deviceProfile = mIdp.getDeviceProfile(previewContext);
                     String query =
                             LauncherSettings.Favorites.SCREEN + " = " + Workspace.FIRST_SCREEN_ID
-                            + " or " + LauncherSettings.Favorites.CONTAINER + " = "
-                            + LauncherSettings.Favorites.CONTAINER_HOTSEAT;
+                                    + " or " + LauncherSettings.Favorites.CONTAINER + " = "
+                                    + LauncherSettings.Favorites.CONTAINER_HOTSEAT;
                     if (deviceProfile.isTwoPanels) {
                         query += " or " + LauncherSettings.Favorites.SCREEN + " = "
                                 + Workspace.SECOND_SCREEN_ID;
                     }
-                    loadWorkspace(new ArrayList<>(), LauncherSettings.Favorites.PREVIEW_CONTENT_URI,
-                            query);
+                    loadWorkspace(new ArrayList<>(), query, null);
+
+                    final SparseArray<Size> spanInfo =
+                            getLoadedLauncherWidgetInfo(previewContext.getBaseContext());
 
                     MAIN_EXECUTOR.execute(() -> {
-                        renderView(previewContext, mBgDataModel, mWidgetProvidersMap);
+                        renderView(previewContext, mBgDataModel, mWidgetProvidersMap, spanInfo);
                         mOnDestroyCallbacks.add(previewContext::onDestroy);
                     });
                 }
@@ -183,7 +262,8 @@
         } else {
             LauncherAppState.getInstance(inflationContext).getModel().loadAsync(dataModel -> {
                 if (dataModel != null) {
-                    MAIN_EXECUTOR.execute(() -> renderView(inflationContext, dataModel, null));
+                    MAIN_EXECUTOR.execute(() -> renderView(inflationContext, dataModel, null,
+                            null));
                 } else {
                     Log.e(TAG, "Model loading failed");
                 }
@@ -191,22 +271,17 @@
         }
     }
 
-    @WorkerThread
-    private boolean doGridMigrationIfNecessary() {
-        if (!GridSizeMigrationTaskV2.needsToMigrate(mContext, mIdp)) {
-            return false;
-        }
-        return GridSizeMigrationTaskV2.migrateGridIfNeeded(mContext, mIdp);
-    }
-
     @UiThread
     private void renderView(Context inflationContext, BgDataModel dataModel,
-            Map<ComponentKey, AppWidgetProviderInfo> widgetProviderInfoMap) {
+            Map<ComponentKey, AppWidgetProviderInfo> widgetProviderInfoMap,
+            @Nullable final SparseArray<Size> launcherWidgetSpanInfo) {
         if (mDestroyed) {
             return;
         }
-        View view = new LauncherPreviewRenderer(inflationContext, mIdp, mWallpaperColors)
-                .getRenderedView(dataModel, widgetProviderInfoMap);
+        mRenderer = new LauncherPreviewRenderer(inflationContext, mIdp,
+                mWallpaperColors, launcherWidgetSpanInfo);
+        mRenderer.hideBottomRow(mHideQsb);
+        View view = mRenderer.getRenderedView(dataModel, widgetProviderInfoMap);
         // This aspect scales the view to fit in the surface and centers it
         final float scale = Math.min(mWidth / (float) view.getMeasuredWidth(),
                 mHeight / (float) view.getMeasuredHeight());
diff --git a/src/com/android/launcher3/graphics/ShadowDrawable.java b/src/com/android/launcher3/graphics/ShadowDrawable.java
deleted file mode 100644
index d8a7070..0000000
--- a/src/com/android/launcher3/graphics/ShadowDrawable.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * 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.launcher3.graphics;
-
-import android.annotation.TargetApi;
-import android.content.res.Resources;
-import android.content.res.TypedArray;
-import android.graphics.Bitmap;
-import android.graphics.BlurMaskFilter;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.ColorFilter;
-import android.graphics.Paint;
-import android.graphics.PixelFormat;
-import android.graphics.Rect;
-import android.graphics.drawable.Drawable;
-import android.os.Build;
-import android.util.AttributeSet;
-
-import com.android.launcher3.R;
-import com.android.launcher3.icons.BitmapRenderer;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.IOException;
-
-/**
- * A drawable which adds shadow around a child drawable.
- */
-@TargetApi(Build.VERSION_CODES.O)
-public class ShadowDrawable extends Drawable {
-
-    private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
-
-    private final ShadowDrawableState mState;
-
-    @SuppressWarnings("unused")
-    public ShadowDrawable() {
-        this(new ShadowDrawableState());
-    }
-
-    private ShadowDrawable(ShadowDrawableState state) {
-        mState = state;
-    }
-
-    @Override
-    public void draw(Canvas canvas) {
-        Rect bounds = getBounds();
-        if (bounds.isEmpty()) {
-            return;
-        }
-        if (mState.mLastDrawnBitmap == null) {
-            regenerateBitmapCache();
-        }
-        canvas.drawBitmap(mState.mLastDrawnBitmap, null, bounds, mPaint);
-    }
-
-    @Override
-    public void setAlpha(int alpha) {
-        mPaint.setAlpha(alpha);
-        invalidateSelf();
-    }
-
-    @Override
-    public void setColorFilter(ColorFilter colorFilter) {
-        mPaint.setColorFilter(colorFilter);
-        invalidateSelf();
-    }
-
-    @Override
-    public ConstantState getConstantState() {
-        return mState;
-    }
-
-    @Override
-    public int getOpacity() {
-        return PixelFormat.TRANSLUCENT;
-    }
-
-    @Override
-    public int getIntrinsicHeight() {
-        return mState.mIntrinsicHeight;
-    }
-
-    @Override
-    public int getIntrinsicWidth() {
-        return mState.mIntrinsicWidth;
-    }
-
-    @Override
-    public boolean canApplyTheme() {
-        return mState.canApplyTheme();
-    }
-
-    @Override
-    public void applyTheme(Resources.Theme t) {
-        TypedArray ta = t.obtainStyledAttributes(new int[] {R.attr.isWorkspaceDarkText});
-        boolean isDark = ta.getBoolean(0, false);
-        ta.recycle();
-        if (mState.mIsDark != isDark) {
-            mState.mIsDark = isDark;
-            mState.mLastDrawnBitmap = null;
-            invalidateSelf();
-        }
-    }
-
-    private void regenerateBitmapCache() {
-        // Call mutate, so that the pixel allocation by the underlying vector drawable is cleared.
-        Drawable d = mState.mChildState.newDrawable().mutate();
-        d.setBounds(mState.mShadowSize, mState.mShadowSize,
-                mState.mIntrinsicWidth - mState.mShadowSize,
-                mState.mIntrinsicHeight - mState.mShadowSize);
-        d.setTint(mState.mIsDark ? mState.mDarkTintColor : Color.WHITE);
-
-        if (mState.mIsDark) {
-            // Dark text do not have any shadow, but just the bitmap
-            mState.mLastDrawnBitmap = BitmapRenderer.createHardwareBitmap(
-                    mState.mIntrinsicWidth, mState.mIntrinsicHeight, d::draw);
-        } else {
-            Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
-            paint.setMaskFilter(new BlurMaskFilter(mState.mShadowSize, BlurMaskFilter.Blur.NORMAL));
-
-            // Generate the shadow bitmap
-            int[] offset = new int[2];
-            Bitmap shadow = BitmapRenderer.createSoftwareBitmap(
-                    mState.mIntrinsicWidth, mState.mIntrinsicHeight, d::draw)
-                    .extractAlpha(paint, offset);
-
-            paint.setMaskFilter(null);
-            paint.setColor(mState.mShadowColor);
-            mState.mLastDrawnBitmap = BitmapRenderer.createHardwareBitmap(
-                    mState.mIntrinsicWidth, mState.mIntrinsicHeight, c -> {
-                        c.drawBitmap(shadow, offset[0], offset[1], paint);
-                        d.draw(c);
-                    });
-        }
-    }
-
-    @Override
-    public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs,
-            Resources.Theme theme) throws XmlPullParserException, IOException {
-        super.inflate(r, parser, attrs, theme);
-
-        final TypedArray a = theme == null
-                ? r.obtainAttributes(attrs, R.styleable.ShadowDrawable)
-                : theme.obtainStyledAttributes(attrs, R.styleable.ShadowDrawable, 0, 0);
-        try {
-            Drawable d = a.getDrawable(R.styleable.ShadowDrawable_android_src);
-            if (d == null) {
-                throw new XmlPullParserException("missing src attribute");
-            }
-            mState.mShadowColor = a.getColor(
-                    R.styleable.ShadowDrawable_android_shadowColor, Color.BLACK);
-            mState.mShadowSize = a.getDimensionPixelSize(
-                    R.styleable.ShadowDrawable_android_elevation, 0);
-            mState.mDarkTintColor = a.getColor(
-                    R.styleable.ShadowDrawable_darkTintColor, Color.BLACK);
-
-            mState.mIntrinsicHeight = d.getIntrinsicHeight() + 2 * mState.mShadowSize;
-            mState.mIntrinsicWidth = d.getIntrinsicWidth() + 2 * mState.mShadowSize;
-            mState.mChangingConfigurations = d.getChangingConfigurations();
-
-            mState.mChildState = d.getConstantState();
-        } finally {
-            a.recycle();
-        }
-    }
-
-    private static class ShadowDrawableState extends ConstantState {
-
-        int mChangingConfigurations;
-        int mIntrinsicWidth;
-        int mIntrinsicHeight;
-
-        int mShadowColor;
-        int mShadowSize;
-        int mDarkTintColor;
-
-        boolean mIsDark;
-        Bitmap mLastDrawnBitmap;
-        ConstantState mChildState;
-
-        @Override
-        public Drawable newDrawable() {
-            return new ShadowDrawable(this);
-        }
-
-        @Override
-        public int getChangingConfigurations() {
-            return mChangingConfigurations;
-        }
-
-        @Override
-        public boolean canApplyTheme() {
-            return true;
-        }
-    }
-}
diff --git a/src/com/android/launcher3/graphics/SysUiScrim.java b/src/com/android/launcher3/graphics/SysUiScrim.java
index f0766c5..21ebc98 100644
--- a/src/com/android/launcher3/graphics/SysUiScrim.java
+++ b/src/com/android/launcher3/graphics/SysUiScrim.java
@@ -16,17 +16,10 @@
 
 package com.android.launcher3.graphics;
 
-import static android.content.Intent.ACTION_SCREEN_OFF;
-import static android.content.Intent.ACTION_USER_PRESENT;
-
 import static com.android.launcher3.config.FeatureFlags.KEYGUARD_ANIMATION;
 import static com.android.launcher3.icons.GraphicsUtils.setColorAlphaBound;
 
 import android.animation.ObjectAnimator;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Color;
@@ -39,16 +32,14 @@
 import android.util.DisplayMetrics;
 import android.util.FloatProperty;
 import android.view.View;
-import android.view.WindowInsets;
 
 import com.android.launcher3.BaseDraggingActivity;
+import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.R;
-import com.android.launcher3.ResourceUtils;
-import com.android.launcher3.Utilities;
-import com.android.launcher3.config.FeatureFlags;
-import com.android.launcher3.util.DynamicResource;
+import com.android.launcher3.testing.shared.ResourceUtils;
+import com.android.launcher3.util.ScreenOnTracker;
+import com.android.launcher3.util.ScreenOnTracker.ScreenOnListener;
 import com.android.launcher3.util.Themes;
-import com.android.systemui.plugins.ResourceProvider;
 
 /**
  * View scrim which draws behind hotseat and workspace
@@ -85,18 +76,20 @@
     /**
      * Receiver used to get a signal that the user unlocked their device.
      */
-    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+    private final ScreenOnListener mScreenOnListener = new ScreenOnListener() {
         @Override
-        public void onReceive(Context context, Intent intent) {
-            final String action = intent.getAction();
-            if (ACTION_SCREEN_OFF.equals(action)) {
+        public void onScreenOnChanged(boolean isOn) {
+            if (!isOn) {
                 mAnimateScrimOnNextDraw = true;
-            } else if (ACTION_USER_PRESENT.equals(action)) {
-                // ACTION_USER_PRESENT is sent after onStart/onResume. This covers the case where
-                // the user unlocked and the Launcher is not in the foreground.
-                mAnimateScrimOnNextDraw = false;
             }
         }
+
+        @Override
+        public void onUserPresent() {
+            // ACTION_USER_PRESENT is sent after onStart/onResume. This covers the case where
+            // the user unlocked and the Launcher is not in the foreground.
+            mAnimateScrimOnNextDraw = false;
+        }
     };
 
     private static final int MAX_HOTSEAT_SCRIM_ALPHA = 100;
@@ -104,10 +97,8 @@
     private static final int ALPHA_MASK_BITMAP_DP = 200;
     private static final int ALPHA_MASK_WIDTH_DP = 2;
 
-    private boolean mDrawTopScrim, mDrawBottomScrim, mDrawWallpaperScrim;
+    private boolean mDrawTopScrim, mDrawBottomScrim;
 
-    private final RectF mWallpaperScrimRect = new RectF();
-    private final Paint mWallpaperScrimPaint = new Paint();
     private final RectF mFinalMaskRect = new RectF();
     private final Paint mBottomMaskPaint = new Paint(Paint.FILTER_BITMAP_FLAG);
     private final Bitmap mBottomMask;
@@ -122,7 +113,6 @@
 
     private boolean mAnimateScrimOnNextDraw = false;
     private float mSysUiAnimMultiplier = 1;
-    private int mWallpaperScrimMaxAlpha;
 
     public SysUiScrim(View view) {
         mRoot = view;
@@ -130,16 +120,14 @@
         mMaskHeight = ResourceUtils.pxFromDp(ALPHA_MASK_BITMAP_DP,
                 view.getResources().getDisplayMetrics());
         mTopScrim = Themes.getAttrDrawable(view.getContext(), R.attr.workspaceStatusBarScrim);
-        mBottomMask = mTopScrim == null ? null : createDitheredAlphaMask();
-        mHideSysUiScrim = mTopScrim == null;
-
-        mDrawWallpaperScrim = FeatureFlags.ENABLE_WALLPAPER_SCRIM.get()
-                && !Themes.getAttrBoolean(view.getContext(), R.attr.isMainColorDark)
-                && !Themes.getAttrBoolean(view.getContext(), R.attr.isWorkspaceDarkText);
-        ResourceProvider rp = DynamicResource.provider(view.getContext());
-        int wallpaperScrimColor = rp.getColor(R.color.wallpaper_scrim_color);
-        mWallpaperScrimMaxAlpha = Color.alpha(wallpaperScrimColor);
-        mWallpaperScrimPaint.setColor(wallpaperScrimColor);
+        if (mTopScrim != null) {
+            mTopScrim.setDither(true);
+            mBottomMask = createDitheredAlphaMask();
+            mHideSysUiScrim = false;
+        } else {
+            mBottomMask = null;
+            mHideSysUiScrim = true;
+        }
 
         view.addOnAttachStateChangeListener(this);
     }
@@ -165,9 +153,6 @@
                 mAnimateScrimOnNextDraw = false;
             }
 
-            if (mDrawWallpaperScrim) {
-                canvas.drawRect(mWallpaperScrimRect, mWallpaperScrimPaint);
-            }
             if (mDrawTopScrim) {
                 mTopScrim.draw(canvas);
             }
@@ -188,36 +173,31 @@
 
     /**
      * Determines whether to draw the top and/or bottom scrim based on new insets.
+     *
+     * In order for the bottom scrim to be drawn this 3 condition should be meet at the same time:
+     * the device is in 3 button navigation, the taskbar is not present and the Hotseat is
+     * horizontal
      */
     public void onInsetsChanged(Rect insets) {
+        DeviceProfile dp = mActivity.getDeviceProfile();
         mDrawTopScrim = mTopScrim != null && insets.top > 0;
         mDrawBottomScrim = mBottomMask != null
-                && !mActivity.getDeviceProfile().isVerticalBarLayout()
-                && hasBottomNavButtons();
-    }
-
-    private boolean hasBottomNavButtons() {
-        if (Utilities.ATLEAST_Q && mActivity.getRootView() != null
-                && mActivity.getRootView().getRootWindowInsets() != null) {
-            WindowInsets windowInsets = mActivity.getRootView().getRootWindowInsets();
-            return windowInsets.getTappableElementInsets().bottom > 0;
-        }
-        return true;
+                && !dp.isVerticalBarLayout()
+                && !dp.isGestureMode
+                && !dp.isTaskbarPresent;
     }
 
     @Override
     public void onViewAttachedToWindow(View view) {
         if (!KEYGUARD_ANIMATION.get() && mTopScrim != null) {
-            IntentFilter filter = new IntentFilter(ACTION_SCREEN_OFF);
-            filter.addAction(ACTION_USER_PRESENT); // When the device wakes up + keyguard is gone
-            mRoot.getContext().registerReceiver(mReceiver, filter);
+            ScreenOnTracker.INSTANCE.get(mActivity).addListener(mScreenOnListener);
         }
     }
 
     @Override
     public void onViewDetachedFromWindow(View view) {
         if (!KEYGUARD_ANIMATION.get() && mTopScrim != null) {
-            mRoot.getContext().unregisterReceiver(mReceiver);
+            ScreenOnTracker.INSTANCE.get(mActivity).removeListener(mScreenOnListener);
         }
     }
 
@@ -231,7 +211,6 @@
             mTopScrim.setBounds(0, 0, w, h);
             mFinalMaskRect.set(0, h - mMaskHeight, w, h);
         }
-        mWallpaperScrimRect.set(0, 0, w, h);
     }
 
     private void setSysUiProgress(float progress) {
@@ -254,7 +233,6 @@
         if (mTopScrim != null) {
             mTopScrim.setAlpha(Math.round(255 * factor));
         }
-        mWallpaperScrimPaint.setAlpha(Math.round(mWallpaperScrimMaxAlpha * factor));
     }
 
     private Bitmap createDitheredAlphaMask() {
diff --git a/src/com/android/launcher3/icons/ComponentWithLabel.java b/src/com/android/launcher3/icons/ComponentWithLabel.java
index 372c591..30575fc 100644
--- a/src/com/android/launcher3/icons/ComponentWithLabel.java
+++ b/src/com/android/launcher3/icons/ComponentWithLabel.java
@@ -20,6 +20,8 @@
 import android.content.pm.PackageManager;
 import android.os.UserHandle;
 
+import androidx.annotation.NonNull;
+
 import com.android.launcher3.icons.cache.CachingLogic;
 
 public interface ComponentWithLabel {
@@ -42,22 +44,26 @@
         }
 
         @Override
-        public ComponentName getComponent(T object) {
+        @NonNull
+        public ComponentName getComponent(@NonNull T object) {
             return object.getComponent();
         }
 
+        @NonNull
         @Override
-        public UserHandle getUser(T object) {
+        public UserHandle getUser(@NonNull T object) {
             return object.getUser();
         }
 
+        @NonNull
         @Override
-        public CharSequence getLabel(T object) {
+        public CharSequence getLabel(@NonNull T object) {
             return object.getLabel(mPackageManager);
         }
 
+        @NonNull
         @Override
-        public BitmapInfo loadIcon(Context context, T object) {
+        public BitmapInfo loadIcon(@NonNull Context context, @NonNull T object) {
             return BitmapInfo.LOW_RES_INFO;
         }
 
diff --git a/src/com/android/launcher3/icons/ComponentWithLabelAndIcon.java b/src/com/android/launcher3/icons/ComponentWithLabelAndIcon.java
index c8606b1..0a52dd7 100644
--- a/src/com/android/launcher3/icons/ComponentWithLabelAndIcon.java
+++ b/src/com/android/launcher3/icons/ComponentWithLabelAndIcon.java
@@ -41,7 +41,8 @@
 
         @NonNull
         @Override
-        public BitmapInfo loadIcon(Context context, ComponentWithLabelAndIcon object) {
+        public BitmapInfo loadIcon(@NonNull Context context,
+                @NonNull ComponentWithLabelAndIcon object) {
             Drawable d = object.getFullResIcon(LauncherAppState.getInstance(context)
                     .getIconCache());
             if (d == null) {
diff --git a/src/com/android/launcher3/icons/IconCache.java b/src/com/android/launcher3/icons/IconCache.java
index fe9b633..2f7f51e 100644
--- a/src/com/android/launcher3/icons/IconCache.java
+++ b/src/com/android/launcher3/icons/IconCache.java
@@ -46,12 +46,11 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
 import androidx.core.util.Pair;
 
 import com.android.launcher3.InvariantDeviceProfile;
-import com.android.launcher3.LauncherFiles;
 import com.android.launcher3.Utilities;
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.icons.ComponentWithLabel.ComponentCachingLogic;
 import com.android.launcher3.icons.cache.BaseIconCache;
 import com.android.launcher3.icons.cache.CachingLogic;
@@ -61,6 +60,7 @@
 import com.android.launcher3.model.data.ItemInfoWithIcon;
 import com.android.launcher3.model.data.PackageItemInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
+import com.android.launcher3.pm.InstallSessionHelper;
 import com.android.launcher3.pm.UserCache;
 import com.android.launcher3.shortcuts.ShortcutKey;
 import com.android.launcher3.util.InstantAppResolver;
@@ -82,6 +82,11 @@
  */
 public class IconCache extends BaseIconCache {
 
+    // Shortcut extra which can point to a packageName and can be used to indicate an alternate
+    // badge info. Launcher only reads this if the shortcut comes from a system app.
+    public static final String EXTRA_SHORTCUT_BADGE_OVERRIDE_PACKAGE =
+            "extra_shortcut_badge_override_package";
+
     private static final String TAG = "Launcher.IconCache";
 
     private final Predicate<ItemInfoWithIcon> mIsUsingFallbackOrNonDefaultIconCheck = w ->
@@ -95,15 +100,12 @@
     private final UserCache mUserManager;
     private final InstantAppResolver mInstantAppResolver;
     private final IconProvider mIconProvider;
+    private final HandlerRunnable mCancelledRunnable;
 
     private final SparseArray<BitmapInfo> mWidgetCategoryBitmapInfos;
 
     private int mPendingIconRequestCount = 0;
 
-    public IconCache(Context context, InvariantDeviceProfile idp) {
-        this(context, idp, LauncherFiles.APP_ICONS_DB, new IconProvider(context));
-    }
-
     public IconCache(Context context, InvariantDeviceProfile idp, String dbFileName,
             IconProvider iconProvider) {
         super(context, dbFileName, MODEL_EXECUTOR.getLooper(),
@@ -116,18 +118,23 @@
         mInstantAppResolver = InstantAppResolver.newInstance(mContext);
         mIconProvider = iconProvider;
         mWidgetCategoryBitmapInfos = new SparseArray<>();
+
+        mCancelledRunnable = new HandlerRunnable(
+                mWorkerHandler, () -> null, MAIN_EXECUTOR, c -> { });
+        mCancelledRunnable.cancel();
     }
 
     @Override
-    protected long getSerialNumberForUser(UserHandle user) {
+    protected long getSerialNumberForUser(@NonNull UserHandle user) {
         return mUserManager.getSerialNumberForUser(user);
     }
 
     @Override
-    protected boolean isInstantApp(ApplicationInfo info) {
+    protected boolean isInstantApp(@NonNull ApplicationInfo info) {
         return mInstantAppResolver.isInstantApp(info);
     }
 
+    @NonNull
     @Override
     public BaseIconFactory getIconFactory() {
         return LauncherIcons.obtain(mContext);
@@ -136,7 +143,8 @@
     /**
      * Updates the entries related to the given package in memory and persistent DB.
      */
-    public synchronized void updateIconsForPkg(String packageName, UserHandle user) {
+    public synchronized void updateIconsForPkg(@NonNull final String packageName,
+            @NonNull final UserHandle user) {
         removeIconsForPkg(packageName, user);
         try {
             PackageInfo info = mPackageManager.getPackageInfo(packageName,
@@ -169,23 +177,30 @@
     public HandlerRunnable updateIconInBackground(final ItemInfoUpdateReceiver caller,
             final ItemInfoWithIcon info) {
         Preconditions.assertUIThread();
+        Supplier<ItemInfoWithIcon> task;
+        if (info instanceof AppInfo || info instanceof WorkspaceItemInfo) {
+            task = () -> {
+                getTitleAndIcon(info, false);
+                return info;
+            };
+        } else if (info instanceof PackageItemInfo pii) {
+            task = () -> {
+                getTitleAndIconForApp(pii, false);
+                return pii;
+            };
+        } else {
+            Log.i(TAG, "Icon update not supported for "
+                    + info == null ? "null" : info.getClass().getName());
+            return mCancelledRunnable;
+        }
+
         if (mPendingIconRequestCount <= 0) {
             MODEL_EXECUTOR.setThreadPriority(Process.THREAD_PRIORITY_FOREGROUND);
         }
         mPendingIconRequestCount++;
 
         HandlerRunnable<ItemInfoWithIcon> request = new HandlerRunnable<>(mWorkerHandler,
-                () -> {
-                    if (info instanceof AppInfo || info instanceof WorkspaceItemInfo) {
-                        getTitleAndIcon(info, false);
-                    } else if (info instanceof PackageItemInfo) {
-                        getTitleAndIconForApp((PackageItemInfo) info, false);
-                    }
-                    return info;
-                },
-                MAIN_EXECUTOR,
-                caller::reapplyItemInfo,
-                this::onIconRequestEnd);
+                task, MAIN_EXECUTOR, caller::reapplyItemInfo, this::onIconRequestEnd);
         Utilities.postAsyncCallback(mWorkerHandler, request);
         return request;
     }
@@ -231,14 +246,8 @@
      */
     public <T extends ItemInfoWithIcon> void getShortcutIcon(T info, ShortcutInfo si,
             @NonNull Predicate<T> fallbackIconCheck) {
-        BitmapInfo bitmapInfo;
-        if (FeatureFlags.ENABLE_DEEP_SHORTCUT_ICON_CACHE.get()) {
-            bitmapInfo = cacheLocked(ShortcutKey.fromInfo(si).componentName, si.getUserHandle(),
-                    () -> si, mShortcutCachingLogic, false, false).bitmap;
-        } else {
-            // If caching is disabled, load the full icon
-            bitmapInfo = mShortcutCachingLogic.loadIcon(mContext, si);
-        }
+        BitmapInfo bitmapInfo = cacheLocked(ShortcutKey.fromInfo(si).componentName,
+                si.getUserHandle(), () -> si, mShortcutCachingLogic, false, false).bitmap;
         if (bitmapInfo.isNullOrLowRes()) {
             bitmapInfo = getDefaultIcon(si.getUserHandle());
         }
@@ -253,23 +262,37 @@
      * Returns the badging info for the shortcut
      */
     public BitmapInfo getShortcutInfoBadge(ShortcutInfo shortcutInfo) {
-        ComponentName cn = shortcutInfo.getActivity();
-        if (cn != null) {
-            // Get the app info for the source activity.
-            AppInfo appInfo = new AppInfo();
-            appInfo.user = shortcutInfo.getUserHandle();
-            appInfo.componentName = cn;
-            appInfo.intent = new Intent(Intent.ACTION_MAIN)
-                    .addCategory(Intent.CATEGORY_LAUNCHER)
-                    .setComponent(cn);
-            getTitleAndIcon(appInfo, false);
-            return appInfo.bitmap;
+        return getShortcutInfoBadgeItem(shortcutInfo).bitmap;
+    }
+
+    @VisibleForTesting
+    protected ItemInfoWithIcon getShortcutInfoBadgeItem(ShortcutInfo shortcutInfo) {
+        // Check for badge override first.
+        String pkg = shortcutInfo.getPackage();
+        String override = shortcutInfo.getExtras() == null ? null
+                : shortcutInfo.getExtras().getString(EXTRA_SHORTCUT_BADGE_OVERRIDE_PACKAGE);
+        if (!TextUtils.isEmpty(override)
+                && InstallSessionHelper.INSTANCE.get(mContext)
+                .isTrustedPackage(pkg, shortcutInfo.getUserHandle())) {
+            pkg = override;
         } else {
-            PackageItemInfo pkgInfo = new PackageItemInfo(shortcutInfo.getPackage(),
-                    shortcutInfo.getUserHandle());
-            getTitleAndIconForApp(pkgInfo, false);
-            return pkgInfo.bitmap;
+            // Try component based badge before trying the normal package badge
+            ComponentName cn = shortcutInfo.getActivity();
+            if (cn != null) {
+                // Get the app info for the source activity.
+                AppInfo appInfo = new AppInfo();
+                appInfo.user = shortcutInfo.getUserHandle();
+                appInfo.componentName = cn;
+                appInfo.intent = new Intent(Intent.ACTION_MAIN)
+                        .addCategory(Intent.CATEGORY_LAUNCHER)
+                        .setComponent(cn);
+                getTitleAndIcon(appInfo, false);
+                return appInfo;
+            }
         }
+        PackageItemInfo pkgInfo = new PackageItemInfo(pkg, shortcutInfo.getUserHandle());
+        getTitleAndIconForApp(pkgInfo, false);
+        return pkgInfo;
     }
 
     /**
@@ -478,7 +501,7 @@
      * Fill in {@param infoInOut} with the corresponding icon and label.
      */
     public synchronized void getTitleAndIconForApp(
-            PackageItemInfo infoInOut, boolean useLowResIcon) {
+            @NonNull final PackageItemInfo infoInOut, final boolean useLowResIcon) {
         CacheEntry entry = getEntryForPackageLocked(
                 infoInOut.packageName, infoInOut.user, useLowResIcon);
         applyCacheEntry(entry, infoInOut);
@@ -489,8 +512,7 @@
         WidgetSection widgetSection = WidgetSections.getWidgetSections(mContext)
                 .get(infoInOut.widgetCategory);
         infoInOut.title = mContext.getString(widgetSection.mSectionTitle);
-        infoInOut.contentDescription = mPackageManager.getUserBadgedLabel(
-                infoInOut.title, infoInOut.user);
+        infoInOut.contentDescription = getUserBadgedLabel(infoInOut.title, infoInOut.user);
         final BitmapInfo cachedBitmap = mWidgetCategoryBitmapInfos.get(infoInOut.widgetCategory);
         if (cachedBitmap != null) {
             infoInOut.bitmap = getBadgedIcon(cachedBitmap, infoInOut.user);
@@ -517,10 +539,16 @@
         return bitmap.withFlags(getUserFlagOpLocked(user));
     }
 
-    protected void applyCacheEntry(CacheEntry entry, ItemInfoWithIcon info) {
+    protected void applyCacheEntry(@NonNull final CacheEntry entry,
+            @NonNull final ItemInfoWithIcon info) {
         info.title = Utilities.trim(entry.title);
         info.contentDescription = entry.contentDescription;
-        info.bitmap = (entry.bitmap == null) ? getDefaultIcon(info.user) : entry.bitmap;
+        info.bitmap = entry.bitmap;
+        if (entry.bitmap == null) {
+            // TODO: entry.bitmap can never be null, so this should not happen at all.
+            Log.wtf(TAG, "Cannot find bitmap from the cache, default icon was loaded.");
+            info.bitmap = getDefaultIcon(info.user);
+        }
     }
 
     public Drawable getFullResIcon(LauncherActivityInfo info) {
@@ -533,6 +561,7 @@
     }
 
     @Override
+    @NonNull
     protected String getIconSystemState(String packageName) {
         return mIconProvider.getSystemStateForPackage(mSystemState, packageName);
     }
diff --git a/src/com/android/launcher3/icons/LauncherActivityCachingLogic.java b/src/com/android/launcher3/icons/LauncherActivityCachingLogic.java
index 4b8c1ad..406f697 100644
--- a/src/com/android/launcher3/icons/LauncherActivityCachingLogic.java
+++ b/src/com/android/launcher3/icons/LauncherActivityCachingLogic.java
@@ -20,6 +20,8 @@
 import android.content.pm.LauncherActivityInfo;
 import android.os.UserHandle;
 
+import androidx.annotation.NonNull;
+
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.R;
 import com.android.launcher3.icons.BaseIconFactory.IconOptions;
@@ -40,23 +42,27 @@
                 R.string.launcher_activity_logic_class);
     }
 
+    @NonNull
     @Override
-    public ComponentName getComponent(LauncherActivityInfo object) {
+    public ComponentName getComponent(@NonNull LauncherActivityInfo object) {
         return object.getComponentName();
     }
 
+    @NonNull
     @Override
-    public UserHandle getUser(LauncherActivityInfo object) {
+    public UserHandle getUser(@NonNull LauncherActivityInfo object) {
         return object.getUser();
     }
 
+    @NonNull
     @Override
-    public CharSequence getLabel(LauncherActivityInfo object) {
+    public CharSequence getLabel(@NonNull LauncherActivityInfo object) {
         return object.getLabel();
     }
 
+    @NonNull
     @Override
-    public BitmapInfo loadIcon(Context context, LauncherActivityInfo object) {
+    public BitmapInfo loadIcon(@NonNull Context context, @NonNull LauncherActivityInfo object) {
         try (LauncherIcons li = LauncherIcons.obtain(context)) {
             return li.createBadgedIconBitmap(LauncherAppState.getInstance(context)
                             .getIconProvider().getIcon(object, li.mFillResIconDpi),
diff --git a/src/com/android/launcher3/icons/LauncherIcons.java b/src/com/android/launcher3/icons/LauncherIcons.java
index 5508c49..57fa8a2 100644
--- a/src/com/android/launcher3/icons/LauncherIcons.java
+++ b/src/com/android/launcher3/icons/LauncherIcons.java
@@ -16,7 +16,10 @@
 
 package com.android.launcher3.icons;
 
+import static com.android.launcher3.config.FeatureFlags.ENABLE_FORCED_MONO_ICON;
+
 import android.content.Context;
+import android.graphics.drawable.Drawable;
 
 import com.android.launcher3.InvariantDeviceProfile;
 import com.android.launcher3.graphics.IconShape;
@@ -68,6 +71,8 @@
 
     private LauncherIcons next;
 
+    private MonochromeIconFactory mMonochromeIconFactory;
+
     protected LauncherIcons(Context context, int fillResIconDpi, int iconBitmapSize, int poolId) {
         super(context, fillResIconDpi, iconBitmapSize, IconShape.getShape().enableShapeDetection());
         mMonoIconEnabled = Themes.isThemedIconEnabled(context);
@@ -91,6 +96,18 @@
     }
 
     @Override
+    protected Drawable getMonochromeDrawable(Drawable base) {
+        Drawable mono = super.getMonochromeDrawable(base);
+        if (mono != null || !ENABLE_FORCED_MONO_ICON.get()) {
+            return mono;
+        }
+        if (mMonochromeIconFactory == null) {
+            mMonochromeIconFactory = new MonochromeIconFactory(mIconBitmapSize);
+        }
+        return mMonochromeIconFactory.wrap(base);
+    }
+
+    @Override
     public void close() {
         recycle();
     }
diff --git a/src/com/android/launcher3/icons/MonochromeIconFactory.java b/src/com/android/launcher3/icons/MonochromeIconFactory.java
new file mode 100644
index 0000000..511dcc7
--- /dev/null
+++ b/src/com/android/launcher3/icons/MonochromeIconFactory.java
@@ -0,0 +1,180 @@
+/*
+ * 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.launcher3.icons;
+
+import static android.graphics.Paint.FILTER_BITMAP_FLAG;
+
+import android.annotation.TargetApi;
+import android.graphics.Bitmap;
+import android.graphics.Bitmap.Config;
+import android.graphics.BlendMode;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.ColorFilter;
+import android.graphics.ColorMatrix;
+import android.graphics.ColorMatrixColorFilter;
+import android.graphics.Paint;
+import android.graphics.PixelFormat;
+import android.graphics.Rect;
+import android.graphics.drawable.AdaptiveIconDrawable;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
+
+import androidx.annotation.WorkerThread;
+
+import com.android.launcher3.icons.BaseIconFactory.ClippedMonoDrawable;
+
+import java.nio.ByteBuffer;
+
+/**
+ * Utility class to generate monochrome icons version for a given drawable.
+ */
+@TargetApi(Build.VERSION_CODES.TIRAMISU)
+public class MonochromeIconFactory extends Drawable {
+
+    private final Bitmap mFlatBitmap;
+    private final Canvas mFlatCanvas;
+    private final Paint mCopyPaint;
+
+    private final Bitmap mAlphaBitmap;
+    private final Canvas mAlphaCanvas;
+    private final byte[] mPixels;
+
+    private final int mBitmapSize;
+    private final int mEdgePixelLength;
+
+    private final Paint mDrawPaint;
+    private final Rect mSrcRect;
+
+    MonochromeIconFactory(int iconBitmapSize) {
+        float extraFactor = AdaptiveIconDrawable.getExtraInsetFraction();
+        float viewPortScale = 1 / (1 + 2 * extraFactor);
+        mBitmapSize = Math.round(iconBitmapSize * 2 * viewPortScale);
+        mPixels = new byte[mBitmapSize * mBitmapSize];
+        mEdgePixelLength = mBitmapSize * (mBitmapSize - iconBitmapSize) / 2;
+
+        mFlatBitmap = Bitmap.createBitmap(mBitmapSize, mBitmapSize, Config.ARGB_8888);
+        mFlatCanvas = new Canvas(mFlatBitmap);
+
+        mAlphaBitmap = Bitmap.createBitmap(mBitmapSize, mBitmapSize, Config.ALPHA_8);
+        mAlphaCanvas = new Canvas(mAlphaBitmap);
+
+        mDrawPaint = new Paint(FILTER_BITMAP_FLAG);
+        mDrawPaint.setColor(Color.WHITE);
+        mSrcRect = new Rect(0, 0, mBitmapSize, mBitmapSize);
+
+        mCopyPaint = new Paint(FILTER_BITMAP_FLAG);
+        mCopyPaint.setBlendMode(BlendMode.SRC);
+
+        // Crate a color matrix which converts the icon to grayscale and then uses the average
+        // of RGB components as the alpha component.
+        ColorMatrix satMatrix = new ColorMatrix();
+        satMatrix.setSaturation(0);
+        float[] vals = satMatrix.getArray();
+        vals[15] = vals[16] = vals[17] = .3333f;
+        vals[18] = vals[19] = 0;
+        mCopyPaint.setColorFilter(new ColorMatrixColorFilter(vals));
+    }
+
+    private void drawDrawable(Drawable drawable) {
+        if (drawable != null) {
+            drawable.setBounds(0, 0, mBitmapSize, mBitmapSize);
+            drawable.draw(mFlatCanvas);
+        }
+    }
+
+    /**
+     * Creates a monochrome version of the provided drawable
+     */
+    @WorkerThread
+    public Drawable wrap(Drawable icon) {
+        if (icon instanceof AdaptiveIconDrawable) {
+            AdaptiveIconDrawable aid = (AdaptiveIconDrawable) icon;
+            mFlatCanvas.drawColor(Color.BLACK);
+            drawDrawable(aid.getBackground());
+            drawDrawable(aid.getForeground());
+            generateMono();
+            return new ClippedMonoDrawable(this);
+        } else {
+            mFlatCanvas.drawColor(Color.WHITE);
+            drawDrawable(icon);
+            generateMono();
+            return this;
+        }
+    }
+
+    @WorkerThread
+    private void generateMono() {
+        mAlphaCanvas.drawBitmap(mFlatBitmap, 0, 0, mCopyPaint);
+
+        // Scale the end points:
+        ByteBuffer buffer = ByteBuffer.wrap(mPixels);
+        buffer.rewind();
+        mAlphaBitmap.copyPixelsToBuffer(buffer);
+
+        int min = 0xFF;
+        int max = 0;
+        for (byte b : mPixels) {
+            min = Math.min(min, b & 0xFF);
+            max = Math.max(max, b & 0xFF);
+        }
+
+        if (min < max) {
+            // rescale pixels to increase contrast
+            float range = max - min;
+
+            // In order to check if the colors should be flipped, we just take the average color
+            // of top and bottom edge which should correspond to be background color. If the edge
+            // colors have more opacity, we flip the colors;
+            int sum = 0;
+            for (int i = 0; i < mEdgePixelLength; i++) {
+                sum += (mPixels[i] & 0xFF);
+                sum += (mPixels[mPixels.length - 1 - i] & 0xFF);
+            }
+            float edgeAverage = sum / (mEdgePixelLength * 2f);
+            float edgeMapped = (edgeAverage - min) / range;
+            boolean flipColor = edgeMapped > .5f;
+
+            for (int i = 0; i < mPixels.length; i++) {
+                int p = mPixels[i] & 0xFF;
+                int p2 = Math.round((p - min) * 0xFF / range);
+                mPixels[i] = flipColor ? (byte) (255 - p2) : (byte) (p2);
+            }
+            buffer.rewind();
+            mAlphaBitmap.copyPixelsFromBuffer(buffer);
+        }
+    }
+
+    @Override
+    public void draw(Canvas canvas) {
+        canvas.drawBitmap(mAlphaBitmap, mSrcRect, getBounds(), mDrawPaint);
+    }
+
+    @Override
+    public int getOpacity() {
+        return PixelFormat.TRANSLUCENT;
+    }
+
+    @Override
+    public void setAlpha(int i) {
+        mDrawPaint.setAlpha(i);
+    }
+
+    @Override
+    public void setColorFilter(ColorFilter colorFilter) {
+        mDrawPaint.setColorFilter(colorFilter);
+    }
+}
diff --git a/src/com/android/launcher3/icons/ShortcutCachingLogic.java b/src/com/android/launcher3/icons/ShortcutCachingLogic.java
index 6a8f34a..bb7248f 100644
--- a/src/com/android/launcher3/icons/ShortcutCachingLogic.java
+++ b/src/com/android/launcher3/icons/ShortcutCachingLogic.java
@@ -29,9 +29,10 @@
 import android.util.Log;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 
 import com.android.launcher3.LauncherAppState;
-import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.icons.BaseIconFactory.IconOptions;
 import com.android.launcher3.icons.cache.CachingLogic;
 import com.android.launcher3.shortcuts.ShortcutKey;
 import com.android.launcher3.util.Themes;
@@ -44,41 +45,47 @@
     private static final String TAG = "ShortcutCachingLogic";
 
     @Override
-    public ComponentName getComponent(ShortcutInfo info) {
+    @NonNull
+    public ComponentName getComponent(@NonNull ShortcutInfo info) {
         return ShortcutKey.fromInfo(info).componentName;
     }
 
+    @NonNull
     @Override
-    public UserHandle getUser(ShortcutInfo info) {
+    public UserHandle getUser(@NonNull ShortcutInfo info) {
         return info.getUserHandle();
     }
 
+    @NonNull
     @Override
-    public CharSequence getLabel(ShortcutInfo info) {
+    public CharSequence getLabel(@NonNull ShortcutInfo info) {
         return info.getShortLabel();
     }
 
     @Override
-    public CharSequence getDescription(ShortcutInfo object, CharSequence fallback) {
+    @NonNull
+    public CharSequence getDescription(@NonNull ShortcutInfo object,
+            @NonNull CharSequence fallback) {
         CharSequence label = object.getLongLabel();
         return TextUtils.isEmpty(label) ? fallback : label;
     }
 
     @NonNull
     @Override
-    public BitmapInfo loadIcon(Context context, ShortcutInfo info) {
+    public BitmapInfo loadIcon(@NonNull Context context, @NonNull ShortcutInfo info) {
         try (LauncherIcons li = LauncherIcons.obtain(context)) {
             Drawable unbadgedDrawable = ShortcutCachingLogic.getIcon(
                     context, info, LauncherAppState.getIDP(context).fillResIconDpi);
             if (unbadgedDrawable == null) return BitmapInfo.LOW_RES_INFO;
-            return new BitmapInfo(li.createScaledBitmapWithoutShadow(unbadgedDrawable),
-                    Themes.getColorAccent(context));
+            return li.createBadgedIconBitmap(unbadgedDrawable,
+                    new IconOptions().setExtractedColor(Themes.getColorAccent(context)));
         }
     }
 
     @Override
-    public long getLastUpdatedTime(ShortcutInfo shortcutInfo, PackageInfo info) {
-        if (shortcutInfo == null || !FeatureFlags.ENABLE_DEEP_SHORTCUT_ICON_CACHE.get()) {
+    public long getLastUpdatedTime(@Nullable ShortcutInfo shortcutInfo,
+            @NonNull PackageInfo info) {
+        if (shortcutInfo == null) {
             return info.lastUpdateTime;
         }
         return Math.max(shortcutInfo.getLastChangedTimestamp(), info.lastUpdateTime);
diff --git a/src/com/android/launcher3/keyboard/KeyboardDragAndDropView.java b/src/com/android/launcher3/keyboard/KeyboardDragAndDropView.java
index a6c897f..408a5a0 100644
--- a/src/com/android/launcher3/keyboard/KeyboardDragAndDropView.java
+++ b/src/com/android/launcher3/keyboard/KeyboardDragAndDropView.java
@@ -17,6 +17,7 @@
 
 import static android.app.Activity.DEFAULT_KEYS_SEARCH_LOCAL;
 
+import static com.android.launcher3.LauncherState.EDIT_MODE;
 import static com.android.launcher3.LauncherState.SPRING_LOADED;
 
 import android.app.Activity;
@@ -114,7 +115,7 @@
 
     @Override
     public void onStateTransitionStart(LauncherState toState) {
-        if (toState != SPRING_LOADED) {
+        if (toState != SPRING_LOADED && toState != EDIT_MODE) {
             close(false);
         }
     }
diff --git a/src/com/android/launcher3/logging/EventLogArray.java b/src/com/android/launcher3/logging/EventLogArray.java
deleted file mode 100644
index 3ecfb23..0000000
--- a/src/com/android/launcher3/logging/EventLogArray.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright (C) 2019 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.launcher3.logging;
-
-
-import android.util.Log;
-import java.io.PrintWriter;
-import java.text.SimpleDateFormat;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.Locale;
-import java.util.Random;
-
-/**
- * A utility class to record and log events. Events are stored in a fixed size array and old logs
- * are purged as new events come.
- */
-public class EventLogArray {
-
-    private static final int TYPE_ONE_OFF = 0;
-    private static final int TYPE_FLOAT = 1;
-    private static final int TYPE_INTEGER = 2;
-    private static final int TYPE_BOOL_TRUE = 3;
-    private static final int TYPE_BOOL_FALSE = 4;
-
-    private final String name;
-    private final EventEntry[] logs;
-    private int nextIndex;
-    private int mLogId;
-
-    public EventLogArray(String name, int size) {
-        this.name = name;
-        logs = new EventEntry[size];
-        nextIndex = 0;
-    }
-
-    public void addLog(String event) {
-        addLog(TYPE_ONE_OFF, event, 0);
-    }
-
-    public void addLog(String event, int extras) {
-        addLog(TYPE_INTEGER, event, extras);
-    }
-
-    public void addLog(String event, boolean extras) {
-        addLog(extras ? TYPE_BOOL_TRUE : TYPE_BOOL_FALSE, event, 0);
-    }
-
-    private void addLog(int type, String event, float extras) {
-        // Merge the logs if its a duplicate
-        int last = (nextIndex + logs.length - 1) % logs.length;
-        int secondLast = (nextIndex + logs.length - 2) % logs.length;
-        if (isEntrySame(logs[last], type, event) && isEntrySame(logs[secondLast], type, event)) {
-            logs[last].update(type, event, extras, mLogId);
-            logs[secondLast].duplicateCount++;
-            return;
-        }
-
-        if (logs[nextIndex] == null) {
-            logs[nextIndex] = new EventEntry();
-        }
-        logs[nextIndex].update(type, event, extras, mLogId);
-        nextIndex = (nextIndex + 1) % logs.length;
-    }
-
-    public void clear() {
-        Arrays.setAll(logs, (i) -> null);
-    }
-
-    public void dump(String prefix, PrintWriter writer) {
-        writer.println(prefix + "EventLog (" + name + ") history:");
-        SimpleDateFormat sdf = new SimpleDateFormat("  HH:mm:ss.SSSZ  ", Locale.US);
-        Date date = new Date();
-
-        for (int i = 0; i < logs.length; i++) {
-            EventEntry log = logs[(nextIndex + logs.length - i - 1) % logs.length];
-            if (log == null) {
-                continue;
-            }
-            date.setTime(log.time);
-
-            StringBuilder msg = new StringBuilder(prefix).append(sdf.format(date))
-                    .append(log.event);
-            switch (log.type) {
-                case TYPE_BOOL_FALSE:
-                    msg.append(": false");
-                    break;
-                case TYPE_BOOL_TRUE:
-                    msg.append(": true");
-                    break;
-                case TYPE_FLOAT:
-                    msg.append(": ").append(log.extras);
-                    break;
-                case TYPE_INTEGER:
-                    msg.append(": ").append((int) log.extras);
-                    break;
-                default: // fall out
-            }
-            if (log.duplicateCount > 0) {
-                msg.append(" & ").append(log.duplicateCount).append(" similar events");
-            }
-            msg.append(" traceId: ").append(log.traceId);
-            writer.println(msg);
-        }
-    }
-
-    /** Returns a 3 digit random number between 100-999 */
-    public int generateAndSetLogId() {
-        Random r = new Random();
-        mLogId = r.nextInt(900) + 100;
-        return mLogId;
-    }
-
-    private boolean isEntrySame(EventEntry entry, int type, String event) {
-        return entry != null && entry.type == type && entry.event.equals(event);
-    }
-
-    /** A single event entry. */
-    private static class EventEntry {
-
-        private int type;
-        private String event;
-        private float extras;
-        private long time;
-        private int duplicateCount;
-        private int traceId;
-
-        public void update(int type, String event, float extras, int traceId) {
-            this.type = type;
-            this.event = event;
-            this.extras = extras;
-            this.traceId = traceId;
-            time = System.currentTimeMillis();
-            duplicateCount = 0;
-        }
-    }
-}
diff --git a/src/com/android/launcher3/logging/FileLog.java b/src/com/android/launcher3/logging/FileLog.java
index cdd0bda..924a440 100644
--- a/src/com/android/launcher3/logging/FileLog.java
+++ b/src/com/android/launcher3/logging/FileLog.java
@@ -67,6 +67,26 @@
         print(tag, msg);
     }
 
+    public static void i(String tag, String msg, Exception e) {
+        Log.i(tag, msg, e);
+        print(tag, msg, e);
+    }
+
+    public static void i(String tag, String msg) {
+        Log.i(tag, msg);
+        print(tag, msg);
+    }
+
+    public static void w(String tag, String msg, Exception e) {
+        Log.w(tag, msg, e);
+        print(tag, msg, e);
+    }
+
+    public static void w(String tag, String msg) {
+        Log.w(tag, msg);
+        print(tag, msg);
+    }
+
     public static void e(String tag, String msg, Exception e) {
         Log.e(tag, msg, e);
         print(tag, msg, e);
diff --git a/src/com/android/launcher3/logging/InstanceId.java b/src/com/android/launcher3/logging/InstanceId.java
index 3c4a644..5bbe07c 100644
--- a/src/com/android/launcher3/logging/InstanceId.java
+++ b/src/com/android/launcher3/logging/InstanceId.java
@@ -47,7 +47,6 @@
         this(in.readInt());
     }
 
-    @VisibleForTesting
     public int getId() {
         return mId;
     }
diff --git a/src/com/android/launcher3/logging/KeyboardStateManager.java b/src/com/android/launcher3/logging/KeyboardStateManager.java
new file mode 100644
index 0000000..6dc0a0b
--- /dev/null
+++ b/src/com/android/launcher3/logging/KeyboardStateManager.java
@@ -0,0 +1,76 @@
+/*
+ * 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.launcher3.logging;
+
+import static com.android.launcher3.logging.KeyboardStateManager.KeyboardState.NO_IME_ACTION;
+
+import android.os.SystemClock;
+
+/**
+ * Class to maintain keyboard states.
+ */
+public class KeyboardStateManager {
+    private long mUpdatedTime;
+    private int mImeHeight;
+
+    public enum KeyboardState {
+        NO_IME_ACTION,
+        SHOW,
+        HIDE,
+    }
+
+    private KeyboardState mKeyboardState;
+
+    public KeyboardStateManager() {
+        mKeyboardState = NO_IME_ACTION;
+    }
+
+    /**
+     * Returns time when keyboard state was updated.
+     */
+    public long getLastUpdatedTime() {
+        return mUpdatedTime;
+    }
+
+    /**
+     * Returns current keyboard state.
+     */
+    public KeyboardState getKeyboardState() {
+        return mKeyboardState;
+    }
+
+    /**
+     * Setter method to set keyboard state.
+     */
+    public void setKeyboardState(KeyboardState keyboardState) {
+        mUpdatedTime = SystemClock.elapsedRealtime();
+        mKeyboardState = keyboardState;
+    }
+
+    /**
+     * Returns keyboard's current height.
+     */
+    public int getImeHeight() {
+        return mImeHeight;
+    }
+
+    /**
+     * Setter method to set keyboard height.
+     */
+    public void setImeHeight(int imeHeight) {
+        mImeHeight = imeHeight;
+    }
+}
diff --git a/src/com/android/launcher3/logging/StartupLatencyLogger.kt b/src/com/android/launcher3/logging/StartupLatencyLogger.kt
new file mode 100644
index 0000000..93e9de5
--- /dev/null
+++ b/src/com/android/launcher3/logging/StartupLatencyLogger.kt
@@ -0,0 +1,192 @@
+package com.android.launcher3.logging
+
+import android.os.SystemClock
+import android.util.Log
+import android.util.SparseLongArray
+import androidx.annotation.MainThread
+import androidx.annotation.VisibleForTesting
+import androidx.core.util.contains
+import androidx.core.util.isEmpty
+import com.android.launcher3.BuildConfig
+import com.android.launcher3.logging.StatsLogManager.LauncherLatencyEvent
+import com.android.launcher3.logging.StatsLogManager.StatsLatencyLogger.LatencyType
+import com.android.launcher3.util.Preconditions
+
+/** Logger for logging Launcher activity's startup latency. */
+open class StartupLatencyLogger(val latencyType: LatencyType) {
+
+    companion object {
+        const val TAG = "LauncherStartupLatencyLogger"
+        const val UNSET_INT = -1
+        const val UNSET_LONG = -1L
+    }
+
+    @VisibleForTesting(otherwise = VisibleForTesting.PROTECTED)
+    val startTimeByEvent = SparseLongArray()
+    @VisibleForTesting(otherwise = VisibleForTesting.PROTECTED)
+    val endTimeByEvent = SparseLongArray()
+
+    @VisibleForTesting(otherwise = VisibleForTesting.PROTECTED) var cardinality: Int = UNSET_INT
+    @VisibleForTesting(otherwise = VisibleForTesting.PROTECTED)
+    var workspaceLoadStartTime: Long = UNSET_LONG
+
+    private var isInTest = false
+
+    /** Subclass can override this method to handle collected latency metrics. */
+    @MainThread
+    open fun log(): StartupLatencyLogger {
+        return this
+    }
+
+    @MainThread
+    fun logWorkspaceLoadStartTime() = logWorkspaceLoadStartTime(SystemClock.elapsedRealtime())
+
+    @VisibleForTesting
+    @MainThread
+    fun logWorkspaceLoadStartTime(startTimeMs: Long): StartupLatencyLogger {
+        Preconditions.assertUIThread()
+        workspaceLoadStartTime = startTimeMs
+        return this
+    }
+
+    /**
+     * Log size of workspace. Larger number of workspace items (icons, folders, widgets) means
+     * longer latency to initialize workspace.
+     */
+    @MainThread
+    fun logCardinality(cardinality: Int): StartupLatencyLogger {
+        Preconditions.assertUIThread()
+        this.cardinality = cardinality
+        return this
+    }
+
+    @MainThread
+    fun logStart(event: LauncherLatencyEvent) = logStart(event, SystemClock.elapsedRealtime())
+
+    @MainThread
+    fun logStart(event: LauncherLatencyEvent, startTimeMs: Long): StartupLatencyLogger {
+        // In unit test no looper is attached to current thread
+        Preconditions.assertUIThread()
+        if (validateLoggingEventAtStart(event)) {
+            startTimeByEvent.put(event.id, startTimeMs)
+        }
+        return this
+    }
+
+    @MainThread
+    fun logEnd(event: LauncherLatencyEvent) = logEnd(event, SystemClock.elapsedRealtime())
+
+    @MainThread
+    fun logEnd(event: LauncherLatencyEvent, endTimeMs: Long): StartupLatencyLogger {
+        // In unit test no looper is attached to current thread
+        Preconditions.assertUIThread()
+        maybeLogStartOfWorkspaceLoadTime(event)
+        if (validateLoggingEventAtEnd(event)) {
+            endTimeByEvent.put(event.id, endTimeMs)
+        }
+
+        return this
+    }
+
+    @MainThread
+    fun reset() {
+        // In unit test no looper is attached to current thread
+        Preconditions.assertUIThread()
+        startTimeByEvent.clear()
+        endTimeByEvent.clear()
+        cardinality = UNSET_INT
+        workspaceLoadStartTime = UNSET_LONG
+    }
+
+    @MainThread
+    private fun maybeLogStartOfWorkspaceLoadTime(event: LauncherLatencyEvent) {
+        if (workspaceLoadStartTime == UNSET_LONG) {
+            return
+        }
+        if (
+            event == LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC ||
+                event == LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_ASYNC
+        ) {
+            logStart(event, workspaceLoadStartTime)
+            workspaceLoadStartTime = UNSET_LONG
+        }
+    }
+
+    /** @return true if we can log start of [LauncherLatencyEvent] and vice versa. */
+    @MainThread
+    private fun validateLoggingEventAtStart(event: LauncherLatencyEvent): Boolean {
+        if (!BuildConfig.IS_STUDIO_BUILD && !isInTest) {
+            return true
+        }
+        if (startTimeByEvent.contains(event.id)) {
+            Log.e(TAG, "Cannot restart same ${event.name} event")
+            return false
+        } else if (
+            startTimeByEvent.isEmpty() &&
+                event != LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION
+        ) {
+            Log.e(
+                TAG,
+                "The first log start event must be " +
+                    "${LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION.name}.",
+            )
+            return false
+        } else if (
+            event == LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC &&
+                startTimeByEvent.get(
+                    LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_ASYNC.id
+                ) != 0L
+        ) {
+            Log.e(
+                TAG,
+                "Cannot start ${LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC.name} event after ${LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_ASYNC.name} starts",
+            )
+            return false
+        } else if (
+            event == LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_ASYNC &&
+                startTimeByEvent.get(
+                    LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC.id
+                ) != 0L
+        ) {
+            Log.e(
+                TAG,
+                "Cannot start ${LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_ASYNC.name} event after ${LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC.name} starts",
+            )
+            return false
+        }
+
+        return true
+    }
+
+    /** @return true if we can log end of [LauncherLatencyEvent] and vice versa. */
+    @MainThread
+    private fun validateLoggingEventAtEnd(event: LauncherLatencyEvent): Boolean {
+        if (!BuildConfig.IS_STUDIO_BUILD && !isInTest) {
+            return true
+        }
+        if (!startTimeByEvent.contains(event.id)) {
+            Log.e(TAG, "Cannot end ${event.name} event before starting it")
+            return false
+        } else if (endTimeByEvent.contains(event.id)) {
+            Log.e(TAG, "Cannot end same ${event.name} event again")
+            return false
+        } else if (
+            event != LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION &&
+                endTimeByEvent.contains(
+                    LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION.id
+                )
+        ) {
+            Log.e(
+                TAG,
+                "Cannot end ${event.name} event after ${LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION.name}",
+            )
+            return false
+        }
+        return true
+    }
+
+    @VisibleForTesting
+    fun setIsInTest() {
+        isInTest = true
+    }
+}
diff --git a/src/com/android/launcher3/logging/StatsLogManager.java b/src/com/android/launcher3/logging/StatsLogManager.java
index c4ec4e3..66ed779 100644
--- a/src/com/android/launcher3/logging/StatsLogManager.java
+++ b/src/com/android/launcher3/logging/StatsLogManager.java
@@ -32,9 +32,12 @@
 import com.android.launcher3.logger.LauncherAtom.FromState;
 import com.android.launcher3.logger.LauncherAtom.ToState;
 import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.util.IntArray;
 import com.android.launcher3.util.ResourceBasedOverride;
 import com.android.launcher3.views.ActivityContext;
 
+import java.util.List;
+
 /**
  * Handles the user event logging in R+.
  *
@@ -56,6 +59,7 @@
     private InstanceId mInstanceId;
 
     protected @Nullable ActivityContext mActivityContext = null;
+    private KeyboardStateManager mKeyboardStateManager;
 
     /**
      * Returns event enum based on the two state transition information when swipe
@@ -554,6 +558,17 @@
                 + "result page etc.")
         LAUNCHER_ALLAPPS_SCROLLED(985),
 
+        @UiEvent(doc = "User scrolled up on the all apps personal A-Z list.")
+        LAUNCHER_ALLAPPS_PERSONAL_SCROLLED_UP(1287),
+
+        @UiEvent(doc = "User scrolled down on the all apps personal A-Z list.")
+        LAUNCHER_ALLAPPS_PERSONAL_SCROLLED_DOWN(1288),
+
+        @UiEvent(doc = "User scrolled on one of the all apps surfaces such as A-Z list, search "
+                + "result page etc and we don't know the direction since user came back to "
+                + "original position from which they scrolled.")
+        LAUNCHER_ALLAPPS_SCROLLED_UNKNOWN_DIRECTION(1231),
+
         @UiEvent(doc = "User tapped taskbar home button")
         LAUNCHER_TASKBAR_HOME_BUTTON_TAP(1003),
 
@@ -592,6 +607,44 @@
 
         @UiEvent(doc = "User tapped on Share app system shortcut.")
         LAUNCHER_SYSTEM_SHORTCUT_APP_SHARE_TAP(1075),
+
+        @UiEvent(doc = "User has invoked split to right half from an app icon menu")
+        LAUNCHER_APP_ICON_MENU_SPLIT_RIGHT_BOTTOM(1199),
+
+        @UiEvent(doc = "User has invoked split to left half from an app icon menu")
+        LAUNCHER_APP_ICON_MENU_SPLIT_LEFT_TOP(1200),
+
+        @UiEvent(doc = "Number of apps in A-Z list (personal and work profile)")
+        LAUNCHER_ALLAPPS_COUNT(1225),
+
+        @UiEvent(doc = "User has invoked split to right half with a keyboard shortcut.")
+        LAUNCHER_KEYBOARD_SHORTCUT_SPLIT_RIGHT_BOTTOM(1232),
+
+        @UiEvent(doc = "User has invoked split to left half with a keyboard shortcut.")
+        LAUNCHER_KEYBOARD_SHORTCUT_SPLIT_LEFT_TOP(1233),
+
+        @UiEvent(doc = "User has collapsed the work FAB button by scrolling down in the all apps"
+                + " work A-Z list.")
+        LAUNCHER_WORK_FAB_BUTTON_COLLAPSE(1276),
+
+        @UiEvent(doc = "User has collapsed the work FAB button by scrolling up in the all apps"
+                + " work A-Z list.")
+        LAUNCHER_WORK_FAB_BUTTON_EXTEND(1277),
+
+        @UiEvent(doc = "User scrolled down on the search result page.")
+        LAUNCHER_ALLAPPS_SEARCH_SCROLLED_DOWN(1285),
+
+        @UiEvent(doc = "User scrolled up on the search result page.")
+        LAUNCHER_ALLAPPS_SEARCH_SCROLLED_UP(1286),
+
+        @UiEvent(doc = "User or automatic timeout has hidden transient taskbar.")
+        LAUNCHER_TRANSIENT_TASKBAR_HIDE(1330),
+
+        @UiEvent(doc = "User has swiped upwards from the gesture handle to show transient taskbar.")
+        LAUNCHER_TRANSIENT_TASKBAR_SHOW(1331),
+
+        @UiEvent(doc = "App launched through pending intent")
+        LAUNCHER_APP_LAUNCH_PENDING_INTENT(1394),
         ;
 
         // ADD MORE
@@ -607,6 +660,39 @@
         }
     }
 
+    /** Launcher's latency events. */
+    public enum LauncherLatencyEvent implements EventEnum {
+        // Details of below 6 events with prefix of "LAUNCHER_LATENCY_STARTUP_" are discussed in
+        // go/launcher-startup-latency
+        @UiEvent(doc = "The total duration of launcher startup latency.")
+        LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION(1362),
+
+        @UiEvent(doc = "The duration of launcher activity's onCreate().")
+        LAUNCHER_LATENCY_STARTUP_ACTIVITY_ON_CREATE(1363),
+
+        @UiEvent(doc =
+                "The duration to inflate launcher root view in launcher activity's onCreate().")
+        LAUNCHER_LATENCY_STARTUP_VIEW_INFLATION(1364),
+
+        @UiEvent(doc = "The duration of synchronous loading workspace")
+        LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC(1366),
+
+        @UiEvent(doc = "The duration of asynchronous loading workspace")
+        LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_ASYNC(1367),
+        ;
+
+        private final int mId;
+
+        LauncherLatencyEvent(int id) {
+            mId = id;
+        }
+
+        @Override
+        public int getId() {
+            return mId;
+        }
+    }
+
     /**
      * Launcher specific ranking related events.
      */
@@ -713,6 +799,20 @@
         }
 
         /**
+         * Sets cardinality of log message.
+         */
+        default StatsLogger withCardinality(int cardinality) {
+            return this;
+        }
+
+        /**
+         * Sets the input type of the log message.
+         */
+        default StatsLogger withInputType(int inputType) {
+            return this;
+        }
+
+        /**
          * Builds the final message and logs it as {@link EventEnum}.
          */
         default void log(EventEnum event) {
@@ -733,12 +833,20 @@
 
         enum LatencyType {
             UNKNOWN(0),
+            // example: launcher restart that happens via daily backup and restore
             COLD(1),
             HOT(2),
             TIMEOUT(3),
             FAIL(4),
-            COLD_USERWAITING(5);
-
+            COLD_USERWAITING(5),
+            ATOMIC(6),
+            CONTROLLED(7),
+            CACHED(8),
+            // example: device is rebooting via power key or shell command `adb reboot`
+            COLD_DEVICE_REBOOTING(9),
+            // Tracking warm startup latency:
+            // https://developer.android.com/topic/performance/vitals/launch-time#warm
+            WARM(10);
             private final int mId;
 
             LatencyType(int id) {
@@ -748,7 +856,6 @@
             public int getId() {
                 return mId;
             }
-
         }
 
         /**
@@ -781,6 +888,19 @@
         }
 
         /**
+         * Sets sub event type.
+         */
+        default StatsLatencyLogger withSubEventType(int type) {
+            return this;
+        }
+
+
+        /** Sets cardinality of the event. */
+        default StatsLatencyLogger withCardinality(int cardinality) {
+            return this;
+        }
+
+        /**
          * Sets packageId of log message.
          */
         default StatsLatencyLogger withPackageId(int packageId) {
@@ -795,6 +915,85 @@
     }
 
     /**
+     * Helps to construct and log impression event.
+     */
+    public interface StatsImpressionLogger {
+
+        enum State {
+            UNKNOWN(0),
+            ALLAPPS(1),
+            SEARCHBOX_WIDGET(2);
+            private final int mLauncherState;
+
+            State(int id) {
+                this.mLauncherState = id;
+            }
+
+            public int getLauncherState() {
+                return mLauncherState;
+            }
+        }
+
+        /**
+         * Sets {@link InstanceId} of log message.
+         */
+        default StatsImpressionLogger withInstanceId(InstanceId instanceId) {
+            return this;
+        }
+
+        /**
+         * Sets {@link State} of impression event.
+         */
+        default StatsImpressionLogger withState(State state) {
+            return this;
+        }
+
+        /**
+         * Sets query length of the event.
+         */
+        default StatsImpressionLogger withQueryLength(int queryLength) {
+            return this;
+        }
+
+        /**
+         * Sets list of {@link com.android.app.search.ResultType} for the impression event.
+         */
+        default StatsImpressionLogger withResultType(IntArray resultType) {
+            return this;
+        }
+
+        /**
+         * Sets list of count for each of {@link com.android.app.search.ResultType} for the
+         * impression event.
+         */
+        default StatsImpressionLogger withResultCount(IntArray resultCount) {
+            return this;
+        }
+
+        /**
+         * Sets list of boolean for each of {@link com.android.app.search.ResultType} that indicates
+         * if this result is above keyboard or not for the impression event.
+         */
+        default StatsImpressionLogger withAboveKeyboard(List<Boolean> aboveKeyboard) {
+            return this;
+        }
+
+        /**
+         * Sets list of uid for each of {@link com.android.app.search.ResultType} that indicates
+         * package name for the impression event.
+         */
+        default StatsImpressionLogger withUids(IntArray uid) {
+            return this;
+        }
+
+        /**
+         * Builds the final message and logs it as {@link EventEnum}.
+         */
+        default void log(EventEnum event) {
+        }
+    }
+
+    /**
      * Returns new logger object.
      */
     public StatsLogger logger() {
@@ -816,6 +1015,27 @@
         return logger;
     }
 
+    /**
+     * Returns new impression logger object.
+     */
+    public StatsImpressionLogger impressionLogger() {
+        StatsImpressionLogger logger = createImpressionLogger();
+        if (mInstanceId != null) {
+            logger.withInstanceId(mInstanceId);
+        }
+        return logger;
+    }
+
+    /**
+     * Returns a singleton KeyboardStateManager.
+     */
+    public KeyboardStateManager keyboardStateManager() {
+        if (mKeyboardStateManager == null) {
+            mKeyboardStateManager = new KeyboardStateManager();
+        }
+        return mKeyboardStateManager;
+    }
+
     protected StatsLogger createLogger() {
         return new StatsLogger() {
         };
@@ -826,6 +1046,11 @@
         };
     }
 
+    protected StatsImpressionLogger createImpressionLogger() {
+        return new StatsImpressionLogger() {
+        };
+    }
+
     /**
      * Sets InstanceId to every new {@link StatsLogger} object returned by {@link #logger()} when
      * not-null.
diff --git a/src/com/android/launcher3/model/AddWorkspaceItemsTask.java b/src/com/android/launcher3/model/AddWorkspaceItemsTask.java
index 31ef2e5..27d1f78 100644
--- a/src/com/android/launcher3/model/AddWorkspaceItemsTask.java
+++ b/src/com/android/launcher3/model/AddWorkspaceItemsTask.java
@@ -20,9 +20,11 @@
 import android.content.pm.LauncherApps;
 import android.content.pm.PackageInstaller.SessionInfo;
 import android.os.UserHandle;
-import android.util.Log;
 import android.util.Pair;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.LauncherModel.CallbackTask;
 import com.android.launcher3.LauncherSettings;
@@ -36,12 +38,12 @@
 import com.android.launcher3.model.data.WorkspaceItemInfo;
 import com.android.launcher3.pm.InstallSessionHelper;
 import com.android.launcher3.pm.PackageInstallInfo;
-import com.android.launcher3.testing.TestProtocol;
 import com.android.launcher3.util.IntArray;
 import com.android.launcher3.util.PackageManagerHelper;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * Task to add auto-created workspace items.
@@ -50,14 +52,16 @@
 
     private static final String LOG = "AddWorkspaceItemsTask";
 
+    @NonNull
     private final List<Pair<ItemInfo, Object>> mItemList;
 
+    @NonNull
     private final WorkspaceItemSpaceFinder mItemSpaceFinder;
 
     /**
      * @param itemList items to add on the workspace
      */
-    public AddWorkspaceItemsTask(List<Pair<ItemInfo, Object>> itemList) {
+    public AddWorkspaceItemsTask(@NonNull final List<Pair<ItemInfo, Object>> itemList) {
         this(itemList, new WorkspaceItemSpaceFinder());
     }
 
@@ -65,14 +69,15 @@
      * @param itemList items to add on the workspace
      * @param itemSpaceFinder inject WorkspaceItemSpaceFinder dependency for testing
      */
-    public AddWorkspaceItemsTask(List<Pair<ItemInfo, Object>> itemList,
-            WorkspaceItemSpaceFinder itemSpaceFinder) {
+    public AddWorkspaceItemsTask(@NonNull final List<Pair<ItemInfo, Object>> itemList,
+            @NonNull final WorkspaceItemSpaceFinder itemSpaceFinder) {
         mItemList = itemList;
         mItemSpaceFinder = itemSpaceFinder;
     }
 
     @Override
-    public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) {
+    public void execute(@NonNull final LauncherAppState app, @NonNull final BgDataModel dataModel,
+            @NonNull final AllAppsList apps) {
         if (mItemList.isEmpty()) {
             return;
         }
@@ -90,19 +95,12 @@
                         item.itemType == LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT) {
                     // Short-circuit this logic if the icon exists somewhere on the workspace
                     if (shortcutExists(dataModel, item.getIntent(), item.user)) {
-                        if (TestProtocol.sDebugTracing) {
-                            Log.d(TestProtocol.MISSING_PROMISE_ICON,
-                                    LOG + " Item already on workspace.");
-                        }
                         continue;
                     }
 
                     // b/139663018 Short-circuit this logic if the icon is a system app
-                    if (PackageManagerHelper.isSystemApp(app.getContext(), item.getIntent())) {
-                        if (TestProtocol.sDebugTracing) {
-                            Log.d(TestProtocol.MISSING_PROMISE_ICON,
-                                    LOG + " Item is a system app.");
-                        }
+                    if (PackageManagerHelper.isSystemApp(app.getContext(),
+                            Objects.requireNonNull(item.getIntent()))) {
                         continue;
                     }
                 }
@@ -142,9 +140,6 @@
                     String packageName = item.getTargetComponent() != null
                             ? item.getTargetComponent().getPackageName() : null;
                     if (packageName == null) {
-                        if (TestProtocol.sDebugTracing) {
-                            Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + " Null packageName.");
-                        }
                         continue;
                     }
                     SessionInfo sessionInfo = packageInstaller.getActiveSessionInfo(item.user,
@@ -153,22 +148,16 @@
                     if (!packageInstaller.verifySessionInfo(sessionInfo)) {
                         FileLog.d(LOG, "Item info failed session info verification. "
                                 + "Skipping : " + workspaceInfo);
-                        if (TestProtocol.sDebugTracing) {
-                            Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + "Failed verification.");
-                        }
                         continue;
                     }
 
-                    List<LauncherActivityInfo> activities = launcherApps
+                    List<LauncherActivityInfo> activities = Objects.requireNonNull(launcherApps)
                             .getActivityList(packageName, item.user);
                     boolean hasActivity = activities != null && !activities.isEmpty();
 
                     if (sessionInfo == null) {
                         if (!hasActivity) {
                             // Session was cancelled, do not add.
-                            if (TestProtocol.sDebugTracing) {
-                                Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + "Session cancelled");
-                            }
                             continue;
                         }
                     } else {
@@ -188,9 +177,6 @@
                             // workspace items as promise icons. At this point we now have the
                             // correct intent to compare against existing workspace icons.
                             // Icon already exists on the workspace and should not be auto-added.
-                            if (TestProtocol.sDebugTracing) {
-                                Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + "shortcutExists");
-                            }
                             continue;
                         }
 
@@ -218,7 +204,7 @@
         if (!addedItemsFinal.isEmpty()) {
             scheduleCallbackTask(new CallbackTask() {
                 @Override
-                public void execute(Callbacks callbacks) {
+                public void execute(@NonNull Callbacks callbacks) {
                     final ArrayList<ItemInfo> addAnimated = new ArrayList<>();
                     final ArrayList<ItemInfo> addNotAnimated = new ArrayList<>();
                     if (!addedItemsFinal.isEmpty()) {
@@ -243,7 +229,8 @@
      * Returns true if the shortcuts already exists on the workspace. This must be called after
      * the workspace has been loaded. We identify a shortcut by its intent.
      */
-    protected boolean shortcutExists(BgDataModel dataModel, Intent intent, UserHandle user) {
+    protected boolean shortcutExists(@NonNull final BgDataModel dataModel,
+            @Nullable final Intent intent, @NonNull final UserHandle user) {
         final String compPkgName, intentWithPkg, intentWithoutPkg;
         if (intent == null) {
             // Skip items with null intents
diff --git a/src/com/android/launcher3/model/AllAppsList.java b/src/com/android/launcher3/model/AllAppsList.java
index 4875d83..8f85bfb 100644
--- a/src/com/android/launcher3/model/AllAppsList.java
+++ b/src/com/android/launcher3/model/AllAppsList.java
@@ -64,7 +64,10 @@
     /** The list off all apps. */
     public final ArrayList<AppInfo> data = new ArrayList<>(DEFAULT_APPLICATIONS_NUMBER);
 
+    @NonNull
     private IconCache mIconCache;
+
+    @NonNull
     private AppFilter mAppFilter;
 
     private boolean mDataChanged = false;
diff --git a/src/com/android/launcher3/model/BaseLauncherBinder.java b/src/com/android/launcher3/model/BaseLauncherBinder.java
new file mode 100644
index 0000000..5d85b1c
--- /dev/null
+++ b/src/com/android/launcher3/model/BaseLauncherBinder.java
@@ -0,0 +1,471 @@
+/*
+ * 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.launcher3.model;
+
+import static com.android.launcher3.model.ItemInstallQueue.FLAG_LOADER_RUNNING;
+import static com.android.launcher3.model.ModelUtils.filterCurrentWorkspaceItems;
+import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
+
+import android.os.Process;
+import android.util.Log;
+
+import com.android.launcher3.InvariantDeviceProfile;
+import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.LauncherModel.CallbackTask;
+import com.android.launcher3.LauncherSettings;
+import com.android.launcher3.Workspace;
+import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.model.BgDataModel.Callbacks;
+import com.android.launcher3.model.BgDataModel.FixedContainerItems;
+import com.android.launcher3.model.data.AppInfo;
+import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.model.data.LauncherAppWidgetInfo;
+import com.android.launcher3.util.IntArray;
+import com.android.launcher3.util.IntSet;
+import com.android.launcher3.util.LooperExecutor;
+import com.android.launcher3.util.LooperIdleLock;
+import com.android.launcher3.util.PackageUserKey;
+import com.android.launcher3.util.RunnableList;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.concurrent.Executor;
+import java.util.stream.Collectors;
+
+/**
+ * Binds the results of {@link com.android.launcher3.model.LoaderTask} to the Callbacks objects.
+ */
+public abstract class BaseLauncherBinder {
+
+    protected static final String TAG = "LauncherBinder";
+    private static final int ITEMS_CHUNK = 6; // batch size for the workspace icons
+
+    protected final LooperExecutor mUiExecutor;
+
+    protected final LauncherAppState mApp;
+    protected final BgDataModel mBgDataModel;
+    private final AllAppsList mBgAllAppsList;
+
+    final Callbacks[] mCallbacksList;
+
+    private int mMyBindingId;
+
+    public BaseLauncherBinder(LauncherAppState app, BgDataModel dataModel,
+            AllAppsList allAppsList, Callbacks[] callbacksList, LooperExecutor uiExecutor) {
+        mUiExecutor = uiExecutor;
+        mApp = app;
+        mBgDataModel = dataModel;
+        mBgAllAppsList = allAppsList;
+        mCallbacksList = callbacksList;
+    }
+
+    /**
+     * Binds all loaded data to actual views on the main thread.
+     */
+    public void bindWorkspace(boolean incrementBindId, boolean isBindSync) {
+        if (FeatureFlags.ENABLE_WORKSPACE_LOADING_OPTIMIZATION.get()) {
+            DisjointWorkspaceBinder workspaceBinder =
+                    initWorkspaceBinder(incrementBindId, mBgDataModel.collectWorkspaceScreens());
+            workspaceBinder.bindCurrentWorkspacePages(isBindSync);
+            workspaceBinder.bindOtherWorkspacePages();
+        } else {
+            bindWorkspaceAllAtOnce(incrementBindId, isBindSync);
+        }
+    }
+
+    /**
+     * Initializes the WorkspaceBinder for binding.
+     *
+     * @param incrementBindId this is used to stop previously started binding tasks that are
+     *                        obsolete but still queued.
+     * @param workspacePages this allows the Launcher to add the correct workspace screens.
+     */
+    public DisjointWorkspaceBinder initWorkspaceBinder(boolean incrementBindId,
+            IntArray workspacePages) {
+
+        synchronized (mBgDataModel) {
+            if (incrementBindId) {
+                mBgDataModel.lastBindId++;
+            }
+            mMyBindingId = mBgDataModel.lastBindId;
+            return new DisjointWorkspaceBinder(workspacePages);
+        }
+    }
+
+    private void bindWorkspaceAllAtOnce(boolean incrementBindId, boolean isBindSync) {
+        // Save a copy of all the bg-thread collections
+        ArrayList<ItemInfo> workspaceItems = new ArrayList<>();
+        ArrayList<LauncherAppWidgetInfo> appWidgets = new ArrayList<>();
+        final IntArray orderedScreenIds = new IntArray();
+        ArrayList<FixedContainerItems> extraItems = new ArrayList<>();
+        final int workspaceItemCount;
+        synchronized (mBgDataModel) {
+            workspaceItems.addAll(mBgDataModel.workspaceItems);
+            appWidgets.addAll(mBgDataModel.appWidgets);
+            orderedScreenIds.addAll(mBgDataModel.collectWorkspaceScreens());
+            mBgDataModel.extraItems.forEach(extraItems::add);
+            if (incrementBindId) {
+                mBgDataModel.lastBindId++;
+            }
+            mMyBindingId = mBgDataModel.lastBindId;
+            workspaceItemCount = mBgDataModel.itemsIdMap.size();
+        }
+
+        for (Callbacks cb : mCallbacksList) {
+            new UnifiedWorkspaceBinder(cb, mUiExecutor, mApp, mBgDataModel, mMyBindingId,
+                    workspaceItems, appWidgets, extraItems, orderedScreenIds)
+                    .bind(isBindSync, workspaceItemCount);
+        }
+    }
+
+    /**
+     * BindDeepShortcuts is abstract because it is a no-op for the go launcher.
+     */
+    public abstract void bindDeepShortcuts();
+
+    /**
+     * Binds the all apps results from LoaderTask to the callbacks UX.
+     */
+    public void bindAllApps() {
+        // shallow copy
+        AppInfo[] apps = mBgAllAppsList.copyData();
+        int flags = mBgAllAppsList.getFlags();
+        Map<PackageUserKey, Integer> packageUserKeytoUidMap = Arrays.stream(apps).collect(
+                Collectors.toMap(
+                        appInfo -> new PackageUserKey(appInfo.componentName.getPackageName(),
+                                appInfo.user), appInfo -> appInfo.uid, (a, b) -> a));
+        executeCallbacksTask(c -> c.bindAllApplications(apps, flags, packageUserKeytoUidMap),
+                mUiExecutor);
+    }
+
+    /**
+     * bindWidgets is abstract because it is a no-op for the go launcher.
+     */
+    public abstract void bindWidgets();
+
+    /**
+     * Sorts the set of items by hotseat, workspace (spatially from top to bottom, left to right)
+     */
+    protected void sortWorkspaceItemsSpatially(InvariantDeviceProfile profile,
+            ArrayList<ItemInfo> workspaceItems) {
+        final int screenCols = profile.numColumns;
+        final int screenCellCount = profile.numColumns * profile.numRows;
+        Collections.sort(workspaceItems, (lhs, rhs) -> {
+            if (lhs.container == rhs.container) {
+                // Within containers, order by their spatial position in that container
+                switch (lhs.container) {
+                    case LauncherSettings.Favorites.CONTAINER_DESKTOP: {
+                        int lr = (lhs.screenId * screenCellCount + lhs.cellY * screenCols
+                                + lhs.cellX);
+                        int rr = (rhs.screenId * screenCellCount + +rhs.cellY * screenCols
+                                + rhs.cellX);
+                        return Integer.compare(lr, rr);
+                    }
+                    case LauncherSettings.Favorites.CONTAINER_HOTSEAT: {
+                        // We currently use the screen id as the rank
+                        return Integer.compare(lhs.screenId, rhs.screenId);
+                    }
+                    default:
+                        if (FeatureFlags.IS_STUDIO_BUILD) {
+                            throw new RuntimeException(
+                                    "Unexpected container type when sorting workspace items.");
+                        }
+                        return 0;
+                }
+            } else {
+                // Between containers, order by hotseat, desktop
+                return Integer.compare(lhs.container, rhs.container);
+            }
+        });
+    }
+
+    protected void executeCallbacksTask(CallbackTask task, Executor executor) {
+        executor.execute(() -> {
+            if (mMyBindingId != mBgDataModel.lastBindId) {
+                Log.d(TAG, "Too many consecutive reloads, skipping obsolete data-bind");
+                return;
+            }
+            for (Callbacks cb : mCallbacksList) {
+                task.execute(cb);
+            }
+        });
+    }
+
+    /**
+     * Only used in LoaderTask.
+     */
+    public LooperIdleLock newIdleLock(Object lock) {
+        LooperIdleLock idleLock = new LooperIdleLock(lock, mUiExecutor.getLooper());
+        // If we are not binding or if the main looper is already idle, there is no reason to wait
+        if (mUiExecutor.getLooper().getQueue().isIdle()) {
+            idleLock.queueIdle();
+        }
+        return idleLock;
+    }
+
+    private class UnifiedWorkspaceBinder {
+
+        private final Executor mUiExecutor;
+        private final Callbacks mCallbacks;
+
+        private final LauncherAppState mApp;
+        private final BgDataModel mBgDataModel;
+
+        private final int mMyBindingId;
+        private final ArrayList<ItemInfo> mWorkspaceItems;
+        private final ArrayList<LauncherAppWidgetInfo> mAppWidgets;
+        private final IntArray mOrderedScreenIds;
+        private final ArrayList<FixedContainerItems> mExtraItems;
+
+        UnifiedWorkspaceBinder(Callbacks callbacks,
+                Executor uiExecutor,
+                LauncherAppState app,
+                BgDataModel bgDataModel,
+                int myBindingId,
+                ArrayList<ItemInfo> workspaceItems,
+                ArrayList<LauncherAppWidgetInfo> appWidgets,
+                ArrayList<FixedContainerItems> extraItems,
+                IntArray orderedScreenIds) {
+            mCallbacks = callbacks;
+            mUiExecutor = uiExecutor;
+            mApp = app;
+            mBgDataModel = bgDataModel;
+            mMyBindingId = myBindingId;
+            mWorkspaceItems = workspaceItems;
+            mAppWidgets = appWidgets;
+            mExtraItems = extraItems;
+            mOrderedScreenIds = orderedScreenIds;
+        }
+
+        private void bind(boolean isBindSync, int workspaceItemCount) {
+            final IntSet currentScreenIds =
+                    mCallbacks.getPagesToBindSynchronously(mOrderedScreenIds);
+            Objects.requireNonNull(currentScreenIds, "Null screen ids provided by " + mCallbacks);
+
+            // Separate the items that are on the current screen, and all the other remaining items
+            ArrayList<ItemInfo> currentWorkspaceItems = new ArrayList<>();
+            ArrayList<ItemInfo> otherWorkspaceItems = new ArrayList<>();
+            ArrayList<LauncherAppWidgetInfo> currentAppWidgets = new ArrayList<>();
+            ArrayList<LauncherAppWidgetInfo> otherAppWidgets = new ArrayList<>();
+
+            filterCurrentWorkspaceItems(currentScreenIds, mWorkspaceItems, currentWorkspaceItems,
+                    otherWorkspaceItems);
+            filterCurrentWorkspaceItems(currentScreenIds, mAppWidgets, currentAppWidgets,
+                    otherAppWidgets);
+            final InvariantDeviceProfile idp = mApp.getInvariantDeviceProfile();
+            sortWorkspaceItemsSpatially(idp, currentWorkspaceItems);
+            sortWorkspaceItemsSpatially(idp, otherWorkspaceItems);
+
+            // Tell the workspace that we're about to start binding items
+            executeCallbacksTask(c -> {
+                c.clearPendingBinds();
+                c.startBinding();
+            }, mUiExecutor);
+
+            // Bind workspace screens
+            executeCallbacksTask(c -> c.bindScreens(mOrderedScreenIds), mUiExecutor);
+
+            // Load items on the current page.
+            bindWorkspaceItems(currentWorkspaceItems, mUiExecutor);
+            bindAppWidgets(currentAppWidgets, mUiExecutor);
+            if (!FeatureFlags.CHANGE_MODEL_DELEGATE_LOADING_ORDER.get()) {
+                mExtraItems.forEach(item ->
+                        executeCallbacksTask(c -> c.bindExtraContainerItems(item), mUiExecutor));
+            }
+
+            RunnableList pendingTasks = new RunnableList();
+            Executor pendingExecutor = pendingTasks::add;
+            bindWorkspaceItems(otherWorkspaceItems, pendingExecutor);
+            bindAppWidgets(otherAppWidgets, pendingExecutor);
+            executeCallbacksTask(c -> c.finishBindingItems(currentScreenIds), pendingExecutor);
+            pendingExecutor.execute(
+                    () -> {
+                        MODEL_EXECUTOR.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);
+                        ItemInstallQueue.INSTANCE.get(mApp.getContext())
+                                .resumeModelPush(FLAG_LOADER_RUNNING);
+                    });
+
+            executeCallbacksTask(
+                    c -> {
+                        MODEL_EXECUTOR.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
+                        c.onInitialBindComplete(
+                                currentScreenIds, pendingTasks, workspaceItemCount, isBindSync);
+                    }, mUiExecutor);
+
+            mCallbacks.bindStringCache(mBgDataModel.stringCache.clone());
+        }
+
+        private void bindWorkspaceItems(
+                final ArrayList<ItemInfo> workspaceItems, final Executor executor) {
+            // Bind the workspace items
+            int count = workspaceItems.size();
+            for (int i = 0; i < count; i += ITEMS_CHUNK) {
+                final int start = i;
+                final int chunkSize = (i + ITEMS_CHUNK <= count) ? ITEMS_CHUNK : (count - i);
+                executeCallbacksTask(
+                        c -> c.bindItems(workspaceItems.subList(start, start + chunkSize), false),
+                        executor);
+            }
+        }
+
+        private void bindAppWidgets(List<LauncherAppWidgetInfo> appWidgets, Executor executor) {
+            // Bind the widgets, one at a time
+            int count = appWidgets.size();
+            for (int i = 0; i < count; i++) {
+                final ItemInfo widget = appWidgets.get(i);
+                executeCallbacksTask(
+                        c -> c.bindItems(Collections.singletonList(widget), false), executor);
+            }
+        }
+
+        protected void executeCallbacksTask(CallbackTask task, Executor executor) {
+            executor.execute(() -> {
+                if (mMyBindingId != mBgDataModel.lastBindId) {
+                    Log.d(TAG, "Too many consecutive reloads, skipping obsolete data-bind");
+                    return;
+                }
+                task.execute(mCallbacks);
+            });
+        }
+    }
+
+    private class DisjointWorkspaceBinder {
+        private final IntArray mOrderedScreenIds;
+        private final IntSet mCurrentScreenIds = new IntSet();
+        private final Set<Integer> mBoundItemIds = new HashSet<>();
+
+        protected DisjointWorkspaceBinder(IntArray orderedScreenIds) {
+            mOrderedScreenIds = orderedScreenIds;
+
+            for (Callbacks cb : mCallbacksList) {
+                mCurrentScreenIds.addAll(cb.getPagesToBindSynchronously(orderedScreenIds));
+            }
+            if (mCurrentScreenIds.size() == 0) {
+                mCurrentScreenIds.add(Workspace.FIRST_SCREEN_ID);
+            }
+        }
+
+        /**
+         * Binds the currently loaded items in the Data Model. Also signals to the Callbacks[]
+         * that these items have been bound and their respective screens are ready to be shown.
+         *
+         * If this method is called after all the items on the workspace screen have already been
+         * loaded, it will bind all workspace items immediately, and bindOtherWorkspacePages() will
+         * not bind any items.
+         */
+        protected void bindCurrentWorkspacePages(boolean isBindSync) {
+            // Save a copy of all the bg-thread collections
+            ArrayList<ItemInfo> workspaceItems;
+            ArrayList<LauncherAppWidgetInfo> appWidgets;
+            ArrayList<FixedContainerItems> fciList = new ArrayList<>();
+            final int workspaceItemCount;
+            synchronized (mBgDataModel) {
+                workspaceItems = new ArrayList<>(mBgDataModel.workspaceItems);
+                appWidgets = new ArrayList<>(mBgDataModel.appWidgets);
+                if (!FeatureFlags.CHANGE_MODEL_DELEGATE_LOADING_ORDER.get()) {
+                    mBgDataModel.extraItems.forEach(fciList::add);
+                }
+                workspaceItemCount = mBgDataModel.itemsIdMap.size();
+            }
+
+            workspaceItems.forEach(it -> mBoundItemIds.add(it.id));
+            appWidgets.forEach(it -> mBoundItemIds.add(it.id));
+            if (!FeatureFlags.CHANGE_MODEL_DELEGATE_LOADING_ORDER.get()) {
+                fciList.forEach(item ->
+                        executeCallbacksTask(c -> c.bindExtraContainerItems(item), mUiExecutor));
+            }
+
+            sortWorkspaceItemsSpatially(mApp.getInvariantDeviceProfile(), workspaceItems);
+
+            // Tell the workspace that we're about to start binding items
+            executeCallbacksTask(c -> {
+                c.clearPendingBinds();
+                c.startBinding();
+            }, mUiExecutor);
+
+            // Bind workspace screens
+            executeCallbacksTask(c -> c.bindScreens(mOrderedScreenIds), mUiExecutor);
+
+            bindWorkspaceItems(workspaceItems);
+            bindAppWidgets(appWidgets);
+            executeCallbacksTask(c -> {
+                MODEL_EXECUTOR.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
+                c.onInitialBindComplete(
+                        mCurrentScreenIds, new RunnableList(), workspaceItemCount, isBindSync);
+            }, mUiExecutor);
+        }
+
+        protected void bindOtherWorkspacePages() {
+            // Save a copy of all the bg-thread collections
+            ArrayList<ItemInfo> workspaceItems;
+            ArrayList<LauncherAppWidgetInfo> appWidgets;
+
+            synchronized (mBgDataModel) {
+                workspaceItems = new ArrayList<>(mBgDataModel.workspaceItems);
+                appWidgets = new ArrayList<>(mBgDataModel.appWidgets);
+            }
+
+            workspaceItems.removeIf(it -> mBoundItemIds.contains(it.id));
+            appWidgets.removeIf(it -> mBoundItemIds.contains(it.id));
+
+            sortWorkspaceItemsSpatially(mApp.getInvariantDeviceProfile(), workspaceItems);
+
+            bindWorkspaceItems(workspaceItems);
+            bindAppWidgets(appWidgets);
+
+            executeCallbacksTask(c -> c.finishBindingItems(mCurrentScreenIds), mUiExecutor);
+            mUiExecutor.execute(() -> {
+                MODEL_EXECUTOR.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);
+                ItemInstallQueue.INSTANCE.get(mApp.getContext())
+                        .resumeModelPush(FLAG_LOADER_RUNNING);
+            });
+
+            for (Callbacks cb : mCallbacksList) {
+                cb.bindStringCache(mBgDataModel.stringCache.clone());
+            }
+        }
+
+        private void bindWorkspaceItems(final ArrayList<ItemInfo> workspaceItems) {
+            // Bind the workspace items
+            int count = workspaceItems.size();
+            for (int i = 0; i < count; i += ITEMS_CHUNK) {
+                final int start = i;
+                final int chunkSize = (i + ITEMS_CHUNK <= count) ? ITEMS_CHUNK : (count - i);
+                executeCallbacksTask(
+                        c -> c.bindItems(workspaceItems.subList(start, start + chunkSize), false),
+                        mUiExecutor);
+            }
+        }
+
+        private void bindAppWidgets(List<LauncherAppWidgetInfo> appWidgets) {
+            // Bind the widgets, one at a time
+            int count = appWidgets.size();
+            for (int i = 0; i < count; i++) {
+                final ItemInfo widget = appWidgets.get(i);
+                executeCallbacksTask(
+                        c -> c.bindItems(Collections.singletonList(widget), false),
+                        mUiExecutor);
+            }
+        }
+    }
+}
diff --git a/src/com/android/launcher3/model/BaseLoaderResults.java b/src/com/android/launcher3/model/BaseLoaderResults.java
deleted file mode 100644
index b50ab58..0000000
--- a/src/com/android/launcher3/model/BaseLoaderResults.java
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- * 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.launcher3.model;
-
-import static com.android.launcher3.model.ItemInstallQueue.FLAG_LOADER_RUNNING;
-import static com.android.launcher3.model.ModelUtils.filterCurrentWorkspaceItems;
-import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
-
-import android.os.Process;
-import android.util.Log;
-
-import com.android.launcher3.InvariantDeviceProfile;
-import com.android.launcher3.LauncherAppState;
-import com.android.launcher3.LauncherModel.CallbackTask;
-import com.android.launcher3.LauncherSettings;
-import com.android.launcher3.config.FeatureFlags;
-import com.android.launcher3.model.BgDataModel.Callbacks;
-import com.android.launcher3.model.BgDataModel.FixedContainerItems;
-import com.android.launcher3.model.data.AppInfo;
-import com.android.launcher3.model.data.ItemInfo;
-import com.android.launcher3.model.data.LauncherAppWidgetInfo;
-import com.android.launcher3.testing.TestProtocol;
-import com.android.launcher3.util.IntArray;
-import com.android.launcher3.util.IntSet;
-import com.android.launcher3.util.LooperExecutor;
-import com.android.launcher3.util.LooperIdleLock;
-import com.android.launcher3.util.RunnableList;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-import java.util.concurrent.Executor;
-
-/**
- * Base Helper class to handle results of {@link com.android.launcher3.model.LoaderTask}.
- */
-public abstract class BaseLoaderResults {
-
-    protected static final String TAG = "LoaderResults";
-    protected static final int INVALID_SCREEN_ID = -1;
-    private static final int ITEMS_CHUNK = 6; // batch size for the workspace icons
-
-    protected final LooperExecutor mUiExecutor;
-
-    protected final LauncherAppState mApp;
-    protected final BgDataModel mBgDataModel;
-    private final AllAppsList mBgAllAppsList;
-
-    private final Callbacks[] mCallbacksList;
-
-    private int mMyBindingId;
-
-    public BaseLoaderResults(LauncherAppState app, BgDataModel dataModel,
-            AllAppsList allAppsList, Callbacks[] callbacksList, LooperExecutor uiExecutor) {
-        mUiExecutor = uiExecutor;
-        mApp = app;
-        mBgDataModel = dataModel;
-        mBgAllAppsList = allAppsList;
-        mCallbacksList = callbacksList;
-    }
-
-    /**
-     * Binds all loaded data to actual views on the main thread.
-     */
-    public void bindWorkspace(boolean incrementBindId) {
-        // Save a copy of all the bg-thread collections
-        ArrayList<ItemInfo> workspaceItems = new ArrayList<>();
-        ArrayList<LauncherAppWidgetInfo> appWidgets = new ArrayList<>();
-        final IntArray orderedScreenIds = new IntArray();
-        ArrayList<FixedContainerItems> extraItems = new ArrayList<>();
-
-        synchronized (mBgDataModel) {
-            workspaceItems.addAll(mBgDataModel.workspaceItems);
-            appWidgets.addAll(mBgDataModel.appWidgets);
-            orderedScreenIds.addAll(mBgDataModel.collectWorkspaceScreens());
-            mBgDataModel.extraItems.forEach(extraItems::add);
-            if (incrementBindId) {
-                mBgDataModel.lastBindId++;
-            }
-            mMyBindingId = mBgDataModel.lastBindId;
-        }
-
-        for (Callbacks cb : mCallbacksList) {
-            new WorkspaceBinder(cb, mUiExecutor, mApp, mBgDataModel, mMyBindingId,
-                    workspaceItems, appWidgets, extraItems, orderedScreenIds).bind();
-        }
-    }
-
-    public abstract void bindDeepShortcuts();
-
-    public void bindAllApps() {
-        // shallow copy
-        AppInfo[] apps = mBgAllAppsList.copyData();
-        int flags = mBgAllAppsList.getFlags();
-        executeCallbacksTask(c -> c.bindAllApplications(apps, flags), mUiExecutor);
-    }
-
-    public abstract void bindWidgets();
-
-    /**
-     * Sorts the set of items by hotseat, workspace (spatially from top to bottom, left to right)
-     */
-    protected void sortWorkspaceItemsSpatially(InvariantDeviceProfile profile,
-            ArrayList<ItemInfo> workspaceItems) {
-        final int screenCols = profile.numColumns;
-        final int screenCellCount = profile.numColumns * profile.numRows;
-        Collections.sort(workspaceItems, (lhs, rhs) -> {
-            if (lhs.container == rhs.container) {
-                // Within containers, order by their spatial position in that container
-                switch (lhs.container) {
-                    case LauncherSettings.Favorites.CONTAINER_DESKTOP: {
-                        int lr = (lhs.screenId * screenCellCount + lhs.cellY * screenCols
-                                + lhs.cellX);
-                        int rr = (rhs.screenId * screenCellCount + +rhs.cellY * screenCols
-                                + rhs.cellX);
-                        return Integer.compare(lr, rr);
-                    }
-                    case LauncherSettings.Favorites.CONTAINER_HOTSEAT: {
-                        // We currently use the screen id as the rank
-                        return Integer.compare(lhs.screenId, rhs.screenId);
-                    }
-                    default:
-                        if (FeatureFlags.IS_STUDIO_BUILD) {
-                            throw new RuntimeException(
-                                    "Unexpected container type when sorting workspace items.");
-                        }
-                        return 0;
-                }
-            } else {
-                // Between containers, order by hotseat, desktop
-                return Integer.compare(lhs.container, rhs.container);
-            }
-        });
-    }
-
-    protected void executeCallbacksTask(CallbackTask task, Executor executor) {
-        executor.execute(() -> {
-            if (mMyBindingId != mBgDataModel.lastBindId) {
-                Log.d(TAG, "Too many consecutive reloads, skipping obsolete data-bind");
-                return;
-            }
-            for (Callbacks cb : mCallbacksList) {
-                task.execute(cb);
-            }
-        });
-    }
-
-    public LooperIdleLock newIdleLock(Object lock) {
-        LooperIdleLock idleLock = new LooperIdleLock(lock, mUiExecutor.getLooper());
-        // If we are not binding or if the main looper is already idle, there is no reason to wait
-        if (mUiExecutor.getLooper().getQueue().isIdle()) {
-            idleLock.queueIdle();
-        }
-        return idleLock;
-    }
-
-    private class WorkspaceBinder {
-
-        private final Executor mUiExecutor;
-        private final Callbacks mCallbacks;
-
-        private final LauncherAppState mApp;
-        private final BgDataModel mBgDataModel;
-
-        private final int mMyBindingId;
-        private final ArrayList<ItemInfo> mWorkspaceItems;
-        private final ArrayList<LauncherAppWidgetInfo> mAppWidgets;
-        private final IntArray mOrderedScreenIds;
-        private final ArrayList<FixedContainerItems> mExtraItems;
-
-        WorkspaceBinder(Callbacks callbacks,
-                Executor uiExecutor,
-                LauncherAppState app,
-                BgDataModel bgDataModel,
-                int myBindingId,
-                ArrayList<ItemInfo> workspaceItems,
-                ArrayList<LauncherAppWidgetInfo> appWidgets,
-                ArrayList<FixedContainerItems> extraItems,
-                IntArray orderedScreenIds) {
-            mCallbacks = callbacks;
-            mUiExecutor = uiExecutor;
-            mApp = app;
-            mBgDataModel = bgDataModel;
-            mMyBindingId = myBindingId;
-            mWorkspaceItems = workspaceItems;
-            mAppWidgets = appWidgets;
-            mExtraItems = extraItems;
-            mOrderedScreenIds = orderedScreenIds;
-        }
-
-        private void bind() {
-            final IntSet currentScreenIds =
-                    mCallbacks.getPagesToBindSynchronously(mOrderedScreenIds);
-            Objects.requireNonNull(currentScreenIds, "Null screen ids provided by " + mCallbacks);
-
-            // Separate the items that are on the current screen, and all the other remaining items
-            ArrayList<ItemInfo> currentWorkspaceItems = new ArrayList<>();
-            ArrayList<ItemInfo> otherWorkspaceItems = new ArrayList<>();
-            ArrayList<LauncherAppWidgetInfo> currentAppWidgets = new ArrayList<>();
-            ArrayList<LauncherAppWidgetInfo> otherAppWidgets = new ArrayList<>();
-
-            if (TestProtocol.sDebugTracing) {
-                Log.d(TestProtocol.NULL_INT_SET, "bind (1) currentScreenIds: "
-                        + currentScreenIds
-                        + ", pointer: "
-                        + mCallbacks
-                        + ", name: "
-                        + mCallbacks.getClass().getName());
-            }
-            filterCurrentWorkspaceItems(currentScreenIds, mWorkspaceItems, currentWorkspaceItems,
-                    otherWorkspaceItems);
-            if (TestProtocol.sDebugTracing) {
-                Log.d(TestProtocol.NULL_INT_SET, "bind (2) currentScreenIds: "
-                        + currentScreenIds);
-            }
-            filterCurrentWorkspaceItems(currentScreenIds, mAppWidgets, currentAppWidgets,
-                    otherAppWidgets);
-            final InvariantDeviceProfile idp = mApp.getInvariantDeviceProfile();
-            sortWorkspaceItemsSpatially(idp, currentWorkspaceItems);
-            sortWorkspaceItemsSpatially(idp, otherWorkspaceItems);
-
-            // Tell the workspace that we're about to start binding items
-            executeCallbacksTask(c -> {
-                c.clearPendingBinds();
-                c.startBinding();
-            }, mUiExecutor);
-
-            // Bind workspace screens
-            executeCallbacksTask(c -> c.bindScreens(mOrderedScreenIds), mUiExecutor);
-
-            // Load items on the current page.
-            bindWorkspaceItems(currentWorkspaceItems, mUiExecutor);
-            bindAppWidgets(currentAppWidgets, mUiExecutor);
-            mExtraItems.forEach(item ->
-                    executeCallbacksTask(c -> c.bindExtraContainerItems(item), mUiExecutor));
-
-            RunnableList pendingTasks = new RunnableList();
-            Executor pendingExecutor = pendingTasks::add;
-            bindWorkspaceItems(otherWorkspaceItems, pendingExecutor);
-            bindAppWidgets(otherAppWidgets, pendingExecutor);
-            executeCallbacksTask(c -> c.finishBindingItems(currentScreenIds), pendingExecutor);
-            pendingExecutor.execute(
-                    () -> {
-                        MODEL_EXECUTOR.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);
-                        ItemInstallQueue.INSTANCE.get(mApp.getContext())
-                                .resumeModelPush(FLAG_LOADER_RUNNING);
-                    });
-
-            executeCallbacksTask(
-                    c -> {
-                        MODEL_EXECUTOR.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
-                        c.onInitialBindComplete(currentScreenIds, pendingTasks);
-                    }, mUiExecutor);
-
-            mCallbacks.bindStringCache(mBgDataModel.stringCache.clone());
-        }
-
-        private void bindWorkspaceItems(
-                final ArrayList<ItemInfo> workspaceItems, final Executor executor) {
-            // Bind the workspace items
-            int count = workspaceItems.size();
-            for (int i = 0; i < count; i += ITEMS_CHUNK) {
-                final int start = i;
-                final int chunkSize = (i + ITEMS_CHUNK <= count) ? ITEMS_CHUNK : (count - i);
-                executeCallbacksTask(
-                        c -> c.bindItems(workspaceItems.subList(start, start + chunkSize), false),
-                        executor);
-            }
-        }
-
-        private void bindAppWidgets(List<LauncherAppWidgetInfo> appWidgets, Executor executor) {
-            // Bind the widgets, one at a time
-            int count = appWidgets.size();
-            for (int i = 0; i < count; i++) {
-                final ItemInfo widget = appWidgets.get(i);
-                executeCallbacksTask(
-                        c -> c.bindItems(Collections.singletonList(widget), false), executor);
-            }
-        }
-
-        protected void executeCallbacksTask(CallbackTask task, Executor executor) {
-            executor.execute(() -> {
-                if (mMyBindingId != mBgDataModel.lastBindId) {
-                    Log.d(TAG, "Too many consecutive reloads, skipping obsolete data-bind");
-                    return;
-                }
-                task.execute(mCallbacks);
-            });
-        }
-    }
-}
diff --git a/src/com/android/launcher3/model/BaseModelUpdateTask.java b/src/com/android/launcher3/model/BaseModelUpdateTask.java
index 2a6a691..866e222 100644
--- a/src/com/android/launcher3/model/BaseModelUpdateTask.java
+++ b/src/com/android/launcher3/model/BaseModelUpdateTask.java
@@ -15,25 +15,34 @@
  */
 package com.android.launcher3.model;
 
+import static com.android.launcher3.testing.shared.TestProtocol.WORK_TAB_MISSING;
+import static com.android.launcher3.testing.shared.TestProtocol.testLogD;
+
 import android.util.Log;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.LauncherModel;
 import com.android.launcher3.LauncherModel.CallbackTask;
 import com.android.launcher3.LauncherModel.ModelUpdateTask;
+import com.android.launcher3.celllayout.CellPosMapper;
 import com.android.launcher3.model.BgDataModel.Callbacks;
 import com.android.launcher3.model.BgDataModel.FixedContainerItems;
 import com.android.launcher3.model.data.AppInfo;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.util.ComponentKey;
+import com.android.launcher3.util.PackageUserKey;
 import com.android.launcher3.widget.model.WidgetsListBaseEntry;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.Executor;
 import java.util.function.Predicate;
@@ -47,14 +56,17 @@
     private static final boolean DEBUG_TASKS = false;
     private static final String TAG = "BaseModelUpdateTask";
 
+    // Nullabilities are explicitly omitted here because these are late-init fields,
+    // They will be non-null after init(), which is always the case in enqueueModelUpdateTask().
     private LauncherAppState mApp;
     private LauncherModel mModel;
     private BgDataModel mDataModel;
     private AllAppsList mAllAppsList;
     private Executor mUiExecutor;
 
-    public void init(LauncherAppState app, LauncherModel model,
-            BgDataModel dataModel, AllAppsList allAppsList, Executor uiExecutor) {
+    public void init(@NonNull final LauncherAppState app, @NonNull final LauncherModel model,
+            @NonNull final BgDataModel dataModel, @NonNull final AllAppsList allAppsList,
+            @NonNull final Executor uiExecutor) {
         mApp = app;
         mModel = model;
         mDataModel = dataModel;
@@ -64,7 +76,9 @@
 
     @Override
     public final void run() {
-        if (!mModel.isModelLoaded()) {
+        boolean isModelLoaded = Objects.requireNonNull(mModel).isModelLoaded();
+        testLogD(WORK_TAB_MISSING, "modelLoaded: " + isModelLoaded + " forTask: " + this);
+        if (!isModelLoaded) {
             if (DEBUG_TASKS) {
                 Log.d(TAG, "Ignoring model task since loader is pending=" + this);
             }
@@ -77,13 +91,13 @@
     /**
      * Execute the actual task. Called on the worker thread.
      */
-    public abstract void execute(
-            LauncherAppState app, BgDataModel dataModel, AllAppsList apps);
+    public abstract void execute(@NonNull LauncherAppState app,
+            @NonNull BgDataModel dataModel, @NonNull AllAppsList apps);
 
     /**
      * Schedules a {@param task} to be executed on the current callbacks.
      */
-    public final void scheduleCallbackTask(final CallbackTask task) {
+    public final void scheduleCallbackTask(@NonNull final CallbackTask task) {
         for (final Callbacks cb : mModel.getCallbacks()) {
             mUiExecutor.execute(() -> task.execute(cb));
         }
@@ -92,14 +106,19 @@
     public ModelWriter getModelWriter() {
         // Updates from model task, do not deal with icon position in hotseat. Also no need to
         // verify changes as the ModelTasks always push the changes to callbacks
-        return mModel.getWriter(false /* hasVerticalHotseat */, false /* verifyChanges */, null);
+        return mModel.getWriter(false /* hasVerticalHotseat */, false /* verifyChanges */,
+                CellPosMapper.DEFAULT, null);
     }
 
-    public void bindUpdatedWorkspaceItems(List<WorkspaceItemInfo> allUpdates) {
+    public void bindUpdatedWorkspaceItems(@NonNull final List<WorkspaceItemInfo> allUpdates) {
         // Bind workspace items
         List<WorkspaceItemInfo> workspaceUpdates = allUpdates.stream()
                 .filter(info -> info.id != ItemInfo.NO_ID)
                 .collect(Collectors.toList());
+        if (TestProtocol.sDebugTracing) {
+            Log.d(WORK_TAB_MISSING, "allUpdates: " + allUpdates.size() + ", workspaceUpdates "
+                    + workspaceUpdates.size());
+        }
         if (!workspaceUpdates.isEmpty()) {
             scheduleCallbackTask(c -> c.bindWorkspaceItemsChanged(workspaceUpdates));
         }
@@ -113,18 +132,17 @@
                 .forEach(this::bindExtraContainerItems);
     }
 
-    public void bindExtraContainerItems(FixedContainerItems item) {
-        FixedContainerItems copy = item.clone();
-        scheduleCallbackTask(c -> c.bindExtraContainerItems(copy));
+    public void bindExtraContainerItems(@NonNull final FixedContainerItems item) {
+        scheduleCallbackTask(c -> c.bindExtraContainerItems(item));
     }
 
-    public void bindDeepShortcuts(BgDataModel dataModel) {
+    public void bindDeepShortcuts(@NonNull final BgDataModel dataModel) {
         final HashMap<ComponentKey, Integer> shortcutMapCopy =
                 new HashMap<>(dataModel.deepShortcutMap);
         scheduleCallbackTask(callbacks -> callbacks.bindDeepShortcutMap(shortcutMapCopy));
     }
 
-    public void bindUpdatedWidgets(BgDataModel dataModel) {
+    public void bindUpdatedWidgets(@NonNull final BgDataModel dataModel) {
         final ArrayList<WidgetsListBaseEntry> widgets =
                 dataModel.widgetsModel.getWidgetsListForPicker(mApp.getContext());
         scheduleCallbackTask(c -> c.bindAllWidgets(widgets));
@@ -139,10 +157,19 @@
     }
 
     public void bindApplicationsIfNeeded() {
-        if (mAllAppsList.getAndResetChangeFlag()) {
+        boolean changeFlag = mAllAppsList.getAndResetChangeFlag();
+        if (TestProtocol.sDebugTracing) {
+            Log.d(WORK_TAB_MISSING, "bindApplicationsIfNeeded changeFlag? " +
+                    changeFlag);
+        }
+        if (changeFlag) {
             AppInfo[] apps = mAllAppsList.copyData();
             int flags = mAllAppsList.getFlags();
-            scheduleCallbackTask(c -> c.bindAllApplications(apps, flags));
+            Map<PackageUserKey, Integer> packageUserKeytoUidMap = Arrays.stream(apps).collect(
+                    Collectors.toMap(
+                            appInfo -> new PackageUserKey(appInfo.componentName.getPackageName(),
+                                    appInfo.user), appInfo -> appInfo.uid, (a, b) -> a));
+            scheduleCallbackTask(c -> c.bindAllApplications(apps, flags, packageUserKeytoUidMap));
         }
     }
 }
diff --git a/src/com/android/launcher3/model/BgDataModel.java b/src/com/android/launcher3/model/BgDataModel.java
index de23c4b..d94df51 100644
--- a/src/com/android/launcher3/model/BgDataModel.java
+++ b/src/com/android/launcher3/model/BgDataModel.java
@@ -51,6 +51,7 @@
 import com.android.launcher3.util.IntArray;
 import com.android.launcher3.util.IntSet;
 import com.android.launcher3.util.IntSparseArrayMap;
+import com.android.launcher3.util.PackageUserKey;
 import com.android.launcher3.util.RunnableList;
 import com.android.launcher3.widget.model.WidgetsListBaseEntry;
 
@@ -190,14 +191,15 @@
         for (ItemInfo item : items) {
             switch (item.itemType) {
                 case LauncherSettings.Favorites.ITEM_TYPE_FOLDER:
+                case LauncherSettings.Favorites.ITEM_TYPE_APP_PAIR:
                     folders.remove(item.id);
                     if (FeatureFlags.IS_STUDIO_BUILD) {
                         for (ItemInfo info : itemsIdMap) {
                             if (info.container == item.id) {
                                 // We are deleting a folder which still contains items that
                                 // think they are contained by that folder.
-                                String msg = "deleting a folder (" + item + ") which still " +
-                                        "contains items (" + info + ")";
+                                String msg = "deleting a collection (" + item + ") which still "
+                                        + "contains items (" + info + ")";
                                 Log.e(TAG, msg);
                             }
                         }
@@ -238,6 +240,7 @@
         itemsIdMap.put(item.id, item);
         switch (item.itemType) {
             case LauncherSettings.Favorites.ITEM_TYPE_FOLDER:
+            case LauncherSettings.Favorites.ITEM_TYPE_APP_PAIR:
                 folders.put(item.id, (FolderInfo) item);
                 workspaceItems.add(item);
                 break;
@@ -250,15 +253,14 @@
                 } else {
                     if (newItem) {
                         if (!folders.containsKey(item.container)) {
-                            // Adding an item to a folder that doesn't exist.
-                            String msg = "adding item: " + item + " to a folder that " +
-                                    " doesn't exist";
+                            // Adding an item to a nonexistent collection.
+                            String msg = "attempted to add item: " + item + " to a nonexistent app"
+                                    + " collection";
                             Log.e(TAG, msg);
                         }
                     } else {
                         findOrMakeFolder(item.container).add((WorkspaceItemInfo) item, false);
                     }
-
                 }
                 break;
             case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET:
@@ -433,26 +435,9 @@
         public final int containerId;
         public final List<ItemInfo> items;
 
-        public FixedContainerItems(int containerId) {
-            this(containerId, new ArrayList<>());
-        }
-
         public FixedContainerItems(int containerId, List<ItemInfo> items) {
             this.containerId = containerId;
-            this.items = items;
-        }
-
-        @Override
-        public FixedContainerItems clone() {
-            return new FixedContainerItems(containerId, new ArrayList<>(items));
-        }
-
-        public void setItems(List<ItemInfo> newItems) {
-            items.clear();
-            newItems.forEach(item -> {
-                item.container = containerId;
-                items.add(item);
-            });
+            this.items = Collections.unmodifiableList(items);
         }
     }
 
@@ -500,7 +485,9 @@
         default void bindWorkspaceComponentsRemoved(Predicate<ItemInfo> matcher) { }
         default void bindAllWidgets(List<WidgetsListBaseEntry> widgets) { }
 
-        default void onInitialBindComplete(IntSet boundPages, RunnableList pendingTasks) {
+        /** Called when workspace has been bound. */
+        default void onInitialBindComplete(IntSet boundPages, RunnableList pendingTasks,
+                int workspaceItemCount, boolean isBindSync) {
             pendingTasks.executeAllAndDestroy();
         }
 
@@ -511,7 +498,9 @@
          */
         default void bindExtraContainerItems(FixedContainerItems item) { }
 
-        default void bindAllApplications(AppInfo[] apps, int flags) { }
+        default void bindAllApplications(AppInfo[] apps, int flags,
+                Map<PackageUserKey, Integer> packageUserKeytoUidMap) {
+        }
 
         /**
          * Binds the cache of string resources
diff --git a/src/com/android/launcher3/model/CacheDataUpdatedTask.java b/src/com/android/launcher3/model/CacheDataUpdatedTask.java
index f644d49..57fefaa 100644
--- a/src/com/android/launcher3/model/CacheDataUpdatedTask.java
+++ b/src/com/android/launcher3/model/CacheDataUpdatedTask.java
@@ -18,6 +18,8 @@
 import android.content.ComponentName;
 import android.os.UserHandle;
 
+import androidx.annotation.NonNull;
+
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.icons.IconCache;
@@ -35,17 +37,23 @@
     public static final int OP_SESSION_UPDATE = 2;
 
     private final int mOp;
+
+    @NonNull
     private final UserHandle mUser;
+
+    @NonNull
     private final HashSet<String> mPackages;
 
-    public CacheDataUpdatedTask(int op, UserHandle user, HashSet<String> packages) {
+    public CacheDataUpdatedTask(final int op, @NonNull final UserHandle user,
+            @NonNull final HashSet<String> packages) {
         mOp = op;
         mUser = user;
         mPackages = packages;
     }
 
     @Override
-    public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) {
+    public void execute(@NonNull final LauncherAppState app, @NonNull final BgDataModel dataModel,
+            @NonNull final AllAppsList apps) {
         IconCache iconCache = app.getIconCache();
         ArrayList<WorkspaceItemInfo> updatedShortcuts = new ArrayList<>();
 
@@ -65,7 +73,7 @@
         bindApplicationsIfNeeded();
     }
 
-    public boolean isValidShortcut(WorkspaceItemInfo si) {
+    public boolean isValidShortcut(@NonNull final WorkspaceItemInfo si) {
         switch (mOp) {
             case OP_CACHE_UPDATE:
                 return true;
diff --git a/src/com/android/launcher3/model/DatabaseHelper.java b/src/com/android/launcher3/model/DatabaseHelper.java
new file mode 100644
index 0000000..ecf5f67
--- /dev/null
+++ b/src/com/android/launcher3/model/DatabaseHelper.java
@@ -0,0 +1,533 @@
+/*
+ * 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.launcher3.model;
+
+import static com.android.launcher3.LauncherSettings.Favorites.addTableToDb;
+import static com.android.launcher3.provider.LauncherDbUtils.dropTable;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
+import android.database.Cursor;
+import android.database.DatabaseUtils;
+import android.database.SQLException;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteStatement;
+import android.os.Process;
+import android.os.UserHandle;
+import android.provider.BaseColumns;
+import android.text.TextUtils;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+
+import com.android.launcher3.AutoInstallsLayout;
+import com.android.launcher3.AutoInstallsLayout.LayoutParserCallback;
+import com.android.launcher3.LauncherSettings;
+import com.android.launcher3.LauncherSettings.Favorites;
+import com.android.launcher3.Utilities;
+import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.logging.FileLog;
+import com.android.launcher3.pm.UserCache;
+import com.android.launcher3.provider.LauncherDbUtils;
+import com.android.launcher3.provider.LauncherDbUtils.SQLiteTransaction;
+import com.android.launcher3.util.IntArray;
+import com.android.launcher3.util.IntSet;
+import com.android.launcher3.util.NoLocaleSQLiteHelper;
+import com.android.launcher3.util.PackageManagerHelper;
+import com.android.launcher3.util.Thunk;
+import com.android.launcher3.widget.LauncherWidgetHolder;
+
+import java.io.File;
+import java.net.URISyntaxException;
+import java.util.Arrays;
+import java.util.Locale;
+import java.util.function.ToLongFunction;
+import java.util.stream.Collectors;
+
+/**
+ * SqLite database for launcher home-screen model
+ * The class is subclassed in tests to create an in-memory db.
+ */
+public class DatabaseHelper extends NoLocaleSQLiteHelper implements
+        LayoutParserCallback {
+
+    /**
+     * Represents the schema of the database. Changes in scheme need not be backwards compatible.
+     * When increasing the scheme version, ensure that downgrade_schema.json is updated
+     */
+    public static final int SCHEMA_VERSION = 32;
+    private static final String TAG = "DatabaseHelper";
+    private static final boolean LOGD = false;
+
+    private static final String DOWNGRADE_SCHEMA_FILE = "downgrade_schema.json";
+
+    private final Context mContext;
+    private final ToLongFunction<UserHandle> mUserSerialProvider;
+    private final Runnable mOnEmptyDbCreateCallback;
+
+    private int mMaxItemId = -1;
+    public boolean mHotseatRestoreTableExists;
+
+    /**
+     * Constructor used in tests and for restore.
+     */
+    public DatabaseHelper(Context context, String dbName,
+            ToLongFunction<UserHandle> userSerialProvider, Runnable onEmptyDbCreateCallback) {
+        super(context, dbName, SCHEMA_VERSION);
+        mContext = context;
+        mUserSerialProvider = userSerialProvider;
+        mOnEmptyDbCreateCallback = onEmptyDbCreateCallback;
+    }
+
+    protected void initIds() {
+        // In the case where neither onCreate nor onUpgrade gets called, we read the maxId from
+        // the DB here
+        if (mMaxItemId == -1) {
+            mMaxItemId = initializeMaxItemId(getWritableDatabase());
+        }
+    }
+
+    @Override
+    public void onCreate(SQLiteDatabase db) {
+        if (LOGD) Log.d(TAG, "creating new launcher database");
+
+        mMaxItemId = 1;
+
+        addTableToDb(db, getDefaultUserSerial(), false /* optional */);
+
+        // Fresh and clean launcher DB.
+        mMaxItemId = initializeMaxItemId(db);
+        mOnEmptyDbCreateCallback.run();
+    }
+
+    public void onAddOrDeleteOp(SQLiteDatabase db) {
+        if (mHotseatRestoreTableExists) {
+            dropTable(db, Favorites.HYBRID_HOTSEAT_BACKUP_TABLE);
+            mHotseatRestoreTableExists = false;
+        }
+    }
+
+    private long getDefaultUserSerial() {
+        return mUserSerialProvider.applyAsLong(Process.myUserHandle());
+    }
+
+    @Override
+    public void onOpen(SQLiteDatabase db) {
+        super.onOpen(db);
+
+        File schemaFile = mContext.getFileStreamPath(DOWNGRADE_SCHEMA_FILE);
+        if (!schemaFile.exists()) {
+            handleOneTimeDataUpgrade(db);
+        }
+        DbDowngradeHelper.updateSchemaFile(schemaFile, SCHEMA_VERSION, mContext);
+    }
+
+    /**
+     * One-time data updated before support of onDowngrade was added. This update is backwards
+     * compatible and can safely be run multiple times.
+     * Note: No new logic should be added here after release, as the new logic might not get
+     * executed on an existing device.
+     * TODO: Move this to db upgrade path, once the downgrade path is released.
+     */
+    protected void handleOneTimeDataUpgrade(SQLiteDatabase db) {
+        // Remove "profile extra"
+        UserCache um = UserCache.INSTANCE.get(mContext);
+        for (UserHandle user : um.getUserProfiles()) {
+            long serial = um.getSerialNumberForUser(user);
+            String sql = "update favorites set intent = replace(intent, "
+                    + "';l.profile=" + serial + ";', ';') where itemType = 0;";
+            db.execSQL(sql);
+        }
+    }
+
+    @Override
+    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+        if (LOGD) {
+            Log.d(TAG, "onUpgrade triggered: " + oldVersion);
+        }
+        switch (oldVersion) {
+            // The version cannot be lower that 12, as Launcher3 never supported a lower
+            // version of the DB.
+            case 12:
+                // No-op
+            case 13: {
+                try (SQLiteTransaction t = new SQLiteTransaction(db)) {
+                    // Insert new column for holding widget provider name
+                    db.execSQL("ALTER TABLE favorites ADD COLUMN appWidgetProvider TEXT;");
+                    t.commit();
+                } catch (SQLException ex) {
+                    Log.e(TAG, ex.getMessage(), ex);
+                    // Old version remains, which means we wipe old data
+                    break;
+                }
+            }
+            case 14: {
+                if (!addIntegerColumn(db, Favorites.MODIFIED, 0)) {
+                    // Old version remains, which means we wipe old data
+                    break;
+                }
+            }
+            case 15: {
+                if (!addIntegerColumn(db, Favorites.RESTORED, 0)) {
+                    // Old version remains, which means we wipe old data
+                    break;
+                }
+            }
+            case 16:
+                // No-op
+            case 17:
+                // No-op
+            case 18:
+                // No-op
+            case 19: {
+                // Add userId column
+                if (!addIntegerColumn(db, Favorites.PROFILE_ID, getDefaultUserSerial())) {
+                    // Old version remains, which means we wipe old data
+                    break;
+                }
+            }
+            case 20:
+                if (!updateFolderItemsRank(db, true)) {
+                    break;
+                }
+            case 21:
+                // No-op
+            case 22: {
+                if (!addIntegerColumn(db, Favorites.OPTIONS, 0)) {
+                    // Old version remains, which means we wipe old data
+                    break;
+                }
+            }
+            case 23:
+                // No-op
+            case 24:
+                // No-op
+            case 25:
+                convertShortcutsToLauncherActivities(db);
+            case 26:
+                // QSB was moved to the grid. Ignore overlapping items
+            case 27: {
+                // Update the favorites table so that the screen ids are ordered based on
+                // workspace page rank.
+                IntArray finalScreens = LauncherDbUtils.queryIntArray(false, db,
+                        "workspaceScreens", BaseColumns._ID, null, null, "screenRank");
+                int[] original = finalScreens.toArray();
+                Arrays.sort(original);
+                String updatemap = "";
+                for (int i = 0; i < original.length; i++) {
+                    if (finalScreens.get(i) != original[i]) {
+                        updatemap += String.format(Locale.ENGLISH, " WHEN %1$s=%2$d THEN %3$d",
+                                Favorites.SCREEN, finalScreens.get(i), original[i]);
+                    }
+                }
+                if (!TextUtils.isEmpty(updatemap)) {
+                    String query = String.format(Locale.ENGLISH,
+                            "UPDATE %1$s SET %2$s=CASE %3$s ELSE %2$s END WHERE %4$s = %5$d",
+                            Favorites.TABLE_NAME, Favorites.SCREEN, updatemap,
+                            Favorites.CONTAINER, Favorites.CONTAINER_DESKTOP);
+                    db.execSQL(query);
+                }
+                dropTable(db, "workspaceScreens");
+            }
+            case 28: {
+                boolean columnAdded = addIntegerColumn(
+                        db, Favorites.APPWIDGET_SOURCE, Favorites.CONTAINER_UNKNOWN);
+                if (!columnAdded) {
+                    // Old version remains, which means we wipe old data
+                    break;
+                }
+            }
+            case 29: {
+                // Remove widget panel related leftover workspace items
+                db.delete(Favorites.TABLE_NAME, Utilities.createDbSelectionQuery(
+                        Favorites.SCREEN, IntArray.wrap(-777, -778)), null);
+            }
+            case 30: {
+                if (FeatureFlags.QSB_ON_FIRST_SCREEN) {
+                    // Clean up first row in screen 0 as it might contain junk data.
+                    Log.d(TAG, "Cleaning up first row");
+                    db.delete(Favorites.TABLE_NAME,
+                            String.format(Locale.ENGLISH,
+                                    "%1$s = %2$d AND %3$s = %4$d AND %5$s = %6$d",
+                                    Favorites.SCREEN, 0,
+                                    Favorites.CONTAINER, Favorites.CONTAINER_DESKTOP,
+                                    Favorites.CELLY, 0), null);
+                }
+                return;
+            }
+            case 31: {
+                LauncherDbUtils.migrateLegacyShortcuts(mContext, db);
+            }
+            // Fall through
+            case 32: {
+                // DB Upgraded successfully
+                return;
+            }
+        }
+
+        // DB was not upgraded
+        Log.w(TAG, "Destroying all old data.");
+        createEmptyDB(db);
+    }
+
+    @Override
+    public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+        try {
+            DbDowngradeHelper.parse(mContext.getFileStreamPath(DOWNGRADE_SCHEMA_FILE))
+                    .onDowngrade(db, oldVersion, newVersion);
+        } catch (Exception e) {
+            Log.d(TAG, "Unable to downgrade from: " + oldVersion + " to " + newVersion
+                    + ". Wiping database.", e);
+            createEmptyDB(db);
+        }
+    }
+
+    /**
+     * Clears all the data for a fresh start.
+     */
+    public void createEmptyDB(SQLiteDatabase db) {
+        try (SQLiteTransaction t = new SQLiteTransaction(db)) {
+            dropTable(db, Favorites.TABLE_NAME);
+            dropTable(db, "workspaceScreens");
+            onCreate(db);
+            t.commit();
+        }
+    }
+
+    /**
+     * Removes widgets which are registered to the Launcher's host, but are not present
+     * in our model.
+     */
+    public void removeGhostWidgets(SQLiteDatabase db) {
+        // Get all existing widget ids.
+        final LauncherWidgetHolder holder = newLauncherWidgetHolder();
+        try {
+            final int[] allWidgets;
+            try {
+                // Although the method was defined in O, it has existed since the beginning of
+                // time, so it might work on older platforms as well.
+                allWidgets = holder.getAppWidgetIds();
+            } catch (IncompatibleClassChangeError e) {
+                Log.e(TAG, "getAppWidgetIds not supported", e);
+                return;
+            }
+            final IntSet validWidgets = IntSet.wrap(LauncherDbUtils.queryIntArray(false, db,
+                    Favorites.TABLE_NAME, Favorites.APPWIDGET_ID,
+                    "itemType=" + Favorites.ITEM_TYPE_APPWIDGET, null, null));
+            boolean isAnyWidgetRemoved = false;
+            for (int widgetId : allWidgets) {
+                if (!validWidgets.contains(widgetId)) {
+                    try {
+                        FileLog.d(TAG, "Deleting invalid widget " + widgetId);
+                        holder.deleteAppWidgetId(widgetId);
+                        isAnyWidgetRemoved = true;
+                    } catch (RuntimeException e) {
+                        // Ignore
+                    }
+                }
+            }
+            if (isAnyWidgetRemoved) {
+                final String allWidgetsIds = Arrays.stream(allWidgets).mapToObj(String::valueOf)
+                        .collect(Collectors.joining(",", "[", "]"));
+                final String validWidgetsIds = Arrays.stream(
+                                validWidgets.getArray().toArray()).mapToObj(String::valueOf)
+                        .collect(Collectors.joining(",", "[", "]"));
+                FileLog.d(TAG,
+                        "One or more widgets was removed. db_path=" + db.getPath()
+                                + " allWidgetsIds=" + allWidgetsIds
+                                + ", validWidgetsIds=" + validWidgetsIds);
+            }
+        } finally {
+            holder.destroy();
+        }
+    }
+
+    /**
+     * Replaces all shortcuts of type {@link Favorites#ITEM_TYPE_SHORTCUT} which have a valid
+     * launcher activity target with {@link Favorites#ITEM_TYPE_APPLICATION}.
+     */
+    @Thunk
+    void convertShortcutsToLauncherActivities(SQLiteDatabase db) {
+        try (SQLiteTransaction t = new SQLiteTransaction(db);
+             // Only consider the primary user as other users can't have a shortcut.
+             Cursor c = db.query(Favorites.TABLE_NAME,
+                     new String[]{Favorites._ID, Favorites.INTENT},
+                     "itemType=" + Favorites.ITEM_TYPE_SHORTCUT
+                             + " AND profileId=" + getDefaultUserSerial(),
+                     null, null, null, null);
+             SQLiteStatement updateStmt = db.compileStatement("UPDATE favorites SET itemType="
+                     + Favorites.ITEM_TYPE_APPLICATION + " WHERE _id=?")
+        ) {
+            final int idIndex = c.getColumnIndexOrThrow(Favorites._ID);
+            final int intentIndex = c.getColumnIndexOrThrow(Favorites.INTENT);
+
+            while (c.moveToNext()) {
+                String intentDescription = c.getString(intentIndex);
+                Intent intent;
+                try {
+                    intent = Intent.parseUri(intentDescription, 0);
+                } catch (URISyntaxException e) {
+                    Log.e(TAG, "Unable to parse intent", e);
+                    continue;
+                }
+
+                if (!PackageManagerHelper.isLauncherAppTarget(intent)) {
+                    continue;
+                }
+
+                int id = c.getInt(idIndex);
+                updateStmt.bindLong(1, id);
+                updateStmt.executeUpdateDelete();
+            }
+            t.commit();
+        } catch (SQLException ex) {
+            Log.w(TAG, "Error deduping shortcuts", ex);
+        }
+    }
+
+    @Thunk
+    boolean updateFolderItemsRank(SQLiteDatabase db, boolean addRankColumn) {
+        try (SQLiteTransaction t = new SQLiteTransaction(db)) {
+            if (addRankColumn) {
+                // Insert new column for holding rank
+                db.execSQL("ALTER TABLE favorites ADD COLUMN rank INTEGER NOT NULL DEFAULT 0;");
+            }
+
+            // Get a map for folder ID to folder width
+            Cursor c = db.rawQuery("SELECT container, MAX(cellX) FROM favorites"
+                            + " WHERE container IN (SELECT _id FROM favorites WHERE itemType = ?)"
+                            + " GROUP BY container;",
+                    new String[]{Integer.toString(Favorites.ITEM_TYPE_FOLDER)});
+
+            while (c.moveToNext()) {
+                db.execSQL("UPDATE favorites SET rank=cellX+(cellY*?) WHERE "
+                                + "container=? AND cellX IS NOT NULL AND cellY IS NOT NULL;",
+                        new Object[]{c.getLong(1) + 1, c.getLong(0)});
+            }
+
+            c.close();
+            t.commit();
+        } catch (SQLException ex) {
+            // Old version remains, which means we wipe old data
+            Log.e(TAG, ex.getMessage(), ex);
+            return false;
+        }
+        return true;
+    }
+
+    private boolean addIntegerColumn(SQLiteDatabase db, String columnName, long defaultValue) {
+        try (SQLiteTransaction t = new SQLiteTransaction(db)) {
+            db.execSQL("ALTER TABLE favorites ADD COLUMN "
+                    + columnName + " INTEGER NOT NULL DEFAULT " + defaultValue + ";");
+            t.commit();
+        } catch (SQLException ex) {
+            Log.e(TAG, ex.getMessage(), ex);
+            return false;
+        }
+        return true;
+    }
+
+    // Generates a new ID to use for an object in your database. This method should be only
+    // called from the main UI thread. As an exception, we do call it when we call the
+    // constructor from the worker thread; however, this doesn't extend until after the
+    // constructor is called, and we only pass a reference to LauncherProvider to LauncherApp
+    // after that point
+    @Override
+    public int generateNewItemId() {
+        if (mMaxItemId < 0) {
+            throw new RuntimeException("Error: max item id was not initialized");
+        }
+        mMaxItemId += 1;
+        return mMaxItemId;
+    }
+
+    /**
+     * @return A new {@link LauncherWidgetHolder} based on the current context
+     */
+    @NonNull
+    public LauncherWidgetHolder newLauncherWidgetHolder() {
+        return LauncherWidgetHolder.newInstance(mContext);
+    }
+
+    @Override
+    public int insertAndCheck(SQLiteDatabase db, ContentValues values) {
+        return dbInsertAndCheck(db, Favorites.TABLE_NAME, values);
+    }
+
+    public int dbInsertAndCheck(SQLiteDatabase db, String table, ContentValues values) {
+        if (values == null) {
+            throw new RuntimeException("Error: attempting to insert null values");
+        }
+        if (!values.containsKey(LauncherSettings.Favorites._ID)) {
+            throw new RuntimeException("Error: attempting to add item without specifying an id");
+        }
+        checkId(values);
+        return (int) db.insert(table, null, values);
+    }
+
+    public void checkId(ContentValues values) {
+        int id = values.getAsInteger(Favorites._ID);
+        mMaxItemId = Math.max(id, mMaxItemId);
+    }
+
+    private int initializeMaxItemId(SQLiteDatabase db) {
+        return getMaxId(db, "SELECT MAX(%1$s) FROM %2$s", Favorites._ID,
+                Favorites.TABLE_NAME);
+    }
+
+    /**
+     * Returns a new ID to use for a workspace screen in your database that is greater than all
+     * existing screen IDs
+     */
+    public int getNewScreenId() {
+        return getMaxId(getWritableDatabase(),
+                "SELECT MAX(%1$s) FROM %2$s WHERE %3$s = %4$d AND %1$s >= 0",
+                Favorites.SCREEN, Favorites.TABLE_NAME, Favorites.CONTAINER,
+                Favorites.CONTAINER_DESKTOP) + 1;
+    }
+
+    public int loadFavorites(SQLiteDatabase db, AutoInstallsLayout loader) {
+        // TODO: Use multiple loaders with fall-back and transaction.
+        int count = loader.loadLayout(db, new IntArray());
+
+        // Ensure that the max ids are initialized
+        mMaxItemId = initializeMaxItemId(db);
+        return count;
+    }
+
+    /**
+     * @return the max _id in the provided table.
+     */
+    private static int getMaxId(SQLiteDatabase db, String query, Object... args) {
+        int max = 0;
+        try (SQLiteStatement prog = db.compileStatement(
+                String.format(Locale.ENGLISH, query, args))) {
+            max = (int) DatabaseUtils.longForQuery(prog, null);
+            if (max < 0) {
+                throw new RuntimeException("Error: could not query max id");
+            }
+        } catch (IllegalArgumentException exception) {
+            String message = exception.getMessage();
+            if (message.contains("re-open") && message.contains("already-closed")) {
+                // Don't crash trying to end a transaction an an already closed DB. See b/173162852.
+            } else {
+                throw exception;
+            }
+        }
+        return max;
+    }
+}
diff --git a/src/com/android/launcher3/model/DbDowngradeHelper.java b/src/com/android/launcher3/model/DbDowngradeHelper.java
index e5c44d1..006a9b7 100644
--- a/src/com/android/launcher3/model/DbDowngradeHelper.java
+++ b/src/com/android/launcher3/model/DbDowngradeHelper.java
@@ -72,8 +72,18 @@
         }
     }
 
+    /**
+     * Creates a helper from the provided file
+     */
     public static DbDowngradeHelper parse(File file) throws JSONException, IOException {
-        JSONObject obj = new JSONObject(new String(IOUtils.toByteArray(file)));
+        return parse(IOUtils.toByteArray(file));
+    }
+
+    /**
+     * Creates a helper from the provided bytes
+     */
+    public static DbDowngradeHelper parse(byte[] fileData) throws JSONException {
+        JSONObject obj = new JSONObject(new String(fileData));
         DbDowngradeHelper helper = new DbDowngradeHelper(obj.getInt(KEY_VERSION));
         for (int version = helper.version - 1; version > 0; version--) {
             if (obj.has(KEY_DOWNGRADE_TO + version)) {
diff --git a/src/com/android/launcher3/model/DeviceGridState.java b/src/com/android/launcher3/model/DeviceGridState.java
index 35fcb78..edc8c1b 100644
--- a/src/com/android/launcher3/model/DeviceGridState.java
+++ b/src/com/android/launcher3/model/DeviceGridState.java
@@ -17,7 +17,10 @@
 package com.android.launcher3.model;
 
 import static com.android.launcher3.InvariantDeviceProfile.DeviceType;
-import static com.android.launcher3.InvariantDeviceProfile.TYPE_PHONE;
+import static com.android.launcher3.LauncherPrefs.DB_FILE;
+import static com.android.launcher3.LauncherPrefs.DEVICE_TYPE;
+import static com.android.launcher3.LauncherPrefs.HOTSEAT_COUNT;
+import static com.android.launcher3.LauncherPrefs.WORKSPACE_SIZE;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_GRID_SIZE_2;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_GRID_SIZE_3;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_GRID_SIZE_4;
@@ -25,11 +28,10 @@
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_GRID_SIZE_6;
 
 import android.content.Context;
-import android.content.SharedPreferences;
 import android.text.TextUtils;
 
 import com.android.launcher3.InvariantDeviceProfile;
-import com.android.launcher3.Utilities;
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.logging.StatsLogManager.LauncherEvent;
 
 import java.util.Locale;
@@ -58,11 +60,11 @@
     }
 
     public DeviceGridState(Context context) {
-        SharedPreferences prefs = Utilities.getPrefs(context);
-        mGridSizeString = prefs.getString(KEY_WORKSPACE_SIZE, "");
-        mNumHotseat = prefs.getInt(KEY_HOTSEAT_COUNT, -1);
-        mDeviceType = prefs.getInt(KEY_DEVICE_TYPE, TYPE_PHONE);
-        mDbFile = prefs.getString(KEY_DB_FILE, "");
+        LauncherPrefs lp = LauncherPrefs.get(context);
+        mGridSizeString = lp.get(WORKSPACE_SIZE);
+        mNumHotseat = lp.get(HOTSEAT_COUNT);
+        mDeviceType = lp.get(DEVICE_TYPE);
+        mDbFile = lp.get(DB_FILE);
     }
 
     /**
@@ -90,12 +92,11 @@
      * Stores the device state to shared preferences
      */
     public void writeToPrefs(Context context) {
-        Utilities.getPrefs(context).edit()
-                .putString(KEY_WORKSPACE_SIZE, mGridSizeString)
-                .putInt(KEY_HOTSEAT_COUNT, mNumHotseat)
-                .putInt(KEY_DEVICE_TYPE, mDeviceType)
-                .putString(KEY_DB_FILE, mDbFile)
-                .apply();
+        LauncherPrefs.get(context).put(
+                WORKSPACE_SIZE.to(mGridSizeString),
+                HOTSEAT_COUNT.to(mNumHotseat),
+                DEVICE_TYPE.to(mDeviceType),
+                DB_FILE.to(mDbFile));
     }
 
     /**
@@ -134,10 +135,13 @@
      * DeviceGridState without migration, or false otherwise.
      */
     public boolean isCompatible(DeviceGridState other) {
-        if (this == other) return true;
-        if (other == null) return false;
-        return mNumHotseat == other.mNumHotseat
-                && Objects.equals(mGridSizeString, other.mGridSizeString);
+        if (this == other) {
+            return true;
+        }
+        if (other == null) {
+            return false;
+        }
+        return Objects.equals(mDbFile, other.mDbFile);
     }
 
     public Integer getColumns() {
diff --git a/src/com/android/launcher3/model/GridBackupTable.java b/src/com/android/launcher3/model/GridBackupTable.java
index 51cbf4b..6bd8518 100644
--- a/src/com/android/launcher3/model/GridBackupTable.java
+++ b/src/com/android/launcher3/model/GridBackupTable.java
@@ -15,18 +15,12 @@
  */
 package com.android.launcher3.model;
 
-import static com.android.launcher3.LauncherSettings.Favorites.BACKUP_TABLE_NAME;
 import static com.android.launcher3.provider.LauncherDbUtils.dropTable;
 import static com.android.launcher3.provider.LauncherDbUtils.tableExists;
 
-import android.content.ContentValues;
 import android.content.Context;
-import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
 import android.os.Process;
-import android.util.Log;
-
-import androidx.annotation.IntDef;
 
 import com.android.launcher3.LauncherSettings.Favorites;
 import com.android.launcher3.pm.UserCache;
@@ -36,50 +30,13 @@
  * within the same data base.
  */
 public class GridBackupTable {
-    private static final String TAG = "GridBackupTable";
-
-    private static final int ID_PROPERTY = -1;
-
-    private static final String KEY_HOTSEAT_SIZE = Favorites.SCREEN;
-    private static final String KEY_GRID_X_SIZE = Favorites.SPANX;
-    private static final String KEY_GRID_Y_SIZE = Favorites.SPANY;
-    private static final String KEY_DB_VERSION = Favorites.RANK;
-
-    public static final int OPTION_REQUIRES_SANITIZATION = 1;
-
-    /** STATE_NOT_FOUND indicates backup doesn't exist in the db. */
-    private static final int STATE_NOT_FOUND = 0;
-    /**
-     *  STATE_RAW indicates the backup has not yet been sanitized. This implies it might still
-     *  posses app info that doesn't exist in the workspace and needed to be sanitized before
-     *  put into use.
-     */
-    private static final int STATE_RAW = 1;
-    /** STATE_SANITIZED indicates the backup has already been sanitized, thus can be used as-is. */
-    private static final int STATE_SANITIZED = 2;
 
     private final Context mContext;
     private final SQLiteDatabase mDb;
 
-    private final int mOldHotseatSize;
-    private final int mOldGridX;
-    private final int mOldGridY;
-
-    private int mRestoredHotseatSize;
-    private int mRestoredGridX;
-    private int mRestoredGridY;
-
-    @IntDef({STATE_NOT_FOUND, STATE_RAW, STATE_SANITIZED})
-    private @interface BackupState { }
-
-    public GridBackupTable(Context context, SQLiteDatabase db, int hotseatSize, int gridX,
-            int gridY) {
+    public GridBackupTable(Context context, SQLiteDatabase db) {
         mContext = context;
         mDb = db;
-
-        mOldHotseatSize = hotseatSize;
-        mOldGridX = gridX;
-        mOldGridY = gridY;
     }
 
     /**
@@ -89,7 +46,6 @@
         long profileId = UserCache.INSTANCE.get(mContext).getSerialNumberForUser(
                 Process.myUserHandle());
         copyTable(mDb, Favorites.TABLE_NAME, tableName, profileId);
-        encodeDBProperties(0);
     }
 
     /**
@@ -114,78 +70,6 @@
     private static void copyTable(SQLiteDatabase db, String from, String to, long userSerial) {
         dropTable(db, to);
         Favorites.addTableToDb(db, userSerial, false, to);
-        db.execSQL("INSERT INTO " + to + " SELECT * FROM " + from + " where _id > " + ID_PROPERTY);
-    }
-
-    private void encodeDBProperties(int options) {
-        ContentValues values = new ContentValues();
-        values.put(Favorites._ID, ID_PROPERTY);
-        values.put(KEY_DB_VERSION, mDb.getVersion());
-        values.put(KEY_GRID_X_SIZE, mOldGridX);
-        values.put(KEY_GRID_Y_SIZE, mOldGridY);
-        values.put(KEY_HOTSEAT_SIZE, mOldHotseatSize);
-        values.put(Favorites.OPTIONS, options);
-        mDb.insert(BACKUP_TABLE_NAME, null, values);
-    }
-
-    /**
-     * Load DB properties from grid backup table.
-     */
-    public @BackupState int loadDBProperties() {
-        try (Cursor c = mDb.query(BACKUP_TABLE_NAME, new String[] {
-                KEY_DB_VERSION,     // 0
-                KEY_GRID_X_SIZE,    // 1
-                KEY_GRID_Y_SIZE,    // 2
-                KEY_HOTSEAT_SIZE,   // 3
-                Favorites.OPTIONS}, // 4
-                "_id=" + ID_PROPERTY, null, null, null, null)) {
-            if (!c.moveToNext()) {
-                Log.e(TAG, "Meta data not found in backup table");
-                return STATE_NOT_FOUND;
-            }
-            if (!validateDBVersion(mDb.getVersion(), c.getInt(0))) {
-                return STATE_NOT_FOUND;
-            }
-
-            mRestoredGridX = c.getInt(1);
-            mRestoredGridY = c.getInt(2);
-            mRestoredHotseatSize = c.getInt(3);
-            boolean isSanitized = (c.getInt(4) & OPTION_REQUIRES_SANITIZATION) == 0;
-            return isSanitized ? STATE_SANITIZED : STATE_RAW;
-        }
-    }
-
-    /**
-     * Restore workspace from raw backup if available.
-     */
-    public boolean restoreFromRawBackupIfAvailable(long oldProfileId) {
-        if (!tableExists(mDb, Favorites.BACKUP_TABLE_NAME)
-                || loadDBProperties() != STATE_RAW
-                || mOldHotseatSize != mRestoredHotseatSize
-                || mOldGridX != mRestoredGridX
-                || mOldGridY != mRestoredGridY) {
-            // skip restore if dimensions in backup table differs from current setup.
-            return false;
-        }
-        copyTable(mDb, Favorites.BACKUP_TABLE_NAME, Favorites.TABLE_NAME, oldProfileId);
-        Log.d(TAG, "Backup restored");
-        return true;
-    }
-
-    /**
-     * Performs a backup on the workspace layout.
-     */
-    public void doBackup(long profileId, int options) {
-        copyTable(mDb, Favorites.TABLE_NAME, Favorites.BACKUP_TABLE_NAME, profileId);
-        encodeDBProperties(options);
-    }
-
-    private static boolean validateDBVersion(int expected, int actual) {
-        if (expected != actual) {
-            Log.e(TAG, String.format("Launcher.db version mismatch, expecting %d but %d was found",
-                    expected, actual));
-            return false;
-        }
-        return true;
+        db.execSQL("INSERT INTO " + to + " SELECT * FROM " + from);
     }
 }
diff --git a/src/com/android/launcher3/model/GridSizeMigrationTaskV2.java b/src/com/android/launcher3/model/GridSizeMigrationTaskV2.java
deleted file mode 100644
index ef9250c..0000000
--- a/src/com/android/launcher3/model/GridSizeMigrationTaskV2.java
+++ /dev/null
@@ -1,784 +0,0 @@
-/*
- * Copyright (C) 2020 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.launcher3.model;
-
-import static com.android.launcher3.provider.LauncherDbUtils.dropTable;
-
-import android.content.ComponentName;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.database.Cursor;
-import android.database.DatabaseUtils;
-import android.database.sqlite.SQLiteDatabase;
-import android.graphics.Point;
-import android.util.ArrayMap;
-import android.util.Log;
-
-import androidx.annotation.VisibleForTesting;
-
-import com.android.launcher3.InvariantDeviceProfile;
-import com.android.launcher3.LauncherAppState;
-import com.android.launcher3.LauncherSettings;
-import com.android.launcher3.Utilities;
-import com.android.launcher3.config.FeatureFlags;
-import com.android.launcher3.graphics.LauncherPreviewRenderer;
-import com.android.launcher3.model.data.ItemInfo;
-import com.android.launcher3.pm.InstallSessionHelper;
-import com.android.launcher3.provider.LauncherDbUtils.SQLiteTransaction;
-import com.android.launcher3.util.GridOccupancy;
-import com.android.launcher3.util.IntArray;
-import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
-import com.android.launcher3.widget.WidgetManagerHelper;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-
-/**
- * This class takes care of shrinking the workspace (by maximum of one row and one column), as a
- * result of restoring from a larger device or device density change.
- */
-public class GridSizeMigrationTaskV2 {
-
-    private static final String TAG = "GridSizeMigrationTaskV2";
-    private static final boolean DEBUG = false;
-
-    private final Context mContext;
-    private final SQLiteDatabase mDb;
-    private final DbReader mSrcReader;
-    private final DbReader mDestReader;
-
-    private final List<DbEntry> mHotseatItems;
-    private final List<DbEntry> mWorkspaceItems;
-
-    private final List<DbEntry> mHotseatDiff;
-    private final List<DbEntry> mWorkspaceDiff;
-
-    private final int mDestHotseatSize;
-    private final int mTrgX, mTrgY;
-
-    @VisibleForTesting
-    protected GridSizeMigrationTaskV2(Context context, SQLiteDatabase db, DbReader srcReader,
-            DbReader destReader, int destHotseatSize, Point targetSize) {
-        mContext = context;
-        mDb = db;
-        mSrcReader = srcReader;
-        mDestReader = destReader;
-
-        mHotseatItems = destReader.loadHotseatEntries();
-        mWorkspaceItems = destReader.loadAllWorkspaceEntries();
-
-        mHotseatDiff = calcDiff(mSrcReader.loadHotseatEntries(), mHotseatItems);
-        mWorkspaceDiff = calcDiff(mSrcReader.loadAllWorkspaceEntries(), mWorkspaceItems);
-        mDestHotseatSize = destHotseatSize;
-
-        mTrgX = targetSize.x;
-        mTrgY = targetSize.y;
-    }
-
-    /**
-     * Check given a new IDP, if migration is necessary.
-     */
-    public static boolean needsToMigrate(Context context, InvariantDeviceProfile idp) {
-        return needsToMigrate(new DeviceGridState(context), new DeviceGridState(idp));
-    }
-
-    private static boolean needsToMigrate(
-            DeviceGridState srcDeviceState, DeviceGridState destDeviceState) {
-        boolean needsToMigrate = !destDeviceState.isCompatible(srcDeviceState);
-        // TODO(b/198965093): Revert this change after bug is fixed
-        if (needsToMigrate) {
-            Log.d("b/198965093", "Migration is needed. destDeviceState: " + destDeviceState
-                    + ", srcDeviceState: " + srcDeviceState);
-        }
-        return needsToMigrate;
-    }
-
-    /** See {@link #migrateGridIfNeeded(Context, InvariantDeviceProfile)} */
-    public static boolean migrateGridIfNeeded(Context context) {
-        if (context instanceof LauncherPreviewRenderer.PreviewContext) {
-            return true;
-        }
-        return migrateGridIfNeeded(context, null);
-    }
-
-    /**
-     * When migrating the grid for preview, we copy the table
-     * {@link LauncherSettings.Favorites#TABLE_NAME} into
-     * {@link LauncherSettings.Favorites#PREVIEW_TABLE_NAME}, run grid size migration from the
-     * former to the later, then use the later table for preview.
-     *
-     * Similarly when doing the actual grid migration, the former grid option's table
-     * {@link LauncherSettings.Favorites#TABLE_NAME} is copied into the new grid option's
-     * {@link LauncherSettings.Favorites#TMP_TABLE}, we then run the grid size migration algorithm
-     * to migrate the later to the former, and load the workspace from the default
-     * {@link LauncherSettings.Favorites#TABLE_NAME}.
-     *
-     * @return false if the migration failed.
-     */
-    public static boolean migrateGridIfNeeded(Context context, InvariantDeviceProfile idp) {
-        boolean migrateForPreview = idp != null;
-        if (!migrateForPreview) {
-            idp = LauncherAppState.getIDP(context);
-        }
-
-        DeviceGridState srcDeviceState = new DeviceGridState(context);
-        DeviceGridState destDeviceState = new DeviceGridState(idp);
-        if (!needsToMigrate(srcDeviceState, destDeviceState)) {
-            return true;
-        }
-
-        HashSet<String> validPackages = getValidPackages(context);
-
-        if (migrateForPreview) {
-            if (!LauncherSettings.Settings.call(
-                    context.getContentResolver(),
-                    LauncherSettings.Settings.METHOD_PREP_FOR_PREVIEW,
-                    destDeviceState.getDbFile()).getBoolean(
-                    LauncherSettings.Settings.EXTRA_VALUE)) {
-                return false;
-            }
-        } else if (!LauncherSettings.Settings.call(
-                context.getContentResolver(),
-                LauncherSettings.Settings.METHOD_UPDATE_CURRENT_OPEN_HELPER,
-                destDeviceState.getDbFile()).getBoolean(
-                LauncherSettings.Settings.EXTRA_VALUE)) {
-            return false;
-        }
-
-        long migrationStartTime = System.currentTimeMillis();
-        try (SQLiteTransaction t = (SQLiteTransaction) LauncherSettings.Settings.call(
-                context.getContentResolver(),
-                LauncherSettings.Settings.METHOD_NEW_TRANSACTION).getBinder(
-                LauncherSettings.Settings.EXTRA_VALUE)) {
-
-            DbReader srcReader = new DbReader(t.getDb(),
-                    migrateForPreview ? LauncherSettings.Favorites.TABLE_NAME
-                            : LauncherSettings.Favorites.TMP_TABLE,
-                    context, validPackages);
-            DbReader destReader = new DbReader(t.getDb(),
-                    migrateForPreview ? LauncherSettings.Favorites.PREVIEW_TABLE_NAME
-                            : LauncherSettings.Favorites.TABLE_NAME,
-                    context, validPackages);
-
-            Point targetSize = new Point(destDeviceState.getColumns(), destDeviceState.getRows());
-            GridSizeMigrationTaskV2 task = new GridSizeMigrationTaskV2(context, t.getDb(),
-                    srcReader, destReader, destDeviceState.getNumHotseat(), targetSize);
-            task.migrate(srcDeviceState, destDeviceState);
-
-            if (!migrateForPreview) {
-                dropTable(t.getDb(), LauncherSettings.Favorites.TMP_TABLE);
-            }
-
-            t.commit();
-            return true;
-        } catch (Exception e) {
-            Log.e(TAG, "Error during grid migration", e);
-
-            return false;
-        } finally {
-            Log.v(TAG, "Workspace migration completed in "
-                    + (System.currentTimeMillis() - migrationStartTime));
-
-            if (!migrateForPreview) {
-                // Save current configuration, so that the migration does not run again.
-                destDeviceState.writeToPrefs(context);
-            }
-        }
-    }
-
-    @VisibleForTesting
-    protected boolean migrate(DeviceGridState srcDeviceState, DeviceGridState destDeviceState) {
-        if (mHotseatDiff.isEmpty() && mWorkspaceDiff.isEmpty()) {
-            return false;
-        }
-
-        // Sort the items by the reading order.
-        Collections.sort(mHotseatDiff);
-        Collections.sort(mWorkspaceDiff);
-
-        // Migrate hotseat
-        HotseatPlacementSolution hotseatSolution = new HotseatPlacementSolution(mDb, mSrcReader,
-                mDestReader, mContext, mDestHotseatSize, mHotseatItems, mHotseatDiff);
-        hotseatSolution.find();
-
-        // Migrate workspace.
-        // First we create a collection of the screens
-        List<Integer> screens = new ArrayList<>();
-        for (int screenId = 0; screenId <= mDestReader.mLastScreenId; screenId++) {
-            screens.add(screenId);
-        }
-
-        boolean preservePages = false;
-        if (screens.isEmpty() && FeatureFlags.ENABLE_NEW_MIGRATION_LOGIC.get()) {
-            preservePages = destDeviceState.compareTo(srcDeviceState) >= 0
-                    && destDeviceState.getColumns() - srcDeviceState.getColumns() <= 2;
-        }
-
-        // Then we place the items on the screens
-        for (int screenId : screens) {
-            if (DEBUG) {
-                Log.d(TAG, "Migrating " + screenId);
-            }
-            GridPlacementSolution workspaceSolution = new GridPlacementSolution(mDb, mSrcReader,
-                    mDestReader, mContext, screenId, mTrgX, mTrgY, mWorkspaceDiff, false);
-            workspaceSolution.find();
-            if (mWorkspaceDiff.isEmpty()) {
-                break;
-            }
-        }
-
-        // In case the new grid is smaller, there might be some leftover items that don't fit on
-        // any of the screens, in this case we add them to new screens until all of them are placed.
-        int screenId = mDestReader.mLastScreenId + 1;
-        while (!mWorkspaceDiff.isEmpty()) {
-            GridPlacementSolution workspaceSolution = new GridPlacementSolution(mDb, mSrcReader,
-                    mDestReader, mContext, screenId, mTrgX, mTrgY, mWorkspaceDiff,
-                    preservePages);
-            workspaceSolution.find();
-            screenId++;
-        }
-
-        return true;
-    }
-
-    /** Return what's in the src but not in the dest */
-    private static List<DbEntry> calcDiff(List<DbEntry> src, List<DbEntry> dest) {
-        Set<String> destIntentSet = new HashSet<>();
-        Set<Map<String, Integer>> destFolderIntentSet = new HashSet<>();
-        for (DbEntry entry : dest) {
-            if (entry.itemType == LauncherSettings.Favorites.ITEM_TYPE_FOLDER) {
-                destFolderIntentSet.add(getFolderIntents(entry));
-            } else {
-                destIntentSet.add(entry.mIntent);
-            }
-        }
-        List<DbEntry> diff = new ArrayList<>();
-        for (DbEntry entry : src) {
-            if (entry.itemType == LauncherSettings.Favorites.ITEM_TYPE_FOLDER) {
-                if (!destFolderIntentSet.contains(getFolderIntents(entry))) {
-                    diff.add(entry);
-                }
-            } else {
-                if (!destIntentSet.contains(entry.mIntent)) {
-                    diff.add(entry);
-                }
-            }
-        }
-        return diff;
-    }
-
-    private static Map<String, Integer> getFolderIntents(DbEntry entry) {
-        Map<String, Integer> folder = new HashMap<>();
-        for (String intent : entry.mFolderItems.keySet()) {
-            folder.put(intent, entry.mFolderItems.get(intent).size());
-        }
-        return folder;
-    }
-
-    private static void insertEntryInDb(SQLiteDatabase db, Context context, DbEntry entry,
-            String srcTableName, String destTableName) {
-        int id = copyEntryAndUpdate(db, context, entry, srcTableName, destTableName);
-
-        if (entry.itemType == LauncherSettings.Favorites.ITEM_TYPE_FOLDER) {
-            for (Set<Integer> itemIds : entry.mFolderItems.values()) {
-                for (int itemId : itemIds) {
-                    copyEntryAndUpdate(db, context, itemId, id, srcTableName, destTableName);
-                }
-            }
-        }
-    }
-
-    private static int copyEntryAndUpdate(SQLiteDatabase db, Context context,
-            DbEntry entry, String srcTableName, String destTableName) {
-        return copyEntryAndUpdate(db, context, entry, -1, -1, srcTableName, destTableName);
-    }
-
-    private static int copyEntryAndUpdate(SQLiteDatabase db, Context context,
-            int id, int folderId, String srcTableName, String destTableName) {
-        return copyEntryAndUpdate(db, context, null, id, folderId, srcTableName, destTableName);
-    }
-
-    private static int copyEntryAndUpdate(SQLiteDatabase db, Context context,
-            DbEntry entry, int id, int folderId, String srcTableName, String destTableName) {
-        int newId = -1;
-        Cursor c = db.query(srcTableName, null,
-                LauncherSettings.Favorites._ID + " = '" + (entry != null ? entry.id : id) + "'",
-                null, null, null, null);
-        while (c.moveToNext()) {
-            ContentValues values = new ContentValues();
-            DatabaseUtils.cursorRowToContentValues(c, values);
-            if (entry != null) {
-                entry.updateContentValues(values);
-            } else {
-                values.put(LauncherSettings.Favorites.CONTAINER, folderId);
-            }
-            newId = LauncherSettings.Settings.call(context.getContentResolver(),
-                    LauncherSettings.Settings.METHOD_NEW_ITEM_ID).getInt(
-                    LauncherSettings.Settings.EXTRA_VALUE);
-            values.put(LauncherSettings.Favorites._ID, newId);
-            db.insert(destTableName, null, values);
-        }
-        c.close();
-        return newId;
-    }
-
-    private static void removeEntryFromDb(SQLiteDatabase db, String tableName, IntArray entryIds) {
-        db.delete(tableName,
-                Utilities.createDbSelectionQuery(LauncherSettings.Favorites._ID, entryIds), null);
-    }
-
-    private static HashSet<String> getValidPackages(Context context) {
-        // Initialize list of valid packages. This contain all the packages which are already on
-        // the device and packages which are being installed. Any item which doesn't belong to
-        // this set is removed.
-        // Since the loader removes such items anyway, removing these items here doesn't cause
-        // any extra data loss and gives us more free space on the grid for better migration.
-        HashSet<String> validPackages = new HashSet<>();
-        for (PackageInfo info : context.getPackageManager()
-                .getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES)) {
-            validPackages.add(info.packageName);
-        }
-        InstallSessionHelper.INSTANCE.get(context)
-                .getActiveSessions().keySet()
-                .forEach(packageUserKey -> validPackages.add(packageUserKey.mPackageName));
-        return validPackages;
-    }
-
-    protected static class GridPlacementSolution {
-
-        private final SQLiteDatabase mDb;
-        private final DbReader mSrcReader;
-        private final DbReader mDestReader;
-        private final Context mContext;
-        private final GridOccupancy mOccupied;
-        private final int mScreenId;
-        private final int mTrgX;
-        private final int mTrgY;
-        private final List<DbEntry> mSortedItemsToPlace;
-        private final boolean mMatchingScreenIdOnly;
-
-        private int mNextStartX;
-        private int mNextStartY;
-
-        GridPlacementSolution(SQLiteDatabase db, DbReader srcReader, DbReader destReader,
-                Context context, int screenId, int trgX, int trgY, List<DbEntry> sortedItemsToPlace,
-                boolean matchingScreenIdOnly) {
-            mDb = db;
-            mSrcReader = srcReader;
-            mDestReader = destReader;
-            mContext = context;
-            mOccupied = new GridOccupancy(trgX, trgY);
-            mScreenId = screenId;
-            mTrgX = trgX;
-            mTrgY = trgY;
-            mNextStartX = 0;
-            mNextStartY = mScreenId == 0 && FeatureFlags.QSB_ON_FIRST_SCREEN
-                    ? 1 /* smartspace */ : 0;
-            List<DbEntry> existedEntries = mDestReader.mWorkspaceEntriesByScreenId.get(screenId);
-            if (existedEntries != null) {
-                for (DbEntry entry : existedEntries) {
-                    mOccupied.markCells(entry, true);
-                }
-            }
-            mSortedItemsToPlace = sortedItemsToPlace;
-            mMatchingScreenIdOnly = matchingScreenIdOnly;
-        }
-
-        public void find() {
-            Iterator<DbEntry> iterator = mSortedItemsToPlace.iterator();
-            while (iterator.hasNext()) {
-                final DbEntry entry = iterator.next();
-                if (mMatchingScreenIdOnly && entry.screenId < mScreenId) continue;
-                if (mMatchingScreenIdOnly && entry.screenId > mScreenId) break;
-                if (entry.minSpanX > mTrgX || entry.minSpanY > mTrgY) {
-                    iterator.remove();
-                    continue;
-                }
-                if (findPlacement(entry)) {
-                    insertEntryInDb(mDb, mContext, entry, mSrcReader.mTableName,
-                            mDestReader.mTableName);
-                    iterator.remove();
-                }
-            }
-        }
-
-        /**
-         * Search for the next possible placement of an icon. (mNextStartX, mNextStartY) serves as
-         * a memoization of last placement, we can start our search for next placement from there
-         * to speed up the search.
-         */
-        private boolean findPlacement(DbEntry entry) {
-            for (int y = mNextStartY; y <  mTrgY; y++) {
-                for (int x = mNextStartX; x < mTrgX; x++) {
-                    boolean fits = mOccupied.isRegionVacant(x, y, entry.spanX, entry.spanY);
-                    boolean minFits = mOccupied.isRegionVacant(x, y, entry.minSpanX,
-                            entry.minSpanY);
-                    if (minFits) {
-                        entry.spanX = entry.minSpanX;
-                        entry.spanY = entry.minSpanY;
-                    }
-                    if (fits || minFits) {
-                        entry.screenId = mScreenId;
-                        entry.cellX = x;
-                        entry.cellY = y;
-                        mOccupied.markCells(entry, true);
-                        mNextStartX = x + entry.spanX;
-                        mNextStartY = y;
-                        return true;
-                    }
-                }
-                mNextStartX = 0;
-            }
-            return false;
-        }
-    }
-
-    protected static class HotseatPlacementSolution {
-
-        private final SQLiteDatabase mDb;
-        private final DbReader mSrcReader;
-        private final DbReader mDestReader;
-        private final Context mContext;
-        private final HotseatOccupancy mOccupied;
-        private final List<DbEntry> mItemsToPlace;
-
-        HotseatPlacementSolution(SQLiteDatabase db, DbReader srcReader, DbReader destReader,
-                Context context, int hotseatSize, List<DbEntry> placedHotseatItems,
-                List<DbEntry> itemsToPlace) {
-            mDb = db;
-            mSrcReader = srcReader;
-            mDestReader = destReader;
-            mContext = context;
-            mOccupied = new HotseatOccupancy(hotseatSize);
-            for (DbEntry entry : placedHotseatItems) {
-                mOccupied.markCells(entry, true);
-            }
-            mItemsToPlace = itemsToPlace;
-        }
-
-        public void find() {
-            for (int i = 0; i < mOccupied.mCells.length; i++) {
-                if (!mOccupied.mCells[i] && !mItemsToPlace.isEmpty()) {
-                    DbEntry entry = mItemsToPlace.remove(0);
-                    entry.screenId = i;
-                    // These values does not affect the item position, but we should set them
-                    // to something other than -1.
-                    entry.cellX = i;
-                    entry.cellY = 0;
-                    insertEntryInDb(mDb, mContext, entry, mSrcReader.mTableName,
-                            mDestReader.mTableName);
-                    mOccupied.markCells(entry, true);
-                }
-            }
-        }
-
-        private class HotseatOccupancy {
-
-            private final boolean[] mCells;
-
-            private HotseatOccupancy(int hotseatSize) {
-                mCells = new boolean[hotseatSize];
-            }
-
-            private void markCells(ItemInfo item, boolean value) {
-                mCells[item.screenId] = value;
-            }
-        }
-    }
-
-    protected static class DbReader {
-
-        private final SQLiteDatabase mDb;
-        private final String mTableName;
-        private final Context mContext;
-        private final Set<String> mValidPackages;
-        private int mLastScreenId = -1;
-
-        private final ArrayList<DbEntry> mHotseatEntries = new ArrayList<>();
-        private final ArrayList<DbEntry> mWorkspaceEntries = new ArrayList<>();
-        private final Map<Integer, ArrayList<DbEntry>> mWorkspaceEntriesByScreenId =
-                new ArrayMap<>();
-
-        DbReader(SQLiteDatabase db, String tableName, Context context,
-                Set<String> validPackages) {
-            mDb = db;
-            mTableName = tableName;
-            mContext = context;
-            mValidPackages = validPackages;
-        }
-
-        protected ArrayList<DbEntry> loadHotseatEntries() {
-            Cursor c = queryWorkspace(
-                    new String[]{
-                            LauncherSettings.Favorites._ID,                  // 0
-                            LauncherSettings.Favorites.ITEM_TYPE,            // 1
-                            LauncherSettings.Favorites.INTENT,               // 2
-                            LauncherSettings.Favorites.SCREEN},              // 3
-                    LauncherSettings.Favorites.CONTAINER + " = "
-                            + LauncherSettings.Favorites.CONTAINER_HOTSEAT);
-
-            final int indexId = c.getColumnIndexOrThrow(LauncherSettings.Favorites._ID);
-            final int indexItemType = c.getColumnIndexOrThrow(LauncherSettings.Favorites.ITEM_TYPE);
-            final int indexIntent = c.getColumnIndexOrThrow(LauncherSettings.Favorites.INTENT);
-            final int indexScreen = c.getColumnIndexOrThrow(LauncherSettings.Favorites.SCREEN);
-
-            IntArray entriesToRemove = new IntArray();
-            while (c.moveToNext()) {
-                DbEntry entry = new DbEntry();
-                entry.id = c.getInt(indexId);
-                entry.itemType = c.getInt(indexItemType);
-                entry.screenId = c.getInt(indexScreen);
-
-                try {
-                    // calculate weight
-                    switch (entry.itemType) {
-                        case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT:
-                        case LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT:
-                        case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION: {
-                            entry.mIntent = c.getString(indexIntent);
-                            verifyIntent(c.getString(indexIntent));
-                            break;
-                        }
-                        case LauncherSettings.Favorites.ITEM_TYPE_FOLDER: {
-                            int total = getFolderItemsCount(entry);
-                            if (total == 0) {
-                                throw new Exception("Folder is empty");
-                            }
-                            break;
-                        }
-                        default:
-                            throw new Exception("Invalid item type");
-                    }
-                } catch (Exception e) {
-                    if (DEBUG) {
-                        Log.d(TAG, "Removing item " + entry.id, e);
-                    }
-                    entriesToRemove.add(entry.id);
-                    continue;
-                }
-                mHotseatEntries.add(entry);
-            }
-            removeEntryFromDb(mDb, mTableName, entriesToRemove);
-            c.close();
-            return mHotseatEntries;
-        }
-
-        protected ArrayList<DbEntry> loadAllWorkspaceEntries() {
-            Cursor c = queryWorkspace(
-                    new String[]{
-                            LauncherSettings.Favorites._ID,                  // 0
-                            LauncherSettings.Favorites.ITEM_TYPE,            // 1
-                            LauncherSettings.Favorites.SCREEN,               // 2
-                            LauncherSettings.Favorites.CELLX,                // 3
-                            LauncherSettings.Favorites.CELLY,                // 4
-                            LauncherSettings.Favorites.SPANX,                // 5
-                            LauncherSettings.Favorites.SPANY,                // 6
-                            LauncherSettings.Favorites.INTENT,               // 7
-                            LauncherSettings.Favorites.APPWIDGET_PROVIDER,   // 8
-                            LauncherSettings.Favorites.APPWIDGET_ID},        // 9
-                        LauncherSettings.Favorites.CONTAINER + " = "
-                            + LauncherSettings.Favorites.CONTAINER_DESKTOP);
-            return loadWorkspaceEntries(c);
-        }
-
-        private ArrayList<DbEntry> loadWorkspaceEntries(Cursor c) {
-            final int indexId = c.getColumnIndexOrThrow(LauncherSettings.Favorites._ID);
-            final int indexItemType = c.getColumnIndexOrThrow(LauncherSettings.Favorites.ITEM_TYPE);
-            final int indexScreen = c.getColumnIndexOrThrow(LauncherSettings.Favorites.SCREEN);
-            final int indexCellX = c.getColumnIndexOrThrow(LauncherSettings.Favorites.CELLX);
-            final int indexCellY = c.getColumnIndexOrThrow(LauncherSettings.Favorites.CELLY);
-            final int indexSpanX = c.getColumnIndexOrThrow(LauncherSettings.Favorites.SPANX);
-            final int indexSpanY = c.getColumnIndexOrThrow(LauncherSettings.Favorites.SPANY);
-            final int indexIntent = c.getColumnIndexOrThrow(LauncherSettings.Favorites.INTENT);
-            final int indexAppWidgetProvider = c.getColumnIndexOrThrow(
-                    LauncherSettings.Favorites.APPWIDGET_PROVIDER);
-            final int indexAppWidgetId = c.getColumnIndexOrThrow(
-                    LauncherSettings.Favorites.APPWIDGET_ID);
-
-            IntArray entriesToRemove = new IntArray();
-            WidgetManagerHelper widgetManagerHelper = new WidgetManagerHelper(mContext);
-            while (c.moveToNext()) {
-                DbEntry entry = new DbEntry();
-                entry.id = c.getInt(indexId);
-                entry.itemType = c.getInt(indexItemType);
-                entry.screenId = c.getInt(indexScreen);
-                mLastScreenId = Math.max(mLastScreenId, entry.screenId);
-                entry.cellX = c.getInt(indexCellX);
-                entry.cellY = c.getInt(indexCellY);
-                entry.spanX = c.getInt(indexSpanX);
-                entry.spanY = c.getInt(indexSpanY);
-
-                try {
-                    // calculate weight
-                    switch (entry.itemType) {
-                        case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT:
-                        case LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT:
-                        case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION: {
-                            entry.mIntent = c.getString(indexIntent);
-                            verifyIntent(entry.mIntent);
-                            break;
-                        }
-                        case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET: {
-                            entry.mProvider = c.getString(indexAppWidgetProvider);
-                            ComponentName cn = ComponentName.unflattenFromString(entry.mProvider);
-                            verifyPackage(cn.getPackageName());
-
-                            int widgetId = c.getInt(indexAppWidgetId);
-                            LauncherAppWidgetProviderInfo pInfo =
-                                    widgetManagerHelper.getLauncherAppWidgetInfo(widgetId);
-                            Point spans = null;
-                            if (pInfo != null) {
-                                spans = pInfo.getMinSpans();
-                            }
-                            if (spans != null) {
-                                entry.minSpanX = spans.x > 0 ? spans.x : entry.spanX;
-                                entry.minSpanY = spans.y > 0 ? spans.y : entry.spanY;
-                            } else {
-                                // Assume that the widget be resized down to 2x2
-                                entry.minSpanX = entry.minSpanY = 2;
-                            }
-
-                            break;
-                        }
-                        case LauncherSettings.Favorites.ITEM_TYPE_FOLDER: {
-                            int total = getFolderItemsCount(entry);
-                            if (total == 0) {
-                                throw new Exception("Folder is empty");
-                            }
-                            break;
-                        }
-                        default:
-                            throw new Exception("Invalid item type");
-                    }
-                } catch (Exception e) {
-                    if (DEBUG) {
-                        Log.d(TAG, "Removing item " + entry.id, e);
-                    }
-                    entriesToRemove.add(entry.id);
-                    continue;
-                }
-                mWorkspaceEntries.add(entry);
-                if (!mWorkspaceEntriesByScreenId.containsKey(entry.screenId)) {
-                    mWorkspaceEntriesByScreenId.put(entry.screenId, new ArrayList<>());
-                }
-                mWorkspaceEntriesByScreenId.get(entry.screenId).add(entry);
-            }
-            removeEntryFromDb(mDb, mTableName, entriesToRemove);
-            c.close();
-            return mWorkspaceEntries;
-        }
-
-        private int getFolderItemsCount(DbEntry entry) {
-            Cursor c = queryWorkspace(
-                    new String[]{LauncherSettings.Favorites._ID, LauncherSettings.Favorites.INTENT},
-                    LauncherSettings.Favorites.CONTAINER + " = " + entry.id);
-
-            int total = 0;
-            while (c.moveToNext()) {
-                try {
-                    int id = c.getInt(0);
-                    String intent = c.getString(1);
-                    verifyIntent(intent);
-                    total++;
-                    if (!entry.mFolderItems.containsKey(intent)) {
-                        entry.mFolderItems.put(intent, new HashSet<>());
-                    }
-                    entry.mFolderItems.get(intent).add(id);
-                } catch (Exception e) {
-                    removeEntryFromDb(mDb, mTableName, IntArray.wrap(c.getInt(0)));
-                }
-            }
-            c.close();
-            return total;
-        }
-
-        private Cursor queryWorkspace(String[] columns, String where) {
-            return mDb.query(mTableName, columns, where, null, null, null, null);
-        }
-
-        /** Verifies if the mIntent should be restored. */
-        private void verifyIntent(String intentStr)
-                throws Exception {
-            Intent intent = Intent.parseUri(intentStr, 0);
-            if (intent.getComponent() != null) {
-                verifyPackage(intent.getComponent().getPackageName());
-            } else if (intent.getPackage() != null) {
-                // Only verify package if the component was null.
-                verifyPackage(intent.getPackage());
-            }
-        }
-
-        /** Verifies if the package should be restored */
-        private void verifyPackage(String packageName)
-                throws Exception {
-            if (!mValidPackages.contains(packageName)) {
-                // TODO(b/151468819): Handle promise app icon restoration during grid migration.
-                throw new Exception("Package not available");
-            }
-        }
-    }
-
-    protected static class DbEntry extends ItemInfo implements Comparable<DbEntry> {
-
-        private String mIntent;
-        private String mProvider;
-        private Map<String, Set<Integer>> mFolderItems = new HashMap<>();
-
-        /** Comparator according to the reading order */
-        @Override
-        public int compareTo(DbEntry another) {
-            if (screenId != another.screenId) {
-                return Integer.compare(screenId, another.screenId);
-            }
-            if (cellY != another.cellY) {
-                return Integer.compare(cellY, another.cellY);
-            }
-            return Integer.compare(cellX, another.cellX);
-        }
-
-        @Override
-        public boolean equals(Object o) {
-            if (this == o) return true;
-            if (o == null || getClass() != o.getClass()) return false;
-            DbEntry entry = (DbEntry) o;
-            return Objects.equals(mIntent, entry.mIntent);
-        }
-
-        @Override
-        public int hashCode() {
-            return Objects.hash(mIntent);
-        }
-
-        public void updateContentValues(ContentValues values) {
-            values.put(LauncherSettings.Favorites.SCREEN, screenId);
-            values.put(LauncherSettings.Favorites.CELLX, cellX);
-            values.put(LauncherSettings.Favorites.CELLY, cellY);
-            values.put(LauncherSettings.Favorites.SPANX, spanX);
-            values.put(LauncherSettings.Favorites.SPANY, spanY);
-        }
-    }
-}
diff --git a/src/com/android/launcher3/model/GridSizeMigrationUtil.java b/src/com/android/launcher3/model/GridSizeMigrationUtil.java
new file mode 100644
index 0000000..9a6cde6
--- /dev/null
+++ b/src/com/android/launcher3/model/GridSizeMigrationUtil.java
@@ -0,0 +1,733 @@
+/*
+ * Copyright (C) 2020 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.launcher3.model;
+
+import static com.android.launcher3.LauncherSettings.Favorites.TABLE_NAME;
+import static com.android.launcher3.LauncherSettings.Favorites.TMP_TABLE;
+import static com.android.launcher3.provider.LauncherDbUtils.copyTable;
+import static com.android.launcher3.provider.LauncherDbUtils.dropTable;
+
+import android.content.ComponentName;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.database.Cursor;
+import android.database.DatabaseUtils;
+import android.database.sqlite.SQLiteDatabase;
+import android.graphics.Point;
+import android.util.ArrayMap;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+
+import com.android.launcher3.InvariantDeviceProfile;
+import com.android.launcher3.LauncherSettings;
+import com.android.launcher3.Utilities;
+import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.pm.InstallSessionHelper;
+import com.android.launcher3.provider.LauncherDbUtils.SQLiteTransaction;
+import com.android.launcher3.util.GridOccupancy;
+import com.android.launcher3.util.IntArray;
+import com.android.launcher3.util.MainThreadInitializedObject.SandboxContext;
+import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
+import com.android.launcher3.widget.WidgetManagerHelper;
+
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * This class takes care of shrinking the workspace (by maximum of one row and one column), as a
+ * result of restoring from a larger device or device density change.
+ */
+public class GridSizeMigrationUtil {
+
+    private static final String TAG = "GridSizeMigrationUtil";
+    private static final boolean DEBUG = true;
+
+    private GridSizeMigrationUtil() {
+        // Util class should not be instantiated
+    }
+
+    /**
+     * Check given a new IDP, if migration is necessary.
+     */
+    public static boolean needsToMigrate(Context context, InvariantDeviceProfile idp) {
+        return needsToMigrate(new DeviceGridState(context), new DeviceGridState(idp));
+    }
+
+    private static boolean needsToMigrate(
+            DeviceGridState srcDeviceState, DeviceGridState destDeviceState) {
+        boolean needsToMigrate = !destDeviceState.isCompatible(srcDeviceState);
+        if (needsToMigrate) {
+            Log.i(TAG, "Migration is needed. destDeviceState: " + destDeviceState
+                    + ", srcDeviceState: " + srcDeviceState);
+        }
+        return needsToMigrate;
+    }
+
+    /**
+     * When migrating the grid, we copy the table
+     * {@link LauncherSettings.Favorites#TABLE_NAME} from {@code source} into
+     * {@link LauncherSettings.Favorites#TMP_TABLE}, run the grid size migration algorithm
+     * to migrate the later to the former, and load the workspace from the default
+     * {@link LauncherSettings.Favorites#TABLE_NAME}.
+     *
+     * @return false if the migration failed.
+     */
+    public static boolean migrateGridIfNeeded(
+            @NonNull Context context,
+            @NonNull InvariantDeviceProfile idp,
+            @NonNull DatabaseHelper target,
+            @NonNull SQLiteDatabase source) {
+
+        DeviceGridState srcDeviceState = new DeviceGridState(context);
+        DeviceGridState destDeviceState = new DeviceGridState(idp);
+        if (!needsToMigrate(srcDeviceState, destDeviceState)) {
+            return true;
+        }
+        copyTable(source, TABLE_NAME, target.getWritableDatabase(), TMP_TABLE, context);
+
+        HashSet<String> validPackages = getValidPackages(context);
+        long migrationStartTime = System.currentTimeMillis();
+        try (SQLiteTransaction t = new SQLiteTransaction(target.getWritableDatabase())) {
+            DbReader srcReader = new DbReader(t.getDb(), TMP_TABLE, context, validPackages);
+            DbReader destReader = new DbReader(t.getDb(), TABLE_NAME, context, validPackages);
+
+            Point targetSize = new Point(destDeviceState.getColumns(), destDeviceState.getRows());
+            migrate(target, srcReader, destReader, destDeviceState.getNumHotseat(),
+                    targetSize, srcDeviceState, destDeviceState);
+            dropTable(t.getDb(), TMP_TABLE);
+            t.commit();
+            return true;
+        } catch (Exception e) {
+            Log.e(TAG, "Error during grid migration", e);
+
+            return false;
+        } finally {
+            Log.v(TAG, "Workspace migration completed in "
+                    + (System.currentTimeMillis() - migrationStartTime));
+
+            if (!(context instanceof SandboxContext)) {
+                // Save current configuration, so that the migration does not run again.
+                destDeviceState.writeToPrefs(context);
+            }
+        }
+    }
+
+    public static boolean migrate(
+            @NonNull DatabaseHelper helper,
+            @NonNull final DbReader srcReader, @NonNull final DbReader destReader,
+            final int destHotseatSize, @NonNull final Point targetSize,
+            @NonNull final DeviceGridState srcDeviceState,
+            @NonNull final DeviceGridState destDeviceState) {
+
+        final List<DbEntry> srcHotseatItems = srcReader.loadHotseatEntries();
+        final List<DbEntry> srcWorkspaceItems = srcReader.loadAllWorkspaceEntries();
+        final List<DbEntry> dstHotseatItems = destReader.loadHotseatEntries();
+        final List<DbEntry> dstWorkspaceItems = destReader.loadAllWorkspaceEntries();
+        final List<DbEntry> hotseatToBeAdded = new ArrayList<>(1);
+        final List<DbEntry> workspaceToBeAdded = new ArrayList<>(1);
+        final IntArray toBeRemoved = new IntArray();
+
+        calcDiff(srcHotseatItems, dstHotseatItems, hotseatToBeAdded, toBeRemoved);
+        calcDiff(srcWorkspaceItems, dstWorkspaceItems, workspaceToBeAdded, toBeRemoved);
+
+        final int trgX = targetSize.x;
+        final int trgY = targetSize.y;
+
+        if (DEBUG) {
+            Log.d(TAG, "Start migration:"
+                    + "\n Source Device:"
+                    + srcWorkspaceItems.stream().map(DbEntry::toString).collect(
+                    Collectors.joining(",\n", "[", "]"))
+                    + "\n Target Device:"
+                    + dstWorkspaceItems.stream().map(DbEntry::toString).collect(
+                    Collectors.joining(",\n", "[", "]"))
+                    + "\n Removing Items:"
+                    + dstWorkspaceItems.stream().filter(entry ->
+                            toBeRemoved.contains(entry.id)).map(DbEntry::toString).collect(
+                    Collectors.joining(",\n", "[", "]"))
+                    + "\n Adding Workspace Items:"
+                    + workspaceToBeAdded.stream().map(DbEntry::toString).collect(
+                    Collectors.joining(",\n", "[", "]"))
+                    + "\n Adding Hotseat Items:"
+                    + hotseatToBeAdded.stream().map(DbEntry::toString).collect(
+                    Collectors.joining(",\n", "[", "]"))
+            );
+        }
+        if (!toBeRemoved.isEmpty()) {
+            removeEntryFromDb(destReader.mDb, destReader.mTableName, toBeRemoved);
+        }
+        if (hotseatToBeAdded.isEmpty() && workspaceToBeAdded.isEmpty()) {
+            return false;
+        }
+
+        // Sort the items by the reading order.
+        Collections.sort(hotseatToBeAdded);
+        Collections.sort(workspaceToBeAdded);
+
+        // Migrate hotseat
+        solveHotseatPlacement(helper, destHotseatSize,
+                srcReader, destReader, dstHotseatItems, hotseatToBeAdded);
+
+        // Migrate workspace.
+        // First we create a collection of the screens
+        List<Integer> screens = new ArrayList<>();
+        for (int screenId = 0; screenId <= destReader.mLastScreenId; screenId++) {
+            screens.add(screenId);
+        }
+
+        boolean preservePages = false;
+        if (screens.isEmpty() && FeatureFlags.ENABLE_NEW_MIGRATION_LOGIC.get()) {
+            preservePages = destDeviceState.compareTo(srcDeviceState) >= 0
+                    && destDeviceState.getColumns() - srcDeviceState.getColumns() <= 2;
+        }
+
+        // Then we place the items on the screens
+        for (int screenId : screens) {
+            if (DEBUG) {
+                Log.d(TAG, "Migrating " + screenId);
+            }
+            solveGridPlacement(helper, srcReader,
+                    destReader, screenId, trgX, trgY, workspaceToBeAdded, false);
+            if (workspaceToBeAdded.isEmpty()) {
+                break;
+            }
+        }
+
+        // In case the new grid is smaller, there might be some leftover items that don't fit on
+        // any of the screens, in this case we add them to new screens until all of them are placed.
+        int screenId = destReader.mLastScreenId + 1;
+        while (!workspaceToBeAdded.isEmpty()) {
+            solveGridPlacement(helper, srcReader,
+                    destReader, screenId, trgX, trgY, workspaceToBeAdded, preservePages);
+            screenId++;
+        }
+
+        return true;
+    }
+
+    /**
+     * Calculate the differences between {@code src} (denoted by A) and {@code dest}
+     * (denoted by B).
+     * All DbEntry in A - B will be added to {@code toBeAdded}
+     * All DbEntry.id in B - A will be added to {@code toBeRemoved}
+     */
+    private static void calcDiff(@NonNull final List<DbEntry> src,
+            @NonNull final List<DbEntry> dest, @NonNull final List<DbEntry> toBeAdded,
+            @NonNull final IntArray toBeRemoved) {
+        src.forEach(entry -> {
+            if (!dest.contains(entry)) {
+                toBeAdded.add(entry);
+            }
+        });
+        dest.forEach(entry -> {
+            if (!src.contains(entry)) {
+                toBeRemoved.add(entry.id);
+                if (entry.itemType == LauncherSettings.Favorites.ITEM_TYPE_FOLDER) {
+                    entry.mFolderItems.values().forEach(ids -> ids.forEach(toBeRemoved::add));
+                }
+            }
+        });
+    }
+
+    private static void insertEntryInDb(DatabaseHelper helper, DbEntry entry,
+            String srcTableName, String destTableName) {
+        int id = copyEntryAndUpdate(helper, entry, srcTableName, destTableName);
+
+        if (entry.itemType == LauncherSettings.Favorites.ITEM_TYPE_FOLDER) {
+            for (Set<Integer> itemIds : entry.mFolderItems.values()) {
+                for (int itemId : itemIds) {
+                    copyEntryAndUpdate(helper, itemId, id, srcTableName, destTableName);
+                }
+            }
+        }
+    }
+
+    private static int copyEntryAndUpdate(DatabaseHelper helper,
+            DbEntry entry, String srcTableName, String destTableName) {
+        return copyEntryAndUpdate(helper, entry, -1, -1, srcTableName, destTableName);
+    }
+
+    private static int copyEntryAndUpdate(DatabaseHelper helper,
+            int id, int folderId, String srcTableName, String destTableName) {
+        return copyEntryAndUpdate(helper, null, id, folderId, srcTableName, destTableName);
+    }
+
+    private static int copyEntryAndUpdate(DatabaseHelper helper, DbEntry entry,
+            int id, int folderId, String srcTableName, String destTableName) {
+        int newId = -1;
+        Cursor c = helper.getWritableDatabase().query(srcTableName, null,
+                LauncherSettings.Favorites._ID + " = '" + (entry != null ? entry.id : id) + "'",
+                null, null, null, null);
+        while (c.moveToNext()) {
+            ContentValues values = new ContentValues();
+            DatabaseUtils.cursorRowToContentValues(c, values);
+            if (entry != null) {
+                entry.updateContentValues(values);
+            } else {
+                values.put(LauncherSettings.Favorites.CONTAINER, folderId);
+            }
+            newId = helper.generateNewItemId();
+            values.put(LauncherSettings.Favorites._ID, newId);
+            helper.getWritableDatabase().insert(destTableName, null, values);
+        }
+        c.close();
+        return newId;
+    }
+
+    private static void removeEntryFromDb(SQLiteDatabase db, String tableName, IntArray entryIds) {
+        db.delete(tableName,
+                Utilities.createDbSelectionQuery(LauncherSettings.Favorites._ID, entryIds), null);
+    }
+
+    private static HashSet<String> getValidPackages(Context context) {
+        // Initialize list of valid packages. This contain all the packages which are already on
+        // the device and packages which are being installed. Any item which doesn't belong to
+        // this set is removed.
+        // Since the loader removes such items anyway, removing these items here doesn't cause
+        // any extra data loss and gives us more free space on the grid for better migration.
+        HashSet<String> validPackages = new HashSet<>();
+        for (PackageInfo info : context.getPackageManager()
+                .getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES)) {
+            validPackages.add(info.packageName);
+        }
+        InstallSessionHelper.INSTANCE.get(context)
+                .getActiveSessions().keySet()
+                .forEach(packageUserKey -> validPackages.add(packageUserKey.mPackageName));
+        return validPackages;
+    }
+
+    private static void solveGridPlacement(@NonNull final DatabaseHelper helper,
+            @NonNull final DbReader srcReader, @NonNull final DbReader destReader,
+            final int screenId, final int trgX, final int trgY,
+            @NonNull final List<DbEntry> sortedItemsToPlace, final boolean matchingScreenIdOnly) {
+        final GridOccupancy occupied = new GridOccupancy(trgX, trgY);
+        final Point trg = new Point(trgX, trgY);
+        final Point next = new Point(0, screenId == 0 && FeatureFlags.QSB_ON_FIRST_SCREEN
+                ? 1 /* smartspace */ : 0);
+        List<DbEntry> existedEntries = destReader.mWorkspaceEntriesByScreenId.get(screenId);
+        if (existedEntries != null) {
+            for (DbEntry entry : existedEntries) {
+                occupied.markCells(entry, true);
+            }
+        }
+        Iterator<DbEntry> iterator = sortedItemsToPlace.iterator();
+        while (iterator.hasNext()) {
+            final DbEntry entry = iterator.next();
+            if (matchingScreenIdOnly && entry.screenId < screenId) continue;
+            if (matchingScreenIdOnly && entry.screenId > screenId) break;
+            if (entry.minSpanX > trgX || entry.minSpanY > trgY) {
+                iterator.remove();
+                continue;
+            }
+            if (findPlacementForEntry(entry, next, trg, occupied, screenId)) {
+                insertEntryInDb(helper, entry, srcReader.mTableName, destReader.mTableName);
+                iterator.remove();
+            }
+        }
+    }
+
+    /**
+     * Search for the next possible placement of an icon. (mNextStartX, mNextStartY) serves as
+     * a memoization of last placement, we can start our search for next placement from there
+     * to speed up the search.
+     */
+    private static boolean findPlacementForEntry(@NonNull final DbEntry entry,
+            @NonNull final Point next, @NonNull final Point trg,
+            @NonNull final GridOccupancy occupied, final int screenId) {
+        for (int y = next.y; y <  trg.y; y++) {
+            for (int x = next.x; x < trg.x; x++) {
+                boolean fits = occupied.isRegionVacant(x, y, entry.spanX, entry.spanY);
+                boolean minFits = occupied.isRegionVacant(x, y, entry.minSpanX,
+                        entry.minSpanY);
+                if (minFits) {
+                    entry.spanX = entry.minSpanX;
+                    entry.spanY = entry.minSpanY;
+                }
+                if (fits || minFits) {
+                    entry.screenId = screenId;
+                    entry.cellX = x;
+                    entry.cellY = y;
+                    occupied.markCells(entry, true);
+                    next.set(x + entry.spanX, y);
+                    return true;
+                }
+            }
+            next.set(0, next.y);
+        }
+        return false;
+    }
+
+    private static void solveHotseatPlacement(
+            @NonNull final DatabaseHelper helper, final int hotseatSize,
+            @NonNull final DbReader srcReader, @NonNull final DbReader destReader,
+            @NonNull final  List<DbEntry> placedHotseatItems,
+            @NonNull final List<DbEntry> itemsToPlace) {
+
+        final boolean[] occupied = new boolean[hotseatSize];
+        for (DbEntry entry : placedHotseatItems) {
+            occupied[entry.screenId] = true;
+        }
+
+        for (int i = 0; i < occupied.length; i++) {
+            if (!occupied[i] && !itemsToPlace.isEmpty()) {
+                DbEntry entry = itemsToPlace.remove(0);
+                entry.screenId = i;
+                // These values does not affect the item position, but we should set them
+                // to something other than -1.
+                entry.cellX = i;
+                entry.cellY = 0;
+                insertEntryInDb(helper, entry, srcReader.mTableName, destReader.mTableName);
+                occupied[entry.screenId] = true;
+            }
+        }
+    }
+
+    protected static class DbReader {
+
+        private final SQLiteDatabase mDb;
+        private final String mTableName;
+        private final Context mContext;
+        private final Set<String> mValidPackages;
+        private int mLastScreenId = -1;
+
+        private final Map<Integer, ArrayList<DbEntry>> mWorkspaceEntriesByScreenId =
+                new ArrayMap<>();
+
+        DbReader(SQLiteDatabase db, String tableName, Context context,
+                Set<String> validPackages) {
+            mDb = db;
+            mTableName = tableName;
+            mContext = context;
+            mValidPackages = validPackages;
+        }
+
+        protected List<DbEntry> loadHotseatEntries() {
+            final List<DbEntry> hotseatEntries = new ArrayList<>();
+            Cursor c = queryWorkspace(
+                    new String[]{
+                            LauncherSettings.Favorites._ID,                  // 0
+                            LauncherSettings.Favorites.ITEM_TYPE,            // 1
+                            LauncherSettings.Favorites.INTENT,               // 2
+                            LauncherSettings.Favorites.SCREEN},              // 3
+                    LauncherSettings.Favorites.CONTAINER + " = "
+                            + LauncherSettings.Favorites.CONTAINER_HOTSEAT);
+
+            final int indexId = c.getColumnIndexOrThrow(LauncherSettings.Favorites._ID);
+            final int indexItemType = c.getColumnIndexOrThrow(LauncherSettings.Favorites.ITEM_TYPE);
+            final int indexIntent = c.getColumnIndexOrThrow(LauncherSettings.Favorites.INTENT);
+            final int indexScreen = c.getColumnIndexOrThrow(LauncherSettings.Favorites.SCREEN);
+
+            IntArray entriesToRemove = new IntArray();
+            while (c.moveToNext()) {
+                DbEntry entry = new DbEntry();
+                entry.id = c.getInt(indexId);
+                entry.itemType = c.getInt(indexItemType);
+                entry.screenId = c.getInt(indexScreen);
+
+                try {
+                    // calculate weight
+                    switch (entry.itemType) {
+                        case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT:
+                        case LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT:
+                        case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION: {
+                            entry.mIntent = c.getString(indexIntent);
+                            verifyIntent(c.getString(indexIntent));
+                            break;
+                        }
+                        case LauncherSettings.Favorites.ITEM_TYPE_FOLDER: {
+                            int total = getFolderItemsCount(entry);
+                            if (total == 0) {
+                                throw new Exception("Folder is empty");
+                            }
+                            break;
+                        }
+                        default:
+                            throw new Exception("Invalid item type");
+                    }
+                } catch (Exception e) {
+                    if (DEBUG) {
+                        Log.d(TAG, "Removing item " + entry.id, e);
+                    }
+                    entriesToRemove.add(entry.id);
+                    continue;
+                }
+                hotseatEntries.add(entry);
+            }
+            removeEntryFromDb(mDb, mTableName, entriesToRemove);
+            c.close();
+            return hotseatEntries;
+        }
+
+        protected List<DbEntry> loadAllWorkspaceEntries() {
+            final List<DbEntry> workspaceEntries = new ArrayList<>();
+            Cursor c = queryWorkspace(
+                    new String[]{
+                            LauncherSettings.Favorites._ID,                  // 0
+                            LauncherSettings.Favorites.ITEM_TYPE,            // 1
+                            LauncherSettings.Favorites.SCREEN,               // 2
+                            LauncherSettings.Favorites.CELLX,                // 3
+                            LauncherSettings.Favorites.CELLY,                // 4
+                            LauncherSettings.Favorites.SPANX,                // 5
+                            LauncherSettings.Favorites.SPANY,                // 6
+                            LauncherSettings.Favorites.INTENT,               // 7
+                            LauncherSettings.Favorites.APPWIDGET_PROVIDER,   // 8
+                            LauncherSettings.Favorites.APPWIDGET_ID},        // 9
+                        LauncherSettings.Favorites.CONTAINER + " = "
+                            + LauncherSettings.Favorites.CONTAINER_DESKTOP);
+            final int indexId = c.getColumnIndexOrThrow(LauncherSettings.Favorites._ID);
+            final int indexItemType = c.getColumnIndexOrThrow(LauncherSettings.Favorites.ITEM_TYPE);
+            final int indexScreen = c.getColumnIndexOrThrow(LauncherSettings.Favorites.SCREEN);
+            final int indexCellX = c.getColumnIndexOrThrow(LauncherSettings.Favorites.CELLX);
+            final int indexCellY = c.getColumnIndexOrThrow(LauncherSettings.Favorites.CELLY);
+            final int indexSpanX = c.getColumnIndexOrThrow(LauncherSettings.Favorites.SPANX);
+            final int indexSpanY = c.getColumnIndexOrThrow(LauncherSettings.Favorites.SPANY);
+            final int indexIntent = c.getColumnIndexOrThrow(LauncherSettings.Favorites.INTENT);
+            final int indexAppWidgetProvider = c.getColumnIndexOrThrow(
+                    LauncherSettings.Favorites.APPWIDGET_PROVIDER);
+            final int indexAppWidgetId = c.getColumnIndexOrThrow(
+                    LauncherSettings.Favorites.APPWIDGET_ID);
+
+            IntArray entriesToRemove = new IntArray();
+            WidgetManagerHelper widgetManagerHelper = new WidgetManagerHelper(mContext);
+            while (c.moveToNext()) {
+                DbEntry entry = new DbEntry();
+                entry.id = c.getInt(indexId);
+                entry.itemType = c.getInt(indexItemType);
+                entry.screenId = c.getInt(indexScreen);
+                mLastScreenId = Math.max(mLastScreenId, entry.screenId);
+                entry.cellX = c.getInt(indexCellX);
+                entry.cellY = c.getInt(indexCellY);
+                entry.spanX = c.getInt(indexSpanX);
+                entry.spanY = c.getInt(indexSpanY);
+
+                try {
+                    // calculate weight
+                    switch (entry.itemType) {
+                        case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT:
+                        case LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT:
+                        case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION: {
+                            entry.mIntent = c.getString(indexIntent);
+                            verifyIntent(entry.mIntent);
+                            break;
+                        }
+                        case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET: {
+                            entry.mProvider = c.getString(indexAppWidgetProvider);
+                            ComponentName cn = ComponentName.unflattenFromString(entry.mProvider);
+                            verifyPackage(cn.getPackageName());
+
+                            int widgetId = c.getInt(indexAppWidgetId);
+                            LauncherAppWidgetProviderInfo pInfo =
+                                    widgetManagerHelper.getLauncherAppWidgetInfo(widgetId);
+                            Point spans = null;
+                            if (pInfo != null) {
+                                spans = pInfo.getMinSpans();
+                            }
+                            if (spans != null) {
+                                entry.minSpanX = spans.x > 0 ? spans.x : entry.spanX;
+                                entry.minSpanY = spans.y > 0 ? spans.y : entry.spanY;
+                            } else {
+                                // Assume that the widget be resized down to 2x2
+                                entry.minSpanX = entry.minSpanY = 2;
+                            }
+
+                            break;
+                        }
+                        case LauncherSettings.Favorites.ITEM_TYPE_FOLDER: {
+                            int total = getFolderItemsCount(entry);
+                            if (total == 0) {
+                                throw new Exception("Folder is empty");
+                            }
+                            break;
+                        }
+                        default:
+                            throw new Exception("Invalid item type");
+                    }
+                } catch (Exception e) {
+                    if (DEBUG) {
+                        Log.d(TAG, "Removing item " + entry.id, e);
+                    }
+                    entriesToRemove.add(entry.id);
+                    continue;
+                }
+                workspaceEntries.add(entry);
+                if (!mWorkspaceEntriesByScreenId.containsKey(entry.screenId)) {
+                    mWorkspaceEntriesByScreenId.put(entry.screenId, new ArrayList<>());
+                }
+                mWorkspaceEntriesByScreenId.get(entry.screenId).add(entry);
+            }
+            removeEntryFromDb(mDb, mTableName, entriesToRemove);
+            c.close();
+            return workspaceEntries;
+        }
+
+        private int getFolderItemsCount(DbEntry entry) {
+            Cursor c = queryWorkspace(
+                    new String[]{LauncherSettings.Favorites._ID, LauncherSettings.Favorites.INTENT},
+                    LauncherSettings.Favorites.CONTAINER + " = " + entry.id);
+
+            int total = 0;
+            while (c.moveToNext()) {
+                try {
+                    int id = c.getInt(0);
+                    String intent = c.getString(1);
+                    verifyIntent(intent);
+                    total++;
+                    if (!entry.mFolderItems.containsKey(intent)) {
+                        entry.mFolderItems.put(intent, new HashSet<>());
+                    }
+                    entry.mFolderItems.get(intent).add(id);
+                } catch (Exception e) {
+                    removeEntryFromDb(mDb, mTableName, IntArray.wrap(c.getInt(0)));
+                }
+            }
+            c.close();
+            return total;
+        }
+
+        private Cursor queryWorkspace(String[] columns, String where) {
+            return mDb.query(mTableName, columns, where, null, null, null, null);
+        }
+
+        /** Verifies if the mIntent should be restored. */
+        private void verifyIntent(String intentStr)
+                throws Exception {
+            Intent intent = Intent.parseUri(intentStr, 0);
+            if (intent.getComponent() != null) {
+                verifyPackage(intent.getComponent().getPackageName());
+            } else if (intent.getPackage() != null) {
+                // Only verify package if the component was null.
+                verifyPackage(intent.getPackage());
+            }
+        }
+
+        /** Verifies if the package should be restored */
+        private void verifyPackage(String packageName)
+                throws Exception {
+            if (!mValidPackages.contains(packageName)) {
+                // TODO(b/151468819): Handle promise app icon restoration during grid migration.
+                throw new Exception("Package not available");
+            }
+        }
+    }
+
+    protected static class DbEntry extends ItemInfo implements Comparable<DbEntry> {
+
+        private String mIntent;
+        private String mProvider;
+        private Map<String, Set<Integer>> mFolderItems = new HashMap<>();
+
+        /** Comparator according to the reading order */
+        @Override
+        public int compareTo(DbEntry another) {
+            if (screenId != another.screenId) {
+                return Integer.compare(screenId, another.screenId);
+            }
+            if (cellY != another.cellY) {
+                return Integer.compare(cellY, another.cellY);
+            }
+            return Integer.compare(cellX, another.cellX);
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) return true;
+            if (o == null || getClass() != o.getClass()) return false;
+            DbEntry entry = (DbEntry) o;
+            return Objects.equals(getEntryMigrationId(), entry.getEntryMigrationId());
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(getEntryMigrationId());
+        }
+
+        public void updateContentValues(ContentValues values) {
+            values.put(LauncherSettings.Favorites.SCREEN, screenId);
+            values.put(LauncherSettings.Favorites.CELLX, cellX);
+            values.put(LauncherSettings.Favorites.CELLY, cellY);
+            values.put(LauncherSettings.Favorites.SPANX, spanX);
+            values.put(LauncherSettings.Favorites.SPANY, spanY);
+        }
+
+        /** This id is not used in the DB is only used while doing the migration and it identifies
+         * an entry on each workspace. For example two calculator icons would have the same
+         * migration id even thought they have different database ids.
+         */
+        public String getEntryMigrationId() {
+            switch (itemType) {
+                case LauncherSettings.Favorites.ITEM_TYPE_FOLDER:
+                    return getFolderMigrationId();
+                case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET:
+                    return mProvider;
+                case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION:
+                    final String intentStr = cleanIntentString(mIntent);
+                    try {
+                        Intent i = Intent.parseUri(intentStr, 0);
+                        return Objects.requireNonNull(i.getComponent()).toString();
+                    } catch (Exception e) {
+                        return intentStr;
+                    }
+                default:
+                    return cleanIntentString(mIntent);
+            }
+        }
+
+        /**
+         * This method should return an id that should be the same for two folders containing the
+         * same elements.
+         */
+        @NonNull
+        private String getFolderMigrationId() {
+            return mFolderItems.keySet().stream()
+                    .map(intentString -> mFolderItems.get(intentString).size()
+                            + cleanIntentString(intentString))
+                    .sorted()
+                    .collect(Collectors.joining(","));
+        }
+
+        /**
+         * This is needed because sourceBounds can change and make the id of two equal items
+         * different.
+         */
+        @NonNull
+        private String cleanIntentString(@NonNull String intentStr) {
+            try {
+                Intent i = Intent.parseUri(intentStr, 0);
+                i.setSourceBounds(null);
+                return i.toURI();
+            } catch (URISyntaxException e) {
+                Log.e(TAG, "Unable to parse Intent string", e);
+                return intentStr;
+            }
+
+        }
+    }
+}
diff --git a/src/com/android/launcher3/model/ItemInstallQueue.java b/src/com/android/launcher3/model/ItemInstallQueue.java
index 5a220f7..fa0511c 100644
--- a/src/com/android/launcher3/model/ItemInstallQueue.java
+++ b/src/com/android/launcher3/model/ItemInstallQueue.java
@@ -49,7 +49,6 @@
 import com.android.launcher3.model.data.WorkspaceItemInfo;
 import com.android.launcher3.shortcuts.ShortcutKey;
 import com.android.launcher3.shortcuts.ShortcutRequest;
-import com.android.launcher3.testing.TestProtocol;
 import com.android.launcher3.util.MainThreadInitializedObject;
 import com.android.launcher3.util.PersistedItemArray;
 import com.android.launcher3.util.Preconditions;
@@ -119,18 +118,10 @@
         Launcher launcher = Launcher.ACTIVITY_TRACKER.getCreatedActivity();
         if (launcher == null) {
             // Launcher not loaded
-            if (TestProtocol.sDebugTracing) {
-                Log.d(TestProtocol.MISSING_PROMISE_ICON,
-                        LOG + " flushQueueInBackground launcher not loaded");
-            }
             return;
         }
         ensureQueueLoaded();
         if (mItems.isEmpty()) {
-            if (TestProtocol.sDebugTracing) {
-                Log.d(TestProtocol.MISSING_PROMISE_ICON,
-                        LOG + " flushQueueInBackground no items to load");
-            }
             return;
         }
 
@@ -140,10 +131,6 @@
 
         // Add the items and clear queue
         if (!installQueue.isEmpty()) {
-            if (TestProtocol.sDebugTracing) {
-                Log.d(TestProtocol.MISSING_PROMISE_ICON,
-                        LOG + " flushQueueInBackground launcher addAndBindAddedWorkspaceItems");
-            }
             // add log
             launcher.getModel().addAndBindAddedWorkspaceItems(installQueue);
         }
@@ -204,10 +191,6 @@
         // Queue the item up for adding if launcher has not loaded properly yet
         MODEL_EXECUTOR.post(() -> {
             Pair<ItemInfo, Object> itemInfo = info.getItemInfo(mContext);
-            if (TestProtocol.sDebugTracing) {
-                Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + " queuePendingShortcutInfo"
-                        + ", itemInfo=" + itemInfo);
-            }
             if (itemInfo == null) {
                 FileLog.d(LOG,
                         "Adding PendingInstallShortcutInfo with no attached info to queue.",
@@ -288,6 +271,7 @@
         }
 
         @Override
+        @Nullable
         public Intent getIntent() {
             return intent;
         }
diff --git a/src/com/android/launcher3/model/LoaderCursor.java b/src/com/android/launcher3/model/LoaderCursor.java
index ae5b66a..2054d93 100644
--- a/src/com/android/launcher3/model/LoaderCursor.java
+++ b/src/com/android/launcher3/model/LoaderCursor.java
@@ -16,16 +16,16 @@
 
 package com.android.launcher3.model;
 
+import static com.android.launcher3.LauncherSettings.Favorites.TABLE_NAME;
+
 import android.content.ComponentName;
 import android.content.ContentValues;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.LauncherActivityInfo;
 import android.content.pm.LauncherApps;
-import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.database.CursorWrapper;
-import android.net.Uri;
 import android.os.UserHandle;
 import android.provider.BaseColumns;
 import android.text.TextUtils;
@@ -37,7 +37,6 @@
 
 import com.android.launcher3.InvariantDeviceProfile;
 import com.android.launcher3.LauncherAppState;
-import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.LauncherSettings.Favorites;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.Workspace;
@@ -66,30 +65,35 @@
 
     private final LongSparseArray<UserHandle> allUsers;
 
-    private final Uri mContentUri;
+    private final LauncherAppState mApp;
     private final Context mContext;
-    private final PackageManager mPM;
     private final IconCache mIconCache;
     private final InvariantDeviceProfile mIDP;
 
-    private final IntArray itemsToRemove = new IntArray();
-    private final IntArray restoredRows = new IntArray();
-    private final IntSparseArrayMap<GridOccupancy> occupied = new IntSparseArrayMap<>();
+    private final IntArray mItemsToRemove = new IntArray();
+    private final IntArray mRestoredRows = new IntArray();
+    private final IntSparseArrayMap<GridOccupancy> mOccupied = new IntSparseArrayMap<>();
 
-    private final int iconPackageIndex;
-    private final int iconResourceIndex;
-    private final int iconIndex;
-    public final int titleIndex;
+    private final int mIconIndex;
+    public final int mTitleIndex;
 
-    private final int idIndex;
-    private final int containerIndex;
-    private final int itemTypeIndex;
-    private final int screenIndex;
-    private final int cellXIndex;
-    private final int cellYIndex;
-    private final int profileIdIndex;
-    private final int restoredIndex;
-    private final int intentIndex;
+    private final int mIdIndex;
+    private final int mContainerIndex;
+    private final int mItemTypeIndex;
+    private final int mScreenIndex;
+    private final int mCellXIndex;
+    private final int mCellYIndex;
+    private final int mProfileIdIndex;
+    private final int mRestoredIndex;
+    private final int mIntentIndex;
+
+    private final int mAppWidgetIdIndex;
+    private final int mAppWidgetProviderIndex;
+    private final int mSpanXIndex;
+    private final int mSpanYIndex;
+    private final int mRankIndex;
+    private final int mOptionsIndex;
+    private final int mAppWidgetSourceIndex;
 
     @Nullable
     private LauncherActivityInfo mActivityInfo;
@@ -102,32 +106,36 @@
     public int itemType;
     public int restoreFlag;
 
-    public LoaderCursor(Cursor cursor, Uri contentUri, LauncherAppState app,
-            UserManagerState userManagerState) {
+    public LoaderCursor(Cursor cursor, LauncherAppState app, UserManagerState userManagerState) {
         super(cursor);
 
+        mApp = app;
         allUsers = userManagerState.allUsers;
-        mContentUri = contentUri;
         mContext = app.getContext();
         mIconCache = app.getIconCache();
         mIDP = app.getInvariantDeviceProfile();
-        mPM = mContext.getPackageManager();
 
         // Init column indices
-        iconIndex = getColumnIndexOrThrow(LauncherSettings.Favorites.ICON);
-        iconPackageIndex = getColumnIndexOrThrow(LauncherSettings.Favorites.ICON_PACKAGE);
-        iconResourceIndex = getColumnIndexOrThrow(LauncherSettings.Favorites.ICON_RESOURCE);
-        titleIndex = getColumnIndexOrThrow(LauncherSettings.Favorites.TITLE);
+        mIconIndex = getColumnIndexOrThrow(Favorites.ICON);
+        mTitleIndex = getColumnIndexOrThrow(Favorites.TITLE);
 
-        idIndex = getColumnIndexOrThrow(LauncherSettings.Favorites._ID);
-        containerIndex = getColumnIndexOrThrow(LauncherSettings.Favorites.CONTAINER);
-        itemTypeIndex = getColumnIndexOrThrow(LauncherSettings.Favorites.ITEM_TYPE);
-        screenIndex = getColumnIndexOrThrow(LauncherSettings.Favorites.SCREEN);
-        cellXIndex = getColumnIndexOrThrow(LauncherSettings.Favorites.CELLX);
-        cellYIndex = getColumnIndexOrThrow(LauncherSettings.Favorites.CELLY);
-        profileIdIndex = getColumnIndexOrThrow(LauncherSettings.Favorites.PROFILE_ID);
-        restoredIndex = getColumnIndexOrThrow(LauncherSettings.Favorites.RESTORED);
-        intentIndex = getColumnIndexOrThrow(LauncherSettings.Favorites.INTENT);
+        mIdIndex = getColumnIndexOrThrow(Favorites._ID);
+        mContainerIndex = getColumnIndexOrThrow(Favorites.CONTAINER);
+        mItemTypeIndex = getColumnIndexOrThrow(Favorites.ITEM_TYPE);
+        mScreenIndex = getColumnIndexOrThrow(Favorites.SCREEN);
+        mCellXIndex = getColumnIndexOrThrow(Favorites.CELLX);
+        mCellYIndex = getColumnIndexOrThrow(Favorites.CELLY);
+        mProfileIdIndex = getColumnIndexOrThrow(Favorites.PROFILE_ID);
+        mRestoredIndex = getColumnIndexOrThrow(Favorites.RESTORED);
+        mIntentIndex = getColumnIndexOrThrow(Favorites.INTENT);
+
+        mAppWidgetIdIndex = getColumnIndexOrThrow(Favorites.APPWIDGET_ID);
+        mAppWidgetProviderIndex = getColumnIndexOrThrow(Favorites.APPWIDGET_PROVIDER);
+        mSpanXIndex = getColumnIndexOrThrow(Favorites.SPANX);
+        mSpanYIndex = getColumnIndexOrThrow(Favorites.SPANY);
+        mRankIndex = getColumnIndexOrThrow(Favorites.RANK);
+        mOptionsIndex = getColumnIndexOrThrow(Favorites.OPTIONS);
+        mAppWidgetSourceIndex = getColumnIndexOrThrow(Favorites.APPWIDGET_SOURCE);
     }
 
     @Override
@@ -137,18 +145,18 @@
             mActivityInfo = null;
 
             // Load common properties.
-            itemType = getInt(itemTypeIndex);
-            container = getInt(containerIndex);
-            id = getInt(idIndex);
-            serialNumber = getInt(profileIdIndex);
+            itemType = getInt(mItemTypeIndex);
+            container = getInt(mContainerIndex);
+            id = getInt(mIdIndex);
+            serialNumber = getInt(mProfileIdIndex);
             user = allUsers.get(serialNumber);
-            restoreFlag = getInt(restoredIndex);
+            restoreFlag = getInt(mRestoredIndex);
         }
         return result;
     }
 
     public Intent parseIntent() {
-        String intentDescription = getString(intentIndex);
+        String intentDescription = getString(mIntentIndex);
         try {
             return TextUtils.isEmpty(intentDescription) ?
                     null : Intent.parseUri(intentDescription, 0);
@@ -185,24 +193,89 @@
 
     public IconRequestInfo<WorkspaceItemInfo> createIconRequestInfo(
             WorkspaceItemInfo wai, boolean useLowResIcon) {
-        String packageName = itemType == LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT
-                ? getString(iconPackageIndex) : null;
-        String resourceName = itemType == LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT
-                ? getString(iconResourceIndex) : null;
-        byte[] iconBlob = itemType == LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT
+        byte[] iconBlob = itemType == Favorites.ITEM_TYPE_SHORTCUT
                 || itemType == Favorites.ITEM_TYPE_DEEP_SHORTCUT
                 || restoreFlag != 0
-                ? getBlob(iconIndex) : null;
+                ? getIconBlob() : null;
 
-        return new IconRequestInfo<>(
-                wai, mActivityInfo, packageName, resourceName, iconBlob, useLowResIcon);
+        return new IconRequestInfo<>(wai, mActivityInfo, iconBlob, useLowResIcon);
+    }
+
+    /**
+     * Returns the icon data for at the current position
+     */
+    public byte[] getIconBlob() {
+        return getBlob(mIconIndex);
     }
 
     /**
      * Returns the title or empty string
      */
-    private String getTitle() {
-        return Utilities.trim(getString(titleIndex));
+    public String getTitle() {
+        return Utilities.trim(getString(mTitleIndex));
+    }
+
+    /**
+     * When loading an app widget for the workspace, returns it's app widget id
+     */
+    public int getAppWidgetId() {
+        return getInt(mAppWidgetIdIndex);
+    }
+
+    /**
+     * When loading an app widget for the workspace, returns the widget provider
+     */
+    public String getAppWidgetProvider() {
+        return getString(mAppWidgetProviderIndex);
+    }
+
+    /**
+     * Returns the x position for the item in the cell layout's grid
+     */
+    public int getSpanX() {
+        return getInt(mSpanXIndex);
+    }
+
+    /**
+     * Returns the y position for the item in the cell layout's grid
+     */
+    public int getSpanY() {
+        return getInt(mSpanYIndex);
+    }
+
+    /**
+     * Returns the rank for the item
+     */
+    public int getRank() {
+        return getInt(mRankIndex);
+    }
+
+    /**
+     * Returns the options for the item
+     */
+    public int getOptions() {
+        return getInt(mOptionsIndex);
+    }
+
+    /**
+     * When loading an app widget for the workspace, returns it's app widget source
+     */
+    public int getAppWidgetSource() {
+        return getInt(mAppWidgetSourceIndex);
+    }
+
+    /**
+     * Returns the screen that the item is on
+     */
+    public int getScreen() {
+        return getInt(mScreenIndex);
+    }
+
+    /**
+     * Returns the UX container that the item is in
+     */
+    public int getContainer() {
+        return getInt(mContainerIndex);
     }
 
     /**
@@ -232,7 +305,7 @@
             throw new InvalidParameterException("Invalid restoreType " + restoreFlag);
         }
 
-        info.contentDescription = mPM.getUserBadgedLabel(info.title, info.user);
+        info.contentDescription = mIconCache.getUserBadgedLabel(info.title, info.user);
         info.itemType = itemType;
         info.status = restoreFlag;
         return info;
@@ -291,15 +364,19 @@
 
         // from the db
         if (TextUtils.isEmpty(info.title)) {
-            info.title = getTitle();
+            if (loadIcon) {
+                info.title = getTitle();
+
+                // fall back to the class name of the activity
+                if (info.title == null) {
+                    info.title = componentName.getClassName();
+                }
+            } else {
+                info.title = "";
+            }
         }
 
-        // fall back to the class name of the activity
-        if (info.title == null) {
-            info.title = componentName.getClassName();
-        }
-
-        info.contentDescription = mPM.getUserBadgedLabel(info.title, info.user);
+        info.contentDescription = mIconCache.getUserBadgedLabel(info.title, info.user);
         return info;
     }
 
@@ -308,6 +385,7 @@
      */
     public ContentWriter updater() {
        return new ContentWriter(mContext, new ContentWriter.CommitParams(
+               mApp.getModel().getModelDbController(),
                BaseColumns._ID + "= ?", new String[]{Integer.toString(id)}));
     }
 
@@ -316,7 +394,7 @@
      */
     public void markDeleted(String reason) {
         FileLog.e(TAG, reason);
-        itemsToRemove.add(id);
+        mItemsToRemove.add(id);
     }
 
     /**
@@ -324,10 +402,10 @@
      * @return true is any item was removed.
      */
     public boolean commitDeleted() {
-        if (itemsToRemove.size() > 0) {
+        if (mItemsToRemove.size() > 0) {
             // Remove dead items
-            mContext.getContentResolver().delete(mContentUri, Utilities.createDbSelectionQuery(
-                    LauncherSettings.Favorites._ID, itemsToRemove), null);
+            mApp.getModel().getModelDbController().delete(TABLE_NAME,
+                    Utilities.createDbSelectionQuery(Favorites._ID, mItemsToRemove), null);
             return true;
         }
         return false;
@@ -338,7 +416,7 @@
      */
     public void markRestored() {
         if (restoreFlag != 0) {
-            restoredRows.add(id);
+            mRestoredRows.add(id);
             restoreFlag = 0;
         }
     }
@@ -348,13 +426,12 @@
     }
 
     public void commitRestoredItems() {
-        if (restoredRows.size() > 0) {
+        if (mRestoredRows.size() > 0) {
             // Update restored items that no longer require special handling
             ContentValues values = new ContentValues();
-            values.put(LauncherSettings.Favorites.RESTORED, 0);
-            mContext.getContentResolver().update(mContentUri, values,
-                    Utilities.createDbSelectionQuery(
-                            LauncherSettings.Favorites._ID, restoredRows), null);
+            values.put(Favorites.RESTORED, 0);
+            mApp.getModel().getModelDbController().update(TABLE_NAME, values,
+                    Utilities.createDbSelectionQuery(Favorites._ID, mRestoredRows), null);
         }
     }
 
@@ -362,8 +439,7 @@
      * Returns true is the item is on workspace or hotseat
      */
     public boolean isOnWorkspaceOrHotseat() {
-        return container == LauncherSettings.Favorites.CONTAINER_DESKTOP ||
-                container == LauncherSettings.Favorites.CONTAINER_HOTSEAT;
+        return container == Favorites.CONTAINER_DESKTOP || container == Favorites.CONTAINER_HOTSEAT;
     }
 
     /**
@@ -377,9 +453,9 @@
     public void applyCommonProperties(ItemInfo info) {
         info.id = id;
         info.container = container;
-        info.screenId = getInt(screenIndex);
-        info.cellX = getInt(cellXIndex);
-        info.cellY = getInt(cellYIndex);
+        info.screenId = getInt(mScreenIndex);
+        info.cellX = getInt(mCellXIndex);
+        info.cellY = getInt(mCellYIndex);
     }
 
     public void checkAndAddItem(ItemInfo info, BgDataModel dataModel) {
@@ -392,7 +468,7 @@
      */
     public void checkAndAddItem(
             ItemInfo info, BgDataModel dataModel, LoaderMemoryLogger logger) {
-        if (info.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
+        if (info.itemType == Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
             // Ensure that it is a valid intent. An exception here will
             // cause the item loading to get skipped
             ShortcutKey.fromItemInfo(info);
@@ -409,9 +485,9 @@
      */
     protected boolean checkItemPlacement(ItemInfo item) {
         int containerIndex = item.screenId;
-        if (item.container == LauncherSettings.Favorites.CONTAINER_HOTSEAT) {
+        if (item.container == Favorites.CONTAINER_HOTSEAT) {
             final GridOccupancy hotseatOccupancy =
-                    occupied.get(LauncherSettings.Favorites.CONTAINER_HOTSEAT);
+                    mOccupied.get(Favorites.CONTAINER_HOTSEAT);
 
             if (item.screenId >= mIDP.numDatabaseHotseatIcons) {
                 Log.e(TAG, "Error loading shortcut " + item
@@ -434,19 +510,18 @@
             } else {
                 final GridOccupancy occupancy = new GridOccupancy(mIDP.numDatabaseHotseatIcons, 1);
                 occupancy.cells[item.screenId][0] = true;
-                occupied.put(LauncherSettings.Favorites.CONTAINER_HOTSEAT, occupancy);
+                mOccupied.put(Favorites.CONTAINER_HOTSEAT, occupancy);
                 return true;
             }
-        } else if (item.container != LauncherSettings.Favorites.CONTAINER_DESKTOP) {
+        } else if (item.container != Favorites.CONTAINER_DESKTOP) {
             // Skip further checking if it is not the hotseat or workspace container
             return true;
         }
 
         final int countX = mIDP.numColumns;
         final int countY = mIDP.numRows;
-        if (item.container == LauncherSettings.Favorites.CONTAINER_DESKTOP &&
-                item.cellX < 0 || item.cellY < 0 ||
-                item.cellX + item.spanX > countX || item.cellY + item.spanY > countY) {
+        if (item.container == Favorites.CONTAINER_DESKTOP && item.cellX < 0 || item.cellY < 0
+                || item.cellX + item.spanX > countX || item.cellY + item.spanY > countY) {
             Log.e(TAG, "Error loading shortcut " + item
                     + " into cell (" + containerIndex + "-" + item.screenId + ":"
                     + item.cellX + "," + item.cellY
@@ -454,19 +529,19 @@
             return false;
         }
 
-        if (!occupied.containsKey(item.screenId)) {
+        if (!mOccupied.containsKey(item.screenId)) {
             GridOccupancy screen = new GridOccupancy(countX + 1, countY + 1);
             if (item.screenId == Workspace.FIRST_SCREEN_ID && FeatureFlags.QSB_ON_FIRST_SCREEN) {
                 // Mark the first X columns (X is width of the search container) in the first row as
                 // occupied (if the feature is enabled) in order to account for the search
                 // container.
                 int spanX = mIDP.numSearchContainerColumns;
-                int spanY = FeatureFlags.EXPANDED_SMARTSPACE.get() ? 2 : 1;
+                int spanY = 1;
                 screen.markCells(0, 0, spanX, spanY, true);
             }
-            occupied.put(item.screenId, screen);
+            mOccupied.put(item.screenId, screen);
         }
-        final GridOccupancy occupancy = occupied.get(item.screenId);
+        final GridOccupancy occupancy = mOccupied.get(item.screenId);
 
         // Check if any workspace icons overlap with each other
         if (occupancy.isRegionVacant(item.cellX, item.cellY, item.spanX, item.spanY)) {
diff --git a/src/com/android/launcher3/model/LoaderTask.java b/src/com/android/launcher3/model/LoaderTask.java
index f1c5d59..ca356b0 100644
--- a/src/com/android/launcher3/model/LoaderTask.java
+++ b/src/com/android/launcher3/model/LoaderTask.java
@@ -16,6 +16,7 @@
 
 package com.android.launcher3.model;
 
+import static com.android.launcher3.LauncherSettings.Favorites.TABLE_NAME;
 import static com.android.launcher3.model.BgDataModel.Callbacks.FLAG_HAS_SHORTCUT_PERMISSION;
 import static com.android.launcher3.model.BgDataModel.Callbacks.FLAG_QUIET_MODE_CHANGE_PERMISSION;
 import static com.android.launcher3.model.BgDataModel.Callbacks.FLAG_QUIET_MODE_ENABLED;
@@ -23,6 +24,8 @@
 import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_DISABLED_LOCKED_USER;
 import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_DISABLED_SAFEMODE;
 import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_DISABLED_SUSPENDED;
+import static com.android.launcher3.testing.shared.TestProtocol.WORK_TAB_MISSING;
+import static com.android.launcher3.testing.shared.TestProtocol.testLogD;
 import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
 import static com.android.launcher3.util.PackageManagerHelper.hasShortcutsPermission;
 import static com.android.launcher3.util.PackageManagerHelper.isSystemApp;
@@ -41,7 +44,6 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ShortcutInfo;
 import android.graphics.Point;
-import android.net.Uri;
 import android.os.Bundle;
 import android.os.Trace;
 import android.os.UserHandle;
@@ -50,15 +52,16 @@
 import android.util.ArrayMap;
 import android.util.Log;
 import android.util.LongSparseArray;
-import android.util.TimingLogger;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.InvariantDeviceProfile;
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.LauncherModel;
-import com.android.launcher3.LauncherSettings;
+import com.android.launcher3.LauncherSettings.Favorites;
+import com.android.launcher3.LauncherSettings.Settings;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.folder.Folder;
@@ -118,6 +121,7 @@
 
     private static final boolean DEBUG = true;
 
+    @NonNull
     protected final LauncherAppState mApp;
     private final AllAppsList mBgAllAppsList;
     protected final BgDataModel mBgDataModel;
@@ -125,7 +129,8 @@
 
     private FirstScreenBroadcast mFirstScreenBroadcast;
 
-    private final LoaderResults mResults;
+    @NonNull
+    private final LauncherBinder mLauncherBinder;
 
     private final LauncherApps mLauncherApps;
     private final UserManager mUserManager;
@@ -137,6 +142,7 @@
     private final UserManagerState mUserManagerState = new UserManagerState();
 
     protected final Map<ComponentKey, AppWidgetProviderInfo> mWidgetProvidersMap = new ArrayMap<>();
+    private Map<ShortcutKey, ShortcutInfo> mShortcutKeyToPinnedShortcuts;
 
     private boolean mStopped;
 
@@ -144,13 +150,13 @@
     private boolean mItemsDeleted = false;
     private String mDbName;
 
-    public LoaderTask(LauncherAppState app, AllAppsList bgAllAppsList, BgDataModel dataModel,
-            ModelDelegate modelDelegate, LoaderResults results) {
+    public LoaderTask(@NonNull LauncherAppState app, AllAppsList bgAllAppsList, BgDataModel bgModel,
+            ModelDelegate modelDelegate, @NonNull LauncherBinder launcherBinder) {
         mApp = app;
         mBgAllAppsList = bgAllAppsList;
-        mBgDataModel = dataModel;
+        mBgDataModel = bgModel;
         mModelDelegate = modelDelegate;
-        mResults = results;
+        mLauncherBinder = launcherBinder;
 
         mLauncherApps = mApp.getContext().getSystemService(LauncherApps.class);
         mUserManager = mApp.getContext().getSystemService(UserManager.class);
@@ -163,7 +169,7 @@
         // Wait until the either we're stopped or the other threads are done.
         // This way we don't start loading all apps until the workspace has settled
         // down.
-        LooperIdleLock idleLock = mResults.newIdleLock(this);
+        LooperIdleLock idleLock = mLauncherBinder.newIdleLock(this);
         // Just in case mFlushingWorkerThread changes but we aren't woken up,
         // wait no longer than 1sec at a time
         while (!mStopped && idleLock.awaitLocked(1000));
@@ -198,17 +204,10 @@
         }
 
         Object traceToken = TraceHelper.INSTANCE.beginSection(TAG);
-        TimingLogger logger = new TimingLogger(TAG, "run");
         LoaderMemoryLogger memoryLogger = new LoaderMemoryLogger();
         try (LauncherModel.LoaderTransaction transaction = mApp.getModel().beginLoader(this)) {
             List<ShortcutInfo> allShortcuts = new ArrayList<>();
-            Trace.beginSection("LoadWorkspace");
-            try {
-                loadWorkspace(allShortcuts, memoryLogger);
-            } finally {
-                Trace.endSection();
-            }
-            logASplit(logger, "loadWorkspace");
+            loadWorkspace(allShortcuts, "", memoryLogger);
 
             // Sanitize data re-syncs widgets/shortcuts based on the workspace loaded from db.
             // sanitizeData should not be invoked if the workspace is loaded from a db different
@@ -216,22 +215,23 @@
             // (e.g. both grid preview and minimal device mode uses a different db)
             if (mApp.getInvariantDeviceProfile().dbFile.equals(mDbName)) {
                 verifyNotStopped();
-                sanitizeData();
-                logASplit(logger, "sanitizeData");
+                sanitizeFolders(mItemsDeleted);
+                sanitizeWidgetsShortcutsAndPackages();
+                logASplit("sanitizeData");
             }
 
             verifyNotStopped();
-            mResults.bindWorkspace(true /* incrementBindId */);
-            logASplit(logger, "bindWorkspace");
+            mLauncherBinder.bindWorkspace(true /* incrementBindId */, /* isBindSync= */ false);
+            logASplit("bindWorkspace");
 
             mModelDelegate.workspaceLoadComplete();
             // Notify the installer packages of packages with active installs on the first screen.
             sendFirstScreenActiveInstallsBroadcast();
-            logASplit(logger, "sendFirstScreenActiveInstallsBroadcast");
+            logASplit("sendFirstScreenActiveInstallsBroadcast");
 
             // Take a break
             waitForIdle();
-            logASplit(logger, "step 1 complete");
+            logASplit("step 1 complete");
             verifyNotStopped();
 
             // second step
@@ -242,11 +242,16 @@
             } finally {
                 Trace.endSection();
             }
-            logASplit(logger, "loadAllApps");
+            logASplit("loadAllApps");
 
+            if (FeatureFlags.CHANGE_MODEL_DELEGATE_LOADING_ORDER.get()) {
+                mModelDelegate.loadAndBindAllAppsItems(mUserManagerState,
+                        mLauncherBinder.mCallbacksList, mShortcutKeyToPinnedShortcuts);
+                logASplit("allAppsDelegateItems");
+            }
             verifyNotStopped();
-            mResults.bindAllApps();
-            logASplit(logger, "bindAllApps");
+            mLauncherBinder.bindAllApps();
+            logASplit("bindAllApps");
 
             verifyNotStopped();
             IconCacheUpdateHandler updateHandler = mIconCache.getUpdateHandler();
@@ -254,75 +259,73 @@
             updateHandler.updateIcons(allActivityList,
                     LauncherActivityCachingLogic.newInstance(mApp.getContext()),
                     mApp.getModel()::onPackageIconsUpdated);
-            logASplit(logger, "update icon cache");
+            logASplit("update icon cache");
 
-            if (FeatureFlags.ENABLE_DEEP_SHORTCUT_ICON_CACHE.get()) {
-                verifyNotStopped();
-                logASplit(logger, "save shortcuts in icon cache");
-                updateHandler.updateIcons(allShortcuts, new ShortcutCachingLogic(),
-                        mApp.getModel()::onPackageIconsUpdated);
-            }
+            verifyNotStopped();
+            logASplit("save shortcuts in icon cache");
+            updateHandler.updateIcons(allShortcuts, new ShortcutCachingLogic(),
+                    mApp.getModel()::onPackageIconsUpdated);
 
             // Take a break
             waitForIdle();
-            logASplit(logger, "step 2 complete");
+            logASplit("step 2 complete");
             verifyNotStopped();
 
             // third step
             List<ShortcutInfo> allDeepShortcuts = loadDeepShortcuts();
-            logASplit(logger, "loadDeepShortcuts");
+            logASplit("loadDeepShortcuts");
 
             verifyNotStopped();
-            mResults.bindDeepShortcuts();
-            logASplit(logger, "bindDeepShortcuts");
+            mLauncherBinder.bindDeepShortcuts();
+            logASplit("bindDeepShortcuts");
 
-            if (FeatureFlags.ENABLE_DEEP_SHORTCUT_ICON_CACHE.get()) {
-                verifyNotStopped();
-                logASplit(logger, "save deep shortcuts in icon cache");
-                updateHandler.updateIcons(allDeepShortcuts,
-                        new ShortcutCachingLogic(), (pkgs, user) -> { });
-            }
+            verifyNotStopped();
+            logASplit("save deep shortcuts in icon cache");
+            updateHandler.updateIcons(allDeepShortcuts,
+                    new ShortcutCachingLogic(), (pkgs, user) -> { });
 
             // Take a break
             waitForIdle();
-            logASplit(logger, "step 3 complete");
+            logASplit("step 3 complete");
             verifyNotStopped();
 
             // fourth step
             List<ComponentWithLabelAndIcon> allWidgetsList =
                     mBgDataModel.widgetsModel.update(mApp, null);
-            logASplit(logger, "load widgets");
+            logASplit("load widgets");
 
             verifyNotStopped();
-            mResults.bindWidgets();
-            logASplit(logger, "bindWidgets");
+            mLauncherBinder.bindWidgets();
+            logASplit("bindWidgets");
             verifyNotStopped();
 
+            if (FeatureFlags.CHANGE_MODEL_DELEGATE_LOADING_ORDER.get()) {
+                mModelDelegate.loadAndBindOtherItems(mLauncherBinder.mCallbacksList);
+                logASplit("otherDelegateItems");
+                verifyNotStopped();
+            }
+
             updateHandler.updateIcons(allWidgetsList,
                     new ComponentWithIconCachingLogic(mApp.getContext(), true),
                     mApp.getModel()::onWidgetLabelsUpdated);
-            logASplit(logger, "save widgets in icon cache");
+            logASplit("save widgets in icon cache");
 
             // fifth step
-            if (FeatureFlags.FOLDER_NAME_SUGGEST.get()) {
-                loadFolderNames();
-            }
+            loadFolderNames();
 
             verifyNotStopped();
             updateHandler.finish();
-            logASplit(logger, "finish icon update");
+            logASplit("finish icon update");
 
             mModelDelegate.modelLoadComplete();
             transaction.commit();
             memoryLogger.clearLogs();
         } catch (CancellationException e) {
             // Loader stopped, ignore
-            logASplit(logger, "Cancelled");
+            logASplit("Cancelled");
         } catch (Exception e) {
             memoryLogger.printLogs();
             throw e;
-        } finally {
-            logger.dumpToLog();
         }
         TraceHelper.INSTANCE.endSection(traceToken);
     }
@@ -332,21 +335,31 @@
         this.notify();
     }
 
-    private void loadWorkspace(List<ShortcutInfo> allDeepShortcuts, LoaderMemoryLogger logger) {
-        loadWorkspace(allDeepShortcuts, LauncherSettings.Favorites.CONTENT_URI,
-                null /* selection */, logger);
-    }
-
-    protected void loadWorkspace(
-            List<ShortcutInfo> allDeepShortcuts, Uri contentUri, String selection) {
-        loadWorkspace(allDeepShortcuts, contentUri, selection, null);
-    }
-
     protected void loadWorkspace(
             List<ShortcutInfo> allDeepShortcuts,
-            Uri contentUri,
             String selection,
-            @Nullable LoaderMemoryLogger logger) {
+            LoaderMemoryLogger memoryLogger) {
+        Trace.beginSection("LoadWorkspace");
+        try {
+            loadWorkspaceImpl(allDeepShortcuts, selection, memoryLogger);
+        } finally {
+            Trace.endSection();
+        }
+        logASplit("loadWorkspace");
+
+        if (FeatureFlags.CHANGE_MODEL_DELEGATE_LOADING_ORDER.get()) {
+            verifyNotStopped();
+            mModelDelegate.loadAndBindWorkspaceItems(mUserManagerState,
+                    mLauncherBinder.mCallbacksList, mShortcutKeyToPinnedShortcuts);
+            mModelDelegate.markActive();
+            logASplit("workspaceDelegateItems");
+        }
+    }
+
+    private void loadWorkspaceImpl(
+            List<ShortcutInfo> allDeepShortcuts,
+            String selection,
+            @Nullable LoaderMemoryLogger memoryLogger) {
         final Context context = mApp.getContext();
         final ContentResolver contentResolver = context.getContentResolver();
         final PackageManagerHelper pmHelper = new PackageManagerHelper(context);
@@ -355,20 +368,18 @@
         final WidgetManagerHelper widgetHelper = new WidgetManagerHelper(context);
 
         boolean clearDb = false;
-        if (!GridSizeMigrationTaskV2.migrateGridIfNeeded(context)) {
+        if (!mApp.getModel().getModelDbController().migrateGridIfNeeded()) {
             // Migration failed. Clear workspace.
             clearDb = true;
         }
 
         if (clearDb) {
             Log.d(TAG, "loadWorkspace: resetting launcher database");
-            LauncherSettings.Settings.call(contentResolver,
-                    LauncherSettings.Settings.METHOD_CREATE_EMPTY_DB);
+            Settings.call(contentResolver, Settings.METHOD_CREATE_EMPTY_DB);
         }
 
         Log.d(TAG, "loadWorkspace: loading default favorites");
-        LauncherSettings.Settings.call(contentResolver,
-                LauncherSettings.Settings.METHOD_LOAD_DEFAULT_FAVORITES);
+        Settings.call(contentResolver, Settings.METHOD_LOAD_DEFAULT_FAVORITES);
 
         synchronized (mBgDataModel) {
             mBgDataModel.clear();
@@ -381,29 +392,14 @@
             final PackageUserKey tempPackageKey = new PackageUserKey(null, null);
             mFirstScreenBroadcast = new FirstScreenBroadcast(installingPkgs);
 
-            Map<ShortcutKey, ShortcutInfo> shortcutKeyToPinnedShortcuts = new HashMap<>();
+            mShortcutKeyToPinnedShortcuts = new HashMap<>();
+            ModelDbController dbController = mApp.getModel().getModelDbController();
             final LoaderCursor c = new LoaderCursor(
-                    contentResolver.query(contentUri, null, selection, null, null), contentUri,
+                    dbController.query(TABLE_NAME, null, selection, null, null),
                     mApp, mUserManagerState);
             final Bundle extras = c.getExtras();
-            mDbName = extras == null
-                    ? null : extras.getString(LauncherSettings.Settings.EXTRA_DB_NAME);
+            mDbName = extras == null ? null : extras.getString(Settings.EXTRA_DB_NAME);
             try {
-                final int appWidgetIdIndex = c.getColumnIndexOrThrow(
-                        LauncherSettings.Favorites.APPWIDGET_ID);
-                final int appWidgetProviderIndex = c.getColumnIndexOrThrow(
-                        LauncherSettings.Favorites.APPWIDGET_PROVIDER);
-                final int spanXIndex = c.getColumnIndexOrThrow
-                        (LauncherSettings.Favorites.SPANX);
-                final int spanYIndex = c.getColumnIndexOrThrow(
-                        LauncherSettings.Favorites.SPANY);
-                final int rankIndex = c.getColumnIndexOrThrow(
-                        LauncherSettings.Favorites.RANK);
-                final int optionsIndex = c.getColumnIndexOrThrow(
-                        LauncherSettings.Favorites.OPTIONS);
-                final int sourceContainerIndex = c.getColumnIndexOrThrow(
-                        LauncherSettings.Favorites.APPWIDGET_SOURCE);
-
                 final LongSparseArray<Boolean> unlockedUsers = new LongSparseArray<>();
 
                 mUserManagerState.init(mUserCache, mUserManager);
@@ -418,7 +414,7 @@
                                 .query(ShortcutRequest.PINNED);
                         if (pinnedShortcuts.wasSuccess()) {
                             for (ShortcutInfo shortcut : pinnedShortcuts) {
-                                shortcutKeyToPinnedShortcuts.put(ShortcutKey.fromInfo(shortcut),
+                                mShortcutKeyToPinnedShortcuts.put(ShortcutKey.fromInfo(shortcut),
                                         shortcut);
                             }
                         } else {
@@ -431,440 +427,26 @@
                     unlockedUsers.put(serialNo, userUnlocked);
                 }
 
-                WorkspaceItemInfo info;
-                LauncherAppWidgetInfo appWidgetInfo;
-                LauncherAppWidgetProviderInfo widgetProviderInfo;
-                Intent intent;
-                String targetPkg;
                 List<IconRequestInfo<WorkspaceItemInfo>> iconRequestInfos = new ArrayList<>();
 
                 while (!mStopped && c.moveToNext()) {
-                    try {
-                        if (c.user == null) {
-                            // User has been deleted, remove the item.
-                            c.markDeleted("User has been deleted");
-                            continue;
-                        }
-
-                        boolean allowMissingTarget = false;
-                        switch (c.itemType) {
-                        case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT:
-                        case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION:
-                        case LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT:
-                            intent = c.parseIntent();
-                            if (intent == null) {
-                                c.markDeleted("Invalid or null intent");
-                                continue;
-                            }
-
-                            int disabledState = mUserManagerState.isUserQuiet(c.serialNumber)
-                                    ? WorkspaceItemInfo.FLAG_DISABLED_QUIET_USER : 0;
-                            ComponentName cn = intent.getComponent();
-                            targetPkg = cn == null ? intent.getPackage() : cn.getPackageName();
-
-                            if (TextUtils.isEmpty(targetPkg) &&
-                                    c.itemType != LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT) {
-                                c.markDeleted("Only legacy shortcuts can have null package");
-                                continue;
-                            }
-
-                            // If there is no target package, its an implicit intent
-                            // (legacy shortcut) which is always valid
-                            boolean validTarget = TextUtils.isEmpty(targetPkg) ||
-                                    mLauncherApps.isPackageEnabled(targetPkg, c.user);
-
-                            // If it's a deep shortcut, we'll use pinned shortcuts to restore it
-                            if (cn != null && validTarget && c.itemType
-                                    != LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
-                                // If the apk is present and the shortcut points to a specific
-                                // component.
-
-                                // If the component is already present
-                                if (mLauncherApps.isActivityEnabled(cn, c.user)) {
-                                    // no special handling necessary for this item
-                                    c.markRestored();
-                                } else {
-                                    // Gracefully try to find a fallback activity.
-                                    intent = pmHelper.getAppLaunchIntent(targetPkg, c.user);
-                                    if (intent != null) {
-                                        c.restoreFlag = 0;
-                                        c.updater().put(
-                                                LauncherSettings.Favorites.INTENT,
-                                                intent.toUri(0)).commit();
-                                        cn = intent.getComponent();
-                                    } else {
-                                        c.markDeleted("Unable to find a launch target");
-                                        continue;
-                                    }
-                                }
-                            }
-                            // else if cn == null => can't infer much, leave it
-                            // else if !validPkg => could be restored icon or missing sd-card
-
-                            if (!TextUtils.isEmpty(targetPkg) && !validTarget) {
-                                // Points to a valid app (superset of cn != null) but the apk
-                                // is not available.
-
-                                if (c.restoreFlag != 0) {
-                                    // Package is not yet available but might be
-                                    // installed later.
-                                    FileLog.d(TAG, "package not yet restored: " + targetPkg);
-
-                                    tempPackageKey.update(targetPkg, c.user);
-                                    if (c.hasRestoreFlag(WorkspaceItemInfo.FLAG_RESTORE_STARTED)) {
-                                        // Restore has started once.
-                                    } else if (installingPkgs.containsKey(tempPackageKey)) {
-                                        // App restore has started. Update the flag
-                                        c.restoreFlag |= WorkspaceItemInfo.FLAG_RESTORE_STARTED;
-                                        c.updater().put(LauncherSettings.Favorites.RESTORED,
-                                                c.restoreFlag).commit();
-                                    } else {
-                                        c.markDeleted("Unrestored app removed: " + targetPkg);
-                                        continue;
-                                    }
-                                } else if (pmHelper.isAppOnSdcard(targetPkg, c.user)) {
-                                    // Package is present but not available.
-                                    disabledState |= WorkspaceItemInfo.FLAG_DISABLED_NOT_AVAILABLE;
-                                    // Add the icon on the workspace anyway.
-                                    allowMissingTarget = true;
-                                } else if (!isSdCardReady) {
-                                    // SdCard is not ready yet. Package might get available,
-                                    // once it is ready.
-                                    Log.d(TAG, "Missing pkg, will check later: " + targetPkg);
-                                    mPendingPackages.add(new PackageUserKey(targetPkg, c.user));
-                                    // Add the icon on the workspace anyway.
-                                    allowMissingTarget = true;
-                                } else {
-                                    // Do not wait for external media load anymore.
-                                    c.markDeleted("Invalid package removed: " + targetPkg);
-                                    continue;
-                                }
-                            }
-
-                            if ((c.restoreFlag & WorkspaceItemInfo.FLAG_SUPPORTS_WEB_UI) != 0) {
-                                validTarget = false;
-                            }
-
-                            if (validTarget) {
-                                // The shortcut points to a valid target (either no target
-                                // or something which is ready to be used)
-                                c.markRestored();
-                            }
-
-                            boolean useLowResIcon = !c.isOnWorkspaceOrHotseat();
-
-                            if (c.restoreFlag != 0) {
-                                // Already verified above that user is same as default user
-                                info = c.getRestoredItemInfo(intent);
-                            } else if (c.itemType ==
-                                    LauncherSettings.Favorites.ITEM_TYPE_APPLICATION) {
-                                info = c.getAppShortcutInfo(
-                                        intent,
-                                        allowMissingTarget,
-                                        useLowResIcon,
-                                        !FeatureFlags.ENABLE_BULK_WORKSPACE_ICON_LOADING.get());
-                            } else if (c.itemType ==
-                                    LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
-
-                                ShortcutKey key = ShortcutKey.fromIntent(intent, c.user);
-                                if (unlockedUsers.get(c.serialNumber)) {
-                                    ShortcutInfo pinnedShortcut =
-                                            shortcutKeyToPinnedShortcuts.get(key);
-                                    if (pinnedShortcut == null) {
-                                        // The shortcut is no longer valid.
-                                        c.markDeleted("Pinned shortcut not found");
-                                        continue;
-                                    }
-                                    info = new WorkspaceItemInfo(pinnedShortcut, context);
-                                    // If the pinned deep shortcut is no longer published,
-                                    // use the last saved icon instead of the default.
-                                    mIconCache.getShortcutIcon(info, pinnedShortcut, c::loadIcon);
-
-                                    if (pmHelper.isAppSuspended(
-                                            pinnedShortcut.getPackage(), info.user)) {
-                                        info.runtimeStatusFlags |= FLAG_DISABLED_SUSPENDED;
-                                    }
-                                    intent = info.getIntent();
-                                    allDeepShortcuts.add(pinnedShortcut);
-                                } else {
-                                    // Create a shortcut info in disabled mode for now.
-                                    info = c.loadSimpleWorkspaceItem();
-                                    info.runtimeStatusFlags |= FLAG_DISABLED_LOCKED_USER;
-                                }
-                            } else { // item type == ITEM_TYPE_SHORTCUT
-                                info = c.loadSimpleWorkspaceItem();
-
-                                // Shortcuts are only available on the primary profile
-                                if (!TextUtils.isEmpty(targetPkg)
-                                        && pmHelper.isAppSuspended(targetPkg, c.user)) {
-                                    disabledState |= FLAG_DISABLED_SUSPENDED;
-                                }
-                                info.options = c.getInt(optionsIndex);
-
-                                // App shortcuts that used to be automatically added to Launcher
-                                // didn't always have the correct intent flags set, so do that
-                                // here
-                                if (intent.getAction() != null &&
-                                    intent.getCategories() != null &&
-                                    intent.getAction().equals(Intent.ACTION_MAIN) &&
-                                    intent.getCategories().contains(Intent.CATEGORY_LAUNCHER)) {
-                                    intent.addFlags(
-                                        Intent.FLAG_ACTIVITY_NEW_TASK |
-                                        Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
-                                }
-                            }
-
-                            if (info != null) {
-                                if (info.itemType
-                                        != LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
-                                    // Skip deep shortcuts; their title and icons have already been
-                                    // loaded above.
-                                    iconRequestInfos.add(
-                                            c.createIconRequestInfo(info, useLowResIcon));
-                                }
-
-                                c.applyCommonProperties(info);
-
-                                info.intent = intent;
-                                info.rank = c.getInt(rankIndex);
-                                info.spanX = 1;
-                                info.spanY = 1;
-                                info.runtimeStatusFlags |= disabledState;
-                                if (isSafeMode && !isSystemApp(context, intent)) {
-                                    info.runtimeStatusFlags |= FLAG_DISABLED_SAFEMODE;
-                                }
-                                    LauncherActivityInfo activityInfo = c.getLauncherActivityInfo();
-                                    if (activityInfo != null) {
-                                        info.setProgressLevel(
-                                                PackageManagerHelper
-                                                    .getLoadingProgress(activityInfo),
-                                                PackageInstallInfo.STATUS_INSTALLED_DOWNLOADING);
-                                    }
-
-                                if (c.restoreFlag != 0 && !TextUtils.isEmpty(targetPkg)) {
-                                    tempPackageKey.update(targetPkg, c.user);
-                                    SessionInfo si = installingPkgs.get(tempPackageKey);
-                                        if (si == null) {
-                                            info.runtimeStatusFlags &=
-                                                ~ItemInfoWithIcon.FLAG_INSTALL_SESSION_ACTIVE;
-                                        } else if (activityInfo == null) {
-                                            int installProgress = (int) (si.getProgress() * 100);
-
-                                            info.setProgressLevel(
-                                                    installProgress,
-                                                    PackageInstallInfo.STATUS_INSTALLING);
-                                        }
-                                }
-
-                                c.checkAndAddItem(info, mBgDataModel, logger);
-                            } else {
-                                throw new RuntimeException("Unexpected null WorkspaceItemInfo");
-                            }
-                            break;
-
-                        case LauncherSettings.Favorites.ITEM_TYPE_FOLDER:
-                            FolderInfo folderInfo = mBgDataModel.findOrMakeFolder(c.id);
-                            c.applyCommonProperties(folderInfo);
-
-                            // Do not trim the folder label, as is was set by the user.
-                            folderInfo.title = c.getString(c.titleIndex);
-                            folderInfo.spanX = 1;
-                            folderInfo.spanY = 1;
-                            folderInfo.options = c.getInt(optionsIndex);
-
-                            // no special handling required for restored folders
-                            c.markRestored();
-
-                            c.checkAndAddItem(folderInfo, mBgDataModel, logger);
-                            break;
-
-                        case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET:
-                            if (WidgetsModel.GO_DISABLE_WIDGETS) {
-                                c.markDeleted("Only legacy shortcuts can have null package");
-                                continue;
-                            }
-                            // Follow through
-                        case LauncherSettings.Favorites.ITEM_TYPE_CUSTOM_APPWIDGET:
-                            // Read all Launcher-specific widget details
-                            boolean customWidget = c.itemType ==
-                                LauncherSettings.Favorites.ITEM_TYPE_CUSTOM_APPWIDGET;
-
-                            int appWidgetId = c.getInt(appWidgetIdIndex);
-                            String savedProvider = c.getString(appWidgetProviderIndex);
-                            final ComponentName component;
-
-                            boolean isSearchWidget = (c.getInt(optionsIndex)
-                                    & LauncherAppWidgetInfo.OPTION_SEARCH_WIDGET) != 0;
-                            if (isSearchWidget) {
-                                component  = QsbContainerView.getSearchComponentName(context);
-                                if (component == null) {
-                                    c.markDeleted("Discarding SearchWidget without packagename ");
-                                    continue;
-                                }
-                            } else {
-                                component = ComponentName.unflattenFromString(savedProvider);
-                            }
-                            final boolean isIdValid = !c.hasRestoreFlag(
-                                    LauncherAppWidgetInfo.FLAG_ID_NOT_VALID);
-                            final boolean wasProviderReady = !c.hasRestoreFlag(
-                                    LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY);
-
-                            ComponentKey providerKey = new ComponentKey(component, c.user);
-                            if (!mWidgetProvidersMap.containsKey(providerKey)) {
-                                mWidgetProvidersMap.put(providerKey,
-                                        widgetHelper.findProvider(component, c.user));
-                            }
-                            final AppWidgetProviderInfo provider =
-                                    mWidgetProvidersMap.get(providerKey);
-
-                            final boolean isProviderReady = isValidProvider(provider);
-                            if (!isSafeMode && !customWidget &&
-                                    wasProviderReady && !isProviderReady) {
-                                c.markDeleted(
-                                        "Deleting widget that isn't installed anymore: "
-                                        + provider);
-                            } else {
-                                if (isProviderReady) {
-                                    appWidgetInfo = new LauncherAppWidgetInfo(appWidgetId,
-                                            provider.provider);
-
-                                    // The provider is available. So the widget is either
-                                    // available or not available. We do not need to track
-                                    // any future restore updates.
-                                    int status = c.restoreFlag &
-                                            ~LauncherAppWidgetInfo.FLAG_RESTORE_STARTED &
-                                            ~LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY;
-                                    if (!wasProviderReady) {
-                                        // If provider was not previously ready, update the
-                                        // status and UI flag.
-
-                                        // Id would be valid only if the widget restore broadcast was received.
-                                        if (isIdValid) {
-                                            status |= LauncherAppWidgetInfo.FLAG_UI_NOT_READY;
-                                        }
-                                    }
-                                    appWidgetInfo.restoreStatus = status;
-                                } else {
-                                    Log.v(TAG, "Widget restore pending id=" + c.id
-                                            + " appWidgetId=" + appWidgetId
-                                            + " status =" + c.restoreFlag);
-                                    appWidgetInfo = new LauncherAppWidgetInfo(appWidgetId,
-                                            component);
-                                    appWidgetInfo.restoreStatus = c.restoreFlag;
-
-                                    tempPackageKey.update(component.getPackageName(), c.user);
-                                    SessionInfo si =
-                                            installingPkgs.get(tempPackageKey);
-                                    Integer installProgress = si == null
-                                            ? null
-                                            : (int) (si.getProgress() * 100);
-
-                                    if (c.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_RESTORE_STARTED)) {
-                                        // Restore has started once.
-                                    } else if (installProgress != null) {
-                                        // App restore has started. Update the flag
-                                        appWidgetInfo.restoreStatus |=
-                                                LauncherAppWidgetInfo.FLAG_RESTORE_STARTED;
-                                    } else if (!isSafeMode) {
-                                        c.markDeleted("Unrestored widget removed: " + component);
-                                        continue;
-                                    }
-
-                                    appWidgetInfo.installProgress =
-                                            installProgress == null ? 0 : installProgress;
-                                }
-                                if (appWidgetInfo.hasRestoreFlag(
-                                        LauncherAppWidgetInfo.FLAG_DIRECT_CONFIG)) {
-                                    appWidgetInfo.bindOptions = c.parseIntent();
-                                }
-
-                                c.applyCommonProperties(appWidgetInfo);
-                                appWidgetInfo.spanX = c.getInt(spanXIndex);
-                                appWidgetInfo.spanY = c.getInt(spanYIndex);
-                                appWidgetInfo.options = c.getInt(optionsIndex);
-                                appWidgetInfo.user = c.user;
-                                appWidgetInfo.sourceContainer = c.getInt(sourceContainerIndex);
-
-                                if (appWidgetInfo.spanX <= 0 || appWidgetInfo.spanY <= 0) {
-                                    c.markDeleted("Widget has invalid size: "
-                                            + appWidgetInfo.spanX + "x" + appWidgetInfo.spanY);
-                                    continue;
-                                }
-                                widgetProviderInfo =
-                                        widgetHelper.getLauncherAppWidgetInfo(appWidgetId);
-                                if (widgetProviderInfo != null
-                                        && (appWidgetInfo.spanX < widgetProviderInfo.minSpanX
-                                        || appWidgetInfo.spanY < widgetProviderInfo.minSpanY)) {
-                                    FileLog.d(TAG, "Widget " + widgetProviderInfo.getComponent()
-                                            + " minSizes not meet: span=" + appWidgetInfo.spanX
-                                            + "x" + appWidgetInfo.spanY + " minSpan="
-                                            + widgetProviderInfo.minSpanX + "x"
-                                            + widgetProviderInfo.minSpanY);
-                                    logWidgetInfo(mApp.getInvariantDeviceProfile(),
-                                            widgetProviderInfo);
-                                }
-                                if (!c.isOnWorkspaceOrHotseat()) {
-                                    c.markDeleted("Widget found where container != " +
-                                            "CONTAINER_DESKTOP nor CONTAINER_HOTSEAT - ignoring!");
-                                    continue;
-                                }
-
-                                if (!customWidget) {
-                                    String providerName =
-                                            appWidgetInfo.providerName.flattenToString();
-                                    if (!providerName.equals(savedProvider) ||
-                                            (appWidgetInfo.restoreStatus != c.restoreFlag)) {
-                                        c.updater()
-                                                .put(LauncherSettings.Favorites.APPWIDGET_PROVIDER,
-                                                        providerName)
-                                                .put(LauncherSettings.Favorites.RESTORED,
-                                                        appWidgetInfo.restoreStatus)
-                                                .commit();
-                                    }
-                                }
-
-                                if (appWidgetInfo.restoreStatus !=
-                                        LauncherAppWidgetInfo.RESTORE_COMPLETED) {
-                                    appWidgetInfo.pendingItemInfo = WidgetsModel.newPendingItemInfo(
-                                            mApp.getContext(),
-                                            appWidgetInfo.providerName,
-                                            appWidgetInfo.user);
-                                    mIconCache.getTitleAndIconForApp(
-                                            appWidgetInfo.pendingItemInfo, false);
-                                }
-
-                                c.checkAndAddItem(appWidgetInfo, mBgDataModel);
-                            }
-                            break;
-                        }
-                    } catch (Exception e) {
-                        Log.e(TAG, "Desktop items loading interrupted", e);
-                    }
+                    processWorkspaceItem(c, memoryLogger, installingPkgs, isSdCardReady,
+                            tempPackageKey, widgetHelper, pmHelper,
+                            iconRequestInfos, unlockedUsers, isSafeMode, allDeepShortcuts);
                 }
-                if (FeatureFlags.ENABLE_BULK_WORKSPACE_ICON_LOADING.get()) {
-                    Trace.beginSection("LoadWorkspaceIconsInBulk");
-                    try {
-                        mIconCache.getTitlesAndIconsInBulk(iconRequestInfos);
-                        for (IconRequestInfo<WorkspaceItemInfo> iconRequestInfo :
-                                iconRequestInfos) {
-                            WorkspaceItemInfo wai = iconRequestInfo.itemInfo;
-                            if (mIconCache.isDefaultIcon(wai.bitmap, wai.user)) {
-                                iconRequestInfo.loadWorkspaceIcon(mApp.getContext());
-                            }
-                        }
-                    } finally {
-                        Trace.endSection();
-                    }
-                }
+                tryLoadWorkspaceIconsInBulk(iconRequestInfos);
             } finally {
                 IOUtils.closeSilently(c);
             }
 
-            // Load delegate items
-            mModelDelegate.loadItems(mUserManagerState, shortcutKeyToPinnedShortcuts);
-
-            // Load string cache
-            mModelDelegate.loadStringCache(mBgDataModel.stringCache);
+            if (!FeatureFlags.CHANGE_MODEL_DELEGATE_LOADING_ORDER.get()) {
+                mModelDelegate.loadAndBindWorkspaceItems(mUserManagerState,
+                        mLauncherBinder.mCallbacksList, mShortcutKeyToPinnedShortcuts);
+                mModelDelegate.loadAndBindAllAppsItems(mUserManagerState,
+                        mLauncherBinder.mCallbacksList, mShortcutKeyToPinnedShortcuts);
+                mModelDelegate.loadAndBindOtherItems(mLauncherBinder.mCallbacksList);
+                mModelDelegate.markActive();
+            }
 
             // Break early if we've stopped loading
             if (mStopped) {
@@ -891,7 +473,7 @@
                     info.rank = rank;
 
                     if (info.usingLowResIcon()
-                            && info.itemType == LauncherSettings.Favorites.ITEM_TYPE_APPLICATION
+                            && info.itemType == Favorites.ITEM_TYPE_APPLICATION
                             && verifier.isItemInPreview(info.rank)) {
                         mIconCache.getTitleAndIcon(info, false);
                     }
@@ -902,6 +484,415 @@
         }
     }
 
+    private void processWorkspaceItem(LoaderCursor c,
+            LoaderMemoryLogger memoryLogger,
+            HashMap<PackageUserKey, SessionInfo> installingPkgs,
+            boolean isSdCardReady,
+            PackageUserKey tempPackageKey,
+            WidgetManagerHelper widgetHelper,
+            PackageManagerHelper pmHelper,
+            List<IconRequestInfo<WorkspaceItemInfo>> iconRequestInfos,
+            LongSparseArray<Boolean> unlockedUsers,
+            boolean isSafeMode,
+            List<ShortcutInfo> allDeepShortcuts) {
+
+        try {
+            if (c.user == null) {
+                // User has been deleted, remove the item.
+                c.markDeleted("User has been deleted");
+                return;
+            }
+
+            boolean allowMissingTarget = false;
+            switch (c.itemType) {
+                case Favorites.ITEM_TYPE_SHORTCUT:
+                case Favorites.ITEM_TYPE_APPLICATION:
+                case Favorites.ITEM_TYPE_DEEP_SHORTCUT:
+                    Intent intent = c.parseIntent();
+                    if (intent == null) {
+                        c.markDeleted("Invalid or null intent");
+                        return;
+                    }
+
+                    int disabledState = mUserManagerState.isUserQuiet(c.serialNumber)
+                            ? WorkspaceItemInfo.FLAG_DISABLED_QUIET_USER : 0;
+                    ComponentName cn = intent.getComponent();
+                    String targetPkg = cn == null ? intent.getPackage() : cn.getPackageName();
+
+                    if (TextUtils.isEmpty(targetPkg)
+                            && c.itemType != Favorites.ITEM_TYPE_SHORTCUT) {
+                        c.markDeleted("Only legacy shortcuts can have null package");
+                        return;
+                    }
+
+                    // If there is no target package, it's an implicit intent
+                    // (legacy shortcut) which is always valid
+                    boolean validTarget = TextUtils.isEmpty(targetPkg)
+                            || mLauncherApps.isPackageEnabled(targetPkg, c.user);
+
+                    // If it's a deep shortcut, we'll use pinned shortcuts to restore it
+                    if (cn != null && validTarget && c.itemType
+                            != Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
+                        // If the apk is present and the shortcut points to a specific component.
+
+                        // If the component is already present
+                        if (mLauncherApps.isActivityEnabled(cn, c.user)) {
+                            // no special handling necessary for this item
+                            c.markRestored();
+                        } else {
+                            // Gracefully try to find a fallback activity.
+                            intent = pmHelper.getAppLaunchIntent(targetPkg, c.user);
+                            if (intent != null) {
+                                c.restoreFlag = 0;
+                                c.updater().put(
+                                        Favorites.INTENT,
+                                        intent.toUri(0)).commit();
+                                cn = intent.getComponent();
+                            } else {
+                                c.markDeleted("Unable to find a launch target");
+                                return;
+                            }
+                        }
+                    }
+                    // else if cn == null => can't infer much, leave it
+                    // else if !validPkg => could be restored icon or missing sd-card
+
+                    if (!TextUtils.isEmpty(targetPkg) && !validTarget) {
+                        // Points to a valid app (superset of cn != null) but the apk
+                        // is not available.
+
+                        if (c.restoreFlag != 0) {
+                            // Package is not yet available but might be
+                            // installed later.
+                            FileLog.d(TAG, "package not yet restored: " + targetPkg);
+
+                            tempPackageKey.update(targetPkg, c.user);
+                            if (c.hasRestoreFlag(WorkspaceItemInfo.FLAG_RESTORE_STARTED)) {
+                                // Restore has started once.
+                            } else if (installingPkgs.containsKey(tempPackageKey)) {
+                                // App restore has started. Update the flag
+                                c.restoreFlag |= WorkspaceItemInfo.FLAG_RESTORE_STARTED;
+                                c.updater().put(Favorites.RESTORED,
+                                        c.restoreFlag).commit();
+                            } else {
+                                c.markDeleted("Unrestored app removed: " + targetPkg);
+                                return;
+                            }
+                        } else if (pmHelper.isAppOnSdcard(targetPkg, c.user)) {
+                            // Package is present but not available.
+                            disabledState |= WorkspaceItemInfo.FLAG_DISABLED_NOT_AVAILABLE;
+                            // Add the icon on the workspace anyway.
+                            allowMissingTarget = true;
+                        } else if (!isSdCardReady) {
+                            // SdCard is not ready yet. Package might get available,
+                            // once it is ready.
+                            Log.d(TAG, "Missing pkg, will check later: " + targetPkg);
+                            mPendingPackages.add(new PackageUserKey(targetPkg, c.user));
+                            // Add the icon on the workspace anyway.
+                            allowMissingTarget = true;
+                        } else {
+                            // Do not wait for external media load anymore.
+                            c.markDeleted("Invalid package removed: " + targetPkg);
+                            return;
+                        }
+                    }
+
+                    if ((c.restoreFlag & WorkspaceItemInfo.FLAG_SUPPORTS_WEB_UI) != 0) {
+                        validTarget = false;
+                    }
+
+                    if (validTarget) {
+                        // The shortcut points to a valid target (either no target
+                        // or something which is ready to be used)
+                        c.markRestored();
+                    }
+
+                    boolean useLowResIcon = !c.isOnWorkspaceOrHotseat();
+
+                    WorkspaceItemInfo info;
+                    if (c.restoreFlag != 0) {
+                        // Already verified above that user is same as default user
+                        info = c.getRestoredItemInfo(intent);
+                    } else if (c.itemType == Favorites.ITEM_TYPE_APPLICATION) {
+                        info = c.getAppShortcutInfo(
+                                intent, allowMissingTarget, useLowResIcon, false);
+                    } else if (c.itemType == Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
+                        ShortcutKey key = ShortcutKey.fromIntent(intent, c.user);
+                        if (unlockedUsers.get(c.serialNumber)) {
+                            ShortcutInfo pinnedShortcut = mShortcutKeyToPinnedShortcuts.get(key);
+                            if (pinnedShortcut == null) {
+                                // The shortcut is no longer valid.
+                                c.markDeleted("Pinned shortcut not found");
+                                return;
+                            }
+                            info = new WorkspaceItemInfo(pinnedShortcut, mApp.getContext());
+                            // If the pinned deep shortcut is no longer published,
+                            // use the last saved icon instead of the default.
+                            mIconCache.getShortcutIcon(info, pinnedShortcut, c::loadIcon);
+
+                            if (pmHelper.isAppSuspended(
+                                    pinnedShortcut.getPackage(), info.user)) {
+                                info.runtimeStatusFlags |= FLAG_DISABLED_SUSPENDED;
+                            }
+                            intent = info.getIntent();
+                            allDeepShortcuts.add(pinnedShortcut);
+                        } else {
+                            // Create a shortcut info in disabled mode for now.
+                            info = c.loadSimpleWorkspaceItem();
+                            info.runtimeStatusFlags |= FLAG_DISABLED_LOCKED_USER;
+                        }
+                    } else { // item type == ITEM_TYPE_SHORTCUT
+                        info = c.loadSimpleWorkspaceItem();
+
+                        // Shortcuts are only available on the primary profile
+                        if (!TextUtils.isEmpty(targetPkg)
+                                && pmHelper.isAppSuspended(targetPkg, c.user)) {
+                            disabledState |= FLAG_DISABLED_SUSPENDED;
+                        }
+                        info.options = c.getOptions();
+
+                        // App shortcuts that used to be automatically added to Launcher
+                        // didn't always have the correct intent flags set, so do that here
+                        if (intent.getAction() != null
+                                && intent.getCategories() != null
+                                && intent.getAction().equals(Intent.ACTION_MAIN)
+                                && intent.getCategories().contains(Intent.CATEGORY_LAUNCHER)) {
+                            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+                                    | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
+                        }
+                    }
+
+                    if (info != null) {
+                        if (info.itemType != Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
+                            // Skip deep shortcuts; their title and icons have already been
+                            // loaded above.
+                            iconRequestInfos.add(c.createIconRequestInfo(info, useLowResIcon));
+                        }
+
+                        c.applyCommonProperties(info);
+
+                        info.intent = intent;
+                        info.rank = c.getRank();
+                        info.spanX = 1;
+                        info.spanY = 1;
+                        info.runtimeStatusFlags |= disabledState;
+                        if (isSafeMode && !isSystemApp(mApp.getContext(), intent)) {
+                            info.runtimeStatusFlags |= FLAG_DISABLED_SAFEMODE;
+                        }
+                        LauncherActivityInfo activityInfo = c.getLauncherActivityInfo();
+                        if (activityInfo != null) {
+                            info.setProgressLevel(
+                                    PackageManagerHelper.getLoadingProgress(activityInfo),
+                                    PackageInstallInfo.STATUS_INSTALLED_DOWNLOADING);
+                        }
+
+                        if (c.restoreFlag != 0 && !TextUtils.isEmpty(targetPkg)) {
+                            tempPackageKey.update(targetPkg, c.user);
+                            SessionInfo si = installingPkgs.get(tempPackageKey);
+                            if (si == null) {
+                                info.runtimeStatusFlags
+                                        &= ~ItemInfoWithIcon.FLAG_INSTALL_SESSION_ACTIVE;
+                            } else if (activityInfo == null) {
+                                int installProgress = (int) (si.getProgress() * 100);
+
+                                info.setProgressLevel(installProgress,
+                                        PackageInstallInfo.STATUS_INSTALLING);
+                            }
+                        }
+
+                        c.checkAndAddItem(info, mBgDataModel, memoryLogger);
+                    } else {
+                        throw new RuntimeException("Unexpected null WorkspaceItemInfo");
+                    }
+                    break;
+
+                case Favorites.ITEM_TYPE_FOLDER:
+                    FolderInfo folderInfo = mBgDataModel.findOrMakeFolder(c.id);
+                    c.applyCommonProperties(folderInfo);
+
+                    // Do not trim the folder label, as is was set by the user.
+                    folderInfo.title = c.getString(c.mTitleIndex);
+                    folderInfo.spanX = 1;
+                    folderInfo.spanY = 1;
+                    folderInfo.options = c.getOptions();
+
+                    // no special handling required for restored folders
+                    c.markRestored();
+
+                    c.checkAndAddItem(folderInfo, mBgDataModel, memoryLogger);
+                    break;
+
+                case Favorites.ITEM_TYPE_APPWIDGET:
+                    if (WidgetsModel.GO_DISABLE_WIDGETS) {
+                        c.markDeleted("Only legacy shortcuts can have null package");
+                        return;
+                    }
+                    // Follow through
+                case Favorites.ITEM_TYPE_CUSTOM_APPWIDGET:
+                    // Read all Launcher-specific widget details
+                    boolean customWidget = c.itemType
+                            == Favorites.ITEM_TYPE_CUSTOM_APPWIDGET;
+
+                    int appWidgetId = c.getAppWidgetId();
+                    String savedProvider = c.getAppWidgetProvider();
+                    final ComponentName component;
+
+                    if ((c.getOptions() & LauncherAppWidgetInfo.OPTION_SEARCH_WIDGET) != 0) {
+                        component  = QsbContainerView.getSearchComponentName(mApp.getContext());
+                        if (component == null) {
+                            c.markDeleted("Discarding SearchWidget without packagename ");
+                            return;
+                        }
+                    } else {
+                        component = ComponentName.unflattenFromString(savedProvider);
+                    }
+                    final boolean isIdValid =
+                            !c.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_ID_NOT_VALID);
+                    final boolean wasProviderReady =
+                            !c.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY);
+
+                    ComponentKey providerKey = new ComponentKey(component, c.user);
+                    if (!mWidgetProvidersMap.containsKey(providerKey)) {
+                        mWidgetProvidersMap.put(providerKey,
+                                widgetHelper.findProvider(component, c.user));
+                    }
+                    final AppWidgetProviderInfo provider = mWidgetProvidersMap.get(providerKey);
+
+                    final boolean isProviderReady = isValidProvider(provider);
+                    if (!isSafeMode && !customWidget && wasProviderReady && !isProviderReady) {
+                        c.markDeleted("Deleting widget that isn't installed anymore: " + provider);
+                    } else {
+                        LauncherAppWidgetInfo appWidgetInfo;
+                        if (isProviderReady) {
+                            appWidgetInfo =
+                                    new LauncherAppWidgetInfo(appWidgetId, provider.provider);
+
+                            // The provider is available. So the widget is either
+                            // available or not available. We do not need to track
+                            // any future restore updates.
+                            int status = c.restoreFlag
+                                    & ~LauncherAppWidgetInfo.FLAG_RESTORE_STARTED
+                                    & ~LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY;
+                            if (!wasProviderReady) {
+                                // If provider was not previously ready, update status and UI flag.
+
+                                // Id would be valid only if the widget restore broadcast received.
+                                if (isIdValid) {
+                                    status |= LauncherAppWidgetInfo.FLAG_UI_NOT_READY;
+                                }
+                            }
+                            appWidgetInfo.restoreStatus = status;
+                        } else {
+                            Log.v(TAG, "Widget restore pending id=" + c.id
+                                    + " appWidgetId=" + appWidgetId
+                                    + " status =" + c.restoreFlag);
+                            appWidgetInfo = new LauncherAppWidgetInfo(appWidgetId, component);
+                            appWidgetInfo.restoreStatus = c.restoreFlag;
+
+                            tempPackageKey.update(component.getPackageName(), c.user);
+                            SessionInfo si = installingPkgs.get(tempPackageKey);
+                            Integer installProgress = si == null
+                                    ? null
+                                    : (int) (si.getProgress() * 100);
+
+                            if (c.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_RESTORE_STARTED)) {
+                                // Restore has started once.
+                            } else if (installProgress != null) {
+                                // App restore has started. Update the flag
+                                appWidgetInfo.restoreStatus
+                                        |= LauncherAppWidgetInfo.FLAG_RESTORE_STARTED;
+                            } else if (!isSafeMode) {
+                                c.markDeleted("Unrestored widget removed: " + component);
+                                return;
+                            }
+
+                            appWidgetInfo.installProgress =
+                                    installProgress == null ? 0 : installProgress;
+                        }
+                        if (appWidgetInfo.hasRestoreFlag(
+                                LauncherAppWidgetInfo.FLAG_DIRECT_CONFIG)) {
+                            appWidgetInfo.bindOptions = c.parseIntent();
+                        }
+
+                        c.applyCommonProperties(appWidgetInfo);
+                        appWidgetInfo.spanX = c.getSpanX();
+                        appWidgetInfo.spanY = c.getSpanY();
+                        appWidgetInfo.options = c.getOptions();
+                        appWidgetInfo.user = c.user;
+                        appWidgetInfo.sourceContainer = c.getAppWidgetSource();
+
+                        if (appWidgetInfo.spanX <= 0 || appWidgetInfo.spanY <= 0) {
+                            c.markDeleted("Widget has invalid size: "
+                                    + appWidgetInfo.spanX + "x" + appWidgetInfo.spanY);
+                            return;
+                        }
+                        LauncherAppWidgetProviderInfo widgetProviderInfo =
+                                widgetHelper.getLauncherAppWidgetInfo(appWidgetId);
+                        if (widgetProviderInfo != null
+                                && (appWidgetInfo.spanX < widgetProviderInfo.minSpanX
+                                || appWidgetInfo.spanY < widgetProviderInfo.minSpanY)) {
+                            FileLog.d(TAG, "Widget " + widgetProviderInfo.getComponent()
+                                    + " minSizes not meet: span=" + appWidgetInfo.spanX
+                                    + "x" + appWidgetInfo.spanY + " minSpan="
+                                    + widgetProviderInfo.minSpanX + "x"
+                                    + widgetProviderInfo.minSpanY);
+                            logWidgetInfo(mApp.getInvariantDeviceProfile(),
+                                    widgetProviderInfo);
+                        }
+                        if (!c.isOnWorkspaceOrHotseat()) {
+                            c.markDeleted("Widget found where container != CONTAINER_DESKTOP"
+                                    + "nor CONTAINER_HOTSEAT - ignoring!");
+                            return;
+                        }
+
+                        if (!customWidget) {
+                            String providerName = appWidgetInfo.providerName.flattenToString();
+                            if (!providerName.equals(savedProvider)
+                                    || (appWidgetInfo.restoreStatus != c.restoreFlag)) {
+                                c.updater()
+                                        .put(Favorites.APPWIDGET_PROVIDER,
+                                                providerName)
+                                        .put(Favorites.RESTORED,
+                                                appWidgetInfo.restoreStatus)
+                                        .commit();
+                            }
+                        }
+
+                        if (appWidgetInfo.restoreStatus
+                                != LauncherAppWidgetInfo.RESTORE_COMPLETED) {
+                            appWidgetInfo.pendingItemInfo = WidgetsModel.newPendingItemInfo(
+                                    mApp.getContext(),
+                                    appWidgetInfo.providerName,
+                                    appWidgetInfo.user);
+                            mIconCache.getTitleAndIconForApp(
+                                    appWidgetInfo.pendingItemInfo, false);
+                        }
+
+                        c.checkAndAddItem(appWidgetInfo, mBgDataModel);
+                    }
+                    break;
+            }
+        } catch (Exception e) {
+            Log.e(TAG, "Desktop items loading interrupted", e);
+        }
+    }
+
+    private void tryLoadWorkspaceIconsInBulk(
+            List<IconRequestInfo<WorkspaceItemInfo>> iconRequestInfos) {
+        Trace.beginSection("LoadWorkspaceIconsInBulk");
+        try {
+            mIconCache.getTitlesAndIconsInBulk(iconRequestInfos);
+            for (IconRequestInfo<WorkspaceItemInfo> iconRequestInfo : iconRequestInfos) {
+                WorkspaceItemInfo wai = iconRequestInfo.itemInfo;
+                if (mIconCache.isDefaultIcon(wai.bitmap, wai.user)) {
+                    iconRequestInfo.loadWorkspaceIcon(mApp.getContext());
+                }
+            }
+        } finally {
+            Trace.endSection();
+        }
+    }
+
     private void setIgnorePackages(IconCacheUpdateHandler updateHandler) {
         // Ignore packages which have a promise icon.
         synchronized (mBgDataModel) {
@@ -923,15 +914,12 @@
         }
     }
 
-    private void sanitizeData() {
-        Context context = mApp.getContext();
-        ContentResolver contentResolver = context.getContentResolver();
-        if (mItemsDeleted) {
+    private void sanitizeFolders(boolean itemsDeleted) {
+        if (itemsDeleted) {
             // Remove any empty folder
-            int[] deletedFolderIds = LauncherSettings.Settings
-                    .call(contentResolver,
-                            LauncherSettings.Settings.METHOD_DELETE_EMPTY_FOLDERS)
-                    .getIntArray(LauncherSettings.Settings.EXTRA_VALUE);
+            int[] deletedFolderIds = Settings.call(mApp.getContext().getContentResolver(),
+                            Settings.METHOD_DELETE_EMPTY_FOLDERS)
+                    .getIntArray(Settings.EXTRA_VALUE);
             synchronized (mBgDataModel) {
                 for (int folderId : deletedFolderIds) {
                     mBgDataModel.workspaceItems.remove(mBgDataModel.folders.get(folderId));
@@ -939,11 +927,16 @@
                     mBgDataModel.itemsIdMap.remove(folderId);
                 }
             }
-
         }
+    }
+
+    private void sanitizeWidgetsShortcutsAndPackages() {
+        Context context = mApp.getContext();
+        ContentResolver contentResolver = context.getContentResolver();
+
         // Remove any ghost widgets
-        LauncherSettings.Settings.call(contentResolver,
-                LauncherSettings.Settings.METHOD_REMOVE_GHOST_WIDGETS);
+        Settings.call(contentResolver,
+                Settings.METHOD_REMOVE_GHOST_WIDGETS);
 
         // Update pinned state of model shortcuts
         mBgDataModel.updateShortcutPinnedState(context);
@@ -958,6 +951,7 @@
     }
 
     private List<LauncherActivityInfo> loadAllApps() {
+        testLogD(WORK_TAB_MISSING, "loadingAllApps");
         final List<UserHandle> profiles = mUserCache.getUserProfiles();
         List<LauncherActivityInfo> allActivityList = new ArrayList<>();
         // Clear the list of apps
@@ -981,7 +975,7 @@
                 iconRequestInfos.add(new IconRequestInfo<>(
                         appInfo, app, /* useLowResIcon= */ false));
                 mBgAllAppsList.add(
-                        appInfo, app, !FeatureFlags.ENABLE_BULK_ALL_APPS_ICON_LOADING.get());
+                        appInfo, app, false);
             }
             allActivityList.addAll(apps);
         }
@@ -994,7 +988,7 @@
                 AppInfo promiseAppInfo = mBgAllAppsList.addPromiseApp(
                         mApp.getContext(),
                         PackageInstallInfo.fromInstallingState(info),
-                        !FeatureFlags.ENABLE_BULK_ALL_APPS_ICON_LOADING.get());
+                        false);
 
                 if (promiseAppInfo != null) {
                     iconRequestInfos.add(new IconRequestInfo<>(
@@ -1005,15 +999,13 @@
             }
         }
 
-        if (FeatureFlags.ENABLE_BULK_ALL_APPS_ICON_LOADING.get()) {
-            Trace.beginSection("LoadAllAppsIconsInBulk");
-            try {
-                mIconCache.getTitlesAndIconsInBulk(iconRequestInfos);
-                iconRequestInfos.forEach(iconRequestInfo ->
-                        mBgAllAppsList.updateSectionName(iconRequestInfo.itemInfo));
-            } finally {
-                Trace.endSection();
-            }
+        Trace.beginSection("LoadAllAppsIconsInBulk");
+        try {
+            mIconCache.getTitlesAndIconsInBulk(iconRequestInfos);
+            iconRequestInfos.forEach(iconRequestInfo ->
+                    mBgAllAppsList.updateSectionName(iconRequestInfo.itemInfo));
+        } finally {
+            Trace.endSection();
         }
 
         mBgAllAppsList.setFlags(FLAG_QUIET_MODE_ENABLED,
@@ -1113,8 +1105,7 @@
         FileLog.d(TAG, widgetDimension.toString());
     }
 
-    private static void logASplit(final TimingLogger logger, final String label) {
-        logger.addSplit(label);
+    private static void logASplit(String label) {
         if (DEBUG) {
             Log.d(TAG, label);
         }
diff --git a/src/com/android/launcher3/model/ModelDbController.java b/src/com/android/launcher3/model/ModelDbController.java
new file mode 100644
index 0000000..f0e5ef6
--- /dev/null
+++ b/src/com/android/launcher3/model/ModelDbController.java
@@ -0,0 +1,516 @@
+/*
+ * 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.launcher3.model;
+
+import static android.util.Base64.NO_PADDING;
+import static android.util.Base64.NO_WRAP;
+
+import static com.android.launcher3.DefaultLayoutParser.RES_PARTNER_DEFAULT_LAYOUT;
+import static com.android.launcher3.LauncherSettings.Favorites.addTableToDb;
+import static com.android.launcher3.LauncherSettings.Settings.LAYOUT_DIGEST_KEY;
+import static com.android.launcher3.LauncherSettings.Settings.LAYOUT_DIGEST_LABEL;
+import static com.android.launcher3.LauncherSettings.Settings.LAYOUT_DIGEST_TAG;
+import static com.android.launcher3.provider.LauncherDbUtils.tableExists;
+
+import android.app.blob.BlobHandle;
+import android.app.blob.BlobStoreManager;
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.pm.ProviderInfo;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.database.SQLException;
+import android.database.sqlite.SQLiteDatabase;
+import android.net.Uri;
+import android.os.Binder;
+import android.os.Bundle;
+import android.os.ParcelFileDescriptor;
+import android.os.Process;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.provider.Settings;
+import android.text.TextUtils;
+import android.util.Base64;
+import android.util.Log;
+import android.util.Xml;
+
+import androidx.annotation.WorkerThread;
+
+import com.android.launcher3.AutoInstallsLayout;
+import com.android.launcher3.AutoInstallsLayout.SourceResources;
+import com.android.launcher3.ConstantItem;
+import com.android.launcher3.DefaultLayoutParser;
+import com.android.launcher3.InvariantDeviceProfile;
+import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.LauncherFiles;
+import com.android.launcher3.LauncherPrefs;
+import com.android.launcher3.LauncherSettings;
+import com.android.launcher3.LauncherSettings.Favorites;
+import com.android.launcher3.Utilities;
+import com.android.launcher3.pm.UserCache;
+import com.android.launcher3.provider.LauncherDbUtils;
+import com.android.launcher3.provider.LauncherDbUtils.SQLiteTransaction;
+import com.android.launcher3.provider.RestoreDbTask;
+import com.android.launcher3.util.IOUtils;
+import com.android.launcher3.util.IntArray;
+import com.android.launcher3.util.MainThreadInitializedObject.SandboxContext;
+import com.android.launcher3.util.Partner;
+import com.android.launcher3.widget.LauncherWidgetHolder;
+
+import org.xmlpull.v1.XmlPullParser;
+
+import java.io.InputStream;
+import java.io.StringReader;
+
+/**
+ * Utility class which maintains an instance of Launcher database and provides utility methods
+ * around it.
+ */
+public class ModelDbController {
+    private static final String TAG = "LauncherProvider";
+
+    private static final String EMPTY_DATABASE_CREATED = "EMPTY_DATABASE_CREATED";
+
+    protected DatabaseHelper mOpenHelper;
+
+    private final Context mContext;
+
+    public ModelDbController(Context context) {
+        mContext = context;
+    }
+
+    private synchronized void createDbIfNotExists() {
+        if (mOpenHelper == null) {
+            mOpenHelper = createDatabaseHelper(false /* forMigration */);
+            RestoreDbTask.restoreIfNeeded(mContext, this);
+        }
+    }
+
+    protected DatabaseHelper createDatabaseHelper(boolean forMigration) {
+        boolean isSandbox = mContext instanceof SandboxContext;
+        String dbName = isSandbox ? null : InvariantDeviceProfile.INSTANCE.get(mContext).dbFile;
+
+        // Set the flag for empty DB
+        Runnable onEmptyDbCreateCallback = forMigration ? () -> { }
+                : () -> LauncherPrefs.get(mContext).putSync(getEmptyDbCreatedKey(dbName).to(true));
+
+        DatabaseHelper databaseHelper = new DatabaseHelper(mContext, dbName,
+                this::getSerialNumberForUser, onEmptyDbCreateCallback);
+        // Table creation sometimes fails silently, which leads to a crash loop.
+        // This way, we will try to create a table every time after crash, so the device
+        // would eventually be able to recover.
+        if (!tableExists(databaseHelper.getReadableDatabase(), Favorites.TABLE_NAME)) {
+            Log.e(TAG, "Tables are missing after onCreate has been called. Trying to recreate");
+            // This operation is a no-op if the table already exists.
+            addTableToDb(databaseHelper.getWritableDatabase(),
+                    getSerialNumberForUser(Process.myUserHandle()),
+                    true /* optional */);
+        }
+        databaseHelper.mHotseatRestoreTableExists = tableExists(
+                databaseHelper.getReadableDatabase(), Favorites.HYBRID_HOTSEAT_BACKUP_TABLE);
+
+        databaseHelper.initIds();
+        return databaseHelper;
+    }
+
+    /**
+     * Refer {@link SQLiteDatabase#query}
+     */
+    @WorkerThread
+    public Cursor query(String table, String[] projection, String selection,
+            String[] selectionArgs, String sortOrder) {
+        createDbIfNotExists();
+        SQLiteDatabase db = mOpenHelper.getWritableDatabase();
+        Cursor result = db.query(
+                table, projection, selection, selectionArgs, null, null, sortOrder);
+
+        final Bundle extra = new Bundle();
+        extra.putString(LauncherSettings.Settings.EXTRA_DB_NAME, mOpenHelper.getDatabaseName());
+        result.setExtras(extra);
+        return result;
+    }
+
+    /**
+     * Refer {@link SQLiteDatabase#insert(String, String, ContentValues)}
+     */
+    @WorkerThread
+    public int insert(String table, ContentValues initialValues) {
+        createDbIfNotExists();
+
+        SQLiteDatabase db = mOpenHelper.getWritableDatabase();
+        addModifiedTime(initialValues);
+        int rowId = mOpenHelper.dbInsertAndCheck(db, table, initialValues);
+        if (rowId >= 0) {
+            onAddOrDeleteOp(db);
+        }
+        return rowId;
+    }
+
+    /**
+     * Similar to insert but for adding multiple values in a transaction.
+     */
+    @WorkerThread
+    public int bulkInsert(String table, ContentValues[] values) {
+        createDbIfNotExists();
+
+        SQLiteDatabase db = mOpenHelper.getWritableDatabase();
+        try (SQLiteTransaction t = new SQLiteTransaction(db)) {
+            int numValues = values.length;
+            for (int i = 0; i < numValues; i++) {
+                addModifiedTime(values[i]);
+                if (mOpenHelper.dbInsertAndCheck(db, table, values[i]) < 0) {
+                    return 0;
+                }
+            }
+            onAddOrDeleteOp(db);
+            t.commit();
+        }
+        return values.length;
+    }
+
+    /**
+     * Refer {@link SQLiteDatabase#delete(String, String, String[])}
+     */
+    @WorkerThread
+    public int delete(String table, String selection, String[] selectionArgs) {
+        createDbIfNotExists();
+        SQLiteDatabase db = mOpenHelper.getWritableDatabase();
+
+        if (Binder.getCallingPid() != Process.myPid()
+                && Favorites.TABLE_NAME.equalsIgnoreCase(table)) {
+            mOpenHelper.removeGhostWidgets(mOpenHelper.getWritableDatabase());
+        }
+        int count = db.delete(table, selection, selectionArgs);
+        if (count > 0) {
+            onAddOrDeleteOp(db);
+        }
+        return count;
+    }
+
+    /**
+     * Refer {@link SQLiteDatabase#update(String, ContentValues, String, String[])}
+     */
+    @WorkerThread
+    public int update(String table, ContentValues values,
+            String selection, String[] selectionArgs) {
+        createDbIfNotExists();
+
+        addModifiedTime(values);
+        SQLiteDatabase db = mOpenHelper.getWritableDatabase();
+        int count = db.update(table, values, selection, selectionArgs);
+        return count;
+    }
+
+    /**
+     * Clears a previously set flag corresponding to empty db creation
+     */
+    @WorkerThread
+    public void clearEmptyDbFlag() {
+        createDbIfNotExists();
+        clearFlagEmptyDbCreated();
+    }
+
+    /**
+     * Generates an id to be used for new item in the favorites table
+     */
+    @WorkerThread
+    public int generateNewItemId() {
+        createDbIfNotExists();
+        return mOpenHelper.generateNewItemId();
+    }
+
+    /**
+     * Generates an id to be used for new workspace screen
+     */
+    @WorkerThread
+    public int getNewScreenId() {
+        createDbIfNotExists();
+        return mOpenHelper.getNewScreenId();
+    }
+
+    /**
+     * Creates an empty DB clearing all existing data
+     */
+    @WorkerThread
+    public void createEmptyDB() {
+        createDbIfNotExists();
+        mOpenHelper.createEmptyDB(mOpenHelper.getWritableDatabase());
+    }
+
+    /**
+     * Removes any widget which are present in the framework, but not in out internal DB
+     */
+    @WorkerThread
+    public void removeGhostWidgets() {
+        createDbIfNotExists();
+        mOpenHelper.removeGhostWidgets(mOpenHelper.getWritableDatabase());
+    }
+
+    /**
+     * Returns a new {@link SQLiteTransaction}
+     */
+    @WorkerThread
+    public SQLiteTransaction newTransaction() {
+        createDbIfNotExists();
+        return new SQLiteTransaction(mOpenHelper.getWritableDatabase());
+    }
+
+    /**
+     * Refreshes the internal state corresponding to presence of hotseat table
+     */
+    @WorkerThread
+    public void refreshHotseatRestoreTable() {
+        createDbIfNotExists();
+        mOpenHelper.mHotseatRestoreTableExists = tableExists(
+                mOpenHelper.getReadableDatabase(), Favorites.HYBRID_HOTSEAT_BACKUP_TABLE);
+    }
+
+    /**
+     * Migrates the DB if needed, and returns false if the migration failed
+     * and DB needs to be cleared.
+     * @return true if migration was success or ignored, false if migration failed
+     * and the DB should be reset.
+     */
+    public boolean migrateGridIfNeeded() {
+        createDbIfNotExists();
+        InvariantDeviceProfile idp = LauncherAppState.getIDP(mContext);
+        if (!GridSizeMigrationUtil.needsToMigrate(mContext, idp)) {
+            return true;
+        }
+        String targetDbName = new DeviceGridState(idp).getDbFile();
+        if (TextUtils.equals(targetDbName, mOpenHelper.getDatabaseName())) {
+            Log.e(TAG, "migrateGridIfNeeded - target db is same as current: " + targetDbName);
+            return false;
+        }
+        DatabaseHelper oldHelper = mOpenHelper;
+        mOpenHelper = (mContext instanceof SandboxContext) ? oldHelper
+                : createDatabaseHelper(true /* forMigration */);
+        try {
+            return GridSizeMigrationUtil.migrateGridIfNeeded(mContext, idp, mOpenHelper,
+                   oldHelper.getWritableDatabase());
+        } finally {
+            if (mOpenHelper != oldHelper) {
+                oldHelper.close();
+            }
+        }
+    }
+
+    /**
+     * Returns the underlying model database
+     */
+    public SQLiteDatabase getDb() {
+        createDbIfNotExists();
+        return mOpenHelper.getWritableDatabase();
+    }
+
+    private void onAddOrDeleteOp(SQLiteDatabase db) {
+        mOpenHelper.onAddOrDeleteOp(db);
+    }
+
+    /**
+     * Deletes any empty folder from the DB.
+     * @return Ids of deleted folders.
+     */
+    @WorkerThread
+    public IntArray deleteEmptyFolders() {
+        createDbIfNotExists();
+
+        SQLiteDatabase db = mOpenHelper.getWritableDatabase();
+        try (SQLiteTransaction t = new SQLiteTransaction(db)) {
+            // Select folders whose id do not match any container value.
+            String selection = LauncherSettings.Favorites.ITEM_TYPE + " = "
+                    + LauncherSettings.Favorites.ITEM_TYPE_FOLDER + " AND "
+                    + LauncherSettings.Favorites._ID +  " NOT IN (SELECT "
+                    + LauncherSettings.Favorites.CONTAINER + " FROM "
+                    + Favorites.TABLE_NAME + ")";
+
+            IntArray folderIds = LauncherDbUtils.queryIntArray(false, db, Favorites.TABLE_NAME,
+                    Favorites._ID, selection, null, null);
+            if (!folderIds.isEmpty()) {
+                db.delete(Favorites.TABLE_NAME, Utilities.createDbSelectionQuery(
+                        LauncherSettings.Favorites._ID, folderIds), null);
+            }
+            t.commit();
+            return folderIds;
+        } catch (SQLException ex) {
+            Log.e(TAG, ex.getMessage(), ex);
+            return new IntArray();
+        }
+    }
+
+    private static void addModifiedTime(ContentValues values) {
+        values.put(LauncherSettings.Favorites.MODIFIED, System.currentTimeMillis());
+    }
+
+    private void clearFlagEmptyDbCreated() {
+        LauncherPrefs.get(mContext).removeSync(getEmptyDbCreatedKey(mOpenHelper.getDatabaseName()));
+    }
+
+    /**
+     * Loads the default workspace based on the following priority scheme:
+     *   1) From the app restrictions
+     *   2) From a package provided by play store
+     *   3) From a partner configuration APK, already in the system image
+     *   4) The default configuration for the particular device
+     */
+    @WorkerThread
+    public synchronized void loadDefaultFavoritesIfNecessary() {
+        createDbIfNotExists();
+
+        if (LauncherPrefs.get(mContext).get(getEmptyDbCreatedKey(mOpenHelper.getDatabaseName()))) {
+            Log.d(TAG, "loading default workspace");
+
+            LauncherWidgetHolder widgetHolder = mOpenHelper.newLauncherWidgetHolder();
+            try {
+                AutoInstallsLayout loader = createWorkspaceLoaderFromAppRestriction(widgetHolder);
+                if (loader == null) {
+                    loader = AutoInstallsLayout.get(mContext, widgetHolder, mOpenHelper);
+                }
+                if (loader == null) {
+                    final Partner partner = Partner.get(mContext.getPackageManager());
+                    if (partner != null) {
+                        int workspaceResId = partner.getXmlResId(RES_PARTNER_DEFAULT_LAYOUT);
+                        if (workspaceResId != 0) {
+                            loader = new DefaultLayoutParser(mContext, widgetHolder,
+                                    mOpenHelper, partner.getResources(), workspaceResId);
+                        }
+                    }
+                }
+
+                final boolean usingExternallyProvidedLayout = loader != null;
+                if (loader == null) {
+                    loader = getDefaultLayoutParser(widgetHolder);
+                }
+
+                // There might be some partially restored DB items, due to buggy restore logic in
+                // previous versions of launcher.
+                mOpenHelper.createEmptyDB(mOpenHelper.getWritableDatabase());
+                // Populate favorites table with initial favorites
+                if ((mOpenHelper.loadFavorites(mOpenHelper.getWritableDatabase(), loader) <= 0)
+                        && usingExternallyProvidedLayout) {
+                    // Unable to load external layout. Cleanup and load the internal layout.
+                    mOpenHelper.createEmptyDB(mOpenHelper.getWritableDatabase());
+                    mOpenHelper.loadFavorites(mOpenHelper.getWritableDatabase(),
+                            getDefaultLayoutParser(widgetHolder));
+                }
+                clearFlagEmptyDbCreated();
+            } finally {
+                widgetHolder.destroy();
+            }
+        }
+    }
+
+    /**
+     * Creates workspace loader from an XML resource listed in the app restrictions.
+     *
+     * @return the loader if the restrictions are set and the resource exists; null otherwise.
+     */
+    private AutoInstallsLayout createWorkspaceLoaderFromAppRestriction(
+            LauncherWidgetHolder widgetHolder) {
+        ContentResolver cr = mContext.getContentResolver();
+        String blobHandlerDigest = Settings.Secure.getString(cr, LAYOUT_DIGEST_KEY);
+        if (Utilities.ATLEAST_R && !TextUtils.isEmpty(blobHandlerDigest)) {
+            BlobStoreManager blobManager = mContext.getSystemService(BlobStoreManager.class);
+            try (InputStream in = new ParcelFileDescriptor.AutoCloseInputStream(
+                    blobManager.openBlob(BlobHandle.createWithSha256(
+                            Base64.decode(blobHandlerDigest, NO_WRAP | NO_PADDING),
+                            LAYOUT_DIGEST_LABEL, 0, LAYOUT_DIGEST_TAG)))) {
+                return getAutoInstallsLayoutFromIS(in, widgetHolder, new SourceResources() { });
+            } catch (Exception e) {
+                Log.e(TAG, "Error getting layout from blob handle" , e);
+                return null;
+            }
+        }
+
+        String authority = Settings.Secure.getString(cr, "launcher3.layout.provider");
+        if (TextUtils.isEmpty(authority)) {
+            return null;
+        }
+
+        PackageManager pm = mContext.getPackageManager();
+        ProviderInfo pi = pm.resolveContentProvider(authority, 0);
+        if (pi == null) {
+            Log.e(TAG, "No provider found for authority " + authority);
+            return null;
+        }
+        Uri uri = getLayoutUri(authority, mContext);
+        try (InputStream in = cr.openInputStream(uri)) {
+            Log.d(TAG, "Loading layout from " + authority);
+
+            Resources res = pm.getResourcesForApplication(pi.applicationInfo);
+            return getAutoInstallsLayoutFromIS(in, widgetHolder, SourceResources.wrap(res));
+        } catch (Exception e) {
+            Log.e(TAG, "Error getting layout stream from: " + authority , e);
+            return null;
+        }
+    }
+
+    private AutoInstallsLayout getAutoInstallsLayoutFromIS(InputStream in,
+            LauncherWidgetHolder widgetHolder, SourceResources res) throws Exception {
+        // Read the full xml so that we fail early in case of any IO error.
+        String layout = new String(IOUtils.toByteArray(in));
+        XmlPullParser parser = Xml.newPullParser();
+        parser.setInput(new StringReader(layout));
+
+        return new AutoInstallsLayout(mContext, widgetHolder, mOpenHelper, res,
+                () -> parser, AutoInstallsLayout.TAG_WORKSPACE);
+    }
+
+    private static Uri getLayoutUri(String authority, Context ctx) {
+        InvariantDeviceProfile grid = LauncherAppState.getIDP(ctx);
+        return new Uri.Builder().scheme("content").authority(authority).path("launcher_layout")
+                .appendQueryParameter("version", "1")
+                .appendQueryParameter("gridWidth", Integer.toString(grid.numColumns))
+                .appendQueryParameter("gridHeight", Integer.toString(grid.numRows))
+                .appendQueryParameter("hotseatSize", Integer.toString(grid.numDatabaseHotseatIcons))
+                .build();
+    }
+
+    private DefaultLayoutParser getDefaultLayoutParser(LauncherWidgetHolder widgetHolder) {
+        InvariantDeviceProfile idp = LauncherAppState.getIDP(mContext);
+        int defaultLayout = idp.demoModeLayoutId != 0
+                && mContext.getSystemService(UserManager.class).isDemoUser()
+                ? idp.demoModeLayoutId : idp.defaultLayoutId;
+
+        return new DefaultLayoutParser(mContext, widgetHolder,
+                mOpenHelper, mContext.getResources(), defaultLayout);
+    }
+
+    /**
+     * Re-composite given key in respect to database. If the current db is
+     * {@link LauncherFiles#LAUNCHER_DB}, return the key as-is. Otherwise append the db name to
+     * given key. e.g. consider key="EMPTY_DATABASE_CREATED", dbName="minimal.db", the returning
+     * string will be "EMPTY_DATABASE_CREATED@minimal.db".
+     */
+    private ConstantItem<Boolean> getEmptyDbCreatedKey(String dbName) {
+        if (mContext instanceof SandboxContext) {
+            return LauncherPrefs.nonRestorableItem(EMPTY_DATABASE_CREATED,
+                    false /* default value */, false /* boot aware */);
+        }
+        String key = TextUtils.equals(dbName, LauncherFiles.LAUNCHER_DB)
+                ? EMPTY_DATABASE_CREATED : EMPTY_DATABASE_CREATED + "@" + dbName;
+        return LauncherPrefs.backedUpItem(key, false /* default value */, false /* boot aware */);
+    }
+
+    /**
+     * Returns the serial number for the provided user
+     */
+    public long getSerialNumberForUser(UserHandle user) {
+        return UserCache.INSTANCE.get(mContext).getSerialNumberForUser(user);
+    }
+}
diff --git a/src/com/android/launcher3/model/ModelDelegate.java b/src/com/android/launcher3/model/ModelDelegate.java
index 3bd9470..7e7bfb3 100644
--- a/src/com/android/launcher3/model/ModelDelegate.java
+++ b/src/com/android/launcher3/model/ModelDelegate.java
@@ -20,6 +20,7 @@
 import android.content.Context;
 import android.content.pm.ShortcutInfo;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.WorkerThread;
 
 import com.android.launcher3.LauncherAppState;
@@ -68,9 +69,7 @@
         this.mContext = context;
     }
 
-    /**
-     * Called periodically to validate and update any data
-     */
+    /** Called periodically to validate and update any data */
     @WorkerThread
     public void validateData() {
         if (hasShortcutsPermission(mApp.getContext())
@@ -79,17 +78,32 @@
         }
     }
 
-    /**
-     * Load delegate items if any in the data model
-     */
+    /** Load workspace items (for example, those in the hot seat) if any in the data model */
     @WorkerThread
-    public void loadItems(UserManagerState ums, Map<ShortcutKey, ShortcutInfo> pinnedShortcuts) { }
+    public void loadAndBindWorkspaceItems(@NonNull UserManagerState ums,
+            @NonNull BgDataModel.Callbacks[] callbacks,
+            @NonNull Map<ShortcutKey, ShortcutInfo> pinnedShortcuts) { }
 
-    /**
-     * Load String cache
-     */
+    /** Load all apps items if any in the data model */
     @WorkerThread
-    public void loadStringCache(StringCache cache) {
+    public void loadAndBindAllAppsItems(@NonNull UserManagerState ums,
+            @NonNull BgDataModel.Callbacks[] callbacks,
+            @NonNull Map<ShortcutKey, ShortcutInfo> pinnedShortcuts) { }
+
+    /** Load other items like widget recommendations if any in the data model */
+    @WorkerThread
+    public void loadAndBindOtherItems(@NonNull BgDataModel.Callbacks[] callbacks) { }
+
+    /** binds everything not bound by launcherBinder */
+    @WorkerThread
+    public void bindAllModelExtras(@NonNull BgDataModel.Callbacks[] callbacks) { }
+
+    /** Marks the ModelDelegate as active */
+    public void markActive() { }
+
+    /** Load String cache */
+    @WorkerThread
+    public void loadStringCache(@NonNull StringCache cache) {
         cache.loadStrings(mContext);
     }
 
diff --git a/src/com/android/launcher3/model/ModelUtils.java b/src/com/android/launcher3/model/ModelUtils.java
index 422af43..bc51c9b 100644
--- a/src/com/android/launcher3/model/ModelUtils.java
+++ b/src/com/android/launcher3/model/ModelUtils.java
@@ -15,21 +15,8 @@
  */
 package com.android.launcher3.model;
 
-import static com.android.launcher3.Utilities.isValidExtraType;
-
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.os.Process;
-import android.util.Log;
-
 import com.android.launcher3.LauncherSettings;
-import com.android.launcher3.Utilities;
-import com.android.launcher3.icons.BitmapInfo;
-import com.android.launcher3.icons.LauncherIcons;
 import com.android.launcher3.model.data.ItemInfo;
-import com.android.launcher3.model.data.WorkspaceItemInfo;
-import com.android.launcher3.testing.TestProtocol;
 import com.android.launcher3.util.IntArray;
 import com.android.launcher3.util.IntSet;
 
@@ -44,8 +31,6 @@
  */
 public class ModelUtils {
 
-    private static final String TAG = "ModelUtils";
-
     /**
      * Filters the set of items who are directly or indirectly (via another container) on the
      * specified screen.
@@ -65,10 +50,6 @@
                 (lhs, rhs) -> Integer.compare(lhs.container, rhs.container));
         for (T info : allWorkspaceItems) {
             if (info.container == LauncherSettings.Favorites.CONTAINER_DESKTOP) {
-                if (TestProtocol.sDebugTracing) {
-                    Log.d(TestProtocol.NULL_INT_SET, "filterCurrentWorkspaceItems: "
-                            + currentScreenIds);
-                }
                 if (currentScreenIds.contains(info.screenId)) {
                     currentScreenItems.add(info);
                     itemsOnScreen.add(info.id);
@@ -101,52 +82,4 @@
         IntStream.range(0, len).filter(i -> !seen.contains(i)).forEach(result::add);
         return result;
     }
-
-
-    /**
-     * Creates a workspace item info for the legacy shortcut intent
-     */
-    @SuppressWarnings("deprecation")
-    public static WorkspaceItemInfo fromLegacyShortcutIntent(Context context, Intent data) {
-        if (!isValidExtraType(data, Intent.EXTRA_SHORTCUT_INTENT, Intent.class)
-                || !(isValidExtraType(data, Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
-                        Intent.ShortcutIconResource.class))
-                || !(isValidExtraType(data, Intent.EXTRA_SHORTCUT_ICON, Bitmap.class))) {
-
-            Log.e(TAG, "Invalid install shortcut intent");
-            return null;
-        }
-
-        Intent launchIntent = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT);
-        String label = data.getStringExtra(Intent.EXTRA_SHORTCUT_NAME);
-        if (launchIntent == null || label == null) {
-            Log.e(TAG, "Invalid install shortcut intent");
-            return null;
-        }
-
-        final WorkspaceItemInfo info = new WorkspaceItemInfo();
-        info.user = Process.myUserHandle();
-
-        BitmapInfo iconInfo = null;
-        try (LauncherIcons li = LauncherIcons.obtain(context)) {
-            Bitmap bitmap = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_ICON);
-            if (bitmap != null) {
-                iconInfo = li.createIconBitmap(bitmap);
-            } else {
-                info.iconResource = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE);
-                if (info.iconResource != null) {
-                    iconInfo = li.createIconBitmap(info.iconResource);
-                }
-            }
-        }
-
-        if (iconInfo == null) {
-            Log.e(TAG, "Invalid icon by the app");
-            return null;
-        }
-        info.bitmap = iconInfo;
-        info.contentDescription = info.title = Utilities.trim(label);
-        info.intent = launchIntent;
-        return info;
-    }
 }
diff --git a/src/com/android/launcher3/model/ModelWriter.java b/src/com/android/launcher3/model/ModelWriter.java
index 0a68d4a..ddb8b05 100644
--- a/src/com/android/launcher3/model/ModelWriter.java
+++ b/src/com/android/launcher3/model/ModelWriter.java
@@ -33,10 +33,11 @@
 import com.android.launcher3.LauncherModel;
 import com.android.launcher3.LauncherModel.CallbackTask;
 import com.android.launcher3.LauncherProvider;
-import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.LauncherSettings.Favorites;
 import com.android.launcher3.LauncherSettings.Settings;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.celllayout.CellPosMapper;
+import com.android.launcher3.celllayout.CellPosMapper.CellPos;
 import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.logging.FileLog;
 import com.android.launcher3.model.BgDataModel.Callbacks;
@@ -48,7 +49,7 @@
 import com.android.launcher3.util.Executors;
 import com.android.launcher3.util.ItemInfoMatcher;
 import com.android.launcher3.util.LooperExecutor;
-import com.android.launcher3.widget.LauncherAppWidgetHost;
+import com.android.launcher3.widget.LauncherWidgetHolder;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -81,9 +82,10 @@
     // Keep track of delete operations that occur when an Undo option is present; we may not commit.
     private final List<Runnable> mDeleteRunnables = new ArrayList<>();
     private boolean mPreparingToUndo;
+    private final CellPosMapper mCellPosMapper;
 
     public ModelWriter(Context context, LauncherModel model, BgDataModel dataModel,
-            boolean hasVerticalHotseat, boolean verifyChanges,
+            boolean hasVerticalHotseat, boolean verifyChanges, CellPosMapper cellPosMapper,
             @Nullable Callbacks owner) {
         mContext = context;
         mModel = model;
@@ -91,21 +93,24 @@
         mHasVerticalHotseat = hasVerticalHotseat;
         mVerifyChanges = verifyChanges;
         mOwner = owner;
+        mCellPosMapper = cellPosMapper;
         mUiExecutor = Executors.MAIN_EXECUTOR;
     }
 
     private void updateItemInfoProps(
             ItemInfo item, int container, int screenId, int cellX, int cellY) {
+        CellPos modelPos = mCellPosMapper.mapPresenterToModel(cellX, cellY, screenId, container);
+
         item.container = container;
-        item.cellX = cellX;
-        item.cellY = cellY;
+        item.cellX = modelPos.cellX;
+        item.cellY = modelPos.cellY;
         // We store hotseat items in canonical form which is this orientation invariant position
         // in the hotseat
         if (container == Favorites.CONTAINER_HOTSEAT) {
             item.screenId = mHasVerticalHotseat
                     ? LauncherAppState.getIDP(mContext).numDatabaseHotseatIcons - cellY - 1 : cellX;
         } else {
-            item.screenId = screenId;
+            item.screenId = modelPos.screenId;
         }
     }
 
@@ -261,8 +266,7 @@
             item.onAddToDatabase(writer);
             writer.put(Favorites._ID, item.id);
 
-            cr.insert(Favorites.CONTENT_URI, writer.getValues(mContext));
-
+            mModel.getModelDbController().insert(Favorites.TABLE_NAME, writer.getValues(mContext));
             synchronized (mBgDataModel) {
                 checkItemInfoLocked(item.id, item, stackTrace);
                 mBgDataModel.addItem(mContext, item, true);
@@ -318,13 +322,13 @@
         notifyDelete(Collections.singleton(info));
 
         enqueueDeleteRunnable(() -> {
-            ContentResolver cr = mContext.getContentResolver();
-            cr.delete(LauncherSettings.Favorites.CONTENT_URI,
-                    LauncherSettings.Favorites.CONTAINER + "=" + info.id, null);
+            mModel.getModelDbController().delete(Favorites.TABLE_NAME,
+                    Favorites.CONTAINER + "=" + info.id, null);
             mBgDataModel.removeItem(mContext, info.contents);
             info.contents.clear();
 
-            cr.delete(LauncherSettings.Favorites.getContentUri(info.id), null, null);
+            mModel.getModelDbController().delete(Favorites.TABLE_NAME,
+                    Favorites._ID + "=" + info.id, null);
             mBgDataModel.removeItem(mContext, info);
             verifier.verifyModel();
         });
@@ -333,13 +337,13 @@
     /**
      * Deletes the widget info and the widget id.
      */
-    public void deleteWidgetInfo(final LauncherAppWidgetInfo info, LauncherAppWidgetHost host,
+    public void deleteWidgetInfo(final LauncherAppWidgetInfo info, LauncherWidgetHolder holder,
             @Nullable final String reason) {
         notifyDelete(Collections.singleton(info));
-        if (host != null && !info.isCustomWidget() && info.isWidgetIdAllocated()) {
+        if (holder != null && !info.isCustomWidget() && info.isWidgetIdAllocated()) {
             // Deleting an app widget ID is a void call but writes to disk before returning
             // to the caller...
-            enqueueDeleteRunnable(() -> host.deleteAppWidgetId(info.appWidgetId));
+            enqueueDeleteRunnable(() -> holder.deleteAppWidgetId(info.appWidgetId));
         }
         deleteItemFromDatabase(info, reason);
     }
diff --git a/src/com/android/launcher3/model/PackageIncrementalDownloadUpdatedTask.java b/src/com/android/launcher3/model/PackageIncrementalDownloadUpdatedTask.java
index c0dc34a..b9fba9d 100644
--- a/src/com/android/launcher3/model/PackageIncrementalDownloadUpdatedTask.java
+++ b/src/com/android/launcher3/model/PackageIncrementalDownloadUpdatedTask.java
@@ -17,6 +17,8 @@
 
 import android.os.UserHandle;
 
+import androidx.annotation.NonNull;
+
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.model.data.AppInfo;
 import com.android.launcher3.model.data.ItemInfoWithIcon;
@@ -31,19 +33,24 @@
  */
 public class PackageIncrementalDownloadUpdatedTask extends BaseModelUpdateTask {
 
+    @NonNull
     private final UserHandle mUser;
+
     private final int mProgress;
+
+    @NonNull
     private final String mPackageName;
 
-    public PackageIncrementalDownloadUpdatedTask(
-            String packageName, UserHandle user, float progress) {
+    public PackageIncrementalDownloadUpdatedTask(@NonNull final String packageName,
+            @NonNull final UserHandle user, final float progress) {
         mUser = user;
         mProgress = 1 - progress > 0.001 ? (int) (100 * progress) : 100;
         mPackageName = packageName;
     }
 
     @Override
-    public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList appsList) {
+    public void execute(@NonNull LauncherAppState app, @NonNull final BgDataModel dataModel,
+            @NonNull final AllAppsList appsList) {
         PackageInstallInfo downloadInfo = new PackageInstallInfo(
                 mPackageName,
                 PackageInstallInfo.STATUS_INSTALLED_DOWNLOADING,
diff --git a/src/com/android/launcher3/model/PackageInstallStateChangedTask.java b/src/com/android/launcher3/model/PackageInstallStateChangedTask.java
index b74d0fc..76a87ed 100644
--- a/src/com/android/launcher3/model/PackageInstallStateChangedTask.java
+++ b/src/com/android/launcher3/model/PackageInstallStateChangedTask.java
@@ -18,6 +18,8 @@
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 
+import androidx.annotation.NonNull;
+
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.model.data.AppInfo;
 import com.android.launcher3.model.data.ItemInfo;
@@ -33,14 +35,16 @@
  */
 public class PackageInstallStateChangedTask extends BaseModelUpdateTask {
 
+    @NonNull
     private final PackageInstallInfo mInstallInfo;
 
-    public PackageInstallStateChangedTask(PackageInstallInfo installInfo) {
+    public PackageInstallStateChangedTask(@NonNull final PackageInstallInfo installInfo) {
         mInstallInfo = installInfo;
     }
 
     @Override
-    public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) {
+    public void execute(@NonNull final LauncherAppState app, @NonNull final BgDataModel dataModel,
+            @NonNull final AllAppsList apps) {
         if (mInstallInfo.state == PackageInstallInfo.STATUS_INSTALLED) {
             try {
                 // For instant apps we do not get package-add. Use setting events to update
diff --git a/src/com/android/launcher3/model/PackageUpdatedTask.java b/src/com/android/launcher3/model/PackageUpdatedTask.java
index 489bc38..8c938f4 100644
--- a/src/com/android/launcher3/model/PackageUpdatedTask.java
+++ b/src/com/android/launcher3/model/PackageUpdatedTask.java
@@ -29,14 +29,14 @@
 import android.os.UserManager;
 import android.util.Log;
 
+import androidx.annotation.NonNull;
+
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.LauncherSettings.Favorites;
 import com.android.launcher3.config.FeatureFlags;
-import com.android.launcher3.icons.BitmapInfo;
 import com.android.launcher3.icons.IconCache;
-import com.android.launcher3.icons.LauncherIcons;
 import com.android.launcher3.logging.FileLog;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.LauncherAppWidgetInfo;
@@ -44,6 +44,7 @@
 import com.android.launcher3.pm.PackageInstallInfo;
 import com.android.launcher3.pm.UserCache;
 import com.android.launcher3.shortcuts.ShortcutRequest;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.util.FlagOp;
 import com.android.launcher3.util.IntSet;
 import com.android.launcher3.util.ItemInfoMatcher;
@@ -57,7 +58,9 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Objects;
 import java.util.function.Predicate;
+import java.util.stream.Collectors;
 
 /**
  * Handles updates due to changes in package manager (app installed/updated/removed)
@@ -65,7 +68,7 @@
  */
 public class PackageUpdatedTask extends BaseModelUpdateTask {
 
-    private static final boolean DEBUG = false;
+    private static boolean DEBUG = false;
     private static final String TAG = "PackageUpdatedTask";
 
     public static final int OP_NONE = 0;
@@ -78,17 +81,28 @@
     public static final int OP_USER_AVAILABILITY_CHANGE = 7; // user available/unavailable
 
     private final int mOp;
+
+    @NonNull
     private final UserHandle mUser;
+
+    @NonNull
     private final String[] mPackages;
 
-    public PackageUpdatedTask(int op, UserHandle user, String... packages) {
+    public PackageUpdatedTask(final int op, @NonNull final UserHandle user,
+            @NonNull final String... packages) {
         mOp = op;
         mUser = user;
         mPackages = packages;
+        if (TestProtocol.sDebugTracing) {
+            Log.d(TestProtocol.WORK_TAB_MISSING, "PackageUpdatedTask mOp: " + mOp +
+                    " packageCount: " + mPackages.length + " user: " + user);
+            DEBUG = true;
+        }
     }
 
     @Override
-    public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList appsList) {
+    public void execute(@NonNull final LauncherAppState app, @NonNull final BgDataModel dataModel,
+            @NonNull final AllAppsList appsList) {
         final Context context = app.getContext();
         final IconCache iconCache = app.getIconCache();
 
@@ -128,6 +142,9 @@
                         // The update may have changed which shortcuts/widgets are available.
                         // Refresh the widgets for the package if we have an activity running.
                         Launcher launcher = Launcher.ACTIVITY_TRACKER.getCreatedActivity();
+                        if (TestProtocol.sDebugTracing) {
+                            Log.d(TestProtocol.WORK_TAB_MISSING, "launcher: " + launcher);
+                        }
                         if (launcher != null) {
                             launcher.refreshAndBindWidgetsForPackageUser(
                                     new PackageUserKey(packages[i], mUser));
@@ -194,18 +211,6 @@
                     boolean infoUpdated = false;
                     boolean shortcutUpdated = false;
 
-                    // Update shortcuts which use iconResource.
-                    if ((si.iconResource != null)
-                            && packageSet.contains(si.iconResource.packageName)) {
-                        LauncherIcons li = LauncherIcons.obtain(context);
-                        BitmapInfo iconInfo = li.createIconBitmap(si.iconResource);
-                        li.recycle();
-                        if (iconInfo != null) {
-                            si.bitmap = iconInfo;
-                            infoUpdated = true;
-                        }
-                    }
-
                     ComponentName cn = si.getTargetComponent();
                     if (cn != null && matcher.test(si)) {
                         String packageName = cn.getPackageName();
@@ -343,7 +348,12 @@
                     .or(ItemInfoMatcher.ofComponents(removedComponents, mUser))
                     .and(ItemInfoMatcher.ofItemIds(forceKeepShortcuts).negate());
             deleteAndBindComponentsRemoved(removeMatch,
-                    "removed because the corresponding package or component is removed");
+                    "removed because the corresponding package or component is removed. "
+                            + "mOp=" + mOp + " removedPackages=" + removedPackages.stream().collect(
+                                    Collectors.joining(",", "[", "]"))
+                            + " removedComponents=" + removedComponents.stream()
+                            .filter(Objects::nonNull).map(ComponentName::toShortString)
+                            .collect(Collectors.joining(",", "[", "]")));
 
             // Remove any queued items from the install queue
             ItemInstallQueue.INSTANCE.get(context)
diff --git a/src/com/android/launcher3/model/ReloadStringCacheTask.java b/src/com/android/launcher3/model/ReloadStringCacheTask.java
index f4d4298..34f7057 100644
--- a/src/com/android/launcher3/model/ReloadStringCacheTask.java
+++ b/src/com/android/launcher3/model/ReloadStringCacheTask.java
@@ -15,6 +15,8 @@
  */
 package com.android.launcher3.model;
 
+import androidx.annotation.NonNull;
+
 import com.android.launcher3.LauncherAppState;
 
 /**
@@ -22,14 +24,17 @@
  * {@link android.app.admin.DevicePolicyManager#ACTION_DEVICE_POLICY_RESOURCE_UPDATED}.
  */
 public class ReloadStringCacheTask extends BaseModelUpdateTask {
+
+    @NonNull
     private ModelDelegate mModelDelegate;
 
-    public ReloadStringCacheTask(ModelDelegate modelDelegate) {
+    public ReloadStringCacheTask(@NonNull final ModelDelegate modelDelegate) {
         mModelDelegate = modelDelegate;
     }
 
     @Override
-    public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList appsList) {
+    public void execute(@NonNull final LauncherAppState app, @NonNull final BgDataModel dataModel,
+            @NonNull final AllAppsList appsList) {
         synchronized (dataModel) {
             mModelDelegate.loadStringCache(dataModel.stringCache);
             StringCache cloneSC = dataModel.stringCache.clone();
diff --git a/src/com/android/launcher3/model/ShortcutsChangedTask.java b/src/com/android/launcher3/model/ShortcutsChangedTask.java
index 1026e0b..a6a04a7 100644
--- a/src/com/android/launcher3/model/ShortcutsChangedTask.java
+++ b/src/com/android/launcher3/model/ShortcutsChangedTask.java
@@ -19,6 +19,8 @@
 import android.content.pm.ShortcutInfo;
 import android.os.UserHandle;
 
+import androidx.annotation.NonNull;
+
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
@@ -38,13 +40,20 @@
  */
 public class ShortcutsChangedTask extends BaseModelUpdateTask {
 
+    @NonNull
     private final String mPackageName;
+
+    @NonNull
     private final List<ShortcutInfo> mShortcuts;
+
+    @NonNull
     private final UserHandle mUser;
+
     private final boolean mUpdateIdMap;
 
-    public ShortcutsChangedTask(String packageName, List<ShortcutInfo> shortcuts,
-            UserHandle user, boolean updateIdMap) {
+    public ShortcutsChangedTask(@NonNull final String packageName,
+            @NonNull final List<ShortcutInfo> shortcuts, @NonNull final UserHandle user,
+            final boolean updateIdMap) {
         mPackageName = packageName;
         mShortcuts = shortcuts;
         mUser = user;
@@ -52,7 +61,8 @@
     }
 
     @Override
-    public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) {
+    public void execute(@NonNull final LauncherAppState app, @NonNull final BgDataModel dataModel,
+            @NonNull final AllAppsList apps) {
         final Context context = app.getContext();
         // Find WorkspaceItemInfo's that have changed on the workspace.
         ArrayList<WorkspaceItemInfo> matchingWorkspaceItems = new ArrayList<>();
diff --git a/src/com/android/launcher3/model/StringCache.java b/src/com/android/launcher3/model/StringCache.java
index 9859ddc..8209043 100644
--- a/src/com/android/launcher3/model/StringCache.java
+++ b/src/com/android/launcher3/model/StringCache.java
@@ -18,6 +18,7 @@
 
 import android.annotation.SuppressLint;
 import android.app.admin.DevicePolicyManager;
+import android.app.admin.ManagedSubscriptionsPolicy;
 import android.content.Context;
 import android.os.Build;
 
@@ -26,6 +27,8 @@
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 
+import java.util.function.Supplier;
+
 /**
  *
  * Cache for the device policy strings used in Launcher.
@@ -192,7 +195,9 @@
         workProfilePausedTitle = getEnterpriseString(
                 context, WORK_PROFILE_PAUSED_TITLE, R.string.work_apps_paused_title);
         workProfilePausedDescription = getEnterpriseString(
-                context, WORK_PROFILE_PAUSED_DESCRIPTION, R.string.work_apps_paused_body);
+                context,
+                WORK_PROFILE_PAUSED_DESCRIPTION,
+                () -> getDefaultWorkProfilePausedDescriptionString(context));
         workProfilePauseButton = getEnterpriseString(
                 context, WORK_PROFILE_PAUSE_BUTTON, R.string.work_apps_pause_btn_text);
         workProfileEnableButton = getEnterpriseString(
@@ -216,20 +221,41 @@
                 context, DISABLED_BY_ADMIN_MESSAGE, R.string.msg_disabled_by_admin);
     }
 
+    private String getDefaultWorkProfilePausedDescriptionString(Context context) {
+        if (Utilities.ATLEAST_U) {
+            DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
+            boolean telephonyIsUnavailable =
+                    dpm.getManagedSubscriptionsPolicy().getPolicyType()
+                            == ManagedSubscriptionsPolicy.TYPE_ALL_MANAGED_SUBSCRIPTIONS;
+            return telephonyIsUnavailable
+                    ? context.getString(R.string.work_apps_paused_telephony_unavailable_body)
+                    : context.getString(R.string.work_apps_paused_info_body);
+        }
+        return context.getString(R.string.work_apps_paused_body);
+    }
+
     @SuppressLint("NewApi")
     private String getEnterpriseString(
             Context context, String updatableStringId, int defaultStringId) {
+        return getEnterpriseString(
+                context,
+                updatableStringId,
+                () -> context.getString(defaultStringId));
+    }
+
+    @SuppressLint("NewApi")
+    private String getEnterpriseString(
+            Context context, String updateableStringId, Supplier<String> defaultStringSupplier) {
         return Utilities.ATLEAST_T
-                ? getUpdatableEnterpriseSting(context, updatableStringId, defaultStringId)
-                : context.getString(defaultStringId);
+                ? getUpdatableEnterpriseString(context, updateableStringId, defaultStringSupplier)
+                : defaultStringSupplier.get();
     }
 
     @RequiresApi(Build.VERSION_CODES.TIRAMISU)
-    private String getUpdatableEnterpriseSting(
-            Context context, String updatableStringId, int defaultStringId) {
+    private String getUpdatableEnterpriseString(
+            Context context, String updatableStringId, Supplier<String> defaultStringSupplier) {
         DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
-        return dpm.getResources().getString(
-                updatableStringId, () -> context.getString(defaultStringId));
+        return dpm.getResources().getString(updatableStringId, defaultStringSupplier);
     }
 
     @Override
diff --git a/src/com/android/launcher3/model/UserLockStateChangedTask.java b/src/com/android/launcher3/model/UserLockStateChangedTask.java
index 1565b19..cb78138 100644
--- a/src/com/android/launcher3/model/UserLockStateChangedTask.java
+++ b/src/com/android/launcher3/model/UserLockStateChangedTask.java
@@ -16,10 +16,14 @@
 package com.android.launcher3.model;
 
 import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_DISABLED_LOCKED_USER;
+import static com.android.launcher3.testing.shared.TestProtocol.WORK_TAB_MISSING;
 
 import android.content.Context;
 import android.content.pm.ShortcutInfo;
 import android.os.UserHandle;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
 
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.LauncherSettings;
@@ -27,6 +31,7 @@
 import com.android.launcher3.shortcuts.ShortcutKey;
 import com.android.launcher3.shortcuts.ShortcutRequest;
 import com.android.launcher3.shortcuts.ShortcutRequest.QueryResult;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.util.ComponentKey;
 import com.android.launcher3.util.ItemInfoMatcher;
 
@@ -40,22 +45,28 @@
  */
 public class UserLockStateChangedTask extends BaseModelUpdateTask {
 
+    @NonNull
     private final UserHandle mUser;
     private boolean mIsUserUnlocked;
 
-    public UserLockStateChangedTask(UserHandle user, boolean isUserUnlocked) {
+    public UserLockStateChangedTask(@NonNull final UserHandle user, final boolean isUserUnlocked) {
         mUser = user;
         mIsUserUnlocked = isUserUnlocked;
     }
 
     @Override
-    public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) {
+    public void execute(@NonNull final LauncherAppState app, @NonNull final BgDataModel dataModel,
+            @NonNull final AllAppsList apps) {
         Context context = app.getContext();
 
         HashMap<ShortcutKey, ShortcutInfo> pinnedShortcuts = new HashMap<>();
         if (mIsUserUnlocked) {
             QueryResult shortcuts = new ShortcutRequest(context, mUser)
                     .query(ShortcutRequest.PINNED);
+            if (TestProtocol.sDebugTracing) {
+                Log.d(WORK_TAB_MISSING, "shortcutQuery success? "
+                        + shortcuts.wasSuccess());
+            }
             if (shortcuts.wasSuccess()) {
                 for (ShortcutInfo shortcut : shortcuts) {
                     pinnedShortcuts.put(ShortcutKey.fromInfo(shortcut), shortcut);
@@ -78,6 +89,9 @@
                     if (mIsUserUnlocked) {
                         ShortcutKey key = ShortcutKey.fromItemInfo(si);
                         ShortcutInfo shortcut = pinnedShortcuts.get(key);
+                        if (TestProtocol.sDebugTracing) {
+                            Log.d(WORK_TAB_MISSING, "shortcutInfo: " + shortcut);
+                        }
                         // We couldn't verify the shortcut during loader. If its no longer available
                         // (probably due to clear data), delete the workspace item as well
                         if (shortcut == null) {
diff --git a/src/com/android/launcher3/model/WidgetItem.java b/src/com/android/launcher3/model/WidgetItem.java
index 7198d54..c99b889 100644
--- a/src/com/android/launcher3/model/WidgetItem.java
+++ b/src/com/android/launcher3/model/WidgetItem.java
@@ -3,6 +3,7 @@
 import static com.android.launcher3.Utilities.ATLEAST_S;
 
 import android.annotation.SuppressLint;
+import android.content.Context;
 import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
 import android.content.res.Resources;
@@ -25,13 +26,15 @@
     public final ShortcutConfigActivityInfo activityInfo;
 
     public final String label;
+    public final CharSequence description;
     public final int spanX, spanY;
 
     public WidgetItem(LauncherAppWidgetProviderInfo info,
-            InvariantDeviceProfile idp, IconCache iconCache) {
+            InvariantDeviceProfile idp, IconCache iconCache, Context context) {
         super(info.provider, info.getProfile());
 
         label = iconCache.getTitleNoCache(info);
+        description = ATLEAST_S ? info.loadDescription(context) : null;
         widgetInfo = info;
         activityInfo = null;
 
@@ -43,6 +46,7 @@
         super(info.getComponent(), info.getUser());
         label = info.isPersistable() ? iconCache.getTitleNoCache(info) :
                 Utilities.trim(info.getLabel(pm));
+        description = null;
         widgetInfo = null;
         activityInfo = info;
         spanX = spanY = 1;
diff --git a/src/com/android/launcher3/model/data/AppInfo.java b/src/com/android/launcher3/model/data/AppInfo.java
index 5b2bcf5..7e6cbef 100644
--- a/src/com/android/launcher3/model/data/AppInfo.java
+++ b/src/com/android/launcher3/model/data/AppInfo.java
@@ -55,16 +55,25 @@
      */
     public Intent intent;
 
+    @NonNull
     public ComponentName componentName;
 
     // Section name used for indexing.
     public String sectionName = "";
 
+    /**
+     * The uid of the application.
+     * The kernel user-ID that has been assigned to this application. Currently this is not a unique
+     * ID (multiple applications can have the same uid).
+     */
+    public int uid = -1;
+
     public AppInfo() {
         itemType = LauncherSettings.Favorites.ITEM_TYPE_APPLICATION;
     }
 
     @Override
+    @Nullable
     public Intent getIntent() {
         return intent;
     }
@@ -85,6 +94,7 @@
         if (quietModeEnabled) {
             runtimeStatusFlags |= FLAG_DISABLED_QUIET_USER;
         }
+        uid = info.getApplicationInfo().uid;
         updateRuntimeFlagsForActivityTarget(this, info);
     }
 
@@ -93,6 +103,7 @@
         componentName = info.componentName;
         title = Utilities.trim(info.title);
         intent = new Intent(info.intent);
+        uid = info.uid;
     }
 
     @VisibleForTesting
@@ -151,7 +162,7 @@
                         | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
     }
 
-    @Nullable
+    @NonNull
     @Override
     public ComponentName getTargetComponent() {
         return componentName;
diff --git a/src/com/android/launcher3/model/data/FolderInfo.java b/src/com/android/launcher3/model/data/FolderInfo.java
index efebce3..e5a0eb1 100644
--- a/src/com/android/launcher3/model/data/FolderInfo.java
+++ b/src/com/android/launcher3/model/data/FolderInfo.java
@@ -26,11 +26,11 @@
 
 import android.os.Process;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.Utilities;
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.folder.FolderNameInfos;
 import com.android.launcher3.logger.LauncherAtom;
 import com.android.launcher3.logger.LauncherAtom.Attribute;
@@ -114,6 +114,17 @@
     }
 
     /**
+     * Create an app pair, a type of app collection that launches multiple apps into split screen
+     */
+    public static FolderInfo createAppPair(WorkspaceItemInfo app1, WorkspaceItemInfo app2) {
+        FolderInfo newAppPair = new FolderInfo();
+        newAppPair.itemType = LauncherSettings.Favorites.ITEM_TYPE_APP_PAIR;
+        newAppPair.contents.add(app1);
+        newAppPair.contents.add(app2);
+        return newAppPair;
+    }
+
+    /**
      * Add an app or shortcut
      *
      * @param item
@@ -155,7 +166,7 @@
     }
 
     @Override
-    public void onAddToDatabase(ContentWriter writer) {
+    public void onAddToDatabase(@NonNull ContentWriter writer) {
         super.onAddToDatabase(writer);
         writer.put(LauncherSettings.Favorites.TITLE, title)
                 .put(LauncherSettings.Favorites.OPTIONS, options);
@@ -207,8 +218,9 @@
         return String.format("%s; labelState=%s", super.dumpProperties(), getLabelState());
     }
 
+    @NonNull
     @Override
-    public LauncherAtom.ItemInfo buildProto(FolderInfo fInfo) {
+    public LauncherAtom.ItemInfo buildProto(@Nullable FolderInfo fInfo) {
         FolderIcon.Builder folderIcon = FolderIcon.newBuilder()
                 .setCardinality(contents.size());
         if (LabelState.SUGGESTED.equals(getLabelState())) {
@@ -262,6 +274,7 @@
                                 : LabelState.SUGGESTED;
     }
 
+    @NonNull
     @Override
     public ItemInfo makeShallowCopy() {
         FolderInfo folderInfo = new FolderInfo();
@@ -273,6 +286,7 @@
     /**
      * Returns {@link LauncherAtom.FolderIcon} wrapped as {@link LauncherAtom.ItemInfo} for logging.
      */
+    @NonNull
     @Override
     public LauncherAtom.ItemInfo buildProto() {
         return buildProto(null);
@@ -321,12 +335,6 @@
             return LauncherAtom.ToState.TO_STATE_UNSPECIFIED;
         }
 
-        if (!FeatureFlags.FOLDER_NAME_SUGGEST.get()) {
-            return title.length() > 0
-                    ? LauncherAtom.ToState.TO_CUSTOM_WITH_SUGGESTIONS_DISABLED
-                    : LauncherAtom.ToState.TO_EMPTY_WITH_SUGGESTIONS_DISABLED;
-        }
-
         // TODO: if suggestedFolderNames is null then it infrastructure issue, not
         // ranking issue. We should log these appropriately.
         if (suggestedFolderNames == null || !suggestedFolderNames.hasSuggestions()) {
diff --git a/src/com/android/launcher3/model/data/IconRequestInfo.java b/src/com/android/launcher3/model/data/IconRequestInfo.java
index fbf01e5..e77e527 100644
--- a/src/com/android/launcher3/model/data/IconRequestInfo.java
+++ b/src/com/android/launcher3/model/data/IconRequestInfo.java
@@ -18,16 +18,12 @@
 import static android.graphics.BitmapFactory.decodeByteArray;
 
 import android.content.Context;
-import android.content.Intent;
 import android.content.pm.LauncherActivityInfo;
-import android.text.TextUtils;
 import android.util.Log;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
-import com.android.launcher3.LauncherSettings;
-import com.android.launcher3.icons.BitmapInfo;
 import com.android.launcher3.icons.LauncherIcons;
 
 /**
@@ -42,8 +38,6 @@
 
     @NonNull public final T itemInfo;
     @Nullable public final LauncherActivityInfo launcherActivityInfo;
-    @Nullable public final String packageName;
-    @Nullable public final String resourceName;
     @Nullable public final byte[] iconBlob;
     public final boolean useLowResIcon;
 
@@ -54,8 +48,6 @@
         this(
                 itemInfo,
                 launcherActivityInfo,
-                /* packageName= */ null,
-                /* resourceName= */ null,
                 /* iconBlob= */ null,
                 useLowResIcon);
     }
@@ -63,14 +55,10 @@
     public IconRequestInfo(
             @NonNull T itemInfo,
             @Nullable LauncherActivityInfo launcherActivityInfo,
-            @Nullable String packageName,
-            @Nullable String resourceName,
             @Nullable byte[] iconBlob,
             boolean useLowResIcon) {
         this.itemInfo = itemInfo;
         this.launcherActivityInfo = launcherActivityInfo;
-        this.packageName = packageName;
-        this.resourceName = resourceName;
         this.iconBlob = iconBlob;
         this.useLowResIcon = useLowResIcon;
     }
@@ -87,31 +75,16 @@
 
         try (LauncherIcons li = LauncherIcons.obtain(context)) {
             WorkspaceItemInfo info = (WorkspaceItemInfo) itemInfo;
-            if (itemInfo.itemType == LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT) {
-                if (!TextUtils.isEmpty(packageName) || !TextUtils.isEmpty(resourceName)) {
-                    info.iconResource = new Intent.ShortcutIconResource();
-                    info.iconResource.packageName = packageName;
-                    info.iconResource.resourceName = resourceName;
-                    BitmapInfo iconInfo = li.createIconBitmap(info.iconResource);
-                    if (iconInfo != null) {
-                        info.bitmap = iconInfo;
-                        return true;
-                    }
-                }
-            }
-
             // Failed to load from resource, try loading from DB.
-            try {
-                if (iconBlob == null) {
-                    return false;
-                }
-                info.bitmap = li.createIconBitmap(decodeByteArray(
-                        iconBlob, 0, iconBlob.length));
-                return true;
-            } catch (Exception e) {
-                Log.e(TAG, "Failed to decode byte array for info " + info, e);
+            if (iconBlob == null) {
                 return false;
             }
+            info.bitmap = li.createIconBitmap(decodeByteArray(
+                    iconBlob, 0, iconBlob.length));
+            return true;
+        } catch (Exception e) {
+            Log.e(TAG, "Failed to decode byte array for info " + itemInfo, e);
+            return false;
         }
     }
 }
diff --git a/src/com/android/launcher3/model/data/ItemInfo.java b/src/com/android/launcher3/model/data/ItemInfo.java
index 1e8e3ca..bfb80b3 100644
--- a/src/com/android/launcher3/model/data/ItemInfo.java
+++ b/src/com/android/launcher3/model/data/ItemInfo.java
@@ -21,7 +21,6 @@
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_HOTSEAT;
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_HOTSEAT_PREDICTION;
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_PREDICTION;
-import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_SEARCH_RESULTS;
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_SETTINGS;
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_SHORTCUTS;
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_TASKSWITCHER;
@@ -39,19 +38,23 @@
 import android.content.ComponentName;
 import android.content.ContentValues;
 import android.content.Intent;
+import android.net.Uri;
 import android.os.Process;
 import android.os.UserHandle;
+import android.provider.Settings;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import com.android.launcher3.LauncherSettings;
+import com.android.launcher3.LauncherSettings.Animation;
 import com.android.launcher3.LauncherSettings.Favorites;
 import com.android.launcher3.Workspace;
+import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.logger.LauncherAtom;
 import com.android.launcher3.logger.LauncherAtom.AllAppsContainer;
 import com.android.launcher3.logger.LauncherAtom.ContainerInfo;
 import com.android.launcher3.logger.LauncherAtom.PredictionContainer;
-import com.android.launcher3.logger.LauncherAtom.SearchResultContainer;
 import com.android.launcher3.logger.LauncherAtom.SettingsContainer;
 import com.android.launcher3.logger.LauncherAtom.Shortcut;
 import com.android.launcher3.logger.LauncherAtom.ShortcutsContainer;
@@ -60,6 +63,7 @@
 import com.android.launcher3.logger.LauncherAtomExtensions.ExtendedContainers;
 import com.android.launcher3.model.ModelWriter;
 import com.android.launcher3.util.ContentWriter;
+import com.android.launcher3.util.SettingsCache;
 
 import java.util.Optional;
 
@@ -73,6 +77,9 @@
     // An id that doesn't match any item, including predicted apps with have an id=NO_ID
     public static final int NO_MATCHING_ID = Integer.MIN_VALUE;
 
+    /** Hidden field Settings.Secure.NAV_BAR_KIDS_MODE */
+    private static final Uri NAV_BAR_KIDS_MODE = Settings.Secure.getUriFor("nav_bar_kids_mode");
+
     /**
      * The id in the settings database for this item
      */
@@ -83,12 +90,19 @@
      * {@link Favorites#ITEM_TYPE_SHORTCUT},
      * {@link Favorites#ITEM_TYPE_DEEP_SHORTCUT}
      * {@link Favorites#ITEM_TYPE_FOLDER},
+     * {@link Favorites#ITEM_TYPE_APP_PAIR},
      * {@link Favorites#ITEM_TYPE_APPWIDGET} or
      * {@link Favorites#ITEM_TYPE_CUSTOM_APPWIDGET}.
      */
     public int itemType;
 
     /**
+     * One of {@link Animation#DEFAULT},
+     * {@link Animation#VIEW_BACKGROUND}.
+     */
+    public int animationType = Animation.DEFAULT;
+
+    /**
      * The id of the container that holds this item. For the desktop, this will be
      * {@link Favorites#CONTAINER_DESKTOP}. For the all applications folder it
      * will be {@link #NO_ID} (since it is not stored in the settings DB). For user folders
@@ -141,30 +155,34 @@
     /**
      * Title of the item
      */
+    @Nullable
     public CharSequence title;
 
     /**
      * Content description of the item.
      */
+    @Nullable
     public CharSequence contentDescription;
 
     /**
      * When the instance is created using {@link #copyFrom}, this field is used to keep track of
      * original {@link ComponentName}.
      */
+    @Nullable
     private ComponentName mComponentName;
 
+    @NonNull
     public UserHandle user;
 
     public ItemInfo() {
         user = Process.myUserHandle();
     }
 
-    protected ItemInfo(ItemInfo info) {
+    protected ItemInfo(@NonNull final ItemInfo info) {
         copyFrom(info);
     }
 
-    public void copyFrom(ItemInfo info) {
+    public void copyFrom(@NonNull final ItemInfo info) {
         id = info.id;
         title = info.title;
         cellX = info.cellX;
@@ -176,12 +194,14 @@
         rank = info.rank;
         screenId = info.screenId;
         itemType = info.itemType;
+        animationType = info.animationType;
         container = info.container;
         user = info.user;
         contentDescription = info.contentDescription;
         mComponentName = info.getTargetComponent();
     }
 
+    @Nullable
     public Intent getIntent() {
         return null;
     }
@@ -209,7 +229,7 @@
                         : null;
     }
 
-    public void writeToValues(ContentWriter writer) {
+    public void writeToValues(@NonNull final ContentWriter writer) {
         writer.put(LauncherSettings.Favorites.ITEM_TYPE, itemType)
                 .put(LauncherSettings.Favorites.CONTAINER, container)
                 .put(LauncherSettings.Favorites.SCREEN, screenId)
@@ -220,7 +240,7 @@
                 .put(LauncherSettings.Favorites.RANK, rank);
     }
 
-    public void readFromValues(ContentValues values) {
+    public void readFromValues(@NonNull final ContentValues values) {
         itemType = values.getAsInteger(LauncherSettings.Favorites.ITEM_TYPE);
         container = values.getAsInteger(LauncherSettings.Favorites.CONTAINER);
         screenId = values.getAsInteger(LauncherSettings.Favorites.SCREEN);
@@ -234,7 +254,7 @@
     /**
      * Write the fields of this item to the DB
      */
-    public void onAddToDatabase(ContentWriter writer) {
+    public void onAddToDatabase(@NonNull final ContentWriter writer) {
         if (Workspace.EXTRA_EMPTY_SCREEN_IDS.contains(screenId)) {
             // We should never persist an item on the extra empty screen.
             throw new RuntimeException("Screen id should not be extra empty screen: " + screenId);
@@ -245,10 +265,12 @@
     }
 
     @Override
+    @NonNull
     public final String toString() {
         return getClass().getSimpleName() + "(" + dumpProperties() + ")";
     }
 
+    @NonNull
     protected String dumpProperties() {
         return "id=" + id
                 + " type=" + LauncherSettings.Favorites.itemTypeToString(itemType)
@@ -286,16 +308,35 @@
     }
 
     /**
+     * Returns if an Item is in the hotseat.
+     */
+    public boolean isInHotseat() {
+        return container == CONTAINER_HOTSEAT || container == CONTAINER_HOTSEAT_PREDICTION;
+    }
+
+    /**
+     * Returns whether this item should use the background animation.
+     */
+    public boolean shouldUseBackgroundAnimation() {
+        return animationType == LauncherSettings.Animation.VIEW_BACKGROUND
+                && FeatureFlags.ENABLE_SEARCH_RESULT_BACKGROUND_DRAWABLES.get()
+                && FeatureFlags.ENABLE_SEARCH_RESULT_LAUNCH_TRANSITION.get();
+    }
+
+    /**
      * Creates {@link LauncherAtom.ItemInfo} with important fields and parent container info.
      */
+    @NonNull
     public LauncherAtom.ItemInfo buildProto() {
         return buildProto(null);
     }
 
     /**
      * Creates {@link LauncherAtom.ItemInfo} with important fields and parent container info.
+     * @param fInfo
      */
-    public LauncherAtom.ItemInfo buildProto(FolderInfo fInfo) {
+    @NonNull
+    public LauncherAtom.ItemInfo buildProto(@Nullable final FolderInfo fInfo) {
         LauncherAtom.ItemInfo.Builder itemBuilder = getDefaultItemInfoBuilder();
         Optional<ComponentName> nullableComponent = Optional.ofNullable(getTargetComponent());
         switch (itemType) {
@@ -339,9 +380,11 @@
                 break;
             case ITEM_TYPE_TASK:
                 itemBuilder
-                        .setTask(LauncherAtom.Task.newBuilder()
-                                .setComponentName(getTargetComponent().flattenToShortString())
-                                .setIndex(screenId));
+                        .setTask(nullableComponent
+                                .map(component -> LauncherAtom.Task.newBuilder()
+                                        .setComponentName(component.flattenToShortString())
+                                        .setIndex(screenId))
+                                .orElse(LauncherAtom.Task.newBuilder()));
                 break;
             default:
                 break;
@@ -373,9 +416,13 @@
         return itemBuilder.build();
     }
 
+    @NonNull
     protected LauncherAtom.ItemInfo.Builder getDefaultItemInfoBuilder() {
         LauncherAtom.ItemInfo.Builder itemBuilder = LauncherAtom.ItemInfo.newBuilder();
         itemBuilder.setIsWork(!Process.myUserHandle().equals(user));
+        SettingsCache settingsCache = SettingsCache.INSTANCE.getNoCreate();
+        boolean isKidsMode = settingsCache != null && settingsCache.getValue(NAV_BAR_KIDS_MODE, 0);
+        itemBuilder.setIsKidsMode(isKidsMode);
         itemBuilder.setRank(rank);
         return itemBuilder;
     }
@@ -383,6 +430,7 @@
     /**
      * Returns {@link ContainerInfo} used when logging this item.
      */
+    @NonNull
     public ContainerInfo getContainerInfo() {
         switch (container) {
             case CONTAINER_HOTSEAT:
@@ -415,10 +463,6 @@
                 return ContainerInfo.newBuilder()
                         .setPredictionContainer(PredictionContainer.getDefaultInstance())
                         .build();
-            case CONTAINER_SEARCH_RESULTS:
-                return ContainerInfo.newBuilder()
-                        .setSearchResultContainer(SearchResultContainer.getDefaultInstance())
-                        .build();
             case CONTAINER_SHORTCUTS:
                 return ContainerInfo.newBuilder()
                         .setShortcutsContainer(ShortcutsContainer.getDefaultInstance())
@@ -435,10 +479,12 @@
                 return ContainerInfo.newBuilder()
                         .setWallpapersContainer(WallpapersContainer.getDefaultInstance())
                         .build();
-            case EXTENDED_CONTAINERS:
-                return ContainerInfo.newBuilder()
-                        .setExtendedContainers(getExtendedContainer())
-                        .build();
+            default:
+                if (container <= EXTENDED_CONTAINERS) {
+                    return ContainerInfo.newBuilder()
+                            .setExtendedContainers(getExtendedContainer())
+                            .build();
+                }
         }
         return ContainerInfo.getDefaultInstance();
     }
@@ -447,6 +493,7 @@
      * Returns non-AOSP container wrapped by {@link ExtendedContainers} object. Should be overridden
      * by build variants.
      */
+    @NonNull
     protected ExtendedContainers getExtendedContainer() {
         return ExtendedContainers.getDefaultInstance();
     }
@@ -454,6 +501,7 @@
     /**
      * Returns shallow copy of the object.
      */
+    @NonNull
     public ItemInfo makeShallowCopy() {
         ItemInfo itemInfo = new ItemInfo();
         itemInfo.copyFrom(this);
@@ -463,7 +511,8 @@
     /**
      * Sets the title of the item and writes to DB model if needed.
      */
-    public void setTitle(CharSequence title, ModelWriter modelWriter) {
+    public void setTitle(@Nullable final CharSequence title,
+            @Nullable final ModelWriter modelWriter) {
         this.title = title;
     }
 }
diff --git a/src/com/android/launcher3/model/data/ItemInfoWithIcon.java b/src/com/android/launcher3/model/data/ItemInfoWithIcon.java
index 76a0c4d..e5fb015 100644
--- a/src/com/android/launcher3/model/data/ItemInfoWithIcon.java
+++ b/src/com/android/launcher3/model/data/ItemInfoWithIcon.java
@@ -16,7 +16,6 @@
 
 package com.android.launcher3.model.data;
 
-import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 
@@ -220,10 +219,10 @@
     /** Creates an intent to that launches the app store at this app's page. */
     @Nullable
     public Intent getMarketIntent(Context context) {
-        ComponentName componentName = getTargetComponent();
+        String targetPackage = getTargetPackage();
 
-        return componentName != null
-                ? new PackageManagerHelper(context).getMarketIntent(componentName.getPackageName())
+        return targetPackage != null
+                ? new PackageManagerHelper(context).getMarketIntent(targetPackage)
                 : null;
     }
 
diff --git a/src/com/android/launcher3/model/data/LauncherAppWidgetInfo.java b/src/com/android/launcher3/model/data/LauncherAppWidgetInfo.java
index e57a895..1fbe04f 100644
--- a/src/com/android/launcher3/model/data/LauncherAppWidgetInfo.java
+++ b/src/com/android/launcher3/model/data/LauncherAppWidgetInfo.java
@@ -29,6 +29,7 @@
 import android.content.res.Resources;
 import android.os.Process;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import com.android.launcher3.Launcher;
@@ -191,7 +192,7 @@
     }
 
     @Override
-    public void onAddToDatabase(ContentWriter writer) {
+    public void onAddToDatabase(@NonNull ContentWriter writer) {
         super.onAddToDatabase(writer);
         writer.put(LauncherSettings.Favorites.APPWIDGET_ID, appWidgetId)
                 .put(LauncherSettings.Favorites.APPWIDGET_PROVIDER, providerName.flattenToString())
@@ -283,8 +284,9 @@
         }
     }
 
+    @NonNull
     @Override
-    public LauncherAtom.ItemInfo buildProto(FolderInfo folderInfo) {
+    public LauncherAtom.ItemInfo buildProto(@Nullable FolderInfo folderInfo) {
         LauncherAtom.ItemInfo info = super.buildProto(folderInfo);
         return info.toBuilder()
                 .setWidget(info.getWidget().toBuilder().setWidgetFeatures(widgetFeatures))
diff --git a/src/com/android/launcher3/model/data/SearchActionItemInfo.java b/src/com/android/launcher3/model/data/SearchActionItemInfo.java
deleted file mode 100644
index e879313..0000000
--- a/src/com/android/launcher3/model/data/SearchActionItemInfo.java
+++ /dev/null
@@ -1,186 +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.launcher3.model.data;
-
-import static com.android.launcher3.LauncherSettings.Favorites.EXTENDED_CONTAINERS;
-
-import android.app.PendingIntent;
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.drawable.Icon;
-import android.os.Process;
-import android.os.UserHandle;
-
-import androidx.annotation.Nullable;
-
-import com.android.launcher3.LauncherAppState;
-import com.android.launcher3.LauncherSettings;
-import com.android.launcher3.logger.LauncherAtom.ItemInfo;
-import com.android.launcher3.logger.LauncherAtom.SearchActionItem;
-
-/**
- * Represents a SearchAction with in launcher
- */
-public class SearchActionItemInfo extends ItemInfoWithIcon implements WorkspaceItemFactory {
-
-    public static final int FLAG_SHOULD_START = 1 << 1;
-    public static final int FLAG_SHOULD_START_FOR_RESULT = FLAG_SHOULD_START | 1 << 2;
-    public static final int FLAG_BADGE_WITH_PACKAGE = 1 << 3;
-    public static final int FLAG_PRIMARY_ICON_FROM_TITLE = 1 << 4;
-    public static final int FLAG_BADGE_WITH_COMPONENT_NAME = 1 << 5;
-    public static final int FLAG_ALLOW_PINNING = 1 << 6;
-    public static final int FLAG_SEARCH_IN_APP = 1 << 7;
-
-    private String mFallbackPackageName;
-    private int mFlags = 0;
-    private Icon mIcon;
-
-    // If true title does not contain any personal info and eligible for logging.
-    private boolean mIsPersonalTitle;
-    private Intent mIntent;
-
-    private PendingIntent mPendingIntent;
-
-    public SearchActionItemInfo(Icon icon, String packageName, UserHandle user,
-            CharSequence title, boolean isPersonalTitle) {
-        mIsPersonalTitle = isPersonalTitle;
-        this.itemType = LauncherSettings.Favorites.ITEM_TYPE_SEARCH_ACTION;
-        this.user = user == null ? Process.myUserHandle() : user;
-        this.title = title;
-        this.container = EXTENDED_CONTAINERS;
-        mFallbackPackageName = packageName;
-        mIcon = icon;
-    }
-
-    private SearchActionItemInfo(SearchActionItemInfo info) {
-        super(info);
-    }
-
-    @Override
-    public void copyFrom(com.android.launcher3.model.data.ItemInfo info) {
-        super.copyFrom(info);
-        SearchActionItemInfo itemInfo = (SearchActionItemInfo) info;
-        this.mFallbackPackageName = itemInfo.mFallbackPackageName;
-        this.mIcon = itemInfo.mIcon;
-        this.mFlags = itemInfo.mFlags;
-        this.mIsPersonalTitle = itemInfo.mIsPersonalTitle;
-    }
-
-    /**
-     * Returns if multiple flags are all available.
-     */
-    public boolean hasFlags(int flags) {
-        return (mFlags & flags) != 0;
-    }
-
-    public void setFlags(int flags) {
-        mFlags |= flags;
-    }
-
-    @Override
-    public Intent getIntent() {
-        return mIntent;
-    }
-
-    /**
-     * Setter for mIntent with assertion for null value mPendingIntent
-     */
-    public void setIntent(Intent intent) {
-        if (mPendingIntent != null && intent != null) {
-            throw new RuntimeException(
-                    "SearchActionItemInfo can only have either an Intent or a PendingIntent");
-        }
-        mIntent = intent;
-    }
-
-    public PendingIntent getPendingIntent() {
-        return mPendingIntent;
-    }
-
-    /**
-     * Setter of mPendingIntent with assertion for null value mIntent
-     */
-    public void setPendingIntent(PendingIntent pendingIntent) {
-        if (mIntent != null && pendingIntent != null) {
-            throw new RuntimeException(
-                    "SearchActionItemInfo can only have either an Intent or a PendingIntent");
-        }
-        mPendingIntent = pendingIntent;
-    }
-
-    @Nullable
-    public Icon getIcon() {
-        return mIcon;
-    }
-
-    @Override
-    public ItemInfoWithIcon clone() {
-        return new SearchActionItemInfo(this);
-    }
-
-    @Override
-    public ItemInfo buildProto(FolderInfo fInfo) {
-        SearchActionItem.Builder itemBuilder = SearchActionItem.newBuilder()
-                .setPackageName(mFallbackPackageName);
-
-        if (!mIsPersonalTitle) {
-            itemBuilder.setTitle(title.toString());
-        }
-        return getDefaultItemInfoBuilder()
-                .setSearchActionItem(itemBuilder)
-                .setContainerInfo(getContainerInfo())
-                .build();
-    }
-
-    /**
-     * Returns true if result supports drag/drop to home screen
-     */
-    public boolean supportsPinning() {
-        return hasFlags(FLAG_ALLOW_PINNING) && getIntentPackageName() != null;
-    }
-
-    /**
-     * Creates a {@link WorkspaceItemInfo} coorsponding to search action to be stored in launcher db
-     */
-    @Override
-    public WorkspaceItemInfo makeWorkspaceItem(Context context) {
-        WorkspaceItemInfo info = new WorkspaceItemInfo();
-        info.title = title;
-        info.bitmap = bitmap;
-        info.intent = mIntent;
-
-        if (hasFlags(FLAG_SHOULD_START_FOR_RESULT)) {
-            info.options |= WorkspaceItemInfo.FLAG_START_FOR_RESULT;
-        }
-        LauncherAppState app = LauncherAppState.getInstance(context);
-        app.getModel().updateAndBindWorkspaceItem(() -> {
-            PackageItemInfo pkgInfo = new PackageItemInfo(getIntentPackageName(), user);
-            app.getIconCache().getTitleAndIconForApp(pkgInfo, false);
-            info.bitmap = info.bitmap.withBadgeInfo(pkgInfo.bitmap);
-            return info;
-        });
-        return info;
-    }
-
-    @Nullable
-    private String getIntentPackageName() {
-        if (mIntent != null) {
-            if (mIntent.getPackage() != null) return mIntent.getPackage();
-            return mFallbackPackageName;
-        }
-        return null;
-    }
-}
diff --git a/src/com/android/launcher3/model/data/WorkspaceItemInfo.java b/src/com/android/launcher3/model/data/WorkspaceItemInfo.java
index 2b3da33..01606d4 100644
--- a/src/com/android/launcher3/model/data/WorkspaceItemInfo.java
+++ b/src/com/android/launcher3/model/data/WorkspaceItemInfo.java
@@ -75,15 +75,10 @@
     /**
      * The intent used to start the application.
      */
+    @NonNull
     public Intent intent;
 
     /**
-     * If isShortcut=true and customIcon=false, this contains a reference to the
-     * shortcut icon as an application's resource.
-     */
-    public Intent.ShortcutIconResource iconResource;
-
-    /**
      * A message to display when the user tries to start a disabled shortcut.
      * This is currently only used for deep shortcuts.
      */
@@ -108,7 +103,6 @@
         super(info);
         title = info.title;
         intent = new Intent(info.intent);
-        iconResource = info.iconResource;
         status = info.status;
         personKeys = info.personKeys.clone();
     }
@@ -130,7 +124,7 @@
     }
 
     @Override
-    public void onAddToDatabase(ContentWriter writer) {
+    public void onAddToDatabase(@NonNull ContentWriter writer) {
         super.onAddToDatabase(writer);
         writer.put(Favorites.TITLE, title)
                 .put(Favorites.INTENT, getIntent())
@@ -140,13 +134,10 @@
         if (!usingLowResIcon()) {
             writer.putIcon(bitmap, user);
         }
-        if (iconResource != null) {
-            writer.put(Favorites.ICON_PACKAGE, iconResource.packageName)
-                    .put(Favorites.ICON_RESOURCE, iconResource.resourceName);
-        }
     }
 
     @Override
+    @NonNull
     public Intent getIntent() {
         return intent;
     }
@@ -164,7 +155,8 @@
         return isPromise() && !hasStatusFlag(FLAG_SUPPORTS_WEB_UI);
     }
 
-    public void updateFromDeepShortcutInfo(ShortcutInfo shortcutInfo, Context context) {
+    public void updateFromDeepShortcutInfo(@NonNull final ShortcutInfo shortcutInfo,
+            @NonNull final Context context) {
         // {@link ShortcutInfo#getActivity} can change during an update. Recreate the intent
         intent = ShortcutKey.makeIntent(shortcutInfo);
         title = shortcutInfo.getShortLabel();
diff --git a/src/com/android/launcher3/pageindicators/PageIndicator.java b/src/com/android/launcher3/pageindicators/PageIndicator.java
index ec69193..570d6ff 100644
--- a/src/com/android/launcher3/pageindicators/PageIndicator.java
+++ b/src/com/android/launcher3/pageindicators/PageIndicator.java
@@ -46,4 +46,11 @@
     default void skipAnimationsToEnd() {
         // No-op by default
     }
+
+    /**
+     * Sets the paint color.
+     */
+    default void setPaintColor(int color) {
+        // No-op by default
+    }
 }
diff --git a/src/com/android/launcher3/pageindicators/PageIndicatorDots.java b/src/com/android/launcher3/pageindicators/PageIndicatorDots.java
index 29eefe2..b2c64b3 100644
--- a/src/com/android/launcher3/pageindicators/PageIndicatorDots.java
+++ b/src/com/android/launcher3/pageindicators/PageIndicatorDots.java
@@ -16,6 +16,8 @@
 
 package com.android.launcher3.pageindicators;
 
+import static com.android.launcher3.config.FeatureFlags.SHOW_DOT_PAGINATION;
+
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.AnimatorSet;
@@ -27,14 +29,22 @@
 import android.graphics.Outline;
 import android.graphics.Paint;
 import android.graphics.Paint.Style;
+import android.graphics.Rect;
 import android.graphics.RectF;
+import android.os.Handler;
+import android.os.Looper;
 import android.util.AttributeSet;
-import android.util.Property;
+import android.util.FloatProperty;
+import android.util.IntProperty;
 import android.view.View;
+import android.view.ViewConfiguration;
 import android.view.ViewOutlineProvider;
 import android.view.animation.Interpolator;
 import android.view.animation.OvershootInterpolator;
 
+import androidx.annotation.Nullable;
+
+import com.android.launcher3.Insettable;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.util.Themes;
@@ -43,61 +53,91 @@
  * {@link PageIndicator} which shows dots per page. The active page is shown with the current
  * accent color.
  */
-public class PageIndicatorDots extends View implements PageIndicator {
+public class PageIndicatorDots extends View implements Insettable, PageIndicator {
 
     private static final float SHIFT_PER_ANIMATION = 0.5f;
     private static final float SHIFT_THRESHOLD = 0.1f;
     private static final long ANIMATION_DURATION = 150;
+    private static final int PAGINATION_FADE_DELAY = ViewConfiguration.getScrollDefaultDelay();
+    private static final int PAGINATION_FADE_IN_DURATION = 83;
+    private static final int PAGINATION_FADE_OUT_DURATION = 167;
 
     private static final int ENTER_ANIMATION_START_DELAY = 300;
     private static final int ENTER_ANIMATION_STAGGERED_DELAY = 150;
     private static final int ENTER_ANIMATION_DURATION = 400;
 
-    private static final int DOT_ACTIVE_ALPHA = 255;
-    private static final int DOT_INACTIVE_ALPHA = 128;
+    private static final int PAGE_INDICATOR_ALPHA = 255;
+    private static final int DOT_ALPHA = 128;
+    private static final float DOT_ALPHA_FRACTION = 0.5f;
+    private static final int DOT_GAP_FACTOR = SHOW_DOT_PAGINATION.get() ? 4 : 3;
+    private static final int VISIBLE_ALPHA = 255;
+    private static final int INVISIBLE_ALPHA = 0;
+    private Paint mPaginationPaint;
 
     // This value approximately overshoots to 1.5 times the original size.
     private static final float ENTER_ANIMATION_OVERSHOOT_TENSION = 4.9f;
 
     private static final RectF sTempRect = new RectF();
 
-    private static final Property<PageIndicatorDots, Float> CURRENT_POSITION
-            = new Property<PageIndicatorDots, Float>(float.class, "current_position") {
+    private static final FloatProperty<PageIndicatorDots> CURRENT_POSITION =
+            new FloatProperty<PageIndicatorDots>("current_position") {
+                @Override
+                public Float get(PageIndicatorDots obj) {
+                    return obj.mCurrentPosition;
+                }
+
+                @Override
+                public void setValue(PageIndicatorDots obj, float pos) {
+                    obj.mCurrentPosition = pos;
+                    obj.invalidate();
+                    obj.invalidateOutline();
+                }
+    };
+
+    private static final IntProperty<PageIndicatorDots> PAGINATION_ALPHA =
+            new IntProperty<PageIndicatorDots>("pagination_alpha") {
         @Override
-        public Float get(PageIndicatorDots obj) {
-            return obj.mCurrentPosition;
+        public Integer get(PageIndicatorDots obj) {
+            return obj.mPaginationPaint.getAlpha();
         }
 
         @Override
-        public void set(PageIndicatorDots obj, Float pos) {
-            obj.mCurrentPosition = pos;
+        public void setValue(PageIndicatorDots obj, int alpha) {
+            obj.mPaginationPaint.setAlpha(alpha);
             obj.invalidate();
-            obj.invalidateOutline();
         }
     };
 
-    private final Paint mCirclePaint;
+    private final Handler mDelayedPaginationFadeHandler = new Handler(Looper.getMainLooper());
     private final float mDotRadius;
+    private final float mCircleGap;
     private final boolean mIsRtl;
 
     private int mNumPages;
     private int mActivePage;
+    private int mTotalScroll;
+    private boolean mShouldAutoHide;
+    private int mToAlpha;
 
     /**
      * The current position of the active dot including the animation progress.
      * For ex:
-     *   0.0  => Active dot is at position 0
-     *   0.33 => Active dot is at position 0 and is moving towards 1
-     *   0.50 => Active dot is at position [0, 1]
-     *   0.77 => Active dot has left position 0 and is collapsing towards position 1
-     *   1.0  => Active dot is at position 1
+     * 0.0  => Active dot is at position 0
+     * 0.33 => Active dot is at position 0 and is moving towards 1
+     * 0.50 => Active dot is at position [0, 1]
+     * 0.77 => Active dot has left position 0 and is collapsing towards position 1
+     * 1.0  => Active dot is at position 1
      */
     private float mCurrentPosition;
     private float mFinalPosition;
     private ObjectAnimator mAnimator;
+    private @Nullable ObjectAnimator mAlphaAnimator;
 
     private float[] mEntryAnimationRadiusFactors;
 
+    private final Runnable mHidePaginationRunnable =
+            () -> animatePaginationToAlpha(INVISIBLE_ALPHA);
+
     public PageIndicatorDots(Context context) {
         this(context, null);
     }
@@ -109,37 +149,129 @@
     public PageIndicatorDots(Context context, AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr);
 
-        mCirclePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
-        mCirclePaint.setStyle(Style.FILL);
-        mCirclePaint.setColor(Themes.getAttrColor(context, R.attr.folderPaginationColor));
-        mDotRadius = getResources().getDimension(R.dimen.page_indicator_dot_size) / 2;
+        mPaginationPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+        mPaginationPaint.setStyle(Style.FILL);
+        mPaginationPaint.setColor(Themes.getAttrColor(context, R.attr.folderPaginationColor));
+        mDotRadius = (SHOW_DOT_PAGINATION.get()
+                ? getResources().getDimension(R.dimen.page_indicator_dot_size_v2)
+                : getResources().getDimension(R.dimen.page_indicator_dot_size))
+                / 2;
+        mCircleGap = DOT_GAP_FACTOR * mDotRadius;
         setOutlineProvider(new MyOutlineProver());
-
         mIsRtl = Utilities.isRtl(getResources());
     }
 
     @Override
     public void setScroll(int currentScroll, int totalScroll) {
-        if (mNumPages > 1) {
-            if (mIsRtl) {
-                currentScroll = totalScroll - currentScroll;
-            }
-            int scrollPerPage = totalScroll / (mNumPages - 1);
-            int pageToLeft = currentScroll / scrollPerPage;
-            int pageToLeftScroll = pageToLeft * scrollPerPage;
-            int pageToRightScroll = pageToLeftScroll + scrollPerPage;
+        if (SHOW_DOT_PAGINATION.get() && mActivePage != 0 && currentScroll == 0) {
+            CURRENT_POSITION.set(this, (float) mActivePage);
+            return;
+        }
 
-            float scrollThreshold = SHIFT_THRESHOLD * scrollPerPage;
-            if (currentScroll < pageToLeftScroll + scrollThreshold) {
-                // scroll is within the left page's threshold
-                animateToPosition(pageToLeft);
-            } else if (currentScroll > pageToRightScroll - scrollThreshold) {
-                // scroll is far enough from left page to go to the right page
-                animateToPosition(pageToLeft + 1);
-            } else {
-                // scroll is between left and right page
-                animateToPosition(pageToLeft + SHIFT_PER_ANIMATION);
+        if (mNumPages <= 1) {
+            return;
+        }
+
+        if (mShouldAutoHide) {
+            animatePaginationToAlpha(VISIBLE_ALPHA);
+        }
+
+        if (mIsRtl) {
+            currentScroll = totalScroll - currentScroll;
+        }
+
+        mTotalScroll = totalScroll;
+
+        int scrollPerPage = totalScroll / (mNumPages - 1);
+        int pageToLeft = scrollPerPage == 0 ? 0 : currentScroll / scrollPerPage;
+        int pageToLeftScroll = pageToLeft * scrollPerPage;
+        int pageToRightScroll = pageToLeftScroll + scrollPerPage;
+
+        float scrollThreshold = SHIFT_THRESHOLD * scrollPerPage;
+        if (currentScroll < pageToLeftScroll + scrollThreshold) {
+            // scroll is within the left page's threshold
+            animateToPosition(pageToLeft);
+            if (mShouldAutoHide) {
+                hideAfterDelay();
             }
+        } else if (currentScroll > pageToRightScroll - scrollThreshold) {
+            // scroll is far enough from left page to go to the right page
+            animateToPosition(pageToLeft + 1);
+            if (mShouldAutoHide) {
+                hideAfterDelay();
+            }
+        } else {
+            // scroll is between left and right page
+            animateToPosition(pageToLeft + SHIFT_PER_ANIMATION);
+            if (mShouldAutoHide) {
+                mDelayedPaginationFadeHandler.removeCallbacksAndMessages(null);
+            }
+        }
+    }
+
+    @Override
+    public void setShouldAutoHide(boolean shouldAutoHide) {
+        mShouldAutoHide = shouldAutoHide && SHOW_DOT_PAGINATION.get();
+        if (shouldAutoHide && mPaginationPaint.getAlpha() > INVISIBLE_ALPHA) {
+            hideAfterDelay();
+        } else if (!shouldAutoHide) {
+            mDelayedPaginationFadeHandler.removeCallbacksAndMessages(null);
+        }
+    }
+
+    @Override
+    public void setPaintColor(int color) {
+        mPaginationPaint.setColor(color);
+    }
+
+    private void hideAfterDelay() {
+        mDelayedPaginationFadeHandler.removeCallbacksAndMessages(null);
+        mDelayedPaginationFadeHandler.postDelayed(mHidePaginationRunnable, PAGINATION_FADE_DELAY);
+    }
+
+    private void animatePaginationToAlpha(int alpha) {
+        if (alpha == mToAlpha) {
+            // Ignore the new animation if it is going to the same alpha as the current animation.
+            return;
+        }
+
+        if (mAlphaAnimator != null) {
+            mAlphaAnimator.cancel();
+        }
+        mAlphaAnimator = ObjectAnimator.ofInt(this, PAGINATION_ALPHA,
+                alpha);
+        // If we are animating to decrease the alpha, then it's a fade out animation
+        // whereas if we are animating to increase the alpha, it's a fade in animation.
+        mAlphaAnimator.setDuration(alpha < mToAlpha
+                ? PAGINATION_FADE_OUT_DURATION
+                : PAGINATION_FADE_IN_DURATION);
+        mAlphaAnimator.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                mAlphaAnimator = null;
+            }
+        });
+        mAlphaAnimator.start();
+        mToAlpha = alpha;
+    }
+
+    /**
+     * Pauses all currently running animations.
+     */
+    @Override
+    public void pauseAnimations() {
+        if (mAlphaAnimator != null) {
+            mAlphaAnimator.pause();
+        }
+    }
+
+    /**
+     * Force-ends all currently running or paused animations.
+     */
+    @Override
+    public void skipAnimationsToEnd() {
+        if (mAlphaAnimator != null) {
+            mAlphaAnimator.end();
         }
     }
 
@@ -177,7 +309,7 @@
     }
 
     public void playEntryAnimation() {
-        int count  = mEntryAnimationRadiusFactors.length;
+        int count = mEntryAnimationRadiusFactors.length;
         if (count == 0) {
             mEntryAnimationRadiusFactors = null;
             invalidate();
@@ -231,16 +363,25 @@
         // Add extra spacing of mDotRadius on all sides so than entry animation could be run.
         int width = MeasureSpec.getMode(widthMeasureSpec) == MeasureSpec.EXACTLY ?
                 MeasureSpec.getSize(widthMeasureSpec) : (int) ((mNumPages * 3 + 2) * mDotRadius);
-        int height= MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.EXACTLY ?
-                MeasureSpec.getSize(heightMeasureSpec) : (int) (4 * mDotRadius);
+        int height = MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.EXACTLY
+                ? MeasureSpec.getSize(heightMeasureSpec) : (int) (4 * mDotRadius);
         setMeasuredDimension(width, height);
     }
 
     @Override
     protected void onDraw(Canvas canvas) {
+        if (mNumPages < 2) {
+            return;
+        }
+
+        if (mShouldAutoHide && mTotalScroll == 0) {
+            mPaginationPaint.setAlpha(INVISIBLE_ALPHA);
+            return;
+        }
+
         // Draw all page indicators;
-        float circleGap = 3 * mDotRadius;
-        float startX = (getWidth() - mNumPages * circleGap + mDotRadius) / 2;
+        float circleGap = mCircleGap;
+        float startX = (getWidth() - (mNumPages * circleGap) + mDotRadius) / 2;
 
         float x = startX + mDotRadius;
         float y = getHeight() / 2;
@@ -252,19 +393,26 @@
                 circleGap = -circleGap;
             }
             for (int i = 0; i < mEntryAnimationRadiusFactors.length; i++) {
-                mCirclePaint.setAlpha(i == mActivePage ? DOT_ACTIVE_ALPHA : DOT_INACTIVE_ALPHA);
-                canvas.drawCircle(x, y, mDotRadius * mEntryAnimationRadiusFactors[i], mCirclePaint);
+                mPaginationPaint.setAlpha(i == mActivePage ? PAGE_INDICATOR_ALPHA : DOT_ALPHA);
+                canvas.drawCircle(x, y, mDotRadius * mEntryAnimationRadiusFactors[i],
+                        mPaginationPaint);
                 x += circleGap;
             }
         } else {
-            mCirclePaint.setAlpha(DOT_INACTIVE_ALPHA);
+            int alpha = mPaginationPaint.getAlpha();
+
+            // Here we draw the dots
+            mPaginationPaint.setAlpha(SHOW_DOT_PAGINATION.get()
+                    ? ((int) (alpha * DOT_ALPHA_FRACTION))
+                    : DOT_ALPHA);
             for (int i = 0; i < mNumPages; i++) {
-                canvas.drawCircle(x, y, mDotRadius, mCirclePaint);
+                canvas.drawCircle(x, y, mDotRadius, mPaginationPaint);
                 x += circleGap;
             }
 
-            mCirclePaint.setAlpha(DOT_ACTIVE_ALPHA);
-            canvas.drawRoundRect(getActiveRect(), mDotRadius, mDotRadius, mCirclePaint);
+            // Here we draw the current page indicator
+            mPaginationPaint.setAlpha(SHOW_DOT_PAGINATION.get() ? alpha : PAGE_INDICATOR_ALPHA);
+            canvas.drawRoundRect(getActiveRect(), mDotRadius, mDotRadius, mPaginationPaint);
         }
     }
 
@@ -272,23 +420,23 @@
         float startCircle = (int) mCurrentPosition;
         float delta = mCurrentPosition - startCircle;
         float diameter = 2 * mDotRadius;
-        float circleGap = 3 * mDotRadius;
-        float startX = (getWidth() - mNumPages * circleGap + mDotRadius) / 2;
+        float startX;
 
-        sTempRect.top = getHeight() * 0.5f - mDotRadius;
-        sTempRect.bottom = getHeight() * 0.5f + mDotRadius;
-        sTempRect.left = startX + startCircle * circleGap;
+        startX = ((getWidth() - (mNumPages * mCircleGap) + mDotRadius) / 2);
+        sTempRect.top = (getHeight() * 0.5f) - mDotRadius;
+        sTempRect.bottom = (getHeight() * 0.5f) + mDotRadius;
+        sTempRect.left = startX + (startCircle * mCircleGap);
         sTempRect.right = sTempRect.left + diameter;
 
         if (delta < SHIFT_PER_ANIMATION) {
             // dot is capturing the right circle.
-            sTempRect.right += delta * circleGap * 2;
+            sTempRect.right += delta * mCircleGap * 2;
         } else {
             // Dot is leaving the left circle.
-            sTempRect.right += circleGap;
+            sTempRect.right += mCircleGap;
 
             delta -= SHIFT_PER_ANIMATION;
-            sTempRect.left += delta * circleGap * 2;
+            sTempRect.left += delta * mCircleGap * 2;
         }
 
         if (mIsRtl) {
@@ -296,6 +444,7 @@
             sTempRect.right = getWidth() - sTempRect.left;
             sTempRect.left = sTempRect.right - rectWidth;
         }
+
         return sTempRect;
     }
 
@@ -331,9 +480,20 @@
         @Override
         public void onAnimationEnd(Animator animation) {
             if (!mCancelled) {
+                if (mShouldAutoHide && SHOW_DOT_PAGINATION.get()) {
+                    hideAfterDelay();
+                }
                 mAnimator = null;
                 animateToPosition(mFinalPosition);
             }
         }
     }
+
+    /**
+     * We need to override setInsets to prevent InsettableFrameLayout from applying different
+     * margins on the pagination.
+     */
+    @Override
+    public void setInsets(Rect insets) {
+    }
 }
diff --git a/src/com/android/launcher3/pageindicators/WorkspacePageIndicator.java b/src/com/android/launcher3/pageindicators/WorkspacePageIndicator.java
index 1681ea5..bde4e52 100644
--- a/src/com/android/launcher3/pageindicators/WorkspacePageIndicator.java
+++ b/src/com/android/launcher3/pageindicators/WorkspacePageIndicator.java
@@ -14,12 +14,9 @@
 import android.os.Looper;
 import android.util.AttributeSet;
 import android.util.Property;
-import android.view.Gravity;
 import android.view.View;
 import android.view.ViewConfiguration;
-import android.widget.FrameLayout;
 
-import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Insettable;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.R;
@@ -258,21 +255,11 @@
         }
     }
 
+    /**
+     * We need to override setInsets to prevent InsettableFrameLayout from applying different
+     * margins on the page indicator.
+     */
     @Override
     public void setInsets(Rect insets) {
-        DeviceProfile grid = mLauncher.getDeviceProfile();
-        FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) getLayoutParams();
-
-        if (grid.isVerticalBarLayout()) {
-            Rect padding = grid.workspacePadding;
-            lp.leftMargin = padding.left + grid.workspaceCellPaddingXPx;
-            lp.rightMargin = padding.right + grid.workspaceCellPaddingXPx;
-            lp.bottomMargin = padding.bottom;
-        } else {
-            lp.leftMargin = lp.rightMargin = 0;
-            lp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM;
-            lp.bottomMargin = grid.hotseatBarSizePx + insets.bottom;
-        }
-        setLayoutParams(lp);
     }
 }
diff --git a/src/com/android/launcher3/pm/InstallSessionHelper.java b/src/com/android/launcher3/pm/InstallSessionHelper.java
index 618f926..cb3c16c 100644
--- a/src/com/android/launcher3/pm/InstallSessionHelper.java
+++ b/src/com/android/launcher3/pm/InstallSessionHelper.java
@@ -16,8 +16,6 @@
 
 package com.android.launcher3.pm;
 
-import static com.android.launcher3.Utilities.getPrefs;
-
 import android.content.Context;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.LauncherApps;
@@ -27,19 +25,16 @@
 import android.os.Process;
 import android.os.UserHandle;
 import android.text.TextUtils;
-import android.util.Log;
 
 import androidx.annotation.NonNull;
-import androidx.annotation.RequiresApi;
+import androidx.annotation.Nullable;
 import androidx.annotation.WorkerThread;
 
-import com.android.launcher3.LauncherSettings;
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.SessionCommitReceiver;
 import com.android.launcher3.Utilities;
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.logging.FileLog;
 import com.android.launcher3.model.ItemInstallQueue;
-import com.android.launcher3.testing.TestProtocol;
 import com.android.launcher3.util.IntArray;
 import com.android.launcher3.util.IntSet;
 import com.android.launcher3.util.MainThreadInitializedObject;
@@ -51,45 +46,57 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * Utility class to tracking install sessions
  */
 public class InstallSessionHelper {
 
+    @NonNull
     private static final String LOG = "InstallSessionHelper";
 
     // Set<String> of session ids of promise icons that have been added to the home screen
     // as FLAG_PROMISE_NEW_INSTALLS.
-    protected static final String PROMISE_ICON_IDS = "promise_icon_ids";
+    @NonNull
+    public static final String PROMISE_ICON_IDS = "promise_icon_ids";
 
     private static final boolean DEBUG = false;
 
+    @NonNull
     public static final MainThreadInitializedObject<InstallSessionHelper> INSTANCE =
             new MainThreadInitializedObject<>(InstallSessionHelper::new);
 
+    @Nullable
     private final LauncherApps mLauncherApps;
+
+    @NonNull
     private final Context mAppContext;
 
+    @NonNull
     private final PackageInstaller mInstaller;
+
+    @NonNull
     private final HashMap<String, Boolean> mSessionVerifiedMap = new HashMap<>();
 
+    @Nullable
     private IntSet mPromiseIconIds;
 
-    public InstallSessionHelper(Context context) {
+    public InstallSessionHelper(@NonNull final Context context) {
         mInstaller = context.getPackageManager().getPackageInstaller();
         mAppContext = context.getApplicationContext();
         mLauncherApps = context.getSystemService(LauncherApps.class);
     }
 
     @WorkerThread
+    @NonNull
     private IntSet getPromiseIconIds() {
         Preconditions.assertWorkerThread();
         if (mPromiseIconIds != null) {
             return mPromiseIconIds;
         }
         mPromiseIconIds = IntSet.wrap(IntArray.fromConcatString(
-                getPrefs(mAppContext).getString(PROMISE_ICON_IDS, "")));
+                LauncherPrefs.get(mAppContext).get(LauncherPrefs.PROMISE_ICON_IDS)));
 
         IntArray existingIds = new IntArray();
         for (SessionInfo info : getActiveSessions().values()) {
@@ -108,6 +115,7 @@
         return mPromiseIconIds;
     }
 
+    @NonNull
     public HashMap<PackageUserKey, SessionInfo> getActiveSessions() {
         HashMap<PackageUserKey, SessionInfo> activePackages = new HashMap<>();
         for (SessionInfo info : getAllVerifiedSessions()) {
@@ -117,6 +125,7 @@
         return activePackages;
     }
 
+    @Nullable
     public SessionInfo getActiveSessionInfo(UserHandle user, String pkg) {
         for (SessionInfo info : getAllVerifiedSessions()) {
             boolean match = pkg.equals(info.getAppPackageName());
@@ -131,45 +140,45 @@
     }
 
     private void updatePromiseIconPrefs() {
-        getPrefs(mAppContext).edit()
-                .putString(PROMISE_ICON_IDS, getPromiseIconIds().getArray().toConcatString())
-                .apply();
+        LauncherPrefs.get(mAppContext).put(LauncherPrefs.PROMISE_ICON_IDS,
+                getPromiseIconIds().getArray().toConcatString());
     }
 
-    SessionInfo getVerifiedSessionInfo(int sessionId) {
+    @Nullable
+    SessionInfo getVerifiedSessionInfo(final int sessionId) {
         return verify(mInstaller.getSessionInfo(sessionId));
     }
 
-    private SessionInfo verify(SessionInfo sessionInfo) {
+    @Nullable
+    private SessionInfo verify(@Nullable final SessionInfo sessionInfo) {
         if (sessionInfo == null
                 || sessionInfo.getInstallerPackageName() == null
                 || TextUtils.isEmpty(sessionInfo.getAppPackageName())) {
-            if (TestProtocol.sDebugTracing) {
-                Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + " verify"
-                        + ", info=" + (sessionInfo == null)
-                        + ", info install name" + (sessionInfo == null
-                                ? null
-                                : sessionInfo.getInstallerPackageName())
-                        + ", empty pkg name" + TextUtils.isEmpty((sessionInfo == null
-                                ? null
-                                : sessionInfo.getAppPackageName())));
-            }
             return null;
         }
-        String pkg = sessionInfo.getInstallerPackageName();
-        synchronized (mSessionVerifiedMap) {
-            if (!mSessionVerifiedMap.containsKey(pkg)) {
-                boolean hasSystemFlag = new PackageManagerHelper(mAppContext).getApplicationInfo(
-                        pkg, getUserHandle(sessionInfo), ApplicationInfo.FLAG_SYSTEM) != null;
-                mSessionVerifiedMap.put(pkg, DEBUG || hasSystemFlag);
-            }
-        }
-        return mSessionVerifiedMap.get(pkg) ? sessionInfo : null;
+        return isTrustedPackage(sessionInfo.getInstallerPackageName(), getUserHandle(sessionInfo))
+                ? sessionInfo : null;
     }
 
+    /**
+     * Returns true if the provided packageName can be trusted for user configurations
+     */
+    public boolean isTrustedPackage(String pkg, UserHandle user) {
+        synchronized (mSessionVerifiedMap) {
+            if (!mSessionVerifiedMap.containsKey(pkg)) {
+                boolean hasSystemFlag = DEBUG || mAppContext.getPackageName().equals(pkg)
+                        || new PackageManagerHelper(mAppContext)
+                                .getApplicationInfo(pkg, user, ApplicationInfo.FLAG_SYSTEM) != null;
+                mSessionVerifiedMap.put(pkg, hasSystemFlag);
+            }
+        }
+        return mSessionVerifiedMap.get(pkg);
+    }
+
+    @NonNull
     public List<SessionInfo> getAllVerifiedSessions() {
         List<SessionInfo> list = new ArrayList<>(Utilities.ATLEAST_Q
-                ? mLauncherApps.getAllPackageInstallerSessions()
+                ? Objects.requireNonNull(mLauncherApps).getAllPackageInstallerSessions()
                 : mInstaller.getAllSessions());
         Iterator<SessionInfo> it = list.iterator();
         while (it.hasNext()) {
@@ -180,33 +189,13 @@
         return list;
     }
 
-    /**
-     * Attempt to restore workspace layout if the session is triggered due to device restore.
-     */
-    public boolean restoreDbIfApplicable(@NonNull final SessionInfo info) {
-        if (!FeatureFlags.ENABLE_DATABASE_RESTORE.get()) {
-            return false;
-        }
-        if (isRestore(info)) {
-            LauncherSettings.Settings.call(mAppContext.getContentResolver(),
-                    LauncherSettings.Settings.METHOD_RESTORE_BACKUP_TABLE);
-            return true;
-        }
-        return false;
-    }
-
-    @RequiresApi(26)
-    private static boolean isRestore(@NonNull final SessionInfo info) {
-        return info.getInstallReason() == PackageManager.INSTALL_REASON_DEVICE_RESTORE;
-    }
-
     @WorkerThread
-    public boolean promiseIconAddedForId(int sessionId) {
+    public boolean promiseIconAddedForId(final int sessionId) {
         return getPromiseIconIds().contains(sessionId);
     }
 
     @WorkerThread
-    public void removePromiseIconId(int sessionId) {
+    public void removePromiseIconId(final int sessionId) {
         if (promiseIconAddedForId(sessionId)) {
             getPromiseIconIds().getArray().removeValue(sessionId);
             updatePromiseIconPrefs();
@@ -222,17 +211,8 @@
      * - A promise icon for the session has not already been created
      */
     @WorkerThread
-    void tryQueuePromiseAppIcon(PackageInstaller.SessionInfo sessionInfo) {
-        if (TestProtocol.sDebugTracing) {
-            Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + " tryQueuePromiseAppIcon"
-                    + ", FeatureFlags=" + FeatureFlags.PROMISE_APPS_NEW_INSTALLS.get()
-                    + ", SessionCommitReceiveEnabled" + SessionCommitReceiver.isEnabled(mAppContext)
-                    + ", verifySessionInfo(sessionInfo)=" + verifySessionInfo(sessionInfo)
-                    + ", !promiseIconAdded=" + (sessionInfo != null
-                    && !promiseIconAddedForId(sessionInfo.getSessionId())));
-        }
-        if (FeatureFlags.PROMISE_APPS_NEW_INSTALLS.get()
-                && SessionCommitReceiver.isEnabled(mAppContext)
+    void tryQueuePromiseAppIcon(@Nullable final PackageInstaller.SessionInfo sessionInfo) {
+        if (SessionCommitReceiver.isEnabled(mAppContext)
                 && verifySessionInfo(sessionInfo)
                 && !promiseIconAddedForId(sessionInfo.getSessionId())) {
             FileLog.d(LOG, "Adding package name to install queue: "
@@ -246,21 +226,7 @@
         }
     }
 
-    public boolean verifySessionInfo(PackageInstaller.SessionInfo sessionInfo) {
-        if (TestProtocol.sDebugTracing) {
-            boolean appNotInstalled = sessionInfo == null
-                    || !new PackageManagerHelper(mAppContext)
-                    .isAppInstalled(sessionInfo.getAppPackageName(), getUserHandle(sessionInfo));
-            boolean labelNotEmpty = sessionInfo != null
-                    && !TextUtils.isEmpty(sessionInfo.getAppLabel());
-            Log.d(TestProtocol.MISSING_PROMISE_ICON, LOG + " verifySessionInfo"
-                    + ", verify(sessionInfo)=" + verify(sessionInfo)
-                    + ", reason=" + (sessionInfo == null ? null : sessionInfo.getInstallReason())
-                    + ", PackageManager.INSTALL_REASON_USER=" + PackageManager.INSTALL_REASON_USER
-                    + ", hasIcon=" + (sessionInfo != null && sessionInfo.getAppIcon() != null)
-                    + ", label is ! empty=" + labelNotEmpty
-                    + " +, app not installed="  + appNotInstalled);
-        }
+    public boolean verifySessionInfo(@Nullable final PackageInstaller.SessionInfo sessionInfo) {
         return verify(sessionInfo) != null
                 && sessionInfo.getInstallReason() == PackageManager.INSTALL_REASON_USER
                 && sessionInfo.getAppIcon() != null
@@ -269,14 +235,15 @@
                         sessionInfo.getAppPackageName(), getUserHandle(sessionInfo));
     }
 
-    public InstallSessionTracker registerInstallTracker(InstallSessionTracker.Callback callback) {
+    public InstallSessionTracker registerInstallTracker(
+            @Nullable final InstallSessionTracker.Callback callback) {
         InstallSessionTracker tracker = new InstallSessionTracker(
                 this, callback, mInstaller, mLauncherApps);
         tracker.register();
         return tracker;
     }
 
-    public static UserHandle getUserHandle(SessionInfo info) {
+    public static UserHandle getUserHandle(@NonNull final SessionInfo info) {
         return Utilities.ATLEAST_Q ? info.getUser() : Process.myUserHandle();
     }
 }
diff --git a/src/com/android/launcher3/pm/InstallSessionTracker.java b/src/com/android/launcher3/pm/InstallSessionTracker.java
index 75cf7a8..41908d3 100644
--- a/src/com/android/launcher3/pm/InstallSessionTracker.java
+++ b/src/com/android/launcher3/pm/InstallSessionTracker.java
@@ -25,15 +25,16 @@
 import android.content.pm.PackageInstaller.SessionInfo;
 import android.os.Build;
 import android.os.UserHandle;
-import android.util.Log;
 import android.util.SparseArray;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.annotation.WorkerThread;
 
-import com.android.launcher3.testing.TestProtocol;
 import com.android.launcher3.util.PackageUserKey;
 
 import java.lang.ref.WeakReference;
+import java.util.Objects;
 
 @WorkerThread
 public class InstallSessionTracker extends PackageInstaller.SessionCallback {
@@ -41,14 +42,22 @@
     // Lazily initialized
     private SparseArray<PackageUserKey> mActiveSessions = null;
 
+    @NonNull
     private final WeakReference<InstallSessionHelper> mWeakHelper;
+
+    @NonNull
     private final WeakReference<Callback> mWeakCallback;
+
+    @NonNull
     private final PackageInstaller mInstaller;
+
+    @Nullable
     private final LauncherApps mLauncherApps;
 
 
-    InstallSessionTracker(InstallSessionHelper installerCompat, Callback callback,
-            PackageInstaller installer, LauncherApps launcherApps) {
+    InstallSessionTracker(@Nullable final InstallSessionHelper installerCompat,
+            @Nullable final Callback callback, @NonNull final PackageInstaller installer,
+            @Nullable LauncherApps launcherApps) {
         mWeakHelper = new WeakReference<>(installerCompat);
         mWeakCallback = new WeakReference<>(callback);
         mInstaller = installer;
@@ -56,22 +65,13 @@
     }
 
     @Override
-    public void onCreated(int sessionId) {
+    public void onCreated(final int sessionId) {
         InstallSessionHelper helper = mWeakHelper.get();
         Callback callback = mWeakCallback.get();
-        if (TestProtocol.sDebugTracing) {
-            Log.d(TestProtocol.MISSING_PROMISE_ICON, "Session created sessionId=" + sessionId
-                    + ", callback=" + callback
-                    + ", helper=" + helper);
-        }
         if (callback == null || helper == null) {
             return;
         }
         SessionInfo sessionInfo = pushSessionDisplayToLauncher(sessionId, helper, callback);
-        if (TestProtocol.sDebugTracing) {
-            Log.d(TestProtocol.MISSING_PROMISE_ICON, "Session created sessionId=" + sessionId
-                    + ", sessionInfo=" + sessionInfo);
-        }
         if (sessionInfo != null) {
             callback.onInstallSessionCreated(PackageInstallInfo.fromInstallingState(sessionInfo));
         }
@@ -80,7 +80,7 @@
     }
 
     @Override
-    public void onFinished(int sessionId, boolean success) {
+    public void onFinished(final int sessionId, final boolean success) {
         InstallSessionHelper helper = mWeakHelper.get();
         Callback callback = mWeakCallback.get();
         if (callback == null || helper == null) {
@@ -108,7 +108,7 @@
     }
 
     @Override
-    public void onProgressChanged(int sessionId, float progress) {
+    public void onProgressChanged(final int sessionId, final float progress) {
         InstallSessionHelper helper = mWeakHelper.get();
         Callback callback = mWeakCallback.get();
         if (callback == null || helper == null) {
@@ -121,10 +121,10 @@
     }
 
     @Override
-    public void onActiveChanged(int sessionId, boolean active) { }
+    public void onActiveChanged(final int sessionId, final boolean active) { }
 
     @Override
-    public void onBadgingChanged(int sessionId) {
+    public void onBadgingChanged(final int sessionId) {
         InstallSessionHelper helper = mWeakHelper.get();
         Callback callback = mWeakCallback.get();
         if (callback == null || helper == null) {
@@ -136,8 +136,9 @@
         }
     }
 
-    private SessionInfo pushSessionDisplayToLauncher(
-            int sessionId, InstallSessionHelper helper, Callback callback) {
+    @Nullable
+    private SessionInfo pushSessionDisplayToLauncher(final int sessionId,
+            @NonNull final InstallSessionHelper helper, @NonNull final Callback callback) {
         SessionInfo session = helper.getVerifiedSessionInfo(sessionId);
         if (session != null && session.getAppPackageName() != null) {
             PackageUserKey key =
@@ -149,7 +150,9 @@
         return null;
     }
 
-    private SparseArray<PackageUserKey> getActiveSessionMap(InstallSessionHelper helper) {
+    @NonNull
+    private SparseArray<PackageUserKey> getActiveSessionMap(
+            @NonNull final InstallSessionHelper helper) {
         if (mActiveSessions == null) {
             mActiveSessions = new SparseArray<>();
             helper.getActiveSessions().forEach(
@@ -162,7 +165,8 @@
         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
             mInstaller.registerSessionCallback(this, MODEL_EXECUTOR.getHandler());
         } else {
-            mLauncherApps.registerPackageInstallerSessionCallback(MODEL_EXECUTOR, this);
+            Objects.requireNonNull(mLauncherApps).registerPackageInstallerSessionCallback(
+                    MODEL_EXECUTOR, this);
         }
     }
 
@@ -170,18 +174,18 @@
         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
             mInstaller.unregisterSessionCallback(this);
         } else {
-            mLauncherApps.unregisterPackageInstallerSessionCallback(this);
+            Objects.requireNonNull(mLauncherApps).unregisterPackageInstallerSessionCallback(this);
         }
     }
 
     public interface Callback {
 
-        void onSessionFailure(String packageName, UserHandle user);
+        void onSessionFailure(@NonNull String packageName, @NonNull UserHandle user);
 
-        void onUpdateSessionDisplay(PackageUserKey key, SessionInfo info);
+        void onUpdateSessionDisplay(@NonNull PackageUserKey key, @NonNull SessionInfo info);
 
-        void onPackageStateChanged(PackageInstallInfo info);
+        void onPackageStateChanged(@NonNull PackageInstallInfo info);
 
-        void onInstallSessionCreated(PackageInstallInfo info);
+        void onInstallSessionCreated(@NonNull PackageInstallInfo info);
     }
 }
diff --git a/src/com/android/launcher3/pm/PinRequestHelper.java b/src/com/android/launcher3/pm/PinRequestHelper.java
index 179061f..667136a 100644
--- a/src/com/android/launcher3/pm/PinRequestHelper.java
+++ b/src/com/android/launcher3/pm/PinRequestHelper.java
@@ -24,8 +24,10 @@
 import android.content.pm.LauncherApps;
 import android.content.pm.LauncherApps.PinItemRequest;
 import android.content.pm.ShortcutInfo;
+import android.content.pm.ShortcutManager;
 import android.os.Build;
 import android.os.Parcelable;
+import android.os.SystemClock;
 
 import androidx.annotation.Nullable;
 
@@ -63,17 +65,10 @@
                 }
             } else {
                 // Block the worker thread until the accept() is called.
-                MODEL_EXECUTOR.execute(new Runnable() {
-                    @Override
-                    public void run() {
-                        try {
-                            Thread.sleep(acceptDelay);
-                        } catch (InterruptedException e) {
-                            // Ignore
-                        }
-                        if (request.isValid()) {
-                            request.accept();
-                        }
+                MODEL_EXECUTOR.execute(() -> {
+                    SystemClock.sleep(acceptDelay);
+                    if (request.isValid()) {
+                        request.accept();
                     }
                 });
             }
@@ -95,4 +90,13 @@
         Parcelable extra = intent.getParcelableExtra(LauncherApps.EXTRA_PIN_ITEM_REQUEST);
         return extra instanceof PinItemRequest ? (PinItemRequest) extra : null;
     }
+
+    /**
+     * Returns a PinItemRequest corresponding to the provided ShortcutInfo
+     */
+    public static PinItemRequest createRequestForShortcut(Context context, ShortcutInfo info) {
+        return context.getSystemService(LauncherApps.class)
+                .getPinItemRequest(context.getSystemService(ShortcutManager.class)
+                        .createShortcutResultIntent(info));
+    }
 }
diff --git a/src/com/android/launcher3/pm/ShortcutConfigActivityInfo.java b/src/com/android/launcher3/pm/ShortcutConfigActivityInfo.java
index 7af14c6..b24ee34 100644
--- a/src/com/android/launcher3/pm/ShortcutConfigActivityInfo.java
+++ b/src/com/android/launcher3/pm/ShortcutConfigActivityInfo.java
@@ -23,7 +23,6 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentSender;
-import android.content.pm.ActivityInfo;
 import android.content.pm.LauncherActivityInfo;
 import android.content.pm.LauncherApps;
 import android.content.pm.PackageManager;
@@ -112,26 +111,6 @@
         return true;
     }
 
-    static class ShortcutConfigActivityInfoVL extends ShortcutConfigActivityInfo {
-
-        private final ActivityInfo mInfo;
-
-        ShortcutConfigActivityInfoVL(ActivityInfo info) {
-            super(new ComponentName(info.packageName, info.name), Process.myUserHandle());
-            mInfo = info;
-        }
-
-        @Override
-        public CharSequence getLabel(PackageManager pm) {
-            return mInfo.loadLabel(pm);
-        }
-
-        @Override
-        public Drawable getFullResIcon(IconCache cache) {
-            return cache.getFullResIcon(mInfo);
-        }
-    }
-
     @TargetApi(26)
     public static class ShortcutConfigActivityInfoVO extends ShortcutConfigActivityInfo {
 
@@ -172,8 +151,6 @@
     public static List<ShortcutConfigActivityInfo> queryList(
             Context context, @Nullable PackageUserKey packageUser) {
         List<ShortcutConfigActivityInfo> result = new ArrayList<>();
-        UserHandle myUser = Process.myUserHandle();
-
         final List<UserHandle> users;
         final String packageName;
         if (packageUser == null) {
@@ -185,11 +162,9 @@
         }
         LauncherApps launcherApps = context.getSystemService(LauncherApps.class);
         for (UserHandle user : users) {
-            boolean ignoreTargetSdk = myUser.equals(user);
             for (LauncherActivityInfo activityInfo :
                     launcherApps.getShortcutConfigActivityList(packageName, user)) {
-                if (ignoreTargetSdk || activityInfo.getApplicationInfo().targetSdkVersion
-                        >= Build.VERSION_CODES.O) {
+                if (activityInfo.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.O) {
                     result.add(new ShortcutConfigActivityInfoVO(activityInfo));
                 }
             }
diff --git a/src/com/android/launcher3/pm/UserCache.java b/src/com/android/launcher3/pm/UserCache.java
index 5aab41a..5ebcf42 100644
--- a/src/com/android/launcher3/pm/UserCache.java
+++ b/src/com/android/launcher3/pm/UserCache.java
@@ -16,6 +16,9 @@
 
 package com.android.launcher3.pm;
 
+import static com.android.launcher3.testing.shared.TestProtocol.WORK_TAB_MISSING;
+import static com.android.launcher3.testing.shared.TestProtocol.testLogD;
+
 import android.content.Context;
 import android.content.Intent;
 import android.os.UserHandle;
@@ -56,6 +59,7 @@
     }
 
     private void onUsersChanged(Intent intent) {
+        testLogD(WORK_TAB_MISSING, "onUsersChanged intent: " + intent);
         enableAndResetCache();
         mUserChangeListeners.forEach(Runnable::run);
     }
@@ -84,6 +88,7 @@
             List<UserHandle> users = mUserManager.getUserProfiles();
             if (users != null) {
                 for (UserHandle user : users) {
+                    testLogD(WORK_TAB_MISSING, "caching user: " + user);
                     long serial = mUserManager.getSerialNumberForUser(user);
                     mUsers.put(serial, user);
                     mUserToSerialMap.put(user, serial);
@@ -134,13 +139,24 @@
      * @see UserManager#getUserProfiles()
      */
     public List<UserHandle> getUserProfiles() {
+        StringBuilder usersToReturn = new StringBuilder();
         synchronized (this) {
             if (mUsers != null) {
+                for (UserHandle u : mUserToSerialMap.keySet()) {
+                    usersToReturn.append(u).append(" && ");
+                }
+                testLogD(WORK_TAB_MISSING, "users from cache: " + usersToReturn);
                 return new ArrayList<>(mUserToSerialMap.keySet());
+            } else {
+                testLogD(WORK_TAB_MISSING, "users from cache null");
             }
         }
 
         List<UserHandle> users = mUserManager.getUserProfiles();
+        for (UserHandle u : users) {
+            usersToReturn.append(u).append(" && ");
+        }
+        testLogD(WORK_TAB_MISSING, "users from userManager: " + usersToReturn);
         return users == null ? Collections.emptyList() : users;
     }
 }
diff --git a/src/com/android/launcher3/popup/ArrowPopup.java b/src/com/android/launcher3/popup/ArrowPopup.java
index 196cc56..72f99cb 100644
--- a/src/com/android/launcher3/popup/ArrowPopup.java
+++ b/src/com/android/launcher3/popup/ArrowPopup.java
@@ -20,15 +20,16 @@
 
 import static com.android.launcher3.anim.Interpolators.ACCELERATED_EASE;
 import static com.android.launcher3.anim.Interpolators.DECELERATED_EASE;
+import static com.android.launcher3.anim.Interpolators.EMPHASIZED_ACCELERATE;
+import static com.android.launcher3.anim.Interpolators.EMPHASIZED_DECELERATE;
 import static com.android.launcher3.anim.Interpolators.LINEAR;
-import static com.android.launcher3.config.FeatureFlags.ENABLE_LOCAL_COLOR_POPUPS;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_MATERIAL_U_POPUP;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.AnimatorSet;
 import android.animation.ObjectAnimator;
 import android.animation.ValueAnimator;
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.Color;
@@ -36,37 +37,29 @@
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.GradientDrawable;
-import android.os.Build;
 import android.util.AttributeSet;
 import android.util.Pair;
-import android.util.SparseIntArray;
+import android.util.Property;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.view.ViewTreeObserver;
 import android.view.animation.Interpolator;
+import android.view.animation.PathInterpolator;
 import android.widget.FrameLayout;
 
-import androidx.annotation.Nullable;
-
 import com.android.launcher3.AbstractFloatingView;
 import com.android.launcher3.InsettableFrameLayout;
-import com.android.launcher3.Launcher;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
-import com.android.launcher3.Workspace;
 import com.android.launcher3.dragndrop.DragLayer;
 import com.android.launcher3.shortcuts.DeepShortcutView;
+import com.android.launcher3.util.RunnableList;
 import com.android.launcher3.util.Themes;
 import com.android.launcher3.views.ActivityContext;
 import com.android.launcher3.views.BaseDragLayer;
-import com.android.launcher3.widget.LocalColorExtractor;
 
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
 
 /**
  * A container for shortcuts to deep links and notifications associated with an app.
@@ -77,21 +70,30 @@
         extends AbstractFloatingView {
 
     // Duration values (ms) for popup open and close animations.
-    protected int OPEN_DURATION = 276;
-    protected int OPEN_FADE_START_DELAY = 0;
-    protected int OPEN_FADE_DURATION = 38;
-    protected int OPEN_CHILD_FADE_START_DELAY = 38;
-    protected int OPEN_CHILD_FADE_DURATION = 76;
+    protected int mOpenDuration = 276;
+    protected int mOpenFadeStartDelay = 0;
+    protected int mOpenFadeDuration = 38;
+    protected int mOpenChildFadeStartDelay = 38;
+    protected int mOpenChildFadeDuration = 76;
 
-    protected int CLOSE_DURATION = 200;
-    protected int CLOSE_FADE_START_DELAY = 140;
-    protected int CLOSE_FADE_DURATION = 50;
-    protected int CLOSE_CHILD_FADE_START_DELAY = 0;
-    protected int CLOSE_CHILD_FADE_DURATION = 140;
+    protected int mCloseDuration = 200;
+    protected int mCloseFadeStartDelay = 140;
+    protected int mCloseFadeDuration = 50;
+    protected int mCloseChildFadeStartDelay = 0;
+    protected int mCloseChildFadeDuration = 140;
 
-    // Index used to get background color when using local wallpaper color extraction,
-    private static final int DARK_COLOR_EXTRACTION_INDEX = android.R.color.system_neutral2_800;
-    private static final int LIGHT_COLOR_EXTRACTION_INDEX = android.R.color.system_accent2_50;
+    private static final int OPEN_DURATION_U = 200;
+    private static final int OPEN_FADE_START_DELAY_U = 0;
+    private static final int OPEN_FADE_DURATION_U = 83;
+    private static final int OPEN_CHILD_FADE_START_DELAY_U = 0;
+    private static final int OPEN_CHILD_FADE_DURATION_U = 83;
+    private static final int OPEN_OVERSHOOT_DURATION_U = 200;
+
+    private static final int CLOSE_DURATION_U  = 233;
+    private static final int CLOSE_FADE_START_DELAY_U = 150;
+    private static final int CLOSE_FADE_DURATION_U = 83;
+    private static final int CLOSE_CHILD_FADE_START_DELAY_U = 150;
+    private static final int CLOSE_CHILD_FADE_DURATION_U = 83;
 
     protected final Rect mTempRect = new Rect();
 
@@ -107,7 +109,7 @@
     protected final int mArrowPointRadius;
     protected final View mArrow;
 
-    private final int mMargin;
+    protected final int mChildContainerMargin;
 
     protected boolean mIsLeftAligned;
     protected boolean mIsAboveIcon;
@@ -116,22 +118,21 @@
     protected AnimatorSet mOpenCloseAnimator;
     protected boolean mDeferContainerRemoval;
     protected boolean shouldScaleArrow = false;
+    protected boolean mIsArrowRotated = false;
 
     private final GradientDrawable mRoundedTop;
     private final GradientDrawable mRoundedBottom;
 
-    @Nullable private Runnable mOnCloseCallback = null;
+    private RunnableList mOnCloseCallbacks = new RunnableList();
 
     // The rect string of the view that the arrow is attached to, in screen reference frame.
     protected int mArrowColor;
-    protected final List<LocalColorExtractor> mColorExtractors;
 
     protected final float mElevation;
-    private final int mBackgroundColor;
 
     private final String mIterateChildrenTag;
 
-    private final int[] mColorIds;
+    protected final int[] mColorIds;
 
     public ArrowPopup(Context context, AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr);
@@ -139,14 +140,13 @@
         mOutlineRadius = Themes.getDialogCornerRadius(context);
         mActivityContext = ActivityContext.lookupContext(context);
         mIsRtl = Utilities.isRtl(getResources());
-
-        mBackgroundColor = Themes.getAttrColor(context, R.attr.popupColorPrimary);
-        mArrowColor = mBackgroundColor;
         mElevation = getResources().getDimension(R.dimen.deep_shortcuts_elevation);
 
         // Initialize arrow view
         final Resources resources = getResources();
-        mMargin = resources.getDimensionPixelSize(R.dimen.popup_margin);
+        mArrowColor = getColorStateList(getContext(), R.color.popup_color_background)
+                .getDefaultColor();
+        mChildContainerMargin = resources.getDimensionPixelSize(R.dimen.popup_margin);
         mArrowWidth = resources.getDimensionPixelSize(R.dimen.popup_arrow_width);
         mArrowHeight = resources.getDimensionPixelSize(R.dimen.popup_arrow_height);
         mArrow = new View(context);
@@ -158,29 +158,23 @@
 
         int smallerRadius = resources.getDimensionPixelSize(R.dimen.popup_smaller_radius);
         mRoundedTop = new GradientDrawable();
-        mRoundedTop.setColor(mBackgroundColor);
+        int popupPrimaryColor = Themes.getAttrColor(context, R.attr.popupColorPrimary);
+        mRoundedTop.setColor(popupPrimaryColor);
         mRoundedTop.setCornerRadii(new float[] { mOutlineRadius, mOutlineRadius, mOutlineRadius,
                 mOutlineRadius, smallerRadius, smallerRadius, smallerRadius, smallerRadius});
 
         mRoundedBottom = new GradientDrawable();
-        mRoundedBottom.setColor(mBackgroundColor);
+        mRoundedBottom.setColor(popupPrimaryColor);
         mRoundedBottom.setCornerRadii(new float[] { smallerRadius, smallerRadius, smallerRadius,
                 smallerRadius, mOutlineRadius, mOutlineRadius, mOutlineRadius, mOutlineRadius});
 
         mIterateChildrenTag = getContext().getString(R.string.popup_container_iterate_children);
 
-        boolean shouldUseColorExtraction = mActivityContext.shouldUseColorExtractionForPopup();
-        if (shouldUseColorExtraction && Utilities.ATLEAST_S && ENABLE_LOCAL_COLOR_POPUPS.get()) {
-            mColorExtractors = new ArrayList<>();
-        } else {
-            mColorExtractors = null;
-        }
-
-        if (shouldUseColorExtraction) {
+        if (!ENABLE_MATERIAL_U_POPUP.get() && mActivityContext.canUseMultipleShadesForPopup()) {
             mColorIds = new int[]{R.color.popup_shade_first, R.color.popup_shade_second,
                     R.color.popup_shade_third};
         } else {
-            mColorIds = new int[]{R.color.popup_shade_first};
+            mColorIds = new int[]{R.color.popup_color_background};
         }
     }
 
@@ -220,11 +214,6 @@
     }
 
     /**
-     * Called when all view inflation and reordering in complete.
-     */
-    protected void onInflationComplete(boolean isReversed) { }
-
-    /**
      * Set the margins and radius of backgrounds after views are properly ordered.
      */
     public void assignMarginsAndBackgrounds(ViewGroup viewGroup) {
@@ -261,26 +250,30 @@
             if (view.getVisibility() == VISIBLE) {
                 if (lastView != null) {
                     MarginLayoutParams mlp = (MarginLayoutParams) lastView.getLayoutParams();
-                    mlp.bottomMargin = mMargin;
+                    mlp.bottomMargin = mChildContainerMargin;
                 }
                 lastView = view;
                 MarginLayoutParams mlp = (MarginLayoutParams) lastView.getLayoutParams();
                 mlp.bottomMargin = 0;
 
                 if (colors != null) {
-                    backgroundColor = colors[numVisibleChild % colors.length];
-                }
+                    if (!ENABLE_MATERIAL_U_POPUP.get()) {
+                        backgroundColor = colors[numVisibleChild % colors.length];
+                    }
 
-                if (!ENABLE_LOCAL_COLOR_POPUPS.get()) {
-                    // Arrow color matches the first child or the last child.
-                    if (!mIsAboveIcon && numVisibleChild == 0 && viewGroup == this) {
-                        mArrowColor = backgroundColor;
-                    } else if (mIsAboveIcon) {
-                        mArrowColor = backgroundColor;
+                    if (ENABLE_MATERIAL_U_POPUP.get() && isShortcutContainer(view)) {
+                        setChildColor(view, colors[0], colorAnimator);
+                        mArrowColor = colors[0];
                     }
                 }
 
-                if (view instanceof ViewGroup && mIterateChildrenTag.equals(view.getTag())) {
+                // Arrow color matches the first child or the last child.
+                if (!ENABLE_MATERIAL_U_POPUP.get()
+                        && (mIsAboveIcon || (numVisibleChild == 0 && viewGroup == this))) {
+                    mArrowColor = backgroundColor;
+                }
+
+                if (view instanceof ViewGroup && isShortcutContainer(view)) {
                     assignMarginsAndBackgrounds((ViewGroup) view, backgroundColor);
                     numVisibleChild++;
                     continue;
@@ -301,10 +294,7 @@
                     }
                 }
 
-                if (!ENABLE_LOCAL_COLOR_POPUPS.get()) {
-                    setChildColor(view, backgroundColor, colorAnimator);
-                }
-
+                setChildColor(view, backgroundColor, colorAnimator);
                 numVisibleChild++;
             }
         }
@@ -320,83 +310,11 @@
         return view instanceof DeepShortcutView;
     }
 
-    @TargetApi(Build.VERSION_CODES.S)
-    private int getExtractedColor(SparseIntArray colors) {
-        int index = Utilities.isDarkTheme(getContext())
-                ? DARK_COLOR_EXTRACTION_INDEX
-                : LIGHT_COLOR_EXTRACTION_INDEX;
-        return colors.get(index, mBackgroundColor);
-    }
-
-    protected void addPreDrawForColorExtraction(Launcher launcher) {
-        getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
-            @Override
-            public boolean onPreDraw() {
-                getViewTreeObserver().removeOnPreDrawListener(this);
-                initColorExtractionLocations(launcher);
-                return true;
-            }
-        });
-    }
-
     /**
-     * Returns list of child views that will receive local color extraction treatment.
-     * Note: Order should match the view hierarchy.
+     * Returns {@code true} if view is a layout container of shortcuts
      */
-    protected List<View> getChildrenForColorExtraction() {
-        return Collections.emptyList();
-    }
-
-    private void initColorExtractionLocations(Launcher launcher) {
-        if (mColorExtractors == null) {
-            return;
-        }
-        Workspace<?> workspace = launcher.getWorkspace();
-        if (workspace == null) {
-            return;
-        }
-
-        boolean firstVisibleChild = true;
-        int screenId = workspace.getScreenIdForPageIndex(workspace.getCurrentPage());
-        DragLayer dragLayer = launcher.getDragLayer();
-
-        final View[] viewAlignedWithArrow = new View[1];
-
-        // Order matters here, since we need the arrow to match the color of its adjacent view.
-        for (final View view : getChildrenForColorExtraction()) {
-            if (view != null && view.getVisibility() == VISIBLE) {
-                Rect pos = new Rect();
-                dragLayer.getDescendantRectRelativeToSelf(view, pos);
-                if (!pos.isEmpty()) {
-                    LocalColorExtractor extractor = LocalColorExtractor.newInstance(launcher);
-                    extractor.setWorkspaceLocation(pos, dragLayer, screenId);
-                    extractor.setListener(extractedColors -> {
-                        AnimatorSet colors = new AnimatorSet();
-                        int newColor = getExtractedColor(extractedColors);
-                        setChildColor(view, newColor, colors);
-                        int numChildren = view instanceof ViewGroup
-                                ? ((ViewGroup) view).getChildCount() : 0;
-                        for (int i = 0; i < numChildren; ++i) {
-                            View childView = ((ViewGroup) view).getChildAt(i);
-                            setChildColor(childView, newColor, colors);
-                        }
-                        if (viewAlignedWithArrow[0] == view) {
-                            mArrowColor = newColor;
-                            updateArrowColor();
-                        }
-                        colors.setDuration(150);
-                        view.post(colors::start);
-                    });
-                    mColorExtractors.add(extractor);
-
-                    if (mIsAboveIcon || firstVisibleChild) {
-                        viewAlignedWithArrow[0] = view;
-                    }
-                    firstVisibleChild = false;
-                }
-            }
-        }
-
+    boolean isShortcutContainer(View view) {
+        return mIterateChildrenTag.equals(view.getTag());
     }
 
     /**
@@ -416,29 +334,10 @@
     }
 
     /**
-     * Shows the popup at the desired location, optionally reversing the children.
-     * @param viewsToFlip number of views from the top to to flip in case of reverse order
-     */
-    protected void reorderAndShow(int viewsToFlip) {
-        setupForDisplay();
-        boolean reverseOrder = mIsAboveIcon;
-        if (reverseOrder) {
-            reverseOrder(viewsToFlip);
-        }
-        onInflationComplete(reverseOrder);
-        assignMarginsAndBackgrounds(this);
-        if (shouldAddArrow()) {
-            addArrow();
-        }
-        animateOpen();
-    }
-
-    /**
      * Shows the popup at the desired location.
      */
     public void show() {
         setupForDisplay();
-        onInflationComplete(false);
         assignMarginsAndBackgrounds(this);
         if (shouldAddArrow()) {
             addArrow();
@@ -453,22 +352,6 @@
         orientAboutObject();
     }
 
-    private void reverseOrder(int viewsToFlip) {
-        int count = getChildCount();
-        ArrayList<View> allViews = new ArrayList<>(count);
-        for (int i = 0; i < count; i++) {
-            if (i == viewsToFlip) {
-                Collections.reverse(allViews);
-            }
-            allViews.add(getChildAt(i));
-        }
-        Collections.reverse(allViews);
-        removeAllViews();
-        for (int i = 0; i < count; i++) {
-            addView(allViews.get(i));
-        }
-    }
-
     private int getArrowLeft() {
         if (mIsLeftAligned) {
             return mArrowOffsetHorizontal;
@@ -559,7 +442,7 @@
                 numVisibleChildren++;
             }
         }
-        int childMargins = (numVisibleChildren - 1) * mMargin;
+        int childMargins = (numVisibleChildren - 1) * mChildContainerMargin;
         int height = getMeasuredHeight() + extraVerticalSpace + childMargins;
         int width = getMeasuredWidth() + getPaddingLeft() + getPaddingRight();
 
@@ -690,10 +573,24 @@
 
     protected void animateOpen() {
         setVisibility(View.VISIBLE);
+        mOpenCloseAnimator = ENABLE_MATERIAL_U_POPUP.get()
+                ? getMaterialUOpenCloseAnimator(
+                        true,
+                        OPEN_DURATION_U,
+                        OPEN_FADE_START_DELAY_U,
+                        OPEN_FADE_DURATION_U,
+                        OPEN_CHILD_FADE_START_DELAY_U,
+                        OPEN_CHILD_FADE_DURATION_U,
+                        EMPHASIZED_DECELERATE)
+                : getOpenCloseAnimator(
+                        true,
+                        mOpenDuration,
+                        mOpenFadeStartDelay,
+                        mOpenFadeDuration,
+                        mOpenChildFadeStartDelay,
+                        mOpenChildFadeDuration,
+                        DECELERATED_EASE);
 
-        mOpenCloseAnimator = getOpenCloseAnimator(true, OPEN_DURATION, OPEN_FADE_START_DELAY,
-                OPEN_FADE_DURATION, OPEN_CHILD_FADE_START_DELAY, OPEN_CHILD_FADE_DURATION,
-                DECELERATED_EASE);
         onCreateOpenAnimation(mOpenCloseAnimator);
         mOpenCloseAnimator.addListener(new AnimatorListenerAdapter() {
             @Override
@@ -749,7 +646,7 @@
         for (int i = group.getChildCount() - 1; i >= 0; --i) {
             View view = group.getChildAt(i);
             if (view.getVisibility() == VISIBLE && view instanceof ViewGroup) {
-                if (mIterateChildrenTag.equals(view.getTag())) {
+                if (isShortcutContainer(view)) {
                     fadeInChildViews((ViewGroup) view, alphaValues, startDelay, duration, out);
                     continue;
                 }
@@ -776,9 +673,27 @@
         }
         mIsOpen = false;
 
-        mOpenCloseAnimator = getOpenCloseAnimator(false, CLOSE_DURATION, CLOSE_FADE_START_DELAY,
-                CLOSE_FADE_DURATION, CLOSE_CHILD_FADE_START_DELAY, CLOSE_CHILD_FADE_DURATION,
+        mOpenCloseAnimator = getOpenCloseAnimator(false, mCloseDuration, mCloseFadeStartDelay,
+                mCloseFadeDuration, mCloseChildFadeStartDelay, mCloseChildFadeDuration,
                 ACCELERATED_EASE);
+
+        mOpenCloseAnimator = ENABLE_MATERIAL_U_POPUP.get()
+                ? getMaterialUOpenCloseAnimator(
+                        false,
+                        CLOSE_DURATION_U,
+                        CLOSE_FADE_START_DELAY_U,
+                        CLOSE_FADE_DURATION_U,
+                        CLOSE_CHILD_FADE_START_DELAY_U,
+                        CLOSE_CHILD_FADE_DURATION_U,
+                        EMPHASIZED_ACCELERATE)
+                : getOpenCloseAnimator(false,
+                        mCloseDuration,
+                        mCloseFadeStartDelay,
+                        mCloseFadeDuration,
+                        mCloseChildFadeStartDelay,
+                        mCloseChildFadeDuration,
+                        ACCELERATED_EASE);
+
         onCreateCloseAnimation(mOpenCloseAnimator);
         mOpenCloseAnimator.addListener(new AnimatorListenerAdapter() {
             @Override
@@ -794,6 +709,59 @@
         mOpenCloseAnimator.start();
     }
 
+    protected AnimatorSet getMaterialUOpenCloseAnimator(boolean isOpening, int scaleDuration,
+            int fadeStartDelay, int fadeDuration, int childFadeStartDelay, int childFadeDuration,
+            Interpolator interpolator) {
+
+        int arrowCenter = mArrowOffsetHorizontal + mArrowWidth / 2;
+        if (mIsArrowRotated) {
+            setPivotX(mIsLeftAligned ? 0f : getMeasuredWidth());
+            setPivotY(arrowCenter);
+        } else {
+            setPivotX(mIsLeftAligned ? arrowCenter : getMeasuredWidth() - arrowCenter);
+            setPivotY(mIsAboveIcon ? getMeasuredHeight() : 0f);
+        }
+
+        float[] alphaValues = isOpening ? new float[] {0, 1} : new float[] {1, 0};
+        float[] scaleValues = isOpening ? new float[] {0.5f, 1.02f} : new float[] {1f, 0.5f};
+        Animator alpha = getAnimatorOfFloat(this, View.ALPHA, fadeDuration, fadeStartDelay,
+                LINEAR, alphaValues);
+        Animator arrowAlpha = getAnimatorOfFloat(mArrow, View.ALPHA, fadeDuration, fadeStartDelay,
+                LINEAR, alphaValues);
+        Animator scaleY = getAnimatorOfFloat(this, View.SCALE_Y, scaleDuration, 0, interpolator,
+                scaleValues);
+        Animator scaleX = getAnimatorOfFloat(this, View.SCALE_X, scaleDuration, 0, interpolator,
+                scaleValues);
+
+        final AnimatorSet animatorSet = new AnimatorSet();
+        if (isOpening) {
+            float[] scaleValuesOvershoot = new float[] {1.02f, 1f};
+            PathInterpolator overshootInterpolator = new PathInterpolator(0.3f, 0, 0.33f, 1f);
+            Animator overshootY = getAnimatorOfFloat(this, View.SCALE_Y,
+                    OPEN_OVERSHOOT_DURATION_U, scaleDuration, overshootInterpolator,
+                    scaleValuesOvershoot);
+            Animator overshootX = getAnimatorOfFloat(this, View.SCALE_X,
+                    OPEN_OVERSHOOT_DURATION_U, scaleDuration, overshootInterpolator,
+                    scaleValuesOvershoot);
+
+            animatorSet.playTogether(alpha, arrowAlpha, scaleY, scaleX, overshootX, overshootY);
+        } else {
+            animatorSet.playTogether(alpha, arrowAlpha, scaleY, scaleX);
+        }
+
+        fadeInChildViews(this, alphaValues, childFadeStartDelay, childFadeDuration, animatorSet);
+        return animatorSet;
+    }
+
+    private Animator getAnimatorOfFloat(View view, Property<View, Float> property,
+            int duration, int startDelay, Interpolator interpolator,  float... values) {
+        Animator animator = ObjectAnimator.ofFloat(view, property, values);
+        animator.setDuration(duration);
+        animator.setInterpolator(interpolator);
+        animator.setStartDelay(startDelay);
+        return animator;
+    }
+
     /**
      * Called when creating the open transition allowing subclass can add additional animations.
      */
@@ -816,19 +784,14 @@
         mDeferContainerRemoval = false;
         getPopupContainer().removeView(this);
         getPopupContainer().removeView(mArrow);
-        if (mOnCloseCallback != null) {
-            mOnCloseCallback.run();
-        }
-        if (mColorExtractors != null) {
-            mColorExtractors.forEach(e -> e.setListener(null));
-        }
+        mOnCloseCallbacks.executeAllAndClear();
     }
 
     /**
-     * Callback to be called when the popup is closed
+     * Callbacks to be called when the popup is closed
      */
-    public void setOnCloseCallback(@Nullable Runnable callback) {
-        mOnCloseCallback = callback;
+    public void addOnCloseCallback(Runnable callback) {
+        mOnCloseCallbacks.add(callback);
     }
 
     protected BaseDragLayer getPopupContainer() {
diff --git a/src/com/android/launcher3/popup/PopupContainerWithArrow.java b/src/com/android/launcher3/popup/PopupContainerWithArrow.java
index 49d97d2..8274789 100644
--- a/src/com/android/launcher3/popup/PopupContainerWithArrow.java
+++ b/src/com/android/launcher3/popup/PopupContainerWithArrow.java
@@ -17,12 +17,16 @@
 package com.android.launcher3.popup;
 
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_SHORTCUTS;
+import static com.android.launcher3.Utilities.ATLEAST_P;
 import static com.android.launcher3.Utilities.squaredHypot;
 import static com.android.launcher3.Utilities.squaredTouchSlop;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_MATERIAL_U_POPUP;
 import static com.android.launcher3.popup.PopupPopulator.MAX_SHORTCUTS;
 import static com.android.launcher3.popup.PopupPopulator.MAX_SHORTCUTS_IF_NOTIFICATIONS;
 import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
 
+import static java.util.Collections.emptyList;
+
 import android.animation.AnimatorSet;
 import android.animation.LayoutTransition;
 import android.annotation.TargetApi;
@@ -39,6 +43,8 @@
 import android.view.ViewGroup;
 import android.widget.ImageView;
 
+import androidx.annotation.LayoutRes;
+
 import com.android.launcher3.AbstractFloatingView;
 import com.android.launcher3.BaseDraggingActivity;
 import com.android.launcher3.BubbleTextView;
@@ -69,9 +75,9 @@
 import com.android.launcher3.views.BaseDragLayer;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 /**
@@ -82,20 +88,22 @@
 public class PopupContainerWithArrow<T extends Context & ActivityContext>
         extends ArrowPopup<T> implements DragSource, DragController.DragListener {
 
-    private final List<DeepShortcutView> mShortcuts = new ArrayList<>();
+    private final List<DeepShortcutView> mDeepShortcuts = new ArrayList<>();
     private final PointF mInterceptTouchDown = new PointF();
 
     private final int mStartDragThreshold;
 
+    private static final int SHORTCUT_COLLAPSE_THRESHOLD = 6;
+
+    private final float mShortcutHeight;
+
     private BubbleTextView mOriginalIcon;
     private int mNumNotifications;
     private NotificationContainer mNotificationContainer;
     private int mContainerWidth;
 
     private ViewGroup mWidgetContainer;
-
     private ViewGroup mDeepShortcutContainer;
-
     private ViewGroup mSystemShortcutContainer;
 
     protected PopupItemDragHandler mPopupItemDragHandler;
@@ -106,6 +114,7 @@
         mStartDragThreshold = getResources().getDimensionPixelSize(
                 R.dimen.deep_shortcuts_start_drag_threshold);
         mContainerWidth = getResources().getDimensionPixelSize(R.dimen.bg_popup_item_width);
+        mShortcutHeight = getResources().getDimension(R.dimen.system_shortcut_header_height);
     }
 
     public PopupContainerWithArrow(Context context, AttributeSet attrs) {
@@ -211,19 +220,29 @@
             return null;
         }
 
-        final PopupContainerWithArrow<Launcher> container =
-                (PopupContainerWithArrow) launcher.getLayoutInflater().inflate(
-                        R.layout.popup_container, launcher.getDragLayer(), false);
-        container.configureForLauncher(launcher);
-
+        PopupContainerWithArrow<Launcher> container;
         PopupDataProvider popupDataProvider = launcher.getPopupDataProvider();
-        container.populateAndShow(icon,
-                popupDataProvider.getShortcutCountForItem(item),
-                popupDataProvider.getNotificationKeysForItem(item),
-                launcher.getSupportedShortcuts()
-                        .map(s -> s.getShortcut(launcher, item, icon))
-                        .filter(Objects::nonNull)
-                        .collect(Collectors.toList()));
+        int deepShortcutCount = popupDataProvider.getShortcutCountForItem(item);
+        List<SystemShortcut> systemShortcuts = launcher.getSupportedShortcuts()
+                .map(s -> s.getShortcut(launcher, item, icon))
+                .filter(Objects::nonNull)
+                .collect(Collectors.toList());
+        if (ENABLE_MATERIAL_U_POPUP.get()) {
+            container = (PopupContainerWithArrow) launcher.getLayoutInflater().inflate(
+                    R.layout.popup_container_material_u, launcher.getDragLayer(), false);
+            container.configureForLauncher(launcher);
+            container.populateAndShowRowsMaterialU(icon, deepShortcutCount, systemShortcuts);
+        } else {
+            container = (PopupContainerWithArrow) launcher.getLayoutInflater().inflate(
+                    R.layout.popup_container, launcher.getDragLayer(), false);
+            container.configureForLauncher(launcher);
+            container.populateAndShow(
+                    icon,
+                    deepShortcutCount,
+                    popupDataProvider.getNotificationKeysForItem(item),
+                    systemShortcuts);
+        }
+        launcher.tryClearAccessibilityFocus(icon);
         launcher.refreshAndBindWidgetsForPackageUser(PackageUserKey.fromItemInfo(item));
         container.requestFocus();
         return container;
@@ -235,32 +254,32 @@
         mPopupItemDragHandler = new LauncherPopupItemDragHandler(launcher, this);
         mAccessibilityDelegate = new ShortcutMenuAccessibilityDelegate(launcher);
         launcher.getDragController().addDragListener(this);
-        addPreDrawForColorExtraction(launcher);
     }
 
-    @Override
-    protected List<View> getChildrenForColorExtraction() {
-        return Arrays.asList(mSystemShortcutContainer, mWidgetContainer, mDeepShortcutContainer,
-                mNotificationContainer);
+    private void initializeSystemShortcuts(List<SystemShortcut> shortcuts) {
+        if (shortcuts.isEmpty()) {
+            return;
+        }
+        // If there is only 1 shortcut, add it to its own container so it can show text and icon
+        if (shortcuts.size() == 1) {
+            mSystemShortcutContainer = inflateAndAdd(R.layout.system_shortcut_rows_container,
+                    this, 0);
+            initializeSystemShortcut(R.layout.system_shortcut, mSystemShortcutContainer,
+                    shortcuts.get(0), false);
+            return;
+        }
+        addSystemShortcutsIconsOnly(shortcuts);
     }
 
     @TargetApi(Build.VERSION_CODES.P)
     public void populateAndShow(final BubbleTextView originalIcon, int shortcutCount,
-            final List<NotificationKeyData> notificationKeys, List<SystemShortcut> systemShortcuts) {
+            final List<NotificationKeyData> notificationKeys, List<SystemShortcut> shortcuts) {
         mNumNotifications = notificationKeys.size();
         mOriginalIcon = originalIcon;
 
         boolean hasDeepShortcuts = shortcutCount > 0;
         mContainerWidth = getResources().getDimensionPixelSize(R.dimen.bg_popup_item_width);
 
-        // if there are deep shortcuts, we might want to increase the width of shortcuts to fit
-        // horizontally laid out system shortcuts.
-        if (hasDeepShortcuts) {
-            mContainerWidth = Math.max(mContainerWidth,
-                    systemShortcuts.size() * getResources()
-                            .getDimensionPixelSize(R.dimen.system_shortcut_header_icon_touch_size)
-            );
-        }
         // Add views
         if (mNumNotifications > 0) {
             // Add notification entries
@@ -273,66 +292,232 @@
             }
             updateNotificationHeader();
         }
-        int viewsToFlip = getChildCount();
         mSystemShortcutContainer = this;
         if (mDeepShortcutContainer == null) {
             mDeepShortcutContainer = findViewById(R.id.deep_shortcuts_container);
         }
         if (hasDeepShortcuts) {
+            List<SystemShortcut> systemShortcuts = getNonWidgetSystemShortcuts(shortcuts);
+            // if there are deep shortcuts, we might want to increase the width of shortcuts to fit
+            // horizontally laid out system shortcuts.
+            mContainerWidth = Math.max(mContainerWidth,
+                    systemShortcuts.size() * getResources()
+                            .getDimensionPixelSize(R.dimen.system_shortcut_header_icon_touch_size)
+            );
+
             mDeepShortcutContainer.setVisibility(View.VISIBLE);
 
             for (int i = shortcutCount; i > 0; i--) {
                 DeepShortcutView v = inflateAndAdd(R.layout.deep_shortcut, mDeepShortcutContainer);
                 v.getLayoutParams().width = mContainerWidth;
-                mShortcuts.add(v);
+                mDeepShortcuts.add(v);
             }
             updateHiddenShortcuts();
-
-            if (!systemShortcuts.isEmpty()) {
-                for (SystemShortcut shortcut : systemShortcuts) {
-                    if (shortcut instanceof SystemShortcut.Widgets) {
-                        if (mWidgetContainer == null) {
-                            mWidgetContainer = inflateAndAdd(R.layout.widget_shortcut_container,
-                                    this);
-                        }
-                        initializeWidgetShortcut(mWidgetContainer, shortcut);
-                    }
+            Optional<SystemShortcut.Widgets> widgetShortcutOpt = getWidgetShortcut(shortcuts);
+            if (widgetShortcutOpt.isPresent()) {
+                if (mWidgetContainer == null) {
+                    mWidgetContainer = inflateAndAdd(R.layout.widget_shortcut_container, this, 0);
                 }
-                mSystemShortcutContainer = inflateAndAdd(R.layout.system_shortcut_icons, this);
-
-                for (SystemShortcut shortcut : systemShortcuts) {
-                    if (!(shortcut instanceof SystemShortcut.Widgets)) {
-                        initializeSystemShortcut(
-                                R.layout.system_shortcut_icon_only, mSystemShortcutContainer,
-                                shortcut);
-                    }
-                }
+                initializeWidgetShortcut(mWidgetContainer, widgetShortcutOpt.get());
             }
+
+            initializeSystemShortcuts(systemShortcuts);
         } else {
             mDeepShortcutContainer.setVisibility(View.GONE);
-            if (!systemShortcuts.isEmpty()) {
-                for (SystemShortcut shortcut : systemShortcuts) {
-                    initializeSystemShortcut(R.layout.system_shortcut, this, shortcut);
+            mSystemShortcutContainer = inflateAndAdd(R.layout.system_shortcut_rows_container,
+                    this, 0);
+            mWidgetContainer = mSystemShortcutContainer;
+            if (!shortcuts.isEmpty()) {
+                for (int i = 0; i < shortcuts.size(); i++) {
+                    initializeSystemShortcut(
+                            R.layout.system_shortcut,
+                            mSystemShortcutContainer,
+                            shortcuts.get(i),
+                            i < shortcuts.size() - 1);
                 }
             }
         }
+        show();
+        loadAppShortcuts((ItemInfo) originalIcon.getTag(), notificationKeys);
+    }
 
-        reorderAndShow(viewsToFlip);
+    /**
+     * Populate and show shortcuts for the Launcher U app shortcut design.
+     * Will inflate the container and shortcut View instances for the popup container.
+     * @param originalIcon App icon that the popup is shown for
+     * @param deepShortcutCount Number of DeepShortcutView instances to add to container
+     * @param systemShortcuts List of SystemShortcuts to add to container
+     */
+    public void populateAndShowRowsMaterialU(final BubbleTextView originalIcon,
+            int deepShortcutCount, List<SystemShortcut> systemShortcuts) {
 
-        ItemInfo originalItemInfo = (ItemInfo) originalIcon.getTag();
-        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+        mOriginalIcon = originalIcon;
+        mContainerWidth = getResources().getDimensionPixelSize(R.dimen.bg_popup_item_width);
+
+        if (deepShortcutCount > 0) {
+            addAllShortcutsMaterialU(deepShortcutCount, systemShortcuts);
+        } else if (!systemShortcuts.isEmpty()) {
+            addSystemShortcutsMaterialU(systemShortcuts,
+                    R.layout.system_shortcut_rows_container_material_u,
+                    R.layout.system_shortcut);
+        }
+        show();
+        loadAppShortcuts((ItemInfo) originalIcon.getTag(), /* notificationKeys= */ emptyList());
+    }
+
+    /**
+     * Animates and loads shortcuts on background thread for this popup container
+     */
+    private void loadAppShortcuts(ItemInfo originalItemInfo,
+            List<NotificationKeyData> notificationKeys) {
+
+        if (ATLEAST_P) {
             setAccessibilityPaneTitle(getTitleForAccessibility());
         }
-
         mOriginalIcon.setForceHideDot(true);
-
         // All views are added. Animate layout from now on.
         setLayoutTransition(new LayoutTransition());
-
         // Load the shortcuts on a background thread and update the container as it animates.
         MODEL_EXECUTOR.getHandler().postAtFrontOfQueue(PopupPopulator.createUpdateRunnable(
                 mActivityContext, originalItemInfo, new Handler(Looper.getMainLooper()),
-                this, mShortcuts, notificationKeys));
+                this, mDeepShortcuts, notificationKeys));
+    }
+
+    /**
+     * Adds any Deep Shortcuts, System Shortcuts and the Widget Shortcut to their respective
+     * containers
+     * @param deepShortcutCount number of DeepShortcutView instances
+     * @param systemShortcuts List of SystemShortcuts
+     */
+    private void addAllShortcutsMaterialU(int deepShortcutCount,
+            List<SystemShortcut> systemShortcuts) {
+        if (deepShortcutCount + systemShortcuts.size() <= SHORTCUT_COLLAPSE_THRESHOLD) {
+            // add all system shortcuts including widgets shortcut to same container
+            addSystemShortcutsMaterialU(systemShortcuts,
+                    R.layout.system_shortcut_rows_container_material_u,
+                    R.layout.system_shortcut);
+            float currentHeight = (mShortcutHeight * systemShortcuts.size())
+                    + mChildContainerMargin;
+            addDeepShortcutsMaterialU(deepShortcutCount, currentHeight);
+            return;
+        }
+
+        float currentHeight = mShortcutHeight + mChildContainerMargin;
+        List<SystemShortcut> nonWidgetSystemShortcuts =
+                getNonWidgetSystemShortcuts(systemShortcuts);
+        // If total shortcuts over threshold, collapse system shortcuts to single row
+        addSystemShortcutsIconsOnly(nonWidgetSystemShortcuts);
+        // May need to recalculate row width
+        mContainerWidth = Math.max(mContainerWidth,
+                nonWidgetSystemShortcuts.size() * getResources()
+                        .getDimensionPixelSize(R.dimen.system_shortcut_header_icon_touch_size));
+        // Add widget shortcut to separate container
+        Optional<SystemShortcut.Widgets> widgetShortcutOpt = getWidgetShortcut(systemShortcuts);
+        if (widgetShortcutOpt.isPresent()) {
+            mWidgetContainer = inflateAndAdd(R.layout.widget_shortcut_container_material_u,
+                    this);
+            initializeWidgetShortcut(mWidgetContainer, widgetShortcutOpt.get());
+            currentHeight += mShortcutHeight + mChildContainerMargin;
+        }
+        addDeepShortcutsMaterialU(deepShortcutCount, currentHeight);
+    }
+
+    /**
+     * Finds the first instance of the Widgets Shortcut from the SystemShortcut List
+     * @param systemShortcuts List of SystemShortcut instances to search
+     * @return Optional Widgets SystemShortcut
+     */
+    private static Optional<SystemShortcut.Widgets> getWidgetShortcut(
+            List<SystemShortcut> systemShortcuts) {
+        return systemShortcuts
+                .stream()
+                .filter(shortcut -> shortcut instanceof SystemShortcut.Widgets)
+                .map(SystemShortcut.Widgets.class::cast)
+                .findFirst();
+    }
+
+    /**
+     * Returns list of [systemShortcuts] without the Widgets shortcut instance if found
+     * @param systemShortcuts list of SystemShortcuts to filter from
+     * @return systemShortcuts without the Widgets Shortcut
+     */
+    private static List<SystemShortcut> getNonWidgetSystemShortcuts(
+            List<SystemShortcut> systemShortcuts) {
+
+        return systemShortcuts
+                .stream()
+                .filter(shortcut -> !(shortcut instanceof SystemShortcut.Widgets))
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * Inflates the given systemShortcutContainerLayout as a container, and populates with
+     * the systemShortcuts as views using the systemShortcutLayout
+     * @param systemShortcuts List of SystemShortcut to inflate as Views
+     * @param systemShortcutContainerLayout Layout Resource for the Container of shortcut Views
+     * @param systemShortcutLayout Layout Resource for the individual shortcut Views
+     */
+    private void addSystemShortcutsMaterialU(List<SystemShortcut> systemShortcuts,
+            @LayoutRes int systemShortcutContainerLayout, @LayoutRes int systemShortcutLayout) {
+
+        if (systemShortcuts.size() == 0) {
+            return;
+        }
+        mSystemShortcutContainer = inflateAndAdd(systemShortcutContainerLayout, this);
+        mWidgetContainer = mSystemShortcutContainer;
+        for (int i = 0; i < systemShortcuts.size(); i++) {
+            initializeSystemShortcut(
+                    systemShortcutLayout,
+                    mSystemShortcutContainer,
+                    systemShortcuts.get(i),
+                    i < systemShortcuts.size() - 1);
+        }
+    }
+
+    private void addSystemShortcutsIconsOnly(List<SystemShortcut> systemShortcuts) {
+        if (systemShortcuts.size() == 0) {
+            return;
+        }
+
+        mSystemShortcutContainer = ENABLE_MATERIAL_U_POPUP.get()
+                ? inflateAndAdd(R.layout.system_shortcut_icons_container_material_u, this)
+                : inflateAndAdd(R.layout.system_shortcut_icons_container, this, 0);
+
+        for (int i = 0; i < systemShortcuts.size(); i++) {
+            @LayoutRes int shortcutIconLayout = R.layout.system_shortcut_icon_only;
+            boolean shouldAppendSpacer = true;
+
+            if (i == 0) {
+                shortcutIconLayout = R.layout.system_shortcut_icon_only_start;
+            } else if (i == systemShortcuts.size() - 1) {
+                shortcutIconLayout = R.layout.system_shortcut_icon_only_end;
+                shouldAppendSpacer = false;
+            }
+            initializeSystemShortcut(
+                    shortcutIconLayout,
+                    mSystemShortcutContainer,
+                    systemShortcuts.get(i),
+                    shouldAppendSpacer);
+        }
+    }
+
+    /**
+     * Inflates and adds [deepShortcutCount] number of DeepShortcutView for the  to a new container
+     * @param deepShortcutCount number of DeepShortcutView instances to add
+     * @param currentHeight height of popup before adding deep shortcuts
+     */
+    private void addDeepShortcutsMaterialU(int deepShortcutCount, float currentHeight) {
+        mDeepShortcutContainer = inflateAndAdd(R.layout.deep_shortcut_container, this);
+        for (int i = deepShortcutCount; i > 0; i--) {
+            currentHeight += mShortcutHeight;
+            // when there is limited vertical screen space, limit total popup rows to fit
+            if (currentHeight >= mActivityContext.getDeviceProfile().availableHeightPx) break;
+            DeepShortcutView v = inflateAndAdd(R.layout.deep_shortcut_material_u,
+                    mDeepShortcutContainer);
+            v.getLayoutParams().width = mContainerWidth;
+            mDeepShortcuts.add(v);
+        }
+        updateHiddenShortcuts();
     }
 
     protected NotificationContainer getNotificationContainer() {
@@ -382,28 +567,39 @@
         int allowedCount = mNotificationContainer != null
                 ? MAX_SHORTCUTS_IF_NOTIFICATIONS : MAX_SHORTCUTS;
 
-        int total = mShortcuts.size();
+        int total = mDeepShortcuts.size();
         for (int i = 0; i < total; i++) {
-            DeepShortcutView view = mShortcuts.get(i);
+            DeepShortcutView view = mDeepShortcuts.get(i);
             view.setVisibility(i >= allowedCount ? GONE : VISIBLE);
         }
     }
 
     protected void initializeWidgetShortcut(ViewGroup container, SystemShortcut info) {
-        View view = initializeSystemShortcut(R.layout.system_shortcut, container, info);
+        View view = initializeSystemShortcut(R.layout.system_shortcut, container, info, false);
         view.getLayoutParams().width = mContainerWidth;
     }
 
-    protected View initializeSystemShortcut(int resId, ViewGroup container, SystemShortcut info) {
-        View view = inflateAndAdd(
-                resId, container, getInsertIndexForSystemShortcut(container, info));
+    /**
+     * Initializes and adds View for given SystemShortcut to a container.
+     * @param resId Resource id to use for SystemShortcut View.
+     * @param container ViewGroup to add the shortcut View to as a parent
+     * @param info The SystemShortcut instance to create a View for.
+     * @param shouldAppendSpacer If True, will add a spacer after the shortcut, when showing the
+     *                        SystemShortcut as an icon only. Used to space the shortcut icons
+     *                        evenly.
+     * @return The view inflated for the SystemShortcut
+     */
+    protected View initializeSystemShortcut(int resId, ViewGroup container, SystemShortcut info,
+            boolean shouldAppendSpacer) {
+        View view = inflateAndAdd(resId, container);
         if (view instanceof DeepShortcutView) {
-            // Expanded system shortcut, with both icon and text shown on white background.
+            // System shortcut takes entire row with icon and text
             final DeepShortcutView shortcutView = (DeepShortcutView) view;
             info.setIconAndLabelFor(shortcutView.getIconView(), shortcutView.getBubbleText());
         } else if (view instanceof ImageView) {
-            // Only the system shortcut icon shows on a gray background header.
+            // System shortcut is just an icon
             info.setIconAndContentDescriptionFor((ImageView) view);
+            if (shouldAppendSpacer) inflateAndAdd(R.layout.system_shortcut_spacer, container);
             view.setTooltipText(view.getContentDescription());
         }
         view.setTag(info);
@@ -412,17 +608,6 @@
     }
 
     /**
-     * Returns an index for inserting a shortcut into a container.
-     */
-    private int getInsertIndexForSystemShortcut(ViewGroup container, SystemShortcut shortcut) {
-        final View separator = container.findViewById(R.id.separator);
-
-        return separator != null && shortcut.isLeftGroup() ?
-                container.indexOfChild(separator) :
-                container.getChildCount();
-    }
-
-    /**
      * Determines when the deferred drag should be started.
      *
      * Current behavior:
diff --git a/src/com/android/launcher3/popup/PopupDataProvider.java b/src/com/android/launcher3/popup/PopupDataProvider.java
index 80ffecc..44e3dd6 100644
--- a/src/com/android/launcher3/popup/PopupDataProvider.java
+++ b/src/com/android/launcher3/popup/PopupDataProvider.java
@@ -238,6 +238,15 @@
                 .collect(Collectors.toList());
     }
 
+    /** Gets the WidgetsListContentEntry for the currently selected header. */
+    public WidgetsListContentEntry getSelectedAppWidgets(PackageUserKey packageUserKey) {
+        return (WidgetsListContentEntry) mAllWidgets.stream()
+                .filter(row -> row instanceof WidgetsListContentEntry
+                        && PackageUserKey.fromPackageItemInfo(row.mPkgItem).equals(packageUserKey))
+                .findAny()
+                .orElse(null);
+    }
+
     /**
      * Returns a list of notifications that are relevant to given ItemInfo.
      */
diff --git a/src/com/android/launcher3/popup/RemoteActionShortcut.java b/src/com/android/launcher3/popup/RemoteActionShortcut.java
index e5e2c35..7c9ab87 100644
--- a/src/com/android/launcher3/popup/RemoteActionShortcut.java
+++ b/src/com/android/launcher3/popup/RemoteActionShortcut.java
@@ -38,6 +38,8 @@
 import com.android.launcher3.Utilities;
 import com.android.launcher3.model.data.ItemInfo;
 
+import java.lang.ref.WeakReference;
+
 @TargetApi(Build.VERSION_CODES.Q)
 public class RemoteActionShortcut extends SystemShortcut<BaseDraggingActivity> {
     private static final String TAG = "RemoteActionShortcut";
@@ -79,6 +81,7 @@
         mTarget.getStatsLogManager().logger().withItemInfo(mItemInfo)
                 .log(LAUNCHER_SYSTEM_SHORTCUT_PAUSE_TAP);
 
+        final WeakReference<BaseDraggingActivity> weakTarget = new WeakReference<>(mTarget);
         final String actionIdentity = mAction.getTitle() + ", "
                 + mItemInfo.getTargetComponent().getPackageName();
         try {
@@ -91,10 +94,13 @@
                             mItemInfo.getTargetComponent().getPackageName()),
                     (pendingIntent, intent, resultCode, resultData, resultExtras) -> {
                         if (DEBUG) Log.d(TAG, "Action is complete: " + actionIdentity);
+                        final BaseDraggingActivity target = weakTarget.get();
                         if (resultData != null && !resultData.isEmpty()) {
                             Log.e(TAG, "Remote action returned result: " + actionIdentity
                                     + " : " + resultData);
-                            Toast.makeText(mTarget, resultData, Toast.LENGTH_SHORT).show();
+                            if (target != null) {
+                                Toast.makeText(target, resultData, Toast.LENGTH_SHORT).show();
+                            }
                         }
                     },
                     MAIN_EXECUTOR.getHandler());
diff --git a/src/com/android/launcher3/popup/SystemShortcut.java b/src/com/android/launcher3/popup/SystemShortcut.java
index 0e25984c..69bba69 100644
--- a/src/com/android/launcher3/popup/SystemShortcut.java
+++ b/src/com/android/launcher3/popup/SystemShortcut.java
@@ -40,6 +40,7 @@
 public abstract class SystemShortcut<T extends Context & ActivityContext> extends ItemInfo
         implements View.OnClickListener {
 
+    private static final String TAG = SystemShortcut.class.getSimpleName();
     private final int mIconResId;
     protected final int mLabelResId;
     protected int mAccessibilityActionId;
diff --git a/src/com/android/launcher3/provider/LauncherDbUtils.java b/src/com/android/launcher3/provider/LauncherDbUtils.java
index b510378..c718dcc 100644
--- a/src/com/android/launcher3/provider/LauncherDbUtils.java
+++ b/src/com/android/launcher3/provider/LauncherDbUtils.java
@@ -16,15 +16,34 @@
 
 package com.android.launcher3.provider;
 
+import static com.android.launcher3.icons.IconCache.EXTRA_SHORTCUT_BADGE_OVERRIDE_PACKAGE;
+
+import android.content.ContentValues;
 import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ShortcutInfo;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.drawable.Icon;
 import android.os.Binder;
+import android.os.PersistableBundle;
 import android.os.Process;
+import android.os.UserManager;
+import android.text.TextUtils;
 
+import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.LauncherSettings.Favorites;
+import com.android.launcher3.Utilities;
+import com.android.launcher3.model.LoaderCursor;
+import com.android.launcher3.model.UserManagerState;
+import com.android.launcher3.pm.PinRequestHelper;
 import com.android.launcher3.pm.UserCache;
+import com.android.launcher3.shortcuts.ShortcutKey;
 import com.android.launcher3.util.IntArray;
+import com.android.launcher3.util.IntSet;
 
 /**
  * A set of utility methods for Launcher DB used for DB updates and migration.
@@ -73,6 +92,78 @@
     }
 
     /**
+     * Migrates the legacy shortcuts to deep shortcuts pinned under Launcher.
+     * Removes any invalid shortcut or any shortcut which requires some permission to launch
+     */
+    public static void migrateLegacyShortcuts(Context context, SQLiteDatabase db) {
+        Cursor c = db.query(
+                Favorites.TABLE_NAME, null, "itemType = 1", null, null, null, null);
+        UserManagerState ums = new UserManagerState();
+        ums.init(UserCache.INSTANCE.get(context),
+                context.getSystemService(UserManager.class));
+        LoaderCursor lc = new LoaderCursor(c, LauncherAppState.getInstance(context), ums);
+        IntSet deletedShortcuts = new IntSet();
+
+        while (lc.moveToNext()) {
+            if (lc.user != Process.myUserHandle()) {
+                deletedShortcuts.add(lc.id);
+                continue;
+            }
+            Intent intent = lc.parseIntent();
+            if (intent == null) {
+                deletedShortcuts.add(lc.id);
+                continue;
+            }
+
+            // Make sure the target intent can be launched without any permissions. Otherwise remove
+            // the shortcut
+            ResolveInfo ri = context.getPackageManager().resolveActivity(intent, 0);
+            if (ri == null || !TextUtils.isEmpty(ri.activityInfo.permission)) {
+                deletedShortcuts.add(lc.id);
+                continue;
+            }
+            PersistableBundle extras = new PersistableBundle();
+            extras.putString(EXTRA_SHORTCUT_BADGE_OVERRIDE_PACKAGE, ri.activityInfo.packageName);
+            ShortcutInfo.Builder infoBuilder = new ShortcutInfo.Builder(
+                    context, "migrated_shortcut-" + lc.id)
+                    .setIntent(intent)
+                    .setExtras(extras)
+                    .setShortLabel(lc.getTitle());
+
+            Bitmap bitmap = null;
+            byte[] iconData = lc.getIconBlob();
+            if (iconData != null) {
+                bitmap = BitmapFactory.decodeByteArray(iconData, 0, iconData.length);
+            }
+            if (bitmap != null) {
+                infoBuilder.setIcon(Icon.createWithBitmap(bitmap));
+            }
+
+            ShortcutInfo info = infoBuilder.build();
+            if (!PinRequestHelper.createRequestForShortcut(context, info).accept()) {
+                deletedShortcuts.add(lc.id);
+                continue;
+            }
+            ContentValues update = new ContentValues();
+            update.put(Favorites.ITEM_TYPE, Favorites.ITEM_TYPE_DEEP_SHORTCUT);
+            update.put(Favorites.INTENT,
+                    ShortcutKey.makeIntent(info.getId(), context.getPackageName()).toUri(0));
+            db.update(Favorites.TABLE_NAME, update, "_id = ?",
+                    new String[] {Integer.toString(lc.id)});
+        }
+        lc.close();
+        if (!deletedShortcuts.isEmpty()) {
+            db.delete(Favorites.TABLE_NAME,
+                    Utilities.createDbSelectionQuery(Favorites._ID, deletedShortcuts.getArray()),
+                    null);
+        }
+
+        // Drop the unused columns
+        db.execSQL("ALTER TABLE " + Favorites.TABLE_NAME + " DROP COLUMN iconPackage;");
+        db.execSQL("ALTER TABLE " + Favorites.TABLE_NAME + " DROP COLUMN iconResource;");
+    }
+
+    /**
      * Utility class to simplify managing sqlite transactions
      */
     public static class SQLiteTransaction extends Binder implements AutoCloseable {
diff --git a/src/com/android/launcher3/provider/RestoreDbTask.java b/src/com/android/launcher3/provider/RestoreDbTask.java
index 48b3acf..c554def 100644
--- a/src/com/android/launcher3/provider/RestoreDbTask.java
+++ b/src/com/android/launcher3/provider/RestoreDbTask.java
@@ -16,40 +16,54 @@
 
 package com.android.launcher3.provider;
 
+import static android.os.Process.myUserHandle;
+
 import static com.android.launcher3.InvariantDeviceProfile.TYPE_MULTI_DISPLAY;
-import static com.android.launcher3.InvariantDeviceProfile.TYPE_PHONE;
+import static com.android.launcher3.LauncherPrefs.APP_WIDGET_IDS;
+import static com.android.launcher3.LauncherPrefs.OLD_APP_WIDGET_IDS;
+import static com.android.launcher3.LauncherPrefs.RESTORE_DEVICE;
+import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION;
 import static com.android.launcher3.provider.LauncherDbUtils.dropTable;
+import static com.android.launcher3.widget.LauncherWidgetHolder.APPWIDGET_HOST_ID;
 
 import android.app.backup.BackupManager;
+import android.appwidget.AppWidgetHost;
 import android.content.ContentValues;
 import android.content.Context;
-import android.content.SharedPreferences;
+import android.content.Intent;
+import android.content.pm.LauncherActivityInfo;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
 import android.os.UserHandle;
 import android.text.TextUtils;
+import android.util.Log;
 import android.util.LongSparseArray;
 import android.util.SparseLongArray;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
 
 import com.android.launcher3.AppWidgetsRestoredReceiver;
 import com.android.launcher3.InvariantDeviceProfile;
-import com.android.launcher3.LauncherAppState;
-import com.android.launcher3.LauncherProvider.DatabaseHelper;
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.LauncherSettings.Favorites;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.logging.FileLog;
 import com.android.launcher3.model.DeviceGridState;
-import com.android.launcher3.model.GridBackupTable;
+import com.android.launcher3.model.ModelDbController;
+import com.android.launcher3.model.data.AppInfo;
 import com.android.launcher3.model.data.LauncherAppWidgetInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
 import com.android.launcher3.provider.LauncherDbUtils.SQLiteTransaction;
+import com.android.launcher3.uioverrides.ApiWrapper;
 import com.android.launcher3.util.IntArray;
 import com.android.launcher3.util.LogConfig;
 
 import java.io.InvalidObjectException;
 import java.util.Arrays;
+import java.util.Collection;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * Utility class to update DB schema after it has been restored.
@@ -60,23 +74,23 @@
 public class RestoreDbTask {
 
     private static final String TAG = "RestoreDbTask";
-    private static final String RESTORED_DEVICE_TYPE = "restored_task_pending";
+    public static final String RESTORED_DEVICE_TYPE = "restored_task_pending";
 
     private static final String INFO_COLUMN_NAME = "name";
     private static final String INFO_COLUMN_DEFAULT_VALUE = "dflt_value";
 
-    private static final String APPWIDGET_OLD_IDS = "appwidget_old_ids";
-    private static final String APPWIDGET_IDS = "appwidget_ids";
+    public static final String APPWIDGET_OLD_IDS = "appwidget_old_ids";
+    public static final String APPWIDGET_IDS = "appwidget_ids";
 
     /**
      * Tries to restore the backup DB if needed
      */
-    public static void restoreIfNeeded(Context context, DatabaseHelper helper) {
+    public static void restoreIfNeeded(Context context, ModelDbController dbController) {
         if (!isPending(context)) {
             return;
         }
-        if (!performRestore(context, helper)) {
-            helper.createEmptyDB(helper.getWritableDatabase());
+        if (!performRestore(context, dbController)) {
+            dbController.createEmptyDB();
         }
 
         // Obtain InvariantDeviceProfile first before setting pending to false, so
@@ -85,18 +99,17 @@
 
         // Set is pending to false irrespective of the result, so that it doesn't get
         // executed again.
-        Utilities.getPrefs(context).edit().remove(RESTORED_DEVICE_TYPE).commit();
+        LauncherPrefs.get(context).removeSync(RESTORE_DEVICE);
 
         idp.reinitializeAfterRestore(context);
     }
 
-    private static boolean performRestore(Context context, DatabaseHelper helper) {
-        SQLiteDatabase db = helper.getWritableDatabase();
+    private static boolean performRestore(Context context, ModelDbController controller) {
+        SQLiteDatabase db = controller.getDb();
         try (SQLiteTransaction t = new SQLiteTransaction(db)) {
             RestoreDbTask task = new RestoreDbTask();
-            task.backupWorkspace(context, db);
-            task.sanitizeDB(context, helper, db, new BackupManager(context));
-            task.restoreAppWidgetIdsIfExists(context);
+            task.sanitizeDB(context, controller, db, new BackupManager(context));
+            task.restoreAppWidgetIdsIfExists(context, controller);
             t.commit();
             return true;
         } catch (Exception e) {
@@ -106,49 +119,6 @@
     }
 
     /**
-     * Restore the workspace if backup is available.
-     */
-    public static boolean restoreIfPossible(@NonNull Context context,
-            @NonNull DatabaseHelper helper, @NonNull BackupManager backupManager) {
-        final SQLiteDatabase db = helper.getWritableDatabase();
-        try (SQLiteTransaction t = new SQLiteTransaction(db)) {
-            RestoreDbTask task = new RestoreDbTask();
-            task.restoreWorkspace(context, db, helper, backupManager);
-            t.commit();
-            return true;
-        } catch (Exception e) {
-            FileLog.e(TAG, "Failed to restore db", e);
-            return false;
-        }
-    }
-
-    /**
-     * Backup the workspace so that if things go south in restore, we can recover these entries.
-     */
-    private void backupWorkspace(Context context, SQLiteDatabase db) throws Exception {
-        InvariantDeviceProfile idp = LauncherAppState.getIDP(context);
-        new GridBackupTable(context, db, idp.numDatabaseHotseatIcons, idp.numColumns, idp.numRows)
-                .doBackup(getDefaultProfileId(db), GridBackupTable.OPTION_REQUIRES_SANITIZATION);
-    }
-
-    private void restoreWorkspace(@NonNull Context context, @NonNull SQLiteDatabase db,
-            @NonNull DatabaseHelper helper, @NonNull BackupManager backupManager)
-            throws Exception {
-        final InvariantDeviceProfile idp = LauncherAppState.getIDP(context);
-        GridBackupTable backupTable = new GridBackupTable(context, db, idp.numDatabaseHotseatIcons,
-                idp.numColumns, idp.numRows);
-        if (backupTable.restoreFromRawBackupIfAvailable(getDefaultProfileId(db))) {
-            int itemsDeleted = sanitizeDB(context, helper, db, backupManager);
-            LauncherAppState.getInstance(context).getModel().forceReload();
-            restoreAppWidgetIdsIfExists(context);
-            if (itemsDeleted == 0) {
-                // all the items are restored, we no longer need the backup table
-                dropTable(db, Favorites.BACKUP_TABLE_NAME);
-            }
-        }
-    }
-
-    /**
      * Makes the following changes in the provider DB.
      *   1. Removes all entries belonging to any profiles that were not restored.
      *   2. Marks all entries as restored. The flags are updated during first load or as
@@ -156,14 +126,17 @@
      *   3. If the user serial for any restored profile is different than that of the previous
      *      device, update the entries to the new profile id.
      *   4. If restored from a single display backup, remove gaps between screenIds
+     *   5. Override shortcuts that need to be replaced.
      *
      * @return number of items deleted.
      */
-    private int sanitizeDB(Context context, DatabaseHelper helper, SQLiteDatabase db,
+    @VisibleForTesting
+    protected int sanitizeDB(Context context, ModelDbController controller, SQLiteDatabase db,
             BackupManager backupManager) throws Exception {
         // Primary user ids
-        long myProfileId = helper.getDefaultUserSerial();
+        long myProfileId = controller.getSerialNumberForUser(myUserHandle());
         long oldProfileId = getDefaultProfileId(db);
+        Log.d(TAG, "sanitizeDB: myProfileId=" + myProfileId + " oldProfileId=" + oldProfileId);
         LongSparseArray<Long> oldManagedProfileIds = getManagedProfileIds(db, oldProfileId);
         LongSparseArray<Long> profileMapping = new LongSparseArray<>(oldManagedProfileIds.size()
                 + 1);
@@ -174,8 +147,10 @@
             long oldManagedProfileId = oldManagedProfileIds.keyAt(i);
             UserHandle user = getUserForAncestralSerialNumber(backupManager, oldManagedProfileId);
             if (user != null) {
-                long newManagedProfileId = helper.getSerialNumberForUser(user);
+                long newManagedProfileId = controller.getSerialNumberForUser(user);
                 profileMapping.put(oldManagedProfileId, newManagedProfileId);
+                Log.d(TAG, "sanitizeDB: managed profile id=" + oldManagedProfileId
+                        + " should be mapped to new id=" + newManagedProfileId);
             }
         }
 
@@ -238,11 +213,13 @@
         }
 
         // If restored from a single display backup, remove gaps between screenIds
-        if (Utilities.getPrefs(context).getInt(RESTORED_DEVICE_TYPE, TYPE_PHONE)
-                != TYPE_MULTI_DISPLAY) {
+        if (LauncherPrefs.get(context).get(RESTORE_DEVICE) != TYPE_MULTI_DISPLAY) {
             removeScreenIdGaps(db);
         }
 
+        // Override shortcuts
+        maybeOverrideShortcuts(context, controller, db, myProfileId);
+
         return itemsDeleted;
     }
 
@@ -337,7 +314,7 @@
     }
 
     public static boolean isPending(Context context) {
-        return Utilities.getPrefs(context).contains(RESTORED_DEVICE_TYPE);
+        return LauncherPrefs.get(context).has(RESTORE_DEVICE);
     }
 
     /**
@@ -345,31 +322,73 @@
      */
     public static void setPending(Context context) {
         FileLog.d(TAG, "Restore data received through full backup ");
-        Utilities.getPrefs(context).edit()
-                .putInt(RESTORED_DEVICE_TYPE, new DeviceGridState(context).getDeviceType())
-                .commit();
+        LauncherPrefs.get(context)
+                .putSync(RESTORE_DEVICE.to(new DeviceGridState(context).getDeviceType()));
     }
 
-    private void restoreAppWidgetIdsIfExists(Context context) {
-        SharedPreferences prefs = Utilities.getPrefs(context);
-        if (prefs.contains(APPWIDGET_OLD_IDS) && prefs.contains(APPWIDGET_IDS)) {
-            AppWidgetsRestoredReceiver.restoreAppWidgetIds(context,
-                    IntArray.fromConcatString(prefs.getString(APPWIDGET_OLD_IDS, "")).toArray(),
-                    IntArray.fromConcatString(prefs.getString(APPWIDGET_IDS, "")).toArray());
+    private void restoreAppWidgetIdsIfExists(Context context, ModelDbController controller) {
+        LauncherPrefs lp = LauncherPrefs.get(context);
+        if (lp.has(APP_WIDGET_IDS, OLD_APP_WIDGET_IDS)) {
+            AppWidgetHost host = new AppWidgetHost(context, APPWIDGET_HOST_ID);
+            AppWidgetsRestoredReceiver.restoreAppWidgetIds(context, controller,
+                    IntArray.fromConcatString(lp.get(OLD_APP_WIDGET_IDS)).toArray(),
+                    IntArray.fromConcatString(lp.get(APP_WIDGET_IDS)).toArray(),
+                    host);
         } else {
             FileLog.d(TAG, "No app widget ids to restore.");
         }
 
-        prefs.edit().remove(APPWIDGET_OLD_IDS)
-                .remove(APPWIDGET_IDS).apply();
+        lp.remove(APP_WIDGET_IDS, OLD_APP_WIDGET_IDS);
     }
 
     public static void setRestoredAppWidgetIds(Context context, @NonNull int[] oldIds,
             @NonNull int[] newIds) {
-        Utilities.getPrefs(context).edit()
-                .putString(APPWIDGET_OLD_IDS, IntArray.wrap(oldIds).toConcatString())
-                .putString(APPWIDGET_IDS, IntArray.wrap(newIds).toConcatString())
-                .commit();
+        LauncherPrefs.get(context).putSync(
+                OLD_APP_WIDGET_IDS.to(IntArray.wrap(oldIds).toConcatString()),
+                APP_WIDGET_IDS.to(IntArray.wrap(newIds).toConcatString()));
+    }
+
+    protected static void maybeOverrideShortcuts(Context context, ModelDbController controller,
+            SQLiteDatabase db, long currentUser) {
+        Map<String, LauncherActivityInfo> activityOverrides = ApiWrapper.getActivityOverrides(
+                context);
+
+        if (activityOverrides == null || activityOverrides.isEmpty()) {
+            return;
+        }
+
+        try (Cursor c = db.query(Favorites.TABLE_NAME,
+                new String[]{Favorites._ID, Favorites.INTENT},
+                String.format("%s=? AND %s=? AND ( %s )", Favorites.ITEM_TYPE, Favorites.PROFILE_ID,
+                        getTelephonyIntentSQLLiteSelection(activityOverrides.keySet())),
+                new String[]{String.valueOf(ITEM_TYPE_APPLICATION), String.valueOf(currentUser)},
+                null, null, null);
+             SQLiteTransaction t = new SQLiteTransaction(db)) {
+            final int idIndex = c.getColumnIndexOrThrow(Favorites._ID);
+            final int intentIndex = c.getColumnIndexOrThrow(Favorites.INTENT);
+            while (c.moveToNext()) {
+                LauncherActivityInfo override = activityOverrides.get(Intent.parseUri(
+                        c.getString(intentIndex), 0).getComponent().getPackageName());
+                if (override != null) {
+                    ContentValues values = new ContentValues();
+                    values.put(Favorites.PROFILE_ID,
+                            controller.getSerialNumberForUser(override.getUser()));
+                    values.put(Favorites.INTENT, AppInfo.makeLaunchIntent(override).toUri(0));
+                    db.update(Favorites.TABLE_NAME, values, String.format("%s=?", Favorites._ID),
+                            new String[]{String.valueOf(c.getInt(idIndex))});
+                }
+            }
+            t.commit();
+        } catch (Exception ex) {
+            Log.e(TAG, "Error while overriding shortcuts", ex);
+        }
+    }
+
+    private static String getTelephonyIntentSQLLiteSelection(Collection<String> packages) {
+        return packages.stream().map(
+                packageToChange -> String.format("intent LIKE '%%' || '%s' || '%%' ",
+                        packageToChange)).collect(
+                Collectors.joining(" OR "));
     }
 
 }
diff --git a/src/com/android/launcher3/qsb/QsbContainerView.java b/src/com/android/launcher3/qsb/QsbContainerView.java
index 23ee251..1e3be27 100644
--- a/src/com/android/launcher3/qsb/QsbContainerView.java
+++ b/src/com/android/launcher3/qsb/QsbContainerView.java
@@ -40,11 +40,12 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
 
 import com.android.launcher3.InvariantDeviceProfile;
 import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.R;
-import com.android.launcher3.Utilities;
 import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.graphics.FragmentWithPreview;
 import com.android.launcher3.widget.util.WidgetSizes;
@@ -65,6 +66,7 @@
      * @param context
      * @return String
      */
+    @WorkerThread
     @Nullable
     public static String getSearchWidgetPackageName(@NonNull Context context) {
         String providerPkg = Settings.Global.getString(context.getContentResolver(),
@@ -84,6 +86,7 @@
      * @param context
      * @return AppWidgetProviderInfo
      */
+    @WorkerThread
     @Nullable
     public static AppWidgetProviderInfo getSearchWidgetProviderInfo(@NonNull Context context) {
         String providerPkg = getSearchWidgetPackageName(context);
@@ -110,6 +113,7 @@
     /**
      * returns componentName for searchWidget if package name is known.
      */
+    @WorkerThread
     @Nullable
     public static ComponentName getSearchComponentName(@NonNull  Context context) {
         AppWidgetProviderInfo providerInfo =
@@ -200,7 +204,7 @@
             Context context = getContext();
             AppWidgetManager widgetManager = AppWidgetManager.getInstance(context);
 
-            int widgetId = Utilities.getPrefs(context).getInt(mKeyWidgetId, -1);
+            int widgetId = LauncherPrefs.getPrefs(context).getInt(mKeyWidgetId, -1);
             AppWidgetProviderInfo widgetInfo = widgetManager.getAppWidgetInfo(widgetId);
             boolean isWidgetBound = (widgetInfo != null) &&
                     widgetInfo.provider.equals(mWidgetInfo.provider);
@@ -244,7 +248,7 @@
         }
 
         private void saveWidgetId(int widgetId) {
-            Utilities.getPrefs(getContext()).edit().putInt(mKeyWidgetId, widgetId).apply();
+            LauncherPrefs.getPrefs(getContext()).edit().putInt(mKeyWidgetId, widgetId).apply();
         }
 
         @Override
@@ -317,6 +321,7 @@
          * If widgetCategory is not supported, or no such widget is found, returns the first widget
          * provided by the package.
          */
+        @WorkerThread
         protected AppWidgetProviderInfo getSearchWidgetProvider() {
             return getSearchWidgetProviderInfo(getContext());
         }
diff --git a/src/com/android/launcher3/search/SearchCallback.java b/src/com/android/launcher3/search/SearchCallback.java
index 495a303..cf7ab10 100644
--- a/src/com/android/launcher3/search/SearchCallback.java
+++ b/src/com/android/launcher3/search/SearchCallback.java
@@ -24,6 +24,11 @@
  */
 public interface SearchCallback<T> {
 
+    // Search Result Codes
+    int UNKNOWN = 0;
+    int INTERMEDIATE = 1;
+    int FINAL = 2;
+
     /**
      * Called when the search from primary source is complete.
      *
@@ -32,6 +37,17 @@
     void onSearchResult(String query, ArrayList<T> items);
 
     /**
+     * Called when the search from primary source is complete.
+     *
+     * @param items            list of search results
+     * @param searchResultCode indicates if the result is final or intermediate for a given query
+     *                         since we can get search results from multiple sources.
+     */
+    default void onSearchResult(String query, ArrayList<T> items, int searchResultCode) {
+        onSearchResult(query, items);
+    }
+
+    /**
      * Called when the search results should be cleared.
      */
     void clearSearchResult();
diff --git a/src/com/android/launcher3/search/StringMatcherUtility.java b/src/com/android/launcher3/search/StringMatcherUtility.java
index acab52b..28fc4f0 100644
--- a/src/com/android/launcher3/search/StringMatcherUtility.java
+++ b/src/com/android/launcher3/search/StringMatcherUtility.java
@@ -16,16 +16,23 @@
 
 package com.android.launcher3.search;
 
+import android.text.TextUtils;
+
+import com.android.launcher3.util.IntArray;
+
 import java.text.Collator;
+import java.util.stream.IntStream;
 
 /**
  * Utilities for matching query string to target string.
  */
 public class StringMatcherUtility {
 
+    private static final Character SPACE = ' ';
+
     /**
-     * Returns {@code true} is {@code query} is a prefix substring of a complete word/phrase in
-     * {@code target}.
+     * Returns {@code true} if {@code query} is a prefix of a substring in {@code target}. How to
+     * break target to valid substring is defined in the given {@code matcher}.
      */
     public static boolean matches(String query, String target, StringMatcher matcher) {
         int queryLength = query.length();
@@ -50,7 +57,7 @@
             thisType = nextType;
             nextType = i < (targetLength - 1)
                     ? Character.getType(target.codePointAt(i + 1)) : Character.UNASSIGNED;
-            if (isBreak(thisType, lastType, nextType)
+            if (matcher.isBreak(thisType, lastType, nextType)
                     && matcher.matches(query, target.substring(i, i + queryLength))) {
                 return true;
             }
@@ -59,49 +66,38 @@
     }
 
     /**
-     * Returns true if the current point should be a break point. Following cases
-     * are considered as break points:
-     *      1) Any non space character after a space character
-     *      2) Any digit after a non-digit character
-     *      3) Any capital character after a digit or small character
-     *      4) Any capital character before a small character
+     * Returns a list of breakpoints wherever the string contains a break. For example:
+     * "t-mobile" would have breakpoints at [0, 1]
+     * "Agar.io" would have breakpoints at [3, 4]
+     * "LEGO®Builder" would have a breakpoint at [4]
      */
-    private static boolean isBreak(int thisType, int prevType, int nextType) {
-        switch (prevType) {
-            case Character.UNASSIGNED:
-            case Character.SPACE_SEPARATOR:
-            case Character.LINE_SEPARATOR:
-            case Character.PARAGRAPH_SEPARATOR:
-                return true;
+    public static IntArray getListOfBreakpoints(CharSequence input, StringMatcher matcher) {
+        int inputLength = input.length();
+        if ((inputLength <= 2) || TextUtils.indexOf(input, SPACE) != -1) {
+            // when there is a space in the string, return a list where the elements are the
+            // position of the spaces - 1. This is to make the logic consistent where breakpoints
+            // are placed
+            return IntArray.wrap(IntStream.range(0, inputLength)
+                    .filter(i -> input.charAt(i) == SPACE)
+                    .map(i -> i - 1)
+                    .toArray());
         }
-        switch (thisType) {
-            case Character.UPPERCASE_LETTER:
-                if (nextType == Character.UPPERCASE_LETTER) {
-                    return true;
-                }
-                // Follow through
-            case Character.TITLECASE_LETTER:
-                // Break point if previous was not a upper case
-                return prevType != Character.UPPERCASE_LETTER;
-            case Character.LOWERCASE_LETTER:
-                // Break point if previous was not a letter.
-                return prevType > Character.OTHER_LETTER || prevType <= Character.UNASSIGNED;
-            case Character.DECIMAL_DIGIT_NUMBER:
-            case Character.LETTER_NUMBER:
-            case Character.OTHER_NUMBER:
-                // Break point if previous was not a number
-                return !(prevType == Character.DECIMAL_DIGIT_NUMBER
-                        || prevType == Character.LETTER_NUMBER
-                        || prevType == Character.OTHER_NUMBER);
-            case Character.MATH_SYMBOL:
-            case Character.CURRENCY_SYMBOL:
-            case Character.OTHER_PUNCTUATION:
-            case Character.DASH_PUNCTUATION:
-                // Always a break point for a symbol
-                return true;
-            default:
-                return  false;
+        IntArray listOfBreakPoints = new IntArray();
+        int prevType;
+        int thisType = Character.getType(Character.codePointAt(input, 0));
+        int nextType = Character.getType(Character.codePointAt(input, 1));
+        for (int i = 1; i < inputLength; i++) {
+            prevType = thisType;
+            thisType = nextType;
+            nextType = i < (inputLength - 1)
+                    ? Character.getType(Character.codePointAt(input, i + 1))
+                    : Character.UNASSIGNED;
+            if (matcher.isBreak(thisType, prevType, nextType)) {
+                // breakpoint is at previous
+                listOfBreakPoints.add(i-1);
+            }
         }
+        return listOfBreakPoints;
     }
 
     /**
@@ -142,6 +138,79 @@
         public static StringMatcher getInstance() {
             return new StringMatcher();
         }
+
+        /**
+         * Returns true if the current point should be a break point.
+         *
+         * Following cases are considered as break points:
+         *     1) Any non space character after a space character
+         *     2) Any digit after a non-digit character
+         *     3) Any capital character after a digit or small character
+         *     4) Any capital character before a small character
+         *
+         * E.g., "YouTube" matches the input "you" and "tube", but not "out".
+         */
+        protected boolean isBreak(int thisType, int prevType, int nextType) {
+            switch (prevType) {
+                case Character.UNASSIGNED:
+                case Character.SPACE_SEPARATOR:
+                case Character.LINE_SEPARATOR:
+                case Character.PARAGRAPH_SEPARATOR:
+                    return true;
+            }
+            switch (thisType) {
+                case Character.UPPERCASE_LETTER:
+                    // takes care of the case where there are consistent uppercase letters as well
+                    // as a special symbol following the capitalize letters for example: LEGO®
+                    if (nextType != Character.UPPERCASE_LETTER && nextType != Character.OTHER_SYMBOL
+                            && nextType != Character.DECIMAL_DIGIT_NUMBER
+                            && nextType != Character.UNASSIGNED) {
+                        return true;
+                    }
+                    // Follow through
+                case Character.TITLECASE_LETTER:
+                    // Break point if previous was not a upper case
+                    return prevType != Character.UPPERCASE_LETTER;
+                case Character.LOWERCASE_LETTER:
+                    // Break point if previous was not a letter.
+                    return prevType > Character.OTHER_LETTER || prevType <= Character.UNASSIGNED;
+                case Character.DECIMAL_DIGIT_NUMBER:
+                case Character.LETTER_NUMBER:
+                case Character.OTHER_NUMBER:
+                    // Break point if previous was not a number
+                    return !(prevType == Character.DECIMAL_DIGIT_NUMBER
+                            || prevType == Character.LETTER_NUMBER
+                            || prevType == Character.OTHER_NUMBER);
+                case Character.MATH_SYMBOL:
+                case Character.CURRENCY_SYMBOL:
+                case Character.OTHER_PUNCTUATION:
+                case Character.DASH_PUNCTUATION:
+                    // Always a break point for a symbol
+                    return true;
+                default:
+                    return  false;
+            }
+        }
+    }
+
+    /**
+     * Subclass of {@code StringMatcher} using simple space break for prefix matching.
+     * E.g., "YouTube" matches the input "you". "Play Store" matches the input "play".
+     */
+    public static class StringMatcherSpace extends StringMatcher {
+
+        public static StringMatcherSpace getInstance() {
+            return new StringMatcherSpace();
+        }
+
+        /**
+         * The first character or any character after a space is considered as a break point.
+         * Returns true if the current point should be a break point.
+         */
+        @Override
+        protected boolean isBreak(int thisType, int prevType, int nextType) {
+            return prevType == Character.UNASSIGNED || prevType == Character.SPACE_SEPARATOR;
+        }
     }
 
     /**
diff --git a/src/com/android/launcher3/secondarydisplay/PinnedAppsAdapter.java b/src/com/android/launcher3/secondarydisplay/PinnedAppsAdapter.java
index a0ed77e..f03c62a 100644
--- a/src/com/android/launcher3/secondarydisplay/PinnedAppsAdapter.java
+++ b/src/com/android/launcher3/secondarydisplay/PinnedAppsAdapter.java
@@ -168,15 +168,18 @@
         mPrefs.unregisterOnSharedPreferenceChangeListener(this);
     }
 
-    private void update(ItemInfo info, Function<ComponentKey, Boolean> op) {
+    /**
+     * Pins or unpins apps from home screen
+     */
+    public void update(ItemInfo info, Function<ComponentKey, Boolean> op) {
         ComponentKey key = new ComponentKey(info.getTargetComponent(), info.user);
         if (op.apply(key)) {
             createFilteredAppsList();
             Set<ComponentKey> copy = new HashSet<>(mPinnedApps);
             Executors.MODEL_EXECUTOR.submit(() ->
                     mPrefs.edit().putStringSet(PINNED_APPS_KEY,
-                        copy.stream().map(this::encode).collect(Collectors.toSet()))
-                        .apply());
+                                    copy.stream().map(this::encode).collect(Collectors.toSet()))
+                            .apply());
         }
     }
 
@@ -210,6 +213,13 @@
                 mPinnedApps.contains(new ComponentKey(info.getTargetComponent(), info.user)));
     }
 
+    /**
+     * Pins app to home screen
+     */
+    public void addPinnedApp(ItemInfo info) {
+        update(info, mPinnedApps::add);
+    }
+
     private class PinUnPinShortcut extends SystemShortcut<SecondaryDisplayLauncher> {
 
         private final boolean mIsPinned;
diff --git a/src/com/android/launcher3/secondarydisplay/SecondaryDisplayLauncher.java b/src/com/android/launcher3/secondarydisplay/SecondaryDisplayLauncher.java
index a2ab7f9..458f137 100644
--- a/src/com/android/launcher3/secondarydisplay/SecondaryDisplayLauncher.java
+++ b/src/com/android/launcher3/secondarydisplay/SecondaryDisplayLauncher.java
@@ -18,19 +18,34 @@
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.content.Intent;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.ViewAnimationUtils;
 import android.view.inputmethod.InputMethodManager;
 
+import androidx.annotation.UiThread;
+
 import com.android.launcher3.AbstractFloatingView;
 import com.android.launcher3.BaseDraggingActivity;
+import com.android.launcher3.BubbleTextView;
+import com.android.launcher3.DragSource;
+import com.android.launcher3.DropTarget;
 import com.android.launcher3.InvariantDeviceProfile;
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.LauncherModel;
+import com.android.launcher3.LauncherPrefs;
+import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.R;
 import com.android.launcher3.allapps.ActivityAllAppsContainerView;
+import com.android.launcher3.allapps.AllAppsStore;
+import com.android.launcher3.dragndrop.DragController;
+import com.android.launcher3.dragndrop.DragOptions;
+import com.android.launcher3.dragndrop.DraggableView;
+import com.android.launcher3.graphics.DragPreviewProvider;
+import com.android.launcher3.icons.FastBitmapDrawable;
 import com.android.launcher3.model.BgDataModel;
 import com.android.launcher3.model.StringCache;
 import com.android.launcher3.model.data.AppInfo;
@@ -38,21 +53,27 @@
 import com.android.launcher3.model.data.ItemInfoWithIcon;
 import com.android.launcher3.popup.PopupContainerWithArrow;
 import com.android.launcher3.popup.PopupDataProvider;
+import com.android.launcher3.touch.ItemClickHandler.ItemClickProxy;
 import com.android.launcher3.util.ComponentKey;
+import com.android.launcher3.util.IntSet;
+import com.android.launcher3.util.OnboardingPrefs;
+import com.android.launcher3.util.PackageUserKey;
+import com.android.launcher3.util.Preconditions;
 import com.android.launcher3.util.Themes;
 import com.android.launcher3.views.BaseDragLayer;
 
 import java.util.HashMap;
+import java.util.Map;
 
 /**
  * Launcher activity for secondary displays
  */
 public class SecondaryDisplayLauncher extends BaseDraggingActivity
-        implements BgDataModel.Callbacks {
+        implements BgDataModel.Callbacks, DragController.DragListener {
 
     private LauncherModel mModel;
-
     private BaseDragLayer mDragLayer;
+    private SecondaryDragController mDragController;
     private ActivityAllAppsContainerView<SecondaryDisplayLauncher> mAppsView;
     private View mAppsButton;
 
@@ -61,11 +82,19 @@
     private boolean mAppDrawerShown = false;
 
     private StringCache mStringCache;
+    private OnboardingPrefs<?> mOnboardingPrefs;
+    private boolean mBindingItems = false;
+    private SecondaryDisplayPredictions mSecondaryDisplayPredictions;
+
+    private final int[] mTempXY = new int[2];
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         mModel = LauncherAppState.getInstance(this).getModel();
+        mDragController = new SecondaryDragController(this);
+        mOnboardingPrefs = new OnboardingPrefs<>(this, LauncherPrefs.getPrefs(this));
+        mSecondaryDisplayPredictions = SecondaryDisplayPredictions.newInstance(this);
         if (getWindow().getDecorView().isAttachedToWindow()) {
             initUi();
         }
@@ -77,6 +106,12 @@
         initUi();
     }
 
+    @Override
+    public void onDetachedFromWindow() {
+        super.onDetachedFromWindow();
+        this.getDragController().removeDragListener(this);
+    }
+
     private void initUi() {
         if (mDragLayer != null) {
             return;
@@ -97,6 +132,7 @@
         mAppsView = findViewById(R.id.apps_view);
         mAppsButton = findViewById(R.id.all_apps_button);
 
+        mDragController.addDragListener(this);
         mPopupDataProvider = new PopupDataProvider(
                 mAppsView.getAppsStore()::updateNotificationDots);
 
@@ -104,6 +140,12 @@
     }
 
     @Override
+    protected void onPause() {
+        super.onPause();
+        mDragController.cancelDrag();
+    }
+
+    @Override
     public void onNewIntent(Intent intent) {
         super.onNewIntent(intent);
 
@@ -120,17 +162,27 @@
         showAppDrawer(false);
     }
 
+    public DragController getDragController() {
+        return mDragController;
+    }
+
     @Override
     public void onBackPressed() {
         if (finishAutoCancelActionMode()) {
             return;
         }
 
+        if (mDragController.isDragging()) {
+            mDragController.cancelDrag();
+            return;
+        }
+
         // Note: There should be at most one log per method call. This is enforced implicitly
         // by using if-else statements.
         AbstractFloatingView topView = AbstractFloatingView.getTopOpenView(this);
-        if (topView != null && topView.onBackPressed()) {
+        if (topView != null && topView.canHandleBack()) {
             // Handled by the floating view.
+            topView.onBackInvoked();
         } else {
             showAppDrawer(false);
         }
@@ -193,7 +245,7 @@
         float closeR = Themes.getDialogCornerRadius(this);
         float startR = mAppsButton.getWidth() / 2f;
 
-        float[] buttonPos = new float[] { startR, startR};
+        float[] buttonPos = new float[]{startR, startR};
         mDragLayer.getDescendantCoordRelativeToSelf(mAppsButton, buttonPos);
         mDragLayer.mapCoordInSelfToDescendant(mAppsView, buttonPos);
         final Animator animator = ViewAnimationUtils.createCircularReveal(mAppsView,
@@ -204,6 +256,7 @@
             mAppDrawerShown = true;
             mAppsView.setVisibility(View.VISIBLE);
             mAppsButton.setVisibility(View.INVISIBLE);
+            mSecondaryDisplayPredictions.updateAppDivider();
         } else {
             mAppDrawerShown = false;
             animator.addListener(new AnimatorListenerAdapter() {
@@ -219,17 +272,53 @@
     }
 
     @Override
+    public OnboardingPrefs<?> getOnboardingPrefs() {
+        return mOnboardingPrefs;
+    }
+
+    @Override
+    public void startBinding() {
+        mBindingItems = true;
+        mDragController.cancelDrag();
+    }
+
+    @Override
+    public boolean isBindingItems() {
+        return mBindingItems;
+    }
+
+    @Override
+    public void finishBindingItems(IntSet pagesBoundFirst) {
+        mBindingItems = false;
+    }
+
+    @Override
     public void bindDeepShortcutMap(HashMap<ComponentKey, Integer> deepShortcutMap) {
         mPopupDataProvider.setDeepShortcutMap(deepShortcutMap);
     }
 
+    @UiThread
     @Override
-    public void bindAllApplications(AppInfo[] apps, int flags) {
-        mAppsView.getAppsStore().setApps(apps, flags);
+    public void bindAllApplications(AppInfo[] apps, int flags,
+            Map<PackageUserKey, Integer> packageUserKeytoUidMap) {
+        Preconditions.assertUIThread();
+        AllAppsStore appsStore = mAppsView.getAppsStore();
+        appsStore.setApps(apps, flags, packageUserKeytoUidMap);
         PopupContainerWithArrow.dismissInvalidPopup(this);
     }
 
     @Override
+    public void bindExtraContainerItems(BgDataModel.FixedContainerItems item) {
+        if (item.containerId == LauncherSettings.Favorites.CONTAINER_PREDICTION) {
+            mSecondaryDisplayPredictions.setPredictedApps(item);
+        }
+    }
+
+    public SecondaryDisplayPredictions getSecondaryDisplayPredictions() {
+        return mSecondaryDisplayPredictions;
+    }
+
+    @Override
     public StringCache getStringCache() {
         return mStringCache;
     }
@@ -254,12 +343,14 @@
         if (v.getWindowToken() == null) return;
 
         Object tag = v.getTag();
-        if (tag instanceof ItemInfo) {
+        if (tag instanceof ItemClickProxy) {
+            ((ItemClickProxy) tag).onItemClicked(v);
+        } else if (tag instanceof ItemInfo) {
             ItemInfo item = (ItemInfo) tag;
             Intent intent;
             if (item instanceof ItemInfoWithIcon
                     && (((ItemInfoWithIcon) item).runtimeStatusFlags
-                        & ItemInfoWithIcon.FLAG_INSTALL_SESSION_ACTIVE) != 0) {
+                    & ItemInfoWithIcon.FLAG_INSTALL_SESSION_ACTIVE) != 0) {
                 ItemInfoWithIcon appInfo = (ItemInfoWithIcon) item;
                 intent = appInfo.getMarketIntent(this);
             } else {
@@ -271,4 +362,107 @@
             startActivitySafely(v, intent, item);
         }
     }
+
+    /**
+     * Core functionality for beginning a drag operation for an item that will be dropped within
+     * the secondary display grid home screen
+     */
+    public void beginDragShared(View child, DragSource source, DragOptions options) {
+        Object dragObject = child.getTag();
+        if (!(dragObject instanceof ItemInfo)) {
+            String msg = "Drag started with a view that has no tag set. This "
+                    + "will cause a crash (issue 11627249) down the line. "
+                    + "View: " + child + "  tag: " + child.getTag();
+            throw new IllegalStateException(msg);
+        }
+        beginDragShared(child, source, (ItemInfo) dragObject,
+                new DragPreviewProvider(child), options);
+    }
+
+    private void beginDragShared(View child, DragSource source,
+            ItemInfo dragObject, DragPreviewProvider previewProvider, DragOptions options) {
+
+        float iconScale = 1f;
+        if (child instanceof BubbleTextView) {
+            FastBitmapDrawable icon = ((BubbleTextView) child).getIcon();
+            if (icon != null) {
+                iconScale = icon.getAnimatedScale();
+            }
+        }
+
+        // clear pressed state if necessary
+        child.clearFocus();
+        child.setPressed(false);
+        if (child instanceof BubbleTextView) {
+            BubbleTextView icon = (BubbleTextView) child;
+            icon.clearPressedBackground();
+        }
+
+        DraggableView draggableView = null;
+        if (child instanceof DraggableView) {
+            draggableView = (DraggableView) child;
+        }
+
+        final View contentView = previewProvider.getContentView();
+        final float scale;
+        // The draggable drawable follows the touch point around on the screen
+        final Drawable drawable;
+        if (contentView == null) {
+            drawable = previewProvider.createDrawable();
+            scale = previewProvider.getScaleAndPosition(drawable, mTempXY);
+        } else {
+            drawable = null;
+            scale = previewProvider.getScaleAndPosition(contentView, mTempXY);
+        }
+
+        int dragLayerX = mTempXY[0];
+        int dragLayerY = mTempXY[1];
+
+        Rect dragRect = new Rect();
+        if (draggableView != null) {
+            draggableView.getSourceVisualDragBounds(dragRect);
+            dragLayerY += dragRect.top;
+        }
+
+        if (options.preDragCondition != null) {
+            int xOffSet = options.preDragCondition.getDragOffset().x;
+            int yOffSet = options.preDragCondition.getDragOffset().y;
+            if (xOffSet != 0 && yOffSet != 0) {
+                dragLayerX += xOffSet;
+                dragLayerY += yOffSet;
+            }
+        }
+
+        if (contentView != null) {
+            mDragController.startDrag(
+                    contentView,
+                    draggableView,
+                    dragLayerX,
+                    dragLayerY,
+                    source,
+                    dragObject,
+                    dragRect,
+                    scale * iconScale,
+                    scale,
+                    options);
+        } else {
+            mDragController.startDrag(
+                    drawable,
+                    draggableView,
+                    dragLayerX,
+                    dragLayerY,
+                    source,
+                    dragObject,
+                    dragRect,
+                    scale * iconScale,
+                    scale,
+                    options);
+        }
+    }
+
+    @Override
+    public void onDragStart(DropTarget.DragObject dragObject, DragOptions options) { }
+
+    @Override
+    public void onDragEnd() { }
 }
diff --git a/src/com/android/launcher3/secondarydisplay/SecondaryDisplayPredictions.java b/src/com/android/launcher3/secondarydisplay/SecondaryDisplayPredictions.java
new file mode 100644
index 0000000..21c50d3
--- /dev/null
+++ b/src/com/android/launcher3/secondarydisplay/SecondaryDisplayPredictions.java
@@ -0,0 +1,58 @@
+/*
+ * 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.launcher3.secondarydisplay;
+
+import android.content.Context;
+import android.view.View;
+
+import com.android.launcher3.R;
+import com.android.launcher3.allapps.ActivityAllAppsContainerView;
+import com.android.launcher3.model.BgDataModel;
+import com.android.launcher3.util.ResourceBasedOverride;
+
+/**
+ * Exposes Quickstep app prediction row APIs to {@link SecondaryDisplayLauncher}.
+ */
+public class SecondaryDisplayPredictions implements ResourceBasedOverride {
+    /**
+     * Creates a {@link SecondaryDisplayPredictions} instance.
+     */
+    static SecondaryDisplayPredictions newInstance(Context context) {
+        return Overrides.getObject(
+                SecondaryDisplayPredictions.class, context,
+                R.string.secondary_display_predictions_class);
+    }
+
+    /**
+     * Setup/update app divider separating app predictions from All Apps.
+     */
+    void updateAppDivider() {
+    }
+
+    /**
+     * Set predicted apps in top of app drawer.
+     */
+    public void setPredictedApps(BgDataModel.FixedContainerItems item) {
+    }
+
+    /**
+     * Set long click listener for predicted apps in top of app drawer.
+     */
+    public void setLongClickListener(
+            ActivityAllAppsContainerView<?> appsView,
+            View.OnLongClickListener onIconLongClickListener) {
+    }
+}
diff --git a/src/com/android/launcher3/secondarydisplay/SecondaryDragController.java b/src/com/android/launcher3/secondarydisplay/SecondaryDragController.java
new file mode 100644
index 0000000..8d1d96b
--- /dev/null
+++ b/src/com/android/launcher3/secondarydisplay/SecondaryDragController.java
@@ -0,0 +1,188 @@
+/*
+ * 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.launcher3.secondarydisplay;
+
+import android.content.res.Resources;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+import android.view.HapticFeedbackConstants;
+import android.view.View;
+
+import androidx.annotation.Nullable;
+
+import com.android.launcher3.AbstractFloatingView;
+import com.android.launcher3.DragSource;
+import com.android.launcher3.DropTarget;
+import com.android.launcher3.R;
+import com.android.launcher3.accessibility.DragViewStateAnnouncer;
+import com.android.launcher3.dragndrop.DragController;
+import com.android.launcher3.dragndrop.DragDriver;
+import com.android.launcher3.dragndrop.DragOptions;
+import com.android.launcher3.dragndrop.DragView;
+import com.android.launcher3.dragndrop.DraggableView;
+import com.android.launcher3.model.data.ItemInfo;
+
+/**
+ * Drag controller for Secondary Launcher activity
+ */
+public class SecondaryDragController extends DragController<SecondaryDisplayLauncher> {
+
+    private static final boolean PROFILE_DRAWING_DURING_DRAG = false;
+
+    public SecondaryDragController(SecondaryDisplayLauncher secondaryLauncher) {
+        super(secondaryLauncher);
+    }
+
+    @Override
+    protected DragView startDrag(@Nullable Drawable drawable, @Nullable View view,
+            DraggableView originalView, int dragLayerX, int dragLayerY, DragSource source,
+            ItemInfo dragInfo, Rect dragRegion, float initialDragViewScale,
+            float dragViewScaleOnDrop, DragOptions options) {
+        if (PROFILE_DRAWING_DURING_DRAG) {
+            android.os.Debug.startMethodTracing("Launcher");
+        }
+        mActivity.hideKeyboard();
+
+        mOptions = options;
+        if (mOptions.simulatedDndStartPoint != null) {
+            mLastTouch.x = mMotionDown.x = mOptions.simulatedDndStartPoint.x;
+            mLastTouch.y = mMotionDown.y = mOptions.simulatedDndStartPoint.y;
+        }
+
+        final int registrationX = mMotionDown.x - dragLayerX;
+        final int registrationY = mMotionDown.y - dragLayerY;
+
+        final int dragRegionLeft = dragRegion == null ? 0 : dragRegion.left;
+        final int dragRegionTop = dragRegion == null ? 0 : dragRegion.top;
+
+        mLastDropTarget = null;
+
+        mDragObject = new DropTarget.DragObject(mActivity.getApplicationContext());
+        mDragObject.originalView = originalView;
+
+        mIsInPreDrag = mOptions.preDragCondition != null
+                && !mOptions.preDragCondition.shouldStartDrag(0);
+
+        final Resources res = mActivity.getResources();
+        final float scaleDps = mIsInPreDrag
+                ? res.getDimensionPixelSize(R.dimen.pre_drag_view_scale) : 0f;
+
+        final DragView dragView = mDragObject.dragView = drawable != null
+                ? new SecondaryDragView(
+                mActivity,
+                drawable,
+                registrationX,
+                registrationY,
+                initialDragViewScale,
+                dragViewScaleOnDrop,
+                scaleDps)
+                : new SecondaryDragView(
+                        mActivity,
+                        view,
+                        view.getMeasuredWidth(),
+                        view.getMeasuredHeight(),
+                        registrationX,
+                        registrationY,
+                        initialDragViewScale,
+                        dragViewScaleOnDrop,
+                        scaleDps);
+        dragView.setItemInfo(dragInfo);
+        mDragObject.dragComplete = false;
+
+        mDragObject.xOffset = mMotionDown.x - (dragLayerX + dragRegionLeft);
+        mDragObject.yOffset = mMotionDown.y - (dragLayerY + dragRegionTop);
+
+        mDragDriver = DragDriver.create(this, mOptions, ev -> {
+        });
+        if (!mOptions.isAccessibleDrag) {
+            mDragObject.stateAnnouncer = DragViewStateAnnouncer.createFor(dragView);
+        }
+
+        mDragObject.dragSource = source;
+        mDragObject.dragInfo = dragInfo;
+        mDragObject.originalDragInfo = mDragObject.dragInfo.makeShallowCopy();
+
+        if (mOptions.preDragCondition != null) {
+            dragView.setHasDragOffset(mOptions.preDragCondition.getDragOffset().x != 0 ||
+                    mOptions.preDragCondition.getDragOffset().y != 0);
+        }
+
+        if (dragRegion != null) {
+            dragView.setDragRegion(new Rect(dragRegion));
+        }
+
+        mActivity.getDragLayer().performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
+        dragView.show(mLastTouch.x, mLastTouch.y);
+        mDistanceSinceScroll = 0;
+
+        if (!mIsInPreDrag) {
+            callOnDragStart();
+        } else if (mOptions.preDragCondition != null) {
+            mOptions.preDragCondition.onPreDragStart(mDragObject);
+        }
+
+        handleMoveEvent(mLastTouch.x, mLastTouch.y);
+        return dragView;
+    }
+
+    @Override
+    protected void exitDrag() { }
+
+    @Override
+    protected DropTarget getDefaultDropTarget(int[] dropCoordinates) {
+        DropTarget target = new DropTarget() {
+            @Override
+            public boolean isDropEnabled() {
+                return true;
+            }
+
+            @Override
+            public void onDrop(DragObject dragObject, DragOptions options) {
+                ((SecondaryDragLayer) mActivity.getDragLayer()).getPinnedAppsAdapter().addPinnedApp(
+                        dragObject.dragInfo);
+                dragObject.dragView.remove();
+            }
+
+            @Override
+            public void onDragEnter(DragObject dragObject) {
+                if (getDistanceDragged() > mActivity.getResources().getDimensionPixelSize(
+                        R.dimen.drag_distanceThreshold)) {
+                    mActivity.showAppDrawer(false);
+                    AbstractFloatingView.closeAllOpenViews(mActivity);
+                }
+            }
+
+            @Override
+            public void onDragOver(DragObject dragObject) { }
+
+            @Override
+            public void onDragExit(DragObject dragObject) { }
+
+            @Override
+            public boolean acceptDrop(DragObject dragObject) {
+                return true;
+            }
+
+            @Override
+            public void prepareAccessibilityDrop() { }
+
+            @Override
+            public void getHitRectRelativeToDragLayer(Rect outRect) { }
+        };
+        return target;
+    }
+}
diff --git a/src/com/android/launcher3/secondarydisplay/SecondaryDragLayer.java b/src/com/android/launcher3/secondarydisplay/SecondaryDragLayer.java
index c79d70d..87afcab 100644
--- a/src/com/android/launcher3/secondarydisplay/SecondaryDragLayer.java
+++ b/src/com/android/launcher3/secondarydisplay/SecondaryDragLayer.java
@@ -18,6 +18,7 @@
 import static android.view.View.MeasureSpec.EXACTLY;
 import static android.view.View.MeasureSpec.makeMeasureSpec;
 
+import static com.android.launcher3.config.FeatureFlags.ENABLE_MATERIAL_U_POPUP;
 import static com.android.launcher3.popup.SystemShortcut.APP_INFO;
 
 import android.content.Context;
@@ -29,17 +30,23 @@
 import com.android.launcher3.AbstractFloatingView;
 import com.android.launcher3.BubbleTextView;
 import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.DropTarget;
 import com.android.launcher3.R;
 import com.android.launcher3.allapps.ActivityAllAppsContainerView;
+import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.dragndrop.DragOptions;
+import com.android.launcher3.dragndrop.DragView;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.popup.PopupContainerWithArrow;
 import com.android.launcher3.popup.PopupDataProvider;
+import com.android.launcher3.popup.SystemShortcut;
 import com.android.launcher3.util.ShortcutUtil;
 import com.android.launcher3.util.TouchController;
 import com.android.launcher3.views.BaseDragLayer;
 
-import java.util.Arrays;
+import java.util.ArrayList;
 import java.util.Collections;
+import java.util.List;
 
 /**
  * DragLayer for Secondary launcher
@@ -59,7 +66,8 @@
 
     @Override
     public void recreateControllers() {
-        mControllers = new TouchController[] {new CloseAllAppsTouchController()};
+        mControllers = new TouchController[]{new CloseAllAppsTouchController(),
+                mActivity.getDragController()};
     }
 
     /**
@@ -72,7 +80,8 @@
 
         mAppsView = findViewById(R.id.apps_view);
         mAppsView.setOnIconLongClickListener(this::onIconLongClicked);
-
+        mActivity.getSecondaryDisplayPredictions()
+                .setLongClickListener(mAppsView, this::onIconLongClicked);
         // Setup workspace
         mWorkspace = findViewById(R.id.workspace_grid);
         mPinnedAppsAdapter = new PinnedAppsAdapter(mActivity, mAppsView.getAppsStore(),
@@ -166,6 +175,10 @@
         }
     }
 
+    public PinnedAppsAdapter getPinnedAppsAdapter() {
+        return mPinnedAppsAdapter;
+    }
+
     private boolean onIconLongClicked(View v) {
         if (!(v instanceof BubbleTextView)) {
             return false;
@@ -183,16 +196,66 @@
         if (popupDataProvider == null) {
             return false;
         }
-        final PopupContainerWithArrow container =
-                (PopupContainerWithArrow) mActivity.getLayoutInflater().inflate(
-                        R.layout.popup_container, mActivity.getDragLayer(), false);
 
-        container.populateAndShow((BubbleTextView) v,
-                popupDataProvider.getShortcutCountForItem(item),
-                Collections.emptyList(),
-                Arrays.asList(mPinnedAppsAdapter.getSystemShortcut(item, v),
-                        APP_INFO.getShortcut(mActivity, item, v)));
-        v.getParent().requestDisallowInterceptTouchEvent(true);
+        // order of this list will reflect in the popup
+        List<SystemShortcut> systemShortcuts = new ArrayList<>();
+        systemShortcuts.add(APP_INFO.getShortcut(mActivity, item, v));
+        // Hide redundant pin shortcut for app drawer icons if drag-n-drop is enabled.
+        if (!FeatureFlags.SECONDARY_DRAG_N_DROP_TO_PIN.get() || !mActivity.isAppDrawerShown()) {
+            systemShortcuts.add(mPinnedAppsAdapter.getSystemShortcut(item, v));
+        }
+        int deepShortcutCount = popupDataProvider.getShortcutCountForItem(item);
+        final PopupContainerWithArrow<SecondaryDisplayLauncher> container;
+        if (ENABLE_MATERIAL_U_POPUP.get()) {
+            container = (PopupContainerWithArrow) mActivity.getLayoutInflater().inflate(
+                    R.layout.popup_container_material_u, mActivity.getDragLayer(), false);
+            container.populateAndShowRowsMaterialU((BubbleTextView) v, deepShortcutCount,
+                    systemShortcuts);
+        } else {
+            container = (PopupContainerWithArrow) mActivity.getLayoutInflater().inflate(
+                    R.layout.popup_container, mActivity.getDragLayer(), false);
+            container.populateAndShow(
+                    (BubbleTextView) v,
+                    deepShortcutCount,
+                    Collections.emptyList(),
+                    systemShortcuts);
+        }
+        container.requestFocus();
+
+        if (!FeatureFlags.SECONDARY_DRAG_N_DROP_TO_PIN.get() || !mActivity.isAppDrawerShown()) {
+            return true;
+        }
+
+        DragOptions options = new DragOptions();
+        DeviceProfile grid = mActivity.getDeviceProfile();
+        options.intrinsicIconScaleFactor = (float) grid.allAppsIconSizePx / grid.iconSizePx;
+        options.preDragCondition = container.createPreDragCondition(false);
+        if (options.preDragCondition == null) {
+            options.preDragCondition = new DragOptions.PreDragCondition() {
+                private DragView<SecondaryDisplayLauncher> mDragView;
+
+                @Override
+                public boolean shouldStartDrag(double distanceDragged) {
+                    return mDragView != null && mDragView.isScaleAnimationFinished();
+                }
+
+                @Override
+                public void onPreDragStart(DropTarget.DragObject dragObject) {
+                    mDragView = dragObject.dragView;
+                    if (!shouldStartDrag(0)) {
+                        mDragView.setOnAnimationEndCallback(() -> {
+                            mActivity.beginDragShared(v, mActivity.getAppsView(), options);
+                        });
+                    }
+                }
+
+                @Override
+                public void onPreDragEnd(DropTarget.DragObject dragObject, boolean dragStarted) {
+                    mDragView = null;
+                }
+            };
+        }
+        mActivity.beginDragShared(v, mActivity.getAppsView(), options);
         return true;
     }
 }
diff --git a/src/com/android/launcher3/secondarydisplay/SecondaryDragView.java b/src/com/android/launcher3/secondarydisplay/SecondaryDragView.java
new file mode 100644
index 0000000..0168b8f
--- /dev/null
+++ b/src/com/android/launcher3/secondarydisplay/SecondaryDragView.java
@@ -0,0 +1,66 @@
+/*
+ * 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.launcher3.secondarydisplay;
+
+import android.graphics.drawable.Drawable;
+import android.view.View;
+
+import com.android.launcher3.R;
+import com.android.launcher3.dragndrop.DragView;
+
+/**
+ * A DragView drawn/used by the Secondary Launcher activity.
+ */
+public class SecondaryDragView extends DragView<SecondaryDisplayLauncher> {
+
+    public SecondaryDragView(SecondaryDisplayLauncher launcher,
+            Drawable drawable,
+            int registrationX, int registrationY, float initialScale, float scaleOnDrop,
+            float finalScaleDps) {
+        super(launcher, drawable, registrationX, registrationY, initialScale, scaleOnDrop,
+                finalScaleDps);
+    }
+
+    public SecondaryDragView(SecondaryDisplayLauncher launcher, View content, int width, int height,
+            int registrationX, int registrationY, float initialScale, float scaleOnDrop,
+            float finalScaleDps) {
+        super(launcher, content, width, height, registrationX, registrationY, initialScale,
+                scaleOnDrop, finalScaleDps);
+    }
+
+    @Override
+    public void animateTo(int toTouchX, int toTouchY, Runnable onCompleteRunnable, int duration) {
+        Runnable onAnimationEnd = () -> {
+            if (onCompleteRunnable != null) {
+                onCompleteRunnable.run();
+            }
+            mActivity.getDragLayer().removeView(this);
+        };
+
+        duration = Math.max(duration,
+                getResources().getInteger(R.integer.config_dropAnimMinDuration));
+
+        animate()
+                .translationX(toTouchX - mRegistrationX)
+                .translationY(toTouchY - mRegistrationY)
+                .scaleX(mScaleOnDrop)
+                .scaleY(mScaleOnDrop)
+                .withEndAction(onAnimationEnd)
+                .setDuration(duration)
+                .start();
+    }
+}
diff --git a/src/com/android/launcher3/settings/SettingsActivity.java b/src/com/android/launcher3/settings/SettingsActivity.java
index 49d27b7..623b557 100644
--- a/src/com/android/launcher3/settings/SettingsActivity.java
+++ b/src/com/android/launcher3/settings/SettingsActivity.java
@@ -18,6 +18,7 @@
 
 import static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.ACTION_ACCESSIBILITY_FOCUS;
 
+import static com.android.launcher3.config.FeatureFlags.IS_STUDIO_BUILD;
 import static com.android.launcher3.states.RotationHelper.ALLOW_ROTATION_PREFERENCE_KEY;
 
 import android.content.Intent;
@@ -45,12 +46,15 @@
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.InvariantDeviceProfile;
 import com.android.launcher3.LauncherFiles;
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.model.WidgetsModel;
 import com.android.launcher3.states.RotationHelper;
+import com.android.launcher3.uioverrides.flags.DeveloperOptionsFragment;
 import com.android.launcher3.uioverrides.plugins.PluginManagerWrapper;
+import com.android.launcher3.util.DisplayController;
 
 import java.util.Collections;
 import java.util.List;
@@ -90,7 +94,8 @@
         WindowCompat.setDecorFitsSystemWindows(getWindow(), false);
 
         Intent intent = getIntent();
-        if (intent.hasExtra(EXTRA_FRAGMENT) || intent.hasExtra(EXTRA_FRAGMENT_ARGS)) {
+        if (intent.hasExtra(EXTRA_FRAGMENT) || intent.hasExtra(EXTRA_FRAGMENT_ARGS)
+                || intent.hasExtra(EXTRA_FRAGMENT_ARG_KEY)) {
             getActionBar().setDisplayHomeAsUpEnabled(true);
         }
 
@@ -112,7 +117,8 @@
             // Display the fragment as the main content.
             fm.beginTransaction().replace(R.id.content_frame, f).commit();
         }
-        Utilities.getPrefs(getApplicationContext()).registerOnSharedPreferenceChangeListener(this);
+        LauncherPrefs.getPrefs(getApplicationContext())
+                .registerOnSharedPreferenceChangeListener(this);
     }
 
     /**
@@ -207,7 +213,11 @@
             PreferenceScreen screen = getPreferenceScreen();
             for (int i = screen.getPreferenceCount() - 1; i >= 0; i--) {
                 Preference preference = screen.getPreference(i);
-                if (!initPreference(preference)) {
+                if (initPreference(preference)) {
+                    if (IS_STUDIO_BUILD && preference == mDeveloperOptionPref) {
+                        preference.setOrder(0);
+                    }
+                } else {
                     screen.removePreference(preference);
                 }
             }
@@ -217,9 +227,10 @@
                         getResources().getString(R.string.search_pref_screen_title))){
                     DeviceProfile mDeviceProfile = InvariantDeviceProfile.INSTANCE.get(
                             getContext()).getDeviceProfile(getContext());
-                    getPreferenceScreen().setTitle(mDeviceProfile.isTablet ?
-                            R.string.search_pref_screen_title_tablet
-                            : R.string.search_pref_screen_title);
+                    getPreferenceScreen().setTitle(mDeviceProfile.isMultiDisplay
+                            || mDeviceProfile.isPhone ?
+                            R.string.search_pref_screen_title :
+                            R.string.search_pref_screen_title_tablet);
                 }
                 getActivity().setTitle(getPreferenceScreen().getTitle());
             }
@@ -238,6 +249,8 @@
                         bottomPadding + insets.getSystemWindowInsetBottom());
                 return insets.consumeSystemWindowInsets();
             });
+            // Overriding Text Direction in the Androidx preference library to support RTL
+            view.setTextDirection(View.TEXT_DIRECTION_LOCALE);
         }
 
         @Override
@@ -260,15 +273,14 @@
                     return !WidgetsModel.GO_DISABLE_NOTIFICATION_DOTS;
 
                 case ALLOW_ROTATION_PREFERENCE_KEY:
-                    DeviceProfile deviceProfile = InvariantDeviceProfile.INSTANCE.get(
-                            getContext()).getDeviceProfile(getContext());
-                    if (deviceProfile.isTablet) {
+                    DisplayController.Info info =
+                            DisplayController.INSTANCE.get(getContext()).getInfo();
+                    if (info.isTablet(info.realBounds)) {
                         // Launcher supports rotation by default. No need to show this setting.
                         return false;
                     }
                     // Initialize the UI once
-                    preference.setDefaultValue(
-                            RotationHelper.getAllowRotationDefaultValue(deviceProfile));
+                    preference.setDefaultValue(RotationHelper.getAllowRotationDefaultValue(info));
                     return true;
 
                 case FLAGS_PREFERENCE_KEY:
diff --git a/src/com/android/launcher3/shortcuts/ShortcutDragPreviewProvider.java b/src/com/android/launcher3/shortcuts/ShortcutDragPreviewProvider.java
index c166bfc..0306730 100644
--- a/src/com/android/launcher3/shortcuts/ShortcutDragPreviewProvider.java
+++ b/src/com/android/launcher3/shortcuts/ShortcutDragPreviewProvider.java
@@ -16,7 +16,6 @@
 
 package com.android.launcher3.shortcuts;
 
-import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Point;
 import android.graphics.Rect;
@@ -24,7 +23,6 @@
 import android.view.View;
 
 import com.android.launcher3.Utilities;
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.graphics.DragPreviewProvider;
 import com.android.launcher3.icons.BitmapRenderer;
 import com.android.launcher3.icons.FastBitmapDrawable;
@@ -44,33 +42,13 @@
 
     @Override
     public Drawable createDrawable() {
-        if (FeatureFlags.ENABLE_DEEP_SHORTCUT_ICON_CACHE.get()) {
-            int size = ActivityContext.lookupContext(mView.getContext())
-                    .getDeviceProfile().iconSizePx;
-            return new FastBitmapDrawable(
-                    BitmapRenderer.createHardwareBitmap(
-                            size + blurSizeOutline,
-                            size + blurSizeOutline,
-                            (c) -> drawDragViewOnBackground(c, size)));
-        } else {
-            return new FastBitmapDrawable(createDragBitmapLegacy());
-        }
-    }
-
-    private Bitmap createDragBitmapLegacy() {
-        Drawable d = mView.getBackground();
-        Rect bounds = getDrawableBounds(d);
-        int size = ActivityContext.lookupContext(mView.getContext()).getDeviceProfile().iconSizePx;
-        final Bitmap b = Bitmap.createBitmap(
-                size + blurSizeOutline,
-                size + blurSizeOutline,
-                Bitmap.Config.ARGB_8888);
-        Canvas canvas = new Canvas(b);
-        canvas.translate(blurSizeOutline / 2, blurSizeOutline / 2);
-        canvas.scale(((float) size) / bounds.width(), ((float) size) / bounds.height(), 0, 0);
-        canvas.translate(bounds.left, bounds.top);
-        d.draw(canvas);
-        return b;
+        int size = ActivityContext.lookupContext(mView.getContext())
+                .getDeviceProfile().iconSizePx;
+        return new FastBitmapDrawable(
+                BitmapRenderer.createHardwareBitmap(
+                        size + blurSizeOutline,
+                        size + blurSizeOutline,
+                        (c) -> drawDragViewOnBackground(c, size)));
     }
 
     private void drawDragViewOnBackground(Canvas canvas, float size) {
diff --git a/src/com/android/launcher3/statemanager/BaseState.java b/src/com/android/launcher3/statemanager/BaseState.java
index f9a36ad..a01d402 100644
--- a/src/com/android/launcher3/statemanager/BaseState.java
+++ b/src/com/android/launcher3/statemanager/BaseState.java
@@ -18,7 +18,7 @@
 import android.content.Context;
 
 import com.android.launcher3.DeviceProfile;
-import com.android.launcher3.DeviceProfile.DeviceProfileListenable;
+import com.android.launcher3.views.ActivityContext;
 
 /**
  * Interface representing a state of a StatefulActivity
@@ -37,7 +37,7 @@
     /**
      * @return How long the animation to this state should take (or from this state to NORMAL).
      */
-    <DEVICE_PROFILE_CONTEXT extends Context & DeviceProfileListenable>
+    <DEVICE_PROFILE_CONTEXT extends Context & ActivityContext>
     int getTransitionDuration(DEVICE_PROFILE_CONTEXT context, boolean isToState);
 
     /**
@@ -63,4 +63,19 @@
     default boolean displayOverviewTasksAsGrid(DeviceProfile deviceProfile) {
         return false;
     }
+
+    /**
+     * For this state, whether tasks should show the thumbnail splash.
+     */
+    default boolean showTaskThumbnailSplash() {
+        return false;
+    }
+
+    /**
+     * For this state, whether member variables and other forms of data state should be preserved
+     * or wiped when the state is reapplied. (See {@link StateManager#reapplyState()})
+     */
+    default boolean shouldPreserveDataStateOnReapply() {
+        return false;
+    }
 }
diff --git a/src/com/android/launcher3/statemanager/StateManager.java b/src/com/android/launcher3/statemanager/StateManager.java
index 2aa9dde..198dad3 100644
--- a/src/com/android/launcher3/statemanager/StateManager.java
+++ b/src/com/android/launcher3/statemanager/StateManager.java
@@ -28,6 +28,8 @@
 import android.os.Handler;
 import android.os.Looper;
 
+import androidx.annotation.FloatRange;
+
 import com.android.launcher3.anim.AnimationSuccessListener;
 import com.android.launcher3.anim.AnimatorPlaybackController;
 import com.android.launcher3.anim.PendingAnimation;
@@ -182,6 +184,13 @@
     public void reapplyState(boolean cancelCurrentAnimation) {
         boolean wasInAnimation = mConfig.currentAnimation != null;
         if (cancelCurrentAnimation) {
+            // Animation canceling can trigger a cleanup routine, causing problems when we are in a
+            // launcher state that relies on member variable data. So if we are in one of those
+            // states, accelerate the current animation to its end point rather than canceling it
+            // outright.
+            if (mState.shouldPreserveDataStateOnReapply() && mConfig.currentAnimation != null) {
+                mConfig.currentAnimation.end();
+            }
             mAtomicAnimationFactory.cancelAllStateElementAnimation();
             cancelAnimation();
         }
@@ -195,6 +204,21 @@
         }
     }
 
+    /** Handles backProgress in predictive back gesture by passing it to state handlers. */
+    public void onBackProgressed(
+            STATE_TYPE toState, @FloatRange(from = 0.0, to = 1.0) float backProgress) {
+        for (StateHandler handler : getStateHandlers()) {
+            handler.onBackProgressed(toState, backProgress);
+        }
+    }
+
+    /** Handles back cancelled event in predictive back gesture by passing it to state handlers. */
+    public void onBackCancelled(STATE_TYPE toState) {
+        for (StateHandler handler : getStateHandlers()) {
+            handler.onBackCancelled(toState);
+        }
+    }
+
     private void goToState(
             STATE_TYPE state, boolean animated, long delay, AnimatorListener listener) {
         animated &= areAnimatorsEnabled();
@@ -205,8 +229,10 @@
                     listener.onAnimationEnd(null);
                 }
                 return;
-            } else if (!mConfig.userControlled && animated && mConfig.targetState == state) {
-                // We are running the same animation as requested
+            } else if ((!mConfig.userControlled && animated && mConfig.targetState == state)
+                    || mState.shouldPreserveDataStateOnReapply()) {
+                // We are running the same animation as requested, and/or target state should not be
+                // reset -- allow the current animation to complete instead of canceling it.
                 if (listener != null) {
                     mConfig.currentAnimation.addListener(listener);
                 }
@@ -376,12 +402,16 @@
     }
 
     public void moveToRestState() {
+        moveToRestState(shouldAnimateStateChange());
+    }
+
+    public void moveToRestState(boolean isAnimated) {
         if (mConfig.currentAnimation != null && mConfig.userControlled) {
             // The user is doing something. Lets not mess it up
             return;
         }
         if (mState.shouldDisableRestore()) {
-            goToState(getRestState());
+            goToState(getRestState(), isAnimated);
             // Reset history
             mLastStableState = mBaseState;
         }
@@ -582,6 +612,13 @@
          */
         void setStateWithAnimation(
                 STATE_TYPE toState, StateAnimationConfig config, PendingAnimation animation);
+
+        /** Handles backProgress in predictive back gesture for target state. */
+        default void onBackProgressed(
+                STATE_TYPE toState, @FloatRange(from = 0.0, to = 1.0) float backProgress) {};
+
+        /** Handles back cancelled event in predictive back gesture for target state.  */
+        default void onBackCancelled(STATE_TYPE toState) {};
     }
 
     public interface StateListener<STATE_TYPE> {
diff --git a/src/com/android/launcher3/statemanager/StatefulActivity.java b/src/com/android/launcher3/statemanager/StatefulActivity.java
index c554d06..520f33c 100644
--- a/src/com/android/launcher3/statemanager/StatefulActivity.java
+++ b/src/com/android/launcher3/statemanager/StatefulActivity.java
@@ -15,19 +15,27 @@
  */
 package com.android.launcher3.statemanager;
 
+import static android.content.pm.ActivityInfo.CONFIG_ORIENTATION;
+import static android.content.pm.ActivityInfo.CONFIG_SCREEN_SIZE;
+
+import static com.android.launcher3.LauncherState.FLAG_CLOSE_POPUPS;
 import static com.android.launcher3.LauncherState.FLAG_NON_INTERACTIVE;
 
+import android.content.res.Configuration;
+import android.os.Bundle;
 import android.os.Handler;
 import android.view.LayoutInflater;
 import android.view.View;
 
 import androidx.annotation.CallSuper;
 
+import com.android.launcher3.AbstractFloatingView;
 import com.android.launcher3.BaseDraggingActivity;
 import com.android.launcher3.LauncherRootView;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.statemanager.StateManager.AtomicAnimationFactory;
 import com.android.launcher3.statemanager.StateManager.StateHandler;
+import com.android.launcher3.util.window.WindowManagerProxy;
 import com.android.launcher3.views.BaseDragLayer;
 
 import java.util.List;
@@ -45,6 +53,17 @@
 
     private LauncherRootView mRootView;
 
+    protected Configuration mOldConfig;
+    private int mOldRotation;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        mOldConfig = new Configuration(getResources().getConfiguration());
+        mOldRotation = WindowManagerProxy.INSTANCE.get(this).getRotation(this);
+    }
+
     /**
      * Create handlers to control the property changes for this activity
      */
@@ -87,6 +106,10 @@
         if (mDeferredResumePending) {
             handleDeferredResume();
         }
+
+        if (state.hasFlag(FLAG_CLOSE_POPUPS)) {
+            AbstractFloatingView.closeAllOpenViews(this, !state.hasFlag(FLAG_NON_INTERACTIVE));
+        }
     }
 
     /**
@@ -180,4 +203,38 @@
     public void runOnBindToTouchInteractionService(Runnable r) {
         r.run();
     }
+
+    @Override
+    public void onConfigurationChanged(Configuration newConfig) {
+        handleConfigurationChanged(newConfig);
+        super.onConfigurationChanged(newConfig);
+    }
+
+    /**
+     * Handles configuration change when system calls {@link #onConfigurationChanged}, or on other
+     * situations that configuration might change.
+     */
+    public void handleConfigurationChanged(Configuration newConfig) {
+        int diff = newConfig.diff(mOldConfig);
+        int rotation = WindowManagerProxy.INSTANCE.get(this).getRotation(this);
+        if ((diff & (CONFIG_ORIENTATION | CONFIG_SCREEN_SIZE)) != 0
+                || rotation != mOldRotation) {
+            onHandleConfigurationChanged();
+        }
+
+        mOldConfig.setTo(newConfig);
+        mOldRotation = rotation;
+    }
+
+    /**
+     * Logic for when device configuration changes (rotation, screen size change, multi-window,
+     * etc.)
+     */
+    protected abstract void onHandleConfigurationChanged();
+
+    /**
+     * Enter staged split directly from the current running app.
+     * @param leftOrTop if the staged split will be positioned left or top.
+     */
+    public void enterStageSplitFromRunningApp(boolean leftOrTop) { }
 }
diff --git a/src/com/android/launcher3/states/EditModeState.kt b/src/com/android/launcher3/states/EditModeState.kt
new file mode 100644
index 0000000..aafaaa0
--- /dev/null
+++ b/src/com/android/launcher3/states/EditModeState.kt
@@ -0,0 +1,63 @@
+/*
+ * 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.launcher3.states
+
+import android.content.Context
+import com.android.launcher3.Launcher
+import com.android.launcher3.LauncherState
+import com.android.launcher3.logging.StatsLogManager
+import com.android.launcher3.views.ActivityContext
+
+/** Definition for Edit Mode state used for home gardening multi-select */
+class EditModeState(id: Int) : LauncherState(id, StatsLogManager.LAUNCHER_STATE_HOME, STATE_FLAGS) {
+
+    companion object {
+        private val STATE_FLAGS =
+            (FLAG_MULTI_PAGE or
+                FLAG_WORKSPACE_INACCESSIBLE or
+                FLAG_DISABLE_RESTORE or
+                FLAG_WORKSPACE_ICONS_CAN_BE_DRAGGED or
+                FLAG_WORKSPACE_HAS_BACKGROUNDS)
+    }
+
+    override fun <T> getTransitionDuration(context: T, isToState: Boolean): Int where
+    T : Context?,
+    T : ActivityContext? {
+        return 150
+    }
+
+    override fun <T> getDepthUnchecked(context: T): Float where T : Context?, T : ActivityContext? {
+        return 0.5f
+    }
+
+    override fun getWorkspaceScaleAndTranslation(launcher: Launcher): ScaleAndTranslation {
+        val scale = launcher.deviceProfile.getWorkspaceSpringLoadScale(launcher)
+        return ScaleAndTranslation(scale, 0f, 0f)
+    }
+
+    override fun getHotseatScaleAndTranslation(launcher: Launcher): ScaleAndTranslation {
+        val scale = launcher.deviceProfile.getWorkspaceSpringLoadScale(launcher)
+        return ScaleAndTranslation(scale, 0f, 0f)
+    }
+
+    override fun getWorkspaceBackgroundAlpha(launcher: Launcher): Float {
+        return 0.2f
+    }
+
+    override fun onLeavingState(launcher: Launcher?, toState: LauncherState?) {
+        // cleanup any changes to workspace
+    }
+}
diff --git a/src/com/android/launcher3/states/RotationHelper.java b/src/com/android/launcher3/states/RotationHelper.java
index 38b62d4..7b4e248 100644
--- a/src/com/android/launcher3/states/RotationHelper.java
+++ b/src/com/android/launcher3/states/RotationHelper.java
@@ -20,35 +20,41 @@
 import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
 import static android.util.DisplayMetrics.DENSITY_DEVICE_STABLE;
 
+import static com.android.launcher3.LauncherPrefs.ALLOW_ROTATION;
 import static com.android.launcher3.Utilities.dpiFromPx;
+import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
 import static com.android.launcher3.util.window.WindowManagerProxy.MIN_TABLET_WIDTH;
 
+import android.app.Activity;
+import android.content.Context;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
+import android.os.Handler;
+import android.os.Message;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
 
 import com.android.launcher3.BaseActivity;
-import com.android.launcher3.DeviceProfile;
-import com.android.launcher3.Utilities;
-import com.android.launcher3.util.UiThreadHelper;
+import com.android.launcher3.LauncherPrefs;
+import com.android.launcher3.util.DisplayController;
 
 /**
  * Utility class to manage launcher rotation
  */
 public class RotationHelper implements OnSharedPreferenceChangeListener,
-        DeviceProfile.OnDeviceProfileChangeListener {
-
-    private static final String TAG = "RotationHelper";
+        DisplayController.DisplayInfoChangeListener {
 
     public static final String ALLOW_ROTATION_PREFERENCE_KEY = "pref_allowRotation";
 
     /**
      * Returns the default value of {@link #ALLOW_ROTATION_PREFERENCE_KEY} preference.
      */
-    public static boolean getAllowRotationDefaultValue(DeviceProfile deviceProfile) {
+    public static boolean getAllowRotationDefaultValue(DisplayController.Info info) {
         // If the device's pixel density was scaled (usually via settings for A11y), use the
         // original dimensions to determine if rotation is allowed of not.
-        float originalSmallestWidth = dpiFromPx(
-                Math.min(deviceProfile.widthPx, deviceProfile.heightPx), DENSITY_DEVICE_STABLE);
+        float originalSmallestWidth = dpiFromPx(Math.min(info.currentSize.x, info.currentSize.y),
+                DENSITY_DEVICE_STABLE);
         return originalSmallestWidth >= MIN_TABLET_WIDTH;
     }
 
@@ -56,8 +62,9 @@
     public static final int REQUEST_ROTATE = 1;
     public static final int REQUEST_LOCK = 2;
 
+    @Nullable
     private BaseActivity mActivity;
-    private SharedPreferences mSharedPrefs = null;
+    private final Handler mRequestOrientationHandler;
 
     private boolean mIgnoreAutoRotateSettings;
     private boolean mForceAllowRotationForTesting;
@@ -87,23 +94,19 @@
 
     public RotationHelper(BaseActivity activity) {
         mActivity = activity;
+        mRequestOrientationHandler =
+                new Handler(UI_HELPER_EXECUTOR.getLooper(), this::setOrientationAsync);
     }
 
-    private void setIgnoreAutoRotateSettings(boolean ignoreAutoRotateSettings) {
+    private void setIgnoreAutoRotateSettings(boolean ignoreAutoRotateSettings,
+            DisplayController.Info info) {
         // On large devices we do not handle auto-rotate differently.
         mIgnoreAutoRotateSettings = ignoreAutoRotateSettings;
         if (!mIgnoreAutoRotateSettings) {
-            if (mSharedPrefs == null) {
-                mSharedPrefs = Utilities.getPrefs(mActivity);
-                mSharedPrefs.registerOnSharedPreferenceChangeListener(this);
-            }
-            mHomeRotationEnabled = mSharedPrefs.getBoolean(ALLOW_ROTATION_PREFERENCE_KEY,
-                    getAllowRotationDefaultValue(mActivity.getDeviceProfile()));
+            mHomeRotationEnabled = LauncherPrefs.get(mActivity).get(ALLOW_ROTATION);
+            LauncherPrefs.get(mActivity).addListener(this, ALLOW_ROTATION);
         } else {
-            if (mSharedPrefs != null) {
-                mSharedPrefs.unregisterOnSharedPreferenceChangeListener(this);
-                mSharedPrefs = null;
-            }
+            LauncherPrefs.get(mActivity).removeListener(this, ALLOW_ROTATION);
         }
     }
 
@@ -111,18 +114,17 @@
     public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
         if (mDestroyed || mIgnoreAutoRotateSettings) return;
         boolean wasRotationEnabled = mHomeRotationEnabled;
-        mHomeRotationEnabled = mSharedPrefs.getBoolean(ALLOW_ROTATION_PREFERENCE_KEY,
-                getAllowRotationDefaultValue(mActivity.getDeviceProfile()));
+        mHomeRotationEnabled = LauncherPrefs.get(mActivity).get(ALLOW_ROTATION);
         if (mHomeRotationEnabled != wasRotationEnabled) {
             notifyChange();
         }
     }
 
     @Override
-    public void onDeviceProfileChanged(DeviceProfile dp) {
-        boolean ignoreAutoRotateSettings = dp.isTablet;
+    public void onDisplayInfoChanged(Context context, DisplayController.Info info, int flags) {
+        boolean ignoreAutoRotateSettings = info.isTablet(info.realBounds);
         if (mIgnoreAutoRotateSettings != ignoreAutoRotateSettings) {
-            setIgnoreAutoRotateSettings(ignoreAutoRotateSettings);
+            setIgnoreAutoRotateSettings(ignoreAutoRotateSettings, info);
             notifyChange();
         }
     }
@@ -157,8 +159,10 @@
     public void initialize() {
         if (!mInitialized) {
             mInitialized = true;
-            setIgnoreAutoRotateSettings(mActivity.getDeviceProfile().isTablet);
-            mActivity.addOnDeviceProfileChangeListener(this);
+            DisplayController displayController = DisplayController.INSTANCE.get(mActivity);
+            DisplayController.Info info = displayController.getInfo();
+            setIgnoreAutoRotateSettings(info.isTablet(info.realBounds), info);
+            displayController.addChangeListener(this);
             notifyChange();
         }
     }
@@ -166,11 +170,9 @@
     public void destroy() {
         if (!mDestroyed) {
             mDestroyed = true;
-            mActivity.removeOnDeviceProfileChangeListener(this);
+            DisplayController.INSTANCE.get(mActivity).removeChangeListener(this);
+            LauncherPrefs.get(mActivity).removeListener(this, ALLOW_ROTATION);
             mActivity = null;
-            if (mSharedPrefs != null) {
-                mSharedPrefs.unregisterOnSharedPreferenceChangeListener(this);
-            }
         }
     }
 
@@ -198,10 +200,19 @@
         }
         if (activityFlags != mLastActivityFlags) {
             mLastActivityFlags = activityFlags;
-            UiThreadHelper.setOrientationAsync(mActivity, activityFlags);
+            mRequestOrientationHandler.sendEmptyMessage(activityFlags);
         }
     }
 
+    @WorkerThread
+    private boolean setOrientationAsync(Message msg) {
+        Activity activity = mActivity;
+        if (activity != null) {
+            activity.setRequestedOrientation(msg.what);
+        }
+        return true;
+    }
+
     /**
      * @return how many factors {@param newRotation} is rotated 90 degrees clockwise.
      * E.g. 1->Rotated by 90 degrees clockwise, 2->Rotated 180 clockwise...
diff --git a/src/com/android/launcher3/states/SpringLoadedState.java b/src/com/android/launcher3/states/SpringLoadedState.java
index a205ab5..3286afb 100644
--- a/src/com/android/launcher3/states/SpringLoadedState.java
+++ b/src/com/android/launcher3/states/SpringLoadedState.java
@@ -31,8 +31,7 @@
 
     private static final int STATE_FLAGS = FLAG_MULTI_PAGE
             | FLAG_WORKSPACE_INACCESSIBLE | FLAG_DISABLE_RESTORE
-            | FLAG_WORKSPACE_ICONS_CAN_BE_DRAGGED | FLAG_WORKSPACE_HAS_BACKGROUNDS
-            | FLAG_HIDE_BACK_BUTTON;
+            | FLAG_WORKSPACE_ICONS_CAN_BE_DRAGGED | FLAG_WORKSPACE_HAS_BACKGROUNDS;
 
     public SpringLoadedState(int id) {
         super(id, LAUNCHER_STATE_HOME, STATE_FLAGS);
@@ -52,13 +51,13 @@
         }
 
         float shrunkTop = grid.getCellLayoutSpringLoadShrunkTop();
-        float scale = grid.getWorkspaceSpringLoadScale();
+        float scale = grid.getWorkspaceSpringLoadScale(launcher);
 
         float halfHeight = ws.getHeight() / 2;
         float myCenter = ws.getTop() + halfHeight;
         float cellTopFromCenter = halfHeight - ws.getChildAt(0).getTop();
         float actualCellTop = myCenter - cellTopFromCenter * scale;
-        return new ScaleAndTranslation(scale, 0, (shrunkTop - actualCellTop) / scale);
+        return new ScaleAndTranslation(scale, 0, shrunkTop - actualCellTop);
     }
 
     @Override
diff --git a/src/com/android/launcher3/states/StateAnimationConfig.java b/src/com/android/launcher3/states/StateAnimationConfig.java
index f99519d..d1e816b 100644
--- a/src/com/android/launcher3/states/StateAnimationConfig.java
+++ b/src/com/android/launcher3/states/StateAnimationConfig.java
@@ -64,6 +64,9 @@
             ANIM_DEPTH,
             ANIM_OVERVIEW_ACTIONS_FADE,
             ANIM_WORKSPACE_PAGE_TRANSLATE_X,
+            ANIM_OVERVIEW_SPLIT_SELECT_FLOATING_TASK_TRANSLATE_OFFSCREEN,
+            ANIM_OVERVIEW_SPLIT_SELECT_INSTRUCTIONS_FADE,
+            ANIM_ALL_APPS_BOTTOM_SHEET_FADE
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface AnimType {}
@@ -84,8 +87,11 @@
     public static final int ANIM_DEPTH = 13;
     public static final int ANIM_OVERVIEW_ACTIONS_FADE = 14;
     public static final int ANIM_WORKSPACE_PAGE_TRANSLATE_X = 15;
+    public static final int ANIM_OVERVIEW_SPLIT_SELECT_FLOATING_TASK_TRANSLATE_OFFSCREEN = 17;
+    public static final int ANIM_OVERVIEW_SPLIT_SELECT_INSTRUCTIONS_FADE = 18;
+    public static final int ANIM_ALL_APPS_BOTTOM_SHEET_FADE = 19;
 
-    private static final int ANIM_TYPES_COUNT = 17;
+    private static final int ANIM_TYPES_COUNT = 20;
 
     protected final Interpolator[] mInterpolators = new Interpolator[ANIM_TYPES_COUNT];
 
diff --git a/src/com/android/launcher3/testing/TestInformationHandler.java b/src/com/android/launcher3/testing/TestInformationHandler.java
index 242d2d4..e62ccbc 100644
--- a/src/com/android/launcher3/testing/TestInformationHandler.java
+++ b/src/com/android/launcher3/testing/TestInformationHandler.java
@@ -16,6 +16,7 @@
 package com.android.launcher3.testing;
 
 import static com.android.launcher3.allapps.AllAppsStore.DEFER_UPDATES_TEST;
+import static com.android.launcher3.config.FeatureFlags.FOLDABLE_SINGLE_PAGE;
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
 
 import android.annotation.TargetApi;
@@ -33,6 +34,7 @@
 
 import com.android.launcher3.CellLayout;
 import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.Hotseat;
 import com.android.launcher3.InvariantDeviceProfile;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherAppState;
@@ -40,10 +42,15 @@
 import com.android.launcher3.R;
 import com.android.launcher3.Workspace;
 import com.android.launcher3.dragndrop.DragLayer;
+import com.android.launcher3.testing.shared.HotseatCellCenterRequest;
+import com.android.launcher3.testing.shared.TestProtocol;
+import com.android.launcher3.testing.shared.WorkspaceCellCenterRequest;
 import com.android.launcher3.util.ResourceBasedOverride;
 import com.android.launcher3.widget.picker.WidgetsFullSheet;
 
+import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
 import java.util.function.Function;
 import java.util.function.Supplier;
 
@@ -108,12 +115,12 @@
 
             case TestProtocol.REQUEST_APPS_LIST_SCROLL_Y: {
                 return getLauncherUIProperty(Bundle::putInt,
-                        l -> l.getAppsView().getActiveRecyclerView().getCurrentScrollY());
+                        l -> l.getAppsView().getActiveRecyclerView().computeVerticalScrollOffset());
             }
 
             case TestProtocol.REQUEST_WIDGETS_SCROLL_Y: {
                 return getLauncherUIProperty(Bundle::putInt,
-                        l -> WidgetsFullSheet.getWidgetsView(l).getCurrentScrollY());
+                        l -> WidgetsFullSheet.getWidgetsView(l).computeVerticalScrollOffset());
             }
 
             case TestProtocol.REQUEST_TARGET_INSETS: {
@@ -150,11 +157,7 @@
 
             case TestProtocol.REQUEST_IS_TWO_PANELS:
                 response.putBoolean(TestProtocol.TEST_INFO_RESPONSE_FIELD,
-                        mDeviceProfile.isTwoPanels);
-                return response;
-
-            case TestProtocol.REQUEST_SET_FORCE_PAUSE_TIMEOUT:
-                TestProtocol.sForcePauseTimeout = Long.parseLong(arg);
+                        FOLDABLE_SINGLE_PAGE.get() ? false : mDeviceProfile.isTwoPanels);
                 return response;
 
             case TestProtocol.REQUEST_GET_HAD_NONTEST_EVENTS:
@@ -174,7 +177,7 @@
                 MAIN_EXECUTOR.submit(() ->
                         Launcher.ACTIVITY_TRACKER.getCreatedActivity().getRotationHelper()
                                 .forceAllowRotationForTesting(Boolean.parseBoolean(arg)));
-                return null;
+                return response;
 
             case TestProtocol.REQUEST_WORKSPACE_CELL_LAYOUT_SIZE:
                 return getLauncherUIProperty(Bundle::putIntArray, launcher -> {
@@ -185,7 +188,7 @@
                     return new int[]{cellLayout.getCountX(), cellLayout.getCountY()};
                 });
 
-            case TestProtocol.REQUEST_WORKSPACE_CELL_CENTER:
+            case TestProtocol.REQUEST_WORKSPACE_CELL_CENTER: {
                 final WorkspaceCellCenterRequest request = extra.getParcelable(
                         TestProtocol.TEST_INFO_REQUEST_FIELD);
                 return getLauncherUIProperty(Bundle::putParcelable, launcher -> {
@@ -197,13 +200,51 @@
                             cellLayout, request.cellX, request.cellY, request.spanX, request.spanY);
                     return new Point(cellRect.centerX(), cellRect.centerY());
                 });
+            }
+
+            case TestProtocol.REQUEST_WORKSPACE_COLUMNS_ROWS: {
+                return getLauncherUIProperty(Bundle::putParcelable, launcher -> new Point(
+                        InvariantDeviceProfile.INSTANCE.get(mContext).numColumns,
+                        InvariantDeviceProfile.INSTANCE.get(mContext).numRows)
+                );
+            }
+
+            case TestProtocol.REQUEST_WORKSPACE_CURRENT_PAGE_INDEX: {
+                return getLauncherUIProperty(Bundle::putInt,
+                        launcher -> launcher.getWorkspace().getCurrentPage());
+            }
+
+            case TestProtocol.REQUEST_HOTSEAT_CELL_CENTER: {
+                final HotseatCellCenterRequest request = extra.getParcelable(
+                        TestProtocol.TEST_INFO_REQUEST_FIELD);
+                return getLauncherUIProperty(Bundle::putParcelable, launcher -> {
+                    final Hotseat hotseat = launcher.getHotseat();
+                    final Rect cellRect = getDescendantRectRelativeToDragLayerForCell(launcher,
+                            hotseat, request.cellInd, /* cellY= */ 0,
+                            /* spanX= */ 1, /* spanY= */ 1);
+                    // TODO(b/234322284): return the real center point.
+                    return new Point(cellRect.left + (cellRect.right - cellRect.left) / 3,
+                            cellRect.top + (cellRect.bottom - cellRect.top) / 3);
+                });
+            }
 
             case TestProtocol.REQUEST_HAS_TIS: {
-                response.putBoolean(
-                        TestProtocol.REQUEST_HAS_TIS, false);
+                response.putBoolean(TestProtocol.REQUEST_HAS_TIS, false);
                 return response;
             }
 
+            case TestProtocol.REQUEST_ALL_APPS_TOP_PADDING: {
+                return getLauncherUIProperty(Bundle::putInt,
+                        l -> l.getAppsView().getActiveRecyclerView().getClipBounds().top);
+            }
+
+            case TestProtocol.REQUEST_ALL_APPS_BOTTOM_PADDING: {
+                return getLauncherUIProperty(Bundle::putInt,
+                        l -> l.getAppsView().getBottom()
+                                - l.getAppsView().getActiveRecyclerView().getBottom()
+                                + l.getAppsView().getActiveRecyclerView().getPaddingBottom());
+            }
+
             default:
                 return null;
         }
@@ -246,17 +287,24 @@
      */
     private static <S, T> Bundle getUIProperty(
             BundleSetter<T> bundleSetter, Function<S, T> provider, Supplier<S> targetSupplier) {
+        return getFromExecutorSync(MAIN_EXECUTOR, () -> {
+            S target = targetSupplier.get();
+            if (target == null) {
+                return null;
+            }
+            T value = provider.apply(target);
+            Bundle response = new Bundle();
+            bundleSetter.set(response, TestProtocol.TEST_INFO_RESPONSE_FIELD, value);
+            return response;
+        });
+    }
+
+    /**
+     * Executes the callback on the executor and waits for the result
+     */
+    protected static <T> T getFromExecutorSync(ExecutorService executor, Callable<T> callback) {
         try {
-            return MAIN_EXECUTOR.submit(() -> {
-                S target = targetSupplier.get();
-                if (target == null) {
-                    return null;
-                }
-                T value = provider.apply(target);
-                Bundle response = new Bundle();
-                bundleSetter.set(response, TestProtocol.TEST_INFO_RESPONSE_FIELD, value);
-                return response;
-            }).get();
+            return executor.submit(callback).get();
         } catch (ExecutionException | InterruptedException e) {
             throw new RuntimeException(e);
         }
diff --git a/src/com/android/launcher3/testing/TestInformationProvider.java b/src/com/android/launcher3/testing/TestInformationProvider.java
index bcc7c2d..17b472a 100644
--- a/src/com/android/launcher3/testing/TestInformationProvider.java
+++ b/src/com/android/launcher3/testing/TestInformationProvider.java
@@ -21,10 +21,14 @@
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Bundle;
+import android.util.Log;
 
 import com.android.launcher3.Utilities;
 
 public class TestInformationProvider extends ContentProvider {
+
+    private static final String TAG = "TestInformationProvider";
+
     @Override
     public boolean onCreate() {
         return true;
@@ -57,10 +61,16 @@
 
     @Override
     public Bundle call(String method, String arg, Bundle extras) {
-        if (Utilities.IS_RUNNING_IN_TEST_HARNESS) {
+        if (Utilities.isRunningInTestHarness()) {
             TestInformationHandler handler = TestInformationHandler.newInstance(getContext());
             handler.init(getContext());
-            return handler.call(method, arg, extras);
+
+            Bundle response =  handler.call(method, arg, extras);
+            if (response == null) {
+                Log.e(TAG, "Couldn't handle method: " + method + "; current handler="
+                        + handler.getClass().getSimpleName());
+            }
+            return response;
         }
         return null;
     }
diff --git a/src/com/android/launcher3/testing/TestLogging.java b/src/com/android/launcher3/testing/TestLogging.java
index 103b565..f95548d 100644
--- a/src/com/android/launcher3/testing/TestLogging.java
+++ b/src/com/android/launcher3/testing/TestLogging.java
@@ -22,6 +22,7 @@
 import android.view.MotionEvent;
 
 import com.android.launcher3.Utilities;
+import com.android.launcher3.testing.shared.TestProtocol;
 
 import java.util.function.BiConsumer;
 
@@ -38,13 +39,13 @@
     }
 
     public static void recordEvent(String sequence, String event) {
-        if (Utilities.IS_RUNNING_IN_TEST_HARNESS) {
+        if (Utilities.isRunningInTestHarness()) {
             recordEventSlow(sequence, event);
         }
     }
 
     public static void recordEvent(String sequence, String message, Object parameter) {
-        if (Utilities.IS_RUNNING_IN_TEST_HARNESS) {
+        if (Utilities.isRunningInTestHarness()) {
             recordEventSlow(sequence, message + ": " + parameter);
         }
     }
@@ -57,14 +58,14 @@
     }
 
     public static void recordKeyEvent(String sequence, String message, KeyEvent event) {
-        if (Utilities.IS_RUNNING_IN_TEST_HARNESS) {
+        if (Utilities.isRunningInTestHarness()) {
             recordEventSlow(sequence, message + ": " + event);
             registerEventNotFromTest(event);
         }
     }
 
     public static void recordMotionEvent(String sequence, String message, MotionEvent event) {
-        if (Utilities.IS_RUNNING_IN_TEST_HARNESS && event.getAction() != MotionEvent.ACTION_MOVE) {
+        if (Utilities.isRunningInTestHarness() && event.getAction() != MotionEvent.ACTION_MOVE) {
             recordEventSlow(sequence, message + ": " + event);
             registerEventNotFromTest(event);
         }
diff --git a/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java b/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java
index 09b8228..c499e35 100644
--- a/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java
+++ b/src/com/android/launcher3/touch/AbstractStateChangeTouchController.java
@@ -211,6 +211,10 @@
                     mFlingBlockCheck.blockFling();
                 }
             }
+            if (mFromState == LauncherState.ALL_APPS) {
+                mAllAppsOvershootStarted = true;
+                mLauncher.getAppsView().onPull(-progress , -progress);
+            }
         } else if (progress >= 1) {
             if (reinitCurrentAnimation(true, isDragTowardPositive)) {
                 mDisplacementShift = displacement;
@@ -287,11 +291,18 @@
                             ? mToState : mFromState;
             // snap to top or bottom using the release velocity
         } else {
-            float successTransitionProgress =
-                    mLauncher.getDeviceProfile().isTablet
-                            && (mToState == ALL_APPS || mFromState == ALL_APPS)
-                            ? TABLET_BOTTOM_SHEET_SUCCESS_TRANSITION_PROGRESS
-                            : SUCCESS_TRANSITION_PROGRESS;
+            float successTransitionProgress = SUCCESS_TRANSITION_PROGRESS;
+            if (mLauncher.getDeviceProfile().isTablet
+                    && (mToState == ALL_APPS || mFromState == ALL_APPS)) {
+                successTransitionProgress = TABLET_BOTTOM_SHEET_SUCCESS_TRANSITION_PROGRESS;
+            } else if (!mLauncher.getDeviceProfile().isTablet
+                    && mToState == ALL_APPS && mFromState == NORMAL) {
+                successTransitionProgress = AllAppsSwipeController.ALL_APPS_STATE_TRANSITION_MANUAL;
+            } else if (!mLauncher.getDeviceProfile().isTablet
+                    && mToState == NORMAL && mFromState == ALL_APPS) {
+                successTransitionProgress =
+                        1 - AllAppsSwipeController.ALL_APPS_STATE_TRANSITION_MANUAL;
+            }
             targetState =
                     (interpolatedProgress > successTransitionProgress) ? mToState : mFromState;
         }
diff --git a/src/com/android/launcher3/touch/AllAppsSwipeController.java b/src/com/android/launcher3/touch/AllAppsSwipeController.java
index db43baa..d028f24 100644
--- a/src/com/android/launcher3/touch/AllAppsSwipeController.java
+++ b/src/com/android/launcher3/touch/AllAppsSwipeController.java
@@ -17,12 +17,14 @@
 
 import static com.android.launcher3.LauncherState.ALL_APPS;
 import static com.android.launcher3.LauncherState.NORMAL;
-import static com.android.launcher3.anim.Interpolators.DECELERATED_EASE;
+import static com.android.launcher3.anim.Interpolators.EMPHASIZED;
 import static com.android.launcher3.anim.Interpolators.EMPHASIZED_ACCELERATE;
 import static com.android.launcher3.anim.Interpolators.EMPHASIZED_DECELERATE;
 import static com.android.launcher3.anim.Interpolators.FINAL_FRAME;
 import static com.android.launcher3.anim.Interpolators.INSTANT;
 import static com.android.launcher3.anim.Interpolators.LINEAR;
+import static com.android.launcher3.anim.Interpolators.clampToProgress;
+import static com.android.launcher3.states.StateAnimationConfig.ANIM_ALL_APPS_BOTTOM_SHEET_FADE;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_ALL_APPS_FADE;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_DEPTH;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_HOTSEAT_FADE;
@@ -32,11 +34,14 @@
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_VERTICAL_PROGRESS;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_WORKSPACE_FADE;
 import static com.android.launcher3.states.StateAnimationConfig.ANIM_WORKSPACE_SCALE;
+import static com.android.launcher3.states.StateAnimationConfig.ANIM_WORKSPACE_TRANSLATE;
+import static com.android.launcher3.states.StateAnimationConfig.SKIP_OVERVIEW;
 
 import android.view.MotionEvent;
 import android.view.animation.Interpolator;
 
 import com.android.launcher3.AbstractFloatingView;
+import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherState;
 import com.android.launcher3.anim.Interpolators;
@@ -47,48 +52,91 @@
  */
 public class AllAppsSwipeController extends AbstractStateChangeTouchController {
 
-    private static final float ALLAPPS_STAGGERED_FADE_THRESHOLD = 0.5f;
+    private static final float ALL_APPS_CONTENT_FADE_MAX_CLAMPING_THRESHOLD = 0.8f;
+    private static final float ALL_APPS_CONTENT_FADE_MIN_CLAMPING_THRESHOLD = 0.5f;
+    private static final float ALL_APPS_SCRIM_VISIBLE_THRESHOLD = 0.1f;
+    private static final float ALL_APPS_STAGGERED_FADE_THRESHOLD = 0.5f;
 
-    // Custom timing for NORMAL -> ALL_APPS on phones only.
-    private static final float WORKSPACE_MOTION_START = 0.1667f;
-    private static final float ALL_APPS_STATE_TRANSITION = 0.305f;
-    private static final float ALL_APPS_FADE_END = 0.4717f;
+    public static final Interpolator ALL_APPS_SCRIM_RESPONDER =
+            Interpolators.clampToProgress(
+                    LINEAR, ALL_APPS_SCRIM_VISIBLE_THRESHOLD, ALL_APPS_STAGGERED_FADE_THRESHOLD);
+    public static final Interpolator ALL_APPS_CLAMPING_RESPONDER =
+            Interpolators.clampToProgress(
+                    LINEAR,
+                    1 - ALL_APPS_CONTENT_FADE_MAX_CLAMPING_THRESHOLD,
+                    1 - ALL_APPS_CONTENT_FADE_MIN_CLAMPING_THRESHOLD);
+
+    // ---- Custom interpolators for NORMAL -> ALL_APPS on phones only. ----
+
+    public static final float ALL_APPS_STATE_TRANSITION_ATOMIC = 0.3333f;
+    public static final float ALL_APPS_STATE_TRANSITION_MANUAL = 0.4f;
+    private static final float ALL_APPS_FADE_END_ATOMIC = 0.8333f;
+    private static final float ALL_APPS_FADE_END_MANUAL = 0.8f;
     private static final float ALL_APPS_FULL_DEPTH_PROGRESS = 0.5f;
+    private static final float SCRIM_FADE_START_ATOMIC = 0.2642f;
+    private static final float SCRIM_FADE_START_MANUAL = 0.117f;
+    private static final float WORKSPACE_MOTION_START_ATOMIC = 0.1667f;
 
-    public static final Interpolator ALLAPPS_STAGGERED_FADE_EARLY_RESPONDER =
-            Interpolators.clampToProgress(LINEAR, 0, ALLAPPS_STAGGERED_FADE_THRESHOLD);
-    public static final Interpolator ALLAPPS_STAGGERED_FADE_LATE_RESPONDER =
-            Interpolators.clampToProgress(LINEAR, ALLAPPS_STAGGERED_FADE_THRESHOLD, 1f);
+    private static final Interpolator LINEAR_EARLY_MANUAL =
+            Interpolators.clampToProgress(LINEAR, 0f, ALL_APPS_STATE_TRANSITION_MANUAL);
+    private static final Interpolator STEP_TRANSITION_ATOMIC =
+            Interpolators.clampToProgress(FINAL_FRAME, 0f, ALL_APPS_STATE_TRANSITION_ATOMIC);
+    private static final Interpolator STEP_TRANSITION_MANUAL =
+            Interpolators.clampToProgress(FINAL_FRAME, 0f, ALL_APPS_STATE_TRANSITION_MANUAL);
 
-    // Custom interpolators for NORMAL -> ALL_APPS on phones only.
     // The blur to All Apps is set to be complete when the interpolator is at 0.5.
-    public static final Interpolator BLUR =
+    private static final Interpolator BLUR_ADJUSTED =
+            Interpolators.mapToProgress(LINEAR, 0f, ALL_APPS_FULL_DEPTH_PROGRESS);
+    public static final Interpolator BLUR_ATOMIC =
             Interpolators.clampToProgress(
-                    Interpolators.mapToProgress(
-                            LINEAR, 0f, ALL_APPS_FULL_DEPTH_PROGRESS),
-                    WORKSPACE_MOTION_START, ALL_APPS_STATE_TRANSITION);
-    public static final Interpolator WORKSPACE_FADE =
-            Interpolators.clampToProgress(FINAL_FRAME, 0f, ALL_APPS_STATE_TRANSITION);
-    public static final Interpolator WORKSPACE_SCALE =
+                    BLUR_ADJUSTED, WORKSPACE_MOTION_START_ATOMIC, ALL_APPS_STATE_TRANSITION_ATOMIC);
+    public static final Interpolator BLUR_MANUAL =
+            Interpolators.clampToProgress(BLUR_ADJUSTED, 0f, ALL_APPS_STATE_TRANSITION_MANUAL);
+
+    public static final Interpolator WORKSPACE_FADE_ATOMIC = STEP_TRANSITION_ATOMIC;
+    public static final Interpolator WORKSPACE_FADE_MANUAL = STEP_TRANSITION_MANUAL;
+
+    public static final Interpolator WORKSPACE_SCALE_ATOMIC =
             Interpolators.clampToProgress(
-                    EMPHASIZED_ACCELERATE, WORKSPACE_MOTION_START, ALL_APPS_STATE_TRANSITION);
-    public static final Interpolator HOTSEAT_FADE = WORKSPACE_FADE;
-    public static final Interpolator HOTSEAT_SCALE = HOTSEAT_FADE;
-    public static final Interpolator HOTSEAT_TRANSLATE =
+                    EMPHASIZED_ACCELERATE, WORKSPACE_MOTION_START_ATOMIC,
+                    ALL_APPS_STATE_TRANSITION_ATOMIC);
+    public static final Interpolator WORKSPACE_SCALE_MANUAL = LINEAR_EARLY_MANUAL;
+
+    public static final Interpolator HOTSEAT_FADE_ATOMIC = STEP_TRANSITION_ATOMIC;
+    public static final Interpolator HOTSEAT_FADE_MANUAL = STEP_TRANSITION_MANUAL;
+
+    public static final Interpolator HOTSEAT_SCALE_ATOMIC =
             Interpolators.clampToProgress(
-                    EMPHASIZED_ACCELERATE, WORKSPACE_MOTION_START, ALL_APPS_STATE_TRANSITION);
-    public static final Interpolator SCRIM_FADE =
+                    EMPHASIZED_ACCELERATE, WORKSPACE_MOTION_START_ATOMIC,
+                    ALL_APPS_STATE_TRANSITION_ATOMIC);
+    public static final Interpolator HOTSEAT_SCALE_MANUAL = LINEAR_EARLY_MANUAL;
+
+    public static final Interpolator HOTSEAT_TRANSLATE_ATOMIC = STEP_TRANSITION_ATOMIC;
+    public static final Interpolator HOTSEAT_TRANSLATE_MANUAL = STEP_TRANSITION_MANUAL;
+
+    public static final Interpolator SCRIM_FADE_ATOMIC =
             Interpolators.clampToProgress(
                     Interpolators.mapToProgress(LINEAR, 0f, 0.8f),
-                    WORKSPACE_MOTION_START, ALL_APPS_STATE_TRANSITION);
-    public static final Interpolator ALL_APPS_FADE =
+                    SCRIM_FADE_START_ATOMIC, ALL_APPS_STATE_TRANSITION_ATOMIC);
+    public static final Interpolator SCRIM_FADE_MANUAL =
             Interpolators.clampToProgress(
-                    Interpolators.mapToProgress(DECELERATED_EASE, 0.2f, 1.0f),
-                    ALL_APPS_STATE_TRANSITION, ALL_APPS_FADE_END);
-    public static final Interpolator ALL_APPS_VERTICAL_PROGRESS =
+                    LINEAR, SCRIM_FADE_START_MANUAL, ALL_APPS_STATE_TRANSITION_MANUAL);
+
+    public static final Interpolator ALL_APPS_FADE_ATOMIC =
             Interpolators.clampToProgress(
-                    Interpolators.mapToProgress(EMPHASIZED_DECELERATE, 0.4f, 1.0f),
-                    ALL_APPS_STATE_TRANSITION, 1.0f);
+                    Interpolators.mapToProgress(EMPHASIZED_DECELERATE, 0.2f, 1f),
+                    ALL_APPS_STATE_TRANSITION_ATOMIC, ALL_APPS_FADE_END_ATOMIC);
+    public static final Interpolator ALL_APPS_FADE_MANUAL =
+            Interpolators.clampToProgress(
+                    LINEAR, ALL_APPS_STATE_TRANSITION_MANUAL, ALL_APPS_FADE_END_MANUAL);
+
+    public static final Interpolator ALL_APPS_VERTICAL_PROGRESS_ATOMIC =
+            Interpolators.clampToProgress(
+                    Interpolators.mapToProgress(EMPHASIZED_DECELERATE, 0.4f, 1f),
+                    ALL_APPS_STATE_TRANSITION_ATOMIC, 1f);
+    public static final Interpolator ALL_APPS_VERTICAL_PROGRESS_MANUAL = LINEAR;
+
+    // --------
 
     public AllAppsSwipeController(Launcher l) {
         super(l, SingleAxisSwipeDetector.VERTICAL);
@@ -141,6 +189,7 @@
     protected StateAnimationConfig getConfigForStates(LauncherState fromState,
             LauncherState toState) {
         StateAnimationConfig config = super.getConfigForStates(fromState, toState);
+        config.userControlled = true;
         if (fromState == NORMAL && toState == ALL_APPS) {
             applyNormalToAllAppsAnimConfig(mLauncher, config);
         } else if (fromState == ALL_APPS && toState == NORMAL) {
@@ -150,36 +199,119 @@
     }
 
     /**
-     * Applies Animation config values for transition from all apps to home
+     * Applies Animation config values for transition from all apps to home.
      */
     public static void applyAllAppsToNormalConfig(Launcher launcher, StateAnimationConfig config) {
-        boolean isTablet = launcher.getDeviceProfile().isTablet;
-        config.setInterpolator(ANIM_SCRIM_FADE, ALLAPPS_STAGGERED_FADE_LATE_RESPONDER);
-        config.setInterpolator(ANIM_ALL_APPS_FADE, isTablet
-                ? FINAL_FRAME : ALLAPPS_STAGGERED_FADE_EARLY_RESPONDER);
-        if (!isTablet) {
-            config.setInterpolator(ANIM_WORKSPACE_FADE, INSTANT);
+        if (launcher.getDeviceProfile().isTablet) {
+            config.setInterpolator(ANIM_SCRIM_FADE,
+                    Interpolators.reverse(ALL_APPS_SCRIM_RESPONDER));
+            config.setInterpolator(ANIM_ALL_APPS_FADE, FINAL_FRAME);
+            if (!config.userControlled) {
+                config.setInterpolator(ANIM_VERTICAL_PROGRESS, EMPHASIZED);
+            }
+            config.setInterpolator(ANIM_WORKSPACE_SCALE, EMPHASIZED);
+            config.setInterpolator(ANIM_DEPTH, EMPHASIZED);
+        } else {
+            if (config.userControlled) {
+                config.setInterpolator(ANIM_DEPTH, Interpolators.reverse(BLUR_MANUAL));
+                config.setInterpolator(ANIM_WORKSPACE_FADE,
+                        Interpolators.reverse(WORKSPACE_FADE_MANUAL));
+                config.setInterpolator(ANIM_WORKSPACE_SCALE,
+                        Interpolators.reverse(WORKSPACE_SCALE_MANUAL));
+                config.setInterpolator(ANIM_HOTSEAT_FADE,
+                        Interpolators.reverse(HOTSEAT_FADE_MANUAL));
+                config.setInterpolator(ANIM_HOTSEAT_SCALE,
+                        Interpolators.reverse(HOTSEAT_SCALE_MANUAL));
+                config.setInterpolator(ANIM_HOTSEAT_TRANSLATE,
+                        Interpolators.reverse(HOTSEAT_TRANSLATE_MANUAL));
+                config.setInterpolator(ANIM_SCRIM_FADE, Interpolators.reverse(SCRIM_FADE_MANUAL));
+                config.setInterpolator(ANIM_ALL_APPS_FADE,
+                        Interpolators.reverse(ALL_APPS_FADE_MANUAL));
+                config.setInterpolator(ANIM_VERTICAL_PROGRESS,
+                        Interpolators.reverse(ALL_APPS_VERTICAL_PROGRESS_MANUAL));
+            } else {
+                config.setInterpolator(ANIM_SCRIM_FADE,
+                        Interpolators.reverse(ALL_APPS_SCRIM_RESPONDER));
+                config.setInterpolator(ANIM_ALL_APPS_FADE, ALL_APPS_CLAMPING_RESPONDER);
+                config.setInterpolator(ANIM_WORKSPACE_FADE, INSTANT);
+                config.setInterpolator(ANIM_VERTICAL_PROGRESS, EMPHASIZED_ACCELERATE);
+            }
         }
     }
 
     /**
-     * Applies Animation config values for transition from home to all apps
+     * Applies Animation config values for transition from home to all apps.
      */
-    public static void applyNormalToAllAppsAnimConfig(Launcher launcher,
-            StateAnimationConfig config) {
+    public static void applyNormalToAllAppsAnimConfig(
+            Launcher launcher, StateAnimationConfig config) {
         if (launcher.getDeviceProfile().isTablet) {
-            config.setInterpolator(ANIM_SCRIM_FADE, ALLAPPS_STAGGERED_FADE_EARLY_RESPONDER);
             config.setInterpolator(ANIM_ALL_APPS_FADE, INSTANT);
+            config.setInterpolator(ANIM_SCRIM_FADE, ALL_APPS_SCRIM_RESPONDER);
+            if (!config.userControlled) {
+                config.setInterpolator(ANIM_VERTICAL_PROGRESS, EMPHASIZED);
+            }
+            config.setInterpolator(ANIM_WORKSPACE_SCALE, EMPHASIZED);
+            config.setInterpolator(ANIM_DEPTH, EMPHASIZED);
         } else {
-            config.setInterpolator(ANIM_DEPTH, BLUR);
-            config.setInterpolator(ANIM_WORKSPACE_FADE, WORKSPACE_FADE);
-            config.setInterpolator(ANIM_WORKSPACE_SCALE, WORKSPACE_SCALE);
-            config.setInterpolator(ANIM_HOTSEAT_FADE, HOTSEAT_FADE);
-            config.setInterpolator(ANIM_HOTSEAT_SCALE, HOTSEAT_SCALE);
-            config.setInterpolator(ANIM_HOTSEAT_TRANSLATE, HOTSEAT_TRANSLATE);
-            config.setInterpolator(ANIM_SCRIM_FADE, SCRIM_FADE);
-            config.setInterpolator(ANIM_ALL_APPS_FADE, ALL_APPS_FADE);
-            config.setInterpolator(ANIM_VERTICAL_PROGRESS, ALL_APPS_VERTICAL_PROGRESS);
+            config.setInterpolator(ANIM_DEPTH, config.userControlled ? BLUR_MANUAL : BLUR_ATOMIC);
+            config.setInterpolator(ANIM_WORKSPACE_FADE,
+                    config.userControlled ? WORKSPACE_FADE_MANUAL : WORKSPACE_FADE_ATOMIC);
+            config.setInterpolator(ANIM_WORKSPACE_SCALE,
+                    config.userControlled ? WORKSPACE_SCALE_MANUAL : WORKSPACE_SCALE_ATOMIC);
+            config.setInterpolator(ANIM_HOTSEAT_FADE,
+                    config.userControlled ? HOTSEAT_FADE_MANUAL : HOTSEAT_FADE_ATOMIC);
+            config.setInterpolator(ANIM_HOTSEAT_SCALE,
+                    config.userControlled ? HOTSEAT_SCALE_MANUAL : HOTSEAT_SCALE_ATOMIC);
+            config.setInterpolator(ANIM_HOTSEAT_TRANSLATE,
+                    config.userControlled ? HOTSEAT_TRANSLATE_MANUAL : HOTSEAT_TRANSLATE_ATOMIC);
+            config.setInterpolator(ANIM_SCRIM_FADE,
+                    config.userControlled ? SCRIM_FADE_MANUAL : SCRIM_FADE_ATOMIC);
+            config.setInterpolator(ANIM_ALL_APPS_FADE,
+                    config.userControlled ? ALL_APPS_FADE_MANUAL : ALL_APPS_FADE_ATOMIC);
+            config.setInterpolator(ANIM_VERTICAL_PROGRESS,
+                    config.userControlled
+                            ? ALL_APPS_VERTICAL_PROGRESS_MANUAL
+                            : ALL_APPS_VERTICAL_PROGRESS_ATOMIC);
         }
     }
+
+    /**
+     * Applies Animation config values for transition from overview to all apps.
+     *
+     * @param threshold progress at which all apps will open upon release
+     */
+    public static void applyOverviewToAllAppsAnimConfig(
+            DeviceProfile deviceProfile, StateAnimationConfig config, float threshold) {
+        config.userControlled = true;
+        config.animFlags = SKIP_OVERVIEW;
+        if (deviceProfile.isTablet) {
+            config.setInterpolator(ANIM_ALL_APPS_FADE, INSTANT);
+            config.setInterpolator(ANIM_SCRIM_FADE, ALL_APPS_SCRIM_RESPONDER);
+            // The fact that we end on Workspace is not very ideal, but since we do, fade it in at
+            // the end of the transition. Don't scale/translate it.
+            config.setInterpolator(ANIM_WORKSPACE_FADE, clampToProgress(LINEAR, 0.8f, 1));
+            config.setInterpolator(ANIM_WORKSPACE_SCALE, INSTANT);
+            config.setInterpolator(ANIM_WORKSPACE_TRANSLATE, INSTANT);
+        } else {
+            // Remove scrim for this transition.
+            config.setInterpolator(ANIM_SCRIM_FADE, progress -> 0);
+
+            // For now, pop the background panel in at full opacity at the threshold.
+            config.setInterpolator(ANIM_ALL_APPS_BOTTOM_SHEET_FADE,
+                    thresholdInterpolator(threshold, INSTANT));
+
+            // Fade the apps in when the scrim normally does, so it's apparent sooner what is
+            // happening (in this case we are fading them on top of the background panel).
+            config.setInterpolator(ANIM_ALL_APPS_FADE,
+                    thresholdInterpolator(threshold, SCRIM_FADE_MANUAL));
+
+            config.setInterpolator(ANIM_VERTICAL_PROGRESS,
+                    thresholdInterpolator(threshold, ALL_APPS_VERTICAL_PROGRESS_MANUAL));
+        }
+    }
+
+    /** Creates an interpolator that is 0 until the threshold, then follows given interpolator. */
+    private static Interpolator thresholdInterpolator(float threshold, Interpolator interpolator) {
+        return progress -> progress <= threshold ? 0 : interpolator.getInterpolation(progress);
+    }
 }
diff --git a/src/com/android/launcher3/touch/ItemClickHandler.java b/src/com/android/launcher3/touch/ItemClickHandler.java
index e95a787..790c226 100644
--- a/src/com/android/launcher3/touch/ItemClickHandler.java
+++ b/src/com/android/launcher3/touch/ItemClickHandler.java
@@ -17,24 +17,20 @@
 
 import static com.android.launcher3.Launcher.REQUEST_BIND_PENDING_APPWIDGET;
 import static com.android.launcher3.Launcher.REQUEST_RECONFIGURE_APPWIDGET;
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_SEARCHINAPP_LAUNCH;
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_APP_LAUNCH_TAP;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_FOLDER_OPEN;
 import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_DISABLED_BY_PUBLISHER;
 import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_DISABLED_LOCKED_USER;
 import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_DISABLED_QUIET_USER;
 import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_DISABLED_SAFEMODE;
 import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_DISABLED_SUSPENDED;
+import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
+import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
 
 import android.app.AlertDialog;
-import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
-import android.content.IntentSender;
 import android.content.pm.LauncherApps;
 import android.content.pm.PackageInstaller.SessionInfo;
-import android.os.Process;
-import android.os.UserHandle;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
@@ -56,12 +52,11 @@
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.ItemInfoWithIcon;
 import com.android.launcher3.model.data.LauncherAppWidgetInfo;
-import com.android.launcher3.model.data.SearchActionItemInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
 import com.android.launcher3.pm.InstallSessionHelper;
 import com.android.launcher3.shortcuts.ShortcutKey;
 import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.util.ItemInfoMatcher;
 import com.android.launcher3.util.PackageManagerHelper;
 import com.android.launcher3.views.FloatingIconView;
@@ -71,6 +66,8 @@
 import com.android.launcher3.widget.WidgetManagerHelper;
 
 import java.util.Collections;
+import java.util.concurrent.CompletableFuture;
+import java.util.function.Consumer;
 
 /**
  * Class for handling clicks on workspace and all-apps items
@@ -105,8 +102,8 @@
             if (v instanceof PendingAppWidgetHostView) {
                 onClickPendingWidget((PendingAppWidgetHostView) v, launcher);
             }
-        } else if (tag instanceof SearchActionItemInfo) {
-            onClickSearchAction(launcher, (SearchActionItemInfo) tag);
+        } else if (tag instanceof ItemClickProxy) {
+            ((ItemClickProxy) tag).onItemClicked(v);
         }
     }
 
@@ -161,32 +158,18 @@
 
     private static void onClickPendingAppItem(View v, Launcher launcher, String packageName,
             boolean downloadStarted) {
-        if (downloadStarted) {
-            // If the download has started, simply direct to the market app.
-            startMarketIntentForPackage(v, launcher, packageName);
-            return;
-        }
-        UserHandle user = v.getTag() instanceof ItemInfo
-                ? ((ItemInfo) v.getTag()).user : Process.myUserHandle();
-        new AlertDialog.Builder(launcher)
-                .setTitle(R.string.abandoned_promises_title)
-                .setMessage(R.string.abandoned_promise_explanation)
-                .setPositiveButton(R.string.abandoned_search,
-                        (d, i) -> startMarketIntentForPackage(v, launcher, packageName))
-                .setNeutralButton(R.string.abandoned_clean_this,
-                        (d, i) -> launcher.getWorkspace()
-                                .persistRemoveItemsByMatcher(ItemInfoMatcher.ofPackages(
-                                        Collections.singleton(packageName), user),
-                                        "user explicitly removes the promise app icon"))
-                .create().show();
-    }
-
-    private static void startMarketIntentForPackage(View v, Launcher launcher, String packageName) {
         ItemInfo item = (ItemInfo) v.getTag();
+        CompletableFuture<SessionInfo> siFuture;
         if (Utilities.ATLEAST_Q) {
-            SessionInfo sessionInfo = InstallSessionHelper.INSTANCE.get(launcher)
-                    .getActiveSessionInfo(item.user, packageName);
-            if (sessionInfo != null) {
+            siFuture = CompletableFuture.supplyAsync(() ->
+                    InstallSessionHelper.INSTANCE.get(launcher)
+                            .getActiveSessionInfo(item.user, packageName),
+                    UI_HELPER_EXECUTOR);
+        } else {
+            siFuture = CompletableFuture.completedFuture(null);
+        }
+        Consumer<SessionInfo> marketLaunchAction = sessionInfo -> {
+            if (sessionInfo != null && Utilities.ATLEAST_Q) {
                 LauncherApps launcherApps = launcher.getSystemService(LauncherApps.class);
                 try {
                     launcherApps.startPackageInstallerSessionDetailsActivity(sessionInfo, null,
@@ -196,11 +179,27 @@
                     Log.e(TAG, "Unable to launch market intent for package=" + packageName, e);
                 }
             }
-        }
+            // Fallback to using custom market intent.
+            Intent intent = new PackageManagerHelper(launcher).getMarketIntent(packageName);
+            launcher.startActivitySafely(v, intent, item);
+        };
 
-        // Fallback to using custom market intent.
-        Intent intent = new PackageManagerHelper(launcher).getMarketIntent(packageName);
-        launcher.startActivitySafely(v, intent, item);
+        if (downloadStarted) {
+            // If the download has started, simply direct to the market app.
+            siFuture.thenAcceptAsync(marketLaunchAction, MAIN_EXECUTOR);
+            return;
+        }
+        new AlertDialog.Builder(launcher)
+                .setTitle(R.string.abandoned_promises_title)
+                .setMessage(R.string.abandoned_promise_explanation)
+                .setPositiveButton(R.string.abandoned_search,
+                        (d, i) -> siFuture.thenAcceptAsync(marketLaunchAction, MAIN_EXECUTOR))
+                .setNeutralButton(R.string.abandoned_clean_this,
+                        (d, i) -> launcher.getWorkspace()
+                                .persistRemoveItemsByMatcher(ItemInfoMatcher.ofPackages(
+                                        Collections.singleton(packageName), item.user),
+                                        "user explicitly removes the promise app icon"))
+                .create().show();
     }
 
     /**
@@ -248,13 +247,19 @@
             final Launcher launcher = Launcher.getLauncher(context);
             if (shortcut.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT
                     && shortcut.isDisabledVersionLower()) {
+                final Intent marketIntent = shortcut.getMarketIntent(context);
+                // No market intent means no target package for the shortcut, which should be an
+                // issue. Falling back to showing toast messages.
+                if (marketIntent == null) {
+                    return false;
+                }
 
                 new AlertDialog.Builder(context)
                         .setTitle(R.string.dialog_update_title)
                         .setMessage(R.string.dialog_update_message)
                         .setPositiveButton(R.string.dialog_update, (d, i) -> {
                             // Direct the user to the play store to update the app
-                            context.startActivity(shortcut.getMarketIntent(context));
+                            context.startActivity(marketIntent);
                         })
                         .setNeutralButton(R.string.dialog_remove, (d, i) -> {
                             // Remove the icon if launcher is successfully initialized
@@ -304,42 +309,6 @@
         startAppShortcutOrInfoActivity(v, shortcut, launcher);
     }
 
-    /**
-     * Event handler for a {@link SearchActionItemInfo} click
-     */
-    public static void onClickSearchAction(Launcher launcher, SearchActionItemInfo itemInfo) {
-        if (itemInfo.getIntent() != null) {
-            if (itemInfo.hasFlags(SearchActionItemInfo.FLAG_SHOULD_START_FOR_RESULT)) {
-                launcher.startActivityForResult(itemInfo.getIntent(), 0);
-            } else {
-                launcher.startActivity(itemInfo.getIntent());
-            }
-        } else if (itemInfo.getPendingIntent() != null) {
-            try {
-                PendingIntent pendingIntent = itemInfo.getPendingIntent();
-                if (!itemInfo.hasFlags(SearchActionItemInfo.FLAG_SHOULD_START)) {
-                    pendingIntent.send();
-                } else if (itemInfo.hasFlags(SearchActionItemInfo.FLAG_SHOULD_START_FOR_RESULT)) {
-                    launcher.startIntentSenderForResult(pendingIntent.getIntentSender(), 0, null, 0,
-                            0, 0);
-                } else {
-                    launcher.startIntentSender(pendingIntent.getIntentSender(), null, 0, 0, 0);
-                }
-            } catch (PendingIntent.CanceledException | IntentSender.SendIntentException e) {
-                Toast.makeText(launcher,
-                        launcher.getResources().getText(R.string.shortcut_not_available),
-                        Toast.LENGTH_SHORT).show();
-            }
-        }
-        if (itemInfo.hasFlags(SearchActionItemInfo.FLAG_SEARCH_IN_APP)) {
-            launcher.getStatsLogManager().logger().withItemInfo(itemInfo).log(
-                    LAUNCHER_ALLAPPS_SEARCHINAPP_LAUNCH);
-        } else {
-            launcher.getStatsLogManager().logger().withItemInfo(itemInfo).log(
-                    LAUNCHER_APP_LAUNCH_TAP);
-        }
-    }
-
     private static void startAppShortcutOrInfoActivity(View v, ItemInfo item, Launcher launcher) {
         TestLogging.recordEvent(
                 TestProtocol.SEQUENCE_MAIN, "start: startAppShortcutOrInfoActivity");
@@ -374,10 +343,22 @@
                 return;
             }
         }
-        if (v != null && launcher.supportsAdaptiveIconAnimation(v)) {
+        if (v != null && launcher.supportsAdaptiveIconAnimation(v)
+                && !item.shouldUseBackgroundAnimation()) {
             // Preload the icon to reduce latency b/w swapping the floating view with the original.
             FloatingIconView.fetchIcon(launcher, v, item, true /* isOpening */);
         }
         launcher.startActivitySafely(v, intent, item);
     }
+
+    /**
+     * Interface to indicate that an item will handle the click itself.
+     */
+    public interface ItemClickProxy {
+
+        /**
+         * Called when the item is clicked
+         */
+        void onItemClicked(View view);
+    }
 }
diff --git a/src/com/android/launcher3/touch/ItemLongClickListener.java b/src/com/android/launcher3/touch/ItemLongClickListener.java
index 6bae745..9cba19d 100644
--- a/src/com/android/launcher3/touch/ItemLongClickListener.java
+++ b/src/com/android/launcher3/touch/ItemLongClickListener.java
@@ -19,6 +19,7 @@
 import static android.view.View.VISIBLE;
 
 import static com.android.launcher3.LauncherState.ALL_APPS;
+import static com.android.launcher3.LauncherState.EDIT_MODE;
 import static com.android.launcher3.LauncherState.NORMAL;
 import static com.android.launcher3.LauncherState.OVERVIEW;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_ITEM_LONG_PRESSED;
@@ -27,7 +28,6 @@
 import android.view.View.OnLongClickListener;
 
 import com.android.launcher3.CellLayout;
-import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.DropTarget;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.dragndrop.DragController;
@@ -36,8 +36,9 @@
 import com.android.launcher3.logging.StatsLogManager.StatsLogger;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.views.BubbleTextHolder;
+import com.android.launcher3.widget.LauncherAppWidgetHostView;
 
 /**
  * Class to handle long-clicks on workspace items and start drag as a result.
@@ -51,10 +52,18 @@
             ItemLongClickListener::onAllAppsItemLongClick;
 
     private static boolean onWorkspaceItemLongClick(View v) {
-        TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "onWorkspaceItemLongClick");
+        if (v instanceof LauncherAppWidgetHostView) {
+            TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "Widgets.onLongClick");
+        } else {
+            TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "onWorkspaceItemLongClick");
+        }
         Launcher launcher = Launcher.getLauncher(v.getContext());
         if (!canStartDrag(launcher)) return false;
-        if (!launcher.isInState(NORMAL) && !launcher.isInState(OVERVIEW)) return false;
+        if (!launcher.isInState(NORMAL)
+                && !launcher.isInState(OVERVIEW)
+                && !launcher.isInState(EDIT_MODE)) {
+            return false;
+        }
         if (!(v.getTag() instanceof ItemInfo)) return false;
 
         launcher.setWaitingForResult(null);
@@ -76,7 +85,8 @@
             }
         }
 
-        CellLayout.CellInfo longClickCellInfo = new CellLayout.CellInfo(v, info);
+        CellLayout.CellInfo longClickCellInfo = new CellLayout.CellInfo(v, info,
+                launcher.getCellPosMapper().mapModelToPresenter(info));
         launcher.getWorkspace().startDrag(longClickCellInfo, dragOptions);
     }
 
@@ -113,10 +123,7 @@
             }
         });
 
-        DeviceProfile grid = launcher.getDeviceProfile();
-        DragOptions options = new DragOptions();
-        options.intrinsicIconScaleFactor = (float) grid.allAppsIconSizePx / grid.iconSizePx;
-        launcher.getWorkspace().beginDragShared(v, launcher.getAppsView(), options);
+        launcher.getWorkspace().beginDragShared(v, launcher.getAppsView(), new DragOptions());
         return false;
     }
 
diff --git a/src/com/android/launcher3/touch/LandscapePagedViewHandler.java b/src/com/android/launcher3/touch/LandscapePagedViewHandler.java
index b477905..c356da9 100644
--- a/src/com/android/launcher3/touch/LandscapePagedViewHandler.java
+++ b/src/com/android/launcher3/touch/LandscapePagedViewHandler.java
@@ -19,6 +19,7 @@
 import static android.view.Gravity.BOTTOM;
 import static android.view.Gravity.CENTER_VERTICAL;
 import static android.view.Gravity.END;
+import static android.view.Gravity.LEFT;
 import static android.view.Gravity.START;
 import static android.view.Gravity.TOP;
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
@@ -29,6 +30,7 @@
 import static com.android.launcher3.touch.SingleAxisSwipeDetector.HORIZONTAL;
 import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_BOTTOM_OR_RIGHT;
 import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT;
+import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_UNDEFINED;
 import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_TYPE_MAIN;
 
 import android.content.res.Resources;
@@ -50,9 +52,9 @@
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.util.SplitConfigurationOptions;
+import com.android.launcher3.util.SplitConfigurationOptions.SplitBounds;
 import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption;
 import com.android.launcher3.util.SplitConfigurationOptions.StagePosition;
-import com.android.launcher3.util.SplitConfigurationOptions.StagedSplitBounds;
 import com.android.launcher3.views.BaseDragLayer;
 
 import java.util.Collections;
@@ -264,20 +266,32 @@
     }
 
     @Override
-    public float getTaskMenuX(float x, View thumbnailView, int overScroll,
-            DeviceProfile deviceProfile) {
-        return thumbnailView.getMeasuredWidth() + x;
+    public float getTaskMenuX(float x, View thumbnailView,
+            DeviceProfile deviceProfile, float taskInsetMargin) {
+        return thumbnailView.getMeasuredWidth() + x - taskInsetMargin;
     }
 
     @Override
-    public float getTaskMenuY(float y, View thumbnailView, int overScroll) {
-        return y + overScroll +
-                (thumbnailView.getMeasuredHeight() - thumbnailView.getMeasuredWidth()) / 2f;
+    public float getTaskMenuY(float y, View thumbnailView, int stagePosition,
+            View taskMenuView, float taskInsetMargin) {
+        BaseDragLayer.LayoutParams lp = (BaseDragLayer.LayoutParams) taskMenuView.getLayoutParams();
+        int taskMenuWidth = lp.width;
+        if (stagePosition == STAGE_POSITION_UNDEFINED) {
+            return y + taskInsetMargin
+                    + (thumbnailView.getMeasuredHeight() - taskMenuWidth) / 2f;
+        } else {
+            return y + taskInsetMargin;
+        }
     }
 
     @Override
-    public int getTaskMenuWidth(View view, DeviceProfile deviceProfile) {
-        return view.getMeasuredWidth();
+    public int getTaskMenuWidth(View thumbnailView, DeviceProfile deviceProfile,
+            @StagePosition int stagePosition) {
+        if (stagePosition == SplitConfigurationOptions.STAGE_POSITION_UNDEFINED) {
+            return thumbnailView.getMeasuredWidth();
+        } else {
+            return thumbnailView.getMeasuredHeight();
+        }
     }
 
     @Override
@@ -299,19 +313,8 @@
     }
 
     @Override
-    public void setTaskMenuAroundTaskView(LinearLayout taskView, float margin) {
-        BaseDragLayer.LayoutParams lp = (BaseDragLayer.LayoutParams) taskView.getLayoutParams();
-        lp.topMargin += margin;
-    }
-
-    @Override
-    public PointF getAdditionalInsetForTaskMenu(float margin) {
-        return new PointF(margin, 0);
-    }
-
-    @Override
     public Pair<Float, Float> getDwbLayoutTranslations(int taskViewWidth,
-            int taskViewHeight, StagedSplitBounds splitBounds, DeviceProfile deviceProfile,
+            int taskViewHeight, SplitBounds splitBounds, DeviceProfile deviceProfile,
             View[] thumbnailViews, int desiredTaskId, View banner) {
         boolean isRtl = banner.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
         float translationX = 0;
@@ -400,7 +403,7 @@
     public List<SplitPositionOption> getSplitPositionOptions(DeviceProfile dp) {
         // Add "left" side of phone which is actually the top
         return Collections.singletonList(new SplitPositionOption(
-                R.drawable.ic_split_left, R.string.split_screen_position_left,
+                R.drawable.ic_split_horizontal, R.string.recent_task_option_split_screen,
                 STAGE_POSITION_TOP_OR_LEFT, STAGE_TYPE_MAIN));
     }
 
@@ -410,8 +413,8 @@
         // In fake land/seascape, the placeholder always needs to go to the "top" of the device,
         // which is the same bounds as 0 rotation.
         int width = dp.widthPx;
-        int insetThickness = dp.getInsets().top;
-        out.set(0, 0, width, placeholderHeight + insetThickness);
+        int insetSizeAdjustment = getPlaceholderSizeAdjustment(dp);
+        out.set(0, 0, width, placeholderHeight + insetSizeAdjustment);
         out.inset(placeholderInset, 0);
 
         // Adjust the top to account for content off screen. This will help to animate the view in
@@ -424,15 +427,45 @@
     }
 
     @Override
-    public void updateStagedSplitIconParams(View out, float onScreenRectCenterX,
+    public void updateSplitIconParams(View out, float onScreenRectCenterX,
             float onScreenRectCenterY, float fullscreenScaleX, float fullscreenScaleY,
             int drawableWidth, int drawableHeight, DeviceProfile dp,
             @StagePosition int stagePosition) {
-        float inset = dp.getInsets().top;
-        out.setX(Math.round(onScreenRectCenterX / fullscreenScaleX
-                - 1.0f * drawableWidth / 2));
-        out.setY(Math.round((onScreenRectCenterY + (inset / 2f)) / fullscreenScaleY
-                - 1.0f * drawableHeight / 2));
+        float insetAdjustment = getPlaceholderSizeAdjustment(dp) / 2f;
+        out.setX(onScreenRectCenterX / fullscreenScaleX
+                - 1.0f * drawableWidth / 2);
+        out.setY((onScreenRectCenterY + insetAdjustment) / fullscreenScaleY
+                - 1.0f * drawableHeight / 2);
+    }
+
+    /**
+     * The split placeholder comes with a default inset to buffer the icon from the top of the
+     * screen. But if the device already has a large inset (from cutouts etc), use that instead.
+     */
+    private int getPlaceholderSizeAdjustment(DeviceProfile dp) {
+        return Math.max(dp.getInsets().top - dp.splitPlaceholderInset, 0);
+    }
+
+    @Override
+    public void setSplitInstructionsParams(View out, DeviceProfile dp, int splitInstructionsHeight,
+            int splitInstructionsWidth) {
+        out.setPivotX(0);
+        out.setPivotY(splitInstructionsHeight);
+        out.setRotation(getDegreesRotated());
+        int distanceToEdge = out.getResources().getDimensionPixelSize(
+                R.dimen.split_instructions_bottom_margin_phone_landscape);
+        // Adjust for any insets on the left edge
+        int insetCorrectionX = dp.getInsets().left;
+        // Center the view in case of unbalanced insets on top or bottom of screen
+        int insetCorrectionY = (dp.getInsets().bottom - dp.getInsets().top) / 2;
+        out.setTranslationX(distanceToEdge - insetCorrectionX);
+        out.setTranslationY(((-splitInstructionsHeight - splitInstructionsWidth) / 2f)
+                + insetCorrectionY);
+        FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) out.getLayoutParams();
+        // Setting gravity to LEFT instead of the lint-recommended START because we always want this
+        // view to be screen-left when phone is in landscape, regardless of the RtL setting.
+        lp.gravity = LEFT | CENTER_VERTICAL;
+        out.setLayoutParams(lp);
     }
 
     @Override
@@ -447,7 +480,7 @@
 
     @Override
     public void setSplitTaskSwipeRect(DeviceProfile dp, Rect outRect,
-            StagedSplitBounds splitInfo, int desiredStagePosition) {
+            SplitBounds splitInfo, int desiredStagePosition) {
         float topLeftTaskPercent = splitInfo.appsStackedVertically
                 ? splitInfo.topTaskPercent
                 : splitInfo.leftTaskPercent;
@@ -464,13 +497,13 @@
 
     @Override
     public void measureGroupedTaskViewThumbnailBounds(View primarySnapshot, View secondarySnapshot,
-            int parentWidth, int parentHeight, StagedSplitBounds splitBoundsConfig,
+            int parentWidth, int parentHeight, SplitBounds splitBoundsConfig,
             DeviceProfile dp, boolean isRtl) {
         int spaceAboveSnapshot = dp.overviewTaskThumbnailTopMarginPx;
         int totalThumbnailHeight = parentHeight - spaceAboveSnapshot;
-        int dividerBar = splitBoundsConfig.appsStackedVertically
-                ? splitBoundsConfig.visualDividerBounds.height()
-                : splitBoundsConfig.visualDividerBounds.width();
+        int dividerBar = Math.round(totalThumbnailHeight * (splitBoundsConfig.appsStackedVertically
+                ? splitBoundsConfig.dividerHeightPercent
+                : splitBoundsConfig.dividerWidthPercent));
         int primarySnapshotHeight;
         int primarySnapshotWidth;
         int secondarySnapshotHeight;
@@ -500,13 +533,14 @@
         iconParams.rightMargin = -taskIconHeight - taskIconMargin / 2;
         iconParams.leftMargin = 0;
         iconParams.topMargin = thumbnailTopMargin / 2;
+        iconParams.bottomMargin = 0;
     }
 
     @Override
     public void setSplitIconParams(View primaryIconView, View secondaryIconView,
             int taskIconHeight, int primarySnapshotWidth, int primarySnapshotHeight,
             int groupedTaskViewHeight, int groupedTaskViewWidth, boolean isRtl,
-            DeviceProfile deviceProfile, StagedSplitBounds splitConfig) {
+            DeviceProfile deviceProfile, SplitBounds splitConfig) {
         FrameLayout.LayoutParams primaryIconParams =
                 (FrameLayout.LayoutParams) primaryIconView.getLayoutParams();
         FrameLayout.LayoutParams secondaryIconParams =
@@ -515,7 +549,8 @@
         // We calculate the "midpoint" of the thumbnail area, and place the icons there.
         // This is the place where the thumbnail area splits by default, in a near-50/50 split.
         // It is usually not exactly 50/50, due to insets/screen cutouts.
-        int fullscreenInsetThickness = deviceProfile.getInsets().top;
+        int fullscreenInsetThickness = deviceProfile.getInsets().top
+                - deviceProfile.getInsets().bottom;
         int fullscreenMidpointFromBottom = ((deviceProfile.heightPx - fullscreenInsetThickness)
                 / 2);
         float midpointFromBottomPct = (float) fullscreenMidpointFromBottom / deviceProfile.heightPx;
@@ -556,4 +591,22 @@
             FloatProperty secondary, DeviceProfile deviceProfile) {
         return new Pair<>(primary, secondary);
     }
+
+    @Override
+    public float getFloatingTaskOffscreenTranslationTarget(View floatingTask, RectF onScreenRect,
+            @StagePosition int stagePosition, DeviceProfile dp) {
+        float currentTranslationY = floatingTask.getTranslationY();
+        return currentTranslationY - onScreenRect.height();
+    }
+
+    @Override
+    public void setFloatingTaskPrimaryTranslation(View floatingTask, float translation,
+            DeviceProfile dp) {
+        floatingTask.setTranslationY(translation);
+    }
+
+    @Override
+    public Float getFloatingTaskPrimaryTranslation(View floatingTask, DeviceProfile dp) {
+        return floatingTask.getTranslationY();
+    }
 }
diff --git a/src/com/android/launcher3/touch/PagedOrientationHandler.java b/src/com/android/launcher3/touch/PagedOrientationHandler.java
index ca46aa8..39ef129 100644
--- a/src/com/android/launcher3/touch/PagedOrientationHandler.java
+++ b/src/com/android/launcher3/touch/PagedOrientationHandler.java
@@ -34,9 +34,9 @@
 
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.util.SplitConfigurationOptions;
+import com.android.launcher3.util.SplitConfigurationOptions.SplitBounds;
 import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption;
 import com.android.launcher3.util.SplitConfigurationOptions.StagePosition;
-import com.android.launcher3.util.SplitConfigurationOptions.StagedSplitBounds;
 
 import java.util.List;
 
@@ -129,12 +129,22 @@
      * @param dp The device profile, used to report rotation and hardware insets.
      * @param stagePosition 0 if the staging area is pinned to top/left, 1 for bottom/right.
      */
-    void updateStagedSplitIconParams(View out, float onScreenRectCenterX,
+    void updateSplitIconParams(View out, float onScreenRectCenterX,
             float onScreenRectCenterY, float fullscreenScaleX, float fullscreenScaleY,
             int drawableWidth, int drawableHeight, DeviceProfile dp,
             @StagePosition int stagePosition);
 
     /**
+     * Sets positioning and rotation for a SplitInstructionsView.
+     * @param out The SplitInstructionsView that needs to be positioned.
+     * @param dp The device profile, used to report rotation and device type.
+     * @param splitInstructionsHeight The SplitInstructionView's height.
+     * @param splitInstructionsWidth  The SplitInstructionView's width.
+     */
+    void setSplitInstructionsParams(View out, DeviceProfile dp, int splitInstructionsHeight,
+            int splitInstructionsWidth);
+
+    /**
      * @param splitDividerSize height of split screen drag handle in portrait, width in landscape
      * @param stagePosition the split position option (top/left, bottom/right) of the first
      *                           task selected for entering split
@@ -153,12 +163,12 @@
      * @param desiredStagePosition Which stage position (topLeft/rightBottom) we want to resize
      *                           outRect for
      */
-    void setSplitTaskSwipeRect(DeviceProfile dp, Rect outRect, StagedSplitBounds splitInfo,
+    void setSplitTaskSwipeRect(DeviceProfile dp, Rect outRect, SplitBounds splitInfo,
             @SplitConfigurationOptions.StagePosition int desiredStagePosition);
 
     void measureGroupedTaskViewThumbnailBounds(View primarySnapshot, View secondarySnapshot,
             int parentWidth, int parentHeight,
-            StagedSplitBounds splitBoundsConfig, DeviceProfile dp, boolean isRtl);
+            SplitBounds splitBoundsConfig, DeviceProfile dp, boolean isRtl);
 
     // Overview TaskMenuView methods
     void setTaskIconParams(FrameLayout.LayoutParams iconParams,
@@ -166,7 +176,7 @@
     void setSplitIconParams(View primaryIconView, View secondaryIconView,
             int taskIconHeight, int primarySnapshotWidth, int primarySnapshotHeight,
             int groupedTaskViewHeight, int groupedTaskViewWidth, boolean isRtl,
-            DeviceProfile deviceProfile, StagedSplitBounds splitConfig);
+            DeviceProfile deviceProfile, SplitBounds splitConfig);
 
     /*
      * The following two methods try to center the TaskMenuView in landscape by finding the center
@@ -174,9 +184,12 @@
      * taskMenu width is the same size as the thumbnail width (what got set below in
      * getTaskMenuWidth()), so we directly use that in the calculations.
      */
-    float getTaskMenuX(float x, View thumbnailView, int overScroll, DeviceProfile deviceProfile);
-    float getTaskMenuY(float y, View thumbnailView, int overScroll);
-    int getTaskMenuWidth(View view, DeviceProfile deviceProfile);
+    float getTaskMenuX(float x, View thumbnailView, DeviceProfile deviceProfile,
+            float taskInsetMargin);
+    float getTaskMenuY(float y, View thumbnailView, int stagePosition,
+            View taskMenuView, float taskInsetMargin);
+    int getTaskMenuWidth(View thumbnailView, DeviceProfile deviceProfile,
+            @StagePosition int stagePosition);
     /**
      * Sets linear layout orientation for {@link com.android.launcher3.popup.SystemShortcut} items
      * inside task menu view.
@@ -190,16 +203,6 @@
      */
     void setLayoutParamsForTaskMenuOptionItem(LinearLayout.LayoutParams lp,
             LinearLayout viewGroup, DeviceProfile deviceProfile);
-    /**
-     * Adjusts margins for the entire task menu view itself, which comprises of both app title and
-     * shortcut options.
-     */
-    void setTaskMenuAroundTaskView(LinearLayout taskView, float margin);
-    /**
-     * Since the task menu layout is manually positioned on top of recents view, this method returns
-     * additional adjustments to the positioning based on fake land/seascape
-     */
-    PointF getAdditionalInsetForTaskMenu(float margin);
 
     /**
      * Calculates the position where a Digital Wellbeing Banner should be placed on its parent
@@ -207,7 +210,7 @@
      * @return A Pair of Floats representing the proper x and y translations.
      */
     Pair<Float, Float> getDwbLayoutTranslations(int taskViewWidth,
-            int taskViewHeight, StagedSplitBounds splitBounds, DeviceProfile deviceProfile,
+            int taskViewHeight, SplitBounds splitBounds, DeviceProfile deviceProfile,
             View[] thumbnailViews, int desiredTaskId, View banner);
 
     // The following are only used by TaskViewTouchHandler.
@@ -232,6 +235,41 @@
      */
     void fixBoundsForHomeAnimStartRect(RectF outStartRect, DeviceProfile deviceProfile);
 
+    /**
+     * Determine the target translation for animating the FloatingTaskView out. This value could
+     * either be an x-coordinate or a y-coordinate, depending on which way the FloatingTaskView was
+     * docked.
+     *
+     * @param floatingTask The FloatingTaskView.
+     * @param onScreenRect The current on-screen dimensions of the FloatingTaskView.
+     * @param stagePosition STAGE_POSITION_TOP_OR_LEFT or STAGE_POSITION_BOTTOM_OR_RIGHT.
+     * @param dp The device profile.
+     * @return A float. When an animation translates the FloatingTaskView to this position, it will
+     * appear to tuck away off the edge of the screen.
+     */
+    float getFloatingTaskOffscreenTranslationTarget(View floatingTask, RectF onScreenRect,
+            @StagePosition int stagePosition, DeviceProfile dp);
+
+    /**
+     * Sets the translation of a FloatingTaskView along its "slide-in/slide-out" axis (could be
+     * either x or y), depending on how the view is oriented.
+     *
+     * @param floatingTask The FloatingTaskView to be translated.
+     * @param translation The target translation value.
+     * @param dp The current device profile.
+     */
+    void setFloatingTaskPrimaryTranslation(View floatingTask, float translation, DeviceProfile dp);
+
+    /**
+     * Gets the translation of a FloatingTaskView along its "slide-in/slide-out" axis (could be
+     * either x or y), depending on how the view is oriented.
+     *
+     * @param floatingTask The FloatingTaskView in question.
+     * @param dp The current device profile.
+     * @return The current translation value.
+     */
+    Float getFloatingTaskPrimaryTranslation(View floatingTask, DeviceProfile dp);
+
     class ChildBounds {
 
         public final int primaryDimension;
diff --git a/src/com/android/launcher3/touch/PortraitPagedViewHandler.java b/src/com/android/launcher3/touch/PortraitPagedViewHandler.java
index 508823c..6a972eb 100644
--- a/src/com/android/launcher3/touch/PortraitPagedViewHandler.java
+++ b/src/com/android/launcher3/touch/PortraitPagedViewHandler.java
@@ -29,6 +29,7 @@
 import static com.android.launcher3.touch.SingleAxisSwipeDetector.VERTICAL;
 import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_BOTTOM_OR_RIGHT;
 import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT;
+import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_TYPE_MAIN;
 
 import android.content.res.Resources;
 import android.graphics.Matrix;
@@ -47,13 +48,14 @@
 import android.widget.LinearLayout;
 
 import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.util.SplitConfigurationOptions;
+import com.android.launcher3.util.SplitConfigurationOptions.SplitBounds;
 import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption;
 import com.android.launcher3.util.SplitConfigurationOptions.StagePosition;
-import com.android.launcher3.util.SplitConfigurationOptions.StagedSplitBounds;
-import com.android.launcher3.views.BaseDragLayer;
 
+import java.util.ArrayList;
 import java.util.List;
 
 public class PortraitPagedViewHandler implements PagedOrientationHandler {
@@ -261,26 +263,28 @@
     }
 
     @Override
-    public float getTaskMenuX(float x, View thumbnailView, int overScroll,
-            DeviceProfile deviceProfile) {
+    public float getTaskMenuX(float x, View thumbnailView,
+            DeviceProfile deviceProfile, float taskInsetMargin) {
         if (deviceProfile.isLandscape) {
-            return x + overScroll
+            return x + taskInsetMargin
                     + (thumbnailView.getMeasuredWidth() - thumbnailView.getMeasuredHeight()) / 2f;
         } else {
-            return x + overScroll;
+            return x + taskInsetMargin;
         }
     }
 
     @Override
-    public float getTaskMenuY(float y, View thumbnailView, int overScroll) {
-        return y;
+    public float getTaskMenuY(float y, View thumbnailView, int stagePosition,
+            View taskMenuView, float taskInsetMargin) {
+        return y + taskInsetMargin;
     }
 
     @Override
-    public int getTaskMenuWidth(View view, DeviceProfile deviceProfile) {
+    public int getTaskMenuWidth(View thumbnailView, DeviceProfile deviceProfile,
+            @StagePosition int stagePosition) {
         return deviceProfile.isLandscape && !deviceProfile.isTablet
-                ? view.getMeasuredHeight()
-                : view.getMeasuredWidth();
+                ? thumbnailView.getMeasuredHeight()
+                : thumbnailView.getMeasuredWidth();
     }
 
     @Override
@@ -301,20 +305,8 @@
     }
 
     @Override
-    public void setTaskMenuAroundTaskView(LinearLayout taskView, float margin) {
-        BaseDragLayer.LayoutParams lp = (BaseDragLayer.LayoutParams) taskView.getLayoutParams();
-        lp.topMargin += margin;
-        lp.leftMargin += margin;
-    }
-
-    @Override
-    public PointF getAdditionalInsetForTaskMenu(float margin) {
-        return new PointF(0, 0);
-    }
-
-    @Override
     public Pair<Float, Float> getDwbLayoutTranslations(int taskViewWidth,
-            int taskViewHeight, StagedSplitBounds splitBounds, DeviceProfile deviceProfile,
+            int taskViewHeight, SplitBounds splitBounds, DeviceProfile deviceProfile,
             View[] thumbnailViews, int desiredTaskId, View banner) {
         float translationX = 0;
         float translationY = 0;
@@ -412,7 +404,26 @@
 
     @Override
     public List<SplitPositionOption> getSplitPositionOptions(DeviceProfile dp) {
-        return Utilities.getSplitPositionOptions(dp);
+        if (dp.isTablet) {
+            return Utilities.getSplitPositionOptions(dp);
+        }
+
+        List<SplitPositionOption> options = new ArrayList<>();
+        if (dp.isSeascape()) {
+            options.add(new SplitPositionOption(
+                    R.drawable.ic_split_horizontal, R.string.recent_task_option_split_screen,
+                    STAGE_POSITION_BOTTOM_OR_RIGHT, STAGE_TYPE_MAIN));
+        } else if (dp.isLandscape) {
+            options.add(new SplitPositionOption(
+                    R.drawable.ic_split_horizontal, R.string.recent_task_option_split_screen,
+                    STAGE_POSITION_TOP_OR_LEFT, STAGE_TYPE_MAIN));
+        } else {
+            // Only add top option
+            options.add(new SplitPositionOption(
+                    R.drawable.ic_split_vertical, R.string.recent_task_option_split_screen,
+                    STAGE_POSITION_TOP_OR_LEFT, STAGE_TYPE_MAIN));
+        }
+        return options;
     }
 
     @Override
@@ -421,13 +432,9 @@
         int screenWidth = dp.widthPx;
         int screenHeight = dp.heightPx;
         boolean pinToRight = stagePosition == STAGE_POSITION_BOTTOM_OR_RIGHT;
-        int insetThickness;
-        if (!dp.isLandscape) {
-            insetThickness = dp.getInsets().top;
-        } else {
-            insetThickness = pinToRight ? dp.getInsets().right : dp.getInsets().left;
-        }
-        out.set(0, 0, screenWidth, placeholderHeight + insetThickness);
+        int insetSizeAdjustment = getPlaceholderSizeAdjustment(dp, pinToRight);
+
+        out.set(0, 0, screenWidth, placeholderHeight + insetSizeAdjustment);
         if (!dp.isLandscape) {
             // portrait, phone or tablet - spans width of screen, nothing else to do
             out.inset(placeholderInset, 0);
@@ -467,32 +474,74 @@
     }
 
     @Override
-    public void updateStagedSplitIconParams(View out, float onScreenRectCenterX,
+    public void updateSplitIconParams(View out, float onScreenRectCenterX,
             float onScreenRectCenterY, float fullscreenScaleX, float fullscreenScaleY,
             int drawableWidth, int drawableHeight, DeviceProfile dp,
             @StagePosition int stagePosition) {
         boolean pinToRight = stagePosition == STAGE_POSITION_BOTTOM_OR_RIGHT;
+        float insetAdjustment = getPlaceholderSizeAdjustment(dp, pinToRight) / 2f;
         if (!dp.isLandscape) {
-            float inset = dp.getInsets().top;
-            out.setX(Math.round(onScreenRectCenterX / fullscreenScaleX
-                    - 1.0f * drawableWidth / 2));
-            out.setY(Math.round((onScreenRectCenterY + (inset / 2f)) / fullscreenScaleY
-                    - 1.0f * drawableHeight / 2));
+            out.setX(onScreenRectCenterX / fullscreenScaleX
+                    - 1.0f * drawableWidth / 2);
+            out.setY((onScreenRectCenterY + insetAdjustment) / fullscreenScaleY
+                    - 1.0f * drawableHeight / 2);
         } else {
             if (pinToRight) {
-                float inset = dp.getInsets().right;
-                out.setX(Math.round((onScreenRectCenterX - (inset / 2f)) / fullscreenScaleX
-                        - 1.0f * drawableWidth / 2));
+                out.setX((onScreenRectCenterX - insetAdjustment) / fullscreenScaleX
+                        - 1.0f * drawableWidth / 2);
             } else {
-                float inset = dp.getInsets().left;
-                out.setX(Math.round((onScreenRectCenterX + (inset / 2f)) / fullscreenScaleX
-                        - 1.0f * drawableWidth / 2));
+                out.setX((onScreenRectCenterX + insetAdjustment) / fullscreenScaleX
+                        - 1.0f * drawableWidth / 2);
             }
-            out.setY(Math.round(onScreenRectCenterY / fullscreenScaleY
-                    - 1.0f * drawableHeight / 2));
+            out.setY(onScreenRectCenterY / fullscreenScaleY
+                    - 1.0f * drawableHeight / 2);
         }
     }
 
+    /**
+     * The split placeholder comes with a default inset to buffer the icon from the top of the
+     * screen. But if the device already has a large inset (from cutouts etc), use that instead.
+     */
+    private int getPlaceholderSizeAdjustment(DeviceProfile dp, boolean pinToRight) {
+        int insetThickness;
+        if (!dp.isLandscape) {
+            insetThickness = dp.getInsets().top;
+        } else {
+            insetThickness = pinToRight ? dp.getInsets().right : dp.getInsets().left;
+        }
+        return Math.max(insetThickness - dp.splitPlaceholderInset, 0);
+    }
+
+    @Override
+    public void setSplitInstructionsParams(View out, DeviceProfile dp, int splitInstructionsHeight,
+            int splitInstructionsWidth) {
+        out.setPivotX(0);
+        out.setPivotY(splitInstructionsHeight);
+        out.setRotation(getDegreesRotated());
+        int distanceToEdge;
+        if (dp.isPhone) {
+            if (dp.isLandscape) {
+                distanceToEdge = out.getResources().getDimensionPixelSize(
+                        R.dimen.split_instructions_bottom_margin_phone_landscape);
+            } else {
+                distanceToEdge = out.getResources().getDimensionPixelSize(
+                        R.dimen.split_instructions_bottom_margin_phone_portrait);
+            }
+        } else {
+            distanceToEdge = dp.getOverviewActionsClaimedSpaceBelow();
+        }
+
+        // Center the view in case of unbalanced insets on left or right of screen
+        int insetCorrectionX = (dp.getInsets().right - dp.getInsets().left) / 2;
+        // Adjust for any insets on the bottom edge
+        int insetCorrectionY = dp.getInsets().bottom;
+        out.setTranslationX(insetCorrectionX);
+        out.setTranslationY(-distanceToEdge + insetCorrectionY);
+        FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) out.getLayoutParams();
+        lp.gravity = CENTER_HORIZONTAL | BOTTOM;
+        out.setLayoutParams(lp);
+    }
+
     @Override
     public void getFinalSplitPlaceholderBounds(int splitDividerSize, DeviceProfile dp,
             @StagePosition int stagePosition, Rect out1, Rect out2) {
@@ -525,8 +574,7 @@
 
     @Override
     public void setSplitTaskSwipeRect(DeviceProfile dp, Rect outRect,
-            StagedSplitBounds splitInfo, int desiredStagePosition) {
-        boolean isLandscape = dp.isLandscape;
+            SplitBounds splitInfo, int desiredStagePosition) {
         float topLeftTaskPercent = splitInfo.appsStackedVertically
                 ? splitInfo.topTaskPercent
                 : splitInfo.leftTaskPercent;
@@ -534,30 +582,37 @@
                 ? splitInfo.dividerHeightPercent
                 : splitInfo.dividerWidthPercent;
 
+        float scale = (float) outRect.height() / dp.availableHeightPx;
+        float topTaskHeight = dp.availableHeightPx * topLeftTaskPercent;
+        float scaledTopTaskHeight = topTaskHeight * scale;
+        float dividerHeight = dp.availableHeightPx * dividerBarPercent;
+        float scaledDividerHeight = dividerHeight * scale;
+
         if (desiredStagePosition == SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT) {
-            if (isLandscape) {
-                outRect.right = outRect.left + (int) (outRect.width() * topLeftTaskPercent);
+            if (dp.isLandscape) {
+                outRect.right = outRect.left + Math.round(outRect.width() * topLeftTaskPercent);
             } else {
-                outRect.bottom = outRect.top + (int) (outRect.height() * topLeftTaskPercent);
+                outRect.bottom = Math.round(outRect.top + scaledTopTaskHeight);
             }
         } else {
-            if (isLandscape) {
-                outRect.left += (int) (outRect.width() * (topLeftTaskPercent + dividerBarPercent));
+            if (dp.isLandscape) {
+                outRect.left += Math.round(outRect.width()
+                        * (topLeftTaskPercent + dividerBarPercent));
             } else {
-                outRect.top += (int) (outRect.height() * (topLeftTaskPercent + dividerBarPercent));
+                outRect.top += Math.round(scaledTopTaskHeight + scaledDividerHeight);
             }
         }
     }
 
     @Override
     public void measureGroupedTaskViewThumbnailBounds(View primarySnapshot, View secondarySnapshot,
-            int parentWidth, int parentHeight, StagedSplitBounds splitBoundsConfig,
+            int parentWidth, int parentHeight, SplitBounds splitBoundsConfig,
             DeviceProfile dp, boolean isRtl) {
         int spaceAboveSnapshot = dp.overviewTaskThumbnailTopMarginPx;
         int totalThumbnailHeight = parentHeight - spaceAboveSnapshot;
-        int dividerBar = splitBoundsConfig.appsStackedVertically
-                ? (int) (splitBoundsConfig.dividerHeightPercent * parentHeight)
-                : (int) (splitBoundsConfig.dividerWidthPercent * parentWidth);
+        float dividerScale = splitBoundsConfig.appsStackedVertically
+                ? splitBoundsConfig.dividerHeightPercent
+                : splitBoundsConfig.dividerWidthPercent;
         int primarySnapshotHeight;
         int primarySnapshotWidth;
         int secondarySnapshotHeight;
@@ -565,12 +620,13 @@
         float taskPercent = splitBoundsConfig.appsStackedVertically ?
                 splitBoundsConfig.topTaskPercent : splitBoundsConfig.leftTaskPercent;
         if (dp.isLandscape) {
+            int scaledDividerBar = Math.round(parentWidth * dividerScale);
             primarySnapshotHeight = totalThumbnailHeight;
-            primarySnapshotWidth = (int) (parentWidth * taskPercent);
+            primarySnapshotWidth = Math.round(parentWidth * taskPercent);
 
             secondarySnapshotHeight = totalThumbnailHeight;
-            secondarySnapshotWidth = parentWidth - primarySnapshotWidth - dividerBar;
-            int translationX = primarySnapshotWidth + dividerBar;
+            secondarySnapshotWidth = parentWidth - primarySnapshotWidth - scaledDividerBar;
+            int translationX = primarySnapshotWidth + scaledDividerBar;
             if (isRtl) {
                 primarySnapshot.setTranslationX(-translationX);
                 secondarySnapshot.setTranslationX(0);
@@ -579,14 +635,32 @@
                 primarySnapshot.setTranslationX(0);
             }
             secondarySnapshot.setTranslationY(spaceAboveSnapshot);
+
+            // Reset unused translations
+            primarySnapshot.setTranslationY(0);
         } else {
+            float scale = (float) totalThumbnailHeight / dp.availableHeightPx;
+            float topTaskHeight = dp.availableHeightPx * taskPercent;
+            float finalDividerHeight = Math.round(totalThumbnailHeight * dividerScale);
+            float scaledTopTaskHeight = topTaskHeight * scale;
             primarySnapshotWidth = parentWidth;
-            primarySnapshotHeight = (int) (totalThumbnailHeight * taskPercent);
+            primarySnapshotHeight = Math.round(scaledTopTaskHeight);
 
             secondarySnapshotWidth = parentWidth;
-            secondarySnapshotHeight = totalThumbnailHeight - primarySnapshotHeight - dividerBar;
-            int translationY = primarySnapshotHeight + spaceAboveSnapshot + dividerBar;
+            secondarySnapshotHeight = Math.round(totalThumbnailHeight - primarySnapshotHeight
+                    - finalDividerHeight);
+            float translationY = primarySnapshotHeight + spaceAboveSnapshot + finalDividerHeight;
             secondarySnapshot.setTranslationY(translationY);
+
+            FrameLayout.LayoutParams primaryParams =
+                    (FrameLayout.LayoutParams) primarySnapshot.getLayoutParams();
+            FrameLayout.LayoutParams secondaryParams =
+                    (FrameLayout.LayoutParams) secondarySnapshot.getLayoutParams();
+            secondaryParams.topMargin = 0;
+            primaryParams.topMargin = spaceAboveSnapshot;
+
+            // Reset unused translations
+            primarySnapshot.setTranslationY(0);
             secondarySnapshot.setTranslationX(0);
             primarySnapshot.setTranslationX(0);
         }
@@ -597,21 +671,26 @@
                 View.MeasureSpec.makeMeasureSpec(secondarySnapshotWidth, View.MeasureSpec.EXACTLY),
                 View.MeasureSpec.makeMeasureSpec(secondarySnapshotHeight,
                         View.MeasureSpec.EXACTLY));
+        primarySnapshot.setScaleX(1);
+        secondarySnapshot.setScaleX(1);
+        primarySnapshot.setScaleY(1);
+        secondarySnapshot.setScaleY(1);
     }
 
     @Override
     public void setTaskIconParams(FrameLayout.LayoutParams iconParams, int taskIconMargin,
             int taskIconHeight, int thumbnailTopMargin, boolean isRtl) {
         iconParams.gravity = TOP | CENTER_HORIZONTAL;
+        // Reset margins, since they may have been set on rotation
         iconParams.leftMargin = iconParams.rightMargin = 0;
-        iconParams.topMargin = taskIconMargin;
+        iconParams.topMargin = iconParams.bottomMargin = 0;
     }
 
     @Override
     public void setSplitIconParams(View primaryIconView, View secondaryIconView,
             int taskIconHeight, int primarySnapshotWidth, int primarySnapshotHeight,
             int groupedTaskViewHeight, int groupedTaskViewWidth, boolean isRtl,
-            DeviceProfile deviceProfile, StagedSplitBounds splitConfig) {
+            DeviceProfile deviceProfile, SplitBounds splitConfig) {
         FrameLayout.LayoutParams primaryIconParams =
                 (FrameLayout.LayoutParams) primaryIconView.getLayoutParams();
         FrameLayout.LayoutParams secondaryIconParams =
@@ -626,13 +705,13 @@
                     : deviceProfile.getInsets().left;
             int fullscreenMidpointFromBottom = ((deviceProfile.widthPx
                     - fullscreenInsetThickness) / 2);
-            float midpointFromBottomPct = (float) fullscreenMidpointFromBottom
+            float midpointFromEndPct = (float) fullscreenMidpointFromBottom
                     / deviceProfile.widthPx;
             float insetPct = (float) fullscreenInsetThickness / deviceProfile.widthPx;
             int spaceAboveSnapshots = 0;
             int overviewThumbnailAreaThickness = groupedTaskViewWidth - spaceAboveSnapshots;
             int bottomToMidpointOffset = (int) (overviewThumbnailAreaThickness
-                    * midpointFromBottomPct);
+                    * midpointFromEndPct);
             int insetOffset = (int) (overviewThumbnailAreaThickness * insetPct);
 
             if (deviceProfile.isSeascape()) {
@@ -701,4 +780,36 @@
             return new Pair<>(secondary, primary);
         }
     }
+
+    @Override
+    public float getFloatingTaskOffscreenTranslationTarget(View floatingTask, RectF onScreenRect,
+            @StagePosition int stagePosition, DeviceProfile dp) {
+        if (dp.isLandscape) {
+            float currentTranslationX = floatingTask.getTranslationX();
+            return stagePosition == STAGE_POSITION_TOP_OR_LEFT
+                    ? currentTranslationX - onScreenRect.width()
+                    : currentTranslationX + onScreenRect.width();
+        } else {
+            float currentTranslationY = floatingTask.getTranslationY();
+            return currentTranslationY - onScreenRect.height();
+        }
+    }
+
+    @Override
+    public void setFloatingTaskPrimaryTranslation(View floatingTask, float translation,
+            DeviceProfile dp) {
+        if (dp.isLandscape) {
+            floatingTask.setTranslationX(translation);
+        } else {
+            floatingTask.setTranslationY(translation);
+        }
+
+    }
+
+    @Override
+    public Float getFloatingTaskPrimaryTranslation(View floatingTask, DeviceProfile dp) {
+        return dp.isLandscape
+                ? floatingTask.getTranslationX()
+                : floatingTask.getTranslationY();
+    }
 }
diff --git a/src/com/android/launcher3/touch/SeascapePagedViewHandler.java b/src/com/android/launcher3/touch/SeascapePagedViewHandler.java
index 74b6a5b..ec01231 100644
--- a/src/com/android/launcher3/touch/SeascapePagedViewHandler.java
+++ b/src/com/android/launcher3/touch/SeascapePagedViewHandler.java
@@ -19,10 +19,12 @@
 import static android.view.Gravity.BOTTOM;
 import static android.view.Gravity.CENTER_VERTICAL;
 import static android.view.Gravity.END;
+import static android.view.Gravity.RIGHT;
 import static android.view.Gravity.START;
 
 import static com.android.launcher3.touch.SingleAxisSwipeDetector.HORIZONTAL;
 import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_BOTTOM_OR_RIGHT;
+import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_UNDEFINED;
 import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_TYPE_MAIN;
 
 import android.content.res.Resources;
@@ -32,13 +34,13 @@
 import android.view.Surface;
 import android.view.View;
 import android.widget.FrameLayout;
-import android.widget.LinearLayout;
 
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.util.SplitConfigurationOptions;
+import com.android.launcher3.util.SplitConfigurationOptions.SplitBounds;
 import com.android.launcher3.util.SplitConfigurationOptions.SplitPositionOption;
-import com.android.launcher3.util.SplitConfigurationOptions.StagedSplitBounds;
 import com.android.launcher3.views.BaseDragLayer;
 
 import java.util.Collections;
@@ -83,33 +85,47 @@
     }
 
     @Override
-    public float getTaskMenuX(float x, View thumbnailView, int overScroll,
-            DeviceProfile deviceProfile) {
-        return x;
+    public float getTaskMenuX(float x, View thumbnailView,
+            DeviceProfile deviceProfile, float taskInsetMargin) {
+        return x + taskInsetMargin;
     }
 
     @Override
-    public float getTaskMenuY(float y, View thumbnailView, int overScroll) {
-        return y + overScroll +
-                (thumbnailView.getMeasuredHeight() + thumbnailView.getMeasuredWidth()) / 2f;
+    public float getTaskMenuY(float y, View thumbnailView, int stagePosition,
+            View taskMenuView, float taskInsetMargin) {
+        BaseDragLayer.LayoutParams lp = (BaseDragLayer.LayoutParams) taskMenuView.getLayoutParams();
+        int taskMenuWidth = lp.width;
+        if (stagePosition == STAGE_POSITION_UNDEFINED) {
+            return y + taskInsetMargin
+                    + (thumbnailView.getMeasuredHeight() + taskMenuWidth) / 2f;
+        } else {
+            return y + taskMenuWidth + taskInsetMargin;
+        }
     }
 
     @Override
-    public void setTaskMenuAroundTaskView(LinearLayout taskView, float margin) {
-        BaseDragLayer.LayoutParams lp = (BaseDragLayer.LayoutParams) taskView.getLayoutParams();
-        lp.bottomMargin += margin;
+    public void setSplitTaskSwipeRect(DeviceProfile dp, Rect outRect, SplitBounds splitInfo,
+            int desiredStagePosition) {
+        float topLeftTaskPercent = splitInfo.appsStackedVertically
+                ? splitInfo.topTaskPercent
+                : splitInfo.leftTaskPercent;
+        float dividerBarPercent = splitInfo.appsStackedVertically
+                ? splitInfo.dividerHeightPercent
+                : splitInfo.dividerWidthPercent;
+
+        // In seascape, the primary thumbnail is counterintuitively placed at the physical bottom of
+        // the screen. This is to preserve consistency when the user rotates: From the user's POV,
+        // the primary should always be on the left.
+        if (desiredStagePosition == SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT) {
+            outRect.top += (int) (outRect.height() * ((1 - topLeftTaskPercent)));
+        } else {
+            outRect.bottom -= (int) (outRect.height() * (topLeftTaskPercent + dividerBarPercent));
+        }
     }
 
     @Override
-    public PointF getAdditionalInsetForTaskMenu(float margin) {
-        return new PointF(-margin, margin);
-    }
-
-
-
-    @Override
     public Pair<Float, Float> getDwbLayoutTranslations(int taskViewWidth,
-            int taskViewHeight, StagedSplitBounds splitBounds, DeviceProfile deviceProfile,
+            int taskViewHeight, SplitBounds splitBounds, DeviceProfile deviceProfile,
             View[] thumbnailViews, int desiredTaskId, View banner) {
         boolean isRtl = banner.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
         float translationX = 0;
@@ -162,24 +178,47 @@
     public List<SplitPositionOption> getSplitPositionOptions(DeviceProfile dp) {
         // Add "right" option which is actually the top
         return Collections.singletonList(new SplitPositionOption(
-                R.drawable.ic_split_right, R.string.split_screen_position_right,
+                R.drawable.ic_split_horizontal, R.string.recent_task_option_split_screen,
                 STAGE_POSITION_BOTTOM_OR_RIGHT, STAGE_TYPE_MAIN));
     }
 
     @Override
+    public void setSplitInstructionsParams(View out, DeviceProfile dp, int splitInstructionsHeight,
+            int splitInstructionsWidth) {
+        out.setPivotX(0);
+        out.setPivotY(splitInstructionsHeight);
+        out.setRotation(getDegreesRotated());
+        int distanceToEdge = out.getResources().getDimensionPixelSize(
+                R.dimen.split_instructions_bottom_margin_phone_landscape);
+        // Adjust for any insets on the right edge
+        int insetCorrectionX = dp.getInsets().right;
+        // Center the view in case of unbalanced insets on top or bottom of screen
+        int insetCorrectionY = (dp.getInsets().bottom - dp.getInsets().top) / 2;
+        out.setTranslationX(splitInstructionsWidth - distanceToEdge + insetCorrectionX);
+        out.setTranslationY(((-splitInstructionsHeight + splitInstructionsWidth) / 2f)
+                + insetCorrectionY);
+        FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) out.getLayoutParams();
+        // Setting gravity to RIGHT instead of the lint-recommended END because we always want this
+        // view to be screen-right when phone is in seascape, regardless of the RtL setting.
+        lp.gravity = RIGHT | CENTER_VERTICAL;
+        out.setLayoutParams(lp);
+    }
+
+    @Override
     public void setTaskIconParams(FrameLayout.LayoutParams iconParams,
             int taskIconMargin, int taskIconHeight, int thumbnailTopMargin, boolean isRtl) {
         iconParams.gravity = (isRtl ? END : START) | CENTER_VERTICAL;
         iconParams.leftMargin = -taskIconHeight - taskIconMargin / 2;
         iconParams.rightMargin = 0;
         iconParams.topMargin = thumbnailTopMargin / 2;
+        iconParams.bottomMargin = 0;
     }
 
     @Override
     public void setSplitIconParams(View primaryIconView, View secondaryIconView,
             int taskIconHeight, int primarySnapshotWidth, int primarySnapshotHeight,
             int groupedTaskViewHeight, int groupedTaskViewWidth, boolean isRtl,
-            DeviceProfile deviceProfile, StagedSplitBounds splitConfig) {
+            DeviceProfile deviceProfile, SplitBounds splitConfig) {
         super.setSplitIconParams(primaryIconView, secondaryIconView, taskIconHeight,
                 primarySnapshotWidth, primarySnapshotHeight, groupedTaskViewHeight,
                 groupedTaskViewWidth, isRtl, deviceProfile, splitConfig);
@@ -191,7 +230,8 @@
         // We calculate the "midpoint" of the thumbnail area, and place the icons there.
         // This is the place where the thumbnail area splits by default, in a near-50/50 split.
         // It is usually not exactly 50/50, due to insets/screen cutouts.
-        int fullscreenInsetThickness = deviceProfile.getInsets().top;
+        int fullscreenInsetThickness = deviceProfile.getInsets().top
+                - deviceProfile.getInsets().bottom;
         int fullscreenMidpointFromBottom = ((deviceProfile.heightPx
                 - fullscreenInsetThickness) / 2);
         float midpointFromBottomPct = (float) fullscreenMidpointFromBottom / deviceProfile.heightPx;
@@ -208,20 +248,63 @@
         if (splitConfig.initiatedFromSeascape) {
             // if the split was initiated from seascape,
             // the task on the right (secondary) is slightly larger
-            primaryIconView.setTranslationY(-bottomToMidpointOffset - insetOffset);
-            secondaryIconView.setTranslationY(-bottomToMidpointOffset - insetOffset
+            primaryIconView.setTranslationY(-bottomToMidpointOffset - insetOffset
                     + taskIconHeight);
+            secondaryIconView.setTranslationY(-bottomToMidpointOffset - insetOffset);
         } else {
             // if not,
             // the task on the left (primary) is slightly larger
-            primaryIconView.setTranslationY(-bottomToMidpointOffset);
-            secondaryIconView.setTranslationY(-bottomToMidpointOffset + taskIconHeight);
+            primaryIconView.setTranslationY(-bottomToMidpointOffset + taskIconHeight);
+            secondaryIconView.setTranslationY(-bottomToMidpointOffset);
         }
 
         primaryIconView.setLayoutParams(primaryIconParams);
         secondaryIconView.setLayoutParams(secondaryIconParams);
     }
 
+    @Override
+    public void measureGroupedTaskViewThumbnailBounds(View primarySnapshot, View secondarySnapshot,
+            int parentWidth, int parentHeight, SplitBounds splitBoundsConfig, DeviceProfile dp,
+            boolean isRtl) {
+        FrameLayout.LayoutParams primaryParams =
+                (FrameLayout.LayoutParams) primarySnapshot.getLayoutParams();
+        FrameLayout.LayoutParams secondaryParams =
+                (FrameLayout.LayoutParams) secondarySnapshot.getLayoutParams();
+
+        // Swap the margins that are set in TaskView#setRecentsOrientedState()
+        secondaryParams.topMargin = dp.overviewTaskThumbnailTopMarginPx;
+        primaryParams.topMargin = 0;
+
+        // Measure and layout the thumbnails bottom up, since the primary is on the visual left
+        // (portrait bottom) and secondary is on the right (portrait top)
+        int spaceAboveSnapshot = dp.overviewTaskThumbnailTopMarginPx;
+        int totalThumbnailHeight = parentHeight - spaceAboveSnapshot;
+        int dividerBar = Math.round(totalThumbnailHeight * (splitBoundsConfig.appsStackedVertically
+                ? splitBoundsConfig.dividerHeightPercent
+                : splitBoundsConfig.dividerWidthPercent));
+        int primarySnapshotHeight;
+        int primarySnapshotWidth;
+        int secondarySnapshotHeight;
+        int secondarySnapshotWidth;
+
+        float taskPercent = splitBoundsConfig.appsStackedVertically ?
+                splitBoundsConfig.topTaskPercent : splitBoundsConfig.leftTaskPercent;
+        primarySnapshotWidth = parentWidth;
+        primarySnapshotHeight = (int) (totalThumbnailHeight * (taskPercent));
+
+        secondarySnapshotWidth = parentWidth;
+        secondarySnapshotHeight = totalThumbnailHeight - primarySnapshotHeight - dividerBar;
+        secondarySnapshot.setTranslationY(0);
+        primarySnapshot.setTranslationY(secondarySnapshotHeight + spaceAboveSnapshot + dividerBar);
+        primarySnapshot.measure(
+                View.MeasureSpec.makeMeasureSpec(primarySnapshotWidth, View.MeasureSpec.EXACTLY),
+                View.MeasureSpec.makeMeasureSpec(primarySnapshotHeight, View.MeasureSpec.EXACTLY));
+        secondarySnapshot.measure(
+                View.MeasureSpec.makeMeasureSpec(secondarySnapshotWidth, View.MeasureSpec.EXACTLY),
+                View.MeasureSpec.makeMeasureSpec(secondarySnapshotHeight,
+                        View.MeasureSpec.EXACTLY));
+    }
+
     /* ---------- The following are only used by TaskViewTouchHandler. ---------- */
 
     @Override
diff --git a/src/com/android/launcher3/touch/WorkspaceTouchListener.java b/src/com/android/launcher3/touch/WorkspaceTouchListener.java
index 17bbdf1..96ae4a3 100644
--- a/src/com/android/launcher3/touch/WorkspaceTouchListener.java
+++ b/src/com/android/launcher3/touch/WorkspaceTouchListener.java
@@ -43,7 +43,8 @@
 import com.android.launcher3.dragndrop.DragLayer;
 import com.android.launcher3.logger.LauncherAtom;
 import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
+import com.android.launcher3.util.TouchUtil;
 
 /**
  * Helper class to handle touch on empty space in workspace and show options popup on long press
@@ -105,6 +106,11 @@
             if (handleLongPress) {
                 mLongPressState = STATE_REQUESTED;
                 mTouchDownPoint.set(ev.getX(), ev.getY());
+                // Mouse right button's ACTION_DOWN should immediately show menu
+                if (TouchUtil.isMouseRightClickDownOrMove(ev)) {
+                    maybeShowMenu();
+                    return true;
+                }
             }
 
             mWorkspace.onTouchEvent(ev);
@@ -185,6 +191,10 @@
 
     @Override
     public void onLongPress(MotionEvent event) {
+        maybeShowMenu();
+    }
+
+    private void maybeShowMenu() {
         if (mLongPressState == STATE_REQUESTED) {
             TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "Workspace.longPress");
             if (canHandleLongPress()) {
diff --git a/src/com/android/launcher3/util/BgObjectWithLooper.java b/src/com/android/launcher3/util/BgObjectWithLooper.java
index 1483c43..adc3c7d 100644
--- a/src/com/android/launcher3/util/BgObjectWithLooper.java
+++ b/src/com/android/launcher3/util/BgObjectWithLooper.java
@@ -15,10 +15,15 @@
  */
 package com.android.launcher3.util;
 
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
 import android.os.Looper;
 
 import androidx.annotation.WorkerThread;
 
+import java.util.function.Consumer;
+
 /**
  * Utility class to define an object which does most of it's processing on a
  * dedicated background thread.
@@ -43,4 +48,16 @@
      */
     @WorkerThread
     protected abstract void onInitialized(Looper looper);
+
+    /**
+     * Helper method to create a content provider
+     */
+    protected static ContentObserver newContentObserver(Handler handler, Consumer<Uri> command) {
+        return new ContentObserver(handler) {
+            @Override
+            public void onChange(boolean selfChange, Uri uri) {
+                command.accept(uri);
+            }
+        };
+    }
 }
diff --git a/src/com/android/launcher3/util/ContentWriter.java b/src/com/android/launcher3/util/ContentWriter.java
index ee64e98..9910dc2 100644
--- a/src/com/android/launcher3/util/ContentWriter.java
+++ b/src/com/android/launcher3/util/ContentWriter.java
@@ -19,13 +19,14 @@
 import android.content.ContentValues;
 import android.content.Context;
 import android.content.Intent;
-import android.net.Uri;
 import android.os.UserHandle;
 
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.LauncherSettings;
+import com.android.launcher3.LauncherSettings.Favorites;
 import com.android.launcher3.icons.BitmapInfo;
 import com.android.launcher3.icons.GraphicsUtils;
+import com.android.launcher3.model.ModelDbController;
 import com.android.launcher3.pm.UserCache;
 
 /**
@@ -105,7 +106,8 @@
 
     public int commit() {
         if (mCommitParams != null) {
-            return mContext.getContentResolver().update(mCommitParams.mUri, getValues(mContext),
+            return mCommitParams.mDbController.update(
+                    Favorites.TABLE_NAME, getValues(mContext),
                     mCommitParams.mWhere, mCommitParams.mSelectionArgs);
         }
         return 0;
@@ -113,26 +115,14 @@
 
     public static final class CommitParams {
 
-        final Uri mUri;
+        final ModelDbController mDbController;
         final String mWhere;
         final String[] mSelectionArgs;
 
-        public CommitParams(String where, String[] selectionArgs) {
-            this(LauncherSettings.Favorites.CONTENT_URI, where, selectionArgs);
-        }
-
-        private CommitParams(Uri uri, String where, String[] selectionArgs) {
-            mUri = uri;
+        public CommitParams(ModelDbController controller, String where, String[] selectionArgs) {
+            mDbController = controller;
             mWhere = where;
             mSelectionArgs = selectionArgs;
         }
-
-        /**
-         * Creates commit params for backup table.
-         */
-        public static CommitParams backupCommitParams(String where, String[] selectionArgs) {
-            return new CommitParams(
-                    LauncherSettings.Favorites.BACKUP_CONTENT_URI, where, selectionArgs);
-        }
     }
 }
diff --git a/src/com/android/launcher3/util/DimensionUtils.kt b/src/com/android/launcher3/util/DimensionUtils.kt
new file mode 100644
index 0000000..9188c2e
--- /dev/null
+++ b/src/com/android/launcher3/util/DimensionUtils.kt
@@ -0,0 +1,63 @@
+/*
+ * 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.launcher3.util
+
+import android.content.res.Resources
+import android.graphics.Point
+import android.view.ViewGroup
+import com.android.launcher3.DeviceProfile
+import com.android.launcher3.R
+
+object DimensionUtils {
+    /**
+     * Point where x is width, and y is height of taskbar based on provided [deviceProfile] x or y
+     * could also be -1 to indicate there is no dimension specified
+     */
+    @JvmStatic
+    fun getTaskbarPhoneDimensions(
+        deviceProfile: DeviceProfile,
+        res: Resources,
+        isPhoneMode: Boolean
+    ): Point {
+        val p = Point()
+        // Taskbar for large screen
+        if (!isPhoneMode) {
+            p.x = ViewGroup.LayoutParams.MATCH_PARENT
+            p.y = deviceProfile.taskbarHeight
+            return p
+        }
+
+        // Taskbar on phone using gesture nav, it will always be stashed
+        if (deviceProfile.isGestureMode) {
+            p.x = ViewGroup.LayoutParams.MATCH_PARENT
+            p.y = res.getDimensionPixelSize(R.dimen.taskbar_stashed_size)
+            return p
+        }
+
+        // Taskbar on phone, portrait
+        if (!deviceProfile.isLandscape) {
+            p.x = ViewGroup.LayoutParams.MATCH_PARENT
+            p.y = res.getDimensionPixelSize(R.dimen.taskbar_size)
+            return p
+        }
+
+        // Taskbar on phone, landscape
+        p.x = res.getDimensionPixelSize(R.dimen.taskbar_size)
+        p.y = ViewGroup.LayoutParams.MATCH_PARENT
+        return p
+    }
+}
diff --git a/src/com/android/launcher3/util/DisplayController.java b/src/com/android/launcher3/util/DisplayController.java
index 7c73be5..6647d0d 100644
--- a/src/com/android/launcher3/util/DisplayController.java
+++ b/src/com/android/launcher3/util/DisplayController.java
@@ -19,13 +19,12 @@
 import static android.view.Display.DEFAULT_DISPLAY;
 import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
 
-import static com.android.launcher3.ResourceUtils.INVALID_RESOURCE_HANDLE;
+import static com.android.launcher3.LauncherPrefs.TASKBAR_PINNING;
 import static com.android.launcher3.Utilities.dpiFromPx;
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_NAVIGATION_MODE_2_BUTTON;
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_NAVIGATION_MODE_3_BUTTON;
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_NAVIGATION_MODE_GESTURE_BUTTON;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_PINNING;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_TRANSIENT_TASKBAR;
 import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
-import static com.android.launcher3.util.PackageManagerHelper.getPackageFilter;
+import static com.android.launcher3.util.FlagDebugUtils.appendFlag;
 import static com.android.launcher3.util.window.WindowManagerProxy.MIN_TABLET_WIDTH;
 
 import android.annotation.SuppressLint;
@@ -41,23 +40,26 @@
 import android.util.ArrayMap;
 import android.util.ArraySet;
 import android.util.Log;
-import android.util.Pair;
 import android.view.Display;
 
 import androidx.annotation.AnyThread;
 import androidx.annotation.UiThread;
+import androidx.annotation.VisibleForTesting;
 
-import com.android.launcher3.ResourceUtils;
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.Utilities;
-import com.android.launcher3.logging.StatsLogManager.LauncherEvent;
+import com.android.launcher3.logging.FileLog;
 import com.android.launcher3.util.window.CachedDisplayInfo;
 import com.android.launcher3.util.window.WindowManagerProxy;
 
 import java.io.PrintWriter;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
+import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
+import java.util.StringJoiner;
 
 /**
  * Utility class to cache properties of default display to avoid a system RPC on every call.
@@ -66,6 +68,11 @@
 public class DisplayController implements ComponentCallbacks, SafeCloseable {
 
     private static final String TAG = "DisplayController";
+    private static final boolean DEBUG = false;
+    private static boolean sTransientTaskbarStatusForTests;
+
+    // TODO(b/254119092) remove all logs with this tag
+    public static final String TASKBAR_NOT_DESTROYED_TAG = "b/254119092";
 
     public static final MainThreadInitializedObject<DisplayController> INSTANCE =
             new MainThreadInitializedObject<>(DisplayController::new);
@@ -80,7 +87,6 @@
             | CHANGE_DENSITY | CHANGE_SUPPORTED_BOUNDS | CHANGE_NAVIGATION_MODE;
 
     private static final String ACTION_OVERLAY_CHANGED = "android.intent.action.OVERLAY_CHANGED";
-    private static final String NAV_BAR_INTERACTION_MODE_RES_NAME = "config_navBarInteractionMode";
     private static final String TARGET_OVERLAY_PACKAGE = "android";
 
     private final Context mContext;
@@ -98,9 +104,12 @@
     private Info mInfo;
     private boolean mDestroyed = false;
 
+    private final LauncherPrefs mPrefs;
+
     private DisplayController(Context context) {
         mContext = context;
         mDM = context.getSystemService(DisplayManager.class);
+        mPrefs = LauncherPrefs.get(context);
 
         Display display = mDM.getDisplay(DEFAULT_DISPLAY);
         if (Utilities.ATLEAST_S) {
@@ -112,12 +121,14 @@
         }
 
         // Initialize navigation mode change listener
-        mContext.registerReceiver(mReceiver,
-                getPackageFilter(TARGET_OVERLAY_PACKAGE, ACTION_OVERLAY_CHANGED));
+        mReceiver.registerPkgActions(mContext, TARGET_OVERLAY_PACKAGE, ACTION_OVERLAY_CHANGED);
 
         WindowManagerProxy wmProxy = WindowManagerProxy.INSTANCE.get(context);
-        mInfo = new Info(getDisplayInfoContext(display), display,
-                wmProxy, wmProxy.estimateInternalDisplayBounds(context));
+        Context displayInfoContext = getDisplayInfoContext(display);
+        mInfo = new Info(displayInfoContext, wmProxy,
+                wmProxy.estimateInternalDisplayBounds(displayInfoContext));
+        mInfo.mPerDisplayBounds.forEach((key, value) -> FileLog.i(TAG,
+                "(CTOR) perDisplayBounds - " + key + ": " + Arrays.deepToString(value)));
     }
 
     /**
@@ -127,6 +138,39 @@
         return INSTANCE.get(context).getInfo().navigationMode;
     }
 
+    /**
+     * Returns whether taskbar is transient.
+     */
+    public static boolean isTransientTaskbar(Context context) {
+        return INSTANCE.get(context).isTransientTaskbar();
+    }
+
+    /**
+     * Returns whether taskbar is transient.
+     */
+    public boolean isTransientTaskbar() {
+        // TODO(b/258604917): When running in test harness, use !sTransientTaskbarStatusForTests
+        //  once tests are updated to expect new persistent behavior such as not allowing long press
+        //  to stash.
+        if (!Utilities.isRunningInTestHarness()
+                && ENABLE_TASKBAR_PINNING.get()
+                && mPrefs.get(TASKBAR_PINNING)) {
+            return false;
+        }
+        return getInfo().navigationMode == NavigationMode.NO_BUTTON
+                && (Utilities.isRunningInTestHarness()
+                    ? sTransientTaskbarStatusForTests
+                    : ENABLE_TRANSIENT_TASKBAR.get());
+    }
+
+    /**
+     * Enables transient taskbar status for tests.
+     */
+    @VisibleForTesting
+    public static void enableTransientTaskbarForTests(boolean enable) {
+        sTransientTaskbarStatusForTests = enable;
+    }
+
     @Override
     public void close() {
         mDestroyed = true;
@@ -177,6 +221,7 @@
     @Override
     @TargetApi(Build.VERSION_CODES.S)
     public final void onConfigurationChanged(Configuration config) {
+        Log.d(TASKBAR_NOT_DESTROYED_TAG, "DisplayController#onConfigurationChanged: " + config);
         Display display = mWindowContext.getDisplay();
         if (config.densityDpi != mInfo.densityDpi
                 || config.fontScale != mInfo.fontScale
@@ -215,18 +260,18 @@
         WindowManagerProxy wmProxy = WindowManagerProxy.INSTANCE.get(mContext);
         Info oldInfo = mInfo;
 
-        Context displayContext = getDisplayInfoContext(display);
-        Info newInfo = new Info(displayContext, display, wmProxy, oldInfo.mPerDisplayBounds);
+        Context displayInfoContext = getDisplayInfoContext(display);
+        Info newInfo = new Info(displayInfoContext, wmProxy, oldInfo.mPerDisplayBounds);
 
         if (newInfo.densityDpi != oldInfo.densityDpi || newInfo.fontScale != oldInfo.fontScale
                 || newInfo.navigationMode != oldInfo.navigationMode) {
             // Cache may not be valid anymore, recreate without cache
-            newInfo = new Info(displayContext, display, wmProxy,
-                    wmProxy.estimateInternalDisplayBounds(displayContext));
+            newInfo = new Info(displayInfoContext, wmProxy,
+                    wmProxy.estimateInternalDisplayBounds(displayInfoContext));
         }
 
         int change = 0;
-        if (!newInfo.displayId.equals(oldInfo.displayId)) {
+        if (!newInfo.normalizedDisplayInfo.equals(oldInfo.normalizedDisplayInfo)) {
             change |= CHANGE_ACTIVE_SCREEN;
         }
         if (newInfo.rotation != oldInfo.rotation) {
@@ -238,34 +283,21 @@
         if (newInfo.navigationMode != oldInfo.navigationMode) {
             change |= CHANGE_NAVIGATION_MODE;
         }
-        if (!newInfo.supportedBounds.equals(oldInfo.supportedBounds)) {
+        if (!newInfo.supportedBounds.equals(oldInfo.supportedBounds)
+                || !newInfo.mPerDisplayBounds.equals(oldInfo.mPerDisplayBounds)) {
             change |= CHANGE_SUPPORTED_BOUNDS;
-
-            Point currentS = newInfo.currentSize;
-            Pair<CachedDisplayInfo, WindowBounds[]> cachedBounds =
-                    oldInfo.mPerDisplayBounds.get(newInfo.displayId);
-            Point expectedS = cachedBounds == null ? null : cachedBounds.first.size;
-            if (newInfo.supportedBounds.size() != oldInfo.supportedBounds.size()) {
-                Log.e("b/198965093",
-                        "Inconsistent number of displays"
-                                + "\ndisplay state: " + display.getState()
-                                + "\noldInfo.supportedBounds: " + oldInfo.supportedBounds
-                                + "\nnewInfo.supportedBounds: " + newInfo.supportedBounds);
-            }
-            if (expectedS != null
-                    && (Math.min(currentS.x, currentS.y) != Math.min(expectedS.x, expectedS.y)
-                    || Math.max(currentS.x, currentS.y) != Math.max(expectedS.x, expectedS.y))
-                    && display.getState() == Display.STATE_OFF) {
-                Log.e("b/198965093",
-                        "Display size changed while display is off, ignoring change");
-                return;
-            }
+            newInfo.mPerDisplayBounds.forEach((key, value) -> FileLog.w(TAG,
+                    "(CHANGE_SUPPORTED_BOUNDS) perDisplayBounds - " + key + ": "
+                            + Arrays.deepToString(value)));
+        }
+        if (DEBUG) {
+            Log.d(TAG, "handleInfoChange - change: " + getChangeFlagsString(change));
         }
 
         if (change != 0) {
             mInfo = newInfo;
             final int flags = change;
-            MAIN_EXECUTOR.execute(() -> notifyChange(displayContext, flags));
+            MAIN_EXECUTOR.execute(() -> notifyChange(displayInfoContext, flags));
         }
     }
 
@@ -283,8 +315,8 @@
     public static class Info {
 
         // Cached property
+        public final CachedDisplayInfo normalizedDisplayInfo;
         public final int rotation;
-        public final String displayId;
         public final Point currentSize;
         public final Rect cutout;
 
@@ -292,56 +324,75 @@
         public final float fontScale;
         private final int densityDpi;
         public final NavigationMode navigationMode;
-
         private final PortraitSize mScreenSizeDp;
 
+        // WindowBounds
+        public final WindowBounds realBounds;
         public final Set<WindowBounds> supportedBounds = new ArraySet<>();
-
-        private final ArrayMap<String, Pair<CachedDisplayInfo, WindowBounds[]>> mPerDisplayBounds =
+        private final ArrayMap<CachedDisplayInfo, WindowBounds[]> mPerDisplayBounds =
                 new ArrayMap<>();
 
-        public Info(Context context, Display display) {
+        public Info(Context displayInfoContext) {
             /* don't need system overrides for external displays */
-            this(context, display, new WindowManagerProxy(), new ArrayMap<>());
+            this(displayInfoContext, new WindowManagerProxy(), new ArrayMap<>());
         }
 
         // Used for testing
-        public Info(Context context, Display display,
+        public Info(Context displayInfoContext,
                 WindowManagerProxy wmProxy,
-                ArrayMap<String, Pair<CachedDisplayInfo, WindowBounds[]>> perDisplayBoundsCache) {
-            CachedDisplayInfo displayInfo = wmProxy.getDisplayInfo(context, display);
+                Map<CachedDisplayInfo, WindowBounds[]> perDisplayBoundsCache) {
+            CachedDisplayInfo displayInfo = wmProxy.getDisplayInfo(displayInfoContext);
+            normalizedDisplayInfo = displayInfo.normalize();
             rotation = displayInfo.rotation;
             currentSize = displayInfo.size;
-            displayId = displayInfo.id;
             cutout = displayInfo.cutout;
 
-            Configuration config = context.getResources().getConfiguration();
+            Configuration config = displayInfoContext.getResources().getConfiguration();
             fontScale = config.fontScale;
             densityDpi = config.densityDpi;
             mScreenSizeDp = new PortraitSize(config.screenHeightDp, config.screenWidthDp);
-            navigationMode = parseNavigationMode(context);
+            navigationMode = wmProxy.getNavigationMode(displayInfoContext);
 
             mPerDisplayBounds.putAll(perDisplayBoundsCache);
-            Pair<CachedDisplayInfo, WindowBounds[]> cachedValue = mPerDisplayBounds.get(displayId);
+            WindowBounds[] cachedValue = mPerDisplayBounds.get(normalizedDisplayInfo);
 
-            WindowBounds realBounds = wmProxy.getRealBounds(context, display, displayInfo);
+            realBounds = wmProxy.getRealBounds(displayInfoContext, displayInfo);
             if (cachedValue == null) {
-                supportedBounds.add(realBounds);
-            } else {
+                // Unexpected normalizedDisplayInfo is found, recreate the cache
+                FileLog.e(TAG, "Unexpected normalizedDisplayInfo found, invalidating cache: "
+                        + normalizedDisplayInfo);
+                mPerDisplayBounds.forEach((key, value) -> FileLog.e(TAG,
+                        "(Invalid Cache) perDisplayBounds - " + key + ": " + Arrays.deepToString(
+                                value)));
+                mPerDisplayBounds.clear();
+                mPerDisplayBounds.putAll(wmProxy.estimateInternalDisplayBounds(displayInfoContext));
+                cachedValue = mPerDisplayBounds.get(normalizedDisplayInfo);
+                if (cachedValue == null) {
+                    FileLog.e(TAG, "normalizedDisplayInfo not found in estimation: "
+                            + normalizedDisplayInfo);
+                    supportedBounds.add(realBounds);
+                }
+            }
+
+            if (cachedValue != null) {
                 // Verify that the real bounds are a match
-                WindowBounds expectedBounds = cachedValue.second[displayInfo.rotation];
+                WindowBounds expectedBounds = cachedValue[displayInfo.rotation];
                 if (!realBounds.equals(expectedBounds)) {
                     WindowBounds[] clone = new WindowBounds[4];
-                    System.arraycopy(cachedValue.second, 0, clone, 0, 4);
+                    System.arraycopy(cachedValue, 0, clone, 0, 4);
                     clone[displayInfo.rotation] = realBounds;
-                    cachedValue = Pair.create(displayInfo.normalize(), clone);
-                    mPerDisplayBounds.put(displayId, cachedValue);
+                    mPerDisplayBounds.put(normalizedDisplayInfo, clone);
                 }
             }
             mPerDisplayBounds.values().forEach(
-                    pair -> Collections.addAll(supportedBounds, pair.second));
-            Log.d("b/211775278", "displayId: " + displayId + ", currentSize: " + currentSize);
-            Log.d("b/211775278", "perDisplayBounds: " + mPerDisplayBounds);
+                    windowBounds -> Collections.addAll(supportedBounds, windowBounds));
+            if (DEBUG) {
+                Log.d(TAG, "displayInfo: " + displayInfo);
+                Log.d(TAG, "realBounds: " + realBounds);
+                Log.d(TAG, "normalizedDisplayInfo: " + normalizedDisplayInfo);
+                mPerDisplayBounds.forEach((key, value) -> Log.d(TAG,
+                        "perDisplayBounds - " + key + ": " + Arrays.deepToString(value)));
+            }
         }
 
         /**
@@ -358,24 +409,46 @@
             return dpiFromPx(Math.min(bounds.bounds.width(), bounds.bounds.height()), densityDpi);
         }
 
+        /**
+         * Returns all displays for the device
+         */
+        public Set<CachedDisplayInfo> getAllDisplays() {
+            return Collections.unmodifiableSet(mPerDisplayBounds.keySet());
+        }
+
         public int getDensityDpi() {
             return densityDpi;
         }
     }
 
     /**
+     * Returns the given binary flags as a human-readable string.
+     * @see #CHANGE_ALL
+     */
+    public String getChangeFlagsString(int change) {
+        StringJoiner result = new StringJoiner("|");
+        appendFlag(result, change, CHANGE_ACTIVE_SCREEN, "CHANGE_ACTIVE_SCREEN");
+        appendFlag(result, change, CHANGE_ROTATION, "CHANGE_ROTATION");
+        appendFlag(result, change, CHANGE_DENSITY, "CHANGE_DENSITY");
+        appendFlag(result, change, CHANGE_SUPPORTED_BOUNDS, "CHANGE_SUPPORTED_BOUNDS");
+        appendFlag(result, change, CHANGE_NAVIGATION_MODE, "CHANGE_NAVIGATION_MODE");
+        return result.toString();
+    }
+
+    /**
      * Dumps the current state information
      */
     public void dump(PrintWriter pw) {
         Info info = mInfo;
         pw.println("DisplayController.Info:");
-        pw.println("  id=" + info.displayId);
+        pw.println("  normalizedDisplayInfo=" + info.normalizedDisplayInfo);
         pw.println("  rotation=" + info.rotation);
         pw.println("  fontScale=" + info.fontScale);
         pw.println("  densityDpi=" + info.densityDpi);
         pw.println("  navigationMode=" + info.navigationMode.name());
         pw.println("  currentSize=" + info.currentSize);
-        pw.println("  supportedBounds=" + info.supportedBounds);
+        info.mPerDisplayBounds.forEach((key, value) -> pw.println(
+                "  perDisplayBounds - " + key + ": " + Arrays.deepToString(value)));
     }
 
     /**
@@ -403,35 +476,4 @@
         }
     }
 
-    public enum NavigationMode {
-        THREE_BUTTONS(false, 0, LAUNCHER_NAVIGATION_MODE_3_BUTTON),
-        TWO_BUTTONS(true, 1, LAUNCHER_NAVIGATION_MODE_2_BUTTON),
-        NO_BUTTON(true, 2, LAUNCHER_NAVIGATION_MODE_GESTURE_BUTTON);
-
-        public final boolean hasGestures;
-        public final int resValue;
-        public final LauncherEvent launcherEvent;
-
-        NavigationMode(boolean hasGestures, int resValue, LauncherEvent launcherEvent) {
-            this.hasGestures = hasGestures;
-            this.resValue = resValue;
-            this.launcherEvent = launcherEvent;
-        }
-    }
-
-    private static NavigationMode parseNavigationMode(Context context) {
-        int modeInt = ResourceUtils.getIntegerByName(NAV_BAR_INTERACTION_MODE_RES_NAME,
-                context.getResources(), INVALID_RESOURCE_HANDLE);
-
-        if (modeInt == INVALID_RESOURCE_HANDLE) {
-            Log.e(TAG, "Failed to get system resource ID. Incompatible framework version?");
-        } else {
-            for (NavigationMode m : NavigationMode.values()) {
-                if (m.resValue == modeInt) {
-                    return m;
-                }
-            }
-        }
-        return Utilities.ATLEAST_S ? NavigationMode.NO_BUTTON : NavigationMode.THREE_BUTTONS;
-    }
 }
diff --git a/src/com/android/launcher3/util/FlagDebugUtils.kt b/src/com/android/launcher3/util/FlagDebugUtils.kt
new file mode 100644
index 0000000..f281943
--- /dev/null
+++ b/src/com/android/launcher3/util/FlagDebugUtils.kt
@@ -0,0 +1,37 @@
+package com.android.launcher3.util
+
+import java.util.StringJoiner
+import java.util.function.IntFunction
+
+object FlagDebugUtils {
+
+    /** Appends the [flagName] to [str] when the [flag] is set in [flags]. */
+    @JvmStatic
+    fun appendFlag(str: StringJoiner, flags: Int, flag: Int, flagName: String) {
+        if (flags and flag != 0) {
+            str.add(flagName)
+        }
+    }
+
+    /**
+     * Produces a human-readable representation of the [current] flags, followed by a diff from from
+     * [previous].
+     *
+     * The resulting string is intented for logging and debugging.
+     */
+    @JvmStatic
+    fun formatFlagChange(current: Int, previous: Int, flagSerializer: IntFunction<String>): String {
+        val result = StringJoiner(" ")
+        result.add("[" + flagSerializer.apply(current) + "]")
+        val changed = current xor previous
+        val added = current and changed
+        if (added != 0) {
+            result.add("+[" + flagSerializer.apply(added) + "]")
+        }
+        val removed = previous and changed
+        if (removed != 0) {
+            result.add("-[" + flagSerializer.apply(removed) + "]")
+        }
+        return result.toString()
+    }
+}
diff --git a/src/com/android/launcher3/util/GridOccupancy.java b/src/com/android/launcher3/util/GridOccupancy.java
index 1301460..43e486c 100644
--- a/src/com/android/launcher3/util/GridOccupancy.java
+++ b/src/com/android/launcher3/util/GridOccupancy.java
@@ -81,4 +81,16 @@
     public void clear() {
         markCells(0, 0, mCountX, mCountY, false);
     }
+
+    @Override
+    public String toString() {
+        StringBuilder s = new StringBuilder("Grid: \n");
+        for (int y = 0; y < mCountY; y++) {
+            for (int x = 0; x < mCountX; x++) {
+                s.append(cells[x][y] ? 1 : 0).append(" ");
+            }
+            s.append("\n");
+        }
+        return s.toString();
+    }
 }
diff --git a/src/com/android/launcher3/util/HorizontalInsettableView.java b/src/com/android/launcher3/util/HorizontalInsettableView.java
index 7979bc0..486b73d 100644
--- a/src/com/android/launcher3/util/HorizontalInsettableView.java
+++ b/src/com/android/launcher3/util/HorizontalInsettableView.java
@@ -15,6 +15,8 @@
  */
 package com.android.launcher3.util;
 
+import android.util.FloatProperty;
+
 /**
  * Allows the implementing view to add insets to the left and right.
  */
@@ -32,4 +34,22 @@
      */
     void setHorizontalInsets(float insetPercentage);
 
+    /**
+     * Returns the width percentage to inset the content from the left and from the right. See
+     * {@link #setHorizontalInsets};
+     */
+    float getHorizontalInsets();
+
+    FloatProperty<HorizontalInsettableView> HORIZONTAL_INSETS =
+            new FloatProperty<HorizontalInsettableView>("horizontalInsets") {
+                @Override
+                public Float get(HorizontalInsettableView view) {
+                    return view.getHorizontalInsets();
+                }
+
+                @Override
+                public void setValue(HorizontalInsettableView view, float insetPercentage) {
+                    view.setHorizontalInsets(insetPercentage);
+                }
+            };
 }
diff --git a/src/com/android/launcher3/util/LauncherBindableItemsContainer.java b/src/com/android/launcher3/util/LauncherBindableItemsContainer.java
index a4cb30a..f73940b 100644
--- a/src/com/android/launcher3/util/LauncherBindableItemsContainer.java
+++ b/src/com/android/launcher3/util/LauncherBindableItemsContainer.java
@@ -50,7 +50,12 @@
                 Drawable oldIcon = shortcut.getIcon();
                 boolean oldPromiseState = (oldIcon instanceof PreloadIconDrawable)
                         && ((PreloadIconDrawable) oldIcon).hasNotCompleted();
-                shortcut.applyFromWorkspaceItem(si, si.isPromise() != oldPromiseState);
+                shortcut.applyFromWorkspaceItem(
+                        si,
+                        si.isPromise() != oldPromiseState
+                                && oldIcon instanceof PreloadIconDrawable
+                                ? (PreloadIconDrawable) oldIcon
+                                : null);
             } else if (info instanceof FolderInfo && v instanceof FolderIcon) {
                 ((FolderIcon) v).updatePreviewItems(updates::contains);
             }
@@ -74,7 +79,7 @@
         ItemOperator op = (info, v) -> {
             if (info instanceof WorkspaceItemInfo && v instanceof BubbleTextView
                     && updates.contains(info)) {
-                ((BubbleTextView) v).applyLoadingState(false /* promiseStateChanged */);
+                ((BubbleTextView) v).applyLoadingState(null);
             } else if (v instanceof PendingAppWidgetHostView
                     && info instanceof LauncherAppWidgetInfo
                     && updates.contains(info)) {
diff --git a/src/com/android/launcher3/util/LockedUserState.kt b/src/com/android/launcher3/util/LockedUserState.kt
new file mode 100644
index 0000000..1231604
--- /dev/null
+++ b/src/com/android/launcher3/util/LockedUserState.kt
@@ -0,0 +1,67 @@
+package com.android.launcher3.util
+
+import android.content.Context
+import android.content.Intent
+import android.os.Process
+import android.os.UserManager
+import androidx.annotation.VisibleForTesting
+
+class LockedUserState(private val mContext: Context) : SafeCloseable {
+    val isUserUnlockedAtLauncherStartup: Boolean
+    var isUserUnlocked: Boolean
+        private set
+    private val mUserUnlockedActions: RunnableList = RunnableList()
+
+    @VisibleForTesting
+    val mUserUnlockedReceiver = SimpleBroadcastReceiver {
+        if (Intent.ACTION_USER_UNLOCKED == it.action) {
+            isUserUnlocked = true
+            notifyUserUnlocked()
+        }
+    }
+
+    init {
+        // 1) when user reboots devices, launcher process starts at lock screen and both
+        // isUserUnlocked and isUserUnlockedAtLauncherStartup are init as false. After user unlocks
+        // screen, isUserUnlocked will be updated to true via Intent.ACTION_USER_UNLOCKED,
+        // yet isUserUnlockedAtLauncherStartup will remains as false.
+        // 2) when launcher process restarts after user has unlocked screen, both variable are
+        // init as true and will not change.
+        isUserUnlocked =
+            mContext
+                .getSystemService(UserManager::class.java)!!
+                .isUserUnlocked(Process.myUserHandle())
+        isUserUnlockedAtLauncherStartup = isUserUnlocked
+        if (isUserUnlocked) {
+            notifyUserUnlocked()
+        } else {
+            mUserUnlockedReceiver.register(mContext, Intent.ACTION_USER_UNLOCKED)
+        }
+    }
+
+    private fun notifyUserUnlocked() {
+        mUserUnlockedActions.executeAllAndDestroy()
+        mUserUnlockedReceiver.unregisterReceiverSafely(mContext)
+    }
+
+    /** Stops the receiver from listening for ACTION_USER_UNLOCK broadcasts. */
+    override fun close() {
+        mUserUnlockedReceiver.unregisterReceiverSafely(mContext)
+    }
+
+    /**
+     * Adds a `Runnable` to be executed when a user is unlocked. If the user is already unlocked,
+     * this runnable will run immediately because RunnableList will already have been destroyed.
+     */
+    fun runOnUserUnlocked(action: Runnable) {
+        mUserUnlockedActions.add(action)
+    }
+
+    companion object {
+        @VisibleForTesting
+        @JvmField
+        val INSTANCE = MainThreadInitializedObject { LockedUserState(it) }
+
+        @JvmStatic fun get(context: Context): LockedUserState = INSTANCE.get(context)
+    }
+}
diff --git a/src/com/android/launcher3/util/LogConfig.java b/src/com/android/launcher3/util/LogConfig.java
index 6bc26e7..e5bbcb1 100644
--- a/src/com/android/launcher3/util/LogConfig.java
+++ b/src/com/android/launcher3/util/LogConfig.java
@@ -40,4 +40,29 @@
      * When turned on, we enable suggest related logging.
      */
     public static final String SEARCH_LOGGING = "SearchLogging";
+
+    /**
+     * When turned on, we enable IME related latency related logging.
+     */
+    public static final String IME_LATENCY_LOGGING = "ImeLatencyLogging";
+
+    /**
+     * When turned on, we enable web suggest appSearch related logging.
+     */
+    public static final String WEB_APP_SEARCH_LOGGING = "WebAppSearchLogging";
+
+    /**
+     * When turned on, we enable quick launch v2 related logging.
+     */
+    public static final String QUICK_LAUNCH_V2 = "QuickLaunchV2";
+
+    /**
+     * When turned on, we enable Gms Play related logging.
+     */
+    public static final String GMS_PLAY = "GmsPlay";
+
+    /**
+     * When turned on, we enable AGA related session summary logging.
+     */
+    public static final String AGA_SESSION_SUMMARY_LOG = "AGASessionSummaryLog";
 }
diff --git a/src/com/android/launcher3/util/MainThreadInitializedObject.java b/src/com/android/launcher3/util/MainThreadInitializedObject.java
index badcd35..6a4e528 100644
--- a/src/com/android/launcher3/util/MainThreadInitializedObject.java
+++ b/src/com/android/launcher3/util/MainThreadInitializedObject.java
@@ -136,16 +136,19 @@
                 if (mDestroyed) {
                     Log.e(TAG, "Static object access with a destroyed context");
                 }
-                if (!mAllowedObjects.contains(object)) {
-                    throw new IllegalStateException(
-                            "Leaking unknown objects " + object + "  " + provider);
-                }
+
                 T t = (T) mObjectMap.get(object);
                 if (t != null) {
                     return t;
                 }
                 if (Looper.myLooper() == Looper.getMainLooper()) {
                     t = createObject(provider);
+                    // Check if we've explicitly allowed the object or if it's a SafeCloseable,
+                    // it will get destroyed in onDestroy()
+                    if (!mAllowedObjects.contains(object) && !(t instanceof SafeCloseable)) {
+                        throw new IllegalStateException(
+                                "Leaking unknown objects " + object + "  " + provider + " " + t);
+                    }
                     mObjectMap.put(object, t);
                     mOrderedObjects.add(t);
                     return t;
diff --git a/src/com/android/launcher3/util/MultiAdditivePropertyFactory.java b/src/com/android/launcher3/util/MultiAdditivePropertyFactory.java
deleted file mode 100644
index 50f7027..0000000
--- a/src/com/android/launcher3/util/MultiAdditivePropertyFactory.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * 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.launcher3.util;
-
-import android.util.ArrayMap;
-import android.util.FloatProperty;
-import android.util.Log;
-import android.util.Property;
-import android.view.View;
-
-/**
- * Allows to combine multiple values set by several sources.
- *
- * The various sources are meant to use [set], providing different `setterIndex` params. When it is
- * not set, 0 is used. This is meant to cover the case multiple animations are going on at the same
- * time.
- *
- * This class behaves similarly to [MultiValueAlpha], but is meant to be more abstract and reusable.
- * It sets the addition of all values.
- *
- * @param <T> Type where to apply the property.
- */
-public class MultiAdditivePropertyFactory<T extends View> {
-
-    private static final boolean DEBUG = false;
-    private static final String TAG = "MultiAdditivePropertyFactory";
-    private final String mName;
-    private final ArrayMap<Integer, MultiAdditiveProperty> mProperties =
-            new ArrayMap<>();
-
-    // This is an optimization for cases when set is called repeatedly with the same setterIndex.
-    private float mAggregationOfOthers = 0f;
-    private Integer mLastIndexSet = -1;
-    private final Property<View, Float> mProperty;
-
-    public MultiAdditivePropertyFactory(String name, Property<View, Float> property) {
-        mName = name;
-        mProperty = property;
-    }
-
-    /** Returns the [MultiFloatProperty] associated with [inx], creating it if not present. */
-    public MultiAdditiveProperty get(Integer index) {
-        return mProperties.computeIfAbsent(index,
-                (k) -> new MultiAdditiveProperty(index, mName + "_" + index));
-    }
-
-    /**
-     * Each [setValue] will be aggregated with the other properties values created by the
-     * corresponding factory.
-     */
-    class MultiAdditiveProperty extends FloatProperty<T> {
-        private final int mInx;
-        private float mValue = 0f;
-
-        MultiAdditiveProperty(int inx, String name) {
-            super(name);
-            mInx = inx;
-        }
-
-        @Override
-        public void setValue(T obj, float newValue) {
-            if (mLastIndexSet != mInx) {
-                mAggregationOfOthers = 0f;
-                mProperties.forEach((key, property) -> {
-                    if (key != mInx) {
-                        mAggregationOfOthers += property.mValue;
-                    }
-                });
-                mLastIndexSet = mInx;
-            }
-            float lastAggregatedValue = mAggregationOfOthers + newValue;
-            mValue = newValue;
-            apply(obj, lastAggregatedValue);
-
-            if (DEBUG) {
-                Log.d(TAG, "name=" + mName
-                        + " newValue=" + newValue + " mInx=" + mInx
-                        + " aggregated=" + lastAggregatedValue + " others= " + mProperties);
-            }
-        }
-
-        @Override
-        public Float get(T view) {
-            // The scale of the view should match mLastAggregatedValue. Still, if it has been
-            // changed without using this property, it can differ. As this get method is usually
-            // used to set the starting point on an animation, this would result in some jumps
-            // when the view scale is different than the last aggregated value. To stay on the
-            // safe side, let's return the real view scale.
-            return mProperty.get(view);
-        }
-
-        @Override
-        public String toString() {
-            return String.valueOf(mValue);
-        }
-    }
-
-    protected void apply(View view, float value) {
-        mProperty.set(view, value);
-    }
-}
diff --git a/src/com/android/launcher3/util/MultiPropertyFactory.java b/src/com/android/launcher3/util/MultiPropertyFactory.java
new file mode 100644
index 0000000..f34c4c2
--- /dev/null
+++ b/src/com/android/launcher3/util/MultiPropertyFactory.java
@@ -0,0 +1,192 @@
+/*
+ * 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.launcher3.util;
+
+import android.animation.Animator;
+import android.animation.ObjectAnimator;
+import android.util.FloatProperty;
+import android.util.Log;
+
+import java.io.PrintWriter;
+import java.util.Arrays;
+
+/**
+ * Allows to combine multiple values set by several sources.
+ *
+ * The various sources are meant to use [set], providing different `setterIndex` params. When it is
+ * not set, 0 is used. This is meant to cover the case multiple animations are going on at the same
+ * time.
+ *
+ * This class behaves similarly to [MultiValueAlpha], but is meant to be more abstract and reusable.
+ * It aggregate all values using the provided [aggregator].
+ *
+ * @param <T> Type where to apply the property.
+ */
+public class MultiPropertyFactory<T> {
+
+    public static final FloatProperty<MultiPropertyFactory<?>.MultiProperty> MULTI_PROPERTY_VALUE =
+            new FloatProperty<MultiPropertyFactory<?>.MultiProperty>("value") {
+
+                @Override
+                public Float get(MultiPropertyFactory<?>.MultiProperty property) {
+                    return property.mValue;
+                }
+
+                @Override
+                public void setValue(MultiPropertyFactory<?>.MultiProperty property, float value) {
+                    property.setValue(value);
+                }
+            };
+
+    private static final boolean DEBUG = false;
+    private static final String TAG = "MultiPropertyFactory";
+    private final MultiPropertyFactory<?>.MultiProperty[] mProperties;
+
+    // This is an optimization for cases when set is called repeatedly with the same setterIndex.
+    private float mAggregationOfOthers = 0f;
+    private int mLastIndexSet = -1;
+
+    protected final T mTarget;
+    private final FloatProperty<T> mProperty;
+    private final FloatBiFunction mAggregator;
+
+    /**
+     * Represents a function that accepts two float and produces a float.
+     */
+    public interface FloatBiFunction {
+        /**
+         * Applies this function to the given arguments.
+         */
+        float apply(float a, float b);
+    }
+
+    public MultiPropertyFactory(T target, FloatProperty<T> property, int size,
+            FloatBiFunction aggregator) {
+        this(target, property, size, aggregator, 0);
+    }
+
+    public MultiPropertyFactory(T target, FloatProperty<T> property, int size,
+            FloatBiFunction aggregator, float defaultPropertyValue) {
+        mTarget = target;
+        mProperty = property;
+        mAggregator = aggregator;
+
+        mProperties = new MultiPropertyFactory<?>.MultiProperty[size];
+        for (int i = 0; i < size; i++) {
+            mProperties[i] = new MultiProperty(i, defaultPropertyValue);
+        }
+    }
+
+    /** Returns the [MultiFloatProperty] associated with [inx], creating it if not present. */
+    public MultiProperty get(int index) {
+        return (MultiProperty) mProperties[index];
+    }
+
+    @Override
+    public String toString() {
+        return Arrays.deepToString(mProperties);
+    }
+
+    /**
+     * Dumps the alpha channel values to the given PrintWriter
+     *
+     * @param prefix String to be used before every line
+     * @param pw PrintWriter where the logs should be dumped
+     * @param label String used to help identify this object
+     * @param alphaIndexLabels Strings that represent each alpha channel, these should be entered
+     *                         in the order of the indexes they represent, starting from 0.
+     */
+    public void dump(String prefix, PrintWriter pw, String label, String... alphaIndexLabels) {
+        pw.println(prefix + label);
+
+        String innerPrefix = prefix + '\t';
+        for (int i = 0; i < alphaIndexLabels.length; i++) {
+            if (i >= mProperties.length) {
+                pw.println(innerPrefix + alphaIndexLabels[i] + " given for alpha index " + i
+                        + " however there are only " + mProperties.length + " alpha channels.");
+                continue;
+            }
+            pw.println(innerPrefix + alphaIndexLabels[i] + "=" + get(i).getValue());
+        }
+    }
+
+    /**
+     * Each [setValue] will be aggregated with the other properties values created by the
+     * corresponding factory.
+     */
+    public class MultiProperty {
+
+        private final int mInx;
+        private final float mDefaultValue;
+        private float mValue;
+
+        MultiProperty(int inx, float defaultValue) {
+            mInx = inx;
+            mDefaultValue = defaultValue;
+            mValue = defaultValue;
+        }
+
+        public void setValue(float newValue) {
+            if (mLastIndexSet != mInx) {
+                mAggregationOfOthers = mDefaultValue;
+                for (MultiPropertyFactory<?>.MultiProperty other : mProperties) {
+                    if (other.mInx != mInx) {
+                        mAggregationOfOthers =
+                                mAggregator.apply(mAggregationOfOthers, other.mValue);
+                    }
+                }
+
+                mLastIndexSet = mInx;
+            }
+            float lastAggregatedValue = mAggregator.apply(mAggregationOfOthers, newValue);
+            mValue = newValue;
+            apply(lastAggregatedValue);
+
+            if (DEBUG) {
+                Log.d(TAG, "name=" + mProperty.getName()
+                        + " target=" + mTarget.getClass()
+                        + " newValue=" + newValue
+                        + " mInx=" + mInx
+                        + " aggregated=" + lastAggregatedValue
+                        + " others= " + Arrays.deepToString(mProperties));
+            }
+        }
+
+        public float getValue() {
+            return mValue;
+        }
+
+        @Override
+        public String toString() {
+            return String.valueOf(mValue);
+        }
+
+        /**
+         * Creates and returns an Animator from the current value to the given value. Future
+         * animator on the same target automatically cancels the previous one.
+         */
+        public Animator animateToValue(float value) {
+            ObjectAnimator animator = ObjectAnimator.ofFloat(this, MULTI_PROPERTY_VALUE, value);
+            animator.setAutoCancel(true);
+            return animator;
+        }
+    }
+
+    protected void apply(float value) {
+        mProperty.set(mTarget, value);
+    }
+}
diff --git a/src/com/android/launcher3/util/MultiTranslateDelegate.java b/src/com/android/launcher3/util/MultiTranslateDelegate.java
new file mode 100644
index 0000000..1cb7a45
--- /dev/null
+++ b/src/com/android/launcher3/util/MultiTranslateDelegate.java
@@ -0,0 +1,78 @@
+/*
+ * 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.launcher3.util;
+
+import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_X;
+import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_Y;
+
+import android.view.View;
+
+import com.android.launcher3.util.MultiPropertyFactory.MultiProperty;
+
+/**
+ * A utility class to split translation components for various workspace items
+ */
+public class MultiTranslateDelegate {
+
+    // offset related to reorder hint and bounce animations
+    public static final int INDEX_REORDER_BOUNCE_OFFSET = 0;
+    // offset related to previewing the new reordered position
+    public static final int INDEX_REORDER_PREVIEW_OFFSET = 1;
+    public static final int INDEX_MOVE_FROM_CENTER_ANIM = 2;
+
+    // Specific for items in taskbar (icons, folders, qsb)
+    public static final int INDEX_TASKBAR_ALIGNMENT_ANIM = 3;
+    public static final int INDEX_TASKBAR_REVEAL_ANIM = 4;
+
+    // Specific for widgets
+    public static final int INDEX_WIDGET_CENTERING = 3;
+
+    public static final int COUNT = 5;
+
+    private final MultiPropertyFactory<View> mTranslationX;
+    private final MultiPropertyFactory<View> mTranslationY;
+
+    public MultiTranslateDelegate(View target) {
+        this(target, COUNT, COUNT);
+    }
+
+    public MultiTranslateDelegate(View target, int countX, int countY) {
+        mTranslationX = new MultiPropertyFactory<>(target, VIEW_TRANSLATE_X, countX, Float::sum);
+        mTranslationY = new MultiPropertyFactory<>(target, VIEW_TRANSLATE_Y, countY, Float::sum);
+    }
+
+    /**
+     * Helper method to set both translations, x and y at a given index
+     */
+    public void setTranslation(int index, float x, float y) {
+        getTranslationX(index).setValue(x);
+        getTranslationY(index).setValue(y);
+    }
+
+    /**
+     * Returns the translation x for the provided index
+     */
+    public MultiProperty getTranslationX(int index) {
+        return mTranslationX.get(index);
+    }
+
+    /**
+     * Returns the translation y for the provided index
+     */
+    public MultiProperty getTranslationY(int index) {
+        return mTranslationY.get(index);
+    }
+}
diff --git a/src/com/android/launcher3/util/MultiValueAlpha.java b/src/com/android/launcher3/util/MultiValueAlpha.java
index 11cd07c..ac016a8 100644
--- a/src/com/android/launcher3/util/MultiValueAlpha.java
+++ b/src/com/android/launcher3/util/MultiValueAlpha.java
@@ -16,61 +16,24 @@
 
 package com.android.launcher3.util;
 
-import android.animation.Animator;
-import android.animation.ObjectAnimator;
-import android.util.FloatProperty;
+import static com.android.launcher3.LauncherAnimUtils.VIEW_ALPHA;
+
 import android.view.View;
 
 import com.android.launcher3.anim.AlphaUpdateListener;
 
-import java.util.Arrays;
-import java.util.function.Consumer;
-
 /**
  * Utility class to handle separating a single value as a factor of multiple values
  */
-public class MultiValueAlpha {
+public class MultiValueAlpha extends MultiPropertyFactory<View> {
 
-    public static final FloatProperty<AlphaProperty> VALUE =
-            new FloatProperty<AlphaProperty>("value") {
+    private static final FloatBiFunction ALPHA_AGGREGATOR = (a, b) -> a * b;
 
-                @Override
-                public Float get(AlphaProperty alphaProperty) {
-                    return alphaProperty.mValue;
-                }
-
-                @Override
-                public void setValue(AlphaProperty object, float value) {
-                    object.setValue(value);
-                }
-            };
-
-    private final View mView;
-    private final AlphaProperty[] mMyProperties;
-
-    private int mValidMask;
     // Whether we should change from INVISIBLE to VISIBLE and vice versa at low alpha values.
     private boolean mUpdateVisibility;
 
     public MultiValueAlpha(View view, int size) {
-        mView = view;
-        mMyProperties = new AlphaProperty[size];
-
-        mValidMask = 0;
-        for (int i = 0; i < size; i++) {
-            int myMask = 1 << i;
-            mValidMask |= myMask;
-            mMyProperties[i] = new AlphaProperty(myMask);
-        }
-    }
-
-    @Override
-    public String toString() {
-        return Arrays.toString(mMyProperties);
-    }
-
-    public AlphaProperty getProperty(int index) {
-        return mMyProperties[index];
+        super(view, VIEW_ALPHA, size, ALPHA_AGGREGATOR, 1f);
     }
 
     /** Sets whether we should update between INVISIBLE and VISIBLE based on alpha. */
@@ -78,74 +41,11 @@
         mUpdateVisibility = updateVisibility;
     }
 
-    public class AlphaProperty {
-
-        private final int mMyMask;
-
-        private float mValue = 1;
-        // Factor of all other alpha channels, only valid if mMyMask is present in mValidMask.
-        private float mOthers = 1;
-
-        private Consumer<Float> mConsumer;
-
-        AlphaProperty(int myMask) {
-            mMyMask = myMask;
-        }
-
-        public void setValue(float value) {
-            if (mValue == value) {
-                return;
-            }
-
-            if ((mValidMask & mMyMask) == 0) {
-                // Our cache value is not correct, recompute it.
-                mOthers = 1;
-                for (AlphaProperty prop : mMyProperties) {
-                    if (prop != this) {
-                        mOthers *= prop.mValue;
-                    }
-                }
-            }
-
-            // Since we have changed our value, all other caches except our own need to be
-            // recomputed. Change mValidMask to indicate the new valid caches (only our own).
-            mValidMask = mMyMask;
-            mValue = value;
-
-            final float alpha = mOthers * mValue;
-            mView.setAlpha(alpha);
-            if (mUpdateVisibility) {
-                AlphaUpdateListener.updateVisibility(mView);
-            }
-            if (mConsumer != null) {
-                mConsumer.accept(mValue);
-            }
-        }
-
-        public float getValue() {
-            return mValue;
-        }
-
-        public void setConsumer(Consumer<Float> consumer) {
-            mConsumer = consumer;
-            if (mConsumer != null) {
-                mConsumer.accept(mValue);
-            }
-        }
-
-        @Override
-        public String toString() {
-            return Float.toString(mValue);
-        }
-
-        /**
-         * Creates and returns an Animator from the current value to the given value. Future
-         * animator on the same target automatically cancels the previous one.
-         */
-        public Animator animateToValue(float value) {
-            ObjectAnimator animator = ObjectAnimator.ofFloat(this, VALUE, value);
-            animator.setAutoCancel(true);
-            return animator;
+    @Override
+    protected void apply(float value) {
+        super.apply(value);
+        if (mUpdateVisibility) {
+            AlphaUpdateListener.updateVisibility(mTarget);
         }
     }
 }
diff --git a/src/com/android/launcher3/util/NavigationMode.java b/src/com/android/launcher3/util/NavigationMode.java
new file mode 100644
index 0000000..37dd41c
--- /dev/null
+++ b/src/com/android/launcher3/util/NavigationMode.java
@@ -0,0 +1,42 @@
+/*
+ * 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.launcher3.util;
+
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_NAVIGATION_MODE_2_BUTTON;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_NAVIGATION_MODE_3_BUTTON;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_NAVIGATION_MODE_GESTURE_BUTTON;
+
+import com.android.launcher3.logging.StatsLogManager;
+
+/**
+ * Navigation mode used in the device.
+ */
+public enum NavigationMode {
+    THREE_BUTTONS(false, 0, LAUNCHER_NAVIGATION_MODE_3_BUTTON),
+    TWO_BUTTONS(true, 1, LAUNCHER_NAVIGATION_MODE_2_BUTTON),
+    NO_BUTTON(true, 2, LAUNCHER_NAVIGATION_MODE_GESTURE_BUTTON);
+
+    public final boolean hasGestures;
+    public final int resValue;
+    public final StatsLogManager.LauncherEvent launcherEvent;
+
+    NavigationMode(boolean hasGestures, int resValue, StatsLogManager.LauncherEvent launcherEvent) {
+        this.hasGestures = hasGestures;
+        this.resValue = resValue;
+        this.launcherEvent = launcherEvent;
+    }
+}
diff --git a/src/com/android/launcher3/util/OnboardingPrefs.java b/src/com/android/launcher3/util/OnboardingPrefs.java
index f4cf21e..6573691 100644
--- a/src/com/android/launcher3/util/OnboardingPrefs.java
+++ b/src/com/android/launcher3/util/OnboardingPrefs.java
@@ -41,16 +41,17 @@
     public static final String SEARCH_KEYBOARD_EDU_SEEN = "launcher.search_edu_seen";
     public static final String SEARCH_SNACKBAR_COUNT = "launcher.keyboard_snackbar_count";
     public static final String SEARCH_ONBOARDING_COUNT = "launcher.search_onboarding_count";
-    public static final String TASKBAR_EDU_SEEN = "launcher.taskbar_edu_seen";
     public static final String ALL_APPS_VISITED_COUNT = "launcher.all_apps_visited_count";
+    public static final String QSB_SEARCH_ONBOARDING_CARD_DISMISSED = "launcher.qsb_edu_dismiss";
+    public static final String TASKBAR_EDU_TOOLTIP_STEP = "launcher.taskbar_edu_tooltip_step";
     // When adding a new key, add it here as well, to be able to reset it from Developer Options.
     public static final Map<String, String[]> ALL_PREF_KEYS = Map.of(
             "All Apps Bounce", new String[] { HOME_BOUNCE_SEEN, HOME_BOUNCE_COUNT },
             "Hybrid Hotseat Education", new String[] { HOTSEAT_DISCOVERY_TIP_COUNT,
                     HOTSEAT_LONGPRESS_TIP_SEEN },
             "Search Education", new String[] { SEARCH_KEYBOARD_EDU_SEEN, SEARCH_SNACKBAR_COUNT,
-                    SEARCH_ONBOARDING_COUNT},
-            "Taskbar Education", new String[] { TASKBAR_EDU_SEEN },
+                    SEARCH_ONBOARDING_COUNT, QSB_SEARCH_ONBOARDING_CARD_DISMISSED},
+            "Taskbar Education", new String[] { TASKBAR_EDU_TOOLTIP_STEP },
             "All Apps Visited Count", new String[] {ALL_APPS_VISITED_COUNT}
     );
 
@@ -61,7 +62,7 @@
             HOME_BOUNCE_SEEN,
             HOTSEAT_LONGPRESS_TIP_SEEN,
             SEARCH_KEYBOARD_EDU_SEEN,
-            TASKBAR_EDU_SEEN
+            QSB_SEARCH_ONBOARDING_CARD_DISMISSED
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface EventBoolKey {}
@@ -74,7 +75,8 @@
             HOTSEAT_DISCOVERY_TIP_COUNT,
             SEARCH_SNACKBAR_COUNT,
             SEARCH_ONBOARDING_COUNT,
-            ALL_APPS_VISITED_COUNT
+            ALL_APPS_VISITED_COUNT,
+            TASKBAR_EDU_TOOLTIP_STEP,
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface EventCountKey {}
@@ -89,6 +91,7 @@
         // This is the sum of all onboarding cards. Currently there is only 1 card shown 3 times.
         maxCounts.put(SEARCH_ONBOARDING_COUNT, 3);
         maxCounts.put(ALL_APPS_VISITED_COUNT, 20);
+        maxCounts.put(TASKBAR_EDU_TOOLTIP_STEP, 2);
         MAX_COUNTS = Collections.unmodifiableMap(maxCounts);
     }
 
diff --git a/src/com/android/launcher3/util/OverlayEdgeEffect.java b/src/com/android/launcher3/util/OverlayEdgeEffect.java
index 8d455c6..2ef1e1f 100644
--- a/src/com/android/launcher3/util/OverlayEdgeEffect.java
+++ b/src/com/android/launcher3/util/OverlayEdgeEffect.java
@@ -27,17 +27,15 @@
  */
 public class OverlayEdgeEffect extends EdgeEffectCompat {
 
-    private final LauncherOverlay mOverlay;
-    private final boolean mIsRtl;
-
-    private float mDistance;
-    private boolean mIsScrolling;
+    protected float mDistance;
+    protected final LauncherOverlay mOverlay;
+    protected boolean mIsScrolling;
+    protected final boolean mIsRtl;
 
     public OverlayEdgeEffect(Context context, LauncherOverlay overlay) {
         super(context);
         mOverlay = overlay;
         mIsRtl = Utilities.isRtl(context.getResources());
-
     }
 
     @Override
diff --git a/src/com/android/launcher3/util/PackageManagerHelper.java b/src/com/android/launcher3/util/PackageManagerHelper.java
index 557d57e..1d6bc25 100644
--- a/src/com/android/launcher3/util/PackageManagerHelper.java
+++ b/src/com/android/launcher3/util/PackageManagerHelper.java
@@ -16,14 +16,10 @@
 
 package com.android.launcher3.util;
 
-import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY;
-
-import android.app.AppOpsManager;
 import android.content.ActivityNotFoundException;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
-import android.content.IntentFilter;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.LauncherActivityInfo;
 import android.content.pm.LauncherApps;
@@ -31,18 +27,17 @@
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.pm.ResolveInfo;
-import android.content.res.Resources;
 import android.graphics.Rect;
 import android.net.Uri;
-import android.os.Build;
 import android.os.Bundle;
-import android.os.PatternMatcher;
 import android.os.UserHandle;
 import android.text.TextUtils;
 import android.util.Log;
-import android.util.Pair;
 import android.widget.Toast;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.launcher3.PendingAddItemInfo;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
@@ -54,6 +49,7 @@
 
 import java.net.URISyntaxException;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * Utility methods using package manager
@@ -62,22 +58,28 @@
 
     private static final String TAG = "PackageManagerHelper";
 
+    @NonNull
     private final Context mContext;
+
+    @NonNull
     private final PackageManager mPm;
+
+    @NonNull
     private final LauncherApps mLauncherApps;
 
-    public PackageManagerHelper(Context context) {
+    public PackageManagerHelper(@NonNull final Context context) {
         mContext = context;
         mPm = context.getPackageManager();
-        mLauncherApps = context.getSystemService(LauncherApps.class);
+        mLauncherApps = Objects.requireNonNull(context.getSystemService(LauncherApps.class));
     }
 
     /**
      * Returns true if the app can possibly be on the SDCard. This is just a workaround and doesn't
      * guarantee that the app is on SD card.
      */
-    public boolean isAppOnSdcard(String packageName, UserHandle user) {
-        ApplicationInfo info = getApplicationInfo(
+    public boolean isAppOnSdcard(@NonNull final String packageName,
+            @NonNull final UserHandle user) {
+        final ApplicationInfo info = getApplicationInfo(
                 packageName, user, PackageManager.MATCH_UNINSTALLED_PACKAGES);
         return info != null && (info.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0;
     }
@@ -86,23 +88,27 @@
      * Returns whether the target app is suspended for a given user as per
      * {@link android.app.admin.DevicePolicyManager#isPackageSuspended}.
      */
-    public boolean isAppSuspended(String packageName, UserHandle user) {
-        ApplicationInfo info = getApplicationInfo(packageName, user, 0);
+    public boolean isAppSuspended(@NonNull final String packageName,
+            @NonNull final UserHandle user) {
+        final ApplicationInfo info = getApplicationInfo(packageName, user, 0);
         return info != null && isAppSuspended(info);
     }
 
     /**
      * Returns whether the target app is installed for a given user
      */
-    public boolean isAppInstalled(String packageName, UserHandle user) {
-        ApplicationInfo info = getApplicationInfo(packageName, user, 0);
+    public boolean isAppInstalled(@NonNull final String packageName,
+            @NonNull final UserHandle user) {
+        final ApplicationInfo info = getApplicationInfo(packageName, user, 0);
         return info != null;
     }
 
     /**
      * Returns the application info for the provided package or null
      */
-    public ApplicationInfo getApplicationInfo(String packageName, UserHandle user, int flags) {
+    @Nullable
+    public ApplicationInfo getApplicationInfo(@NonNull final String packageName,
+            @NonNull final UserHandle user, final int flags) {
         try {
             ApplicationInfo info = mLauncherApps.getApplicationInfo(packageName, flags, user);
             return (info.flags & ApplicationInfo.FLAG_INSTALLED) == 0 || !info.enabled
@@ -116,7 +122,8 @@
         return mPm.isSafeMode();
     }
 
-    public Intent getAppLaunchIntent(String pkg, UserHandle user) {
+    @Nullable
+    public Intent getAppLaunchIntent(@Nullable final String pkg, @NonNull final UserHandle user) {
         List<LauncherActivityInfo> activities = mLauncherApps.getActivityList(pkg, user);
         return activities.isEmpty() ? null :
                 AppInfo.makeLaunchIntent(activities.get(0));
@@ -130,60 +137,6 @@
         return (info.flags & ApplicationInfo.FLAG_SUSPENDED) != 0;
     }
 
-    /**
-     * Returns true if {@param srcPackage} has the permission required to start the activity from
-     * {@param intent}. If {@param srcPackage} is null, then the activity should not need
-     * any permissions
-     */
-    public boolean hasPermissionForActivity(Intent intent, String srcPackage) {
-        // b/270152142
-        if (Intent.ACTION_CHOOSER.equals(intent.getAction())) {
-            final Bundle extras = intent.getExtras();
-            if (extras == null) {
-                return true;
-            }
-            // If given intent is ACTION_CHOOSER, verify srcPackage has permission over EXTRA_INTENT
-            intent = (Intent) extras.getParcelable(Intent.EXTRA_INTENT);
-            if (intent == null) {
-                return true;
-            }
-        }
-        ResolveInfo target = mPm.resolveActivity(intent, 0);
-        if (target == null) {
-            // Not a valid target
-            return false;
-        }
-        if (TextUtils.isEmpty(target.activityInfo.permission)) {
-            // No permission is needed
-            return true;
-        }
-        if (TextUtils.isEmpty(srcPackage)) {
-            // The activity requires some permission but there is no source.
-            return false;
-        }
-
-        // Source does not have sufficient permissions.
-        if(mPm.checkPermission(target.activityInfo.permission, srcPackage) !=
-                PackageManager.PERMISSION_GRANTED) {
-            return false;
-        }
-
-        // On M and above also check AppOpsManager for compatibility mode permissions.
-        if (TextUtils.isEmpty(AppOpsManager.permissionToOp(target.activityInfo.permission))) {
-            // There is no app-op for this permission, which could have been disabled.
-            return true;
-        }
-
-        // There is no direct way to check if the app-op is allowed for a particular app. Since
-        // app-op is only enabled for apps running in compatibility mode, simply block such apps.
-
-        try {
-            return mPm.getApplicationInfo(srcPackage, 0).targetSdkVersion >= Build.VERSION_CODES.M;
-        } catch (NameNotFoundException e) { }
-
-        return false;
-    }
-
     public Intent getMarketIntent(String packageName) {
         return new Intent(Intent.ACTION_VIEW)
                 .setData(new Uri.Builder()
@@ -250,20 +203,8 @@
         }
     }
 
-    /**
-     * Creates an intent filter to listen for actions with a specific package in the data field.
-     */
-    public static IntentFilter getPackageFilter(String pkg, String... actions) {
-        IntentFilter packageFilter = new IntentFilter();
-        for (String action : actions) {
-            packageFilter.addAction(action);
-        }
-        packageFilter.addDataScheme("package");
-        packageFilter.addDataSchemeSpecificPart(pkg, PatternMatcher.PATTERN_LITERAL);
-        return packageFilter;
-    }
-
-    public static boolean isSystemApp(Context context, Intent intent) {
+    public static boolean isSystemApp(@NonNull final Context context,
+            @NonNull final Intent intent) {
         PackageManager pm = context.getPackageManager();
         ComponentName cn = intent.getComponent();
         String packageName = null;
@@ -292,25 +233,6 @@
     }
 
     /**
-     * Finds a system apk which had a broadcast receiver listening to a particular action.
-     * @param action intent action used to find the apk
-     * @return a pair of apk package name and the resources.
-     */
-    public static Pair<String, Resources> findSystemApk(String action, PackageManager pm) {
-        final Intent intent = new Intent(action);
-        for (ResolveInfo info : pm.queryBroadcastReceivers(intent, MATCH_SYSTEM_ONLY)) {
-            final String packageName = info.activityInfo.packageName;
-            try {
-                final Resources res = pm.getResourcesForApplication(packageName);
-                return Pair.create(packageName, res);
-            } catch (NameNotFoundException e) {
-                Log.w(TAG, "Failed to find resources for " + packageName);
-            }
-        }
-        return null;
-    }
-
-    /**
      * Returns true if the intent is a valid launch intent for a launcher activity of an app.
      * This is used to identify shortcuts which are different from the ones exposed by the
      * applications' manifest file.
diff --git a/src/com/android/launcher3/util/Partner.java b/src/com/android/launcher3/util/Partner.java
new file mode 100644
index 0000000..220ab56
--- /dev/null
+++ b/src/com/android/launcher3/util/Partner.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2014 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.launcher3.util;
+
+import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY;
+
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.pm.ResolveInfo;
+import android.content.res.Resources;
+import android.util.Log;
+import android.util.Pair;
+
+/**
+ * Utilities to discover and interact with partner customizations. There can
+ * only be one set of customizations on a device, and it must be bundled with
+ * the system.
+ */
+public class Partner {
+
+    static final String TAG = "Launcher.Partner";
+
+    /** Marker action used to discover partner */
+    private static final String
+            ACTION_PARTNER_CUSTOMIZATION = "com.android.launcher3.action.PARTNER_CUSTOMIZATION";
+
+    /**
+     * Find and return partner details, or {@code null} if none exists.
+     */
+    public static Partner get(PackageManager pm) {
+        return get(pm, ACTION_PARTNER_CUSTOMIZATION);
+    }
+
+    /**
+     * Find and return partner details, or {@code null} if none exists.
+     */
+    public static Partner get(PackageManager pm, String action) {
+        Pair<String, Resources> apkInfo = findSystemApk(action, pm);
+        return apkInfo != null ? new Partner(apkInfo.first, apkInfo.second) : null;
+    }
+
+    private final String mPackageName;
+    private final Resources mResources;
+
+    private Partner(String packageName, Resources res) {
+        mPackageName = packageName;
+        mResources = res;
+    }
+
+    public String getPackageName() {
+        return mPackageName;
+    }
+
+    public Resources getResources() {
+        return mResources;
+    }
+
+    /**
+     * Returns the xml resource Id for the provided name, or 0 is the resource is not found
+     */
+    public int getXmlResId(String layoutName) {
+        return getResources().getIdentifier(layoutName, "xml", getPackageName());
+    }
+
+    /**
+     * Returns the integer resource value for the provided resource name,
+     * or default value if the resource name is not present
+     */
+    public int getIntValue(String resName, int defaultValue) {
+        int resId = getResources().getIdentifier(resName, "integer", getPackageName());
+        return resId > 0 ? getResources().getInteger(resId) : defaultValue;
+    }
+
+    /**
+     * Returns the dimension value for the provided resource name,
+     * or default value if the resource name is not present
+     */
+    public float getDimenValue(String resName, int defaultValue) {
+        int resId = getResources().getIdentifier(resName, "dimen", getPackageName());
+        return resId > 0 ? getResources().getDimension(resId) : defaultValue;
+    }
+
+    /**
+     * Finds a system apk which had a broadcast receiver listening to a particular action.
+     * @param action intent action used to find the apk
+     * @return a pair of apk package name and the resources.
+     */
+    private static Pair<String, Resources> findSystemApk(String action, PackageManager pm) {
+        final Intent intent = new Intent(action);
+        for (ResolveInfo info : pm.queryBroadcastReceivers(intent, MATCH_SYSTEM_ONLY)) {
+            final String packageName = info.activityInfo.packageName;
+            try {
+                final Resources res = pm.getResourcesForApplication(packageName);
+                return Pair.create(packageName, res);
+            } catch (NameNotFoundException e) {
+                Log.w(TAG, "Failed to find resources for " + packageName);
+            }
+        }
+        return null;
+    }
+}
diff --git a/src/com/android/launcher3/util/PendingSplitSelectInfo.java b/src/com/android/launcher3/util/PendingSplitSelectInfo.java
new file mode 100644
index 0000000..58c3be5
--- /dev/null
+++ b/src/com/android/launcher3/util/PendingSplitSelectInfo.java
@@ -0,0 +1,52 @@
+/*
+ * 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.launcher3.util;
+
+import com.android.launcher3.logging.StatsLogManager;
+import com.android.launcher3.util.SplitConfigurationOptions.StagePosition;
+
+/**
+ * Utility class to store information regarding a split select request. This includes the taskId of
+ * the originating task, plus the stage position.
+ * This information is intended to be saved across launcher instances, e.g. when Launcher needs to
+ * recover straight into a split select state.
+ */
+public class PendingSplitSelectInfo {
+
+    private final int mStagedTaskId;
+    private final int mStagePosition;
+    private final StatsLogManager.EventEnum mSource;
+
+    public PendingSplitSelectInfo(int stagedTaskId, int stagePosition,
+            StatsLogManager.EventEnum source) {
+        this.mStagedTaskId = stagedTaskId;
+        this.mStagePosition = stagePosition;
+        this.mSource = source;
+    }
+
+    public int getStagedTaskId() {
+        return mStagedTaskId;
+    }
+
+    public @StagePosition int getStagePosition() {
+        return mStagePosition;
+    }
+
+    public StatsLogManager.EventEnum getSource() {
+        return mSource;
+    }
+}
diff --git a/src/com/android/launcher3/util/ResourceHelper.kt b/src/com/android/launcher3/util/ResourceHelper.kt
new file mode 100644
index 0000000..0ca7888
--- /dev/null
+++ b/src/com/android/launcher3/util/ResourceHelper.kt
@@ -0,0 +1,37 @@
+/*
+ * 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.launcher3.util
+
+import android.content.Context
+import android.content.res.TypedArray
+import android.content.res.XmlResourceParser
+import android.util.AttributeSet
+import kotlin.IntArray
+
+/**
+ * This class is a helper that can be subclassed in tests to provide a way to parse attributes
+ * correctly.
+ */
+open class ResourceHelper(private val context: Context, private val specsFileId: Int) {
+    open fun getXml(): XmlResourceParser {
+        return context.resources.getXml(specsFileId)
+    }
+
+    open fun obtainStyledAttributes(attrs: AttributeSet, styleId: IntArray): TypedArray {
+        return context.obtainStyledAttributes(attrs, styleId)
+    }
+}
diff --git a/src/com/android/launcher3/util/ScreenOnTracker.java b/src/com/android/launcher3/util/ScreenOnTracker.java
new file mode 100644
index 0000000..67530a6
--- /dev/null
+++ b/src/com/android/launcher3/util/ScreenOnTracker.java
@@ -0,0 +1,93 @@
+/*
+ * 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.launcher3.util;
+
+import static android.content.Intent.ACTION_SCREEN_OFF;
+import static android.content.Intent.ACTION_SCREEN_ON;
+import static android.content.Intent.ACTION_USER_PRESENT;
+
+import android.content.Context;
+import android.content.Intent;
+
+import java.util.concurrent.CopyOnWriteArrayList;
+
+/**
+ * Utility class for tracking if the screen is currently on or off
+ */
+public class ScreenOnTracker {
+
+    public static final MainThreadInitializedObject<ScreenOnTracker> INSTANCE =
+            new MainThreadInitializedObject<>(ScreenOnTracker::new);
+
+    private final SimpleBroadcastReceiver mReceiver = new SimpleBroadcastReceiver(this::onReceive);
+    private final CopyOnWriteArrayList<ScreenOnListener> mListeners = new CopyOnWriteArrayList<>();
+
+    private boolean mIsScreenOn;
+
+    private ScreenOnTracker(Context context) {
+        // Assume that the screen is on to begin with
+        mIsScreenOn = true;
+        mReceiver.register(context, ACTION_SCREEN_ON, ACTION_SCREEN_OFF, ACTION_USER_PRESENT);
+    }
+
+    private void onReceive(Intent intent) {
+        String action = intent.getAction();
+        if (ACTION_SCREEN_ON.equals(action)) {
+            mIsScreenOn = true;
+            dispatchScreenOnChanged();
+        } else if (ACTION_SCREEN_OFF.equals(action)) {
+            mIsScreenOn = false;
+            dispatchScreenOnChanged();
+        } else if (ACTION_USER_PRESENT.equals(action)) {
+            mListeners.forEach(ScreenOnListener::onUserPresent);
+        }
+    }
+
+    private void dispatchScreenOnChanged() {
+        mListeners.forEach(l -> l.onScreenOnChanged(mIsScreenOn));
+    }
+
+    /** Returns if the screen is on or not */
+    public boolean isScreenOn() {
+        return mIsScreenOn;
+    }
+
+    /** Adds a listener for screen on changes */
+    public void addListener(ScreenOnListener listener) {
+        mListeners.add(listener);
+    }
+
+    /** Removes a previously added listener */
+    public void removeListener(ScreenOnListener listener) {
+        mListeners.remove(listener);
+    }
+
+    /**
+     * Interface to listen for screen on changes
+     */
+    public interface ScreenOnListener {
+
+        /**
+         * Called when the screen turns on/off
+         */
+        void onScreenOnChanged(boolean isOn);
+
+        /**
+         * Called when the keyguard goes away
+         */
+        default void onUserPresent() { }
+    }
+}
diff --git a/src/com/android/launcher3/util/ScrollableLayoutManager.java b/src/com/android/launcher3/util/ScrollableLayoutManager.java
new file mode 100644
index 0000000..29c277c
--- /dev/null
+++ b/src/com/android/launcher3/util/ScrollableLayoutManager.java
@@ -0,0 +1,200 @@
+/*
+ * 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.launcher3.util;
+
+import android.content.Context;
+import android.util.SparseIntArray;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Px;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.Adapter;
+import androidx.recyclerview.widget.RecyclerView.State;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+
+/**
+ * Extension of {@link GridLayoutManager} with support for smooth scrolling
+ */
+public class ScrollableLayoutManager extends GridLayoutManager {
+
+    public static final float PREDICTIVE_BACK_MIN_SCALE = 0.9f;
+    public static final float EXTRA_BOTTOM_SPACE_BY_HEIGHT_PERCENT =
+            (1 - PREDICTIVE_BACK_MIN_SCALE) / 2;
+
+    // keyed on item type
+    protected final SparseIntArray mCachedSizes = new SparseIntArray();
+
+    private RecyclerView mRv;
+
+    /**
+     * Precalculated total height keyed on the item position. This is always incremental.
+     * Subclass can override {@link #incrementTotalHeight} to incorporate the layout logic.
+     * For example all-apps should have same values for items in same row,
+     *     sample values: 0, 10, 10, 10, 10, 20, 20, 20, 20
+     * whereas widgets will have strictly increasing values
+     *     sample values: 0, 10, 50, 60, 110
+     */
+    private int[] mTotalHeightCache = new int[1];
+    private int mLastValidHeightIndex = 0;
+
+    public ScrollableLayoutManager(Context context) {
+        super(context, 1, GridLayoutManager.VERTICAL, false);
+    }
+
+    @Override
+    public void onAttachedToWindow(RecyclerView view) {
+        super.onAttachedToWindow(view);
+        mRv = view;
+    }
+
+    @Override
+    public void layoutDecorated(@NonNull View child, int left, int top, int right, int bottom) {
+        super.layoutDecorated(child, left, top, right, bottom);
+        updateCachedSize(child);
+    }
+
+    @Override
+    public void layoutDecoratedWithMargins(@NonNull View child, int left, int top, int right,
+            int bottom) {
+        super.layoutDecoratedWithMargins(child, left, top, right, bottom);
+        updateCachedSize(child);
+    }
+
+    private void updateCachedSize(@NonNull View child) {
+        int viewType = mRv.getChildViewHolder(child).getItemViewType();
+        int size = child.getMeasuredHeight();
+        if (mCachedSizes.get(viewType, -1) != size) {
+            invalidateScrollCache();
+        }
+        mCachedSizes.put(viewType, size);
+    }
+
+    @Override
+    public int computeVerticalScrollExtent(State state) {
+        return mRv == null ? 0 : mRv.getHeight();
+    }
+
+    @Override
+    public int computeVerticalScrollOffset(State state) {
+        Adapter adapter = mRv == null ? null : mRv.getAdapter();
+        if (adapter == null) {
+            return 0;
+        }
+        if (adapter.getItemCount() == 0 || getChildCount() == 0) {
+            return 0;
+        }
+        View child = getChildAt(0);
+        ViewHolder holder = mRv.findContainingViewHolder(child);
+        if (holder == null) {
+            return 0;
+        }
+        int itemPosition = holder.getLayoutPosition();
+        if (itemPosition < 0) {
+            return 0;
+        }
+        return getPaddingTop() + getItemsHeight(adapter, itemPosition) - getDecoratedTop(child);
+    }
+
+    @Override
+    public int computeVerticalScrollRange(State state) {
+        Adapter adapter = mRv == null ? null : mRv.getAdapter();
+        return adapter == null ? 0 : getItemsHeight(adapter, adapter.getItemCount());
+    }
+
+    @Override
+    protected void calculateExtraLayoutSpace(RecyclerView.State state, int[] extraLayoutSpace) {
+        super.calculateExtraLayoutSpace(state, extraLayoutSpace);
+        @Px int extraSpacePx = (int) (getHeight() * EXTRA_BOTTOM_SPACE_BY_HEIGHT_PERCENT);
+        extraLayoutSpace[1] = Math.max(extraLayoutSpace[1], extraSpacePx);
+    }
+
+    /**
+     * Returns the sum of the height, in pixels, of this list adapter's items from index
+     * 0 (inclusive) until {@code untilIndex} (exclusive). If untilIndex is same as the itemCount,
+     * it returns the full height of all the items.
+     *
+     * <p>If the untilIndex is larger than the total number of items in this adapter, returns the
+     * sum of all items' height.
+     */
+    private int getItemsHeight(Adapter adapter, int untilIndex) {
+        final int totalItems = adapter.getItemCount();
+        if (mTotalHeightCache.length < (totalItems + 1)) {
+            mTotalHeightCache = new int[totalItems + 1];
+            mLastValidHeightIndex = 0;
+        }
+        if (untilIndex > totalItems) {
+            untilIndex = totalItems;
+        } else if (untilIndex < 0) {
+            untilIndex = 0;
+        }
+        if (untilIndex <= mLastValidHeightIndex) {
+            return mTotalHeightCache[untilIndex];
+        }
+
+        int totalItemsHeight = mTotalHeightCache[mLastValidHeightIndex];
+        for (int i = mLastValidHeightIndex; i < untilIndex; i++) {
+            totalItemsHeight = incrementTotalHeight(adapter, i, totalItemsHeight);
+            mTotalHeightCache[i + 1] = totalItemsHeight;
+        }
+        mLastValidHeightIndex = untilIndex;
+        return totalItemsHeight;
+    }
+
+    /**
+     * The current implementation assumes a linear list with every item taking up the whole row.
+     * Subclasses should override this method to account for any spanning logic
+     */
+    protected int incrementTotalHeight(Adapter adapter, int position, int heightUntilLastPos) {
+        return heightUntilLastPos + mCachedSizes.get(adapter.getItemViewType(position));
+    }
+
+    private void invalidateScrollCache() {
+        mLastValidHeightIndex = 0;
+    }
+
+    @Override
+    public void onItemsAdded(RecyclerView recyclerView, int positionStart, int itemCount) {
+        super.onItemsAdded(recyclerView, positionStart, itemCount);
+        invalidateScrollCache();
+    }
+
+    @Override
+    public void onItemsChanged(RecyclerView recyclerView) {
+        super.onItemsChanged(recyclerView);
+        invalidateScrollCache();
+    }
+
+    @Override
+    public void onItemsRemoved(RecyclerView recyclerView, int positionStart, int itemCount) {
+        super.onItemsRemoved(recyclerView, positionStart, itemCount);
+        invalidateScrollCache();
+    }
+
+    @Override
+    public void onItemsMoved(RecyclerView recyclerView, int from, int to, int itemCount) {
+        super.onItemsMoved(recyclerView, from, to, itemCount);
+        invalidateScrollCache();
+    }
+
+    @Override
+    public void onItemsUpdated(RecyclerView recyclerView, int positionStart, int itemCount,
+            Object payload) {
+        super.onItemsUpdated(recyclerView, positionStart, itemCount, payload);
+        invalidateScrollCache();
+    }
+}
diff --git a/src/com/android/launcher3/util/SimpleBroadcastReceiver.java b/src/com/android/launcher3/util/SimpleBroadcastReceiver.java
index 4dfa5cc..064bcd0 100644
--- a/src/com/android/launcher3/util/SimpleBroadcastReceiver.java
+++ b/src/com/android/launcher3/util/SimpleBroadcastReceiver.java
@@ -19,6 +19,10 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.os.PatternMatcher;
+import android.text.TextUtils;
+
+import androidx.annotation.Nullable;
 
 import java.util.function.Consumer;
 
@@ -39,17 +43,44 @@
      * Helper method to register multiple actions
      */
     public void register(Context context, String... actions) {
-        register(context, 0, actions);
+        context.registerReceiver(this, getFilter(actions));
     }
 
     /**
-     * Helper method to register multiple actions with one or more {@code flags}.
+     * Helper method to register multiple actions associated with a paction
      */
-    public void register(Context context, int flags, String... actions) {
+    public void registerPkgActions(Context context, @Nullable String pkg, String... actions) {
+        context.registerReceiver(this, getPackageFilter(pkg, actions));
+    }
+
+    /**
+     * Creates an intent filter to listen for actions with a specific package in the data field.
+     */
+    public static IntentFilter getPackageFilter(String pkg, String... actions) {
+        IntentFilter filter = getFilter(actions);
+        filter.addDataScheme("package");
+        if (!TextUtils.isEmpty(pkg)) {
+            filter.addDataSchemeSpecificPart(pkg, PatternMatcher.PATTERN_LITERAL);
+        }
+        return filter;
+    }
+
+    private static IntentFilter getFilter(String... actions) {
         IntentFilter filter = new IntentFilter();
         for (String action : actions) {
             filter.addAction(action);
         }
-        context.registerReceiver(this, filter, flags);
+        return filter;
+    }
+
+    /**
+     * Unregisters the receiver ignoring any errors
+     */
+    public void unregisterReceiverSafely(Context context) {
+        try {
+            context.unregisterReceiver(this);
+        } catch (IllegalArgumentException e) {
+            // It was probably never registered or already unregistered. Ignore.
+        }
     }
 }
diff --git a/src/com/android/launcher3/util/SplitConfigurationOptions.java b/src/com/android/launcher3/util/SplitConfigurationOptions.java
index 6a336cc..1ae43d0 100644
--- a/src/com/android/launcher3/util/SplitConfigurationOptions.java
+++ b/src/com/android/launcher3/util/SplitConfigurationOptions.java
@@ -16,12 +16,21 @@
 
 package com.android.launcher3.util;
 
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_APP_ICON_MENU_SPLIT_LEFT_TOP;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_APP_ICON_MENU_SPLIT_RIGHT_BOTTOM;
+
 import static java.lang.annotation.RetentionPolicy.SOURCE;
 
+import android.content.Intent;
 import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+import android.view.View;
 
 import androidx.annotation.IntDef;
 
+import com.android.launcher3.logging.StatsLogManager;
+import com.android.launcher3.model.data.ItemInfo;
+
 import java.lang.annotation.Retention;
 
 public final class SplitConfigurationOptions {
@@ -95,8 +104,9 @@
      * with the same name/functionality in wm.shell.util (which launcher3 cannot be built against)
      *
      * If you make changes here, consider making the same changes there
+     * TODO(b/254378592): We really need to consolidate this
      */
-    public static class StagedSplitBounds {
+    public static class SplitBounds {
         public final Rect leftTopBounds;
         public final Rect rightBottomBounds;
         /** This rect represents the actual gap between the two apps */
@@ -124,7 +134,7 @@
         public final int leftTopTaskId;
         public final int rightBottomTaskId;
 
-        public StagedSplitBounds(Rect leftTopBounds, Rect rightBottomBounds, int leftTopTaskId,
+        public SplitBounds(Rect leftTopBounds, Rect rightBottomBounds, int leftTopTaskId,
                 int rightBottomTaskId) {
             this.leftTopBounds = leftTopBounds;
             this.rightBottomBounds = rightBottomBounds;
@@ -163,11 +173,64 @@
         }
     }
 
-    public static class StagedSplitTaskPosition {
+    public static class SplitStageInfo {
         public int taskId = -1;
         @StagePosition
         public int stagePosition = STAGE_POSITION_UNDEFINED;
         @StageType
         public int stageType = STAGE_TYPE_UNDEFINED;
     }
+
+    public static StatsLogManager.EventEnum getLogEventForPosition(@StagePosition int position) {
+        return position == STAGE_POSITION_TOP_OR_LEFT
+                ? LAUNCHER_APP_ICON_MENU_SPLIT_LEFT_TOP
+                : LAUNCHER_APP_ICON_MENU_SPLIT_RIGHT_BOTTOM;
+    }
+
+    public static @StagePosition int getOppositeStagePosition(@StagePosition int position) {
+        if (position == STAGE_POSITION_UNDEFINED) {
+            return position;
+        }
+        return position == STAGE_POSITION_TOP_OR_LEFT ? STAGE_POSITION_BOTTOM_OR_RIGHT
+                : STAGE_POSITION_TOP_OR_LEFT;
+    }
+
+    public static class SplitSelectSource {
+
+        /** Keep in sync w/ ActivityTaskManager#INVALID_TASK_ID (unreference-able) */
+        private static final int INVALID_TASK_ID = -1;
+
+        private View view;
+        private Drawable drawable;
+        public final Intent intent;
+        public final SplitPositionOption position;
+        public final ItemInfo itemInfo;
+        public final StatsLogManager.EventEnum splitEvent;
+        /** Represents the taskId of the first app to start in split screen */
+        public int alreadyRunningTaskId = INVALID_TASK_ID;
+        /**
+         * If {@code true}, animates the view represented by {@link #alreadyRunningTaskId} into the
+         * split placeholder view
+         */
+        public boolean animateCurrentTaskDismissal;
+
+        public SplitSelectSource(View view, Drawable drawable, Intent intent,
+                SplitPositionOption position, ItemInfo itemInfo,
+                StatsLogManager.EventEnum splitEvent) {
+            this.view = view;
+            this.drawable = drawable;
+            this.intent = intent;
+            this.position = position;
+            this.itemInfo = itemInfo;
+            this.splitEvent = splitEvent;
+        }
+
+        public Drawable getDrawable() {
+            return drawable;
+        }
+
+        public View getView() {
+            return view;
+        }
+    }
 }
diff --git a/src/com/android/launcher3/util/SystemUiController.java b/src/com/android/launcher3/util/SystemUiController.java
index 630df7e..df54fd7 100644
--- a/src/com/android/launcher3/util/SystemUiController.java
+++ b/src/com/android/launcher3/util/SystemUiController.java
@@ -19,6 +19,10 @@
 import android.view.View;
 import android.view.Window;
 
+import androidx.annotation.IntDef;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.util.Arrays;
 
 /**
@@ -31,13 +35,25 @@
     public static final int UI_STATE_SCRIM_VIEW = 1;
     public static final int UI_STATE_WIDGET_BOTTOM_SHEET = 2;
     public static final int UI_STATE_FULLSCREEN_TASK = 3;
-    public static final int UI_STATE_ALLAPPS = 4;
+    public static final int UI_STATE_ALL_APPS = 4;
 
     public static final int FLAG_LIGHT_NAV = 1 << 0;
     public static final int FLAG_DARK_NAV = 1 << 1;
     public static final int FLAG_LIGHT_STATUS = 1 << 2;
     public static final int FLAG_DARK_STATUS = 1 << 3;
 
+    /**
+     * Security type based on WifiConfiguration.KeyMgmt
+     */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(flag = true, value = {
+            FLAG_LIGHT_NAV,
+            FLAG_DARK_NAV,
+            FLAG_LIGHT_STATUS,
+            FLAG_DARK_STATUS,
+    })
+    public @interface SystemUiControllerFlags {}
+
     private final Window mWindow;
     private final int[] mStates = new int[5];
 
@@ -50,7 +66,7 @@
                 ? (FLAG_LIGHT_NAV | FLAG_LIGHT_STATUS) : (FLAG_DARK_NAV | FLAG_DARK_STATUS));
     }
 
-    public void updateUiState(int uiState, int flags) {
+    public void updateUiState(int uiState, @SystemUiControllerFlags int flags) {
         if (mStates[uiState] == flags) {
             return;
         }
diff --git a/src/com/android/launcher3/util/Themes.java b/src/com/android/launcher3/util/Themes.java
index 53a584d..a5c663f 100644
--- a/src/com/android/launcher3/util/Themes.java
+++ b/src/com/android/launcher3/util/Themes.java
@@ -19,6 +19,8 @@
 import static android.app.WallpaperColors.HINT_SUPPORTS_DARK_TEXT;
 import static android.app.WallpaperColors.HINT_SUPPORTS_DARK_THEME;
 
+import static com.android.launcher3.LauncherPrefs.THEMED_ICONS;
+
 import android.app.WallpaperColors;
 import android.app.WallpaperManager;
 import android.content.Context;
@@ -30,10 +32,13 @@
 import android.util.SparseArray;
 import android.util.TypedValue;
 
+import androidx.annotation.ColorInt;
+
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
-import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.icons.GraphicsUtils;
+import com.android.launcher3.views.ActivityContext;
 
 /**
  * Various utility methods associated with theming.
@@ -74,8 +79,7 @@
      * Returns true if workspace icon theming is enabled
      */
     public static boolean isThemedIconEnabled(Context context) {
-        return FeatureFlags.ENABLE_THEMED_ICONS.get()
-                && Utilities.getPrefs(context).getBoolean(KEY_THEMED_ICONS, false);
+        return LauncherPrefs.get(context).get(THEMED_ICONS);
     }
 
     public static String getDefaultBodyFont(Context context) {
@@ -197,4 +201,12 @@
 
         return result;
     }
+
+    /** Returns the desired navigation bar scrim color depending on the {@code DeviceProfile}. */
+    @ColorInt
+    public static <T extends Context & ActivityContext> int getNavBarScrimColor(T context) {
+        return context.getDeviceProfile().isTaskbarPresent
+                ? context.getColor(R.color.taskbar_background)
+                : Themes.getAttrColor(context, R.attr.allAppsNavBarScrimColor);
+    }
 }
diff --git a/src/com/android/launcher3/util/TouchController.java b/src/com/android/launcher3/util/TouchController.java
index 9c397c0..fc1d819 100644
--- a/src/com/android/launcher3/util/TouchController.java
+++ b/src/com/android/launcher3/util/TouchController.java
@@ -32,10 +32,5 @@
      */
     boolean onControllerInterceptTouchEvent(MotionEvent ev);
 
-    /**
-     * Called when one handed mode state changed
-     */
-    default void onOneHandedModeStateChanged(boolean activated) { }
-
     default void dump(String prefix, PrintWriter writer) { }
 }
diff --git a/src/com/android/launcher3/util/TouchUtil.java b/src/com/android/launcher3/util/TouchUtil.java
new file mode 100644
index 0000000..b18a2ef
--- /dev/null
+++ b/src/com/android/launcher3/util/TouchUtil.java
@@ -0,0 +1,37 @@
+/*
+ * 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.launcher3.util;
+
+import android.view.InputDevice;
+import android.view.MotionEvent;
+
+import androidx.annotation.NonNull;
+
+/** Util class for touch event. */
+public final class TouchUtil {
+
+    private TouchUtil() {}
+
+    /**
+     * Detect ACTION_DOWN or ACTION_MOVE from mouse right button. Note that we cannot detect
+     * ACTION_UP from mouse's right button because, in that case,
+     * {@link MotionEvent#getButtonState()} returns 0 for any mouse button (right, middle, right).
+     */
+    public static boolean isMouseRightClickDownOrMove(@NonNull MotionEvent event) {
+        return event.isFromSource(InputDevice.SOURCE_MOUSE)
+                && ((event.getButtonState() & MotionEvent.BUTTON_SECONDARY) != 0);
+    }
+}
diff --git a/src/com/android/launcher3/util/UiThreadHelper.java b/src/com/android/launcher3/util/UiThreadHelper.java
deleted file mode 100644
index 7e6711f..0000000
--- a/src/com/android/launcher3/util/UiThreadHelper.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * 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.launcher3.util;
-
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_KEYBOARD_CLOSED;
-import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Context;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.Message;
-import android.util.Log;
-import android.view.View;
-import android.view.WindowInsets;
-import android.view.WindowInsetsController;
-import android.view.inputmethod.InputMethodManager;
-
-import com.android.launcher3.Utilities;
-import com.android.launcher3.views.ActivityContext;
-
-/**
- * Utility class for offloading some class from UI thread
- */
-public class UiThreadHelper {
-
-    private static final MainThreadInitializedObject<Handler> HANDLER =
-            new MainThreadInitializedObject<>(
-                    c -> new Handler(UI_HELPER_EXECUTOR.getLooper(), new UiCallbacks(c)));
-
-    private static final int MSG_HIDE_KEYBOARD = 1;
-    private static final int MSG_SET_ORIENTATION = 2;
-    private static final int MSG_RUN_COMMAND = 3;
-    private static final String STATS_LOGGER_KEY = "STATS_LOGGER_KEY";
-
-    @SuppressLint("NewApi")
-    public static void hideKeyboardAsync(ActivityContext activityContext, IBinder token) {
-        View root = activityContext.getDragLayer();
-
-        if (Utilities.ATLEAST_R) {
-            Preconditions.assertUIThread();
-            //  Hide keyboard with WindowInsetsController if could. In case
-            //  hideSoftInputFromWindow may get ignored by input connection being finished
-            //  when the screen is off.
-            //
-            // In addition, inside IMF, the keyboards are closed asynchronously that launcher no
-            // longer need to post to the message queue.
-            final WindowInsetsController wic = root.getWindowInsetsController();
-            WindowInsets insets = root.getRootWindowInsets();
-            boolean isImeShown = insets != null && insets.isVisible(WindowInsets.Type.ime());
-            if (wic != null && isImeShown) {
-                // this method cannot be called cross threads
-                wic.hide(WindowInsets.Type.ime());
-                activityContext.getStatsLogManager().logger()
-                        .log(LAUNCHER_ALLAPPS_KEYBOARD_CLOSED);
-                return;
-            }
-        }
-        // Since the launcher context cannot be accessed directly from callback, adding secondary
-        // message to log keyboard close event asynchronously.
-        Bundle mHideKeyboardLoggerMsg = new Bundle();
-        mHideKeyboardLoggerMsg.putParcelable(
-                STATS_LOGGER_KEY,
-                Message.obtain(
-                        HANDLER.get(root.getContext()),
-                        () -> activityContext
-                                .getStatsLogManager()
-                                .logger()
-                                .log(LAUNCHER_ALLAPPS_KEYBOARD_CLOSED)
-                )
-        );
-
-        Message mHideKeyboardMsg = Message.obtain(HANDLER.get(root.getContext()), MSG_HIDE_KEYBOARD,
-                token);
-        mHideKeyboardMsg.setData(mHideKeyboardLoggerMsg);
-        mHideKeyboardMsg.sendToTarget();
-    }
-
-    public static void setOrientationAsync(Activity activity, int orientation) {
-        Message.obtain(HANDLER.get(activity), MSG_SET_ORIENTATION, orientation, 0, activity)
-                .sendToTarget();
-    }
-
-    public static void setBackButtonAlphaAsync(Context context, AsyncCommand command, float alpha,
-            boolean animate) {
-        runAsyncCommand(context, command, Float.floatToIntBits(alpha), animate ? 1 : 0);
-    }
-
-    public static void runAsyncCommand(Context context, AsyncCommand command, int arg1, int arg2) {
-        Message.obtain(HANDLER.get(context), MSG_RUN_COMMAND, arg1, arg2, command).sendToTarget();
-    }
-
-    private static class UiCallbacks implements Handler.Callback {
-
-        private final Context mContext;
-        private final InputMethodManager mIMM;
-
-        UiCallbacks(Context context) {
-            mContext = context;
-            mIMM = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
-        }
-
-        @Override
-        public boolean handleMessage(Message message) {
-            switch (message.what) {
-                case MSG_HIDE_KEYBOARD:
-                    if (mIMM.hideSoftInputFromWindow((IBinder) message.obj, 0)) {
-                        // log keyboard close event only when keyboard is actually closed
-                        ((Message) message.getData().getParcelable(STATS_LOGGER_KEY))
-                                .sendToTarget();
-                    }
-                    return true;
-                case MSG_SET_ORIENTATION:
-                    ((Activity) message.obj).setRequestedOrientation(message.arg1);
-                    return true;
-                case MSG_RUN_COMMAND:
-                    ((AsyncCommand) message.obj).execute(mContext, message.arg1, message.arg2);
-                    return true;
-            }
-            return false;
-        }
-    }
-
-    public interface AsyncCommand {
-        void execute(Context proxy, int arg1, int arg2);
-    }
-}
diff --git a/src/com/android/launcher3/util/VibratorWrapper.java b/src/com/android/launcher3/util/VibratorWrapper.java
new file mode 100644
index 0000000..ceba0db
--- /dev/null
+++ b/src/com/android/launcher3/util/VibratorWrapper.java
@@ -0,0 +1,209 @@
+/*
+ * 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.launcher3.util;
+
+import static android.os.VibrationEffect.createPredefined;
+import static android.provider.Settings.System.HAPTIC_FEEDBACK_ENABLED;
+import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
+import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
+
+import android.annotation.SuppressLint;
+import android.annotation.TargetApi;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.media.AudioAttributes;
+import android.os.Build;
+import android.os.SystemClock;
+import android.os.VibrationEffect;
+import android.os.Vibrator;
+import android.provider.Settings;
+
+import androidx.annotation.Nullable;
+
+import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.PendingAnimation;
+
+import java.util.function.Consumer;
+
+/**
+ * Wrapper around {@link Vibrator} to easily perform haptic feedback where necessary.
+ */
+@TargetApi(Build.VERSION_CODES.Q)
+public class VibratorWrapper {
+
+    public static final MainThreadInitializedObject<VibratorWrapper> INSTANCE =
+            new MainThreadInitializedObject<>(VibratorWrapper::new);
+
+    public static final AudioAttributes VIBRATION_ATTRS = new AudioAttributes.Builder()
+            .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
+            .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
+            .build();
+
+    public static final VibrationEffect EFFECT_CLICK =
+            createPredefined(VibrationEffect.EFFECT_CLICK);
+
+    private static final float DRAG_TEXTURE_SCALE = 0.03f;
+    private static final float DRAG_COMMIT_SCALE = 0.5f;
+    private static final float DRAG_BUMP_SCALE = 0.4f;
+    private static final int DRAG_TEXTURE_EFFECT_SIZE = 200;
+
+    @Nullable
+    private final VibrationEffect mDragEffect;
+    @Nullable
+    private final VibrationEffect mCommitEffect;
+    @Nullable
+    private final VibrationEffect mBumpEffect;
+
+    private long mLastDragTime;
+    private final int mThresholdUntilNextDragCallMillis;
+
+    /**
+     * Haptic when entering overview.
+     */
+    public static final VibrationEffect OVERVIEW_HAPTIC = EFFECT_CLICK;
+
+    private final Vibrator mVibrator;
+    private final boolean mHasVibrator;
+
+    private boolean mIsHapticFeedbackEnabled;
+
+    private VibratorWrapper(Context context) {
+        mVibrator = context.getSystemService(Vibrator.class);
+        mHasVibrator = mVibrator.hasVibrator();
+        if (mHasVibrator) {
+            final ContentResolver resolver = context.getContentResolver();
+            mIsHapticFeedbackEnabled = isHapticFeedbackEnabled(resolver);
+            final ContentObserver observer = new ContentObserver(MAIN_EXECUTOR.getHandler()) {
+                @Override
+                public void onChange(boolean selfChange) {
+                    mIsHapticFeedbackEnabled = isHapticFeedbackEnabled(resolver);
+                }
+            };
+            resolver.registerContentObserver(Settings.System.getUriFor(HAPTIC_FEEDBACK_ENABLED),
+                    false /* notifyForDescendants */, observer);
+        } else {
+            mIsHapticFeedbackEnabled = false;
+        }
+
+        if (Utilities.ATLEAST_S && mVibrator.areAllPrimitivesSupported(
+                VibrationEffect.Composition.PRIMITIVE_LOW_TICK)) {
+
+            // Drag texture, Commit, and Bump should only be used for premium phones.
+            // Before using these haptics make sure check if the device can use it
+            VibrationEffect.Composition dragEffect = VibrationEffect.startComposition();
+            for (int i = 0; i < DRAG_TEXTURE_EFFECT_SIZE; i++) {
+                dragEffect.addPrimitive(
+                        VibrationEffect.Composition.PRIMITIVE_LOW_TICK, DRAG_TEXTURE_SCALE);
+            }
+            mDragEffect = dragEffect.compose();
+            mCommitEffect = VibrationEffect.startComposition().addPrimitive(
+                    VibrationEffect.Composition.PRIMITIVE_TICK, DRAG_COMMIT_SCALE).compose();
+            mBumpEffect = VibrationEffect.startComposition().addPrimitive(
+                    VibrationEffect.Composition.PRIMITIVE_LOW_TICK, DRAG_BUMP_SCALE).compose();
+            int primitiveDuration = mVibrator.getPrimitiveDurations(
+                    VibrationEffect.Composition.PRIMITIVE_LOW_TICK)[0];
+
+            mThresholdUntilNextDragCallMillis =
+                    DRAG_TEXTURE_EFFECT_SIZE * primitiveDuration + 100;
+        } else {
+            mDragEffect = null;
+            mCommitEffect = null;
+            mBumpEffect = null;
+            mThresholdUntilNextDragCallMillis = 0;
+        }
+    }
+
+    /**
+     *  This is called when the user swipes to/from all apps. This is meant to be used in between
+     *  long animation progresses so that it gives a dragging texture effect. For a better
+     *  experience, this should be used in combination with vibrateForDragCommit().
+     */
+    public void vibrateForDragTexture() {
+        if (mDragEffect == null) {
+            return;
+        }
+        long currentTime = SystemClock.elapsedRealtime();
+        long elapsedTimeSinceDrag = currentTime - mLastDragTime;
+        if (elapsedTimeSinceDrag >= mThresholdUntilNextDragCallMillis) {
+            vibrate(mDragEffect);
+            mLastDragTime = currentTime;
+        }
+    }
+
+    /**
+     *  This is used when user reaches the commit threshold when swiping to/from from all apps.
+     */
+    public void vibrateForDragCommit() {
+        if (mCommitEffect != null) {
+            vibrate(mCommitEffect);
+        }
+        // resetting dragTexture timestamp to be able to play dragTexture again
+        mLastDragTime = 0;
+    }
+
+    /**
+     *  The bump haptic is used to be called at the end of a swipe and only if it the gesture is a
+     *  FLING going to/from all apps. Client can just call this method elsewhere just for the
+     *  effect.
+     */
+    public void vibrateForDragBump() {
+        if (mBumpEffect != null) {
+            vibrate(mBumpEffect);
+        }
+    }
+
+    /**
+     * This should be used to cancel a haptic in case where the haptic shouldn't be vibrating. For
+     * example, when no animation is happening but a vibrator happens to be vibrating still. Need
+     * boolean parameter for {@link PendingAnimation#addEndListener(Consumer)}.
+     */
+    public void cancelVibrate(boolean unused) {
+        UI_HELPER_EXECUTOR.execute(mVibrator::cancel);
+        // reset dragTexture timestamp to be able to play dragTexture again whenever cancelled
+        mLastDragTime = 0;
+    }
+    private boolean isHapticFeedbackEnabled(ContentResolver resolver) {
+        return Settings.System.getInt(resolver, HAPTIC_FEEDBACK_ENABLED, 0) == 1;
+    }
+
+    /** Vibrates with the given effect if haptic feedback is available and enabled. */
+    public void vibrate(VibrationEffect vibrationEffect) {
+        if (mHasVibrator && mIsHapticFeedbackEnabled) {
+            UI_HELPER_EXECUTOR.execute(() -> mVibrator.vibrate(vibrationEffect, VIBRATION_ATTRS));
+        }
+    }
+
+    /**
+     * Vibrates with a single primitive, if supported, or use a fallback effect instead. This only
+     * vibrates if haptic feedback is available and enabled.
+     */
+    @SuppressLint("NewApi")
+    public void vibrate(int primitiveId, float primitiveScale, VibrationEffect fallbackEffect) {
+        if (mHasVibrator && mIsHapticFeedbackEnabled) {
+            UI_HELPER_EXECUTOR.execute(() -> {
+                if (Utilities.ATLEAST_R && primitiveId >= 0
+                        && mVibrator.areAllPrimitivesSupported(primitiveId)) {
+                    mVibrator.vibrate(VibrationEffect.startComposition()
+                            .addPrimitive(primitiveId, primitiveScale)
+                            .compose(), VIBRATION_ATTRS);
+                } else {
+                    mVibrator.vibrate(fallbackEffect, VIBRATION_ATTRS);
+                }
+            });
+        }
+    }
+}
diff --git a/src/com/android/launcher3/util/ViewOnDrawExecutor.java b/src/com/android/launcher3/util/ViewOnDrawExecutor.java
index 5d90291..fada4a3 100644
--- a/src/com/android/launcher3/util/ViewOnDrawExecutor.java
+++ b/src/com/android/launcher3/util/ViewOnDrawExecutor.java
@@ -48,6 +48,7 @@
     public void attachTo(Launcher launcher) {
         mOnClearCallback = launcher::clearPendingExecutor;
         mAttachedView = launcher.getWorkspace();
+
         mAttachedView.addOnAttachStateChangeListener(this);
 
         if (mAttachedView.isAttachedToWindow()) {
@@ -58,6 +59,7 @@
     private void attachObserver() {
         if (!mCompleted) {
             mAttachedView.getViewTreeObserver().addOnDrawListener(this);
+            mAttachedView.getRootView().invalidate();
         }
     }
 
diff --git a/src/com/android/launcher3/util/WallpaperOffsetInterpolator.java b/src/com/android/launcher3/util/WallpaperOffsetInterpolator.java
index 43e9820..4ac6bc4 100644
--- a/src/com/android/launcher3/util/WallpaperOffsetInterpolator.java
+++ b/src/com/android/launcher3/util/WallpaperOffsetInterpolator.java
@@ -1,12 +1,11 @@
 package com.android.launcher3.util;
 
+import static android.content.Intent.ACTION_WALLPAPER_CHANGED;
+
 import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
 
 import android.app.WallpaperManager;
-import android.content.BroadcastReceiver;
 import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Message;
@@ -23,7 +22,7 @@
 /**
  * Utility class to handle wallpaper scrolling along with workspace.
  */
-public class WallpaperOffsetInterpolator extends BroadcastReceiver {
+public class WallpaperOffsetInterpolator {
 
     private static final int[] sTempInt = new int[2];
     private static final String TAG = "WPOffsetInterpolator";
@@ -32,6 +31,8 @@
     // Don't use all the wallpaper for parallax until you have at least this many pages
     private static final int MIN_PARALLAX_PAGE_SPAN = 4;
 
+    private final SimpleBroadcastReceiver mWallpaperChangeReceiver =
+            new SimpleBroadcastReceiver(i -> onWallpaperChanged());
     private final Workspace<?> mWorkspace;
     private final boolean mIsRtl;
     private final Handler mHandler;
@@ -197,22 +198,20 @@
     public void setWindowToken(IBinder token) {
         mWindowToken = token;
         if (mWindowToken == null && mRegistered) {
-            mWorkspace.getContext().unregisterReceiver(this);
+            mWallpaperChangeReceiver.unregisterReceiverSafely(mWorkspace.getContext());
             mRegistered = false;
         } else if (mWindowToken != null && !mRegistered) {
-            mWorkspace.getContext()
-                    .registerReceiver(this, new IntentFilter(Intent.ACTION_WALLPAPER_CHANGED));
-            onReceive(mWorkspace.getContext(), null);
+            mWallpaperChangeReceiver.register(mWorkspace.getContext(), ACTION_WALLPAPER_CHANGED);
+            onWallpaperChanged();
             mRegistered = true;
         }
     }
 
-    @Override
-    public void onReceive(Context context, Intent intent) {
+    private void onWallpaperChanged() {
         UI_HELPER_EXECUTOR.execute(() -> {
             // Updating the boolean on a background thread is fine as the assignments are atomic
-            mWallpaperIsLiveWallpaper =
-                    WallpaperManager.getInstance(context).getWallpaperInfo() != null;
+            mWallpaperIsLiveWallpaper = WallpaperManager.getInstance(mWorkspace.getContext())
+                    .getWallpaperInfo() != null;
             updateOffset();
         });
     }
diff --git a/src/com/android/launcher3/util/WindowBounds.java b/src/com/android/launcher3/util/WindowBounds.java
index a15679a..91480e1 100644
--- a/src/com/android/launcher3/util/WindowBounds.java
+++ b/src/com/android/launcher3/util/WindowBounds.java
@@ -76,6 +76,7 @@
                 + "bounds=" + bounds
                 + ", insets=" + insets
                 + ", availableSize=" + availableSize
+                + ", rotationHint=" + rotationHint
                 + '}';
     }
 
diff --git a/src/com/android/launcher3/util/window/CachedDisplayInfo.java b/src/com/android/launcher3/util/window/CachedDisplayInfo.java
index 06b9829..23f37aa 100644
--- a/src/com/android/launcher3/util/window/CachedDisplayInfo.java
+++ b/src/com/android/launcher3/util/window/CachedDisplayInfo.java
@@ -30,7 +30,6 @@
  */
 public class CachedDisplayInfo {
 
-    public final String id;
     public final Point size;
     public final int rotation;
     public final Rect cutout;
@@ -40,11 +39,10 @@
     }
 
     public CachedDisplayInfo(Point size, int rotation) {
-        this("", size, rotation, new Rect());
+        this(size, rotation, new Rect());
     }
 
-    public CachedDisplayInfo(String id, Point size, int rotation, Rect cutout) {
-        this.id = id;
+    public CachedDisplayInfo(Point size, int rotation, Rect cutout) {
         this.size = size;
         this.rotation = rotation;
         this.cutout = cutout;
@@ -62,16 +60,15 @@
 
         Rect newCutout = new Rect(cutout);
         rotateRect(newCutout, deltaRotation(rotation, Surface.ROTATION_0));
-        return new CachedDisplayInfo(id, newSize, Surface.ROTATION_0, newCutout);
+        return new CachedDisplayInfo(newSize, Surface.ROTATION_0, newCutout);
     }
 
     @Override
     public String toString() {
         return "CachedDisplayInfo{"
-                + "id='" + id + '\''
-                + ", size=" + size
-                + ", rotation=" + rotation
+                + "size=" + size
                 + ", cutout=" + cutout
+                + ", rotation=" + rotation
                 + '}';
     }
 
@@ -80,13 +77,13 @@
         if (this == o) return true;
         if (!(o instanceof CachedDisplayInfo)) return false;
         CachedDisplayInfo that = (CachedDisplayInfo) o;
-        return rotation == that.rotation && Objects.equals(id, that.id)
-                && Objects.equals(size, that.size) && Objects.equals(cutout,
-                that.cutout);
+        return rotation == that.rotation
+                && Objects.equals(size, that.size)
+                && Objects.equals(cutout, that.cutout);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(id, size, rotation, cutout);
+        return Objects.hash(size, rotation, cutout);
     }
 }
diff --git a/src/com/android/launcher3/util/window/WindowManagerProxy.java b/src/com/android/launcher3/util/window/WindowManagerProxy.java
index 9665bf9..4093bc9 100644
--- a/src/com/android/launcher3/util/window/WindowManagerProxy.java
+++ b/src/com/android/launcher3/util/window/WindowManagerProxy.java
@@ -16,16 +16,16 @@
 package com.android.launcher3.util.window;
 
 import static android.view.Display.DEFAULT_DISPLAY;
-import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
 
-import static com.android.launcher3.ResourceUtils.INVALID_RESOURCE_HANDLE;
-import static com.android.launcher3.ResourceUtils.NAVBAR_HEIGHT;
-import static com.android.launcher3.ResourceUtils.NAVBAR_HEIGHT_LANDSCAPE;
-import static com.android.launcher3.ResourceUtils.NAVBAR_LANDSCAPE_LEFT_RIGHT_SIZE;
-import static com.android.launcher3.ResourceUtils.STATUS_BAR_HEIGHT;
-import static com.android.launcher3.ResourceUtils.STATUS_BAR_HEIGHT_LANDSCAPE;
-import static com.android.launcher3.ResourceUtils.STATUS_BAR_HEIGHT_PORTRAIT;
 import static com.android.launcher3.Utilities.dpiFromPx;
+import static com.android.launcher3.testing.shared.ResourceUtils.INVALID_RESOURCE_HANDLE;
+import static com.android.launcher3.testing.shared.ResourceUtils.NAVBAR_HEIGHT;
+import static com.android.launcher3.testing.shared.ResourceUtils.NAVBAR_HEIGHT_LANDSCAPE;
+import static com.android.launcher3.testing.shared.ResourceUtils.NAVBAR_LANDSCAPE_LEFT_RIGHT_SIZE;
+import static com.android.launcher3.testing.shared.ResourceUtils.NAV_BAR_INTERACTION_MODE_RES_NAME;
+import static com.android.launcher3.testing.shared.ResourceUtils.STATUS_BAR_HEIGHT;
+import static com.android.launcher3.testing.shared.ResourceUtils.STATUS_BAR_HEIGHT_LANDSCAPE;
+import static com.android.launcher3.testing.shared.ResourceUtils.STATUS_BAR_HEIGHT_PORTRAIT;
 import static com.android.launcher3.util.MainThreadInitializedObject.forOverride;
 import static com.android.launcher3.util.RotationUtils.deltaRotation;
 import static com.android.launcher3.util.RotationUtils.rotateRect;
@@ -41,7 +41,7 @@
 import android.hardware.display.DisplayManager;
 import android.os.Build;
 import android.util.ArrayMap;
-import android.util.Pair;
+import android.util.Log;
 import android.view.Display;
 import android.view.DisplayCutout;
 import android.view.Surface;
@@ -50,9 +50,10 @@
 import android.view.WindowMetrics;
 
 import com.android.launcher3.R;
-import com.android.launcher3.ResourceUtils;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.testing.shared.ResourceUtils;
 import com.android.launcher3.util.MainThreadInitializedObject;
+import com.android.launcher3.util.NavigationMode;
 import com.android.launcher3.util.ResourceBasedOverride;
 import com.android.launcher3.util.WindowBounds;
 
@@ -61,6 +62,7 @@
  */
 public class WindowManagerProxy implements ResourceBasedOverride {
 
+    private static final String TAG = "WindowManagerProxy";
     public static final int MIN_TABLET_WIDTH = 600;
 
     public static final MainThreadInitializedObject<WindowManagerProxy> INSTANCE =
@@ -88,20 +90,12 @@
      * Returns a map of normalized info of internal displays to estimated window bounds
      * for that display
      */
-    public ArrayMap<String, Pair<CachedDisplayInfo, WindowBounds[]>> estimateInternalDisplayBounds(
-            Context context) {
-        Display[] displays = getDisplays(context);
-        ArrayMap<String, Pair<CachedDisplayInfo, WindowBounds[]>> result = new ArrayMap<>();
-        for (Display display : displays) {
-            if (isInternalDisplay(display)) {
-                Context displayContext = Utilities.ATLEAST_S
-                        ? context.createWindowContext(display, TYPE_APPLICATION, null)
-                        : context.createDisplayContext(display);
-                CachedDisplayInfo info = getDisplayInfo(displayContext, display).normalize();
-                WindowBounds[] bounds = estimateWindowBounds(context, info);
-                result.put(info.id, Pair.create(info, bounds));
-            }
-        }
+    public ArrayMap<CachedDisplayInfo, WindowBounds[]> estimateInternalDisplayBounds(
+            Context displayInfoContext) {
+        CachedDisplayInfo info = getDisplayInfo(displayInfoContext).normalize();
+        WindowBounds[] bounds = estimateWindowBounds(displayInfoContext, info);
+        ArrayMap<CachedDisplayInfo, WindowBounds[]> result = new ArrayMap<>();
+        result.put(info, bounds);
         return result;
     }
 
@@ -109,12 +103,11 @@
      * Returns the real bounds for the provided display after applying any insets normalization
      */
     @TargetApi(Build.VERSION_CODES.R)
-    public WindowBounds getRealBounds(Context windowContext,
-            Display display, CachedDisplayInfo info) {
+    public WindowBounds getRealBounds(Context displayInfoContext, CachedDisplayInfo info) {
         if (!Utilities.ATLEAST_R) {
             Point smallestSize = new Point();
             Point largestSize = new Point();
-            display.getCurrentSizeRange(smallestSize, largestSize);
+            getDisplay(displayInfoContext).getCurrentSizeRange(smallestSize, largestSize);
 
             if (info.size.y > info.size.x) {
                 // Portrait
@@ -122,17 +115,16 @@
                         info.rotation);
             } else {
                 // Landscape
-                new WindowBounds(info.size.x, info.size.y, largestSize.x, smallestSize.y,
+                return new WindowBounds(info.size.x, info.size.y, largestSize.x, smallestSize.y,
                         info.rotation);
             }
         }
 
-        WindowMetrics wm = windowContext.getSystemService(WindowManager.class)
+        WindowMetrics windowMetrics = displayInfoContext.getSystemService(WindowManager.class)
                 .getMaximumWindowMetrics();
-
         Rect insets = new Rect();
-        normalizeWindowInsets(windowContext, wm.getWindowInsets(), insets);
-        return new WindowBounds(wm.getBounds(), insets, info.rotation);
+        normalizeWindowInsets(displayInfoContext, windowMetrics.getWindowInsets(), insets);
+        return new WindowBounds(windowMetrics.getBounds(), insets, info.rotation);
     }
 
     /**
@@ -170,14 +162,9 @@
 
         Insets statusBarInsets = oldInsets.getInsets(WindowInsets.Type.statusBars());
 
-
-        int statusBarHeight = getDimenByName(systemRes,
-                (isPortrait) ? STATUS_BAR_HEIGHT_PORTRAIT : STATUS_BAR_HEIGHT_LANDSCAPE,
-                STATUS_BAR_HEIGHT);
-
         Insets newStatusBarInsets = Insets.of(
                 statusBarInsets.left,
-                Math.max(statusBarInsets.top, statusBarHeight),
+                getStatusBarHeight(context, isPortrait, statusBarInsets.top),
                 statusBarInsets.right,
                 statusBarInsets.bottom);
         insetsBuilder.setInsets(WindowInsets.Type.statusBars(), newStatusBarInsets);
@@ -201,22 +188,24 @@
         return result;
     }
 
-    /**
-     * Returns true if the display is an internal displays
-     */
-    protected boolean isInternalDisplay(Display display) {
-        return display.getDisplayId() == Display.DEFAULT_DISPLAY;
+    protected int getStatusBarHeight(Context context, boolean isPortrait, int statusBarInset) {
+        Resources systemRes = context.getResources();
+        int statusBarHeight = getDimenByName(systemRes,
+                isPortrait ? STATUS_BAR_HEIGHT_PORTRAIT : STATUS_BAR_HEIGHT_LANDSCAPE,
+                STATUS_BAR_HEIGHT);
+
+        return Math.max(statusBarInset, statusBarHeight);
     }
 
     /**
      * Returns a list of possible WindowBounds for the display keyed on the 4 surface rotations
      */
-    public WindowBounds[] estimateWindowBounds(Context context, CachedDisplayInfo display) {
+    protected WindowBounds[] estimateWindowBounds(Context context, CachedDisplayInfo displayInfo) {
         int densityDpi = context.getResources().getConfiguration().densityDpi;
-        int rotation = display.rotation;
-        Rect safeCutout = display.cutout;
+        int rotation = displayInfo.rotation;
+        Rect safeCutout = displayInfo.cutout;
 
-        int minSize = Math.min(display.size.x, display.size.y);
+        int minSize = Math.min(displayInfo.size.x, displayInfo.size.y);
         int swDp = (int) dpiFromPx(minSize, densityDpi);
 
         Resources systemRes;
@@ -230,6 +219,9 @@
         boolean isTabletOrGesture = isTablet
                 || (Utilities.ATLEAST_R && isGestureNav(context));
 
+        // Use the status bar height resources because current system API to get the status bar
+        // height doesn't allow to do this for an arbitrary display, it returns value only
+        // for the current active display (see com.android.internal.policy.StatusBarUtils)
         int statusBarHeightPortrait = getDimenByName(systemRes,
                 STATUS_BAR_HEIGHT_PORTRAIT, STATUS_BAR_HEIGHT);
         int statusBarHeightLandscape = getDimenByName(systemRes,
@@ -255,7 +247,7 @@
         Point tempSize = new Point();
         for (int i = 0; i < 4; i++) {
             int rotationChange = deltaRotation(rotation, i);
-            tempSize.set(display.size.x, display.size.y);
+            tempSize.set(displayInfo.size.x, displayInfo.size.y);
             rotateSize(tempSize, rotationChange);
             Rect bounds = new Rect(0, 0, tempSize.x, tempSize.y);
 
@@ -311,55 +303,78 @@
      * Returns a CachedDisplayInfo initialized for the current display
      */
     @TargetApi(Build.VERSION_CODES.S)
-    public CachedDisplayInfo getDisplayInfo(Context displayContext, Display display) {
-        int rotation = getRotation(displayContext);
-        Rect cutoutRect = new Rect();
-        Point size = new Point();
+    public CachedDisplayInfo getDisplayInfo(Context displayInfoContext) {
+        int rotation = getRotation(displayInfoContext);
         if (Utilities.ATLEAST_S) {
-            WindowMetrics wm = displayContext.getSystemService(WindowManager.class)
+            WindowMetrics windowMetrics = displayInfoContext.getSystemService(WindowManager.class)
                     .getMaximumWindowMetrics();
-            DisplayCutout cutout = wm.getWindowInsets().getDisplayCutout();
-            if (cutout != null) {
-                cutoutRect.set(cutout.getSafeInsetLeft(), cutout.getSafeInsetTop(),
-                        cutout.getSafeInsetRight(), cutout.getSafeInsetBottom());
-            }
-
-            size.set(wm.getBounds().right, wm.getBounds().bottom);
+            return getDisplayInfo(windowMetrics, rotation);
         } else {
+            Point size = new Point();
+            Display display = getDisplay(displayInfoContext);
             display.getRealSize(size);
+            Rect cutoutRect = new Rect();
+            return new CachedDisplayInfo(size, rotation, cutoutRect);
         }
-        return new CachedDisplayInfo(getDisplayId(display), size, rotation, cutoutRect);
     }
 
     /**
-     * Returns a unique ID representing the display
+     * Returns a CachedDisplayInfo initialized for the current display
      */
-    protected String getDisplayId(Display display) {
-        return Integer.toString(display.getDisplayId());
+    @TargetApi(Build.VERSION_CODES.S)
+    protected CachedDisplayInfo getDisplayInfo(WindowMetrics windowMetrics, int rotation) {
+        Point size = new Point(windowMetrics.getBounds().right, windowMetrics.getBounds().bottom);
+        Rect cutoutRect = new Rect();
+        DisplayCutout cutout = windowMetrics.getWindowInsets().getDisplayCutout();
+        if (cutout != null) {
+            cutoutRect.set(cutout.getSafeInsetLeft(), cutout.getSafeInsetTop(),
+                    cutout.getSafeInsetRight(), cutout.getSafeInsetBottom());
+        }
+        return new CachedDisplayInfo(size, rotation, cutoutRect);
     }
 
     /**
-     * Returns rotation of the display associated with the context.
+     * Returns rotation of the display associated with the context, or rotation of DEFAULT_DISPLAY
+     * if the context isn't associated with a display.
      */
-    public int getRotation(Context context) {
-        Display d = null;
+    public int getRotation(Context displayInfoContext) {
+        return getDisplay(displayInfoContext).getRotation();
+    }
+
+    /**
+     *
+     * Returns the display associated with the context, or DEFAULT_DISPLAY if the context isn't
+     * associated with a display.
+     */
+    protected Display getDisplay(Context displayInfoContext) {
         if (Utilities.ATLEAST_R) {
             try {
-                d = context.getDisplay();
+                return displayInfoContext.getDisplay();
             } catch (UnsupportedOperationException e) {
                 // Ignore
             }
         }
-        if (d == null) {
-            d = context.getSystemService(DisplayManager.class).getDisplay(DEFAULT_DISPLAY);
-        }
-        return d.getRotation();
+        return displayInfoContext.getSystemService(DisplayManager.class).getDisplay(
+                DEFAULT_DISPLAY);
     }
 
     /**
-     * Returns all currently valid logical displays.
+     * Returns the current navigation mode from resource.
      */
-    protected Display[] getDisplays(Context context) {
-        return context.getSystemService(DisplayManager.class).getDisplays();
+    public NavigationMode getNavigationMode(Context context) {
+        int modeInt = ResourceUtils.getIntegerByName(NAV_BAR_INTERACTION_MODE_RES_NAME,
+                context.getResources(), INVALID_RESOURCE_HANDLE);
+
+        if (modeInt == INVALID_RESOURCE_HANDLE) {
+            Log.e(TAG, "Failed to get system resource ID. Incompatible framework version?");
+        } else {
+            for (NavigationMode m : NavigationMode.values()) {
+                if (m.resValue == modeInt) {
+                    return m;
+                }
+            }
+        }
+        return Utilities.ATLEAST_S ? NavigationMode.NO_BUTTON :
+                NavigationMode.THREE_BUTTONS;
     }
 }
diff --git a/src/com/android/launcher3/views/AbstractSlideInView.java b/src/com/android/launcher3/views/AbstractSlideInView.java
index 47503b1..ec7ec0b 100644
--- a/src/com/android/launcher3/views/AbstractSlideInView.java
+++ b/src/com/android/launcher3/views/AbstractSlideInView.java
@@ -17,30 +17,46 @@
 
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
 
+import static com.android.launcher3.LauncherAnimUtils.SCALE_PROPERTY;
 import static com.android.launcher3.LauncherAnimUtils.SUCCESS_TRANSITION_PROGRESS;
 import static com.android.launcher3.LauncherAnimUtils.TABLET_BOTTOM_SHEET_SUCCESS_TRANSITION_PROGRESS;
+import static com.android.launcher3.allapps.AllAppsTransitionController.REVERT_SWIPE_ALL_APPS_TO_HOME_ANIMATION_DURATION_MS;
 import static com.android.launcher3.anim.Interpolators.scrollInterpolatorForVelocity;
+import static com.android.launcher3.util.ScrollableLayoutManager.PREDICTIVE_BACK_MIN_SCALE;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ObjectAnimator;
 import android.animation.PropertyValuesHolder;
 import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Outline;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
 import android.util.AttributeSet;
 import android.util.Property;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.ViewOutlineProvider;
 import android.view.animation.Interpolator;
+import android.window.BackEvent;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.Px;
+import androidx.annotation.RequiresApi;
 
 import com.android.launcher3.AbstractFloatingView;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.anim.AnimatedFloat;
 import com.android.launcher3.anim.Interpolators;
 import com.android.launcher3.touch.BaseSwipeDetector;
 import com.android.launcher3.touch.SingleAxisSwipeDetector;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * Extension of {@link AbstractFloatingView} with common methods for sliding in from bottom.
@@ -65,6 +81,7 @@
             };
     protected static final float TRANSLATION_SHIFT_CLOSED = 1f;
     protected static final float TRANSLATION_SHIFT_OPENED = 0f;
+    private static final float VIEW_NO_SCALE = 1f;
 
     protected final T mActivityContext;
 
@@ -79,8 +96,27 @@
     protected float mTranslationShift = TRANSLATION_SHIFT_CLOSED;
 
     protected boolean mNoIntercept;
+    protected @Nullable OnCloseListener mOnCloseBeginListener;
     protected List<OnCloseListener> mOnCloseListeners = new ArrayList<>();
 
+    protected final AnimatedFloat mSlideInViewScale =
+            new AnimatedFloat(this::onScaleProgressChanged, VIEW_NO_SCALE);
+    protected boolean mIsBackProgressing;
+    @Nullable private Drawable mContentBackground;
+    @Nullable private View mContentBackgroundParentView;
+
+    protected final ViewOutlineProvider mViewOutlineProvider = new ViewOutlineProvider() {
+        @Override
+        public void getOutline(View view, Outline outline) {
+            outline.setRect(
+                    0,
+                    0,
+                    view.getMeasuredWidth(),
+                    view.getMeasuredHeight() + getBottomOffsetPx()
+            );
+        }
+    };
+
     public AbstractSlideInView(Context context, AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr);
         mActivityContext = ActivityContext.lookupContext(context);
@@ -128,6 +164,7 @@
         if (mColorScrim != null) {
             mColorScrim.setAlpha(1 - mTranslationShift);
         }
+        invalidate();
     }
 
     @Override
@@ -157,6 +194,80 @@
         return true;
     }
 
+    @Override
+    @RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
+    public void onBackProgressed(BackEvent backEvent) {
+        final float progress = backEvent.getProgress();
+        float deceleratedProgress =
+                Interpolators.PREDICTIVE_BACK_DECELERATED_EASE.getInterpolation(progress);
+        mIsBackProgressing = progress > 0f;
+        mSlideInViewScale.updateValue(PREDICTIVE_BACK_MIN_SCALE
+                + (1 - PREDICTIVE_BACK_MIN_SCALE) * (1 - deceleratedProgress));
+    }
+
+    protected void onScaleProgressChanged() {
+        float scaleProgress = mSlideInViewScale.value;
+        SCALE_PROPERTY.set(this, scaleProgress);
+        setClipChildren(!mIsBackProgressing);
+        mContent.setClipChildren(!mIsBackProgressing);
+        invalidate();
+    }
+
+    @Override
+    public void onBackInvoked() {
+        super.onBackInvoked();
+        animateSlideInViewToNoScale();
+    }
+
+    @Override
+    public void onBackCancelled() {
+        super.onBackCancelled();
+        animateSlideInViewToNoScale();
+    }
+
+    protected void animateSlideInViewToNoScale() {
+        mSlideInViewScale.animateToValue(1f)
+                .setDuration(REVERT_SWIPE_ALL_APPS_TO_HOME_ANIMATION_DURATION_MS)
+                .start();
+    }
+
+    @Override
+    protected void dispatchDraw(Canvas canvas) {
+        drawScaledBackground(canvas);
+        super.dispatchDraw(canvas);
+    }
+
+    /**
+     * Set slide in view's background {@link Drawable} which will be draw onto a parent view in
+     * {@link #dispatchDraw(Canvas)}
+     */
+    protected void setContentBackgroundWithParent(
+            @NonNull Drawable drawable, @NonNull View parentView) {
+        mContentBackground = drawable;
+        mContentBackgroundParentView = parentView;
+    }
+
+    /** Draw scaled background during predictive back animation. */
+    private void drawScaledBackground(Canvas canvas) {
+        if (mContentBackground == null || mContentBackgroundParentView == null) {
+            return;
+        }
+        mContentBackground.setBounds(
+                mContentBackgroundParentView.getLeft(),
+                mContentBackgroundParentView.getTop() + (int) mContent.getTranslationY(),
+                mContentBackgroundParentView.getRight(),
+                mContentBackgroundParentView.getBottom()
+                        + (mIsBackProgressing ? getBottomOffsetPx() : 0));
+        mContentBackground.draw(canvas);
+    }
+
+    /** Return extra space revealed during predictive back animation. */
+    @Px
+    protected int getBottomOffsetPx() {
+        final int height = getMeasuredHeight();
+        return (int) ((height / PREDICTIVE_BACK_MIN_SCALE - height) / 2);
+    }
+
     /**
      * Returns {@code true} if the touch event is over the visible area of the bottom sheet.
      *
@@ -204,6 +315,11 @@
         }
     }
 
+    /** Callback invoked when the view is beginning to close (e.g. close animation is started). */
+    public void setOnCloseBeginListener(@Nullable OnCloseListener onCloseBeginListener) {
+        mOnCloseBeginListener = onCloseBeginListener;
+    }
+
     /** Registers an {@link OnCloseListener}. */
     public void addOnCloseListener(OnCloseListener listener) {
         mOnCloseListeners.add(listener);
@@ -213,6 +329,8 @@
         if (!mIsOpen) {
             return;
         }
+        Optional.ofNullable(mOnCloseBeginListener).ifPresent(OnCloseListener::onSlideInViewClosed);
+
         if (!animate) {
             mOpenCloseAnimator.cancel();
             setTranslationShift(TRANSLATION_SHIFT_CLOSED);
diff --git a/src/com/android/launcher3/views/ActivityContext.java b/src/com/android/launcher3/views/ActivityContext.java
index 93078e4..4b319e5 100644
--- a/src/com/android/launcher3/views/ActivityContext.java
+++ b/src/com/android/launcher3/views/ActivityContext.java
@@ -15,35 +15,82 @@
  */
 package com.android.launcher3.views;
 
+import static android.window.SplashScreen.SPLASH_SCREEN_STYLE_SOLID_COLOR;
+
+import static com.android.launcher3.LauncherSettings.Animation.DEFAULT_NO_ICON;
+import static com.android.launcher3.logging.KeyboardStateManager.KeyboardState.HIDE;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_KEYBOARD_CLOSED;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_APP_LAUNCH_PENDING_INTENT;
+import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_APP_LAUNCH_TAP;
+import static com.android.launcher3.model.WidgetsModel.GO_DISABLE_WIDGETS;
+import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
+import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
+
+import android.app.ActivityOptions;
+import android.app.PendingIntent;
+import android.content.ActivityNotFoundException;
 import android.content.Context;
 import android.content.ContextWrapper;
+import android.content.Intent;
+import android.content.pm.LauncherApps;
 import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.Process;
+import android.os.StrictMode;
+import android.os.UserHandle;
+import android.util.Log;
+import android.view.Display;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.AccessibilityDelegate;
+import android.view.WindowInsets;
+import android.view.WindowInsetsController;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.Toast;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
+import com.android.launcher3.BubbleTextView;
 import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
+import com.android.launcher3.DropTargetHandler;
+import com.android.launcher3.LauncherSettings;
+import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
 import com.android.launcher3.allapps.ActivityAllAppsContainerView;
-import com.android.launcher3.allapps.search.SearchAdapterProvider;
+import com.android.launcher3.celllayout.CellPosMapper;
 import com.android.launcher3.dot.DotInfo;
 import com.android.launcher3.dragndrop.DragController;
 import com.android.launcher3.folder.FolderIcon;
 import com.android.launcher3.logger.LauncherAtom;
+import com.android.launcher3.logging.InstanceId;
+import com.android.launcher3.logging.InstanceIdSequence;
 import com.android.launcher3.logging.StatsLogManager;
 import com.android.launcher3.model.StringCache;
 import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.model.data.WorkspaceItemInfo;
 import com.android.launcher3.popup.PopupDataProvider;
+import com.android.launcher3.util.ActivityOptionsWrapper;
 import com.android.launcher3.util.OnboardingPrefs;
+import com.android.launcher3.util.PackageManagerHelper;
+import com.android.launcher3.util.Preconditions;
+import com.android.launcher3.util.RunnableList;
+import com.android.launcher3.util.SplitConfigurationOptions;
 import com.android.launcher3.util.ViewCache;
 
+import java.util.List;
+
 /**
  * An interface to be used along with a context for various activities in Launcher. This allows a
  * generic class to depend on Context subclass instead of an Activity.
  */
 public interface ActivityContext {
 
+    String TAG = "ActivityContext";
+
     default boolean finishAutoCancelActionMode() {
         return false;
     }
@@ -92,6 +139,12 @@
         return null;
     }
 
+    /** Called when the first app in split screen has been selected */
+    default void startSplitSelection(
+            SplitConfigurationOptions.SplitSelectSource splitSelectSource) {
+        // Overridden, intentionally empty
+    }
+
     /**
      * The root view to support drag-and-drop and popup support.
      */
@@ -106,6 +159,28 @@
 
     DeviceProfile getDeviceProfile();
 
+    /** Registered {@link OnDeviceProfileChangeListener} instances. */
+    List<OnDeviceProfileChangeListener> getOnDeviceProfileChangeListeners();
+
+    /** Notifies listeners of a {@link DeviceProfile} change. */
+    default void dispatchDeviceProfileChanged() {
+        DeviceProfile deviceProfile = getDeviceProfile();
+        List<OnDeviceProfileChangeListener> listeners = getOnDeviceProfileChangeListeners();
+        for (int i = listeners.size() - 1; i >= 0; i--) {
+            listeners.get(i).onDeviceProfileChanged(deviceProfile);
+        }
+    }
+
+    /** Register listener for {@link DeviceProfile} changes. */
+    default void addOnDeviceProfileChangeListener(OnDeviceProfileChangeListener listener) {
+        getOnDeviceProfileChangeListeners().add(listener);
+    }
+
+    /** Unregister listener for {@link DeviceProfile} changes. */
+    default void removeOnDeviceProfileChangeListener(OnDeviceProfileChangeListener listener) {
+        getOnDeviceProfileChangeListeners().remove(listener);
+    }
+
     default ViewCache getViewCache() {
         return new ViewCache();
     }
@@ -118,6 +193,13 @@
     }
 
     /**
+     * Handler for actions taken on drop targets that require launcher
+     */
+    default DropTargetHandler getDropTargetHandler() {
+        return null;
+    }
+
+    /**
      * Returns the FolderIcon with the given item id, if it exists.
      */
     default @Nullable FolderIcon findFolderIcon(final int folderIconId) {
@@ -129,9 +211,9 @@
     }
 
     /**
-     * Returns {@code true} if popups should use color extraction.
+     * Returns {@code true} if popups can use a range of color shades instead of a singular color.
      */
-    default boolean shouldUseColorExtractionForPopup() {
+    default boolean canUseMultipleShadesForPopup() {
         return true;
     }
 
@@ -141,6 +223,7 @@
     default void applyOverwritesToLogItem(LauncherAtom.ItemInfo.Builder itemInfoBuilder) { }
 
     /** Onboarding preferences for any onboarding data within this context. */
+    @Nullable
     default OnboardingPrefs<?> getOnboardingPrefs() {
         return null;
     }
@@ -150,6 +233,256 @@
         return false;
     }
 
+    default View.OnClickListener getItemOnClickListener() {
+        return v -> {
+            // No op.
+        };
+    }
+
+    @Nullable
+    default PopupDataProvider getPopupDataProvider() {
+        return null;
+    }
+
+    @Nullable
+    default StringCache getStringCache() {
+        return null;
+    }
+
+    /**
+     * Hides the keyboard if it is visible
+     */
+    default void hideKeyboard() {
+        View root = getDragLayer();
+        if (root == null) {
+            return;
+        }
+        if (Utilities.ATLEAST_R) {
+            Preconditions.assertUIThread();
+            //  Hide keyboard with WindowInsetsController if could. In case
+            //  hideSoftInputFromWindow may get ignored by input connection being finished
+            //  when the screen is off.
+            //
+            // In addition, inside IMF, the keyboards are closed asynchronously that launcher no
+            // longer need to post to the message queue.
+            final WindowInsetsController wic = root.getWindowInsetsController();
+            WindowInsets insets = root.getRootWindowInsets();
+            boolean isImeShown = insets != null && insets.isVisible(WindowInsets.Type.ime());
+            if (wic != null && isImeShown) {
+                StatsLogManager slm  = getStatsLogManager();
+                slm.keyboardStateManager().setKeyboardState(HIDE);
+
+                // this method cannot be called cross threads
+                wic.hide(WindowInsets.Type.ime());
+                slm.logger().log(LAUNCHER_ALLAPPS_KEYBOARD_CLOSED);
+                return;
+            }
+        }
+
+        InputMethodManager imm = root.getContext().getSystemService(InputMethodManager.class);
+        IBinder token = root.getWindowToken();
+        if (imm != null && token != null) {
+            UI_HELPER_EXECUTOR.execute(() -> {
+                if (imm.hideSoftInputFromWindow(token, 0)) {
+                    // log keyboard close event only when keyboard is actually closed
+                    MAIN_EXECUTOR.execute(() ->
+                            getStatsLogManager().logger().log(LAUNCHER_ALLAPPS_KEYBOARD_CLOSED));
+                }
+            });
+        }
+    }
+
+    /**
+     * Sends a pending intent animating from a view.
+     *
+     * @param v View to animate.
+     * @param intent The pending intent being launched.
+     * @param item Item associated with the view.
+     * @return RunnableList for listening for animation finish if the activity was properly
+     *         or started, {@code null} if the launch finished
+     */
+    default RunnableList sendPendingIntentWithAnimation(
+            @NonNull View v, PendingIntent intent, @Nullable ItemInfo item) {
+        ActivityOptionsWrapper options = getActivityLaunchOptions(v, item);
+        try {
+            intent.send(null, 0, null, null, null, null, options.toBundle());
+            if (item != null) {
+                InstanceId instanceId = new InstanceIdSequence().newInstanceId();
+                getStatsLogManager().logger().withItemInfo(item).withInstanceId(instanceId)
+                        .log(LAUNCHER_APP_LAUNCH_PENDING_INTENT);
+            }
+            return options.onEndCallback;
+        } catch (PendingIntent.CanceledException e) {
+            Toast.makeText(v.getContext(),
+                    v.getContext().getResources().getText(R.string.shortcut_not_available),
+                    Toast.LENGTH_SHORT).show();
+        }
+        return null;
+    }
+
+    /**
+     * Safely starts an activity.
+     *
+     * @param v View starting the activity.
+     * @param intent Base intent being launched.
+     * @param item Item associated with the view.
+     * @return RunnableList for listening for animation finish if the activity was properly
+     *         or started, {@code null} if the launch finished
+     */
+    default RunnableList startActivitySafely(
+            View v, Intent intent, @Nullable ItemInfo item) {
+        Preconditions.assertUIThread();
+        Context context = (Context) this;
+        if (isAppBlockedForSafeMode() && !PackageManagerHelper.isSystemApp(context, intent)) {
+            Toast.makeText(context, R.string.safemode_shortcut_error, Toast.LENGTH_SHORT).show();
+            return null;
+        }
+
+        ActivityOptionsWrapper options = v != null ? getActivityLaunchOptions(v, item)
+                : makeDefaultActivityOptions(item != null && item.animationType == DEFAULT_NO_ICON
+                        ? SPLASH_SCREEN_STYLE_SOLID_COLOR : -1 /* SPLASH_SCREEN_STYLE_UNDEFINED */);
+        UserHandle user = item == null ? null : item.user;
+        Bundle optsBundle = options.toBundle();
+        // Prepare intent
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        if (v != null) {
+            intent.setSourceBounds(Utilities.getViewBounds(v));
+        }
+        try {
+            boolean isShortcut = (item instanceof WorkspaceItemInfo)
+                    && (item.itemType == LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT
+                    || item.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT)
+                    && !((WorkspaceItemInfo) item).isPromise();
+            if (isShortcut) {
+                // Shortcuts need some special checks due to legacy reasons.
+                startShortcutIntentSafely(intent, optsBundle, item);
+            } else if (user == null || user.equals(Process.myUserHandle())) {
+                // Could be launching some bookkeeping activity
+                context.startActivity(intent, optsBundle);
+            } else {
+                context.getSystemService(LauncherApps.class).startMainActivity(
+                        intent.getComponent(), user, intent.getSourceBounds(), optsBundle);
+            }
+            if (item != null) {
+                InstanceId instanceId = new InstanceIdSequence().newInstanceId();
+                logAppLaunch(getStatsLogManager(), item, instanceId);
+            }
+            return options.onEndCallback;
+        } catch (NullPointerException | ActivityNotFoundException | SecurityException e) {
+            Toast.makeText(context, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
+            Log.e(TAG, "Unable to launch. tag=" + item + " intent=" + intent, e);
+        }
+        return null;
+    }
+
+    /** Returns {@code true} if an app launch is blocked due to safe mode. */
+    default boolean isAppBlockedForSafeMode() {
+        return false;
+    }
+
+    /**
+     * Creates and logs a new app launch event.
+     */
+    default void logAppLaunch(StatsLogManager statsLogManager, ItemInfo info,
+            InstanceId instanceId) {
+        statsLogManager.logger().withItemInfo(info).withInstanceId(instanceId)
+                .log(LAUNCHER_APP_LAUNCH_TAP);
+    }
+
+    /**
+     * Returns launch options for an Activity.
+     *
+     * @param v View initiating a launch.
+     * @param item Item associated with the view.
+     */
+    default ActivityOptionsWrapper getActivityLaunchOptions(View v, @Nullable ItemInfo item) {
+        int left = 0, top = 0;
+        int width = v.getMeasuredWidth(), height = v.getMeasuredHeight();
+        if (v instanceof BubbleTextView) {
+            // Launch from center of icon, not entire view
+            Drawable icon = ((BubbleTextView) v).getIcon();
+            if (icon != null) {
+                Rect bounds = icon.getBounds();
+                left = (width - bounds.width()) / 2;
+                top = v.getPaddingTop();
+                width = bounds.width();
+                height = bounds.height();
+            }
+        }
+        ActivityOptions options =
+                ActivityOptions.makeClipRevealAnimation(v, left, top, width, height);
+
+        options.setLaunchDisplayId(
+                (v != null && v.getDisplay() != null) ? v.getDisplay().getDisplayId()
+                        : Display.DEFAULT_DISPLAY);
+        RunnableList callback = new RunnableList();
+        return new ActivityOptionsWrapper(options, callback);
+    }
+
+    /**
+     * Creates a default activity option and we do not want association with any launcher element.
+     */
+    default ActivityOptionsWrapper makeDefaultActivityOptions(int splashScreenStyle) {
+        ActivityOptions options = ActivityOptions.makeBasic();
+        if (Utilities.ATLEAST_T) {
+            options.setSplashScreenStyle(splashScreenStyle);
+        }
+        return new ActivityOptionsWrapper(options, new RunnableList());
+    }
+
+    /**
+     * Safely launches an intent for a shortcut.
+     *
+     * @param intent Intent to start.
+     * @param optsBundle Optional launch arguments.
+     * @param info Shortcut information.
+     */
+    default void startShortcutIntentSafely(Intent intent, Bundle optsBundle, ItemInfo info) {
+        try {
+            StrictMode.VmPolicy oldPolicy = StrictMode.getVmPolicy();
+            try {
+                // Temporarily disable deathPenalty on all default checks. For eg, shortcuts
+                // containing file Uri's would cause a crash as penaltyDeathOnFileUriExposure
+                // is enabled by default on NYC.
+                StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll()
+                        .penaltyLog().build());
+
+                if (info.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
+                    String id = ((WorkspaceItemInfo) info).getDeepShortcutId();
+                    String packageName = intent.getPackage();
+                    startShortcut(packageName, id, intent.getSourceBounds(), optsBundle, info.user);
+                } else {
+                    // Could be launching some bookkeeping activity
+                    ((Context) this).startActivity(intent, optsBundle);
+                }
+            } finally {
+                StrictMode.setVmPolicy(oldPolicy);
+            }
+        } catch (SecurityException e) {
+            throw e;
+        }
+    }
+
+    /**
+     * A wrapper around the platform method with Launcher specific checks.
+     */
+    default void startShortcut(String packageName, String id, Rect sourceBounds,
+            Bundle startActivityOptions, UserHandle user) {
+        if (GO_DISABLE_WIDGETS) {
+            return;
+        }
+        try {
+            ((Context) this).getSystemService(LauncherApps.class).startShortcut(packageName, id,
+                    sourceBounds, startActivityOptions, user);
+        } catch (SecurityException | IllegalStateException e) {
+            Log.e(TAG, "Failed to start shortcut", e);
+        }
+    }
+
+    default CellPosMapper getCellPosMapper() {
+        return CellPosMapper.DEFAULT;
+    }
+
     /**
      * Returns the ActivityContext associated with the given Context, or throws an exception if
      * the Context is not associated with any ActivityContext.
@@ -175,30 +508,4 @@
             return null;
         }
     }
-
-    default View.OnClickListener getItemOnClickListener() {
-        return v -> {
-            // No op.
-        };
-    }
-
-    @Nullable
-    default PopupDataProvider getPopupDataProvider() {
-        return null;
-    }
-
-    @Nullable
-    default StringCache getStringCache() {
-        return null;
-    }
-
-    /**
-     * Creates and returns {@link SearchAdapterProvider} for build variant specific search result
-     * views.
-     */
-    @Nullable
-    default SearchAdapterProvider<?> createSearchAdapterProvider(
-            ActivityAllAppsContainerView<?> appsView) {
-        return null;
-    }
 }
diff --git a/src/com/android/launcher3/views/AllAppsButton.java b/src/com/android/launcher3/views/AllAppsButton.java
deleted file mode 100644
index b1e69c7..0000000
--- a/src/com/android/launcher3/views/AllAppsButton.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.launcher3.views;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.util.AttributeSet;
-import android.view.ContextThemeWrapper;
-
-import com.android.launcher3.BubbleTextView;
-import com.android.launcher3.LauncherAppState;
-import com.android.launcher3.R;
-import com.android.launcher3.icons.FastBitmapDrawable;
-
-/**
- * Button in Taskbar that opens All Apps.
- */
-public class AllAppsButton extends BubbleTextView {
-
-    public AllAppsButton(Context context) {
-        this(context, null);
-    }
-
-    public AllAppsButton(Context context, AttributeSet attrs) {
-        this(context, attrs, 0);
-    }
-
-    public AllAppsButton(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-
-        Context theme = new ContextThemeWrapper(context, R.style.AllAppsButtonTheme);
-        Bitmap bitmap = LauncherAppState.getInstance(context).getIconCache().getIconFactory()
-                .createScaledBitmapWithShadow(theme.getDrawable(R.drawable.ic_all_apps_button));
-        setIcon(new FastBitmapDrawable(bitmap));
-    }
-}
diff --git a/src/com/android/launcher3/views/AppLauncher.java b/src/com/android/launcher3/views/AppLauncher.java
deleted file mode 100644
index 19e66ab..0000000
--- a/src/com/android/launcher3/views/AppLauncher.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * 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.launcher3.views;
-
-import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_APP_LAUNCH_TAP;
-import static com.android.launcher3.model.WidgetsModel.GO_DISABLE_WIDGETS;
-
-import android.app.ActivityOptions;
-import android.content.ActivityNotFoundException;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.LauncherApps;
-import android.graphics.Rect;
-import android.graphics.drawable.Drawable;
-import android.os.Bundle;
-import android.os.Process;
-import android.os.StrictMode;
-import android.os.UserHandle;
-import android.util.Log;
-import android.view.Display;
-import android.view.View;
-import android.widget.Toast;
-
-import androidx.annotation.Nullable;
-
-import com.android.launcher3.BubbleTextView;
-import com.android.launcher3.LauncherSettings;
-import com.android.launcher3.R;
-import com.android.launcher3.Utilities;
-import com.android.launcher3.logging.InstanceId;
-import com.android.launcher3.logging.InstanceIdSequence;
-import com.android.launcher3.logging.StatsLogManager;
-import com.android.launcher3.model.data.ItemInfo;
-import com.android.launcher3.model.data.WorkspaceItemInfo;
-import com.android.launcher3.util.ActivityOptionsWrapper;
-import com.android.launcher3.util.PackageManagerHelper;
-import com.android.launcher3.util.RunnableList;
-
-/** An {@link ActivityContext} that can also launch app activities and shortcuts safely. */
-public interface AppLauncher extends ActivityContext {
-
-    String TAG = "AppLauncher";
-
-    /**
-     * Safely starts an activity.
-     *
-     * @param v View starting the activity.
-     * @param intent Base intent being launched.
-     * @param item Item associated with the view.
-     * @return {@code true} if the activity starts successfully.
-     */
-    default boolean startActivitySafely(
-            View v, Intent intent, @Nullable ItemInfo item) {
-
-        Context context = (Context) this;
-        if (isAppBlockedForSafeMode() && !PackageManagerHelper.isSystemApp(context, intent)) {
-            Toast.makeText(context, R.string.safemode_shortcut_error, Toast.LENGTH_SHORT).show();
-            return false;
-        }
-
-        Bundle optsBundle = (v != null) ? getActivityLaunchOptions(v, item).toBundle() : null;
-        UserHandle user = item == null ? null : item.user;
-
-        // Prepare intent
-        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        if (v != null) {
-            intent.setSourceBounds(Utilities.getViewBounds(v));
-        }
-        try {
-            boolean isShortcut = (item instanceof WorkspaceItemInfo)
-                    && (item.itemType == LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT
-                    || item.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT)
-                    && !((WorkspaceItemInfo) item).isPromise();
-            if (isShortcut) {
-                // Shortcuts need some special checks due to legacy reasons.
-                startShortcutIntentSafely(intent, optsBundle, item);
-            } else if (user == null || user.equals(Process.myUserHandle())) {
-                // Could be launching some bookkeeping activity
-                context.startActivity(intent, optsBundle);
-            } else {
-                context.getSystemService(LauncherApps.class).startMainActivity(
-                        intent.getComponent(), user, intent.getSourceBounds(), optsBundle);
-            }
-            if (item != null) {
-                InstanceId instanceId = new InstanceIdSequence().newInstanceId();
-                logAppLaunch(getStatsLogManager(), item, instanceId);
-            }
-            return true;
-        } catch (NullPointerException | ActivityNotFoundException | SecurityException e) {
-            Toast.makeText(context, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
-            Log.e(TAG, "Unable to launch. tag=" + item + " intent=" + intent, e);
-        }
-        return false;
-    }
-
-    /** Returns {@code true} if an app launch is blocked due to safe mode. */
-    default boolean isAppBlockedForSafeMode() {
-        return false;
-    }
-
-    /**
-     * Creates and logs a new app launch event.
-     */
-    default void logAppLaunch(StatsLogManager statsLogManager, ItemInfo info,
-            InstanceId instanceId) {
-        statsLogManager.logger().withItemInfo(info).withInstanceId(instanceId)
-                .log(LAUNCHER_APP_LAUNCH_TAP);
-    }
-
-    /**
-     * Returns launch options for an Activity.
-     *
-     * @param v View initiating a launch.
-     * @param item Item associated with the view.
-     */
-    default ActivityOptionsWrapper getActivityLaunchOptions(View v, @Nullable ItemInfo item) {
-        int left = 0, top = 0;
-        int width = v.getMeasuredWidth(), height = v.getMeasuredHeight();
-        if (v instanceof BubbleTextView) {
-            // Launch from center of icon, not entire view
-            Drawable icon = ((BubbleTextView) v).getIcon();
-            if (icon != null) {
-                Rect bounds = icon.getBounds();
-                left = (width - bounds.width()) / 2;
-                top = v.getPaddingTop();
-                width = bounds.width();
-                height = bounds.height();
-            }
-        }
-        ActivityOptions options =
-                ActivityOptions.makeClipRevealAnimation(v, left, top, width, height);
-
-        options.setLaunchDisplayId(
-                (v != null && v.getDisplay() != null) ? v.getDisplay().getDisplayId()
-                        : Display.DEFAULT_DISPLAY);
-        RunnableList callback = new RunnableList();
-        return new ActivityOptionsWrapper(options, callback);
-    }
-
-    /**
-     * Safely launches an intent for a shortcut.
-     *
-     * @param intent Intent to start.
-     * @param optsBundle Optional launch arguments.
-     * @param info Shortcut information.
-     */
-    default void startShortcutIntentSafely(Intent intent, Bundle optsBundle, ItemInfo info) {
-        try {
-            StrictMode.VmPolicy oldPolicy = StrictMode.getVmPolicy();
-            try {
-                // Temporarily disable deathPenalty on all default checks. For eg, shortcuts
-                // containing file Uri's would cause a crash as penaltyDeathOnFileUriExposure
-                // is enabled by default on NYC.
-                StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll()
-                        .penaltyLog().build());
-
-                if (info.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
-                    String id = ((WorkspaceItemInfo) info).getDeepShortcutId();
-                    String packageName = intent.getPackage();
-                    startShortcut(packageName, id, intent.getSourceBounds(), optsBundle, info.user);
-                } else {
-                    // Could be launching some bookkeeping activity
-                    ((Context) this).startActivity(intent, optsBundle);
-                }
-            } finally {
-                StrictMode.setVmPolicy(oldPolicy);
-            }
-        } catch (SecurityException e) {
-            if (!onErrorStartingShortcut(intent, info)) {
-                throw e;
-            }
-        }
-    }
-
-    /**
-     * A wrapper around the platform method with Launcher specific checks.
-     */
-    default void startShortcut(String packageName, String id, Rect sourceBounds,
-            Bundle startActivityOptions, UserHandle user) {
-        if (GO_DISABLE_WIDGETS) {
-            return;
-        }
-        try {
-            ((Context) this).getSystemService(LauncherApps.class).startShortcut(packageName, id,
-                    sourceBounds, startActivityOptions, user);
-        } catch (SecurityException | IllegalStateException e) {
-            Log.e(TAG, "Failed to start shortcut", e);
-        }
-    }
-
-    /**
-     * Invoked when a shortcut fails to launch.
-     * @param intent Shortcut intent that failed to start.
-     * @param info Shortcut information.
-     * @return {@code true} if the error is handled by this callback.
-     */
-    default boolean onErrorStartingShortcut(Intent intent, ItemInfo info) {
-        return false;
-    }
-}
diff --git a/src/com/android/launcher3/views/ArrowTipView.java b/src/com/android/launcher3/views/ArrowTipView.java
index 8d16a8d..73c5ad4 100644
--- a/src/com/android/launcher3/views/ArrowTipView.java
+++ b/src/com/android/launcher3/views/ArrowTipView.java
@@ -162,6 +162,7 @@
         params.gravity = gravity;
         params.leftMargin = mArrowMinOffset + grid.getInsets().left;
         params.rightMargin = mArrowMinOffset + grid.getInsets().right;
+        params.width = LayoutParams.MATCH_PARENT;
         LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mArrowView.getLayoutParams();
 
         lp.gravity = gravity;
diff --git a/src/com/android/launcher3/views/BaseDragLayer.java b/src/com/android/launcher3/views/BaseDragLayer.java
index f553fb4..e4df413 100644
--- a/src/com/android/launcher3/views/BaseDragLayer.java
+++ b/src/com/android/launcher3/views/BaseDragLayer.java
@@ -18,17 +18,15 @@
 
 import static android.view.MotionEvent.ACTION_CANCEL;
 import static android.view.MotionEvent.ACTION_DOWN;
+import static android.view.MotionEvent.ACTION_OUTSIDE;
 import static android.view.MotionEvent.ACTION_UP;
 
 import static com.android.launcher3.util.window.RefreshRateTracker.getSingleFrameMs;
 
-import android.annotation.TargetApi;
-import android.app.WallpaperManager;
 import android.content.Context;
 import android.graphics.Insets;
 import android.graphics.Rect;
 import android.graphics.RectF;
-import android.os.Build;
 import android.util.AttributeSet;
 import android.util.Property;
 import android.view.MotionEvent;
@@ -43,8 +41,8 @@
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.InsettableFrameLayout;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.util.MultiPropertyFactory.MultiProperty;
 import com.android.launcher3.util.MultiValueAlpha;
-import com.android.launcher3.util.MultiValueAlpha.AlphaProperty;
 import com.android.launcher3.util.TouchController;
 
 import java.io.PrintWriter;
@@ -110,7 +108,6 @@
 
     protected final T mActivity;
     private final MultiValueAlpha mMultiValueAlpha;
-    private final WallpaperManager mWallpaperManager;
 
     // All the touch controllers for the view
     protected TouchController[] mControllers;
@@ -123,9 +120,8 @@
 
     public BaseDragLayer(Context context, AttributeSet attrs, int alphaChannelCount) {
         super(context, attrs);
-        mActivity = (T) ActivityContext.lookupContext(context);
+        mActivity = ActivityContext.lookupContext(context);
         mMultiValueAlpha = new MultiValueAlpha(this, alphaChannelCount);
-        mWallpaperManager = context.getSystemService(WallpaperManager.class);
     }
 
     /**
@@ -265,7 +261,10 @@
             mTouchCompleteListener = null;
         }
 
-        if (mActiveController != null) {
+        if (mActiveController != null && ev.getAction() != ACTION_OUTSIDE) {
+            // For some reason, once we intercept touches and have an mActiveController, we won't
+            // get onInterceptTouchEvent() for ACTION_OUTSIDE. Thus, we must recalculate a new
+            // TouchController (if any) to handle the ACTION_OUTSIDE here in onTouchEvent() as well.
             return mActiveController.onControllerTouchEvent(ev);
         } else {
             // In case no child view handled the touch event, we may not get onIntercept anymore
@@ -504,8 +503,8 @@
         return new LayoutParams(p);
     }
 
-    public AlphaProperty getAlphaProperty(int index) {
-        return mMultiValueAlpha.getProperty(index);
+    public MultiProperty getAlphaProperty(int index) {
+        return mMultiValueAlpha.get(index);
     }
 
     public void dump(String prefix, PrintWriter writer) {
@@ -550,18 +549,24 @@
     }
 
     @Override
-    @TargetApi(Build.VERSION_CODES.Q)
     public WindowInsets dispatchApplyWindowInsets(WindowInsets insets) {
         if (Utilities.ATLEAST_Q) {
             Insets gestureInsets = insets.getMandatorySystemGestureInsets();
             int gestureInsetBottom = gestureInsets.bottom;
+            Insets imeInset = Utilities.ATLEAST_R
+                    ? insets.getInsets(WindowInsets.Type.ime())
+                    : Insets.NONE;
             DeviceProfile dp = mActivity.getDeviceProfile();
             if (dp.isTaskbarPresent) {
                 // Ignore taskbar gesture insets to avoid interfering with TouchControllers.
-                gestureInsetBottom = Math.max(0, gestureInsetBottom - dp.taskbarSize);
+                gestureInsetBottom = Math.max(0, gestureInsetBottom - dp.taskbarHeight);
             }
-            mSystemGestureRegion.set(gestureInsets.left, gestureInsets.top,
-                    gestureInsets.right, gestureInsetBottom);
+            mSystemGestureRegion.set(
+                    Math.max(gestureInsets.left, imeInset.left),
+                    Math.max(gestureInsets.top, imeInset.top),
+                    Math.max(gestureInsets.right, imeInset.right),
+                    Math.max(gestureInsetBottom, imeInset.bottom)
+            );
         }
         return super.dispatchApplyWindowInsets(insets);
     }
diff --git a/src/com/android/launcher3/views/ClipIconView.java b/src/com/android/launcher3/views/ClipIconView.java
index d1f90e9..694dead 100644
--- a/src/com/android/launcher3/views/ClipIconView.java
+++ b/src/com/android/launcher3/views/ClipIconView.java
@@ -43,9 +43,6 @@
 import android.view.ViewOutlineProvider;
 
 import androidx.annotation.Nullable;
-import androidx.dynamicanimation.animation.FloatPropertyCompat;
-import androidx.dynamicanimation.animation.SpringAnimation;
-import androidx.dynamicanimation.animation.SpringForce;
 
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.R;
@@ -63,39 +60,6 @@
 
     private static final Rect sTmpRect = new Rect();
 
-    // We spring the foreground drawable relative to the icon's movement in the DragLayer.
-    // We then use these two factor values to scale the movement of the fg within this view.
-    private static final int FG_TRANS_X_FACTOR = 60;
-    private static final int FG_TRANS_Y_FACTOR = 75;
-
-    private static final FloatPropertyCompat<ClipIconView> mFgTransYProperty =
-            new FloatPropertyCompat<ClipIconView>("ClipIconViewFgTransY") {
-                @Override
-                public float getValue(ClipIconView view) {
-                    return view.mFgTransY;
-                }
-
-                @Override
-                public void setValue(ClipIconView view, float transY) {
-                    view.mFgTransY = transY;
-                    view.invalidate();
-                }
-            };
-
-    private static final FloatPropertyCompat<ClipIconView> mFgTransXProperty =
-            new FloatPropertyCompat<ClipIconView>("ClipIconViewFgTransX") {
-                @Override
-                public float getValue(ClipIconView view) {
-                    return view.mFgTransX;
-                }
-
-                @Override
-                public void setValue(ClipIconView view, float transX) {
-                    view.mFgTransX = transX;
-                    view.invalidate();
-                }
-            };
-
     private final int mBlurSizeOutline;
     private final boolean mIsRtl;
 
@@ -114,11 +78,6 @@
     private final Rect mOutline = new Rect();
     private final Rect mFinalDrawableBounds = new Rect();
 
-    private final SpringAnimation mFgSpringY;
-    private float mFgTransY;
-    private final SpringAnimation mFgSpringX;
-    private float mFgTransX;
-
     public ClipIconView(Context context) {
         this(context, null);
     }
@@ -132,22 +91,13 @@
         mBlurSizeOutline = getResources().getDimensionPixelSize(
                 R.dimen.blur_size_medium_outline);
         mIsRtl = Utilities.isRtl(getResources());
-
-        mFgSpringX = new SpringAnimation(this, mFgTransXProperty)
-                .setSpring(new SpringForce()
-                        .setDampingRatio(SpringForce.DAMPING_RATIO_LOW_BOUNCY)
-                        .setStiffness(SpringForce.STIFFNESS_LOW));
-        mFgSpringY = new SpringAnimation(this, mFgTransYProperty)
-                .setSpring(new SpringForce()
-                        .setDampingRatio(SpringForce.DAMPING_RATIO_LOW_BOUNCY)
-                        .setStiffness(SpringForce.STIFFNESS_LOW));
     }
 
     /**
      * Update the icon UI to match the provided parameters during an animation frame
      */
     public void update(RectF rect, float progress, float shapeProgressStart, float cornerRadius,
-            int fgIconAlpha, boolean isOpening, View container, DeviceProfile dp) {
+            boolean isOpening, View container, DeviceProfile dp) {
         MarginLayoutParams lp = (MarginLayoutParams) container.getLayoutParams();
 
         float dX = mIsRtl
@@ -167,8 +117,7 @@
             return;
         }
 
-        update(rect, progress, shapeProgressStart, cornerRadius, fgIconAlpha, isOpening, scale,
-                minSize, lp, dp);
+        update(rect, progress, shapeProgressStart, cornerRadius, isOpening, scale, minSize, dp);
 
         container.setPivotX(0);
         container.setPivotY(0);
@@ -179,13 +128,7 @@
     }
 
     private void update(RectF rect, float progress, float shapeProgressStart, float cornerRadius,
-            int fgIconAlpha, boolean isOpening, float scale, float minSize,
-            MarginLayoutParams parentLp, DeviceProfile dp) {
-        float dX = mIsRtl
-                ? rect.left - (dp.widthPx - parentLp.getMarginStart() - parentLp.width)
-                : rect.left - parentLp.getMarginStart();
-        float dY = rect.top - parentLp.topMargin;
-
+            boolean isOpening, float scale, float minSize, DeviceProfile dp) {
         // shapeRevealProgress = 1 when progress = shapeProgressStart + SHAPE_PROGRESS_DURATION
         float toMax = isOpening ? 1 / SHAPE_PROGRESS_DURATION : 1f;
 
@@ -220,27 +163,17 @@
             float drawableScale = (dp.isLandscape ? mOutline.width() : mOutline.height())
                     / minSize;
             setBackgroundDrawableBounds(drawableScale, dp.isLandscape);
-            if (isOpening) {
-                // Center align foreground
-                int height = mFinalDrawableBounds.height();
-                int width = mFinalDrawableBounds.width();
-                int diffY = dp.isLandscape ? 0
-                        : (int) (((height * drawableScale) - height) / 2);
-                int diffX = dp.isLandscape ? (int) (((width * drawableScale) - width) / 2)
-                        : 0;
-                sTmpRect.set(mFinalDrawableBounds);
-                sTmpRect.offset(diffX, diffY);
-                mForeground.setBounds(sTmpRect);
-            } else {
-                mForeground.setAlpha(fgIconAlpha);
 
-                // Spring the foreground relative to the icon's movement within the DragLayer.
-                int diffX = (int) (dX / dp.availableWidthPx * FG_TRANS_X_FACTOR);
-                int diffY = (int) (dY / dp.availableHeightPx * FG_TRANS_Y_FACTOR);
-
-                mFgSpringX.animateToFinalPosition(diffX);
-                mFgSpringY.animateToFinalPosition(diffY);
-            }
+            // Center align foreground
+            int height = mFinalDrawableBounds.height();
+            int width = mFinalDrawableBounds.width();
+            int diffY = dp.isLandscape ? 0
+                    : (int) (((height * drawableScale) - height) / 2);
+            int diffX = dp.isLandscape ? (int) (((width * drawableScale) - width) / 2)
+                    : 0;
+            sTmpRect.set(mFinalDrawableBounds);
+            sTmpRect.offset(diffX, diffY);
+            mForeground.setBounds(sTmpRect);
         }
         invalidate();
         invalidateOutline();
@@ -359,10 +292,7 @@
             mBackground.draw(canvas);
         }
         if (mForeground != null) {
-            int count2 = canvas.save();
-            canvas.translate(mFgTransX, mFgTransY);
             mForeground.draw(canvas);
-            canvas.restoreToCount(count2);
         }
         canvas.restoreToCount(count);
     }
@@ -380,9 +310,5 @@
         mRevealAnimator = null;
         mTaskCornerRadius = 0;
         mOutline.setEmpty();
-        mFgTransY = 0;
-        mFgSpringX.cancel();
-        mFgTransX = 0;
-        mFgSpringY.cancel();
     }
 }
diff --git a/src/com/android/launcher3/views/ComposeInitializer.java b/src/com/android/launcher3/views/ComposeInitializer.java
new file mode 100644
index 0000000..0929885
--- /dev/null
+++ b/src/com/android/launcher3/views/ComposeInitializer.java
@@ -0,0 +1,229 @@
+/*
+ * 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.launcher3.views;
+
+import android.os.Build;
+import android.view.View;
+import android.view.ViewParent;
+import android.view.ViewTreeObserver;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.LifecycleOwner;
+import androidx.lifecycle.LifecycleRegistry;
+import androidx.lifecycle.ViewTreeLifecycleOwner;
+import androidx.savedstate.SavedStateRegistry;
+import androidx.savedstate.SavedStateRegistryController;
+import androidx.savedstate.SavedStateRegistryOwner;
+import androidx.savedstate.ViewTreeSavedStateRegistryOwner;
+
+import com.android.launcher3.Utilities;
+
+/**
+ * An initializer to use Compose for classes implementing {@code ActivityContext}. This allows
+ * adding ComposeView to ViewTree outside a {@link androidx.activity.ComponentActivity}.
+ */
+public final class ComposeInitializer {
+    /**
+     * Performs the initialization to use Compose in the ViewTree of {@code target}.
+     */
+    public static void initCompose(ActivityContext target) {
+        getContentChild(target).addOnAttachStateChangeListener(
+                new View.OnAttachStateChangeListener() {
+
+                    @Override
+                    public void onViewAttachedToWindow(View v) {
+                        ComposeInitializer.onAttachedToWindow(v);
+                    }
+
+                    @Override
+                    public void onViewDetachedFromWindow(View v) {
+                        ComposeInitializer.onDetachedFromWindow(v);
+                    }
+                });
+    }
+
+    /**
+     * Find the "content child" for {@code target}.
+     *
+     * @see "WindowRecomposer.android.kt: [View.contentChild]"
+     */
+    private static View getContentChild(ActivityContext target) {
+        View self = target.getDragLayer();
+        ViewParent parent = self.getParent();
+        while (parent instanceof View parentView) {
+            if (parentView.getId() == android.R.id.content) return self;
+            self = parentView;
+            parent = self.getParent();
+        }
+        return self;
+    }
+
+    /**
+     * Function to be called on your window root view's [View.onAttachedToWindow] function.
+     */
+    private static void onAttachedToWindow(View root) {
+        if (ViewTreeLifecycleOwner.get(root) != null) {
+            throw new IllegalStateException(
+                    "View " + root + " already has a LifecycleOwner");
+        }
+
+        ViewParent parent = root.getParent();
+        if (parent instanceof View && ((View) parent).getId() != android.R.id.content) {
+            throw new IllegalStateException(
+                    "ComposeInitializer.onContentChildAttachedToWindow(View) must be called on "
+                            + "the content child. Outside of activities and dialogs, this is "
+                            + "usually the top-most View of a window.");
+        }
+
+        // The lifecycle owner, which is STARTED when [root] is visible and RESUMED when [root]
+        // is both visible and focused.
+        ViewLifecycleOwner lifecycleOwner = new ViewLifecycleOwner(root);
+
+        // We must call [ViewLifecycleOwner.onCreate] after creating the
+        // [SavedStateRegistryOwner] because `onCreate` might move the lifecycle state to STARTED
+        // which will make [SavedStateRegistryController.performRestore] throw.
+        lifecycleOwner.onCreate();
+
+        // Set the owners on the root. They will be reused by any ComposeView inside the root
+        // hierarchy.
+        ViewTreeLifecycleOwner.set(root, lifecycleOwner);
+        ViewTreeSavedStateRegistryOwner.set(root, lifecycleOwner);
+    }
+
+    /**
+     * Function to be called on your window root view's [View.onDetachedFromWindow] function.
+     */
+    private static void onDetachedFromWindow(View root) {
+        final LifecycleOwner lifecycleOwner = ViewTreeLifecycleOwner.get(root);
+        if (lifecycleOwner != null) {
+            ((ViewLifecycleOwner) lifecycleOwner).onDestroy();
+        }
+        ViewTreeLifecycleOwner.set(root, null);
+        ViewTreeSavedStateRegistryOwner.set(root, null);
+    }
+
+    /**
+     * A [LifecycleOwner] for a [View] that updates lifecycle state based on window state.
+     *
+     * Also a trivial implementation of [SavedStateRegistryOwner] that does not do any save or
+     * restore. This works for processes similar to the SystemUI process, which is always running
+     * and top-level windows using this initialization are created once, when the process is
+     * started.
+     *
+     * The implementation requires the caller to call [onCreate] and [onDestroy] when the view is
+     * attached to or detached from a view hierarchy. After [onCreate] and before [onDestroy] is
+     * called, the implementation monitors window state in the following way
+     * * If the window is not visible, we are in the [Lifecycle.State.CREATED] state
+     * * If the window is visible but not focused, we are in the [Lifecycle.State.STARTED] state
+     * * If the window is visible and focused, we are in the [Lifecycle.State.RESUMED] state
+     *
+     * Or in table format:
+     * ```
+     * ┌───────────────┬───────────────────┬──────────────┬─────────────────┐
+     * │ View attached │ Window Visibility │ Window Focus │ Lifecycle State │
+     * ├───────────────┼───────────────────┴──────────────┼─────────────────┤
+     * │ Not attached  │                 Any              │       N/A       │
+     * ├───────────────┼───────────────────┬──────────────┼─────────────────┤
+     * │               │    Not visible    │     Any      │     CREATED     │
+     * │               ├───────────────────┼──────────────┼─────────────────┤
+     * │   Attached    │                   │   No focus   │     STARTED     │
+     * │               │      Visible      ├──────────────┼─────────────────┤
+     * │               │                   │  Has focus   │     RESUMED     │
+     * └───────────────┴───────────────────┴──────────────┴─────────────────┘
+     * ```
+     */
+    private static class ViewLifecycleOwner implements SavedStateRegistryOwner {
+        private final ViewTreeObserver.OnWindowFocusChangeListener mWindowFocusListener =
+                hasFocus -> updateState();
+        private final LifecycleRegistry mLifecycleRegistry = new LifecycleRegistry(this);
+
+        private final SavedStateRegistryController mSavedStateRegistryController =
+                SavedStateRegistryController.create(this);
+
+        private final View mView;
+        private final Api34Impl mApi34Impl;
+
+        ViewLifecycleOwner(View view) {
+            mView = view;
+            if (Utilities.ATLEAST_U) {
+                mApi34Impl = new Api34Impl();
+            } else {
+                mApi34Impl = null;
+            }
+
+            mSavedStateRegistryController.performRestore(null);
+        }
+
+        @NonNull
+        @Override
+        public Lifecycle getLifecycle() {
+            return mLifecycleRegistry;
+        }
+
+        @NonNull
+        @Override
+        public SavedStateRegistry getSavedStateRegistry() {
+            return mSavedStateRegistryController.getSavedStateRegistry();
+        }
+
+        void onCreate() {
+            mLifecycleRegistry.setCurrentState(Lifecycle.State.CREATED);
+            if (Utilities.ATLEAST_U) {
+                mApi34Impl.addOnWindowVisibilityChangeListener();
+            }
+            mView.getViewTreeObserver().addOnWindowFocusChangeListener(
+                    mWindowFocusListener);
+            updateState();
+        }
+
+        void onDestroy() {
+            if (Utilities.ATLEAST_U) {
+                mApi34Impl.removeOnWindowVisibilityChangeListener();
+            }
+            mView.getViewTreeObserver().removeOnWindowFocusChangeListener(
+                    mWindowFocusListener);
+            mLifecycleRegistry.setCurrentState(Lifecycle.State.DESTROYED);
+        }
+
+        private void updateState() {
+            Lifecycle.State state =
+                    mView.getWindowVisibility() != View.VISIBLE ? Lifecycle.State.CREATED
+                            : (!mView.hasWindowFocus() ? Lifecycle.State.STARTED
+                                    : Lifecycle.State.RESUMED);
+            mLifecycleRegistry.setCurrentState(state);
+        }
+
+        @RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
+        private class Api34Impl {
+            private final ViewTreeObserver.OnWindowVisibilityChangeListener
+                    mWindowVisibilityListener =
+                    visibility -> updateState();
+
+            void addOnWindowVisibilityChangeListener() {
+                mView.getViewTreeObserver().addOnWindowVisibilityChangeListener(
+                        mWindowVisibilityListener);
+            }
+
+            void removeOnWindowVisibilityChangeListener() {
+                mView.getViewTreeObserver().removeOnWindowVisibilityChangeListener(
+                        mWindowVisibilityListener);
+            }
+        }
+    }
+}
diff --git a/src/com/android/launcher3/views/FloatingIconView.java b/src/com/android/launcher3/views/FloatingIconView.java
index efc83eb..4d0e2af 100644
--- a/src/com/android/launcher3/views/FloatingIconView.java
+++ b/src/com/android/launcher3/views/FloatingIconView.java
@@ -15,8 +15,12 @@
  */
 package com.android.launcher3.views;
 
+import static android.view.Gravity.LEFT;
+
 import static com.android.launcher3.Utilities.getBadge;
 import static com.android.launcher3.Utilities.getFullDrawable;
+import static com.android.launcher3.Utilities.mapToRange;
+import static com.android.launcher3.anim.Interpolators.LINEAR;
 import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
 import static com.android.launcher3.views.IconLabelDotView.setIconAndDotVisible;
 
@@ -76,7 +80,6 @@
 
     public static final float SHAPE_PROGRESS_DURATION = 0.10f;
     private static final RectF sTmpRectF = new RectF();
-    private static final Object[] sTmpObjArray = new Object[1];
 
     private Runnable mEndRunnable;
     private CancellationSignal mLoadIconSignal;
@@ -93,6 +96,12 @@
     private ClipIconView mClipIconView;
     private @Nullable Drawable mBadge;
 
+    // A view whose visibility should update in sync with mOriginalIcon.
+    private @Nullable View mMatchVisibilityView;
+
+    // A view that will fade out as the animation progresses.
+    private @Nullable View mFadeOutView;
+
     private View mOriginalIcon;
     private RectF mPositionOut;
     private Runnable mOnTargetChangeRunnable;
@@ -141,17 +150,21 @@
     /**
      * Positions this view to match the size and location of {@param rect}.
      * @param alpha The alpha[0, 1] of the entire floating view.
-     * @param fgIconAlpha The alpha[0-255] of the foreground layer of the icon (if applicable).
      * @param progress A value from [0, 1] that represents the animation progress.
      * @param shapeProgressStart The progress value at which to start the shape reveal.
      * @param cornerRadius The corner radius of {@param rect}.
      * @param isOpening True if view is used for app open animation, false for app close animation.
      */
-    public void update(float alpha, int fgIconAlpha, RectF rect, float progress,
-            float shapeProgressStart, float cornerRadius, boolean isOpening) {
+    public void update(float alpha, RectF rect, float progress, float shapeProgressStart,
+            float cornerRadius, boolean isOpening) {
         setAlpha(alpha);
-        mClipIconView.update(rect, progress, shapeProgressStart, cornerRadius, fgIconAlpha,
-                isOpening, this, mLauncher.getDeviceProfile());
+        mClipIconView.update(rect, progress, shapeProgressStart, cornerRadius, isOpening, this,
+                mLauncher.getDeviceProfile());
+
+        if (mFadeOutView != null) {
+            // The alpha goes from 1 to 0 when progress is 0 and 0.33 respectively.
+            mFadeOutView.setAlpha(1 - Math.min(1f, mapToRange(progress, 0, 0.33f, 0, 1, LINEAR)));
+        }
     }
 
     @Override
@@ -181,8 +194,10 @@
         updatePosition(positionOut, lp);
         setLayoutParams(lp);
 
-        mClipIconView.setLayoutParams(new FrameLayout.LayoutParams(lp.width, lp.height));
-        mBtvDrawable.setLayoutParams(new FrameLayout.LayoutParams(lp.width, lp.height));
+        // For code simplicity, we always layout the child views using Gravity.LEFT
+        // and manually handle RTL for FloatingIconView when positioning it on the screen.
+        mClipIconView.setLayoutParams(new FrameLayout.LayoutParams(lp.width, lp.height, LEFT));
+        mBtvDrawable.setLayoutParams(new FrameLayout.LayoutParams(lp.width, lp.height, LEFT));
     }
 
     private void updatePosition(RectF pos, InsettableFrameLayout.LayoutParams lp) {
@@ -273,12 +288,13 @@
         } else {
             int width = (int) pos.width();
             int height = (int) pos.height();
+            Object[] tmpObjArray = new Object[1];
             if (supportsAdaptiveIcons) {
                 boolean shouldThemeIcon = btvIcon instanceof FastBitmapDrawable
                         && ((FastBitmapDrawable) btvIcon).isThemed();
-                drawable = getFullDrawable(l, info, width, height, shouldThemeIcon, sTmpObjArray);
+                drawable = getFullDrawable(l, info, width, height, shouldThemeIcon, tmpObjArray);
                 if (drawable instanceof AdaptiveIconDrawable) {
-                    badge = getBadge(l, info, sTmpObjArray[0]);
+                    badge = getBadge(l, info, tmpObjArray[0]);
                 } else {
                     // The drawable we get back is not an adaptive icon, so we need to use the
                     // BubbleTextView icon that is already legacy treated.
@@ -290,7 +306,7 @@
                     drawable = btvIcon;
                 } else {
                     drawable = getFullDrawable(l, info, width, height, true /* shouldThemeIcon */,
-                            sTmpObjArray);
+                            tmpObjArray);
                 }
             }
         }
@@ -382,7 +398,7 @@
      * Checks if the icon result is loaded. If true, we set the icon immediately. Else, we add a
      * callback to set the icon once the icon result is loaded.
      */
-    private void checkIconResult(View originalView) {
+    private void checkIconResult() {
         CancellationSignal cancellationSignal = new CancellationSignal();
 
         if (mIconLoadResult == null) {
@@ -395,7 +411,7 @@
                 setIcon(mIconLoadResult.drawable, mIconLoadResult.badge,
                         mIconLoadResult.btvDrawable, mIconLoadResult.iconOffset);
                 setVisibility(VISIBLE);
-                setIconAndDotVisible(originalView, false);
+                updateViewsVisibility(false  /* isVisible */);
             } else {
                 mIconLoadResult.onIconLoaded = () -> {
                     if (cancellationSignal.isCanceled()) {
@@ -406,7 +422,7 @@
                             mIconLoadResult.btvDrawable, mIconLoadResult.iconOffset);
 
                     setVisibility(VISIBLE);
-                    setIconAndDotVisible(originalView, false);
+                    updateViewsVisibility(false  /* isVisible */);
                 };
                 mLoadIconSignal = cancellationSignal;
             }
@@ -477,9 +493,9 @@
             // No need to wait for icon load since we can display the BubbleTextView drawable.
             setVisibility(View.VISIBLE);
         }
-        if (!mIsOpening && mOriginalIcon != null) {
+        if (!mIsOpening) {
             // When closing an app, we want the item on the workspace to be invisible immediately
-            setIconAndDotVisible(mOriginalIcon, false);
+            updateViewsVisibility(false  /* isVisible */);
         }
     }
 
@@ -558,13 +574,16 @@
     /**
      * Creates a floating icon view for {@param originalView}.
      * @param originalView The view to copy
+     * @param visibilitySyncView A view whose visibility should update in sync with originalView.
+     * @param fadeOutView A view that will fade out as the animation progresses.
      * @param hideOriginal If true, it will hide {@param originalView} while this view is visible.
      *                     Else, we will not draw anything in this view.
      * @param positionOut Rect that will hold the size and position of v.
      * @param isOpening True if this view replaces the icon for app open animation.
      */
     public static FloatingIconView getFloatingIconView(Launcher launcher, View originalView,
-            boolean hideOriginal, RectF positionOut, boolean isOpening) {
+            @Nullable View visibilitySyncView, @Nullable View fadeOutView, boolean hideOriginal,
+            RectF positionOut, boolean isOpening) {
         final DragLayer dragLayer = launcher.getDragLayer();
         ViewGroup parent = (ViewGroup) dragLayer.getParent();
         FloatingIconView view = launcher.getViewCache().getView(R.layout.floating_icon_view,
@@ -574,6 +593,8 @@
         // Init properties before getting the drawable.
         view.mIsOpening = isOpening;
         view.mOriginalIcon = originalView;
+        view.mMatchVisibilityView = visibilitySyncView;
+        view.mFadeOutView = fadeOutView;
         view.mPositionOut = positionOut;
 
         // Get the drawable on the background thread
@@ -593,7 +614,8 @@
         view.matchPositionOf(launcher, originalView, isOpening, positionOut);
 
         // We need to add it to the overlay, but keep it invisible until animation starts..
-        setIconAndDotVisible(view, false);
+        view.setVisibility(View.INVISIBLE);
+
         parent.addView(view);
         dragLayer.addView(view.mListenerView);
         view.mListenerView.setListener(view::fastFinish);
@@ -601,8 +623,12 @@
         view.mEndRunnable = () -> {
             view.mEndRunnable = null;
 
+            if (view.mFadeOutView != null) {
+                view.mFadeOutView.setAlpha(1f);
+            }
+
             if (hideOriginal) {
-                setIconAndDotVisible(originalView, true);
+                view.updateViewsVisibility(true /* isVisible */);
                 view.finish(dragLayer);
             } else {
                 view.finish(dragLayer);
@@ -613,12 +639,21 @@
         // Must be called after the fastFinish listener and end runnable is created so that
         // the icon is not left in a hidden state.
         if (shouldLoadIcon) {
-            view.checkIconResult(originalView);
+            view.checkIconResult();
         }
 
         return view;
     }
 
+    private void updateViewsVisibility(boolean isVisible) {
+        if (mOriginalIcon != null) {
+            setIconAndDotVisible(mOriginalIcon, isVisible);
+        }
+        if (mMatchVisibilityView != null) {
+            setIconAndDotVisible(mMatchVisibilityView, isVisible);
+        }
+    }
+
     private void finish(DragLayer dragLayer) {
         ((ViewGroup) dragLayer.getParent()).removeView(this);
         dragLayer.removeView(mListenerView);
@@ -644,13 +679,14 @@
         mOriginalIcon = null;
         mOnTargetChangeRunnable = null;
         mBadge = null;
-        sTmpObjArray[0] = null;
         sRecycledFetchIconId = sFetchIconId;
         mIconLoadResult = null;
         mClipIconView.recycle();
         mBtvDrawable.setBackground(null);
         mFastFinishRunnable = null;
         mIconOffsetY = 0;
+        mMatchVisibilityView = null;
+        mFadeOutView = null;
     }
 
     private static class IconLoadResult {
diff --git a/src/com/android/launcher3/views/IconButtonView.java b/src/com/android/launcher3/views/IconButtonView.java
new file mode 100644
index 0000000..0ac1919
--- /dev/null
+++ b/src/com/android/launcher3/views/IconButtonView.java
@@ -0,0 +1,140 @@
+/*
+ * 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.launcher3.views;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.content.res.ColorStateList;
+import android.content.res.TypedArray;
+import android.graphics.Bitmap;
+import android.graphics.BlendMode;
+import android.graphics.BlendModeColorFilter;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Rect;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
+import android.util.AttributeSet;
+import android.view.accessibility.AccessibilityEvent;
+
+import androidx.annotation.ColorInt;
+import androidx.annotation.NonNull;
+
+import com.android.launcher3.BubbleTextView;
+import com.android.launcher3.icons.BaseIconFactory;
+import com.android.launcher3.icons.FastBitmapDrawable;
+import com.android.launcher3.icons.LauncherIcons;
+import com.android.launcher3.util.MultiTranslateDelegate;
+
+/**
+ * Button in Taskbar that shows a tinted background and foreground.
+ */
+public class IconButtonView extends BubbleTextView {
+
+    private static final int[] ATTRS = {android.R.attr.icon};
+
+    private static final int INDEX_TASKBAR_ALL_APPS_ICON = MultiTranslateDelegate.COUNT;
+    private static final int MY_COUNT = MultiTranslateDelegate.COUNT + 1;
+
+    private final MultiTranslateDelegate mTranslateDelegate =
+            new MultiTranslateDelegate(this, MY_COUNT, MultiTranslateDelegate.COUNT);
+
+    public IconButtonView(Context context) {
+        this(context, null);
+    }
+
+    public IconButtonView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public IconButtonView(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+
+        TypedArray a = context.obtainStyledAttributes(attrs, ATTRS, defStyle, 0);
+        Drawable fg = a.getDrawable(0);
+        a.recycle();
+
+        ColorStateList tintList = getBackgroundTintList();
+        int tint = tintList == null ? Color.WHITE : tintList.getDefaultColor();
+
+        if (fg == null) {
+            fg = new ColorDrawable(Color.TRANSPARENT);
+        }
+        try (BaseIconFactory factory = LauncherIcons.obtain(context)) {
+            setIcon(new IconDrawable(factory.getWhiteShadowLayer(), tint, fg));
+        }
+    }
+
+    @Override
+    public void onPopulateAccessibilityEvent(AccessibilityEvent event) {
+        super.onPopulateAccessibilityEvent(event);
+        event.getText().add(this.getContentDescription());
+    }
+
+    /** Sets given Drawable as icon */
+    public void setIconDrawable(@NonNull Drawable drawable) {
+        ColorStateList tintList = getBackgroundTintList();
+        int tint = tintList == null ? Color.WHITE : tintList.getDefaultColor();
+        try (BaseIconFactory factory = LauncherIcons.obtain(getContext())) {
+            setIcon(new IconDrawable(factory.getWhiteShadowLayer(), tint, drawable));
+        }
+    }
+
+    /** Updates the color of the icon's foreground layer. */
+    public void setForegroundTint(@ColorInt int tintColor) {
+        FastBitmapDrawable icon = getIcon();
+        if (icon instanceof IconDrawable) {
+            ((IconDrawable) icon).mFg.setTint(tintColor);
+        }
+    }
+
+    @Override
+    public MultiTranslateDelegate getTranslateDelegate() {
+        return mTranslateDelegate;
+    }
+
+    /**
+     * Sets translationX for taskbar all apps icon
+     */
+    public void setTranslationXForTaskbarAllAppsIcon(float translationX) {
+        getTranslateDelegate().getTranslationX(INDEX_TASKBAR_ALL_APPS_ICON).setValue(translationX);
+    }
+
+    private static class IconDrawable extends FastBitmapDrawable {
+
+        private final Drawable mFg;
+
+        @TargetApi(Build.VERSION_CODES.TIRAMISU)
+        IconDrawable(Bitmap b, int colorBg, Drawable fg) {
+            super(b);
+            mPaint.setColorFilter(new BlendModeColorFilter(colorBg, BlendMode.SRC_IN));
+            mFg = fg;
+        }
+
+        @Override
+        protected void drawInternal(Canvas canvas, Rect bounds) {
+            super.drawInternal(canvas, bounds);
+            mFg.draw(canvas);
+        }
+
+        @Override
+        protected void onBoundsChange(Rect bounds) {
+            super.onBoundsChange(bounds);
+            mFg.setBounds(bounds);
+        }
+    }
+}
diff --git a/src/com/android/launcher3/views/OptionsPopupView.java b/src/com/android/launcher3/views/OptionsPopupView.java
index 2a9a8a5..4641e31 100644
--- a/src/com/android/launcher3/views/OptionsPopupView.java
+++ b/src/com/android/launcher3/views/OptionsPopupView.java
@@ -15,15 +15,18 @@
  */
 package com.android.launcher3.views;
 
-import static com.android.launcher3.Utilities.EXTRA_WALLPAPER_FLAVOR;
-import static com.android.launcher3.Utilities.EXTRA_WALLPAPER_LAUNCH_SOURCE;
-import static com.android.launcher3.Utilities.EXTRA_WALLPAPER_OFFSET;
+import static androidx.core.content.ContextCompat.getColorStateList;
+
+import static com.android.launcher3.LauncherState.EDIT_MODE;
+import static com.android.launcher3.config.FeatureFlags.ENABLE_MATERIAL_U_POPUP;
+import static com.android.launcher3.config.FeatureFlags.MULTI_SELECT_EDIT_MODE;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.IGNORE;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_SETTINGS_BUTTON_TAP_OR_LONGPRESS;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_WIDGETSTRAY_BUTTON_TAP_OR_LONGPRESS;
 
 import android.content.Context;
 import android.content.Intent;
+import android.graphics.Color;
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.graphics.drawable.Drawable;
@@ -34,6 +37,7 @@
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.View.OnLongClickListener;
+import android.view.ViewGroup;
 import android.widget.Toast;
 
 import androidx.annotation.Nullable;
@@ -50,7 +54,8 @@
 import com.android.launcher3.popup.ArrowPopup;
 import com.android.launcher3.shortcuts.DeepShortcutView;
 import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
+import com.android.launcher3.util.PackageManagerHelper;
 import com.android.launcher3.widget.picker.WidgetsFullSheet;
 
 import java.util.ArrayList;
@@ -62,6 +67,13 @@
 public class OptionsPopupView extends ArrowPopup<Launcher>
         implements OnClickListener, OnLongClickListener {
 
+    // An intent extra to indicate the horizontal scroll of the wallpaper.
+    private static final String EXTRA_WALLPAPER_OFFSET = "com.android.launcher3.WALLPAPER_OFFSET";
+    private static final String EXTRA_WALLPAPER_FLAVOR = "com.android.launcher3.WALLPAPER_FLAVOR";
+    // An intent extra to indicate the launch source by launcher.
+    private static final String EXTRA_WALLPAPER_LAUNCH_SOURCE =
+            "com.android.wallpaper.LAUNCH_SOURCE";
+
     private final ArrayMap<View, OptionItem> mItemMap = new ArrayMap<>();
     private RectF mTargetRect;
     private boolean mShouldAddArrow;
@@ -134,14 +146,23 @@
         mTargetRect.roundOut(outPos);
     }
 
-    public static OptionsPopupView show(
-            Launcher launcher, RectF targetRect, List<OptionItem> items, boolean shouldAddArrow) {
+    @Override
+    public void assignMarginsAndBackgrounds(ViewGroup viewGroup) {
+        if (ENABLE_MATERIAL_U_POPUP.get()) {
+            assignMarginsAndBackgrounds(viewGroup,
+                    getColorStateList(getContext(), mColorIds[0]).getDefaultColor());
+        } else {
+            assignMarginsAndBackgrounds(viewGroup, Color.TRANSPARENT);
+        }
+    }
+
+    public static OptionsPopupView show(ActivityContext launcher, RectF targetRect,
+            List<OptionItem> items, boolean shouldAddArrow) {
         return show(launcher, targetRect, items, shouldAddArrow, 0 /* width */);
     }
 
-    public static OptionsPopupView show(
-            Launcher launcher, RectF targetRect, List<OptionItem> items, boolean shouldAddArrow,
-            int width) {
+    public static OptionsPopupView show(ActivityContext launcher, RectF targetRect,
+            List<OptionItem> items, boolean shouldAddArrow, int width) {
         OptionsPopupView popup = (OptionsPopupView) launcher.getLayoutInflater()
                 .inflate(R.layout.longpress_options_menu, launcher.getDragLayer(), false);
         popup.mTargetRect = targetRect;
@@ -160,30 +181,20 @@
             popup.mItemMap.put(view, item);
         }
 
-        popup.addPreDrawForColorExtraction(launcher);
         popup.show();
         return popup;
     }
 
-    @Override
-    protected List<View> getChildrenForColorExtraction() {
-        int childCount = getChildCount();
-        ArrayList<View> children = new ArrayList<>(childCount);
-        for (int i = 0; i < childCount; ++i) {
-            children.add(getChildAt(i));
-        }
-        return children;
-    }
-
     /**
      * Returns the list of supported actions
      */
     public static ArrayList<OptionItem> getOptions(Launcher launcher) {
         ArrayList<OptionItem> options = new ArrayList<>();
-        int resString = Utilities.existsStyleWallpapers(launcher) ?
-                R.string.styles_wallpaper_button_text : R.string.wallpaper_button_text;
-        int resDrawable = Utilities.existsStyleWallpapers(launcher) ?
-                R.drawable.ic_palette : R.drawable.ic_wallpaper;
+        boolean styleWallpaperExists = styleWallpapersExists(launcher);
+        int resString = styleWallpaperExists
+                ? R.string.styles_wallpaper_button_text : R.string.wallpaper_button_text;
+        int resDrawable = styleWallpaperExists
+                ? R.drawable.ic_palette : R.drawable.ic_wallpaper;
         options.add(new OptionItem(launcher,
                 resString,
                 resDrawable,
@@ -196,6 +207,13 @@
                     LAUNCHER_WIDGETSTRAY_BUTTON_TAP_OR_LONGPRESS,
                     OptionsPopupView::onWidgetsClicked));
         }
+        if (MULTI_SELECT_EDIT_MODE.get()) {
+            options.add(new OptionItem(launcher,
+                    R.string.edit_home_screen,
+                    R.drawable.enter_home_gardening_icon,
+                    LAUNCHER_SETTINGS_BUTTON_TAP_OR_LONGPRESS,
+                    OptionsPopupView::enterHomeGardening));
+        }
         options.add(new OptionItem(launcher,
                 R.string.settings_button_text,
                 R.drawable.ic_setting,
@@ -204,6 +222,12 @@
         return options;
     }
 
+    private static boolean enterHomeGardening(View view) {
+        Launcher launcher = Launcher.getLauncher(view.getContext());
+        launcher.getStateManager().goToState(EDIT_MODE);
+        return true;
+    }
+
     private static boolean onWidgetsClicked(View view) {
         return openWidgets(Launcher.getLauncher(view.getContext())) != null;
     }
@@ -251,7 +275,7 @@
                 .putExtra(EXTRA_WALLPAPER_OFFSET,
                         launcher.getWorkspace().getWallpaperOffsetForCenterPage())
                 .putExtra(EXTRA_WALLPAPER_LAUNCH_SOURCE, "app_launched_launcher");
-        if (!Utilities.existsStyleWallpapers(launcher)) {
+        if (!styleWallpapersExists(launcher)) {
             intent.putExtra(EXTRA_WALLPAPER_FLAVOR, "wallpaper_only");
         } else {
             intent.putExtra(EXTRA_WALLPAPER_FLAVOR, "focus_wallpaper");
@@ -260,7 +284,7 @@
         if (!TextUtils.isEmpty(pickerPackage)) {
             intent.setPackage(pickerPackage);
         }
-        return launcher.startActivitySafely(v, intent, placeholderInfo(intent));
+        return launcher.startActivitySafely(v, intent, placeholderInfo(intent)) != null;
     }
 
     static WorkspaceItemInfo placeholderInfo(Intent intent) {
@@ -299,4 +323,9 @@
             this.clickListener = clickListener;
         }
     }
+
+    private static boolean styleWallpapersExists(Context context) {
+        return context.getPackageManager().resolveActivity(
+                PackageManagerHelper.getStyleWallpapersIntent(context), 0) != null;
+    }
 }
diff --git a/src/com/android/launcher3/views/RecyclerViewFastScroller.java b/src/com/android/launcher3/views/RecyclerViewFastScroller.java
index 11ca130..c0b24fa 100644
--- a/src/com/android/launcher3/views/RecyclerViewFastScroller.java
+++ b/src/com/android/launcher3/views/RecyclerViewFastScroller.java
@@ -20,8 +20,6 @@
 
 import static androidx.recyclerview.widget.RecyclerView.SCROLL_STATE_IDLE;
 
-import static com.android.launcher3.util.UiThreadHelper.hideKeyboardAsync;
-
 import android.animation.ObjectAnimator;
 import android.content.Context;
 import android.content.res.Resources;
@@ -121,7 +119,6 @@
     // prevent jumping, this offset is applied as the user scrolls.
     protected int mTouchOffsetY;
     protected int mThumbOffsetY;
-    protected int mRvOffsetY;
 
     // Fast scroller popup
     private TextView mPopupView;
@@ -174,7 +171,14 @@
         ta.recycle();
     }
 
-    public void setRecyclerView(FastScrollRecyclerView rv, TextView popupView) {
+    /** Sets the popup view to show while the scroller is being dragged */
+    public void setPopupView(TextView popupView) {
+        mPopupView = popupView;
+        mPopupView.setBackground(
+                new FastScrollThumbDrawable(mThumbPaint, Utilities.isRtl(getResources())));
+    }
+
+    public void setRecyclerView(FastScrollRecyclerView rv) {
         if (mRv != null && mOnScrollListener != null) {
             mRv.removeOnScrollListener(mOnScrollListener);
         }
@@ -192,10 +196,6 @@
                 mRv.onUpdateScrollbar(dy);
             }
         });
-
-        mPopupView = popupView;
-        mPopupView.setBackground(
-                new FastScrollThumbDrawable(mThumbPaint, Utilities.isRtl(getResources())));
     }
 
     public void reattachThumbToScroll() {
@@ -204,16 +204,11 @@
 
     public void setThumbOffsetY(int y) {
         if (mThumbOffsetY == y) {
-            int rvCurrentOffsetY = mRv.getCurrentScrollY();
-            if (mRvOffsetY != rvCurrentOffsetY) {
-                mRvOffsetY = mRv.getCurrentScrollY();
-            }
             return;
         }
         updatePopupY(y);
         mThumbOffsetY = y;
         invalidate();
-        mRvOffsetY = mRv.getCurrentScrollY();
     }
 
     public int getThumbOffsetY() {
@@ -286,15 +281,7 @@
                 break;
             case MotionEvent.ACTION_UP:
             case MotionEvent.ACTION_CANCEL:
-                mRv.onFastScrollCompleted();
-                mTouchOffsetY = 0;
-                mLastTouchY = 0;
-                mIgnoreDragGesture = false;
-                if (mIsDragging) {
-                    mIsDragging = false;
-                    animatePopupVisibility(false);
-                    showActiveScrollbar(false);
-                }
+                endFastScrolling();
                 break;
         }
         if (DEBUG) {
@@ -308,7 +295,7 @@
     }
 
     private void calcTouchOffsetAndPrepToFastScroll(int downY, int lastY) {
-        hideKeyboardAsync(ActivityContext.lookupContext(getContext()), getWindowToken());
+        ActivityContext.lookupContext(getContext()).hideKeyboard();
         mIsDragging = true;
         if (mCanThumbDetach) {
             mIsThumbDetached = true;
@@ -333,8 +320,22 @@
         setThumbOffsetY((int) mLastTouchY);
     }
 
+    /** End any active fast scrolling touch handling, if applicable. */
+    public void endFastScrolling() {
+        mRv.onFastScrollCompleted();
+        mTouchOffsetY = 0;
+        mLastTouchY = 0;
+        mIgnoreDragGesture = false;
+        if (mIsDragging) {
+            mIsDragging = false;
+            animatePopupVisibility(false);
+            showActiveScrollbar(false);
+        }
+    }
+
+    @Override
     public void onDraw(Canvas canvas) {
-        if (mThumbOffsetY < 0) {
+        if (mThumbOffsetY < 0 || mRv == null) {
             return;
         }
         int saveCount = canvas.save();
diff --git a/src/com/android/launcher3/views/ScrimView.java b/src/com/android/launcher3/views/ScrimView.java
index 4c0bfde..ca80c51 100644
--- a/src/com/android/launcher3/views/ScrimView.java
+++ b/src/com/android/launcher3/views/ScrimView.java
@@ -46,6 +46,7 @@
     private int mBackgroundColor;
     private boolean mIsVisible = true;
     private boolean mLastDispatchedOpaqueness;
+    private float mHeaderScale = 1f;
 
     public ScrimView(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -76,6 +77,10 @@
         super.setBackgroundColor(color);
     }
 
+    public int getBackgroundColor() {
+        return mBackgroundColor;
+    }
+
     @Override
     public void onVisibilityAggregated(boolean isVisible) {
         super.onVisibilityAggregated(isVisible);
@@ -91,7 +96,16 @@
     protected void onDraw(Canvas canvas) {
         super.onDraw(canvas);
         if (mDrawingController != null) {
-            mDrawingController.drawOnScrim(canvas);
+            mDrawingController.drawOnScrimWithScale(canvas, mHeaderScale);
+        }
+    }
+
+    /** Set scrim header's scale and bottom offset. */
+    public void setScrimHeaderScale(float scale) {
+        boolean hasChanged = mHeaderScale != scale;
+        mHeaderScale = scale;
+        if (hasChanged) {
+            invalidate();
         }
     }
 
@@ -176,6 +190,6 @@
         /**
          * Called inside ScrimView#OnDraw
          */
-        void drawOnScrim(Canvas canvas);
+        void drawOnScrimWithScale(Canvas canvas, float scale);
     }
 }
diff --git a/src/com/android/launcher3/views/Snackbar.java b/src/com/android/launcher3/views/Snackbar.java
index e582114..2460be1 100644
--- a/src/com/android/launcher3/views/Snackbar.java
+++ b/src/com/android/launcher3/views/Snackbar.java
@@ -31,6 +31,7 @@
 import androidx.annotation.Nullable;
 
 import com.android.launcher3.AbstractFloatingView;
+import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.R;
 import com.android.launcher3.anim.Interpolators;
 import com.android.launcher3.compat.AccessibilityManagerCompat;
@@ -64,9 +65,26 @@
         show(activity, labelStringRedId, NO_ID, onDismissed, null);
     }
 
+    /** Show a snackbar with just a label. */
+    public static <T extends Context & ActivityContext> void show(T activity, String labelString,
+            Runnable onDismissed) {
+        show(activity, labelString, NO_ID, onDismissed, null);
+    }
+
     /** Show a snackbar with a label and action. */
     public static <T extends Context & ActivityContext> void show(T activity, int labelStringResId,
             int actionStringResId, Runnable onDismissed, @Nullable Runnable onActionClicked) {
+        show(
+                activity,
+                activity.getResources().getString(labelStringResId),
+                actionStringResId,
+                onDismissed,
+                onActionClicked);
+    }
+
+    /** Show a snackbar with a label and action. */
+    public static <T extends Context & ActivityContext> void show(T activity, String labelString,
+            int actionStringResId, Runnable onDismissed, @Nullable Runnable onActionClicked) {
         closeOpenViews(activity, true, TYPE_SNACKBAR);
         Snackbar snackbar = new Snackbar(activity, null);
         // Set some properties here since inflated xml only contains the children.
@@ -97,11 +115,14 @@
                 dragLayer.getWidth() - maxMarginLeftRight * 2 - insets.left - insets.right,
                 absoluteMaxWidth);
         params.width = minWidth;
-        params.setMargins(0, 0, 0, marginBottom + insets.bottom);
+        DeviceProfile deviceProfile = activity.getDeviceProfile();
+        params.setMargins(0, 0, 0, marginBottom
+                + (deviceProfile.isTaskbarPresent
+                ? deviceProfile.taskbarHeight + deviceProfile.getTaskbarOffsetY()
+                : insets.bottom));
 
         TextView labelView = snackbar.findViewById(R.id.label);
-        String labelText = res.getString(labelStringResId);
-        labelView.setText(labelText);
+        labelView.setText(labelString);
 
         TextView actionView = snackbar.findViewById(R.id.action);
         float actionWidth;
@@ -122,7 +143,7 @@
             actionView.setVisibility(GONE);
         }
 
-        int totalContentWidth = (int) (labelView.getPaint().measureText(labelText) + actionWidth)
+        int totalContentWidth = (int) (labelView.getPaint().measureText(labelString) + actionWidth)
                 + labelView.getPaddingRight() + labelView.getPaddingLeft()
                 + padding * 2;
         if (totalContentWidth > params.width) {
diff --git a/src/com/android/launcher3/views/StickyHeaderLayout.java b/src/com/android/launcher3/views/StickyHeaderLayout.java
new file mode 100644
index 0000000..d6481a9
--- /dev/null
+++ b/src/com/android/launcher3/views/StickyHeaderLayout.java
@@ -0,0 +1,327 @@
+/*
+ * 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.launcher3.views;
+
+import static android.view.View.MeasureSpec.EXACTLY;
+import static android.view.View.MeasureSpec.makeMeasureSpec;
+
+import static com.android.launcher3.anim.AnimatorListeners.forEndCallback;
+
+import android.animation.Animator;
+import android.animation.ObjectAnimator;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.util.AttributeSet;
+import android.util.FloatProperty;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.android.launcher3.R;
+
+/**
+ * A {@link LinearLayout} container which allows scrolling parts of its content based on the
+ * scroll of a different view. Views which are marked as sticky are not scrolled, giving the
+ * illusion of a sticky header.
+ */
+public class StickyHeaderLayout extends LinearLayout implements
+        RecyclerView.OnChildAttachStateChangeListener {
+
+    private static final FloatProperty<StickyHeaderLayout> SCROLL_OFFSET =
+            new FloatProperty<StickyHeaderLayout>("scrollAnimOffset") {
+                @Override
+                public void setValue(StickyHeaderLayout view, float offset) {
+                    view.mScrollOffset = offset;
+                    view.updateHeaderScroll();
+                }
+
+                @Override
+                public Float get(StickyHeaderLayout view) {
+                    return view.mScrollOffset;
+                }
+            };
+
+    private static final MotionEventProxyMethod INTERCEPT_PROXY = ViewGroup::onInterceptTouchEvent;
+    private static final MotionEventProxyMethod TOUCH_PROXY = ViewGroup::onTouchEvent;
+
+    private RecyclerView mCurrentRecyclerView;
+    private EmptySpaceView mCurrentEmptySpaceView;
+
+    private float mLastScroll = 0;
+    private float mScrollOffset = 0;
+    private Animator mOffsetAnimator;
+
+    private boolean mShouldForwardToRecyclerView = false;
+    private int mHeaderHeight;
+
+    public StickyHeaderLayout(Context context) {
+        this(context, /* attrs= */ null);
+    }
+
+    public StickyHeaderLayout(Context context, AttributeSet attrs) {
+        this(context, attrs, /* defStyleAttr= */ 0);
+    }
+
+    public StickyHeaderLayout(Context context, AttributeSet attrs, int defStyleAttr) {
+        this(context, attrs, defStyleAttr, /* defStyleRes= */ 0);
+    }
+
+    public StickyHeaderLayout(Context context, AttributeSet attrs, int defStyleAttr,
+            int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+    }
+
+    /**
+     * Sets the recycler view, this sticky header should track
+     */
+    public void setCurrentRecyclerView(RecyclerView currentRecyclerView) {
+        boolean animateReset = mCurrentRecyclerView != null;
+        if (mCurrentRecyclerView != null) {
+            mCurrentRecyclerView.removeOnChildAttachStateChangeListener(this);
+        }
+        mCurrentRecyclerView = currentRecyclerView;
+        mCurrentRecyclerView.addOnChildAttachStateChangeListener(this);
+        findCurrentEmptyView();
+        reset(animateReset);
+    }
+
+    public int getHeaderHeight() {
+        return mHeaderHeight;
+    }
+
+    private void updateHeaderScroll() {
+        mLastScroll = getCurrentScroll();
+        int count = getChildCount();
+        for (int i = 0; i < count; i++) {
+            View child = getChildAt(i);
+            MyLayoutParams lp = (MyLayoutParams) child.getLayoutParams();
+            child.setTranslationY(Math.max(mLastScroll, lp.scrollLimit));
+        }
+    }
+
+    private float getCurrentScroll() {
+        return mScrollOffset + (mCurrentEmptySpaceView == null ? 0 : mCurrentEmptySpaceView.getY());
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+
+        mHeaderHeight = getMeasuredHeight();
+        if (mCurrentEmptySpaceView != null) {
+            mCurrentEmptySpaceView.setFixedHeight(mHeaderHeight);
+        }
+    }
+
+    /** Resets any previous view translation. */
+    public void reset(boolean animate) {
+        if (mOffsetAnimator != null) {
+            mOffsetAnimator.cancel();
+            mOffsetAnimator = null;
+        }
+
+        mScrollOffset = 0;
+        if (!animate) {
+            updateHeaderScroll();
+        } else {
+            float startValue = mLastScroll - getCurrentScroll();
+            mOffsetAnimator = ObjectAnimator.ofFloat(this, SCROLL_OFFSET, startValue, 0);
+            mOffsetAnimator.addListener(forEndCallback(() -> mOffsetAnimator = null));
+            mOffsetAnimator.start();
+        }
+    }
+
+    @Override
+    public boolean onInterceptTouchEvent(MotionEvent event) {
+        return (mShouldForwardToRecyclerView = proxyMotionEvent(event, INTERCEPT_PROXY))
+                || super.onInterceptTouchEvent(event);
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        return mShouldForwardToRecyclerView && proxyMotionEvent(event, TOUCH_PROXY)
+                || super.onTouchEvent(event);
+    }
+
+    private boolean proxyMotionEvent(MotionEvent event, MotionEventProxyMethod method) {
+        float dx = mCurrentRecyclerView.getLeft() - getLeft();
+        float dy = mCurrentRecyclerView.getTop() - getTop();
+        event.offsetLocation(dx, dy);
+        try {
+            return method.proxyEvent(mCurrentRecyclerView, event);
+        } finally {
+            event.offsetLocation(-dx, -dy);
+        }
+    }
+
+    @Override
+    public void onChildViewAttachedToWindow(@NonNull View view) {
+        if (view instanceof EmptySpaceView) {
+            findCurrentEmptyView();
+        }
+    }
+
+    @Override
+    public void onChildViewDetachedFromWindow(@NonNull View view) {
+        if (view == mCurrentEmptySpaceView) {
+            findCurrentEmptyView();
+        }
+    }
+
+    private void findCurrentEmptyView() {
+        if (mCurrentEmptySpaceView != null) {
+            mCurrentEmptySpaceView.setOnYChangeCallback(null);
+            mCurrentEmptySpaceView = null;
+        }
+        int childCount = mCurrentRecyclerView.getChildCount();
+        for (int i = 0; i < childCount; i++) {
+            View view = mCurrentRecyclerView.getChildAt(i);
+            if (view instanceof EmptySpaceView) {
+                mCurrentEmptySpaceView = (EmptySpaceView) view;
+                mCurrentEmptySpaceView.setFixedHeight(getHeaderHeight());
+                mCurrentEmptySpaceView.setOnYChangeCallback(this::updateHeaderScroll);
+                return;
+            }
+        }
+    }
+
+    @Override
+    protected void onLayout(boolean changed, int l, int t, int r, int b) {
+        super.onLayout(changed, l, t, r, b);
+
+        // Update various stick parameters
+        int count = getChildCount();
+        int stickyHeaderHeight = 0;
+        for (int i = 0; i < count; i++) {
+            View v = getChildAt(i);
+            MyLayoutParams lp = (MyLayoutParams) v.getLayoutParams();
+            if (lp.sticky) {
+                lp.scrollLimit = -v.getTop() + stickyHeaderHeight;
+                stickyHeaderHeight += v.getHeight();
+            } else {
+                lp.scrollLimit = Integer.MIN_VALUE;
+            }
+        }
+        updateHeaderScroll();
+    }
+
+    @Override
+    protected LayoutParams generateDefaultLayoutParams() {
+        return new MyLayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
+    }
+
+    @Override
+    protected LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) {
+        return new MyLayoutParams(lp.width, lp.height);
+    }
+
+    @Override
+    public LayoutParams generateLayoutParams(AttributeSet attrs) {
+        return new MyLayoutParams(getContext(), attrs);
+    }
+
+    @Override
+    protected boolean checkLayoutParams(ViewGroup.LayoutParams p) {
+        return p instanceof MyLayoutParams;
+    }
+
+    private static class MyLayoutParams extends LayoutParams {
+
+        public final boolean sticky;
+        public int scrollLimit;
+
+        MyLayoutParams(int width, int height) {
+            super(width, height);
+            sticky = false;
+        }
+
+        MyLayoutParams(Context c, AttributeSet attrs) {
+            super(c, attrs);
+            TypedArray a = c.obtainStyledAttributes(attrs, R.styleable.StickyScroller_Layout);
+            sticky = a.getBoolean(R.styleable.StickyScroller_Layout_layout_sticky, false);
+            a.recycle();
+        }
+    }
+
+    private interface MotionEventProxyMethod {
+
+        boolean proxyEvent(ViewGroup view, MotionEvent event);
+    }
+
+    /**
+     * Empty view which allows listening for 'Y' changes
+     */
+    public static class EmptySpaceView extends View {
+
+        private Runnable mOnYChangeCallback;
+        private int mHeight = 0;
+
+        public EmptySpaceView(Context context) {
+            super(context);
+            animate().setUpdateListener(v -> notifyYChanged());
+        }
+
+        /**
+         * Sets the height for the empty view
+         * @return true if the height changed, false otherwise
+         */
+        public boolean setFixedHeight(int height) {
+            if (mHeight != height) {
+                mHeight = height;
+                requestLayout();
+                return true;
+            }
+            return false;
+        }
+
+        @Override
+        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+            super.onMeasure(widthMeasureSpec, makeMeasureSpec(mHeight, EXACTLY));
+        }
+
+        public void setOnYChangeCallback(Runnable callback) {
+            mOnYChangeCallback = callback;
+        }
+
+        @Override
+        protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+            super.onLayout(changed, left, top, right, bottom);
+            notifyYChanged();
+        }
+
+        @Override
+        public void offsetTopAndBottom(int offset) {
+            super.offsetTopAndBottom(offset);
+            notifyYChanged();
+        }
+
+        @Override
+        public void setTranslationY(float translationY) {
+            super.setTranslationY(translationY);
+            notifyYChanged();
+        }
+
+        private void notifyYChanged() {
+            if (mOnYChangeCallback != null) {
+                mOnYChangeCallback.run();
+            }
+        }
+    }
+}
diff --git a/src/com/android/launcher3/widget/BaseLauncherAppWidgetHostView.java b/src/com/android/launcher3/widget/BaseLauncherAppWidgetHostView.java
index 2742882..580b4f1 100644
--- a/src/com/android/launcher3/widget/BaseLauncherAppWidgetHostView.java
+++ b/src/com/android/launcher3/widget/BaseLauncherAppWidgetHostView.java
@@ -105,6 +105,7 @@
                 mEnforcedRectangle);
         setOutlineProvider(mCornerRadiusEnforcementOutline);
         setClipToOutline(true);
+        invalidateOutline();
     }
 
     /** Returns the corner radius currently enforced, in pixels. */
diff --git a/src/com/android/launcher3/widget/BaseWidgetSheet.java b/src/com/android/launcher3/widget/BaseWidgetSheet.java
index 8962c4f..049131e 100644
--- a/src/com/android/launcher3/widget/BaseWidgetSheet.java
+++ b/src/com/android/launcher3/widget/BaseWidgetSheet.java
@@ -15,24 +15,28 @@
  */
 package com.android.launcher3.widget;
 
+import static com.android.launcher3.anim.Interpolators.EMPHASIZED;
+import static com.android.launcher3.config.FeatureFlags.LARGE_SCREEN_WIDGET_PICKER;
+
 import android.content.Context;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.Point;
 import android.graphics.Rect;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.View.OnLongClickListener;
 import android.view.WindowInsets;
+import android.view.animation.Interpolator;
 import android.widget.Toast;
 
-import androidx.annotation.GuardedBy;
 import androidx.annotation.Nullable;
+import androidx.annotation.Px;
 import androidx.core.view.ViewCompat;
 
 import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
 import com.android.launcher3.DragSource;
 import com.android.launcher3.DropTarget.DragObject;
 import com.android.launcher3.Insettable;
@@ -42,7 +46,7 @@
 import com.android.launcher3.dragndrop.DragOptions;
 import com.android.launcher3.popup.PopupDataProvider;
 import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.touch.ItemLongClickListener;
 import com.android.launcher3.util.SystemUiController;
 import com.android.launcher3.util.Themes;
@@ -56,9 +60,9 @@
  */
 public abstract class BaseWidgetSheet extends AbstractSlideInView<Launcher>
         implements OnClickListener, OnLongClickListener, DragSource,
-        PopupDataProvider.PopupDataChangeListener, Insettable {
+        PopupDataProvider.PopupDataChangeListener, Insettable, OnDeviceProfileChangeListener {
     /** The default number of cells that can fit horizontally in a widget sheet. */
-    protected static final int DEFAULT_MAX_HORIZONTAL_SPANS = 4;
+    public static final int DEFAULT_MAX_HORIZONTAL_SPANS = 4;
 
     protected static final String KEY_WIDGETS_EDUCATION_TIP_SEEN =
             "launcher.widgets_education_tip_seen";
@@ -67,17 +71,20 @@
     /* Touch handling related member variables. */
     private Toast mWidgetInstructionToast;
 
-    private int mContentHorizontalMarginInPx;
+    @Px protected int mContentHorizontalMargin;
+    @Px protected int mWidgetCellHorizontalPadding;
 
     protected int mNavBarScrimHeight;
     private final Paint mNavBarScrimPaint;
 
     public BaseWidgetSheet(Context context, AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr);
-        mContentHorizontalMarginInPx = getResources().getDimensionPixelSize(
+        mContentHorizontalMargin = getResources().getDimensionPixelSize(
                 R.dimen.widget_list_horizontal_margin);
+        mWidgetCellHorizontalPadding = getResources().getDimensionPixelSize(
+                R.dimen.widget_cell_horizontal_padding);
         mNavBarScrimPaint = new Paint();
-        mNavBarScrimPaint.setColor(Themes.getAttrColor(context, R.attr.allAppsNavBarScrimColor));
+        mNavBarScrimPaint.setColor(Themes.getNavBarScrimColor(mActivityContext));
     }
 
     protected int getScrimColor(Context context) {
@@ -91,12 +98,23 @@
                 .normalizeWindowInsets(getContext(), getRootWindowInsets(), new Rect());
         mNavBarScrimHeight = getNavBarScrimHeight(windowInsets);
         mActivityContext.getPopupDataProvider().setChangeListener(this);
+        mActivityContext.addOnDeviceProfileChangeListener(this);
     }
 
     @Override
     protected void onDetachedFromWindow() {
         super.onDetachedFromWindow();
         mActivityContext.getPopupDataProvider().setChangeListener(null);
+        mActivityContext.removeOnDeviceProfileChangeListener(this);
+    }
+
+    @Override
+    public void onDeviceProfileChanged(DeviceProfile dp) {
+        int navBarScrimColor = Themes.getNavBarScrimColor(mActivityContext);
+        if (mNavBarScrimPaint.getColor() != navBarScrimColor) {
+            mNavBarScrimPaint.setColor(navBarScrimColor);
+            invalidate();
+        }
     }
 
     @Override
@@ -117,9 +135,6 @@
 
     @Override
     public boolean onLongClick(View v) {
-        if (TestProtocol.sDebugTracing) {
-            Log.d(TestProtocol.NO_DROP_TARGET, "1");
-        }
         TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "Widgets.onLongClick");
         v.cancelLongPress();
         if (!ItemLongClickListener.canStartDrag(mActivityContext)) return false;
@@ -135,11 +150,11 @@
     @Override
     public void setInsets(Rect insets) {
         mInsets.set(insets);
-        int contentHorizontalMarginInPx = getResources().getDimensionPixelSize(
+        @Px int contentHorizontalMargin = getResources().getDimensionPixelSize(
                 R.dimen.widget_list_horizontal_margin);
-        if (contentHorizontalMarginInPx != mContentHorizontalMarginInPx) {
-            onContentHorizontalMarginChanged(contentHorizontalMarginInPx);
-            mContentHorizontalMarginInPx = contentHorizontalMarginInPx;
+        if (contentHorizontalMargin != mContentHorizontalMargin) {
+            onContentHorizontalMarginChanged(contentHorizontalMargin);
+            mContentHorizontalMargin = contentHorizontalMargin;
         }
     }
 
@@ -174,12 +189,17 @@
      * Measures the dimension of this view and its children by taking system insets, navigation bar,
      * status bar, into account.
      */
-    @GuardedBy("MainThread")
     protected void doMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         DeviceProfile deviceProfile = mActivityContext.getDeviceProfile();
         int widthUsed;
         if (deviceProfile.isTablet) {
             int margin = deviceProfile.allAppsLeftRightMargin;
+            if (deviceProfile.isLandscape
+                    && LARGE_SCREEN_WIDGET_PICKER.get()
+                    && !deviceProfile.isTwoPanels) {
+                margin = getResources().getDimensionPixelSize(
+                        R.dimen.widget_picker_landscape_tablet_left_right_margin);
+            }
             widthUsed = Math.max(2 * margin, 2 * (mInsets.left + mInsets.right));
         } else if (mInsets.bottom > 0) {
             widthUsed = mInsets.left + mInsets.right;
@@ -195,23 +215,7 @@
                 MeasureSpec.getSize(heightMeasureSpec));
     }
 
-    /** Returns the number of cells that can fit horizontally in a given {@code content}. */
-    protected int computeMaxHorizontalSpans(View content, int contentHorizontalPaddingPx) {
-        DeviceProfile deviceProfile = mActivityContext.getDeviceProfile();
-        int availableWidth = content.getMeasuredWidth()
-                - contentHorizontalPaddingPx
-                - (2 * mContentHorizontalMarginInPx);
-        Point cellSize = deviceProfile.getCellSize();
-        if (cellSize.x > 0) {
-            return availableWidth / cellSize.x;
-        }
-        return DEFAULT_MAX_HORIZONTAL_SPANS;
-    }
-
     private boolean beginDraggingWidget(WidgetCell v) {
-        if (TestProtocol.sDebugTracing) {
-            Log.d(TestProtocol.NO_DROP_TARGET, "2");
-        }
         // Get the widget preview as the drag representation
         WidgetImageView image = v.getWidgetView();
 
@@ -246,6 +250,12 @@
         return true;
     }
 
+    @Override
+    protected Interpolator getIdleInterpolator() {
+        return mActivityContext.getDeviceProfile().isTablet
+                ? EMPHASIZED : super.getIdleInterpolator();
+    }
+
     //
     // Drag related handling methods that implement {@link DragSource} interface.
     //
@@ -332,7 +342,7 @@
     /** Returns {@code true} if tip has previously been shown on any of {@link BaseWidgetSheet}. */
     protected boolean hasSeenEducationTip() {
         return mActivityContext.getSharedPrefs().getBoolean(KEY_WIDGETS_EDUCATION_TIP_SEEN, false)
-                || Utilities.IS_RUNNING_IN_TEST_HARNESS;
+                || Utilities.isRunningInTestHarness();
     }
 
     @Override
diff --git a/src/com/android/launcher3/widget/DatabaseWidgetPreviewLoader.java b/src/com/android/launcher3/widget/DatabaseWidgetPreviewLoader.java
index 7030f6d..6f74fd9 100644
--- a/src/com/android/launcher3/widget/DatabaseWidgetPreviewLoader.java
+++ b/src/com/android/launcher3/widget/DatabaseWidgetPreviewLoader.java
@@ -146,8 +146,7 @@
             previewWidth = drawable.getIntrinsicWidth();
             previewHeight = drawable.getIntrinsicHeight();
         } else {
-            Size widgetSize = WidgetSizes.getWidgetPaddedSizePx(mContext, info.provider, dp, spanX,
-                    spanY);
+            Size widgetSize = WidgetSizes.getWidgetSizePx(dp, spanX, spanY);
             previewWidth = widgetSize.getWidth();
             previewHeight = widgetSize.getHeight();
         }
diff --git a/src/com/android/launcher3/widget/LauncherAppWidgetHost.java b/src/com/android/launcher3/widget/LauncherAppWidgetHost.java
index fe83f3f..9c21ea2 100644
--- a/src/com/android/launcher3/widget/LauncherAppWidgetHost.java
+++ b/src/com/android/launcher3/widget/LauncherAppWidgetHost.java
@@ -16,242 +16,87 @@
 
 package com.android.launcher3.widget;
 
-import static android.app.Activity.RESULT_CANCELED;
+import static com.android.launcher3.widget.LauncherWidgetHolder.APPWIDGET_HOST_ID;
 
 import android.appwidget.AppWidgetHost;
-import android.appwidget.AppWidgetHostView;
-import android.appwidget.AppWidgetManager;
 import android.appwidget.AppWidgetProviderInfo;
-import android.content.ActivityNotFoundException;
 import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.Handler;
-import android.util.SparseArray;
-import android.widget.Toast;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
-import com.android.launcher3.BaseActivity;
-import com.android.launcher3.BaseDraggingActivity;
 import com.android.launcher3.LauncherAppState;
-import com.android.launcher3.R;
-import com.android.launcher3.Utilities;
-import com.android.launcher3.model.WidgetsModel;
-import com.android.launcher3.model.data.ItemInfo;
-import com.android.launcher3.testing.TestLogging;
-import com.android.launcher3.testing.TestProtocol;
-import com.android.launcher3.widget.custom.CustomWidgetManager;
 
 import java.util.ArrayList;
 import java.util.function.IntConsumer;
 
-
 /**
  * Specific {@link AppWidgetHost} that creates our {@link LauncherAppWidgetHostView}
  * which correctly captures all long-press events. This ensures that users can
  * always pick up and move widgets.
  */
-public class LauncherAppWidgetHost extends AppWidgetHost {
+class LauncherAppWidgetHost extends AppWidgetHost {
+    @NonNull
+    private final ArrayList<LauncherWidgetHolder.ProviderChangedListener>
+            mProviderChangeListeners = new ArrayList<>();
 
-    private static final int FLAG_LISTENING = 1;
-    private static final int FLAG_STATE_IS_NORMAL = 1 << 1;
-    private static final int FLAG_ACTIVITY_STARTED = 1 << 2;
-    private static final int FLAG_ACTIVITY_RESUMED = 1 << 3;
-    private static final int FLAGS_SHOULD_LISTEN =
-            FLAG_STATE_IS_NORMAL | FLAG_ACTIVITY_STARTED | FLAG_ACTIVITY_RESUMED;
-    // TODO(b/191735836): Replace with ActivityOptions.KEY_SPLASH_SCREEN_STYLE when un-hidden
-    private static final String KEY_SPLASH_SCREEN_STYLE = "android.activity.splashScreenStyle";
-    // TODO(b/191735836): Replace with SplashScreen.SPLASH_SCREEN_STYLE_EMPTY when un-hidden
-    private static final int SPLASH_SCREEN_STYLE_EMPTY = 0;
-
-    public static final int APPWIDGET_HOST_ID = 1024;
-
-    private final ArrayList<ProviderChangedListener> mProviderChangeListeners = new ArrayList<>();
-    private final SparseArray<LauncherAppWidgetHostView> mViews = new SparseArray<>();
-    private final SparseArray<PendingAppWidgetHostView> mPendingViews = new SparseArray<>();
-
+    @NonNull
     private final Context mContext;
-    private int mFlags = FLAG_STATE_IS_NORMAL;
 
-    private IntConsumer mAppWidgetRemovedCallback = null;
+    @Nullable
+    private final IntConsumer mAppWidgetRemovedCallback;
 
+    @NonNull
+    private final LauncherWidgetHolder mHolder;
 
-    public LauncherAppWidgetHost(Context context) {
-        this(context, null);
-    }
-
-    public LauncherAppWidgetHost(Context context,
-            IntConsumer appWidgetRemovedCallback) {
+    public LauncherAppWidgetHost(@NonNull Context context,
+            @Nullable IntConsumer appWidgetRemovedCallback, @NonNull LauncherWidgetHolder holder) {
         super(context, APPWIDGET_HOST_ID);
         mContext = context;
         mAppWidgetRemovedCallback = appWidgetRemovedCallback;
-    }
-
-    @Override
-    protected LauncherAppWidgetHostView onCreateView(Context context, int appWidgetId,
-            AppWidgetProviderInfo appWidget) {
-        final LauncherAppWidgetHostView view;
-        if (mPendingViews.get(appWidgetId) != null) {
-            view = mPendingViews.get(appWidgetId);
-            mPendingViews.remove(appWidgetId);
-        } else {
-            view = new LauncherAppWidgetHostView(context);
-        }
-        mViews.put(appWidgetId, view);
-        return view;
-    }
-
-    @Override
-    public void startListening() {
-        if (WidgetsModel.GO_DISABLE_WIDGETS) {
-            return;
-        }
-        mFlags |= FLAG_LISTENING;
-        try {
-            super.startListening();
-        } catch (Exception e) {
-            if (!Utilities.isBinderSizeError(e)) {
-                throw new RuntimeException(e);
-            }
-            // We're willing to let this slide. The exception is being caused by the list of
-            // RemoteViews which is being passed back. The startListening relationship will
-            // have been established by this point, and we will end up populating the
-            // widgets upon bind anyway. See issue 14255011 for more context.
-        }
-
-        // We go in reverse order and inflate any deferred widget
-        for (int i = mViews.size() - 1; i >= 0; i--) {
-            LauncherAppWidgetHostView view = mViews.valueAt(i);
-            if (view instanceof DeferredAppWidgetHostView) {
-                view.reInflate();
-            }
-        }
-    }
-
-    @Override
-    public void stopListening() {
-        if (WidgetsModel.GO_DISABLE_WIDGETS) {
-            return;
-        }
-        mFlags &= ~FLAG_LISTENING;
-        super.stopListening();
-    }
-
-    public boolean isListening() {
-        return (mFlags & FLAG_LISTENING) != 0;
+        mHolder = holder;
     }
 
     /**
-     * Sets or unsets a flag the can change whether the widget host should be in the listening
-     * state.
+     * Add a listener that is triggered when the providers of the widgets are changed
+     * @param listener The listener that notifies when the providers changed
      */
-    private void setShouldListenFlag(int flag, boolean on) {
-        if (on) {
-            mFlags |= flag;
-        } else {
-            mFlags &= ~flag;
-        }
-
-        final boolean listening = isListening();
-        if (!listening && (mFlags & FLAGS_SHOULD_LISTEN) == FLAGS_SHOULD_LISTEN) {
-            // Postpone starting listening until all flags are on.
-            startListening();
-        } else if (listening && (mFlags & FLAG_ACTIVITY_STARTED) == 0) {
-            // Postpone stopping listening until the activity is stopped.
-            stopListening();
-        }
+    public void addProviderChangeListener(
+            @NonNull LauncherWidgetHolder.ProviderChangedListener listener) {
+        mProviderChangeListeners.add(listener);
     }
 
     /**
-     * Registers an "entering/leaving Normal state" event.
+     * Remove the specified listener from the host
+     * @param listener The listener that is to be removed from the host
      */
-    public void setStateIsNormal(boolean isNormal) {
-        setShouldListenFlag(FLAG_STATE_IS_NORMAL, isNormal);
-    }
-
-    /**
-     * Registers an "activity started/stopped" event.
-     */
-    public void setActivityStarted(boolean isStarted) {
-        setShouldListenFlag(FLAG_ACTIVITY_STARTED, isStarted);
-    }
-
-    /**
-     * Registers an "activity paused/resumed" event.
-     */
-    public void setActivityResumed(boolean isResumed) {
-        setShouldListenFlag(FLAG_ACTIVITY_RESUMED, isResumed);
+    public void removeProviderChangeListener(
+            LauncherWidgetHolder.ProviderChangedListener listener) {
+        mProviderChangeListeners.remove(listener);
     }
 
     @Override
-    public int allocateAppWidgetId() {
-        if (WidgetsModel.GO_DISABLE_WIDGETS) {
-            return AppWidgetManager.INVALID_APPWIDGET_ID;
-        }
-
-        return super.allocateAppWidgetId();
-    }
-
-    public void addProviderChangeListener(ProviderChangedListener callback) {
-        mProviderChangeListeners.add(callback);
-    }
-
-    public void removeProviderChangeListener(ProviderChangedListener callback) {
-        mProviderChangeListeners.remove(callback);
-    }
-
     protected void onProvidersChanged() {
         if (!mProviderChangeListeners.isEmpty()) {
-            for (ProviderChangedListener callback : new ArrayList<>(mProviderChangeListeners)) {
+            for (LauncherWidgetHolder.ProviderChangedListener callback :
+                    new ArrayList<>(mProviderChangeListeners)) {
                 callback.notifyWidgetProvidersChanged();
             }
         }
     }
 
-    public void addPendingView(int appWidgetId, PendingAppWidgetHostView view) {
-        mPendingViews.put(appWidgetId, view);
-    }
-
-    public AppWidgetHostView createView(Context context, int appWidgetId,
-            LauncherAppWidgetProviderInfo appWidget) {
-        if (appWidget.isCustomWidget()) {
-            LauncherAppWidgetHostView lahv = new LauncherAppWidgetHostView(context);
-            lahv.setAppWidget(0, appWidget);
-            CustomWidgetManager.INSTANCE.get(context).onViewCreated(lahv);
-            return lahv;
-        } else if ((mFlags & FLAG_LISTENING) == 0) {
-            DeferredAppWidgetHostView view = new DeferredAppWidgetHostView(context);
-            view.setAppWidget(appWidgetId, appWidget);
-            mViews.put(appWidgetId, view);
-            return view;
-        } else {
-            try {
-                return super.createView(context, appWidgetId, appWidget);
-            } catch (Exception e) {
-                if (!Utilities.isBinderSizeError(e)) {
-                    throw new RuntimeException(e);
-                }
-
-                // If the exception was thrown while fetching the remote views, let the view stay.
-                // This will ensure that if the widget posts a valid update later, the view
-                // will update.
-                LauncherAppWidgetHostView view = mViews.get(appWidgetId);
-                if (view == null) {
-                    view = onCreateView(mContext, appWidgetId, appWidget);
-                }
-                view.setAppWidget(appWidgetId, appWidget);
-                view.switchToErrorView();
-                return view;
-            }
-        }
+    @Override
+    @NonNull
+    public LauncherAppWidgetHostView onCreateView(Context context, int appWidgetId,
+            AppWidgetProviderInfo appWidget) {
+        return mHolder.onCreateView(context, appWidgetId, appWidget);
     }
 
     /**
      * Called when the AppWidget provider for a AppWidget has been upgraded to a new apk.
      */
     @Override
-    protected void onProviderChanged(int appWidgetId, AppWidgetProviderInfo appWidget) {
+    protected void onProviderChanged(int appWidgetId, @NonNull AppWidgetProviderInfo appWidget) {
         LauncherAppWidgetProviderInfo info = LauncherAppWidgetProviderInfo.fromProviderInfo(
                 mContext, appWidget);
         super.onProviderChanged(appWidgetId, info);
@@ -265,6 +110,7 @@
      *
      * @param appWidgetId TODO: make this override when SDK is updated
      */
+    @Override
     public void onAppWidgetRemoved(int appWidgetId) {
         if (mAppWidgetRemovedCallback == null) {
             return;
@@ -272,81 +118,12 @@
         mAppWidgetRemovedCallback.accept(appWidgetId);
     }
 
-    @Override
-    public void deleteAppWidgetId(int appWidgetId) {
-        super.deleteAppWidgetId(appWidgetId);
-        mViews.remove(appWidgetId);
-    }
-
+    /**
+     * The same as super.clearViews(), except with the scope exposed
+     */
     @Override
     public void clearViews() {
         super.clearViews();
-        mViews.clear();
     }
 
-    public void startBindFlow(BaseActivity activity,
-            int appWidgetId, AppWidgetProviderInfo info, int requestCode) {
-
-        if (WidgetsModel.GO_DISABLE_WIDGETS) {
-            sendActionCancelled(activity, requestCode);
-            return;
-        }
-
-        Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_BIND)
-                .putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId)
-                .putExtra(AppWidgetManager.EXTRA_APPWIDGET_PROVIDER, info.provider)
-                .putExtra(AppWidgetManager.EXTRA_APPWIDGET_PROVIDER_PROFILE, info.getProfile());
-        // TODO: we need to make sure that this accounts for the options bundle.
-        // intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_OPTIONS, options);
-        activity.startActivityForResult(intent, requestCode);
-    }
-
-    /**
-     * Launches an app widget's configuration activity.
-     * @param activity The activity from which to launch the configuration activity
-     * @param widgetId The id of the bound app widget to be configured
-     * @param requestCode An optional request code to be returned with the result
-     */
-    public void startConfigActivity(BaseDraggingActivity activity, int widgetId, int requestCode) {
-        if (WidgetsModel.GO_DISABLE_WIDGETS) {
-            sendActionCancelled(activity, requestCode);
-            return;
-        }
-
-        try {
-            TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "start: startConfigActivity");
-            startAppWidgetConfigureActivityForResult(activity, widgetId, 0, requestCode,
-                    getConfigurationActivityOptions(activity, widgetId));
-        } catch (ActivityNotFoundException | SecurityException e) {
-            Toast.makeText(activity, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
-            sendActionCancelled(activity, requestCode);
-        }
-    }
-
-    /**
-     * Returns an {@link android.app.ActivityOptions} bundle from the {code activity} for launching
-     * the configuration of the {@code widgetId} app widget, or null of options cannot be produced.
-     */
-    @Nullable
-    private Bundle getConfigurationActivityOptions(BaseDraggingActivity activity, int widgetId) {
-        LauncherAppWidgetHostView view = mViews.get(widgetId);
-        if (view == null) return null;
-        Object tag = view.getTag();
-        if (!(tag instanceof ItemInfo)) return null;
-        Bundle bundle = activity.getActivityLaunchOptions(view, (ItemInfo) tag).toBundle();
-        bundle.putInt(KEY_SPLASH_SCREEN_STYLE, SPLASH_SCREEN_STYLE_EMPTY);
-        return bundle;
-    }
-
-    private void sendActionCancelled(final BaseActivity activity, final int requestCode) {
-        new Handler().post(() -> activity.onActivityResult(requestCode, RESULT_CANCELED, null));
-    }
-
-    /**
-     * Listener for getting notifications on provider changes.
-     */
-    public interface ProviderChangedListener {
-
-        void notifyWidgetProvidersChanged();
-    }
 }
diff --git a/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java b/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java
index 0865152..bc3889f 100644
--- a/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java
+++ b/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java
@@ -43,6 +43,7 @@
 import com.android.launcher3.Launcher;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
+import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.dragndrop.DragLayer;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.LauncherAppWidgetInfo;
@@ -85,16 +86,12 @@
     private Runnable mAutoAdvanceRunnable;
 
     private long mDeferUpdatesUntilMillis = 0;
-    private RemoteViews mDeferredRemoteViews;
+    RemoteViews mLastRemoteViews;
     private boolean mHasDeferredColorChange = false;
     private @Nullable SparseIntArray mDeferredColorChange = null;
 
     // The following member variables are only used during drag-n-drop.
     private boolean mIsInDragMode = false;
-    /** The drag content width which is only set when the drag content scale is not 1f. */
-    private int mDragContentWidth = 0;
-    /** The drag content height which is only set when the drag content scale is not 1f. */
-    private int mDragContentHeight = 0;
 
     private boolean mTrackingWidgetUpdate = false;
 
@@ -150,11 +147,18 @@
                     TRACE_METHOD_NAME + getAppWidgetInfo().provider, getAppWidgetId());
             mTrackingWidgetUpdate = false;
         }
-        if (isDeferringUpdates()) {
-            mDeferredRemoteViews = remoteViews;
-            return;
+        if (FeatureFlags.ENABLE_CACHED_WIDGET.get()) {
+            mLastRemoteViews = remoteViews;
+            if (isDeferringUpdates()) {
+                return;
+            }
+        } else {
+            if (isDeferringUpdates()) {
+                mLastRemoteViews = remoteViews;
+                return;
+            }
+            mLastRemoteViews = null;
         }
-        mDeferredRemoteViews = null;
 
         super.updateAppWidget(remoteViews);
 
@@ -218,8 +222,7 @@
         SparseIntArray deferredColors;
         boolean hasDeferredColors;
         mDeferUpdatesUntilMillis = 0;
-        remoteViews = mDeferredRemoteViews;
-        mDeferredRemoteViews = null;
+        remoteViews = mLastRemoteViews;
         deferredColors = mDeferredColorChange;
         hasDeferredColors = mHasDeferredColorChange;
         mDeferredColorChange = null;
@@ -307,27 +310,9 @@
         }
     }
 
-    @Override
-    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-        if (mIsInDragMode && mDragContentWidth > 0 && mDragContentHeight > 0
-                && getChildCount() == 1) {
-            measureChild(getChildAt(0), MeasureSpec.getSize(mDragContentWidth),
-                    MeasureSpec.getSize(mDragContentHeight));
-        }
-    }
-
     /** Starts the drag mode. */
     public void startDrag() {
         mIsInDragMode = true;
-        // In the case of dragging a scaled preview from widgets picker, we should reuse the
-        // previously measured dimension from WidgetCell#measureAndComputeWidgetPreviewScale, which
-        // measures the dimension of a widget preview without its parent's bound before scaling
-        // down.
-        if ((getScaleX() != 1f || getScaleY() != 1f) && getChildCount() == 1) {
-            mDragContentWidth = getChildAt(0).getMeasuredWidth();
-            mDragContentHeight = getChildAt(0).getMeasuredHeight();
-        }
     }
 
     /** Handles a drag event occurred on a workspace page corresponding to the {@code screenId}. */
@@ -340,8 +325,6 @@
     /** Ends the drag mode. */
     public void endDrag() {
         mIsInDragMode = false;
-        mDragContentWidth = 0;
-        mDragContentHeight = 0;
         requestLayout();
     }
 
diff --git a/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfo.java b/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfo.java
index bba1016..10aef9a 100644
--- a/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfo.java
+++ b/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfo.java
@@ -2,7 +2,6 @@
 
 import static com.android.launcher3.Utilities.ATLEAST_S;
 
-import android.appwidget.AppWidgetHostView;
 import android.appwidget.AppWidgetProviderInfo;
 import android.content.ComponentName;
 import android.content.Context;
@@ -105,44 +104,35 @@
         int spanX = 0;
         int spanY = 0;
 
-        Rect widgetPadding = new Rect();
-        Rect localPadding = new Rect();
-        AppWidgetHostView.getDefaultPaddingForWidget(context, provider, widgetPadding);
 
         Point cellSize = new Point();
         for (DeviceProfile dp : idp.supportedProfiles) {
             dp.getCellSize(cellSize);
-            // We want to account for the extra amount of padding that we are adding to the widget
-            // to ensure that it gets the full amount of space that it has requested.
-            // If grids supports insetting widgets, we do not account for widget padding.
-            if (dp.shouldInsetWidgets()) {
-                localPadding.setEmpty();
-            } else {
-                localPadding.set(widgetPadding);
-            }
+            Rect widgetPadding = dp.widgetPadding;
+
             minSpanX = Math.max(minSpanX,
-                    getSpanX(localPadding, minResizeWidth, dp.cellLayoutBorderSpacePx.x,
+                    getSpanX(widgetPadding, minResizeWidth, dp.cellLayoutBorderSpacePx.x,
                             cellSize.x));
             minSpanY = Math.max(minSpanY,
-                    getSpanY(localPadding, minResizeHeight, dp.cellLayoutBorderSpacePx.y,
+                    getSpanY(widgetPadding, minResizeHeight, dp.cellLayoutBorderSpacePx.y,
                             cellSize.y));
 
             if (ATLEAST_S) {
                 if (maxResizeWidth > 0) {
-                    maxSpanX = Math.min(maxSpanX, getSpanX(localPadding, maxResizeWidth,
+                    maxSpanX = Math.min(maxSpanX, getSpanX(widgetPadding, maxResizeWidth,
                             dp.cellLayoutBorderSpacePx.x, cellSize.x));
                 }
                 if (maxResizeHeight > 0) {
-                    maxSpanY = Math.min(maxSpanY, getSpanY(localPadding, maxResizeHeight,
+                    maxSpanY = Math.min(maxSpanY, getSpanY(widgetPadding, maxResizeHeight,
                             dp.cellLayoutBorderSpacePx.y, cellSize.y));
                 }
             }
 
             spanX = Math.max(spanX,
-                    getSpanX(localPadding, minWidth, dp.cellLayoutBorderSpacePx.x,
+                    getSpanX(widgetPadding, minWidth, dp.cellLayoutBorderSpacePx.x,
                             cellSize.x));
             spanY = Math.max(spanY,
-                    getSpanY(localPadding, minHeight, dp.cellLayoutBorderSpacePx.y,
+                    getSpanY(widgetPadding, minHeight, dp.cellLayoutBorderSpacePx.y,
                             cellSize.y));
         }
 
@@ -184,15 +174,22 @@
     }
 
     private int getSpanX(Rect widgetPadding, int widgetWidth, int cellSpacing, float cellWidth) {
-        return Math.max(1, (int) Math.ceil(
-                (widgetWidth + widgetPadding.left + widgetPadding.right + cellSpacing) / (cellWidth
-                        + cellSpacing)));
+        return getSpan(widgetPadding.left + widgetPadding.right,
+                widgetWidth, cellSpacing, cellWidth);
     }
 
     private int getSpanY(Rect widgetPadding, int widgetHeight, int cellSpacing, float cellHeight) {
+        return getSpan(widgetPadding.top + widgetPadding.bottom, widgetHeight,
+                cellSpacing, cellHeight);
+    }
+
+    /**
+     * Solving the equation:
+     *   n * cellSize + (n - 1) * cellSpacing - widgetPadding = widgetSize
+     */
+    private int getSpan(int widgetPadding, int widgetSize, int cellSpacing, float cellSize) {
         return Math.max(1, (int) Math.ceil(
-                (widgetHeight + widgetPadding.top + widgetPadding.bottom + cellSpacing) / (
-                        cellHeight + cellSpacing)));
+                (widgetSize + widgetPadding + cellSpacing) / (cellSize + cellSpacing)));
     }
 
     public String getLabel(PackageManager packageManager) {
diff --git a/src/com/android/launcher3/widget/LauncherWidgetHolder.java b/src/com/android/launcher3/widget/LauncherWidgetHolder.java
new file mode 100644
index 0000000..2ca825c
--- /dev/null
+++ b/src/com/android/launcher3/widget/LauncherWidgetHolder.java
@@ -0,0 +1,533 @@
+/**
+ * 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.launcher3.widget;
+
+import static android.app.Activity.RESULT_CANCELED;
+
+import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
+
+import android.appwidget.AppWidgetHost;
+import android.appwidget.AppWidgetHostView;
+import android.appwidget.AppWidgetManager;
+import android.appwidget.AppWidgetProviderInfo;
+import android.content.ActivityNotFoundException;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.SparseArray;
+import android.widget.RemoteViews;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.launcher3.BaseActivity;
+import com.android.launcher3.BaseDraggingActivity;
+import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.R;
+import com.android.launcher3.Utilities;
+import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.model.WidgetsModel;
+import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.testing.TestLogging;
+import com.android.launcher3.testing.shared.TestProtocol;
+import com.android.launcher3.util.ResourceBasedOverride;
+import com.android.launcher3.widget.custom.CustomWidgetManager;
+
+import java.util.function.IntConsumer;
+
+/**
+ * A wrapper for LauncherAppWidgetHost. This class is created so the AppWidgetHost could run in
+ * background.
+ */
+public class LauncherWidgetHolder {
+    public static final int APPWIDGET_HOST_ID = 1024;
+
+    protected static final int FLAG_LISTENING = 1;
+    protected static final int FLAG_STATE_IS_NORMAL = 1 << 1;
+    protected static final int FLAG_ACTIVITY_STARTED = 1 << 2;
+    protected static final int FLAG_ACTIVITY_RESUMED = 1 << 3;
+    private static final int FLAGS_SHOULD_LISTEN =
+            FLAG_STATE_IS_NORMAL | FLAG_ACTIVITY_STARTED | FLAG_ACTIVITY_RESUMED;
+
+    @NonNull
+    private final Context mContext;
+
+    @NonNull
+    private final AppWidgetHost mWidgetHost;
+
+    @NonNull
+    private final SparseArray<LauncherAppWidgetHostView> mViews = new SparseArray<>();
+    @NonNull
+    private final SparseArray<PendingAppWidgetHostView> mPendingViews = new SparseArray<>();
+    @NonNull
+    private final SparseArray<LauncherAppWidgetHostView> mDeferredViews = new SparseArray<>();
+
+    protected int mFlags = FLAG_STATE_IS_NORMAL;
+
+    // TODO(b/191735836): Replace with ActivityOptions.KEY_SPLASH_SCREEN_STYLE when un-hidden
+    private static final String KEY_SPLASH_SCREEN_STYLE = "android.activity.splashScreenStyle";
+    // TODO(b/191735836): Replace with SplashScreen.SPLASH_SCREEN_STYLE_EMPTY when un-hidden
+    private static final int SPLASH_SCREEN_STYLE_EMPTY = 0;
+
+    protected LauncherWidgetHolder(@NonNull Context context,
+            @Nullable IntConsumer appWidgetRemovedCallback) {
+        mContext = context;
+        mWidgetHost = createHost(context, appWidgetRemovedCallback);
+    }
+
+    protected AppWidgetHost createHost(
+            Context context, @Nullable IntConsumer appWidgetRemovedCallback) {
+        return new LauncherAppWidgetHost(context, appWidgetRemovedCallback, this);
+    }
+
+    /**
+     * Starts listening to the widget updates from the server side
+     */
+    public void startListening() {
+        if (WidgetsModel.GO_DISABLE_WIDGETS) {
+            return;
+        }
+        setListeningFlag(true);
+        try {
+            mWidgetHost.startListening();
+        } catch (Exception e) {
+            if (!Utilities.isBinderSizeError(e)) {
+                throw new RuntimeException(e);
+            }
+            // We're willing to let this slide. The exception is being caused by the list of
+            // RemoteViews which is being passed back. The startListening relationship will
+            // have been established by this point, and we will end up populating the
+            // widgets upon bind anyway. See issue 14255011 for more context.
+        }
+
+        updateDeferredView();
+    }
+
+    /**
+     * Update any views which have been deferred because the host was not listening.
+     */
+    protected void updateDeferredView() {
+        // We go in reverse order and inflate any deferred or cached widget
+        for (int i = mViews.size() - 1; i >= 0; i--) {
+            LauncherAppWidgetHostView view = mViews.valueAt(i);
+            if (view instanceof DeferredAppWidgetHostView) {
+                view.reInflate();
+            }
+            if (FeatureFlags.ENABLE_CACHED_WIDGET.get()) {
+                final int appWidgetId = mViews.keyAt(i);
+                if (view == mDeferredViews.get(appWidgetId)) {
+                    // If the widget view was deferred, we'll need to call super.createView here
+                    // to make the binder call to system process to fetch cumulative updates to this
+                    // widget, as well as setting up this view for future updates.
+                    mWidgetHost.createView(view.mLauncher, appWidgetId,
+                            view.getAppWidgetInfo());
+                    // At this point #onCreateView should have been called, which in turn returned
+                    // the deferred view. There's no reason to keep the reference anymore, so we
+                    // removed it here.
+                    mDeferredViews.remove(appWidgetId);
+                }
+            }
+        }
+    }
+
+    /**
+     * Registers an "activity started/stopped" event.
+     */
+    public void setActivityStarted(boolean isStarted) {
+        setShouldListenFlag(FLAG_ACTIVITY_STARTED, isStarted);
+    }
+
+    /**
+     * Registers an "activity paused/resumed" event.
+     */
+    public void setActivityResumed(boolean isResumed) {
+        setShouldListenFlag(FLAG_ACTIVITY_RESUMED, isResumed);
+    }
+
+    /**
+     * Set the NORMAL state of the widget host
+     * @param isNormal True if setting the host to be in normal state, false otherwise
+     */
+    public void setStateIsNormal(boolean isNormal) {
+        setShouldListenFlag(FLAG_STATE_IS_NORMAL, isNormal);
+    }
+
+    /**
+     * Delete the specified app widget from the host
+     * @param appWidgetId The ID of the app widget to be deleted
+     */
+    public void deleteAppWidgetId(int appWidgetId) {
+        mWidgetHost.deleteAppWidgetId(appWidgetId);
+        mViews.remove(appWidgetId);
+        if (FeatureFlags.ENABLE_CACHED_WIDGET.get()) {
+            final LauncherAppState state = LauncherAppState.getInstance(mContext);
+            synchronized (state.mCachedRemoteViews) {
+                state.mCachedRemoteViews.delete(appWidgetId);
+            }
+        }
+    }
+
+    /**
+     * Add the pending view to the host for complete configuration in further steps
+     * @param appWidgetId The ID of the specified app widget
+     * @param view The {@link PendingAppWidgetHostView} of the app widget
+     */
+    public void addPendingView(int appWidgetId, @NonNull PendingAppWidgetHostView view) {
+        mPendingViews.put(appWidgetId, view);
+    }
+
+    /**
+     * @param appWidgetId The app widget id of the specified widget
+     * @return The {@link PendingAppWidgetHostView} of the widget if it exists, null otherwise
+     */
+    @Nullable
+    protected PendingAppWidgetHostView getPendingView(int appWidgetId) {
+        return mPendingViews.get(appWidgetId);
+    }
+
+    protected void removePendingView(int appWidgetId) {
+        mPendingViews.remove(appWidgetId);
+    }
+
+    /**
+     * Called when the launcher is destroyed
+     */
+    public void destroy() {
+        // No-op
+    }
+
+    /**
+     * @return The allocated app widget id if allocation is successful, returns -1 otherwise
+     */
+    public int allocateAppWidgetId() {
+        if (WidgetsModel.GO_DISABLE_WIDGETS) {
+            return AppWidgetManager.INVALID_APPWIDGET_ID;
+        }
+
+        return mWidgetHost.allocateAppWidgetId();
+    }
+
+    /**
+     * Add a listener that is triggered when the providers of the widgets are changed
+     * @param listener The listener that notifies when the providers changed
+     */
+    public void addProviderChangeListener(@NonNull ProviderChangedListener listener) {
+        LauncherAppWidgetHost tempHost = (LauncherAppWidgetHost) mWidgetHost;
+        tempHost.addProviderChangeListener(listener);
+    }
+
+    /**
+     * Remove the specified listener from the host
+     * @param listener The listener that is to be removed from the host
+     */
+    public void removeProviderChangeListener(ProviderChangedListener listener) {
+        LauncherAppWidgetHost tempHost = (LauncherAppWidgetHost) mWidgetHost;
+        tempHost.removeProviderChangeListener(listener);
+    }
+
+    /**
+     * Starts the configuration activity for the widget
+     * @param activity The activity in which to start the configuration page
+     * @param widgetId The ID of the widget
+     * @param requestCode The request code
+     */
+    public void startConfigActivity(@NonNull BaseDraggingActivity activity, int widgetId,
+            int requestCode) {
+        if (WidgetsModel.GO_DISABLE_WIDGETS) {
+            sendActionCancelled(activity, requestCode);
+            return;
+        }
+
+        try {
+            TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "start: startConfigActivity");
+            mWidgetHost.startAppWidgetConfigureActivityForResult(activity, widgetId, 0, requestCode,
+                    getConfigurationActivityOptions(activity, widgetId));
+        } catch (ActivityNotFoundException | SecurityException e) {
+            Toast.makeText(activity, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
+            sendActionCancelled(activity, requestCode);
+        }
+    }
+
+    private void sendActionCancelled(final BaseActivity activity, final int requestCode) {
+        MAIN_EXECUTOR.execute(
+                () -> activity.onActivityResult(requestCode, RESULT_CANCELED, null));
+    }
+
+    /**
+     * Returns an {@link android.app.ActivityOptions} bundle from the {code activity} for launching
+     * the configuration of the {@code widgetId} app widget, or null of options cannot be produced.
+     */
+    @Nullable
+    protected Bundle getConfigurationActivityOptions(@NonNull BaseDraggingActivity activity,
+            int widgetId) {
+        LauncherAppWidgetHostView view = mViews.get(widgetId);
+        if (view == null) return null;
+        Object tag = view.getTag();
+        if (!(tag instanceof ItemInfo)) return null;
+        Bundle bundle = activity.getActivityLaunchOptions(view, (ItemInfo) tag).toBundle();
+        bundle.putInt(KEY_SPLASH_SCREEN_STYLE, SPLASH_SCREEN_STYLE_EMPTY);
+        return bundle;
+    }
+
+    /**
+     * Starts the binding flow for the widget
+     * @param activity The activity for which to bind the widget
+     * @param appWidgetId The ID of the widget
+     * @param info The {@link AppWidgetProviderInfo} of the widget
+     * @param requestCode The request code
+     */
+    public void startBindFlow(@NonNull BaseActivity activity,
+            int appWidgetId, @NonNull AppWidgetProviderInfo info, int requestCode) {
+        if (WidgetsModel.GO_DISABLE_WIDGETS) {
+            sendActionCancelled(activity, requestCode);
+            return;
+        }
+
+        Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_BIND)
+                .putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId)
+                .putExtra(AppWidgetManager.EXTRA_APPWIDGET_PROVIDER, info.provider)
+                .putExtra(AppWidgetManager.EXTRA_APPWIDGET_PROVIDER_PROFILE, info.getProfile());
+        // TODO: we need to make sure that this accounts for the options bundle.
+        // intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_OPTIONS, options);
+        activity.startActivityForResult(intent, requestCode);
+    }
+
+    /**
+     * Stop the host from listening to the widget updates
+     */
+    public void stopListening() {
+        if (WidgetsModel.GO_DISABLE_WIDGETS) {
+            return;
+        }
+        if (FeatureFlags.ENABLE_CACHED_WIDGET.get()) {
+            // Cache the content from the widgets when Launcher stops listening to widget updates
+            final LauncherAppState state = LauncherAppState.getInstance(mContext);
+            synchronized (state.mCachedRemoteViews) {
+                for (int i = 0; i < mViews.size(); i++) {
+                    final int appWidgetId = mViews.keyAt(i);
+                    final LauncherAppWidgetHostView view = mViews.get(appWidgetId);
+                    state.mCachedRemoteViews.put(appWidgetId, view.mLastRemoteViews);
+                }
+            }
+        }
+        mWidgetHost.stopListening();
+        setListeningFlag(false);
+    }
+
+    protected void setListeningFlag(final boolean isListening) {
+        if (isListening) {
+            mFlags |= FLAG_LISTENING;
+            return;
+        }
+        mFlags &= ~FLAG_LISTENING;
+    }
+
+    /**
+     * @return The app widget ids
+     */
+    @NonNull
+    public int[] getAppWidgetIds() {
+        return mWidgetHost.getAppWidgetIds();
+    }
+
+    /**
+     * Create a view for the specified app widget
+     * @param context The activity context for which the view is created
+     * @param appWidgetId The ID of the widget
+     * @param appWidget The {@link LauncherAppWidgetProviderInfo} of the widget
+     * @return A view for the widget
+     */
+    @NonNull
+    public AppWidgetHostView createView(@NonNull Context context, int appWidgetId,
+            @NonNull LauncherAppWidgetProviderInfo appWidget) {
+        if (appWidget.isCustomWidget()) {
+            LauncherAppWidgetHostView lahv = new LauncherAppWidgetHostView(context);
+            lahv.setAppWidget(0, appWidget);
+            CustomWidgetManager.INSTANCE.get(context).onViewCreated(lahv);
+            return lahv;
+        } else if ((mFlags & FLAG_LISTENING) == 0) {
+            // Since the launcher hasn't started listening to widget updates, we can't simply call
+            // super.createView here because the later will make a binder call to retrieve
+            // RemoteViews from system process.
+            // TODO: have launcher always listens to widget updates in background so that this
+            //  check can be removed altogether.
+            if (FeatureFlags.ENABLE_CACHED_WIDGET.get()) {
+                final RemoteViews cachedRemoteViews = getCachedRemoteViews(appWidgetId);
+                if (cachedRemoteViews != null) {
+                    // We've found RemoteViews from cache for this widget, so we will instantiate a
+                    // widget host view and populate it with the cached RemoteViews.
+                    final LauncherAppWidgetHostView view = new LauncherAppWidgetHostView(context);
+                    view.setAppWidget(appWidgetId, appWidget);
+                    view.updateAppWidget(cachedRemoteViews);
+                    mDeferredViews.put(appWidgetId, view);
+                    mViews.put(appWidgetId, view);
+                    return view;
+                }
+            }
+            // If cache misses or not enabled, a placeholder for the widget will be returned.
+            DeferredAppWidgetHostView view = new DeferredAppWidgetHostView(context);
+            view.setAppWidget(appWidgetId, appWidget);
+            mViews.put(appWidgetId, view);
+            return view;
+        } else {
+            try {
+                return mWidgetHost.createView(context, appWidgetId, appWidget);
+            } catch (Exception e) {
+                if (!Utilities.isBinderSizeError(e)) {
+                    throw new RuntimeException(e);
+                }
+
+                // If the exception was thrown while fetching the remote views, let the view stay.
+                // This will ensure that if the widget posts a valid update later, the view
+                // will update.
+                LauncherAppWidgetHostView view = mViews.get(appWidgetId);
+                if (view == null) {
+                    view = onCreateView(mContext, appWidgetId, appWidget);
+                }
+                view.setAppWidget(appWidgetId, appWidget);
+                view.switchToErrorView();
+                return view;
+            }
+        }
+    }
+
+    /**
+     * Listener for getting notifications on provider changes.
+     */
+    public interface ProviderChangedListener {
+        /**
+         * Notify the listener that the providers have changed
+         */
+        void notifyWidgetProvidersChanged();
+    }
+
+    /**
+     * Called to return a proper view when creating a view
+     * @param context The context for which the widget view is created
+     * @param appWidgetId The ID of the added widget
+     * @param appWidget The provider info of the added widget
+     * @return A view for the specified app widget
+     */
+    @NonNull
+    public LauncherAppWidgetHostView onCreateView(Context context, int appWidgetId,
+            AppWidgetProviderInfo appWidget) {
+        final LauncherAppWidgetHostView view;
+        if (getPendingView(appWidgetId) != null) {
+            view = getPendingView(appWidgetId);
+            removePendingView(appWidgetId);
+        } else if (mDeferredViews.get(appWidgetId) != null) {
+            // In case the widget view is deferred, we will simply return the deferred view as
+            // opposed to instantiate a new instance of LauncherAppWidgetHostView since launcher
+            // already added the former to the workspace.
+            view = mDeferredViews.get(appWidgetId);
+        } else {
+            view = new LauncherAppWidgetHostView(context);
+        }
+        mViews.put(appWidgetId, view);
+        return view;
+    }
+
+    /**
+     * Clears all the views from the host
+     */
+    public void clearViews() {
+        LauncherAppWidgetHost tempHost = (LauncherAppWidgetHost) mWidgetHost;
+        tempHost.clearViews();
+        if (FeatureFlags.ENABLE_CACHED_WIDGET.get()) {
+            // Clear previously cached content from existing widgets
+            mDeferredViews.clear();
+        }
+        mViews.clear();
+    }
+
+    /**
+     * @return True if the host is listening to the updates, false otherwise
+     */
+    public boolean isListening() {
+        return (mFlags & FLAG_LISTENING) != 0;
+    }
+
+    /**
+     * Sets or unsets a flag the can change whether the widget host should be in the listening
+     * state.
+     */
+    private void setShouldListenFlag(int flag, boolean on) {
+        if (on) {
+            mFlags |= flag;
+        } else {
+            mFlags &= ~flag;
+        }
+
+        final boolean listening = isListening();
+        if (!listening && shouldListen(mFlags)) {
+            // Postpone starting listening until all flags are on.
+            startListening();
+        } else if (listening && (mFlags & FLAG_ACTIVITY_STARTED) == 0) {
+            // Postpone stopping listening until the activity is stopped.
+            stopListening();
+        }
+    }
+
+    /**
+     * Returns true if the holder should be listening for widget updates based
+     * on the provided state flags.
+     */
+    protected boolean shouldListen(int flags) {
+        return (flags & FLAGS_SHOULD_LISTEN) == FLAGS_SHOULD_LISTEN;
+    }
+
+    @Nullable
+    private RemoteViews getCachedRemoteViews(int appWidgetId) {
+        final LauncherAppState state = LauncherAppState.getInstance(mContext);
+        synchronized (state.mCachedRemoteViews) {
+            return state.mCachedRemoteViews.get(appWidgetId);
+        }
+    }
+
+    /**
+     * Returns the new LauncherWidgetHolder instance
+     */
+    public static LauncherWidgetHolder newInstance(Context context) {
+        return HolderFactory.newFactory(context).newInstance(context, null);
+    }
+
+    /**
+     * A factory class that generates new instances of {@code LauncherWidgetHolder}
+     */
+    public static class HolderFactory implements ResourceBasedOverride {
+
+        /**
+         * @param context The context of the caller
+         * @param appWidgetRemovedCallback The callback that is called when widgets are removed
+         * @return A new instance of {@code LauncherWidgetHolder}
+         */
+        public LauncherWidgetHolder newInstance(@NonNull Context context,
+                @Nullable IntConsumer appWidgetRemovedCallback) {
+            return new LauncherWidgetHolder(context, appWidgetRemovedCallback);
+        }
+
+        /**
+         * @param context The context of the caller
+         * @return A new instance of factory class for widget holders. If not specified, returning
+         * {@code HolderFactory} by default.
+         */
+        public static HolderFactory newFactory(Context context) {
+            return Overrides.getObject(
+                    HolderFactory.class, context, R.string.widget_holder_factory_class);
+        }
+    }
+}
diff --git a/src/com/android/launcher3/widget/NavigableAppWidgetHostView.java b/src/com/android/launcher3/widget/NavigableAppWidgetHostView.java
index 241c937..f46b214 100644
--- a/src/com/android/launcher3/widget/NavigableAppWidgetHostView.java
+++ b/src/com/android/launcher3/widget/NavigableAppWidgetHostView.java
@@ -19,16 +19,15 @@
 import android.appwidget.AppWidgetHostView;
 import android.appwidget.AppWidgetProviderInfo;
 import android.content.Context;
-import android.graphics.PointF;
 import android.graphics.Rect;
 import android.view.KeyEvent;
 import android.view.View;
 import android.view.ViewDebug;
 import android.view.ViewGroup;
 
-import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Reorderable;
 import com.android.launcher3.dragndrop.DraggableView;
+import com.android.launcher3.util.MultiTranslateDelegate;
 import com.android.launcher3.views.ActivityContext;
 
 import java.util.ArrayList;
@@ -39,29 +38,22 @@
 public abstract class NavigableAppWidgetHostView extends AppWidgetHostView
         implements DraggableView, Reorderable {
 
+    private final MultiTranslateDelegate mTranslateDelegate = new MultiTranslateDelegate(this);
+
     /**
      * The scaleX and scaleY value such that the widget fits within its cellspans, scaleX = scaleY.
      */
     private float mScaleToFit = 1f;
 
-    /**
-     * The translation values to center the widget within its cellspans.
-     */
-    private final PointF mTranslationForCentering = new PointF(0, 0);
-
-    private final PointF mTranslationForMoveFromCenterAnimation = new PointF(0, 0);
-
-    private final PointF mTranslationForReorderBounce = new PointF(0, 0);
-    private final PointF mTranslationForReorderPreview = new PointF(0, 0);
     private float mScaleForReorderBounce = 1f;
 
-    private final Rect mTempRect = new Rect();
-
     @ViewDebug.ExportedProperty(category = "launcher")
     private boolean mChildrenFocused;
 
     protected final ActivityContext mActivity;
 
+    private boolean mDisableSetPadding = false;
+
     public NavigableAppWidgetHostView(Context context) {
         super(context);
         mActivity = ActivityContext.lookupContext(context);
@@ -154,6 +146,22 @@
     }
 
     @Override
+    public void setAppWidget(int appWidgetId, AppWidgetProviderInfo info) {
+        // Prevent default padding being set on the view based on provider info. Launcher manages
+        // its own widget spacing
+        mDisableSetPadding = true;
+        super.setAppWidget(appWidgetId, info);
+        mDisableSetPadding = false;
+    }
+
+    @Override
+    public void setPadding(int left, int top, int right, int bottom) {
+        if (!mDisableSetPadding) {
+            super.setPadding(left, top, right, bottom);
+        }
+    }
+
+    @Override
     public boolean dispatchUnhandledMove(View focused, int direction) {
         return mChildrenFocused;
     }
@@ -163,57 +171,23 @@
         setSelected(childIsFocused);
     }
 
-    public View getView() {
-        return this;
-    }
-
-    private void updateTranslation() {
-        super.setTranslationX(mTranslationForReorderBounce.x + mTranslationForReorderPreview.x
-                + mTranslationForCentering.x + mTranslationForMoveFromCenterAnimation.x);
-        super.setTranslationY(mTranslationForReorderBounce.y + mTranslationForReorderPreview.y
-                + mTranslationForCentering.y + mTranslationForMoveFromCenterAnimation.y);
-    }
-
-    public void setTranslationForCentering(float x, float y) {
-        mTranslationForCentering.set(x, y);
-        updateTranslation();
-    }
-
-    public void setTranslationForMoveFromCenterAnimation(float x, float y) {
-        mTranslationForMoveFromCenterAnimation.set(x, y);
-        updateTranslation();
-    }
-
-    public void setReorderBounceOffset(float x, float y) {
-        mTranslationForReorderBounce.set(x, y);
-        updateTranslation();
-    }
-
-    public void getReorderBounceOffset(PointF offset) {
-        offset.set(mTranslationForReorderBounce);
-    }
-
-    @Override
-    public void setReorderPreviewOffset(float x, float y) {
-        mTranslationForReorderPreview.set(x, y);
-        updateTranslation();
-    }
-
-    @Override
-    public void getReorderPreviewOffset(PointF offset) {
-        offset.set(mTranslationForReorderPreview);
-    }
-
     private void updateScale() {
         super.setScaleX(mScaleToFit * mScaleForReorderBounce);
         super.setScaleY(mScaleToFit * mScaleForReorderBounce);
     }
 
+    @Override
+    public MultiTranslateDelegate getTranslateDelegate() {
+        return mTranslateDelegate;
+    }
+
+    @Override
     public void setReorderBounceScale(float scale) {
         mScaleForReorderBounce = scale;
         updateScale();
     }
 
+    @Override
     public float getReorderBounceScale() {
         return mScaleForReorderBounce;
     }
@@ -236,26 +210,6 @@
     public void getWorkspaceVisualDragBounds(Rect bounds) {
         int width = (int) (getMeasuredWidth() * mScaleToFit);
         int height = (int) (getMeasuredHeight() * mScaleToFit);
-
-        getWidgetInset(mActivity.getDeviceProfile(), mTempRect);
-        bounds.set(mTempRect.left, mTempRect.top, width - mTempRect.right,
-                height - mTempRect.bottom);
-    }
-
-    /**
-     * Widgets have padding added by the system. We may choose to inset this padding if the grid
-     * supports it.
-     */
-    public void getWidgetInset(DeviceProfile grid, Rect out) {
-        if (!grid.shouldInsetWidgets()) {
-            out.setEmpty();
-            return;
-        }
-        AppWidgetProviderInfo info = getAppWidgetInfo();
-        if (info == null) {
-            out.set(grid.inv.defaultWidgetPadding);
-        } else {
-            AppWidgetHostView.getDefaultPaddingForWidget(getContext(), info.provider, out);
-        }
+        bounds.set(0, 0, width, height);
     }
 }
diff --git a/src/com/android/launcher3/widget/PendingAddShortcutInfo.java b/src/com/android/launcher3/widget/PendingAddShortcutInfo.java
index 9601652..3935be5 100644
--- a/src/com/android/launcher3/widget/PendingAddShortcutInfo.java
+++ b/src/com/android/launcher3/widget/PendingAddShortcutInfo.java
@@ -17,6 +17,8 @@
 
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_WIDGETS_TRAY;
 
+import android.content.Context;
+
 import com.android.launcher3.PendingAddItemInfo;
 import com.android.launcher3.pm.ShortcutConfigActivityInfo;
 
@@ -27,13 +29,28 @@
  */
 public class PendingAddShortcutInfo extends PendingAddItemInfo {
 
-    public ShortcutConfigActivityInfo activityInfo;
+    // TODO: Make it @NonNull
+    protected ShortcutConfigActivityInfo mActivityInfo;
 
     public PendingAddShortcutInfo(ShortcutConfigActivityInfo activityInfo) {
-        this.activityInfo = activityInfo;
+        this.mActivityInfo = activityInfo;
         componentName = activityInfo.getComponent();
         user = activityInfo.getUser();
         itemType = activityInfo.getItemType();
         this.container = CONTAINER_WIDGETS_TRAY;
     }
+
+    public PendingAddShortcutInfo(PendingAddShortcutInfo info) {
+        super(info);
+        mActivityInfo = info.mActivityInfo;
+    }
+
+    public PendingAddShortcutInfo() { }
+
+    /**
+     * Returns the info used for creating the shortcut
+     */
+    public ShortcutConfigActivityInfo getActivityInfo(Context context) {
+        return mActivityInfo;
+    }
 }
diff --git a/src/com/android/launcher3/widget/PendingAddWidgetInfo.java b/src/com/android/launcher3/widget/PendingAddWidgetInfo.java
index 470a800..ccf4b2e 100644
--- a/src/com/android/launcher3/widget/PendingAddWidgetInfo.java
+++ b/src/com/android/launcher3/widget/PendingAddWidgetInfo.java
@@ -19,6 +19,9 @@
 import android.content.Context;
 import android.os.Bundle;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.PendingAddItemInfo;
 import com.android.launcher3.logger.LauncherAtom;
@@ -66,8 +69,9 @@
         return WidgetSizes.getWidgetSizeOptions(context, componentName, spanX, spanY);
     }
 
+    @NonNull
     @Override
-    public LauncherAtom.ItemInfo buildProto(FolderInfo folderInfo) {
+    public LauncherAtom.ItemInfo buildProto(@Nullable FolderInfo folderInfo) {
         LauncherAtom.ItemInfo info = super.buildProto(folderInfo);
         return info.toBuilder()
                 .addItemAttributes(LauncherAppWidgetInfo.getAttribute(sourceContainer))
diff --git a/src/com/android/launcher3/widget/PendingAppWidgetHostView.java b/src/com/android/launcher3/widget/PendingAppWidgetHostView.java
index 130ee3a..1c88c4a 100644
--- a/src/com/android/launcher3/widget/PendingAppWidgetHostView.java
+++ b/src/com/android/launcher3/widget/PendingAppWidgetHostView.java
@@ -86,7 +86,7 @@
         setWillNotDraw(false);
 
         super.updateAppWidget(null);
-        setOnClickListener(ItemClickHandler.INSTANCE);
+        setOnClickListener(mLauncher.getItemOnClickListener());
 
         if (info.pendingItemInfo == null) {
             info.pendingItemInfo = new PackageItemInfo(info.providerName.getPackageName(),
diff --git a/src/com/android/launcher3/widget/PendingItemDragHelper.java b/src/com/android/launcher3/widget/PendingItemDragHelper.java
index 46c0b99..faad307 100644
--- a/src/com/android/launcher3/widget/PendingItemDragHelper.java
+++ b/src/com/android/launcher3/widget/PendingItemDragHelper.java
@@ -16,13 +16,14 @@
 
 package com.android.launcher3.widget;
 
+import static com.android.launcher3.widget.util.WidgetSizes.getWidgetSizePx;
+
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.Point;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
-import android.util.Log;
 import android.util.Size;
 import android.view.View;
 import android.view.View.MeasureSpec;
@@ -39,12 +40,11 @@
 import com.android.launcher3.dragndrop.DragOptions;
 import com.android.launcher3.dragndrop.DraggableView;
 import com.android.launcher3.graphics.DragPreviewProvider;
+import com.android.launcher3.icons.BaseIconFactory;
 import com.android.launcher3.icons.FastBitmapDrawable;
 import com.android.launcher3.icons.LauncherIcons;
 import com.android.launcher3.icons.RoundDrawableWrapper;
-import com.android.launcher3.testing.TestProtocol;
 import com.android.launcher3.widget.dragndrop.AppWidgetHostViewDragListener;
-import com.android.launcher3.widget.util.WidgetSizes;
 
 /**
  * Extension of {@link DragPreviewProvider} with logic specific to pending widgets/shortcuts
@@ -96,9 +96,6 @@
      */
     public void startDrag(Rect previewBounds, int previewBitmapWidth, int previewViewWidth,
             Point screenPos, DragSource source, DragOptions options) {
-        if (TestProtocol.sDebugTracing) {
-            Log.d(TestProtocol.NO_DROP_TARGET, "3");
-        }
         final Launcher launcher = Launcher.getLauncher(mView.getContext());
         LauncherAppState app = LauncherAppState.getInstance(launcher);
 
@@ -106,7 +103,6 @@
         final int previewWidth;
         final int previewHeight;
         final float scale;
-        final Point dragOffset;
         final Rect dragRegion;
 
         mEstimatedCellSize = launcher.getWorkspace().estimateItemSize(mAddInfo);
@@ -125,13 +121,8 @@
                 mAppWidgetHostViewPreview.setAppWidget(/* appWidgetId= */ -1,
                         ((PendingAddWidgetInfo) mAddInfo).info);
                 DeviceProfile deviceProfile = launcher.getDeviceProfile();
-                Rect padding = new Rect();
-                mAppWidgetHostViewPreview.getWidgetInset(deviceProfile, padding);
-                mAppWidgetHostViewPreview.setPadding(padding.left, padding.top, padding.right,
-                        padding.bottom);
                 mAppWidgetHostViewPreview.updateAppWidget(/* remoteViews= */ mRemoteViewsPreview);
-                Size widgetSizes = WidgetSizes.getWidgetPaddedSizePx(launcher,
-                        mAddInfo.componentName, deviceProfile, mAddInfo.spanX, mAddInfo.spanY);
+                Size widgetSizes = getWidgetSizePx(deviceProfile, mAddInfo.spanX, mAddInfo.spanY);
                 mAppWidgetHostViewPreview.measure(
                         MeasureSpec.makeMeasureSpec(widgetSizes.getWidth(), MeasureSpec.EXACTLY),
                         MeasureSpec.makeMeasureSpec(widgetSizes.getHeight(), MeasureSpec.EXACTLY));
@@ -165,8 +156,15 @@
                 previewBounds.right -= padding;
             }
             if (mAppWidgetHostViewPreview != null) {
-                previewWidth = mAppWidgetHostViewPreview.getMeasuredWidth();
-                previewHeight = mAppWidgetHostViewPreview.getMeasuredHeight();
+                float previewScale = mAppWidgetHostViewPreview.getScaleX();
+                int widgetWidth = mAppWidgetHostViewPreview.getMeasuredWidth();
+                int widgetHeight = mAppWidgetHostViewPreview.getMeasuredHeight();
+                previewWidth = Math.round(widgetWidth * previewScale);
+                previewHeight = Math.round(widgetHeight * previewScale);
+
+                previewBounds.offset(
+                        Math.round(widgetWidth * (previewScale - 1) / 2),
+                        Math.round(widgetHeight * (previewScale - 1) / 2));
             } else {
                 previewWidth = preview.getIntrinsicWidth();
                 previewHeight = preview.getIntrinsicHeight();
@@ -174,21 +172,20 @@
             scale = previewBounds.width() / (float) previewWidth;
             launcher.getDragController().addDragListener(new WidgetHostViewLoader(launcher, mView));
 
-            dragOffset = null;
             dragRegion = null;
             draggableView = DraggableView.ofType(DraggableView.DRAGGABLE_WIDGET);
         } else {
             PendingAddShortcutInfo createShortcutInfo = (PendingAddShortcutInfo) mAddInfo;
-            Drawable icon = createShortcutInfo.activityInfo.getFullResIcon(app.getIconCache());
+            Drawable icon = createShortcutInfo.getActivityInfo(launcher)
+                    .getFullResIcon(app.getIconCache());
             LauncherIcons li = LauncherIcons.obtain(launcher);
-            preview = new FastBitmapDrawable(li.createScaledBitmapWithoutShadow(icon));
+            preview = new FastBitmapDrawable(
+                    li.createScaledBitmap(icon, BaseIconFactory.MODE_DEFAULT));
             previewWidth = preview.getIntrinsicWidth();
             previewHeight = preview.getIntrinsicHeight();
             li.recycle();
             scale = ((float) launcher.getDeviceProfile().iconSizePx) / previewWidth;
 
-            dragOffset = new Point(previewPadding / 2, previewPadding / 2);
-
             // Create a preview same as the workspace cell size and draw the icon at the
             // appropriate position.
             DeviceProfile dp = launcher.getDeviceProfile();
@@ -216,11 +213,10 @@
         // Start the drag
         if (mAppWidgetHostViewPreview != null) {
             launcher.getDragController().startDrag(mAppWidgetHostViewPreview, draggableView,
-                    dragLayerX, dragLayerY, source, mAddInfo, dragOffset, dragRegion, scale, scale,
-                    options);
+                    dragLayerX, dragLayerY, source, mAddInfo, dragRegion, scale, scale, options);
         } else {
             launcher.getDragController().startDrag(preview, draggableView, dragLayerX, dragLayerY,
-                    source, mAddInfo, dragOffset, dragRegion, scale, scale, options);
+                    source, mAddInfo, dragRegion, scale, scale, options);
         }
     }
 
diff --git a/src/com/android/launcher3/widget/WidgetAddFlowHandler.java b/src/com/android/launcher3/widget/WidgetAddFlowHandler.java
index 9313266..9319a9c 100644
--- a/src/com/android/launcher3/widget/WidgetAddFlowHandler.java
+++ b/src/com/android/launcher3/widget/WidgetAddFlowHandler.java
@@ -55,7 +55,7 @@
 
     public void startBindFlow(Launcher launcher, int appWidgetId, ItemInfo info, int requestCode) {
         launcher.setWaitingForResult(PendingRequestArgs.forWidgetInfo(appWidgetId, this, info));
-        launcher.getAppWidgetHost()
+        launcher.getAppWidgetHolder()
                 .startBindFlow(launcher, appWidgetId, mProviderInfo, requestCode);
     }
 
@@ -77,7 +77,7 @@
             return false;
         }
         launcher.setWaitingForResult(PendingRequestArgs.forWidgetInfo(appWidgetId, this, info));
-        launcher.getAppWidgetHost().startConfigActivity(launcher, appWidgetId, requestCode);
+        launcher.getAppWidgetHolder().startConfigActivity(launcher, appWidgetId, requestCode);
         return true;
     }
 
diff --git a/src/com/android/launcher3/widget/WidgetCell.java b/src/com/android/launcher3/widget/WidgetCell.java
index 2796721..c30342a 100644
--- a/src/com/android/launcher3/widget/WidgetCell.java
+++ b/src/com/android/launcher3/widget/WidgetCell.java
@@ -16,17 +16,15 @@
 
 package com.android.launcher3.widget;
 
-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 com.android.launcher3.LauncherSettings.Favorites.CONTAINER_WIDGETS_TRAY;
-import static com.android.launcher3.Utilities.ATLEAST_S;
+import static com.android.launcher3.widget.LauncherAppWidgetProviderInfo.fromProviderInfo;
+import static com.android.launcher3.widget.util.WidgetSizes.getWidgetItemSizePx;
 
 import android.content.Context;
 import android.graphics.Bitmap;
 import android.graphics.drawable.Drawable;
 import android.os.Process;
+import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.util.Size;
@@ -46,7 +44,6 @@
 import androidx.annotation.Nullable;
 
 import com.android.launcher3.CheckLongPressHelper;
-import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.R;
 import com.android.launcher3.icons.FastBitmapDrawable;
@@ -54,7 +51,6 @@
 import com.android.launcher3.icons.cache.HandlerRunnable;
 import com.android.launcher3.model.WidgetItem;
 import com.android.launcher3.views.ActivityContext;
-import com.android.launcher3.widget.util.WidgetSizes;
 
 import java.util.function.Consumer;
 
@@ -74,40 +70,8 @@
 
     private static final int FADE_IN_DURATION_MS = 90;
 
-    /** Widget cell width is calculated by multiplying this factor to grid cell width. */
-    private static final float WIDTH_SCALE = 3f;
-
-    /** Widget preview width is calculated by multiplying this factor to the widget cell width. */
-    private static final float PREVIEW_SCALE = 0.8f;
-
     /**
-     * The maximum dimension that can be used as the size in
-     * {@link android.view.View.MeasureSpec#makeMeasureSpec(int, int)}.
-     *
-     * <p>This is equal to (1 << MeasureSpec.MODE_SHIFT) - 1.
-     */
-    private static final int MAX_MEASURE_SPEC_DIMENSION = (1 << 30) - 1;
-
-    /**
-     * The target preview width, in pixels, of a widget or a shortcut.
-     *
-     * <p>The actual preview width may be smaller than or equal to this value subjected to scaling.
-     */
-    protected int mTargetPreviewWidth;
-
-    /**
-     * The target preview height, in pixels, of a widget or a shortcut.
-     *
-     * <p>The actual preview height may be smaller than or equal to this value subjected to scaling.
-     */
-    protected int mTargetPreviewHeight;
-
-    protected int mPresetPreviewSize;
-
-    private int mCellSize;
-
-    /**
-     * The scale of the preview container.
+     * The requested scale of the preview container. It can be lower than this as well.
      */
     private float mPreviewContainerScale = 1f;
 
@@ -118,7 +82,8 @@
     private TextView mWidgetDims;
     private TextView mWidgetDescription;
 
-    protected WidgetItem mItem;
+    private WidgetItem mItem;
+    private Size mWidgetSize;
 
     private final DatabaseWidgetPreviewLoader mWidgetPreviewLoader;
 
@@ -149,18 +114,11 @@
         mWidgetPreviewLoader = new DatabaseWidgetPreviewLoader(context);
         mLongPressHelper = new CheckLongPressHelper(this);
         mLongPressHelper.setLongPressTimeoutFactor(1);
+        mEnforcedCornerRadius = RoundedCornerEnforcement.computeEnforcedRadius(context);
+        mWidgetSize = new Size(0, 0);
 
-        setContainerWidth();
-        setWillNotDraw(false);
         setClipToPadding(false);
         setAccessibilityDelegate(mActivity.getAccessibilityDelegate());
-        mEnforcedCornerRadius = RoundedCornerEnforcement.computeEnforcedRadius(context);
-    }
-
-    private void setContainerWidth() {
-        mCellSize = (int) (mActivity.getDeviceProfile().allAppsIconSizePx * WIDTH_SCALE);
-        mPresetPreviewSize = (int) (mCellSize * PREVIEW_SCALE);
-        mTargetPreviewWidth = mTargetPreviewHeight = mPresetPreviewSize;
     }
 
     @Override
@@ -205,7 +163,6 @@
         mWidgetDims.setText(null);
         mWidgetDescription.setText(null);
         mWidgetDescription.setVisibility(GONE);
-        mTargetPreviewWidth = mTargetPreviewHeight = mPresetPreviewSize;
 
         if (mActiveRequest != null) {
             mActiveRequest.cancel();
@@ -217,7 +174,9 @@
         }
         mAppWidgetHostViewPreview = null;
         mAppWidgetHostViewScale = 1f;
+        mPreviewContainerScale = 1f;
         mItem = null;
+        mWidgetSize = new Size(0, 0);
     }
 
     public void setSourceContainer(int sourceContainer) {
@@ -247,17 +206,12 @@
      */
     public void applyFromCellItem(WidgetItem item, float previewScale,
             @NonNull Consumer<Bitmap> callback, @Nullable Bitmap cachedPreview) {
-        // setPreviewSize
-        DeviceProfile deviceProfile = mActivity.getDeviceProfile();
-        Size widgetSize = WidgetSizes.getWidgetItemSizePx(getContext(), deviceProfile, item);
-        mTargetPreviewWidth = widgetSize.getWidth();
-        mTargetPreviewHeight = widgetSize.getHeight();
         mPreviewContainerScale = previewScale;
 
-        applyPreviewOnAppWidgetHostView(item);
-
         Context context = getContext();
         mItem = item;
+        mWidgetSize = getWidgetItemSizePx(getContext(), mActivity.getDeviceProfile(), mItem);
+
         mWidgetName.setText(mItem.label);
         mWidgetName.setContentDescription(
                 context.getString(R.string.widget_preview_context_description, mItem.label));
@@ -265,14 +219,11 @@
                 mItem.spanX, mItem.spanY));
         mWidgetDims.setContentDescription(context.getString(
                 R.string.widget_accessible_dims_format, mItem.spanX, mItem.spanY));
-        if (ATLEAST_S && mItem.widgetInfo != null) {
-            CharSequence description = mItem.widgetInfo.loadDescription(context);
-            if (description != null && description.length() > 0) {
-                mWidgetDescription.setText(description);
-                mWidgetDescription.setVisibility(VISIBLE);
-            } else {
-                mWidgetDescription.setVisibility(GONE);
-            }
+        if (!TextUtils.isEmpty(mItem.description)) {
+            mWidgetDescription.setText(mItem.description);
+            mWidgetDescription.setVisibility(VISIBLE);
+        } else {
+            mWidgetDescription.setVisibility(GONE);
         }
 
         if (item.activityInfo != null) {
@@ -281,34 +232,31 @@
             setTag(new PendingAddWidgetInfo(item.widgetInfo, mSourceContainer));
         }
 
-        ensurePreviewWithCallback(callback, cachedPreview);
-    }
-
-    private void applyPreviewOnAppWidgetHostView(WidgetItem item) {
         if (mRemoteViewsPreview != null) {
-            mAppWidgetHostViewPreview = createAppWidgetHostView(getContext());
+            mAppWidgetHostViewPreview = createAppWidgetHostView(context);
             setAppWidgetHostViewPreview(mAppWidgetHostViewPreview, item.widgetInfo,
                     mRemoteViewsPreview);
-            return;
+        } else if (item.hasPreviewLayout()) {
+            // If the context is a Launcher activity, DragView will show mAppWidgetHostViewPreview
+            // as a preview during drag & drop. And thus, we should use LauncherAppWidgetHostView,
+            // which supports applying local color extraction during drag & drop.
+            mAppWidgetHostViewPreview = isLauncherContext(context)
+                    ? new LauncherAppWidgetHostView(context)
+                    : createAppWidgetHostView(context);
+            LauncherAppWidgetProviderInfo providerInfo =
+                    fromProviderInfo(context, item.widgetInfo.clone());
+            // A hack to force the initial layout to be the preview layout since there is no API for
+            // rendering a preview layout for work profile apps yet. For non-work profile layout, a
+            // proper solution is to use RemoteViews(PackageName, LayoutId).
+            providerInfo.initialLayout = item.widgetInfo.previewLayout;
+            setAppWidgetHostViewPreview(mAppWidgetHostViewPreview, providerInfo, null);
+        } else if (cachedPreview != null) {
+            applyPreview(cachedPreview);
+        } else {
+            if (mActiveRequest == null) {
+                mActiveRequest = mWidgetPreviewLoader.loadPreview(mItem, mWidgetSize, callback);
+            }
         }
-
-        if (!item.hasPreviewLayout()) return;
-
-        Context context = getContext();
-        // If the context is a Launcher activity, DragView will show mAppWidgetHostViewPreview as
-        // a preview during drag & drop. And thus, we should use LauncherAppWidgetHostView, which
-        // supports applying local color extraction during drag & drop.
-        mAppWidgetHostViewPreview = isLauncherContext(context)
-                ? new LauncherAppWidgetHostView(context)
-                : createAppWidgetHostView(context);
-        LauncherAppWidgetProviderInfo launcherAppWidgetProviderInfo =
-                LauncherAppWidgetProviderInfo.fromProviderInfo(context, item.widgetInfo.clone());
-        // A hack to force the initial layout to be the preview layout since there is no API for
-        // rendering a preview layout for work profile apps yet. For non-work profile layout, a
-        // proper solution is to use RemoteViews(PackageName, LayoutId).
-        launcherAppWidgetProviderInfo.initialLayout = item.widgetInfo.previewLayout;
-        setAppWidgetHostViewPreview(mAppWidgetHostViewPreview,
-                launcherAppWidgetProviderInfo, /* remoteViews= */ null);
     }
 
     private void setAppWidgetHostViewPreview(
@@ -318,6 +266,43 @@
         appWidgetHostViewPreview.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO);
         appWidgetHostViewPreview.setAppWidget(/* appWidgetId= */ -1, providerInfo);
         appWidgetHostViewPreview.updateAppWidget(remoteViews);
+        appWidgetHostViewPreview.setClipToPadding(false);
+        appWidgetHostViewPreview.setClipChildren(false);
+
+        FrameLayout.LayoutParams widgetHostLP = new FrameLayout.LayoutParams(
+                mWidgetSize.getWidth(), mWidgetSize.getHeight(), Gravity.CENTER);
+        mWidgetImageContainer.addView(appWidgetHostViewPreview, /* index= */ 0, widgetHostLP);
+        mWidgetImage.setVisibility(View.GONE);
+        applyPreview(null);
+
+        appWidgetHostViewPreview.addOnLayoutChangeListener(
+                (v, l, t, r, b, ol, ot, or, ob) ->
+                        updateAppWidgetHostScale(appWidgetHostViewPreview));
+    }
+
+    private void updateAppWidgetHostScale(NavigableAppWidgetHostView view) {
+        // Scale the content such that all of the content is visible
+        int contentWidth = view.getWidth();
+        int contentHeight = view.getHeight();
+
+        if (view.getChildCount() == 1) {
+            View content = view.getChildAt(0);
+            // Take the content width based on the edge furthest from the center, so that when
+            // scaling the hostView, the farthest edge is still visible.
+            contentWidth = 2 * Math.max(contentWidth / 2 - content.getLeft(),
+                    content.getRight() - contentWidth / 2);
+            contentHeight = 2 * Math.max(contentHeight / 2 - content.getTop(),
+                    content.getBottom() - contentHeight / 2);
+        }
+
+        if (contentWidth <= 0 || contentHeight <= 0) {
+            mAppWidgetHostViewScale = 1;
+        } else {
+            float pWidth = mWidgetImageContainer.getWidth();
+            float pHeight = mWidgetImageContainer.getHeight();
+            mAppWidgetHostViewScale = Math.min(pWidth / contentWidth, pHeight / contentHeight);
+        }
+        view.setScaleToFit(mAppWidgetHostViewScale);
     }
 
     public WidgetImageView getWidgetView() {
@@ -337,17 +322,6 @@
         if (bitmap != null) {
             Drawable drawable = new RoundDrawableWrapper(
                     new FastBitmapDrawable(bitmap), mEnforcedCornerRadius);
-
-            // Scale down the preview size if it's wider than the cell.
-            float scale = 1f;
-            if (mTargetPreviewWidth > 0) {
-                float maxWidth = mTargetPreviewWidth;
-                float previewWidth = drawable.getIntrinsicWidth() * mPreviewContainerScale;
-                scale = Math.min(maxWidth / previewWidth, 1);
-            }
-            setContainerSize(
-                    Math.round(drawable.getIntrinsicWidth() * scale * mPreviewContainerScale),
-                    Math.round(drawable.getIntrinsicHeight() * scale * mPreviewContainerScale));
             mWidgetImage.setDrawable(drawable);
             mWidgetImage.setVisibility(View.VISIBLE);
             if (mAppWidgetHostViewPreview != null) {
@@ -380,57 +354,6 @@
         }
     }
 
-    private void setContainerSize(int width, int height) {
-        LayoutParams layoutParams = (LayoutParams) mWidgetImageContainer.getLayoutParams();
-        layoutParams.width = width;
-        layoutParams.height = height;
-        mWidgetImageContainer.setLayoutParams(layoutParams);
-    }
-
-    /**
-     * Ensures that the preview is already loaded or being loaded. If the preview is not loaded,
-     * it applies the provided cachedPreview. If that is null, it starts a loader and notifies the
-     * callback on successful load.
-     */
-    private void ensurePreviewWithCallback(Consumer<Bitmap> callback,
-            @Nullable Bitmap cachedPreview) {
-        if (mAppWidgetHostViewPreview != null) {
-            int containerWidth = (int) (mTargetPreviewWidth * mPreviewContainerScale);
-            int containerHeight = (int) (mTargetPreviewHeight * mPreviewContainerScale);
-            setContainerSize(containerWidth, containerHeight);
-            if (mAppWidgetHostViewPreview.getChildCount() == 1) {
-                View widgetContent = mAppWidgetHostViewPreview.getChildAt(0);
-                ViewGroup.LayoutParams layoutParams = widgetContent.getLayoutParams();
-                // We only scale preview if both the width & height of the outermost view group are
-                // not set to MATCH_PARENT.
-                boolean shouldScale =
-                        layoutParams.width != MATCH_PARENT && layoutParams.height != MATCH_PARENT;
-                if (shouldScale) {
-                    setNoClip(mWidgetImageContainer);
-                    setNoClip(mAppWidgetHostViewPreview);
-                    mAppWidgetHostViewScale = measureAndComputeWidgetPreviewScale();
-                    mAppWidgetHostViewPreview.setScaleToFit(mAppWidgetHostViewScale);
-                }
-            }
-            FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
-                    containerWidth, containerHeight, Gravity.FILL);
-            mAppWidgetHostViewPreview.setLayoutParams(params);
-            mWidgetImageContainer.addView(mAppWidgetHostViewPreview, /* index= */ 0);
-            mWidgetImage.setVisibility(View.GONE);
-            applyPreview(null);
-            return;
-        }
-        if (cachedPreview != null) {
-            applyPreview(cachedPreview);
-            return;
-        }
-        if (mActiveRequest != null) {
-            return;
-        }
-        mActiveRequest = mWidgetPreviewLoader.loadPreview(
-                mItem, new Size(mTargetPreviewWidth, mTargetPreviewHeight), callback);
-    }
-
     @Override
     public boolean onTouchEvent(MotionEvent ev) {
         super.onTouchEvent(ev);
@@ -468,61 +391,20 @@
         info.removeAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_CLICK);
     }
 
-    private static void setNoClip(ViewGroup view) {
-        view.setClipChildren(false);
-        view.setClipToPadding(false);
-    }
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        ViewGroup.LayoutParams containerLp = mWidgetImageContainer.getLayoutParams();
 
-    private float measureAndComputeWidgetPreviewScale() {
-        if (mAppWidgetHostViewPreview.getChildCount() != 1) {
-            return 1f;
+        mAppWidgetHostViewScale = mPreviewContainerScale;
+        int maxWidth = MeasureSpec.getSize(widthMeasureSpec);
+        containerLp.width = Math.round(mWidgetSize.getWidth() * mAppWidgetHostViewScale);
+        if (containerLp.width > maxWidth) {
+            containerLp.width = maxWidth;
+            mAppWidgetHostViewScale = (float) containerLp.width / mWidgetSize.getWidth();
         }
+        containerLp.height = Math.round(mWidgetSize.getHeight() * mAppWidgetHostViewScale);
+        // No need to call mWidgetImageContainer.setLayoutParams as we are in measure pass
 
-        // Measure the largest possible width & height that the app widget wants to display.
-        mAppWidgetHostViewPreview.measure(
-                makeMeasureSpec(MAX_MEASURE_SPEC_DIMENSION, MeasureSpec.UNSPECIFIED),
-                makeMeasureSpec(MAX_MEASURE_SPEC_DIMENSION, MeasureSpec.UNSPECIFIED));
-        if (mRemoteViewsPreview != null) {
-            // If RemoteViews contains multiple sizes, the best fit sized RemoteViews will be
-            // selected in onLayout. To work out the right measurement, let's layout and then
-            // measure again.
-            mAppWidgetHostViewPreview.layout(
-                    /* left= */ 0,
-                    /* top= */ 0,
-                    /* right= */ mTargetPreviewWidth,
-                    /* bottom= */ mTargetPreviewHeight);
-            mAppWidgetHostViewPreview.measure(
-                    makeMeasureSpec(mTargetPreviewWidth, MeasureSpec.UNSPECIFIED),
-                    makeMeasureSpec(mTargetPreviewHeight, MeasureSpec.UNSPECIFIED));
-
-        }
-        View widgetContent = mAppWidgetHostViewPreview.getChildAt(0);
-        int appWidgetContentWidth = widgetContent.getMeasuredWidth();
-        int appWidgetContentHeight = widgetContent.getMeasuredHeight();
-        if (appWidgetContentWidth == 0 || appWidgetContentHeight == 0) {
-            return 1f;
-        }
-
-        // If the width / height of the widget content is set to wrap content, overrides the width /
-        // height with the measured dimension. This avoids incorrect measurement after scaling.
-        FrameLayout.LayoutParams layoutParam =
-                (FrameLayout.LayoutParams) widgetContent.getLayoutParams();
-        if (layoutParam.width == WRAP_CONTENT) {
-            layoutParam.width = widgetContent.getMeasuredWidth();
-        }
-        if (layoutParam.height == WRAP_CONTENT) {
-            layoutParam.height = widgetContent.getMeasuredHeight();
-        }
-        widgetContent.setLayoutParams(layoutParam);
-
-        int horizontalPadding = mAppWidgetHostViewPreview.getPaddingStart()
-                + mAppWidgetHostViewPreview.getPaddingEnd();
-        int verticalPadding = mAppWidgetHostViewPreview.getPaddingTop()
-                + mAppWidgetHostViewPreview.getPaddingBottom();
-        return Math.min(
-                (mTargetPreviewWidth - horizontalPadding) * mPreviewContainerScale
-                        / appWidgetContentWidth,
-                (mTargetPreviewHeight - verticalPadding) * mPreviewContainerScale
-                        / appWidgetContentHeight);
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
     }
 }
diff --git a/src/com/android/launcher3/widget/WidgetHostViewLoader.java b/src/com/android/launcher3/widget/WidgetHostViewLoader.java
index 46141e0..b18cd47 100644
--- a/src/com/android/launcher3/widget/WidgetHostViewLoader.java
+++ b/src/com/android/launcher3/widget/WidgetHostViewLoader.java
@@ -59,7 +59,7 @@
 
         // Cleanup widget id
         if (mWidgetLoadingId != -1) {
-            mLauncher.getAppWidgetHost().deleteAppWidgetId(mWidgetLoadingId);
+            mLauncher.getAppWidgetHolder().deleteAppWidgetId(mWidgetLoadingId);
             mWidgetLoadingId = -1;
         }
 
@@ -69,7 +69,7 @@
                 Log.d(TAG, "...removing widget from drag layer");
             }
             mLauncher.getDragLayer().removeView(mInfo.boundWidget);
-            mLauncher.getAppWidgetHost().deleteAppWidgetId(mInfo.boundWidget.getAppWidgetId());
+            mLauncher.getAppWidgetHolder().deleteAppWidgetId(mInfo.boundWidget.getAppWidgetId());
             mInfo.boundWidget = null;
         }
     }
@@ -94,7 +94,7 @@
         mBindWidgetRunnable = new Runnable() {
             @Override
             public void run() {
-                mWidgetLoadingId = mLauncher.getAppWidgetHost().allocateAppWidgetId();
+                mWidgetLoadingId = mLauncher.getAppWidgetHolder().allocateAppWidgetId();
                 if (LOGD) {
                     Log.d(TAG, "Binding widget, id: " + mWidgetLoadingId);
                 }
@@ -116,7 +116,7 @@
                 if (mWidgetLoadingId == -1) {
                     return;
                 }
-                AppWidgetHostView hostView = mLauncher.getAppWidgetHost().createView(
+                AppWidgetHostView hostView = mLauncher.getAppWidgetHolder().createView(
                         (Context) mLauncher, mWidgetLoadingId, pInfo);
                 mInfo.boundWidget = hostView;
 
diff --git a/src/com/android/launcher3/widget/WidgetManagerHelper.java b/src/com/android/launcher3/widget/WidgetManagerHelper.java
index 15fa844..737cdbd 100644
--- a/src/com/android/launcher3/widget/WidgetManagerHelper.java
+++ b/src/com/android/launcher3/widget/WidgetManagerHelper.java
@@ -78,8 +78,16 @@
             return allWidgetsSteam(mContext).collect(Collectors.toList());
         }
 
-        return mAppWidgetManager.getInstalledProvidersForPackage(
-                packageUser.mPackageName, packageUser.mUser);
+        try {
+            return mAppWidgetManager.getInstalledProvidersForPackage(
+                    packageUser.mPackageName, packageUser.mUser);
+        } catch (IllegalStateException e) {
+            // b/277189566: Launcher will load the widget when it gets the user-unlock event.
+            // If exception is thrown because of device is locked, it means a race condition occurs
+            // that the user got locked again while launcher is processing the event. In this case
+            // we should return empty list.
+            return Collections.emptyList();
+        }
     }
 
     /**
diff --git a/src/com/android/launcher3/widget/WidgetsBottomSheet.java b/src/com/android/launcher3/widget/WidgetsBottomSheet.java
index bf521cc..846dafd 100644
--- a/src/com/android/launcher3/widget/WidgetsBottomSheet.java
+++ b/src/com/android/launcher3/widget/WidgetsBottomSheet.java
@@ -36,6 +36,8 @@
 import android.widget.TableRow;
 import android.widget.TextView;
 
+import androidx.annotation.Px;
+
 import com.android.launcher3.R;
 import com.android.launcher3.anim.PendingAnimation;
 import com.android.launcher3.model.WidgetItem;
@@ -69,8 +71,7 @@
     private static final long EDUCATION_TIP_DELAY_MS = 300;
 
     private ItemInfo mOriginalItemInfo;
-    private int mMaxHorizontalSpan = DEFAULT_MAX_HORIZONTAL_SPANS;
-    private final int mWidgetCellHorizontalPadding;
+    @Px private int mMaxHorizontalSpan;
 
     private final OnLayoutChangeListener mLayoutChangeListenerToShowTips =
             new OnLayoutChangeListener() {
@@ -111,14 +112,14 @@
         if (!hasSeenEducationTip()) {
             addOnLayoutChangeListener(mLayoutChangeListenerToShowTips);
         }
-        mWidgetCellHorizontalPadding = getResources().getDimensionPixelSize(
-                R.dimen.widget_cell_horizontal_padding);
     }
 
     @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
         mContent = findViewById(R.id.widgets_bottom_sheet);
+        setContentBackgroundWithParent(
+                getContext().getDrawable(R.drawable.bg_rounded_corner_bottom_sheet), mContent);
     }
 
     @Override
@@ -133,7 +134,7 @@
     private boolean updateMaxSpansPerRow() {
         if (getMeasuredWidth() == 0) return false;
 
-        int maxHorizontalSpan = computeMaxHorizontalSpans(mContent, mWidgetCellHorizontalPadding);
+        @Px int maxHorizontalSpan = mContent.getMeasuredWidth() - (2 * mContentHorizontalMargin);
         if (mMaxHorizontalSpan != maxHorizontalSpan) {
             // Ensure the table layout is showing widgets in the right column after measure.
             mMaxHorizontalSpan = maxHorizontalSpan;
@@ -183,7 +184,9 @@
         TableLayout widgetsTable = findViewById(R.id.widgets_table);
         widgetsTable.removeAllViews();
 
-        WidgetsTableUtils.groupWidgetItemsIntoTableWithReordering(widgets, mMaxHorizontalSpan)
+        WidgetsTableUtils.groupWidgetItemsUsingRowPxWithReordering(widgets, mActivityContext,
+                mActivityContext.getDeviceProfile(), mMaxHorizontalSpan,
+                mWidgetCellHorizontalPadding)
                 .forEach(row -> {
                     TableRow tableRow = new TableRow(getContext());
                     tableRow.setGravity(Gravity.TOP);
@@ -249,8 +252,11 @@
         super.setInsets(insets);
         int bottomPadding = Math.max(insets.bottom, mNavBarScrimHeight);
 
-        mContent.setPadding(mContent.getPaddingStart(),
-                mContent.getPaddingTop(), mContent.getPaddingEnd(),
+        View widgetsTable = findViewById(R.id.widgets_table);
+        widgetsTable.setPadding(
+                widgetsTable.getPaddingLeft(),
+                widgetsTable.getPaddingTop(),
+                widgetsTable.getPaddingRight(),
                 bottomPadding);
         if (bottomPadding > 0) {
             setupNavBarColor();
diff --git a/src/com/android/launcher3/widget/model/WidgetListSpaceEntry.java b/src/com/android/launcher3/widget/model/WidgetListSpaceEntry.java
index 7f24905..5b1da5b 100644
--- a/src/com/android/launcher3/widget/model/WidgetListSpaceEntry.java
+++ b/src/com/android/launcher3/widget/model/WidgetListSpaceEntry.java
@@ -33,9 +33,4 @@
                 Collections.EMPTY_LIST);
         mPkgItem.title = "";
     }
-
-    @Override
-    public int getRank() {
-        return RANK_WIDGETS_TOP_SPACE;
-    }
 }
diff --git a/src/com/android/launcher3/widget/model/WidgetsListBaseEntry.java b/src/com/android/launcher3/widget/model/WidgetsListBaseEntry.java
index 1d1c9dc..0003b76 100644
--- a/src/com/android/launcher3/widget/model/WidgetsListBaseEntry.java
+++ b/src/com/android/launcher3/widget/model/WidgetsListBaseEntry.java
@@ -16,16 +16,11 @@
 
 package com.android.launcher3.widget.model;
 
-import static java.lang.annotation.RetentionPolicy.SOURCE;
-
-import androidx.annotation.IntDef;
-
 import com.android.launcher3.model.WidgetItem;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.PackageItemInfo;
 import com.android.launcher3.widget.WidgetItemComparator;
 
-import java.lang.annotation.Retention;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -48,38 +43,4 @@
         this.mWidgets =
                 items.stream().sorted(new WidgetItemComparator()).collect(Collectors.toList());
     }
-
-    /**
-     * Returns the ranking of this entry in the
-     * {@link com.android.launcher3.widget.picker.WidgetsListAdapter}.
-     *
-     * <p>Entries with smaller value should be shown first. See
-     * {@link com.android.launcher3.widget.picker.WidgetsDiffReporter} for more details.
-     */
-    @Rank
-    public abstract int getRank();
-
-    /**
-     * Marker interface for subclasses that are headers for widget list items.
-     *
-     * @param <T> The type of this class.
-     */
-    public interface Header<T extends WidgetsListBaseEntry & Header<T>> {
-        /** Returns whether the widget list is currently expanded. */
-        boolean isWidgetListShown();
-
-        /** Returns a copy of the item with the widget list shown. */
-        T withWidgetListShown();
-    }
-
-    @Retention(SOURCE)
-    @IntDef({RANK_WIDGETS_TOP_SPACE, RANK_WIDGETS_LIST_HEADER, RANK_WIDGETS_LIST_SEARCH_HEADER,
-            RANK_WIDGETS_LIST_CONTENT})
-    public @interface Rank {
-    }
-
-    public static final int RANK_WIDGETS_TOP_SPACE = 1;
-    public static final int RANK_WIDGETS_LIST_HEADER = 2;
-    public static final int RANK_WIDGETS_LIST_SEARCH_HEADER = 3;
-    public static final int RANK_WIDGETS_LIST_CONTENT = 4;
 }
diff --git a/src/com/android/launcher3/widget/model/WidgetsListContentEntry.java b/src/com/android/launcher3/widget/model/WidgetsListContentEntry.java
index 73b17f1..d709196 100644
--- a/src/com/android/launcher3/widget/model/WidgetsListContentEntry.java
+++ b/src/com/android/launcher3/widget/model/WidgetsListContentEntry.java
@@ -15,6 +15,8 @@
  */
 package com.android.launcher3.widget.model;
 
+import androidx.annotation.Px;
+
 import com.android.launcher3.model.WidgetItem;
 import com.android.launcher3.model.data.PackageItemInfo;
 
@@ -26,7 +28,7 @@
  */
 public final class WidgetsListContentEntry extends WidgetsListBaseEntry {
 
-    private final int mMaxSpanSizeInCells;
+    @Px private final int mMaxSpanSize;
 
     /**
      * Constructor for {@link WidgetsListContentEntry}.
@@ -37,7 +39,7 @@
      */
     public WidgetsListContentEntry(PackageItemInfo pkgItem, String titleSectionName,
             List<WidgetItem> items) {
-        this(pkgItem, titleSectionName, items, /* maxSpanSizeInCells= */ 0);
+        this(pkgItem, titleSectionName, items, /* maxSpanSize= */ 0);
     }
 
     /**
@@ -46,49 +48,43 @@
      * @param pkgItem package info associated with the entry
      * @param titleSectionName title section name associated with the entry.
      * @param items list of widgets for the package.
-     * @param maxSpanSizeInCells the max horizontal span in cells that is allowed for grouping more
+     * @param maxSpanSize the max horizontal span in pixels that is allowed for grouping more
      *                           than one widgets in a table row.
      */
     public WidgetsListContentEntry(PackageItemInfo pkgItem, String titleSectionName,
-            List<WidgetItem> items, int maxSpanSizeInCells) {
+            List<WidgetItem> items, @Px int maxSpanSize) {
         super(pkgItem, titleSectionName, items);
-        mMaxSpanSizeInCells = maxSpanSizeInCells;
+        mMaxSpanSize = maxSpanSize;
     }
 
     @Override
     public String toString() {
-        return "Content:" + mPkgItem.packageName + ":" + mWidgets.size() + " maxSpanSizeInCells: "
-                + mMaxSpanSizeInCells;
-    }
-
-    @Override
-    @Rank
-    public int getRank() {
-        return RANK_WIDGETS_LIST_CONTENT;
+        return "Content:" + mPkgItem.packageName + ":" + mWidgets.size() + " maxSpanSize: "
+                + mMaxSpanSize;
     }
 
     /**
-     * Returns a copy of this {@link WidgetsListContentEntry} with updated
-     * {@param maxSpanSizeInCells}.
+     * Returns a copy of this {@link WidgetsListContentEntry} with updated {@code maxSpanSize}.
      *
-     * @param maxSpanSizeInCells the maximum horizontal span in cells that is allowed for grouping
+     * @param maxSpanSize the maximum horizontal span in pixels that is allowed for grouping
      *                           more than one widgets in a table row.
      */
-    public WidgetsListContentEntry withMaxSpanSize(int maxSpanSizeInCells) {
-        if (mMaxSpanSizeInCells == maxSpanSizeInCells) return this;
+    public WidgetsListContentEntry withMaxSpanSize(@Px int maxSpanSize) {
+        if (mMaxSpanSize == maxSpanSize) return this;
         return new WidgetsListContentEntry(
                 mPkgItem,
                 mTitleSectionName,
                 mWidgets,
-                /* maxSpanSizeInCells= */ maxSpanSizeInCells);
+                /* maxSpanSize= */ maxSpanSize);
     }
 
     /**
-     * Returns the max horizontal span size in cells that is allowed for grouping more than one
+     * Returns the max horizontal span size in pixels that is allowed for grouping more than one
      * widget in a table row.
      */
-    public int getMaxSpanSizeInCells() {
-        return mMaxSpanSizeInCells;
+    @Px
+    public int getMaxSpanSize() {
+        return mMaxSpanSize;
     }
 
     @Override
@@ -97,6 +93,6 @@
         WidgetsListContentEntry otherEntry = (WidgetsListContentEntry) obj;
         return mWidgets.equals(otherEntry.mWidgets) && mPkgItem.equals(otherEntry.mPkgItem)
                 && mTitleSectionName.equals(otherEntry.mTitleSectionName)
-                && mMaxSpanSizeInCells == otherEntry.mMaxSpanSizeInCells;
+                && mMaxSpanSize == otherEntry.mMaxSpanSize;
     }
 }
diff --git a/src/com/android/launcher3/widget/model/WidgetsListHeaderEntry.java b/src/com/android/launcher3/widget/model/WidgetsListHeaderEntry.java
index 5b3ea94..68f18ae 100644
--- a/src/com/android/launcher3/widget/model/WidgetsListHeaderEntry.java
+++ b/src/com/android/launcher3/widget/model/WidgetsListHeaderEntry.java
@@ -15,35 +15,67 @@
  */
 package com.android.launcher3.widget.model;
 
+import android.content.Context;
+import android.content.res.Resources;
+
+import androidx.annotation.Nullable;
+
+import com.android.launcher3.R;
 import com.android.launcher3.model.WidgetItem;
 import com.android.launcher3.model.data.PackageItemInfo;
+import com.android.launcher3.util.PluralMessageFormat;
 
 import java.util.List;
+import java.util.function.BiFunction;
+import java.util.stream.Collectors;
 
 /** An information holder for an app which has widgets or/and shortcuts. */
-public final class WidgetsListHeaderEntry extends WidgetsListBaseEntry
-        implements WidgetsListBaseEntry.Header<WidgetsListHeaderEntry> {
+public final class WidgetsListHeaderEntry extends WidgetsListBaseEntry {
 
-    public final int widgetsCount;
-    public final int shortcutsCount;
+    private static final BiFunction<Context, WidgetsListHeaderEntry, String> SUBTITLE_SEARCH =
+            (context, entry) -> entry.mWidgets.stream()
+                    .map(item -> item.label).sorted().collect(Collectors.joining(", "));
+
+    private static final BiFunction<Context, WidgetsListHeaderEntry, String> SUBTITLE_DEFAULT =
+            (context, entry) -> {
+                List<WidgetItem> items = entry.mWidgets;
+                int wc = (int) items.stream().filter(item -> item.widgetInfo != null).count();
+                int sc = Math.max(0, items.size() - wc);
+
+                Resources resources = context.getResources();
+                if (wc == 0 && sc == 0) {
+                    return null;
+                }
+
+                String subtitle;
+                if (wc > 0 && sc > 0) {
+                    String widgetsCount = PluralMessageFormat.getIcuPluralString(context,
+                            R.string.widgets_count, wc);
+                    String shortcutsCount = PluralMessageFormat.getIcuPluralString(context,
+                            R.string.shortcuts_count, sc);
+                    subtitle = resources.getString(R.string.widgets_and_shortcuts_count,
+                            widgetsCount, shortcutsCount);
+                } else if (wc > 0) {
+                    subtitle = PluralMessageFormat.getIcuPluralString(context,
+                            R.string.widgets_count, wc);
+                } else {
+                    subtitle = PluralMessageFormat.getIcuPluralString(context,
+                            R.string.shortcuts_count, sc);
+                }
+                return subtitle;
+            };
 
     private final boolean mIsWidgetListShown;
-
-    public WidgetsListHeaderEntry(PackageItemInfo pkgItem, String titleSectionName,
-            List<WidgetItem> items) {
-        this(pkgItem, titleSectionName, items, /* isWidgetListShown= */ false);
-    }
+    private final boolean mIsSearchEntry;
 
     private WidgetsListHeaderEntry(PackageItemInfo pkgItem, String titleSectionName,
-            List<WidgetItem> items, boolean isWidgetListShown) {
+            List<WidgetItem> items, boolean isSearchEntry, boolean isWidgetListShown) {
         super(pkgItem, titleSectionName, items);
-        widgetsCount = (int) items.stream().filter(item -> item.widgetInfo != null).count();
-        shortcutsCount = Math.max(0, items.size() - widgetsCount);
+        mIsSearchEntry = isSearchEntry;
         mIsWidgetListShown = isWidgetListShown;
     }
 
     /** Returns {@code true} if the widgets list associated with this header is shown. */
-    @Override
     public boolean isWidgetListShown() {
         return mIsWidgetListShown;
     }
@@ -53,10 +85,14 @@
         return "Header:" + mPkgItem.packageName + ":" + mWidgets.size();
     }
 
-    @Override
-    @Rank
-    public int getRank() {
-        return RANK_WIDGETS_LIST_HEADER;
+    public boolean isSearchEntry() {
+        return mIsSearchEntry;
+    }
+
+    @Nullable
+    public String getSubtitle(Context context) {
+        return mIsSearchEntry
+                ? SUBTITLE_SEARCH.apply(context, this) : SUBTITLE_DEFAULT.apply(context, this);
     }
 
     @Override
@@ -65,17 +101,38 @@
         WidgetsListHeaderEntry otherEntry = (WidgetsListHeaderEntry) obj;
         return mWidgets.equals(otherEntry.mWidgets) && mPkgItem.equals(otherEntry.mPkgItem)
                 && mTitleSectionName.equals(otherEntry.mTitleSectionName)
-                && mIsWidgetListShown == otherEntry.mIsWidgetListShown;
+                && mIsWidgetListShown == otherEntry.mIsWidgetListShown
+                && mIsSearchEntry == otherEntry.mIsSearchEntry;
     }
 
     /** Returns a copy of this {@link WidgetsListHeaderEntry} with the widget list shown. */
-    @Override
     public WidgetsListHeaderEntry withWidgetListShown() {
         if (mIsWidgetListShown) return this;
         return new WidgetsListHeaderEntry(
                 mPkgItem,
                 mTitleSectionName,
                 mWidgets,
+                mIsSearchEntry,
                 /* isWidgetListShown= */ true);
     }
+
+    public static WidgetsListHeaderEntry create(PackageItemInfo pkgItem, String titleSectionName,
+            List<WidgetItem> items) {
+        return new WidgetsListHeaderEntry(
+                pkgItem,
+                titleSectionName,
+                items,
+                /* forSearch */ false,
+                /* isWidgetListShown= */ false);
+    }
+
+    public static WidgetsListHeaderEntry createForSearch(PackageItemInfo pkgItem,
+            String titleSectionName, List<WidgetItem> items) {
+        return new WidgetsListHeaderEntry(
+                pkgItem,
+                titleSectionName,
+                items,
+                /* forSearch */ true,
+                /* isWidgetListShown= */ false);
+    }
 }
diff --git a/src/com/android/launcher3/widget/model/WidgetsListSearchHeaderEntry.java b/src/com/android/launcher3/widget/model/WidgetsListSearchHeaderEntry.java
deleted file mode 100644
index 055e4ec..0000000
--- a/src/com/android/launcher3/widget/model/WidgetsListSearchHeaderEntry.java
+++ /dev/null
@@ -1,76 +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.launcher3.widget.model;
-
-import com.android.launcher3.model.WidgetItem;
-import com.android.launcher3.model.data.PackageItemInfo;
-
-import java.util.List;
-
-/** An information holder for an app which has widgets or/and shortcuts, to be shown in search. */
-public final class WidgetsListSearchHeaderEntry extends WidgetsListBaseEntry
-        implements WidgetsListBaseEntry.Header<WidgetsListSearchHeaderEntry> {
-
-    private final boolean mIsWidgetListShown;
-
-    public WidgetsListSearchHeaderEntry(PackageItemInfo pkgItem, String titleSectionName,
-            List<WidgetItem> items) {
-        this(pkgItem, titleSectionName, items, /* isWidgetListShown= */ false);
-    }
-
-    private WidgetsListSearchHeaderEntry(PackageItemInfo pkgItem, String titleSectionName,
-            List<WidgetItem> items, boolean isWidgetListShown) {
-        super(pkgItem, titleSectionName, items);
-        mIsWidgetListShown = isWidgetListShown;
-    }
-
-    /** Returns {@code true} if the widgets list associated with this header is shown. */
-    @Override
-    public boolean isWidgetListShown() {
-        return mIsWidgetListShown;
-    }
-
-    @Override
-    public String toString() {
-        return "SearchHeader:" + mPkgItem.packageName + ":" + mWidgets.size();
-    }
-
-    @Override
-    @Rank
-    public int getRank() {
-        return RANK_WIDGETS_LIST_SEARCH_HEADER;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (!(obj instanceof WidgetsListSearchHeaderEntry)) return false;
-        WidgetsListSearchHeaderEntry otherEntry = (WidgetsListSearchHeaderEntry) obj;
-        return mWidgets.equals(otherEntry.mWidgets) && mPkgItem.equals(otherEntry.mPkgItem)
-                && mTitleSectionName.equals(otherEntry.mTitleSectionName)
-                && mIsWidgetListShown == otherEntry.mIsWidgetListShown;
-    }
-
-    /** Returns a copy of this {@link WidgetsListSearchHeaderEntry} with the widget list shown. */
-    @Override
-    public WidgetsListSearchHeaderEntry withWidgetListShown() {
-        if (mIsWidgetListShown) return this;
-        return new WidgetsListSearchHeaderEntry(
-                mPkgItem,
-                mTitleSectionName,
-                mWidgets,
-                /* isWidgetListShown= */ true);
-    }
-}
diff --git a/src/com/android/launcher3/widget/picker/SearchAndRecommendationsScrollController.java b/src/com/android/launcher3/widget/picker/SearchAndRecommendationsScrollController.java
deleted file mode 100644
index 716dcf3..0000000
--- a/src/com/android/launcher3/widget/picker/SearchAndRecommendationsScrollController.java
+++ /dev/null
@@ -1,223 +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.launcher3.widget.picker;
-
-import static com.android.launcher3.anim.AnimatorListeners.forEndCallback;
-
-import android.animation.Animator;
-import android.animation.ObjectAnimator;
-import android.util.FloatProperty;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.android.launcher3.R;
-import com.android.launcher3.widget.picker.WidgetsSpaceViewHolderBinder.EmptySpaceView;
-import com.android.launcher3.widget.picker.search.WidgetsSearchBar;
-
-/**
- * A controller which measures & updates {@link WidgetsFullSheet}'s views padding, margin and
- * vertical displacement upon scrolling.
- */
-final class SearchAndRecommendationsScrollController implements
-        RecyclerView.OnChildAttachStateChangeListener {
-
-    private static final FloatProperty<SearchAndRecommendationsScrollController> SCROLL_OFFSET =
-            new FloatProperty<SearchAndRecommendationsScrollController>("scrollAnimOffset") {
-        @Override
-        public void setValue(SearchAndRecommendationsScrollController controller, float offset) {
-            controller.mScrollOffset = offset;
-            controller.updateHeaderScroll();
-        }
-
-        @Override
-        public Float get(SearchAndRecommendationsScrollController controller) {
-            return controller.mScrollOffset;
-        }
-    };
-
-    private static final MotionEventProxyMethod INTERCEPT_PROXY = ViewGroup::onInterceptTouchEvent;
-    private static final MotionEventProxyMethod TOUCH_PROXY = ViewGroup::onTouchEvent;
-
-    final SearchAndRecommendationsView mContainer;
-    final View mSearchBarContainer;
-    final WidgetsSearchBar mSearchBar;
-    final TextView mHeaderTitle;
-    final WidgetsRecommendationTableLayout mRecommendedWidgetsTable;
-    @Nullable final View mTabBar;
-
-    private WidgetsRecyclerView mCurrentRecyclerView;
-    private EmptySpaceView mCurrentEmptySpaceView;
-
-    private float mLastScroll = 0;
-    private float mScrollOffset = 0;
-    private Animator mOffsetAnimator;
-
-    private boolean mShouldForwardToRecyclerView = false;
-
-    private int mHeaderHeight;
-
-    SearchAndRecommendationsScrollController(
-            SearchAndRecommendationsView searchAndRecommendationContainer) {
-        mContainer = searchAndRecommendationContainer;
-        mSearchBarContainer = mContainer.findViewById(R.id.search_bar_container);
-        mSearchBar = mContainer.findViewById(R.id.widgets_search_bar);
-        mHeaderTitle = mContainer.findViewById(R.id.title);
-        mRecommendedWidgetsTable = mContainer.findViewById(R.id.recommended_widget_table);
-        mTabBar = mContainer.findViewById(R.id.tabs);
-
-        mContainer.setSearchAndRecommendationScrollController(this);
-    }
-
-    public void setCurrentRecyclerView(WidgetsRecyclerView currentRecyclerView) {
-        boolean animateReset = mCurrentRecyclerView != null;
-        if (mCurrentRecyclerView != null) {
-            mCurrentRecyclerView.removeOnChildAttachStateChangeListener(this);
-        }
-        mCurrentRecyclerView = currentRecyclerView;
-        mCurrentRecyclerView.addOnChildAttachStateChangeListener(this);
-        findCurrentEmptyView();
-        reset(animateReset);
-    }
-
-    public int getHeaderHeight() {
-        return mHeaderHeight;
-    }
-
-    private void updateHeaderScroll() {
-        mLastScroll = getCurrentScroll();
-        mHeaderTitle.setTranslationY(mLastScroll);
-        mRecommendedWidgetsTable.setTranslationY(mLastScroll);
-
-        float searchYDisplacement = Math.max(mLastScroll, -mSearchBarContainer.getTop());
-        mSearchBarContainer.setTranslationY(searchYDisplacement);
-
-        if (mTabBar != null) {
-            float tabsDisplacement = Math.max(mLastScroll, -mTabBar.getTop()
-                    + mSearchBarContainer.getHeight());
-            mTabBar.setTranslationY(tabsDisplacement);
-        }
-    }
-
-    private float getCurrentScroll() {
-        return mScrollOffset + (mCurrentEmptySpaceView == null ? 0 : mCurrentEmptySpaceView.getY());
-    }
-
-    /**
-     * Updates the scrollable header height
-     *
-     * @return {@code true} if the header height or dependent property changed.
-     */
-    public boolean updateHeaderHeight() {
-        boolean hasSizeUpdated = false;
-
-        int headerHeight = mContainer.getMeasuredHeight();
-        if (headerHeight != mHeaderHeight) {
-            mHeaderHeight = headerHeight;
-            hasSizeUpdated = true;
-        }
-
-        if (mCurrentEmptySpaceView != null
-                && mCurrentEmptySpaceView.setFixedHeight(mHeaderHeight)) {
-            hasSizeUpdated = true;
-        }
-        return hasSizeUpdated;
-    }
-
-    /** Resets any previous view translation. */
-    public void reset(boolean animate) {
-        if (mOffsetAnimator != null) {
-            mOffsetAnimator.cancel();
-            mOffsetAnimator = null;
-        }
-
-        mScrollOffset = 0;
-        if (!animate) {
-            updateHeaderScroll();
-        } else {
-            float startValue = mLastScroll - getCurrentScroll();
-            mOffsetAnimator = ObjectAnimator.ofFloat(this, SCROLL_OFFSET, startValue, 0);
-            mOffsetAnimator.addListener(forEndCallback(() -> mOffsetAnimator = null));
-            mOffsetAnimator.start();
-        }
-    }
-
-    /**
-     * Returns {@code true} if a touch event should be intercepted by this controller.
-     */
-    public boolean onInterceptTouchEvent(MotionEvent event) {
-        return (mShouldForwardToRecyclerView = proxyMotionEvent(event, INTERCEPT_PROXY));
-    }
-
-    /**
-     * Returns {@code true} if this controller has intercepted and consumed a touch event.
-     */
-    public boolean onTouchEvent(MotionEvent event) {
-        return mShouldForwardToRecyclerView && proxyMotionEvent(event, TOUCH_PROXY);
-    }
-
-    private boolean proxyMotionEvent(MotionEvent event, MotionEventProxyMethod method) {
-        float dx = mCurrentRecyclerView.getLeft() - mContainer.getLeft();
-        float dy = mCurrentRecyclerView.getTop() - mContainer.getTop();
-        event.offsetLocation(dx, dy);
-        try {
-            return method.proxyEvent(mCurrentRecyclerView, event);
-        } finally {
-            event.offsetLocation(-dx, -dy);
-        }
-    }
-
-    @Override
-    public void onChildViewAttachedToWindow(@NonNull View view) {
-        if (view instanceof EmptySpaceView) {
-            findCurrentEmptyView();
-        }
-    }
-
-    @Override
-    public void onChildViewDetachedFromWindow(@NonNull View view) {
-        if (view == mCurrentEmptySpaceView) {
-            findCurrentEmptyView();
-        }
-    }
-
-    private void findCurrentEmptyView() {
-        if (mCurrentEmptySpaceView != null) {
-            mCurrentEmptySpaceView.setOnYChangeCallback(null);
-            mCurrentEmptySpaceView = null;
-        }
-        int childCount = mCurrentRecyclerView.getChildCount();
-        for (int i = 0; i < childCount; i++) {
-            View view = mCurrentRecyclerView.getChildAt(i);
-            if (view instanceof EmptySpaceView) {
-                mCurrentEmptySpaceView = (EmptySpaceView) view;
-                mCurrentEmptySpaceView.setFixedHeight(getHeaderHeight());
-                mCurrentEmptySpaceView.setOnYChangeCallback(this::updateHeaderScroll);
-                return;
-            }
-        }
-    }
-
-    private interface MotionEventProxyMethod {
-
-        boolean proxyEvent(ViewGroup view, MotionEvent event);
-    }
-}
diff --git a/src/com/android/launcher3/widget/picker/SearchAndRecommendationsView.java b/src/com/android/launcher3/widget/picker/SearchAndRecommendationsView.java
deleted file mode 100644
index 0d7d2b5..0000000
--- a/src/com/android/launcher3/widget/picker/SearchAndRecommendationsView.java
+++ /dev/null
@@ -1,62 +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.launcher3.widget.picker;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-import android.widget.LinearLayout;
-
-/**
- * A {@link LinearLayout} container for holding search and widgets recommendation.
- *
- * <p>This class intercepts touch events and dispatch them to the right view.
- */
-public class SearchAndRecommendationsView extends LinearLayout {
-    private SearchAndRecommendationsScrollController mController;
-
-    public SearchAndRecommendationsView(Context context) {
-        this(context, /* attrs= */ null);
-    }
-
-    public SearchAndRecommendationsView(Context context, AttributeSet attrs) {
-        this(context, attrs, /* defStyleAttr= */ 0);
-    }
-
-    public SearchAndRecommendationsView(Context context, AttributeSet attrs, int defStyleAttr) {
-        this(context, attrs, defStyleAttr, /* defStyleRes= */ 0);
-    }
-
-    public SearchAndRecommendationsView(Context context, AttributeSet attrs, int defStyleAttr,
-            int defStyleRes) {
-        super(context, attrs, defStyleAttr, defStyleRes);
-    }
-
-    public void setSearchAndRecommendationScrollController(
-            SearchAndRecommendationsScrollController controller) {
-        mController = controller;
-    }
-
-    @Override
-    public boolean onInterceptTouchEvent(MotionEvent event) {
-        return mController.onInterceptTouchEvent(event) || super.onInterceptTouchEvent(event);
-    }
-
-    @Override
-    public boolean onTouchEvent(MotionEvent event) {
-        return mController.onTouchEvent(event) || super.onTouchEvent(event);
-    }
-}
diff --git a/src/com/android/launcher3/widget/picker/WidgetPagedView.java b/src/com/android/launcher3/widget/picker/WidgetPagedView.java
new file mode 100644
index 0000000..c95ec5f
--- /dev/null
+++ b/src/com/android/launcher3/widget/picker/WidgetPagedView.java
@@ -0,0 +1,49 @@
+/*
+ * 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.launcher3.widget.picker;
+
+import android.content.Context;
+import android.graphics.Rect;
+import android.util.AttributeSet;
+
+import com.android.launcher3.PagedView;
+import com.android.launcher3.workprofile.PersonalWorkPagedView;
+
+/**
+ * A {@link PagedView} for showing different widgets for the personal and work profile.
+ */
+public class WidgetPagedView extends PersonalWorkPagedView {
+
+    public WidgetPagedView(Context context) {
+        this(context, null);
+    }
+
+    public WidgetPagedView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public WidgetPagedView(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+        setPageSpacing(getPaddingLeft());
+    }
+
+    @Override
+    public void getDrawingRect(Rect outRect) {
+        super.getDrawingRect(outRect);
+        outRect.left += getPaddingLeft();
+        outRect.right -= getPaddingRight();
+    }
+}
diff --git a/src/com/android/launcher3/widget/picker/WidgetsDiffCallback.java b/src/com/android/launcher3/widget/picker/WidgetsDiffCallback.java
new file mode 100644
index 0000000..e610ea9
--- /dev/null
+++ b/src/com/android/launcher3/widget/picker/WidgetsDiffCallback.java
@@ -0,0 +1,64 @@
+/*
+ * 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.launcher3.widget.picker;
+
+import androidx.recyclerview.widget.DiffUtil.Callback;
+
+import com.android.launcher3.widget.model.WidgetsListBaseEntry;
+
+import java.util.List;
+
+/**
+ * DiffUtil callback to compare widgets
+ */
+public class WidgetsDiffCallback extends Callback {
+
+    private final List<WidgetsListBaseEntry> mOldEntries;
+    private final List<WidgetsListBaseEntry> mNewEntries;
+
+    public WidgetsDiffCallback(
+            List<WidgetsListBaseEntry> oldEntries,
+            List<WidgetsListBaseEntry> newEntries) {
+        mOldEntries = oldEntries;
+        mNewEntries = newEntries;
+    }
+
+    @Override
+    public int getOldListSize() {
+        return mOldEntries.size();
+    }
+
+    @Override
+    public int getNewListSize() {
+        return mNewEntries.size();
+    }
+
+    @Override
+    public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
+        // Items are same if they point to the same package entry
+        WidgetsListBaseEntry oldItem = mOldEntries.get(oldItemPosition);
+        WidgetsListBaseEntry newItem = mNewEntries.get(newItemPosition);
+        return oldItem.getClass().equals(newItem.getClass())
+                && oldItem.mPkgItem.equals(newItem.mPkgItem);
+    }
+
+    @Override
+    public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
+        // Always update all entries since the icon may have changed
+        return false;
+    }
+}
diff --git a/src/com/android/launcher3/widget/picker/WidgetsDiffReporter.java b/src/com/android/launcher3/widget/picker/WidgetsDiffReporter.java
deleted file mode 100644
index 99374f5..0000000
--- a/src/com/android/launcher3/widget/picker/WidgetsDiffReporter.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * 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.launcher3.widget.picker;
-
-import android.util.Log;
-
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.android.launcher3.icons.IconCache;
-import com.android.launcher3.model.data.PackageItemInfo;
-import com.android.launcher3.widget.model.WidgetsListBaseEntry;
-import com.android.launcher3.widget.model.WidgetsListContentEntry;
-import com.android.launcher3.widget.model.WidgetsListHeaderEntry;
-import com.android.launcher3.widget.model.WidgetsListSearchHeaderEntry;
-import com.android.launcher3.widget.picker.WidgetsListAdapter.WidgetListBaseRowEntryComparator;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Do diff on widget's tray list items and call the {@link RecyclerView.Adapter}
- * methods accordingly.
- */
-public class WidgetsDiffReporter {
-    private static final boolean DEBUG = false;
-    private static final String TAG = "WidgetsDiffReporter";
-
-    private final IconCache mIconCache;
-    private final RecyclerView.Adapter mListener;
-
-    public WidgetsDiffReporter(IconCache iconCache, RecyclerView.Adapter listener) {
-        mIconCache = iconCache;
-        mListener = listener;
-    }
-
-    /**
-     * Notifies the difference between {@code currentEntries} & {@code newEntries} by calling the
-     * relevant {@link androidx.recyclerview.widget.RecyclerView.RecyclerViewDataObserver} methods.
-     */
-    public void process(ArrayList<WidgetsListBaseEntry> currentEntries,
-            List<WidgetsListBaseEntry> newEntries,
-            WidgetListBaseRowEntryComparator comparator) {
-        if (DEBUG) {
-            Log.d(TAG, "process oldEntries#=" + currentEntries.size()
-                    + " newEntries#=" + newEntries.size());
-        }
-        // Early exit if either of the list is empty
-        if (currentEntries.isEmpty() || newEntries.isEmpty()) {
-            // Skip if both list are empty.
-            // On rotation, we open the widget tray with empty. Then try to fetch the list again
-            // when the animation completes (which still gives empty). And we get the final result
-            // when the bind actually completes.
-            if (currentEntries.size() != newEntries.size()) {
-                currentEntries.clear();
-                currentEntries.addAll(newEntries);
-                mListener.notifyDataSetChanged();
-            }
-            return;
-        }
-        ArrayList<WidgetsListBaseEntry> orgEntries =
-                (ArrayList<WidgetsListBaseEntry>) currentEntries.clone();
-        Iterator<WidgetsListBaseEntry> orgIter = orgEntries.iterator();
-        Iterator<WidgetsListBaseEntry> newIter = newEntries.iterator();
-
-        WidgetsListBaseEntry orgRowEntry = orgIter.next();
-        WidgetsListBaseEntry newRowEntry = newIter.next();
-
-        do {
-            int diff = compareAppNameAndType(orgRowEntry, newRowEntry, comparator);
-            if (DEBUG) {
-                Log.d(TAG, String.format("diff=%d orgRowEntry (%s) newRowEntry (%s)",
-                        diff, orgRowEntry != null ? orgRowEntry.toString() : null,
-                        newRowEntry != null ? newRowEntry.toString() : null));
-            }
-            int index = -1;
-            if (diff < 0) {
-                index = currentEntries.indexOf(orgRowEntry);
-                mListener.notifyItemRemoved(index);
-                if (DEBUG) {
-                    Log.d(TAG, String.format("notifyItemRemoved called (%d)%s", index,
-                            orgRowEntry.mTitleSectionName));
-                }
-                currentEntries.remove(index);
-                orgRowEntry = orgIter.hasNext() ? orgIter.next() : null;
-            } else if (diff > 0) {
-                index = orgRowEntry != null ? currentEntries.indexOf(orgRowEntry)
-                        : currentEntries.size();
-                currentEntries.add(index, newRowEntry);
-                if (DEBUG) {
-                    Log.d(TAG, String.format("notifyItemInserted called (%d)%s", index,
-                            newRowEntry.mTitleSectionName));
-                }
-                newRowEntry = newIter.hasNext() ? newIter.next() : null;
-                mListener.notifyItemInserted(index);
-
-            } else {
-                // same app name & type but,
-                // did the icon, title, etc, change?
-                // or did the header view changed due to user interactions?
-                // or did the widget size and desc, span, etc change?
-                if (!isSamePackageItemInfo(orgRowEntry.mPkgItem, newRowEntry.mPkgItem)
-                        || hasHeaderUpdated(orgRowEntry, newRowEntry)
-                        || hasWidgetsListContentChanged(orgRowEntry, newRowEntry)) {
-                    index = currentEntries.indexOf(orgRowEntry);
-                    currentEntries.set(index, newRowEntry);
-                    mListener.notifyItemChanged(index);
-                    if (DEBUG) {
-                        Log.d(TAG, String.format("notifyItemChanged called (%d)%s", index,
-                                newRowEntry.mTitleSectionName));
-                    }
-                }
-                orgRowEntry = orgIter.hasNext() ? orgIter.next() : null;
-                newRowEntry = newIter.hasNext() ? newIter.next() : null;
-            }
-        } while(orgRowEntry != null || newRowEntry != null);
-    }
-
-    /**
-     * Compares the app name and then entry type for the given {@link WidgetsListBaseEntry}s.
-     *
-     * @Return 0 if both entries' order is the same. Negative integer if {@code newRowEntry} should
-     *         order before {@code orgRowEntry}. Positive integer if {@code orgRowEntry} should
-     *         order before {@code newRowEntry}.
-     */
-    private int compareAppNameAndType(WidgetsListBaseEntry curRow, WidgetsListBaseEntry newRow,
-            WidgetListBaseRowEntryComparator comparator) {
-        if (curRow == null && newRow == null) {
-            throw new IllegalStateException(
-                    "Cannot compare PackageItemInfo if both rows are null.");
-        }
-
-        if (curRow == null && newRow != null) {
-            return 1; // new row needs to be inserted
-        } else if (curRow != null && newRow == null) {
-            return -1; // old row needs to be deleted
-        }
-        int diff = comparator.compare(curRow, newRow);
-        if (diff == 0) {
-            return newRow.getRank() - curRow.getRank();
-        }
-        return diff;
-    }
-
-    /**
-     * Returns {@code true} if both {@code curRow} & {@code newRow} are
-     * {@link WidgetsListContentEntry}s with a different list or arrangement of widgets.
-     */
-    private boolean hasWidgetsListContentChanged(WidgetsListBaseEntry curRow,
-            WidgetsListBaseEntry newRow) {
-        if (!(curRow instanceof WidgetsListContentEntry)
-                || !(newRow instanceof WidgetsListContentEntry)) {
-            return false;
-        }
-        return !curRow.equals(newRow);
-    }
-
-    /**
-     * Returns {@code true} if {@code newRow} is {@link WidgetsListHeaderEntry} and its content has
-     * been changed due to user interactions.
-     */
-    private boolean hasHeaderUpdated(WidgetsListBaseEntry curRow, WidgetsListBaseEntry newRow) {
-        if (newRow instanceof WidgetsListHeaderEntry && curRow instanceof WidgetsListHeaderEntry) {
-            return !curRow.equals(newRow);
-        }
-        if (newRow instanceof WidgetsListSearchHeaderEntry
-                && curRow instanceof WidgetsListSearchHeaderEntry) {
-            // Always refresh search header entries to reset rounded corners in their view holder.
-            return true;
-        }
-        return false;
-    }
-
-    private boolean isSamePackageItemInfo(PackageItemInfo curInfo, PackageItemInfo newInfo) {
-        return curInfo.bitmap.icon.equals(newInfo.bitmap.icon)
-                && !mIconCache.isDefaultIcon(curInfo.bitmap, curInfo.user);
-    }
-}
diff --git a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
index a49cdc0..33c4f8d 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java
@@ -18,8 +18,9 @@
 import static android.view.View.MeasureSpec.makeMeasureSpec;
 
 import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_Y;
+import static com.android.launcher3.config.FeatureFlags.LARGE_SCREEN_WIDGET_PICKER;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_WIDGETSTRAY_SEARCHED;
-import static com.android.launcher3.testing.TestProtocol.NORMAL_STATE_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.NORMAL_STATE_ORDINAL;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
@@ -29,6 +30,7 @@
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.graphics.Rect;
+import android.os.Build;
 import android.os.Process;
 import android.os.UserHandle;
 import android.os.UserManager;
@@ -44,14 +46,18 @@
 import android.view.animation.Interpolator;
 import android.widget.Button;
 import android.widget.TextView;
+import android.window.BackEvent;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.annotation.Px;
+import androidx.annotation.RequiresApi;
 import androidx.annotation.VisibleForTesting;
 import androidx.recyclerview.widget.DefaultItemAnimator;
 import androidx.recyclerview.widget.RecyclerView;
 
+import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.Launcher;
-import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.R;
 import com.android.launcher3.Utilities;
 import com.android.launcher3.anim.PendingAnimation;
@@ -62,11 +68,13 @@
 import com.android.launcher3.views.ArrowTipView;
 import com.android.launcher3.views.RecyclerViewFastScroller;
 import com.android.launcher3.views.SpringRelativeLayout;
+import com.android.launcher3.views.StickyHeaderLayout;
 import com.android.launcher3.views.WidgetsEduView;
 import com.android.launcher3.widget.BaseWidgetSheet;
-import com.android.launcher3.widget.LauncherAppWidgetHost.ProviderChangedListener;
+import com.android.launcher3.widget.LauncherWidgetHolder.ProviderChangedListener;
 import com.android.launcher3.widget.model.WidgetsListBaseEntry;
 import com.android.launcher3.widget.picker.search.SearchModeListener;
+import com.android.launcher3.widget.picker.search.WidgetsSearchBar;
 import com.android.launcher3.widget.util.WidgetsTableUtils;
 import com.android.launcher3.workprofile.PersonalWorkPagedView;
 import com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip.OnActivePageChangedListener;
@@ -83,7 +91,6 @@
         implements ProviderChangedListener, OnActivePageChangedListener,
         WidgetsRecyclerView.HeaderViewDimensionsProvider, SearchModeListener {
 
-    private static final long DEFAULT_OPEN_DURATION = 267;
     private static final long FADE_IN_DURATION = 150;
     private static final long EDUCATION_TIP_DELAY_MS = 200;
     private static final long EDUCATION_DIALOG_DELAY_MS = 500;
@@ -92,20 +99,19 @@
     // resolution or landscape on phone. This ratio defines the max percentage of content area that
     // the table can display.
     private static final float RECOMMENDATION_TABLE_HEIGHT_RATIO = 0.75f;
-
     private static final String KEY_WIDGETS_EDUCATION_DIALOG_SEEN =
             "launcher.widgets_education_dialog_seen";
 
     private final UserManagerState mUserManagerState = new UserManagerState();
-
-    private final boolean mHasWorkProfile;
-    private final SparseArray<AdapterHolder> mAdapters = new SparseArray();
     private final UserHandle mCurrentUser = Process.myUserHandle();
     private final Predicate<WidgetsListBaseEntry> mPrimaryWidgetsFilter =
             entry -> mCurrentUser.equals(entry.mPkgItem.user);
     private final Predicate<WidgetsListBaseEntry> mWorkWidgetsFilter =
             entry -> !mCurrentUser.equals(entry.mPkgItem.user)
                     && !mUserManagerState.isUserQuiet(entry.mPkgItem.user);
+    protected final boolean mHasWorkProfile;
+    protected boolean mHasRecommendedWidgets;
+    protected final SparseArray<AdapterHolder> mAdapters = new SparseArray();
     @Nullable private ArrowTipView mLatestEducationalTip;
     private final OnLayoutChangeListener mLayoutChangeListenerToShowTips =
             new OnLayoutChangeListener() {
@@ -143,7 +149,7 @@
                     WidgetsRecyclerView searchRecyclerView =
                             mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView;
                     if (mIsInSearchMode && searchRecyclerView != null) {
-                        searchRecyclerView.bindFastScrollbar();
+                        searchRecyclerView.bindFastScrollbar(mFastScroller);
                     }
                 }
 
@@ -152,20 +158,32 @@
                 }
             };
 
-    private final int mTabsHeight;
-    private final int mWidgetSheetContentHorizontalPadding;
+    @Px private final int mTabsHeight;
 
     @Nullable private WidgetsRecyclerView mCurrentWidgetsRecyclerView;
-    @Nullable private PersonalWorkPagedView mViewPager;
+    @Nullable private WidgetsRecyclerView mCurrentTouchEventRecyclerView;
+    @Nullable PersonalWorkPagedView mViewPager;
     private boolean mIsInSearchMode;
     private boolean mIsNoWidgetsViewNeeded;
-    private int mMaxSpansPerRow = DEFAULT_MAX_HORIZONTAL_SPANS;
-    private TextView mNoWidgetsView;
-    private SearchAndRecommendationsScrollController mSearchScrollController;
+    @Px private int mMaxSpanPerRow;
+    private DeviceProfile mDeviceProfile;
+
+    private int mOrientation;
+
+    protected TextView mNoWidgetsView;
+    protected StickyHeaderLayout mSearchScrollView;
+    protected WidgetsRecommendationTableLayout mRecommendedWidgetsTable;
+    protected View mTabBar;
+    protected View mSearchBarContainer;
+    protected WidgetsSearchBar mSearchBar;
+    protected TextView mHeaderTitle;
+    protected RecyclerViewFastScroller mFastScroller;
 
     public WidgetsFullSheet(Context context, AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr);
+        mDeviceProfile = Launcher.getLauncher(context).getDeviceProfile();
         mHasWorkProfile = context.getSystemService(LauncherApps.class).getProfiles().size() > 1;
+        mOrientation = context.getResources().getConfiguration().orientation;
         mAdapters.put(AdapterHolder.PRIMARY, new AdapterHolder(AdapterHolder.PRIMARY));
         mAdapters.put(AdapterHolder.WORK, new AdapterHolder(AdapterHolder.WORK));
         mAdapters.put(AdapterHolder.SEARCH, new AdapterHolder(AdapterHolder.SEARCH));
@@ -174,8 +192,6 @@
         mTabsHeight = mHasWorkProfile
                 ? resources.getDimensionPixelSize(R.dimen.all_apps_header_pill_height)
                 : 0;
-        mWidgetSheetContentHorizontalPadding = 2 * resources.getDimensionPixelSize(
-                R.dimen.widget_cell_horizontal_padding);
 
         mUserManagerState.init(UserCache.INSTANCE.get(context),
                 context.getSystemService(UserManager.class));
@@ -188,18 +204,46 @@
     @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
-        mContent = findViewById(R.id.container);
 
+        mContent = findViewById(R.id.container);
+        setContentBackgroundWithParent(getContext().getDrawable(R.drawable.bg_widgets_full_sheet),
+                mContent);
+        mContent.setOutlineProvider(mViewOutlineProvider);
+        mContent.setClipToOutline(true);
+        setupSheet();
+    }
+
+    protected void setupSheet() {
         LayoutInflater layoutInflater = LayoutInflater.from(getContext());
         int contentLayoutRes = mHasWorkProfile ? R.layout.widgets_full_sheet_paged_view
                 : R.layout.widgets_full_sheet_recyclerview;
         layoutInflater.inflate(contentLayoutRes, mContent, true);
 
-        RecyclerViewFastScroller fastScroller = findViewById(R.id.fast_scroller);
+        setupViews();
+
+        mRecommendedWidgetsTable = mSearchScrollView.findViewById(R.id.recommended_widget_table);
+        mRecommendedWidgetsTable.setWidgetCellLongClickListener(this);
+        mRecommendedWidgetsTable.setWidgetCellOnClickListener(this);
+        mHeaderTitle = mSearchScrollView.findViewById(R.id.title);
+
+        onRecommendedWidgetsBound();
+        onWidgetsBound();
+        setUpEducationViewsIfNeeded();
+    }
+
+    protected void setupViews() {
+        mSearchScrollView = findViewById(R.id.search_and_recommendations_container);
+        mSearchScrollView.setCurrentRecyclerView(findViewById(R.id.primary_widgets_list_view));
+        mNoWidgetsView = findViewById(R.id.no_widgets_text);
+        mFastScroller = findViewById(R.id.fast_scroller);
+        mFastScroller.setPopupView(findViewById(R.id.fast_scroller_popup));
         mAdapters.get(AdapterHolder.PRIMARY).setup(findViewById(R.id.primary_widgets_list_view));
         mAdapters.get(AdapterHolder.SEARCH).setup(findViewById(R.id.search_widgets_list_view));
         if (mHasWorkProfile) {
             mViewPager = findViewById(R.id.widgets_view_pager);
+            mViewPager.setOutlineProvider(mViewOutlineProvider);
+            mViewPager.setClipToOutline(true);
+            mViewPager.setClipChildren(false);
             mViewPager.initParentViews(this);
             mViewPager.getPageIndicator().setOnActivePageChangedListener(this);
             mViewPager.getPageIndicator().setActiveMarker(AdapterHolder.PRIMARY);
@@ -213,21 +257,12 @@
             mViewPager = null;
         }
 
-        mNoWidgetsView = findViewById(R.id.no_widgets_text);
-        mSearchScrollController = new SearchAndRecommendationsScrollController(
-                findViewById(R.id.search_and_recommendations_container));
-        mSearchScrollController.setCurrentRecyclerView(
-                findViewById(R.id.primary_widgets_list_view));
-        mSearchScrollController.mRecommendedWidgetsTable.setWidgetCellLongClickListener(this);
-        mSearchScrollController.mRecommendedWidgetsTable.setWidgetCellOnClickListener(this);
+        mTabBar = mSearchScrollView.findViewById(R.id.tabs);
+        mSearchBarContainer = mSearchScrollView.findViewById(R.id.search_bar_container);
+        mSearchBar = mSearchScrollView.findViewById(R.id.widgets_search_bar);
 
-        onRecommendedWidgetsBound();
-        onWidgetsBound();
-
-        mSearchScrollController.mSearchBar.initialize(
+        mSearchBar.initialize(
                 mActivityContext.getPopupDataProvider(), /* searchModeListener= */ this);
-
-        setUpEducationViewsIfNeeded();
     }
 
     private void setDeviceManagementResources() {
@@ -250,19 +285,26 @@
         attachScrollbarToRecyclerView(currentRecyclerView);
     }
 
+    @Override
+    @RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
+    public void onBackProgressed(@NonNull BackEvent backEvent) {
+        super.onBackProgressed(backEvent);
+        mFastScroller.setVisibility(backEvent.getProgress() > 0 ? View.INVISIBLE : View.VISIBLE);
+    }
+
     private void attachScrollbarToRecyclerView(WidgetsRecyclerView recyclerView) {
-        recyclerView.bindFastScrollbar();
+        recyclerView.bindFastScrollbar(mFastScroller);
         if (mCurrentWidgetsRecyclerView != recyclerView) {
             // Only reset the scroll position & expanded apps if the currently shown recycler view
             // has been updated.
             reset();
             resetExpandedHeaders();
             mCurrentWidgetsRecyclerView = recyclerView;
-            mSearchScrollController.setCurrentRecyclerView(recyclerView);
+            mSearchScrollView.setCurrentRecyclerView(recyclerView);
         }
     }
 
-    private void updateRecyclerViewVisibility(AdapterHolder adapterHolder) {
+    protected void updateRecyclerViewVisibility(AdapterHolder adapterHolder) {
         // The first item is always an empty space entry. Look for any more items.
         boolean isWidgetAvailable = adapterHolder.mWidgetsListAdapter.hasVisibleEntries();
         adapterHolder.mWidgetsRecyclerView.setVisibility(isWidgetAvailable ? VISIBLE : GONE);
@@ -285,7 +327,7 @@
             mAdapters.get(AdapterHolder.WORK).mWidgetsRecyclerView.scrollToTop();
         }
         mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView.scrollToTop();
-        mSearchScrollController.reset(/* animate= */ true);
+        mSearchScrollView.reset(/* animate= */ true);
     }
 
     @VisibleForTesting
@@ -308,7 +350,7 @@
     @Override
     protected void onAttachedToWindow() {
         super.onAttachedToWindow();
-        mActivityContext.getAppWidgetHost().addProviderChangeListener(this);
+        mActivityContext.getAppWidgetHolder().addProviderChangeListener(this);
         notifyWidgetProvidersChanged();
         onRecommendedWidgetsBound();
     }
@@ -316,7 +358,7 @@
     @Override
     protected void onDetachedFromWindow() {
         super.onDetachedFromWindow();
-        mActivityContext.getAppWidgetHost().removeProviderChangeListener(this);
+        mActivityContext.getAppWidgetHolder().removeProviderChangeListener(this);
         mAdapters.get(AdapterHolder.PRIMARY).mWidgetsRecyclerView
                 .removeOnAttachStateChangeListener(mBindScrollbarInSearchMode);
         if (mHasWorkProfile) {
@@ -355,8 +397,7 @@
 
     @Override
     protected void onContentHorizontalMarginChanged(int contentHorizontalMarginInPx) {
-        setContentViewChildHorizontalMargin(mSearchScrollController.mContainer,
-                contentHorizontalMarginInPx);
+        setContentViewChildHorizontalMargin(mSearchScrollView, contentHorizontalMarginInPx);
         if (mViewPager == null) {
             setContentViewChildHorizontalPadding(
                     mAdapters.get(AdapterHolder.PRIMARY).mWidgetsRecyclerView,
@@ -390,16 +431,8 @@
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         doMeasure(widthMeasureSpec, heightMeasureSpec);
 
-        if (mSearchScrollController.updateHeaderHeight()) {
-            doMeasure(widthMeasureSpec, heightMeasureSpec);
-        }
-
         if (updateMaxSpansPerRow()) {
             doMeasure(widthMeasureSpec, heightMeasureSpec);
-
-            if (mSearchScrollController.updateHeaderHeight()) {
-                doMeasure(widthMeasureSpec, heightMeasureSpec);
-            }
         }
     }
 
@@ -407,20 +440,17 @@
     private boolean updateMaxSpansPerRow() {
         if (getMeasuredWidth() == 0) return false;
 
-        View content = mHasWorkProfile
-                ? mViewPager
-                : mAdapters.get(AdapterHolder.PRIMARY).mWidgetsRecyclerView;
-        int maxHorizontalSpans = computeMaxHorizontalSpans(content,
-                mWidgetSheetContentHorizontalPadding);
-        if (mMaxSpansPerRow != maxHorizontalSpans) {
-            mMaxSpansPerRow = maxHorizontalSpans;
-            mAdapters.get(AdapterHolder.PRIMARY).mWidgetsListAdapter.setMaxHorizontalSpansPerRow(
-                    mMaxSpansPerRow);
-            mAdapters.get(AdapterHolder.SEARCH).mWidgetsListAdapter.setMaxHorizontalSpansPerRow(
-                    mMaxSpansPerRow);
+        @Px int maxHorizontalSpan = getContentView().getMeasuredWidth()
+                - (2 * mContentHorizontalMargin);
+        if (mMaxSpanPerRow != maxHorizontalSpan) {
+            mMaxSpanPerRow = maxHorizontalSpan;
+            mAdapters.get(AdapterHolder.PRIMARY).mWidgetsListAdapter.setMaxHorizontalSpansPxPerRow(
+                    maxHorizontalSpan);
+            mAdapters.get(AdapterHolder.SEARCH).mWidgetsListAdapter.setMaxHorizontalSpansPxPerRow(
+                    maxHorizontalSpan);
             if (mHasWorkProfile) {
-                mAdapters.get(AdapterHolder.WORK).mWidgetsListAdapter.setMaxHorizontalSpansPerRow(
-                        mMaxSpansPerRow);
+                mAdapters.get(AdapterHolder.WORK).mWidgetsListAdapter.setMaxHorizontalSpansPxPerRow(
+                        maxHorizontalSpan);
             }
             onRecommendedWidgetsBound();
             return true;
@@ -428,6 +458,12 @@
         return false;
     }
 
+    protected View getContentView() {
+        return mHasWorkProfile
+                ? mViewPager
+                : mAdapters.get(AdapterHolder.PRIMARY).mWidgetsRecyclerView;
+    }
+
     @Override
     protected void onLayout(boolean changed, int l, int t, int r, int b) {
         int width = r - l;
@@ -460,12 +496,12 @@
 
         if (mHasWorkProfile) {
             mViewPager.setVisibility(VISIBLE);
-            mSearchScrollController.mTabBar.setVisibility(VISIBLE);
+            mTabBar.setVisibility(VISIBLE);
             AdapterHolder workUserAdapterHolder = mAdapters.get(AdapterHolder.WORK);
             workUserAdapterHolder.mWidgetsListAdapter.setWidgets(allWidgets);
             onActivePageChanged(mViewPager.getCurrentPage());
         } else {
-            updateRecyclerViewVisibility(primaryUserAdapterHolder);
+            onActivePageChanged(0);
         }
         // Update recommended widgets section so that it occupies appropriate space on screen to
         // leave enough space for presence/absence of mNoWidgetsView.
@@ -502,16 +538,15 @@
     public void onSearchResults(List<WidgetsListBaseEntry> entries) {
         mAdapters.get(AdapterHolder.SEARCH).mWidgetsListAdapter.setWidgetsOnSearch(entries);
         updateRecyclerViewVisibility(mAdapters.get(AdapterHolder.SEARCH));
-        mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView.scrollToTop();
     }
 
-    private void setViewVisibilityBasedOnSearch(boolean isInSearchMode) {
+    protected void setViewVisibilityBasedOnSearch(boolean isInSearchMode) {
         mIsInSearchMode = isInSearchMode;
         if (isInSearchMode) {
-            mSearchScrollController.mRecommendedWidgetsTable.setVisibility(GONE);
+            mRecommendedWidgetsTable.setVisibility(GONE);
             if (mHasWorkProfile) {
                 mViewPager.setVisibility(GONE);
-                mSearchScrollController.mTabBar.setVisibility(GONE);
+                mTabBar.setVisibility(GONE);
             } else {
                 mAdapters.get(AdapterHolder.PRIMARY).mWidgetsRecyclerView.setVisibility(GONE);
             }
@@ -527,7 +562,7 @@
         }
     }
 
-    private void resetExpandedHeaders() {
+    protected void resetExpandedHeaders() {
         mAdapters.get(AdapterHolder.PRIMARY).mWidgetsListAdapter.resetExpandedHeader();
         mAdapters.get(AdapterHolder.WORK).mWidgetsListAdapter.resetExpandedHeader();
     }
@@ -539,8 +574,8 @@
         }
         List<WidgetItem> recommendedWidgets =
                 mActivityContext.getPopupDataProvider().getRecommendedWidgets();
-        WidgetsRecommendationTableLayout table = mSearchScrollController.mRecommendedWidgetsTable;
-        if (recommendedWidgets.size() > 0) {
+        mHasRecommendedWidgets = recommendedWidgets.size() > 0;
+        if (mHasRecommendedWidgets) {
             float noWidgetsViewHeight = 0;
             if (mIsNoWidgetsViewNeeded) {
                 // Make sure recommended section leaves enough space for noWidgetsView.
@@ -550,24 +585,42 @@
                                 mNoWidgetsView.getText().length(), noWidgetsViewTextBounds);
                 noWidgetsViewHeight = noWidgetsViewTextBounds.height();
             }
-            doMeasure(
-                    makeMeasureSpec(mActivityContext.getDeviceProfile().availableWidthPx,
-                            MeasureSpec.EXACTLY),
-                    makeMeasureSpec(mActivityContext.getDeviceProfile().availableHeightPx,
-                            MeasureSpec.EXACTLY));
-            float maxTableHeight = (mContent.getMeasuredHeight()
-                    - mTabsHeight - getHeaderViewHeight()
-                    - noWidgetsViewHeight) * RECOMMENDATION_TABLE_HEIGHT_RATIO;
+            if (!isTwoPane()) {
+                doMeasure(
+                        makeMeasureSpec(mActivityContext.getDeviceProfile().availableWidthPx,
+                                MeasureSpec.EXACTLY),
+                        makeMeasureSpec(mActivityContext.getDeviceProfile().availableHeightPx,
+                                MeasureSpec.EXACTLY));
+            }
+            float maxTableHeight = getMaxTableHeight(noWidgetsViewHeight);
 
             List<ArrayList<WidgetItem>> recommendedWidgetsInTable =
-                    WidgetsTableUtils.groupWidgetItemsIntoTableWithoutReordering(
-                            recommendedWidgets, mMaxSpansPerRow);
-            table.setRecommendedWidgets(recommendedWidgetsInTable, maxTableHeight);
+                    WidgetsTableUtils.groupWidgetItemsUsingRowPxWithoutReordering(
+                            recommendedWidgets,
+                            mActivityContext,
+                            mActivityContext.getDeviceProfile(),
+                            mMaxSpanPerRow,
+                            mWidgetCellHorizontalPadding);
+            mRecommendedWidgetsTable.setRecommendedWidgets(
+                    recommendedWidgetsInTable, maxTableHeight);
         } else {
-            table.setVisibility(GONE);
+            mRecommendedWidgetsTable.setVisibility(GONE);
         }
     }
 
+    /** b/209579563: "Widgets" header should be focused first. */
+    @Override
+    protected View getAccessibilityInitialFocusView() {
+        return mHeaderTitle;
+    }
+
+    protected float getMaxTableHeight(float noWidgetsViewHeight) {
+        return (mContent.getMeasuredHeight()
+                - mTabsHeight - getHeaderViewHeight()
+                - noWidgetsViewHeight)
+                * RECOMMENDATION_TABLE_HEIGHT_RATIO;
+    }
+
     private void open(boolean animate) {
         if (animate) {
             if (getPopupContainer().getInsets().bottom > 0) {
@@ -577,7 +630,7 @@
             mOpenCloseAnimator.setValues(
                     PropertyValuesHolder.ofFloat(TRANSLATION_SHIFT, TRANSLATION_SHIFT_OPENED));
             mOpenCloseAnimator
-                    .setDuration(DEFAULT_OPEN_DURATION)
+                    .setDuration(mActivityContext.getDeviceProfile().bottomSheetOpenDuration)
                     .setInterpolator(AnimationUtils.loadInterpolator(
                             getContext(), android.R.interpolator.linear_out_slow_in));
             mOpenCloseAnimator.addListener(new AnimatorListenerAdapter() {
@@ -598,7 +651,7 @@
 
     @Override
     protected void handleClose(boolean animate) {
-        handleClose(animate, DEFAULT_OPEN_DURATION);
+        handleClose(animate, mActivityContext.getDeviceProfile().bottomSheetCloseDuration);
     }
 
     @Override
@@ -608,36 +661,101 @@
 
     @Override
     public boolean onControllerInterceptTouchEvent(MotionEvent ev) {
-        // Disable swipe down when recycler view is scrolling
         if (ev.getAction() == MotionEvent.ACTION_DOWN) {
-            mNoIntercept = false;
-            RecyclerViewFastScroller scroller = getRecyclerView().getScrollbar();
-            if (scroller.getThumbOffsetY() >= 0
-                    && getPopupContainer().isEventOverView(scroller, ev)) {
-                mNoIntercept = true;
-            } else if (getPopupContainer().isEventOverView(mContent, ev)) {
-                mNoIntercept = !getRecyclerView().shouldContainerScroll(ev, getPopupContainer());
-            }
-
-            if (mSearchScrollController.mSearchBar.isSearchBarFocused()
-                    && !getPopupContainer().isEventOverView(
-                    mSearchScrollController.mSearchBarContainer, ev)) {
-                mSearchScrollController.mSearchBar.clearSearchBarFocus();
+            mNoIntercept = shouldScroll(ev);
+            if (mSearchBar.isSearchBarFocused()
+                    && !getPopupContainer().isEventOverView(mSearchBarContainer, ev)) {
+                mSearchBar.clearSearchBarFocus();
             }
         }
+
         return super.onControllerInterceptTouchEvent(ev);
     }
 
+    protected boolean shouldScroll(MotionEvent ev) {
+        boolean intercept = false;
+        WidgetsRecyclerView recyclerView = getRecyclerView();
+        RecyclerViewFastScroller scroller = recyclerView.getScrollbar();
+        // Disable swipe down when recycler view is scrolling
+        if (scroller.getThumbOffsetY() >= 0 && getPopupContainer().isEventOverView(scroller, ev)) {
+            intercept = true;
+        } else if (getPopupContainer().isEventOverView(recyclerView, ev)) {
+            intercept = !recyclerView.shouldContainerScroll(ev, getPopupContainer());
+        }
+        return intercept;
+    }
+
     /** Shows the {@link WidgetsFullSheet} on the launcher. */
     public static WidgetsFullSheet show(Launcher launcher, boolean animate) {
-        WidgetsFullSheet sheet = (WidgetsFullSheet) launcher.getLayoutInflater()
-                .inflate(R.layout.widgets_full_sheet, launcher.getDragLayer(), false);
+        boolean isTwoPane = LARGE_SCREEN_WIDGET_PICKER.get()
+                && launcher.getDeviceProfile().isTablet
+                && launcher.getDeviceProfile().isLandscape
+                && !launcher.getDeviceProfile().isTwoPanels;
+
+        WidgetsFullSheet sheet;
+        if (isTwoPane) {
+            sheet = (WidgetsTwoPaneSheet) launcher.getLayoutInflater().inflate(
+                    R.layout.widgets_two_pane_sheet,
+                    launcher.getDragLayer(),
+                    false);
+        } else {
+            sheet = (WidgetsFullSheet) launcher.getLayoutInflater().inflate(
+                    R.layout.widgets_full_sheet,
+                    launcher.getDragLayer(),
+                    false);
+        }
+
         sheet.attachToContainer();
         sheet.mIsOpen = true;
         sheet.open(animate);
         return sheet;
     }
 
+    @Override
+    public boolean onInterceptTouchEvent(MotionEvent ev) {
+        return isTouchOnScrollbar(ev) || super.onInterceptTouchEvent(ev);
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent ev) {
+        return maybeHandleTouchEvent(ev) || super.onTouchEvent(ev);
+    }
+
+    private boolean maybeHandleTouchEvent(MotionEvent ev) {
+        boolean isEventHandled = false;
+
+        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+            mCurrentTouchEventRecyclerView = isTouchOnScrollbar(ev) ? getRecyclerView() : null;
+        }
+
+        if (mCurrentTouchEventRecyclerView != null) {
+            final float offsetX = mContent.getX();
+            final float offsetY = mContent.getY();
+            ev.offsetLocation(-offsetX, -offsetY);
+            isEventHandled = mCurrentTouchEventRecyclerView.dispatchTouchEvent(ev);
+            ev.offsetLocation(offsetX, offsetY);
+        }
+
+        if (ev.getAction() == MotionEvent.ACTION_UP
+                || ev.getAction() == MotionEvent.ACTION_CANCEL) {
+            mCurrentTouchEventRecyclerView = null;
+        }
+
+        return isEventHandled;
+    }
+
+    private boolean isTouchOnScrollbar(MotionEvent ev) {
+        final float offsetX = mContent.getX();
+        final float offsetY = mContent.getY();
+        WidgetsRecyclerView rv = getRecyclerView();
+
+        ev.offsetLocation(-offsetX, -offsetY);
+        boolean isOnScrollBar = rv != null && rv.getScrollbar() != null && rv.isHitOnScrollBar(ev);
+        ev.offsetLocation(offsetX, offsetY);
+
+        return isOnScrollBar;
+    }
+
     /** Gets the {@link WidgetsRecyclerView} which shows all widgets in {@link WidgetsFullSheet}. */
     @VisibleForTesting
     public static WidgetsRecyclerView getWidgetsView(Launcher launcher) {
@@ -663,8 +781,8 @@
 
     @Override
     public int getHeaderViewHeight() {
-        return measureHeightWithVerticalMargins(mSearchScrollController.mHeaderTitle)
-                + measureHeightWithVerticalMargins(mSearchScrollController.mSearchBarContainer);
+        return measureHeightWithVerticalMargins(mHeaderTitle)
+                + measureHeightWithVerticalMargins(mSearchBarContainer);
     }
 
     /** private the height, in pixel, + the vertical margins of a given view. */
@@ -681,17 +799,28 @@
     protected void onConfigurationChanged(Configuration newConfig) {
         super.onConfigurationChanged(newConfig);
         if (mIsInSearchMode) {
-            mSearchScrollController.mSearchBar.reset();
+            mSearchBar.reset();
+        }
+
+        // Checks the orientation of the screen
+        if (LARGE_SCREEN_WIDGET_PICKER.get()
+                && mOrientation != newConfig.orientation
+                && mDeviceProfile.isTablet
+                && !mDeviceProfile.isTwoPanels) {
+            mOrientation = newConfig.orientation;
+            handleClose(false);
+            show(Launcher.getLauncher(getContext()), false);
         }
     }
 
     @Override
-    public boolean onBackPressed() {
+    public void onBackInvoked() {
         if (mIsInSearchMode) {
-            mSearchScrollController.mSearchBar.reset();
-            return true;
+            mSearchBar.reset();
+            animateSlideInViewToNoScale();
+        } else {
+            super.onBackInvoked();
         }
-        return super.onBackPressed();
     }
 
     @Override
@@ -701,10 +830,9 @@
     }
 
     @Nullable private View getViewToShowEducationTip() {
-        if (mSearchScrollController.mRecommendedWidgetsTable.getVisibility() == VISIBLE
-                && mSearchScrollController.mRecommendedWidgetsTable.getChildCount() > 0) {
-            return ((ViewGroup) mSearchScrollController.mRecommendedWidgetsTable.getChildAt(0))
-                    .getChildAt(0);
+        if (mRecommendedWidgetsTable.getVisibility() == VISIBLE
+                && mRecommendedWidgetsTable.getChildCount() > 0) {
+            return ((ViewGroup) mRecommendedWidgetsTable.getChildAt(0)).getChildAt(0);
         }
 
         AdapterHolder adapterHolder = mAdapters.get(mIsInSearchMode
@@ -738,10 +866,10 @@
     protected boolean hasSeenEducationDialog() {
         return mActivityContext.getSharedPrefs()
                 .getBoolean(KEY_WIDGETS_EDUCATION_DIALOG_SEEN, false)
-                || Utilities.IS_RUNNING_IN_TEST_HARNESS;
+                || Utilities.isRunningInTestHarness();
     }
 
-    private void setUpEducationViewsIfNeeded() {
+    protected void setUpEducationViewsIfNeeded() {
         if (!hasSeenEducationDialog()) {
             postDelayed(() -> {
                 WidgetsEduView eduDialog = showEducationDialog();
@@ -759,30 +887,33 @@
         }
     }
 
+    protected boolean isTwoPane() {
+        return false;
+    }
+
     /** A holder class for holding adapters & their corresponding recycler view. */
-    private final class AdapterHolder {
+    final class AdapterHolder {
         static final int PRIMARY = 0;
         static final int WORK = 1;
         static final int SEARCH = 2;
 
         private final int mAdapterType;
-        private final WidgetsListAdapter mWidgetsListAdapter;
+        final WidgetsListAdapter mWidgetsListAdapter;
         private final DefaultItemAnimator mWidgetsListItemAnimator;
 
-        private WidgetsRecyclerView mWidgetsRecyclerView;
+        WidgetsRecyclerView mWidgetsRecyclerView;
 
         AdapterHolder(int adapterType) {
             mAdapterType = adapterType;
-
             Context context = getContext();
-            LauncherAppState apps = LauncherAppState.getInstance(context);
+
             mWidgetsListAdapter = new WidgetsListAdapter(
                     context,
                     LayoutInflater.from(context),
-                    apps.getIconCache(),
                     this::getEmptySpaceHeight,
                     /* iconClickListener= */ WidgetsFullSheet.this,
-                    /* iconLongClickListener= */ WidgetsFullSheet.this);
+                    /* iconLongClickListener= */ WidgetsFullSheet.this,
+                    isTwoPane());
             mWidgetsListAdapter.setHasStableIds(true);
             switch (mAdapterType) {
                 case PRIMARY:
@@ -801,23 +932,29 @@
         }
 
         private int getEmptySpaceHeight() {
-            return mSearchScrollController.getHeaderHeight();
+            return mSearchScrollView.getHeaderHeight();
         }
 
         void setup(WidgetsRecyclerView recyclerView) {
             mWidgetsRecyclerView = recyclerView;
+            mWidgetsRecyclerView.setOutlineProvider(mViewOutlineProvider);
+            mWidgetsRecyclerView.setClipToOutline(true);
+            mWidgetsRecyclerView.setClipChildren(false);
             mWidgetsRecyclerView.setAdapter(mWidgetsListAdapter);
+            mWidgetsRecyclerView.bindFastScrollbar(mFastScroller);
             mWidgetsRecyclerView.setItemAnimator(mWidgetsListItemAnimator);
             mWidgetsRecyclerView.setHeaderViewDimensionsProvider(WidgetsFullSheet.this);
-            mWidgetsRecyclerView.setEdgeEffectFactory(
-                    ((SpringRelativeLayout) mContent).createEdgeEffectFactory());
+            if (!isTwoPane()) {
+                mWidgetsRecyclerView.setEdgeEffectFactory(
+                        ((SpringRelativeLayout) mContent).createEdgeEffectFactory());
+            }
             // Recycler view binds to fast scroller when it is attached to screen. Make sure
             // search recycler view is bound to fast scroller if user is in search mode at the time
             // of attachment.
             if (mAdapterType == PRIMARY || mAdapterType == WORK) {
                 mWidgetsRecyclerView.addOnAttachStateChangeListener(mBindScrollbarInSearchMode);
             }
-            mWidgetsListAdapter.setMaxHorizontalSpansPerRow(mMaxSpansPerRow);
+            mWidgetsListAdapter.setMaxHorizontalSpansPxPerRow(mMaxSpanPerRow);
         }
     }
 }
diff --git a/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java b/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java
index 0e5a7d7..8dd1de4 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java
@@ -19,9 +19,9 @@
 import static com.android.launcher3.recyclerview.ViewHolderBinder.POSITION_DEFAULT;
 import static com.android.launcher3.recyclerview.ViewHolderBinder.POSITION_FIRST;
 import static com.android.launcher3.recyclerview.ViewHolderBinder.POSITION_LAST;
+import static com.android.launcher3.widget.BaseWidgetSheet.DEFAULT_MAX_HORIZONTAL_SPANS;
 
 import android.content.Context;
-import android.graphics.Rect;
 import android.os.Process;
 import android.util.Log;
 import android.util.SparseArray;
@@ -33,15 +33,15 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.annotation.Px;
+import androidx.recyclerview.widget.DiffUtil;
+import androidx.recyclerview.widget.DiffUtil.DiffResult;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 import androidx.recyclerview.widget.RecyclerView.Adapter;
-import androidx.recyclerview.widget.RecyclerView.LayoutParams;
 import androidx.recyclerview.widget.RecyclerView.ViewHolder;
 
 import com.android.launcher3.R;
-import com.android.launcher3.icons.IconCache;
-import com.android.launcher3.model.data.PackageItemInfo;
 import com.android.launcher3.recyclerview.ViewHolderBinder;
 import com.android.launcher3.util.LabelComparator;
 import com.android.launcher3.util.PackageUserKey;
@@ -50,14 +50,13 @@
 import com.android.launcher3.widget.model.WidgetsListBaseEntry;
 import com.android.launcher3.widget.model.WidgetsListContentEntry;
 import com.android.launcher3.widget.model.WidgetsListHeaderEntry;
-import com.android.launcher3.widget.model.WidgetsListSearchHeaderEntry;
+import com.android.launcher3.widget.util.WidgetSizes;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
-import java.util.Map;
 import java.util.OptionalInt;
 import java.util.function.IntSupplier;
 import java.util.function.Predicate;
@@ -80,16 +79,15 @@
     private static final boolean DEBUG = false;
 
     /** Uniquely identifies widgets list view type within the app. */
-    private static final int VIEW_TYPE_WIDGETS_SPACE = R.id.view_type_widgets_space;
-    private static final int VIEW_TYPE_WIDGETS_LIST = R.id.view_type_widgets_list;
-    private static final int VIEW_TYPE_WIDGETS_HEADER = R.id.view_type_widgets_header;
-    private static final int VIEW_TYPE_WIDGETS_SEARCH_HEADER = R.id.view_type_widgets_search_header;
+    public static final int VIEW_TYPE_WIDGETS_SPACE = R.id.view_type_widgets_space;
+    public static final int VIEW_TYPE_WIDGETS_LIST = R.id.view_type_widgets_list;
+    public static final int VIEW_TYPE_WIDGETS_HEADER = R.id.view_type_widgets_header;
 
     private final Context mContext;
-    private final WidgetsDiffReporter mDiffReporter;
     private final SparseArray<ViewHolderBinder> mViewHolderBinders = new SparseArray<>();
     private final WidgetListBaseRowEntryComparator mRowComparator =
             new WidgetListBaseRowEntryComparator();
+    @Nullable private WidgetsTwoPaneSheet.HeaderChangeListener mHeaderChangeListener;
 
     private final List<WidgetsListBaseEntry> mAllEntries = new ArrayList<>();
     private ArrayList<WidgetsListBaseEntry> mVisibleEntries = new ArrayList<>();
@@ -97,64 +95,44 @@
 
     private Predicate<WidgetsListBaseEntry> mHeaderAndSelectedContentFilter = entry ->
             entry instanceof WidgetsListHeaderEntry
-                    || entry instanceof WidgetsListSearchHeaderEntry
                     || PackageUserKey.fromPackageItemInfo(entry.mPkgItem)
                             .equals(mWidgetsContentVisiblePackageUserKey);
     @Nullable private Predicate<WidgetsListBaseEntry> mFilter = null;
     @Nullable private RecyclerView mRecyclerView;
     @Nullable private PackageUserKey mPendingClickHeader;
-    private final int mSpacingBetweenEntries;
-    private int mMaxSpanSize = 4;
+    @Px private int mMaxHorizontalSpan;
 
     public WidgetsListAdapter(Context context, LayoutInflater layoutInflater,
-            IconCache iconCache, IntSupplier emptySpaceHeightProvider,
-            OnClickListener iconClickListener, OnLongClickListener iconLongClickListener) {
+            IntSupplier emptySpaceHeightProvider, OnClickListener iconClickListener,
+            OnLongClickListener iconLongClickListener,
+            boolean isTwoPane) {
         mContext = context;
-        mDiffReporter = new WidgetsDiffReporter(iconCache, this);
-        WidgetsListDrawableFactory listDrawableFactory = new WidgetsListDrawableFactory(context);
+        mMaxHorizontalSpan = WidgetSizes.getWidgetSizePx(
+                ActivityContext.lookupContext(context).getDeviceProfile(),
+                        DEFAULT_MAX_HORIZONTAL_SPANS, 1).getWidth();
 
         mViewHolderBinders.put(
                 VIEW_TYPE_WIDGETS_LIST,
                 new WidgetsListTableViewHolderBinder(
-                        layoutInflater, iconClickListener, iconLongClickListener,
-                        listDrawableFactory));
+                        mContext, layoutInflater, iconClickListener, iconLongClickListener));
         mViewHolderBinders.put(
                 VIEW_TYPE_WIDGETS_HEADER,
                 new WidgetsListHeaderViewHolderBinder(
-                        layoutInflater,
-                        /* onHeaderClickListener= */ this,
-                        listDrawableFactory));
-        mViewHolderBinders.put(
-                VIEW_TYPE_WIDGETS_SEARCH_HEADER,
-                new WidgetsListSearchHeaderViewHolderBinder(
-                        layoutInflater,
-                        /* onHeaderClickListener= */ this,
-                        listDrawableFactory));
+                        layoutInflater, /* onHeaderClickListener= */ this,
+                        isTwoPane));
         mViewHolderBinders.put(
                 VIEW_TYPE_WIDGETS_SPACE,
                 new WidgetsSpaceViewHolderBinder(emptySpaceHeightProvider));
-        mSpacingBetweenEntries =
-                context.getResources().getDimensionPixelSize(R.dimen.widget_list_entry_spacing);
+    }
+
+    public void setHeaderChangeListener(WidgetsTwoPaneSheet.HeaderChangeListener
+            headerChangeListener) {
+        mHeaderChangeListener = headerChangeListener;
     }
 
     @Override
     public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) {
         mRecyclerView = recyclerView;
-
-        mRecyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
-            @Override
-            public void getItemOffsets(
-                    @NonNull Rect outRect,
-                    @NonNull View view,
-                    @NonNull RecyclerView parent,
-                    @NonNull RecyclerView.State state) {
-                super.getItemOffsets(outRect, view, parent, state);
-                int position = ((LayoutParams) view.getLayoutParams()).getViewLayoutPosition();
-                boolean isHeader =
-                        view.getTag(R.id.tag_widget_entry) instanceof WidgetsListBaseEntry.Header;
-                outRect.top += position > 0 && isHeader ? mSpacingBetweenEntries : 0;
-            }
-        });
     }
 
     @Override
@@ -194,9 +172,6 @@
         mAllEntries.clear();
         mAllEntries.add(new WidgetListSpaceEntry());
         tempEntries.stream().sorted(mRowComparator).forEach(mAllEntries::add);
-        if (shouldClearVisibleEntries()) {
-            mVisibleEntries.clear();
-        }
         updateVisibleEntries();
     }
 
@@ -216,24 +191,31 @@
                 getOffsetForPosition(previousPositionForPackageUserKey);
 
         List<WidgetsListBaseEntry> newVisibleEntries = mAllEntries.stream()
-                .filter(entry -> ((mFilter == null || mFilter.test(entry))
+                .filter(entry -> (((mFilter == null || mFilter.test(entry))
                         && mHeaderAndSelectedContentFilter.test(entry))
                         || entry instanceof WidgetListSpaceEntry)
+                        && (mHeaderChangeListener == null
+                        || !(entry instanceof WidgetsListContentEntry)))
                 .map(entry -> {
-                    if (entry instanceof WidgetsListBaseEntry.Header<?>
+                    if (entry instanceof WidgetsListHeaderEntry
                             && matchesKey(entry, mWidgetsContentVisiblePackageUserKey)) {
                         // Adjust the original entries to expand headers for the selected content.
-                        return ((WidgetsListBaseEntry.Header<?>) entry).withWidgetListShown();
+                        return ((WidgetsListHeaderEntry) entry).withWidgetListShown();
                     } else if (entry instanceof WidgetsListContentEntry) {
                         // Adjust the original content entries to accommodate for the current
                         // maxSpanSize.
-                        return ((WidgetsListContentEntry) entry).withMaxSpanSize(mMaxSpanSize);
+                        return ((WidgetsListContentEntry) entry).withMaxSpanSize(
+                                mMaxHorizontalSpan);
                     }
                     return entry;
                 })
                 .collect(Collectors.toList());
 
-        mDiffReporter.process(mVisibleEntries, newVisibleEntries, mRowComparator);
+        DiffResult diffResult = DiffUtil.calculateDiff(
+                new WidgetsDiffCallback(mVisibleEntries, newVisibleEntries), false);
+        mVisibleEntries.clear();
+        mVisibleEntries.addAll(newVisibleEntries);
+        diffResult.dispatchUpdatesTo(this);
 
         if (mPendingClickHeader != null) {
             // Get the position for the clicked header after adjusting the visible entries. The
@@ -245,11 +227,10 @@
         }
     }
 
-
     /** Returns whether {@code entry} matches {@code key}. */
     private static boolean isHeaderForPackageUserKey(
             @NonNull WidgetsListBaseEntry entry, @Nullable PackageUserKey key) {
-        return entry instanceof WidgetsListBaseEntry.Header && matchesKey(entry, key);
+        return entry instanceof WidgetsListHeaderEntry && matchesKey(entry, key);
     }
 
     private static boolean matchesKey(@NonNull WidgetsListBaseEntry entry,
@@ -278,7 +259,6 @@
     @Override
     public void onBindViewHolder(ViewHolder holder, int pos, List<Object> payloads) {
         ViewHolderBinder viewHolderBinder = mViewHolderBinders.get(getItemViewType(pos));
-        WidgetsListBaseEntry entry = mVisibleEntries.get(pos);
 
         // The first entry has an empty space, count from second entries.
         int listPos = (pos > 1) ? POSITION_DEFAULT : POSITION_FIRST;
@@ -286,7 +266,18 @@
             listPos |= POSITION_LAST;
         }
         viewHolderBinder.bindViewHolder(holder, mVisibleEntries.get(pos), listPos, payloads);
-        holder.itemView.setTag(R.id.tag_widget_entry, entry);
+    }
+
+    /**
+     * Selects the first visible header. This is used in search as we want to always select the
+     * first header in the new list that gets generated as we search.
+     */
+    void selectFirstHeaderEntry() {
+        mVisibleEntries.stream()
+                .filter(entry -> entry instanceof WidgetsListHeaderEntry)
+                .findFirst()
+                .ifPresent(entry ->
+                        onHeaderClicked(true, PackageUserKey.fromPackageItemInfo(entry.mPkgItem)));
     }
 
     @Override
@@ -326,8 +317,6 @@
             return VIEW_TYPE_WIDGETS_LIST;
         } else if (entry instanceof WidgetsListHeaderEntry) {
             return VIEW_TYPE_WIDGETS_HEADER;
-        } else if (entry instanceof WidgetsListSearchHeaderEntry) {
-            return VIEW_TYPE_WIDGETS_SEARCH_HEADER;
         } else if (entry instanceof WidgetListSpaceEntry) {
             return VIEW_TYPE_WIDGETS_SPACE;
         }
@@ -339,6 +328,9 @@
         // Ignore invalid clicks, such as collapsing a package that isn't currently expanded.
         if (!showWidgets && !packageUserKey.equals(mWidgetsContentVisiblePackageUserKey)) return;
 
+        if (mHeaderChangeListener != null
+                && packageUserKey.equals(mWidgetsContentVisiblePackageUserKey)) return;
+
         if (showWidgets) {
             mWidgetsContentVisiblePackageUserKey = packageUserKey;
             ActivityContext.lookupContext(mContext)
@@ -352,6 +344,10 @@
         mPendingClickHeader = packageUserKey;
 
         updateVisibleEntries();
+
+        if (mHeaderChangeListener != null && mWidgetsContentVisiblePackageUserKey != null) {
+            mHeaderChangeListener.onHeaderChanged(mWidgetsContentVisiblePackageUserKey);
+        }
     }
 
     /**
@@ -417,37 +413,14 @@
     }
 
     /**
-     * Sets the max horizontal span in cells that is allowed for grouping more than one widget in a
+     * Sets the max horizontal span in pixels that is allowed for grouping more than one widget in a
      * table row.
      */
-    public void setMaxHorizontalSpansPerRow(int maxHorizontalSpans) {
-        mMaxSpanSize = maxHorizontalSpans;
+    public void setMaxHorizontalSpansPxPerRow(@Px int maxHorizontalSpan) {
+        mMaxHorizontalSpan = maxHorizontalSpan;
         updateVisibleEntries();
     }
 
-    /**
-     * Returns {@code true} if there is a change in {@link #mAllEntries} that results in an
-     * invalidation of {@link #mVisibleEntries}. e.g. there is change in the device language.
-     */
-    private boolean shouldClearVisibleEntries() {
-        Map<PackageUserKey, PackageItemInfo> packagesInfo =
-                mAllEntries.stream()
-                        .filter(entry -> entry instanceof WidgetsListHeaderEntry)
-                        .map(entry -> entry.mPkgItem)
-                        .collect(Collectors.toMap(
-                                entry -> PackageUserKey.fromPackageItemInfo(entry),
-                                entry -> entry));
-        for (WidgetsListBaseEntry visibleEntry: mVisibleEntries) {
-            PackageUserKey key = PackageUserKey.fromPackageItemInfo(visibleEntry.mPkgItem);
-            PackageItemInfo packageItemInfo = packagesInfo.get(key);
-            if (packageItemInfo != null
-                    && !visibleEntry.mPkgItem.title.equals(packageItemInfo.title)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
     /** Comparator for sorting WidgetListRowEntry based on package title. */
     public static class WidgetListBaseRowEntryComparator implements
             Comparator<WidgetsListBaseEntry> {
diff --git a/src/com/android/launcher3/widget/picker/WidgetsListDrawableFactory.java b/src/com/android/launcher3/widget/picker/WidgetsListDrawableFactory.java
deleted file mode 100644
index c61e3a4..0000000
--- a/src/com/android/launcher3/widget/picker/WidgetsListDrawableFactory.java
+++ /dev/null
@@ -1,113 +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.launcher3.widget.picker;
-
-import static com.android.launcher3.widget.picker.WidgetsListDrawableState.FIRST;
-import static com.android.launcher3.widget.picker.WidgetsListDrawableState.FIRST_EXPANDED;
-import static com.android.launcher3.widget.picker.WidgetsListDrawableState.LAST;
-import static com.android.launcher3.widget.picker.WidgetsListDrawableState.MIDDLE;
-import static com.android.launcher3.widget.picker.WidgetsListDrawableState.MIDDLE_EXPANDED;
-import static com.android.launcher3.widget.picker.WidgetsListDrawableState.SINGLE;
-
-import android.content.Context;
-import android.content.res.ColorStateList;
-import android.content.res.Resources;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.GradientDrawable;
-import android.graphics.drawable.RippleDrawable;
-import android.graphics.drawable.StateListDrawable;
-
-import com.android.launcher3.R;
-import com.android.launcher3.util.Themes;
-
-/** Factory for creating drawables to use as background for list elements. */
-final class WidgetsListDrawableFactory {
-
-    private final float mTopBottomCornerRadius;
-    private final float mMiddleCornerRadius;
-    private final ColorStateList mSurfaceColor;
-    private final ColorStateList mRippleColor;
-
-    WidgetsListDrawableFactory(Context context) {
-        Resources res = context.getResources();
-        mTopBottomCornerRadius = res.getDimension(R.dimen.widget_list_top_bottom_corner_radius);
-        mMiddleCornerRadius = res.getDimension(R.dimen.widget_list_content_corner_radius);
-        mSurfaceColor = context.getColorStateList(R.color.surface);
-        mRippleColor = ColorStateList.valueOf(
-                Themes.getAttrColor(context, android.R.attr.colorControlHighlight));
-    }
-
-    /**
-     * Creates a drawable for widget header list items. This drawable supports all positions
-     * in {@link WidgetsListDrawableState}.
-     */
-    Drawable createHeaderBackgroundDrawable() {
-        StateListDrawable stateList = new StateListDrawable();
-        stateList.addState(
-                SINGLE.mStateSet,
-                createRoundedRectDrawable(mTopBottomCornerRadius, mTopBottomCornerRadius));
-        stateList.addState(
-                FIRST_EXPANDED.mStateSet,
-                createRoundedRectDrawable(mTopBottomCornerRadius, 0));
-        stateList.addState(
-                FIRST.mStateSet,
-                createRoundedRectDrawable(mTopBottomCornerRadius, mMiddleCornerRadius));
-        stateList.addState(
-                MIDDLE_EXPANDED.mStateSet,
-                createRoundedRectDrawable(mMiddleCornerRadius, 0));
-        stateList.addState(
-                MIDDLE.mStateSet,
-                createRoundedRectDrawable(mMiddleCornerRadius, mMiddleCornerRadius));
-        stateList.addState(
-                LAST.mStateSet,
-                createRoundedRectDrawable(mMiddleCornerRadius, mTopBottomCornerRadius));
-        return new RippleDrawable(mRippleColor, /* content= */ stateList, /* mask= */ stateList);
-    }
-
-    /**
-     * Creates a drawable for widget content list items. This state list supports the middle and
-     * last states.
-     */
-    Drawable createContentBackgroundDrawable() {
-        StateListDrawable stateList = new StateListDrawable();
-        stateList.addState(
-                MIDDLE.mStateSet,
-                createRoundedRectDrawable(0, mMiddleCornerRadius));
-        stateList.addState(
-                LAST.mStateSet,
-                createRoundedRectDrawable(0, mTopBottomCornerRadius));
-        return new RippleDrawable(mRippleColor, /* content= */ stateList, /* mask= */ stateList);
-    }
-
-    /** Creates a rounded-rect drawable with the specified radii. */
-    private Drawable createRoundedRectDrawable(float topRadius, float bottomRadius) {
-        GradientDrawable backgroundMask = new GradientDrawable();
-        backgroundMask.setColor(mSurfaceColor);
-        backgroundMask.setShape(GradientDrawable.RECTANGLE);
-        backgroundMask.setCornerRadii(
-                new float[]{
-                        topRadius,
-                        topRadius,
-                        topRadius,
-                        topRadius,
-                        bottomRadius,
-                        bottomRadius,
-                        bottomRadius,
-                        bottomRadius
-                });
-        return backgroundMask;
-    }
-}
diff --git a/src/com/android/launcher3/widget/picker/WidgetsListDrawableState.java b/src/com/android/launcher3/widget/picker/WidgetsListDrawableState.java
index 94f292b..ca69ffe 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsListDrawableState.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsListDrawableState.java
@@ -21,9 +21,7 @@
  */
 enum WidgetsListDrawableState {
     FIRST(new int[]{android.R.attr.state_first}),
-    FIRST_EXPANDED(new int[]{android.R.attr.state_first, android.R.attr.state_expanded}),
     MIDDLE(new int[]{android.R.attr.state_middle}),
-    MIDDLE_EXPANDED(new int[]{android.R.attr.state_middle, android.R.attr.state_expanded}),
     LAST(new int[]{android.R.attr.state_last}),
     SINGLE(new int[]{android.R.attr.state_single});
 
@@ -33,12 +31,10 @@
         mStateSet = stateSet;
     }
 
-    static WidgetsListDrawableState obtain(boolean isFirst, boolean isLast, boolean isExpanded) {
+    static WidgetsListDrawableState obtain(boolean isFirst, boolean isLast) {
         if (isFirst && isLast) return SINGLE;
-        if (isFirst && isExpanded) return FIRST_EXPANDED;
         if (isFirst) return FIRST;
         if (isLast) return LAST;
-        if (isExpanded) return MIDDLE_EXPANDED;
         return MIDDLE;
     }
 }
diff --git a/src/com/android/launcher3/widget/picker/WidgetsListHeader.java b/src/com/android/launcher3/widget/picker/WidgetsListHeader.java
index 48df04f..b5e7401 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsListHeader.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsListHeader.java
@@ -15,16 +15,14 @@
  */
 package com.android.launcher3.widget.picker;
 
-
 import android.content.Context;
-import android.content.res.Resources;
 import android.content.res.TypedArray;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
+import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.view.View;
 import android.view.accessibility.AccessibilityNodeInfo;
-import android.widget.CheckBox;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
@@ -40,12 +38,8 @@
 import com.android.launcher3.icons.cache.HandlerRunnable;
 import com.android.launcher3.model.data.ItemInfoWithIcon;
 import com.android.launcher3.model.data.PackageItemInfo;
-import com.android.launcher3.util.PluralMessageFormat;
 import com.android.launcher3.views.ActivityContext;
 import com.android.launcher3.widget.model.WidgetsListHeaderEntry;
-import com.android.launcher3.widget.model.WidgetsListSearchHeaderEntry;
-
-import java.util.stream.Collectors;
 
 /**
  * A UI represents a header of an app shown in the full widgets tray.
@@ -55,19 +49,18 @@
  */
 public final class WidgetsListHeader extends LinearLayout implements ItemInfoUpdateReceiver {
 
-    private boolean mEnableIconUpdateAnimation = false;
+    private static final int[] EXPANDED_DRAWABLE_STATE = new int[] {android.R.attr.state_expanded};
+
+    private final int mIconSize;
 
     @Nullable private HandlerRunnable mIconLoadRequest;
     @Nullable private Drawable mIconDrawable;
-    private final int mIconSize;
-
+    @Nullable private WidgetsListDrawableState mListDrawableState;
     private ImageView mAppIcon;
     private TextView mTitle;
     private TextView mSubtitle;
-
-    private CheckBox mExpandToggle;
+    private boolean mEnableIconUpdateAnimation = false;
     private boolean mIsExpanded = false;
-    @Nullable private WidgetsListDrawableState mListDrawableState;
 
     public WidgetsListHeader(Context context) {
         this(context, /* attrs= */ null);
@@ -94,7 +87,6 @@
         mAppIcon = findViewById(R.id.app_icon);
         mTitle = findViewById(R.id.app_title);
         mSubtitle = findViewById(R.id.app_subtitle);
-        mExpandToggle = findViewById(R.id.toggle);
         setAccessibilityDelegate(new AccessibilityDelegate() {
 
             @Override
@@ -123,27 +115,16 @@
         });
     }
 
-    /**
-     * Sets a {@link OnExpansionChangeListener} to get a callback when this app widgets section
-     * expands / collapses.
-     */
-    @UiThread
-    public void setOnExpandChangeListener(
-            @Nullable OnExpansionChangeListener onExpandChangeListener) {
-        // Use the entire touch area of this view to expand / collapse an app widgets section.
-        setOnClickListener(view -> {
-            setExpanded(!mIsExpanded);
-            if (onExpandChangeListener != null) {
-                onExpandChangeListener.onExpansionChange(mIsExpanded);
-            }
-        });
-    }
-
     /** Sets the expand toggle to expand / collapse. */
     @UiThread
     public void setExpanded(boolean isExpanded) {
         this.mIsExpanded = isExpanded;
-        mExpandToggle.setChecked(isExpanded);
+        refreshDrawableState();
+    }
+
+    /** @return true if this header is expanded. */
+    public boolean isExpanded() {
+        return mIsExpanded;
     }
 
     /** Sets the {@link WidgetsListDrawableState} and refreshes the background drawable. */
@@ -157,13 +138,8 @@
     /** Apply app icon, labels and tag using a generic {@link WidgetsListHeaderEntry}. */
     @UiThread
     public void applyFromItemInfoWithIcon(WidgetsListHeaderEntry entry) {
-        applyIconAndLabel(entry);
-    }
-
-    @UiThread
-    private void applyIconAndLabel(WidgetsListHeaderEntry entry) {
         PackageItemInfo info = entry.mPkgItem;
-        setIcon(info);
+        setIcon(info.newIcon(getContext()));
         setTitles(entry);
         setExpanded(entry.isWidgetListShown());
 
@@ -172,9 +148,7 @@
         verifyHighRes();
     }
 
-    private void setIcon(PackageItemInfo info) {
-        Drawable icon;
-        icon = info.newIcon(getContext());
+    void setIcon(Drawable icon) {
         applyDrawables(icon);
         mIconDrawable = icon;
         if (mIconDrawable != null) {
@@ -205,55 +179,13 @@
     private void setTitles(WidgetsListHeaderEntry entry) {
         mTitle.setText(entry.mPkgItem.title);
 
-        Resources resources = getContext().getResources();
-        if (entry.widgetsCount == 0 && entry.shortcutsCount == 0) {
+        String subtitle = entry.getSubtitle(getContext());
+        if (TextUtils.isEmpty(subtitle)) {
             mSubtitle.setVisibility(GONE);
-            return;
-        }
-
-        String subtitle;
-        if (entry.widgetsCount > 0 && entry.shortcutsCount > 0) {
-            String widgetsCount = PluralMessageFormat.getIcuPluralString(getContext(),
-                    R.string.widgets_count, entry.widgetsCount);
-            String shortcutsCount = PluralMessageFormat.getIcuPluralString(getContext(),
-                    R.string.shortcuts_count, entry.shortcutsCount);
-            subtitle = resources.getString(R.string.widgets_and_shortcuts_count, widgetsCount,
-                    shortcutsCount);
-        } else if (entry.widgetsCount > 0) {
-            subtitle = PluralMessageFormat.getIcuPluralString(getContext(),
-                    R.string.widgets_count, entry.widgetsCount);
         } else {
-            subtitle = PluralMessageFormat.getIcuPluralString(getContext(),
-                    R.string.shortcuts_count, entry.shortcutsCount);
+            mSubtitle.setText(subtitle);
+            mSubtitle.setVisibility(VISIBLE);
         }
-        mSubtitle.setText(subtitle);
-        mSubtitle.setVisibility(VISIBLE);
-    }
-
-    /** Apply app icon, labels and tag using a generic {@link WidgetsListSearchHeaderEntry}. */
-    @UiThread
-    public void applyFromItemInfoWithIcon(WidgetsListSearchHeaderEntry entry) {
-        applyIconAndLabel(entry);
-    }
-
-    @UiThread
-    private void applyIconAndLabel(WidgetsListSearchHeaderEntry entry) {
-        PackageItemInfo info = entry.mPkgItem;
-        setIcon(info);
-        setTitles(entry);
-        setExpanded(entry.isWidgetListShown());
-
-        super.setTag(info);
-
-        verifyHighRes();
-    }
-
-    private void setTitles(WidgetsListSearchHeaderEntry entry) {
-        mTitle.setText(entry.mPkgItem.title);
-
-        mSubtitle.setText(entry.mWidgets.stream()
-                .map(item -> item.label).sorted().collect(Collectors.joining(", ")));
-        mSubtitle.setVisibility(VISIBLE);
     }
 
     @Override
@@ -265,7 +197,7 @@
             // Optimization: Starting in N, pre-uploads the bitmap to RenderThread.
             info.bitmap.icon.prepareToDraw();
 
-            setIcon((PackageItemInfo) info);
+            setIcon(info.newIcon(getContext()));
 
             mEnableIconUpdateAnimation = false;
         }
@@ -273,12 +205,15 @@
 
     @Override
     protected int[] onCreateDrawableState(int extraSpace) {
-        if (mListDrawableState == null) return super.onCreateDrawableState(extraSpace);
-        // Augment the state set from the super implementation with the custom states from
-        // mListDrawableState.
-        int[] drawableState =
-                super.onCreateDrawableState(extraSpace + mListDrawableState.mStateSet.length);
-        mergeDrawableStates(drawableState, mListDrawableState.mStateSet);
+        // We create a drawable state with an additional two spaces to be able to fit expanded state
+        // and the list drawable state.
+        int[] drawableState = super.onCreateDrawableState(extraSpace + 2);
+        if (mIsExpanded) {
+            mergeDrawableStates(drawableState, EXPANDED_DRAWABLE_STATE);
+        }
+        if (mListDrawableState != null) {
+            mergeDrawableStates(drawableState, mListDrawableState.mStateSet);
+        }
         return drawableState;
     }
 
@@ -296,10 +231,4 @@
             }
         }
     }
-
-    /** A listener for the widget section expansion / collapse events. */
-    public interface OnExpansionChangeListener {
-        /** Notifies that the widget section is expanded or collapsed. */
-        void onExpansionChange(boolean isExpanded);
-    }
 }
diff --git a/src/com/android/launcher3/widget/picker/WidgetsListHeaderViewHolderBinder.java b/src/com/android/launcher3/widget/picker/WidgetsListHeaderViewHolderBinder.java
index c6a7285..af4a5e6 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsListHeaderViewHolderBinder.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsListHeaderViewHolderBinder.java
@@ -32,22 +32,23 @@
         ViewHolderBinder<WidgetsListHeaderEntry, WidgetsListHeaderHolder> {
     private final LayoutInflater mLayoutInflater;
     private final OnHeaderClickListener mOnHeaderClickListener;
-    private final WidgetsListDrawableFactory mListDrawableFactory;
+    private final boolean mIsTwoPane;
 
     public WidgetsListHeaderViewHolderBinder(LayoutInflater layoutInflater,
-            OnHeaderClickListener onHeaderClickListener,
-            WidgetsListDrawableFactory listDrawableFactory) {
+            OnHeaderClickListener onHeaderClickListener, boolean isTwoPane) {
         mLayoutInflater = layoutInflater;
         mOnHeaderClickListener = onHeaderClickListener;
-        mListDrawableFactory = listDrawableFactory;
+        mIsTwoPane = isTwoPane;
     }
 
     @Override
     public WidgetsListHeaderHolder newViewHolder(ViewGroup parent) {
-        WidgetsListHeader header = (WidgetsListHeader) mLayoutInflater.inflate(
-                R.layout.widgets_list_row_header, parent, false);
-        header.setBackground(mListDrawableFactory.createHeaderBackgroundDrawable());
-        return new WidgetsListHeaderHolder(header);
+        return new WidgetsListHeaderHolder((WidgetsListHeader) mLayoutInflater.inflate(
+                mIsTwoPane
+                        ? R.layout.widgets_list_row_header_two_pane
+                        : R.layout.widgets_list_row_header,
+                parent,
+                false));
     }
 
     @Override
@@ -59,10 +60,11 @@
         widgetsListHeader.setListDrawableState(
                 WidgetsListDrawableState.obtain(
                         (position & POSITION_FIRST) != 0,
-                        (position & POSITION_LAST) != 0,
-                        /* isExpanded= */ data.isWidgetListShown()));
-        widgetsListHeader.setOnExpandChangeListener(isExpanded ->
-                mOnHeaderClickListener.onHeaderClicked(isExpanded,
-                        PackageUserKey.fromPackageItemInfo(data.mPkgItem)));
+                        (position & POSITION_LAST) != 0));
+        widgetsListHeader.setOnClickListener(view -> {
+            widgetsListHeader.setExpanded(mIsTwoPane || !widgetsListHeader.isExpanded());
+            mOnHeaderClickListener.onHeaderClicked(widgetsListHeader.isExpanded(),
+                    PackageUserKey.fromPackageItemInfo(data.mPkgItem));
+        });
     }
 }
diff --git a/src/com/android/launcher3/widget/picker/WidgetsListSearchHeaderHolder.java b/src/com/android/launcher3/widget/picker/WidgetsListSearchHeaderHolder.java
deleted file mode 100644
index 9562af3..0000000
--- a/src/com/android/launcher3/widget/picker/WidgetsListSearchHeaderHolder.java
+++ /dev/null
@@ -1,32 +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.launcher3.widget.picker;
-
-import androidx.recyclerview.widget.RecyclerView.ViewHolder;
-
-/**
- * A {@link ViewHolder} for {@link WidgetsListHeader} of an app, which renders the app icon, the app
- * name, label and a button for showing / hiding widgets.
- */
-public final class WidgetsListSearchHeaderHolder extends ViewHolder {
-    final WidgetsListHeader mWidgetsListHeader;
-
-    public WidgetsListSearchHeaderHolder(WidgetsListHeader view) {
-        super(view);
-
-        mWidgetsListHeader = view;
-    }
-}
diff --git a/src/com/android/launcher3/widget/picker/WidgetsListSearchHeaderViewHolderBinder.java b/src/com/android/launcher3/widget/picker/WidgetsListSearchHeaderViewHolderBinder.java
deleted file mode 100644
index 2b27fc2..0000000
--- a/src/com/android/launcher3/widget/picker/WidgetsListSearchHeaderViewHolderBinder.java
+++ /dev/null
@@ -1,69 +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.launcher3.widget.picker;
-
-import android.view.LayoutInflater;
-import android.view.ViewGroup;
-
-import com.android.launcher3.R;
-import com.android.launcher3.recyclerview.ViewHolderBinder;
-import com.android.launcher3.util.PackageUserKey;
-import com.android.launcher3.widget.model.WidgetsListHeaderEntry;
-import com.android.launcher3.widget.model.WidgetsListSearchHeaderEntry;
-
-import java.util.List;
-
-/**
- * Binds data from {@link WidgetsListHeaderEntry} to UI elements in {@link WidgetsListHeaderHolder}.
- */
-public final class WidgetsListSearchHeaderViewHolderBinder implements
-        ViewHolderBinder<WidgetsListSearchHeaderEntry, WidgetsListSearchHeaderHolder> {
-    private final LayoutInflater mLayoutInflater;
-    private final OnHeaderClickListener mOnHeaderClickListener;
-    private final WidgetsListDrawableFactory mListDrawableFactory;
-
-    public WidgetsListSearchHeaderViewHolderBinder(LayoutInflater layoutInflater,
-            OnHeaderClickListener onHeaderClickListener,
-            WidgetsListDrawableFactory listDrawableFactory) {
-        mLayoutInflater = layoutInflater;
-        mOnHeaderClickListener = onHeaderClickListener;
-        mListDrawableFactory = listDrawableFactory;
-    }
-
-    @Override
-    public WidgetsListSearchHeaderHolder newViewHolder(ViewGroup parent) {
-        WidgetsListHeader header = (WidgetsListHeader) mLayoutInflater.inflate(
-                R.layout.widgets_list_row_header, parent, false);
-        header.setBackground(mListDrawableFactory.createHeaderBackgroundDrawable());
-        return new WidgetsListSearchHeaderHolder(header);
-    }
-
-    @Override
-    public void bindViewHolder(WidgetsListSearchHeaderHolder viewHolder,
-            WidgetsListSearchHeaderEntry data, @ListPosition int position, List<Object> payloads) {
-        WidgetsListHeader widgetsListHeader = viewHolder.mWidgetsListHeader;
-        widgetsListHeader.applyFromItemInfoWithIcon(data);
-        widgetsListHeader.setExpanded(data.isWidgetListShown());
-        widgetsListHeader.setListDrawableState(
-                WidgetsListDrawableState.obtain(
-                        (position & POSITION_FIRST) != 0,
-                        (position & POSITION_LAST) != 0,
-                        /* isExpanded= */ data.isWidgetListShown()));
-        widgetsListHeader.setOnExpandChangeListener(isExpanded ->
-                mOnHeaderClickListener.onHeaderClicked(isExpanded,
-                        PackageUserKey.fromPackageItemInfo(data.mPkgItem)));
-    }
-}
diff --git a/src/com/android/launcher3/widget/picker/WidgetsListTableViewHolderBinder.java b/src/com/android/launcher3/widget/picker/WidgetsListTableViewHolderBinder.java
index 05e26ad..c7d2aa3 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsListTableViewHolderBinder.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsListTableViewHolderBinder.java
@@ -15,9 +15,7 @@
  */
 package com.android.launcher3.widget.picker;
 
-import static com.android.launcher3.widget.picker.WidgetsListDrawableState.LAST;
-import static com.android.launcher3.widget.picker.WidgetsListDrawableState.MIDDLE;
-
+import android.content.Context;
 import android.graphics.Bitmap;
 import android.util.Log;
 import android.util.Pair;
@@ -30,9 +28,13 @@
 import android.widget.TableLayout;
 import android.widget.TableRow;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Px;
+
 import com.android.launcher3.R;
 import com.android.launcher3.model.WidgetItem;
 import com.android.launcher3.recyclerview.ViewHolderBinder;
+import com.android.launcher3.views.ActivityContext;
 import com.android.launcher3.widget.WidgetCell;
 import com.android.launcher3.widget.model.WidgetsListContentEntry;
 import com.android.launcher3.widget.util.WidgetsTableUtils;
@@ -50,18 +52,23 @@
 
     private final LayoutInflater mLayoutInflater;
     private final OnClickListener mIconClickListener;
+    private @NonNull final Context mContext;
+    private @NonNull final ActivityContext mActivityContext;
+    @Px private final int mCellPadding;
     private final OnLongClickListener mIconLongClickListener;
-    private final WidgetsListDrawableFactory mListDrawableFactory;
 
     public WidgetsListTableViewHolderBinder(
+            @NonNull Context context,
             LayoutInflater layoutInflater,
             OnClickListener iconClickListener,
-            OnLongClickListener iconLongClickListener,
-            WidgetsListDrawableFactory listDrawableFactory) {
+            OnLongClickListener iconLongClickListener) {
         mLayoutInflater = layoutInflater;
+        mContext = context;
+        mActivityContext = ActivityContext.lookupContext(context);
+        mCellPadding = context.getResources().getDimensionPixelSize(
+                R.dimen.widget_cell_horizontal_padding);
         mIconClickListener = iconClickListener;
         mIconLongClickListener = iconLongClickListener;
-        mListDrawableFactory = listDrawableFactory;
     }
 
     @Override
@@ -70,12 +77,8 @@
             Log.v(TAG, "\nonCreateViewHolder");
         }
 
-        WidgetsRowViewHolder viewHolder =
-                new WidgetsRowViewHolder(mLayoutInflater.inflate(
+        return new WidgetsRowViewHolder(mLayoutInflater.inflate(
                         R.layout.widgets_table_container, parent, false));
-        viewHolder.tableContainer.setBackgroundDrawable(
-                mListDrawableFactory.createContentBackgroundDrawable());
-        return viewHolder;
     }
 
     @Override
@@ -91,10 +94,17 @@
             Log.d(TAG, String.format("onBindViewHolder [widget#=%d, table.getChildCount=%d]",
                     entry.mWidgets.size(), table.getChildCount()));
         }
-        table.setListDrawableState(((position & POSITION_LAST) != 0) ? LAST : MIDDLE);
+        table.setListDrawableState(
+                WidgetsListDrawableState.obtain(
+                        (position & POSITION_FIRST) != 0,
+                        (position & POSITION_LAST) != 0));
+
         List<ArrayList<WidgetItem>> widgetItemsTable =
-                WidgetsTableUtils.groupWidgetItemsIntoTableWithReordering(
-                        entry.mWidgets, entry.getMaxSpanSizeInCells());
+                WidgetsTableUtils.groupWidgetItemsUsingRowPxWithReordering(entry.mWidgets,
+                        mContext,
+                        mActivityContext.getDeviceProfile(),
+                        entry.getMaxSpanSize(),
+                        mCellPadding);
         recycleTableBeforeBinding(table, widgetItemsTable);
 
         // Bind the widget items.
@@ -110,13 +120,8 @@
 
                 // When preview loads, notify adapter to rebind the item and possibly animate
                 widget.applyFromCellItem(widgetItem, 1f,
-                        bitmap -> {
-                        if (holder.getBindingAdapter() != null) {
-                            holder.getBindingAdapter().notifyItemChanged(
-                                    holder.getBindingAdapterPosition(),
-                                    Pair.create(widgetItem, bitmap));
-                            }
-                        }, holder.previewCache.get(widgetItem));
+                        bitmap -> holder.onPreviewLoaded(Pair.create(widgetItem, bitmap)),
+                        holder.previewCache.get(widgetItem));
             }
         }
     }
diff --git a/src/com/android/launcher3/widget/picker/WidgetsRecyclerView.java b/src/com/android/launcher3/widget/picker/WidgetsRecyclerView.java
index bdf646b..698e764 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsRecyclerView.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsRecyclerView.java
@@ -20,23 +20,14 @@
 import android.graphics.Point;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
-import android.view.View;
-import android.widget.TableLayout;
 
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 import androidx.recyclerview.widget.RecyclerView.OnItemTouchListener;
 
-import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.FastScrollRecyclerView;
 import com.android.launcher3.R;
-import com.android.launcher3.views.ActivityContext;
-import com.android.launcher3.widget.model.WidgetListSpaceEntry;
-import com.android.launcher3.widget.model.WidgetsListBaseEntry;
-import com.android.launcher3.widget.model.WidgetsListContentEntry;
-import com.android.launcher3.widget.model.WidgetsListHeaderEntry;
-import com.android.launcher3.widget.model.WidgetsListSearchHeaderEntry;
-import com.android.launcher3.widget.picker.WidgetsSpaceViewHolderBinder.EmptySpaceView;
+import com.android.launcher3.util.ScrollableLayoutManager;
 
 /**
  * The widgets recycler view.
@@ -51,13 +42,6 @@
     private boolean mTouchDownOnScroller;
     private HeaderViewDimensionsProvider mHeaderViewDimensionsProvider;
 
-    // Cached sizes
-    private int mLastVisibleWidgetContentTableHeight = 0;
-    private int mWidgetHeaderHeight = 0;
-    private int mWidgetEmptySpaceHeight = 0;
-
-    private final int mSpacingBetweenEntries;
-
     public WidgetsRecyclerView(Context context) {
         this(context, null);
     }
@@ -71,21 +55,12 @@
         super(context, attrs, defStyleAttr);
         mScrollbarTop = getResources().getDimensionPixelSize(R.dimen.dynamic_grid_edge_margin);
         addOnItemTouchListener(this);
-
-        ActivityContext activity = ActivityContext.lookupContext(getContext());
-        DeviceProfile grid = activity.getDeviceProfile();
-
-        // The spacing used between entries.
-        mSpacingBetweenEntries =
-                getResources().getDimensionPixelSize(R.dimen.widget_list_entry_spacing);
     }
 
     @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
-        // create a layout manager with Launcher's context so that scroll position
-        // can be preserved during screen rotation.
-        setLayoutManager(new LinearLayoutManager(getContext()));
+        setLayoutManager(new ScrollableLayoutManager(getContext()));
     }
 
     @Override
@@ -129,7 +104,7 @@
         }
 
         // Skip early if, there no child laid out in the container.
-        int scrollY = getCurrentScrollY();
+        int scrollY = computeVerticalScrollOffset();
         if (scrollY < 0) {
             mScrollbar.setThumbOffsetY(-1);
             return;
@@ -138,67 +113,6 @@
         synchronizeScrollBarThumbOffsetToViewScroll(scrollY, getAvailableScrollHeight());
     }
 
-    @Override
-    public int getCurrentScrollY() {
-        // Skip early if widgets are not bound.
-        if (isModelNotReady() || getChildCount() == 0) {
-            return -1;
-        }
-
-        int rowIndex = -1;
-        View child = null;
-
-        LayoutManager layoutManager = getLayoutManager();
-        if (layoutManager instanceof LinearLayoutManager) {
-            // Use the LayoutManager as the source of truth for visible positions. During
-            // animations, the view group child may not correspond to the visible views that appear
-            // at the top.
-            rowIndex = ((LinearLayoutManager) layoutManager).findFirstVisibleItemPosition();
-            child = layoutManager.findViewByPosition(rowIndex);
-        }
-
-        if (child == null) {
-            // If the layout manager returns null for any reason, which can happen before layout
-            // has occurred for the position, then look at the child of this view as a ViewGroup.
-            child = getChildAt(0);
-            rowIndex = getChildPosition(child);
-        }
-
-        for (int i = 0; i < getChildCount(); i++) {
-            View view = getChildAt(i);
-            if (view instanceof TableLayout) {
-                // This assumes there is ever only one content shown in this recycler view.
-                mLastVisibleWidgetContentTableHeight = view.getMeasuredHeight();
-            } else if (view instanceof WidgetsListHeader
-                    && mWidgetHeaderHeight == 0
-                    && view.getMeasuredHeight() > 0) {
-                // This assumes all header views are of the same height.
-                mWidgetHeaderHeight = view.getMeasuredHeight();
-            } else if (view instanceof EmptySpaceView && view.getMeasuredHeight() > 0) {
-                mWidgetEmptySpaceHeight = view.getMeasuredHeight();
-            }
-        }
-
-        int scrollPosition = getItemsHeight(rowIndex);
-        int offset = getLayoutManager().getDecoratedTop(child);
-
-        return getPaddingTop() + scrollPosition - offset;
-    }
-
-    /**
-     * Returns the available scroll height, in pixel.
-     *
-     * <p>If the recycler view can't be scrolled, returns 0.
-     */
-    @Override
-    protected int getAvailableScrollHeight() {
-        // AvailableScrollHeight = Total height of the all items - first page height
-        int firstPageHeight = getMeasuredHeight() - getPaddingTop() - getPaddingBottom();
-        int totalHeightOfAllItems = getItemsHeight(/* untilIndex= */ mAdapter.getItemCount());
-        int availableScrollHeight = totalHeightOfAllItems - firstPageHeight;
-        return Math.max(0, availableScrollHeight);
-    }
-
     private boolean isModelNotReady() {
         return mAdapter.getItemCount() == 0;
     }
@@ -213,8 +127,7 @@
     @Override
     public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
         if (e.getAction() == MotionEvent.ACTION_DOWN) {
-            mTouchDownOnScroller =
-                    mScrollbar.isHitInParent(e.getX(), e.getY(), mFastScrollerOffset);
+            mTouchDownOnScroller = isHitOnScrollBar(e);
         }
         if (mTouchDownOnScroller) {
             final boolean result = mScrollbar.handleTouchEvent(e, mFastScrollerOffset);
@@ -230,6 +143,15 @@
         }
     }
 
+    /**
+     * Detects whether a {@code MotionEvent} is on the scroll bar
+     * @param e The {@code MotionEvent} on the screen
+     * @return {@code true} if the motion is on the scroll bar
+     */
+    boolean isHitOnScrollBar(MotionEvent e) {
+        return mScrollbar.isHitInParent(e.getX(), e.getY(), mFastScrollerOffset);
+    }
+
     @Override
     public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
     }
@@ -240,39 +162,6 @@
     }
 
     /**
-     * Returns the sum of the height, in pixels, of this list adapter's items from index 0 until
-     * {@code untilIndex}.
-     *
-     * <p>If the untilIndex is larger than the total number of items in this adapter, returns the
-     * sum of all items' height.
-     */
-    private int getItemsHeight(int untilIndex) {
-        if (untilIndex > mAdapter.getItems().size()) {
-            untilIndex = mAdapter.getItems().size();
-        }
-        int totalItemsHeight = 0;
-        for (int i = 0; i < untilIndex; i++) {
-            WidgetsListBaseEntry entry = mAdapter.getItems().get(i);
-            if (entry instanceof WidgetsListHeaderEntry
-                    || entry instanceof WidgetsListSearchHeaderEntry) {
-                totalItemsHeight += mWidgetHeaderHeight;
-                if (i > 0) {
-                    // Each header contains the spacing between entries as top decoration, except
-                    // the first one.
-                    totalItemsHeight += mSpacingBetweenEntries;
-                }
-            } else if (entry instanceof WidgetsListContentEntry) {
-                totalItemsHeight += mLastVisibleWidgetContentTableHeight;
-            } else if (entry instanceof WidgetListSpaceEntry) {
-                totalItemsHeight += mWidgetEmptySpaceHeight;
-            } else {
-                throw new UnsupportedOperationException("Can't estimate height for " + entry);
-            }
-        }
-        return totalItemsHeight;
-    }
-
-    /**
      * Provides dimensions of the header view that is shown at the top of a
      * {@link WidgetsRecyclerView}.
      */
diff --git a/src/com/android/launcher3/widget/picker/WidgetsRowViewHolder.java b/src/com/android/launcher3/widget/picker/WidgetsRowViewHolder.java
index fe2d84b..7411459 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsRowViewHolder.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsRowViewHolder.java
@@ -16,6 +16,7 @@
 package com.android.launcher3.widget.picker;
 
 import android.graphics.Bitmap;
+import android.util.Pair;
 import android.view.View;
 
 import androidx.recyclerview.widget.RecyclerView.ViewHolder;
@@ -25,16 +26,33 @@
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.function.Consumer;
 
 /** A {@link ViewHolder} for showing widgets of an app in the full widget picker. */
 public final class WidgetsRowViewHolder extends ViewHolder {
 
     public final WidgetsListTableView tableContainer;
     public final Map<WidgetItem, Bitmap> previewCache = new HashMap<>();
+    Consumer<Pair<WidgetItem, Bitmap>> mDataCallback;
 
     public WidgetsRowViewHolder(View v) {
         super(v);
 
         tableContainer = v.findViewById(R.id.widgets_table);
     }
+
+    /**
+     * When the preview is loaded we callback to notify that the preview loaded and we rebind the
+     * view.
+     *
+     * @param data is the payload which is needed when binding the view.
+     */
+    public void onPreviewLoaded(Pair<WidgetItem, Bitmap> data) {
+        if (mDataCallback != null) {
+            mDataCallback.accept(data);
+        }
+        if (getBindingAdapter() != null) {
+            getBindingAdapter().notifyItemChanged(getBindingAdapterPosition(), data);
+        }
+    }
 }
diff --git a/src/com/android/launcher3/widget/picker/WidgetsSpaceViewHolderBinder.java b/src/com/android/launcher3/widget/picker/WidgetsSpaceViewHolderBinder.java
index 1aa5753..0c4f7aa 100644
--- a/src/com/android/launcher3/widget/picker/WidgetsSpaceViewHolderBinder.java
+++ b/src/com/android/launcher3/widget/picker/WidgetsSpaceViewHolderBinder.java
@@ -15,16 +15,12 @@
  */
 package com.android.launcher3.widget.picker;
 
-import static android.view.View.MeasureSpec.EXACTLY;
-import static android.view.View.MeasureSpec.makeMeasureSpec;
-
-import android.content.Context;
-import android.view.View;
 import android.view.ViewGroup;
 
 import androidx.recyclerview.widget.RecyclerView.ViewHolder;
 
 import com.android.launcher3.recyclerview.ViewHolderBinder;
+import com.android.launcher3.views.StickyHeaderLayout.EmptySpaceView;
 import com.android.launcher3.widget.model.WidgetListSpaceEntry;
 
 import java.util.List;
@@ -52,64 +48,4 @@
             @ListPosition int position, List<Object> payloads) {
         ((EmptySpaceView) holder.itemView).setFixedHeight(mEmptySpaceHeightProvider.getAsInt());
     }
-
-    /**
-     * Empty view which allows listening for 'Y' changes
-     */
-    public static class EmptySpaceView extends View {
-
-        private Runnable mOnYChangeCallback;
-        private int mHeight = 0;
-
-        private EmptySpaceView(Context context) {
-            super(context);
-            animate().setUpdateListener(v -> notifyYChanged());
-        }
-
-        /**
-         * Sets the height for the empty view
-         * @return true if the height changed, false otherwise
-         */
-        public boolean setFixedHeight(int height) {
-            if (mHeight != height) {
-                mHeight = height;
-                requestLayout();
-                return true;
-            }
-            return false;
-        }
-
-        @Override
-        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-            super.onMeasure(widthMeasureSpec, makeMeasureSpec(mHeight, EXACTLY));
-        }
-
-        public void setOnYChangeCallback(Runnable callback) {
-            mOnYChangeCallback = callback;
-        }
-
-        @Override
-        protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
-            super.onLayout(changed, left, top, right, bottom);
-            notifyYChanged();
-        }
-
-        @Override
-        public void offsetTopAndBottom(int offset) {
-            super.offsetTopAndBottom(offset);
-            notifyYChanged();
-        }
-
-        @Override
-        public void setTranslationY(float translationY) {
-            super.setTranslationY(translationY);
-            notifyYChanged();
-        }
-
-        private void notifyYChanged() {
-            if (mOnYChangeCallback != null) {
-                mOnYChangeCallback.run();
-            }
-        }
-    }
 }
diff --git a/src/com/android/launcher3/widget/picker/WidgetsTwoPaneSheet.java b/src/com/android/launcher3/widget/picker/WidgetsTwoPaneSheet.java
new file mode 100644
index 0000000..d85737b
--- /dev/null
+++ b/src/com/android/launcher3/widget/picker/WidgetsTwoPaneSheet.java
@@ -0,0 +1,286 @@
+/*
+ * 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.launcher3.widget.picker;
+
+import android.content.Context;
+import android.graphics.Outline;
+import android.os.Process;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewOutlineProvider;
+import android.widget.LinearLayout;
+import android.widget.ScrollView;
+
+import androidx.annotation.NonNull;
+
+import com.android.launcher3.R;
+import com.android.launcher3.model.data.PackageItemInfo;
+import com.android.launcher3.recyclerview.ViewHolderBinder;
+import com.android.launcher3.util.PackageUserKey;
+import com.android.launcher3.widget.model.WidgetsListBaseEntry;
+import com.android.launcher3.widget.model.WidgetsListContentEntry;
+import com.android.launcher3.widget.model.WidgetsListHeaderEntry;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Popup for showing the full list of available widgets with a two-pane layout.
+ */
+public class WidgetsTwoPaneSheet extends WidgetsFullSheet {
+
+    private static final int PERSONAL_TAB = 0;
+    private static final int WORK_TAB = 1;
+    private static final String SUGGESTIONS_PACKAGE_NAME = "widgets_list_suggestions_entry";
+
+    private LinearLayout mSuggestedWidgetsContainer;
+    private WidgetsListHeader mSuggestedWidgetsHeader;
+    private LinearLayout mRightPane;
+
+    private ScrollView mRightPaneScrollView;
+    private WidgetsListTableViewHolderBinder mWidgetsListTableViewHolderBinder;
+    private int mActivePage = -1;
+
+    private final ViewOutlineProvider mViewOutlineProviderRightPane = new ViewOutlineProvider() {
+        @Override
+        public void getOutline(View view, Outline outline) {
+            outline.setRoundRect(
+                    0,
+                    0,
+                    view.getMeasuredWidth(),
+                    view.getMeasuredHeight() - getResources().getDimensionPixelSize(
+                            R.dimen.widget_list_horizontal_margin_two_pane),
+                    view.getResources().getDimensionPixelSize(
+                            R.dimen.widget_list_top_bottom_corner_radius)
+            );
+        }
+    };
+
+    public WidgetsTwoPaneSheet(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    public WidgetsTwoPaneSheet(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    @Override
+    protected void setupSheet() {
+        // Set the header change listener in the adapter
+        mAdapters.get(AdapterHolder.PRIMARY)
+                .mWidgetsListAdapter.setHeaderChangeListener(getHeaderChangeListener());
+        mAdapters.get(AdapterHolder.WORK)
+                .mWidgetsListAdapter.setHeaderChangeListener(getHeaderChangeListener());
+        mAdapters.get(AdapterHolder.SEARCH)
+                .mWidgetsListAdapter.setHeaderChangeListener(getHeaderChangeListener());
+
+        LayoutInflater layoutInflater = LayoutInflater.from(getContext());
+
+        int contentLayoutRes = mHasWorkProfile ? R.layout.widgets_two_pane_sheet_paged_view
+                : R.layout.widgets_two_pane_sheet_recyclerview;
+        layoutInflater.inflate(contentLayoutRes, findViewById(R.id.recycler_view_container), true);
+
+        setupViews();
+
+        mWidgetsListTableViewHolderBinder =
+                new WidgetsListTableViewHolderBinder(mActivityContext, layoutInflater, this, this);
+        mRecommendedWidgetsTable = mContent.findViewById(R.id.recommended_widget_table);
+        mRecommendedWidgetsTable.setWidgetCellLongClickListener(this);
+        mRecommendedWidgetsTable.setWidgetCellOnClickListener(this);
+        mHeaderTitle = mContent.findViewById(R.id.title);
+        mRightPane = mContent.findViewById(R.id.right_pane);
+        mRightPane.setOutlineProvider(mViewOutlineProviderRightPane);
+        mRightPaneScrollView = mContent.findViewById(R.id.right_pane_scroll_view);
+        mRightPaneScrollView.setOverScrollMode(View.OVER_SCROLL_NEVER);
+
+        onRecommendedWidgetsBound();
+        onWidgetsBound();
+        setUpEducationViewsIfNeeded();
+
+        // Set the fast scroller as not visible for two pane layout.
+        mFastScroller.setVisibility(GONE);
+    }
+
+    @Override
+    public void onRecommendedWidgetsBound() {
+        super.onRecommendedWidgetsBound();
+
+        if (mSuggestedWidgetsContainer == null && mHasRecommendedWidgets) {
+            setupSuggestedWidgets(LayoutInflater.from(getContext()));
+            mSuggestedWidgetsHeader.callOnClick();
+        }
+    }
+
+    private void setupSuggestedWidgets(LayoutInflater layoutInflater) {
+        // Add suggested widgets.
+        mSuggestedWidgetsContainer = mSearchScrollView.findViewById(R.id.suggestions_header);
+
+        // Inflate the suggestions header.
+        mSuggestedWidgetsHeader = (WidgetsListHeader) layoutInflater.inflate(
+                R.layout.widgets_list_row_header_two_pane,
+                mSuggestedWidgetsContainer,
+                false);
+        mSuggestedWidgetsHeader.setExpanded(true);
+
+        PackageItemInfo packageItemInfo = new PackageItemInfo(
+                /* packageName= */ SUGGESTIONS_PACKAGE_NAME,
+                Process.myUserHandle()) {
+            @Override
+            public boolean usingLowResIcon() {
+                return false;
+            }
+        };
+        packageItemInfo.title = getContext().getString(R.string.suggested_widgets_header_title);
+        WidgetsListHeaderEntry widgetsListHeaderEntry = WidgetsListHeaderEntry.create(
+                        packageItemInfo,
+                        getContext().getString(R.string.suggested_widgets_header_title),
+                        mActivityContext.getPopupDataProvider().getRecommendedWidgets())
+                .withWidgetListShown();
+
+        mSuggestedWidgetsHeader.applyFromItemInfoWithIcon(widgetsListHeaderEntry);
+        mSuggestedWidgetsHeader.setIcon(
+                getContext().getDrawable(R.drawable.widget_suggestions_icon));
+        mSuggestedWidgetsHeader.setOnClickListener(view -> {
+            mSuggestedWidgetsHeader.setExpanded(true);
+            resetExpandedHeaders();
+            mRightPane.removeAllViews();
+            mRightPane.addView(mRecommendedWidgetsTable);
+            mRightPaneScrollView.setScrollY(0);
+        });
+        mSuggestedWidgetsContainer.addView(mSuggestedWidgetsHeader);
+    }
+
+    @Override
+    protected float getMaxTableHeight(float noWidgetsViewHeight) {
+        return Float.MAX_VALUE;
+    }
+
+    @Override
+    public void onActivePageChanged(int currentActivePage) {
+        super.onActivePageChanged(currentActivePage);
+
+        // If active page didn't change then we don't want to update the header.
+        if (mActivePage == currentActivePage) {
+            return;
+        }
+
+        mActivePage = currentActivePage;
+
+        if (mSuggestedWidgetsHeader == null) {
+            mAdapters.get(currentActivePage).mWidgetsListAdapter.selectFirstHeaderEntry();
+            mAdapters.get(currentActivePage).mWidgetsRecyclerView.scrollToTop();
+        } else if (currentActivePage == PERSONAL_TAB || currentActivePage == WORK_TAB) {
+            mSuggestedWidgetsHeader.callOnClick();
+        }
+    }
+
+    @Override
+    protected void updateRecyclerViewVisibility(AdapterHolder adapterHolder) {
+        // The first item is always an empty space entry. Look for any more items.
+        boolean isWidgetAvailable = adapterHolder.mWidgetsListAdapter.hasVisibleEntries();
+
+        mRightPane.setVisibility(isWidgetAvailable ? VISIBLE : GONE);
+
+        super.updateRecyclerViewVisibility(adapterHolder);
+    }
+
+    @Override
+    public void onSearchResults(List<WidgetsListBaseEntry> entries) {
+        super.onSearchResults(entries);
+        mAdapters.get(AdapterHolder.SEARCH).mWidgetsListAdapter.selectFirstHeaderEntry();
+        mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView.scrollToTop();
+    }
+
+    @Override
+    protected boolean shouldScroll(MotionEvent ev) {
+        return getPopupContainer().isEventOverView(mRightPaneScrollView, ev)
+                ? mRightPaneScrollView.canScrollVertically(-1)
+                : super.shouldScroll(ev);
+    }
+
+    @Override
+    protected void setViewVisibilityBasedOnSearch(boolean isInSearchMode) {
+        super.setViewVisibilityBasedOnSearch(isInSearchMode);
+
+        if (mSuggestedWidgetsHeader != null && mSuggestedWidgetsContainer != null) {
+            if (!isInSearchMode) {
+                mSuggestedWidgetsContainer.setVisibility(VISIBLE);
+                mSuggestedWidgetsHeader.callOnClick();
+            } else {
+                mSuggestedWidgetsContainer.setVisibility(GONE);
+            }
+        } else if (!isInSearchMode) {
+            mAdapters.get(mActivePage).mWidgetsListAdapter.selectFirstHeaderEntry();
+        }
+
+    }
+
+    @Override
+    protected View getContentView() {
+        return mRightPane;
+    }
+
+    private HeaderChangeListener getHeaderChangeListener() {
+        return new HeaderChangeListener() {
+            @Override
+            public void onHeaderChanged(@NonNull PackageUserKey selectedHeader) {
+                WidgetsListContentEntry contentEntry = mActivityContext.getPopupDataProvider()
+                        .getSelectedAppWidgets(selectedHeader);
+
+                if (contentEntry == null || mRightPane == null) {
+                    return;
+                }
+
+                if (mSuggestedWidgetsHeader != null) {
+                    mSuggestedWidgetsHeader.setExpanded(false);
+                }
+                WidgetsRowViewHolder widgetsRowViewHolder =
+                        mWidgetsListTableViewHolderBinder.newViewHolder(mRightPane);
+                mWidgetsListTableViewHolderBinder.bindViewHolder(widgetsRowViewHolder,
+                        contentEntry,
+                        ViewHolderBinder.POSITION_FIRST | ViewHolderBinder.POSITION_LAST,
+                        Collections.EMPTY_LIST);
+                widgetsRowViewHolder.mDataCallback = data -> {
+                    mWidgetsListTableViewHolderBinder.bindViewHolder(widgetsRowViewHolder,
+                            contentEntry,
+                            ViewHolderBinder.POSITION_FIRST | ViewHolderBinder.POSITION_LAST,
+                            Collections.singletonList(data));
+                };
+                mRightPane.removeAllViews();
+                mRightPane.addView(widgetsRowViewHolder.itemView);
+                mRightPaneScrollView.setScrollY(0);
+            }
+        };
+    }
+
+    @Override
+    protected boolean isTwoPane() {
+        return true;
+    }
+
+    /**
+     * This is a listener for when the selected header gets changed in the left pane.
+     */
+    public interface HeaderChangeListener {
+        /**
+         * Sets the right pane to have the widgets for the currently selected header from
+         * the left pane.
+         */
+        void onHeaderChanged(@NonNull PackageUserKey selectedHeader);
+    }
+}
diff --git a/src/com/android/launcher3/widget/picker/search/SimpleWidgetsSearchAlgorithm.java b/src/com/android/launcher3/widget/picker/search/SimpleWidgetsSearchAlgorithm.java
index 9be3b5f..613066a 100644
--- a/src/com/android/launcher3/widget/picker/search/SimpleWidgetsSearchAlgorithm.java
+++ b/src/com/android/launcher3/widget/picker/search/SimpleWidgetsSearchAlgorithm.java
@@ -28,7 +28,6 @@
 import com.android.launcher3.widget.model.WidgetsListBaseEntry;
 import com.android.launcher3.widget.model.WidgetsListContentEntry;
 import com.android.launcher3.widget.model.WidgetsListHeaderEntry;
-import com.android.launcher3.widget.model.WidgetsListSearchHeaderEntry;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -72,7 +71,7 @@
                     List<WidgetItem> matchedWidgetItems = filterWidgetItems(
                             input, headerEntry.mPkgItem.title.toString(), headerEntry.mWidgets);
                     if (matchedWidgetItems.size() > 0) {
-                        results.add(new WidgetsListSearchHeaderEntry(headerEntry.mPkgItem,
+                        results.add(WidgetsListHeaderEntry.createForSearch(headerEntry.mPkgItem,
                                 headerEntry.mTitleSectionName, matchedWidgetItems));
                         results.add(new WidgetsListContentEntry(headerEntry.mPkgItem,
                                 headerEntry.mTitleSectionName, matchedWidgetItems));
diff --git a/src/com/android/launcher3/widget/util/WidgetSizes.java b/src/com/android/launcher3/widget/util/WidgetSizes.java
index fb2d63b..7049509 100644
--- a/src/com/android/launcher3/widget/util/WidgetSizes.java
+++ b/src/com/android/launcher3/widget/util/WidgetSizes.java
@@ -15,8 +15,6 @@
  */
 package com.android.launcher3.widget.util;
 
-import static android.appwidget.AppWidgetHostView.getDefaultPaddingForWidget;
-
 import android.appwidget.AppWidgetHostView;
 import android.appwidget.AppWidgetManager;
 import android.content.ComponentName;
@@ -24,11 +22,10 @@
 import android.graphics.Point;
 import android.graphics.Rect;
 import android.os.Bundle;
+import android.util.Log;
 import android.util.Size;
 import android.util.SizeF;
 
-import androidx.annotation.Nullable;
-
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.R;
@@ -42,24 +39,13 @@
 
     /**
      * Returns the list of all possible sizes, in dp, for a widget of given spans on this device.
-     *
-     * <p>The returned sizes already take into account the system padding, and whether it is applied
-     * or not in that specific configuration.
      */
-    public static ArrayList<SizeF> getWidgetPaddedSizes(Context context, ComponentName provider,
-            int spanX, int spanY) {
-        Rect padding = getDefaultPaddingForWidget(context, provider, /* padding= */ null);
-
+    public static ArrayList<SizeF> getWidgetSizesDp(Context context, int spanX, int spanY) {
         ArrayList<SizeF> sizes = new ArrayList<>(2);
         final float density = context.getResources().getDisplayMetrics().density;
-        final Point cellSize = new Point();
 
         for (DeviceProfile profile : LauncherAppState.getIDP(context).supportedProfiles) {
-            Size widgetSizePx = getWidgetSizePx(profile, spanX, spanY, cellSize);
-            if (!profile.shouldInsetWidgets()) {
-                widgetSizePx = new Size(widgetSizePx.getWidth() - padding.left - padding.right,
-                        widgetSizePx.getHeight() - padding.top - padding.bottom);
-            }
+            Size widgetSizePx = getWidgetSizePx(profile, spanX, spanY);
             sizes.add(new SizeF(widgetSizePx.getWidth() / density,
                     widgetSizePx.getHeight() / density));
         }
@@ -68,21 +54,15 @@
 
     /** Returns the size, in pixels, a widget of given spans & {@code profile}. */
     public static Size getWidgetSizePx(DeviceProfile profile, int spanX, int spanY) {
-        return getWidgetSizePx(profile, spanX, spanY, /* recycledCellSize= */ null);
-    }
+        final int hBorderSpacing = (spanX - 1) * profile.cellLayoutBorderSpacePx.x;
+        final int vBorderSpacing = (spanY - 1) * profile.cellLayoutBorderSpacePx.y;
 
-    /**
-     * Returns the size, in pixels and removing padding, a widget of given spans & {@code profile}.
-     */
-    public static Size getWidgetPaddedSizePx(Context context, ComponentName component,
-            DeviceProfile profile, int spanX, int spanY) {
-        Size size = getWidgetSizePx(profile, spanX, spanY);
-        if (profile.shouldInsetWidgets()) {
-            return size;
-        }
-        Rect padding = getDefaultPaddingForWidget(context, component, /* padding= */ null);
-        return new Size(size.getWidth() - padding.left - padding.right,
-                size.getHeight() - padding.top - padding.bottom);
+        Point cellSize = profile.getCellSize();
+        Rect padding = profile.widgetPadding;
+
+        return new Size(
+                (spanX * cellSize.x) + hBorderSpacing - padding.left - padding.right,
+                (spanY * cellSize.y) + vBorderSpacing - padding.top - padding.bottom);
     }
 
     /**
@@ -91,8 +71,7 @@
      * <p>This size is used by the widget picker. It should NEVER be shared with app widgets.
      *
      * <p>For sizes shared with app widgets, please refer to
-     * {@link #getWidgetPaddedSizes(Context, ComponentName, int, int)} &
-     * {@link #getWidgetPaddedSizePx(Context, ComponentName, DeviceProfile, int, int)}.
+     * {@link #getWidgetSizesDp(Context, int, int)} &
      */
     public static Size getWidgetItemSizePx(Context context, DeviceProfile profile,
             WidgetItem widgetItem) {
@@ -101,27 +80,7 @@
                     .getDimensionPixelSize(R.dimen.widget_preview_shortcut_padding);
             return new Size(dimension, dimension);
         }
-        Size widgetItemSize = getWidgetSizePx(profile, widgetItem.spanX,
-                widgetItem.spanY, /* recycledCellSize= */ null);
-        if (profile.shouldInsetWidgets()) {
-            Rect inset = new Rect();
-            AppWidgetHostView.getDefaultPaddingForWidget(context, widgetItem.componentName, inset);
-            return new Size(widgetItemSize.getWidth() + inset.left + inset.right,
-                    widgetItemSize.getHeight() + inset.top + inset.bottom);
-        }
-        return widgetItemSize;
-    }
-
-    private static Size getWidgetSizePx(DeviceProfile profile, int spanX, int spanY,
-            @Nullable Point recycledCellSize) {
-        final int hBorderSpacing = (spanX - 1) * profile.cellLayoutBorderSpacePx.x;
-        final int vBorderSpacing = (spanY - 1) * profile.cellLayoutBorderSpacePx.y;
-        if (recycledCellSize == null) {
-            recycledCellSize = new Point();
-        }
-        profile.getCellSize(recycledCellSize);
-        return new Size(((spanX * recycledCellSize.x) + hBorderSpacing),
-                ((spanY * recycledCellSize.y) + vBorderSpacing));
+        return getWidgetSizePx(profile, widgetItem.spanX, widgetItem.spanY);
     }
 
     /**
@@ -153,7 +112,7 @@
      */
     public static Bundle getWidgetSizeOptions(Context context, ComponentName provider, int spanX,
             int spanY) {
-        ArrayList<SizeF> paddedSizes = getWidgetPaddedSizes(context, provider, spanX, spanY);
+        ArrayList<SizeF> paddedSizes = getWidgetSizesDp(context, spanX, spanY);
 
         Rect rect = getMinMaxSizes(paddedSizes);
         Bundle options = new Bundle();
@@ -162,6 +121,8 @@
         options.putInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH, rect.right);
         options.putInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT, rect.bottom);
         options.putParcelableArrayList(AppWidgetManager.OPTION_APPWIDGET_SIZES, paddedSizes);
+        Log.d("b/267448330", "provider: " + provider + ", paddedSizes: " + paddedSizes
+                + ", getMinMaxSizes: " + rect);
         return options;
     }
 
diff --git a/src/com/android/launcher3/widget/util/WidgetsTableUtils.java b/src/com/android/launcher3/widget/util/WidgetsTableUtils.java
index 72e27bf..74d3062 100644
--- a/src/com/android/launcher3/widget/util/WidgetsTableUtils.java
+++ b/src/com/android/launcher3/widget/util/WidgetsTableUtils.java
@@ -15,6 +15,11 @@
  */
 package com.android.launcher3.widget.util;
 
+import android.content.Context;
+
+import androidx.annotation.Px;
+
+import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.model.WidgetItem;
 
 import java.util.ArrayList;
@@ -49,34 +54,41 @@
      * Groups {@code widgetItems} items into a 2D array which matches their appearance in a UI
      * table. This takes liberty to rearrange widgets to make the table visually appealing.
      */
-    public static List<ArrayList<WidgetItem>> groupWidgetItemsIntoTableWithReordering(
-            List<WidgetItem> widgetItems, final int maxSpansPerRow) {
+    public static List<ArrayList<WidgetItem>> groupWidgetItemsUsingRowPxWithReordering(
+            List<WidgetItem> widgetItems, Context context, final DeviceProfile dp,
+            final @Px int rowPx, final @Px int cellPadding) {
         List<WidgetItem> sortedWidgetItems = widgetItems.stream().sorted(WIDGET_SHORTCUT_COMPARATOR)
                 .collect(Collectors.toList());
-        return groupWidgetItemsIntoTableWithoutReordering(sortedWidgetItems, maxSpansPerRow);
+        return groupWidgetItemsUsingRowPxWithoutReordering(sortedWidgetItems, context, dp, rowPx,
+                cellPadding);
     }
 
     /**
      * Groups {@code widgetItems} into a 2D array which matches their appearance in a UI table while
-     * maintaining their order.
+     * maintaining their order. This function is a variant of
+     * {@code groupWidgetItemsIntoTableWithoutReordering} in that this uses widget pixels for
+     * calculation.
      *
      * <p>Grouping:
      * 1. Widgets and shortcuts never group together in the same row.
-     * 2. The ordered widgets are grouped together in the same row until their total horizontal
-     *    spans exceed the {@code maxSpansPerRow} - 1.
-     * 3. The order shortcuts are grouped together in the same row until their total horizontal
-     *    spans exceed the {@code maxSpansPerRow} - 1.
-     * 4. If there is only one widget in a row, its width may exceed the {@code maxSpansPerRow}.
+     * 2. The ordered widgets are grouped together in the same row until their individual occupying
+     *    pixels exceed the total allowed pixels for the cell.
+     * 3. The ordered shortcuts are grouped together in the same row until their individual
+     *    occupying pixels exceed the total allowed pixels for the cell.
+     * 4. If there is only one widget in a row, its width may exceed the {@code rowPx}.
      *
-     * <p>Let's say the {@code maxSpansPerRow} is set to 6. Widgets can be grouped in the same row
-     * if their total horizontal spans added don't exceed 5.
-     * Example 1: Row 1: 2x2, 2x3, 1x1. Total horizontal spans is 5. This is okay.
-     * Example 2: Row 1: 2x2, 4x3, 1x1. the total horizontal spans is 7. This is wrong. 4x3 and 1x1
-     * should be moved to a new row.
-     * Example 3: Row 1: 6x4. This is okay because this is the only item in the row.
+     * <p>Let's say the {@code rowPx} is set to 600 and we have 5 widgets. Widgets can be grouped
+     * in the same row if each of their individual occupying pixels does not exceed
+     * {@code rowPx} / 5 - 2 * {@code cellPadding}.
+     * Example 1: Row 1: 200x200, 200x300, 100x100. Average horizontal pixels is 200 and no widgets
+     * exceed that width. This is okay.
+     * Example 2: Row 1: 200x200, 400x300, 100x100. Average horizontal pixels is 200 and one widget
+     * exceed that width. This is not allowed.
+     * Example 3: Row 1: 700x400. This is okay because this is the only item in the row.
      */
-    public static List<ArrayList<WidgetItem>> groupWidgetItemsIntoTableWithoutReordering(
-            List<WidgetItem> widgetItems, final int maxSpansPerRow) {
+    public static List<ArrayList<WidgetItem>> groupWidgetItemsUsingRowPxWithoutReordering(
+            List<WidgetItem> widgetItems, Context context, final DeviceProfile dp,
+            final @Px int rowPx, final @Px int cellPadding) {
 
         List<ArrayList<WidgetItem>> widgetItemsTable = new ArrayList<>();
         ArrayList<WidgetItem> widgetItemsAtRow = null;
@@ -86,23 +98,28 @@
                 widgetItemsTable.add(widgetItemsAtRow);
             }
             int numOfWidgetItems = widgetItemsAtRow.size();
-            int totalHorizontalSpan = widgetItemsAtRow.stream().map(item -> item.spanX)
-                    .reduce(/* default= */ 0, Integer::sum);
-            int totalHorizontalSpanAfterAddingWidget = widgetItem.spanX + totalHorizontalSpan;
+            @Px int individualSpan = (rowPx / (numOfWidgetItems + 1)) - (2 * cellPadding);
             if (numOfWidgetItems == 0) {
                 widgetItemsAtRow.add(widgetItem);
             } else if (
-                    // The max spans per row is reduced by 1 to ensure we don't pack too many
-                    // 1xn widgets on the same row, which may reduce the space for rendering a
-                    // widget's description.
-                    totalHorizontalSpanAfterAddingWidget <= maxSpansPerRow - 1
-                            && widgetItem.hasSameType(widgetItemsAtRow.get(numOfWidgetItems - 1))) {
+                    // Since the size of the widget cell is determined by dividing the maximum span
+                    // pixels evenly, making sure that each widget would have enough span pixels to
+                    // show their contents.
+                    widgetItem.hasSameType(widgetItemsAtRow.get(numOfWidgetItems - 1))
+                    && widgetItemsAtRow.stream().allMatch(
+                            item -> WidgetSizes.getWidgetItemSizePx(context, dp, item)
+                                    .getWidth() <= individualSpan)
+                    && WidgetSizes.getWidgetItemSizePx(context, dp, widgetItem)
+                            .getWidth() <= individualSpan) {
                 // Group items in the same row if
                 // 1. they are with the same type, i.e. a row can only have widgets or shortcuts but
                 //    never a mix of both.
-                // 2. the total number of horizontal spans are smaller than or equal to
-                //    MAX_SPAN_PER_ROW. If an item has a horizontal span > MAX_SPAN_PER_ROW, we just
-                //    place it in its own row regardless of the horizontal span limit.
+                // 2. Each widget will have horizontal cell span pixels that is at least as large as
+                //    it is required to fit in the horizontal content, unless the widget horizontal
+                //    span pixels is larger than the maximum allowed.
+                //    If an item has horizontal span pixels larger than the maximum allowed pixels
+                //    per row, we just place it in its own row regardless of the horizontal span
+                //    limit.
                 widgetItemsAtRow.add(widgetItem);
             } else {
                 widgetItemsAtRow = new ArrayList<>();
diff --git a/src/com/android/launcher3/workprofile/PersonalWorkSlidingTabStrip.java b/src/com/android/launcher3/workprofile/PersonalWorkSlidingTabStrip.java
index 49db2a0..e94f3a0 100644
--- a/src/com/android/launcher3/workprofile/PersonalWorkSlidingTabStrip.java
+++ b/src/com/android/launcher3/workprofile/PersonalWorkSlidingTabStrip.java
@@ -16,6 +16,7 @@
 package com.android.launcher3.workprofile;
 
 import android.content.Context;
+import android.content.res.TypedArray;
 import android.util.AttributeSet;
 import android.widget.Button;
 import android.widget.LinearLayout;
@@ -24,6 +25,7 @@
 import androidx.annotation.Nullable;
 
 import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.R;
 import com.android.launcher3.pageindicators.PageIndicator;
 import com.android.launcher3.views.ActivityContext;
 
@@ -31,11 +33,17 @@
  * Supports two indicator colors, dedicated for personal and work tabs.
  */
 public class PersonalWorkSlidingTabStrip extends LinearLayout implements PageIndicator {
+    private final boolean mIsAlignOnIcon;
     private OnActivePageChangedListener mOnActivePageChangedListener;
     private int mLastActivePage = 0;
 
     public PersonalWorkSlidingTabStrip(@NonNull Context context, @Nullable AttributeSet attrs) {
         super(context, attrs);
+        TypedArray typedArray = context.obtainStyledAttributes(attrs,
+                R.styleable.PersonalWorkSlidingTabStrip);
+        mIsAlignOnIcon = typedArray.getBoolean(
+                R.styleable.PersonalWorkSlidingTabStrip_alignOnIcon, false);
+        typedArray.recycle();
     }
 
     /**
@@ -76,7 +84,7 @@
 
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-        if (getPaddingLeft() == 0 && getPaddingRight() == 0) {
+        if (mIsAlignOnIcon) {
             // If any padding is not specified, restrict the width to emulate padding
             int size = MeasureSpec.getSize(widthMeasureSpec);
             size = getTabWidth(getContext(), size);
diff --git a/src/com/android/launcher3/workspace/WorkspaceSpecs.kt b/src/com/android/launcher3/workspace/WorkspaceSpecs.kt
new file mode 100644
index 0000000..ac0a166
--- /dev/null
+++ b/src/com/android/launcher3/workspace/WorkspaceSpecs.kt
@@ -0,0 +1,323 @@
+/*
+ * 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.launcher3.workspace
+
+import android.content.res.TypedArray
+import android.content.res.XmlResourceParser
+import android.util.AttributeSet
+import android.util.Log
+import android.util.TypedValue
+import android.util.Xml
+import com.android.launcher3.R
+import com.android.launcher3.util.ResourceHelper
+import java.io.IOException
+import kotlin.math.roundToInt
+import org.xmlpull.v1.XmlPullParser
+import org.xmlpull.v1.XmlPullParserException
+
+private const val TAG = "WorkspaceSpecs"
+
+class WorkspaceSpecs(resourceHelper: ResourceHelper) {
+    object XmlTags {
+        const val WORKSPACE_SPECS = "workspaceSpecs"
+
+        const val WORKSPACE_SPEC = "workspaceSpec"
+        const val START_PADDING = "startPadding"
+        const val END_PADDING = "endPadding"
+        const val GUTTER = "gutter"
+        const val CELL_SIZE = "cellSize"
+    }
+
+    val workspaceHeightSpecList = mutableListOf<WorkspaceSpec>()
+    val workspaceWidthSpecList = mutableListOf<WorkspaceSpec>()
+
+    init {
+        try {
+            val parser: XmlResourceParser = resourceHelper.getXml()
+            val depth = parser.depth
+            var type: Int
+            while (
+                (parser.next().also { type = it } != XmlPullParser.END_TAG ||
+                    parser.depth > depth) && type != XmlPullParser.END_DOCUMENT
+            ) {
+                if (type == XmlPullParser.START_TAG && XmlTags.WORKSPACE_SPECS == parser.name) {
+                    val displayDepth = parser.depth
+                    while (
+                        (parser.next().also { type = it } != XmlPullParser.END_TAG ||
+                            parser.depth > displayDepth) && type != XmlPullParser.END_DOCUMENT
+                    ) {
+                        if (
+                            type == XmlPullParser.START_TAG && XmlTags.WORKSPACE_SPEC == parser.name
+                        ) {
+                            val attrs =
+                                resourceHelper.obtainStyledAttributes(
+                                    Xml.asAttributeSet(parser),
+                                    R.styleable.WorkspaceSpec
+                                )
+                            val maxAvailableSize =
+                                attrs.getDimensionPixelSize(
+                                    R.styleable.WorkspaceSpec_maxAvailableSize,
+                                    0
+                                )
+                            val specType =
+                                WorkspaceSpec.SpecType.values()[
+                                        attrs.getInt(
+                                            R.styleable.WorkspaceSpec_specType,
+                                            WorkspaceSpec.SpecType.HEIGHT.ordinal
+                                        )]
+                            attrs.recycle()
+
+                            var startPadding: SizeSpec? = null
+                            var endPadding: SizeSpec? = null
+                            var gutter: SizeSpec? = null
+                            var cellSize: SizeSpec? = null
+
+                            val limitDepth = parser.depth
+                            while (
+                                (parser.next().also { type = it } != XmlPullParser.END_TAG ||
+                                    parser.depth > limitDepth) && type != XmlPullParser.END_DOCUMENT
+                            ) {
+                                val attr: AttributeSet = Xml.asAttributeSet(parser)
+                                if (type == XmlPullParser.START_TAG) {
+                                    when (parser.name) {
+                                        XmlTags.START_PADDING -> {
+                                            startPadding = SizeSpec(resourceHelper, attr)
+                                        }
+                                        XmlTags.END_PADDING -> {
+                                            endPadding = SizeSpec(resourceHelper, attr)
+                                        }
+                                        XmlTags.GUTTER -> {
+                                            gutter = SizeSpec(resourceHelper, attr)
+                                        }
+                                        XmlTags.CELL_SIZE -> {
+                                            cellSize = SizeSpec(resourceHelper, attr)
+                                        }
+                                    }
+                                }
+                            }
+
+                            if (
+                                startPadding == null ||
+                                    endPadding == null ||
+                                    gutter == null ||
+                                    cellSize == null
+                            ) {
+                                throw IllegalStateException(
+                                    "All attributes in workspaceSpec must be defined"
+                                )
+                            }
+
+                            val workspaceSpec =
+                                WorkspaceSpec(
+                                    maxAvailableSize,
+                                    specType,
+                                    startPadding,
+                                    endPadding,
+                                    gutter,
+                                    cellSize
+                                )
+                            if (workspaceSpec.isValid()) {
+                                if (workspaceSpec.specType == WorkspaceSpec.SpecType.HEIGHT)
+                                    workspaceHeightSpecList.add(workspaceSpec)
+                                else workspaceWidthSpecList.add(workspaceSpec)
+                            } else {
+                                throw IllegalStateException("Invalid workspaceSpec found.")
+                            }
+                        }
+                    }
+
+                    if (workspaceWidthSpecList.isEmpty() || workspaceHeightSpecList.isEmpty()) {
+                        throw IllegalStateException(
+                            "WorkspaceSpecs is incomplete - " +
+                                "height list size = ${workspaceHeightSpecList.size}; " +
+                                "width list size = ${workspaceWidthSpecList.size}."
+                        )
+                    }
+                }
+            }
+            parser.close()
+        } catch (e: Exception) {
+            when (e) {
+                is IOException,
+                is XmlPullParserException -> {
+                    throw RuntimeException("Failure parsing workspaces specs file.", e)
+                }
+                else -> throw e
+            }
+        }
+    }
+
+    /**
+     * Returns the CalculatedWorkspaceSpec for width, based on the available width and the
+     * WorkspaceSpecs.
+     */
+    fun getCalculatedWidthSpec(columns: Int, availableWidth: Int): CalculatedWorkspaceSpec {
+        val widthSpec = workspaceWidthSpecList.first { availableWidth <= it.maxAvailableSize }
+
+        return CalculatedWorkspaceSpec(availableWidth, columns, widthSpec)
+    }
+
+    /**
+     * Returns the CalculatedWorkspaceSpec for height, based on the available height and the
+     * WorkspaceSpecs.
+     */
+    fun getCalculatedHeightSpec(rows: Int, availableHeight: Int): CalculatedWorkspaceSpec {
+        val heightSpec = workspaceHeightSpecList.first { availableHeight <= it.maxAvailableSize }
+
+        return CalculatedWorkspaceSpec(availableHeight, rows, heightSpec)
+    }
+}
+
+class CalculatedWorkspaceSpec(
+    val availableSpace: Int,
+    val cells: Int,
+    val workspaceSpec: WorkspaceSpec
+) {
+    var startPaddingPx: Int = 0
+        private set
+    var endPaddingPx: Int = 0
+        private set
+    var gutterPx: Int = 0
+        private set
+    var cellSizePx: Int = 0
+        private set
+    init {
+        // Calculate all fixed size first
+        if (workspaceSpec.startPadding.fixedSize > 0)
+            startPaddingPx = workspaceSpec.startPadding.fixedSize.roundToInt()
+        if (workspaceSpec.endPadding.fixedSize > 0)
+            endPaddingPx = workspaceSpec.endPadding.fixedSize.roundToInt()
+        if (workspaceSpec.gutter.fixedSize > 0)
+            gutterPx = workspaceSpec.gutter.fixedSize.roundToInt()
+        if (workspaceSpec.cellSize.fixedSize > 0)
+            cellSizePx = workspaceSpec.cellSize.fixedSize.roundToInt()
+
+        // Calculate all available space next
+        if (workspaceSpec.startPadding.ofAvailableSpace > 0)
+            startPaddingPx =
+                (workspaceSpec.startPadding.ofAvailableSpace * availableSpace).roundToInt()
+        if (workspaceSpec.endPadding.ofAvailableSpace > 0)
+            endPaddingPx = (workspaceSpec.endPadding.ofAvailableSpace * availableSpace).roundToInt()
+        if (workspaceSpec.gutter.ofAvailableSpace > 0)
+            gutterPx = (workspaceSpec.gutter.ofAvailableSpace * availableSpace).roundToInt()
+        if (workspaceSpec.cellSize.ofAvailableSpace > 0)
+            cellSizePx = (workspaceSpec.cellSize.ofAvailableSpace * availableSpace).roundToInt()
+
+        // Calculate remainder space last
+        val gutters = cells - 1
+        val usedSpace = startPaddingPx + endPaddingPx + (gutterPx * gutters) + (cellSizePx * cells)
+        val remainderSpace = availableSpace - usedSpace
+        if (workspaceSpec.startPadding.ofRemainderSpace > 0)
+            startPaddingPx =
+                (workspaceSpec.startPadding.ofRemainderSpace * remainderSpace).roundToInt()
+        if (workspaceSpec.endPadding.ofRemainderSpace > 0)
+            endPaddingPx = (workspaceSpec.endPadding.ofRemainderSpace * remainderSpace).roundToInt()
+        if (workspaceSpec.gutter.ofRemainderSpace > 0)
+            gutterPx = (workspaceSpec.gutter.ofRemainderSpace * remainderSpace).roundToInt()
+        if (workspaceSpec.cellSize.ofRemainderSpace > 0)
+            cellSizePx = (workspaceSpec.cellSize.ofRemainderSpace * remainderSpace).roundToInt()
+    }
+}
+
+data class WorkspaceSpec(
+    val maxAvailableSize: Int,
+    val specType: SpecType,
+    val startPadding: SizeSpec,
+    val endPadding: SizeSpec,
+    val gutter: SizeSpec,
+    val cellSize: SizeSpec
+) {
+
+    enum class SpecType {
+        HEIGHT,
+        WIDTH
+    }
+
+    fun isValid(): Boolean {
+        if (maxAvailableSize <= 0) {
+            Log.e(TAG, "WorkspaceSpec#isValid - maxAvailableSize <= 0")
+            return false
+        }
+
+        // All specs need to be individually valid
+        if (!allSpecsAreValid()) {
+            Log.e(TAG, "WorkspaceSpec#isValid - !allSpecsAreValid()")
+            return false
+        }
+
+        return true
+    }
+
+    private fun allSpecsAreValid(): Boolean =
+        startPadding.isValid() && endPadding.isValid() && gutter.isValid() && cellSize.isValid()
+}
+
+class SizeSpec(resourceHelper: ResourceHelper, attrs: AttributeSet) {
+    val fixedSize: Float
+    val ofAvailableSpace: Float
+    val ofRemainderSpace: Float
+
+    init {
+        val styledAttrs = resourceHelper.obtainStyledAttributes(attrs, R.styleable.SpecSize)
+
+        fixedSize = getValue(styledAttrs, R.styleable.SpecSize_fixedSize)
+        ofAvailableSpace = getValue(styledAttrs, R.styleable.SpecSize_ofAvailableSpace)
+        ofRemainderSpace = getValue(styledAttrs, R.styleable.SpecSize_ofRemainderSpace)
+
+        styledAttrs.recycle()
+    }
+
+    private fun getValue(a: TypedArray, index: Int): Float {
+        if (a.getType(index) == TypedValue.TYPE_DIMENSION) {
+            return a.getDimensionPixelSize(index, 0).toFloat()
+        } else if (a.getType(index) == TypedValue.TYPE_FLOAT) {
+            return a.getFloat(index, 0f)
+        }
+        return 0f
+    }
+
+    fun isValid(): Boolean {
+        // All attributes are empty
+        if (fixedSize < 0f && ofAvailableSpace <= 0f && ofRemainderSpace <= 0f) {
+            Log.e(TAG, "SizeSpec#isValid - all attributes are empty")
+            return false
+        }
+
+        // More than one attribute is filled
+        val attrCount =
+            (if (fixedSize > 0) 1 else 0) +
+                (if (ofAvailableSpace > 0) 1 else 0) +
+                (if (ofRemainderSpace > 0) 1 else 0)
+        if (attrCount > 1) {
+            Log.e(TAG, "SizeSpec#isValid - more than one attribute is filled")
+            return false
+        }
+
+        // Values should be between 0 and 1
+        if (ofAvailableSpace !in 0f..1f || ofRemainderSpace !in 0f..1f) {
+            Log.e(TAG, "SizeSpec#isValid - values should be between 0 and 1")
+            return false
+        }
+
+        return true
+    }
+
+    override fun toString(): String {
+        return "SizeSpec(fixedSize=$fixedSize, ofAvailableSpace=$ofAvailableSpace, " +
+            "ofRemainderSpace=$ofRemainderSpace)"
+    }
+}
diff --git a/src_build_config/com/android/launcher3/BuildConfig.java b/src_build_config/com/android/launcher3/BuildConfig.java
index 9a81d3f..1f2e0e5 100644
--- a/src_build_config/com/android/launcher3/BuildConfig.java
+++ b/src_build_config/com/android/launcher3/BuildConfig.java
@@ -18,10 +18,16 @@
 
 public final class BuildConfig {
     public static final String APPLICATION_ID = "com.android.launcher3";
-    public static final boolean DEBUG = false;
+
+    public static final boolean IS_STUDIO_BUILD = false;
     /**
      * Flag to state if the QSB is on the first screen and placed on the top,
      * this can be overwritten in other launchers with a different value, if needed.
      */
     public static final boolean QSB_ON_FIRST_SCREEN = true;
+
+    /**
+     * Flag to control various developer centric features
+     */
+    public static final boolean IS_DEBUG_DEVICE = false;
 }
diff --git a/src_plugins/com/android/systemui/plugins/shared/LauncherExterns.java b/src_plugins/com/android/systemui/plugins/shared/LauncherExterns.java
index 13e4999..173b454 100644
--- a/src_plugins/com/android/systemui/plugins/shared/LauncherExterns.java
+++ b/src_plugins/com/android/systemui/plugins/shared/LauncherExterns.java
@@ -40,10 +40,4 @@
      * Sets the overlay on the target activity
      */
     void setLauncherOverlay(LauncherOverlay overlay);
-
-    /**
-     * Executes the command, next time the overlay is hidden
-     */
-    void runOnOverlayHidden(Runnable runnable);
-
 }
diff --git a/src_plugins/com/android/systemui/plugins/shared/LauncherOverlayManager.java b/src_plugins/com/android/systemui/plugins/shared/LauncherOverlayManager.java
index ac02ba4..582ab23 100644
--- a/src_plugins/com/android/systemui/plugins/shared/LauncherOverlayManager.java
+++ b/src_plugins/com/android/systemui/plugins/shared/LauncherOverlayManager.java
@@ -93,6 +93,6 @@
 
     interface LauncherOverlayCallbacks {
 
-        void onScrollChanged(float progress);
+        void onOverlayScrollChanged(float progress);
     }
 }
diff --git a/src_shortcuts_overrides/com/android/launcher3/model/LoaderResults.java b/src_shortcuts_overrides/com/android/launcher3/model/LauncherBinder.java
similarity index 88%
rename from src_shortcuts_overrides/com/android/launcher3/model/LoaderResults.java
rename to src_shortcuts_overrides/com/android/launcher3/model/LauncherBinder.java
index abce2a2..e1a5f24 100644
--- a/src_shortcuts_overrides/com/android/launcher3/model/LoaderResults.java
+++ b/src_shortcuts_overrides/com/android/launcher3/model/LauncherBinder.java
@@ -27,11 +27,11 @@
 import java.util.List;
 
 /**
- * Helper class to handle results of {@link com.android.launcher3.model.LoaderTask}.
+ * Binds the results of {@link com.android.launcher3.model.LoaderTask} to the Callbacks objects.
  */
-public class LoaderResults extends BaseLoaderResults {
+public class LauncherBinder extends BaseLauncherBinder {
 
-    public LoaderResults(LauncherAppState app, BgDataModel dataModel,
+    public LauncherBinder(LauncherAppState app, BgDataModel dataModel,
             AllAppsList allAppsList, Callbacks[] callbacks) {
         super(app, dataModel, allAppsList, callbacks, MAIN_EXECUTOR);
     }
diff --git a/src_shortcuts_overrides/com/android/launcher3/model/WidgetsModel.java b/src_shortcuts_overrides/com/android/launcher3/model/WidgetsModel.java
index 702f343..2f16065 100644
--- a/src_shortcuts_overrides/com/android/launcher3/model/WidgetsModel.java
+++ b/src_shortcuts_overrides/com/android/launcher3/model/WidgetsModel.java
@@ -40,7 +40,6 @@
 import com.android.launcher3.widget.model.WidgetsListBaseEntry;
 import com.android.launcher3.widget.model.WidgetsListContentEntry;
 import com.android.launcher3.widget.model.WidgetsListHeaderEntry;
-import com.android.launcher3.widget.picker.WidgetsDiffReporter;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -73,8 +72,7 @@
     /**
      * Returns a list of {@link WidgetsListBaseEntry}. All {@link WidgetItem} in a single row
      * are sorted (based on label and user), but the overall list of
-     * {@link WidgetsListBaseEntry}s is not sorted. This list is sorted at the UI when using
-     * {@link WidgetsDiffReporter}
+     * {@link WidgetsListBaseEntry}s is not sorted.
      *
      * @see com.android.launcher3.widget.picker.WidgetsListAdapter#setWidgets(List)
      */
@@ -87,7 +85,7 @@
             List<WidgetItem> widgetItems = entry.getValue();
             String sectionName = (pkgItem.title == null) ? "" :
                     indexer.computeSectionName(pkgItem.title);
-            result.add(new WidgetsListHeaderEntry(pkgItem, sectionName, widgetItems));
+            result.add(WidgetsListHeaderEntry.create(pkgItem, sectionName, widgetItems));
             result.add(new WidgetsListContentEntry(pkgItem, sectionName, widgetItems));
         }
         return result;
@@ -131,7 +129,7 @@
                         LauncherAppWidgetProviderInfo.fromProviderInfo(context, widgetInfo);
 
                 widgetsAndShortcuts.add(new WidgetItem(
-                        launcherWidgetInfo, idp, app.getIconCache()));
+                        launcherWidgetInfo, idp, app.getIconCache(), app.getContext()));
                 updatedItems.add(launcherWidgetInfo);
             }
 
@@ -202,7 +200,8 @@
                                     app.getContext().getPackageManager()));
                         } else {
                             items.set(i, new WidgetItem(item.widgetInfo,
-                                    app.getInvariantDeviceProfile(), app.getIconCache()));
+                                    app.getInvariantDeviceProfile(), app.getIconCache(),
+                                    app.getContext()));
                         }
                     }
                 }
diff --git a/src_ui_overrides/com/android/launcher3/uioverrides/ApiWrapper.java b/src_ui_overrides/com/android/launcher3/uioverrides/ApiWrapper.java
index 6715749..d6b41c9 100644
--- a/src_ui_overrides/com/android/launcher3/uioverrides/ApiWrapper.java
+++ b/src_ui_overrides/com/android/launcher3/uioverrides/ApiWrapper.java
@@ -18,10 +18,17 @@
 
 import android.app.Person;
 import android.content.Context;
+import android.content.pm.LauncherActivityInfo;
 import android.content.pm.ShortcutInfo;
 
 import com.android.launcher3.Utilities;
 
+import java.util.Collections;
+import java.util.Map;
+
+/**
+ * A wrapper for the hidden API calls
+ */
 public class ApiWrapper {
 
     public static final boolean TASKBAR_DRAWN_IN_PROCESS = false;
@@ -30,10 +37,7 @@
         return Utilities.EMPTY_PERSON_ARRAY;
     }
 
-    /**
-     * Returns the minimum space that should be left empty at the end of hotseat
-     */
-    public static int getHotseatEndOffset(Context context) {
-        return 0;
+    public static Map<String, LauncherActivityInfo> getActivityOverrides(Context context) {
+        return Collections.emptyMap();
     }
 }
diff --git a/src_ui_overrides/com/android/launcher3/uioverrides/DeviceFlag.java b/src_ui_overrides/com/android/launcher3/uioverrides/flags/DeveloperOptionsFragment.java
similarity index 62%
copy from src_ui_overrides/com/android/launcher3/uioverrides/DeviceFlag.java
copy to src_ui_overrides/com/android/launcher3/uioverrides/flags/DeveloperOptionsFragment.java
index 5c1ac28..68843f2 100644
--- a/src_ui_overrides/com/android/launcher3/uioverrides/DeviceFlag.java
+++ b/src_ui_overrides/com/android/launcher3/uioverrides/flags/DeveloperOptionsFragment.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * 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.
@@ -13,14 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package com.android.launcher3.uioverrides.flags;
 
-package com.android.launcher3.uioverrides;
-
-import com.android.launcher3.config.FeatureFlags.DebugFlag;
-
-public class DeviceFlag extends DebugFlag {
-
-    public DeviceFlag(String key, boolean defaultValue, String description) {
-        super(key, defaultValue, description);
-    }
+/**
+ * Place holder class for developer options.
+ */
+public class DeveloperOptionsFragment {
 }
diff --git a/src_ui_overrides/com/android/launcher3/uioverrides/flags/FlagsFactory.java b/src_ui_overrides/com/android/launcher3/uioverrides/flags/FlagsFactory.java
new file mode 100644
index 0000000..eb0494e
--- /dev/null
+++ b/src_ui_overrides/com/android/launcher3/uioverrides/flags/FlagsFactory.java
@@ -0,0 +1,61 @@
+/*
+ * 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.launcher3.uioverrides.flags;
+
+import static com.android.launcher3.config.FeatureFlags.FlagState.ENABLED;
+
+import com.android.launcher3.config.FeatureFlags.BooleanFlag;
+import com.android.launcher3.config.FeatureFlags.FlagState;
+import com.android.launcher3.config.FeatureFlags.IntFlag;
+
+import java.io.PrintWriter;
+
+/**
+ * Helper class to create various flags for launcher build. The base implementation does
+ * not provide any flagging system, and simply replies with the default value.
+ */
+public class FlagsFactory {
+
+    /**
+     * Creates a new debug flag
+     */
+    public static BooleanFlag getDebugFlag(
+            int bugId, String key, FlagState flagState, String description) {
+        return new BooleanFlag(flagState == ENABLED);
+    }
+
+    /**
+     * Creates a new debug flag
+     */
+    public static BooleanFlag getReleaseFlag(
+            int bugId, String key, FlagState flagState, String description) {
+        return new BooleanFlag(flagState == ENABLED);
+    }
+
+    /**
+     * Creates a new integer flag. Integer flags are always release flags
+     */
+    public static IntFlag getIntFlag(
+            int bugId, String key, int defaultValueInCode, String description) {
+        return new IntFlag(defaultValueInCode);
+    }
+
+    /**
+     * Dumps the current flags state to the print writer
+     */
+    public static void dump(PrintWriter pw) { }
+}
diff --git a/src_ui_overrides/com/android/launcher3/uioverrides/states/AllAppsState.java b/src_ui_overrides/com/android/launcher3/uioverrides/states/AllAppsState.java
index bf35dd8..772a995 100644
--- a/src_ui_overrides/com/android/launcher3/uioverrides/states/AllAppsState.java
+++ b/src_ui_overrides/com/android/launcher3/uioverrides/states/AllAppsState.java
@@ -20,11 +20,11 @@
 
 import android.content.Context;
 
-import com.android.launcher3.DeviceProfile.DeviceProfileListenable;
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherState;
 import com.android.launcher3.R;
 import com.android.launcher3.util.Themes;
+import com.android.launcher3.views.ActivityContext;
 
 /**
  * Definition for AllApps state
@@ -32,7 +32,6 @@
 public class AllAppsState extends LauncherState {
 
     private static final float PARALLAX_COEFFICIENT = .125f;
-    private static final float WORKSPACE_SCALE_FACTOR = 0.97f;
 
     private static final int STATE_FLAGS = FLAG_WORKSPACE_INACCESSIBLE;
 
@@ -41,11 +40,11 @@
     }
 
     @Override
-    public <DEVICE_PROFILE_CONTEXT extends Context & DeviceProfileListenable>
+    public <DEVICE_PROFILE_CONTEXT extends Context & ActivityContext>
     int getTransitionDuration(DEVICE_PROFILE_CONTEXT context, boolean isToState) {
-        return !context.getDeviceProfile().isTablet && isToState
-                ? 600
-                : isToState ? 500 : 300;
+        return isToState
+                ? context.getDeviceProfile().allAppsOpenDuration
+                : context.getDeviceProfile().allAppsCloseDuration;
     }
 
     @Override
@@ -60,7 +59,8 @@
 
     @Override
     public ScaleAndTranslation getWorkspaceScaleAndTranslation(Launcher launcher) {
-        return new ScaleAndTranslation(WORKSPACE_SCALE_FACTOR, NO_OFFSET, NO_OFFSET);
+        return new ScaleAndTranslation(launcher.getDeviceProfile().workspaceContentScale, NO_OFFSET,
+                NO_OFFSET);
     }
 
     @Override
@@ -71,7 +71,7 @@
             ScaleAndTranslation overviewScaleAndTranslation = LauncherState.OVERVIEW
                     .getWorkspaceScaleAndTranslation(launcher);
             return new ScaleAndTranslation(
-                    WORKSPACE_SCALE_FACTOR,
+                    launcher.getDeviceProfile().workspaceContentScale,
                     overviewScaleAndTranslation.translationX,
                     overviewScaleAndTranslation.translationY);
         }
diff --git a/tests/Android.bp b/tests/Android.bp
index 54cded0..e7f4084 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -24,6 +24,18 @@
       "src/**/*.java",
       "src/**/*.kt"
     ],
+    exclude_srcs: [
+        ":launcher-non-quickstep-tests-src"
+    ],
+}
+
+// Source code used for non-quickstep tests
+filegroup {
+    name: "launcher-non-quickstep-tests-src",
+    srcs: [
+       "src/com/android/launcher3/nonquickstep/**/*.java",
+       "src/com/android/launcher3/nonquickstep/**/*.kt",
+    ],
 }
 
 // Source code used for oop test helpers
@@ -32,22 +44,26 @@
     srcs: [
       "src/com/android/launcher3/ui/AbstractLauncherUiTest.java",
       "src/com/android/launcher3/ui/PortraitLandscapeRunner.java",
+      "src/com/android/launcher3/ui/TaplTestsLauncher3.java",
+      "src/com/android/launcher3/util/LauncherLayoutBuilder.java",
       "src/com/android/launcher3/util/TestUtil.java",
       "src/com/android/launcher3/util/Wait.java",
       "src/com/android/launcher3/util/WidgetUtils.java",
       "src/com/android/launcher3/util/rule/FailureWatcher.java",
       "src/com/android/launcher3/util/rule/LauncherActivityRule.java",
+      "src/com/android/launcher3/util/rule/ViewCaptureRule.kt",
       "src/com/android/launcher3/util/rule/SamplerRule.java",
       "src/com/android/launcher3/util/rule/ScreenRecordRule.java",
       "src/com/android/launcher3/util/rule/ShellCommandRule.java",
       "src/com/android/launcher3/util/rule/SimpleActivityRule.java",
       "src/com/android/launcher3/util/rule/TestStabilityRule.java",
-      "src/com/android/launcher3/ui/TaplTestsLauncher3.java",
+      "src/com/android/launcher3/util/rule/TISBindRule.java",
       "src/com/android/launcher3/testcomponent/BaseTestingActivity.java",
       "src/com/android/launcher3/testcomponent/OtherBaseTestingActivity.java",
       "src/com/android/launcher3/testcomponent/CustomShortcutConfigActivity.java",
       "src/com/android/launcher3/testcomponent/TestCommandReceiver.java",
       "src/com/android/launcher3/testcomponent/TestLauncherActivity.java",
+      "src/com/android/launcher3/testcomponent/ImeTestActivity.java",
     ],
 }
 
@@ -55,6 +71,7 @@
 android_library {
     name: "Launcher3TestLib",
     srcs: [ ],
+    asset_dirs: ["assets"],
     resource_dirs: ["res"],
     static_libs: [
         "launcher-aosp-tapl",
@@ -84,6 +101,7 @@
     name: "Launcher3Tests",
     srcs: [
         ":launcher-tests-src",
+        ":launcher-non-quickstep-tests-src",
     ],
     static_libs: ["Launcher3TestLib"],
     libs: [
@@ -101,5 +119,18 @@
     manifest: "AndroidManifest.xml",
     platform_apis: true,
     test_config: "Launcher3Tests.xml",
-    data: [":Launcher3"]
+    data: [":Launcher3"],
+    test_suites: ["general-tests"],
 }
+
+// Shared between tests and launcher
+android_library {
+    name: "launcher-testing-shared",
+    srcs: [
+        "shared/com/android/launcher3/testing/shared/**/*.java"
+    ],
+    resource_dirs: [ ],
+    manifest: "shared/AndroidManifest.xml",
+    sdk_version: "current",
+    min_sdk_version: min_launcher3_sdk_version,
+ }
diff --git a/tests/AndroidManifest-common.xml b/tests/AndroidManifest-common.xml
index 9cc3aed..b170061 100644
--- a/tests/AndroidManifest-common.xml
+++ b/tests/AndroidManifest-common.xml
@@ -24,6 +24,7 @@
     <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/>
     <uses-permission android:name="android.permission.READ_LOGS"/>
     <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
+    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
 
     <application android:debuggable="true" android:extractNativeLibs="true">
         <uses-library android:name="android.test.runner"/>
@@ -62,6 +63,17 @@
         </receiver>
 
         <receiver
+            android:name="com.android.launcher3.testcomponent.AppWidgetWithDialog"
+            android:exported="true"
+            android:label="With Dialog">
+            <intent-filter>
+                <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
+            </intent-filter>
+            <meta-data android:name="android.appwidget.provider"
+                android:resource="@xml/appwidget_no_config"/>
+        </receiver>
+
+        <receiver
             android:name="com.android.launcher3.testcomponent.AppWidgetDynamicColors"
             android:exported="true"
             android:label="Dynamic Colors">
@@ -268,7 +280,7 @@
             </intent-filter>
         </activity-alias>
         <activity-alias android:name="Activity15" android:exported="true"
-            android:label="ThemeIconTestActivity"
+            android:label="IconThemedActivity"
             android:icon="@drawable/test_theme_icon"
             android:targetActivity="com.android.launcher3.testcomponent.OtherBaseTestingActivity">
             <intent-filter>
@@ -276,6 +288,26 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity-alias>
+        <activity
+            android:name="com.android.launcher3.testcomponent.DialogTestActivity"
+            android:label="Dialog Activity"
+            android:theme="@android:style/Theme.Dialog"
+            android:exported="true"
+            android:taskAffinity="com.android.launcher3.testcomponent.Affinity2">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
+            </intent-filter>
+        </activity>
+        <activity android:name="com.android.launcher3.testcomponent.ImeTestActivity"
+            android:label="ImeTestActivity"
+            android:icon="@drawable/test_theme_icon"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
 
         <!-- [b/197780098] Disable eager initialization of Jetpack libraries. -->
         <provider
diff --git a/tests/OWNERS b/tests/OWNERS
index 02e8ebc..6b8643c 100644
--- a/tests/OWNERS
+++ b/tests/OWNERS
@@ -1,3 +1,4 @@
+# Bug component: 164335
 vadimt@google.com
 sunnygoyal@google.com
 winsonc@google.com
diff --git a/tests/assets/ReorderAlgorithmUnitTest/reorder_algorithm_test_cases b/tests/assets/ReorderAlgorithmUnitTest/reorder_algorithm_test_cases
new file mode 100644
index 0000000..6f92d6c
--- /dev/null
+++ b/tests/assets/ReorderAlgorithmUnitTest/reorder_algorithm_test_cases
@@ -0,0 +1,1804 @@
+###################################################################################################
+# This file contains test case composed of the following tags:
+#     * # (coments): Lines starting with this character would be ignored.
+#     * arguments: is set of words separated by spaces that can later be parsed
+#     * board: represent a workspace, the first line is the dimensions of the board width x height (wxh)
+# There are different characters on the board that represent different things:
+#     * x: The x character represents spaces that would be ignored, for example it can be used in
+#          the first row if we don't know how wide the smartspace is.
+#     * i: Represents an icon on the workspace, none in particular just an icon
+#     * [a-z]: Represents a widget and it can be any number or character
+#          except any other already in use. The whole continuos are of the same character is the
+#          area of the widget.
+#     * [A-Z]: Represents a folder and number of icons in the folder is represented by the order of
+#          letter in the alphabet, A=2, B=3, C=4 ... etc.
+#
+# The "arguments:" tag represents where you want to add an item, the format is:
+#   "x y spanX spanY minSpanX minSpanY type<widget/icon/folder> ifSolutionIsPossible<valid/invalid>"
+#
+# Test are parsed by CellLayoutTestCaseReader.java and boards are parsed by CellLayoutBoard.java
+###################################################################################################
+# Test 0
+board: 7x10
+-----de
+-----de
+-----di
+-----ii
+-----ii
+-----ci
+-----ci
+-----ii
+aaaaaai
+iibbbbi
+# This represents where you want to add an item, the format is "x y spanX spanY minSpanX minSpanY type<widget/icon/folder> ifSolutionIsPossible<valid/invalid>"
+arguments: 1 3 5 4 4 1 widget valid
+board: 7x10
+-----cb
+-----cb
+-----ci
+izzzzzi
+izzzzzi
+azzzzzi
+azzzzzi
+-----ii
+ddddddi
+iieeeei
+# Test 1
+board: 9x10
+aaaaaaaai
+i-----hhj
+c-----hhj
+c-----hhi
+c-----iii
+i-----iii
+beddddddi
+befffffii
+iifffffii
+iiggggggi
+arguments: 3 3 4 6 1 2 widget valid
+board: 9x10
+ggggggggi
+i-zzzzffe
+h-zzzzffe
+h-zzzzffi
+h-zzzziii
+i-zzzziii
+dcbbbbbbi
+dcaaaaaii
+iiaaaaaii
+iijjjjjji
+# Test 2
+board: 7x6
+aiii--f
+acci--f
+addi--f
+iebi--i
+iebiiii
+iiiiiii
+arguments: 1 1 1 1 1 1 icon valid
+board: 7x6
+aiii--f
+azeei-f
+abbi--f
+icdi--i
+icdiiii
+iiiiiii
+# Test 3
+board: 4x10
+-ibg
+-ibg
+-ibi
+-idf
+-cdf
+-cdi
+-cei
+-cei
+-iii
+aaai
+arguments: 2 1 1 5 1 1 widget valid
+board: 4x10
+if-c
+ifzc
+ifzi
+igzb
+egzb
+egzi
+e-di
+e-di
+-iii
+aaai
+# Test 4
+board: 8x8
+i---c---
+a---c---
+a---i---
+ibbbi---
+--------
+--------
+----i---
+ii--i---
+arguments: 1 1 3 6 1 4 widget valid
+board: 8x8
+i---c---
+azzzc---
+azzzi---
+izzzbbbi
+-zzz----
+-zzz----
+-zzzi---
+ii--i---
+# Test 5
+board: 10x8
+aaaaaaaaai
+bbbbbcciii
+---------f
+---------f
+---------f
+---------i
+iiddddddii
+iieeiiiiii
+arguments: 2 5 7 1 3 1 widget valid
+board: 10x8
+bbbbbbbbbi
+eeeeecciii
+---------a
+---------a
+---------a
+--zzzzzzzi
+iiddddddii
+iiffiiiiii
+# Test 6
+board: 8x7
+-------i
+bbcaaaah
+bbcaaaah
+bbcaaaai
+bbcddddi
+bbieeeii
+iiiffggi
+arguments: 5 1 1 2 1 1 icon valid
+board: 8x7
+-----z-i
+bbfaaaad
+bbfaaaad
+bbfaaaai
+bbfhhhhi
+bbigggii
+iiieecci
+# Test 7
+board: 10x3
+ii-------i
+----------
+-ii----iii
+arguments: 1 0 7 1 2 1 widget valid
+board: 10x3
+izzzzzzzii
+----------
+-ii----iii
+# Test 8
+board: 8x9
+aaaaaiii
+ibbbbbii
+-----ffi
+-----eei
+-----hhi
+-----ggi
+-----jji
+iiccccii
+iidddddi
+arguments: 2 2 5 2 3 1 widget valid
+board: 8x9
+fffffiii
+ihhhhhii
+bbzzzzzi
+jjzzzzzi
+-----ggi
+-----cci
+-----aai
+iiddddii
+iieeeeei
+# Test 9
+board: 4x8
+--ci
+--cd
+--cd
+--ci
+--ii
+aaai
+aaai
+bbbi
+arguments: 1 4 2 1 2 1 widget valid
+board: 4x8
+--bi
+--bc
+--bc
+--bi
+izzi
+aaai
+aaai
+dddi
+# Test 10
+board: 8x3
+i----cci
+iaaaaaai
+iiibbbbi
+arguments: 2 1 2 1 1 1 widget valid
+board: 8x3
+i-zz-cci
+ibbbbbbi
+iiiaaaai
+# Test 11
+board: 5x10
+-----
+-----
+-----
+-----
+-----
+-----
+-----
+-----
+i---i
+iaaai
+arguments: 0 3 3 6 1 2 widget valid
+board: 5x10
+-----
+-----
+-----
+zzz--
+zzz--
+zzz--
+zzz--
+zzz--
+zzzii
+iaaai
+# Test 12
+board: 6x10
+aad-ii
+aad-ii
+aai-eg
+aac-eg
+aac-ei
+aac-ef
+aai-ef
+aai-ei
+aai-ii
+bbiiii
+arguments: 1 5 1 4 1 3 widget valid
+board: 6x10
+ccb-ii
+ccb-ii
+cci-fa
+cce-fa
+cce-fi
+ccezfg
+ccizfg
+ccizfi
+ccizii
+ddiiii
+# Test 13
+board: 10x10
+iaaaaaaiii
+i-------ii
+i-------ii
+i-------ei
+i-------ei
+b-------ei
+b-------ei
+b-------ii
+biccccccci
+iiddddddii
+arguments: 0 2 6 1 3 1 widget valid
+board: 10x10
+iaaaaaaiii
+i-------ii
+zzzzzzi-ii
+i-------ci
+i-------ci
+e-------ci
+e-------ci
+e-------ii
+eibbbbbbbi
+iiddddddii
+# Test 14
+board: 3x6
+--a
+--a
+--a
+--a
+--i
+iii
+arguments: 0 2 1 3 1 3 widget valid
+board: 3x6
+--a
+--a
+z-a
+z-a
+z-i
+iii
+# Test 15
+board: 6x7
+------
+-i---i
+-i---c
+ia---c
+ia---i
+ia---i
+iibbbi
+arguments: 2 0 2 3 2 1 widget valid
+board: 6x7
+--zz--
+-izz-i
+-izz-b
+ia---b
+ia---i
+ia---i
+iiccci
+# Test 16
+board: 8x6
+bbbiiddi
+icccccci
+aaaggiii
+eeeeeffi
+ii----ii
+iiihhhhi
+arguments: 3 3 2 1 1 1 widget valid
+board: 8x6
+ccciiffi
+ieeeeeei
+ggghhiii
+aaaaaddi
+ii-zz-ii
+iiibbbbi
+# Test 17
+board: 4x9
+---i
+---i
+---d
+---d
+---i
+---i
+ibbi
+iaai
+icci
+arguments: 0 2 1 6 1 1 widget valid
+board: 4x9
+i--i
+i--i
+z--d
+z--d
+z--i
+z--i
+zaai
+zbbi
+icci
+# Test 18
+board: 7x5
+iaaaaai
+----iii
+----iii
+iiibbbi
+iiiccii
+arguments: 2 0 4 1 3 1 widget valid
+board: 7x5
+ibbbbbi
+zzzziii
+----iii
+iiiccci
+iiiaaii
+# Test 19
+board: 6x4
+aaaaii
+bbi--i
+cci--i
+iiiddi
+arguments: 4 0 1 2 1 1 widget valid
+board: 6x4
+cccczi
+aai-zi
+bbi-ii
+iiiddi
+# Test 20
+board: 8x5
+bbiaeeei
+bbiaiffi
+cciddddi
+----hhii
+iigggggi
+arguments: 0 1 1 3 1 1 widget valid
+board: 8x5
+bbieccci
+bbieiddi
+z-iffffi
+zaa-ggii
+iihhhhhi
+# Test 21
+board: 5x4
+i--ii
+a--ii
+aicci
+iibbi
+arguments: 1 2 2 1 1 1 widget valid
+board: 5x4
+iaaii
+bi-ii
+bzz-i
+iicci
+# Test 22
+board: 4x10
+---i
+---d
+---d
+---d
+---i
+aaai
+aaai
+aaai
+bbbi
+ccci
+arguments: 2 0 1 1 1 1 icon valid
+board: 4x10
+--zi
+---d
+---d
+---d
+---i
+bbbi
+bbbi
+bbbi
+ccci
+aaai
+# Test 23
+board: 10x10
+----------
+----------
+----------
+----------
+----------
+----------
+----------
+----------
+----------
+--aaai---i
+arguments: 0 0 8 5 5 4 widget valid
+board: 10x10
+zzzzzzzz--
+zzzzzzzz--
+zzzzzzzz--
+zzzzzzzz--
+zzzzzzzz--
+----------
+----------
+----------
+----------
+--aaai---i
+# Test 24
+board: 4x9
+---b
+---b
+---b
+---b
+---b
+---c
+---c
+---i
+iaai
+arguments: 2 0 1 2 1 1 widget valid
+board: 4x9
+--zc
+--zc
+---c
+---c
+---c
+---a
+---a
+---i
+ibbi
+# Test 25
+board: 4x5
+-cci
+-bbi
+-bbi
+-iii
+iaai
+arguments: 0 1 1 1 1 1 icon valid
+board: 4x5
+-bbi
+zaai
+-aai
+-iii
+icci
+# Test 26
+board: 7x3
+a-----i
+a-----i
+ibbbbbi
+arguments: 0 0 2 1 1 1 widget valid
+board: 7x3
+zza---i
+--a---i
+ibbbbbi
+# Test 27
+board: 8x6
+i-----di
+------di
+------ii
+--bbbbii
+i-iiccci
+i--iiaai
+arguments: 5 1 2 3 1 1 widget valid
+board: 8x6
+i---d--i
+----dzzi
+----izzi
+aaaaizzi
+i-iiccci
+i--iibbi
+# Test 28
+board: 4x7
+---i
+---i
+---a
+---a
+---a
+---i
+iiii
+arguments: 1 2 1 3 1 3 widget valid
+board: 4x7
+---i
+---i
+-z-a
+-z-a
+-z-a
+---i
+iiii
+# Test 29
+board: 5x10
+ii--b
+ii--b
+ai--i
+ai--i
+iiiii
+-----
+-----
+-----
+-----
+-----
+arguments: 1 2 2 5 1 4 widget valid
+board: 5x10
+ii--a
+ii--a
+bzz-i
+bzz-i
+izzii
+-zz--
+-zz--
+-i---
+-i---
+-ii--
+# Test 30
+board: 10x4
+a--------i
+a--------i
+i--------i
+ibbbbbicci
+arguments: 7 1 1 2 1 2 widget valid
+board: 10x4
+b--------i
+b------z-i
+i------z-i
+iaaaaaicci
+# Test 31
+board: 5x3
+a--ii
+a--ii
+iiiii
+arguments: 1 0 3 1 2 1 widget valid
+board: 5x3
+azzzi
+a-iii
+iiiii
+# Test 32
+board: 5x9
+-----
+-----
+-----
+-----
+----i
+----b
+----b
+----i
+aaaii
+arguments: 1 0 2 7 2 1 widget valid
+board: 5x9
+-zz--
+-zz--
+-zz--
+-zz--
+-zz-i
+-zz-a
+-zz-a
+----i
+bbbii
+# Test 33
+board: 4x8
+icci
+aaai
+aaai
+iiii
+ibbi
+---i
+---i
+dddi
+arguments: 2 1 1 6 1 5 icon invalid
+board: 4x8
+----
+----
+----
+----
+----
+----
+----
+----
+# Test 34
+board: 7x3
+------i
+------i
+iaaiiii
+arguments: 0 1 4 1 1 1 widget valid
+board: 7x3
+------i
+zzzz--i
+iaaiiii
+# Test 35
+board: 5x4
+ii-bi
+ai-bi
+ai-ii
+iiiii
+arguments: 1 1 2 1 2 1 widget valid
+board: 5x4
+iiiai
+bzzai
+bi-ii
+iiiii
+# Test 36
+board: 9x7
+iii--iiii
+aai--bbbi
+aai--bbbi
+aai--ccii
+iiiiiiiii
+---------
+---------
+arguments: 1 1 6 2 4 2 widget valid
+board: 9x7
+iii--iiii
+-zzzzzz-i
+-zzzzzz-i
+bbi--aaai
+bbiiiaaai
+bbi--cci-
+iii--iii-
+# Test 37
+board: 6x9
+aai--i
+-iii-i
+iiiiii
+-i----
+-ibbbi
+-ibbbi
+-iccci
+-i---i
+iidddi
+arguments: 2 2 3 1 2 1 widget valid
+board: 6x9
+ddi--i
+-iii-i
+iizzzi
+-iiii-
+-iaaai
+-iaaai
+-iccci
+-i---i
+iibbbi
+# Test 38
+board: 10x6
+----------
+----------
+----------
+----------
+----------
+----------
+arguments: 0 0 6 4 1 2 widget valid
+board: 10x6
+zzzzzz----
+zzzzzz----
+zzzzzz----
+zzzzzz----
+----------
+----------
+# Test 39
+board: 3x9
+-bc
+-bc
+-bd
+-bd
+-bi
+-bi
+-ii
+aai
+iii
+arguments: 0 1 1 6 1 4 widget valid
+board: 3x9
+-bd
+zbd
+zbc
+zbc
+zbi
+zbi
+zii
+aai
+iii
+# Test 40
+board: 3x3
+--i
+--i
+aai
+arguments: 1 0 1 1 1 1 icon valid
+board: 3x3
+-zi
+--i
+aai
+# Test 41
+board: 6x3
+-----i
+------
+--i---
+arguments: 0 1 4 1 3 1 widget valid
+board: 6x3
+-----i
+zzzz--
+--i---
+# Test 42
+board: 5x5
+iaaai
+---ii
+iibbi
+iicci
+iiiii
+arguments: 1 0 1 2 1 2 icon invalid
+board: 5x5
+-----
+-----
+-----
+-----
+-----
+# Test 43
+board: 3x6
+--i
+--i
+--b
+--b
+--i
+aai
+arguments: 1 2 1 3 1 3 widget valid
+board: 3x6
+--i
+--i
+-za
+-za
+-zi
+bbi
+# Test 44
+board: 4x8
+---a
+---a
+---a
+---a
+---a
+---i
+iiii
+iiii
+arguments: 2 2 1 3 1 3 widget valid
+board: 4x8
+---a
+---a
+--za
+--za
+--za
+---i
+iiii
+iiii
+# Test 45
+board: 9x9
+i-----kki
+i-----kki
+a-----kki
+a-----kki
+i-----lli
+iicccibbj
+idiffibbj
+ideeiibbi
+iigggihhi
+arguments: 2 1 5 3 4 2 widget valid
+board: 9x9
+i-----lli
+izzzzzlli
+fzzzzzlli
+fzzzzzlli
+i-----jji
+iihhhikke
+igiccikke
+igbbiikki
+iiaaaiddi
+# Test 46
+board: 9x5
+ab---iggi
+ab---iffi
+ab---eeei
+aicccccci
+iiiidddii
+arguments: 1 0 2 3 1 3 widget valid
+board: 9x5
+bzze-iffi
+bzze-iaai
+bzze-dddi
+bicccccci
+iiiigggii
+# Test 47
+board: 5x6
+ai--b
+ai--b
+ai--i
+ai--i
+iiiii
+iiiii
+arguments: 2 4 2 1 2 1 widget valid
+board: 5x6
+bi--a
+bi--a
+bi--i
+biiii
+iizzi
+iiiii
+# Test 48
+board: 5x4
+-----
+-i---
+----i
+-iiii
+arguments: 1 0 3 2 2 1 widget valid
+board: 5x4
+-zzz-
+-zzzi
+----i
+-iiii
+# Test 49
+board: 6x3
+i---ii
+i---ii
+iiaaai
+arguments: 2 0 1 1 1 1 icon valid
+board: 6x3
+i-z-ii
+i---ii
+iiaaai
+# Test 50
+board: 8x9
+--------
+--------
+--------
+--------
+--------
+--------
+--------
+--------
+--------
+arguments: 1 1 6 7 3 1 widget valid
+board: 8x9
+--------
+-zzzzzz-
+-zzzzzz-
+-zzzzzz-
+-zzzzzz-
+-zzzzzz-
+-zzzzzz-
+-zzzzzz-
+--------
+# Test 51
+board: 3x6
+--b
+--b
+--b
+--i
+iii
+aai
+arguments: 0 3 1 2 1 2 widget valid
+board: 3x6
+--a
+--a
+i-a
+z-i
+zii
+bbi
+# Test 52
+board: 5x8
+a--df
+a--df
+a--di
+a--ei
+i--ei
+i--ii
+ibbbi
+iccci
+arguments: 1 3 1 3 1 2 widget valid
+board: 5x8
+e--cb
+e--cb
+e--ci
+ez-di
+iz-di
+iz-ii
+iaaai
+ifffi
+# Test 53
+board: 8x3
+aaaai--i
+iccci--i
+bbbiiiii
+arguments: 1 1 3 1 3 1 icon invalid
+board: 8x3
+--------
+--------
+--------
+# Test 54
+board: 8x9
+------di
+------di
+------di
+------ii
+iaaaaaai
+baaaaaai
+baaaaaai
+baaaaaai
+iiccccci
+arguments: 3 3 2 1 1 1 widget valid
+board: 8x9
+------ai
+------ai
+------ai
+---zz-ii
+icccccci
+bcccccci
+bcccccci
+bcccccci
+iidddddi
+# Test 55
+board: 4x8
+ibbi
+iaai
+iaai
+caai
+ciii
+iddi
+--ii
+ieei
+arguments: 1 4 1 1 1 1 icon valid
+board: 4x8
+iaai
+icci
+icci
+ecci
+ezii
+ibbi
+-iii
+iddi
+# Test 56
+board: 6x9
+-----i
+------
+-i---i
+i----i
+-----i
+--icci
+-i-bbi
+-i-iii
+iiaaai
+arguments: 1 0 4 2 4 2 widget valid
+board: 6x9
+-zzzzi
+-zzzz-
+-i---i
+i----i
+-----i
+--icci
+-i-bbi
+-i-iii
+iiaaai
+# Test 57
+board: 4x9
+aaai
+ibbi
+c-ii
+c-ei
+c-ei
+c-ii
+c-ii
+ciii
+iddi
+arguments: 1 6 2 2 2 2 widget valid
+board: 4x9
+eeei
+icci
+d-ii
+dibi
+dibi
+diii
+dzzi
+dzzi
+iaai
+# Test 58
+board: 3x6
+aai
+iii
+--b
+--b
+--i
+iii
+arguments: 0 1 1 1 1 1 icon valid
+board: 3x6
+aai
+zii
+i-b
+--b
+--i
+iii
+# Test 59
+board: 9x6
+iiiiii--i
+iaaeii--g
+baaeii--g
+baaiii--i
+icciiiiii
+iddiiiffi
+arguments: 3 3 5 1 4 1 widget valid
+board: 9x6
+iiiiii--i
+ibbdiii-a
+ebbdiiiia
+ebbzzzzzi
+icciiiiii
+iffiiiggi
+# Test 60
+board: 5x8
+iiiii
+ii-ii
+ai-ii
+ai-ii
+ai-ii
+aibbi
+iicci
+iiiii
+arguments: 2 0 2 2 1 2 widget valid
+board: 5x8
+iizzi
+iizzi
+biiii
+biiii
+biiii
+bicci
+iiaai
+iiiii
+# Test 61
+board: 7x10
+-------
+-------
+-------
+-------
+-------
+-------
+-------
+-------
+-------
+-------
+arguments: 2 0 3 8 2 7 widget valid
+board: 7x10
+--zzz--
+--zzz--
+--zzz--
+--zzz--
+--zzz--
+--zzz--
+--zzz--
+--zzz--
+-------
+-------
+# Test 62
+board: 8x8
+aaiiiiii
+iiibbbbi
+dddi---i
+iiii---i
+ccci---h
+ccci---h
+eeei---i
+fffigggi
+arguments: 1 4 4 2 1 1 widget valid
+board: 8x8
+eeiiiiii
+iiiaaaai
+fffigggi
+iiiigggi
+-zzzzi-c
+-zzzz--c
+hhhii--i
+dddibbbi
+# Test 63
+board: 8x5
+ibbii--d
+iiiii--d
+aaaii--d
+aaaii--i
+cccciiii
+arguments: 3 2 2 1 2 1 widget valid
+board: 8x5
+ibbii--d
+iiiii--d
+ccczziid
+cccii--i
+aaaaiiii
+# Test 64
+board: 9x5
+iiac--iii
+iiac--ffi
+biac--eei
+biai--iii
+iiiiddddi
+arguments: 3 1 2 3 2 1 widget valid
+board: 9x5
+iif--eiii
+iifzzebbi
+cifzzeaai
+cifzziiii
+iiiiddddi
+# Test 65
+board: 6x7
+aaaiii
+aaaiii
+ibbcci
+i----f
+d----f
+d----i
+iieeei
+arguments: 2 1 1 5 1 4 widget valid
+board: 6x7
+aaaiii
+aaaiii
+i-zbbi
+i-zeec
+d-z--c
+d-z--i
+iifffi
+# Test 66
+board: 10x10
+aaaaaaaaii
+i---ijjjni
+i---ijjjni
+b---kjjjni
+b---kjjjii
+b---klliii
+b---immmmi
+bcccccccci
+ieeiddiiii
+iffiigghhi
+arguments: 2 4 3 4 3 1 widget valid
+board: 10x10
+aaaaaaaaii
+i---innnci
+i---innnci
+hzzzknnnci
+hzzzknnnii
+hzzzkeeiii
+hzzziffffi
+hddddddddi
+ijjilliiii
+iggiimmbbi
+# Test 67
+board: 3x8
+--i
+--i
+--i
+bai
+bai
+iai
+iai
+iii
+arguments: 0 0 1 2 1 1 widget valid
+board: 3x8
+z-i
+z-i
+--i
+bai
+bai
+iai
+iai
+iii
+# Test 68
+board: 6x5
+i---ii
+ibcaei
+ibcaei
+ibiaii
+iiiddi
+arguments: 4 1 1 3 1 1 icon valid
+board: 6x5
+i--zii
+icadbi
+icadbi
+icidii
+iiieei
+# Test 69
+board: 3x7
+a-i
+a-b
+a-b
+a-b
+a-i
+i-i
+iii
+arguments: 0 0 1 4 1 1 widget valid
+board: 3x7
+zbi
+zba
+zba
+zba
+-bi
+i-i
+iii
+# Test 70
+board: 5x10
+---ii
+---ii
+---ii
+aaaai
+-----
+-----
+-----
+-----
+-----
+-----
+arguments: 0 5 3 4 3 1 widget valid
+board: 5x10
+---ii
+---ii
+---ii
+aaaai
+-----
+zzz--
+zzz--
+zzz--
+zzz--
+-----
+# Test 71
+board: 8x9
+-----i-i
+--------
+--------
+--------
+--------
+--------
+--------
+--------
+--------
+arguments: 2 3 5 5 1 4 widget valid
+board: 8x9
+-----i-i
+--------
+--------
+--zzzzz-
+--zzzzz-
+--zzzzz-
+--zzzzz-
+--zzzzz-
+--------
+# Test 72
+board: 4x6
+i--d
+a--d
+a--i
+acbi
+acbi
+iiii
+arguments: 0 2 1 3 1 2 widget valid
+board: 4x6
+iz-b
+cz-b
+cz-i
+cadi
+cadi
+iiii
+# Test 73
+board: 3x7
+--c
+--c
+--c
+--i
+bai
+bai
+iii
+arguments: 1 0 1 2 1 1 widget valid
+board: 3x7
+-zb
+-zb
+--b
+--i
+cai
+cai
+iii
+# Test 74
+board: 4x7
+---i
+---i
+---b
+---b
+---b
+---i
+iaai
+arguments: 2 2 1 3 1 1 widget valid
+board: 4x7
+---i
+---i
+--zb
+--zb
+--zb
+---i
+iaai
+# Test 75
+board: 4x3
+a--i
+a--i
+ibbi
+arguments: 1 0 1 1 1 1 icon valid
+board: 4x3
+bz-i
+b--i
+iaai
+# Test 76
+board: 10x5
+--ai------
+--aii----i
+--iii----i
+--iii----i
+iiiiiibbbi
+arguments: 5 2 4 2 3 2 widget valid
+board: 10x5
+--bi------
+--bii----i
+--iiizzzzi
+--iiizzzzi
+iiiiiiaaai
+# Test 77
+board: 8x10
+-------i
+-------e
+-------e
+-------e
+-------e
+-------e
+-------i
+ccibbbii
+iaaaaaai
+iiiddddi
+arguments: 4 2 3 5 3 1 widget valid
+board: 8x10
+-------i
+-------c
+----zzzc
+----zzzc
+----zzzc
+----zzzc
+----zzzi
+aaibbbii
+iddddddi
+iiieeeei
+# Test 78
+board: 3x9
+aai
+i-i
+iii
+--i
+---
+--i
+b-i
+bii
+iii
+arguments: 1 1 1 7 1 6 widget valid
+board: 3x9
+aai
+izi
+izi
+izi
+-z-
+izi
+bzi
+bzi
+iii
+# Test 79
+board: 6x5
+aaii-i
+--i---
+--i--i
+iii--i
+iiiiii
+arguments: 2 3 3 1 3 1 widget valid
+board: 6x5
+aaii-i
+--i---
+--ii-i
+iizzzi
+iiiiii
+# Test 80
+board: 6x4
+------
+------
+----ii
+------
+arguments: 0 0 4 2 3 1 widget valid
+board: 6x4
+zzzz--
+zzzz--
+----ii
+------
+# Test 81
+board: 5x6
+aaaai
+i--ii
+b--ii
+b--ii
+b--ii
+iiiii
+arguments: 2 3 2 1 1 1 widget valid
+board: 5x6
+aaaai
+i--ii
+b--ii
+bizzi
+b--ii
+iiiii
+# Test 82
+board: 6x8
+aaaaii
+bbbbbi
+icciii
+-----i
+-----i
+ddfffi
+ddgggi
+eeeeei
+arguments: 1 3 2 2 1 1 widget valid
+board: 6x8
+bbbbii
+gggggi
+icciii
+-zz--i
+-zz--i
+eedddi
+eefffi
+aaaaai
+# Test 83
+board: 8x10
+iiaaaaai
+------cd
+------cd
+------ci
+------ii
+iiiiibbi
+--------
+--------
+--------
+--------
+arguments: 2 0 5 3 5 1 widget valid
+board: 8x10
+iizzzzzi
+--zzzzza
+--zzzzza
+--dddddi
+------bi
+iiiii-bi
+------b-
+------i-
+-----cc-
+--------
+# Test 84
+board: 6x6
+---aii
+---aii
+---bbi
+---iii
+--iiii
+i----i
+arguments: 2 0 3 4 1 3 widget valid
+board: 6x6
+bizzzi
+bizzzi
+aazzzi
+iizzzi
+--iiii
+i----i
+# Test 85
+board: 4x7
+iaai
+ii-i
+ii-i
+ii-i
+iiii
+----
+---i
+arguments: 2 2 1 4 1 2 widget valid
+board: 4x7
+iaai
+ii-i
+iizi
+iizi
+iizi
+--z-
+--ii
+# Test 86
+board: 4x9
+----
+a--i
+a--i
+i--i
+i--c
+i--c
+b--i
+b--i
+iiii
+arguments: 0 0 2 7 2 7 widget valid
+board: 4x9
+zz--
+zzbi
+zzbi
+zzii
+zzia
+zzia
+zzci
+--ci
+iiii
+# Test 87
+board: 5x6
+-----
+-i--i
+-----
+-----
+-----
+-----
+arguments: 0 0 3 3 1 2 widget valid
+board: 5x6
+zzz--
+zzzii
+zzz--
+-----
+-----
+-----
+# Test 88
+board: 5x5
+ii--a
+ii--a
+-i--i
+-i-ii
+ii--i
+arguments: 0 1 2 3 2 1 widget valid
+board: 5x5
+iiiia
+zz-ia
+zz-ii
+zz-ii
+ii--i
+# Test 89
+board: 5x10
+ccddi
+bbbii
+eeeei
+iajji
+faiii
+fgggi
+fgggi
+ihhhi
+----i
+iikki
+arguments: 1 3 1 4 1 2 icon invalid
+board: 5x10
+-----
+-----
+-----
+-----
+-----
+-----
+-----
+-----
+-----
+-----
+# Test 90
+board: 3x6
+--i
+--b
+--b
+--b
+--i
+aai
+arguments: 1 0 1 2 1 1 widget valid
+board: 3x6
+-zi
+-za
+--a
+--a
+--i
+bbi
+# Test 91
+board: 4x8
+---i
+---c
+---c
+---c
+---c
+---i
+aaai
+bbbi
+arguments: 1 1 1 2 1 2 widget valid
+board: 4x8
+---i
+-z-c
+-z-c
+---c
+---c
+---i
+bbbi
+aaai
+# Test 92
+board: 5x7
+----c
+----c
+----c
+----c
+----i
+aaaai
+ibbii
+arguments: 1 1 2 4 1 2 widget valid
+board: 5x7
+----b
+-zz-b
+-zz-b
+-zz-b
+-zz-i
+aaaai
+iccii
+# Test 93
+board: 5x4
+i--ii
+i--ii
+i--ii
+iiiii
+arguments: 2 1 1 2 1 2 widget valid
+board: 5x4
+i--ii
+i-zii
+i-zii
+iiiii
+# Test 94
+board: 10x5
+aabc---iii
+aabc---eei
+aabi---ffi
+aaii---ggi
+iiiiiddddi
+arguments: 4 1 3 3 1 3 widget valid
+board: 10x5
+ggfe---iii
+ggfezzzddi
+ggfizzzbbi
+ggiizzzaai
+iiiiicccci
+# Test 95
+board: 9x5
+baffi---i
+baeei---i
+caiii---i
+ciddi---i
+iiiiiggii
+arguments: 0 0 4 3 3 1 widget valid
+board: 9x5
+ezzzdccii
+ezzzdggii
+fzzzdiiii
+fibbi---i
+iiiiiaaii
+# Test 96
+board: 7x7
+-------
+--i---i
+-------
+-------
+------i
+-------
+------i
+arguments: 0 1 5 2 3 1 widget valid
+board: 7x7
+-------
+zzzzzii
+zzzzz--
+-------
+------i
+-------
+------i
+# Test 97
+board: 10x4
+i-----ccii
+a-----ccii
+a-----iddi
+iibbbiiiii
+arguments: 7 2 1 1 1 1 icon valid
+board: 10x4
+i-----ccii
+d-----ccii
+d---ibbz-i
+iiaaaiiiii
+# Test 98
+board: 7x9
+--i-iii
+ai-icci
+ai-iiii
+iibbbbi
+ii-iiii
+-i-ii-i
+-i-ii-i
+ii-iiii
+ii----i
+arguments: 1 6 3 2 3 2 widget valid
+board: 7x9
+--i-iii
+bi-iaai
+bi-iiii
+iicccci
+ii-iiii
+-iiii-i
+izzzi-i
+izzziii
+iiii--i
+# Test 99
+board: 4x10
+aaii
+iiii
+---c
+---c
+---c
+---d
+---d
+---i
+ibbi
+iiii
+arguments: 0 0 2 6 1 2 widget valid
+board: 4x10
+zzii
+zzii
+zz-c
+zz-c
+zz-c
+zz-b
+aa-b
+ii-i
+iddi
+iiii
+# Test 100
+board: 8x4
+iittt---
+yyyy---i
+yyyyi--i
+yyyy---i
+# This represents where you want to add an item, the format is "x y spanX spanY minSpanX minSpanY type<widget/icon/folder> ifSolutionIsPossible<valid/invalid>"
+arguments: 5 1 2 3 1 1 widget valid
+board: 8x4
+iittt---
+yyyy-hhi
+yyyyihhi
+yyyy-hhi
\ No newline at end of file
diff --git a/tests/assets/ReorderWidgets/full_reorder_case b/tests/assets/ReorderWidgets/full_reorder_case
new file mode 100644
index 0000000..33ebaae
--- /dev/null
+++ b/tests/assets/ReorderWidgets/full_reorder_case
@@ -0,0 +1,28 @@
+###################################################################################################
+# This file contains test case composed of the following tags:
+#     * # (coments): Lines starting with this character would be ignored.
+#     * arguments: is set of words separated by spaces that can later be parsed
+#     * board: represent a workspace, the first line is the dimensions of the board width x height (wxh)
+# There are different characters on the board that represent different things:
+#     * x: The x character represents spaces that would be ignored, for example it can be used in
+#          the first row if we don't know how wide the smartspace is.
+#     * i: Represents an icon on the workspace, none in particular just an icon
+#     * [a-z]: Represents a widget and it can be any number or character
+#          except any other already in use. The whole continuos are of the same character is the
+#          area of the widget.
+#     * [A-Z]: Represents a folder and number of icons in the folder is represented by the order of
+#          letter in the alphabet, A=2, B=3, C=4 ... etc.
+# Test are parsed by CellLayoutTestCaseReader.java and boards are parsed by CellLayoutBoard.java
+###################################################################################################
+# Test 4x4
+board: 4x4
+xxxx
+bbmm
+iimm
+iiaa
+arguments: 0 3
+board: 4x4
+xxxx
+bbii
+mmii
+mmaa
\ No newline at end of file
diff --git a/tests/assets/ReorderWidgets/move_out_reorder_case b/tests/assets/ReorderWidgets/move_out_reorder_case
new file mode 100644
index 0000000..db0a91d
--- /dev/null
+++ b/tests/assets/ReorderWidgets/move_out_reorder_case
@@ -0,0 +1,44 @@
+###################################################################################################
+# This file contains test case composed of the following tags:
+#     * # (coments): Lines starting with this character would be ignored.
+#     * arguments: is set of words separated by spaces that can later be parsed
+#     * board: represent a workspace, the first line is the dimensions of the board width x height (wxh)
+# There are different characters on the board that represent different things:
+#     * x: The x character represents spaces that would be ignored, for example it can be used in
+#          the first row if we don't know how wide the smartspace is.
+#     * i: Represents an icon on the workspace, none in particular just an icon
+#     * [a-z]: Represents a widget and it can be any number or character
+#          except any other already in use. The whole continuos are of the same character is the
+#          area of the widget.
+#     * [A-Z]: Represents a folder and number of icons in the folder is represented by the order of
+#          letter in the alphabet, A=2, B=3, C=4 ... etc.
+# Test are parsed by CellLayoutTestCaseReader.java and boards are parsed by CellLayoutBoard.java
+###################################################################################################
+# Test 5x5
+board: 5x5
+xxxxx
+cd-m-
+cgaaa
+ctaaa
+ctaaa
+arguments: 1 2
+board: 5x5
+xxxxx
+cde--
+cgaaa
+ctaaa
+ctaaa
+# Test 6x5
+board: 6x5
+xxxxxx
+cd-m--
+cgaaaa
+ctaaaa
+ctaaaa
+arguments: 1 2
+board: 6x5
+xxxxxx
+cdg---
+cmaaaa
+ctaaaa
+ctaaaa
\ No newline at end of file
diff --git a/tests/assets/ReorderWidgets/push_reorder_case b/tests/assets/ReorderWidgets/push_reorder_case
new file mode 100644
index 0000000..8e845a2
--- /dev/null
+++ b/tests/assets/ReorderWidgets/push_reorder_case
@@ -0,0 +1,44 @@
+###################################################################################################
+# This file contains test case composed of the following tags:
+#     * # (coments): Lines starting with this character would be ignored.
+#     * arguments: is set of words separated by spaces that can later be parsed
+#     * board: represent a workspace, the first line is the dimensions of the board width x height (wxh)
+# There are different characters on the board that represent different things:
+#     * x: The x character represents spaces that would be ignored, for example it can be used in
+#          the first row if we don't know how wide the smartspace is.
+#     * i: Represents an icon on the workspace, none in particular just an icon
+#     * [a-z]: Represents a widget and it can be any number or character
+#          except any other already in use. The whole continuos are of the same character is the
+#          area of the widget.
+#     * [A-Z]: Represents a folder and number of icons in the folder is represented by the order of
+#          letter in the alphabet, A=2, B=3, C=4 ... etc.
+# Test are parsed by CellLayoutTestCaseReader.java and boards are parsed by CellLayoutBoard.java
+###################################################################################################
+#Test 5x5
+board: 5x5
+xxxxx
+bbbm-
+--ccc
+--ddd
+-----
+arguments: 2 1
+board: 5x5
+xxxxx
+--m--
+bbb--
+--ccc
+--ddd
+#6x5 Test
+board: 6x5
+xxxxxx
+bbbbm-
+--aaa-
+--ddd-
+------
+arguments: 2 1
+board: 6x5
+xxxxxx
+--m---
+bbbb--
+--aaa-
+--ddd-
\ No newline at end of file
diff --git a/tests/assets/ReorderWidgets/simple_reorder_case b/tests/assets/ReorderWidgets/simple_reorder_case
new file mode 100644
index 0000000..f5eb7b6
--- /dev/null
+++ b/tests/assets/ReorderWidgets/simple_reorder_case
@@ -0,0 +1,56 @@
+###################################################################################################
+# This file contains test case composed of the following tags:
+#     * # (coments): Lines starting with this character would be ignored.
+#     * arguments: is set of words separated by spaces that can later be parsed
+#     * board: represent a workspace, the first line is the dimensions of the board width x height (wxh)
+# There are different characters on the board that represent different things:
+#     * x: The x character represents spaces that would be ignored, for example it can be used in
+#          the first row if we don't know how wide the smartspace is.
+#     * i: Represents an icon on the workspace, none in particular just an icon
+#     * [a-z]: Represents a widget and it can be any number or character
+#          except any other already in use. The whole continuos are of the same character is the
+#          area of the widget.
+#     * [A-Z]: Represents a folder and number of icons in the folder is represented by the order of
+#          letter in the alphabet, A=2, B=3, C=4 ... etc.
+# Test are parsed by CellLayoutTestCaseReader.java and boards are parsed by CellLayoutBoard.java
+###################################################################################################
+# Test 5x5
+board: 5x5
+xxxxx
+--mm-
+--mm-
+-----
+-----
+arguments: 0 4
+board: 5x5
+xxxxx
+-----
+-----
+mm---
+mm---
+# Test 4x4
+board: 4x4
+xxxx
+--mm
+--mm
+----
+arguments: 3 3
+board: 4x4
+xxxx
+----
+--mm
+--mm
+# Test 6x5
+board: 6x5
+xxxxxx
+-mm---
+-mm---
+------
+------
+arguments: 4 3
+board: 6x5
+xxxxxx
+------
+------
+----mm
+----mm
\ No newline at end of file
diff --git a/tests/res/layout/test_layout_appwidget_blue.xml b/tests/res/layout/test_layout_appwidget_blue.xml
index 8111978..f33e575 100644
--- a/tests/res/layout/test_layout_appwidget_blue.xml
+++ b/tests/res/layout/test_layout_appwidget_blue.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@android:id/content"
     android:orientation="vertical"
     android:background="#FF0000FF"
     android:layout_width="match_parent"
diff --git a/tests/res/raw/devices.json b/tests/res/raw/devices.json
deleted file mode 100644
index a78dd86..0000000
--- a/tests/res/raw/devices.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
-  "pixel6pro": {
-    "width": 1440,
-    "height": 3120,
-    "density": 560,
-    "name": "pixel6pro",
-    "cutout": "0, 130, 0, 0",
-    "grids": [
-      "normal",
-      "reasonable",
-      "practical",
-      "big",
-      "crazy_big"
-    ],
-    "resourceOverrides": {
-      "status_bar_height": 98,
-      "navigation_bar_height_landscape": 56,
-      "navigation_bar_height": 56,
-      "navigation_bar_width": 56
-    }
-  },
-  "test": {
-    "data needs updating": 0
-  },
-  "pixel5": {
-    "width": 1080,
-    "height": 2340,
-    "density": 440,
-    "name": "pixel5",
-    "cutout": "0, 136, 0, 0",
-    "grids": [
-      "normal",
-      "reasonable",
-      "practical",
-      "big",
-      "crazy_big"
-    ],
-    "resourceOverrides": {
-      "status_bar_height": 66,
-      "navigation_bar_height_landscape": 44,
-      "navigation_bar_height": 44,
-      "navigation_bar_width": 44
-    }
-  }
-}
diff --git a/tests/res/raw/reorder_algorithm_test.txt b/tests/res/raw/reorder_algorithm_test.txt
new file mode 100644
index 0000000..4930e93
--- /dev/null
+++ b/tests/res/raw/reorder_algorithm_test.txt
@@ -0,0 +1,9 @@
+arguments: 5 6 normal
+board: 6x5
+xxxxx-
+------
+------
+---3--
+---3--
+---3--
+# this is a comment
\ No newline at end of file
diff --git a/tests/res/values/attrs.xml b/tests/res/values/attrs.xml
new file mode 100644
index 0000000..2310d9e
--- /dev/null
+++ b/tests/res/values/attrs.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+/* Copyright 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.
+*/
+-->
+
+<!-- Attributes have to be copied to test for correct parsing of files -->
+<resources>
+    <!--  Responsive grids attributes  -->
+    <declare-styleable name="WorkspaceSpec">
+        <attr name="specType" format="integer">
+            <enum name="height" value="0" />
+            <enum name="width" value="1" />
+        </attr>
+        <attr name="maxAvailableSize" format="dimension" />
+    </declare-styleable>
+
+    <declare-styleable name="SpecSize">
+        <attr name="fixedSize" format="dimension" />
+        <attr name="ofAvailableSpace" format="float" />
+        <attr name="ofRemainderSpace" format="float" />
+    </declare-styleable>
+
+</resources>
diff --git a/tests/res/xml/invalid_workspace_file_case_1.xml b/tests/res/xml/invalid_workspace_file_case_1.xml
new file mode 100644
index 0000000..0be704b
--- /dev/null
+++ b/tests/res/xml/invalid_workspace_file_case_1.xml
@@ -0,0 +1,56 @@
+<?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.
+  -->
+
+<workspaceSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
+    <workspaceSpec
+        launcher:specType="height"
+        launcher:maxAvailableSize="648dp">
+        <!--  missing startPadding  -->
+        <endPadding
+            launcher:ofAvailableSpace="0.05" />
+        <gutter
+            launcher:fixedSize="16dp" />
+        <cellSize
+            launcher:ofRemainderSpace="0.2" />
+    </workspaceSpec>
+
+    <workspaceSpec
+        launcher:specType="height"
+        launcher:maxAvailableSize="9999dp">
+        <startPadding
+            launcher:ofAvailableSpace="0.0306" />
+        <endPadding
+            launcher:ofAvailableSpace="0.068" />
+        <gutter
+            launcher:fixedSize="16dp" />
+        <cellSize
+            launcher:ofRemainderSpace="0.2" />
+    </workspaceSpec>
+
+    <!-- Width spec is always the same -->
+    <workspaceSpec
+        launcher:specType="width"
+        launcher:maxAvailableSize="9999dp">
+        <startPadding
+            launcher:ofRemainderSpace="0.21436227" />
+        <endPadding
+            launcher:ofRemainderSpace="0.21436227" />
+        <gutter
+            launcher:ofRemainderSpace="0.11425509" />
+        <cellSize
+            launcher:fixedSize="120dp" />
+    </workspaceSpec>
+</workspaceSpecs>
diff --git a/tests/res/xml/invalid_workspace_file_case_2.xml b/tests/res/xml/invalid_workspace_file_case_2.xml
new file mode 100644
index 0000000..5a37d97
--- /dev/null
+++ b/tests/res/xml/invalid_workspace_file_case_2.xml
@@ -0,0 +1,59 @@
+<?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.
+  -->
+
+<workspaceSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
+    <workspaceSpec
+        launcher:specType="height"
+        launcher:maxAvailableSize="648dp">
+        <startPadding
+            launcher:ofAvailableSpace="0.0125" />
+        <endPadding
+            launcher:ofAvailableSpace="0.05" />
+        <!--  more than 1 value in one tag -->
+        <gutter
+            launcher:ofAvailableSpace="0.0125"
+            launcher:fixedSize="16dp" />
+        <cellSize
+            launcher:ofRemainderSpace="0.2" />
+    </workspaceSpec>
+
+    <workspaceSpec
+        launcher:specType="height"
+        launcher:maxAvailableSize="9999dp">
+        <startPadding
+            launcher:ofAvailableSpace="0.0306" />
+        <endPadding
+            launcher:ofAvailableSpace="0.068" />
+        <gutter
+            launcher:fixedSize="16dp" />
+        <cellSize
+            launcher:ofRemainderSpace="0.2" />
+    </workspaceSpec>
+
+    <!-- Width spec is always the same -->
+    <workspaceSpec
+        launcher:specType="width"
+        launcher:maxAvailableSize="9999dp">
+        <startPadding
+            launcher:ofRemainderSpace="0.21436227" />
+        <endPadding
+            launcher:ofRemainderSpace="0.21436227" />
+        <gutter
+            launcher:ofRemainderSpace="0.11425509" />
+        <cellSize
+            launcher:fixedSize="120dp" />
+    </workspaceSpec>
+</workspaceSpecs>
diff --git a/tests/res/xml/invalid_workspace_file_case_3.xml b/tests/res/xml/invalid_workspace_file_case_3.xml
new file mode 100644
index 0000000..3e68edb
--- /dev/null
+++ b/tests/res/xml/invalid_workspace_file_case_3.xml
@@ -0,0 +1,58 @@
+<?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.
+  -->
+
+<workspaceSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
+    <workspaceSpec
+        launcher:specType="height"
+        launcher:maxAvailableSize="648dp">
+        <startPadding
+            launcher:ofAvailableSpace="0.0125" />
+        <endPadding
+            launcher:ofAvailableSpace="0.05" />
+        <gutter
+            launcher:fixedSize="16dp" />
+        <!--  value bigger than 1 -->
+        <cellSize
+            launcher:ofRemainderSpace="1.001" />
+    </workspaceSpec>
+
+    <workspaceSpec
+        launcher:specType="height"
+        launcher:maxAvailableSize="9999dp">
+        <startPadding
+            launcher:ofAvailableSpace="0.0306" />
+        <endPadding
+            launcher:ofAvailableSpace="0.068" />
+        <gutter
+            launcher:fixedSize="16dp" />
+        <cellSize
+            launcher:ofRemainderSpace="0.2" />
+    </workspaceSpec>
+
+    <!-- Width spec is always the same -->
+    <workspaceSpec
+        launcher:specType="width"
+        launcher:maxAvailableSize="9999dp">
+        <startPadding
+            launcher:ofRemainderSpace="0.21436227" />
+        <endPadding
+            launcher:ofRemainderSpace="0.21436227" />
+        <gutter
+            launcher:ofRemainderSpace="0.11425509" />
+        <cellSize
+            launcher:fixedSize="120dp" />
+    </workspaceSpec>
+</workspaceSpecs>
diff --git a/tests/res/xml/shortcuts.xml b/tests/res/xml/shortcuts.xml
index bdc22f9..94e8edd 100644
--- a/tests/res/xml/shortcuts.xml
+++ b/tests/res/xml/shortcuts.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <shortcuts xmlns:android="http://schemas.android.com/apk/res/android" >
     <shortcut
-        android:shortcutId="shortcut1"
+        android:shortcutId="shortcut1_themed"
+        android:icon="@drawable/test_theme_icon"
         android:shortcutShortLabel="@string/shortcut1">
         <intent android:action="com.android.launcher3.intent.action.test_shortcut"/>
     </shortcut>
diff --git a/tests/res/xml/valid_workspace_file.xml b/tests/res/xml/valid_workspace_file.xml
new file mode 100644
index 0000000..1f97314
--- /dev/null
+++ b/tests/res/xml/valid_workspace_file.xml
@@ -0,0 +1,59 @@
+<?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.
+  -->
+
+<workspaceSpecs xmlns:launcher="http://schemas.android.com/apk/res-auto">
+    <!-- 584 grid height -->
+    <workspaceSpec
+        launcher:specType="height"
+        launcher:maxAvailableSize="584dp">
+        <startPadding launcher:fixedSize="0dp" />
+        <endPadding launcher:fixedSize="32dp" />
+        <gutter launcher:fixedSize="16dp" />
+        <cellSize launcher:ofAvailableSpace="0.15808" />
+    </workspaceSpec>
+
+    <!-- 584 grid height + 28 remainder space -->
+    <workspaceSpec
+        launcher:specType="height"
+        launcher:maxAvailableSize="612dp">
+        <startPadding launcher:fixedSize="0dp" />
+        <endPadding launcher:ofRemainderSpace="1" />
+        <gutter launcher:fixedSize="16dp" />
+        <cellSize launcher:fixedSize="104dp" />
+    </workspaceSpec>
+
+    <workspaceSpec
+        launcher:specType="height"
+        launcher:maxAvailableSize="9999dp">
+        <startPadding launcher:fixedSize="8dp" />
+        <endPadding launcher:ofRemainderSpace="1" />
+        <gutter launcher:fixedSize="16dp" />
+        <cellSize launcher:fixedSize="104dp" />
+    </workspaceSpec>
+
+    <!--  TODO(b/241386436): other specs here for height ...  -->
+
+    <!-- Width spec is always the same -->
+    <workspaceSpec
+        launcher:specType="width"
+        launcher:maxAvailableSize="9999dp">
+        <startPadding launcher:fixedSize="22dp" />
+        <endPadding launcher:fixedSize="22dp" />
+        <gutter launcher:fixedSize="16dp" />
+        <cellSize launcher:ofRemainderSpace="0.25" />
+    </workspaceSpec>
+
+</workspaceSpecs>
diff --git a/res/color-v31/widgets_picker_scrim.xml b/tests/shared/AndroidManifest.xml
similarity index 73%
rename from res/color-v31/widgets_picker_scrim.xml
rename to tests/shared/AndroidManifest.xml
index 648824a..1cd0cb3 100644
--- a/res/color-v31/widgets_picker_scrim.xml
+++ b/tests/shared/AndroidManifest.xml
@@ -2,7 +2,7 @@
 <!--
 /*
 **
-** Copyright 2021, The Android Open Source Project
+** Copyright 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.
@@ -17,6 +17,5 @@
 ** limitations under the License.
 */
 -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-  <item android:color="@android:color/system_neutral1_200" android:alpha="0.8" />
-</selector>
+<manifest package="com.android.launcher3.testing.shared">
+</manifest>
diff --git a/tests/shared/com/android/launcher3/testing/shared/HotseatCellCenterRequest.java b/tests/shared/com/android/launcher3/testing/shared/HotseatCellCenterRequest.java
new file mode 100644
index 0000000..7eb035a
--- /dev/null
+++ b/tests/shared/com/android/launcher3/testing/shared/HotseatCellCenterRequest.java
@@ -0,0 +1,99 @@
+/*
+ * 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.launcher3.testing.shared;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * Request object for querying a hotseat cell region in Rect.
+ */
+public class HotseatCellCenterRequest implements TestInformationRequest {
+    public final int cellInd;
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(cellInd);
+    }
+
+    @Override
+    public String getRequestName() {
+        return TestProtocol.REQUEST_HOTSEAT_CELL_CENTER;
+    }
+
+    public static final Parcelable.Creator<HotseatCellCenterRequest> CREATOR =
+            new Parcelable.Creator<HotseatCellCenterRequest>() {
+
+                @Override
+                public HotseatCellCenterRequest createFromParcel(Parcel source) {
+                    return new HotseatCellCenterRequest(source);
+                }
+
+                @Override
+                public HotseatCellCenterRequest[] newArray(int size) {
+                    return new HotseatCellCenterRequest[size];
+                }
+            };
+
+    private HotseatCellCenterRequest(int cellInd) {
+        this.cellInd = cellInd;
+    }
+
+    private HotseatCellCenterRequest(Parcel in) {
+        this(in.readInt());
+    }
+
+    /**
+     * Create a builder for HotseatCellCenterRequest.
+     *
+     * @return HotseatCellCenterRequest builder.
+     */
+    public static HotseatCellCenterRequest.Builder builder() {
+        return new HotseatCellCenterRequest.Builder();
+    }
+
+    /**
+     * HotseatCellCenterRequest Builder.
+     */
+    public static final class Builder {
+        private int mCellInd;
+
+        private Builder() {
+            mCellInd = 0;
+        }
+
+        /**
+         * Set the index of hotseat cells.
+         */
+        public HotseatCellCenterRequest.Builder setCellInd(int i) {
+            this.mCellInd = i;
+            return this;
+        }
+
+        /**
+         * build the HotseatCellCenterRequest.
+         */
+        public HotseatCellCenterRequest build() {
+            return new HotseatCellCenterRequest(mCellInd);
+        }
+    }
+}
diff --git a/src/com/android/launcher3/ResourceUtils.java b/tests/shared/com/android/launcher3/testing/shared/ResourceUtils.java
similarity index 69%
rename from src/com/android/launcher3/ResourceUtils.java
rename to tests/shared/com/android/launcher3/testing/shared/ResourceUtils.java
index f709aca..d0ae258 100644
--- a/src/com/android/launcher3/ResourceUtils.java
+++ b/tests/shared/com/android/launcher3/testing/shared/ResourceUtils.java
@@ -14,13 +14,14 @@
  * limitations under the License.
  */
 
-package com.android.launcher3;
+package com.android.launcher3.testing.shared;
 
 import android.content.res.Resources;
 import android.util.DisplayMetrics;
 import android.util.TypedValue;
 
 public class ResourceUtils {
+    private static final float EPSILON = 0.0001f;
     public static final int DEFAULT_NAVBAR_VALUE = 48;
     public static final int INVALID_RESOURCE_HANDLE = -1;
     public static final String NAVBAR_LANDSCAPE_LEFT_RIGHT_SIZE = "navigation_bar_width";
@@ -35,6 +36,8 @@
     public static final String STATUS_BAR_HEIGHT_LANDSCAPE = "status_bar_height_landscape";
     public static final String STATUS_BAR_HEIGHT_PORTRAIT = "status_bar_height_portrait";
 
+    public static final String NAV_BAR_INTERACTION_MODE_RES_NAME = "config_navBarInteractionMode";
+
     public static int getNavbarSize(String resName, Resources res) {
         return getDimenByName(resName, res, DEFAULT_NAVBAR_VALUE);
     }
@@ -71,7 +74,25 @@
     }
 
     public static int pxFromDp(float size, DisplayMetrics metrics, float scale) {
-        return size < 0 ? INVALID_RESOURCE_HANDLE : Math.round(scale
-                * TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, size, metrics));
+        float value = scale * TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, size, metrics);
+        return size < 0 ? INVALID_RESOURCE_HANDLE : roundPxValueFromFloat(value);
+    }
+
+    /**
+     * Rounds a pixel value, taking into account floating point errors.
+     *
+     * <p>If a dp (or sp) value typically returns a half pixel, such as 20dp at a 2.625 density
+     * returning 52.5px, there is a small chance that due to floating-point errors, the value will
+     * be stored as 52.499999. As we round to the nearest pixel, this could cause a 1px difference
+     * in final values, which we correct for in this method.
+     */
+    public static int roundPxValueFromFloat(float value) {
+        float fraction = (float) (value - Math.floor(value));
+        if (Math.abs(0.5f - fraction) < EPSILON) {
+            // Note: we add for negative values as well, as Math.round brings -.5 to the next
+            // "highest" value, e.g. Math.round(-2.5) == -2 [i.e. (int)Math.floor(a + 0.5d)]
+            value += EPSILON;
+        }
+        return Math.round(value);
     }
 }
diff --git a/src/com/android/launcher3/testing/TestInformationRequest.java b/tests/shared/com/android/launcher3/testing/shared/TestInformationRequest.java
similarity index 94%
rename from src/com/android/launcher3/testing/TestInformationRequest.java
rename to tests/shared/com/android/launcher3/testing/shared/TestInformationRequest.java
index 272ae56..38282032 100644
--- a/src/com/android/launcher3/testing/TestInformationRequest.java
+++ b/tests/shared/com/android/launcher3/testing/shared/TestInformationRequest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.launcher3.testing;
+package com.android.launcher3.testing.shared;
 
 import android.os.Parcelable;
 
diff --git a/src/com/android/launcher3/testing/TestProtocol.java b/tests/shared/com/android/launcher3/testing/shared/TestProtocol.java
similarity index 73%
rename from src/com/android/launcher3/testing/TestProtocol.java
rename to tests/shared/com/android/launcher3/testing/shared/TestProtocol.java
index 3a030a8..8a25812 100644
--- a/src/com/android/launcher3/testing/TestProtocol.java
+++ b/tests/shared/com/android/launcher3/testing/shared/TestProtocol.java
@@ -14,7 +14,9 @@
  * limitations under the License.
  */
 
-package com.android.launcher3.testing;
+package com.android.launcher3.testing.shared;
+
+import android.util.Log;
 
 /**
  * Protocol for custom accessibility events for communication with UI Automation tests.
@@ -36,6 +38,7 @@
     public static final int HINT_STATE_ORDINAL = 7;
     public static final int HINT_STATE_TWO_BUTTON_ORDINAL = 8;
     public static final int OVERVIEW_SPLIT_SELECT_ORDINAL = 9;
+    public static final int EDIT_MODE_STATE_ORDINAL = 10;
     public static final String TAPL_EVENTS_TAG = "TaplEvents";
     public static final String SEQUENCE_MAIN = "Main";
     public static final String SEQUENCE_TIS = "TIS";
@@ -63,6 +66,8 @@
                 return "Hint2Button";
             case OVERVIEW_SPLIT_SELECT_ORDINAL:
                 return "OverviewSplitSelect";
+            case EDIT_MODE_STATE_ORDINAL:
+                return "EditMode";
             default:
                 return "Unknown";
         }
@@ -84,36 +89,50 @@
     public static final String REQUEST_UNFREEZE_APP_LIST = "unfreeze-app-list";
     public static final String REQUEST_ENABLE_MANUAL_TASKBAR_STASHING = "enable-taskbar-stashing";
     public static final String REQUEST_DISABLE_MANUAL_TASKBAR_STASHING = "disable-taskbar-stashing";
+    public static final String REQUEST_ENABLE_BLOCK_TIMEOUT = "enable-block-timeout";
+    public static final String REQUEST_DISABLE_BLOCK_TIMEOUT = "disable-block-timeout";
+    public static final String REQUEST_ENABLE_TRANSIENT_TASKBAR = "enable-transient-taskbar";
+    public static final String REQUEST_DISABLE_TRANSIENT_TASKBAR = "disable-transient-taskbar";
     public static final String REQUEST_UNSTASH_TASKBAR_IF_STASHED = "unstash-taskbar-if-stashed";
     public static final String REQUEST_STASHED_TASKBAR_HEIGHT = "stashed-taskbar-height";
+    public static final String REQUEST_STASHED_TASKBAR_SCALE = "taskbar-stash-handle-scale";
+    public static final String REQUEST_RECREATE_TASKBAR = "recreate-taskbar";
     public static final String REQUEST_APP_LIST_FREEZE_FLAGS = "app-list-freeze-flags";
     public static final String REQUEST_APPS_LIST_SCROLL_Y = "apps-list-scroll-y";
+    public static final String REQUEST_TASKBAR_APPS_LIST_SCROLL_Y = "taskbar-apps-list-scroll-y";
     public static final String REQUEST_WIDGETS_SCROLL_Y = "widgets-scroll-y";
     public static final String REQUEST_TARGET_INSETS = "target-insets";
     public static final String REQUEST_WINDOW_INSETS = "window-insets";
     public static final String REQUEST_PID = "pid";
     public static final String REQUEST_FORCE_GC = "gc";
-    public static final String REQUEST_VIEW_LEAK = "view-leak";
     public static final String REQUEST_RECENT_TASKS_LIST = "recent-tasks-list";
     public static final String REQUEST_START_EVENT_LOGGING = "start-event-logging";
     public static final String REQUEST_GET_TEST_EVENTS = "get-test-events";
     public static final String REQUEST_GET_HAD_NONTEST_EVENTS = "get-had-nontest-events";
     public static final String REQUEST_STOP_EVENT_LOGGING = "stop-event-logging";
     public static final String REQUEST_CLEAR_DATA = "clear-data";
-    public static final String REQUEST_USE_TEST_WORKSPACE_LAYOUT = "use-test-workspace-layout";
-    public static final String REQUEST_USE_DEFAULT_WORKSPACE_LAYOUT =
-            "use-default-workspace-layout";
     public static final String REQUEST_HOTSEAT_ICON_NAMES = "get-hotseat-icon-names";
     public static final String REQUEST_IS_TABLET = "is-tablet";
     public static final String REQUEST_IS_TWO_PANELS = "is-two-panel";
     public static final String REQUEST_START_DRAG_THRESHOLD = "start-drag-threshold";
+    public static final String REQUEST_SHELL_DRAG_READY = "shell-drag-ready";
     public static final String REQUEST_GET_ACTIVITIES_CREATED_COUNT =
             "get-activities-created-count";
     public static final String REQUEST_GET_ACTIVITIES = "get-activities";
     public static final String REQUEST_HAS_TIS = "has-touch-interaction-service";
+    public static final String REQUEST_TASKBAR_ALL_APPS_TOP_PADDING =
+            "taskbar-all-apps-top-padding";
+    public static final String REQUEST_ALL_APPS_TOP_PADDING = "all-apps-top-padding";
+    public static final String REQUEST_ALL_APPS_BOTTOM_PADDING = "all-apps-bottom-padding";
 
     public static final String REQUEST_WORKSPACE_CELL_LAYOUT_SIZE = "workspace-cell-layout-size";
     public static final String REQUEST_WORKSPACE_CELL_CENTER = "workspace-cell-center";
+    public static final String REQUEST_WORKSPACE_COLUMNS_ROWS = "workspace-columns-rows";
+
+    public static final String REQUEST_WORKSPACE_CURRENT_PAGE_INDEX =
+            "workspace-current-page-index";
+
+    public static final String REQUEST_HOTSEAT_CELL_CENTER = "hotseat-cell-center";
 
     public static final String REQUEST_GET_FOCUSED_TASK_HEIGHT_FOR_TABLET =
             "get-focused-task-height-for-tablet";
@@ -121,9 +140,8 @@
             "get-grid-task-size-rect-for-tablet";
     public static final String REQUEST_GET_OVERVIEW_PAGE_SPACING = "get-overview-page-spacing";
     public static final String REQUEST_ENABLE_ROTATION = "enable_rotation";
-
-    public static Long sForcePauseTimeout;
-    public static final String REQUEST_SET_FORCE_PAUSE_TIMEOUT = "set-force-pause-timeout";
+    public static final String REQUEST_ENABLE_SUGGESTION = "enable-suggestion";
+    public static final String REQUEST_MODEL_QUEUE_CLEARED = "model-queue-cleared";
 
     public static boolean sDebugTracing = false;
     public static final String REQUEST_ENABLE_DEBUG_TRACING = "enable-debug-tracing";
@@ -134,9 +152,19 @@
     public static final String REQUEST_MOCK_SENSOR_ROTATION = "mock-sensor-rotation";
 
     public static final String PERMANENT_DIAG_TAG = "TaplTarget";
-    public static final String NO_DROP_TARGET = "b/195031154";
-    public static final String NULL_INT_SET = "b/200572078";
-    public static final String MISSING_PROMISE_ICON = "b/202985412";
-    public static final String BAD_STATE = "b/223498680";
-    public static final String TASKBAR_IN_APP_STATE = "b/227657604";
+    public static final String WORK_TAB_MISSING = "b/243688989";
+    public static final String TWO_TASKBAR_LONG_CLICKS = "b/262282528";
+
+    public static final String REQUEST_EMULATE_DISPLAY = "emulate-display";
+    public static final String REQUEST_STOP_EMULATE_DISPLAY = "stop-emulate-display";
+    public static final String REQUEST_IS_EMULATE_DISPLAY_RUNNING = "is-emulate-display-running";
+    public static final String REQUEST_EMULATE_PRINT_DEVICE = "emulate-print-device";
+
+    /** Logs {@link Log#d(String, String)} if {@link #sDebugTracing} is true. */
+    public static void testLogD(String tag, String message) {
+        if (!sDebugTracing) {
+            return;
+        }
+        Log.d(tag, message);
+    }
 }
diff --git a/src/com/android/launcher3/testing/WorkspaceCellCenterRequest.java b/tests/shared/com/android/launcher3/testing/shared/WorkspaceCellCenterRequest.java
similarity index 97%
rename from src/com/android/launcher3/testing/WorkspaceCellCenterRequest.java
rename to tests/shared/com/android/launcher3/testing/shared/WorkspaceCellCenterRequest.java
index 71ab09f..e2cd8ea 100644
--- a/src/com/android/launcher3/testing/WorkspaceCellCenterRequest.java
+++ b/tests/shared/com/android/launcher3/testing/shared/WorkspaceCellCenterRequest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.launcher3.testing;
+package com.android.launcher3.testing.shared;
 
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -124,7 +124,7 @@
          * Set span Height in cells
          */
         public WorkspaceCellCenterRequest.Builder setSpanY(int y) {
-            this.mCellY = y;
+            this.mSpanY = y;
             return this;
         }
 
diff --git a/tests/src/com/android/launcher3/AbstractDeviceProfileTest.kt b/tests/src/com/android/launcher3/AbstractDeviceProfileTest.kt
new file mode 100644
index 0000000..3de4d55
--- /dev/null
+++ b/tests/src/com/android/launcher3/AbstractDeviceProfileTest.kt
@@ -0,0 +1,290 @@
+/*
+ * 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.launcher3
+
+import android.content.Context
+import android.content.res.Configuration
+import android.graphics.Point
+import android.graphics.Rect
+import android.util.DisplayMetrics
+import android.view.Surface
+import androidx.test.core.app.ApplicationProvider
+import com.android.launcher3.util.DisplayController
+import com.android.launcher3.util.NavigationMode
+import com.android.launcher3.util.WindowBounds
+import com.android.launcher3.util.window.CachedDisplayInfo
+import com.android.launcher3.util.window.WindowManagerProxy
+import kotlin.math.max
+import kotlin.math.min
+import org.junit.After
+import org.junit.Before
+import org.mockito.ArgumentMatchers
+import org.mockito.Mockito.mock
+import org.mockito.Mockito.`when` as whenever
+
+/**
+ * This is an abstract class for DeviceProfile tests that create an InvariantDeviceProfile based on
+ * a real device spec.
+ *
+ * For an implementation that mocks InvariantDeviceProfile, use [FakeInvariantDeviceProfileTest]
+ */
+abstract class AbstractDeviceProfileTest {
+    protected var context: Context? = null
+    protected open val runningContext: Context = ApplicationProvider.getApplicationContext()
+    private var displayController: DisplayController = mock(DisplayController::class.java)
+    private var windowManagerProxy: WindowManagerProxy = mock(WindowManagerProxy::class.java)
+    private lateinit var originalDisplayController: DisplayController
+    private lateinit var originalWindowManagerProxy: WindowManagerProxy
+
+    @Before
+    open fun setUp() {
+        val appContext: Context = ApplicationProvider.getApplicationContext()
+        originalWindowManagerProxy = WindowManagerProxy.INSTANCE.get(appContext)
+        originalDisplayController = DisplayController.INSTANCE.get(appContext)
+        WindowManagerProxy.INSTANCE.initializeForTesting(windowManagerProxy)
+        DisplayController.INSTANCE.initializeForTesting(displayController)
+    }
+
+    @After
+    open fun tearDown() {
+        WindowManagerProxy.INSTANCE.initializeForTesting(originalWindowManagerProxy)
+        DisplayController.INSTANCE.initializeForTesting(originalDisplayController)
+    }
+
+    class DeviceSpec(
+        val naturalSize: Pair<Int, Int>,
+        var densityDpi: Int,
+        val statusBarNaturalPx: Int,
+        val statusBarRotatedPx: Int,
+        val gesturePx: Int,
+        val cutoutPx: Int
+    )
+
+    open val deviceSpecs =
+        mapOf(
+            "phone" to
+                DeviceSpec(
+                    Pair(1080, 2400),
+                    densityDpi = 420,
+                    statusBarNaturalPx = 118,
+                    statusBarRotatedPx = 74,
+                    gesturePx = 63,
+                    cutoutPx = 118
+                ),
+            "tablet" to
+                DeviceSpec(
+                    Pair(2560, 1600),
+                    densityDpi = 320,
+                    statusBarNaturalPx = 104,
+                    statusBarRotatedPx = 104,
+                    gesturePx = 0,
+                    cutoutPx = 0
+                ),
+            "twopanel-phone" to
+                DeviceSpec(
+                    Pair(1080, 2092),
+                    densityDpi = 420,
+                    statusBarNaturalPx = 133,
+                    statusBarRotatedPx = 110,
+                    gesturePx = 63,
+                    cutoutPx = 133
+                ),
+            "twopanel-tablet" to
+                DeviceSpec(
+                    Pair(2208, 1840),
+                    densityDpi = 420,
+                    statusBarNaturalPx = 110,
+                    statusBarRotatedPx = 133,
+                    gesturePx = 0,
+                    cutoutPx = 0
+                )
+        )
+
+    protected fun initializeVarsForPhone(
+        deviceSpec: DeviceSpec,
+        isGestureMode: Boolean = true,
+        isVerticalBar: Boolean = false
+    ) {
+        val (naturalX, naturalY) = deviceSpec.naturalSize
+        val windowsBounds = phoneWindowsBounds(deviceSpec, isGestureMode, naturalX, naturalY)
+        val displayInfo =
+            CachedDisplayInfo(Point(naturalX, naturalY), Surface.ROTATION_0, Rect(0, 0, 0, 0))
+        val perDisplayBoundsCache = mapOf(displayInfo to windowsBounds)
+
+        initializeCommonVars(
+            perDisplayBoundsCache,
+            displayInfo,
+            rotation = if (isVerticalBar) Surface.ROTATION_90 else Surface.ROTATION_0,
+            isGestureMode,
+            densityDpi = deviceSpec.densityDpi
+        )
+    }
+
+    protected fun initializeVarsForTablet(
+        deviceSpec: DeviceSpec,
+        isLandscape: Boolean = false,
+        isGestureMode: Boolean = true
+    ) {
+        val (naturalX, naturalY) = deviceSpec.naturalSize
+        val windowsBounds = tabletWindowsBounds(deviceSpec, naturalX, naturalY)
+        val displayInfo =
+            CachedDisplayInfo(Point(naturalX, naturalY), Surface.ROTATION_0, Rect(0, 0, 0, 0))
+        val perDisplayBoundsCache = mapOf(displayInfo to windowsBounds)
+
+        initializeCommonVars(
+            perDisplayBoundsCache,
+            displayInfo,
+            rotation = if (isLandscape) Surface.ROTATION_0 else Surface.ROTATION_90,
+            isGestureMode,
+            densityDpi = deviceSpec.densityDpi
+        )
+    }
+
+    protected fun initializeVarsForTwoPanel(
+        deviceTabletSpec: DeviceSpec,
+        deviceSpec: DeviceSpec,
+        isLandscape: Boolean = false,
+        isGestureMode: Boolean = true
+    ) {
+        val (tabletNaturalX, tabletNaturalY) = deviceTabletSpec.naturalSize
+        val tabletWindowsBounds =
+            tabletWindowsBounds(deviceTabletSpec, tabletNaturalX, tabletNaturalY)
+        val tabletDisplayInfo =
+            CachedDisplayInfo(
+                Point(tabletNaturalX, tabletNaturalY),
+                Surface.ROTATION_0,
+                Rect(0, 0, 0, 0)
+            )
+
+        val (phoneNaturalX, phoneNaturalY) = deviceSpec.naturalSize
+        val phoneWindowsBounds =
+            phoneWindowsBounds(deviceSpec, isGestureMode, phoneNaturalX, phoneNaturalY)
+        val phoneDisplayInfo =
+            CachedDisplayInfo(
+                Point(phoneNaturalX, phoneNaturalY),
+                Surface.ROTATION_0,
+                Rect(0, 0, 0, 0)
+            )
+
+        val perDisplayBoundsCache =
+            mapOf(tabletDisplayInfo to tabletWindowsBounds, phoneDisplayInfo to phoneWindowsBounds)
+
+        initializeCommonVars(
+            perDisplayBoundsCache,
+            tabletDisplayInfo,
+            rotation = if (isLandscape) Surface.ROTATION_0 else Surface.ROTATION_90,
+            isGestureMode,
+            densityDpi = deviceTabletSpec.densityDpi
+        )
+    }
+
+    private fun phoneWindowsBounds(
+        deviceSpec: DeviceSpec,
+        isGestureMode: Boolean,
+        naturalX: Int,
+        naturalY: Int
+    ): Array<WindowBounds> {
+        val buttonsNavHeight = Utilities.dpToPx(48f, deviceSpec.densityDpi)
+
+        val rotation0Insets =
+            Rect(
+                0,
+                max(deviceSpec.statusBarNaturalPx, deviceSpec.cutoutPx),
+                0,
+                if (isGestureMode) deviceSpec.gesturePx else buttonsNavHeight
+            )
+        val rotation90Insets =
+            Rect(
+                deviceSpec.cutoutPx,
+                deviceSpec.statusBarRotatedPx,
+                if (isGestureMode) 0 else buttonsNavHeight,
+                if (isGestureMode) deviceSpec.gesturePx else 0
+            )
+        val rotation180Insets =
+            Rect(
+                0,
+                deviceSpec.statusBarNaturalPx,
+                0,
+                max(
+                    if (isGestureMode) deviceSpec.gesturePx else buttonsNavHeight,
+                    deviceSpec.cutoutPx
+                )
+            )
+        val rotation270Insets =
+            Rect(
+                if (isGestureMode) 0 else buttonsNavHeight,
+                deviceSpec.statusBarRotatedPx,
+                deviceSpec.cutoutPx,
+                if (isGestureMode) deviceSpec.gesturePx else 0
+            )
+
+        return arrayOf(
+            WindowBounds(Rect(0, 0, naturalX, naturalY), rotation0Insets, Surface.ROTATION_0),
+            WindowBounds(Rect(0, 0, naturalY, naturalX), rotation90Insets, Surface.ROTATION_90),
+            WindowBounds(Rect(0, 0, naturalX, naturalY), rotation180Insets, Surface.ROTATION_180),
+            WindowBounds(Rect(0, 0, naturalY, naturalX), rotation270Insets, Surface.ROTATION_270)
+        )
+    }
+
+    private fun tabletWindowsBounds(
+        deviceSpec: DeviceSpec,
+        naturalX: Int,
+        naturalY: Int
+    ): Array<WindowBounds> {
+        val naturalInsets = Rect(0, deviceSpec.statusBarNaturalPx, 0, 0)
+        val rotatedInsets = Rect(0, deviceSpec.statusBarRotatedPx, 0, 0)
+
+        return arrayOf(
+            WindowBounds(Rect(0, 0, naturalX, naturalY), naturalInsets, Surface.ROTATION_0),
+            WindowBounds(Rect(0, 0, naturalY, naturalX), rotatedInsets, Surface.ROTATION_90),
+            WindowBounds(Rect(0, 0, naturalX, naturalY), naturalInsets, Surface.ROTATION_180),
+            WindowBounds(Rect(0, 0, naturalY, naturalX), rotatedInsets, Surface.ROTATION_270)
+        )
+    }
+
+    private fun initializeCommonVars(
+        perDisplayBoundsCache: Map<CachedDisplayInfo, Array<WindowBounds>>,
+        displayInfo: CachedDisplayInfo,
+        rotation: Int,
+        isGestureMode: Boolean = true,
+        densityDpi: Int
+    ) {
+        val windowsBounds = perDisplayBoundsCache[displayInfo]!!
+        val realBounds = windowsBounds[rotation]
+        whenever(windowManagerProxy.getDisplayInfo(ArgumentMatchers.any())).thenReturn(displayInfo)
+        whenever(windowManagerProxy.getRealBounds(ArgumentMatchers.any(), ArgumentMatchers.any()))
+            .thenReturn(realBounds)
+        whenever(windowManagerProxy.getRotation(ArgumentMatchers.any())).thenReturn(rotation)
+        whenever(windowManagerProxy.getNavigationMode(ArgumentMatchers.any()))
+            .thenReturn(
+                if (isGestureMode) NavigationMode.NO_BUTTON else NavigationMode.THREE_BUTTONS
+            )
+
+        val density = densityDpi / DisplayMetrics.DENSITY_DEFAULT.toFloat()
+        val config =
+            Configuration(runningContext.resources.configuration).apply {
+                this.densityDpi = densityDpi
+                screenWidthDp = (realBounds.bounds.width() / density).toInt()
+                screenHeightDp = (realBounds.bounds.height() / density).toInt()
+                smallestScreenWidthDp = min(screenWidthDp, screenHeightDp)
+            }
+        context = runningContext.createConfigurationContext(config)
+
+        val info = DisplayController.Info(context, windowManagerProxy, perDisplayBoundsCache)
+        whenever(displayController.info).thenReturn(info)
+        whenever(displayController.isTransientTaskbar).thenReturn(isGestureMode)
+    }
+}
diff --git a/tests/src/com/android/launcher3/DeleteDropTargetTest.kt b/tests/src/com/android/launcher3/DeleteDropTargetTest.kt
new file mode 100644
index 0000000..bcfb90b
--- /dev/null
+++ b/tests/src/com/android/launcher3/DeleteDropTargetTest.kt
@@ -0,0 +1,40 @@
+package com.android.launcher3
+
+import android.content.Context
+import androidx.test.core.app.ApplicationProvider.getApplicationContext
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.launcher3.Utilities.*
+import com.android.launcher3.util.ActivityContextWrapper
+import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class DeleteDropTargetTest {
+
+    private var mContext: Context = ActivityContextWrapper(getApplicationContext())
+
+    // Use a non-abstract class implementation
+    private var buttonDropTarget: DeleteDropTarget = DeleteDropTarget(mContext)
+
+    @Before
+    fun setup() {
+        enableRunningInTestHarnessForTests()
+    }
+
+    @Test
+    fun isTextClippedVerticallyTest() {
+        buttonDropTarget.updateText("My Test")
+        buttonDropTarget.setPadding(0, 0, 0, 0)
+        buttonDropTarget.setTextMultiLine(false)
+
+        // No space for text
+        assertThat(buttonDropTarget.isTextClippedVertically(30)).isTrue()
+
+        // A lot of space for text so the text should not be clipped
+        assertThat(buttonDropTarget.isTextClippedVertically(100)).isFalse()
+    }
+}
diff --git a/tests/src/com/android/launcher3/DeviceProfileBaseTest.kt b/tests/src/com/android/launcher3/DeviceProfileBaseTest.kt
deleted file mode 100644
index 6d0fcb6..0000000
--- a/tests/src/com/android/launcher3/DeviceProfileBaseTest.kt
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * 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.launcher3
-
-import android.content.Context
-import android.graphics.PointF
-import androidx.test.core.app.ApplicationProvider
-import com.android.launcher3.util.DisplayController.Info
-import com.android.launcher3.util.WindowBounds
-import org.junit.Before
-import org.mockito.ArgumentMatchers.any
-import org.mockito.Mockito.mock
-import org.mockito.Mockito.`when` as whenever
-
-abstract class DeviceProfileBaseTest {
-
-    protected var context: Context? = null
-    protected var inv: InvariantDeviceProfile? = null
-    protected var info: Info = mock(Info::class.java)
-    protected var windowBounds: WindowBounds? = null
-    protected var isMultiWindowMode: Boolean = false
-    protected var transposeLayoutWithOrientation: Boolean = false
-    protected var useTwoPanels: Boolean = false
-    protected var isGestureMode: Boolean = true
-
-    @Before
-    fun setUp() {
-        context = ApplicationProvider.getApplicationContext()
-        // make sure to reset values
-        useTwoPanels = false
-        isGestureMode = true
-    }
-
-    protected fun newDP(): DeviceProfile = DeviceProfile(
-        context,
-        inv,
-        info,
-        windowBounds,
-        isMultiWindowMode,
-        transposeLayoutWithOrientation,
-        useTwoPanels,
-        isGestureMode
-    )
-
-    protected fun initializeVarsForPhone(isLandscape: Boolean = false) {
-        val (x, y) = if (isLandscape)
-            Pair(3120, 1440)
-        else
-            Pair(1440, 3120)
-
-        windowBounds = WindowBounds(x, y, x, y - 100, 0)
-
-        whenever(info.isTablet(any())).thenReturn(false)
-        whenever(info.getDensityDpi()).thenReturn(560)
-
-        inv = newScalableInvariantDeviceProfile()
-    }
-
-    protected fun initializeVarsForTablet(isLandscape: Boolean = false) {
-        val (x, y) = if (isLandscape)
-            Pair(2560, 1600)
-        else
-            Pair(1600, 2560)
-
-        windowBounds = WindowBounds(x, y, x, y - 100, 0)
-
-        whenever(info.isTablet(any())).thenReturn(true)
-        whenever(info.getDensityDpi()).thenReturn(320)
-
-        inv = newScalableInvariantDeviceProfile()
-    }
-
-    /**
-     * A very generic grid, just to make qsb tests work. For real calculations, make sure to use
-     * values that better represent a real grid.
-     */
-    protected fun newScalableInvariantDeviceProfile(): InvariantDeviceProfile =
-        InvariantDeviceProfile().apply {
-            isScalable = true
-            numColumns = 4
-            numRows = 4
-            numShownHotseatIcons = 4
-            numDatabaseHotseatIcons = 6
-            numShrunkenHotseatIcons = 5
-            horizontalMargin = FloatArray(4) { 22f }
-            borderSpaces = listOf(
-                PointF(16f, 16f),
-                PointF(16f, 16f),
-                PointF(16f, 16f),
-                PointF(16f, 16f)
-            ).toTypedArray()
-            allAppsBorderSpaces = listOf(
-                PointF(16f, 16f),
-                PointF(16f, 16f),
-                PointF(16f, 16f),
-                PointF(16f, 16f)
-            ).toTypedArray()
-            hotseatBorderSpaces = FloatArray(4) { 16f }
-            hotseatColumnSpan = IntArray(4) { 4 }
-            iconSize = FloatArray(4) { 56f }
-            allAppsIconSize = FloatArray(4) { 56f }
-            iconTextSize = FloatArray(4) { 14f }
-            allAppsIconTextSize = FloatArray(4) { 14f }
-            minCellSize = listOf(
-                PointF(64f, 83f),
-                PointF(64f, 83f),
-                PointF(64f, 83f),
-                PointF(64f, 83f)
-            ).toTypedArray()
-            allAppsCellSize = listOf(
-                PointF(64f, 83f),
-                PointF(64f, 83f),
-                PointF(64f, 83f),
-                PointF(64f, 83f)
-            ).toTypedArray()
-            inlineQsb = booleanArrayOf(
-                false,
-                false,
-                false,
-                false
-            )
-        }
-}
\ No newline at end of file
diff --git a/tests/src/com/android/launcher3/DeviceProfileGridDimensionsTest.kt b/tests/src/com/android/launcher3/DeviceProfileGridDimensionsTest.kt
deleted file mode 100644
index 80259a5..0000000
--- a/tests/src/com/android/launcher3/DeviceProfileGridDimensionsTest.kt
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * 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.launcher3
-
-import android.graphics.PointF
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.launcher3.util.WindowBounds
-import com.google.common.truth.Truth.assertThat
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.mockito.ArgumentMatchers
-import org.mockito.Mockito.`when` as whenever
-
-/**
- * Test for [DeviceProfile] grid dimensions.
- *
- * This includes workspace, cell layout, shortcut and widget container, cell sizes, etc.
- */
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class DeviceProfileGridDimensionsTest : DeviceProfileBaseTest() {
-
-    @Test
-    fun getCellLayoutWidth_twoPanelLandscapeScalable4By4GridTablet_equalsSinglePanelWidth() {
-        val tabletWidth = 2560
-        val tabletHeight = 1600
-        val availableWidth = 2560
-        val availableHeight = 1500
-        windowBounds = WindowBounds(tabletWidth, tabletHeight, availableWidth, availableHeight, 0)
-        useTwoPanels = true
-        whenever(info.isTablet(ArgumentMatchers.any())).thenReturn(true)
-        whenever(info.densityDpi).thenReturn(320)
-        inv = newScalableInvariantDeviceProfile()
-
-        val dp = newDP()
-
-        val expectedWorkspaceWidth = availableWidth
-        val expectedCellLayoutWidth =
-                (expectedWorkspaceWidth - (dp.workspacePadding.right + dp.workspacePadding.left)) /
-                        dp.panelCount
-        assertThat(dp.cellLayoutWidth).isEqualTo(expectedCellLayoutWidth)
-    }
-
-    @Test
-    fun getCellLayoutHeight_twoPanelLandscapeScalable4By4GridTablet_equalsSinglePanelHeight() {
-        val tabletWidth = 2560
-        val tabletHeight = 1600
-        val availableWidth = 2560
-        val availableHeight = 1500
-        windowBounds = WindowBounds(tabletWidth, tabletHeight, availableWidth, availableHeight, 0)
-        useTwoPanels = true
-        whenever(info.isTablet(ArgumentMatchers.any())).thenReturn(true)
-        whenever(info.densityDpi).thenReturn(320)
-        inv = newScalableInvariantDeviceProfile()
-
-        val dp = newDP()
-
-        val expectedWorkspaceHeight = availableHeight
-        val expectedCellLayoutHeight =
-                expectedWorkspaceHeight - (dp.workspacePadding.top + dp.workspacePadding.bottom)
-        assertThat(dp.cellLayoutHeight).isEqualTo(expectedCellLayoutHeight)
-    }
-
-    @Test
-    fun getCellSize_twoPanelLandscapeScalable4By4GridTablet_equalsSinglePanelWidth() {
-        val tabletWidth = 2560
-        val tabletHeight = 1600
-        val availableWidth = 2560
-        val availableHeight = 1500
-        windowBounds = WindowBounds(tabletWidth, tabletHeight, availableWidth, availableHeight, 0)
-        useTwoPanels = true
-        whenever(info.isTablet(ArgumentMatchers.any())).thenReturn(true)
-        whenever(info.densityDpi).thenReturn(320)
-        inv = newScalableInvariantDeviceProfile()
-
-        val dp = newDP()
-
-        val expectedWorkspaceWidth = availableWidth
-        val expectedCellLayoutWidth =
-                (expectedWorkspaceWidth - (dp.workspacePadding.right + dp.workspacePadding.left)) /
-                        dp.panelCount
-        val expectedShortcutAndWidgetContainerWidth =
-                expectedCellLayoutWidth -
-                        (dp.cellLayoutPaddingPx.left + dp.cellLayoutPaddingPx.right)
-        assertThat(dp.getCellSize().x).isEqualTo(
-                (expectedShortcutAndWidgetContainerWidth -
-                        ((inv!!.numColumns - 1) * dp.cellLayoutBorderSpacePx.x)) / inv!!.numColumns)
-        val expectedWorkspaceHeight = availableHeight
-        val expectedCellLayoutHeight =
-                expectedWorkspaceHeight - (dp.workspacePadding.top + dp.workspacePadding.bottom)
-        val expectedShortcutAndWidgetContainerHeight = expectedCellLayoutHeight -
-                (dp.cellLayoutPaddingPx.top + dp.cellLayoutPaddingPx.bottom)
-        assertThat(dp.getCellSize().y).isEqualTo(
-                (expectedShortcutAndWidgetContainerHeight -
-                        ((inv!!.numRows - 1) * dp.cellLayoutBorderSpacePx.y)) / inv!!.numRows)
-    }
-
-    @Test
-    fun getPanelCount_twoPanelLandscapeScalable4By4GridTablet_equalsTwoPanels() {
-        val tabletWidth = 2560
-        val tabletHeight = 1600
-        val availableWidth = 2560
-        val availableHeight = 1500
-        windowBounds = WindowBounds(tabletWidth, tabletHeight, availableWidth, availableHeight, 0)
-        useTwoPanels = true
-        whenever(info.isTablet(ArgumentMatchers.any())).thenReturn(true)
-        whenever(info.densityDpi).thenReturn(320)
-        inv = newScalableInvariantDeviceProfile()
-
-        val dp = newDP()
-
-        assertThat(dp.panelCount).isEqualTo(2)
-    }
-}
\ No newline at end of file
diff --git a/tests/src/com/android/launcher3/FakeInvariantDeviceProfileTest.kt b/tests/src/com/android/launcher3/FakeInvariantDeviceProfileTest.kt
new file mode 100644
index 0000000..c22cf40
--- /dev/null
+++ b/tests/src/com/android/launcher3/FakeInvariantDeviceProfileTest.kt
@@ -0,0 +1,333 @@
+/*
+ * 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.launcher3
+
+import android.content.Context
+import android.graphics.PointF
+import android.graphics.Rect
+import android.util.SparseArray
+import androidx.test.core.app.ApplicationProvider
+import com.android.launcher3.DeviceProfile.DEFAULT_DIMENSION_PROVIDER
+import com.android.launcher3.DeviceProfile.DEFAULT_PROVIDER
+import com.android.launcher3.util.DisplayController.Info
+import com.android.launcher3.util.WindowBounds
+import java.io.PrintWriter
+import java.io.StringWriter
+import org.junit.Before
+import org.mockito.ArgumentMatchers.any
+import org.mockito.Mockito.mock
+import org.mockito.Mockito.`when` as whenever
+
+/**
+ * This is an abstract class for DeviceProfile tests that don't need the real Context and mock an
+ * InvariantDeviceProfile instead of creating one based on real values.
+ *
+ * For an implementation that creates InvariantDeviceProfile, use [AbstractDeviceProfileTest]
+ */
+abstract class FakeInvariantDeviceProfileTest {
+
+    protected var context: Context? = null
+    protected var inv: InvariantDeviceProfile? = null
+    protected var info: Info = mock(Info::class.java)
+    protected var windowBounds: WindowBounds? = null
+    protected var isMultiWindowMode: Boolean = false
+    protected var transposeLayoutWithOrientation: Boolean = false
+    protected var useTwoPanels: Boolean = false
+    protected var isGestureMode: Boolean = true
+
+    @Before
+    fun setUp() {
+        context = ApplicationProvider.getApplicationContext()
+        // make sure to reset values
+        useTwoPanels = false
+        isGestureMode = true
+    }
+
+    protected fun newDP(): DeviceProfile =
+        DeviceProfile(
+            context,
+            inv,
+            info,
+            windowBounds,
+            SparseArray(),
+            isMultiWindowMode,
+            transposeLayoutWithOrientation,
+            useTwoPanels,
+            isGestureMode,
+            DEFAULT_PROVIDER,
+            DEFAULT_DIMENSION_PROVIDER
+        )
+
+    protected fun initializeVarsForPhone(
+        isGestureMode: Boolean = true,
+        isVerticalBar: Boolean = false
+    ) {
+        val (x, y) = if (isVerticalBar) Pair(2400, 1080) else Pair(1080, 2400)
+
+        windowBounds =
+            WindowBounds(
+                Rect(0, 0, x, y),
+                Rect(
+                    if (isVerticalBar) 118 else 0,
+                    if (isVerticalBar) 74 else 118,
+                    if (!isGestureMode && isVerticalBar) 126 else 0,
+                    if (isGestureMode) 63 else if (isVerticalBar) 0 else 126
+                )
+            )
+
+        whenever(info.isTablet(any())).thenReturn(false)
+        whenever(info.getDensityDpi()).thenReturn(420)
+        whenever(info.smallestSizeDp(any())).thenReturn(411f)
+
+        this.isGestureMode = isGestureMode
+        transposeLayoutWithOrientation = true
+
+        inv =
+            InvariantDeviceProfile().apply {
+                numRows = 5
+                numColumns = 4
+                numSearchContainerColumns = 4
+
+                iconSize = floatArrayOf(60f, 54f, 60f, 60f)
+                iconTextSize = FloatArray(4) { 14f }
+                deviceType = InvariantDeviceProfile.TYPE_PHONE
+
+                minCellSize =
+                    listOf(
+                            PointF(80f, 104f),
+                            PointF(80f, 104f),
+                            PointF(80f, 104f),
+                            PointF(80f, 104f)
+                        )
+                        .toTypedArray()
+
+                borderSpaces =
+                    listOf(PointF(16f, 16f), PointF(16f, 16f), PointF(16f, 16f), PointF(16f, 16f))
+                        .toTypedArray()
+
+                numFolderRows = 3
+                numFolderColumns = 3
+                folderStyle = R.style.FolderStyleDefault
+
+                inlineNavButtonsEndSpacing = R.dimen.taskbar_button_margin_split
+
+                horizontalMargin = FloatArray(4) { 22f }
+
+                allAppsStyle = R.style.AllAppsStyleDefault
+                allAppsCellSize =
+                    listOf(
+                            PointF(80f, 104f),
+                            PointF(80f, 104f),
+                            PointF(80f, 104f),
+                            PointF(80f, 104f)
+                        )
+                        .toTypedArray()
+                allAppsIconSize = floatArrayOf(60f, 60f, 60f, 60f)
+                allAppsIconTextSize = FloatArray(4) { 14f }
+                allAppsBorderSpaces =
+                    listOf(PointF(16f, 16f), PointF(16f, 16f), PointF(16f, 16f), PointF(16f, 16f))
+                        .toTypedArray()
+
+                numShownHotseatIcons = 4
+
+                numDatabaseHotseatIcons = 4
+
+                hotseatColumnSpan = IntArray(4) { 4 }
+                hotseatBarBottomSpace = FloatArray(4) { 48f }
+                hotseatQsbSpace = FloatArray(4) { 36f }
+
+                numAllAppsColumns = 4
+
+                isScalable = true
+
+                transientTaskbarIconSize = FloatArray(4) { 44f }
+                startAlignTaskbar = BooleanArray(4) { false }
+
+                inlineQsb = BooleanArray(4) { false }
+
+                devicePaddingId = R.xml.paddings_handhelds
+            }
+    }
+
+    protected fun initializeVarsForTablet(
+        isLandscape: Boolean = false,
+        isGestureMode: Boolean = true
+    ) {
+        val (x, y) = if (isLandscape) Pair(2560, 1600) else Pair(1600, 2560)
+
+        windowBounds = WindowBounds(Rect(0, 0, x, y), Rect(0, 104, 0, 0))
+
+        whenever(info.isTablet(any())).thenReturn(true)
+        whenever(info.getDensityDpi()).thenReturn(320)
+        whenever(info.smallestSizeDp(any())).thenReturn(800f)
+
+        this.isGestureMode = isGestureMode
+        useTwoPanels = false
+
+        inv =
+            InvariantDeviceProfile().apply {
+                numRows = 5
+                numColumns = 6
+                numSearchContainerColumns = 3
+
+                iconSize = FloatArray(4) { 60f }
+                iconTextSize = FloatArray(4) { 14f }
+                deviceType = InvariantDeviceProfile.TYPE_TABLET
+
+                minCellSize =
+                    listOf(
+                            PointF(102f, 120f),
+                            PointF(120f, 104f),
+                            PointF(102f, 120f),
+                            PointF(102f, 120f)
+                        )
+                        .toTypedArray()
+
+                borderSpaces =
+                    listOf(PointF(16f, 64f), PointF(64f, 16f), PointF(16f, 64f), PointF(16f, 64f))
+                        .toTypedArray()
+
+                numFolderRows = 3
+                numFolderColumns = 3
+                folderStyle = R.style.FolderStyleDefault
+
+                inlineNavButtonsEndSpacing = R.dimen.taskbar_button_margin_6_5
+
+                horizontalMargin = floatArrayOf(54f, 120f, 54f, 54f)
+
+                allAppsStyle = R.style.AllAppsStyleDefault
+                allAppsCellSize =
+                    listOf(
+                            PointF(96f, 142f),
+                            PointF(126f, 126f),
+                            PointF(96f, 142f),
+                            PointF(96f, 142f)
+                        )
+                        .toTypedArray()
+                allAppsIconSize = FloatArray(4) { 60f }
+                allAppsIconTextSize = FloatArray(4) { 14f }
+                allAppsBorderSpaces =
+                    listOf(PointF(8f, 16f), PointF(16f, 16f), PointF(8f, 16f), PointF(8f, 16f))
+                        .toTypedArray()
+
+                numShownHotseatIcons = 6
+
+                numDatabaseHotseatIcons = 6
+
+                hotseatColumnSpan = intArrayOf(6, 4, 6, 6)
+                hotseatBarBottomSpace = floatArrayOf(36f, 40f, 36f, 36f)
+                hotseatQsbSpace = FloatArray(4) { 32f }
+
+                numAllAppsColumns = 6
+
+                isScalable = true
+                devicePaddingId = R.xml.paddings_6x5
+
+                transientTaskbarIconSize = FloatArray(4) { 44f }
+                startAlignTaskbar = booleanArrayOf(true, false, true, true)
+
+                inlineQsb = booleanArrayOf(false, true, false, false)
+
+                devicePaddingId = R.xml.paddings_handhelds
+            }
+    }
+
+    protected fun initializeVarsForTwoPanel(
+        isLandscape: Boolean = false,
+        isGestureMode: Boolean = true
+    ) {
+        val (x, y) = if (isLandscape) Pair(2208, 1840) else Pair(1840, 2208)
+
+        windowBounds = WindowBounds(Rect(0, 0, x, y), Rect(0, 110, 0, 0))
+
+        whenever(info.isTablet(any())).thenReturn(true)
+        whenever(info.getDensityDpi()).thenReturn(420)
+        whenever(info.smallestSizeDp(any())).thenReturn(700f)
+
+        this.isGestureMode = isGestureMode
+        useTwoPanels = true
+
+        inv =
+            InvariantDeviceProfile().apply {
+                numRows = 4
+                numColumns = 4
+                numSearchContainerColumns = 4
+
+                iconSize = floatArrayOf(60f, 52f, 52f, 60f)
+                iconTextSize = floatArrayOf(14f, 14f, 12f, 14f)
+                deviceType = InvariantDeviceProfile.TYPE_MULTI_DISPLAY
+
+                minCellSize =
+                    listOf(
+                            PointF(80f, 104f),
+                            PointF(80f, 104f),
+                            PointF(68f, 116f),
+                            PointF(80f, 102f)
+                        )
+                        .toTypedArray()
+
+                borderSpaces =
+                    listOf(PointF(16f, 16f), PointF(16f, 16f), PointF(16f, 20f), PointF(20f, 20f))
+                        .toTypedArray()
+
+                numFolderRows = 3
+                numFolderColumns = 3
+                folderStyle = R.style.FolderStyleDefault
+
+                inlineNavButtonsEndSpacing = R.dimen.taskbar_button_margin_split
+
+                horizontalMargin = floatArrayOf(21.5f, 21.5f, 22.5f, 30.5f)
+
+                allAppsStyle = R.style.AllAppsStyleDefault
+                allAppsCellSize =
+                    listOf(PointF(0f, 0f), PointF(0f, 0f), PointF(68f, 104f), PointF(80f, 104f))
+                        .toTypedArray()
+                allAppsIconSize = floatArrayOf(60f, 60f, 52f, 60f)
+                allAppsIconTextSize = floatArrayOf(14f, 14f, 12f, 14f)
+                allAppsBorderSpaces =
+                    listOf(PointF(16f, 16f), PointF(16f, 16f), PointF(16f, 28f), PointF(20f, 16f))
+                        .toTypedArray()
+
+                numShownHotseatIcons = 6
+
+                numDatabaseHotseatIcons = 6
+
+                hotseatColumnSpan = IntArray(4) { 6 }
+                hotseatBarBottomSpace = floatArrayOf(48f, 48f, 36f, 20f)
+                hotseatQsbSpace = floatArrayOf(36f, 36f, 36f, 28f)
+
+                numAllAppsColumns = 6
+                numDatabaseAllAppsColumns = 6
+
+                isScalable = true
+
+                transientTaskbarIconSize = FloatArray(4) { 44f }
+                startAlignTaskbar = BooleanArray(4) { true }
+
+                inlineQsb = booleanArrayOf(false, false, false, false)
+
+                devicePaddingId = R.xml.paddings_handhelds
+            }
+    }
+
+    fun dump(dp: DeviceProfile): String {
+        val stringWriter = StringWriter()
+        val printWriter = PrintWriter(stringWriter)
+        dp.dump(context, "", printWriter)
+        printWriter.flush()
+        return stringWriter.toString()
+    }
+}
diff --git a/tests/src/com/android/launcher3/HotseatShownIconsTest.kt b/tests/src/com/android/launcher3/HotseatShownIconsTest.kt
deleted file mode 100644
index 593239d..0000000
--- a/tests/src/com/android/launcher3/HotseatShownIconsTest.kt
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * 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.launcher3
-
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.launcher3.InvariantDeviceProfile.TYPE_MULTI_DISPLAY
-import com.android.launcher3.InvariantDeviceProfile.TYPE_PHONE
-import com.android.launcher3.InvariantDeviceProfile.TYPE_TABLET
-import com.google.common.truth.Truth.assertThat
-import org.junit.Test
-import org.junit.runner.RunWith
-
-/**
- * Test for [DeviceProfile]
- */
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class HotseatShownIconsTest : DeviceProfileBaseTest() {
-
-    @Test
-    fun hotseat_size_is_normal_for_handhelds() {
-        initializeVarsForPhone()
-        inv = newScalableInvariantDeviceProfile().apply {
-            deviceType = TYPE_PHONE
-        }
-
-        val dp = newDP()
-
-        assertThat(dp.isQsbInline).isFalse()
-        assertThat(dp.numShownHotseatIcons).isEqualTo(4)
-    }
-
-    @Test
-    fun hotseat_size_is_max_when_large_screen() {
-        initializeVarsForTablet(isLandscape = true)
-        inv = newScalableInvariantDeviceProfile().apply {
-            deviceType = TYPE_MULTI_DISPLAY
-        }
-        useTwoPanels = true
-
-        val dp = newDP()
-
-        assertThat(dp.isQsbInline).isFalse()
-        assertThat(dp.numShownHotseatIcons).isEqualTo(6)
-    }
-
-    @Test
-    fun hotseat_size_is_shrunk_if_needed_when_large_screen() {
-        initializeVarsForTablet(isLandscape = true)
-        inv = newScalableInvariantDeviceProfile().apply {
-            deviceType = TYPE_MULTI_DISPLAY
-            inlineQsb = booleanArrayOf(
-                false,
-                false,
-                false,
-                true // two panels landscape
-            )
-        }
-        useTwoPanels = true
-
-        isGestureMode = false
-        val dp = newDP()
-
-        if (dp.hotseatQsbHeight > 0) {
-            assertThat(dp.isQsbInline).isTrue()
-            assertThat(dp.numShownHotseatIcons).isEqualTo(5)
-        } else { // Launcher3 doesn't have QSB height
-            assertThat(dp.isQsbInline).isFalse()
-            assertThat(dp.numShownHotseatIcons).isEqualTo(6)
-        }
-    }
-
-    /**
-     * For consistency, the hotseat should shrink if any orientation on the device type has an
-     * inline qsb
-     */
-    @Test
-    fun hotseat_size_is_shrunk_even_in_portrait_when_large_screen() {
-        initializeVarsForTablet()
-        inv = newScalableInvariantDeviceProfile().apply {
-            deviceType = TYPE_MULTI_DISPLAY
-            inlineQsb = booleanArrayOf(
-                false,
-                false,
-                false,
-                true // two panels landscape
-            )
-        }
-        useTwoPanels = true
-
-        isGestureMode = false
-        val dp = newDP()
-
-        if (dp.hotseatQsbHeight > 0) {
-            assertThat(dp.isQsbInline).isFalse()
-            assertThat(dp.numShownHotseatIcons).isEqualTo(5)
-        } else { // Launcher3 doesn't have QSB height
-            assertThat(dp.isQsbInline).isFalse()
-            assertThat(dp.numShownHotseatIcons).isEqualTo(6)
-        }
-    }
-
-    @Test
-    fun hotseat_size_is_default_when_small_screen() {
-        initializeVarsForPhone()
-        inv = newScalableInvariantDeviceProfile().apply {
-            deviceType = TYPE_MULTI_DISPLAY
-        }
-        useTwoPanels = true
-
-        val dp = newDP()
-
-        assertThat(dp.numShownHotseatIcons).isEqualTo(4)
-    }
-
-    @Test
-    fun hotseat_size_is_not_shrunk_on_gesture_tablet() {
-        initializeVarsForTablet(isLandscape = true)
-        inv = newScalableInvariantDeviceProfile().apply {
-            deviceType = TYPE_TABLET
-            inlineQsb = booleanArrayOf(
-                    false,
-                    true, // landscape
-                    false,
-                    false
-            )
-            numShownHotseatIcons = 6
-        }
-
-        isGestureMode = true
-        val dp = newDP()
-
-        if (dp.hotseatQsbHeight > 0) {
-            assertThat(dp.isQsbInline).isTrue()
-            assertThat(dp.numShownHotseatIcons).isEqualTo(6)
-        } else { // Launcher3 doesn't have QSB height
-            assertThat(dp.isQsbInline).isFalse()
-            assertThat(dp.numShownHotseatIcons).isEqualTo(6)
-        }
-    }
-
-    @Test
-    fun hotseat_size_is_shrunk_if_needed_on_tablet() {
-        initializeVarsForTablet(isLandscape = true)
-        inv = newScalableInvariantDeviceProfile().apply {
-            deviceType = TYPE_TABLET
-            inlineQsb = booleanArrayOf(
-                false,
-                true, // landscape
-                false,
-                false
-            )
-            numShownHotseatIcons = 6
-        }
-
-        isGestureMode = false
-        val dp = newDP()
-
-        if (dp.hotseatQsbHeight > 0) {
-            assertThat(dp.isQsbInline).isTrue()
-            assertThat(dp.numShownHotseatIcons).isEqualTo(5)
-        } else { // Launcher3 doesn't have QSB height
-            assertThat(dp.isQsbInline).isFalse()
-            assertThat(dp.numShownHotseatIcons).isEqualTo(6)
-        }
-    }
-
-    /**
-     * For consistency, the hotseat should shrink if any orientation on the device type has an
-     * inline qsb
-     */
-    @Test
-    fun hotseat_size_is_shrunk_even_in_portrait_on_tablet() {
-        initializeVarsForTablet()
-        inv = newScalableInvariantDeviceProfile().apply {
-            deviceType = TYPE_TABLET
-            inlineQsb = booleanArrayOf(
-                false,
-                true, // landscape
-                false,
-                false
-            )
-            numShownHotseatIcons = 6
-        }
-
-        isGestureMode = false
-        val dp = newDP()
-
-        if (dp.hotseatQsbHeight > 0) {
-            assertThat(dp.isQsbInline).isFalse()
-            assertThat(dp.numShownHotseatIcons).isEqualTo(5)
-        } else { // Launcher3 doesn't have QSB height
-            assertThat(dp.isQsbInline).isFalse()
-            assertThat(dp.numShownHotseatIcons).isEqualTo(6)
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/tests/src/com/android/launcher3/InlineQsbTest.kt b/tests/src/com/android/launcher3/InlineQsbTest.kt
deleted file mode 100644
index 905c1e1..0000000
--- a/tests/src/com/android/launcher3/InlineQsbTest.kt
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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.launcher3
-
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.google.common.truth.Truth.assertThat
-import org.junit.Test
-import org.junit.runner.RunWith
-
-/**
- * Test for [DeviceProfile]
- */
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class InlineQsbTest : DeviceProfileBaseTest() {
-
-    @Test
-    fun qsb_is_not_inline_for_phones() {
-        initializeVarsForPhone()
-
-        val dp = newDP()
-
-        assertThat(dp.isQsbInline).isFalse()
-    }
-
-    @Test
-    fun qsb_is_inline_for_tablet_portrait() {
-        initializeVarsForTablet()
-        inv = newScalableInvariantDeviceProfile().apply {
-            inlineQsb = booleanArrayOf(
-                false,
-                true, // landscape
-                false,
-                false
-            )
-        }
-
-        val dp = DeviceProfile(
-            context,
-            inv,
-            info,
-            windowBounds,
-            isMultiWindowMode,
-            transposeLayoutWithOrientation,
-            useTwoPanels,
-            isGestureMode
-        )
-
-        assertThat(dp.isQsbInline).isFalse()
-    }
-
-    @Test
-    fun qsb_is_inline_for_tablet_landscape() {
-        initializeVarsForTablet(isLandscape = true)
-        inv = newScalableInvariantDeviceProfile().apply {
-            inlineQsb = booleanArrayOf(
-                false,
-                true, // landscape
-                false,
-                false
-            )
-            numColumns = 6
-            numRows = 5
-            numShownHotseatIcons = 6
-        }
-
-        val dp = newDP()
-
-        if (dp.hotseatQsbHeight > 0) {
-            assertThat(dp.isQsbInline).isTrue()
-        } else { // Launcher3 doesn't have QSB height
-            assertThat(dp.isQsbInline).isFalse()
-        }
-    }
-
-    /**
-     * This test is to make sure that a tablet doesn't inline the QSB if the layout doesn't support
-     */
-    @Test
-    fun qsb_is_not_inline_for_tablet_landscape_without_inline() {
-        initializeVarsForTablet(isLandscape = true)
-        useTwoPanels = true
-
-        val dp = newDP()
-
-        assertThat(dp.isQsbInline).isFalse()
-    }
-
-}
\ No newline at end of file
diff --git a/tests/src/com/android/launcher3/LauncherPrefsTest.kt b/tests/src/com/android/launcher3/LauncherPrefsTest.kt
new file mode 100644
index 0000000..d59e02a
--- /dev/null
+++ b/tests/src/com/android/launcher3/LauncherPrefsTest.kt
@@ -0,0 +1,331 @@
+/*
+ * 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.launcher3
+
+import android.content.Context
+import android.content.SharedPreferences
+import android.content.SharedPreferences.OnSharedPreferenceChangeListener
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import androidx.test.platform.app.InstrumentationRegistry
+import com.android.launcher3.LauncherPrefs.Companion.BOOT_AWARE_PREFS_KEY
+import com.google.common.truth.Truth.assertThat
+import java.util.concurrent.CountDownLatch
+import java.util.concurrent.TimeUnit
+import org.junit.AfterClass
+import org.junit.BeforeClass
+import org.junit.Test
+import org.junit.runner.RunWith
+
+private val TEST_BOOLEAN_ITEM = LauncherPrefs.nonRestorableItem("1", false)
+private val TEST_STRING_ITEM = LauncherPrefs.nonRestorableItem("2", "( ͡❛ ͜ʖ ͡❛)")
+private val TEST_INT_ITEM = LauncherPrefs.nonRestorableItem("3", -1)
+private val TEST_CONTEXTUAL_ITEM = ContextualItem("4", true, { true }, false, Boolean::class.java)
+
+private const val TEST_DEFAULT_VALUE = "default"
+private const val TEST_PREF_KEY = "test_pref_key"
+
+private const val WAIT_TIME_IN_SECONDS = 3L
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class LauncherPrefsTest {
+
+    private val context by lazy { InstrumentationRegistry.getInstrumentation().targetContext }
+    private val launcherPrefs by lazy { LauncherPrefs.get(context) }
+
+    companion object {
+        @BeforeClass
+        @JvmStatic
+        fun setup() {
+            isBootAwareStartupDataEnabled = true
+        }
+
+        @AfterClass
+        @JvmStatic
+        fun teardown() {
+            isBootAwareStartupDataEnabled = false
+        }
+    }
+
+    @Test
+    fun has_keyMissingFromLauncherPrefs_returnsFalse() {
+        assertThat(launcherPrefs.has(TEST_BOOLEAN_ITEM)).isFalse()
+    }
+
+    @Test
+    fun has_keyPresentInLauncherPrefs_returnsTrue() {
+        with(launcherPrefs) {
+            putSync(TEST_BOOLEAN_ITEM.to(TEST_BOOLEAN_ITEM.defaultValue))
+            assertThat(has(TEST_BOOLEAN_ITEM)).isTrue()
+            remove(TEST_BOOLEAN_ITEM)
+        }
+    }
+
+    @Test
+    fun addListener_listeningForStringItemUpdates_isCorrectlyNotifiedOfUpdates() {
+        val latch = CountDownLatch(1)
+        val listener = OnSharedPreferenceChangeListener { _, _ -> latch.countDown() }
+
+        with(launcherPrefs) {
+            putSync(TEST_STRING_ITEM.to(TEST_STRING_ITEM.defaultValue))
+            addListener(listener, TEST_STRING_ITEM)
+            putSync(TEST_STRING_ITEM.to(TEST_STRING_ITEM.defaultValue + "abc"))
+
+            assertThat(latch.await(WAIT_TIME_IN_SECONDS, TimeUnit.SECONDS)).isTrue()
+            remove(TEST_STRING_ITEM)
+        }
+    }
+
+    @Test
+    fun removeListener_previouslyListeningForStringItemUpdates_isNoLongerNotifiedOfUpdates() {
+        val latch = CountDownLatch(1)
+        val listener = OnSharedPreferenceChangeListener { _, _ -> latch.countDown() }
+
+        with(launcherPrefs) {
+            addListener(listener, TEST_STRING_ITEM)
+            removeListener(listener, TEST_STRING_ITEM)
+            putSync(TEST_STRING_ITEM.to(TEST_STRING_ITEM.defaultValue + "hello."))
+
+            // latch will be still be 1 (and await will return false) if the listener was not called
+            assertThat(latch.await(WAIT_TIME_IN_SECONDS, TimeUnit.SECONDS)).isFalse()
+            remove(TEST_STRING_ITEM)
+        }
+    }
+
+    @Test
+    fun addListenerAndRemoveListener_forMultipleItems_bothWorkProperly() {
+        var latch = CountDownLatch(3)
+        val listener = OnSharedPreferenceChangeListener { _, _ -> latch.countDown() }
+
+        with(launcherPrefs) {
+            addListener(listener, TEST_INT_ITEM, TEST_STRING_ITEM, TEST_BOOLEAN_ITEM)
+            putSync(
+                TEST_INT_ITEM.to(TEST_INT_ITEM.defaultValue + 123),
+                TEST_STRING_ITEM.to(TEST_STRING_ITEM.defaultValue + "abc"),
+                TEST_BOOLEAN_ITEM.to(!TEST_BOOLEAN_ITEM.defaultValue)
+            )
+            assertThat(latch.await(WAIT_TIME_IN_SECONDS, TimeUnit.SECONDS)).isTrue()
+
+            removeListener(listener, TEST_INT_ITEM, TEST_STRING_ITEM, TEST_BOOLEAN_ITEM)
+            latch = CountDownLatch(1)
+            putSync(
+                TEST_INT_ITEM.to(TEST_INT_ITEM.defaultValue),
+                TEST_STRING_ITEM.to(TEST_STRING_ITEM.defaultValue),
+                TEST_BOOLEAN_ITEM.to(TEST_BOOLEAN_ITEM.defaultValue)
+            )
+            remove(TEST_INT_ITEM, TEST_STRING_ITEM, TEST_BOOLEAN_ITEM)
+
+            assertThat(latch.await(WAIT_TIME_IN_SECONDS, TimeUnit.SECONDS)).isFalse()
+        }
+    }
+
+    @Test
+    fun get_booleanItemNotInLauncherprefs_returnsDefaultValue() {
+        assertThat(launcherPrefs.get(TEST_BOOLEAN_ITEM)).isEqualTo(TEST_BOOLEAN_ITEM.defaultValue)
+    }
+
+    @Test
+    fun get_stringItemNotInLauncherPrefs_returnsDefaultValue() {
+        assertThat(launcherPrefs.get(TEST_STRING_ITEM)).isEqualTo(TEST_STRING_ITEM.defaultValue)
+    }
+
+    @Test
+    fun get_intItemNotInLauncherprefs_returnsDefaultValue() {
+        assertThat(launcherPrefs.get(TEST_INT_ITEM)).isEqualTo(TEST_INT_ITEM.defaultValue)
+    }
+
+    @Test
+    fun put_storesItemInLauncherPrefs_successfully() {
+        val notDefaultValue = !TEST_BOOLEAN_ITEM.defaultValue
+
+        with(launcherPrefs) {
+            putSync(TEST_BOOLEAN_ITEM.to(notDefaultValue))
+            assertThat(get(TEST_BOOLEAN_ITEM)).isEqualTo(notDefaultValue)
+            remove(TEST_BOOLEAN_ITEM)
+        }
+    }
+
+    @Test
+    fun put_storesListOfItemsInLauncherPrefs_successfully() {
+        with(launcherPrefs) {
+            putSync(
+                TEST_STRING_ITEM.to(TEST_STRING_ITEM.defaultValue),
+                TEST_INT_ITEM.to(TEST_INT_ITEM.defaultValue),
+                TEST_BOOLEAN_ITEM.to(TEST_BOOLEAN_ITEM.defaultValue)
+            )
+            assertThat(has(TEST_BOOLEAN_ITEM, TEST_INT_ITEM, TEST_STRING_ITEM)).isTrue()
+            remove(TEST_STRING_ITEM, TEST_INT_ITEM, TEST_BOOLEAN_ITEM)
+        }
+    }
+
+    @Test
+    fun remove_deletesItemFromLauncherPrefs_successfully() {
+        val notDefaultValue = !TEST_BOOLEAN_ITEM.defaultValue
+
+        with(launcherPrefs) {
+            putSync(TEST_BOOLEAN_ITEM.to(notDefaultValue))
+            remove(TEST_BOOLEAN_ITEM)
+            assertThat(get(TEST_BOOLEAN_ITEM)).isEqualTo(TEST_BOOLEAN_ITEM.defaultValue)
+        }
+    }
+
+    @Test
+    fun get_contextualItem_returnsCorrectDefault() {
+        assertThat(launcherPrefs.get(TEST_CONTEXTUAL_ITEM)).isTrue()
+    }
+
+    @Test
+    fun getItemSharedPrefFile_forNonRestorableItem_isCorrect() {
+        val nonRestorableItem = LauncherPrefs.nonRestorableItem(TEST_PREF_KEY, TEST_DEFAULT_VALUE)
+        assertThat(nonRestorableItem.sharedPrefFile).isEqualTo(LauncherFiles.DEVICE_PREFERENCES_KEY)
+    }
+
+    @Test
+    fun getItemSharedPrefFile_forBackedUpItem_isCorrect() {
+        val backedUpItem = LauncherPrefs.backedUpItem(TEST_PREF_KEY, TEST_DEFAULT_VALUE)
+        assertThat(backedUpItem.sharedPrefFile).isEqualTo(LauncherFiles.SHARED_PREFERENCES_KEY)
+    }
+
+    @Test
+    fun put_bootAwareItem_updatesDeviceProtectedStorage() {
+        val bootAwareItem =
+            LauncherPrefs.backedUpItem(TEST_PREF_KEY, TEST_DEFAULT_VALUE, isBootAware = true)
+
+        val bootAwarePrefs: SharedPreferences =
+            context
+                .createDeviceProtectedStorageContext()
+                .getSharedPreferences(BOOT_AWARE_PREFS_KEY, Context.MODE_PRIVATE)
+        bootAwarePrefs.edit().remove(bootAwareItem.sharedPrefKey).commit()
+
+        launcherPrefs.putSync(bootAwareItem.to(bootAwareItem.defaultValue))
+        assertThat(bootAwarePrefs.contains(bootAwareItem.sharedPrefKey)).isTrue()
+
+        launcherPrefs.removeSync(bootAwareItem)
+    }
+
+    @Test
+    fun put_bootAwareItem_updatesEncryptedStorage() {
+        val bootAwareItem =
+            LauncherPrefs.backedUpItem(TEST_PREF_KEY, TEST_DEFAULT_VALUE, isBootAware = true)
+
+        val encryptedPrefs: SharedPreferences =
+            context.getSharedPreferences(bootAwareItem.sharedPrefFile, Context.MODE_PRIVATE)
+        encryptedPrefs.edit().remove(bootAwareItem.sharedPrefKey).commit()
+
+        launcherPrefs.putSync(bootAwareItem.to(TEST_STRING_ITEM.defaultValue))
+        assertThat(encryptedPrefs.contains(bootAwareItem.sharedPrefKey)).isTrue()
+
+        launcherPrefs.removeSync(bootAwareItem)
+    }
+
+    @Test
+    fun remove_bootAwareItem_removesFromDeviceProtectedStorage() {
+        val bootAwareItem =
+            LauncherPrefs.backedUpItem(TEST_PREF_KEY, TEST_DEFAULT_VALUE, isBootAware = true)
+
+        val bootAwarePrefs: SharedPreferences =
+            context
+                .createDeviceProtectedStorageContext()
+                .getSharedPreferences(BOOT_AWARE_PREFS_KEY, Context.MODE_PRIVATE)
+
+        bootAwarePrefs
+            .edit()
+            .putString(bootAwareItem.sharedPrefKey, bootAwareItem.defaultValue)
+            .commit()
+
+        launcherPrefs.removeSync(bootAwareItem)
+        assertThat(bootAwarePrefs.contains(bootAwareItem.sharedPrefKey)).isFalse()
+    }
+
+    @Test
+    fun remove_bootAwareItem_removesFromEncryptedStorage() {
+        val bootAwareItem =
+            LauncherPrefs.backedUpItem(TEST_PREF_KEY, TEST_DEFAULT_VALUE, isBootAware = true)
+
+        val encryptedPrefs: SharedPreferences =
+            context.getSharedPreferences(bootAwareItem.sharedPrefFile, Context.MODE_PRIVATE)
+
+        encryptedPrefs
+            .edit()
+            .putString(bootAwareItem.sharedPrefKey, bootAwareItem.defaultValue)
+            .commit()
+
+        launcherPrefs.removeSync(bootAwareItem)
+        assertThat(encryptedPrefs.contains(bootAwareItem.sharedPrefKey)).isFalse()
+    }
+
+    @Test
+    fun migrate_bootAwareItemsToDeviceProtectedStorage_worksAsIntended() {
+        val bootAwareItem =
+            LauncherPrefs.backedUpItem(TEST_PREF_KEY, TEST_DEFAULT_VALUE, isBootAware = true)
+        launcherPrefs.removeSync(bootAwareItem)
+
+        val bootAwarePrefs: SharedPreferences =
+            context
+                .createDeviceProtectedStorageContext()
+                .getSharedPreferences(BOOT_AWARE_PREFS_KEY, Context.MODE_PRIVATE)
+
+        if (bootAwarePrefs.contains(bootAwareItem.sharedPrefKey)) {
+            bootAwarePrefs.edit().remove(bootAwareItem.sharedPrefKey).commit()
+        }
+
+        val encryptedPrefs: SharedPreferences =
+            context.getSharedPreferences(bootAwareItem.sharedPrefFile, Context.MODE_PRIVATE)
+
+        encryptedPrefs
+            .edit()
+            .putString(bootAwareItem.sharedPrefKey, bootAwareItem.defaultValue)
+            .commit()
+
+        launcherPrefs.migrateStartupDataToDeviceProtectedStorage()
+        assertThat(bootAwarePrefs.contains(bootAwareItem.sharedPrefKey)).isTrue()
+
+        launcherPrefs.removeSync(bootAwareItem)
+    }
+
+    @Test
+    fun migrate_onlyEncryptedItemsToDeviceProtectedStorage_doesNotHappen() {
+        val onlyEncryptedItem =
+            LauncherPrefs.backedUpItem(
+                TEST_PREF_KEY + "_",
+                TEST_DEFAULT_VALUE + "_",
+                isBootAware = false
+            )
+
+        val bootAwarePrefs: SharedPreferences =
+            context
+                .createDeviceProtectedStorageContext()
+                .getSharedPreferences(BOOT_AWARE_PREFS_KEY, Context.MODE_PRIVATE)
+
+        if (bootAwarePrefs.contains(onlyEncryptedItem.sharedPrefKey)) {
+            bootAwarePrefs.edit().remove(onlyEncryptedItem.sharedPrefKey).commit()
+        }
+
+        val encryptedPrefs: SharedPreferences =
+            context.getSharedPreferences(onlyEncryptedItem.sharedPrefFile, Context.MODE_PRIVATE)
+
+        encryptedPrefs
+            .edit()
+            .putString(onlyEncryptedItem.sharedPrefKey, onlyEncryptedItem.defaultValue)
+            .commit()
+
+        launcherPrefs.migrateStartupDataToDeviceProtectedStorage()
+        assertThat(bootAwarePrefs.contains(onlyEncryptedItem.sharedPrefKey)).isFalse()
+
+        encryptedPrefs.edit().remove(onlyEncryptedItem.sharedPrefKey).commit()
+    }
+}
diff --git a/tests/src/com/android/launcher3/celllayout/CellLayoutBoard.java b/tests/src/com/android/launcher3/celllayout/CellLayoutBoard.java
new file mode 100644
index 0000000..3c2b49a
--- /dev/null
+++ b/tests/src/com/android/launcher3/celllayout/CellLayoutBoard.java
@@ -0,0 +1,462 @@
+/*
+ * 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.launcher3.celllayout;
+
+import android.graphics.Point;
+import android.graphics.Rect;
+
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Queue;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+
+public class CellLayoutBoard implements Comparable<CellLayoutBoard> {
+
+    private boolean intersects(Rect r1, Rect r2) {
+        // If one rectangle is on left side of other
+        if (r1.left > r2.right || r2.left > r1.right) {
+            return false;
+        }
+
+        // If one rectangle is above other
+        if (r1.bottom > r2.top || r2.bottom > r1.top) {
+            return false;
+        }
+
+        return true;
+    }
+
+    private boolean overlapsWithIgnored(Set<Rect> ignoredRectangles, Rect rect) {
+        for (Rect ignoredRect : ignoredRectangles) {
+            // Using the built in intersects doesn't work because it doesn't account for area 0
+            if (intersects(ignoredRect, rect)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public int compareTo(CellLayoutBoard cellLayoutBoard) {
+        // to be equal they need to have the same number of widgets and the same dimensions
+        // their order can be different
+        Set<Rect> widgetsSet = new HashSet<>();
+        Set<Rect> ignoredRectangles = new HashSet<>();
+        for (WidgetRect rect : mWidgetsRects) {
+            if (rect.shouldIgnore()) {
+                ignoredRectangles.add(rect.mBounds);
+            } else {
+                widgetsSet.add(rect.mBounds);
+            }
+        }
+        for (WidgetRect rect : cellLayoutBoard.mWidgetsRects) {
+            // ignore rectangles overlapping with the area marked by x
+            if (overlapsWithIgnored(ignoredRectangles, rect.mBounds)) {
+                continue;
+            }
+            if (!widgetsSet.contains(rect.mBounds)) {
+                return -1;
+            }
+            widgetsSet.remove(rect.mBounds);
+        }
+        if (!widgetsSet.isEmpty()) {
+            return 1;
+        }
+
+        // to be equal they need to have the same number of icons their order can be different
+        Set<Point> iconsSet = new HashSet<>();
+        mIconPoints.forEach(icon -> iconsSet.add(icon.getCoord()));
+        for (IconPoint icon : cellLayoutBoard.mIconPoints) {
+            if (!iconsSet.contains(icon.getCoord())) {
+                return -1;
+            }
+            iconsSet.remove(icon.getCoord());
+        }
+        if (!iconsSet.isEmpty()) {
+            return 1;
+        }
+        return 0;
+    }
+
+    public static class CellType {
+        // The cells marked by this will be filled by 1x1 widgets and will be ignored when
+        // validating
+        public static final char IGNORE = 'x';
+        // The cells marked by this will be filled by app icons
+        public static final char ICON = 'i';
+        // Empty space
+        public static final char EMPTY = '-';
+        // Widget that will be saved as "main widget" for easier retrieval
+        public static final char MAIN_WIDGET = 'm';
+        // Everything else will be consider a widget
+    }
+
+    public static class WidgetRect {
+        public char mType;
+        public Rect mBounds;
+
+        WidgetRect(char type, Rect bounds) {
+            this.mType = type;
+            this.mBounds = bounds;
+        }
+
+        int getSpanX() {
+            return mBounds.right - mBounds.left + 1;
+        }
+
+        int getSpanY() {
+            return mBounds.top - mBounds.bottom + 1;
+        }
+
+        int getCellX() {
+            return mBounds.left;
+        }
+
+        int getCellY() {
+            return mBounds.bottom;
+        }
+
+        boolean shouldIgnore() {
+            return this.mType == CellType.IGNORE;
+        }
+
+        @Override
+        public String toString() {
+            return "WidgetRect type = " + mType + " bounds = " + mBounds.toString();
+        }
+    }
+
+    public static class IconPoint {
+        public Point coord;
+        public char mType;
+
+        public IconPoint(Point coord, char type) {
+            this.coord = coord;
+            mType = type;
+        }
+
+        public char getType() {
+            return mType;
+        }
+
+        public void setType(char type) {
+            mType = type;
+        }
+
+        public Point getCoord() {
+            return coord;
+        }
+
+        public void setCoord(Point coord) {
+            this.coord = coord;
+        }
+    }
+
+    private HashSet<Character> mUsedWidgetTypes = new HashSet<>();
+
+    static final int INFINITE = 99999;
+
+    char[][] mWidget = new char[30][30];
+
+    List<WidgetRect> mWidgetsRects = new ArrayList<>();
+    Map<Character, WidgetRect> mWidgetsMap = new HashMap<>();
+
+    List<IconPoint> mIconPoints = new ArrayList<>();
+
+    WidgetRect mMain = null;
+
+    int mWidth, mHeight;
+
+    CellLayoutBoard() {
+        for (int x = 0; x < mWidget.length; x++) {
+            for (int y = 0; y < mWidget[0].length; y++) {
+                mWidget[x][y] = CellType.EMPTY;
+            }
+        }
+    }
+
+    CellLayoutBoard(int width, int height) {
+        mWidget = new char[width][height];
+        this.mWidth = width;
+        this.mHeight = height;
+        for (int x = 0; x < mWidget.length; x++) {
+            for (int y = 0; y < mWidget[0].length; y++) {
+                mWidget[x][y] = CellType.EMPTY;
+            }
+        }
+    }
+
+    public List<WidgetRect> getWidgets() {
+        return mWidgetsRects;
+    }
+
+    public List<IconPoint> getIcons() {
+        return mIconPoints;
+    }
+
+    public WidgetRect getMain() {
+        return mMain;
+    }
+
+    public WidgetRect getWidgetRect(char c) {
+        return mWidgetsMap.get(c);
+    }
+
+    private void removeWidgetFromBoard(WidgetRect widget) {
+        for (int xi = widget.mBounds.left; xi < widget.mBounds.right; xi++) {
+            for (int yi = widget.mBounds.top; yi < widget.mBounds.bottom; yi++) {
+                mWidget[xi][yi] = '-';
+            }
+        }
+    }
+
+    private void removeOverlappingItems(Rect rect) {
+        // Remove overlapping widgets and remove them from the board
+        mWidgetsRects = mWidgetsRects.stream().filter(widget -> {
+            if (rect.intersect(widget.mBounds)) {
+                removeWidgetFromBoard(widget);
+                return false;
+            }
+            return true;
+        }).collect(Collectors.toList());
+        // Remove overlapping icons and remove them from the board
+        mIconPoints = mIconPoints.stream().filter(iconPoint -> {
+            int x = iconPoint.coord.x;
+            int y = iconPoint.coord.y;
+            if (rect.contains(x, y)) {
+                mWidget[x][y] = '-';
+                return false;
+            }
+            return true;
+        }).collect(Collectors.toList());
+    }
+
+    private void removeOverlappingItems(Point p) {
+        // Remove overlapping widgets and remove them from the board
+        mWidgetsRects = mWidgetsRects.stream().filter(widget -> {
+            if (widget.mBounds.contains(p.x, p.y)) {
+                removeWidgetFromBoard(widget);
+                return false;
+            }
+            return true;
+        }).collect(Collectors.toList());
+        // Remove overlapping icons and remove them from the board
+        mIconPoints = mIconPoints.stream().filter(iconPoint -> {
+            int x = iconPoint.coord.x;
+            int y = iconPoint.coord.y;
+            if (p.x == x && p.y == y) {
+                mWidget[x][y] = '-';
+                return false;
+            }
+            return true;
+        }).collect(Collectors.toList());
+    }
+
+    private char getNextWidgetType() {
+        for (char type = 'a'; type <= 'z'; type++) {
+            if (type == 'i') continue;
+            if (mUsedWidgetTypes.contains(type)) continue;
+            mUsedWidgetTypes.add(type);
+            return type;
+        }
+        return 'z';
+    }
+
+    public void addWidget(int x, int y, int spanX, int spanY, char type) {
+        Rect rect = new Rect(x, y + spanY - 1, x + spanX - 1, y);
+        removeOverlappingItems(rect);
+        WidgetRect widgetRect = new WidgetRect(type, rect);
+        mWidgetsRects.add(widgetRect);
+        for (int xi = rect.left; xi < rect.right + 1; xi++) {
+            for (int yi = rect.bottom; yi < rect.top + 1; yi++) {
+                mWidget[xi][yi] = type;
+            }
+        }
+    }
+
+    public void addWidget(int x, int y, int spanX, int spanY) {
+        addWidget(x, y, spanX, spanY, getNextWidgetType());
+    }
+
+    public void addIcon(int x, int y) {
+        Point iconCoord = new Point(x, y);
+        removeOverlappingItems(iconCoord);
+        mIconPoints.add(new IconPoint(iconCoord, CellType.ICON));
+        mWidget[x][y] = 'i';
+    }
+
+    public static WidgetRect getWidgetRect(int x, int y, Set<Point> used, char[][] board) {
+        char type = board[x][y];
+        Queue<Point> search = new ArrayDeque<Point>();
+        Point current = new Point(x, y);
+        search.add(current);
+        used.add(current);
+        List<Point> neighbors = new ArrayList<>(List.of(
+                new Point(-1, 0),
+                new Point(0, -1),
+                new Point(1, 0),
+                new Point(0, 1))
+        );
+        Rect widgetRect = new Rect(INFINITE, -INFINITE, -INFINITE, INFINITE);
+        while (!search.isEmpty()) {
+            current = search.poll();
+            widgetRect.top = Math.max(widgetRect.top, current.y);
+            widgetRect.right = Math.max(widgetRect.right, current.x);
+            widgetRect.bottom = Math.min(widgetRect.bottom, current.y);
+            widgetRect.left = Math.min(widgetRect.left, current.x);
+            for (Point p : neighbors) {
+                Point next = new Point(current.x + p.x, current.y + p.y);
+                if (next.x < 0 || next.x >= board.length) continue;
+                if (next.y < 0 || next.y >= board[0].length) continue;
+                if (board[next.x][next.y] == type && !used.contains(next)) {
+                    used.add(next);
+                    search.add(next);
+                }
+            }
+        }
+        return new WidgetRect(type, widgetRect);
+    }
+
+    public static boolean isFolder(char type) {
+        return type >= 'A' && type <= 'Z';
+    }
+
+    public static boolean isWidget(char type) {
+        return type != CellType.ICON && type != CellType.EMPTY && (type >= 'a' && type <= 'z');
+    }
+
+    public static boolean isIcon(char type) {
+        return type == CellType.ICON;
+    }
+
+    private static List<WidgetRect> getRects(char[][] board) {
+        Set<Point> used = new HashSet<>();
+        List<WidgetRect> widgetsRects = new ArrayList<>();
+        for (int x = 0; x < board.length; x++) {
+            for (int y = 0; y < board[0].length; y++) {
+                if (!used.contains(new Point(x, y)) && isWidget(board[x][y])) {
+                    widgetsRects.add(getWidgetRect(x, y, used, board));
+                }
+            }
+        }
+        return widgetsRects;
+    }
+
+    private static List<IconPoint> getIconPoints(char[][] board) {
+        List<IconPoint> iconPoints = new ArrayList<>();
+        for (int x = 0; x < board.length; x++) {
+            for (int y = 0; y < board[0].length; y++) {
+                if (isIcon(board[x][y])) {
+                    iconPoints.add(new IconPoint(new Point(x, y), board[x][y]));
+                }
+            }
+        }
+        return iconPoints;
+    }
+
+    public static WidgetRect getMainFromList(List<CellLayoutBoard> boards) {
+        for (CellLayoutBoard board : boards) {
+            WidgetRect main = board.getMain();
+            if (main != null) {
+                return main;
+            }
+        }
+        return null;
+    }
+
+    public static CellLayoutBoard boardFromString(String boardStr) {
+        String[] lines = boardStr.split("\n");
+        CellLayoutBoard board = new CellLayoutBoard();
+
+        for (int y = 0; y < lines.length; y++) {
+            String line = lines[y];
+            for (int x = 0; x < line.length(); x++) {
+                char c = line.charAt(x);
+                if (c != CellType.EMPTY) {
+                    board.mWidget[x][y] = line.charAt(x);
+                }
+            }
+        }
+        board.mHeight = lines.length;
+        board.mWidth = lines[0].length();
+        board.mWidgetsRects = getRects(board.mWidget);
+        board.mWidgetsRects.forEach(widgetRect -> {
+            if (widgetRect.mType == CellType.MAIN_WIDGET) {
+                board.mMain = widgetRect;
+            }
+            board.mWidgetsMap.put(widgetRect.mType, widgetRect);
+        });
+        board.mIconPoints = getIconPoints(board.mWidget);
+        return board;
+    }
+
+    public String toString(int maxX, int maxY) {
+        StringBuilder s = new StringBuilder();
+        s.append("board: ");
+        s.append(maxX);
+        s.append("x");
+        s.append(maxY);
+        s.append("\n");
+        maxX = Math.min(maxX, mWidget.length);
+        maxY = Math.min(maxY, mWidget[0].length);
+        for (int y = 0; y < maxY; y++) {
+            for (int x = 0; x < maxX; x++) {
+                s.append(mWidget[x][y]);
+            }
+            s.append('\n');
+        }
+        return s.toString();
+    }
+
+    @Override
+    public String toString() {
+        return toString(mWidth, mHeight);
+    }
+
+    public static List<CellLayoutBoard> boardListFromString(String boardsStr) {
+        String[] lines = boardsStr.split("\n");
+        ArrayList<String> individualBoards = new ArrayList<>();
+        ArrayList<CellLayoutBoard> boards = new ArrayList<>();
+        for (String line : lines) {
+            String[] boardSegment = line.split("\\|");
+            for (int i = 0; i < boardSegment.length; i++) {
+                if (i >= individualBoards.size()) {
+                    individualBoards.add(boardSegment[i]);
+                } else {
+                    individualBoards.set(i, individualBoards.get(i) + "\n" + boardSegment[i]);
+                }
+            }
+        }
+        for (String board : individualBoards) {
+            boards.add(CellLayoutBoard.boardFromString(board));
+        }
+        return boards;
+    }
+
+    public int getWidth() {
+        return mWidth;
+    }
+
+    public int getHeight() {
+        return mHeight;
+    }
+}
diff --git a/tests/src/com/android/launcher3/celllayout/CellLayoutTestCaseReader.java b/tests/src/com/android/launcher3/celllayout/CellLayoutTestCaseReader.java
new file mode 100644
index 0000000..e33a304
--- /dev/null
+++ b/tests/src/com/android/launcher3/celllayout/CellLayoutTestCaseReader.java
@@ -0,0 +1,162 @@
+/*
+ * 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.launcher3.celllayout;
+
+import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
+
+import android.graphics.Point;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.stream.Collectors;
+
+public class CellLayoutTestCaseReader {
+
+    public abstract static class TestSection {
+        State state;
+
+        public TestSection(State state) {
+            this.state = state;
+        }
+
+        public State getState() {
+            return state;
+        }
+
+        public void setState(State state) {
+            this.state = state;
+        }
+    }
+
+    public static class Comment extends TestSection {
+        public Comment() {
+            super(State.COMMENT);
+        }
+    }
+
+    public static class Arguments extends TestSection {
+        String[] arguments;
+
+        public Arguments(String[] arguments) {
+            super(State.ARGUMENTS);
+            this.arguments = arguments;
+        }
+    }
+
+    public static class Board extends TestSection {
+        Point gridSize;
+        String board;
+
+        public Board(Point gridSize, String board) {
+            super(State.BOARD);
+            this.gridSize = gridSize;
+            this.board = board;
+        }
+    }
+
+    public enum State {
+        START,
+        ARGUMENTS,
+        BOARD,
+        END,
+        COMMENT
+    }
+
+    String mTest;
+
+    protected CellLayoutTestCaseReader(String test) {
+        mTest = test;
+    }
+
+    public static CellLayoutTestCaseReader readFromFile(String fileName) throws IOException {
+        String fileStr = new BufferedReader(new InputStreamReader(
+                getInstrumentation().getContext().getAssets().open(fileName))
+        ).lines().collect(Collectors.joining("\n"));
+        return new CellLayoutTestCaseReader(fileStr);
+    }
+
+    private State getStateFromLine(String line) {
+        String typeWithColons = line.trim().split(" ")[0].trim();
+        String type = typeWithColons.substring(0, typeWithColons.length() - 1);
+        try {
+            return Enum.valueOf(State.class, type.toUpperCase());
+        } catch (Exception e) {
+            throw new RuntimeException(
+                    "The given tag " + typeWithColons + " doesn't match with the existing tags");
+        }
+    }
+
+    private String removeTag(String line) {
+        return line.split(":")[1];
+    }
+
+    private TestSection parseNextLine(Iterator<String> it) {
+        String line = it.next();
+        if (line.trim().charAt(0) == '#') {
+            return new Comment();
+        }
+        State state = getStateFromLine(line);
+        line = removeTag(line);
+        switch (state) {
+            case ARGUMENTS:
+                return new Arguments(parseArgumentsLine(line));
+            case BOARD:
+                Point grid = parseGridSize(line);
+                return new Board(grid, parseBoard(it, grid.y));
+            default:
+                return new Comment();
+        }
+    }
+
+    List<TestSection> parse() {
+        List<TestSection> sections = new ArrayList<>();
+        String[] lines = mTest.split("\n");
+        Iterator<String> it = Arrays.stream(lines).iterator();
+        while (it.hasNext()) {
+            TestSection section = parseNextLine(it);
+            if (section.state == State.COMMENT) {
+                continue;
+            }
+            sections.add(section);
+        }
+        return sections;
+    }
+
+    private String parseBoard(Iterator<String> it, int rows) {
+        StringBuilder board = new StringBuilder();
+        for (int j = 0; j < rows; j++) {
+            board.append(it.next() + "\n");
+        }
+        return board.toString();
+    }
+
+    private String[] parseArgumentsLine(String line) {
+        return Arrays.stream(line.trim().split(" ")).map(String::trim).toArray(String[]::new);
+    }
+
+    private Point parseGridSize(String line) {
+        String[] values = line.toLowerCase(Locale.ROOT).split("x");
+        int x = Integer.parseInt(values[0].trim());
+        int y = Integer.parseInt(values[1].trim());
+        return new Point(x, y);
+    }
+}
diff --git a/tests/src/com/android/launcher3/celllayout/CellLayoutTestUtils.java b/tests/src/com/android/launcher3/celllayout/CellLayoutTestUtils.java
new file mode 100644
index 0000000..0d2f252
--- /dev/null
+++ b/tests/src/com/android/launcher3/celllayout/CellLayoutTestUtils.java
@@ -0,0 +1,80 @@
+/*
+ * 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.launcher3.celllayout;
+
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_DESKTOP;
+
+import android.view.View;
+
+import com.android.launcher3.CellLayout;
+import com.android.launcher3.Launcher;
+import com.android.launcher3.views.DoubleShadowBubbleTextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class CellLayoutTestUtils {
+
+    public static ArrayList<CellLayoutBoard> workspaceToBoards(Launcher launcher) {
+        ArrayList<CellLayoutBoard> boards = new ArrayList<>();
+        for (CellLayout cellLayout : launcher.getWorkspace().mWorkspaceScreens) {
+
+            int count = cellLayout.getShortcutsAndWidgets().getChildCount();
+            for (int i = 0; i < count; i++) {
+                View callView = cellLayout.getShortcutsAndWidgets().getChildAt(i);
+                CellLayoutLayoutParams params =
+                        (CellLayoutLayoutParams) callView.getLayoutParams();
+
+                CellPosMapper.CellPos pos = launcher.getCellPosMapper().mapPresenterToModel(
+                        params.getCellX(), params.getCellY(),
+                        launcher.getWorkspace().getIdForScreen(cellLayout), CONTAINER_DESKTOP);
+                int screenId = pos.screenId;
+                if (screenId >= boards.size() - 1) {
+                    boards.add(new CellLayoutBoard());
+                }
+                CellLayoutBoard board = boards.get(screenId);
+                // is icon
+                if (callView instanceof DoubleShadowBubbleTextView) {
+                    board.addIcon(pos.cellX, pos.cellY);
+                } else {
+                    // is widget
+                    board.addWidget(params.getCellX(), params.getCellY(), params.cellHSpan,
+                            params.cellVSpan);
+                }
+            }
+        }
+        return boards;
+    }
+
+    public static CellLayoutBoard viewsToBoard(List<View> views, int width, int height) {
+        CellLayoutBoard board = new CellLayoutBoard();
+        board.mWidth = width;
+        board.mHeight = height;
+
+        for (View callView : views) {
+            CellLayoutLayoutParams params = (CellLayoutLayoutParams) callView.getLayoutParams();
+            // is icon
+            if (callView instanceof DoubleShadowBubbleTextView) {
+                board.addIcon(params.getCellX(), params.getCellY());
+            } else {
+                // is widget
+                board.addWidget(params.getCellX(), params.getCellY(), params.cellHSpan,
+                        params.cellVSpan);
+            }
+        }
+        return board;
+    }
+}
diff --git a/tests/src/com/android/launcher3/celllayout/CellPosMapperTest.java b/tests/src/com/android/launcher3/celllayout/CellPosMapperTest.java
new file mode 100644
index 0000000..29efb18
--- /dev/null
+++ b/tests/src/com/android/launcher3/celllayout/CellPosMapperTest.java
@@ -0,0 +1,134 @@
+/*
+ * 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.launcher3.celllayout;
+
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_DESKTOP;
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_HOTSEAT;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import com.android.launcher3.celllayout.CellPosMapper.CellPos;
+import com.android.launcher3.celllayout.CellPosMapper.TwoPanelCellPosMapper;
+import com.android.launcher3.model.data.ItemInfo;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Tests for {@link CellPosMapper}
+ */
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class CellPosMapperTest {
+
+    @Test
+    public void testMapModelToPresenter_default() {
+        assertThat(CellPosMapper.DEFAULT.mapModelToPresenter(
+                createInfo(0, 0, 0, CONTAINER_DESKTOP))).isEqualTo(new CellPos(0, 0, 0));
+        assertThat(CellPosMapper.DEFAULT.mapModelToPresenter(
+                createInfo(0, 0, 1, CONTAINER_DESKTOP))).isEqualTo(new CellPos(0, 0, 1));
+        assertThat(CellPosMapper.DEFAULT.mapModelToPresenter(
+                createInfo(5, 0, 1, CONTAINER_DESKTOP))).isEqualTo(new CellPos(5, 0, 1));
+        assertThat(CellPosMapper.DEFAULT.mapModelToPresenter(
+                createInfo(5, 0, 0, CONTAINER_DESKTOP))).isEqualTo(new CellPos(5, 0, 0));
+
+        assertThat(CellPosMapper.DEFAULT.mapModelToPresenter(
+                createInfo(0, 0, 0, CONTAINER_HOTSEAT))).isEqualTo(new CellPos(0, 0, 0));
+        assertThat(CellPosMapper.DEFAULT.mapModelToPresenter(
+                createInfo(0, 0, 1, CONTAINER_HOTSEAT))).isEqualTo(new CellPos(0, 0, 1));
+        assertThat(CellPosMapper.DEFAULT.mapModelToPresenter(
+                createInfo(5, 0, 1, CONTAINER_HOTSEAT))).isEqualTo(new CellPos(5, 0, 1));
+        assertThat(CellPosMapper.DEFAULT.mapModelToPresenter(
+                createInfo(5, 0, 0, CONTAINER_HOTSEAT))).isEqualTo(new CellPos(5, 0, 0));
+    }
+
+    @Test
+    public void testMapPresenterToModel_default() {
+        assertThat(CellPosMapper.DEFAULT.mapPresenterToModel(
+                0, 0, 0, CONTAINER_DESKTOP)).isEqualTo(new CellPos(0, 0, 0));
+        assertThat(CellPosMapper.DEFAULT.mapPresenterToModel(
+                0, 0, 1, CONTAINER_DESKTOP)).isEqualTo(new CellPos(0, 0, 1));
+        assertThat(CellPosMapper.DEFAULT.mapPresenterToModel(
+                5, 0, 1, CONTAINER_DESKTOP)).isEqualTo(new CellPos(5, 0, 1));
+        assertThat(CellPosMapper.DEFAULT.mapPresenterToModel(
+                5, 0, 0, CONTAINER_DESKTOP)).isEqualTo(new CellPos(5, 0, 0));
+
+        assertThat(CellPosMapper.DEFAULT.mapPresenterToModel(
+                0, 0, 0, CONTAINER_HOTSEAT)).isEqualTo(new CellPos(0, 0, 0));
+        assertThat(CellPosMapper.DEFAULT.mapPresenterToModel(
+                0, 0, 1, CONTAINER_HOTSEAT)).isEqualTo(new CellPos(0, 0, 1));
+        assertThat(CellPosMapper.DEFAULT.mapPresenterToModel(
+                5, 0, 1, CONTAINER_HOTSEAT)).isEqualTo(new CellPos(5, 0, 1));
+        assertThat(CellPosMapper.DEFAULT.mapPresenterToModel(
+                5, 0, 0, CONTAINER_HOTSEAT)).isEqualTo(new CellPos(5, 0, 0));
+    }
+
+    @Test
+    public void testMapModelToPresenter_twoPanel() {
+        CellPosMapper mapper = new TwoPanelCellPosMapper(8);
+        assertThat(mapper.mapModelToPresenter(
+                createInfo(0, 0, 0, CONTAINER_DESKTOP))).isEqualTo(new CellPos(0, 0, 0));
+        assertThat(mapper.mapModelToPresenter(
+                createInfo(0, 0, 1, CONTAINER_DESKTOP))).isEqualTo(new CellPos(8, 0, 0));
+        assertThat(mapper.mapModelToPresenter(
+                createInfo(5, 0, 1, CONTAINER_DESKTOP))).isEqualTo(new CellPos(13, 0, 0));
+        assertThat(mapper.mapModelToPresenter(
+                createInfo(5, 0, 0, CONTAINER_DESKTOP))).isEqualTo(new CellPos(5, 0, 0));
+
+        assertThat(mapper.mapModelToPresenter(
+                createInfo(0, 0, 0, CONTAINER_HOTSEAT))).isEqualTo(new CellPos(0, 0, 0));
+        assertThat(mapper.mapModelToPresenter(
+                createInfo(0, 0, 1, CONTAINER_HOTSEAT))).isEqualTo(new CellPos(0, 0, 1));
+        assertThat(mapper.mapModelToPresenter(
+                createInfo(5, 0, 1, CONTAINER_HOTSEAT))).isEqualTo(new CellPos(5, 0, 1));
+        assertThat(mapper.mapModelToPresenter(
+                createInfo(5, 0, 0, CONTAINER_HOTSEAT))).isEqualTo(new CellPos(5, 0, 0));
+    }
+
+    @Test
+    public void testMapPresenterToModel_twoPanel() {
+        CellPosMapper mapper = new TwoPanelCellPosMapper(3);
+        assertThat(mapper.mapPresenterToModel(
+                0, 0, 0, CONTAINER_DESKTOP)).isEqualTo(new CellPos(0, 0, 0));
+        assertThat(mapper.mapPresenterToModel(
+                0, 0, 1, CONTAINER_DESKTOP)).isEqualTo(new CellPos(0, 0, 1));
+        assertThat(mapper.mapPresenterToModel(
+                5, 0, 1, CONTAINER_DESKTOP)).isEqualTo(new CellPos(5, 0, 1));
+        assertThat(mapper.mapPresenterToModel(
+                5, 0, 0, CONTAINER_DESKTOP)).isEqualTo(new CellPos(2, 0, 1));
+
+        assertThat(mapper.mapPresenterToModel(
+                0, 0, 0, CONTAINER_HOTSEAT)).isEqualTo(new CellPos(0, 0, 0));
+        assertThat(mapper.mapPresenterToModel(
+                0, 0, 1, CONTAINER_HOTSEAT)).isEqualTo(new CellPos(0, 0, 1));
+        assertThat(mapper.mapPresenterToModel(
+                5, 0, 1, CONTAINER_HOTSEAT)).isEqualTo(new CellPos(5, 0, 1));
+        assertThat(mapper.mapPresenterToModel(
+                5, 0, 0, CONTAINER_HOTSEAT)).isEqualTo(new CellPos(5, 0, 0));
+    }
+
+    private ItemInfo createInfo(int cellX, int cellY, int screen, int container) {
+        ItemInfo info = new ItemInfo();
+        info.cellX = cellX;
+        info.cellY = cellY;
+        info.screenId = screen;
+        info.container = container;
+        return info;
+    }
+}
diff --git a/tests/src/com/android/launcher3/celllayout/FavoriteItemsTransaction.java b/tests/src/com/android/launcher3/celllayout/FavoriteItemsTransaction.java
new file mode 100644
index 0000000..8ce932d
--- /dev/null
+++ b/tests/src/com/android/launcher3/celllayout/FavoriteItemsTransaction.java
@@ -0,0 +1,76 @@
+/*
+ * 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.launcher3.celllayout;
+
+import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
+import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
+
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.Context;
+
+import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.LauncherSettings;
+import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.ui.AbstractLauncherUiTest;
+import com.android.launcher3.util.ContentWriter;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+
+public class FavoriteItemsTransaction {
+    private ArrayList<ItemInfo> mItemsToSubmit;
+    private Context mContext;
+    private ContentResolver mResolver;
+    public AbstractLauncherUiTest mTest;
+
+    public FavoriteItemsTransaction(Context context, AbstractLauncherUiTest test) {
+        mItemsToSubmit = new ArrayList<>();
+        mContext = context;
+        mResolver = mContext.getContentResolver();
+        mTest = test;
+    }
+
+    public FavoriteItemsTransaction addItem(ItemInfo itemInfo) {
+        this.mItemsToSubmit.add(itemInfo);
+        return this;
+    }
+
+    public FavoriteItemsTransaction removeLast() {
+        this.mItemsToSubmit.remove(this.mItemsToSubmit.size() - 1);
+        return this;
+    }
+
+    /**
+     * Commits all the ItemInfo into the database of Favorites
+     **/
+    public void commit() throws ExecutionException, InterruptedException {
+        List<ContentValues> values = new ArrayList<>();
+        for (ItemInfo item : this.mItemsToSubmit) {
+            ContentWriter writer = new ContentWriter(mContext);
+            item.onAddToDatabase(writer);
+            writer.put(LauncherSettings.Favorites._ID, item.id);
+            values.add(writer.getValues(mContext));
+        }
+        // Submit the icons to the database in the model thread to prevent race conditions
+        MODEL_EXECUTOR.submit(() -> mResolver.bulkInsert(LauncherSettings.Favorites.CONTENT_URI,
+                values.toArray(new ContentValues[0]))).get();
+        // Reload the state of the Launcher
+        MAIN_EXECUTOR.submit(() -> LauncherAppState.getInstance(
+                mContext).getModel().forceReload()).get();
+    }
+}
diff --git a/tests/src/com/android/launcher3/celllayout/MultipleCellLayoutsSimpleReorder.java b/tests/src/com/android/launcher3/celllayout/MultipleCellLayoutsSimpleReorder.java
new file mode 100644
index 0000000..706c1a7
--- /dev/null
+++ b/tests/src/com/android/launcher3/celllayout/MultipleCellLayoutsSimpleReorder.java
@@ -0,0 +1,90 @@
+/*
+ * 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.launcher3.celllayout.testcases;
+
+import android.graphics.Point;
+
+import com.android.launcher3.celllayout.ReorderTestCase;
+
+import java.util.Map;
+
+/**
+ * The grids represent the workspace to be build by TestWorkspaceBuilder, to see what each character
+ * in the board mean refer to {@code CellType}
+ */
+public class MultipleCellLayoutsSimpleReorder {
+
+    /** 5x5 Test
+     **/
+    private static final String START_BOARD_STR_5x5 = ""
+            + "xxxxx|-----\n"
+            + "--mm-|-----\n"
+            + "--mm-|-----\n"
+            + "-----|-----\n"
+            + "-----|-----";
+    private static final Point MOVE_TO_5x5 = new Point(8, 3);
+    private static final String END_BOARD_STR_5x5 = ""
+            + "xxxxx|-----\n"
+            + "-----|-----\n"
+            + "-----|-----\n"
+            + "-----|---mm\n"
+            + "-----|---mm";
+    private static final ReorderTestCase TEST_CASE_5x5 = new ReorderTestCase(START_BOARD_STR_5x5,
+            MOVE_TO_5x5,
+            END_BOARD_STR_5x5);
+
+    /** 4x4 Test
+     **/
+    private static final String START_BOARD_STR_4x4 = ""
+            + "xxxx|----\n"
+            + "--mm|----\n"
+            + "--mm|----\n"
+            + "----|----";
+    private static final Point MOVE_TO_4x4 = new Point(5, 3);
+    private static final String END_BOARD_STR_4x4 = ""
+            + "xxxx|----\n"
+            + "----|----\n"
+            + "----|-mm-\n"
+            + "----|-mm-";
+    private static final ReorderTestCase TEST_CASE_4x4 = new ReorderTestCase(START_BOARD_STR_4x4,
+            MOVE_TO_4x4,
+            END_BOARD_STR_4x4);
+
+
+    /** 6x5 Test
+     **/
+    private static final String START_BOARD_STR_6x5 = ""
+            + "xxxxxx|------\n"
+            + "--m---|------\n"
+            + "------|------\n"
+            + "------|------\n"
+            + "------|------";
+    private static final Point MOVE_TO_6x5 = new Point(10, 4);
+    private static final String END_BOARD_STR_6x5 = ""
+            + "xxxxxx|------\n"
+            + "------|------\n"
+            + "------|------\n"
+            + "------|------\n"
+            + "------|----m-";
+    private static final ReorderTestCase TEST_CASE_6x5 = new ReorderTestCase(START_BOARD_STR_6x5,
+            MOVE_TO_6x5,
+            END_BOARD_STR_6x5);
+
+    public static final Map<Point, ReorderTestCase> TEST_BY_GRID_SIZE =
+            Map.of(new Point(5, 5), TEST_CASE_5x5,
+                    new Point(4, 4), TEST_CASE_4x4,
+                    new Point(6, 5), TEST_CASE_6x5);
+}
diff --git a/tests/src/com/android/launcher3/celllayout/ReorderAlgorithmUnitTest.java b/tests/src/com/android/launcher3/celllayout/ReorderAlgorithmUnitTest.java
new file mode 100644
index 0000000..ee05fe6
--- /dev/null
+++ b/tests/src/com/android/launcher3/celllayout/ReorderAlgorithmUnitTest.java
@@ -0,0 +1,267 @@
+/*
+ * 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.launcher3.celllayout;
+
+import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import android.content.Context;
+import android.graphics.Point;
+import android.graphics.Rect;
+import android.view.View;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import com.android.launcher3.CellLayout;
+import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.InvariantDeviceProfile;
+import com.android.launcher3.util.ActivityContextWrapper;
+import com.android.launcher3.views.DoubleShadowBubbleTextView;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Random;
+
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class ReorderAlgorithmUnitTest {
+    private Context mApplicationContext;
+
+    private int mPrevNumColumns, mPrevNumRows;
+
+    @Test
+    public void testAllCases() throws IOException {
+        List<ReorderAlgorithmUnitTestCase> testCases = getTestCases(
+                "ReorderAlgorithmUnitTest/reorder_algorithm_test_cases");
+        mApplicationContext = new ActivityContextWrapper(getApplicationContext());
+        List<Integer> failingCases = new ArrayList<>();
+        for (int i = 0; i < testCases.size(); i++) {
+            try {
+                evaluateTestCase(testCases.get(i));
+            } catch (AssertionError e) {
+                e.printStackTrace();
+                failingCases.add(i);
+            }
+        }
+        assertEquals("Some test cases failed " + Arrays.toString(failingCases.toArray()), 0,
+                failingCases.size());
+    }
+
+    private void addViewInCellLayout(CellLayout cellLayout, int cellX, int cellY, int spanX,
+            int spanY, boolean isWidget) {
+        View cell = isWidget ? new View(mApplicationContext) : new DoubleShadowBubbleTextView(
+                mApplicationContext);
+        cell.setLayoutParams(new CellLayoutLayoutParams(cellX, cellY, spanX, spanY));
+        cellLayout.addViewToCellLayout(cell, -1, cell.getId(),
+                (CellLayoutLayoutParams) cell.getLayoutParams(), true);
+    }
+
+    public CellLayout createCellLayout(int width, int height) {
+        Context c = mApplicationContext;
+        DeviceProfile dp = InvariantDeviceProfile.INSTANCE.get(c).getDeviceProfile(c).copy(c);
+        // modify the device profile.
+        dp.inv.numColumns = width;
+        dp.inv.numRows = height;
+        dp.cellLayoutBorderSpacePx = new Point(0, 0);
+
+        CellLayout cl = new CellLayout(getWrappedContext(c, dp));
+        // I put a very large number for width and height so that all the items can fit, it doesn't
+        // need to be exact, just bigger than the sum of cell border
+        cl.measure(View.MeasureSpec.makeMeasureSpec(10000, View.MeasureSpec.EXACTLY),
+                View.MeasureSpec.makeMeasureSpec(10000, View.MeasureSpec.EXACTLY));
+        return cl;
+    }
+
+    private Context getWrappedContext(Context context, DeviceProfile dp) {
+        return new ActivityContextWrapper(context) {
+            public DeviceProfile getDeviceProfile() {
+                return dp;
+            }
+        };
+    }
+
+    public CellLayout.ItemConfiguration solve(CellLayoutBoard board, int x, int y, int spanX,
+            int spanY, int minSpanX, int minSpanY) {
+        CellLayout cl = createCellLayout(board.getWidth(), board.getHeight());
+
+        // The views have to be sorted or the result can vary
+        board.getIcons()
+                .stream()
+                .map(CellLayoutBoard.IconPoint::getCoord)
+                .sorted(Comparator.comparing(p -> ((Point) p).x).thenComparing(p -> ((Point) p).y))
+                .forEach(p -> addViewInCellLayout(cl, p.x, p.y, 1, 1, false));
+        board.getWidgets().stream()
+                .sorted(Comparator.comparing(CellLayoutBoard.WidgetRect::getCellX)
+                        .thenComparing(CellLayoutBoard.WidgetRect::getCellY))
+                .forEach(widget -> addViewInCellLayout(cl, widget.getCellX(), widget.getCellY(),
+                        widget.getSpanX(), widget.getSpanY(), true));
+
+        int[] testCaseXYinPixels = new int[2];
+        cl.regionToCenterPoint(x, y, spanX, spanY, testCaseXYinPixels);
+        CellLayout.ItemConfiguration solution = cl.createReorderAlgorithm().calculateReorder(
+                testCaseXYinPixels[0], testCaseXYinPixels[1], minSpanX, minSpanY, spanX, spanY,
+                null);
+        if (solution == null) {
+            solution = new CellLayout.ItemConfiguration();
+            solution.isSolution = false;
+        }
+        return solution;
+    }
+
+    public CellLayoutBoard boardFromSolution(CellLayout.ItemConfiguration solution, int width,
+            int height) {
+        // Update the views with solution value
+        solution.map.forEach((key, val) -> key.setLayoutParams(
+                new CellLayoutLayoutParams(val.cellX, val.cellY, val.spanX, val.spanY)));
+        CellLayoutBoard board = CellLayoutTestUtils.viewsToBoard(
+                new ArrayList<>(solution.map.keySet()), width, height);
+        board.addWidget(solution.cellX, solution.cellY, solution.spanX, solution.spanY,
+                'z');
+        return board;
+    }
+
+    public void evaluateTestCase(ReorderAlgorithmUnitTestCase testCase) {
+        CellLayout.ItemConfiguration solution = solve(testCase.startBoard, testCase.x,
+                testCase.y, testCase.spanX, testCase.spanY, testCase.minSpanX,
+                testCase.minSpanY);
+        assertEquals("should be a valid solution", solution.isSolution,
+                testCase.isValidSolution);
+        if (testCase.isValidSolution) {
+            CellLayoutBoard finishBoard = boardFromSolution(solution,
+                    testCase.startBoard.getWidth(), testCase.startBoard.getHeight());
+            assertTrue("End result and test case result board doesn't match ",
+                    finishBoard.compareTo(testCase.endBoard) == 0);
+        }
+    }
+
+    @Before
+    public void storePreviousValues() {
+        Context c = new ActivityContextWrapper(getApplicationContext());
+        DeviceProfile dp = InvariantDeviceProfile.INSTANCE.get(c).getDeviceProfile(c).copy(c);
+        mPrevNumColumns = dp.inv.numColumns;
+        mPrevNumRows = dp.inv.numColumns;
+    }
+
+    @After
+    public void restorePreviousValues() {
+        Context c = new ActivityContextWrapper(getApplicationContext());
+        DeviceProfile dp = InvariantDeviceProfile.INSTANCE.get(c).getDeviceProfile(c).copy(c);
+        dp.inv.numColumns = mPrevNumColumns;
+        dp.inv.numRows = mPrevNumRows;
+    }
+
+    @SuppressWarnings("UnusedMethod")
+    /**
+     * Utility function used to generate all the test cases
+     */
+    private ReorderAlgorithmUnitTestCase generateRandomTestCase() {
+        ReorderAlgorithmUnitTestCase testCase = new ReorderAlgorithmUnitTestCase();
+
+        int width = getRandom(3, 8);
+        int height = getRandom(3, 8);
+
+        int targetWidth = getRandom(1, width - 2);
+        int targetHeight = getRandom(1, height - 2);
+
+        int minTargetWidth = getRandom(1, targetWidth);
+        int minTargetHeight = getRandom(1, targetHeight);
+
+        int x = getRandom(0, width - targetWidth);
+        int y = getRandom(0, height - targetHeight);
+
+        CellLayoutBoard board = generateBoard(new CellLayoutBoard(width, height),
+                new Rect(0, 0, width, height), targetWidth * targetHeight);
+
+        CellLayout.ItemConfiguration solution = solve(board, x, y, targetWidth, targetHeight,
+                minTargetWidth, minTargetHeight);
+
+        CellLayoutBoard finishBoard = solution.isSolution ? boardFromSolution(solution,
+                board.getWidth(), board.getHeight()) : new CellLayoutBoard(board.getWidth(),
+                board.getHeight());
+
+
+        testCase.startBoard = board;
+        testCase.endBoard = finishBoard;
+        testCase.isValidSolution = solution.isSolution;
+        testCase.x = x;
+        testCase.y = y;
+        testCase.spanX = targetWidth;
+        testCase.spanY = targetHeight;
+        testCase.minSpanX = minTargetWidth;
+        testCase.minSpanY = minTargetHeight;
+        testCase.type = solution.area() == 1 ? "icon" : "widget";
+
+        return testCase;
+    }
+
+    private int getRandom(int start, int end) {
+        int random = end == 0 ? 0 : new Random().nextInt(end);
+        return start + random;
+    }
+
+    private CellLayoutBoard generateBoard(CellLayoutBoard board, Rect area,
+            int emptySpaces) {
+        if (area.height() * area.width() <= 0) return board;
+
+        int width = getRandom(1, area.width() - 1);
+        int height = getRandom(1, area.height() - 1);
+
+        int x = area.left + getRandom(0, area.width() - width);
+        int y = area.top + getRandom(0, area.height() - height);
+
+        if (emptySpaces > 0) {
+            emptySpaces -= width * height;
+        } else if (width * height > 1) {
+            board.addWidget(x, y, width, height);
+        } else {
+            board.addIcon(x, y);
+        }
+
+        generateBoard(board,
+                new Rect(area.left, area.top, area.right, y), emptySpaces);
+        generateBoard(board,
+                new Rect(area.left, y, x, area.bottom), emptySpaces);
+        generateBoard(board,
+                new Rect(x, y + height, area.right, area.bottom), emptySpaces);
+        generateBoard(board,
+                new Rect(x + width, y, area.right, y + height), emptySpaces);
+
+        return board;
+    }
+
+    private static List<ReorderAlgorithmUnitTestCase> getTestCases(String testPath)
+            throws IOException {
+        List<ReorderAlgorithmUnitTestCase> cases = new ArrayList<>();
+        Iterator<CellLayoutTestCaseReader.TestSection> iterableSection =
+                CellLayoutTestCaseReader.readFromFile(testPath).parse().iterator();
+        while (iterableSection.hasNext()) {
+            cases.add(ReorderAlgorithmUnitTestCase.readNextCase(iterableSection));
+        }
+        return cases;
+    }
+}
diff --git a/tests/src/com/android/launcher3/celllayout/ReorderAlgorithmUnitTestCase.java b/tests/src/com/android/launcher3/celllayout/ReorderAlgorithmUnitTestCase.java
new file mode 100644
index 0000000..4274130
--- /dev/null
+++ b/tests/src/com/android/launcher3/celllayout/ReorderAlgorithmUnitTestCase.java
@@ -0,0 +1,151 @@
+/*
+ * 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.launcher3.celllayout;
+
+import java.util.Iterator;
+
+/**
+ * Represents a test case for {@code ReorderAlgorithmUnitTest}. The test cases are generated from
+ * text, an example of a test is the following:
+ *
+ * board: 10x8
+ * aaaaaaaaai
+ * bbbbbcciii
+ * ---------f
+ * ---------f
+ * ---------f
+ * ---------i
+ * iiddddddii
+ * iieeiiiiii
+ * arguments: 2 5 7 1 3 1 widget valid
+ * board: 10x8
+ * bbbbbbbbbi
+ * eeeeecciii
+ * ---------a
+ * ---------a
+ * ---------a
+ * --zzzzzzzi
+ * iiddddddii
+ * iiffiiiiii
+ *
+ *
+ * This represents a Workspace boards and a dragged widget that wants to be dropped on the
+ * workspace. The endBoard represents the result from such drag
+ * The first board is the startBoard, the arguments are as follow: cellX, cellY, widget spanX,
+ * widget spanY, minimum spanX, minimum spanX, type of object being drag (icon, widget, folder ),
+ * if the resulting board is a valid solution or not reorder was found.
+ *
+ * For more information on how to read the board please go to the text file
+ * reorder_algorithm_test_cases
+ */
+public class ReorderAlgorithmUnitTestCase {
+
+    CellLayoutBoard startBoard;
+
+    int x, y, spanX, spanY, minSpanX, minSpanY;
+    String type;
+    boolean isValidSolution;
+    CellLayoutBoard endBoard;
+
+    public static ReorderAlgorithmUnitTestCase readNextCase(
+            Iterator<CellLayoutTestCaseReader.TestSection> sections) {
+        ReorderAlgorithmUnitTestCase testCase = new ReorderAlgorithmUnitTestCase();
+        CellLayoutTestCaseReader.Board startBoard =
+                (CellLayoutTestCaseReader.Board) sections.next();
+        testCase.startBoard = CellLayoutBoard.boardFromString(startBoard.board);
+        CellLayoutTestCaseReader.Arguments arguments =
+                (CellLayoutTestCaseReader.Arguments) sections.next();
+        testCase.x = Integer.parseInt(arguments.arguments[0]);
+        testCase.y = Integer.parseInt(arguments.arguments[1]);
+        testCase.spanX = Integer.parseInt(arguments.arguments[2]);
+        testCase.spanY = Integer.parseInt(arguments.arguments[3]);
+        testCase.minSpanX = Integer.parseInt(arguments.arguments[4]);
+        testCase.minSpanY = Integer.parseInt(arguments.arguments[5]);
+        testCase.type = arguments.arguments[6];
+        testCase.isValidSolution = arguments.arguments[7].compareTo("valid") == 0;
+
+        CellLayoutTestCaseReader.Board endBoard = (CellLayoutTestCaseReader.Board) sections.next();
+        testCase.endBoard = CellLayoutBoard.boardFromString(endBoard.board);
+        return testCase;
+    }
+
+    public CellLayoutBoard getStartBoard() {
+        return startBoard;
+    }
+
+    public int getX() {
+        return x;
+    }
+
+    public void setX(int x) {
+        this.x = x;
+    }
+
+    public int getY() {
+        return y;
+    }
+
+    public void setY(int y) {
+        this.y = y;
+    }
+
+    public int getSpanX() {
+        return spanX;
+    }
+
+    public void setSpanX(int spanX) {
+        this.spanX = spanX;
+    }
+
+    public int getSpanY() {
+        return spanY;
+    }
+
+    public void setSpanY(int spanY) {
+        this.spanY = spanY;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public boolean isValidSolution() {
+        return isValidSolution;
+    }
+
+    public void setValidSolution(boolean validSolution) {
+        isValidSolution = validSolution;
+    }
+
+    public CellLayoutBoard getEndBoard() {
+        return endBoard;
+    }
+
+    public void setEndBoard(CellLayoutBoard endBoard) {
+        this.endBoard = endBoard;
+    }
+
+    @Override
+    public String toString() {
+        String valid = isValidSolution ? "valid" : "invalid";
+        return startBoard + "arguments: " + x + " " + y + " " + spanX + " " + spanY + " " + minSpanX
+                + " " + minSpanY + " " + type + " " + valid + "\n" + endBoard;
+    }
+}
diff --git a/tests/src/com/android/launcher3/celllayout/ReorderTestCase.java b/tests/src/com/android/launcher3/celllayout/ReorderTestCase.java
new file mode 100644
index 0000000..ed84a60
--- /dev/null
+++ b/tests/src/com/android/launcher3/celllayout/ReorderTestCase.java
@@ -0,0 +1,45 @@
+/*
+ * 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.launcher3.celllayout;
+
+import android.graphics.Point;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class ReorderTestCase {
+    public List<CellLayoutBoard> mStart;
+    public Point moveMainTo;
+    public List<List<CellLayoutBoard>> mEnd;
+
+    public ReorderTestCase(List<CellLayoutBoard> start, Point moveMainTo,
+            List<CellLayoutBoard>... end) {
+        mStart = start;
+        this.moveMainTo = moveMainTo;
+        mEnd = Arrays.asList(end);
+    }
+
+    public ReorderTestCase(String start, Point moveMainTo, String ... end) {
+        mStart = CellLayoutBoard.boardListFromString(start);
+        this.moveMainTo = moveMainTo;
+        mEnd = Arrays
+                .asList(end)
+                .stream()
+                .map(CellLayoutBoard::boardListFromString)
+                .collect(Collectors.toList());
+    }
+}
diff --git a/tests/src/com/android/launcher3/celllayout/ReorderWidgets.java b/tests/src/com/android/launcher3/celllayout/ReorderWidgets.java
new file mode 100644
index 0000000..243edc3
--- /dev/null
+++ b/tests/src/com/android/launcher3/celllayout/ReorderWidgets.java
@@ -0,0 +1,200 @@
+/*
+ * 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.launcher3.celllayout;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import android.graphics.Point;
+import android.util.Log;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import com.android.launcher3.InvariantDeviceProfile;
+import com.android.launcher3.celllayout.testcases.MultipleCellLayoutsSimpleReorder;
+import com.android.launcher3.tapl.Widget;
+import com.android.launcher3.tapl.WidgetResizeFrame;
+import com.android.launcher3.ui.AbstractLauncherUiTest;
+import com.android.launcher3.ui.TaplTestsLauncher3;
+import com.android.launcher3.util.rule.ShellCommandRule;
+
+import org.junit.Assume;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class ReorderWidgets extends AbstractLauncherUiTest {
+
+    @Rule
+    public ShellCommandRule mGrantWidgetRule = ShellCommandRule.grantWidgetBind();
+
+    private static final String TAG = ReorderWidgets.class.getSimpleName();
+
+    TestWorkspaceBuilder mWorkspaceBuilder;
+
+    @Before
+    public void setup() throws Throwable {
+        mWorkspaceBuilder = new TestWorkspaceBuilder(this, mTargetContext);
+        TaplTestsLauncher3.initialize(this);
+        clearHomescreen();
+    }
+
+    /**
+     * Validate if the given board represent the current CellLayout
+     **/
+    private boolean validateBoard(List<CellLayoutBoard> testBoards) {
+        ArrayList<CellLayoutBoard> workspaceBoards = workspaceToBoards();
+        if (workspaceBoards.size() < testBoards.size()) {
+            return false;
+        }
+        for (int i = 0; i < testBoards.size(); i++) {
+            if (testBoards.get(i).compareTo(workspaceBoards.get(i)) != 0) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private FavoriteItemsTransaction buildWorkspaceFromBoards(List<CellLayoutBoard> boards,
+            FavoriteItemsTransaction transaction) {
+        for (int i = 0; i < boards.size(); i++) {
+            CellLayoutBoard board = boards.get(i);
+            mWorkspaceBuilder.buildFromBoard(board, transaction, i);
+        }
+        return transaction;
+    }
+
+    private void printCurrentWorkspace() {
+        InvariantDeviceProfile idp = InvariantDeviceProfile.INSTANCE.get(mTargetContext);
+        ArrayList<CellLayoutBoard> boards = workspaceToBoards();
+        for (int i = 0; i < boards.size(); i++) {
+            Log.d(TAG, "Screen number " + i);
+            Log.d(TAG, ".\n" + boards.get(i).toString(idp.numColumns, idp.numRows));
+        }
+    }
+
+    private ArrayList<CellLayoutBoard> workspaceToBoards() {
+        return getFromLauncher(CellLayoutTestUtils::workspaceToBoards);
+    }
+
+    private void runTestCase(ReorderTestCase testCase)
+            throws ExecutionException, InterruptedException {
+        CellLayoutBoard.WidgetRect mainWidgetCellPos = CellLayoutBoard.getMainFromList(
+                testCase.mStart);
+
+        FavoriteItemsTransaction transaction =
+                new FavoriteItemsTransaction(mTargetContext, this);
+        transaction = buildWorkspaceFromBoards(testCase.mStart, transaction);
+        transaction.commit();
+        // resetLoaderState triggers the launcher to start loading the workspace which allows
+        // waitForLauncherCondition to wait for that condition, otherwise the condition would
+        // always be true and it wouldn't wait for the changes to be applied.
+        resetLoaderState();
+        waitForLauncherCondition("Workspace didn't finish loading", l -> !l.isWorkspaceLoading());
+        Widget widget = mLauncher.getWorkspace().getWidgetAtCell(mainWidgetCellPos.getCellX(),
+                mainWidgetCellPos.getCellY());
+        assertNotNull(widget);
+        WidgetResizeFrame resizeFrame = widget.dragWidgetToWorkspace(testCase.moveMainTo.x,
+                testCase.moveMainTo.y, mainWidgetCellPos.getSpanX(), mainWidgetCellPos.getSpanY());
+        resizeFrame.dismiss();
+
+        boolean isValid = false;
+        for (List<CellLayoutBoard> boards : testCase.mEnd) {
+            isValid |= validateBoard(boards);
+            if (isValid) break;
+        }
+        printCurrentWorkspace();
+        assertTrue("Non of the valid boards match with the current state", isValid);
+    }
+
+    /**
+     * Run only the test define for the current grid size if such test exist
+     *
+     * @param testCaseMap map containing all the tests per grid size (Point)
+     */
+    private void runTestCaseMap(Map<Point, ReorderTestCase> testCaseMap, String testName)
+            throws ExecutionException, InterruptedException {
+        Point iconGridDimensions = mLauncher.getWorkspace().getIconGridDimensions();
+        Log.d(TAG, "Running test " + testName + " for grid " + iconGridDimensions);
+        Assume.assumeTrue(
+                "The test " + testName + " doesn't support " + iconGridDimensions + " grid layout",
+                testCaseMap.containsKey(iconGridDimensions));
+        runTestCase(testCaseMap.get(iconGridDimensions));
+    }
+
+    @Test
+    public void simpleReorder() throws Exception {
+        runTestCaseMap(getTestMap("ReorderWidgets/simple_reorder_case"), "push_reorder_case");
+    }
+
+    @Test
+    public void pushTest() throws Exception {
+        runTestCaseMap(getTestMap("ReorderWidgets/push_reorder_case"), "push_reorder_case");
+    }
+
+    @Test
+    public void fullReorder() throws Exception {
+        runTestCaseMap(getTestMap("ReorderWidgets/full_reorder_case"), "full_reorder_case");
+    }
+
+    @Test
+    public void moveOutReorder() throws Exception {
+        runTestCaseMap(getTestMap("ReorderWidgets/move_out_reorder_case"), "move_out_reorder_case");
+    }
+
+    @Test
+    public void multipleCellLayoutsSimpleReorder() throws ExecutionException, InterruptedException {
+        Assume.assumeTrue("Test doesn't support foldables", !mLauncher.isTwoPanels());
+        runTestCaseMap(MultipleCellLayoutsSimpleReorder.TEST_BY_GRID_SIZE,
+                MultipleCellLayoutsSimpleReorder.class.getSimpleName());
+    }
+
+    private void addTestCase(Iterator<CellLayoutTestCaseReader.TestSection> sections,
+            Map<Point, ReorderTestCase> testCaseMap) {
+        CellLayoutTestCaseReader.Board startBoard =
+                ((CellLayoutTestCaseReader.Board) sections.next());
+        CellLayoutTestCaseReader.Arguments point =
+                ((CellLayoutTestCaseReader.Arguments) sections.next());
+        CellLayoutTestCaseReader.Board endBoard =
+                ((CellLayoutTestCaseReader.Board) sections.next());
+        Point moveTo = new Point(Integer.parseInt(point.arguments[0]),
+                Integer.parseInt(point.arguments[1]));
+        testCaseMap.put(startBoard.gridSize,
+                new ReorderTestCase(startBoard.board, moveTo, endBoard.board));
+    }
+
+    private Map<Point, ReorderTestCase> getTestMap(String testPath) throws IOException {
+        Map<Point, ReorderTestCase> testCaseMap = new HashMap<>();
+        Iterator<CellLayoutTestCaseReader.TestSection> iterableSection =
+                CellLayoutTestCaseReader.readFromFile(testPath).parse().iterator();
+        while (iterableSection.hasNext()) {
+            addTestCase(iterableSection, testCaseMap);
+        }
+        return testCaseMap;
+    }
+}
diff --git a/tests/src/com/android/launcher3/celllayout/TestBoardAppIcon.java b/tests/src/com/android/launcher3/celllayout/TestBoardAppIcon.java
new file mode 100644
index 0000000..04604d7
--- /dev/null
+++ b/tests/src/com/android/launcher3/celllayout/TestBoardAppIcon.java
@@ -0,0 +1,44 @@
+/*
+ * 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.launcher3.celllayout;
+
+import android.graphics.Point;
+
+public class TestBoardAppIcon {
+    public Point coord;
+    public char mType;
+
+    public TestBoardAppIcon(Point coord, char type) {
+        this.coord = coord;
+        mType = type;
+    }
+
+    public char getType() {
+        return mType;
+    }
+
+    public void setType(char type) {
+        mType = type;
+    }
+
+    public Point getCoord() {
+        return coord;
+    }
+
+    public void setCoord(Point coord) {
+        this.coord = coord;
+    }
+}
diff --git a/tests/src/com/android/launcher3/celllayout/TestBoardWidget.java b/tests/src/com/android/launcher3/celllayout/TestBoardWidget.java
new file mode 100644
index 0000000..7f9aa95
--- /dev/null
+++ b/tests/src/com/android/launcher3/celllayout/TestBoardWidget.java
@@ -0,0 +1,48 @@
+/*
+ * 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.launcher3.celllayout;
+
+import android.graphics.Rect;
+
+public class TestBoardWidget {
+    public char mType;
+    public Rect mBounds;
+
+    TestBoardWidget(char type, Rect bounds) {
+        this.mType = type;
+        this.mBounds = bounds;
+    }
+
+    int getSpanX() {
+        return mBounds.right - mBounds.left + 1;
+    }
+
+    int getSpanY() {
+        return mBounds.top - mBounds.bottom + 1;
+    }
+
+    int getCellX() {
+        return mBounds.left;
+    }
+
+    int getCellY() {
+        return mBounds.bottom;
+    }
+
+    boolean shouldIgnore() {
+        return this.mType == 'x';
+    }
+}
diff --git a/tests/src/com/android/launcher3/celllayout/TestWorkspaceBuilder.java b/tests/src/com/android/launcher3/celllayout/TestWorkspaceBuilder.java
new file mode 100644
index 0000000..5945605
--- /dev/null
+++ b/tests/src/com/android/launcher3/celllayout/TestWorkspaceBuilder.java
@@ -0,0 +1,163 @@
+/*
+ * 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.launcher3.celllayout;
+
+import static com.android.launcher3.util.WidgetUtils.createWidgetInfo;
+
+import android.content.ComponentName;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.graphics.Rect;
+import android.os.Process;
+import android.os.UserHandle;
+import android.util.Log;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.launcher3.InvariantDeviceProfile;
+import com.android.launcher3.LauncherSettings;
+import com.android.launcher3.model.data.AppInfo;
+import com.android.launcher3.model.data.ItemInfo;
+import com.android.launcher3.model.data.LauncherAppWidgetInfo;
+import com.android.launcher3.model.data.WorkspaceItemInfo;
+import com.android.launcher3.ui.AbstractLauncherUiTest;
+import com.android.launcher3.ui.TestViewHelpers;
+import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
+
+public class TestWorkspaceBuilder {
+
+    private static final String TAG = "CellLayoutBoardBuilder";
+    private static final ComponentName APP_COMPONENT_NAME = new ComponentName(
+            "com.google.android.calculator", "com.android.calculator2.Calculator");
+
+    public AbstractLauncherUiTest mTest;
+
+    private UserHandle mMyUser;
+
+    private Context mContext;
+    private ContentResolver mResolver;
+
+    public TestWorkspaceBuilder(AbstractLauncherUiTest test, Context context) {
+        mTest = test;
+        mMyUser = Process.myUserHandle();
+        mContext = context;
+        mResolver = mContext.getContentResolver();
+    }
+
+    /**
+     * Fills the given rect in WidgetRect with 1x1 widgets. This is useful to equalize cases.
+     */
+    private FavoriteItemsTransaction fillWithWidgets(CellLayoutBoard.WidgetRect widgetRect,
+            FavoriteItemsTransaction transaction, int screenId) {
+        int initX = widgetRect.getCellX();
+        int initY = widgetRect.getCellY();
+        for (int x = initX; x < initX + widgetRect.getSpanX(); x++) {
+            for (int y = initY; y < initY + widgetRect.getSpanY(); y++) {
+                try {
+                    // this widgets are filling, we don't care if we can't place them
+                    ItemInfo item = createWidgetInCell(
+                            new CellLayoutBoard.WidgetRect(CellLayoutBoard.CellType.IGNORE,
+                                    new Rect(x, y, x, y)), screenId);
+                    transaction.addItem(item);
+                } catch (Exception e) {
+                    Log.d(TAG, "Unable to place filling widget at " + x + "," + y);
+                }
+            }
+        }
+        return transaction;
+    }
+
+    private int getID() {
+        return LauncherSettings.Settings.call(
+                        mResolver, LauncherSettings.Settings.METHOD_NEW_ITEM_ID)
+                .getInt(LauncherSettings.Settings.EXTRA_VALUE);
+    }
+
+    private AppInfo getApp() {
+        return new AppInfo(APP_COMPONENT_NAME, "test icon", mMyUser,
+                AppInfo.makeLaunchIntent(APP_COMPONENT_NAME));
+    }
+
+    private void addCorrespondingWidgetRect(CellLayoutBoard.WidgetRect widgetRect,
+            FavoriteItemsTransaction transaction, int screenId) {
+        if (widgetRect.mType == 'x') {
+            fillWithWidgets(widgetRect, transaction, screenId);
+        } else {
+            transaction.addItem(createWidgetInCell(widgetRect, screenId));
+        }
+    }
+
+    /**
+     * Builds the given board into the transaction
+     */
+    public FavoriteItemsTransaction buildFromBoard(CellLayoutBoard board,
+            FavoriteItemsTransaction transaction, final int screenId) {
+        board.getWidgets().forEach(
+                (widgetRect) -> addCorrespondingWidgetRect(widgetRect, transaction, screenId));
+        board.getIcons().forEach((iconPoint) ->
+                transaction.addItem(createIconInCell(iconPoint, screenId))
+        );
+        return transaction;
+    }
+
+    /**
+     * Fills the hotseat row with apps instead of suggestions, for this to work the workspace should
+     * be clean otherwise this doesn't overrides the existing icons.
+     */
+    public FavoriteItemsTransaction fillHotseatIcons(FavoriteItemsTransaction transaction) {
+        int hotseatCount = InvariantDeviceProfile.INSTANCE.get(mContext).numDatabaseHotseatIcons;
+        for (int i = 0; i < hotseatCount; i++) {
+            transaction.addItem(getHotseatValues(i));
+        }
+        return transaction;
+    }
+
+    private ItemInfo createWidgetInCell(CellLayoutBoard.WidgetRect widgetRect, int screenId) {
+        LauncherAppWidgetProviderInfo info = TestViewHelpers.findWidgetProvider(mTest, false);
+        LauncherAppWidgetInfo item = createWidgetInfo(info,
+                ApplicationProvider.getApplicationContext(), true);
+        item.id = getID();
+        item.cellX = widgetRect.getCellX();
+        item.cellY = widgetRect.getCellY();
+        item.spanX = widgetRect.getSpanX();
+        item.spanY = widgetRect.getSpanY();
+        item.screenId = screenId;
+        return item;
+    }
+
+    private ItemInfo createIconInCell(CellLayoutBoard.IconPoint iconPoint, int screenId) {
+        WorkspaceItemInfo item = new WorkspaceItemInfo(getApp());
+        item.id = getID();
+        item.screenId = screenId;
+        item.cellX = iconPoint.getCoord().x;
+        item.cellY = iconPoint.getCoord().y;
+        item.minSpanY = item.minSpanX = item.spanX = item.spanY = 1;
+        item.container = LauncherSettings.Favorites.CONTAINER_DESKTOP;
+        return item;
+    }
+
+    private ItemInfo getHotseatValues(int x) {
+        WorkspaceItemInfo item = new WorkspaceItemInfo(getApp());
+        item.id = getID();
+        item.cellX = x;
+        item.cellY = 0;
+        item.minSpanY = item.minSpanX = item.spanX = item.spanY = 1;
+        item.rank = x;
+        item.screenId = x;
+        item.container = LauncherSettings.Favorites.CONTAINER_HOTSEAT;
+        return item;
+    }
+}
diff --git a/tests/src/com/android/launcher3/compat/PromiseIconUiTest.java b/tests/src/com/android/launcher3/compat/PromiseIconUiTest.java
index 92e3e64..f34a29e 100644
--- a/tests/src/com/android/launcher3/compat/PromiseIconUiTest.java
+++ b/tests/src/com/android/launcher3/compat/PromiseIconUiTest.java
@@ -34,7 +34,6 @@
 import org.junit.runner.RunWith;
 
 import java.util.UUID;
-import java.util.concurrent.TimeUnit;
 
 
 /**
@@ -45,8 +44,6 @@
 public class PromiseIconUiTest extends AbstractLauncherUiTest {
 
     private int mSessionId = -1;
-    // TODO(b/202985412): Revert to default timeout when PackageManager bug is fixed.
-    private static final long PROMISE_ICON_TIMEOUT = TimeUnit.SECONDS.toMillis(60);
 
     @Override
     public void setUp() throws Exception {
@@ -88,8 +85,7 @@
 
         // Verify promise icon is added
         waitForLauncherCondition("Test Promise App not found on workspace", launcher ->
-                launcher.getWorkspace().getFirstMatch(findPromiseApp) != null,
-                PROMISE_ICON_TIMEOUT);
+                launcher.getWorkspace().getFirstMatch(findPromiseApp) != null);
 
         // Remove session
         mTargetContext.getPackageManager().getPackageInstaller().abandonSession(mSessionId);
@@ -97,8 +93,7 @@
 
         // Verify promise icon is removed
         waitForLauncherCondition("Test Promise App not removed from workspace", launcher ->
-                launcher.getWorkspace().getFirstMatch(findPromiseApp) == null,
-                PROMISE_ICON_TIMEOUT);
+                launcher.getWorkspace().getFirstMatch(findPromiseApp) == null);
     }
 
     @Test
@@ -116,7 +111,6 @@
 
         // Verify promise icon is not added
         waitForLauncherCondition("Test Promise App not found on workspace", launcher ->
-                launcher.getWorkspace().getFirstMatch(findPromiseApp) == null,
-                PROMISE_ICON_TIMEOUT);
+                launcher.getWorkspace().getFirstMatch(findPromiseApp) == null);
     }
 }
diff --git a/tests/src/com/android/launcher3/deviceemulator/DisplayEmulator.java b/tests/src/com/android/launcher3/deviceemulator/DisplayEmulator.java
deleted file mode 100644
index 31468c5..0000000
--- a/tests/src/com/android/launcher3/deviceemulator/DisplayEmulator.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * 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.launcher3.deviceemulator;
-
-import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
-
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.Context;
-import android.net.Uri;
-import android.os.UserHandle;
-import android.view.Display;
-import android.view.IWindowManager;
-import android.view.WindowManagerGlobal;
-
-import androidx.test.uiautomator.UiDevice;
-
-import com.android.launcher3.deviceemulator.models.DeviceEmulationData;
-import com.android.launcher3.tapl.LauncherInstrumentation;
-import com.android.launcher3.util.window.WindowManagerProxy;
-
-import java.util.concurrent.Callable;
-
-
-public class DisplayEmulator {
-    Context mContext;
-    LauncherInstrumentation mLauncher;
-    DisplayEmulator(Context context, LauncherInstrumentation launcher) {
-        mContext = context;
-        mLauncher = launcher;
-    }
-
-    /**
-     * By changing the WindowManagerProxy we can override the window insets information
-     **/
-    private IWindowManager changeWindowManagerInstance(DeviceEmulationData deviceData) {
-        WindowManagerProxy.INSTANCE.initializeForTesting(
-                new TestWindowManagerProxy(mContext, deviceData));
-        return WindowManagerGlobal.getWindowManagerService();
-    }
-
-    public <T> T emulate(DeviceEmulationData device, String grid, Callable<T> runInEmulation)
-            throws Exception {
-        WindowManagerProxy original = WindowManagerProxy.INSTANCE.get(mContext);
-        // Set up emulation
-        final int userId = UserHandle.myUserId();
-        WindowManagerProxy.INSTANCE.initializeForTesting(
-                new TestWindowManagerProxy(mContext, device));
-        IWindowManager wm = changeWindowManagerInstance(device);
-        // Change density twice to force display controller to reset its state
-        wm.setForcedDisplayDensityForUser(Display.DEFAULT_DISPLAY, device.density / 2, userId);
-        wm.setForcedDisplayDensityForUser(Display.DEFAULT_DISPLAY, device.density, userId);
-        wm.setForcedDisplaySize(Display.DEFAULT_DISPLAY, device.width, device.height);
-        wm.setForcedDisplayScalingMode(Display.DEFAULT_DISPLAY, 1);
-
-        // Set up grid
-        setGrid(grid);
-        try {
-            return runInEmulation.call();
-        } finally {
-            // Clear emulation
-            WindowManagerProxy.INSTANCE.initializeForTesting(original);
-            UiDevice.getInstance(getInstrumentation()).executeShellCommand("cmd window reset");
-        }
-    }
-
-    private void setGrid(String gridType) {
-        // When the grid changes, the desktop arrangement get stored in SQL and we need to wait to
-        // make sure there is no SQL operations running and get SQL_BUSY error, that's why we need
-        // to call mLauncher.waitForLauncherInitialized();
-        mLauncher.waitForLauncherInitialized();
-        String testProviderAuthority = mContext.getPackageName() + ".grid_control";
-        Uri gridUri = new Uri.Builder()
-                .scheme(ContentResolver.SCHEME_CONTENT)
-                .authority(testProviderAuthority)
-                .appendPath("default_grid")
-                .build();
-        ContentValues values = new ContentValues();
-        values.put("name", gridType);
-        mContext.getContentResolver().update(gridUri, values, null, null);
-    }
-}
diff --git a/tests/src/com/android/launcher3/deviceemulator/TestWindowManagerProxy.java b/tests/src/com/android/launcher3/deviceemulator/TestWindowManagerProxy.java
deleted file mode 100644
index cbea688..0000000
--- a/tests/src/com/android/launcher3/deviceemulator/TestWindowManagerProxy.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * 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.launcher3.deviceemulator;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Point;
-import android.graphics.Rect;
-import android.view.Display;
-import android.view.WindowInsets;
-
-import com.android.launcher3.deviceemulator.models.DeviceEmulationData;
-import com.android.launcher3.util.RotationUtils;
-import com.android.launcher3.util.WindowBounds;
-import com.android.launcher3.util.window.CachedDisplayInfo;
-import com.android.launcher3.util.window.WindowManagerProxy;
-
-public class TestWindowManagerProxy extends WindowManagerProxy {
-
-    private final DeviceEmulationData mDevice;
-
-    public TestWindowManagerProxy(Context context, DeviceEmulationData device) {
-        super(true);
-        mDevice = device;
-    }
-
-    @Override
-    public boolean isInternalDisplay(Display display) {
-        return display.getDisplayId() == Display.DEFAULT_DISPLAY;
-    }
-
-    @Override
-    protected int getDimenByName(Resources res, String resName) {
-        Integer mock = mDevice.resourceOverrides.get(resName);
-        return mock != null ? mock : super.getDimenByName(res, resName);
-    }
-
-    @Override
-    protected int getDimenByName(Resources res, String resName, String fallback) {
-        return getDimenByName(res, resName);
-    }
-
-    @Override
-    public CachedDisplayInfo getDisplayInfo(Context context, Display display) {
-        int rotation = display.getRotation();
-        Point size = new Point(mDevice.width, mDevice.height);
-        RotationUtils.rotateSize(size, rotation);
-        Rect cutout = new Rect(mDevice.cutout);
-        RotationUtils.rotateRect(cutout, rotation);
-        return new CachedDisplayInfo(getDisplayId(display), size, rotation, cutout);
-    }
-
-    @Override
-    public WindowBounds getRealBounds(Context windowContext, Display display,
-            CachedDisplayInfo info) {
-        return estimateInternalDisplayBounds(windowContext)
-                .get(getDisplayId(display)).second[display.getRotation()];
-    }
-
-    @Override
-    public WindowInsets normalizeWindowInsets(Context context, WindowInsets oldInsets,
-            Rect outInsets) {
-        outInsets.set(getRealBounds(context, context.getDisplay(),
-                getDisplayInfo(context, context.getDisplay())).insets);
-        return oldInsets;
-    }
-}
diff --git a/tests/src/com/android/launcher3/deviceemulator/models/DeviceEmulationData.java b/tests/src/com/android/launcher3/deviceemulator/models/DeviceEmulationData.java
deleted file mode 100644
index 8d275cc..0000000
--- a/tests/src/com/android/launcher3/deviceemulator/models/DeviceEmulationData.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * 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.launcher3.deviceemulator.models;
-
-import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
-
-import static com.android.launcher3.ResourceUtils.NAVBAR_HEIGHT;
-import static com.android.launcher3.ResourceUtils.NAVBAR_HEIGHT_LANDSCAPE;
-import static com.android.launcher3.ResourceUtils.NAVBAR_LANDSCAPE_LEFT_RIGHT_SIZE;
-import static com.android.launcher3.ResourceUtils.getDimenByName;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Rect;
-import android.os.Build;
-import android.util.ArrayMap;
-
-import com.android.launcher3.InvariantDeviceProfile;
-import com.android.launcher3.util.DisplayController;
-import com.android.launcher3.util.IOUtils;
-import com.android.launcher3.util.IntArray;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.io.InputStream;
-import java.util.Arrays;
-import java.util.Map;
-
-public class DeviceEmulationData {
-
-    public final int width;
-    public final int height;
-    public final int density;
-    public final String name;
-    public final String[] grids;
-    public final Rect cutout;
-    public final Map<String, Integer> resourceOverrides;
-
-    private static final String[] EMULATED_SYSTEM_RESOURCES = new String[]{
-            NAVBAR_HEIGHT,
-            NAVBAR_HEIGHT_LANDSCAPE,
-            NAVBAR_LANDSCAPE_LEFT_RIGHT_SIZE,
-            "status_bar_height",
-    };
-
-    public DeviceEmulationData(int width, int height, int density, Rect cutout, String name,
-            String[] grid,
-            Map<String, Integer> resourceOverrides) {
-        this.width = width;
-        this.height = height;
-        this.density = density;
-        this.name = name;
-        this.grids = grid;
-        this.cutout = cutout;
-        this.resourceOverrides = resourceOverrides;
-    }
-
-    public static DeviceEmulationData deviceFromJSON(JSONObject json) throws JSONException {
-        int width = json.getInt("width");
-        int height = json.getInt("height");
-        int density = json.getInt("density");
-        String name = json.getString("name");
-
-        JSONArray gridArray = json.getJSONArray("grids");
-        String[] grids = new String[gridArray.length()];
-        for (int i = 0, count = grids.length; i < count; i++) {
-            grids[i] = gridArray.getString(i);
-        }
-
-        IntArray deviceCutout = IntArray.fromConcatString(json.getString("cutout"));
-        Rect cutout = new Rect(deviceCutout.get(0), deviceCutout.get(1), deviceCutout.get(2),
-                deviceCutout.get(3));
-
-
-        JSONObject resourceOverridesJson = json.getJSONObject("resourceOverrides");
-        Map<String, Integer> resourceOverrides = new ArrayMap<>();
-        for (String key : resourceOverridesJson.keySet()) {
-            resourceOverrides.put(key, resourceOverridesJson.getInt(key));
-        }
-        return new DeviceEmulationData(width, height, density, cutout, name, grids,
-                resourceOverrides);
-    }
-
-    @Override
-    public String toString() {
-        JSONObject json = new JSONObject();
-        try {
-            json.put("width", width);
-            json.put("height", height);
-            json.put("density", density);
-            json.put("name", name);
-            json.put("cutout", IntArray.wrap(
-                    cutout.left, cutout.top, cutout.right, cutout.bottom).toConcatString());
-
-            JSONArray gridArray = new JSONArray();
-            Arrays.stream(grids).forEach(gridArray::put);
-            json.put("grids", gridArray);
-
-
-            JSONObject resourceOverrides = new JSONObject();
-            for (Map.Entry<String, Integer> e : this.resourceOverrides.entrySet()) {
-                resourceOverrides.put(e.getKey(), e.getValue());
-            }
-            json.put("resourceOverrides", resourceOverrides);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return json.toString();
-    }
-
-    public static DeviceEmulationData getCurrentDeviceData(Context context) {
-        DisplayController.Info info = DisplayController.INSTANCE.get(context).getInfo();
-        String[] grids = InvariantDeviceProfile.INSTANCE.get(context)
-                .parseAllGridOptions(context).stream()
-                .map(go -> go.name).toArray(String[]::new);
-        String code = Build.MODEL.replaceAll("\\s", "").toLowerCase();
-
-        Map<String, Integer> resourceOverrides = new ArrayMap<>();
-        for (String s : EMULATED_SYSTEM_RESOURCES) {
-            resourceOverrides.put(s, getDimenByName(s, context.getResources(), 0));
-        }
-        return new DeviceEmulationData(info.currentSize.x, info.currentSize.y,
-                info.getDensityDpi(), info.cutout, code, grids, resourceOverrides);
-    }
-
-    public static DeviceEmulationData getDevice(String deviceCode) throws Exception {
-        return DeviceEmulationData.deviceFromJSON(readJSON().getJSONObject(deviceCode));
-    }
-
-    private static JSONObject readJSON() throws Exception {
-        Context context = getInstrumentation().getContext();
-        Resources myRes = context.getResources();
-        int resId = myRes.getIdentifier("devices", "raw", context.getPackageName());
-        try (InputStream is = myRes.openRawResource(resId)) {
-            return new JSONObject(new String(IOUtils.toByteArray(is)));
-        }
-    }
-
-}
diff --git a/tests/src/com/android/launcher3/icons/IconCacheTest.java b/tests/src/com/android/launcher3/icons/IconCacheTest.java
new file mode 100644
index 0000000..495d583
--- /dev/null
+++ b/tests/src/com/android/launcher3/icons/IconCacheTest.java
@@ -0,0 +1,131 @@
+/*
+ * 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.launcher3.icons;
+
+import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
+
+import static com.android.launcher3.icons.IconCache.EXTRA_SHORTCUT_BADGE_OVERRIDE_PACKAGE;
+import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.content.Intent;
+import android.content.pm.ShortcutInfo;
+import android.content.pm.ShortcutInfo.Builder;
+import android.os.PersistableBundle;
+import android.text.TextUtils;
+
+import androidx.annotation.Nullable;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import com.android.launcher3.InvariantDeviceProfile;
+import com.android.launcher3.model.data.AppInfo;
+import com.android.launcher3.model.data.ItemInfoWithIcon;
+import com.android.launcher3.model.data.PackageItemInfo;
+import com.android.launcher3.settings.SettingsActivity;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class IconCacheTest {
+
+    private Context mContext;
+    private IconCache mIconCache;
+
+    private ComponentName mMyComponent;
+
+    @Before
+    public void setup() {
+        mContext = getInstrumentation().getTargetContext();
+        mMyComponent = new ComponentName(mContext, SettingsActivity.class);
+
+        // In memory icon cache
+        mIconCache = new IconCache(mContext,
+                InvariantDeviceProfile.INSTANCE.get(mContext), null,
+                new LauncherIconProvider(mContext));
+    }
+
+    @Test
+    public void getShortcutInfoBadge_nullComponent_overrideAllowed() throws Exception {
+        String overridePackage = "com.android.settings";
+        ItemInfoWithIcon item = getBadgingInfo(mContext, null, overridePackage);
+        assertTrue(item instanceof PackageItemInfo);
+        assertEquals(((PackageItemInfo) item).packageName, overridePackage);
+    }
+
+    @Test
+    public void getShortcutInfoBadge_withComponent_overrideAllowed() throws Exception {
+        String overridePackage = "com.android.settings";
+        ItemInfoWithIcon item = getBadgingInfo(mContext, mMyComponent, overridePackage);
+        assertTrue(item instanceof PackageItemInfo);
+        assertEquals(((PackageItemInfo) item).packageName, overridePackage);
+    }
+
+    @Test
+    public void getShortcutInfoBadge_nullComponent() throws Exception {
+        ItemInfoWithIcon item = getBadgingInfo(mContext, null, null);
+        assertTrue(item instanceof PackageItemInfo);
+        assertEquals(((PackageItemInfo) item).packageName, mContext.getPackageName());
+    }
+
+    @Test
+    public void getShortcutInfoBadge_withComponent() throws Exception {
+        ItemInfoWithIcon item = getBadgingInfo(mContext, mMyComponent, null);
+        assertTrue(item instanceof AppInfo);
+        assertEquals(((AppInfo) item).componentName, mMyComponent);
+    }
+
+    @Test
+    public void getShortcutInfoBadge_overrideNotAllowed() throws Exception {
+        String overridePackage = "com.android.settings";
+        String otherPackage = mContext.getPackageName() + ".does.not.exist";
+        Context otherContext = new ContextWrapper(mContext) {
+            @Override
+            public String getPackageName() {
+                return otherPackage;
+            }
+        };
+        ItemInfoWithIcon item = getBadgingInfo(otherContext, null, overridePackage);
+        assertTrue(item instanceof PackageItemInfo);
+        // Badge is set to the original package, and not the override package
+        assertEquals(((PackageItemInfo) item).packageName, otherPackage);
+    }
+
+    private ItemInfoWithIcon getBadgingInfo(Context context,
+            @Nullable ComponentName cn, @Nullable String badgeOverride) throws Exception {
+        Builder builder = new Builder(context, "test-shortcut")
+                .setIntent(new Intent(Intent.ACTION_VIEW))
+                .setShortLabel("Test");
+        if (cn != null) {
+            builder.setActivity(cn);
+        }
+        if (!TextUtils.isEmpty(badgeOverride)) {
+            PersistableBundle extras = new PersistableBundle();
+            extras.putString(EXTRA_SHORTCUT_BADGE_OVERRIDE_PACKAGE, badgeOverride);
+            builder.setExtras(extras);
+        }
+        ShortcutInfo info = builder.build();
+        return MODEL_EXECUTOR.submit(() -> mIconCache.getShortcutInfoBadgeItem(info)).get();
+    }
+}
diff --git a/tests/src/com/android/launcher3/logging/StartupLatencyLoggerTest.kt b/tests/src/com/android/launcher3/logging/StartupLatencyLoggerTest.kt
new file mode 100644
index 0000000..fffa6d7
--- /dev/null
+++ b/tests/src/com/android/launcher3/logging/StartupLatencyLoggerTest.kt
@@ -0,0 +1,368 @@
+package com.android.launcher3.logging
+
+import androidx.core.util.isEmpty
+import androidx.test.annotation.UiThreadTest
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/** Unit test for [StartupLatencyLogger]. */
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class StartupLatencyLoggerTest {
+
+    private val underTest: StartupLatencyLogger =
+        StartupLatencyLogger(StatsLogManager.StatsLatencyLogger.LatencyType.COLD)
+
+    @Before
+    fun setup() {
+        underTest.setIsInTest()
+    }
+
+    @Test
+    @UiThreadTest
+    fun logTotalDurationStart() {
+        underTest.logStart(
+            StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION,
+            100
+        )
+
+        val startTime =
+            underTest.startTimeByEvent.get(
+                StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION.id
+            )
+        assertThat(startTime).isEqualTo(100)
+        assertThat(underTest.endTimeByEvent.isEmpty()).isTrue()
+    }
+
+    @Test
+    @UiThreadTest
+    fun logTotalDurationEnd() {
+        underTest.logStart(
+            StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION,
+            100
+        )
+
+        underTest.logEnd(
+            StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION,
+            100
+        )
+
+        val endTime =
+            underTest.endTimeByEvent.get(
+                StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION.id
+            )
+        assertThat(endTime).isEqualTo(100)
+    }
+
+    @Test
+    @UiThreadTest
+    fun logStartOfOtherEvents_withoutLogStartOfTotalDuration_noOp() {
+        underTest
+            .logStart(
+                StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_ACTIVITY_ON_CREATE,
+                100
+            )
+            .logStart(
+                StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_VIEW_INFLATION,
+                101
+            )
+            .logStart(
+                StatsLogManager.LauncherLatencyEvent
+                    .LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_ASYNC,
+                102
+            )
+
+        assertThat(underTest.startTimeByEvent.isEmpty()).isTrue()
+    }
+
+    @Test
+    @UiThreadTest
+    fun logStartOfOtherEvents_afterLogStartOfTotalDuration_logged() {
+        underTest.logStart(
+            StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION,
+            100
+        )
+
+        underTest
+            .logStart(
+                StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_ACTIVITY_ON_CREATE,
+                100
+            )
+            .logStart(
+                StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_VIEW_INFLATION,
+                101
+            )
+            .logStart(
+                StatsLogManager.LauncherLatencyEvent
+                    .LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_ASYNC,
+                102
+            )
+
+        assertThat(underTest.startTimeByEvent.size()).isEqualTo(4)
+    }
+
+    @Test
+    @UiThreadTest
+    fun logDuplicatedStartEvent_2ndEvent_notLogged() {
+        underTest.logStart(
+            StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION,
+            100
+        )
+
+        underTest.logStart(
+            StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION,
+            101
+        )
+
+        assertThat(underTest.startTimeByEvent.size()).isEqualTo(1)
+        assertThat(
+                underTest.startTimeByEvent.get(
+                    StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION.id
+                )
+            )
+            .isEqualTo(100)
+    }
+
+    @Test
+    @UiThreadTest
+    fun loadStartOfWorkspace_thenEndWithAsync_logAsyncStart() {
+        underTest
+            .logStart(
+                StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION,
+                100
+            )
+            .logWorkspaceLoadStartTime(111)
+
+        underTest.logEnd(
+            StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_ASYNC,
+            120
+        )
+
+        assertThat(underTest.startTimeByEvent.size()).isEqualTo(2)
+        assertThat(
+                underTest.startTimeByEvent.get(
+                    StatsLogManager.LauncherLatencyEvent
+                        .LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_ASYNC
+                        .id
+                )
+            )
+            .isEqualTo(111)
+    }
+
+    @Test
+    @UiThreadTest
+    fun loadStartOfWorkspace_thenEndWithSync_logSyncStart() {
+        underTest
+            .logStart(
+                StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION,
+                100
+            )
+            .logWorkspaceLoadStartTime(111)
+
+        underTest.logEnd(
+            StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC,
+            120
+        )
+
+        assertThat(underTest.startTimeByEvent.size()).isEqualTo(2)
+        assertThat(
+                underTest.startTimeByEvent.get(
+                    StatsLogManager.LauncherLatencyEvent
+                        .LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC
+                        .id
+                )
+            )
+            .isEqualTo(111)
+    }
+
+    @Test
+    @UiThreadTest
+    fun loadStartOfWorkspaceLoadSync_thenAsync_asyncNotLogged() {
+        underTest
+            .logStart(
+                StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION,
+                100
+            )
+            .logStart(
+                StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC,
+                110
+            )
+
+        underTest.logStart(
+            StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_ASYNC,
+            111
+        )
+
+        assertThat(underTest.startTimeByEvent.size()).isEqualTo(2)
+        assertThat(
+                underTest.startTimeByEvent.get(
+                    StatsLogManager.LauncherLatencyEvent
+                        .LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC
+                        .id
+                )
+            )
+            .isEqualTo(110)
+        assertThat(
+                underTest.startTimeByEvent.get(
+                    StatsLogManager.LauncherLatencyEvent
+                        .LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_ASYNC
+                        .id
+                )
+            )
+            .isEqualTo(0)
+    }
+
+    @Test
+    @UiThreadTest
+    fun loadStartOfWorkspaceLoadAsync_thenSync_syncNotLogged() {
+        underTest.logStart(
+            StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION,
+            100
+        )
+        underTest.logStart(
+            StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_ASYNC,
+            111
+        )
+
+        underTest.logStart(
+            StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC,
+            112
+        )
+
+        assertThat(underTest.startTimeByEvent.size()).isEqualTo(2)
+        assertThat(
+                underTest.startTimeByEvent.get(
+                    StatsLogManager.LauncherLatencyEvent
+                        .LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_ASYNC
+                        .id
+                )
+            )
+            .isEqualTo(111)
+        assertThat(
+                underTest.startTimeByEvent.get(
+                    StatsLogManager.LauncherLatencyEvent
+                        .LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC
+                        .id
+                )
+            )
+            .isEqualTo(0)
+    }
+
+    @Test
+    @UiThreadTest
+    fun logEndOfEvent_withoutStartEvent_notLogged() {
+        underTest.logStart(
+            StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION,
+            100
+        )
+
+        underTest.logEnd(
+            StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC,
+            120
+        )
+
+        assertThat(underTest.endTimeByEvent.size()).isEqualTo(0)
+        assertThat(
+                underTest.endTimeByEvent.get(
+                    StatsLogManager.LauncherLatencyEvent
+                        .LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC
+                        .id
+                )
+            )
+            .isEqualTo(0)
+    }
+
+    @Test
+    @UiThreadTest
+    fun logEndOfEvent_afterEndOfTotalDuration_notLogged() {
+        underTest
+            .logStart(
+                StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION,
+                100
+            )
+            .logEnd(
+                StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION,
+                120
+            )
+
+        underTest.logEnd(
+            StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC,
+            121
+        )
+
+        assertThat(underTest.endTimeByEvent.size()).isEqualTo(1)
+        assertThat(
+                underTest.endTimeByEvent.get(
+                    StatsLogManager.LauncherLatencyEvent
+                        .LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_SYNC
+                        .id
+                )
+            )
+            .isEqualTo(0)
+    }
+
+    @Test
+    @UiThreadTest
+    fun logCardinality_setCardinality() {
+        underTest.logCardinality(-1)
+        underTest.logStart(
+            StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION,
+            100
+        )
+
+        underTest.logCardinality(235)
+
+        assertThat(underTest.cardinality).isEqualTo(235)
+    }
+
+    @Test
+    @UiThreadTest
+    fun reset_clearState() {
+        underTest
+            .logStart(
+                StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION,
+                100
+            )
+            .logStart(
+                StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_ACTIVITY_ON_CREATE,
+                100
+            )
+            .logStart(
+                StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_VIEW_INFLATION,
+                110
+            )
+            .logEnd(
+                StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_VIEW_INFLATION,
+                115
+            )
+            .logWorkspaceLoadStartTime(120)
+            .logCardinality(235)
+            .logEnd(
+                StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_ACTIVITY_ON_CREATE,
+                100
+            )
+            .logEnd(
+                StatsLogManager.LauncherLatencyEvent
+                    .LAUNCHER_LATENCY_STARTUP_WORKSPACE_LOADER_ASYNC,
+                140
+            )
+            .logEnd(
+                StatsLogManager.LauncherLatencyEvent.LAUNCHER_LATENCY_STARTUP_TOTAL_DURATION,
+                160
+            )
+        assertThat(underTest.startTimeByEvent.size()).isEqualTo(4)
+        assertThat(underTest.endTimeByEvent.size()).isEqualTo(4)
+        assertThat(underTest.cardinality).isEqualTo(235)
+
+        underTest.reset()
+
+        assertThat(underTest.startTimeByEvent.isEmpty()).isTrue()
+        assertThat(underTest.endTimeByEvent.isEmpty()).isTrue()
+        assertThat(underTest.cardinality).isEqualTo(StartupLatencyLogger.UNSET_INT)
+        assertThat(underTest.workspaceLoadStartTime).isEqualTo(StartupLatencyLogger.UNSET_LONG)
+    }
+}
diff --git a/tests/src/com/android/launcher3/model/AbstractWorkspaceModelTest.kt b/tests/src/com/android/launcher3/model/AbstractWorkspaceModelTest.kt
index d26381d..03352fe 100644
--- a/tests/src/com/android/launcher3/model/AbstractWorkspaceModelTest.kt
+++ b/tests/src/com/android/launcher3/model/AbstractWorkspaceModelTest.kt
@@ -30,9 +30,7 @@
 import com.android.launcher3.util.LauncherModelHelper
 import java.util.UUID
 
-/**
- * Base class for workspace related tests.
- */
+/** Base class for workspace related tests. */
 abstract class AbstractWorkspaceModelTest {
     companion object {
         val emptyScreenSpaces = listOf(Rect(0, 0, 5, 5))
@@ -64,10 +62,7 @@
         mModelHelper.destroy()
     }
 
-
-    /**
-     * Sets up workspaces with the given screen IDs with some items and a 2x2 space.
-     */
+    /** Sets up workspaces with the given screen IDs with some items and a 2x2 space. */
     fun setupWorkspaces(screenIdsWithItems: List<Int>) {
         var nextItemId = 1
         screenIdsWithItems.forEach { screenId ->
@@ -83,8 +78,7 @@
         screen1: List<Rect>? = null,
         screen2: List<Rect>? = null,
         screen3: List<Rect>? = null,
-    ) = listOf(screen0, screen1, screen2, screen3)
-        .let(this::setupWithSpaces)
+    ) = listOf(screen0, screen1, screen2, screen3).let(this::setupWithSpaces)
 
     private fun setupWithSpaces(workspaceSpaces: List<List<Rect>?>) {
         var nextItemId = 1
@@ -110,9 +104,7 @@
         var itemId = itemStartId
         val occupancy = GridOccupancy(mIdp.numColumns, mIdp.numRows)
         occupancy.markCells(0, 0, mIdp.numColumns, mIdp.numRows, true)
-        spaces.forEach { spaceRect ->
-            occupancy.markCells(spaceRect, false)
-        }
+        spaces.forEach { spaceRect -> occupancy.markCells(spaceRect, false) }
         mExistingScreens.add(screenId)
         mScreenOccupancy.append(screenId, occupancy)
         for (x in 0 until mIdp.numColumns) {
@@ -139,24 +131,21 @@
         return itemId
     }
 
-    fun getExistingItem() = WorkspaceItemInfo()
-        .apply { intent = Intent().setComponent(ComponentName("a", "b")) }
+    fun getExistingItem() =
+        WorkspaceItemInfo().apply { intent = Intent().setComponent(ComponentName("a", "b")) }
 
     fun getNewItem(): WorkspaceItemInfo {
         val itemPackage = UUID.randomUUID().toString()
-        return WorkspaceItemInfo()
-            .apply { intent = Intent().setComponent(ComponentName(itemPackage, itemPackage)) }
+        return WorkspaceItemInfo().apply {
+            intent = Intent().setComponent(ComponentName(itemPackage, itemPackage))
+        }
     }
 }
 
-data class NewItemSpace(
-    val screenId: Int,
-    val cellX: Int,
-    val cellY: Int
-) {
+data class NewItemSpace(val screenId: Int, val cellX: Int, val cellY: Int) {
     fun toIntArray() = intArrayOf(screenId, cellX, cellY)
 
     companion object {
         fun fromIntArray(array: kotlin.IntArray) = NewItemSpace(array[0], array[1], array[2])
     }
-}
\ No newline at end of file
+}
diff --git a/tests/src/com/android/launcher3/model/AddWorkspaceItemsTaskTest.kt b/tests/src/com/android/launcher3/model/AddWorkspaceItemsTaskTest.kt
index 65d938b..6636b8a 100644
--- a/tests/src/com/android/launcher3/model/AddWorkspaceItemsTaskTest.kt
+++ b/tests/src/com/android/launcher3/model/AddWorkspaceItemsTaskTest.kt
@@ -23,9 +23,10 @@
 import com.android.launcher3.model.data.WorkspaceItemInfo
 import com.android.launcher3.util.Executors
 import com.android.launcher3.util.IntArray
-import com.android.launcher3.util.same
-import com.android.launcher3.util.eq
+import com.android.launcher3.util.IntSet
 import com.android.launcher3.util.any
+import com.android.launcher3.util.eq
+import com.android.launcher3.util.same
 import com.google.common.truth.Truth.assertThat
 import org.junit.After
 import org.junit.Before
@@ -34,36 +35,30 @@
 import org.mockito.ArgumentCaptor
 import org.mockito.Captor
 import org.mockito.Mock
-import org.mockito.MockitoAnnotations
+import org.mockito.Mockito.times
 import org.mockito.Mockito.verify
 import org.mockito.Mockito.verifyZeroInteractions
-import org.mockito.Mockito.times
 import org.mockito.Mockito.`when` as whenever
+import org.mockito.MockitoAnnotations
 
-/**
- * Tests for [AddWorkspaceItemsTask]
- */
+/** Tests for [AddWorkspaceItemsTask] */
 @SmallTest
 @RunWith(AndroidJUnit4::class)
 class AddWorkspaceItemsTaskTest : AbstractWorkspaceModelTest() {
 
-    @Captor
-    private lateinit var mAnimatedItemArgumentCaptor: ArgumentCaptor<ArrayList<ItemInfo>>
+    @Captor private lateinit var mAnimatedItemArgumentCaptor: ArgumentCaptor<ArrayList<ItemInfo>>
 
-    @Captor
-    private lateinit var mNotAnimatedItemArgumentCaptor: ArgumentCaptor<ArrayList<ItemInfo>>
+    @Captor private lateinit var mNotAnimatedItemArgumentCaptor: ArgumentCaptor<ArrayList<ItemInfo>>
 
-    @Mock
-    private lateinit var mDataModelCallbacks: BgDataModel.Callbacks
+    @Mock private lateinit var mDataModelCallbacks: BgDataModel.Callbacks
 
-    @Mock
-    private lateinit var mWorkspaceItemSpaceFinder: WorkspaceItemSpaceFinder
-
+    @Mock private lateinit var mWorkspaceItemSpaceFinder: WorkspaceItemSpaceFinder
 
     @Before
     override fun setup() {
         super.setup()
         MockitoAnnotations.initMocks(this)
+        whenever(mDataModelCallbacks.getPagesToBindSynchronously(any())).thenReturn(IntSet())
         Executors.MAIN_EXECUTOR.submit { mModelHelper.model.addCallbacks(mDataModelCallbacks) }
             .get()
     }
@@ -89,10 +84,7 @@
 
     @Test
     fun givenNewAndExistingItems_whenExecuteTask_thenOnlyAddNewItem() {
-        val itemsToAdd = arrayOf(
-            getNewItem(),
-            getExistingItem()
-        )
+        val itemsToAdd = arrayOf(getNewItem(), getExistingItem())
         givenNewItemSpaces(NewItemSpace(1, 0, 0))
         val nonEmptyScreenIds = listOf(0)
 
@@ -132,13 +124,14 @@
 
     @Test
     fun givenMultipleItems_whenExecuteTask_thenAddThem() {
-        val itemsToAdd = arrayOf(
-            getNewItem(),
-            getExistingItem(),
-            getNewItem(),
-            getNewItem(),
-            getExistingItem(),
-        )
+        val itemsToAdd =
+            arrayOf(
+                getNewItem(),
+                getExistingItem(),
+                getNewItem(),
+                getNewItem(),
+                getExistingItem(),
+            )
         givenNewItemSpaces(
             NewItemSpace(1, 3, 3),
             NewItemSpace(2, 0, 0),
@@ -159,27 +152,16 @@
         // Items that are added to the second screen should be animated
         val itemsAddedToSecondScreen = addedItems.filter { it.itemInfo.screenId == 2 }
         assertThat(itemsAddedToSecondScreen.size).isEqualTo(2)
-        itemsAddedToSecondScreen.forEach {
-            assertThat(it.isAnimated).isTrue()
-        }
+        itemsAddedToSecondScreen.forEach { assertThat(it.isAnimated).isTrue() }
         verifyItemSpaceFinderCall(nonEmptyScreenIds, numberOfExpectedCall = 3)
     }
 
-    /**
-     * Sets up the item space data that will be returned from WorkspaceItemSpaceFinder.
-     */
+    /** Sets up the item space data that will be returned from WorkspaceItemSpaceFinder. */
     private fun givenNewItemSpaces(vararg newItemSpaces: NewItemSpace) {
         val spaceStack = newItemSpaces.toMutableList()
         whenever(
-            mWorkspaceItemSpaceFinder.findSpaceForItem(
-                any(),
-                any(),
-                any(),
-                any(),
-                any(),
-                any()
+                mWorkspaceItemSpaceFinder.findSpaceForItem(any(), any(), any(), any(), any(), any())
             )
-        )
             .then { spaceStack.removeFirst().toIntArray() }
     }
 
@@ -187,20 +169,21 @@
      * Verifies if WorkspaceItemSpaceFinder was called with proper arguments and how many times was
      * it called.
      */
-    private fun verifyItemSpaceFinderCall(
-        nonEmptyScreenIds: List<Int>,
-        numberOfExpectedCall: Int
-    ) {
+    private fun verifyItemSpaceFinderCall(nonEmptyScreenIds: List<Int>, numberOfExpectedCall: Int) {
         verify(mWorkspaceItemSpaceFinder, times(numberOfExpectedCall))
             .findSpaceForItem(
-                same(mAppState), same(mModelHelper.bgDataModel),
-                eq(IntArray.wrap(*nonEmptyScreenIds.toIntArray())), eq(IntArray()), eq(1), eq(1)
+                same(mAppState),
+                same(mModelHelper.bgDataModel),
+                eq(IntArray.wrap(*nonEmptyScreenIds.toIntArray())),
+                eq(IntArray()),
+                eq(1),
+                eq(1)
             )
     }
 
     /**
-     * Sets up the workspaces with items, executes the task, collects the added items from the
-     * model callback then returns it.
+     * Sets up the workspaces with items, executes the task, collects the added items from the model
+     * callback then returns it.
      */
     private fun testAddItems(
         nonEmptyScreenIds: List<Int>,
@@ -209,21 +192,21 @@
         setupWorkspaces(nonEmptyScreenIds)
         val task = newTask(*itemsToAdd)
         var updateCount = 0
-        mModelHelper.executeTaskForTest(task)
-            .forEach {
-                updateCount++
-                it.run()
-            }
+        mModelHelper.executeTaskForTest(task).forEach {
+            updateCount++
+            it.run()
+        }
 
         val addedItems = mutableListOf<AddedItem>()
         if (updateCount > 0) {
-            verify(mDataModelCallbacks).bindAppsAdded(
-                any(),
-                mNotAnimatedItemArgumentCaptor.capture(), mAnimatedItemArgumentCaptor.capture()
-            )
+            verify(mDataModelCallbacks)
+                .bindAppsAdded(
+                    any(),
+                    mNotAnimatedItemArgumentCaptor.capture(),
+                    mAnimatedItemArgumentCaptor.capture()
+                )
             addedItems.addAll(mAnimatedItemArgumentCaptor.value.map { AddedItem(it, true) })
             addedItems.addAll(mNotAnimatedItemArgumentCaptor.value.map { AddedItem(it, false) })
-
         }
 
         return addedItems
@@ -234,12 +217,10 @@
      * with a mock.
      */
     private fun newTask(vararg items: ItemInfo): AddWorkspaceItemsTask =
-        items.map { Pair.create(it, Any()) }
+        items
+            .map { Pair.create(it, Any()) }
             .toMutableList()
             .let { AddWorkspaceItemsTask(it, mWorkspaceItemSpaceFinder) }
 }
 
-private data class AddedItem(
-    val itemInfo: ItemInfo,
-    val isAnimated: Boolean
-)
+private data class AddedItem(val itemInfo: ItemInfo, val isAnimated: Boolean)
diff --git a/tests/src/com/android/launcher3/model/BackupRestoreTest.java b/tests/src/com/android/launcher3/model/BackupRestoreTest.java
deleted file mode 100644
index 41914de..0000000
--- a/tests/src/com/android/launcher3/model/BackupRestoreTest.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Copyright (C) 2020 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.launcher3.model;
-
-import static android.content.pm.PackageManager.INSTALL_REASON_DEVICE_RESTORE;
-import static android.os.Process.myUserHandle;
-
-import static com.android.launcher3.LauncherSettings.Favorites.BACKUP_TABLE_NAME;
-import static com.android.launcher3.LauncherSettings.Favorites.TABLE_NAME;
-import static com.android.launcher3.LauncherSettings.Favorites.addTableToDb;
-import static com.android.launcher3.provider.LauncherDbUtils.dropTable;
-import static com.android.launcher3.provider.LauncherDbUtils.tableExists;
-import static com.android.launcher3.util.LauncherModelHelper.APP_ICON;
-import static com.android.launcher3.util.LauncherModelHelper.NO__ICON;
-import static com.android.launcher3.util.LauncherModelHelper.SHORTCUT;
-import static com.android.launcher3.util.ReflectionHelpers.getField;
-import static com.android.launcher3.util.ReflectionHelpers.setField;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-
-import android.app.backup.BackupManager;
-import android.content.pm.PackageInstaller;
-import android.database.Cursor;
-import android.database.sqlite.SQLiteDatabase;
-import android.os.UserHandle;
-import android.util.ArrayMap;
-import android.util.LongSparseArray;
-
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.filters.SmallTest;
-
-import com.android.launcher3.InvariantDeviceProfile;
-import com.android.launcher3.pm.UserCache;
-import com.android.launcher3.provider.RestoreDbTask;
-import com.android.launcher3.util.LauncherModelHelper;
-import com.android.launcher3.util.SafeCloseable;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-/**
- * Tests to verify backup and restore flow.
- */
-@SmallTest
-@RunWith(AndroidJUnit4.class)
-public class BackupRestoreTest {
-
-    private static final int PER_USER_RANGE = 200000;
-
-
-    private long mCurrentMyProfileId;
-    private long mOldMyProfileId;
-
-    private long mCurrentWorkProfileId;
-    private long mOldWorkProfileId;
-
-    private BackupManager mBackupManager;
-    private LauncherModelHelper mModelHelper;
-    private SQLiteDatabase mDb;
-    private InvariantDeviceProfile mIdp;
-
-    private UserHandle mWorkUserHandle;
-
-    private SafeCloseable mUserChangeListener;
-
-    @Before
-    public void setUp() {
-        mModelHelper = new LauncherModelHelper();
-
-        mCurrentMyProfileId = mModelHelper.defaultProfileId;
-        mOldMyProfileId = mCurrentMyProfileId + 1;
-        mCurrentWorkProfileId = mOldMyProfileId + 1;
-        mOldWorkProfileId = mCurrentWorkProfileId + 1;
-
-        mWorkUserHandle = UserHandle.getUserHandleForUid(PER_USER_RANGE);
-        mUserChangeListener = UserCache.INSTANCE.get(mModelHelper.sandboxContext)
-                .addUserChangeListener(() -> { });
-
-        setupUserManager();
-        setupBackupManager();
-        RestoreDbTask.setPending(mModelHelper.sandboxContext);
-        mDb = mModelHelper.provider.getDb();
-        mIdp = InvariantDeviceProfile.INSTANCE.get(mModelHelper.sandboxContext);
-
-    }
-
-    @After
-    public void tearDown() {
-        mUserChangeListener.close();
-        mModelHelper.destroy();
-    }
-
-    private void setupUserManager() {
-        UserCache cache = UserCache.INSTANCE.get(mModelHelper.sandboxContext);
-        synchronized (cache) {
-            LongSparseArray<UserHandle> users = getField(cache, "mUsers");
-            users.clear();
-            users.put(mCurrentMyProfileId, myUserHandle());
-            users.put(mCurrentWorkProfileId, mWorkUserHandle);
-
-            ArrayMap<UserHandle, Long> userMap = getField(cache, "mUserToSerialMap");
-            userMap.clear();
-            userMap.put(myUserHandle(), mCurrentMyProfileId);
-            userMap.put(mWorkUserHandle, mCurrentWorkProfileId);
-        }
-    }
-
-    private void setupBackupManager() {
-        mBackupManager = spy(new BackupManager(mModelHelper.sandboxContext));
-        doReturn(myUserHandle()).when(mBackupManager)
-                .getUserForAncestralSerialNumber(eq(mOldMyProfileId));
-        doReturn(mWorkUserHandle).when(mBackupManager)
-                .getUserForAncestralSerialNumber(eq(mOldWorkProfileId));
-    }
-
-    @Test
-    public void testOnCreateDbIfNotExists_CreatesBackup() {
-        assertTrue(tableExists(mDb, BACKUP_TABLE_NAME));
-    }
-
-    @Test
-    public void testOnRestoreSessionWithValidCondition_PerformsRestore() throws Exception {
-        setupBackup();
-        verifyTableIsFilled(BACKUP_TABLE_NAME, false);
-        verifyTableIsEmpty(TABLE_NAME);
-        createRestoreSession();
-        verifyTableIsFilled(TABLE_NAME, true);
-    }
-
-    private void setupBackup() {
-        createTableUsingOldProfileId();
-        // setup grid for main user on first screen
-        mModelHelper.createGrid(new int[][][]{{
-                { APP_ICON, APP_ICON, SHORTCUT, SHORTCUT},
-                { SHORTCUT, SHORTCUT, NO__ICON, NO__ICON},
-                { NO__ICON, NO__ICON, SHORTCUT, SHORTCUT},
-                { APP_ICON, SHORTCUT, SHORTCUT, APP_ICON},
-            }}, 1, mOldMyProfileId);
-        // setup grid for work profile on second screen
-        mModelHelper.createGrid(new int[][][]{{
-                { NO__ICON, APP_ICON, SHORTCUT, SHORTCUT},
-                { SHORTCUT, SHORTCUT, NO__ICON, NO__ICON},
-                { NO__ICON, NO__ICON, SHORTCUT, SHORTCUT},
-                { APP_ICON, SHORTCUT, SHORTCUT, NO__ICON},
-            }}, 2, mOldWorkProfileId);
-        // simulates the creation of backup upon restore
-        new GridBackupTable(mModelHelper.sandboxContext, mDb, mIdp.numDatabaseHotseatIcons,
-                mIdp.numColumns, mIdp.numRows).doBackup(
-                mOldMyProfileId, GridBackupTable.OPTION_REQUIRES_SANITIZATION);
-        // reset favorites table
-        createTableUsingOldProfileId();
-    }
-
-    private void verifyTableIsEmpty(String tableName) {
-        assertEquals(0, getCount(mDb, "SELECT * FROM " + tableName));
-    }
-
-    private void verifyTableIsFilled(String tableName, boolean sanitized) {
-        assertEquals(sanitized ? 12 : 13, getCount(mDb,
-                "SELECT * FROM " + tableName + " WHERE profileId = "
-                        + (sanitized ? mCurrentMyProfileId : mOldMyProfileId)));
-        assertEquals(10, getCount(mDb, "SELECT * FROM " + tableName + " WHERE profileId = "
-                + (sanitized ? mCurrentWorkProfileId : mOldWorkProfileId)));
-    }
-
-    private void createTableUsingOldProfileId() {
-        // simulates the creation of favorites table on old device
-        dropTable(mDb, TABLE_NAME);
-        addTableToDb(mDb, mOldMyProfileId, false);
-    }
-
-    private void createRestoreSession() throws Exception {
-        final PackageInstaller.SessionParams params = new PackageInstaller.SessionParams(
-                PackageInstaller.SessionParams.MODE_FULL_INSTALL);
-        final PackageInstaller installer = mModelHelper.sandboxContext.getPackageManager()
-                .getPackageInstaller();
-        final int sessionId = installer.createSession(params);
-        final PackageInstaller.SessionInfo info = installer.getSessionInfo(sessionId);
-        setField(info, "installReason", INSTALL_REASON_DEVICE_RESTORE);
-        // TODO: (b/148410677) we should verify the following call instead
-        //  InstallSessionHelper.INSTANCE.get(getContext()).restoreDbIfApplicable(info);
-        RestoreDbTask.restoreIfPossible(mModelHelper.sandboxContext,
-                mModelHelper.provider.getHelper(), mBackupManager);
-    }
-
-    private static int getCount(SQLiteDatabase db, String sql) {
-        try (Cursor c = db.rawQuery(sql, null)) {
-            return c.getCount();
-        }
-    }
-}
diff --git a/tests/src/com/android/launcher3/model/CacheDataUpdatedTaskTest.java b/tests/src/com/android/launcher3/model/CacheDataUpdatedTaskTest.java
index dba0a40..f55b244 100644
--- a/tests/src/com/android/launcher3/model/CacheDataUpdatedTaskTest.java
+++ b/tests/src/com/android/launcher3/model/CacheDataUpdatedTaskTest.java
@@ -57,23 +57,26 @@
         IconCache iconCache = LauncherAppState.getInstance(context).getIconCache();
         CachingLogic<ItemInfo> placeholderLogic = new CachingLogic<ItemInfo>() {
             @Override
-            public ComponentName getComponent(ItemInfo info) {
+            @NonNull
+            public ComponentName getComponent(@NonNull ItemInfo info) {
                 return info.getTargetComponent();
             }
 
+            @NonNull
             @Override
-            public UserHandle getUser(ItemInfo info) {
+            public UserHandle getUser(@NonNull ItemInfo info) {
                 return info.user;
             }
 
+            @NonNull
             @Override
-            public CharSequence getLabel(ItemInfo info) {
+            public CharSequence getLabel(@NonNull ItemInfo info) {
                 return NEW_LABEL_PREFIX + info.id;
             }
 
             @NonNull
             @Override
-            public BitmapInfo loadIcon(Context context, ItemInfo info) {
+            public BitmapInfo loadIcon(@NonNull Context context, @NonNull ItemInfo info) {
                 return BitmapInfo.of(Bitmap.createBitmap(1, 1, Config.ARGB_8888), Color.RED);
             }
         };
diff --git a/tests/src/com/android/launcher3/model/DbDowngradeHelperTest.java b/tests/src/com/android/launcher3/model/DbDowngradeHelperTest.java
index d849c8f..cea95e5 100644
--- a/tests/src/com/android/launcher3/model/DbDowngradeHelperTest.java
+++ b/tests/src/com/android/launcher3/model/DbDowngradeHelperTest.java
@@ -37,10 +37,9 @@
 import androidx.test.filters.SmallTest;
 import androidx.test.platform.app.InstrumentationRegistry;
 
-import com.android.launcher3.LauncherProvider;
-import com.android.launcher3.LauncherProvider.DatabaseHelper;
 import com.android.launcher3.LauncherSettings.Favorites;
 import com.android.launcher3.R;
+import com.android.launcher3.pm.UserCache;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -74,7 +73,7 @@
         mSchemaFile.delete();
         assertFalse(mSchemaFile.exists());
         DbDowngradeHelper.updateSchemaFile(mSchemaFile, 0, mContext);
-        assertEquals(LauncherProvider.SCHEMA_VERSION, DbDowngradeHelper.parse(mSchemaFile).version);
+        assertEquals(DatabaseHelper.SCHEMA_VERSION, DbDowngradeHelper.parse(mSchemaFile).version);
     }
 
     @Test
@@ -111,6 +110,21 @@
     }
 
     @Test
+    public void testDowngrade_success_v31() throws Exception {
+        setupTestDb();
+
+        try (SQLiteOpenHelper helper = new MyDatabaseHelper()) {
+            assertFalse(hasFavoritesColumn(helper.getWritableDatabase(), "iconPackage"));
+            assertFalse(hasFavoritesColumn(helper.getWritableDatabase(), "iconResource"));
+        }
+
+        try (TestOpenHelper helper = new TestOpenHelper(24)) {
+            assertTrue(hasFavoritesColumn(helper.getWritableDatabase(), "iconPackage"));
+            assertTrue(hasFavoritesColumn(helper.getWritableDatabase(), "iconResource"));
+        }
+    }
+
+    @Test
     public void testDowngrade_success_v24() throws Exception {
         setupTestDb();
 
@@ -123,34 +137,18 @@
     public void testDowngrade_success_v22() throws Exception {
         setupTestDb();
 
-        SQLiteOpenHelper helper = new TestOpenHelper(22);
-        assertEquals(22, helper.getWritableDatabase().getVersion());
-
-        // Check column does not exist
-        try (Cursor c = helper.getWritableDatabase().query(Favorites.TABLE_NAME,
-                null, null, null, null, null, null)) {
-            assertEquals(-1, c.getColumnIndex(Favorites.OPTIONS));
-
-            // Check data is present
-            assertEquals(10, c.getCount());
+        try (SQLiteOpenHelper helper = new TestOpenHelper(22)) {
+            assertEquals(22, helper.getWritableDatabase().getVersion());
+            assertFalse(hasFavoritesColumn(helper.getWritableDatabase(), Favorites.OPTIONS));
+            assertEquals(10, getFavoriteDataCount(helper.getWritableDatabase()));
         }
-        helper.close();
 
-        helper = new DatabaseHelper(mContext, DB_FILE, false) {
-            @Override
-            public void onOpen(SQLiteDatabase db) { }
-        };
-        assertEquals(LauncherProvider.SCHEMA_VERSION, helper.getWritableDatabase().getVersion());
-
-        try (Cursor c = helper.getWritableDatabase().query(Favorites.TABLE_NAME,
-                null, null, null, null, null, null)) {
-            // Check column exists
-            assertNotSame(-1, c.getColumnIndex(Favorites.OPTIONS));
-
-            // Check data is present
-            assertEquals(10, c.getCount());
+        try (SQLiteOpenHelper helper = new MyDatabaseHelper()) {
+            assertEquals(DatabaseHelper.SCHEMA_VERSION,
+                    helper.getWritableDatabase().getVersion());
+            assertTrue(hasFavoritesColumn(helper.getWritableDatabase(), Favorites.OPTIONS));
+            assertEquals(10, getFavoriteDataCount(helper.getWritableDatabase()));
         }
-        helper.close();
     }
 
     @Test(expected = DowngradeFailException.class)
@@ -165,12 +163,9 @@
         mSchemaFile.delete();
         mDbFile.delete();
 
-        DbDowngradeHelper.updateSchemaFile(mSchemaFile, LauncherProvider.SCHEMA_VERSION, mContext);
+        DbDowngradeHelper.updateSchemaFile(mSchemaFile, DatabaseHelper.SCHEMA_VERSION, mContext);
 
-        DatabaseHelper dbHelper = new DatabaseHelper(mContext, DB_FILE, false) {
-            @Override
-            public void onOpen(SQLiteDatabase db) { }
-        };
+        DatabaseHelper dbHelper = new MyDatabaseHelper();
         // Insert mock data
         for (int i = 0; i < 10; i++) {
             ContentValues values = new ContentValues();
@@ -212,4 +207,28 @@
             super(e);
         }
     }
+
+    private static boolean hasFavoritesColumn(SQLiteDatabase db, String columnName) {
+        try (Cursor c = db.query(Favorites.TABLE_NAME, null, null, null, null, null, null)) {
+            return c.getColumnIndex(columnName) >= 0;
+        }
+    }
+
+    public static int getFavoriteDataCount(SQLiteDatabase db) {
+        try (Cursor c = db.query(Favorites.TABLE_NAME, null, null, null, null, null, null)) {
+            return c.getCount();
+        }
+    }
+
+    private class MyDatabaseHelper extends DatabaseHelper {
+
+        MyDatabaseHelper() {
+            super(mContext, DB_FILE,
+                    UserCache.INSTANCE.get(mContext)::getSerialNumberForUser,
+                    () -> { });
+        }
+
+        @Override
+        public void onOpen(SQLiteDatabase db) { }
+    }
 }
diff --git a/tests/src/com/android/launcher3/model/DefaultLayoutProviderTest.java b/tests/src/com/android/launcher3/model/DefaultLayoutProviderTest.java
index 004ed06..2b89321 100644
--- a/tests/src/com/android/launcher3/model/DefaultLayoutProviderTest.java
+++ b/tests/src/com/android/launcher3/model/DefaultLayoutProviderTest.java
@@ -20,8 +20,10 @@
 import static com.android.launcher3.util.LauncherModelHelper.TEST_PACKAGE;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assume.assumeTrue;
 
 import android.content.Context;
+import android.content.pm.LauncherApps;
 import android.content.pm.PackageInstaller;
 import android.content.pm.PackageInstaller.SessionParams;
 
@@ -127,6 +129,38 @@
         assertEquals(2, info.spanY);
     }
 
+    @Test
+    public void testCustomProfileLoaded_with_shortcut_on_hotseat() throws Exception {
+        assumeTrue(mTargetContext.getSystemService(LauncherApps.class).hasShortcutHostPermission());
+        writeLayoutAndLoad(new LauncherLayoutBuilder().atHotseat(0)
+                .putShortcut(TEST_PACKAGE, "shortcut2"));
+
+        // Verify one item in hotseat
+        assertEquals(1, mModelHelper.getBgDataModel().workspaceItems.size());
+        ItemInfo info = mModelHelper.getBgDataModel().workspaceItems.get(0);
+        assertEquals(LauncherSettings.Favorites.CONTAINER_HOTSEAT, info.container);
+        assertEquals(LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT, info.itemType);
+    }
+
+    @Test
+    public void testCustomProfileLoaded_with_shortcut_in_folder() throws Exception {
+        assumeTrue(mTargetContext.getSystemService(LauncherApps.class).hasShortcutHostPermission());
+        writeLayoutAndLoad(new LauncherLayoutBuilder().atHotseat(0).putFolder(android.R.string.copy)
+                .addApp(TEST_PACKAGE, TEST_ACTIVITY)
+                .addApp(TEST_PACKAGE, TEST_ACTIVITY)
+                .addShortcut(TEST_PACKAGE, "shortcut2")
+                .build());
+
+        // Verify folder
+        assertEquals(1, mModelHelper.getBgDataModel().workspaceItems.size());
+        FolderInfo info = (FolderInfo) mModelHelper.getBgDataModel().workspaceItems.get(0);
+        assertEquals(3, info.contents.size());
+
+        // Verify last icon
+        assertEquals(LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT,
+                info.contents.get(info.contents.size() - 1).itemType);
+    }
+
     private void writeLayoutAndLoad(LauncherLayoutBuilder builder) throws Exception {
         mModelHelper.setupDefaultLayoutProvider(builder).loadModelSync();
     }
diff --git a/tests/src/com/android/launcher3/model/GridSizeMigrationTaskV2Test.kt b/tests/src/com/android/launcher3/model/GridSizeMigrationTaskV2Test.kt
deleted file mode 100644
index 90d7b43..0000000
--- a/tests/src/com/android/launcher3/model/GridSizeMigrationTaskV2Test.kt
+++ /dev/null
@@ -1,510 +0,0 @@
-/*
- * 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.launcher3.model
-
-import android.content.Context
-import android.content.Intent
-import android.database.sqlite.SQLiteDatabase
-import android.graphics.Point
-import android.os.Process
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.launcher3.InvariantDeviceProfile
-import com.android.launcher3.LauncherFiles
-import com.android.launcher3.LauncherSettings.Favorites.*
-import com.android.launcher3.config.FeatureFlags
-import com.android.launcher3.model.GridSizeMigrationTaskV2.DbReader
-import com.android.launcher3.pm.UserCache
-import com.android.launcher3.provider.LauncherDbUtils
-import com.android.launcher3.util.LauncherModelHelper
-import com.android.launcher3.util.LauncherModelHelper.*
-import com.google.common.truth.Truth.assertThat
-import org.junit.After
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-
-/** Unit tests for [GridSizeMigrationTaskV2]  */
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class GridSizeMigrationTaskV2Test {
-    private lateinit var modelHelper: LauncherModelHelper
-    private lateinit var context: Context
-    private lateinit var db: SQLiteDatabase
-    private lateinit var validPackages: Set<String>
-    private lateinit var idp: InvariantDeviceProfile
-    private val testPackage1 = "com.android.launcher3.validpackage1"
-    private val testPackage2 = "com.android.launcher3.validpackage2"
-    private val testPackage3 = "com.android.launcher3.validpackage3"
-    private val testPackage4 = "com.android.launcher3.validpackage4"
-    private val testPackage5 = "com.android.launcher3.validpackage5"
-    private val testPackage6 = "com.android.launcher3.validpackage6"
-    private val testPackage7 = "com.android.launcher3.validpackage7"
-    private val testPackage8 = "com.android.launcher3.validpackage8"
-    private val testPackage9 = "com.android.launcher3.validpackage9"
-    private val testPackage10 = "com.android.launcher3.validpackage10"
-
-    @Before
-    fun setUp() {
-        modelHelper = LauncherModelHelper()
-        context = modelHelper.sandboxContext
-        db = modelHelper.provider.db
-
-        validPackages = setOf(
-            TEST_PACKAGE,
-            testPackage1,
-            testPackage2,
-            testPackage3,
-            testPackage4,
-            testPackage5,
-            testPackage6,
-            testPackage7,
-            testPackage8,
-            testPackage9,
-            testPackage10
-        )
-
-        idp = InvariantDeviceProfile.INSTANCE[context]
-        val userSerial = UserCache.INSTANCE[context].getSerialNumberForUser(Process.myUserHandle())
-        LauncherDbUtils.dropTable(db, TMP_TABLE)
-        addTableToDb(db, userSerial, false, TMP_TABLE)
-    }
-
-    @After
-    fun tearDown() {
-        modelHelper.destroy()
-    }
-
-    /**
-     * Old migration logic, should be modified once [FeatureFlags.ENABLE_NEW_MIGRATION_LOGIC] is
-     * not needed anymore
-     */
-    @Test
-    @Throws(Exception::class)
-    fun testMigration() {
-        // Src Hotseat icons
-        modelHelper.addItem(APP_ICON, 0, HOTSEAT, 0, 0, testPackage1, 1, TMP_CONTENT_URI)
-        modelHelper.addItem(SHORTCUT, 1, HOTSEAT, 0, 0, testPackage2, 2, TMP_CONTENT_URI)
-        modelHelper.addItem(SHORTCUT, 3, HOTSEAT, 0, 0, testPackage3, 3, TMP_CONTENT_URI)
-        modelHelper.addItem(APP_ICON, 4, HOTSEAT, 0, 0, testPackage4, 4, TMP_CONTENT_URI)
-        // Src grid icons
-        // _ _ _ _ _
-        // _ _ _ _ 5
-        // _ _ 6 _ 7
-        // _ _ 8 _ 9
-        // _ _ _ _ _
-        modelHelper.addItem(APP_ICON, 0, DESKTOP, 4, 1, testPackage5, 5, TMP_CONTENT_URI)
-        modelHelper.addItem(APP_ICON, 0, DESKTOP, 2, 2, testPackage6, 6, TMP_CONTENT_URI)
-        modelHelper.addItem(APP_ICON, 0, DESKTOP, 4, 2, testPackage7, 7, TMP_CONTENT_URI)
-        modelHelper.addItem(APP_ICON, 0, DESKTOP, 2, 3, testPackage8, 8, TMP_CONTENT_URI)
-        modelHelper.addItem(APP_ICON, 0, DESKTOP, 4, 3, testPackage9, 9, TMP_CONTENT_URI)
-
-        // Dest hotseat icons
-        modelHelper.addItem(SHORTCUT, 1, HOTSEAT, 0, 0, testPackage2)
-        // Dest grid icons
-        modelHelper.addItem(APP_ICON, 0, DESKTOP, 2, 2, testPackage10)
-
-        idp.numDatabaseHotseatIcons = 4
-        idp.numColumns = 4
-        idp.numRows = 4
-        val srcReader = DbReader(db, TMP_TABLE, context, validPackages)
-        val destReader = DbReader(db, TABLE_NAME, context, validPackages)
-        val task = GridSizeMigrationTaskV2(
-            context,
-            db,
-            srcReader,
-            destReader,
-            idp.numDatabaseHotseatIcons,
-            Point(idp.numColumns, idp.numRows)
-        )
-        task.migrate(DeviceGridState(context), DeviceGridState(idp))
-
-        // Check hotseat items
-        var c = context.contentResolver.query(
-            CONTENT_URI,
-            arrayOf(SCREEN, INTENT),
-            "container=$CONTAINER_HOTSEAT",
-            null,
-            SCREEN,
-            null
-        ) ?: throw IllegalStateException()
-
-        assertThat(c.count).isEqualTo(idp.numDatabaseHotseatIcons)
-
-        val screenIndex = c.getColumnIndex(SCREEN)
-        var intentIndex = c.getColumnIndex(INTENT)
-        c.moveToNext()
-        assertThat(c.getInt(screenIndex).toLong()).isEqualTo(0)
-        assertThat(c.getString(intentIndex)).contains(testPackage1)
-        c.moveToNext()
-        assertThat(c.getInt(screenIndex).toLong()).isEqualTo(1)
-        assertThat(c.getString(intentIndex)).contains(testPackage2)
-        c.moveToNext()
-        assertThat(c.getInt(screenIndex).toLong()).isEqualTo(2)
-        assertThat(c.getString(intentIndex)).contains(testPackage3)
-        c.moveToNext()
-        assertThat(c.getInt(screenIndex).toLong()).isEqualTo(3)
-        assertThat(c.getString(intentIndex)).contains(testPackage4)
-        c.close()
-
-        // Check workspace items
-        c = context.contentResolver.query(
-            CONTENT_URI,
-            arrayOf(CELLX, CELLY, INTENT),
-            "container=$CONTAINER_DESKTOP",
-            null,
-            null,
-            null
-        ) ?: throw IllegalStateException()
-
-        intentIndex = c.getColumnIndex(INTENT)
-        val cellXIndex = c.getColumnIndex(CELLX)
-        val cellYIndex = c.getColumnIndex(CELLY)
-        val locMap = HashMap<String, Point>()
-        while (c.moveToNext()) {
-            locMap[Intent.parseUri(c.getString(intentIndex), 0).getPackage()] =
-                Point(c.getInt(cellXIndex), c.getInt(cellYIndex))
-        }
-        c.close()
-        // Expected dest grid icons
-        // _ _ _ _
-        // 5 6 7 8
-        // 9 _ 10_
-        // _ _ _ _
-        assertThat(locMap.size.toLong()).isEqualTo(6)
-        assertThat(locMap[testPackage5]).isEqualTo(Point(0, 1))
-        assertThat(locMap[testPackage6]).isEqualTo(Point(1, 1))
-        assertThat(locMap[testPackage7]).isEqualTo(Point(2, 1))
-        assertThat(locMap[testPackage8]).isEqualTo(Point(3, 1))
-        assertThat(locMap[testPackage9]).isEqualTo(Point(0, 2))
-        assertThat(locMap[testPackage10]).isEqualTo(Point(2, 2))
-    }
-
-    @Test
-    fun migrateToLargerHotseat() {
-        val srcHotseatItems = intArrayOf(
-            modelHelper.addItem(APP_ICON, 0, HOTSEAT, 0, 0, testPackage1, 1, TMP_CONTENT_URI),
-            modelHelper.addItem(SHORTCUT, 1, HOTSEAT, 0, 0, testPackage2, 2, TMP_CONTENT_URI),
-            modelHelper.addItem(APP_ICON, 2, HOTSEAT, 0, 0, testPackage3, 3, TMP_CONTENT_URI),
-            modelHelper.addItem(SHORTCUT, 3, HOTSEAT, 0, 0, testPackage4, 4, TMP_CONTENT_URI)
-        )
-        val numSrcDatabaseHotseatIcons = srcHotseatItems.size
-        idp.numDatabaseHotseatIcons = 6
-        idp.numColumns = 4
-        idp.numRows = 4
-        val srcReader = DbReader(db, TMP_TABLE, context, validPackages)
-        val destReader = DbReader(db, TABLE_NAME, context, validPackages)
-        val task = GridSizeMigrationTaskV2(
-            context,
-            db,
-            srcReader,
-            destReader,
-            idp.numDatabaseHotseatIcons,
-            Point(idp.numColumns, idp.numRows)
-        )
-        task.migrate(DeviceGridState(context), DeviceGridState(idp))
-
-        // Check hotseat items
-        val c = context.contentResolver.query(
-            CONTENT_URI,
-            arrayOf(SCREEN, INTENT),
-            "container=$CONTAINER_HOTSEAT",
-            null,
-            SCREEN,
-            null
-        ) ?: throw IllegalStateException()
-
-        assertThat(c.count.toLong()).isEqualTo(numSrcDatabaseHotseatIcons.toLong())
-        val screenIndex = c.getColumnIndex(SCREEN)
-        val intentIndex = c.getColumnIndex(INTENT)
-        c.moveToNext()
-        assertThat(c.getInt(screenIndex)).isEqualTo(0)
-        assertThat(c.getString(intentIndex)).contains(testPackage1)
-
-        c.moveToNext()
-        assertThat(c.getInt(screenIndex)).isEqualTo(1)
-        assertThat(c.getString(intentIndex)).contains(testPackage2)
-
-        c.moveToNext()
-        assertThat(c.getInt(screenIndex)).isEqualTo(2)
-        assertThat(c.getString(intentIndex)).contains(testPackage3)
-
-        c.moveToNext()
-        assertThat(c.getInt(screenIndex)).isEqualTo(3)
-        assertThat(c.getString(intentIndex)).contains(testPackage4)
-
-        c.close()
-    }
-
-    @Test
-    fun migrateFromLargerHotseat() {
-        modelHelper.addItem(APP_ICON, 0, HOTSEAT, 0, 0, testPackage1, 1, TMP_CONTENT_URI)
-        modelHelper.addItem(SHORTCUT, 2, HOTSEAT, 0, 0, testPackage2, 2, TMP_CONTENT_URI)
-        modelHelper.addItem(APP_ICON, 3, HOTSEAT, 0, 0, testPackage3, 3, TMP_CONTENT_URI)
-        modelHelper.addItem(SHORTCUT, 4, HOTSEAT, 0, 0, testPackage4, 4, TMP_CONTENT_URI)
-        modelHelper.addItem(APP_ICON, 5, HOTSEAT, 0, 0, testPackage5, 5, TMP_CONTENT_URI)
-
-        idp.numDatabaseHotseatIcons = 4
-        idp.numColumns = 4
-        idp.numRows = 4
-        val srcReader = DbReader(db, TMP_TABLE, context, validPackages)
-        val destReader = DbReader(db, TABLE_NAME, context, validPackages)
-        val task = GridSizeMigrationTaskV2(
-            context,
-            db,
-            srcReader,
-            destReader,
-            idp.numDatabaseHotseatIcons,
-            Point(idp.numColumns, idp.numRows)
-        )
-        task.migrate(DeviceGridState(context), DeviceGridState(idp))
-
-        // Check hotseat items
-        val c = context.contentResolver.query(
-            CONTENT_URI,
-            arrayOf(SCREEN, INTENT),
-            "container=$CONTAINER_HOTSEAT",
-            null,
-            SCREEN,
-            null
-        ) ?: throw IllegalStateException()
-
-        assertThat(c.count.toLong()).isEqualTo(idp.numDatabaseHotseatIcons.toLong())
-        val screenIndex = c.getColumnIndex(SCREEN)
-        val intentIndex = c.getColumnIndex(INTENT)
-
-        c.moveToNext()
-        assertThat(c.getInt(screenIndex)).isEqualTo(0)
-        assertThat(c.getString(intentIndex)).contains(testPackage1)
-
-        c.moveToNext()
-        assertThat(c.getInt(screenIndex)).isEqualTo(1)
-        assertThat(c.getString(intentIndex)).contains(testPackage2)
-
-        c.moveToNext()
-        assertThat(c.getInt(screenIndex)).isEqualTo(2)
-        assertThat(c.getString(intentIndex)).contains(testPackage3)
-
-        c.moveToNext()
-        assertThat(c.getInt(screenIndex)).isEqualTo(3)
-        assertThat(c.getString(intentIndex)).contains(testPackage4)
-
-        c.close()
-    }
-
-    /**
-     * Migrating from a smaller grid to a large one should keep the pages
-     * if the column difference is less than 2
-     */
-    @Test
-    @Throws(Exception::class)
-    fun migrateFromSmallerGridSmallDifference() {
-        enableNewMigrationLogic("4,4")
-
-        // Setup src grid
-        modelHelper.addItem(APP_ICON, 0, DESKTOP, 2, 2, testPackage1, 5, TMP_CONTENT_URI)
-        modelHelper.addItem(APP_ICON, 0, DESKTOP, 2, 3, testPackage2, 6, TMP_CONTENT_URI)
-        modelHelper.addItem(APP_ICON, 1, DESKTOP, 3, 1, testPackage3, 7, TMP_CONTENT_URI)
-        modelHelper.addItem(APP_ICON, 1, DESKTOP, 3, 2, testPackage4, 8, TMP_CONTENT_URI)
-        modelHelper.addItem(APP_ICON, 2, DESKTOP, 3, 3, testPackage5, 9, TMP_CONTENT_URI)
-
-        idp.numDatabaseHotseatIcons = 4
-        idp.numColumns = 6
-        idp.numRows = 5
-
-        val srcReader = DbReader(db, TMP_TABLE, context, validPackages)
-        val destReader = DbReader(db, TABLE_NAME, context, validPackages)
-        val task = GridSizeMigrationTaskV2(
-            context,
-            db,
-            srcReader,
-            destReader,
-            idp.numDatabaseHotseatIcons,
-            Point(idp.numColumns, idp.numRows)
-        )
-        task.migrate(DeviceGridState(context), DeviceGridState(idp))
-
-        // Get workspace items
-        val c = context.contentResolver.query(
-            CONTENT_URI,
-            arrayOf(INTENT, SCREEN),
-            "container=$CONTAINER_DESKTOP",
-            null,
-            null,
-            null
-        ) ?: throw IllegalStateException()
-        val intentIndex = c.getColumnIndex(INTENT)
-        val screenIndex = c.getColumnIndex(SCREEN)
-
-        // Get in which screen the icon is
-        val locMap = HashMap<String, Int>()
-        while (c.moveToNext()) {
-            locMap[Intent.parseUri(c.getString(intentIndex), 0).getPackage()] =
-                c.getInt(screenIndex)
-        }
-        c.close()
-        assertThat(locMap.size).isEqualTo(5)
-        assertThat(locMap[testPackage1]).isEqualTo(0)
-        assertThat(locMap[testPackage2]).isEqualTo(0)
-        assertThat(locMap[testPackage3]).isEqualTo(1)
-        assertThat(locMap[testPackage4]).isEqualTo(1)
-        assertThat(locMap[testPackage5]).isEqualTo(2)
-
-        disableNewMigrationLogic()
-    }
-
-    /**
-     * Migrating from a smaller grid to a large one should reflow the pages
-     * if the column difference is more than 2
-     */
-    @Test
-    @Throws(Exception::class)
-    fun migrateFromSmallerGridBigDifference() {
-        enableNewMigrationLogic("2,2")
-
-        // Setup src grid
-        modelHelper.addItem(APP_ICON, 0, DESKTOP, 0, 1, testPackage1, 5, TMP_CONTENT_URI)
-        modelHelper.addItem(APP_ICON, 0, DESKTOP, 1, 1, testPackage2, 6, TMP_CONTENT_URI)
-        modelHelper.addItem(APP_ICON, 1, DESKTOP, 0, 0, testPackage3, 7, TMP_CONTENT_URI)
-        modelHelper.addItem(APP_ICON, 1, DESKTOP, 1, 0, testPackage4, 8, TMP_CONTENT_URI)
-        modelHelper.addItem(APP_ICON, 2, DESKTOP, 0, 0, testPackage5, 9, TMP_CONTENT_URI)
-
-        idp.numDatabaseHotseatIcons = 4
-        idp.numColumns = 5
-        idp.numRows = 5
-        val srcReader = DbReader(db, TMP_TABLE, context, validPackages)
-        val destReader = DbReader(db, TABLE_NAME, context, validPackages)
-        val task = GridSizeMigrationTaskV2(
-            context,
-            db,
-            srcReader,
-            destReader,
-            idp.numDatabaseHotseatIcons,
-            Point(idp.numColumns, idp.numRows)
-        )
-        task.migrate(DeviceGridState(context), DeviceGridState(idp))
-
-        // Get workspace items
-        val c = context.contentResolver.query(
-            CONTENT_URI,
-            arrayOf(INTENT, SCREEN),
-            "container=$CONTAINER_DESKTOP",
-            null,
-            null,
-            null
-        ) ?: throw IllegalStateException()
-
-        val intentIndex = c.getColumnIndex(INTENT)
-        val screenIndex = c.getColumnIndex(SCREEN)
-
-        // Get in which screen the icon is
-        val locMap = HashMap<String, Int>()
-        while (c.moveToNext()) {
-            locMap[Intent.parseUri(c.getString(intentIndex), 0).getPackage()] =
-                c.getInt(screenIndex)
-        }
-        c.close()
-
-        // All icons fit the first screen
-        assertThat(locMap.size).isEqualTo(5)
-        assertThat(locMap[testPackage1]).isEqualTo(0)
-        assertThat(locMap[testPackage2]).isEqualTo(0)
-        assertThat(locMap[testPackage3]).isEqualTo(0)
-        assertThat(locMap[testPackage4]).isEqualTo(0)
-        assertThat(locMap[testPackage5]).isEqualTo(0)
-        disableNewMigrationLogic()
-    }
-
-    /**
-     * Migrating from a larger grid to a smaller, we reflow from page 0
-     */
-    @Test
-    @Throws(Exception::class)
-    fun migrateFromLargerGrid() {
-        enableNewMigrationLogic("5,5")
-
-        // Setup src grid
-        modelHelper.addItem(APP_ICON, 0, DESKTOP, 0, 1, testPackage1, 5, TMP_CONTENT_URI)
-        modelHelper.addItem(APP_ICON, 0, DESKTOP, 1, 1, testPackage2, 6, TMP_CONTENT_URI)
-        modelHelper.addItem(APP_ICON, 1, DESKTOP, 0, 0, testPackage3, 7, TMP_CONTENT_URI)
-        modelHelper.addItem(APP_ICON, 1, DESKTOP, 1, 0, testPackage4, 8, TMP_CONTENT_URI)
-        modelHelper.addItem(APP_ICON, 2, DESKTOP, 0, 0, testPackage5, 9, TMP_CONTENT_URI)
-
-        idp.numDatabaseHotseatIcons = 4
-        idp.numColumns = 4
-        idp.numRows = 4
-        val srcReader = DbReader(db, TMP_TABLE, context, validPackages)
-        val destReader = DbReader(db, TABLE_NAME, context, validPackages)
-        val task = GridSizeMigrationTaskV2(
-            context,
-            db,
-            srcReader,
-            destReader,
-            idp.numDatabaseHotseatIcons,
-            Point(idp.numColumns, idp.numRows)
-        )
-        task.migrate(DeviceGridState(context), DeviceGridState(idp))
-
-        // Get workspace items
-        val c = context.contentResolver.query(
-            CONTENT_URI,
-            arrayOf(INTENT, SCREEN),
-            "container=$CONTAINER_DESKTOP",
-            null,
-            null,
-            null
-        ) ?: throw IllegalStateException()
-        val intentIndex = c.getColumnIndex(INTENT)
-        val screenIndex = c.getColumnIndex(SCREEN)
-
-        // Get in which screen the icon is
-        val locMap = HashMap<String, Int>()
-        while (c.moveToNext()) {
-            locMap[Intent.parseUri(c.getString(intentIndex), 0).getPackage()] =
-                c.getInt(screenIndex)
-        }
-        c.close()
-
-        // All icons fit the first screen
-        assertThat(locMap.size).isEqualTo(5)
-        assertThat(locMap[testPackage1]).isEqualTo(0)
-        assertThat(locMap[testPackage2]).isEqualTo(0)
-        assertThat(locMap[testPackage3]).isEqualTo(0)
-        assertThat(locMap[testPackage4]).isEqualTo(0)
-        assertThat(locMap[testPackage5]).isEqualTo(0)
-
-        disableNewMigrationLogic()
-    }
-
-    private fun enableNewMigrationLogic(srcGridSize: String) {
-        context.getSharedPreferences(FeatureFlags.FLAGS_PREF_NAME, Context.MODE_PRIVATE)
-            .edit()
-            .putBoolean(FeatureFlags.ENABLE_NEW_MIGRATION_LOGIC.key, true)
-            .commit()
-        context.getSharedPreferences(LauncherFiles.SHARED_PREFERENCES_KEY, Context.MODE_PRIVATE)
-            .edit()
-            .putString(DeviceGridState.KEY_WORKSPACE_SIZE, srcGridSize)
-            .commit()
-        FeatureFlags.initialize(context)
-    }
-
-    private fun disableNewMigrationLogic() {
-        context.getSharedPreferences(FeatureFlags.FLAGS_PREF_NAME, Context.MODE_PRIVATE)
-            .edit()
-            .putBoolean(FeatureFlags.ENABLE_NEW_MIGRATION_LOGIC.key, false)
-            .commit()
-    }
-}
\ No newline at end of file
diff --git a/tests/src/com/android/launcher3/model/GridSizeMigrationUtilTest.kt b/tests/src/com/android/launcher3/model/GridSizeMigrationUtilTest.kt
new file mode 100644
index 0000000..3b480ca
--- /dev/null
+++ b/tests/src/com/android/launcher3/model/GridSizeMigrationUtilTest.kt
@@ -0,0 +1,824 @@
+/*
+ * 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.launcher3.model
+
+import android.content.ContentValues
+import android.content.Context
+import android.content.Intent
+import android.database.Cursor
+import android.database.sqlite.SQLiteDatabase
+import android.graphics.Point
+import android.os.Process
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import androidx.test.platform.app.InstrumentationRegistry
+import com.android.launcher3.InvariantDeviceProfile
+import com.android.launcher3.LauncherPrefs
+import com.android.launcher3.LauncherPrefs.Companion.WORKSPACE_SIZE
+import com.android.launcher3.LauncherSettings.Favorites.*
+import com.android.launcher3.config.FeatureFlags
+import com.android.launcher3.model.GridSizeMigrationUtil.DbReader
+import com.android.launcher3.pm.UserCache
+import com.android.launcher3.provider.LauncherDbUtils
+import com.android.launcher3.util.LauncherModelHelper
+import com.google.common.truth.Truth.assertThat
+import org.junit.After
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/** Unit tests for [GridSizeMigrationUtil] */
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class GridSizeMigrationUtilTest {
+
+    private lateinit var modelHelper: LauncherModelHelper
+    private lateinit var context: Context
+    private lateinit var validPackages: Set<String>
+    private lateinit var idp: InvariantDeviceProfile
+    private lateinit var dbHelper: DatabaseHelper
+    private lateinit var db: SQLiteDatabase
+    private val testPackage1 = "com.android.launcher3.validpackage1"
+    private val testPackage2 = "com.android.launcher3.validpackage2"
+    private val testPackage3 = "com.android.launcher3.validpackage3"
+    private val testPackage4 = "com.android.launcher3.validpackage4"
+    private val testPackage5 = "com.android.launcher3.validpackage5"
+    private val testPackage6 = "com.android.launcher3.validpackage6"
+    private val testPackage7 = "com.android.launcher3.validpackage7"
+    private val testPackage8 = "com.android.launcher3.validpackage8"
+    private val testPackage9 = "com.android.launcher3.validpackage9"
+    private val testPackage10 = "com.android.launcher3.validpackage10"
+
+    @Before
+    fun setUp() {
+        modelHelper = LauncherModelHelper()
+        context = modelHelper.sandboxContext
+        dbHelper =
+            DatabaseHelper(
+                context,
+                null,
+                UserCache.INSTANCE.get(context)::getSerialNumberForUser
+            ) {}
+        db = dbHelper.writableDatabase
+
+        validPackages =
+            setOf(
+                testPackage1,
+                testPackage2,
+                testPackage3,
+                testPackage4,
+                testPackage5,
+                testPackage6,
+                testPackage7,
+                testPackage8,
+                testPackage9,
+                testPackage10
+            )
+
+        idp = InvariantDeviceProfile.INSTANCE[context]
+        val userSerial = UserCache.INSTANCE[context].getSerialNumberForUser(Process.myUserHandle())
+        LauncherDbUtils.dropTable(db, TMP_TABLE)
+        addTableToDb(db, userSerial, false, TMP_TABLE)
+    }
+
+    @After
+    fun tearDown() {
+        modelHelper.destroy()
+    }
+
+    /**
+     * Old migration logic, should be modified once [FeatureFlags.ENABLE_NEW_MIGRATION_LOGIC] is not
+     * needed anymore
+     */
+    @Test
+    @Throws(Exception::class)
+    fun testMigration() {
+        // Src Hotseat icons
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_HOTSEAT, 0, 0, testPackage1, 1, TMP_TABLE)
+        addItem(ITEM_TYPE_SHORTCUT, 1, CONTAINER_HOTSEAT, 0, 0, testPackage2, 2, TMP_TABLE)
+        addItem(ITEM_TYPE_SHORTCUT, 3, CONTAINER_HOTSEAT, 0, 0, testPackage3, 3, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 4, CONTAINER_HOTSEAT, 0, 0, testPackage4, 4, TMP_TABLE)
+        // Src grid icons
+        // _ _ _ _ _
+        // _ _ _ _ 5
+        // _ _ 6 _ 7
+        // _ _ 8 _ 9
+        // _ _ _ _ _
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_DESKTOP, 4, 1, testPackage5, 5, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_DESKTOP, 2, 2, testPackage6, 6, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_DESKTOP, 4, 2, testPackage7, 7, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_DESKTOP, 2, 3, testPackage8, 8, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_DESKTOP, 4, 3, testPackage9, 9, TMP_TABLE)
+
+        // Dest hotseat icons
+        addItem(ITEM_TYPE_SHORTCUT, 1, CONTAINER_HOTSEAT, 0, 0, testPackage2)
+        // Dest grid icons
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_DESKTOP, 2, 2, testPackage10)
+
+        idp.numDatabaseHotseatIcons = 4
+        idp.numColumns = 4
+        idp.numRows = 4
+        val srcReader = DbReader(db, TMP_TABLE, context, validPackages)
+        val destReader = DbReader(db, TABLE_NAME, context, validPackages)
+        GridSizeMigrationUtil.migrate(
+            dbHelper,
+            srcReader,
+            destReader,
+            idp.numDatabaseHotseatIcons,
+            Point(idp.numColumns, idp.numRows),
+            DeviceGridState(context),
+            DeviceGridState(idp)
+        )
+
+        // Check hotseat items
+        var c =
+            db.query(
+                TABLE_NAME,
+                arrayOf(SCREEN, INTENT),
+                "container=$CONTAINER_HOTSEAT",
+                null,
+                SCREEN,
+                null,
+                null
+            )
+                ?: throw IllegalStateException()
+
+        assertThat(c.count).isEqualTo(idp.numDatabaseHotseatIcons)
+
+        val screenIndex = c.getColumnIndex(SCREEN)
+        var intentIndex = c.getColumnIndex(INTENT)
+        c.moveToNext()
+        assertThat(c.getInt(screenIndex).toLong()).isEqualTo(0)
+        assertThat(c.getString(intentIndex)).contains(testPackage1)
+        c.moveToNext()
+        assertThat(c.getInt(screenIndex).toLong()).isEqualTo(1)
+        assertThat(c.getString(intentIndex)).contains(testPackage2)
+        c.moveToNext()
+        assertThat(c.getInt(screenIndex).toLong()).isEqualTo(2)
+        assertThat(c.getString(intentIndex)).contains(testPackage3)
+        c.moveToNext()
+        assertThat(c.getInt(screenIndex).toLong()).isEqualTo(3)
+        assertThat(c.getString(intentIndex)).contains(testPackage4)
+        c.close()
+
+        // Check workspace items
+        c =
+            db.query(
+                TABLE_NAME,
+                arrayOf(CELLX, CELLY, INTENT),
+                "container=$CONTAINER_DESKTOP",
+                null,
+                null,
+                null,
+                null
+            )
+                ?: throw IllegalStateException()
+
+        intentIndex = c.getColumnIndex(INTENT)
+        val cellXIndex = c.getColumnIndex(CELLX)
+        val cellYIndex = c.getColumnIndex(CELLY)
+        val locMap = HashMap<String, Point>()
+        while (c.moveToNext()) {
+            locMap[Intent.parseUri(c.getString(intentIndex), 0).getPackage()] =
+                Point(c.getInt(cellXIndex), c.getInt(cellYIndex))
+        }
+        c.close()
+        // Expected dest grid icons
+        // _ _ _ _
+        // 5 6 7 8
+        // 9 _ _ _
+        // _ _ _ _
+        assertThat(locMap.size.toLong()).isEqualTo(5)
+        assertThat(locMap[testPackage5]).isEqualTo(Point(0, 1))
+        assertThat(locMap[testPackage6]).isEqualTo(Point(1, 1))
+        assertThat(locMap[testPackage7]).isEqualTo(Point(2, 1))
+        assertThat(locMap[testPackage8]).isEqualTo(Point(3, 1))
+        assertThat(locMap[testPackage9]).isEqualTo(Point(0, 2))
+    }
+
+    /**
+     * Old migration logic, should be modified once [FeatureFlags.ENABLE_NEW_MIGRATION_LOGIC] is not
+     * needed anymore
+     */
+    @Test
+    @Throws(Exception::class)
+    fun testMigrationBackAndForth() {
+        // Hotseat items in grid A
+        // 1 2 _ 3 4
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_HOTSEAT, 0, 0, testPackage1, 1, TMP_TABLE)
+        addItem(ITEM_TYPE_SHORTCUT, 1, CONTAINER_HOTSEAT, 0, 0, testPackage2, 2, TMP_TABLE)
+        addItem(ITEM_TYPE_SHORTCUT, 3, CONTAINER_HOTSEAT, 0, 0, testPackage3, 3, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 4, CONTAINER_HOTSEAT, 0, 0, testPackage4, 4, TMP_TABLE)
+        // Workspace items in grid A
+        // _ _ _ _ _
+        // _ _ _ _ 5
+        // _ _ 6 _ 7
+        // _ _ 8 _ _
+        // _ _ _ _ _
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_DESKTOP, 4, 1, testPackage5, 5, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_DESKTOP, 2, 2, testPackage6, 6, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_DESKTOP, 4, 2, testPackage7, 7, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_DESKTOP, 2, 3, testPackage8, 8, TMP_TABLE)
+
+        // Hotseat items in grid B
+        // 2 _ _ _
+        addItem(ITEM_TYPE_SHORTCUT, 0, CONTAINER_HOTSEAT, 0, 0, testPackage2)
+        // Workspace items in grid B
+        // _ _ _ _
+        // _ _ _ 10
+        // _ _ _ _
+        // _ _ _ _
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_DESKTOP, 1, 3, testPackage10)
+
+        idp.numDatabaseHotseatIcons = 4
+        idp.numColumns = 4
+        idp.numRows = 4
+        val readerGridA = DbReader(db, TMP_TABLE, context, validPackages)
+        val readerGridB = DbReader(db, TABLE_NAME, context, validPackages)
+        // migrate from A -> B
+        GridSizeMigrationUtil.migrate(
+            dbHelper,
+            readerGridA,
+            readerGridB,
+            idp.numDatabaseHotseatIcons,
+            Point(idp.numColumns, idp.numRows),
+            DeviceGridState(context),
+            DeviceGridState(idp)
+        )
+
+        // Check hotseat items in grid B
+        var c =
+            db.query(
+                TABLE_NAME,
+                arrayOf(SCREEN, INTENT),
+                "container=$CONTAINER_HOTSEAT",
+                null,
+                SCREEN,
+                null,
+                null
+            )
+                ?: throw IllegalStateException()
+        // Expected hotseat items in grid B
+        // 2 1 3 4
+        verifyHotseat(
+            c,
+            idp,
+            mutableListOf(testPackage2, testPackage1, testPackage3, testPackage4).toList()
+        )
+
+        // Check workspace items in grid B
+        c =
+            db.query(
+                TABLE_NAME,
+                arrayOf(SCREEN, CELLX, CELLY, INTENT),
+                "container=$CONTAINER_DESKTOP",
+                null,
+                null,
+                null,
+                null
+            )
+                ?: throw IllegalStateException()
+        var locMap = parseLocMap(context, c)
+        // Expected items in grid B
+        // _ _ _ _
+        // 5 6 7 8
+        // _ _ _ _
+        // _ _ _ _
+        assertThat(locMap.size.toLong()).isEqualTo(4)
+        assertThat(locMap[testPackage5]).isEqualTo(Triple(0, 0, 1))
+        assertThat(locMap[testPackage6]).isEqualTo(Triple(0, 1, 1))
+        assertThat(locMap[testPackage7]).isEqualTo(Triple(0, 2, 1))
+        assertThat(locMap[testPackage8]).isEqualTo(Triple(0, 3, 1))
+
+        // add item in B
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_DESKTOP, 0, 2, testPackage9)
+
+        // migrate from B -> A
+        GridSizeMigrationUtil.migrate(
+            dbHelper,
+            readerGridB,
+            readerGridA,
+            5,
+            Point(5, 5),
+            DeviceGridState(idp),
+            DeviceGridState(context)
+        )
+        // Check hotseat items in grid A
+        c =
+            db.query(
+                TMP_TABLE,
+                arrayOf(SCREEN, INTENT),
+                "container=$CONTAINER_HOTSEAT",
+                null,
+                SCREEN,
+                null,
+                null
+            )
+                ?: throw IllegalStateException()
+        // Expected hotseat items in grid A
+        // 1 2 _ 3 4
+        verifyHotseat(
+            c,
+            idp,
+            mutableListOf(testPackage1, testPackage2, null, testPackage3, testPackage4).toList()
+        )
+
+        // Check workspace items in grid A
+        c =
+            db.query(
+                TMP_TABLE,
+                arrayOf(SCREEN, CELLX, CELLY, INTENT),
+                "container=$CONTAINER_DESKTOP",
+                null,
+                null,
+                null,
+                null
+            )
+                ?: throw IllegalStateException()
+        locMap = parseLocMap(context, c)
+        // Expected workspace items in grid A
+        // _ _ _ _ _
+        // _ _ _ _ 5
+        // 9 _ 6 _ 7
+        // _ _ 8 _ _
+        // _ _ _ _ _
+        assertThat(locMap.size.toLong()).isEqualTo(5)
+        // Verify items that existed in grid A remains in same position
+        assertThat(locMap[testPackage5]).isEqualTo(Triple(0, 4, 1))
+        assertThat(locMap[testPackage6]).isEqualTo(Triple(0, 2, 2))
+        assertThat(locMap[testPackage7]).isEqualTo(Triple(0, 4, 2))
+        assertThat(locMap[testPackage8]).isEqualTo(Triple(0, 2, 3))
+        // Verify items that didn't exist in grid A are added in new screen
+        assertThat(locMap[testPackage9]).isEqualTo(Triple(0, 0, 2))
+
+        // remove item from B
+        db.delete(TMP_TABLE, "$_ID=7", null)
+
+        // migrate from A -> B
+        GridSizeMigrationUtil.migrate(
+            dbHelper,
+            readerGridA,
+            readerGridB,
+            idp.numDatabaseHotseatIcons,
+            Point(idp.numColumns, idp.numRows),
+            DeviceGridState(context),
+            DeviceGridState(idp)
+        )
+
+        // Check hotseat items in grid B
+        c =
+            db.query(
+                TABLE_NAME,
+                arrayOf(SCREEN, INTENT),
+                "container=$CONTAINER_HOTSEAT",
+                null,
+                SCREEN,
+                null,
+                null
+            )
+                ?: throw IllegalStateException()
+        // Expected hotseat items in grid B
+        // 2 1 3 4
+        verifyHotseat(
+            c,
+            idp,
+            mutableListOf(testPackage2, testPackage1, testPackage3, testPackage4).toList()
+        )
+
+        // Check workspace items in grid B
+        c =
+            db.query(
+                TABLE_NAME,
+                arrayOf(SCREEN, CELLX, CELLY, INTENT),
+                "container=$CONTAINER_DESKTOP",
+                null,
+                null,
+                null,
+                null
+            )
+                ?: throw IllegalStateException()
+        locMap = parseLocMap(context, c)
+        // Expected workspace items in grid B
+        // _ _ _ _
+        // 5 6 _ 8
+        // 9 _ _ _
+        // _ _ _ _
+        assertThat(locMap.size.toLong()).isEqualTo(4)
+        assertThat(locMap[testPackage5]).isEqualTo(Triple(0, 0, 1))
+        assertThat(locMap[testPackage6]).isEqualTo(Triple(0, 1, 1))
+        assertThat(locMap[testPackage8]).isEqualTo(Triple(0, 3, 1))
+        assertThat(locMap[testPackage9]).isEqualTo(Triple(0, 0, 2))
+    }
+
+    private fun verifyHotseat(c: Cursor, idp: InvariantDeviceProfile, expected: List<String?>) {
+        assertThat(c.count).isEqualTo(idp.numDatabaseHotseatIcons)
+        val screenIndex = c.getColumnIndex(SCREEN)
+        val intentIndex = c.getColumnIndex(INTENT)
+        expected.forEachIndexed { idx, pkg ->
+            if (pkg == null) return@forEachIndexed
+            c.moveToNext()
+            assertThat(c.getInt(screenIndex).toLong()).isEqualTo(idx)
+            assertThat(c.getString(intentIndex)).contains(pkg)
+        }
+        c.close()
+    }
+
+    private fun parseLocMap(context: Context, c: Cursor): Map<String, Triple<Int, Int, Int>> {
+        // Check workspace items
+        val intentIndex = c.getColumnIndex(INTENT)
+        val screenIndex = c.getColumnIndex(SCREEN)
+        val cellXIndex = c.getColumnIndex(CELLX)
+        val cellYIndex = c.getColumnIndex(CELLY)
+        val locMap = mutableMapOf<String, Triple<Int, Int, Int>>()
+        while (c.moveToNext()) {
+            locMap[Intent.parseUri(c.getString(intentIndex), 0).getPackage()] =
+                Triple(c.getInt(screenIndex), c.getInt(cellXIndex), c.getInt(cellYIndex))
+        }
+        c.close()
+        return locMap.toMap()
+    }
+
+    @Test
+    fun migrateToLargerHotseat() {
+        val srcHotseatItems =
+            intArrayOf(
+                addItem(
+                    ITEM_TYPE_APPLICATION,
+                    0,
+                    CONTAINER_HOTSEAT,
+                    0,
+                    0,
+                    testPackage1,
+                    1,
+                    TMP_TABLE
+                ),
+                addItem(ITEM_TYPE_SHORTCUT, 1, CONTAINER_HOTSEAT, 0, 0, testPackage2, 2, TMP_TABLE),
+                addItem(
+                    ITEM_TYPE_APPLICATION,
+                    2,
+                    CONTAINER_HOTSEAT,
+                    0,
+                    0,
+                    testPackage3,
+                    3,
+                    TMP_TABLE
+                ),
+                addItem(ITEM_TYPE_SHORTCUT, 3, CONTAINER_HOTSEAT, 0, 0, testPackage4, 4, TMP_TABLE)
+            )
+        val numSrcDatabaseHotseatIcons = srcHotseatItems.size
+        idp.numDatabaseHotseatIcons = 6
+        idp.numColumns = 4
+        idp.numRows = 4
+        val srcReader = DbReader(db, TMP_TABLE, context, validPackages)
+        val destReader = DbReader(db, TABLE_NAME, context, validPackages)
+        GridSizeMigrationUtil.migrate(
+            dbHelper,
+            srcReader,
+            destReader,
+            idp.numDatabaseHotseatIcons,
+            Point(idp.numColumns, idp.numRows),
+            DeviceGridState(context),
+            DeviceGridState(idp)
+        )
+
+        // Check hotseat items
+        val c =
+            db.query(
+                TABLE_NAME,
+                arrayOf(SCREEN, INTENT),
+                "container=$CONTAINER_HOTSEAT",
+                null,
+                SCREEN,
+                null,
+                null
+            )
+                ?: throw IllegalStateException()
+
+        assertThat(c.count.toLong()).isEqualTo(numSrcDatabaseHotseatIcons.toLong())
+        val screenIndex = c.getColumnIndex(SCREEN)
+        val intentIndex = c.getColumnIndex(INTENT)
+        c.moveToNext()
+        assertThat(c.getInt(screenIndex)).isEqualTo(0)
+        assertThat(c.getString(intentIndex)).contains(testPackage1)
+
+        c.moveToNext()
+        assertThat(c.getInt(screenIndex)).isEqualTo(1)
+        assertThat(c.getString(intentIndex)).contains(testPackage2)
+
+        c.moveToNext()
+        assertThat(c.getInt(screenIndex)).isEqualTo(2)
+        assertThat(c.getString(intentIndex)).contains(testPackage3)
+
+        c.moveToNext()
+        assertThat(c.getInt(screenIndex)).isEqualTo(3)
+        assertThat(c.getString(intentIndex)).contains(testPackage4)
+
+        c.close()
+    }
+
+    @Test
+    fun migrateFromLargerHotseat() {
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_HOTSEAT, 0, 0, testPackage1, 1, TMP_TABLE)
+        addItem(ITEM_TYPE_SHORTCUT, 2, CONTAINER_HOTSEAT, 0, 0, testPackage2, 2, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 3, CONTAINER_HOTSEAT, 0, 0, testPackage3, 3, TMP_TABLE)
+        addItem(ITEM_TYPE_SHORTCUT, 4, CONTAINER_HOTSEAT, 0, 0, testPackage4, 4, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 5, CONTAINER_HOTSEAT, 0, 0, testPackage5, 5, TMP_TABLE)
+
+        idp.numDatabaseHotseatIcons = 4
+        idp.numColumns = 4
+        idp.numRows = 4
+        val srcReader = DbReader(db, TMP_TABLE, context, validPackages)
+        val destReader = DbReader(db, TABLE_NAME, context, validPackages)
+        GridSizeMigrationUtil.migrate(
+            dbHelper,
+            srcReader,
+            destReader,
+            idp.numDatabaseHotseatIcons,
+            Point(idp.numColumns, idp.numRows),
+            DeviceGridState(context),
+            DeviceGridState(idp)
+        )
+
+        // Check hotseat items
+        val c =
+            db.query(
+                TABLE_NAME,
+                arrayOf(SCREEN, INTENT),
+                "container=$CONTAINER_HOTSEAT",
+                null,
+                SCREEN,
+                null,
+                null
+            )
+                ?: throw IllegalStateException()
+
+        assertThat(c.count.toLong()).isEqualTo(idp.numDatabaseHotseatIcons.toLong())
+        val screenIndex = c.getColumnIndex(SCREEN)
+        val intentIndex = c.getColumnIndex(INTENT)
+
+        c.moveToNext()
+        assertThat(c.getInt(screenIndex)).isEqualTo(0)
+        assertThat(c.getString(intentIndex)).contains(testPackage1)
+
+        c.moveToNext()
+        assertThat(c.getInt(screenIndex)).isEqualTo(1)
+        assertThat(c.getString(intentIndex)).contains(testPackage2)
+
+        c.moveToNext()
+        assertThat(c.getInt(screenIndex)).isEqualTo(2)
+        assertThat(c.getString(intentIndex)).contains(testPackage3)
+
+        c.moveToNext()
+        assertThat(c.getInt(screenIndex)).isEqualTo(3)
+        assertThat(c.getString(intentIndex)).contains(testPackage4)
+
+        c.close()
+    }
+
+    /**
+     * Migrating from a smaller grid to a large one should keep the pages if the column difference
+     * is less than 2
+     */
+    @Test
+    @Throws(Exception::class)
+    fun migrateFromSmallerGridSmallDifference() {
+        enableNewMigrationLogic("4,4")
+
+        // Setup src grid
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_DESKTOP, 2, 2, testPackage1, 5, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_DESKTOP, 2, 3, testPackage2, 6, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 1, CONTAINER_DESKTOP, 3, 1, testPackage3, 7, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 1, CONTAINER_DESKTOP, 3, 2, testPackage4, 8, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 2, CONTAINER_DESKTOP, 3, 3, testPackage5, 9, TMP_TABLE)
+
+        idp.numDatabaseHotseatIcons = 4
+        idp.numColumns = 6
+        idp.numRows = 5
+
+        val srcReader = DbReader(db, TMP_TABLE, context, validPackages)
+        val destReader = DbReader(db, TABLE_NAME, context, validPackages)
+        GridSizeMigrationUtil.migrate(
+            dbHelper,
+            srcReader,
+            destReader,
+            idp.numDatabaseHotseatIcons,
+            Point(idp.numColumns, idp.numRows),
+            DeviceGridState(context),
+            DeviceGridState(idp)
+        )
+
+        // Get workspace items
+        val c =
+            db.query(
+                TABLE_NAME,
+                arrayOf(INTENT, SCREEN),
+                "container=$CONTAINER_DESKTOP",
+                null,
+                null,
+                null,
+                null
+            )
+                ?: throw IllegalStateException()
+        val intentIndex = c.getColumnIndex(INTENT)
+        val screenIndex = c.getColumnIndex(SCREEN)
+
+        // Get in which screen the icon is
+        val locMap = HashMap<String, Int>()
+        while (c.moveToNext()) {
+            locMap[Intent.parseUri(c.getString(intentIndex), 0).getPackage()] =
+                c.getInt(screenIndex)
+        }
+        c.close()
+        assertThat(locMap.size).isEqualTo(5)
+        assertThat(locMap[testPackage1]).isEqualTo(0)
+        assertThat(locMap[testPackage2]).isEqualTo(0)
+        assertThat(locMap[testPackage3]).isEqualTo(1)
+        assertThat(locMap[testPackage4]).isEqualTo(1)
+        assertThat(locMap[testPackage5]).isEqualTo(2)
+    }
+
+    /**
+     * Migrating from a smaller grid to a large one should reflow the pages if the column difference
+     * is more than 2
+     */
+    @Test
+    @Throws(Exception::class)
+    fun migrateFromSmallerGridBigDifference() {
+        enableNewMigrationLogic("2,2")
+
+        // Setup src grid
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_DESKTOP, 0, 1, testPackage1, 5, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_DESKTOP, 1, 1, testPackage2, 6, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 1, CONTAINER_DESKTOP, 0, 0, testPackage3, 7, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 1, CONTAINER_DESKTOP, 1, 0, testPackage4, 8, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 2, CONTAINER_DESKTOP, 0, 0, testPackage5, 9, TMP_TABLE)
+
+        idp.numDatabaseHotseatIcons = 4
+        idp.numColumns = 5
+        idp.numRows = 5
+        val srcReader = DbReader(db, TMP_TABLE, context, validPackages)
+        val destReader = DbReader(db, TABLE_NAME, context, validPackages)
+        GridSizeMigrationUtil.migrate(
+            dbHelper,
+            srcReader,
+            destReader,
+            idp.numDatabaseHotseatIcons,
+            Point(idp.numColumns, idp.numRows),
+            DeviceGridState(context),
+            DeviceGridState(idp)
+        )
+
+        // Get workspace items
+        val c =
+            db.query(
+                TABLE_NAME,
+                arrayOf(INTENT, SCREEN),
+                "container=$CONTAINER_DESKTOP",
+                null,
+                null,
+                null,
+                null
+            )
+                ?: throw IllegalStateException()
+
+        val intentIndex = c.getColumnIndex(INTENT)
+        val screenIndex = c.getColumnIndex(SCREEN)
+
+        // Get in which screen the icon is
+        val locMap = HashMap<String, Int>()
+        while (c.moveToNext()) {
+            locMap[Intent.parseUri(c.getString(intentIndex), 0).getPackage()] =
+                c.getInt(screenIndex)
+        }
+        c.close()
+
+        // All icons fit the first screen
+        assertThat(locMap.size).isEqualTo(5)
+        assertThat(locMap[testPackage1]).isEqualTo(0)
+        assertThat(locMap[testPackage2]).isEqualTo(0)
+        assertThat(locMap[testPackage3]).isEqualTo(0)
+        assertThat(locMap[testPackage4]).isEqualTo(0)
+        assertThat(locMap[testPackage5]).isEqualTo(0)
+    }
+
+    /** Migrating from a larger grid to a smaller, we reflow from page 0 */
+    @Test
+    @Throws(Exception::class)
+    fun migrateFromLargerGrid() {
+        enableNewMigrationLogic("5,5")
+
+        // Setup src grid
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_DESKTOP, 0, 1, testPackage1, 5, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 0, CONTAINER_DESKTOP, 1, 1, testPackage2, 6, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 1, CONTAINER_DESKTOP, 0, 0, testPackage3, 7, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 1, CONTAINER_DESKTOP, 1, 0, testPackage4, 8, TMP_TABLE)
+        addItem(ITEM_TYPE_APPLICATION, 2, CONTAINER_DESKTOP, 0, 0, testPackage5, 9, TMP_TABLE)
+
+        idp.numDatabaseHotseatIcons = 4
+        idp.numColumns = 4
+        idp.numRows = 4
+        val srcReader = DbReader(db, TMP_TABLE, context, validPackages)
+        val destReader = DbReader(db, TABLE_NAME, context, validPackages)
+        GridSizeMigrationUtil.migrate(
+            dbHelper,
+            srcReader,
+            destReader,
+            idp.numDatabaseHotseatIcons,
+            Point(idp.numColumns, idp.numRows),
+            DeviceGridState(context),
+            DeviceGridState(idp)
+        )
+
+        // Get workspace items
+        val c =
+            db.query(
+                TABLE_NAME,
+                arrayOf(INTENT, SCREEN),
+                "container=$CONTAINER_DESKTOP",
+                null,
+                null,
+                null,
+                null
+            )
+                ?: throw IllegalStateException()
+        val intentIndex = c.getColumnIndex(INTENT)
+        val screenIndex = c.getColumnIndex(SCREEN)
+
+        // Get in which screen the icon is
+        val locMap = HashMap<String, Int>()
+        while (c.moveToNext()) {
+            locMap[Intent.parseUri(c.getString(intentIndex), 0).getPackage()] =
+                c.getInt(screenIndex)
+        }
+        c.close()
+
+        // All icons fit the first screen
+        assertThat(locMap.size).isEqualTo(5)
+        assertThat(locMap[testPackage1]).isEqualTo(0)
+        assertThat(locMap[testPackage2]).isEqualTo(0)
+        assertThat(locMap[testPackage3]).isEqualTo(0)
+        assertThat(locMap[testPackage4]).isEqualTo(0)
+        assertThat(locMap[testPackage5]).isEqualTo(0)
+    }
+
+    private fun enableNewMigrationLogic(srcGridSize: String) {
+        LauncherPrefs.get(context).putSync(WORKSPACE_SIZE.to(srcGridSize))
+    }
+
+    private fun addItem(
+        type: Int,
+        screen: Int,
+        container: Int,
+        x: Int,
+        y: Int,
+        packageName: String?
+    ): Int {
+        return addItem(
+            type,
+            screen,
+            container,
+            x,
+            y,
+            packageName,
+            dbHelper.generateNewItemId(),
+            TABLE_NAME
+        )
+    }
+
+    private fun addItem(
+        type: Int,
+        screen: Int,
+        container: Int,
+        x: Int,
+        y: Int,
+        packageName: String?,
+        id: Int,
+        tableName: String
+    ): Int {
+        val values = ContentValues()
+        values.put(_ID, id)
+        values.put(CONTAINER, container)
+        values.put(SCREEN, screen)
+        values.put(CELLX, x)
+        values.put(CELLY, y)
+        values.put(SPANX, 1)
+        values.put(SPANY, 1)
+        values.put(ITEM_TYPE, type)
+        values.put(INTENT, Intent(Intent.ACTION_MAIN).setPackage(packageName).toUri(0))
+        db.insert(tableName, null, values)
+        return id
+    }
+}
diff --git a/tests/src/com/android/launcher3/model/LoaderCursorTest.java b/tests/src/com/android/launcher3/model/LoaderCursorTest.java
index 6444ef6..78812c0 100644
--- a/tests/src/com/android/launcher3/model/LoaderCursorTest.java
+++ b/tests/src/com/android/launcher3/model/LoaderCursorTest.java
@@ -18,21 +18,26 @@
 
 import static androidx.test.InstrumentationRegistry.getContext;
 
+import static com.android.launcher3.LauncherSettings.Favorites.APPWIDGET_ID;
+import static com.android.launcher3.LauncherSettings.Favorites.APPWIDGET_PROVIDER;
+import static com.android.launcher3.LauncherSettings.Favorites.APPWIDGET_SOURCE;
 import static com.android.launcher3.LauncherSettings.Favorites.CELLX;
 import static com.android.launcher3.LauncherSettings.Favorites.CELLY;
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER;
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_DESKTOP;
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_HOTSEAT;
 import static com.android.launcher3.LauncherSettings.Favorites.ICON;
-import static com.android.launcher3.LauncherSettings.Favorites.ICON_PACKAGE;
-import static com.android.launcher3.LauncherSettings.Favorites.ICON_RESOURCE;
 import static com.android.launcher3.LauncherSettings.Favorites.INTENT;
 import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE;
 import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION;
 import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT;
+import static com.android.launcher3.LauncherSettings.Favorites.OPTIONS;
 import static com.android.launcher3.LauncherSettings.Favorites.PROFILE_ID;
+import static com.android.launcher3.LauncherSettings.Favorites.RANK;
 import static com.android.launcher3.LauncherSettings.Favorites.RESTORED;
 import static com.android.launcher3.LauncherSettings.Favorites.SCREEN;
+import static com.android.launcher3.LauncherSettings.Favorites.SPANX;
+import static com.android.launcher3.LauncherSettings.Favorites.SPANY;
 import static com.android.launcher3.LauncherSettings.Favorites.TITLE;
 import static com.android.launcher3.LauncherSettings.Favorites._ID;
 import static com.android.launcher3.util.LauncherModelHelper.TEST_ACTIVITY;
@@ -54,7 +59,6 @@
 
 import com.android.launcher3.InvariantDeviceProfile;
 import com.android.launcher3.LauncherAppState;
-import com.android.launcher3.LauncherSettings.Favorites;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.WorkspaceItemInfo;
 import com.android.launcher3.util.Executors;
@@ -90,13 +94,14 @@
         mApp = LauncherAppState.getInstance(mContext);
 
         mCursor = new MatrixCursor(new String[] {
-                ICON, ICON_PACKAGE, ICON_RESOURCE, TITLE,
-                _ID, CONTAINER, ITEM_TYPE, PROFILE_ID,
-                SCREEN, CELLX, CELLY, RESTORED, INTENT
+                ICON, TITLE, _ID, CONTAINER, ITEM_TYPE,
+                PROFILE_ID, SCREEN, CELLX, CELLY, RESTORED,
+                INTENT, APPWIDGET_ID, APPWIDGET_PROVIDER,
+                SPANX, SPANY, RANK, OPTIONS, APPWIDGET_SOURCE
         });
 
         UserManagerState ums = new UserManagerState();
-        mLoaderCursor = new LoaderCursor(mCursor, Favorites.CONTENT_URI, mApp, ums);
+        mLoaderCursor = new LoaderCursor(mCursor, mApp, ums);
         ums.allUsers.put(0, Process.myUserHandle());
     }
 
diff --git a/tests/src/com/android/launcher3/model/ModelMultiCallbacksTest.java b/tests/src/com/android/launcher3/model/ModelMultiCallbacksTest.java
index 42c9f11..3dfd6b4 100644
--- a/tests/src/com/android/launcher3/model/ModelMultiCallbacksTest.java
+++ b/tests/src/com/android/launcher3/model/ModelMultiCallbacksTest.java
@@ -37,6 +37,7 @@
 import com.android.launcher3.util.IntSet;
 import com.android.launcher3.util.LauncherLayoutBuilder;
 import com.android.launcher3.util.LauncherModelHelper;
+import com.android.launcher3.util.PackageUserKey;
 import com.android.launcher3.util.RunnableList;
 import com.android.launcher3.util.TestUtil;
 
@@ -48,6 +49,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -180,7 +182,8 @@
         }
 
         @Override
-        public void onInitialBindComplete(IntSet boundPages, RunnableList pendingTasks) {
+        public void onInitialBindComplete(IntSet boundPages, RunnableList pendingTasks,
+                int workspaceItemCount, boolean isBindSync) {
             mPageBoundSync = boundPages;
             mPendingTasks = pendingTasks;
         }
@@ -191,7 +194,8 @@
         }
 
         @Override
-        public void bindAllApplications(AppInfo[] apps, int flags) {
+        public void bindAllApplications(AppInfo[] apps, int flags,
+                Map<PackageUserKey, Integer> packageUserKeytoUidMap) {
             mAppInfos = apps;
         }
 
diff --git a/tests/src/com/android/launcher3/model/WorkspaceItemSpaceFinderTest.kt b/tests/src/com/android/launcher3/model/WorkspaceItemSpaceFinderTest.kt
index bfb1ac6..b3d02be 100644
--- a/tests/src/com/android/launcher3/model/WorkspaceItemSpaceFinderTest.kt
+++ b/tests/src/com/android/launcher3/model/WorkspaceItemSpaceFinderTest.kt
@@ -24,9 +24,7 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 
-/**
- * Tests for [WorkspaceItemSpaceFinder]
- */
+/** Tests for [WorkspaceItemSpaceFinder] */
 @SmallTest
 @RunWith(AndroidJUnit4::class)
 class WorkspaceItemSpaceFinderTest : AbstractWorkspaceModelTest() {
@@ -44,17 +42,27 @@
     }
 
     private fun findSpace(spanX: Int, spanY: Int): NewItemSpace =
-        mItemSpaceFinder.findSpaceForItem(
-            mAppState, mModelHelper.bgDataModel,
-            mExistingScreens, mNewScreens, spanX, spanY
-        )
+        mItemSpaceFinder
+            .findSpaceForItem(
+                mAppState,
+                mModelHelper.bgDataModel,
+                mExistingScreens,
+                mNewScreens,
+                spanX,
+                spanY
+            )
             .let { NewItemSpace.fromIntArray(it) }
 
     private fun assertRegionVacant(newItemSpace: NewItemSpace, spanX: Int, spanY: Int) {
         assertThat(
-            mScreenOccupancy[newItemSpace.screenId]
-                .isRegionVacant(newItemSpace.cellX, newItemSpace.cellY, spanX, spanY)
-        ).isTrue()
+                mScreenOccupancy[newItemSpace.screenId].isRegionVacant(
+                    newItemSpace.cellX,
+                    newItemSpace.cellY,
+                    spanX,
+                    spanY
+                )
+            )
+            .isTrue()
     }
 
     @Test
diff --git a/tests/src/com/android/launcher3/nonquickstep/DeviceProfileDumpTest.kt b/tests/src/com/android/launcher3/nonquickstep/DeviceProfileDumpTest.kt
new file mode 100644
index 0000000..a81413e
--- /dev/null
+++ b/tests/src/com/android/launcher3/nonquickstep/DeviceProfileDumpTest.kt
@@ -0,0 +1,1698 @@
+/*
+ * 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.launcher3.nonquickstep
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.launcher3.AbstractDeviceProfileTest
+import com.android.launcher3.DeviceProfile
+import com.android.launcher3.InvariantDeviceProfile
+import com.google.common.truth.Truth.assertThat
+import java.io.PrintWriter
+import java.io.StringWriter
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/** Tests for DeviceProfile. */
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class DeviceProfileDumpTest : AbstractDeviceProfileTest() {
+
+    @Test
+    fun phonePortrait3Button() {
+        initializeVarsForPhone(deviceSpecs["phone"]!!, isGestureMode = false)
+        val dp = getDeviceProfileForGrid("5_by_5")
+
+        assertThat(dump(dp))
+            .isEqualTo(
+                "DeviceProfile:\n" +
+                    "\t1 dp = 2.625 px\n" +
+                    "\tisTablet:false\n" +
+                    "\tisPhone:true\n" +
+                    "\ttransposeLayoutWithOrientation:true\n" +
+                    "\tisGestureMode:false\n" +
+                    "\tisLandscape:false\n" +
+                    "\tisMultiWindowMode:false\n" +
+                    "\tisTwoPanels:false\n" +
+                    "\twindowX: 0.0px (0.0dp)\n" +
+                    "\twindowY: 0.0px (0.0dp)\n" +
+                    "\twidthPx: 1080.0px (411.42856dp)\n" +
+                    "\theightPx: 2400.0px (914.2857dp)\n" +
+                    "\tavailableWidthPx: 1080.0px (411.42856dp)\n" +
+                    "\tavailableHeightPx: 2156.0px (821.3333dp)\n" +
+                    "\tmInsets.left: 0.0px (0.0dp)\n" +
+                    "\tmInsets.top: 118.0px (44.95238dp)\n" +
+                    "\tmInsets.right: 0.0px (0.0dp)\n" +
+                    "\tmInsets.bottom: 126.0px (48.0dp)\n" +
+                    "\taspectRatio:2.2222223\n" +
+                    "\tisResponsiveGrid:false\n" +
+                    "\tisScalableGrid:false\n" +
+                    "\tinv.numRows: 5\n" +
+                    "\tinv.numColumns: 5\n" +
+                    "\tinv.numSearchContainerColumns: 5\n" +
+                    "\tminCellSize: PointF(0.0, 0.0)dp\n" +
+                    "\tcellWidthPx: 165.0px (62.857143dp)\n" +
+                    "\tcellHeightPx: 235.0px (89.52381dp)\n" +
+                    "\tgetCellSize().x: 207.0px (78.85714dp)\n" +
+                    "\tgetCellSize().y: 379.0px (144.38095dp)\n" +
+                    "\tcellLayoutBorderSpacePx Horizontal: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutBorderSpacePx Vertical: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.left: 21.0px (8.0dp)\n" +
+                    "\tcellLayoutPaddingPx.top: 28.0px (10.666667dp)\n" +
+                    "\tcellLayoutPaddingPx.right: 21.0px (8.0dp)\n" +
+                    "\tcellLayoutPaddingPx.bottom: 28.0px (10.666667dp)\n" +
+                    "\ticonSizePx: 147.0px (56.0dp)\n" +
+                    "\ticonTextSizePx: 38.0px (14.476191dp)\n" +
+                    "\ticonDrawablePaddingPx: 18.0px (6.857143dp)\n" +
+                    "\tinv.numFolderRows: 4\n" +
+                    "\tinv.numFolderColumns: 4\n" +
+                    "\tfolderCellWidthPx: 195.0px (74.28571dp)\n" +
+                    "\tfolderCellHeightPx: 230.0px (87.61905dp)\n" +
+                    "\tfolderChildIconSizePx: 147.0px (56.0dp)\n" +
+                    "\tfolderChildTextSizePx: 38.0px (14.476191dp)\n" +
+                    "\tfolderChildDrawablePaddingPx: 10.0px (3.8095238dp)\n" +
+                    "\tfolderCellLayoutBorderSpacePx: 0.0px (0.0dp)\n" +
+                    "\tfolderContentPaddingLeftRight: 21.0px (8.0dp)\n" +
+                    "\tfolderTopPadding: 63.0px (24.0dp)\n" +
+                    "\tfolderFooterHeight: 147.0px (56.0dp)\n" +
+                    "\tbottomSheetTopPadding: 146.0px (55.61905dp)\n" +
+                    "\tbottomSheetOpenDuration: 267\n" +
+                    "\tbottomSheetCloseDuration: 267\n" +
+                    "\tbottomSheetWorkspaceScale: 1.0\n" +
+                    "\tbottomSheetDepth: 0.0\n" +
+                    "\tallAppsShiftRange: 788.0px (300.1905dp)\n" +
+                    "\tallAppsTopPadding: 0.0px (0.0dp)\n" +
+                    "\tallAppsOpenDuration: 600\n" +
+                    "\tallAppsCloseDuration: 300\n" +
+                    "\tallAppsIconSizePx: 147.0px (56.0dp)\n" +
+                    "\tallAppsIconTextSizePx: 38.0px (14.476191dp)\n" +
+                    "\tallAppsIconDrawablePaddingPx: 21.0px (8.0dp)\n" +
+                    "\tallAppsCellHeightPx: 315.0px (120.0dp)\n" +
+                    "\tallAppsCellWidthPx: 189.0px (72.0dp)\n" +
+                    "\tallAppsBorderSpacePxX: 42.0px (16.0dp)\n" +
+                    "\tallAppsBorderSpacePxY: 42.0px (16.0dp)\n" +
+                    "\tnumShownAllAppsColumns: 5\n" +
+                    "\tallAppsLeftRightPadding: 21.0px (8.0dp)\n" +
+                    "\tallAppsLeftRightMargin: 0.0px (0.0dp)\n" +
+                    "\thotseatBarSizePx: 294.0px (112.0dp)\n" +
+                    "\tinv.hotseatColumnSpan: 5\n" +
+                    "\thotseatCellHeightPx: 166.0px (63.238094dp)\n" +
+                    "\thotseatBarBottomSpacePx: 147.0px (56.0dp)\n" +
+                    "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbSpace: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbHeight: 0.0px (0.0dp)\n" +
+                    "\tspringLoadedHotseatBarTopMarginPx: 200.0px (76.190475dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).top: 0.0px (0.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).bottom: 128.0px (48.761906dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).left: 21.0px (8.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).right: 21.0px (8.0dp)\n" +
+                    "\tnumShownHotseatIcons: 5\n" +
+                    "\thotseatBorderSpace: 0.0px (0.0dp)\n" +
+                    "\tisQsbInline: false\n" +
+                    "\thotseatQsbWidth: 0.0px (0.0dp)\n" +
+                    "\tisTaskbarPresent:false\n" +
+                    "\tisTaskbarPresentInApps:false\n" +
+                    "\ttaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\tstashedTaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\ttaskbarBottomMargin: 0.0px (0.0dp)\n" +
+                    "\ttaskbarIconSize: 0.0px (0.0dp)\n" +
+                    "\tdesiredWorkspaceHorizontalMarginPx: 21.0px (8.0dp)\n" +
+                    "\tworkspacePadding.left: 0.0px (0.0dp)\n" +
+                    "\tworkspacePadding.top: 0.0px (0.0dp)\n" +
+                    "\tworkspacePadding.right: 0.0px (0.0dp)\n" +
+                    "\tworkspacePadding.bottom: 203.0px (77.333336dp)\n" +
+                    "\ticonScale: 1.0px (0.3809524dp)\n" +
+                    "\tcellScaleToFit : 1.0px (0.3809524dp)\n" +
+                    "\textraSpace: 722.0px (275.0476dp)\n" +
+                    "\tunscaled extraSpace: 722.0px (275.0476dp)\n" +
+                    "\tmaxEmptySpace: 0.0px (0.0dp)\n" +
+                    "\tworkspaceTopPadding: 0.0px (0.0dp)\n" +
+                    "\tworkspaceBottomPadding: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizeGridPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskThumbnailTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsHeight: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsClaimedSpaceBelow: 126.0px (48.0dp)\n" +
+                    "\toverviewActionsButtonSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewPageSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewRowSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewGridSideMargin: 0.0px (0.0dp)\n" +
+                    "\tdropTargetBarTopMarginPx: 84.0px (32.0dp)\n" +
+                    "\tdropTargetBarSizePx: 147.0px (56.0dp)\n" +
+                    "\tdropTargetBarBottomMarginPx: 42.0px (16.0dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkTop(): 391.0px (148.95238dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkBottom(): 1906.0px (726.0952dp)\n" +
+                    "\tworkspaceSpringLoadedMinNextPageVisiblePx: 63.0px (24.0dp)\n" +
+                    "\tgetWorkspaceSpringLoadScale(): 0.77572966px (0.29551607dp)\n" +
+                    "\tgetCellLayoutHeight(): 1953.0px (744.0dp)\n" +
+                    "\tgetCellLayoutWidth(): 1080.0px (411.42856dp)\n"
+            )
+    }
+
+    @Test
+    fun phonePortrait() {
+        initializeVarsForPhone(deviceSpecs["phone"]!!)
+        val dp = getDeviceProfileForGrid("5_by_5")
+
+        assertThat(dump(dp))
+            .isEqualTo(
+                "DeviceProfile:\n" +
+                    "\t1 dp = 2.625 px\n" +
+                    "\tisTablet:false\n" +
+                    "\tisPhone:true\n" +
+                    "\ttransposeLayoutWithOrientation:true\n" +
+                    "\tisGestureMode:true\n" +
+                    "\tisLandscape:false\n" +
+                    "\tisMultiWindowMode:false\n" +
+                    "\tisTwoPanels:false\n" +
+                    "\twindowX: 0.0px (0.0dp)\n" +
+                    "\twindowY: 0.0px (0.0dp)\n" +
+                    "\twidthPx: 1080.0px (411.42856dp)\n" +
+                    "\theightPx: 2400.0px (914.2857dp)\n" +
+                    "\tavailableWidthPx: 1080.0px (411.42856dp)\n" +
+                    "\tavailableHeightPx: 2219.0px (845.3333dp)\n" +
+                    "\tmInsets.left: 0.0px (0.0dp)\n" +
+                    "\tmInsets.top: 118.0px (44.95238dp)\n" +
+                    "\tmInsets.right: 0.0px (0.0dp)\n" +
+                    "\tmInsets.bottom: 63.0px (24.0dp)\n" +
+                    "\taspectRatio:2.2222223\n" +
+                    "\tisResponsiveGrid:false\n" +
+                    "\tisScalableGrid:false\n" +
+                    "\tinv.numRows: 5\n" +
+                    "\tinv.numColumns: 5\n" +
+                    "\tinv.numSearchContainerColumns: 5\n" +
+                    "\tminCellSize: PointF(0.0, 0.0)dp\n" +
+                    "\tcellWidthPx: 165.0px (62.857143dp)\n" +
+                    "\tcellHeightPx: 235.0px (89.52381dp)\n" +
+                    "\tgetCellSize().x: 207.0px (78.85714dp)\n" +
+                    "\tgetCellSize().y: 383.0px (145.90475dp)\n" +
+                    "\tcellLayoutBorderSpacePx Horizontal: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutBorderSpacePx Vertical: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.left: 21.0px (8.0dp)\n" +
+                    "\tcellLayoutPaddingPx.top: 28.0px (10.666667dp)\n" +
+                    "\tcellLayoutPaddingPx.right: 21.0px (8.0dp)\n" +
+                    "\tcellLayoutPaddingPx.bottom: 28.0px (10.666667dp)\n" +
+                    "\ticonSizePx: 147.0px (56.0dp)\n" +
+                    "\ticonTextSizePx: 38.0px (14.476191dp)\n" +
+                    "\ticonDrawablePaddingPx: 18.0px (6.857143dp)\n" +
+                    "\tinv.numFolderRows: 4\n" +
+                    "\tinv.numFolderColumns: 4\n" +
+                    "\tfolderCellWidthPx: 195.0px (74.28571dp)\n" +
+                    "\tfolderCellHeightPx: 230.0px (87.61905dp)\n" +
+                    "\tfolderChildIconSizePx: 147.0px (56.0dp)\n" +
+                    "\tfolderChildTextSizePx: 38.0px (14.476191dp)\n" +
+                    "\tfolderChildDrawablePaddingPx: 10.0px (3.8095238dp)\n" +
+                    "\tfolderCellLayoutBorderSpacePx: 0.0px (0.0dp)\n" +
+                    "\tfolderContentPaddingLeftRight: 21.0px (8.0dp)\n" +
+                    "\tfolderTopPadding: 63.0px (24.0dp)\n" +
+                    "\tfolderFooterHeight: 147.0px (56.0dp)\n" +
+                    "\tbottomSheetTopPadding: 146.0px (55.61905dp)\n" +
+                    "\tbottomSheetOpenDuration: 267\n" +
+                    "\tbottomSheetCloseDuration: 267\n" +
+                    "\tbottomSheetWorkspaceScale: 1.0\n" +
+                    "\tbottomSheetDepth: 0.0\n" +
+                    "\tallAppsShiftRange: 788.0px (300.1905dp)\n" +
+                    "\tallAppsTopPadding: 0.0px (0.0dp)\n" +
+                    "\tallAppsOpenDuration: 600\n" +
+                    "\tallAppsCloseDuration: 300\n" +
+                    "\tallAppsIconSizePx: 147.0px (56.0dp)\n" +
+                    "\tallAppsIconTextSizePx: 38.0px (14.476191dp)\n" +
+                    "\tallAppsIconDrawablePaddingPx: 21.0px (8.0dp)\n" +
+                    "\tallAppsCellHeightPx: 315.0px (120.0dp)\n" +
+                    "\tallAppsCellWidthPx: 189.0px (72.0dp)\n" +
+                    "\tallAppsBorderSpacePxX: 42.0px (16.0dp)\n" +
+                    "\tallAppsBorderSpacePxY: 42.0px (16.0dp)\n" +
+                    "\tnumShownAllAppsColumns: 5\n" +
+                    "\tallAppsLeftRightPadding: 21.0px (8.0dp)\n" +
+                    "\tallAppsLeftRightMargin: 0.0px (0.0dp)\n" +
+                    "\thotseatBarSizePx: 273.0px (104.0dp)\n" +
+                    "\tinv.hotseatColumnSpan: 5\n" +
+                    "\thotseatCellHeightPx: 166.0px (63.238094dp)\n" +
+                    "\thotseatBarBottomSpacePx: 126.0px (48.0dp)\n" +
+                    "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbSpace: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbHeight: 0.0px (0.0dp)\n" +
+                    "\tspringLoadedHotseatBarTopMarginPx: 200.0px (76.190475dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).top: 0.0px (0.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).bottom: 107.0px (40.761906dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).left: 21.0px (8.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).right: 21.0px (8.0dp)\n" +
+                    "\tnumShownHotseatIcons: 5\n" +
+                    "\thotseatBorderSpace: 0.0px (0.0dp)\n" +
+                    "\tisQsbInline: false\n" +
+                    "\thotseatQsbWidth: 0.0px (0.0dp)\n" +
+                    "\tisTaskbarPresent:false\n" +
+                    "\tisTaskbarPresentInApps:false\n" +
+                    "\ttaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\tstashedTaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\ttaskbarBottomMargin: 0.0px (0.0dp)\n" +
+                    "\ttaskbarIconSize: 0.0px (0.0dp)\n" +
+                    "\tdesiredWorkspaceHorizontalMarginPx: 21.0px (8.0dp)\n" +
+                    "\tworkspacePadding.left: 0.0px (0.0dp)\n" +
+                    "\tworkspacePadding.top: 0.0px (0.0dp)\n" +
+                    "\tworkspacePadding.right: 0.0px (0.0dp)\n" +
+                    "\tworkspacePadding.bottom: 245.0px (93.333336dp)\n" +
+                    "\ticonScale: 1.0px (0.3809524dp)\n" +
+                    "\tcellScaleToFit : 1.0px (0.3809524dp)\n" +
+                    "\textraSpace: 743.0px (283.0476dp)\n" +
+                    "\tunscaled extraSpace: 743.0px (283.0476dp)\n" +
+                    "\tmaxEmptySpace: 0.0px (0.0dp)\n" +
+                    "\tworkspaceTopPadding: 0.0px (0.0dp)\n" +
+                    "\tworkspaceBottomPadding: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizeGridPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskThumbnailTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsHeight: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsClaimedSpaceBelow: 63.0px (24.0dp)\n" +
+                    "\toverviewActionsButtonSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewPageSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewRowSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewGridSideMargin: 0.0px (0.0dp)\n" +
+                    "\tdropTargetBarTopMarginPx: 84.0px (32.0dp)\n" +
+                    "\tdropTargetBarSizePx: 147.0px (56.0dp)\n" +
+                    "\tdropTargetBarBottomMarginPx: 42.0px (16.0dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkTop(): 391.0px (148.95238dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkBottom(): 1927.0px (734.0952dp)\n" +
+                    "\tworkspaceSpringLoadedMinNextPageVisiblePx: 63.0px (24.0dp)\n" +
+                    "\tgetWorkspaceSpringLoadScale(): 0.7781155px (0.29642496dp)\n" +
+                    "\tgetCellLayoutHeight(): 1974.0px (752.0dp)\n" +
+                    "\tgetCellLayoutWidth(): 1080.0px (411.42856dp)\n"
+            )
+    }
+
+    @Test
+    fun phoneVerticalBar3Button() {
+        initializeVarsForPhone(deviceSpecs["phone"]!!, isVerticalBar = true, isGestureMode = false)
+        val dp = getDeviceProfileForGrid("5_by_5")
+
+        assertThat(dump(dp))
+            .isEqualTo(
+                "DeviceProfile:\n" +
+                    "\t1 dp = 2.625 px\n" +
+                    "\tisTablet:false\n" +
+                    "\tisPhone:true\n" +
+                    "\ttransposeLayoutWithOrientation:true\n" +
+                    "\tisGestureMode:false\n" +
+                    "\tisLandscape:true\n" +
+                    "\tisMultiWindowMode:false\n" +
+                    "\tisTwoPanels:false\n" +
+                    "\twindowX: 0.0px (0.0dp)\n" +
+                    "\twindowY: 0.0px (0.0dp)\n" +
+                    "\twidthPx: 2400.0px (914.2857dp)\n" +
+                    "\theightPx: 1080.0px (411.42856dp)\n" +
+                    "\tavailableWidthPx: 2156.0px (821.3333dp)\n" +
+                    "\tavailableHeightPx: 1006.0px (383.2381dp)\n" +
+                    "\tmInsets.left: 118.0px (44.95238dp)\n" +
+                    "\tmInsets.top: 74.0px (28.190475dp)\n" +
+                    "\tmInsets.right: 126.0px (48.0dp)\n" +
+                    "\tmInsets.bottom: 0.0px (0.0dp)\n" +
+                    "\taspectRatio:2.2222223\n" +
+                    "\tisResponsiveGrid:false\n" +
+                    "\tisScalableGrid:false\n" +
+                    "\tinv.numRows: 5\n" +
+                    "\tinv.numColumns: 5\n" +
+                    "\tinv.numSearchContainerColumns: 5\n" +
+                    "\tminCellSize: PointF(0.0, 0.0)dp\n" +
+                    "\tcellWidthPx: 158.0px (60.190475dp)\n" +
+                    "\tcellHeightPx: 166.0px (63.238094dp)\n" +
+                    "\tgetCellSize().x: 368.0px (140.19048dp)\n" +
+                    "\tgetCellSize().y: 193.0px (73.52381dp)\n" +
+                    "\tcellLayoutBorderSpacePx Horizontal: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutBorderSpacePx Vertical: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.left: 53.0px (20.190475dp)\n" +
+                    "\tcellLayoutPaddingPx.top: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.right: 53.0px (20.190475dp)\n" +
+                    "\tcellLayoutPaddingPx.bottom: 40.0px (15.238095dp)\n" +
+                    "\ticonSizePx: 147.0px (56.0dp)\n" +
+                    "\ticonTextSizePx: 0.0px (0.0dp)\n" +
+                    "\ticonDrawablePaddingPx: 0.0px (0.0dp)\n" +
+                    "\tinv.numFolderRows: 4\n" +
+                    "\tinv.numFolderColumns: 4\n" +
+                    "\tfolderCellWidthPx: 173.0px (65.90476dp)\n" +
+                    "\tfolderCellHeightPx: 205.0px (78.09524dp)\n" +
+                    "\tfolderChildIconSizePx: 131.0px (49.904762dp)\n" +
+                    "\tfolderChildTextSizePx: 34.0px (12.952381dp)\n" +
+                    "\tfolderChildDrawablePaddingPx: 9.0px (3.4285715dp)\n" +
+                    "\tfolderCellLayoutBorderSpacePx: 0.0px (0.0dp)\n" +
+                    "\tfolderContentPaddingLeftRight: 21.0px (8.0dp)\n" +
+                    "\tfolderTopPadding: 56.0px (21.333334dp)\n" +
+                    "\tfolderFooterHeight: 131.0px (49.904762dp)\n" +
+                    "\tbottomSheetTopPadding: 114.0px (43.42857dp)\n" +
+                    "\tbottomSheetOpenDuration: 267\n" +
+                    "\tbottomSheetCloseDuration: 267\n" +
+                    "\tbottomSheetWorkspaceScale: 1.0\n" +
+                    "\tbottomSheetDepth: 0.0\n" +
+                    "\tallAppsShiftRange: 788.0px (300.1905dp)\n" +
+                    "\tallAppsTopPadding: 0.0px (0.0dp)\n" +
+                    "\tallAppsOpenDuration: 600\n" +
+                    "\tallAppsCloseDuration: 300\n" +
+                    "\tallAppsIconSizePx: 147.0px (56.0dp)\n" +
+                    "\tallAppsIconTextSizePx: 38.0px (14.476191dp)\n" +
+                    "\tallAppsIconDrawablePaddingPx: 21.0px (8.0dp)\n" +
+                    "\tallAppsCellHeightPx: 321.0px (122.28571dp)\n" +
+                    "\tallAppsCellWidthPx: 189.0px (72.0dp)\n" +
+                    "\tallAppsBorderSpacePxX: 42.0px (16.0dp)\n" +
+                    "\tallAppsBorderSpacePxY: 42.0px (16.0dp)\n" +
+                    "\tnumShownAllAppsColumns: 5\n" +
+                    "\tallAppsLeftRightPadding: 0.0px (0.0dp)\n" +
+                    "\tallAppsLeftRightMargin: 0.0px (0.0dp)\n" +
+                    "\thotseatBarSizePx: 252.0px (96.0dp)\n" +
+                    "\tinv.hotseatColumnSpan: 5\n" +
+                    "\thotseatCellHeightPx: 166.0px (63.238094dp)\n" +
+                    "\thotseatBarBottomSpacePx: 126.0px (48.0dp)\n" +
+                    "\thotseatBarSidePaddingStartPx: 63.0px (24.0dp)\n" +
+                    "\thotseatBarSidePaddingEndPx: 42.0px (16.0dp)\n" +
+                    "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbSpace: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbHeight: 0.0px (0.0dp)\n" +
+                    "\tspringLoadedHotseatBarTopMarginPx: 118.0px (44.95238dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).top: 64.0px (24.380953dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).bottom: 49.0px (18.666666dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).left: 42.0px (16.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).right: 189.0px (72.0dp)\n" +
+                    "\tnumShownHotseatIcons: 5\n" +
+                    "\thotseatBorderSpace: 0.0px (0.0dp)\n" +
+                    "\tisQsbInline: false\n" +
+                    "\thotseatQsbWidth: 0.0px (0.0dp)\n" +
+                    "\tisTaskbarPresent:false\n" +
+                    "\tisTaskbarPresentInApps:false\n" +
+                    "\ttaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\tstashedTaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\ttaskbarBottomMargin: 0.0px (0.0dp)\n" +
+                    "\ttaskbarIconSize: 0.0px (0.0dp)\n" +
+                    "\tdesiredWorkspaceHorizontalMarginPx: 0.0px (0.0dp)\n" +
+                    "\tworkspacePadding.left: 10.0px (3.8095238dp)\n" +
+                    "\tworkspacePadding.top: 0.0px (0.0dp)\n" +
+                    "\tworkspacePadding.right: 199.0px (75.809525dp)\n" +
+                    "\tworkspacePadding.bottom: 0.0px (0.0dp)\n" +
+                    "\ticonScale: 1.0px (0.3809524dp)\n" +
+                    "\tcellScaleToFit : 1.0px (0.3809524dp)\n" +
+                    "\textraSpace: 136.0px (51.809525dp)\n" +
+                    "\tunscaled extraSpace: 136.0px (51.809525dp)\n" +
+                    "\tmaxEmptySpace: 0.0px (0.0dp)\n" +
+                    "\tworkspaceTopPadding: 0.0px (0.0dp)\n" +
+                    "\tworkspaceBottomPadding: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizeGridPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskThumbnailTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsHeight: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsClaimedSpaceBelow: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsButtonSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewPageSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewRowSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewGridSideMargin: 0.0px (0.0dp)\n" +
+                    "\tdropTargetBarTopMarginPx: 16.0px (6.095238dp)\n" +
+                    "\tdropTargetBarSizePx: 95.0px (36.190475dp)\n" +
+                    "\tdropTargetBarBottomMarginPx: 16.0px (6.095238dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkTop(): 201.0px (76.57143dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkBottom(): 1008.0px (384.0dp)\n" +
+                    "\tworkspaceSpringLoadedMinNextPageVisiblePx: 63.0px (24.0dp)\n" +
+                    "\tgetWorkspaceSpringLoadScale(): 0.8021869px (0.305595dp)\n" +
+                    "\tgetCellLayoutHeight(): 1006.0px (383.2381dp)\n" +
+                    "\tgetCellLayoutWidth(): 1947.0px (741.7143dp)\n"
+            )
+    }
+
+    @Test
+    fun phoneVerticalBar() {
+        initializeVarsForPhone(deviceSpecs["phone"]!!, isVerticalBar = true)
+        val dp = getDeviceProfileForGrid("5_by_5")
+
+        assertThat(dump(dp))
+            .isEqualTo(
+                "DeviceProfile:\n" +
+                    "\t1 dp = 2.625 px\n" +
+                    "\tisTablet:false\n" +
+                    "\tisPhone:true\n" +
+                    "\ttransposeLayoutWithOrientation:true\n" +
+                    "\tisGestureMode:true\n" +
+                    "\tisLandscape:true\n" +
+                    "\tisMultiWindowMode:false\n" +
+                    "\tisTwoPanels:false\n" +
+                    "\twindowX: 0.0px (0.0dp)\n" +
+                    "\twindowY: 0.0px (0.0dp)\n" +
+                    "\twidthPx: 2400.0px (914.2857dp)\n" +
+                    "\theightPx: 1080.0px (411.42856dp)\n" +
+                    "\tavailableWidthPx: 2282.0px (869.3333dp)\n" +
+                    "\tavailableHeightPx: 943.0px (359.2381dp)\n" +
+                    "\tmInsets.left: 118.0px (44.95238dp)\n" +
+                    "\tmInsets.top: 74.0px (28.190475dp)\n" +
+                    "\tmInsets.right: 0.0px (0.0dp)\n" +
+                    "\tmInsets.bottom: 63.0px (24.0dp)\n" +
+                    "\taspectRatio:2.2222223\n" +
+                    "\tisResponsiveGrid:false\n" +
+                    "\tisScalableGrid:false\n" +
+                    "\tinv.numRows: 5\n" +
+                    "\tinv.numColumns: 5\n" +
+                    "\tinv.numSearchContainerColumns: 5\n" +
+                    "\tminCellSize: PointF(0.0, 0.0)dp\n" +
+                    "\tcellWidthPx: 158.0px (60.190475dp)\n" +
+                    "\tcellHeightPx: 166.0px (63.238094dp)\n" +
+                    "\tgetCellSize().x: 393.0px (149.71428dp)\n" +
+                    "\tgetCellSize().y: 180.0px (68.57143dp)\n" +
+                    "\tcellLayoutBorderSpacePx Horizontal: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutBorderSpacePx Vertical: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.left: 53.0px (20.190475dp)\n" +
+                    "\tcellLayoutPaddingPx.top: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.right: 53.0px (20.190475dp)\n" +
+                    "\tcellLayoutPaddingPx.bottom: 40.0px (15.238095dp)\n" +
+                    "\ticonSizePx: 147.0px (56.0dp)\n" +
+                    "\ticonTextSizePx: 0.0px (0.0dp)\n" +
+                    "\ticonDrawablePaddingPx: 0.0px (0.0dp)\n" +
+                    "\tinv.numFolderRows: 4\n" +
+                    "\tinv.numFolderColumns: 4\n" +
+                    "\tfolderCellWidthPx: 163.0px (62.095238dp)\n" +
+                    "\tfolderCellHeightPx: 192.0px (73.14286dp)\n" +
+                    "\tfolderChildIconSizePx: 123.0px (46.857143dp)\n" +
+                    "\tfolderChildTextSizePx: 32.0px (12.190476dp)\n" +
+                    "\tfolderChildDrawablePaddingPx: 8.0px (3.047619dp)\n" +
+                    "\tfolderCellLayoutBorderSpacePx: 0.0px (0.0dp)\n" +
+                    "\tfolderContentPaddingLeftRight: 21.0px (8.0dp)\n" +
+                    "\tfolderTopPadding: 53.0px (20.190475dp)\n" +
+                    "\tfolderFooterHeight: 123.0px (46.857143dp)\n" +
+                    "\tbottomSheetTopPadding: 114.0px (43.42857dp)\n" +
+                    "\tbottomSheetOpenDuration: 267\n" +
+                    "\tbottomSheetCloseDuration: 267\n" +
+                    "\tbottomSheetWorkspaceScale: 1.0\n" +
+                    "\tbottomSheetDepth: 0.0\n" +
+                    "\tallAppsShiftRange: 788.0px (300.1905dp)\n" +
+                    "\tallAppsTopPadding: 0.0px (0.0dp)\n" +
+                    "\tallAppsOpenDuration: 600\n" +
+                    "\tallAppsCloseDuration: 300\n" +
+                    "\tallAppsIconSizePx: 147.0px (56.0dp)\n" +
+                    "\tallAppsIconTextSizePx: 38.0px (14.476191dp)\n" +
+                    "\tallAppsIconDrawablePaddingPx: 21.0px (8.0dp)\n" +
+                    "\tallAppsCellHeightPx: 321.0px (122.28571dp)\n" +
+                    "\tallAppsCellWidthPx: 189.0px (72.0dp)\n" +
+                    "\tallAppsBorderSpacePxX: 42.0px (16.0dp)\n" +
+                    "\tallAppsBorderSpacePxY: 42.0px (16.0dp)\n" +
+                    "\tnumShownAllAppsColumns: 5\n" +
+                    "\tallAppsLeftRightPadding: 0.0px (0.0dp)\n" +
+                    "\tallAppsLeftRightMargin: 0.0px (0.0dp)\n" +
+                    "\thotseatBarSizePx: 252.0px (96.0dp)\n" +
+                    "\tinv.hotseatColumnSpan: 5\n" +
+                    "\thotseatCellHeightPx: 166.0px (63.238094dp)\n" +
+                    "\thotseatBarBottomSpacePx: 126.0px (48.0dp)\n" +
+                    "\thotseatBarSidePaddingStartPx: 63.0px (24.0dp)\n" +
+                    "\thotseatBarSidePaddingEndPx: 42.0px (16.0dp)\n" +
+                    "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbSpace: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbHeight: 0.0px (0.0dp)\n" +
+                    "\tspringLoadedHotseatBarTopMarginPx: 118.0px (44.95238dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).top: 64.0px (24.380953dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).bottom: 112.0px (42.666668dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).left: 42.0px (16.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).right: 63.0px (24.0dp)\n" +
+                    "\tnumShownHotseatIcons: 5\n" +
+                    "\thotseatBorderSpace: 0.0px (0.0dp)\n" +
+                    "\tisQsbInline: false\n" +
+                    "\thotseatQsbWidth: 0.0px (0.0dp)\n" +
+                    "\tisTaskbarPresent:false\n" +
+                    "\tisTaskbarPresentInApps:false\n" +
+                    "\ttaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\tstashedTaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\ttaskbarBottomMargin: 0.0px (0.0dp)\n" +
+                    "\ttaskbarIconSize: 0.0px (0.0dp)\n" +
+                    "\tdesiredWorkspaceHorizontalMarginPx: 0.0px (0.0dp)\n" +
+                    "\tworkspacePadding.left: 10.0px (3.8095238dp)\n" +
+                    "\tworkspacePadding.top: 0.0px (0.0dp)\n" +
+                    "\tworkspacePadding.right: 199.0px (75.809525dp)\n" +
+                    "\tworkspacePadding.bottom: 0.0px (0.0dp)\n" +
+                    "\ticonScale: 1.0px (0.3809524dp)\n" +
+                    "\tcellScaleToFit : 1.0px (0.3809524dp)\n" +
+                    "\textraSpace: 73.0px (27.809525dp)\n" +
+                    "\tunscaled extraSpace: 73.0px (27.809525dp)\n" +
+                    "\tmaxEmptySpace: 0.0px (0.0dp)\n" +
+                    "\tworkspaceTopPadding: 0.0px (0.0dp)\n" +
+                    "\tworkspaceBottomPadding: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizeGridPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskThumbnailTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsHeight: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsClaimedSpaceBelow: 63.0px (24.0dp)\n" +
+                    "\toverviewActionsButtonSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewPageSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewRowSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewGridSideMargin: 0.0px (0.0dp)\n" +
+                    "\tdropTargetBarTopMarginPx: 16.0px (6.095238dp)\n" +
+                    "\tdropTargetBarSizePx: 95.0px (36.190475dp)\n" +
+                    "\tdropTargetBarBottomMarginPx: 16.0px (6.095238dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkTop(): 201.0px (76.57143dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkBottom(): 952.0px (362.66666dp)\n" +
+                    "\tworkspaceSpringLoadedMinNextPageVisiblePx: 63.0px (24.0dp)\n" +
+                    "\tgetWorkspaceSpringLoadScale(): 0.79639447px (0.30338836dp)\n" +
+                    "\tgetCellLayoutHeight(): 943.0px (359.2381dp)\n" +
+                    "\tgetCellLayoutWidth(): 2073.0px (789.7143dp)\n"
+            )
+    }
+
+    @Test
+    fun tabletLandscape3Button() {
+        initializeVarsForTablet(deviceSpecs["tablet"]!!, isLandscape = true, isGestureMode = false)
+        val dp = getDeviceProfileForGrid("6_by_5")
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dump(dp))
+            .isEqualTo(
+                "DeviceProfile:\n" +
+                    "\t1 dp = 2.0 px\n" +
+                    "\tisTablet:true\n" +
+                    "\tisPhone:false\n" +
+                    "\ttransposeLayoutWithOrientation:false\n" +
+                    "\tisGestureMode:false\n" +
+                    "\tisLandscape:true\n" +
+                    "\tisMultiWindowMode:false\n" +
+                    "\tisTwoPanels:false\n" +
+                    "\twindowX: 0.0px (0.0dp)\n" +
+                    "\twindowY: 0.0px (0.0dp)\n" +
+                    "\twidthPx: 2560.0px (1280.0dp)\n" +
+                    "\theightPx: 1600.0px (800.0dp)\n" +
+                    "\tavailableWidthPx: 2560.0px (1280.0dp)\n" +
+                    "\tavailableHeightPx: 1496.0px (748.0dp)\n" +
+                    "\tmInsets.left: 0.0px (0.0dp)\n" +
+                    "\tmInsets.top: 104.0px (52.0dp)\n" +
+                    "\tmInsets.right: 0.0px (0.0dp)\n" +
+                    "\tmInsets.bottom: 0.0px (0.0dp)\n" +
+                    "\taspectRatio:1.6\n" +
+                    "\tisResponsiveGrid:false\n" +
+                    "\tisScalableGrid:true\n" +
+                    "\tinv.numRows: 5\n" +
+                    "\tinv.numColumns: 6\n" +
+                    "\tinv.numSearchContainerColumns: 3\n" +
+                    "\tminCellSize: PointF(120.0, 104.0)dp\n" +
+                    "\tcellWidthPx: 240.0px (120.0dp)\n" +
+                    "\tcellHeightPx: 208.0px (104.0dp)\n" +
+                    "\tgetCellSize().x: 240.0px (120.0dp)\n" +
+                    "\tgetCellSize().y: 208.0px (104.0dp)\n" +
+                    "\tcellLayoutBorderSpacePx Horizontal: 128.0px (64.0dp)\n" +
+                    "\tcellLayoutBorderSpacePx Vertical: 32.0px (16.0dp)\n" +
+                    "\tcellLayoutPaddingPx.left: 59.0px (29.5dp)\n" +
+                    "\tcellLayoutPaddingPx.top: 25.0px (12.5dp)\n" +
+                    "\tcellLayoutPaddingPx.right: 59.0px (29.5dp)\n" +
+                    "\tcellLayoutPaddingPx.bottom: 59.0px (29.5dp)\n" +
+                    "\ticonSizePx: 120.0px (60.0dp)\n" +
+                    "\ticonTextSizePx: 28.0px (14.0dp)\n" +
+                    "\ticonDrawablePaddingPx: 14.0px (7.0dp)\n" +
+                    "\tinv.numFolderRows: 3\n" +
+                    "\tinv.numFolderColumns: 3\n" +
+                    "\tfolderCellWidthPx: 240.0px (120.0dp)\n" +
+                    "\tfolderCellHeightPx: 208.0px (104.0dp)\n" +
+                    "\tfolderChildIconSizePx: 120.0px (60.0dp)\n" +
+                    "\tfolderChildTextSizePx: 28.0px (14.0dp)\n" +
+                    "\tfolderChildDrawablePaddingPx: 16.0px (8.0dp)\n" +
+                    "\tfolderCellLayoutBorderSpacePx: 0.0px (0.0dp)\n" +
+                    "\tfolderContentPaddingLeftRight: 0.0px (0.0dp)\n" +
+                    "\tfolderTopPadding: 48.0px (24.0dp)\n" +
+                    "\tfolderFooterHeight: 112.0px (56.0dp)\n" +
+                    "\tbottomSheetTopPadding: 104.0px (52.0dp)\n" +
+                    "\tbottomSheetOpenDuration: 500\n" +
+                    "\tbottomSheetCloseDuration: 500\n" +
+                    "\tbottomSheetWorkspaceScale: 0.97\n" +
+                    "\tbottomSheetDepth: 0.0\n" +
+                    "\tallAppsShiftRange: 1496.0px (748.0dp)\n" +
+                    "\tallAppsTopPadding: 104.0px (52.0dp)\n" +
+                    "\tallAppsOpenDuration: 500\n" +
+                    "\tallAppsCloseDuration: 500\n" +
+                    "\tallAppsIconSizePx: 120.0px (60.0dp)\n" +
+                    "\tallAppsIconTextSizePx: 28.0px (14.0dp)\n" +
+                    "\tallAppsIconDrawablePaddingPx: 14.0px (7.0dp)\n" +
+                    "\tallAppsCellHeightPx: 284.0px (142.0dp)\n" +
+                    "\tallAppsCellWidthPx: 252.0px (126.0dp)\n" +
+                    "\tallAppsBorderSpacePxX: 32.0px (16.0dp)\n" +
+                    "\tallAppsBorderSpacePxY: 32.0px (16.0dp)\n" +
+                    "\tnumShownAllAppsColumns: 6\n" +
+                    "\tallAppsLeftRightPadding: 32.0px (16.0dp)\n" +
+                    "\tallAppsLeftRightMargin: 412.0px (206.0dp)\n" +
+                    "\thotseatBarSizePx: 200.0px (100.0dp)\n" +
+                    "\tinv.hotseatColumnSpan: 4\n" +
+                    "\thotseatCellHeightPx: 135.0px (67.5dp)\n" +
+                    "\thotseatBarBottomSpacePx: 80.0px (40.0dp)\n" +
+                    "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbSpace: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbHeight: 0.0px (0.0dp)\n" +
+                    "\tspringLoadedHotseatBarTopMarginPx: 128.0px (64.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).top: 0.0px (0.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).bottom: 65.0px (32.5dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).left: 668.0px (334.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).right: 668.0px (334.0dp)\n" +
+                    "\tnumShownHotseatIcons: 6\n" +
+                    "\thotseatBorderSpace: 100.0px (50.0dp)\n" +
+                    "\tisQsbInline: false\n" +
+                    "\thotseatQsbWidth: 1224.0px (612.0dp)\n" +
+                    "\tisTaskbarPresent:false\n" +
+                    "\tisTaskbarPresentInApps:true\n" +
+                    "\ttaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\tstashedTaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\ttaskbarBottomMargin: 0.0px (0.0dp)\n" +
+                    "\ttaskbarIconSize: 0.0px (0.0dp)\n" +
+                    "\tdesiredWorkspaceHorizontalMarginPx: 240.0px (120.0dp)\n" +
+                    "\tworkspacePadding.left: 181.0px (90.5dp)\n" +
+                    "\tworkspacePadding.top: 0.0px (0.0dp)\n" +
+                    "\tworkspacePadding.right: 181.0px (90.5dp)\n" +
+                    "\tworkspacePadding.bottom: 244.0px (122.0dp)\n" +
+                    "\ticonScale: 1.0px (0.5dp)\n" +
+                    "\tcellScaleToFit : 1.0px (0.5dp)\n" +
+                    "\textraSpace: 80.0px (40.0dp)\n" +
+                    "\tunscaled extraSpace: 80.0px (40.0dp)\n" +
+                    "\tmaxEmptySpace: 200.0px (100.0dp)\n" +
+                    "\tworkspaceTopPadding: 25.0px (12.5dp)\n" +
+                    "\tworkspaceBottomPadding: 55.0px (27.5dp)\n" +
+                    "\toverviewTaskMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizeGridPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskThumbnailTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsHeight: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsClaimedSpaceBelow: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsButtonSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewPageSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewRowSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewGridSideMargin: 0.0px (0.0dp)\n" +
+                    "\tdropTargetBarTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\tdropTargetBarSizePx: 144.0px (72.0dp)\n" +
+                    "\tdropTargetBarBottomMarginPx: 64.0px (32.0dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkTop(): 312.0px (156.0dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkBottom(): 1272.0px (636.0dp)\n" +
+                    "\tworkspaceSpringLoadedMinNextPageVisiblePx: 48.0px (24.0dp)\n" +
+                    "\tgetWorkspaceSpringLoadScale(): 0.76677316px (0.38338658dp)\n" +
+                    "\tgetCellLayoutHeight(): 1252.0px (626.0dp)\n" +
+                    "\tgetCellLayoutWidth(): 2198.0px (1099.0dp)\n"
+            )
+    }
+
+    @Test
+    fun tabletLandscape() {
+        initializeVarsForTablet(deviceSpecs["tablet"]!!, isLandscape = true)
+        val dp = getDeviceProfileForGrid("6_by_5")
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dump(dp))
+            .isEqualTo(
+                "DeviceProfile:\n" +
+                    "\t1 dp = 2.0 px\n" +
+                    "\tisTablet:true\n" +
+                    "\tisPhone:false\n" +
+                    "\ttransposeLayoutWithOrientation:false\n" +
+                    "\tisGestureMode:true\n" +
+                    "\tisLandscape:true\n" +
+                    "\tisMultiWindowMode:false\n" +
+                    "\tisTwoPanels:false\n" +
+                    "\twindowX: 0.0px (0.0dp)\n" +
+                    "\twindowY: 0.0px (0.0dp)\n" +
+                    "\twidthPx: 2560.0px (1280.0dp)\n" +
+                    "\theightPx: 1600.0px (800.0dp)\n" +
+                    "\tavailableWidthPx: 2560.0px (1280.0dp)\n" +
+                    "\tavailableHeightPx: 1496.0px (748.0dp)\n" +
+                    "\tmInsets.left: 0.0px (0.0dp)\n" +
+                    "\tmInsets.top: 104.0px (52.0dp)\n" +
+                    "\tmInsets.right: 0.0px (0.0dp)\n" +
+                    "\tmInsets.bottom: 0.0px (0.0dp)\n" +
+                    "\taspectRatio:1.6\n" +
+                    "\tisResponsiveGrid:false\n" +
+                    "\tisScalableGrid:true\n" +
+                    "\tinv.numRows: 5\n" +
+                    "\tinv.numColumns: 6\n" +
+                    "\tinv.numSearchContainerColumns: 3\n" +
+                    "\tminCellSize: PointF(120.0, 104.0)dp\n" +
+                    "\tcellWidthPx: 240.0px (120.0dp)\n" +
+                    "\tcellHeightPx: 208.0px (104.0dp)\n" +
+                    "\tgetCellSize().x: 240.0px (120.0dp)\n" +
+                    "\tgetCellSize().y: 208.0px (104.0dp)\n" +
+                    "\tcellLayoutBorderSpacePx Horizontal: 128.0px (64.0dp)\n" +
+                    "\tcellLayoutBorderSpacePx Vertical: 32.0px (16.0dp)\n" +
+                    "\tcellLayoutPaddingPx.left: 59.0px (29.5dp)\n" +
+                    "\tcellLayoutPaddingPx.top: 25.0px (12.5dp)\n" +
+                    "\tcellLayoutPaddingPx.right: 59.0px (29.5dp)\n" +
+                    "\tcellLayoutPaddingPx.bottom: 59.0px (29.5dp)\n" +
+                    "\ticonSizePx: 120.0px (60.0dp)\n" +
+                    "\ticonTextSizePx: 28.0px (14.0dp)\n" +
+                    "\ticonDrawablePaddingPx: 14.0px (7.0dp)\n" +
+                    "\tinv.numFolderRows: 3\n" +
+                    "\tinv.numFolderColumns: 3\n" +
+                    "\tfolderCellWidthPx: 240.0px (120.0dp)\n" +
+                    "\tfolderCellHeightPx: 208.0px (104.0dp)\n" +
+                    "\tfolderChildIconSizePx: 120.0px (60.0dp)\n" +
+                    "\tfolderChildTextSizePx: 28.0px (14.0dp)\n" +
+                    "\tfolderChildDrawablePaddingPx: 16.0px (8.0dp)\n" +
+                    "\tfolderCellLayoutBorderSpacePx: 0.0px (0.0dp)\n" +
+                    "\tfolderContentPaddingLeftRight: 0.0px (0.0dp)\n" +
+                    "\tfolderTopPadding: 48.0px (24.0dp)\n" +
+                    "\tfolderFooterHeight: 112.0px (56.0dp)\n" +
+                    "\tbottomSheetTopPadding: 104.0px (52.0dp)\n" +
+                    "\tbottomSheetOpenDuration: 500\n" +
+                    "\tbottomSheetCloseDuration: 500\n" +
+                    "\tbottomSheetWorkspaceScale: 0.97\n" +
+                    "\tbottomSheetDepth: 0.0\n" +
+                    "\tallAppsShiftRange: 1496.0px (748.0dp)\n" +
+                    "\tallAppsTopPadding: 104.0px (52.0dp)\n" +
+                    "\tallAppsOpenDuration: 500\n" +
+                    "\tallAppsCloseDuration: 500\n" +
+                    "\tallAppsIconSizePx: 120.0px (60.0dp)\n" +
+                    "\tallAppsIconTextSizePx: 28.0px (14.0dp)\n" +
+                    "\tallAppsIconDrawablePaddingPx: 14.0px (7.0dp)\n" +
+                    "\tallAppsCellHeightPx: 284.0px (142.0dp)\n" +
+                    "\tallAppsCellWidthPx: 252.0px (126.0dp)\n" +
+                    "\tallAppsBorderSpacePxX: 32.0px (16.0dp)\n" +
+                    "\tallAppsBorderSpacePxY: 32.0px (16.0dp)\n" +
+                    "\tnumShownAllAppsColumns: 6\n" +
+                    "\tallAppsLeftRightPadding: 32.0px (16.0dp)\n" +
+                    "\tallAppsLeftRightMargin: 412.0px (206.0dp)\n" +
+                    "\thotseatBarSizePx: 200.0px (100.0dp)\n" +
+                    "\tinv.hotseatColumnSpan: 4\n" +
+                    "\thotseatCellHeightPx: 135.0px (67.5dp)\n" +
+                    "\thotseatBarBottomSpacePx: 80.0px (40.0dp)\n" +
+                    "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbSpace: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbHeight: 0.0px (0.0dp)\n" +
+                    "\tspringLoadedHotseatBarTopMarginPx: 128.0px (64.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).top: 0.0px (0.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).bottom: 65.0px (32.5dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).left: 668.0px (334.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).right: 668.0px (334.0dp)\n" +
+                    "\tnumShownHotseatIcons: 6\n" +
+                    "\thotseatBorderSpace: 100.0px (50.0dp)\n" +
+                    "\tisQsbInline: false\n" +
+                    "\thotseatQsbWidth: 1224.0px (612.0dp)\n" +
+                    "\tisTaskbarPresent:false\n" +
+                    "\tisTaskbarPresentInApps:true\n" +
+                    "\ttaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\tstashedTaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\ttaskbarBottomMargin: 0.0px (0.0dp)\n" +
+                    "\ttaskbarIconSize: 0.0px (0.0dp)\n" +
+                    "\tdesiredWorkspaceHorizontalMarginPx: 240.0px (120.0dp)\n" +
+                    "\tworkspacePadding.left: 181.0px (90.5dp)\n" +
+                    "\tworkspacePadding.top: 0.0px (0.0dp)\n" +
+                    "\tworkspacePadding.right: 181.0px (90.5dp)\n" +
+                    "\tworkspacePadding.bottom: 244.0px (122.0dp)\n" +
+                    "\ticonScale: 1.0px (0.5dp)\n" +
+                    "\tcellScaleToFit : 1.0px (0.5dp)\n" +
+                    "\textraSpace: 80.0px (40.0dp)\n" +
+                    "\tunscaled extraSpace: 80.0px (40.0dp)\n" +
+                    "\tmaxEmptySpace: 200.0px (100.0dp)\n" +
+                    "\tworkspaceTopPadding: 25.0px (12.5dp)\n" +
+                    "\tworkspaceBottomPadding: 55.0px (27.5dp)\n" +
+                    "\toverviewTaskMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizeGridPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskThumbnailTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsHeight: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsClaimedSpaceBelow: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsButtonSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewPageSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewRowSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewGridSideMargin: 0.0px (0.0dp)\n" +
+                    "\tdropTargetBarTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\tdropTargetBarSizePx: 144.0px (72.0dp)\n" +
+                    "\tdropTargetBarBottomMarginPx: 64.0px (32.0dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkTop(): 312.0px (156.0dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkBottom(): 1272.0px (636.0dp)\n" +
+                    "\tworkspaceSpringLoadedMinNextPageVisiblePx: 48.0px (24.0dp)\n" +
+                    "\tgetWorkspaceSpringLoadScale(): 0.76677316px (0.38338658dp)\n" +
+                    "\tgetCellLayoutHeight(): 1252.0px (626.0dp)\n" +
+                    "\tgetCellLayoutWidth(): 2198.0px (1099.0dp)\n"
+            )
+    }
+
+    @Test
+    fun tabletPortrait3Button() {
+        initializeVarsForTablet(deviceSpecs["tablet"]!!, isGestureMode = false)
+        val dp = getDeviceProfileForGrid("6_by_5")
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dump(dp))
+            .isEqualTo(
+                "DeviceProfile:\n" +
+                    "\t1 dp = 2.0 px\n" +
+                    "\tisTablet:true\n" +
+                    "\tisPhone:false\n" +
+                    "\ttransposeLayoutWithOrientation:false\n" +
+                    "\tisGestureMode:false\n" +
+                    "\tisLandscape:false\n" +
+                    "\tisMultiWindowMode:false\n" +
+                    "\tisTwoPanels:false\n" +
+                    "\twindowX: 0.0px (0.0dp)\n" +
+                    "\twindowY: 0.0px (0.0dp)\n" +
+                    "\twidthPx: 1600.0px (800.0dp)\n" +
+                    "\theightPx: 2560.0px (1280.0dp)\n" +
+                    "\tavailableWidthPx: 1600.0px (800.0dp)\n" +
+                    "\tavailableHeightPx: 2456.0px (1228.0dp)\n" +
+                    "\tmInsets.left: 0.0px (0.0dp)\n" +
+                    "\tmInsets.top: 104.0px (52.0dp)\n" +
+                    "\tmInsets.right: 0.0px (0.0dp)\n" +
+                    "\tmInsets.bottom: 0.0px (0.0dp)\n" +
+                    "\taspectRatio:1.6\n" +
+                    "\tisResponsiveGrid:false\n" +
+                    "\tisScalableGrid:true\n" +
+                    "\tinv.numRows: 5\n" +
+                    "\tinv.numColumns: 6\n" +
+                    "\tinv.numSearchContainerColumns: 3\n" +
+                    "\tminCellSize: PointF(102.0, 120.0)dp\n" +
+                    "\tcellWidthPx: 204.0px (102.0dp)\n" +
+                    "\tcellHeightPx: 240.0px (120.0dp)\n" +
+                    "\tgetCellSize().x: 204.0px (102.0dp)\n" +
+                    "\tgetCellSize().y: 240.0px (120.0dp)\n" +
+                    "\tcellLayoutBorderSpacePx Horizontal: 32.0px (16.0dp)\n" +
+                    "\tcellLayoutBorderSpacePx Vertical: 128.0px (64.0dp)\n" +
+                    "\tcellLayoutPaddingPx.left: 72.0px (36.0dp)\n" +
+                    "\tcellLayoutPaddingPx.top: 72.0px (36.0dp)\n" +
+                    "\tcellLayoutPaddingPx.right: 72.0px (36.0dp)\n" +
+                    "\tcellLayoutPaddingPx.bottom: 72.0px (36.0dp)\n" +
+                    "\ticonSizePx: 120.0px (60.0dp)\n" +
+                    "\ticonTextSizePx: 28.0px (14.0dp)\n" +
+                    "\ticonDrawablePaddingPx: 14.0px (7.0dp)\n" +
+                    "\tinv.numFolderRows: 3\n" +
+                    "\tinv.numFolderColumns: 3\n" +
+                    "\tfolderCellWidthPx: 204.0px (102.0dp)\n" +
+                    "\tfolderCellHeightPx: 240.0px (120.0dp)\n" +
+                    "\tfolderChildIconSizePx: 120.0px (60.0dp)\n" +
+                    "\tfolderChildTextSizePx: 28.0px (14.0dp)\n" +
+                    "\tfolderChildDrawablePaddingPx: 27.0px (13.5dp)\n" +
+                    "\tfolderCellLayoutBorderSpacePx: 0.0px (0.0dp)\n" +
+                    "\tfolderContentPaddingLeftRight: 0.0px (0.0dp)\n" +
+                    "\tfolderTopPadding: 48.0px (24.0dp)\n" +
+                    "\tfolderFooterHeight: 112.0px (56.0dp)\n" +
+                    "\tbottomSheetTopPadding: 704.0px (352.0dp)\n" +
+                    "\tbottomSheetOpenDuration: 500\n" +
+                    "\tbottomSheetCloseDuration: 500\n" +
+                    "\tbottomSheetWorkspaceScale: 0.97\n" +
+                    "\tbottomSheetDepth: 0.0\n" +
+                    "\tallAppsShiftRange: 1810.0px (905.0dp)\n" +
+                    "\tallAppsTopPadding: 750.0px (375.0dp)\n" +
+                    "\tallAppsOpenDuration: 500\n" +
+                    "\tallAppsCloseDuration: 500\n" +
+                    "\tallAppsIconSizePx: 120.0px (60.0dp)\n" +
+                    "\tallAppsIconTextSizePx: 28.0px (14.0dp)\n" +
+                    "\tallAppsIconDrawablePaddingPx: 14.0px (7.0dp)\n" +
+                    "\tallAppsCellHeightPx: 316.0px (158.0dp)\n" +
+                    "\tallAppsCellWidthPx: 192.0px (96.0dp)\n" +
+                    "\tallAppsBorderSpacePxX: 16.0px (8.0dp)\n" +
+                    "\tallAppsBorderSpacePxY: 32.0px (16.0dp)\n" +
+                    "\tnumShownAllAppsColumns: 6\n" +
+                    "\tallAppsLeftRightPadding: 32.0px (16.0dp)\n" +
+                    "\tallAppsLeftRightMargin: 152.0px (76.0dp)\n" +
+                    "\thotseatBarSizePx: 272.0px (136.0dp)\n" +
+                    "\tinv.hotseatColumnSpan: 6\n" +
+                    "\thotseatCellHeightPx: 135.0px (67.5dp)\n" +
+                    "\thotseatBarBottomSpacePx: 152.0px (76.0dp)\n" +
+                    "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbSpace: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbHeight: 0.0px (0.0dp)\n" +
+                    "\tspringLoadedHotseatBarTopMarginPx: 216.0px (108.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).top: 0.0px (0.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).bottom: 137.0px (68.5dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).left: 150.0px (75.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).right: 150.0px (75.0dp)\n" +
+                    "\tnumShownHotseatIcons: 6\n" +
+                    "\thotseatBorderSpace: 116.0px (58.0dp)\n" +
+                    "\tisQsbInline: false\n" +
+                    "\thotseatQsbWidth: 1300.0px (650.0dp)\n" +
+                    "\tisTaskbarPresent:false\n" +
+                    "\tisTaskbarPresentInApps:true\n" +
+                    "\ttaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\tstashedTaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\ttaskbarBottomMargin: 0.0px (0.0dp)\n" +
+                    "\ttaskbarIconSize: 0.0px (0.0dp)\n" +
+                    "\tdesiredWorkspaceHorizontalMarginPx: 108.0px (54.0dp)\n" +
+                    "\tworkspacePadding.left: 36.0px (18.0dp)\n" +
+                    "\tworkspacePadding.top: 132.0px (66.0dp)\n" +
+                    "\tworkspacePadding.right: 36.0px (18.0dp)\n" +
+                    "\tworkspacePadding.bottom: 468.0px (234.0dp)\n" +
+                    "\ticonScale: 1.0px (0.5dp)\n" +
+                    "\tcellScaleToFit : 1.0px (0.5dp)\n" +
+                    "\textraSpace: 424.0px (212.0dp)\n" +
+                    "\tunscaled extraSpace: 424.0px (212.0dp)\n" +
+                    "\tmaxEmptySpace: 19998.0px (9999.0dp)\n" +
+                    "\tworkspaceTopPadding: 204.0px (102.0dp)\n" +
+                    "\tworkspaceBottomPadding: 220.0px (110.0dp)\n" +
+                    "\toverviewTaskMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizeGridPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskThumbnailTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsHeight: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsClaimedSpaceBelow: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsButtonSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewPageSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewRowSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewGridSideMargin: 0.0px (0.0dp)\n" +
+                    "\tdropTargetBarTopMarginPx: 220.0px (110.0dp)\n" +
+                    "\tdropTargetBarSizePx: 144.0px (72.0dp)\n" +
+                    "\tdropTargetBarBottomMarginPx: 96.0px (48.0dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkTop(): 564.0px (282.0dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkBottom(): 2072.0px (1036.0dp)\n" +
+                    "\tworkspaceSpringLoadedMinNextPageVisiblePx: 48.0px (24.0dp)\n" +
+                    "\tgetWorkspaceSpringLoadScale(): 0.8125px (0.40625dp)\n" +
+                    "\tgetCellLayoutHeight(): 1856.0px (928.0dp)\n" +
+                    "\tgetCellLayoutWidth(): 1528.0px (764.0dp)\n"
+            )
+    }
+
+    @Test
+    fun tabletPortrait() {
+        initializeVarsForTablet(deviceSpecs["tablet"]!!)
+        val dp = getDeviceProfileForGrid("6_by_5")
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dump(dp))
+            .isEqualTo(
+                "DeviceProfile:\n" +
+                    "\t1 dp = 2.0 px\n" +
+                    "\tisTablet:true\n" +
+                    "\tisPhone:false\n" +
+                    "\ttransposeLayoutWithOrientation:false\n" +
+                    "\tisGestureMode:true\n" +
+                    "\tisLandscape:false\n" +
+                    "\tisMultiWindowMode:false\n" +
+                    "\tisTwoPanels:false\n" +
+                    "\twindowX: 0.0px (0.0dp)\n" +
+                    "\twindowY: 0.0px (0.0dp)\n" +
+                    "\twidthPx: 1600.0px (800.0dp)\n" +
+                    "\theightPx: 2560.0px (1280.0dp)\n" +
+                    "\tavailableWidthPx: 1600.0px (800.0dp)\n" +
+                    "\tavailableHeightPx: 2456.0px (1228.0dp)\n" +
+                    "\tmInsets.left: 0.0px (0.0dp)\n" +
+                    "\tmInsets.top: 104.0px (52.0dp)\n" +
+                    "\tmInsets.right: 0.0px (0.0dp)\n" +
+                    "\tmInsets.bottom: 0.0px (0.0dp)\n" +
+                    "\taspectRatio:1.6\n" +
+                    "\tisResponsiveGrid:false\n" +
+                    "\tisScalableGrid:true\n" +
+                    "\tinv.numRows: 5\n" +
+                    "\tinv.numColumns: 6\n" +
+                    "\tinv.numSearchContainerColumns: 3\n" +
+                    "\tminCellSize: PointF(102.0, 120.0)dp\n" +
+                    "\tcellWidthPx: 204.0px (102.0dp)\n" +
+                    "\tcellHeightPx: 240.0px (120.0dp)\n" +
+                    "\tgetCellSize().x: 204.0px (102.0dp)\n" +
+                    "\tgetCellSize().y: 240.0px (120.0dp)\n" +
+                    "\tcellLayoutBorderSpacePx Horizontal: 32.0px (16.0dp)\n" +
+                    "\tcellLayoutBorderSpacePx Vertical: 128.0px (64.0dp)\n" +
+                    "\tcellLayoutPaddingPx.left: 72.0px (36.0dp)\n" +
+                    "\tcellLayoutPaddingPx.top: 72.0px (36.0dp)\n" +
+                    "\tcellLayoutPaddingPx.right: 72.0px (36.0dp)\n" +
+                    "\tcellLayoutPaddingPx.bottom: 72.0px (36.0dp)\n" +
+                    "\ticonSizePx: 120.0px (60.0dp)\n" +
+                    "\ticonTextSizePx: 28.0px (14.0dp)\n" +
+                    "\ticonDrawablePaddingPx: 14.0px (7.0dp)\n" +
+                    "\tinv.numFolderRows: 3\n" +
+                    "\tinv.numFolderColumns: 3\n" +
+                    "\tfolderCellWidthPx: 204.0px (102.0dp)\n" +
+                    "\tfolderCellHeightPx: 240.0px (120.0dp)\n" +
+                    "\tfolderChildIconSizePx: 120.0px (60.0dp)\n" +
+                    "\tfolderChildTextSizePx: 28.0px (14.0dp)\n" +
+                    "\tfolderChildDrawablePaddingPx: 27.0px (13.5dp)\n" +
+                    "\tfolderCellLayoutBorderSpacePx: 0.0px (0.0dp)\n" +
+                    "\tfolderContentPaddingLeftRight: 0.0px (0.0dp)\n" +
+                    "\tfolderTopPadding: 48.0px (24.0dp)\n" +
+                    "\tfolderFooterHeight: 112.0px (56.0dp)\n" +
+                    "\tbottomSheetTopPadding: 704.0px (352.0dp)\n" +
+                    "\tbottomSheetOpenDuration: 500\n" +
+                    "\tbottomSheetCloseDuration: 500\n" +
+                    "\tbottomSheetWorkspaceScale: 0.97\n" +
+                    "\tbottomSheetDepth: 0.0\n" +
+                    "\tallAppsShiftRange: 1810.0px (905.0dp)\n" +
+                    "\tallAppsTopPadding: 750.0px (375.0dp)\n" +
+                    "\tallAppsOpenDuration: 500\n" +
+                    "\tallAppsCloseDuration: 500\n" +
+                    "\tallAppsIconSizePx: 120.0px (60.0dp)\n" +
+                    "\tallAppsIconTextSizePx: 28.0px (14.0dp)\n" +
+                    "\tallAppsIconDrawablePaddingPx: 14.0px (7.0dp)\n" +
+                    "\tallAppsCellHeightPx: 316.0px (158.0dp)\n" +
+                    "\tallAppsCellWidthPx: 192.0px (96.0dp)\n" +
+                    "\tallAppsBorderSpacePxX: 16.0px (8.0dp)\n" +
+                    "\tallAppsBorderSpacePxY: 32.0px (16.0dp)\n" +
+                    "\tnumShownAllAppsColumns: 6\n" +
+                    "\tallAppsLeftRightPadding: 32.0px (16.0dp)\n" +
+                    "\tallAppsLeftRightMargin: 152.0px (76.0dp)\n" +
+                    "\thotseatBarSizePx: 272.0px (136.0dp)\n" +
+                    "\tinv.hotseatColumnSpan: 6\n" +
+                    "\thotseatCellHeightPx: 135.0px (67.5dp)\n" +
+                    "\thotseatBarBottomSpacePx: 152.0px (76.0dp)\n" +
+                    "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbSpace: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbHeight: 0.0px (0.0dp)\n" +
+                    "\tspringLoadedHotseatBarTopMarginPx: 216.0px (108.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).top: 0.0px (0.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).bottom: 137.0px (68.5dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).left: 150.0px (75.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).right: 150.0px (75.0dp)\n" +
+                    "\tnumShownHotseatIcons: 6\n" +
+                    "\thotseatBorderSpace: 116.0px (58.0dp)\n" +
+                    "\tisQsbInline: false\n" +
+                    "\thotseatQsbWidth: 1300.0px (650.0dp)\n" +
+                    "\tisTaskbarPresent:false\n" +
+                    "\tisTaskbarPresentInApps:true\n" +
+                    "\ttaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\tstashedTaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\ttaskbarBottomMargin: 0.0px (0.0dp)\n" +
+                    "\ttaskbarIconSize: 0.0px (0.0dp)\n" +
+                    "\tdesiredWorkspaceHorizontalMarginPx: 108.0px (54.0dp)\n" +
+                    "\tworkspacePadding.left: 36.0px (18.0dp)\n" +
+                    "\tworkspacePadding.top: 132.0px (66.0dp)\n" +
+                    "\tworkspacePadding.right: 36.0px (18.0dp)\n" +
+                    "\tworkspacePadding.bottom: 468.0px (234.0dp)\n" +
+                    "\ticonScale: 1.0px (0.5dp)\n" +
+                    "\tcellScaleToFit : 1.0px (0.5dp)\n" +
+                    "\textraSpace: 424.0px (212.0dp)\n" +
+                    "\tunscaled extraSpace: 424.0px (212.0dp)\n" +
+                    "\tmaxEmptySpace: 19998.0px (9999.0dp)\n" +
+                    "\tworkspaceTopPadding: 204.0px (102.0dp)\n" +
+                    "\tworkspaceBottomPadding: 220.0px (110.0dp)\n" +
+                    "\toverviewTaskMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizeGridPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskThumbnailTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsHeight: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsClaimedSpaceBelow: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsButtonSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewPageSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewRowSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewGridSideMargin: 0.0px (0.0dp)\n" +
+                    "\tdropTargetBarTopMarginPx: 220.0px (110.0dp)\n" +
+                    "\tdropTargetBarSizePx: 144.0px (72.0dp)\n" +
+                    "\tdropTargetBarBottomMarginPx: 96.0px (48.0dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkTop(): 564.0px (282.0dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkBottom(): 2072.0px (1036.0dp)\n" +
+                    "\tworkspaceSpringLoadedMinNextPageVisiblePx: 48.0px (24.0dp)\n" +
+                    "\tgetWorkspaceSpringLoadScale(): 0.8125px (0.40625dp)\n" +
+                    "\tgetCellLayoutHeight(): 1856.0px (928.0dp)\n" +
+                    "\tgetCellLayoutWidth(): 1528.0px (764.0dp)\n"
+            )
+    }
+
+    @Test
+    fun twoPanelLandscape3Button() {
+        initializeVarsForTwoPanel(
+            deviceSpecs["twopanel-tablet"]!!,
+            deviceSpecs["twopanel-phone"]!!,
+            isLandscape = true,
+            isGestureMode = false
+        )
+        val dp = getDeviceProfileForGrid("4_by_4")
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dump(dp))
+            .isEqualTo(
+                "DeviceProfile:\n" +
+                    "\t1 dp = 2.625 px\n" +
+                    "\tisTablet:true\n" +
+                    "\tisPhone:false\n" +
+                    "\ttransposeLayoutWithOrientation:false\n" +
+                    "\tisGestureMode:false\n" +
+                    "\tisLandscape:true\n" +
+                    "\tisMultiWindowMode:false\n" +
+                    "\tisTwoPanels:true\n" +
+                    "\twindowX: 0.0px (0.0dp)\n" +
+                    "\twindowY: 0.0px (0.0dp)\n" +
+                    "\twidthPx: 2208.0px (841.1429dp)\n" +
+                    "\theightPx: 1840.0px (700.9524dp)\n" +
+                    "\tavailableWidthPx: 2208.0px (841.1429dp)\n" +
+                    "\tavailableHeightPx: 1730.0px (659.0476dp)\n" +
+                    "\tmInsets.left: 0.0px (0.0dp)\n" +
+                    "\tmInsets.top: 110.0px (41.904762dp)\n" +
+                    "\tmInsets.right: 0.0px (0.0dp)\n" +
+                    "\tmInsets.bottom: 0.0px (0.0dp)\n" +
+                    "\taspectRatio:1.2\n" +
+                    "\tisResponsiveGrid:false\n" +
+                    "\tisScalableGrid:false\n" +
+                    "\tinv.numRows: 4\n" +
+                    "\tinv.numColumns: 4\n" +
+                    "\tinv.numSearchContainerColumns: 4\n" +
+                    "\tminCellSize: PointF(0.0, 0.0)dp\n" +
+                    "\tcellWidthPx: 159.0px (60.57143dp)\n" +
+                    "\tcellHeightPx: 223.0px (84.95238dp)\n" +
+                    "\tgetCellSize().x: 270.0px (102.85714dp)\n" +
+                    "\tgetCellSize().y: 342.0px (130.28572dp)\n" +
+                    "\tcellLayoutBorderSpacePx Horizontal: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutBorderSpacePx Vertical: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.left: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.top: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.right: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.bottom: 0.0px (0.0dp)\n" +
+                    "\ticonSizePx: 141.0px (53.714287dp)\n" +
+                    "\ticonTextSizePx: 34.0px (12.952381dp)\n" +
+                    "\ticonDrawablePaddingPx: 18.0px (6.857143dp)\n" +
+                    "\tinv.numFolderRows: 3\n" +
+                    "\tinv.numFolderColumns: 4\n" +
+                    "\tfolderCellWidthPx: 189.0px (72.0dp)\n" +
+                    "\tfolderCellHeightPx: 219.0px (83.42857dp)\n" +
+                    "\tfolderChildIconSizePx: 141.0px (53.714287dp)\n" +
+                    "\tfolderChildTextSizePx: 34.0px (12.952381dp)\n" +
+                    "\tfolderChildDrawablePaddingPx: 10.0px (3.8095238dp)\n" +
+                    "\tfolderCellLayoutBorderSpacePx: 0.0px (0.0dp)\n" +
+                    "\tfolderContentPaddingLeftRight: 21.0px (8.0dp)\n" +
+                    "\tfolderTopPadding: 63.0px (24.0dp)\n" +
+                    "\tfolderFooterHeight: 147.0px (56.0dp)\n" +
+                    "\tbottomSheetTopPadding: 110.0px (41.904762dp)\n" +
+                    "\tbottomSheetOpenDuration: 500\n" +
+                    "\tbottomSheetCloseDuration: 500\n" +
+                    "\tbottomSheetWorkspaceScale: 0.97\n" +
+                    "\tbottomSheetDepth: 1.0\n" +
+                    "\tallAppsShiftRange: 1730.0px (659.0476dp)\n" +
+                    "\tallAppsTopPadding: 110.0px (41.904762dp)\n" +
+                    "\tallAppsOpenDuration: 500\n" +
+                    "\tallAppsCloseDuration: 500\n" +
+                    "\tallAppsIconSizePx: 141.0px (53.714287dp)\n" +
+                    "\tallAppsIconTextSizePx: 34.0px (12.952381dp)\n" +
+                    "\tallAppsIconDrawablePaddingPx: 21.0px (8.0dp)\n" +
+                    "\tallAppsCellHeightPx: 315.0px (120.0dp)\n" +
+                    "\tallAppsCellWidthPx: 183.0px (69.71429dp)\n" +
+                    "\tallAppsBorderSpacePxX: 42.0px (16.0dp)\n" +
+                    "\tallAppsBorderSpacePxY: 42.0px (16.0dp)\n" +
+                    "\tnumShownAllAppsColumns: 8\n" +
+                    "\tallAppsLeftRightPadding: 42.0px (16.0dp)\n" +
+                    "\tallAppsLeftRightMargin: 183.0px (69.71429dp)\n" +
+                    "\thotseatBarSizePx: 267.0px (101.71429dp)\n" +
+                    "\tinv.hotseatColumnSpan: 4\n" +
+                    "\thotseatCellHeightPx: 159.0px (60.57143dp)\n" +
+                    "\thotseatBarBottomSpacePx: 126.0px (48.0dp)\n" +
+                    "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbSpace: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbHeight: 0.0px (0.0dp)\n" +
+                    "\tspringLoadedHotseatBarTopMarginPx: 116.0px (44.190475dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).top: 0.0px (0.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).bottom: 108.0px (41.142857dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).left: 113.0px (43.04762dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).right: 113.0px (43.04762dp)\n" +
+                    "\tnumShownHotseatIcons: 6\n" +
+                    "\thotseatBorderSpace: 0.0px (0.0dp)\n" +
+                    "\tisQsbInline: false\n" +
+                    "\thotseatQsbWidth: 0.0px (0.0dp)\n" +
+                    "\tisTaskbarPresent:false\n" +
+                    "\tisTaskbarPresentInApps:true\n" +
+                    "\ttaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\tstashedTaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\ttaskbarBottomMargin: 0.0px (0.0dp)\n" +
+                    "\ttaskbarIconSize: 0.0px (0.0dp)\n" +
+                    "\tdesiredWorkspaceHorizontalMarginPx: 21.0px (8.0dp)\n" +
+                    "\tworkspacePadding.left: 21.0px (8.0dp)\n" +
+                    "\tworkspacePadding.top: 30.0px (11.428572dp)\n" +
+                    "\tworkspacePadding.right: 21.0px (8.0dp)\n" +
+                    "\tworkspacePadding.bottom: 330.0px (125.71429dp)\n" +
+                    "\ticonScale: 1.0px (0.3809524dp)\n" +
+                    "\tcellScaleToFit : 1.0px (0.3809524dp)\n" +
+                    "\textraSpace: 478.0px (182.09525dp)\n" +
+                    "\tunscaled extraSpace: 478.0px (182.09525dp)\n" +
+                    "\tmaxEmptySpace: 0.0px (0.0dp)\n" +
+                    "\tworkspaceTopPadding: 0.0px (0.0dp)\n" +
+                    "\tworkspaceBottomPadding: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizeGridPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskThumbnailTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsHeight: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsClaimedSpaceBelow: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsButtonSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewPageSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewRowSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewGridSideMargin: 0.0px (0.0dp)\n" +
+                    "\tdropTargetBarTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\tdropTargetBarSizePx: 147.0px (56.0dp)\n" +
+                    "\tdropTargetBarBottomMarginPx: 42.0px (16.0dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkTop(): 299.0px (113.90476dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkBottom(): 1457.0px (555.0476dp)\n" +
+                    "\tworkspaceSpringLoadedMinNextPageVisiblePx: 63.0px (24.0dp)\n" +
+                    "\tgetWorkspaceSpringLoadScale(): 0.8452555px (0.32200208dp)\n" +
+                    "\tgetCellLayoutHeight(): 1370.0px (521.9048dp)\n" +
+                    "\tgetCellLayoutWidth(): 1083.0px (412.57144dp)\n"
+            )
+    }
+
+    @Test
+    fun twoPanelLandscape() {
+        initializeVarsForTwoPanel(
+            deviceSpecs["twopanel-tablet"]!!,
+            deviceSpecs["twopanel-phone"]!!,
+            isLandscape = true
+        )
+        val dp = getDeviceProfileForGrid("4_by_4")
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dump(dp))
+            .isEqualTo(
+                "DeviceProfile:\n" +
+                    "\t1 dp = 2.625 px\n" +
+                    "\tisTablet:true\n" +
+                    "\tisPhone:false\n" +
+                    "\ttransposeLayoutWithOrientation:false\n" +
+                    "\tisGestureMode:true\n" +
+                    "\tisLandscape:true\n" +
+                    "\tisMultiWindowMode:false\n" +
+                    "\tisTwoPanels:true\n" +
+                    "\twindowX: 0.0px (0.0dp)\n" +
+                    "\twindowY: 0.0px (0.0dp)\n" +
+                    "\twidthPx: 2208.0px (841.1429dp)\n" +
+                    "\theightPx: 1840.0px (700.9524dp)\n" +
+                    "\tavailableWidthPx: 2208.0px (841.1429dp)\n" +
+                    "\tavailableHeightPx: 1730.0px (659.0476dp)\n" +
+                    "\tmInsets.left: 0.0px (0.0dp)\n" +
+                    "\tmInsets.top: 110.0px (41.904762dp)\n" +
+                    "\tmInsets.right: 0.0px (0.0dp)\n" +
+                    "\tmInsets.bottom: 0.0px (0.0dp)\n" +
+                    "\taspectRatio:1.2\n" +
+                    "\tisResponsiveGrid:false\n" +
+                    "\tisScalableGrid:false\n" +
+                    "\tinv.numRows: 4\n" +
+                    "\tinv.numColumns: 4\n" +
+                    "\tinv.numSearchContainerColumns: 4\n" +
+                    "\tminCellSize: PointF(0.0, 0.0)dp\n" +
+                    "\tcellWidthPx: 159.0px (60.57143dp)\n" +
+                    "\tcellHeightPx: 223.0px (84.95238dp)\n" +
+                    "\tgetCellSize().x: 270.0px (102.85714dp)\n" +
+                    "\tgetCellSize().y: 342.0px (130.28572dp)\n" +
+                    "\tcellLayoutBorderSpacePx Horizontal: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutBorderSpacePx Vertical: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.left: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.top: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.right: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.bottom: 0.0px (0.0dp)\n" +
+                    "\ticonSizePx: 141.0px (53.714287dp)\n" +
+                    "\ticonTextSizePx: 34.0px (12.952381dp)\n" +
+                    "\ticonDrawablePaddingPx: 18.0px (6.857143dp)\n" +
+                    "\tinv.numFolderRows: 3\n" +
+                    "\tinv.numFolderColumns: 4\n" +
+                    "\tfolderCellWidthPx: 189.0px (72.0dp)\n" +
+                    "\tfolderCellHeightPx: 219.0px (83.42857dp)\n" +
+                    "\tfolderChildIconSizePx: 141.0px (53.714287dp)\n" +
+                    "\tfolderChildTextSizePx: 34.0px (12.952381dp)\n" +
+                    "\tfolderChildDrawablePaddingPx: 10.0px (3.8095238dp)\n" +
+                    "\tfolderCellLayoutBorderSpacePx: 0.0px (0.0dp)\n" +
+                    "\tfolderContentPaddingLeftRight: 21.0px (8.0dp)\n" +
+                    "\tfolderTopPadding: 63.0px (24.0dp)\n" +
+                    "\tfolderFooterHeight: 147.0px (56.0dp)\n" +
+                    "\tbottomSheetTopPadding: 110.0px (41.904762dp)\n" +
+                    "\tbottomSheetOpenDuration: 500\n" +
+                    "\tbottomSheetCloseDuration: 500\n" +
+                    "\tbottomSheetWorkspaceScale: 0.97\n" +
+                    "\tbottomSheetDepth: 1.0\n" +
+                    "\tallAppsShiftRange: 1730.0px (659.0476dp)\n" +
+                    "\tallAppsTopPadding: 110.0px (41.904762dp)\n" +
+                    "\tallAppsOpenDuration: 500\n" +
+                    "\tallAppsCloseDuration: 500\n" +
+                    "\tallAppsIconSizePx: 141.0px (53.714287dp)\n" +
+                    "\tallAppsIconTextSizePx: 34.0px (12.952381dp)\n" +
+                    "\tallAppsIconDrawablePaddingPx: 21.0px (8.0dp)\n" +
+                    "\tallAppsCellHeightPx: 315.0px (120.0dp)\n" +
+                    "\tallAppsCellWidthPx: 183.0px (69.71429dp)\n" +
+                    "\tallAppsBorderSpacePxX: 42.0px (16.0dp)\n" +
+                    "\tallAppsBorderSpacePxY: 42.0px (16.0dp)\n" +
+                    "\tnumShownAllAppsColumns: 8\n" +
+                    "\tallAppsLeftRightPadding: 42.0px (16.0dp)\n" +
+                    "\tallAppsLeftRightMargin: 183.0px (69.71429dp)\n" +
+                    "\thotseatBarSizePx: 267.0px (101.71429dp)\n" +
+                    "\tinv.hotseatColumnSpan: 4\n" +
+                    "\thotseatCellHeightPx: 159.0px (60.57143dp)\n" +
+                    "\thotseatBarBottomSpacePx: 126.0px (48.0dp)\n" +
+                    "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbSpace: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbHeight: 0.0px (0.0dp)\n" +
+                    "\tspringLoadedHotseatBarTopMarginPx: 116.0px (44.190475dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).top: 0.0px (0.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).bottom: 108.0px (41.142857dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).left: 113.0px (43.04762dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).right: 113.0px (43.04762dp)\n" +
+                    "\tnumShownHotseatIcons: 6\n" +
+                    "\thotseatBorderSpace: 0.0px (0.0dp)\n" +
+                    "\tisQsbInline: false\n" +
+                    "\thotseatQsbWidth: 0.0px (0.0dp)\n" +
+                    "\tisTaskbarPresent:false\n" +
+                    "\tisTaskbarPresentInApps:true\n" +
+                    "\ttaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\tstashedTaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\ttaskbarBottomMargin: 0.0px (0.0dp)\n" +
+                    "\ttaskbarIconSize: 0.0px (0.0dp)\n" +
+                    "\tdesiredWorkspaceHorizontalMarginPx: 21.0px (8.0dp)\n" +
+                    "\tworkspacePadding.left: 21.0px (8.0dp)\n" +
+                    "\tworkspacePadding.top: 30.0px (11.428572dp)\n" +
+                    "\tworkspacePadding.right: 21.0px (8.0dp)\n" +
+                    "\tworkspacePadding.bottom: 330.0px (125.71429dp)\n" +
+                    "\ticonScale: 1.0px (0.3809524dp)\n" +
+                    "\tcellScaleToFit : 1.0px (0.3809524dp)\n" +
+                    "\textraSpace: 478.0px (182.09525dp)\n" +
+                    "\tunscaled extraSpace: 478.0px (182.09525dp)\n" +
+                    "\tmaxEmptySpace: 0.0px (0.0dp)\n" +
+                    "\tworkspaceTopPadding: 0.0px (0.0dp)\n" +
+                    "\tworkspaceBottomPadding: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizeGridPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskThumbnailTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsHeight: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsClaimedSpaceBelow: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsButtonSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewPageSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewRowSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewGridSideMargin: 0.0px (0.0dp)\n" +
+                    "\tdropTargetBarTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\tdropTargetBarSizePx: 147.0px (56.0dp)\n" +
+                    "\tdropTargetBarBottomMarginPx: 42.0px (16.0dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkTop(): 299.0px (113.90476dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkBottom(): 1457.0px (555.0476dp)\n" +
+                    "\tworkspaceSpringLoadedMinNextPageVisiblePx: 63.0px (24.0dp)\n" +
+                    "\tgetWorkspaceSpringLoadScale(): 0.8452555px (0.32200208dp)\n" +
+                    "\tgetCellLayoutHeight(): 1370.0px (521.9048dp)\n" +
+                    "\tgetCellLayoutWidth(): 1083.0px (412.57144dp)\n"
+            )
+    }
+
+    @Test
+    fun twoPanelPortrait3Button() {
+        initializeVarsForTwoPanel(
+            deviceSpecs["twopanel-tablet"]!!,
+            deviceSpecs["twopanel-phone"]!!,
+            isGestureMode = false
+        )
+        val dp = getDeviceProfileForGrid("4_by_4")
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dump(dp))
+            .isEqualTo(
+                "DeviceProfile:\n" +
+                    "\t1 dp = 2.625 px\n" +
+                    "\tisTablet:true\n" +
+                    "\tisPhone:false\n" +
+                    "\ttransposeLayoutWithOrientation:false\n" +
+                    "\tisGestureMode:false\n" +
+                    "\tisLandscape:false\n" +
+                    "\tisMultiWindowMode:false\n" +
+                    "\tisTwoPanels:true\n" +
+                    "\twindowX: 0.0px (0.0dp)\n" +
+                    "\twindowY: 0.0px (0.0dp)\n" +
+                    "\twidthPx: 1840.0px (700.9524dp)\n" +
+                    "\theightPx: 2208.0px (841.1429dp)\n" +
+                    "\tavailableWidthPx: 1840.0px (700.9524dp)\n" +
+                    "\tavailableHeightPx: 2075.0px (790.4762dp)\n" +
+                    "\tmInsets.left: 0.0px (0.0dp)\n" +
+                    "\tmInsets.top: 133.0px (50.666668dp)\n" +
+                    "\tmInsets.right: 0.0px (0.0dp)\n" +
+                    "\tmInsets.bottom: 0.0px (0.0dp)\n" +
+                    "\taspectRatio:1.2\n" +
+                    "\tisResponsiveGrid:false\n" +
+                    "\tisScalableGrid:false\n" +
+                    "\tinv.numRows: 4\n" +
+                    "\tinv.numColumns: 4\n" +
+                    "\tinv.numSearchContainerColumns: 4\n" +
+                    "\tminCellSize: PointF(0.0, 0.0)dp\n" +
+                    "\tcellWidthPx: 159.0px (60.57143dp)\n" +
+                    "\tcellHeightPx: 223.0px (84.95238dp)\n" +
+                    "\tgetCellSize().x: 224.0px (85.333336dp)\n" +
+                    "\tgetCellSize().y: 430.0px (163.80952dp)\n" +
+                    "\tcellLayoutBorderSpacePx Horizontal: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutBorderSpacePx Vertical: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.left: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.top: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.right: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.bottom: 0.0px (0.0dp)\n" +
+                    "\ticonSizePx: 141.0px (53.714287dp)\n" +
+                    "\ticonTextSizePx: 34.0px (12.952381dp)\n" +
+                    "\ticonDrawablePaddingPx: 18.0px (6.857143dp)\n" +
+                    "\tinv.numFolderRows: 3\n" +
+                    "\tinv.numFolderColumns: 4\n" +
+                    "\tfolderCellWidthPx: 189.0px (72.0dp)\n" +
+                    "\tfolderCellHeightPx: 219.0px (83.42857dp)\n" +
+                    "\tfolderChildIconSizePx: 141.0px (53.714287dp)\n" +
+                    "\tfolderChildTextSizePx: 34.0px (12.952381dp)\n" +
+                    "\tfolderChildDrawablePaddingPx: 10.0px (3.8095238dp)\n" +
+                    "\tfolderCellLayoutBorderSpacePx: 0.0px (0.0dp)\n" +
+                    "\tfolderContentPaddingLeftRight: 21.0px (8.0dp)\n" +
+                    "\tfolderTopPadding: 63.0px (24.0dp)\n" +
+                    "\tfolderFooterHeight: 147.0px (56.0dp)\n" +
+                    "\tbottomSheetTopPadding: 133.0px (50.666668dp)\n" +
+                    "\tbottomSheetOpenDuration: 500\n" +
+                    "\tbottomSheetCloseDuration: 500\n" +
+                    "\tbottomSheetWorkspaceScale: 0.97\n" +
+                    "\tbottomSheetDepth: 1.0\n" +
+                    "\tallAppsShiftRange: 1826.0px (695.619dp)\n" +
+                    "\tallAppsTopPadding: 382.0px (145.5238dp)\n" +
+                    "\tallAppsOpenDuration: 500\n" +
+                    "\tallAppsCloseDuration: 500\n" +
+                    "\tallAppsIconSizePx: 141.0px (53.714287dp)\n" +
+                    "\tallAppsIconTextSizePx: 34.0px (12.952381dp)\n" +
+                    "\tallAppsIconDrawablePaddingPx: 21.0px (8.0dp)\n" +
+                    "\tallAppsCellHeightPx: 315.0px (120.0dp)\n" +
+                    "\tallAppsCellWidthPx: 183.0px (69.71429dp)\n" +
+                    "\tallAppsBorderSpacePxX: 42.0px (16.0dp)\n" +
+                    "\tallAppsBorderSpacePxY: 42.0px (16.0dp)\n" +
+                    "\tnumShownAllAppsColumns: 8\n" +
+                    "\tallAppsLeftRightPadding: 42.0px (16.0dp)\n" +
+                    "\tallAppsLeftRightMargin: 1.0px (0.3809524dp)\n" +
+                    "\thotseatBarSizePx: 267.0px (101.71429dp)\n" +
+                    "\tinv.hotseatColumnSpan: 4\n" +
+                    "\thotseatCellHeightPx: 159.0px (60.57143dp)\n" +
+                    "\thotseatBarBottomSpacePx: 126.0px (48.0dp)\n" +
+                    "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbSpace: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbHeight: 0.0px (0.0dp)\n" +
+                    "\tspringLoadedHotseatBarTopMarginPx: 171.0px (65.14286dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).top: 0.0px (0.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).bottom: 108.0px (41.142857dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).left: 98.0px (37.333332dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).right: 98.0px (37.333332dp)\n" +
+                    "\tnumShownHotseatIcons: 6\n" +
+                    "\thotseatBorderSpace: 0.0px (0.0dp)\n" +
+                    "\tisQsbInline: false\n" +
+                    "\thotseatQsbWidth: 0.0px (0.0dp)\n" +
+                    "\tisTaskbarPresent:false\n" +
+                    "\tisTaskbarPresentInApps:true\n" +
+                    "\ttaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\tstashedTaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\ttaskbarBottomMargin: 0.0px (0.0dp)\n" +
+                    "\ttaskbarIconSize: 0.0px (0.0dp)\n" +
+                    "\tdesiredWorkspaceHorizontalMarginPx: 21.0px (8.0dp)\n" +
+                    "\tworkspacePadding.left: 21.0px (8.0dp)\n" +
+                    "\tworkspacePadding.top: 24.0px (9.142858dp)\n" +
+                    "\tworkspacePadding.right: 21.0px (8.0dp)\n" +
+                    "\tworkspacePadding.bottom: 330.0px (125.71429dp)\n" +
+                    "\ticonScale: 1.0px (0.3809524dp)\n" +
+                    "\tcellScaleToFit : 1.0px (0.3809524dp)\n" +
+                    "\textraSpace: 829.0px (315.8095dp)\n" +
+                    "\tunscaled extraSpace: 829.0px (315.8095dp)\n" +
+                    "\tmaxEmptySpace: 0.0px (0.0dp)\n" +
+                    "\tworkspaceTopPadding: 0.0px (0.0dp)\n" +
+                    "\tworkspaceBottomPadding: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizeGridPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskThumbnailTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsHeight: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsClaimedSpaceBelow: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsButtonSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewPageSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewRowSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewGridSideMargin: 0.0px (0.0dp)\n" +
+                    "\tdropTargetBarTopMarginPx: 168.0px (64.0dp)\n" +
+                    "\tdropTargetBarSizePx: 147.0px (56.0dp)\n" +
+                    "\tdropTargetBarBottomMarginPx: 42.0px (16.0dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkTop(): 490.0px (186.66667dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkBottom(): 1770.0px (674.2857dp)\n" +
+                    "\tworkspaceSpringLoadedMinNextPageVisiblePx: 63.0px (24.0dp)\n" +
+                    "\tgetWorkspaceSpringLoadScale(): 0.7437536px (0.2833347dp)\n" +
+                    "\tgetCellLayoutHeight(): 1721.0px (655.619dp)\n" +
+                    "\tgetCellLayoutWidth(): 899.0px (342.4762dp)\n"
+            )
+    }
+
+    @Test
+    fun twoPanelPortrait() {
+        initializeVarsForTwoPanel(deviceSpecs["twopanel-tablet"]!!, deviceSpecs["twopanel-phone"]!!)
+        val dp = getDeviceProfileForGrid("4_by_4")
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dump(dp))
+            .isEqualTo(
+                "DeviceProfile:\n" +
+                    "\t1 dp = 2.625 px\n" +
+                    "\tisTablet:true\n" +
+                    "\tisPhone:false\n" +
+                    "\ttransposeLayoutWithOrientation:false\n" +
+                    "\tisGestureMode:true\n" +
+                    "\tisLandscape:false\n" +
+                    "\tisMultiWindowMode:false\n" +
+                    "\tisTwoPanels:true\n" +
+                    "\twindowX: 0.0px (0.0dp)\n" +
+                    "\twindowY: 0.0px (0.0dp)\n" +
+                    "\twidthPx: 1840.0px (700.9524dp)\n" +
+                    "\theightPx: 2208.0px (841.1429dp)\n" +
+                    "\tavailableWidthPx: 1840.0px (700.9524dp)\n" +
+                    "\tavailableHeightPx: 2075.0px (790.4762dp)\n" +
+                    "\tmInsets.left: 0.0px (0.0dp)\n" +
+                    "\tmInsets.top: 133.0px (50.666668dp)\n" +
+                    "\tmInsets.right: 0.0px (0.0dp)\n" +
+                    "\tmInsets.bottom: 0.0px (0.0dp)\n" +
+                    "\taspectRatio:1.2\n" +
+                    "\tisResponsiveGrid:false\n" +
+                    "\tisScalableGrid:false\n" +
+                    "\tinv.numRows: 4\n" +
+                    "\tinv.numColumns: 4\n" +
+                    "\tinv.numSearchContainerColumns: 4\n" +
+                    "\tminCellSize: PointF(0.0, 0.0)dp\n" +
+                    "\tcellWidthPx: 159.0px (60.57143dp)\n" +
+                    "\tcellHeightPx: 223.0px (84.95238dp)\n" +
+                    "\tgetCellSize().x: 224.0px (85.333336dp)\n" +
+                    "\tgetCellSize().y: 430.0px (163.80952dp)\n" +
+                    "\tcellLayoutBorderSpacePx Horizontal: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutBorderSpacePx Vertical: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.left: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.top: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.right: 0.0px (0.0dp)\n" +
+                    "\tcellLayoutPaddingPx.bottom: 0.0px (0.0dp)\n" +
+                    "\ticonSizePx: 141.0px (53.714287dp)\n" +
+                    "\ticonTextSizePx: 34.0px (12.952381dp)\n" +
+                    "\ticonDrawablePaddingPx: 18.0px (6.857143dp)\n" +
+                    "\tinv.numFolderRows: 3\n" +
+                    "\tinv.numFolderColumns: 4\n" +
+                    "\tfolderCellWidthPx: 189.0px (72.0dp)\n" +
+                    "\tfolderCellHeightPx: 219.0px (83.42857dp)\n" +
+                    "\tfolderChildIconSizePx: 141.0px (53.714287dp)\n" +
+                    "\tfolderChildTextSizePx: 34.0px (12.952381dp)\n" +
+                    "\tfolderChildDrawablePaddingPx: 10.0px (3.8095238dp)\n" +
+                    "\tfolderCellLayoutBorderSpacePx: 0.0px (0.0dp)\n" +
+                    "\tfolderContentPaddingLeftRight: 21.0px (8.0dp)\n" +
+                    "\tfolderTopPadding: 63.0px (24.0dp)\n" +
+                    "\tfolderFooterHeight: 147.0px (56.0dp)\n" +
+                    "\tbottomSheetTopPadding: 133.0px (50.666668dp)\n" +
+                    "\tbottomSheetOpenDuration: 500\n" +
+                    "\tbottomSheetCloseDuration: 500\n" +
+                    "\tbottomSheetWorkspaceScale: 0.97\n" +
+                    "\tbottomSheetDepth: 1.0\n" +
+                    "\tallAppsShiftRange: 1826.0px (695.619dp)\n" +
+                    "\tallAppsTopPadding: 382.0px (145.5238dp)\n" +
+                    "\tallAppsOpenDuration: 500\n" +
+                    "\tallAppsCloseDuration: 500\n" +
+                    "\tallAppsIconSizePx: 141.0px (53.714287dp)\n" +
+                    "\tallAppsIconTextSizePx: 34.0px (12.952381dp)\n" +
+                    "\tallAppsIconDrawablePaddingPx: 21.0px (8.0dp)\n" +
+                    "\tallAppsCellHeightPx: 315.0px (120.0dp)\n" +
+                    "\tallAppsCellWidthPx: 183.0px (69.71429dp)\n" +
+                    "\tallAppsBorderSpacePxX: 42.0px (16.0dp)\n" +
+                    "\tallAppsBorderSpacePxY: 42.0px (16.0dp)\n" +
+                    "\tnumShownAllAppsColumns: 8\n" +
+                    "\tallAppsLeftRightPadding: 42.0px (16.0dp)\n" +
+                    "\tallAppsLeftRightMargin: 1.0px (0.3809524dp)\n" +
+                    "\thotseatBarSizePx: 267.0px (101.71429dp)\n" +
+                    "\tinv.hotseatColumnSpan: 4\n" +
+                    "\thotseatCellHeightPx: 159.0px (60.57143dp)\n" +
+                    "\thotseatBarBottomSpacePx: 126.0px (48.0dp)\n" +
+                    "\thotseatBarSidePaddingStartPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarSidePaddingEndPx: 0.0px (0.0dp)\n" +
+                    "\thotseatBarEndOffset: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbSpace: 0.0px (0.0dp)\n" +
+                    "\thotseatQsbHeight: 0.0px (0.0dp)\n" +
+                    "\tspringLoadedHotseatBarTopMarginPx: 171.0px (65.14286dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).top: 0.0px (0.0dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).bottom: 108.0px (41.142857dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).left: 98.0px (37.333332dp)\n" +
+                    "\tgetHotseatLayoutPadding(context).right: 98.0px (37.333332dp)\n" +
+                    "\tnumShownHotseatIcons: 6\n" +
+                    "\thotseatBorderSpace: 0.0px (0.0dp)\n" +
+                    "\tisQsbInline: false\n" +
+                    "\thotseatQsbWidth: 0.0px (0.0dp)\n" +
+                    "\tisTaskbarPresent:false\n" +
+                    "\tisTaskbarPresentInApps:true\n" +
+                    "\ttaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\tstashedTaskbarHeight: 0.0px (0.0dp)\n" +
+                    "\ttaskbarBottomMargin: 0.0px (0.0dp)\n" +
+                    "\ttaskbarIconSize: 0.0px (0.0dp)\n" +
+                    "\tdesiredWorkspaceHorizontalMarginPx: 21.0px (8.0dp)\n" +
+                    "\tworkspacePadding.left: 21.0px (8.0dp)\n" +
+                    "\tworkspacePadding.top: 24.0px (9.142858dp)\n" +
+                    "\tworkspacePadding.right: 21.0px (8.0dp)\n" +
+                    "\tworkspacePadding.bottom: 330.0px (125.71429dp)\n" +
+                    "\ticonScale: 1.0px (0.3809524dp)\n" +
+                    "\tcellScaleToFit : 1.0px (0.3809524dp)\n" +
+                    "\textraSpace: 829.0px (315.8095dp)\n" +
+                    "\tunscaled extraSpace: 829.0px (315.8095dp)\n" +
+                    "\tmaxEmptySpace: 0.0px (0.0dp)\n" +
+                    "\tworkspaceTopPadding: 0.0px (0.0dp)\n" +
+                    "\tworkspaceBottomPadding: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizePx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskIconDrawableSizeGridPx: 0.0px (0.0dp)\n" +
+                    "\toverviewTaskThumbnailTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsTopMarginPx: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsHeight: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsClaimedSpaceBelow: 0.0px (0.0dp)\n" +
+                    "\toverviewActionsButtonSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewPageSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewRowSpacing: 0.0px (0.0dp)\n" +
+                    "\toverviewGridSideMargin: 0.0px (0.0dp)\n" +
+                    "\tdropTargetBarTopMarginPx: 168.0px (64.0dp)\n" +
+                    "\tdropTargetBarSizePx: 147.0px (56.0dp)\n" +
+                    "\tdropTargetBarBottomMarginPx: 42.0px (16.0dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkTop(): 490.0px (186.66667dp)\n" +
+                    "\tgetCellLayoutSpringLoadShrunkBottom(): 1770.0px (674.2857dp)\n" +
+                    "\tworkspaceSpringLoadedMinNextPageVisiblePx: 63.0px (24.0dp)\n" +
+                    "\tgetWorkspaceSpringLoadScale(): 0.7437536px (0.2833347dp)\n" +
+                    "\tgetCellLayoutHeight(): 1721.0px (655.619dp)\n" +
+                    "\tgetCellLayoutWidth(): 899.0px (342.4762dp)\n"
+            )
+    }
+
+    private fun getDeviceProfileForGrid(gridName: String): DeviceProfile {
+        return InvariantDeviceProfile(context, gridName).getDeviceProfile(context)
+    }
+
+    private fun dump(dp: DeviceProfile): String {
+        val stringWriter = StringWriter()
+        val printWriter = PrintWriter(stringWriter)
+        dp.dump(context, "", printWriter)
+        printWriter.flush()
+        return stringWriter.toString()
+    }
+}
diff --git a/tests/src/com/android/launcher3/nonquickstep/HotseatWidthCalculationTest.kt b/tests/src/com/android/launcher3/nonquickstep/HotseatWidthCalculationTest.kt
new file mode 100644
index 0000000..2a27487
--- /dev/null
+++ b/tests/src/com/android/launcher3/nonquickstep/HotseatWidthCalculationTest.kt
@@ -0,0 +1,161 @@
+/*
+ * 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.launcher3.nonquickstep
+
+import android.graphics.Rect
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.launcher3.FakeInvariantDeviceProfileTest
+import com.android.launcher3.util.WindowBounds
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class HotseatWidthCalculationTest : FakeInvariantDeviceProfileTest() {
+
+    /**
+     * This is a case when after setting the hotseat, the space needs to be recalculated but it
+     * doesn't need to change QSB width or remove icons
+     */
+    @Test
+    fun distribute_border_space_when_space_is_enough_portrait() {
+        initializeVarsForTablet(isGestureMode = false)
+        windowBounds = WindowBounds(Rect(0, 0, 1800, 2560), Rect(0, 104, 0, 0))
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dp.hotseatBarEndOffset).isEqualTo(0)
+        assertThat(dp.numShownHotseatIcons).isEqualTo(6)
+        assertThat(dp.hotseatBorderSpace).isEqualTo(145)
+
+        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(177)
+        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(177)
+
+        assertThat(dp.isQsbInline).isFalse()
+        assertThat(dp.hotseatQsbWidth).isEqualTo(1445)
+    }
+
+    /**
+     * This is a case when after setting the hotseat, and recalculating spaces it still needs to
+     * remove icons for everything to fit
+     */
+    @Test
+    fun decrease_num_of_icons_when_not_enough_space_portrait() {
+        initializeVarsForTablet(isGestureMode = false)
+        windowBounds = WindowBounds(Rect(0, 0, 1300, 2560), Rect(0, 104, 0, 0))
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dp.hotseatBarEndOffset).isEqualTo(0)
+        assertThat(dp.numShownHotseatIcons).isEqualTo(6)
+        assertThat(dp.hotseatBorderSpace).isEqualTo(72)
+
+        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(110)
+        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(110)
+
+        assertThat(dp.isQsbInline).isFalse()
+        assertThat(dp.hotseatQsbWidth).isEqualTo(1080)
+    }
+
+    /**
+     * This is a case when after setting the hotseat, the space needs to be recalculated but it
+     * doesn't need to change QSB width or remove icons
+     */
+    @Test
+    fun distribute_border_space_when_space_is_enough_landscape() {
+        initializeVarsForTwoPanel(isGestureMode = false, isLandscape = true)
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dp.hotseatBarEndOffset).isEqualTo(0)
+        assertThat(dp.numShownHotseatIcons).isEqualTo(6)
+        assertThat(dp.hotseatBorderSpace).isEqualTo(104)
+
+        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(370)
+        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(370)
+
+        assertThat(dp.isQsbInline).isFalse()
+        assertThat(dp.hotseatQsbWidth).isEqualTo(1468)
+    }
+
+    /**
+     * This is a case when the hotseat spans a certain amount of columns and the nav buttons push
+     * the hotseat to the side, but not enough to change the border space.
+     */
+    @Test
+    fun nav_buttons_dont_interfere_with_required_hotseat_width() {
+        initializeVarsForTablet(isGestureMode = false, isLandscape = true)
+        inv?.apply {
+            hotseatColumnSpan = IntArray(4) { 4 }
+            inlineQsb = BooleanArray(4) { false }
+        }
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dp.hotseatBarEndOffset).isEqualTo(0)
+        assertThat(dp.numShownHotseatIcons).isEqualTo(6)
+        assertThat(dp.hotseatBorderSpace).isEqualTo(100)
+
+        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(668)
+        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(668)
+
+        assertThat(dp.isQsbInline).isFalse()
+        assertThat(dp.hotseatQsbWidth).isEqualTo(1224)
+    }
+
+    /** This is a case when after setting the hotseat, the QSB width needs to be changed to fit */
+    @Test
+    fun decrease_qsb_when_not_enough_space_landscape() {
+        initializeVarsForTablet(isGestureMode = false, isLandscape = true)
+        windowBounds = WindowBounds(Rect(0, 0, 2460, 1600), Rect(0, 104, 0, 0))
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dp.hotseatBarEndOffset).isEqualTo(0)
+        assertThat(dp.numShownHotseatIcons).isEqualTo(6)
+        assertThat(dp.hotseatBorderSpace).isEqualTo(91)
+
+        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(640)
+        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(640)
+
+        assertThat(dp.isQsbInline).isFalse()
+        assertThat(dp.hotseatQsbWidth).isEqualTo(1179)
+    }
+
+    /**
+     * This is a case when after setting the hotseat, changing QSB width, and recalculating spaces
+     * it still needs to remove icons for everything to fit
+     */
+    @Test
+    fun decrease_num_of_icons_when_not_enough_space_landscape() {
+        initializeVarsForTablet(isGestureMode = false, isLandscape = true)
+        windowBounds = WindowBounds(Rect(0, 0, 2260, 1600), Rect(0, 104, 0, 0))
+        val dp = newDP()
+        dp.isTaskbarPresentInApps = true
+
+        assertThat(dp.hotseatBarEndOffset).isEqualTo(0)
+        assertThat(dp.numShownHotseatIcons).isEqualTo(6)
+        assertThat(dp.hotseatBorderSpace).isEqualTo(75)
+
+        assertThat(dp.getHotseatLayoutPadding(context).left).isEqualTo(582)
+        assertThat(dp.getHotseatLayoutPadding(context).right).isEqualTo(582)
+
+        assertThat(dp.isQsbInline).isFalse()
+        assertThat(dp.hotseatQsbWidth).isEqualTo(1095)
+    }
+}
diff --git a/tests/src/com/android/launcher3/provider/LauncherDbUtilsTest.java b/tests/src/com/android/launcher3/provider/LauncherDbUtilsTest.java
new file mode 100644
index 0000000..d1befd0
--- /dev/null
+++ b/tests/src/com/android/launcher3/provider/LauncherDbUtilsTest.java
@@ -0,0 +1,175 @@
+/*
+ * 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.launcher3.provider;
+
+import static android.content.pm.LauncherApps.EXTRA_PIN_ITEM_REQUEST;
+
+import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
+
+import static com.android.launcher3.LauncherSettings.Favorites.INTENT;
+import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.content.Intent;
+import android.content.pm.LauncherApps.PinItemRequest;
+import android.content.pm.ShortcutInfo;
+import android.content.pm.ShortcutManager;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.net.Uri;
+import android.os.Process;
+
+import com.android.launcher3.LauncherSettings.Favorites;
+import com.android.launcher3.R;
+import com.android.launcher3.model.DatabaseHelper;
+import com.android.launcher3.model.DbDowngradeHelper;
+import com.android.launcher3.pm.UserCache;
+import com.android.launcher3.settings.SettingsActivity;
+import com.android.launcher3.shortcuts.ShortcutKey;
+import com.android.launcher3.util.IOUtils;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+
+import java.io.InputStream;
+
+/**
+ * Test for {@link LauncherDbUtils}.
+ */
+public class LauncherDbUtilsTest {
+
+    private Context mContext;
+    private ArgumentCaptor<ShortcutInfo> mInfoArgumentCaptor;
+    private boolean mPinningAllowed = true;
+
+    @Before
+    public void setup() {
+        PinItemRequest req = mock(PinItemRequest.class);
+        doAnswer(i -> mPinningAllowed).when(req).accept();
+
+        mInfoArgumentCaptor = ArgumentCaptor.forClass(ShortcutInfo.class);
+        ShortcutManager sm = mock(ShortcutManager.class);
+        when(sm.createShortcutResultIntent(mInfoArgumentCaptor.capture()))
+                .thenReturn(new Intent().putExtra(EXTRA_PIN_ITEM_REQUEST, req));
+
+        mContext = new ContextWrapper(getInstrumentation().getTargetContext()) {
+
+            @Override
+            public Object getSystemService(String name) {
+                return SHORTCUT_SERVICE.equals(name) ? sm : super.getSystemService(name);
+            }
+        };
+    }
+
+    @Test
+    public void migrateLegacyShortcuts_invalidIntent() throws Exception {
+        SQLiteDatabase db = setupLegacyShortcut(null);
+        assertEquals(1, getFavoriteDataCount(db));
+
+        LauncherDbUtils.migrateLegacyShortcuts(mContext, db);
+
+        assertEquals(0, getFavoriteDataCount(db));
+    }
+
+    @Test
+    public void migrateLegacyShortcuts_protectedIntent() throws Exception {
+        Intent intent = new Intent(Intent.ACTION_CALL)
+                .setData(Uri.parse("tel:0000000000"));
+        SQLiteDatabase db = setupLegacyShortcut(intent);
+        assertEquals(1, getFavoriteDataCount(db));
+
+        LauncherDbUtils.migrateLegacyShortcuts(mContext, db);
+
+        assertEquals(0, getFavoriteDataCount(db));
+    }
+
+    @Test
+    public void migrateLegacyShortcuts_pinningDisabled() throws Exception {
+        mPinningAllowed = false;
+        Intent intent = new Intent(mContext, SettingsActivity.class);
+        SQLiteDatabase db = setupLegacyShortcut(intent);
+        assertEquals(1, getFavoriteDataCount(db));
+
+        LauncherDbUtils.migrateLegacyShortcuts(mContext, db);
+
+        assertEquals(0, getFavoriteDataCount(db));
+    }
+
+    @Test
+    public void migrateLegacyShortcuts_success() throws Exception {
+        Intent intent = new Intent(mContext, SettingsActivity.class);
+        SQLiteDatabase db = setupLegacyShortcut(intent);
+        assertEquals(1, getFavoriteDataCount(db));
+
+        LauncherDbUtils.migrateLegacyShortcuts(mContext, db);
+
+        assertEquals(1, getFavoriteDataCount(db));
+        ShortcutInfo info = mInfoArgumentCaptor.getValue();
+        assertNotNull(info);
+        try (Cursor c = db.query(Favorites.TABLE_NAME, null, null, null, null, null, null)) {
+            c.moveToNext();
+            assertEquals(Favorites.ITEM_TYPE_DEEP_SHORTCUT, c.getInt(c.getColumnIndex(ITEM_TYPE)));
+
+            ShortcutKey key = ShortcutKey.fromIntent(
+                    Intent.parseUri(c.getString(c.getColumnIndex(INTENT)), 0),
+                    Process.myUserHandle());
+
+            assertEquals(info.getId(), key.getId());
+            assertEquals(info.getPackage(), key.getPackageName());
+        }
+    }
+
+    private SQLiteDatabase setupLegacyShortcut(Intent intent) throws Exception {
+        SQLiteDatabase db = new MyDatabaseHelper().getWritableDatabase();
+        try (InputStream in = mContext.getResources().openRawResource(R.raw.downgrade_schema)) {
+            DbDowngradeHelper.parse(IOUtils.toByteArray(in)).onDowngrade(db, db.getVersion(), 31);
+        }
+
+        ContentValues cv = new ContentValues();
+        cv.put("itemType", 1);
+        cv.put("title", "Hello");
+        cv.put("intent", intent == null ? null : intent.toUri(0));
+        db.insert(Favorites.TABLE_NAME, null, cv);
+        return db;
+    }
+
+    public static int getFavoriteDataCount(SQLiteDatabase db) {
+        try (Cursor c = db.query(Favorites.TABLE_NAME, null, null, null, null, null, null)) {
+            return c.getCount();
+        }
+    }
+
+    private class MyDatabaseHelper extends DatabaseHelper {
+
+        MyDatabaseHelper() {
+            super(mContext, null, UserCache.INSTANCE.get(mContext)::getSerialNumberForUser,
+                    () -> { });
+        }
+
+        @Override
+        protected void handleOneTimeDataUpgrade(SQLiteDatabase db) { }
+    }
+}
diff --git a/tests/src/com/android/launcher3/provider/RestoreDbTaskTest.java b/tests/src/com/android/launcher3/provider/RestoreDbTaskTest.java
index 9c8de1c..73bb586 100644
--- a/tests/src/com/android/launcher3/provider/RestoreDbTaskTest.java
+++ b/tests/src/com/android/launcher3/provider/RestoreDbTaskTest.java
@@ -15,20 +15,41 @@
  */
 package com.android.launcher3.provider;
 
+import static android.os.Process.myUserHandle;
+
+import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
+
+import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_DESKTOP;
+import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION;
+import static com.android.launcher3.LauncherSettings.Favorites.TABLE_NAME;
+
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
 
+import android.app.backup.BackupManager;
 import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.util.LongSparseArray;
 
-import androidx.test.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
 
-import com.android.launcher3.LauncherProvider.DatabaseHelper;
+import com.android.launcher3.LauncherAppState;
+import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.LauncherSettings.Favorites;
+import com.android.launcher3.model.ModelDbController;
+import com.android.launcher3.util.LauncherModelHelper;
 
+import org.junit.After;
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -39,15 +60,33 @@
 @RunWith(AndroidJUnit4.class)
 public class RestoreDbTaskTest {
 
+    private static final int PER_USER_RANGE = 200000;
+
+    private final UserHandle mWorkUser = UserHandle.getUserHandleForUid(PER_USER_RANGE);
+
+    private LauncherModelHelper mModelHelper;
+    private Context mContext;
+
+    @Before
+    public void setup() {
+        mModelHelper = new LauncherModelHelper();
+        mContext = mModelHelper.sandboxContext;
+    }
+
+    @After
+    public void teardown() {
+        mModelHelper.destroy();
+    }
+
     @Test
     public void testGetProfileId() throws Exception {
-        SQLiteDatabase db = new MyDatabaseHelper(23).getWritableDatabase();
+        SQLiteDatabase db = new MyModelDbController(23).getDb();
         assertEquals(23, new RestoreDbTask().getDefaultProfileId(db));
     }
 
     @Test
     public void testMigrateProfileId() throws Exception {
-        SQLiteDatabase db = new MyDatabaseHelper(42).getWritableDatabase();
+        SQLiteDatabase db = new MyModelDbController(42).getDb();
         // Add some mock data
         for (int i = 0; i < 5; i++) {
             ContentValues values = new ContentValues();
@@ -67,7 +106,7 @@
 
     @Test
     public void testChangeDefaultColumn() throws Exception {
-        SQLiteDatabase db = new MyDatabaseHelper(42).getWritableDatabase();
+        SQLiteDatabase db = new MyModelDbController(42).getDb();
         // Add some mock data
         for (int i = 0; i < 5; i++) {
             ContentValues values = new ContentValues();
@@ -89,6 +128,89 @@
     }
 
     @Test
+    public void testSanitizeDB_bothProfiles() throws Exception {
+        UserHandle myUser = myUserHandle();
+        long myProfileId = mContext.getSystemService(UserManager.class)
+                .getSerialNumberForUser(myUser);
+        long myProfileId_old = myProfileId + 1;
+        long workProfileId = myProfileId + 2;
+        long workProfileId_old = myProfileId + 3;
+
+        MyModelDbController controller = new MyModelDbController(myProfileId);
+        SQLiteDatabase db = controller.getDb();
+        BackupManager bm = spy(new BackupManager(mContext));
+        doReturn(myUserHandle()).when(bm).getUserForAncestralSerialNumber(eq(myProfileId_old));
+        doReturn(mWorkUser).when(bm).getUserForAncestralSerialNumber(eq(workProfileId_old));
+        controller.users.put(workProfileId, mWorkUser);
+
+        addIconsBulk(controller, 10, 1, myProfileId_old);
+        addIconsBulk(controller, 6, 2, workProfileId_old);
+        assertEquals(10, getItemCountForProfile(db, myProfileId_old));
+        assertEquals(6, getItemCountForProfile(db, workProfileId_old));
+
+        RestoreDbTask task = new RestoreDbTask();
+        task.sanitizeDB(mContext, controller, controller.getDb(), bm);
+
+        // All the data has been migrated to the new user ids
+        assertEquals(0, getItemCountForProfile(db, myProfileId_old));
+        assertEquals(0, getItemCountForProfile(db, workProfileId_old));
+        assertEquals(10, getItemCountForProfile(db, myProfileId));
+        assertEquals(6, getItemCountForProfile(db, workProfileId));
+    }
+
+    @Test
+    public void testSanitizeDB_workItemsRemoved() throws Exception {
+        UserHandle myUser = myUserHandle();
+        long myProfileId = mContext.getSystemService(UserManager.class)
+                .getSerialNumberForUser(myUser);
+        long myProfileId_old = myProfileId + 1;
+        long workProfileId_old = myProfileId + 3;
+
+        MyModelDbController controller = new MyModelDbController(myProfileId);
+        SQLiteDatabase db = controller.getDb();
+        BackupManager bm = spy(new BackupManager(mContext));
+        doReturn(myUserHandle()).when(bm).getUserForAncestralSerialNumber(eq(myProfileId_old));
+        // Work profile is not migrated
+        doReturn(null).when(bm).getUserForAncestralSerialNumber(eq(workProfileId_old));
+
+        addIconsBulk(controller, 10, 1, myProfileId_old);
+        addIconsBulk(controller, 6, 2, workProfileId_old);
+        assertEquals(10, getItemCountForProfile(db, myProfileId_old));
+        assertEquals(6, getItemCountForProfile(db, workProfileId_old));
+
+        RestoreDbTask task = new RestoreDbTask();
+        task.sanitizeDB(mContext, controller, controller.getDb(), bm);
+
+        // All the data has been migrated to the new user ids
+        assertEquals(0, getItemCountForProfile(db, myProfileId_old));
+        assertEquals(0, getItemCountForProfile(db, workProfileId_old));
+        assertEquals(10, getItemCountForProfile(db, myProfileId));
+        assertEquals(10, getCount(db, "select * from favorites"));
+    }
+
+    private void addIconsBulk(MyModelDbController controller,
+            int count, int screen, long profileId) {
+        int columns = LauncherAppState.getIDP(mContext).numColumns;
+        String packageName = getInstrumentation().getContext().getPackageName();
+        for (int i = 0; i < count; i++) {
+            ContentValues values = new ContentValues();
+            values.put(LauncherSettings.Favorites._ID, controller.generateNewItemId());
+            values.put(LauncherSettings.Favorites.CONTAINER, CONTAINER_DESKTOP);
+            values.put(LauncherSettings.Favorites.SCREEN, screen);
+            values.put(LauncherSettings.Favorites.CELLX, i % columns);
+            values.put(LauncherSettings.Favorites.CELLY, i / columns);
+            values.put(LauncherSettings.Favorites.SPANX, 1);
+            values.put(LauncherSettings.Favorites.SPANY, 1);
+            values.put(LauncherSettings.Favorites.PROFILE_ID, profileId);
+            values.put(LauncherSettings.Favorites.ITEM_TYPE, ITEM_TYPE_APPLICATION);
+            values.put(LauncherSettings.Favorites.INTENT,
+                    new Intent(Intent.ACTION_MAIN).setPackage(packageName).toUri(0));
+
+            controller.insert(TABLE_NAME, values);
+        }
+    }
+
+    @Test
     public void testRemoveScreenIdGaps_firstScreenEmpty() {
         runRemoveScreenIdGapsTest(
                 new int[]{1, 2, 5, 6, 6, 7, 9, 9},
@@ -110,13 +232,13 @@
     }
 
     private void runRemoveScreenIdGapsTest(int[] screenIds, int[] expectedScreenIds) {
-        SQLiteDatabase db = new MyDatabaseHelper(42).getWritableDatabase();
+        SQLiteDatabase db = new MyModelDbController(42).getDb();
         // Add some mock data
         for (int i = 0; i < screenIds.length; i++) {
             ContentValues values = new ContentValues();
             values.put(Favorites._ID, i);
             values.put(Favorites.SCREEN, screenIds[i]);
-            values.put(Favorites.CONTAINER, Favorites.CONTAINER_DESKTOP);
+            values.put(Favorites.CONTAINER, CONTAINER_DESKTOP);
             db.insert(Favorites.TABLE_NAME, null, values);
         }
         // Verify items are added
@@ -138,29 +260,29 @@
         assertArrayEquals(expectedScreenIds, resultScreenIds);
     }
 
+    public int getItemCountForProfile(SQLiteDatabase db, long profileId) {
+        return getCount(db, "select * from favorites where profileId = " + profileId);
+    }
+
     private int getCount(SQLiteDatabase db, String sql) {
         try (Cursor c = db.rawQuery(sql, null)) {
             return c.getCount();
         }
     }
 
-    private class MyDatabaseHelper extends DatabaseHelper {
+    private class MyModelDbController extends ModelDbController {
 
-        private final long mProfileId;
+        public final LongSparseArray<UserHandle> users = new LongSparseArray<>();
 
-        MyDatabaseHelper(long profileId) {
-            super(InstrumentationRegistry.getInstrumentation().getTargetContext(), null, false);
-            mProfileId = profileId;
+        MyModelDbController(long profileId) {
+            super(mContext);
+            users.put(profileId, myUserHandle());
         }
 
         @Override
-        public long getDefaultUserSerial() {
-            return mProfileId;
+        public long getSerialNumberForUser(UserHandle user) {
+            int index = users.indexOfValue(user);
+            return index >= 0 ? users.keyAt(index) : -1;
         }
-
-        @Override
-        protected void handleOneTimeDataUpgrade(SQLiteDatabase db) { }
-
-        protected void onEmptyDbCreated() { }
     }
 }
diff --git a/tests/src/com/android/launcher3/search/StringMatcherUtilityTest.java b/tests/src/com/android/launcher3/search/StringMatcherUtilityTest.java
index 413f404..0ba46f4 100644
--- a/tests/src/com/android/launcher3/search/StringMatcherUtilityTest.java
+++ b/tests/src/com/android/launcher3/search/StringMatcherUtilityTest.java
@@ -15,8 +15,10 @@
  */
 package com.android.launcher3.search;
 
+import static com.android.launcher3.search.StringMatcherUtility.getListOfBreakpoints;
 import static com.android.launcher3.search.StringMatcherUtility.matches;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
@@ -24,6 +26,8 @@
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.launcher3.search.StringMatcherUtility.StringMatcher;
+import com.android.launcher3.search.StringMatcherUtility.StringMatcherSpace;
+import com.android.launcher3.util.IntArray;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -34,11 +38,12 @@
 @SmallTest
 @RunWith(AndroidJUnit4.class)
 public class StringMatcherUtilityTest {
-    private static final StringMatcher MATCHER =
-            StringMatcher.getInstance();
+    private static final StringMatcher MATCHER = StringMatcher.getInstance();
+    private static final StringMatcherSpace MATCHER_SPACE = StringMatcherSpace.getInstance();
 
     @Test
     public void testMatches() {
+        assertTrue(matches("white", "white cow", MATCHER));
         assertTrue(matches("white ", "white cow", MATCHER));
         assertTrue(matches("white c", "white cow", MATCHER));
         assertTrue(matches("cow", "white cow", MATCHER));
@@ -93,4 +98,139 @@
         assertFalse(matches("ㄷ", "로드라이브", MATCHER));
         assertFalse(matches("åç", "abc", MATCHER));
     }
+
+    @Test
+    public void testMatchesWithSpaceBreakOnly() {
+        assertTrue(matches("white", "white cow", MATCHER_SPACE));
+        assertTrue(matches("white ", "white cow", MATCHER_SPACE));
+        assertTrue(matches("white c", "white cow", MATCHER_SPACE));
+        assertTrue(matches("cow", "white cow", MATCHER_SPACE));
+        assertTrue(matches("cow", "whitecow cow", MATCHER_SPACE));
+
+        assertFalse(matches("cow", "whiteCow", MATCHER_SPACE));
+        assertFalse(matches("cow", "whiteCOW", MATCHER_SPACE));
+        assertFalse(matches("cow", "whitecowCOW", MATCHER_SPACE));
+        assertFalse(matches("cow", "white2cow", MATCHER_SPACE));
+        assertFalse(matches("cow", "whitecow", MATCHER_SPACE));
+        assertFalse(matches("cow", "whitEcow", MATCHER_SPACE));
+        assertFalse(matches("cow", "whitecowCow", MATCHER_SPACE));
+        assertFalse(matches("cow", "whitecowcow", MATCHER_SPACE));
+        assertFalse(matches("cow", "whit ecowcow", MATCHER_SPACE));
+
+        assertFalse(matches("dog", "cats&dogs", MATCHER_SPACE));
+        assertFalse(matches("dog", "cats&Dogs", MATCHER_SPACE));
+        assertFalse(matches("&", "cats&Dogs", MATCHER_SPACE));
+
+        assertFalse(matches("43", "2+43", MATCHER_SPACE));
+        assertFalse(matches("3", "2+43", MATCHER_SPACE));
+
+        assertTrue(matches("q", "Q", MATCHER_SPACE));
+        assertTrue(matches("q", "  Q", MATCHER_SPACE));
+
+        // match lower case words
+        assertTrue(matches("e", "elephant", MATCHER_SPACE));
+        assertTrue(matches("eL", "Elephant", MATCHER_SPACE));
+
+        assertTrue(matches("电", "电子邮件", MATCHER_SPACE));
+        assertTrue(matches("电子", "电子邮件", MATCHER_SPACE));
+        assertTrue(matches("子", "电子邮件", MATCHER_SPACE));
+        assertTrue(matches("邮件", "电子邮件", MATCHER_SPACE));
+
+        assertFalse(matches("ba", "Bot", MATCHER_SPACE));
+        assertFalse(matches("ba", "bot", MATCHER_SPACE));
+        assertFalse(matches("phant", "elephant", MATCHER_SPACE));
+        assertFalse(matches("elephants", "elephant", MATCHER_SPACE));
+    }
+
+    @Test
+    public void testStringWithProperBreaks() {
+        // empty string
+        assertEquals(IntArray.wrap(), getListOfBreakpoints("", MATCHER));
+
+        // should be "D Dz" that's why breakpoint is at 0
+        assertEquals(IntArray.wrap(0), getListOfBreakpoints("DDz", MATCHER));
+
+        // test all caps and all lower-case
+        assertEquals(IntArray.wrap(), getListOfBreakpoints("SNKRS", MATCHER));
+        assertEquals(IntArray.wrap(), getListOfBreakpoints("flutterappflorafy", MATCHER));
+        assertEquals(IntArray.wrap(), getListOfBreakpoints("LEGO®", MATCHER));
+
+        // test camel case
+        // breakpoint at 9 to be "flutterapp Florafy"
+        assertEquals(IntArray.wrap(9), getListOfBreakpoints("flutterappFlorafy", MATCHER));
+        // breakpoint at 4 to be "Metro Zone"
+        assertEquals(IntArray.wrap(4), getListOfBreakpoints("MetroZone", MATCHER));
+        // breakpoint at 4,5 to be "metro X Zone"
+        assertEquals(IntArray.wrap(4,5), getListOfBreakpoints("metroXZone", MATCHER));
+        // breakpoint at 0 to be "G Pay"
+        assertEquals(IntArray.wrap(0), getListOfBreakpoints("GPay", MATCHER));
+        // breakpoint at 4 to be "Whats App"
+        assertEquals(IntArray.wrap(4), getListOfBreakpoints("WhatsApp", MATCHER));
+        // breakpoint at 2 to be "aaa A"
+        assertEquals(IntArray.wrap(2), getListOfBreakpoints("aaaA", MATCHER));
+        // breakpoint at 4,12,16 to be "Other Launcher Test App"
+        assertEquals(IntArray.wrap(4,12,16),
+                getListOfBreakpoints("OtherLauncherTestApp", MATCHER));
+
+        // test with TITLECASE_LETTER
+        // should be "DDz" that's why there are no break points
+        assertEquals(IntArray.wrap(), getListOfBreakpoints("DDz", MATCHER));
+        // breakpoint at 0 to be "D DDž"
+        assertEquals(IntArray.wrap(0), getListOfBreakpoints("DDDž", MATCHER));
+        // breakpoint at 0 because there is a space to be "Dž DD"
+        assertEquals(IntArray.wrap(0), getListOfBreakpoints("Dž DD", MATCHER));
+        // breakpoint at 1 to be "Dw Dz"
+        assertEquals(IntArray.wrap(1), getListOfBreakpoints("DwDz", MATCHER));
+        // breakpoint at 0,2 to be "Dw Dz"
+        assertEquals(IntArray.wrap(0,2), getListOfBreakpoints("wDwDz", MATCHER));
+        // breakpoint at 1,3 to be "ᾋw Dw Dz"
+        assertEquals(IntArray.wrap(1,3), getListOfBreakpoints("ᾋwDwDz", MATCHER));
+        // breakpoint at 0,2,4 to be "ᾋ ᾋw Dw Dz"
+        assertEquals(IntArray.wrap(0,2,4), getListOfBreakpoints("ᾋᾋwDwDz", MATCHER));
+        // breakpoint at 0,2,4 to be "ᾋ ᾋw Dw Dz®"
+        assertEquals(IntArray.wrap(0,2,4), getListOfBreakpoints("ᾋᾋwDwDz®", MATCHER));
+
+        // test with numbers and symbols
+        // breakpoint at 3,11 to be "Test Activity 13"
+        assertEquals(IntArray.wrap(3,11), getListOfBreakpoints("TestActivity13", MATCHER));
+        // breakpoint at 3, 4, 12, 13 as the breakpoints are at the dashes
+        assertEquals(IntArray.wrap(3,4,12,13),
+                getListOfBreakpoints("Test-Activity-12", MATCHER));
+        // breakpoint at 1 to be "AA 2"
+        assertEquals(IntArray.wrap(1), getListOfBreakpoints("AA2", MATCHER));
+        // breakpoint at 1 to be "AAA 2"
+        assertEquals(IntArray.wrap(2), getListOfBreakpoints("AAA2", MATCHER));
+        // breakpoint at 1 to be "ab 2"
+        assertEquals(IntArray.wrap(1), getListOfBreakpoints("ab2", MATCHER));
+        // breakpoint at 1,2 to be "el 3 suhwee"
+        assertEquals(IntArray.wrap(1,2), getListOfBreakpoints("el3suhwee", MATCHER));
+        // breakpoint at 0,1 as the breakpoints are at '-'
+        assertEquals(IntArray.wrap(0,1), getListOfBreakpoints("t-mobile", MATCHER));
+        assertEquals(IntArray.wrap(0,1), getListOfBreakpoints("t-Mobile", MATCHER));
+        // breakpoint at 0,1,2 as the breakpoints are at '-'
+        assertEquals(IntArray.wrap(0,1,2), getListOfBreakpoints("t--Mobile", MATCHER));
+        // breakpoint at 1,2,3 as the breakpoints are at '-'
+        assertEquals(IntArray.wrap(1,2,3), getListOfBreakpoints("tr--Mobile", MATCHER));
+        // breakpoint at 3,4 as the breakpoints are at '.'
+        assertEquals(IntArray.wrap(3,4), getListOfBreakpoints("Agar.io", MATCHER));
+        assertEquals(IntArray.wrap(3,4), getListOfBreakpoints("Hole.Io", MATCHER));
+
+        // breakpoint at 0 to be "µ Torrent®"
+        assertEquals(IntArray.wrap(0), getListOfBreakpoints("µTorrent®", MATCHER));
+        // breakpoint at 4 to be "LEGO® Builder"
+        assertEquals(IntArray.wrap(4), getListOfBreakpoints("LEGO®Builder", MATCHER));
+        // breakpoint at 4 to be "LEGO® builder"
+        assertEquals(IntArray.wrap(4), getListOfBreakpoints("LEGO®builder", MATCHER));
+        // breakpoint at 4 to be "lego® builder"
+        assertEquals(IntArray.wrap(4), getListOfBreakpoints("lego®builder", MATCHER));
+
+        // test string with spaces - where the breakpoints are right before where the spaces are at
+        assertEquals(IntArray.wrap(3,8), getListOfBreakpoints("HEAD BALL 2", MATCHER));
+        assertEquals(IntArray.wrap(2,8),
+                getListOfBreakpoints("OFL Agent Application", MATCHER));
+        assertEquals(IntArray.wrap(0,2), getListOfBreakpoints("D D z", MATCHER));
+        assertEquals(IntArray.wrap(6), getListOfBreakpoints("Battery Stats", MATCHER));
+        assertEquals(IntArray.wrap(5,9,15),
+                getListOfBreakpoints("System UWB Field Test", MATCHER));
+    }
 }
diff --git a/tests/src/com/android/launcher3/secondarydisplay/SDLauncherTest.java b/tests/src/com/android/launcher3/secondarydisplay/SDLauncherTest.java
deleted file mode 100644
index fd86cf1..0000000
--- a/tests/src/com/android/launcher3/secondarydisplay/SDLauncherTest.java
+++ /dev/null
@@ -1,53 +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.launcher3.secondarydisplay;
-
-import static androidx.test.core.app.ActivityScenario.launch;
-
-import androidx.test.core.app.ActivityScenario;
-import androidx.test.espresso.intent.Intents;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.filters.MediumTest;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-/**
- * Tests for {@link SecondaryDisplayLauncher}
- */
-@MediumTest
-@RunWith(AndroidJUnit4.class)
-public class SDLauncherTest {
-
-    @Before
-    public void setUp() {
-        Intents.init();
-    }
-
-    @After
-    public void tearDown() {
-        Intents.release();
-    }
-
-    @Test
-    public void testAllAppsListOpens() {
-        ActivityScenario<SecondaryDisplayLauncher> launcher =
-                launch(SecondaryDisplayLauncher.class);
-        launcher.onActivity(l -> l.showAppDrawer(true));
-    }
-}
diff --git a/tests/src/com/android/launcher3/secondarydisplay/SecondaryDisplayLauncherTest.java b/tests/src/com/android/launcher3/secondarydisplay/SecondaryDisplayLauncherTest.java
new file mode 100644
index 0000000..7e9d9da
--- /dev/null
+++ b/tests/src/com/android/launcher3/secondarydisplay/SecondaryDisplayLauncherTest.java
@@ -0,0 +1,279 @@
+/*
+ * 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.launcher3.secondarydisplay;
+
+import static android.content.Context.MODE_PRIVATE;
+import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
+import static android.view.MotionEvent.ACTION_DOWN;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Intent;
+import android.graphics.Point;
+import android.os.SystemClock;
+import android.view.MotionEvent;
+import android.widget.TextView;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.LargeTest;
+import androidx.test.uiautomator.By;
+import androidx.test.uiautomator.UiObject2;
+import androidx.test.uiautomator.Until;
+
+import com.android.launcher3.tapl.LauncherInstrumentation;
+import com.android.launcher3.ui.AbstractLauncherUiTest;
+
+import org.junit.After;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Tests for {@link SecondaryDisplayLauncher}.
+ * TODO (b/242776943): Remove anti-patterns & migrate prediction row tests to Quickstep directory
+ */
+@LargeTest
+@RunWith(AndroidJUnit4.class)
+public final class SecondaryDisplayLauncherTest extends AbstractLauncherUiTest {
+    private static final int WAIT_TIME_MS = 5000;
+    private static final int LONG_PRESS_DURATION_MS = 1000;
+    private static final int DRAG_TIME_MS = 160;
+
+    private static final String PINNED_APPS_KEY = "pinned_apps";
+
+    // Variables required to coordinate drag steps.
+    private Point mStartPoint;
+    private Point mEndPoint;
+    private long mDownTime;
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        setDragNDropFlag(true);
+    }
+
+    @After
+    public void tearDown() {
+        mTargetContext.getSharedPreferences(PINNED_APPS_KEY, MODE_PRIVATE)
+                .edit().clear().commit();
+    }
+
+    @Test
+    @Ignore
+    public void initializeSecondaryDisplayLauncher_allAppsButtonVisible() {
+        assertThat(findObjectByResourceName("all_apps_button")).isNotNull();
+    }
+
+    @Test
+    @Ignore
+    public void allAppsButtonTap_opensAppDrawer() {
+        openAppDrawer();
+        assertThat(findObjectByResourceName("search_container_all_apps")).isNotNull();
+    }
+
+    @Test
+    @Ignore("Launcher3 without quickstep doesn't have a predictions row.")
+    public void appDrawerOpened_predictionRowAppDividerVisible() {
+        openAppDrawer();
+        assertThat(findObjectByResourceName("apps_divider_view")).isNotNull();
+    }
+
+    @Test
+    @Ignore
+    public void dragNDropDisabled_pinIconAddsToWorkspace() {
+        setDragNDropFlag(false);
+        openAppDrawer();
+        UiObject2 app = findDescendantByResourceName(
+                findObjectByResourceName("apps_list_view"), "icon");
+        app.click(LONG_PRESS_DURATION_MS);
+        UiObject2 popupContainer = findObjectByResourceName("popup_container");
+        assertThat(popupContainer).isNotNull();
+        UiObject2 pinIcon = findDescendantByTextOrDesc(popupContainer, "Add to home screen");
+        assertThat(pinIcon).isNotNull();
+        pinIcon.click();
+        String appName = app.getContentDescription();
+        assertThat(findAppInWorkspace(appName)).isNotNull();
+    }
+
+    @Test
+    @Ignore
+    public void pressBackFromAllApps_popupMenuOpen_returnsToWorkspace() {
+        openAppDrawer();
+        assertThat(findObjectByResourceName("search_container_all_apps")).isNotNull();
+
+        findDescendantByResourceName(findObjectByResourceName("apps_list_view"), "icon")
+                .click(LONG_PRESS_DURATION_MS);
+        assertThat(findObjectByResourceName("popup_container")).isNotNull();
+
+        // First back press should close only popup menu.
+        mDevice.pressBack();
+        assertThat(findObjectByResourceName("search_container_all_apps")).isNotNull();
+        assertThat(findObjectByResourceName("popup_container")).isNull();
+
+        // Second back press should close app drawer.
+        mDevice.pressBack();
+        assertThat(findObjectByResourceName("popup_container")).isNull();
+        assertThat(findObjectByResourceName("search_container_all_apps")).isNull();
+    }
+
+    @Test
+    @Ignore("Launcher3 without quickstep doesn't have a predictions row.")
+    public void dragNDropFromPredictionsRow_pinToGrid() {
+        openAppDrawer();
+        assertThat(findObjectByResourceName("prediction_row")).isNotNull();
+        String appName = startDragFromPredictionRow();
+        moveAppToCenterOfScreen();
+        dropApp();
+
+        // Ensure app was added.
+        assertThat(findAppInWorkspace(appName)).isNotNull();
+    }
+
+    @Test
+    @Ignore
+    public void dragNDropFromAppDrawer_pinToGrid() {
+        openAppDrawer();
+        String draggedAppName = startDragFromAllApps();
+        moveAppToCenterOfScreen();
+        dropApp();
+
+        // Ensure app was added.
+        assertThat(findAppInWorkspace(draggedAppName)).isNotNull();
+    }
+
+    @Test
+    @Ignore
+    public void tapRemoveButton_unpinApp() {
+        openAppDrawer();
+        String draggedAppName = startDragFromAllApps();
+        moveAppToCenterOfScreen();
+        dropApp();
+        removeAppByName(draggedAppName);
+        assertThat(findAppInWorkspace(draggedAppName)).isNull();
+    }
+
+    private void openAppDrawer() {
+        UiObject2 allAppsButton = findObjectByResourceName("all_apps_button");
+        assertThat(allAppsButton).isNotNull();
+        allAppsButton.click();
+    }
+
+    private String startDragFromAllApps() {
+        // Find app from app drawer.
+        UiObject2 allApps = findObjectByResourceName("apps_list_view");
+        assertThat(allApps).isNotNull();
+        UiObject2 icon = findDescendantByResourceName(allApps, "icon");
+        assertThat(icon).isNotNull();
+        String appName = icon.getContentDescription();
+
+        // Start drag action.
+        mDownTime = SystemClock.uptimeMillis();
+        mStartPoint = icon.getVisibleCenter();
+        mEndPoint = new Point(mStartPoint.x, mStartPoint.y);
+        mLauncher.sendPointer(mDownTime, mDownTime, ACTION_DOWN, mStartPoint,
+                LauncherInstrumentation.GestureScope.INSIDE);
+        assertThat(findObjectByResourceName("popup_container")).isNotNull();
+        return appName;
+    }
+
+    private String startDragFromPredictionRow() {
+        // Find app from predictions.
+        UiObject2 predictionRow = findObjectByResourceName("prediction_row");
+        assertThat(predictionRow).isNotNull();
+
+        UiObject2 icon = findDescendantByResourceName(predictionRow, "icon");
+        assertThat(icon).isNotNull();
+
+        String appName = icon.getContentDescription();
+        UiObject2 app = findDescendantByAppName(predictionRow, appName);
+        assertThat(app).isNotNull();
+
+        // Start drag action.
+        mDownTime = SystemClock.uptimeMillis();
+        mStartPoint = icon.getVisibleCenter();
+        mEndPoint = new Point(mStartPoint.x, mStartPoint.y);
+        mLauncher.sendPointer(mDownTime, mDownTime, ACTION_DOWN, mStartPoint,
+                LauncherInstrumentation.GestureScope.INSIDE);
+        assertThat(findObjectByResourceName("popup_container")).isNotNull();
+        return appName;
+    }
+
+    private void moveAppToCenterOfScreen() {
+        mEndPoint.set(mDevice.getDisplayWidth() / 2, mDevice.getDisplayHeight() / 2);
+        mLauncher.movePointer(mDownTime, SystemClock.uptimeMillis(), DRAG_TIME_MS, true,
+                mStartPoint, mEndPoint, LauncherInstrumentation.GestureScope.INSIDE);
+    }
+
+    private void dropApp() {
+        mLauncher.sendPointer(mDownTime, SystemClock.uptimeMillis(), MotionEvent.ACTION_UP,
+                mEndPoint, LauncherInstrumentation.GestureScope.INSIDE);
+    }
+
+    private void removeAppByName(String appName) {
+        // Find app within home screen.
+        UiObject2 app = findDescendantByAppName(findObjectByResourceName("workspace_grid"),
+                appName);
+        if (app == null) return;
+
+        // Open app's popup container.
+        app.click(LONG_PRESS_DURATION_MS);
+        UiObject2 popupContainer = findObjectByResourceName("popup_container");
+        assertThat(popupContainer).isNotNull();
+
+        // Grab & click remove button.
+        UiObject2 removeButton = findDescendantByTextOrDesc(popupContainer, "Remove");
+        assertThat(removeButton).isNotNull();
+        removeButton.click();
+    }
+
+    private UiObject2 findAppInWorkspace(String appName) {
+        UiObject2 workspace = findObjectByResourceName("workspace_grid");
+        return findDescendantByAppName(workspace, appName);
+    }
+
+    private UiObject2 findObjectByResourceName(String resourceName) {
+        return mDevice.wait(Until.findObject(By.res(mTargetPackage, resourceName)), WAIT_TIME_MS);
+    }
+
+    private UiObject2 findDescendantByResourceName(UiObject2 outerObject,
+            String resourceName) {
+        assertThat(outerObject).isNotNull();
+        return outerObject.findObject(By.res(mTargetPackage, resourceName));
+    }
+
+    private UiObject2 findDescendantByAppName(UiObject2 outerObject, String appName) {
+        assertThat(outerObject).isNotNull();
+        return outerObject.findObject(By.clazz(TextView.class).text(appName)
+                .pkg(mDevice.getLauncherPackageName()));
+    }
+
+    private UiObject2 findDescendantByTextOrDesc(UiObject2 outerObject, String content) {
+        assertThat(outerObject).isNotNull();
+        UiObject2 innerObject = outerObject.findObject(By.desc(content));
+        if (innerObject == null) innerObject = outerObject.findObject(By.text(content));
+        return innerObject;
+    }
+
+    private void startSecondaryDisplayActivity() {
+        mTargetContext.startActivity((
+                new Intent(mTargetContext, SecondaryDisplayLauncher.class).addFlags(
+                        FLAG_ACTIVITY_NEW_TASK)));
+    }
+
+    private void setDragNDropFlag(Boolean status) {
+        startSecondaryDisplayActivity();
+    }
+}
diff --git a/tests/src/com/android/launcher3/settings/SettingsActivityTest.java b/tests/src/com/android/launcher3/settings/SettingsActivityTest.java
index 1c205f0..837973f 100644
--- a/tests/src/com/android/launcher3/settings/SettingsActivityTest.java
+++ b/tests/src/com/android/launcher3/settings/SettingsActivityTest.java
@@ -50,6 +50,7 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import com.android.launcher3.R;
+import com.android.launcher3.uioverrides.flags.DeveloperOptionsFragment;
 import com.android.systemui.shared.plugins.PluginPrefs;
 
 import org.junit.After;
diff --git a/tests/src/com/android/launcher3/testcomponent/AppWidgetWithDialog.java b/tests/src/com/android/launcher3/testcomponent/AppWidgetWithDialog.java
new file mode 100644
index 0000000..6d617fa
--- /dev/null
+++ b/tests/src/com/android/launcher3/testcomponent/AppWidgetWithDialog.java
@@ -0,0 +1,41 @@
+/*
+ * 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.launcher3.testcomponent;
+
+import android.app.PendingIntent;
+import android.appwidget.AppWidgetManager;
+import android.content.Context;
+import android.content.Intent;
+import android.widget.RemoteViews;
+
+/**
+ * A simple app widget with shows a dialog on clicking.
+ */
+public class AppWidgetWithDialog extends AppWidgetNoConfig {
+
+    @Override
+    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
+        int layoutId = context.getResources().getIdentifier(
+                "test_layout_appwidget_blue", "layout", context.getPackageName());
+        RemoteViews views = new RemoteViews(context.getPackageName(), layoutId);
+
+        PendingIntent pi = PendingIntent.getActivity(context, 0,
+                new Intent(context, DialogTestActivity.class), PendingIntent.FLAG_IMMUTABLE);
+        views.setOnClickPendingIntent(android.R.id.content, pi);
+        AppWidgetManager.getInstance(context).updateAppWidget(appWidgetIds, views);
+    }
+}
diff --git a/tests/src/com/android/launcher3/testcomponent/BaseTestingActivity.java b/tests/src/com/android/launcher3/testcomponent/BaseTestingActivity.java
index 9c6d102..d3ce67c 100644
--- a/tests/src/com/android/launcher3/testcomponent/BaseTestingActivity.java
+++ b/tests/src/com/android/launcher3/testcomponent/BaseTestingActivity.java
@@ -24,7 +24,9 @@
 import android.os.Bundle;
 import android.util.TypedValue;
 import android.view.View;
+import android.view.WindowInsets;
 import android.widget.Button;
+import android.widget.EditText;
 import android.widget.LinearLayout;
 import android.widget.LinearLayout.LayoutParams;
 
@@ -81,6 +83,20 @@
         mView.addView(button, lp);
     }
 
+    protected void addEditor(String initText, String hint, boolean requestIme) {
+        EditText editText = new EditText(this);
+        editText.setHint(hint);
+        editText.setText(initText);
+
+        LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
+        lp.bottomMargin = mMargin;
+        mView.addView(editText, lp);
+        if (requestIme) {
+            editText.requestFocus();
+            mView.getWindowInsetsController().show(WindowInsets.Type.ime());
+        }
+    }
+
     @Override
     protected void onResume() {
         super.onResume();
diff --git a/src_ui_overrides/com/android/launcher3/uioverrides/DeviceFlag.java b/tests/src/com/android/launcher3/testcomponent/DialogTestActivity.java
similarity index 62%
rename from src_ui_overrides/com/android/launcher3/uioverrides/DeviceFlag.java
rename to tests/src/com/android/launcher3/testcomponent/DialogTestActivity.java
index 5c1ac28..9e5a274 100644
--- a/src_ui_overrides/com/android/launcher3/uioverrides/DeviceFlag.java
+++ b/tests/src/com/android/launcher3/testcomponent/DialogTestActivity.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * 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.
@@ -14,13 +14,10 @@
  * limitations under the License.
  */
 
-package com.android.launcher3.uioverrides;
+package com.android.launcher3.testcomponent;
 
-import com.android.launcher3.config.FeatureFlags.DebugFlag;
 
-public class DeviceFlag extends DebugFlag {
-
-    public DeviceFlag(String key, boolean defaultValue, String description) {
-        super(key, defaultValue, description);
-    }
-}
+/**
+ * Extension of BaseTestingActivity with a Dialog theme
+ */
+public class DialogTestActivity extends BaseTestingActivity {}
diff --git a/tests/src/com/android/launcher3/testcomponent/ImeTestActivity.java b/tests/src/com/android/launcher3/testcomponent/ImeTestActivity.java
new file mode 100644
index 0000000..43952d5
--- /dev/null
+++ b/tests/src/com/android/launcher3/testcomponent/ImeTestActivity.java
@@ -0,0 +1,27 @@
+/*
+ * 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.launcher3.testcomponent;
+
+import android.os.Bundle;
+
+public class ImeTestActivity extends OtherBaseTestingActivity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // Requests to focus an editor and show IME for test.
+        addEditor("Focused editor for test", "Focused editor for test", true);
+    }
+}
diff --git a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
index 6f8b9d2..604fe42 100644
--- a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
+++ b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
@@ -61,9 +61,9 @@
 import com.android.launcher3.tapl.LauncherInstrumentation.ContainerType;
 import com.android.launcher3.tapl.TestHelpers;
 import com.android.launcher3.testcomponent.TestCommandReceiver;
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.launcher3.util.LooperExecutor;
-import com.android.launcher3.util.PackageManagerHelper;
+import com.android.launcher3.util.SimpleBroadcastReceiver;
 import com.android.launcher3.util.Wait;
 import com.android.launcher3.util.WidgetUtils;
 import com.android.launcher3.util.rule.FailureWatcher;
@@ -72,6 +72,7 @@
 import com.android.launcher3.util.rule.ScreenRecordRule;
 import com.android.launcher3.util.rule.ShellCommandRule;
 import com.android.launcher3.util.rule.TestStabilityRule;
+import com.android.launcher3.util.rule.ViewCaptureRule;
 
 import org.junit.After;
 import org.junit.Assert;
@@ -106,6 +107,8 @@
 
     private static boolean sDumpWasGenerated = false;
     private static boolean sActivityLeakReported = false;
+    private static boolean sSeenKeygard = false;
+
     private static final String SYSTEMUI_PACKAGE = "com.android.systemui";
 
     protected LooperExecutor mMainThreadExecutor = MAIN_EXECUTOR;
@@ -151,6 +154,8 @@
                     device.executeShellCommand(
                             "am dumpheap " + device.getLauncherPackageName() + " " + fileName);
                 }
+                Log.d(TAG, "Saved leak dump, the leak is still present: "
+                        + !launcher.noLeakedActivities());
                 sDumpWasGenerated = true;
                 result = "saved memory dump as an artifact";
             } catch (Throwable e) {
@@ -194,15 +199,10 @@
 
     protected void clearPackageData(String pkg) throws IOException, InterruptedException {
         final CountDownLatch count = new CountDownLatch(2);
-        final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
-            @Override
-            public void onReceive(Context context, Intent intent) {
-                count.countDown();
-            }
-        };
-        mTargetContext.registerReceiver(broadcastReceiver,
-                PackageManagerHelper.getPackageFilter(pkg,
-                        Intent.ACTION_PACKAGE_RESTARTED, Intent.ACTION_PACKAGE_DATA_CLEARED));
+        final SimpleBroadcastReceiver broadcastReceiver =
+                new SimpleBroadcastReceiver(i -> count.countDown());
+        broadcastReceiver.registerPkgActions(mTargetContext, pkg,
+                        Intent.ACTION_PACKAGE_RESTARTED, Intent.ACTION_PACKAGE_DATA_CLEARED);
 
         mDevice.executeShellCommand("pm clear " + pkg);
         assertTrue(pkg + " didn't restart", count.await(10, TimeUnit.SECONDS));
@@ -216,14 +216,15 @@
     }
 
     protected TestRule getRulesInsideActivityMonitor() {
+        final ViewCaptureRule viewCaptureRule = new ViewCaptureRule();
         final RuleChain inner = RuleChain
                 .outerRule(new PortraitLandscapeRunner(this))
-                .around(new FailureWatcher(mDevice, mLauncher));
+                .around(viewCaptureRule)
+                .around(new FailureWatcher(mDevice, mLauncher, viewCaptureRule.getViewCapture()));
 
         return TestHelpers.isInLauncherProcess()
-                ? RuleChain.outerRule(ShellCommandRule.setDefaultLauncher())
-                .around(inner) :
-                inner;
+                ? RuleChain.outerRule(ShellCommandRule.setDefaultLauncher()).around(inner)
+                : inner;
     }
 
     @Rule
@@ -240,9 +241,8 @@
     @Before
     public void setUp() throws Exception {
         mLauncher.onTestStart();
-        Assert.assertTrue("Keyguard is visible, which is likely caused by a crash in SysUI",
-                TestHelpers.wait(
-                        Until.gone(By.res(SYSTEMUI_PACKAGE, "keyguard_status_view")), 60000));
+
+        verifyKeyguardInvisible();
 
         final String launcherPackageName = mDevice.getLauncherPackageName();
         try {
@@ -275,6 +275,20 @@
         }
     }
 
+    private static void verifyKeyguardInvisible() {
+        final boolean keyguardAlreadyVisible = sSeenKeygard;
+
+        sSeenKeygard = sSeenKeygard
+                || !TestHelpers.wait(
+                Until.gone(By.res(SYSTEMUI_PACKAGE, "keyguard_status_view")), 60000);
+
+        Assert.assertFalse(
+                "Keyguard is visible, which is likely caused by a crash in SysUI, seeing keyguard"
+                        + " for the first time = "
+                        + !keyguardAlreadyVisible,
+                sSeenKeygard);
+    }
+
     @After
     public void verifyLauncherState() {
         try {
@@ -297,7 +311,7 @@
     /**
      * Removes all icons from homescreen and hotseat.
      */
-    public void clearHomescreen() throws Throwable {
+    public void clearHomescreen() {
         LauncherSettings.Settings.call(mTargetContext.getContentResolver(),
                 LauncherSettings.Settings.METHOD_CREATE_EMPTY_DB);
         LauncherSettings.Settings.call(mTargetContext.getContentResolver(),
@@ -319,7 +333,7 @@
     /**
      * Adds {@param item} on the homescreen on the 0th screen
      */
-    protected void addItemToScreen(ItemInfo item) {
+    public void addItemToScreen(ItemInfo item) {
         WidgetUtils.addItemToScreen(item, mTargetContext);
         resetLoaderState();
 
@@ -392,6 +406,7 @@
     // flakiness.
     protected void waitForLauncherCondition(
             String message, Function<Launcher, Boolean> condition, long timeout) {
+        verifyKeyguardInvisible();
         if (!TestHelpers.isInLauncherProcess()) return;
         Wait.atMost(message, () -> getFromLauncher(condition), timeout, mLauncher);
     }
@@ -437,7 +452,8 @@
         private Intent mIntent;
 
         public BlockingBroadcastReceiver(String action) {
-            mTargetContext.registerReceiver(this, new IntentFilter(action));
+            mTargetContext.registerReceiver(this, new IntentFilter(action),
+                    Context.RECEIVER_EXPORTED/*UNAUDITED*/);
         }
 
         @Override
@@ -477,6 +493,16 @@
                 false /* newTask */);
     }
 
+    public static void startImeTestActivity() {
+        final String packageName = getAppPackageName();
+        final Intent intent = getInstrumentation().getContext().getPackageManager().
+                getLaunchIntentForPackage(packageName);
+        intent.setComponent(new ComponentName(packageName,
+                "com.android.launcher3.testcomponent.ImeTestActivity"));
+        startIntent(intent, By.pkg(packageName).text("ImeTestActivity"),
+                false /* newTask */);
+    }
+
     private static void startIntent(Intent intent, BySelector selector, boolean newTask) {
         intent.addCategory(Intent.CATEGORY_LAUNCHER);
         if (newTask) {
@@ -525,7 +551,7 @@
     }
 
     protected int getAllAppsScroll(Launcher launcher) {
-        return launcher.getAppsView().getActiveRecyclerView().getCurrentScrollY();
+        return launcher.getAppsView().getActiveRecyclerView().computeVerticalScrollOffset();
     }
 
     private void checkLauncherIntegrity(
@@ -563,10 +589,13 @@
                     break;
                 }
                 case OVERVIEW: {
-                    checkLauncherStateInOverview(launcher, expectedContainerType, isStarted,
-                            isResumed);
-                    assertTrue(TestProtocol.stateOrdinalToString(ordinal),
-                            ordinal == TestProtocol.OVERVIEW_STATE_ORDINAL);
+                    verifyOverviewState(launcher, expectedContainerType, isStarted, isResumed,
+                            ordinal, TestProtocol.OVERVIEW_STATE_ORDINAL);
+                    break;
+                }
+                case SPLIT_SCREEN_SELECT: {
+                    verifyOverviewState(launcher, expectedContainerType, isStarted, isResumed,
+                            ordinal, TestProtocol.OVERVIEW_SPLIT_SELECT_ORDINAL);
                     break;
                 }
                 case TASKBAR_ALL_APPS:
@@ -632,5 +661,9 @@
         return homeAppIcon;
     }
 
-
+    private void verifyOverviewState(Launcher launcher, ContainerType expectedContainerType,
+            boolean isStarted, boolean isResumed, int ordinal, int expectedOrdinal) {
+        checkLauncherStateInOverview(launcher, expectedContainerType, isStarted, isResumed);
+        assertEquals(TestProtocol.stateOrdinalToString(ordinal), ordinal, expectedOrdinal);
+    }
 }
diff --git a/tests/src/com/android/launcher3/ui/BubbleTextViewTest.java b/tests/src/com/android/launcher3/ui/BubbleTextViewTest.java
new file mode 100644
index 0000000..fdba4eb
--- /dev/null
+++ b/tests/src/com/android/launcher3/ui/BubbleTextViewTest.java
@@ -0,0 +1,294 @@
+/*
+ * 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.launcher3.ui;
+
+import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
+
+import static com.android.launcher3.config.FeatureFlags.ENABLE_TWOLINE_ALLAPPS;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+import android.content.Context;
+import android.graphics.Typeface;
+import android.view.ViewGroup;
+
+import com.android.launcher3.BubbleTextView;
+import com.android.launcher3.Utilities;
+import com.android.launcher3.model.data.ItemInfoWithIcon;
+import com.android.launcher3.search.StringMatcherUtility;
+import com.android.launcher3.util.ActivityContextWrapper;
+import com.android.launcher3.util.IntArray;
+import com.android.launcher3.util.TestUtil;
+import com.android.launcher3.views.BaseDragLayer;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Unit tests for testing modifyTitleToSupportMultiLine() in BubbleTextView.java
+ * This class tests a couple of strings and uses the getMaxLines() to determine if the test passes.
+ * Verifying with getMaxLines() is sufficient since BubbleTextView can only be in one line or
+ * two lines, and this is enough to ensure whether the string should be specifically wrapped onto
+ * the second line and to ensure truncation.
+ */
+public class BubbleTextViewTest {
+
+    private static final StringMatcherUtility.StringMatcher
+            MATCHER = StringMatcherUtility.StringMatcher.getInstance();
+    private static final int ONE_LINE = 1;
+    private static final int TWO_LINE = 2;
+    private static final String TEST_STRING_WITH_SPACE_LONGER_THAN_CHAR_LIMIT = "Battery Stats";
+    private static final String TEST_STRING_WITH_SPACE_LONGER_THAN_CHAR_LIMIT_RESULT =
+            "Battery\nStats";
+    private static final String TEST_LONG_STRING_NO_SPACE_LONGER_THAN_CHAR_LIMIT =
+            "flutterappflorafy";
+    private static final String TEST_LONG_STRING_WITH_SPACE_LONGER_THAN_CHAR_LIMIT =
+            "System UWB Field Test";
+    private static final String TEST_LONG_STRING_WITH_SPACE_LONGER_THAN_CHAR_LIMIT_RESULT =
+            "System\nUWB Field Test";
+    private static final String TEST_LONG_STRING_SYMBOL_LONGER_THAN_CHAR_LIMIT =
+            "LEGO®Builder";
+    private static final String TEST_LONG_STRING_SYMBOL_LONGER_THAN_CHAR_LIMIT_RESULT =
+            "LEGO®\nBuilder";
+    private static final String EMPTY_STRING = "";
+    private static final int CHAR_CNT = 7;
+
+    private BubbleTextView mBubbleTextView;
+    private ItemInfoWithIcon mItemInfoWithIcon;
+    private Context mContext;
+    private int mLimitedWidth;
+
+    @Before
+    public void setUp() throws Exception {
+        Utilities.enableRunningInTestHarnessForTests();
+        mContext = new ActivityContextWrapper(getApplicationContext());
+        mBubbleTextView = new BubbleTextView(mContext);
+        mBubbleTextView.reset();
+        mBubbleTextView.setDisplayAllApps();
+
+        BubbleTextView testView = new BubbleTextView(mContext);
+        testView.setTypeface(Typeface.MONOSPACE);
+        testView.setText("B");
+        // calculate the maxWidth of the textView by calculating the width of one monospace
+        // character * CHAR_CNT
+        mLimitedWidth =
+                (int) (testView.getPaint().measureText(testView.getText().toString()) * CHAR_CNT);
+        // needed otherwise there is a NPE during setText() on checkForRelayout()
+        mBubbleTextView.setLayoutParams(
+                new ViewGroup.LayoutParams(mLimitedWidth,
+                BaseDragLayer.LayoutParams.WRAP_CONTENT));
+        mItemInfoWithIcon = new ItemInfoWithIcon() {
+            @Override
+            public ItemInfoWithIcon clone() {
+                return null;
+            }
+        };
+    }
+
+    @Test
+    public void testEmptyString_flagOn() {
+        try (AutoCloseable flag = TestUtil.overrideFlag(ENABLE_TWOLINE_ALLAPPS, true)) {
+            mItemInfoWithIcon.title = EMPTY_STRING;
+            mBubbleTextView.applyLabel(mItemInfoWithIcon);
+            mBubbleTextView.setTypeface(Typeface.MONOSPACE);
+            mBubbleTextView.measure(mLimitedWidth, 0);
+            mBubbleTextView.onPreDraw();
+            assertNotEquals(TWO_LINE, mBubbleTextView.getMaxLines());
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Test
+    public void testEmptyString_flagOff() {
+        try (AutoCloseable flag = TestUtil.overrideFlag(ENABLE_TWOLINE_ALLAPPS, false)) {
+            mItemInfoWithIcon.title = EMPTY_STRING;
+            mBubbleTextView.applyLabel(mItemInfoWithIcon);
+            mBubbleTextView.setTypeface(Typeface.MONOSPACE);
+            mBubbleTextView.measure(mLimitedWidth, 0);
+            mBubbleTextView.onPreDraw();
+            assertEquals(ONE_LINE, mBubbleTextView.getLineCount());
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Test
+    public void testStringWithSpaceLongerThanCharLimit_flagOn() {
+        try (AutoCloseable flag = TestUtil.overrideFlag(ENABLE_TWOLINE_ALLAPPS, true)) {
+            // test string: "Battery Stats"
+            mItemInfoWithIcon.title = TEST_STRING_WITH_SPACE_LONGER_THAN_CHAR_LIMIT;
+            mBubbleTextView.applyLabel(mItemInfoWithIcon);
+            mBubbleTextView.setTypeface(Typeface.MONOSPACE);
+            mBubbleTextView.measure(mLimitedWidth, 0);
+            mBubbleTextView.onPreDraw();
+            assertEquals(TWO_LINE, mBubbleTextView.getLineCount());
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Test
+    public void testStringWithSpaceLongerThanCharLimit_flagOff() {
+        try (AutoCloseable flag = TestUtil.overrideFlag(ENABLE_TWOLINE_ALLAPPS, false)) {
+            // test string: "Battery Stats"
+            mItemInfoWithIcon.title = TEST_STRING_WITH_SPACE_LONGER_THAN_CHAR_LIMIT;
+            mBubbleTextView.applyLabel(mItemInfoWithIcon);
+            mBubbleTextView.setTypeface(Typeface.MONOSPACE);
+            mBubbleTextView.measure(mLimitedWidth, 0);
+            mBubbleTextView.onPreDraw();
+            assertEquals(ONE_LINE, mBubbleTextView.getLineCount());
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Test
+    public void testLongStringNoSpaceLongerThanCharLimit_flagOn() {
+        try (AutoCloseable flag = TestUtil.overrideFlag(ENABLE_TWOLINE_ALLAPPS, true)) {
+            // test string: "flutterappflorafy"
+            mItemInfoWithIcon.title = TEST_LONG_STRING_NO_SPACE_LONGER_THAN_CHAR_LIMIT;
+            mBubbleTextView.applyLabel(mItemInfoWithIcon);
+            mBubbleTextView.setTypeface(Typeface.MONOSPACE);
+            mBubbleTextView.measure(mLimitedWidth, 0);
+            mBubbleTextView.onPreDraw();
+            assertEquals(ONE_LINE, mBubbleTextView.getLineCount());
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Test
+    public void testLongStringNoSpaceLongerThanCharLimit_flagOff() {
+        try (AutoCloseable flag = TestUtil.overrideFlag(ENABLE_TWOLINE_ALLAPPS, false)) {
+            // test string: "flutterappflorafy"
+            mItemInfoWithIcon.title = TEST_LONG_STRING_NO_SPACE_LONGER_THAN_CHAR_LIMIT;
+            mBubbleTextView.applyLabel(mItemInfoWithIcon);
+            mBubbleTextView.setTypeface(Typeface.MONOSPACE);
+            mBubbleTextView.measure(mLimitedWidth, 0);
+            mBubbleTextView.onPreDraw();
+            assertEquals(ONE_LINE, mBubbleTextView.getLineCount());
+        } catch (Exception e) {
+            throw  new RuntimeException(e);
+        }
+    }
+
+    @Test
+    public void testLongStringWithSpaceLongerThanCharLimit_flagOn() {
+        try (AutoCloseable flag = TestUtil.overrideFlag(ENABLE_TWOLINE_ALLAPPS, true)) {
+            // test string: "System UWB Field Test"
+            mItemInfoWithIcon.title = TEST_LONG_STRING_WITH_SPACE_LONGER_THAN_CHAR_LIMIT;
+            mBubbleTextView.applyLabel(mItemInfoWithIcon);
+            mBubbleTextView.setTypeface(Typeface.MONOSPACE);
+            mBubbleTextView.measure(mLimitedWidth, 0);
+            mBubbleTextView.onPreDraw();
+            assertEquals(TWO_LINE, mBubbleTextView.getLineCount());
+        } catch (Exception e) {
+            throw  new RuntimeException(e);
+        }
+    }
+
+    @Test
+    public void testLongStringWithSpaceLongerThanCharLimit_flagOff() {
+        try (AutoCloseable flag = TestUtil.overrideFlag(ENABLE_TWOLINE_ALLAPPS, false)) {
+            // test string: "System UWB Field Test"
+            mItemInfoWithIcon.title = TEST_LONG_STRING_WITH_SPACE_LONGER_THAN_CHAR_LIMIT;
+            mBubbleTextView.applyLabel(mItemInfoWithIcon);
+            mBubbleTextView.setTypeface(Typeface.MONOSPACE);
+            mBubbleTextView.measure(mLimitedWidth, 0);
+            mBubbleTextView.onPreDraw();
+            assertEquals(ONE_LINE, mBubbleTextView.getLineCount());
+        } catch (Exception e) {
+            throw  new RuntimeException(e);
+        }
+    }
+
+    @Test
+    public void testLongStringSymbolLongerThanCharLimit_flagOn() {
+        try (AutoCloseable flag = TestUtil.overrideFlag(ENABLE_TWOLINE_ALLAPPS, true)) {
+            // test string: "LEGO®Builder"
+            mItemInfoWithIcon.title = TEST_LONG_STRING_SYMBOL_LONGER_THAN_CHAR_LIMIT;
+            mBubbleTextView.applyLabel(mItemInfoWithIcon);
+            mBubbleTextView.setTypeface(Typeface.MONOSPACE);
+            mBubbleTextView.measure(mLimitedWidth, 0);
+            mBubbleTextView.onPreDraw();
+            assertEquals(TWO_LINE, mBubbleTextView.getLineCount());
+        } catch (Exception e) {
+            throw  new RuntimeException(e);
+        }
+    }
+
+    @Test
+    public void testLongStringSymbolLongerThanCharLimit_flagOff() {
+        try (AutoCloseable flag = TestUtil.overrideFlag(ENABLE_TWOLINE_ALLAPPS, false)) {
+            // test string: "LEGO®Builder"
+            mItemInfoWithIcon.title = TEST_LONG_STRING_SYMBOL_LONGER_THAN_CHAR_LIMIT;
+            mBubbleTextView.applyLabel(mItemInfoWithIcon);
+            mBubbleTextView.setTypeface(Typeface.MONOSPACE);
+            mBubbleTextView.measure(mLimitedWidth, 0);
+            mBubbleTextView.onPreDraw();
+            assertEquals(ONE_LINE, mBubbleTextView.getLineCount());
+        } catch (Exception e) {
+            throw  new RuntimeException(e);
+        }
+    }
+
+    @Test
+    public void modifyTitleToSupportMultiLine_TEST_STRING_WITH_SPACE_LONGER_THAN_CHAR_LIMIT() {
+        // test string: "Battery Stats"
+        IntArray breakPoints = StringMatcherUtility.getListOfBreakpoints(
+                TEST_STRING_WITH_SPACE_LONGER_THAN_CHAR_LIMIT, MATCHER);
+        CharSequence newString = BubbleTextView.modifyTitleToSupportMultiLine(mLimitedWidth,
+                TEST_STRING_WITH_SPACE_LONGER_THAN_CHAR_LIMIT, mBubbleTextView.getPaint(),
+                breakPoints);
+        assertEquals(TEST_STRING_WITH_SPACE_LONGER_THAN_CHAR_LIMIT_RESULT, newString);
+    }
+
+    @Test
+    public void modifyTitleToSupportMultiLine_TEST_LONG_STRING_NO_SPACE_LONGER_THAN_CHAR_LIMIT() {
+        // test string: "flutterappflorafy"
+        IntArray breakPoints = StringMatcherUtility.getListOfBreakpoints(
+                TEST_LONG_STRING_NO_SPACE_LONGER_THAN_CHAR_LIMIT, MATCHER);
+        CharSequence newString = BubbleTextView.modifyTitleToSupportMultiLine(mLimitedWidth,
+                TEST_LONG_STRING_NO_SPACE_LONGER_THAN_CHAR_LIMIT, mBubbleTextView.getPaint(),
+                breakPoints);
+        assertEquals(TEST_LONG_STRING_NO_SPACE_LONGER_THAN_CHAR_LIMIT, newString);
+    }
+
+    @Test
+    public void modifyTitleToSupportMultiLine_TEST_LONG_STRING_WITH_SPACE_LONGER_THAN_CHAR_LIMIT() {
+        // test string: "System UWB Field Test"
+        IntArray breakPoints = StringMatcherUtility.getListOfBreakpoints(
+                TEST_LONG_STRING_WITH_SPACE_LONGER_THAN_CHAR_LIMIT, MATCHER);
+        CharSequence newString = BubbleTextView.modifyTitleToSupportMultiLine(mLimitedWidth,
+                TEST_LONG_STRING_WITH_SPACE_LONGER_THAN_CHAR_LIMIT, mBubbleTextView.getPaint(),
+                breakPoints);
+        assertEquals(TEST_LONG_STRING_WITH_SPACE_LONGER_THAN_CHAR_LIMIT_RESULT, newString);
+    }
+
+    @Test
+    public void modifyTitleToSupportMultiLine_TEST_LONG_STRING_SYMBOL_LONGER_THAN_CHAR_LIMIT() {
+        // test string: "LEGO®Builder"
+        IntArray breakPoints = StringMatcherUtility.getListOfBreakpoints(
+                TEST_LONG_STRING_SYMBOL_LONGER_THAN_CHAR_LIMIT, MATCHER);
+        CharSequence newString = BubbleTextView.modifyTitleToSupportMultiLine(mLimitedWidth,
+                TEST_LONG_STRING_SYMBOL_LONGER_THAN_CHAR_LIMIT, mBubbleTextView.getPaint(),
+                breakPoints);
+        assertEquals(TEST_LONG_STRING_SYMBOL_LONGER_THAN_CHAR_LIMIT_RESULT, newString);
+    }
+}
diff --git a/tests/src/com/android/launcher3/ui/PortraitLandscapeRunner.java b/tests/src/com/android/launcher3/ui/PortraitLandscapeRunner.java
index 8f2d528..266f0ae 100644
--- a/tests/src/com/android/launcher3/ui/PortraitLandscapeRunner.java
+++ b/tests/src/com/android/launcher3/ui/PortraitLandscapeRunner.java
@@ -4,7 +4,6 @@
 import android.view.Surface;
 
 import com.android.launcher3.tapl.TestHelpers;
-import com.android.launcher3.testing.TestProtocol;
 
 import org.junit.rules.TestRule;
 import org.junit.runner.Description;
diff --git a/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java b/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java
index 8a97c6b..9676cb3 100644
--- a/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java
+++ b/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java
@@ -25,15 +25,24 @@
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeFalse;
+import static org.junit.Assume.assumeTrue;
 
 import android.content.Intent;
 import android.graphics.Point;
+import android.os.SystemClock;
+import android.platform.test.annotations.IwTest;
+import android.platform.test.annotations.PlatinumTest;
+import android.util.Log;
 
+import androidx.test.filters.FlakyTest;
 import androidx.test.filters.LargeTest;
+import androidx.test.platform.app.InstrumentationRegistry;
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.launcher3.Launcher;
 import com.android.launcher3.LauncherState;
+import com.android.launcher3.config.FeatureFlags;
 import com.android.launcher3.popup.ArrowPopup;
 import com.android.launcher3.tapl.AllApps;
 import com.android.launcher3.tapl.AppIcon;
@@ -43,16 +52,19 @@
 import com.android.launcher3.tapl.FolderIcon;
 import com.android.launcher3.tapl.HomeAllApps;
 import com.android.launcher3.tapl.HomeAppIcon;
-import com.android.launcher3.tapl.HomeAppIconMenu;
 import com.android.launcher3.tapl.HomeAppIconMenuItem;
 import com.android.launcher3.tapl.Widgets;
 import com.android.launcher3.tapl.Workspace;
+import com.android.launcher3.util.LauncherLayoutBuilder;
 import com.android.launcher3.util.TestUtil;
 import com.android.launcher3.util.rule.ScreenRecordRule.ScreenRecord;
+import com.android.launcher3.util.rule.TISBindRule;
 import com.android.launcher3.widget.picker.WidgetsFullSheet;
 import com.android.launcher3.widget.picker.WidgetsRecyclerView;
 
+import org.junit.After;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -68,6 +80,13 @@
     private static final String MAPS_APP_NAME = "Maps";
     private static final String STORE_APP_NAME = "Play Store";
     private static final String GMAIL_APP_NAME = "Gmail";
+    private static final String READ_DEVICE_CONFIG_PERMISSION =
+            "android.permission.READ_DEVICE_CONFIG";
+
+    @Rule
+    public TISBindRule mTISBindRule = new TISBindRule();
+
+    private AutoCloseable mLauncherLayout;
 
     @Before
     public void setUp() throws Exception {
@@ -87,6 +106,13 @@
         AbstractLauncherUiTest.checkDetectedLeaks(test.mLauncher);
     }
 
+    @After
+    public void tearDown() throws Exception {
+        if (mLauncherLayout != null) {
+            mLauncherLayout.close();
+        }
+    }
+
     // Please don't add negative test cases for methods that fail only after a long wait.
     public static void expectFail(String message, Runnable action) {
         boolean failed = false;
@@ -122,6 +148,7 @@
     }
 
     @Test
+    @ScreenRecord
     public void testPressHomeOnAllAppsContextMenu() throws Exception {
         final AllApps allApps = mLauncher.getWorkspace().switchToAllApps();
         allApps.freeze();
@@ -166,9 +193,9 @@
                     flingBackwardY < flingForwardY));
 
             // Test scrolling down to YouTube.
-            assertNotNull("All apps: can't fine YouTube", allApps.getAppIcon("YouTube"));
+            assertNotNull("All apps: can't find YouTube", allApps.getAppIcon("YouTube"));
             // Test scrolling up to Camera.
-            assertNotNull("All apps: can't fine Camera", allApps.getAppIcon("Camera"));
+            assertNotNull("All apps: can't find Camera", allApps.getAppIcon("Camera"));
             // Test failing to find a non-existing app.
             final AllApps allAppsFinal = allApps;
             expectFail("All apps: could find a non-existing app",
@@ -192,16 +219,44 @@
     }
 
     @Test
+    @PortraitLandscape
+    public void testAllAppsSwitchToWorkspace() {
+        assertNotNull("switchToWorkspace() returned null",
+                mLauncher.getWorkspace().switchToAllApps().switchToWorkspace());
+        assertTrue("Launcher internal state is not Workspace",
+                isInState(() -> LauncherState.NORMAL));
+    }
+
+    @Test
+    @PortraitLandscape
+    public void testAllAppsDeadzoneForTablet() throws Exception {
+        assumeTrue(mLauncher.isTablet());
+
+        mLauncher.getWorkspace().switchToAllApps().dismissByTappingOutsideForTablet(
+                true /* tapRight */);
+        mLauncher.getWorkspace().switchToAllApps().dismissByTappingOutsideForTablet(
+                false /* tapRight */);
+    }
+
+    @PlatinumTest(focusArea = "launcher")
+    @IwTest(focusArea = "launcher")
+    @Test
     @ScreenRecord // b/202433017
     public void testWorkspace() throws Exception {
+        // Set workspace  that includes the chrome Activity app icon on the hotseat.
+        LauncherLayoutBuilder builder = new LauncherLayoutBuilder()
+                .atHotseat(0).putApp("com.android.chrome", "com.google.android.apps.chrome.Main");
+        mLauncherLayout = TestUtil.setLauncherDefaultLayout(mTargetContext, builder);
+        clearLauncherData();
+
         final Workspace workspace = mLauncher.getWorkspace();
 
         // Test that ensureWorkspaceIsScrollable adds a page by dragging an icon there.
         executeOnLauncher(launcher -> assertFalse("Initial workspace state is scrollable",
                 isWorkspaceScrollable(launcher)));
-        assertNull("Chrome app was found on empty workspace",
-                workspace.tryGetWorkspaceAppIcon("Chrome"));
-
+        assertEquals("Initial workspace doesn't have the correct page", workspace.pagesPerScreen(),
+                workspace.getPageCount());
+        workspace.verifyWorkspaceAppIconIsGone("Chrome app was found on empty workspace", "Chrome");
         workspace.ensureWorkspaceIsScrollable();
 
         executeOnLauncher(
@@ -239,8 +294,7 @@
             assertNotNull("AppIcon.launch returned null", app.launch(getAppPackageName()));
             test.executeOnLauncher(launcher -> assertTrue(
                     "Launcher activity is the top activity; expecting another activity to be the "
-                            + "top "
-                            + "one",
+                            + "top one",
                     test.isInLaunchedApp(launcher)));
         } finally {
             allApps.unfreeze();
@@ -288,7 +342,7 @@
     }
 
     private int getWidgetsScroll(Launcher launcher) {
-        return getWidgetsView(launcher).getCurrentScrollY();
+        return getWidgetsView(launcher).computeVerticalScrollOffset();
     }
 
     private boolean isOptionsPopupVisible(Launcher launcher) {
@@ -298,6 +352,7 @@
 
     @Test
     @PortraitLandscape
+    @PlatinumTest(focusArea = "launcher")
     public void testLaunchMenuItem() throws Exception {
         final AllApps allApps = mLauncher.getWorkspace().switchToAllApps();
         allApps.freeze();
@@ -318,8 +373,11 @@
         }
     }
 
+    @PlatinumTest(focusArea = "launcher")
+    @IwTest(focusArea = "launcher")
     @Test
     @PortraitLandscape
+    @ScreenRecord // b/256898879
     public void testDragAppIcon() throws Throwable {
         // 1. Open all apps and wait for load complete.
         // 2. Drag icon to homescreen.
@@ -340,6 +398,7 @@
 
     @Test
     @PortraitLandscape
+    @PlatinumTest(focusArea = "launcher")
     public void testDragShortcut() throws Throwable {
         // 1. Open all apps and wait for load complete.
         // 2. Find the app and long press it to show shortcuts.
@@ -349,23 +408,14 @@
                 .switchToAllApps();
         allApps.freeze();
         try {
-            final HomeAppIconMenu menu = allApps
+            final HomeAppIconMenuItem menuItem = allApps
                     .getAppIcon(APP_NAME)
-                    .openDeepShortcutMenu();
-            final HomeAppIconMenuItem menuItem0 = menu.getMenuItem(0);
-            final HomeAppIconMenuItem menuItem2 = menu.getMenuItem(2);
+                    .openDeepShortcutMenu()
+                    .getMenuItem(0);
+            final String actualShortcutName = menuItem.getText();
+            final String expectedShortcutName = "Shortcut 1";
 
-            final HomeAppIconMenuItem menuItem;
-
-            final String expectedShortcutName = "Shortcut 3";
-            if (menuItem0.getText().equals(expectedShortcutName)) {
-                menuItem = menuItem0;
-            } else {
-                final String shortcutName2 = menuItem2.getText();
-                assertEquals("Wrong menu item", expectedShortcutName, shortcutName2);
-                menuItem = menuItem2;
-            }
-
+            assertEquals(expectedShortcutName, actualShortcutName);
             menuItem.dragToWorkspace(false, false);
             mLauncher.getWorkspace().getWorkspaceAppIcon(expectedShortcutName)
                     .launch(getAppPackageName());
@@ -376,6 +426,9 @@
 
     @Test
     @PortraitLandscape
+    @ScreenRecord
+    @Ignore // b/233075289
+    @PlatinumTest(focusArea = "launcher")
     public void testDragToFolder() {
         // TODO: add the use case to drag an icon to an existing folder. Currently it either fails
         // on tablets or phones due to difference in resolution.
@@ -388,10 +441,10 @@
         folder.getAppIcon(GMAIL_APP_NAME);
         Workspace workspace = folder.close();
 
-        assertNull(STORE_APP_NAME + " should be moved to a folder.",
-                workspace.tryGetWorkspaceAppIcon(STORE_APP_NAME));
-        assertNull(GMAIL_APP_NAME + " should be moved to a folder.",
-                workspace.tryGetWorkspaceAppIcon(GMAIL_APP_NAME));
+        workspace.verifyWorkspaceAppIconIsGone(STORE_APP_NAME + " should be moved to a folder.",
+                STORE_APP_NAME);
+        workspace.verifyWorkspaceAppIconIsGone(GMAIL_APP_NAME + " should be moved to a folder.",
+                GMAIL_APP_NAME);
 
         final HomeAppIcon mapIcon = createShortcutInCenterIfNotExist(MAPS_APP_NAME);
         folderIcon = mapIcon.dragToIcon(folderIcon);
@@ -399,18 +452,21 @@
         folder.getAppIcon(MAPS_APP_NAME);
         workspace = folder.close();
 
-        assertNull(MAPS_APP_NAME + " should be moved to a folder.",
-                workspace.tryGetWorkspaceAppIcon(MAPS_APP_NAME));
+        workspace.verifyWorkspaceAppIconIsGone(MAPS_APP_NAME + " should be moved to a folder.",
+                MAPS_APP_NAME);
     }
 
+    @FlakyTest(bugId = 256615483)
     @Test
     @PortraitLandscape
     public void testPressBack() throws Exception {
+        InstrumentationRegistry.getInstrumentation().getUiAutomation().adoptShellPermissionIdentity(
+                READ_DEVICE_CONFIG_PERMISSION);
+        assumeFalse(FeatureFlags.ENABLE_BACK_SWIPE_LAUNCHER_ANIMATION.get());
         mLauncher.getWorkspace().switchToAllApps();
         mLauncher.pressBack();
         mLauncher.getWorkspace();
         waitForState("Launcher internal state didn't switch to Home", () -> LauncherState.NORMAL);
-
         startAppFast(resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR));
         mLauncher.pressBack();
         mLauncher.getWorkspace();
@@ -419,13 +475,32 @@
 
     @Test
     @PortraitLandscape
+    @PlatinumTest(focusArea = "launcher")
+    public void testDragAndCancelAppIcon() {
+        final HomeAppIcon homeAppIcon = createShortcutInCenterIfNotExist(GMAIL_APP_NAME);
+        Point positionBeforeDrag =
+                mLauncher.getWorkspace().getWorkspaceIconsPositions().get(GMAIL_APP_NAME);
+        assertNotNull("App not found in Workspace before dragging.", positionBeforeDrag);
+
+        mLauncher.getWorkspace().dragAndCancelAppIcon(homeAppIcon);
+
+        Point positionAfterDrag =
+                mLauncher.getWorkspace().getWorkspaceIconsPositions().get(GMAIL_APP_NAME);
+        assertNotNull("App not found in Workspace after dragging.", positionAfterDrag);
+        assertEquals("App not returned to same position in Workspace after drag & cancel",
+                positionBeforeDrag, positionAfterDrag);
+    }
+
+    @Test
+    @PortraitLandscape
     public void testDeleteFromWorkspace() throws Exception {
         // test delete both built-in apps and user-installed app from workspace
         for (String appName : new String[]{"Gmail", "Play Store", APP_NAME}) {
             final HomeAppIcon homeAppIcon = createShortcutInCenterIfNotExist(appName);
             Workspace workspace = mLauncher.getWorkspace().deleteAppIcon(homeAppIcon);
-            assertNull(appName + " app was found after being deleted from workspace",
-                    workspace.tryGetWorkspaceAppIcon(appName));
+            workspace.verifyWorkspaceAppIconIsGone(
+                    appName + " app was found after being deleted from workspace",
+                    appName);
         }
     }
 
@@ -440,10 +515,12 @@
         }
     }
 
+    @Ignore("b/256615483")
     @Test
     @PortraitLandscape
+    @PlatinumTest(focusArea = "launcher")
     public void testUninstallFromWorkspace() throws Exception {
-        TestUtil.installDummyApp();
+        installDummyAppAndWaitForUIUpdate();
         try {
             verifyAppUninstalledFromAllApps(
                     createShortcutInCenterIfNotExist(DUMMY_APP_NAME).uninstall(), DUMMY_APP_NAME);
@@ -453,18 +530,16 @@
     }
 
     @Test
+    @ScreenRecord // b/258071914
     @PortraitLandscape
+    @PlatinumTest(focusArea = "launcher")
     public void testUninstallFromAllApps() throws Exception {
-        TestUtil.installDummyApp();
+        installDummyAppAndWaitForUIUpdate();
         try {
             Workspace workspace = mLauncher.getWorkspace();
             final HomeAllApps allApps = workspace.switchToAllApps();
-            allApps.freeze();
-            try {
-                workspace = allApps.getAppIcon(DUMMY_APP_NAME).uninstall();
-            } finally {
-                allApps.unfreeze();
-            }
+            workspace = allApps.getAppIcon(DUMMY_APP_NAME).uninstall();
+            waitForLauncherUIUpdate();
             verifyAppUninstalledFromAllApps(workspace, DUMMY_APP_NAME);
         } finally {
             TestUtil.uninstallDummyApp();
@@ -473,10 +548,13 @@
 
     @Test
     @PortraitLandscape
+    @PlatinumTest(focusArea = "launcher")
     public void testDragAppIconToWorkspaceCell() throws Exception {
+        long startTime, endTime, elapsedTime;
         Point[] targets = getCornersAndCenterPositions();
 
         for (Point target : targets) {
+            startTime = SystemClock.uptimeMillis();
             final HomeAllApps allApps = mLauncher.getWorkspace().switchToAllApps();
             allApps.freeze();
             try {
@@ -486,21 +564,32 @@
             }
             // Reset the workspace for the next shortcut creation.
             initialize(this);
+            endTime = SystemClock.uptimeMillis();
+            elapsedTime = endTime - startTime;
+            Log.d("testDragAppIconToWorkspaceCellTime",
+                    "Milliseconds taken to drag app icon to workspace cell: " + elapsedTime);
         }
 
         // test to move a shortcut to other cell.
         final HomeAppIcon launcherTestAppIcon = createShortcutInCenterIfNotExist(APP_NAME);
         for (Point target : targets) {
+            startTime = SystemClock.uptimeMillis();
             launcherTestAppIcon.dragToWorkspace(target.x, target.y);
+            endTime = SystemClock.uptimeMillis();
+            elapsedTime = endTime - startTime;
+            Log.d("testDragAppIconToWorkspaceCellTime",
+                    "Milliseconds taken to move shortcut to other cell: " + elapsedTime);
         }
     }
 
     @Test
+    @ScreenRecord // b/241821721
+    @PlatinumTest(focusArea = "launcher")
     public void getIconsPosition_afterIconRemoved_notContained() throws IOException {
         Point[] gridPositions = getCornersAndCenterPositions();
         createShortcutIfNotExist(STORE_APP_NAME, gridPositions[0]);
         createShortcutIfNotExist(MAPS_APP_NAME, gridPositions[1]);
-        TestUtil.installDummyApp();
+        installDummyAppAndWaitForUIUpdate();
         try {
             createShortcutIfNotExist(DUMMY_APP_NAME, gridPositions[2]);
             Map<String, Point> initialPositions =
@@ -509,10 +598,8 @@
                     .containsAtLeast(DUMMY_APP_NAME, MAPS_APP_NAME, STORE_APP_NAME);
 
             mLauncher.getWorkspace().getWorkspaceAppIcon(DUMMY_APP_NAME).uninstall();
-
-            assertNull(
-                    DUMMY_APP_NAME + " app was found after being uninstalled",
-                    mLauncher.getWorkspace().tryGetWorkspaceAppIcon(DUMMY_APP_NAME));
+            mLauncher.getWorkspace().verifyWorkspaceAppIconIsGone(
+                    DUMMY_APP_NAME + " was expected to disappear after uninstall.", DUMMY_APP_NAME);
 
             Map<String, Point> finalPositions =
                     mLauncher.getWorkspace().getWorkspaceIconsPositions();
@@ -522,22 +609,81 @@
         }
     }
 
+    @Test
+    @PortraitLandscape
+    @PlatinumTest(focusArea = "launcher")
+    public void testDragShortcutToWorkspaceCell() throws Exception {
+        Point[] targets = getCornersAndCenterPositions();
+
+        for (Point target : targets) {
+            final HomeAllApps allApps = mLauncher.getWorkspace().switchToAllApps();
+            allApps.freeze();
+            try {
+                allApps.getAppIcon(APP_NAME)
+                        .openDeepShortcutMenu()
+                        .getMenuItem(0)
+                        .dragToWorkspace(target.x, target.y);
+            } finally {
+                allApps.unfreeze();
+            }
+        }
+    }
+
+    @Test
+    @PortraitLandscape
+    public void testAddDeleteShortcutOnHotseat() {
+        mLauncher.getWorkspace()
+                .deleteAppIcon(mLauncher.getWorkspace().getHotseatAppIcon(0))
+                .switchToAllApps()
+                .getAppIcon(APP_NAME)
+                .dragToHotseat(0);
+        mLauncher.getWorkspace().deleteAppIcon(
+                mLauncher.getWorkspace().getHotseatAppIcon(APP_NAME));
+    }
+
+    private void installDummyAppAndWaitForUIUpdate() throws IOException {
+        TestUtil.installDummyApp();
+        waitForLauncherUIUpdate();
+    }
+
+    private void waitForLauncherUIUpdate() {
+        // Wait for model thread completion as it may be processing
+        // the install event from the SystemService
+        mLauncher.waitForModelQueueCleared();
+        // Wait for Launcher UI thread completion, as it may be processing updating the UI in
+        // response to the model update. Not that `waitForLauncherInitialized` is just a proxy
+        // method, we can use any method which touches Launcher UI thread,
+        mLauncher.waitForLauncherInitialized();
+    }
+
     /**
      * @return List of workspace grid coordinates. Those are not pixels. See {@link
-     *     Workspace#getIconGridDimensions()}
+     * Workspace#getIconGridDimensions()}
      */
     private Point[] getCornersAndCenterPositions() {
         final Point dimensions = mLauncher.getWorkspace().getIconGridDimensions();
-        return new Point[] {
-            new Point(0, 1),
-            new Point(0, dimensions.y - 2),
-            new Point(dimensions.x - 1, 1),
-            new Point(dimensions.x - 1, dimensions.y - 2),
-            new Point(dimensions.x / 2, dimensions.y / 2)
+        return new Point[]{
+                new Point(0, 1),
+                new Point(0, dimensions.y - 2),
+                new Point(dimensions.x - 1, 1),
+                new Point(dimensions.x - 1, dimensions.y - 2),
+                new Point(dimensions.x / 2, dimensions.y / 2)
         };
     }
 
     public static String getAppPackageName() {
         return getInstrumentation().getContext().getPackageName();
     }
+
+    @Test
+    public void testGetAppIconName() {
+        HomeAllApps allApps = mLauncher.getWorkspace().switchToAllApps();
+        allApps.freeze();
+        try {
+            HomeAppIcon icon = allApps.getAppIcon(APP_NAME);
+            assertEquals("Wrong app icon name.", icon.getIconName(), APP_NAME);
+        } finally {
+            allApps.unfreeze();
+        }
+    }
 }
diff --git a/tests/src/com/android/launcher3/ui/WorkProfileTest.java b/tests/src/com/android/launcher3/ui/WorkProfileTest.java
index 35b4ca6..026766c 100644
--- a/tests/src/com/android/launcher3/ui/WorkProfileTest.java
+++ b/tests/src/com/android/launcher3/ui/WorkProfileTest.java
@@ -18,9 +18,14 @@
 import static com.android.launcher3.LauncherState.ALL_APPS;
 import static com.android.launcher3.LauncherState.NORMAL;
 import static com.android.launcher3.allapps.AllAppsStore.DEFER_UPDATES_TEST;
+import static com.android.launcher3.testing.shared.TestProtocol.WORK_TAB_MISSING;
+import static com.android.launcher3.util.TestUtil.installDummyAppForUser;
+import static com.android.launcher3.util.rule.TestStabilityRule.LOCAL;
+import static com.android.launcher3.util.rule.TestStabilityRule.PLATFORM_POSTSUBMIT;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeTrue;
 
 import android.util.Log;
 import android.view.View;
@@ -30,14 +35,17 @@
 import com.android.launcher3.R;
 import com.android.launcher3.allapps.ActivityAllAppsContainerView;
 import com.android.launcher3.allapps.AllAppsPagedView;
-import com.android.launcher3.allapps.WorkAdapterProvider;
 import com.android.launcher3.allapps.WorkEduCard;
 import com.android.launcher3.allapps.WorkPausedCard;
 import com.android.launcher3.allapps.WorkProfileManager;
 import com.android.launcher3.tapl.LauncherInstrumentation;
+import com.android.launcher3.testing.shared.TestProtocol;
+import com.android.launcher3.util.TestUtil;
+import com.android.launcher3.util.rule.TestStabilityRule.Stability;
 
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import java.util.Objects;
@@ -48,6 +56,8 @@
     private static final int WORK_PAGE = ActivityAllAppsContainerView.AdapterHolder.WORK;
 
     private int mProfileUserId;
+    private boolean mWorkProfileSetupSuccessful;
+    private final String TAG = "WorkProfileTest";
 
     @Before
     @Override
@@ -56,12 +66,23 @@
         String output =
                 mDevice.executeShellCommand(
                         "pm create-user --profileOf 0 --managed TestProfile");
-        Log.d("b/203817455", "pm create-user; output: " + output);
-        assertTrue("Failed to create work profile", output.startsWith("Success"));
+        // b/203817455
+        updateWorkProfileSetupSuccessful("pm create-user", output);
 
         String[] tokens = output.split("\\s+");
         mProfileUserId = Integer.parseInt(tokens[tokens.length - 1]);
-        mDevice.executeShellCommand("am start-user " + mProfileUserId);
+        StringBuilder logStr = new StringBuilder().append("profileId: ").append(mProfileUserId);
+        for (String str : tokens) {
+            logStr.append(str).append("\n");
+        }
+        installDummyAppForUser(mProfileUserId);
+        updateWorkProfileSetupSuccessful("am start-user", output);
+
+        Log.d(WORK_TAB_MISSING, "workProfileSuccessful? " + mWorkProfileSetupSuccessful +
+                " shellCmd: " + logStr);
+        if (!mWorkProfileSetupSuccessful) {
+            return; // no need to setup launcher since all tests will skip.
+        }
 
         mDevice.pressHome();
         waitForLauncherCondition("Launcher didn't start", Objects::nonNull);
@@ -75,22 +96,23 @@
 
     @After
     public void removeWorkProfile() throws Exception {
-        mDevice.executeShellCommand("pm remove-user " + mProfileUserId);
-    }
-
-    @After
-    public void resumeAppStoreUpdate() {
+        Log.d(TestProtocol.WORK_TAB_MISSING, "WorkProfileTest teardown");
         executeOnLauncher(launcher -> {
             if (launcher == null || launcher.getAppsView() == null) {
                 return;
             }
             launcher.getAppsView().getAppsStore().disableDeferUpdates(DEFER_UPDATES_TEST);
         });
+        TestUtil.uninstallDummyApp();
+        mDevice.executeShellCommand("pm remove-user " + mProfileUserId);
     }
 
     private void waitForWorkTabSetup() {
+        // Added for b/243688989 flake to determine if we really are in allApps or not at this point
+        mLauncher.getAllApps();
         waitForLauncherCondition("Work tab not setup", launcher -> {
             if (launcher.getAppsView().getContentView() instanceof AllAppsPagedView) {
+                Log.d(WORK_TAB_MISSING, "Deferring AppsStore updates");
                 launcher.getAppsView().getAppsStore().enableDeferUpdates(DEFER_UPDATES_TEST);
                 return true;
             }
@@ -99,7 +121,10 @@
     }
 
     @Test
+    @Stability(flavors = LOCAL | PLATFORM_POSTSUBMIT) // b/243688989
     public void workTabExists() {
+        assumeTrue(mWorkProfileSetupSuccessful);
+        waitForWorkTabSetup();
         waitForLauncherCondition("Personal tab is missing",
                 launcher -> launcher.getAppsView().isPersonalTabVisible(),
                 LauncherInstrumentation.WAIT_TIME_MS);
@@ -109,9 +134,10 @@
     }
 
     @Test
+    @Ignore("b/243855320")
     public void toggleWorks() {
+        assumeTrue(mWorkProfileSetupSuccessful);
         waitForWorkTabSetup();
-
         executeOnLauncher(launcher -> {
             AllAppsPagedView pagedView = (AllAppsPagedView) launcher.getAppsView().getContentView();
             pagedView.setCurrentPage(WORK_PAGE);
@@ -127,7 +153,11 @@
                 LauncherInstrumentation.WAIT_TIME_MS);
 
         //start work profile toggle OFF test
-        executeOnLauncher(l -> l.getAppsView().getWorkManager().getWorkModeSwitch().performClick());
+        executeOnLauncher(l -> {
+            // Ensure updates are not deferred so notification happens when apps pause.
+            l.getAppsView().getAppsStore().disableDeferUpdates(DEFER_UPDATES_TEST);
+            l.getAppsView().getWorkManager().getWorkModeSwitch().performClick();
+        });
 
         waitForLauncherCondition("Work profile toggle OFF failed", launcher -> {
             manager.reset(); // pulls current state from system
@@ -152,10 +182,12 @@
     }
 
     @Test
+    @Stability(flavors = LOCAL | PLATFORM_POSTSUBMIT) // b/243688989
     public void testEdu() {
+        assumeTrue(mWorkProfileSetupSuccessful);
         waitForWorkTabSetup();
         executeOnLauncher(l -> {
-            l.getSharedPrefs().edit().putInt(WorkAdapterProvider.KEY_WORK_EDU_STEP, 0).commit();
+            l.getSharedPrefs().edit().putInt(WorkProfileManager.KEY_WORK_EDU_STEP, 0).commit();
             ((AllAppsPagedView) l.getAppsView().getContentView()).setCurrentPage(WORK_PAGE);
             l.getAppsView().getWorkManager().reset();
         });
@@ -175,4 +207,14 @@
             }
         }, LauncherInstrumentation.WAIT_TIME_MS);
     }
+
+    private void updateWorkProfileSetupSuccessful(String cli, String output) {
+        Log.d(TAG, "updateWorkProfileSetupSuccessful, cli=" + cli + " " + "output=" + output);
+        if (output.startsWith("Success")) {
+            assertTrue(output, output.startsWith("Success"));
+            mWorkProfileSetupSuccessful = true;
+        } else {
+            mWorkProfileSetupSuccessful = false;
+        }
+    }
 }
diff --git a/tests/src/com/android/launcher3/ui/widget/AddConfigWidgetTest.java b/tests/src/com/android/launcher3/ui/widget/AddConfigWidgetTest.java
index 2c9785c..e9a2b0f 100644
--- a/tests/src/com/android/launcher3/ui/widget/AddConfigWidgetTest.java
+++ b/tests/src/com/android/launcher3/ui/widget/AddConfigWidgetTest.java
@@ -15,24 +15,27 @@
  */
 package com.android.launcher3.ui.widget;
 
+import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
+
+import static com.android.launcher3.util.LauncherBindableItemsContainer.ItemOperator;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertNull;
 
 import android.appwidget.AppWidgetManager;
 import android.content.Intent;
+import android.view.View;
 
 import androidx.test.filters.LargeTest;
 import androidx.test.runner.AndroidJUnit4;
 
+import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.LauncherAppWidgetInfo;
-import com.android.launcher3.tapl.Widget;
-import com.android.launcher3.tapl.WidgetResizeFrame;
-import com.android.launcher3.tapl.Widgets;
 import com.android.launcher3.testcomponent.WidgetConfigActivity;
 import com.android.launcher3.ui.AbstractLauncherUiTest;
 import com.android.launcher3.ui.TestViewHelpers;
+import com.android.launcher3.util.Wait;
 import com.android.launcher3.util.rule.ShellCommandRule;
 import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
 
@@ -84,30 +87,51 @@
         clearHomescreen();
         mDevice.pressHome();
 
-        final Widgets widgets = mLauncher.getWorkspace().openAllWidgets();
-
         // Drag widget to homescreen
         WidgetConfigStartupMonitor monitor = new WidgetConfigStartupMonitor();
-        WidgetResizeFrame resizeFrame =
-                widgets.getWidget(mWidgetInfo.getLabel(mTargetContext.getPackageManager()))
-                        .dragConfigWidgetToWorkspace(acceptConfig);
+        mLauncher.getWorkspace()
+                .openAllWidgets()
+                .getWidget(mWidgetInfo.getLabel(mTargetContext.getPackageManager()))
+                .dragToWorkspace(true, false);
         // Widget id for which the config activity was opened
         mWidgetId = monitor.getWidgetId();
 
         // Verify that the widget id is valid and bound
         assertNotNull(mAppWidgetManager.getAppWidgetInfo(mWidgetId));
 
+        setResult(acceptConfig);
         if (acceptConfig) {
-            assertNotNull("Widget resize frame not shown after widget added", resizeFrame);
-            resizeFrame.dismiss();
-
-            final Widget widget =
-                    mLauncher.getWorkspace().tryGetWidget(mWidgetInfo.label, DEFAULT_UI_TIMEOUT);
-            assertNotNull("Widget not found on the workspace", widget);
+            Wait.atMost("", new WidgetSearchCondition(), DEFAULT_ACTIVITY_TIMEOUT, mLauncher);
+            assertNotNull(mAppWidgetManager.getAppWidgetInfo(mWidgetId));
         } else {
-            final Widget widget =
-                    mLauncher.getWorkspace().tryGetWidget(mWidgetInfo.label, DEFAULT_UI_TIMEOUT);
-            assertNull("Widget unexpectedly found on the workspace", widget);
+            // Verify that the widget id is deleted.
+            Wait.atMost("", () -> mAppWidgetManager.getAppWidgetInfo(mWidgetId) == null,
+                    DEFAULT_ACTIVITY_TIMEOUT, mLauncher);
+        }
+    }
+
+    private void setResult(boolean success) {
+        getInstrumentation().getTargetContext().sendBroadcast(
+                WidgetConfigActivity.getCommandIntent(WidgetConfigActivity.class,
+                        success ? "clickOK" : "clickCancel"));
+    }
+
+    /**
+     * Condition for searching widget id
+     */
+    private class WidgetSearchCondition implements Wait.Condition, ItemOperator {
+
+        @Override
+        public boolean isTrue() throws Throwable {
+            return mMainThreadExecutor.submit(mActivityMonitor.itemExists(this)).get();
+        }
+
+        @Override
+        public boolean evaluate(ItemInfo info, View view) {
+            return info instanceof LauncherAppWidgetInfo
+                    && ((LauncherAppWidgetInfo) info).providerName.getClassName().equals(
+                            mWidgetInfo.provider.getClassName())
+                    && ((LauncherAppWidgetInfo) info).appWidgetId == mWidgetId;
         }
     }
 
diff --git a/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java b/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java
index 194ee4f..6d858e0 100644
--- a/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java
+++ b/tests/src/com/android/launcher3/ui/widget/AddWidgetTest.java
@@ -20,6 +20,9 @@
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
+import android.platform.test.annotations.IwTest;
+import android.platform.test.annotations.PlatinumTest;
+
 import androidx.test.filters.LargeTest;
 import androidx.test.runner.AndroidJUnit4;
 
@@ -31,6 +34,7 @@
 import com.android.launcher3.util.rule.ShellCommandRule;
 import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
 
+import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -45,20 +49,24 @@
     @Rule
     public ShellCommandRule mGrantWidgetRule = ShellCommandRule.grantWidgetBind();
 
+    @PlatinumTest(focusArea = "launcher")
+    @IwTest(focusArea="launcher")
     @Test
     @PortraitLandscape
     public void testDragIcon() throws Throwable {
         clearHomescreen();
         mDevice.pressHome();
 
+        waitForLauncherCondition("Workspace didn't finish loading", l -> !l.isWorkspaceLoading());
+
         final LauncherAppWidgetProviderInfo widgetInfo =
                 TestViewHelpers.findWidgetProvider(this, false /* hasConfigureScreen */);
 
-        WidgetResizeFrame resizeFrame = mLauncher.
-                getWorkspace().
-                openAllWidgets().
-                getWidget(widgetInfo.getLabel(mTargetContext.getPackageManager())).
-                dragWidgetToWorkspace();
+        WidgetResizeFrame resizeFrame = mLauncher
+                .getWorkspace()
+                .openAllWidgets()
+                .getWidget(widgetInfo.getLabel(mTargetContext.getPackageManager()))
+                .dragWidgetToWorkspace();
 
         assertTrue(mActivityMonitor.itemExists(
                 (info, view) -> info instanceof LauncherAppWidgetInfo &&
@@ -80,6 +88,7 @@
      * A custom shortcut is a 1x1 widget that launches a specific intent when user tap on it.
      * Custom shortcuts are replaced by deep shortcuts after api 25.
      */
+    @Ignore
     @Test
     @PortraitLandscape
     public void testDragCustomShortcut() throws Throwable {
diff --git a/tests/src/com/android/launcher3/ui/widget/BindWidgetTest.java b/tests/src/com/android/launcher3/ui/widget/BindWidgetTest.java
index fa39ce0..0f861eb 100644
--- a/tests/src/com/android/launcher3/ui/widget/BindWidgetTest.java
+++ b/tests/src/com/android/launcher3/ui/widget/BindWidgetTest.java
@@ -190,7 +190,7 @@
         waitForLauncherCondition("App widget options did not update",
                 l -> appWidgetManager.getAppWidgetOptions(appWidgetId).getBoolean(
                         WidgetManagerHelper.WIDGET_OPTION_RESTORE_COMPLETED));
-        executeOnLauncher(l -> l.getAppWidgetHost().startListening());
+        executeOnLauncher(l -> l.getAppWidgetHolder().startListening());
         verifyWidgetPresent(info);
         assertNull(mLauncher.getWorkspace().tryGetPendingWidget(100));
     }
diff --git a/tests/src/com/android/launcher3/ui/widget/RequestPinItemTest.java b/tests/src/com/android/launcher3/ui/widget/RequestPinItemTest.java
index 0db719e..bf9eb5a 100644
--- a/tests/src/com/android/launcher3/ui/widget/RequestPinItemTest.java
+++ b/tests/src/com/android/launcher3/ui/widget/RequestPinItemTest.java
@@ -42,6 +42,7 @@
 import com.android.launcher3.testcomponent.AppWidgetWithConfig;
 import com.android.launcher3.testcomponent.RequestPinItemActivity;
 import com.android.launcher3.ui.AbstractLauncherUiTest;
+import com.android.launcher3.ui.TaplTestsLauncher3;
 import com.android.launcher3.util.LauncherBindableItemsContainer.ItemOperator;
 import com.android.launcher3.util.Wait;
 import com.android.launcher3.util.Wait.Condition;
@@ -75,6 +76,7 @@
         super.setUp();
         mCallbackAction = UUID.randomUUID().toString();
         mShortcutId = UUID.randomUUID().toString();
+        TaplTestsLauncher3.initialize(this);
     }
 
     @Test
@@ -147,7 +149,8 @@
 
         // Set callback
         PendingIntent callback = PendingIntent.getBroadcast(mTargetContext, 0,
-                new Intent(mCallbackAction), FLAG_ONE_SHOT | FLAG_MUTABLE);
+                new Intent(mCallbackAction).setPackage(mTargetContext.getPackageName()),
+                FLAG_ONE_SHOT | FLAG_MUTABLE);
         mTargetContext.sendBroadcast(RequestPinItemActivity.getCommandIntent(
                 RequestPinItemActivity.class, "setCallback").putExtra(
                 RequestPinItemActivity.EXTRA_PARAM + "0", callback));
diff --git a/tests/src/com/android/launcher3/ui/workspace/ThemeIconsTest.java b/tests/src/com/android/launcher3/ui/workspace/ThemeIconsTest.java
index e66810c..7ba0b53 100644
--- a/tests/src/com/android/launcher3/ui/workspace/ThemeIconsTest.java
+++ b/tests/src/com/android/launcher3/ui/workspace/ThemeIconsTest.java
@@ -32,8 +32,10 @@
 import com.android.launcher3.icons.ThemedIconDrawable;
 import com.android.launcher3.tapl.HomeAllApps;
 import com.android.launcher3.tapl.HomeAppIcon;
+import com.android.launcher3.tapl.HomeAppIconMenuItem;
 import com.android.launcher3.ui.AbstractLauncherUiTest;
 import com.android.launcher3.ui.TaplTestsLauncher3;
+import com.android.launcher3.util.Executors;
 
 import org.junit.Test;
 
@@ -48,7 +50,9 @@
 @LargeTest
 public class ThemeIconsTest extends AbstractLauncherUiTest {
 
-    private static final String APP_NAME = "ThemeIconTestActivity";
+    private static final String APP_NAME = "IconThemedActivity";
+    private static final String SHORTCUT_APP_NAME = "LauncherTestApp";
+    private static final String SHORTCUT_NAME = "Shortcut 1";
 
     @Test
     public void testIconWithoutTheme() throws Exception {
@@ -60,9 +64,28 @@
 
         try {
             HomeAppIcon icon = allApps.getAppIcon(APP_NAME);
-            executeOnLauncher(l -> verifyIconTheme(l.getAppsView(), false));
+            executeOnLauncher(l -> verifyIconTheme(APP_NAME, l.getAppsView(), false));
             icon.dragToWorkspace(false, false);
-            executeOnLauncher(l -> verifyIconTheme(l.getWorkspace(), false));
+            executeOnLauncher(l -> verifyIconTheme(APP_NAME, l.getWorkspace(), false));
+        } finally {
+            allApps.unfreeze();
+        }
+    }
+
+    @Test
+    public void testShortcutIconWithoutTheme() throws Exception {
+        setThemeEnabled(false);
+        TaplTestsLauncher3.initialize(this);
+
+        HomeAllApps allApps = mLauncher.getWorkspace().switchToAllApps();
+        allApps.freeze();
+
+        try {
+            HomeAppIcon icon = allApps.getAppIcon(SHORTCUT_APP_NAME);
+            HomeAppIconMenuItem shortcutItem =
+                    (HomeAppIconMenuItem) icon.openDeepShortcutMenu().getMenuItem(SHORTCUT_NAME);
+            shortcutItem.dragToWorkspace(false, false);
+            executeOnLauncher(l -> verifyIconTheme(SHORTCUT_NAME, l.getWorkspace(), false));
         } finally {
             allApps.unfreeze();
         }
@@ -78,15 +101,41 @@
 
         try {
             HomeAppIcon icon = allApps.getAppIcon(APP_NAME);
-            executeOnLauncher(l -> verifyIconTheme(l.getAppsView(), false));
+            executeOnLauncher(l -> verifyIconTheme(APP_NAME, l.getAppsView(), false));
             icon.dragToWorkspace(false, false);
-            executeOnLauncher(l -> verifyIconTheme(l.getWorkspace(), true));
+            executeOnLauncher(l -> verifyIconTheme(APP_NAME, l.getWorkspace(), true));
         } finally {
             allApps.unfreeze();
         }
     }
 
-    private void verifyIconTheme(ViewGroup parent, boolean isThemed) {
+    @Test
+    public void testShortcutIconWithTheme() throws Exception {
+        setThemeEnabled(true);
+        TaplTestsLauncher3.initialize(this);
+
+        HomeAllApps allApps = mLauncher.getWorkspace().switchToAllApps();
+        allApps.freeze();
+
+        try {
+            HomeAppIcon icon = allApps.getAppIcon(SHORTCUT_APP_NAME);
+            HomeAppIconMenuItem shortcutItem =
+                    (HomeAppIconMenuItem) icon.openDeepShortcutMenu().getMenuItem(SHORTCUT_NAME);
+            shortcutItem.dragToWorkspace(false, false);
+            executeOnLauncher(l -> verifyIconTheme(SHORTCUT_NAME, l.getWorkspace(), true));
+        } finally {
+            allApps.unfreeze();
+        }
+    }
+
+    private void verifyIconTheme(String title, ViewGroup parent, boolean isThemed) {
+        // Wait for Launcher model to be completed
+        try {
+            Executors.MODEL_EXECUTOR.submit(() -> { }).get();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+
         // Find the app icon
         Queue<View> viewQueue = new ArrayDeque<>();
         viewQueue.add(parent);
@@ -100,7 +149,7 @@
                 }
             } else if (view instanceof BubbleTextView) {
                 BubbleTextView btv = (BubbleTextView) view;
-                if (APP_NAME.equals(btv.getText())) {
+                if (title.equals(btv.getText())) {
                     icon = btv;
                     break;
                 }
diff --git a/tests/src/com/android/launcher3/ui/workspace/TwoPanelWorkspaceTest.java b/tests/src/com/android/launcher3/ui/workspace/TwoPanelWorkspaceTest.java
index f646b50..c4b6d43 100644
--- a/tests/src/com/android/launcher3/ui/workspace/TwoPanelWorkspaceTest.java
+++ b/tests/src/com/android/launcher3/ui/workspace/TwoPanelWorkspaceTest.java
@@ -30,7 +30,10 @@
 import com.android.launcher3.tapl.Workspace;
 import com.android.launcher3.ui.AbstractLauncherUiTest;
 import com.android.launcher3.ui.TaplTestsLauncher3;
+import com.android.launcher3.util.LauncherLayoutBuilder;
+import com.android.launcher3.util.TestUtil;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -48,21 +51,43 @@
 @RunWith(AndroidJUnit4.class)
 public class TwoPanelWorkspaceTest extends AbstractLauncherUiTest {
 
+    private AutoCloseable mLauncherLayout;
+
     @Before
     public void setUp() throws Exception {
         super.setUp();
-        TaplTestsLauncher3.initialize(this);
 
+        // Set layout that includes Maps/Play on workspace, and Messaging/Chrome on hotseat.
+        LauncherLayoutBuilder builder = new LauncherLayoutBuilder()
+                .atHotseat(0).putApp(
+                        "com.google.android.apps.messaging",
+                        "com.google.android.apps.messaging.ui.ConversationListActivity")
+                .atHotseat(1).putApp("com.android.chrome", "com.google.android.apps.chrome.Main")
+                .atWorkspace(0, -1, 0).putApp(
+                        "com.google.android.apps.maps", "com.google.android.maps.MapsActivity")
+                .atWorkspace(3, -1, 0).putApp(
+                        "com.android.vending", "com.android.vending.AssetBrowserActivity");
+        mLauncherLayout = TestUtil.setLauncherDefaultLayout(mTargetContext, builder);
+        TaplTestsLauncher3.initialize(this);
         assumeTrue(mLauncher.isTwoPanels());
 
         // Pre verifying the screens
         executeOnLauncher(launcher -> {
+            launcher.enableHotseatEdu(false);
             assertPagesExist(launcher, 0, 1);
             assertItemsOnPage(launcher, 0, "Play Store", "Maps");
             assertPageEmpty(launcher, 1);
         });
     }
 
+    @After
+    public void tearDown() throws Exception {
+        executeOnLauncher(launcher -> launcher.enableHotseatEdu(true));
+        if (mLauncherLayout != null) {
+            mLauncherLayout.close();
+        }
+    }
+
     @Test
     @PortraitLandscape
     public void testDragIconToRightPanel() {
@@ -339,4 +364,4 @@
                         + itemTitleSet.stream().collect(Collectors.joining(",")),
                 itemTitleSet.isEmpty());
     }
-}
+}
\ No newline at end of file
diff --git a/tests/src/com/android/launcher3/util/ActivityContextWrapper.java b/tests/src/com/android/launcher3/util/ActivityContextWrapper.java
index 2618a2e..191d284 100644
--- a/tests/src/com/android/launcher3/util/ActivityContextWrapper.java
+++ b/tests/src/com/android/launcher3/util/ActivityContextWrapper.java
@@ -20,15 +20,21 @@
 import android.view.ContextThemeWrapper;
 
 import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
 import com.android.launcher3.InvariantDeviceProfile;
 import com.android.launcher3.views.ActivityContext;
 import com.android.launcher3.views.BaseDragLayer;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * {@link ContextWrapper} with internal Launcher interface for testing
  */
 public class ActivityContextWrapper extends ContextThemeWrapper implements ActivityContext {
 
+    private final List<OnDeviceProfileChangeListener> mDpChangeListeners = new ArrayList<>();
+
     private final DeviceProfile mProfile;
     private final MyDragLayer mMyDragLayer;
 
@@ -44,6 +50,11 @@
     }
 
     @Override
+    public List<OnDeviceProfileChangeListener> getOnDeviceProfileChangeListeners() {
+        return mDpChangeListeners;
+    }
+
+    @Override
     public DeviceProfile getDeviceProfile() {
         return mProfile;
     }
diff --git a/tests/src/com/android/launcher3/util/KotlinMockitoHelpers.kt b/tests/src/com/android/launcher3/util/KotlinMockitoHelpers.kt
index 57db13a..c9c9616 100644
--- a/tests/src/com/android/launcher3/util/KotlinMockitoHelpers.kt
+++ b/tests/src/com/android/launcher3/util/KotlinMockitoHelpers.kt
@@ -22,43 +22,41 @@
  * be null"). To fix this, we can use methods that modify the return type to be nullable. This
  * causes Kotlin to skip the null checks.
  */
-
 import org.mockito.ArgumentCaptor
 import org.mockito.Mockito
 
 /**
- * Returns Mockito.eq() as nullable type to avoid java.lang.IllegalStateException when
- * null is returned.
+ * Returns Mockito.eq() as nullable type to avoid java.lang.IllegalStateException when null is
+ * returned.
  *
  * Generic T is nullable because implicitly bounded by Any?.
  */
 fun <T> eq(obj: T): T = Mockito.eq<T>(obj)
 
 /**
- * Returns Mockito.same() as nullable type to avoid java.lang.IllegalStateException when
- * null is returned.
+ * Returns Mockito.same() as nullable type to avoid java.lang.IllegalStateException when null is
+ * returned.
  *
  * Generic T is nullable because implicitly bounded by Any?.
  */
 fun <T> same(obj: T): T = Mockito.same<T>(obj)
 
 /**
- * Returns Mockito.any() as nullable type to avoid java.lang.IllegalStateException when
- * null is returned.
+ * Returns Mockito.any() as nullable type to avoid java.lang.IllegalStateException when null is
+ * returned.
  *
  * Generic T is nullable because implicitly bounded by Any?.
  */
 fun <T> any(type: Class<T>): T = Mockito.any<T>(type)
+
 inline fun <reified T> any(): T = any(T::class.java)
 
-/**
- * Kotlin type-inferred version of Mockito.nullable()
- */
+/** Kotlin type-inferred version of Mockito.nullable() */
 inline fun <reified T> nullable(): T? = Mockito.nullable(T::class.java)
 
 /**
- * Returns ArgumentCaptor.capture() as nullable type to avoid java.lang.IllegalStateException
- * when null is returned.
+ * Returns ArgumentCaptor.capture() as nullable type to avoid java.lang.IllegalStateException when
+ * null is returned.
  *
  * Generic T is nullable because implicitly bounded by Any?.
  */
@@ -82,8 +80,9 @@
 /**
  * A kotlin implemented wrapper of [ArgumentCaptor] which prevents the following exception when
  * kotlin tests are mocking kotlin objects and the methods take non-null parameters:
- *
+ * ```
  *     java.lang.NullPointerException: capture() must not be null
+ * ```
  */
 class KotlinArgumentCaptor<T> constructor(clazz: Class<T>) {
     private val wrapped: ArgumentCaptor<T> = ArgumentCaptor.forClass(clazz)
@@ -103,13 +102,16 @@
 /**
  * Helper function for creating and using a single-use ArgumentCaptor in kotlin.
  *
+ * ```
  *    val captor = argumentCaptor<Foo>()
  *    verify(...).someMethod(captor.capture())
  *    val captured = captor.value
+ * ```
  *
  * becomes:
- *
+ * ```
  *    val captured = withArgCaptor<Foo> { verify(...).someMethod(capture()) }
+ * ```
  *
  * NOTE: this uses the KotlinArgumentCaptor to avoid the NullPointerException.
  */
diff --git a/tests/src/com/android/launcher3/util/LauncherLayoutBuilder.java b/tests/src/com/android/launcher3/util/LauncherLayoutBuilder.java
index 4e21dce..ba01b04 100644
--- a/tests/src/com/android/launcher3/util/LauncherLayoutBuilder.java
+++ b/tests/src/com/android/launcher3/util/LauncherLayoutBuilder.java
@@ -39,6 +39,7 @@
     private static final String TAG_AUTO_INSTALL = "autoinstall";
     private static final String TAG_FOLDER = "folder";
     private static final String TAG_APPWIDGET = "appwidget";
+    private static final String TAG_SHORTCUT = "shortcut";
     private static final String TAG_EXTRA = "extra";
 
     private static final String ATTR_CONTAINER = "container";
@@ -49,6 +50,7 @@
     private static final String ATTR_TITLE = "title";
     private static final String ATTR_TITLE_TEXT = "titleText";
     private static final String ATTR_SCREEN = "screen";
+    private static final String ATTR_SHORTCUT_ID = "shortcutId";
 
     // x and y can be specified as negative integers, in which case -1 represents the
     // last row / column, -2 represents the second last, and so on.
@@ -135,6 +137,13 @@
             return LauncherLayoutBuilder.this;
         }
 
+        public LauncherLayoutBuilder putShortcut(String packageName, String shortcutId) {
+            items.put(ATTR_PACKAGE_NAME, packageName);
+            items.put(ATTR_SHORTCUT_ID, shortcutId);
+            mNodes.add(Pair.create(TAG_SHORTCUT, items));
+            return LauncherLayoutBuilder.this;
+        }
+
         public LauncherLayoutBuilder putWidget(String packageName, String className,
                 int spanX, int spanY) {
             items.put(ATTR_PACKAGE_NAME, packageName);
@@ -175,6 +184,14 @@
             return this;
         }
 
+        public FolderBuilder addShortcut(String packageName, String shortcutId) {
+            HashMap<String, Object> items = new HashMap<>();
+            items.put(ATTR_PACKAGE_NAME, packageName);
+            items.put(ATTR_SHORTCUT_ID, shortcutId);
+            mChildren.add(Pair.create(TAG_SHORTCUT, items));
+            return this;
+        }
+
         public LauncherLayoutBuilder build() {
             return LauncherLayoutBuilder.this;
         }
diff --git a/tests/src/com/android/launcher3/util/LauncherModelHelper.java b/tests/src/com/android/launcher3/util/LauncherModelHelper.java
index 3324959..976afcd 100644
--- a/tests/src/com/android/launcher3/util/LauncherModelHelper.java
+++ b/tests/src/com/android/launcher3/util/LauncherModelHelper.java
@@ -47,6 +47,7 @@
 import android.test.mock.MockContentResolver;
 import android.util.ArrayMap;
 
+import androidx.annotation.NonNull;
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.uiautomator.UiDevice;
 
@@ -54,6 +55,7 @@
 import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.LauncherModel;
 import com.android.launcher3.LauncherModel.ModelUpdateTask;
+import com.android.launcher3.LauncherPrefs;
 import com.android.launcher3.LauncherProvider;
 import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.model.AllAppsList;
@@ -111,7 +113,7 @@
     private final HashMap<Class, HashMap<String, Field>> mFieldCache = new HashMap<>();
     private final MockContentResolver mMockResolver = new MockContentResolver();
     public final TestLauncherProvider provider;
-    public final SanboxModelContext sandboxContext;
+    public final SandboxModelContext sandboxContext;
 
     public final long defaultProfileId;
 
@@ -126,13 +128,13 @@
         Settings.Global.getString(context.getContentResolver(), "test");
 
         provider = new TestLauncherProvider();
-        sandboxContext = new SanboxModelContext();
+        sandboxContext = new SandboxModelContext();
         defaultProfileId = UserCache.INSTANCE.get(sandboxContext)
                 .getSerialNumberForUser(Process.myUserHandle());
         setupProvider(LauncherProvider.AUTHORITY, provider);
     }
 
-    protected void setupProvider(String authority, ContentProvider provider) {
+    public void setupProvider(String authority, ContentProvider provider) {
         ProviderInfo providerInfo = new ProviderInfo();
         providerInfo.authority = authority;
         providerInfo.applicationInfo = sandboxContext.getApplicationInfo();
@@ -194,8 +196,9 @@
         Executor mockExecutor = mock(Executor.class);
         model.enqueueModelUpdateTask(new ModelUpdateTask() {
             @Override
-            public void init(LauncherAppState app, LauncherModel model, BgDataModel dataModel,
-                    AllAppsList allAppsList, Executor uiExecutor) {
+            public void init(@NonNull final LauncherAppState app,
+                    @NonNull final LauncherModel model, @NonNull final BgDataModel dataModel,
+                    @NonNull final AllAppsList allAppsList, @NonNull final Executor uiExecutor) {
                 task.init(app, model, dataModel, allAppsList, mockExecutor);
             }
 
@@ -360,54 +363,6 @@
         sandboxContext.getContentResolver().insert(contentUri, values);
     }
 
-    public int[][][] createGrid(int[][][] typeArray) {
-        return createGrid(typeArray, 1);
-    }
-
-    public int[][][] createGrid(int[][][] typeArray, int startScreen) {
-        LauncherSettings.Settings.call(sandboxContext.getContentResolver(),
-                LauncherSettings.Settings.METHOD_CREATE_EMPTY_DB);
-        LauncherSettings.Settings.call(sandboxContext.getContentResolver(),
-                LauncherSettings.Settings.METHOD_CLEAR_EMPTY_DB_FLAG);
-        return createGrid(typeArray, startScreen, defaultProfileId);
-    }
-
-    /**
-     * Initializes the DB with mock elements to represent the provided grid structure.
-     * @param typeArray A 3d array of item types. {@see #addItem(int, long, long, int, int)} for
-     *                  type definitions. The first dimension represents the screens and the next
-     *                  two represent the workspace grid.
-     * @param startScreen First screen id from where the icons will be added.
-     * @return the same grid representation where each entry is the corresponding item id.
-     */
-    public int[][][] createGrid(int[][][] typeArray, int startScreen, long profileId) {
-        int[][][] ids = new int[typeArray.length][][];
-        for (int i = 0; i < typeArray.length; i++) {
-            // Add screen to DB
-            int screenId = startScreen + i;
-
-            // Keep the screen id counter up to date
-            LauncherSettings.Settings.call(sandboxContext.getContentResolver(),
-                    LauncherSettings.Settings.METHOD_NEW_SCREEN_ID);
-
-            ids[i] = new int[typeArray[i].length][];
-            for (int y = 0; y < typeArray[i].length; y++) {
-                ids[i][y] = new int[typeArray[i][y].length];
-                for (int x = 0; x < typeArray[i][y].length; x++) {
-                    if (typeArray[i][y][x] < 0) {
-                        // Empty cell
-                        ids[i][y][x] = -1;
-                    } else {
-                        ids[i][y][x] = addItem(
-                                typeArray[i][y][x], screenId, DESKTOP, x, y, profileId);
-                    }
-                }
-            }
-        }
-
-        return ids;
-    }
-
     /**
      * Sets up a mock provider to load the provided layout by default, next time the layout loads
      */
@@ -465,12 +420,7 @@
         }
 
         public SQLiteDatabase getDb() {
-            createDbIfNotExists();
-            return mOpenHelper.getWritableDatabase();
-        }
-
-        public DatabaseHelper getHelper() {
-            return mOpenHelper;
+            return getModelDbController().getDb();
         }
     }
 
@@ -490,24 +440,24 @@
         return success;
     }
 
-    public class SanboxModelContext extends SandboxContext {
+    public class SandboxModelContext extends SandboxContext {
 
         private final ArrayMap<String, Object> mSpiedServices = new ArrayMap<>();
         private final PackageManager mPm;
         private final File mDbDir;
 
-        SanboxModelContext() {
+        SandboxModelContext() {
             super(ApplicationProvider.getApplicationContext(),
-                    UserCache.INSTANCE, InstallSessionHelper.INSTANCE,
+                    UserCache.INSTANCE, InstallSessionHelper.INSTANCE, LauncherPrefs.INSTANCE,
                     LauncherAppState.INSTANCE, InvariantDeviceProfile.INSTANCE,
                     DisplayController.INSTANCE, CustomWidgetManager.INSTANCE,
-                    SettingsCache.INSTANCE, PluginManagerWrapper.INSTANCE,
+                    SettingsCache.INSTANCE, PluginManagerWrapper.INSTANCE, LockedUserState.INSTANCE,
                     ItemInstallQueue.INSTANCE, WindowManagerProxy.INSTANCE);
             mPm = spy(getBaseContext().getPackageManager());
             mDbDir = new File(getCacheDir(), UUID.randomUUID().toString());
         }
 
-        public SanboxModelContext allow(MainThreadInitializedObject object) {
+        public SandboxModelContext allow(MainThreadInitializedObject object) {
             mAllowedObjects.add(object);
             return this;
         }
diff --git a/tests/src/com/android/launcher3/util/LockedUserStateTest.kt b/tests/src/com/android/launcher3/util/LockedUserStateTest.kt
new file mode 100644
index 0000000..84156e7
--- /dev/null
+++ b/tests/src/com/android/launcher3/util/LockedUserStateTest.kt
@@ -0,0 +1,88 @@
+/*
+ * 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.launcher3.util
+
+import android.content.Context
+import android.content.Intent
+import android.os.Process
+import android.os.UserManager
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.google.common.truth.Truth.assertThat
+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.Mockito.verifyZeroInteractions
+import org.mockito.Mockito.`when`
+import org.mockito.MockitoAnnotations
+
+/** Unit tests for {@link LockedUserUtil} */
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class LockedUserStateTest {
+
+    @Mock lateinit var userManager: UserManager
+    @Mock lateinit var context: Context
+
+    @Before
+    fun setup() {
+        MockitoAnnotations.initMocks(this)
+        `when`(context.getSystemService(UserManager::class.java)).thenReturn(userManager)
+    }
+
+    @Test
+    fun runOnUserUnlocked_runs_action_immediately_if_already_unlocked() {
+        `when`(userManager.isUserUnlocked(Process.myUserHandle())).thenReturn(true)
+        LockedUserState.INSTANCE.initializeForTesting(LockedUserState(context))
+        val action: Runnable = mock()
+
+        LockedUserState.get(context).runOnUserUnlocked(action)
+        verify(action).run()
+    }
+
+    @Test
+    fun runOnUserUnlocked_waits_to_run_action_until_user_is_unlocked() {
+        `when`(userManager.isUserUnlocked(Process.myUserHandle())).thenReturn(false)
+        LockedUserState.INSTANCE.initializeForTesting(LockedUserState(context))
+        val action: Runnable = mock()
+
+        LockedUserState.get(context).runOnUserUnlocked(action)
+        verifyZeroInteractions(action)
+
+        LockedUserState.get(context)
+            .mUserUnlockedReceiver
+            .onReceive(context, Intent(Intent.ACTION_USER_UNLOCKED))
+
+        verify(action).run()
+    }
+
+    @Test
+    fun isUserUnlocked_returns_true_when_user_is_unlocked() {
+        `when`(userManager.isUserUnlocked(Process.myUserHandle())).thenReturn(true)
+        LockedUserState.INSTANCE.initializeForTesting(LockedUserState(context))
+        assertThat(LockedUserState.get(context).isUserUnlocked).isTrue()
+    }
+
+    @Test
+    fun isUserUnlocked_returns_false_when_user_is_locked() {
+        `when`(userManager.isUserUnlocked(Process.myUserHandle())).thenReturn(false)
+        LockedUserState.INSTANCE.initializeForTesting(LockedUserState(context))
+        assertThat(LockedUserState.get(context).isUserUnlocked).isFalse()
+    }
+}
diff --git a/tests/src/com/android/launcher3/util/MultiAdditivePropertyTest.kt b/tests/src/com/android/launcher3/util/MultiPropertyFactoryTest.kt
similarity index 66%
rename from tests/src/com/android/launcher3/util/MultiAdditivePropertyTest.kt
rename to tests/src/com/android/launcher3/util/MultiPropertyFactoryTest.kt
index 309d055..a63136e 100644
--- a/tests/src/com/android/launcher3/util/MultiAdditivePropertyTest.kt
+++ b/tests/src/com/android/launcher3/util/MultiPropertyFactoryTest.kt
@@ -16,38 +16,44 @@
 
 package com.android.launcher3.util
 
-import android.view.View
+import android.util.FloatProperty
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth.assertThat
 import org.junit.Test
 import org.junit.runner.RunWith
 
-/** Unit tests for [MultiAdditivePropertyFactory] */
+/** Unit tests for [MultiPropertyFactory] */
 @SmallTest
 @RunWith(AndroidJUnit4::class)
-class MultiAdditivePropertyTest {
+class MultiPropertyFactoryTest {
 
     private val received = mutableListOf<Float>()
 
-    private val factory =
-        object : MultiAdditivePropertyFactory<View?>("Test", View.TRANSLATION_X) {
-            override fun apply(obj: View?, value: Float) {
+    private val receiveProperty: FloatProperty<Any> =
+        object : FloatProperty<Any>("receive") {
+            override fun setValue(obj: Any?, value: Float) {
                 received.add(value)
             }
+            override fun get(o: Any): Float {
+                return 0f
+            }
         }
 
-    private val p1 = factory.get(1)
-    private val p2 = factory.get(2)
-    private val p3 = factory.get(3)
+    private val factory =
+        MultiPropertyFactory(null, receiveProperty, 3) { x: Float, y: Float -> x + y }
+
+    private val p1 = factory.get(0)
+    private val p2 = factory.get(1)
+    private val p3 = factory.get(2)
 
     @Test
     fun set_sameIndexes_allApplied() {
         val v1 = 50f
         val v2 = 100f
-        p1.set(null, v1)
-        p1.set(null, v1)
-        p1.set(null, v2)
+        p1.value = v1
+        p1.value = v1
+        p1.value = v2
 
         assertThat(received).containsExactly(v1, v1, v2)
     }
@@ -57,9 +63,9 @@
         val v1 = 50f
         val v2 = 100f
         val v3 = 150f
-        p1.set(null, v1)
-        p2.set(null, v2)
-        p3.set(null, v3)
+        p1.value = v1
+        p2.value = v2
+        p3.value = v3
 
         assertThat(received).containsExactly(v1, v1 + v2, v1 + v2 + v3)
     }
diff --git a/tests/src/com/android/launcher3/util/TestResourceHelper.kt b/tests/src/com/android/launcher3/util/TestResourceHelper.kt
new file mode 100644
index 0000000..fb03fe1
--- /dev/null
+++ b/tests/src/com/android/launcher3/util/TestResourceHelper.kt
@@ -0,0 +1,34 @@
+/*
+ * 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.launcher3.util
+
+import android.content.Context
+import android.content.res.TypedArray
+import android.util.AttributeSet
+import com.android.launcher3.R
+import com.android.launcher3.tests.R as TestR
+import kotlin.IntArray
+
+class TestResourceHelper(private val context: Context, private val specsFileId: Int) :
+    ResourceHelper(context, specsFileId) {
+    override fun obtainStyledAttributes(attrs: AttributeSet, styleId: IntArray): TypedArray {
+        var clone = styleId.clone()
+        if (styleId == R.styleable.SpecSize) clone = TestR.styleable.SpecSize
+        else if (styleId == R.styleable.WorkspaceSpec) clone = TestR.styleable.WorkspaceSpec
+        return context.obtainStyledAttributes(attrs, clone)
+    }
+}
diff --git a/tests/src/com/android/launcher3/util/TestUtil.java b/tests/src/com/android/launcher3/util/TestUtil.java
index 67f3902..f8cd995 100644
--- a/tests/src/com/android/launcher3/util/TestUtil.java
+++ b/tests/src/com/android/launcher3/util/TestUtil.java
@@ -15,23 +15,56 @@
  */
 package com.android.launcher3.util;
 
+import static android.util.Base64.NO_PADDING;
+import static android.util.Base64.NO_WRAP;
+
 import static androidx.test.InstrumentationRegistry.getContext;
 import static androidx.test.InstrumentationRegistry.getInstrumentation;
+import static androidx.test.InstrumentationRegistry.getTargetContext;
 
+import static com.android.launcher3.LauncherSettings.Settings.LAYOUT_DIGEST_KEY;
+import static com.android.launcher3.LauncherSettings.Settings.LAYOUT_DIGEST_LABEL;
+import static com.android.launcher3.LauncherSettings.Settings.LAYOUT_DIGEST_TAG;
+
+import android.app.blob.BlobHandle;
+import android.app.blob.BlobStoreManager;
+import android.content.Context;
+import android.content.pm.LauncherApps;
 import android.content.res.Resources;
+import android.os.AsyncTask;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.ParcelFileDescriptor.AutoCloseOutputStream;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.util.Base64;
 
 import androidx.test.uiautomator.UiDevice;
 
+import com.android.launcher3.config.FeatureFlags;
+import com.android.launcher3.config.FeatureFlags.BooleanFlag;
+import com.android.launcher3.config.FeatureFlags.IntFlag;
+
 import org.junit.Assert;
 
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
+import java.security.MessageDigest;
+import java.util.concurrent.CountDownLatch;
+import java.util.function.Predicate;
+import java.util.function.ToIntFunction;
 
 public class TestUtil {
     public static final String DUMMY_PACKAGE = "com.example.android.aardwolf";
+    public static final int DEFAULT_USER_ID = 0;
 
     public static void installDummyApp() throws IOException {
+        installDummyAppForUser(DEFAULT_USER_ID);
+    }
+
+    public static void installDummyAppForUser(int userId) throws IOException {
         // Copy apk from resources to a local file and install from there.
         final Resources resources = getContext().getResources();
         final InputStream in = resources.openRawResource(
@@ -40,24 +73,136 @@
         final String apkFilename = getInstrumentation().getTargetContext().
                 getFilesDir().getPath() + "/dummy_app.apk";
 
-        final FileOutputStream out = new FileOutputStream(apkFilename);
-        byte[] buff = new byte[1024];
-        int read;
+        try (PackageInstallCheck pic = new PackageInstallCheck()) {
+            final FileOutputStream out = new FileOutputStream(apkFilename);
+            byte[] buff = new byte[1024];
+            int read;
 
-        while ((read = in.read(buff)) > 0) {
-            out.write(buff, 0, read);
+            while ((read = in.read(buff)) > 0) {
+                out.write(buff, 0, read);
+            }
+            in.close();
+            out.close();
+
+            final String result = UiDevice.getInstance(getInstrumentation())
+                    .executeShellCommand("pm install --user " + userId + " " + apkFilename);
+            Assert.assertTrue(
+                    "Failed to install wellbeing test apk; make sure the device is rooted",
+                    "Success".equals(result.replaceAll("\\s+", "")));
+            pic.mAddWait.await();
+        } catch (InterruptedException e) {
+            throw new IOException(e);
         }
-        in.close();
-        out.close();
+    }
 
-        final String result = UiDevice.getInstance(getInstrumentation())
-                .executeShellCommand("pm install " + apkFilename);
-        Assert.assertTrue("Failed to install wellbeing test apk; make sure the device is rooted",
-                "Success".equals(result.replaceAll("\\s+", "")));
+    /**
+     * Utility class to override a boolean flag during test. Note that the returned SafeCloseable
+     * must be closed to restore the original state
+     */
+    public static SafeCloseable overrideFlag(BooleanFlag flag, boolean value) {
+        Predicate<BooleanFlag> originalProxy = FeatureFlags.sBooleanReader;
+        Predicate<BooleanFlag> testProxy = f -> f == flag ? value : originalProxy.test(f);
+        FeatureFlags.sBooleanReader = testProxy;
+        return () -> {
+            if (FeatureFlags.sBooleanReader == testProxy) {
+                FeatureFlags.sBooleanReader = originalProxy;
+            }
+        };
+    }
+
+    /**
+     * Utility class to override a int flag during test. Note that the returned SafeCloseable
+     * must be closed to restore the original state
+     */
+    public static SafeCloseable overrideFlag(IntFlag flag, int value) {
+        ToIntFunction<IntFlag> originalProxy = FeatureFlags.sIntReader;
+        ToIntFunction<IntFlag> testProxy = f -> f == flag ? value : originalProxy.applyAsInt(f);
+        FeatureFlags.sIntReader = testProxy;
+        return () -> {
+            if (FeatureFlags.sIntReader == testProxy) {
+                FeatureFlags.sIntReader = originalProxy;
+            }
+        };
     }
 
     public static void uninstallDummyApp() throws IOException {
         UiDevice.getInstance(getInstrumentation()).executeShellCommand(
                 "pm uninstall " + DUMMY_PACKAGE);
     }
+
+    /**
+     * Sets the default layout for Launcher and returns an object which can be used to clear
+     * the data
+     */
+    public static AutoCloseable setLauncherDefaultLayout(
+            Context context, LauncherLayoutBuilder layoutBuilder) throws Exception {
+        byte[] data = layoutBuilder.build().getBytes();
+        byte[] digest = MessageDigest.getInstance("SHA-256").digest(data);
+
+        BlobHandle handle = BlobHandle.createWithSha256(
+                digest, LAYOUT_DIGEST_LABEL, 0, LAYOUT_DIGEST_TAG);
+        BlobStoreManager blobManager = context.getSystemService(BlobStoreManager.class);
+        final long sessionId = blobManager.createSession(handle);
+        CountDownLatch wait = new CountDownLatch(1);
+        try (BlobStoreManager.Session session = blobManager.openSession(sessionId)) {
+            try (OutputStream out = new AutoCloseOutputStream(session.openWrite(0, -1))) {
+                out.write(data);
+            }
+            session.allowPublicAccess();
+            session.commit(AsyncTask.THREAD_POOL_EXECUTOR, i -> wait.countDown());
+        }
+
+        String key = Base64.encodeToString(digest, NO_WRAP | NO_PADDING);
+        Settings.Secure.putString(context.getContentResolver(), LAYOUT_DIGEST_KEY, key);
+        wait.await();
+        return () ->
+            Settings.Secure.putString(context.getContentResolver(), LAYOUT_DIGEST_KEY, null);
+    }
+
+    private static class PackageInstallCheck extends LauncherApps.Callback
+            implements AutoCloseable {
+
+        final CountDownLatch mAddWait = new CountDownLatch(1);
+        final LauncherApps mLauncherApps;
+
+        PackageInstallCheck() {
+            mLauncherApps = getTargetContext().getSystemService(LauncherApps.class);
+            mLauncherApps.registerCallback(this, new Handler(Looper.getMainLooper()));
+        }
+
+        private void verifyPackage(String packageName) {
+            if (DUMMY_PACKAGE.equals(packageName)) {
+                mAddWait.countDown();
+            }
+        }
+
+        @Override
+        public void onPackageAdded(String packageName, UserHandle user) {
+            verifyPackage(packageName);
+        }
+
+        @Override
+        public void onPackageChanged(String packageName, UserHandle user) {
+            verifyPackage(packageName);
+        }
+
+        @Override
+        public void onPackageRemoved(String packageName, UserHandle user) { }
+
+        @Override
+        public void onPackagesAvailable(String[] packageNames, UserHandle user, boolean replacing) {
+            for (String packageName : packageNames) {
+                verifyPackage(packageName);
+            }
+        }
+
+        @Override
+        public void onPackagesUnavailable(String[] packageNames, UserHandle user,
+                boolean replacing) { }
+
+        @Override
+        public void close() {
+            mLauncherApps.unregisterCallback(this);
+        }
+    }
 }
diff --git a/tests/src/com/android/launcher3/util/TouchUtilTest.kt b/tests/src/com/android/launcher3/util/TouchUtilTest.kt
new file mode 100644
index 0000000..235d6ec
--- /dev/null
+++ b/tests/src/com/android/launcher3/util/TouchUtilTest.kt
@@ -0,0 +1,67 @@
+/*
+ * 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.launcher3.util
+
+import android.view.InputDevice
+import android.view.MotionEvent
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/** Unit tests for [TouchUtil] */
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class TouchUtilTest {
+
+    @Test
+    fun isMouseRightClickDownOrMove_onMouseRightButton_returnsTrue() {
+        val ev = MotionEvent.obtain(200, 300, MotionEvent.ACTION_MOVE, 1.0f, 0.0f, 0)
+        ev.source = InputDevice.SOURCE_MOUSE
+        ev.buttonState = MotionEvent.BUTTON_SECONDARY
+
+        assertThat(TouchUtil.isMouseRightClickDownOrMove(ev)).isTrue()
+    }
+
+    @Test
+    fun isMouseRightClickDownOrMove_onMouseLeftButton_returnsFalse() {
+        val ev = MotionEvent.obtain(200, 300, MotionEvent.ACTION_MOVE, 1.0f, 0.0f, 0)
+        ev.source = InputDevice.SOURCE_MOUSE
+        ev.buttonState = MotionEvent.BUTTON_PRIMARY
+
+        assertThat(TouchUtil.isMouseRightClickDownOrMove(ev)).isFalse()
+    }
+
+    @Test
+    fun isMouseRightClickDownOrMove_onMouseTertiaryButton_returnsFalse() {
+        val ev = MotionEvent.obtain(200, 300, MotionEvent.ACTION_MOVE, 1.0f, 0.0f, 0)
+        ev.source = InputDevice.SOURCE_MOUSE
+        ev.buttonState = MotionEvent.BUTTON_TERTIARY
+
+        assertThat(TouchUtil.isMouseRightClickDownOrMove(ev)).isFalse()
+    }
+
+    @Test
+    fun isMouseRightClickDownOrMove_onDpadRightButton_returnsFalse() {
+        val ev = MotionEvent.obtain(200, 300, MotionEvent.ACTION_MOVE, 1.0f, 0.0f, 0)
+        ev.source = InputDevice.SOURCE_DPAD
+        ev.buttonState = MotionEvent.BUTTON_SECONDARY
+
+        assertThat(TouchUtil.isMouseRightClickDownOrMove(ev)).isFalse()
+    }
+}
diff --git a/tests/src/com/android/launcher3/util/WidgetUtils.java b/tests/src/com/android/launcher3/util/WidgetUtils.java
index 6fc8491..b0df055 100644
--- a/tests/src/com/android/launcher3/util/WidgetUtils.java
+++ b/tests/src/com/android/launcher3/util/WidgetUtils.java
@@ -20,7 +20,6 @@
 
 import static com.android.launcher3.WorkspaceLayoutManager.FIRST_SCREEN_ID;
 
-import android.appwidget.AppWidgetHost;
 import android.appwidget.AppWidgetManager;
 import android.appwidget.AppWidgetProviderInfo;
 import android.content.ComponentName;
@@ -32,8 +31,8 @@
 import com.android.launcher3.LauncherSettings;
 import com.android.launcher3.model.data.ItemInfo;
 import com.android.launcher3.model.data.LauncherAppWidgetInfo;
-import com.android.launcher3.widget.LauncherAppWidgetHost;
 import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
+import com.android.launcher3.widget.LauncherWidgetHolder;
 import com.android.launcher3.widget.PendingAddWidgetInfo;
 import com.android.launcher3.widget.WidgetManagerHelper;
 
@@ -71,14 +70,19 @@
             pendingInfo.minSpanY = item.minSpanY;
             Bundle options = pendingInfo.getDefaultSizeOptions(targetContext);
 
-            AppWidgetHost host = new LauncherAppWidgetHost(targetContext);
-            int widgetId = host.allocateAppWidgetId();
-            if (!new WidgetManagerHelper(targetContext)
-                    .bindAppWidgetIdIfAllowed(widgetId, info, options)) {
-                host.deleteAppWidgetId(widgetId);
-                throw new IllegalArgumentException("Unable to bind widget id");
+            LauncherWidgetHolder holder = LauncherWidgetHolder.newInstance(targetContext);
+            try {
+                int widgetId = holder.allocateAppWidgetId();
+                if (!new WidgetManagerHelper(targetContext)
+                        .bindAppWidgetIdIfAllowed(widgetId, info, options)) {
+                    holder.deleteAppWidgetId(widgetId);
+                    throw new IllegalArgumentException("Unable to bind widget id");
+                }
+                item.appWidgetId = widgetId;
+            } finally {
+                // Necessary to destroy the holder to free up possible activity context
+                holder.destroy();
             }
-            item.appWidgetId = widgetId;
         }
         return item;
     }
diff --git a/tests/src/com/android/launcher3/util/rule/FailureWatcher.java b/tests/src/com/android/launcher3/util/rule/FailureWatcher.java
index 4c41d7e..7ca6a06 100644
--- a/tests/src/com/android/launcher3/util/rule/FailureWatcher.java
+++ b/tests/src/com/android/launcher3/util/rule/FailureWatcher.java
@@ -2,13 +2,16 @@
 
 import static androidx.test.InstrumentationRegistry.getInstrumentation;
 
-import android.content.Context;
 import android.os.FileUtils;
 import android.os.ParcelFileDescriptor.AutoCloseInputStream;
 import android.util.Log;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.test.core.app.ApplicationProvider;
 import androidx.test.uiautomator.UiDevice;
 
+import com.android.app.viewcapture.ViewCapture;
 import com.android.launcher3.tapl.LauncherInstrumentation;
 import com.android.launcher3.ui.AbstractLauncherUiTest;
 
@@ -26,13 +29,17 @@
 
 public class FailureWatcher extends TestWatcher {
     private static final String TAG = "FailureWatcher";
+    private static boolean sSavedBugreport = false;
     final private UiDevice mDevice;
     private final LauncherInstrumentation mLauncher;
+    @NonNull
+    private final ViewCapture mViewCapture;
 
-    public FailureWatcher(UiDevice device, LauncherInstrumentation launcher) {
+    public FailureWatcher(UiDevice device, LauncherInstrumentation launcher,
+            @NonNull ViewCapture viewCapture) {
         mDevice = device;
         mLauncher = launcher;
-        Log.d("b/196820244", "FailureWatcher.ctor", new Exception());
+        mViewCapture = viewCapture;
     }
 
     @Override
@@ -46,29 +53,9 @@
         return new Statement() {
             @Override
             public void evaluate() throws Throwable {
-                boolean success = false;
                 try {
-                    Log.d("b/196820244", "Before evaluate");
-                    mDevice.executeShellCommand("cmd statusbar tracing start");
                     FailureWatcher.super.apply(base, description).evaluate();
-                    Log.d("b/196820244", "After evaluate");
-                    success = true;
                 } finally {
-                    // Save artifact for Launcher Winscope trace.
-                    mDevice.executeShellCommand("cmd statusbar tracing stop");
-                    final Context nexusLauncherContext =
-                            getInstrumentation().getTargetContext()
-                                    .createPackageContext("com.google.android.apps.nexuslauncher",
-                                            0);
-                    final File launcherTrace =
-                            new File(nexusLauncherContext.getFilesDir(), "launcher_trace.pb");
-                    if (success) {
-                        mDevice.executeShellCommand("rm " + launcherTrace);
-                    } else {
-                        mDevice.executeShellCommand("mv " + launcherTrace + " "
-                                + diagFile(description, "LauncherWinscope", "pb"));
-                    }
-
                     // Detect touch events coming from physical screen.
                     if (mLauncher.hadNontestEvents()) {
                         throw new AssertionError(
@@ -84,7 +71,7 @@
 
     @Override
     protected void failed(Throwable e, Description description) {
-        onError(mLauncher, description, e);
+        onError(mLauncher, description, e, mViewCapture);
     }
 
     static File diagFile(Description description, String prefix, String ext) {
@@ -95,10 +82,12 @@
 
     public static void onError(LauncherInstrumentation launcher, Description description,
             Throwable e) {
-        final UiDevice device = launcher.getDevice();
-        Log.d("b/196820244", "onError 1");
-        if (device == null) return;
-        Log.d("b/196820244", "onError 2");
+        onError(launcher, description, e, null);
+    }
+
+    private static void onError(LauncherInstrumentation launcher, Description description,
+            Throwable e, @Nullable ViewCapture viewCapture) {
+
         final File sceenshot = diagFile(description, "TestScreenshot", "png");
         final File hierarchy = diagFile(description, "Hierarchy", "zip");
 
@@ -113,13 +102,20 @@
             out.putNextEntry(new ZipEntry("visible_windows.zip"));
             dumpCommand("cmd window dump-visible-window-views", out);
             out.closeEntry();
-        } catch (IOException ex) {
+
+            if (viewCapture != null) {
+                out.putNextEntry(new ZipEntry("FS/data/misc/wmtrace/failed_test.vc"));
+                viewCapture.dumpTo(out, ApplicationProvider.getApplicationContext());
+                out.closeEntry();
+            }
+        } catch (Exception ignored) {
         }
 
         Log.e(TAG, "Failed test " + description.getMethodName()
                 + ",\nscreenshot will be saved to " + sceenshot
                 + ",\nUI dump at: " + hierarchy
                 + " (use go/web-hv to open the dump file)", e);
+        final UiDevice device = launcher.getDevice();
         device.takeScreenshot(sceenshot);
 
         // Dump accessibility hierarchy
@@ -132,10 +128,10 @@
         dumpCommand("logcat -d -s TestRunner", diagFile(description, "FilteredLogcat", "txt"));
 
         // Dump bugreport
-        final String systemAnomalyMessage = launcher.getSystemAnomalyMessage(false, false);
-        if (systemAnomalyMessage != null) {
-            Log.d(TAG, "Saving bugreport, system anomaly message: " + systemAnomalyMessage, e);
+        if (!sSavedBugreport) {
             dumpCommand("bugreportz -s", diagFile(description, "Bugreport", "zip"));
+            // Not saving bugreport for each failure for time and space economy.
+            sSavedBugreport = true;
         }
     }
 
diff --git a/tests/src/com/android/launcher3/util/rule/LauncherActivityRule.java b/tests/src/com/android/launcher3/util/rule/LauncherActivityRule.java
index 2093682..e9a52f8 100644
--- a/tests/src/com/android/launcher3/util/rule/LauncherActivityRule.java
+++ b/tests/src/com/android/launcher3/util/rule/LauncherActivityRule.java
@@ -56,4 +56,4 @@
             return launcher.getWorkspace().getFirstMatch(op) != null;
         };
     }
-}
+}
\ No newline at end of file
diff --git a/tests/src/com/android/launcher3/util/rule/SimpleActivityRule.java b/tests/src/com/android/launcher3/util/rule/SimpleActivityRule.java
index 1dbba6a..2eedec3 100644
--- a/tests/src/com/android/launcher3/util/rule/SimpleActivityRule.java
+++ b/tests/src/com/android/launcher3/util/rule/SimpleActivityRule.java
@@ -102,4 +102,4 @@
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/tests/src/com/android/launcher3/util/rule/TISBindRule.java b/tests/src/com/android/launcher3/util/rule/TISBindRule.java
new file mode 100644
index 0000000..3ec4a29
--- /dev/null
+++ b/tests/src/com/android/launcher3/util/rule/TISBindRule.java
@@ -0,0 +1,81 @@
+/*
+ * 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.launcher3.util.rule;
+
+import android.app.UiAutomation;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.os.IBinder;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.test.platform.app.InstrumentationRegistry;
+
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+
+public class TISBindRule implements TestRule {
+    public static String TAG = "TISBindRule";
+    public static String INTENT_FILTER = "android.intent.action.QUICKSTEP_SERVICE";
+    public static String TIS_PERMISSIONS = "android.permission.STATUS_BAR_SERVICE";
+
+    private String getLauncherPackageName(Context context) {
+        return ComponentName.unflattenFromString(context.getString(
+                com.android.internal.R.string.config_recentsComponentName)).getPackageName();
+    }
+
+    private ServiceConnection createConnection() {
+        return new ServiceConnection() {
+            @Override
+            public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
+                Log.d(TAG, "Connected to TouchInteractionService");
+            }
+
+            @Override
+            public void onServiceDisconnected(ComponentName componentName) {
+                Log.d(TAG, "Disconnected from TouchInteractionService");
+            }
+        };
+    }
+
+    @NonNull
+    @Override
+    public Statement apply(@NonNull Statement base, @NonNull Description description) {
+        return new Statement() {
+
+            @Override
+            public void evaluate() throws Throwable {
+                Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
+                final ServiceConnection connection = createConnection();
+                UiAutomation uiAutomation =
+                        InstrumentationRegistry.getInstrumentation().getUiAutomation();
+                uiAutomation.adoptShellPermissionIdentity(TIS_PERMISSIONS);
+                Intent launchIntent = new Intent(INTENT_FILTER);
+                launchIntent.setPackage(getLauncherPackageName(context));
+                context.bindService(launchIntent, connection, Context.BIND_AUTO_CREATE);
+                uiAutomation.dropShellPermissionIdentity();
+                try {
+                    base.evaluate();
+                } finally {
+                    context.unbindService(connection);
+                }
+            }
+        };
+    }
+}
diff --git a/tests/src/com/android/launcher3/util/rule/ViewCaptureRule.kt b/tests/src/com/android/launcher3/util/rule/ViewCaptureRule.kt
new file mode 100644
index 0000000..0c65539
--- /dev/null
+++ b/tests/src/com/android/launcher3/util/rule/ViewCaptureRule.kt
@@ -0,0 +1,80 @@
+/*
+ * 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.launcher3.util.rule
+
+import android.app.Activity
+import android.app.Application
+import android.media.permission.SafeCloseable
+import android.os.Bundle
+import androidx.test.core.app.ApplicationProvider
+import com.android.app.viewcapture.SimpleViewCapture
+import com.android.app.viewcapture.ViewCapture.MAIN_EXECUTOR
+import com.android.launcher3.util.ActivityLifecycleCallbacksAdapter
+import org.junit.rules.TestRule
+import org.junit.runner.Description
+import org.junit.runners.model.Statement
+
+/**
+ * This JUnit TestRule registers a listener for activity lifecycle events to attach a ViewCapture
+ * instance that other test rules use to dump the timelapse hierarchy upon an error during a test.
+ *
+ * This rule will not work in OOP tests that don't have access to the activity under test.
+ */
+class ViewCaptureRule : TestRule {
+    val viewCapture = SimpleViewCapture("test-view-capture")
+
+    override fun apply(base: Statement, description: Description): Statement {
+        return object : Statement() {
+            override fun evaluate() {
+                val windowListenerCloseables = mutableListOf<SafeCloseable>()
+
+                val lifecycleCallbacks =
+                    object : ActivityLifecycleCallbacksAdapter {
+                        override fun onActivityCreated(activity: Activity, bundle: Bundle?) {
+                            super.onActivityCreated(activity, bundle)
+                            windowListenerCloseables.add(
+                                viewCapture.startCapture(
+                                    activity.window.decorView,
+                                    "${description.testClass?.simpleName}.${description.methodName}"
+                                )
+                            )
+                        }
+
+                        override fun onActivityDestroyed(activity: Activity) {
+                            super.onActivityDestroyed(activity)
+                            viewCapture.stopCapture(activity.window.decorView)
+                        }
+                    }
+
+                val application = ApplicationProvider.getApplicationContext<Application>()
+                application.registerActivityLifecycleCallbacks(lifecycleCallbacks)
+
+                try {
+                    base.evaluate()
+                } finally {
+                    application.unregisterActivityLifecycleCallbacks(lifecycleCallbacks)
+
+                    // Clean up ViewCapture references here rather than in onActivityDestroyed so
+                    // test code can access view hierarchy capture. onActivityDestroyed would delete
+                    // view capture data before FailureWatcher could output it as a test artifact.
+                    // This is on the main thread to avoid a race condition where the onDrawListener
+                    // is removed while onDraw is running, resulting in an IllegalStateException.
+                    MAIN_EXECUTOR.execute { windowListenerCloseables.onEach(SafeCloseable::close) }
+                }
+            }
+        }
+    }
+}
diff --git a/tests/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfoTest.java b/tests/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfoTest.java
index b534a41..48cf3df 100644
--- a/tests/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfoTest.java
+++ b/tests/src/com/android/launcher3/widget/LauncherAppWidgetProviderInfoTest.java
@@ -32,6 +32,7 @@
 
 import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.InvariantDeviceProfile;
+import com.android.launcher3.LauncherAppState;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -161,7 +162,6 @@
         int maxPadding = Math.max(Math.max(padding.left, padding.right),
                 Math.max(padding.top, padding.bottom));
         dp.cellLayoutBorderSpacePx.x = dp.cellLayoutBorderSpacePx.y = maxPadding + 1;
-        Mockito.when(dp.shouldInsetWidgets()).thenReturn(true);
 
         LauncherAppWidgetProviderInfo info = new LauncherAppWidgetProviderInfo();
         info.minWidth = CELL_SIZE * 3;
@@ -184,7 +184,6 @@
         int maxPadding = Math.max(Math.max(padding.left, padding.right),
                 Math.max(padding.top, padding.bottom));
         dp.cellLayoutBorderSpacePx.x = dp.cellLayoutBorderSpacePx.y = maxPadding - 1;
-        Mockito.when(dp.shouldInsetWidgets()).thenReturn(false);
         LauncherAppWidgetProviderInfo info = new LauncherAppWidgetProviderInfo();
         info.minWidth = CELL_SIZE * 3;
         info.minHeight = CELL_SIZE * 3;
@@ -257,14 +256,16 @@
     }
 
     private InvariantDeviceProfile createIDP() {
-        DeviceProfile profile = Mockito.mock(DeviceProfile.class);
+        DeviceProfile dp = LauncherAppState.getIDP(mContext)
+                .getDeviceProfile(mContext).copy(mContext);
+        DeviceProfile profile = Mockito.spy(dp);
         doAnswer(i -> {
             ((Point) i.getArgument(0)).set(CELL_SIZE, CELL_SIZE);
             return null;
         }).when(profile).getCellSize(any(Point.class));
         Mockito.when(profile.getCellSize()).thenReturn(new Point(CELL_SIZE, CELL_SIZE));
         profile.cellLayoutBorderSpacePx = new Point(SPACE_SIZE, SPACE_SIZE);
-        Mockito.when(profile.shouldInsetWidgets()).thenReturn(true);
+        profile.widgetPadding.setEmpty();
 
         InvariantDeviceProfile idp = new InvariantDeviceProfile();
         List<DeviceProfile> supportedProfiles = new ArrayList<>(idp.supportedProfiles);
diff --git a/tests/src/com/android/launcher3/widget/picker/WidgetsDiffReporterTest.java b/tests/src/com/android/launcher3/widget/picker/WidgetsDiffReporterTest.java
deleted file mode 100644
index b480a4c..0000000
--- a/tests/src/com/android/launcher3/widget/picker/WidgetsDiffReporterTest.java
+++ /dev/null
@@ -1,310 +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.launcher3.widget.picker;
-
-import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
-
-import static com.android.launcher3.util.WidgetUtils.createAppWidgetProviderInfo;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
-
-import android.appwidget.AppWidgetProviderInfo;
-import android.content.ComponentName;
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.os.UserHandle;
-
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.filters.SmallTest;
-
-import com.android.launcher3.InvariantDeviceProfile;
-import com.android.launcher3.icons.BitmapInfo;
-import com.android.launcher3.icons.ComponentWithLabel;
-import com.android.launcher3.icons.IconCache;
-import com.android.launcher3.model.WidgetItem;
-import com.android.launcher3.model.data.PackageItemInfo;
-import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
-import com.android.launcher3.widget.model.WidgetsListBaseEntry;
-import com.android.launcher3.widget.model.WidgetsListContentEntry;
-import com.android.launcher3.widget.model.WidgetsListHeaderEntry;
-import com.android.launcher3.widget.picker.WidgetsListAdapter.WidgetListBaseRowEntryComparator;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@SmallTest
-@RunWith(AndroidJUnit4.class)
-public final class WidgetsDiffReporterTest {
-    private static final String TEST_PACKAGE_PREFIX = "com.android.test";
-    private static final WidgetListBaseRowEntryComparator COMPARATOR =
-            new WidgetListBaseRowEntryComparator();
-
-    @Mock private IconCache mIconCache;
-    @Mock private RecyclerView.Adapter mAdapter;
-
-    private InvariantDeviceProfile mTestProfile;
-    private WidgetsDiffReporter mWidgetsDiffReporter;
-    private Context mContext;
-    private WidgetsListHeaderEntry mHeaderA;
-    private WidgetsListHeaderEntry mHeaderB;
-    private WidgetsListHeaderEntry mHeaderC;
-    private WidgetsListHeaderEntry mHeaderD;
-    private WidgetsListHeaderEntry mHeaderE;
-    private WidgetsListContentEntry mContentC;
-    private WidgetsListContentEntry mContentE;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mTestProfile = new InvariantDeviceProfile();
-        mTestProfile.numRows = 5;
-        mTestProfile.numColumns = 5;
-
-        doAnswer(invocation -> ((ComponentWithLabel) invocation.getArgument(0))
-                .getComponent().getPackageName())
-                .when(mIconCache).getTitleNoCache(any());
-
-        mContext = getApplicationContext();
-        mWidgetsDiffReporter = new WidgetsDiffReporter(mIconCache, mAdapter);
-        mHeaderA = createWidgetsHeaderEntry(TEST_PACKAGE_PREFIX + "A",
-                /* appName= */ "A", /* numOfWidgets= */ 3);
-        mHeaderB = createWidgetsHeaderEntry(TEST_PACKAGE_PREFIX + "B",
-                /* appName= */ "B", /* numOfWidgets= */ 3);
-        mHeaderC = createWidgetsHeaderEntry(TEST_PACKAGE_PREFIX + "C",
-                /* appName= */ "C", /* numOfWidgets= */ 3);
-        mContentC = createWidgetsContentEntry(TEST_PACKAGE_PREFIX + "C",
-                /* appName= */ "C", /* numOfWidgets= */ 3);
-        mHeaderD = createWidgetsHeaderEntry(TEST_PACKAGE_PREFIX + "D",
-                /* appName= */ "D", /* numOfWidgets= */ 3);
-        mHeaderE = createWidgetsHeaderEntry(TEST_PACKAGE_PREFIX + "E",
-                /* appName= */ "E", /* numOfWidgets= */ 3);
-        mContentE = createWidgetsContentEntry(TEST_PACKAGE_PREFIX + "E",
-                /* appName= */ "E", /* numOfWidgets= */ 3);
-    }
-
-    @Test
-    public void listNotChanged_shouldNotInvokeAnyCallbacks() {
-        // GIVEN the current list has app headers [A, B, C].
-        ArrayList<WidgetsListBaseEntry> currentList = new ArrayList<>(
-                List.of(mHeaderA, mHeaderB, mHeaderC));
-
-        // WHEN computing the list difference.
-        mWidgetsDiffReporter.process(currentList, currentList, COMPARATOR);
-
-        // THEN there is no adaptor callback.
-        verifyZeroInteractions(mAdapter);
-        // THEN the current list contains the same entries.
-        assertThat(currentList).containsExactly(mHeaderA, mHeaderB, mHeaderC);
-    }
-
-    @Test
-    public void headersOnly_emptyListToNonEmpty_shouldInvokeNotifyDataSetChanged() {
-        // GIVEN the current list has app headers [A, B, C].
-        ArrayList<WidgetsListBaseEntry> currentList = new ArrayList<>();
-
-        List<WidgetsListBaseEntry> newList = List.of(
-                createWidgetsHeaderEntry(TEST_PACKAGE_PREFIX + "A", "A", 3),
-                createWidgetsHeaderEntry(TEST_PACKAGE_PREFIX + "B", "B", 3),
-                createWidgetsHeaderEntry(TEST_PACKAGE_PREFIX + "C", "C", 3));
-
-        // WHEN computing the list difference.
-        mWidgetsDiffReporter.process(currentList, newList, COMPARATOR);
-
-        // THEN notifyDataSetChanged is called
-        verify(mAdapter).notifyDataSetChanged();
-        // THEN the current list contains all elements from the new list.
-        assertThat(currentList).containsExactlyElementsIn(newList);
-    }
-
-    @Test
-    public void headersOnly_nonEmptyToEmptyList_shouldInvokeNotifyDataSetChanged() {
-        // GIVEN the current list has app headers [A, B, C].
-        ArrayList<WidgetsListBaseEntry> currentList = new ArrayList<>(
-                List.of(mHeaderA, mHeaderB, mHeaderC));
-        // GIVEN the new list is empty.
-        List<WidgetsListBaseEntry> newList = List.of();
-
-        // WHEN computing the list difference.
-        mWidgetsDiffReporter.process(currentList, newList, COMPARATOR);
-
-        // THEN notifyDataSetChanged is called.
-        verify(mAdapter).notifyDataSetChanged();
-        // THEN the current list isEmpty.
-        assertThat(currentList).isEmpty();
-    }
-
-    @Test
-    public void headersOnly_itemAddedAndRemovedInTheNewList_shouldInvokeCorrectCallbacks() {
-        // GIVEN the current list has app headers [A, B, D].
-        ArrayList<WidgetsListBaseEntry> currentList = new ArrayList<>(
-                List.of(mHeaderA, mHeaderB, mHeaderD));
-        // GIVEN the new list has app headers [A, C, E].
-        List<WidgetsListBaseEntry> newList = List.of(mHeaderA, mHeaderC, mHeaderE);
-
-        // WHEN computing the list difference.
-        mWidgetsDiffReporter.process(currentList, newList, COMPARATOR);
-
-        // THEN "B" is removed from position 1.
-        verify(mAdapter).notifyItemRemoved(/* position= */ 1);
-        // THEN "D" is removed from position 2.
-        verify(mAdapter).notifyItemRemoved(/* position= */ 2);
-        // THEN "C" is inserted at position 1.
-        verify(mAdapter).notifyItemInserted(/* position= */ 1);
-        // THEN "E" is inserted at position 2.
-        verify(mAdapter).notifyItemInserted(/* position= */ 2);
-        // THEN the current list contains all elements from the new list.
-        assertThat(currentList).containsExactlyElementsIn(newList);
-    }
-
-    @Test
-    public void headersContentsMix_itemAddedAndRemovedInTheNewList_shouldInvokeCorrectCallbacks() {
-        // GIVEN the current list has app headers [A, B, E content].
-        ArrayList<WidgetsListBaseEntry> currentList = new ArrayList<>(
-                List.of(mHeaderA, mHeaderB, mContentE));
-        // GIVEN the new list has app headers [A, C content, D].
-        List<WidgetsListBaseEntry> newList = List.of(mHeaderA, mContentC, mHeaderD);
-
-        // WHEN computing the list difference.
-        mWidgetsDiffReporter.process(currentList, newList, COMPARATOR);
-
-        // THEN "B" is removed from position 1.
-        verify(mAdapter).notifyItemRemoved(/* position= */ 1);
-        // THEN "C content" is inserted at position 1.
-        verify(mAdapter).notifyItemInserted(/* position= */ 1);
-        // THEN "D" is inserted at position 2.
-        verify(mAdapter).notifyItemInserted(/* position= */ 2);
-        // THEN "E content" is removed from position 3.
-        verify(mAdapter).notifyItemRemoved(/* position= */ 3);
-        // THEN the current list contains all elements from the new list.
-        assertThat(currentList).containsExactlyElementsIn(newList);
-    }
-
-    @Test
-    public void headersContentsMix_userInteractWithHeader_shouldInvokeCorrectCallbacks() {
-        // GIVEN the current list has app headers [A, B, E content].
-        ArrayList<WidgetsListBaseEntry> currentList = new ArrayList<>(
-                List.of(mHeaderA, mHeaderB, mContentE));
-        // GIVEN the new list has app headers [A, B, E content] and the user has interacted with B.
-        List<WidgetsListBaseEntry> newList =
-                List.of(mHeaderA, mHeaderB.withWidgetListShown(), mContentE);
-
-        // WHEN computing the list difference.
-        mWidgetsDiffReporter.process(currentList, newList, COMPARATOR);
-
-        // THEN notify "B" has been changed.
-        verify(mAdapter).notifyItemChanged(/* position= */ 1);
-        // THEN the current list contains all elements from the new list.
-        assertThat(currentList).containsExactlyElementsIn(newList);
-    }
-
-    @Test
-    public void headersContentsMix_headerWidgetsModified_shouldInvokeCorrectCallbacks() {
-        // GIVEN the current list has app headers [A, B, E content].
-        ArrayList<WidgetsListBaseEntry> currentList = new ArrayList<>(
-                List.of(mHeaderA, mHeaderB, mContentE));
-        // GIVEN the new list has one of the headers widgets list modified.
-        List<WidgetsListBaseEntry> newList = List.of(
-                new WidgetsListHeaderEntry(
-                        mHeaderA.mPkgItem, mHeaderA.mTitleSectionName,
-                        mHeaderA.mWidgets.subList(0, 1)),
-                mHeaderB, mContentE);
-
-        // WHEN computing the list difference.
-        mWidgetsDiffReporter.process(currentList, newList, COMPARATOR);
-
-        // THEN notify "A" has been changed.
-        verify(mAdapter).notifyItemChanged(/* position= */ 0);
-        // THEN the current list contains all elements from the new list.
-        assertThat(currentList).containsExactlyElementsIn(newList);
-    }
-
-    @Test
-    public void headersContentsMix_contentMaxSpanSizeModified_shouldInvokeCorrectCallbacks() {
-        // GIVEN the current list has app headers [A, B, E content].
-        ArrayList<WidgetsListBaseEntry> currentList = new ArrayList<>(
-                List.of(mHeaderA, mHeaderB, mContentE));
-        // GIVEN the new list has max span size in "E content" modified.
-        List<WidgetsListBaseEntry> newList = List.of(
-                mHeaderA,
-                mHeaderB,
-                new WidgetsListContentEntry(
-                        mContentE.mPkgItem,
-                        mContentE.mTitleSectionName,
-                        mContentE.mWidgets,
-                        mContentE.getMaxSpanSizeInCells() + 1));
-
-        // WHEN computing the list difference.
-        mWidgetsDiffReporter.process(currentList, newList, COMPARATOR);
-
-        // THEN notify "E content" has been changed.
-        verify(mAdapter).notifyItemChanged(/* position= */ 2);
-        // THEN the current list contains all elements from the new list.
-        assertThat(currentList).containsExactlyElementsIn(newList);
-    }
-
-
-    private WidgetsListHeaderEntry createWidgetsHeaderEntry(String packageName, String appName,
-            int numOfWidgets) {
-        List<WidgetItem> widgetItems = generateWidgetItems(packageName, numOfWidgets);
-        PackageItemInfo pInfo = createPackageItemInfo(packageName, appName,
-                widgetItems.get(0).user);
-
-        return new WidgetsListHeaderEntry(pInfo, /* titleSectionName= */ "", widgetItems);
-    }
-
-    private WidgetsListContentEntry createWidgetsContentEntry(String packageName, String appName,
-            int numOfWidgets) {
-        List<WidgetItem> widgetItems = generateWidgetItems(packageName, numOfWidgets);
-        PackageItemInfo pInfo = createPackageItemInfo(packageName, appName,
-                widgetItems.get(0).user);
-
-        return new WidgetsListContentEntry(pInfo, /* titleSectionName= */ "", widgetItems);
-    }
-
-    private PackageItemInfo createPackageItemInfo(String packageName, String appName,
-            UserHandle userHandle) {
-        PackageItemInfo pInfo = new PackageItemInfo(packageName, userHandle);
-        pInfo.title = appName;
-        pInfo.bitmap = BitmapInfo.of(Bitmap.createBitmap(10, 10, Bitmap.Config.ALPHA_8), 0);
-        return pInfo;
-    }
-
-    private List<WidgetItem> generateWidgetItems(String packageName, int numOfWidgets) {
-        ArrayList<WidgetItem> widgetItems = new ArrayList<>();
-        for (int i = 0; i < numOfWidgets; i++) {
-            ComponentName cn = ComponentName.createRelative(packageName, ".SampleWidget" + i);
-            AppWidgetProviderInfo widgetInfo = createAppWidgetProviderInfo(cn);
-
-            WidgetItem widgetItem = new WidgetItem(
-                    LauncherAppWidgetProviderInfo.fromProviderInfo(mContext, widgetInfo),
-                    mTestProfile, mIconCache);
-            widgetItems.add(widgetItem);
-        }
-        return widgetItems;
-    }
-}
diff --git a/tests/src/com/android/launcher3/widget/picker/WidgetsListAdapterTest.java b/tests/src/com/android/launcher3/widget/picker/WidgetsListAdapterTest.java
deleted file mode 100644
index 4e0bdda..0000000
--- a/tests/src/com/android/launcher3/widget/picker/WidgetsListAdapterTest.java
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * 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.launcher3.widget.picker;
-
-import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Matchers.isNull;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.verify;
-
-import android.appwidget.AppWidgetProviderInfo;
-import android.content.ComponentName;
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.os.Process;
-import android.os.UserHandle;
-import android.view.LayoutInflater;
-
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.filters.SmallTest;
-
-import com.android.launcher3.InvariantDeviceProfile;
-import com.android.launcher3.icons.BitmapInfo;
-import com.android.launcher3.icons.ComponentWithLabel;
-import com.android.launcher3.icons.IconCache;
-import com.android.launcher3.model.WidgetItem;
-import com.android.launcher3.model.data.PackageItemInfo;
-import com.android.launcher3.util.ActivityContextWrapper;
-import com.android.launcher3.util.PackageUserKey;
-import com.android.launcher3.util.WidgetUtils;
-import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
-import com.android.launcher3.widget.model.WidgetsListBaseEntry;
-import com.android.launcher3.widget.model.WidgetsListContentEntry;
-import com.android.launcher3.widget.model.WidgetsListHeaderEntry;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.mockito.MockitoAnnotations;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Unit tests for WidgetsListAdapter
- * Note that all indices matching are shifted by 1 to account for the empty space at the start.
- */
-@SmallTest
-@RunWith(AndroidJUnit4.class)
-public final class WidgetsListAdapterTest {
-    private static final String TEST_PACKAGE_PLACEHOLDER = "com.google.test";
-
-    @Mock private LayoutInflater mMockLayoutInflater;
-    @Mock private RecyclerView.AdapterDataObserver mListener;
-    @Mock private IconCache mIconCache;
-
-    private WidgetsListAdapter mAdapter;
-    private InvariantDeviceProfile mTestProfile;
-    private UserHandle mUserHandle;
-    private Context mContext;
-
-    @Before
-    public void setup() {
-        MockitoAnnotations.initMocks(this);
-        mContext = new ActivityContextWrapper(getApplicationContext());
-        mTestProfile = new InvariantDeviceProfile();
-        mTestProfile.numRows = 5;
-        mTestProfile.numColumns = 5;
-        mUserHandle = Process.myUserHandle();
-        mAdapter = new WidgetsListAdapter(mContext, mMockLayoutInflater,
-                mIconCache, () -> 0, null, null);
-        mAdapter.registerAdapterDataObserver(mListener);
-
-        doAnswer(invocation -> ((ComponentWithLabel) invocation.getArgument(0))
-                        .getComponent().getPackageName())
-                .when(mIconCache).getTitleNoCache(any());
-    }
-
-    @Test
-    public void setWidgets_shouldNotifyDataSetChanged() {
-        mAdapter.setWidgets(generateSampleMap(1));
-
-        verify(mListener).onChanged();
-    }
-
-    @Test
-    public void setWidgets_withItemInserted_shouldNotifyItemInserted() {
-        mAdapter.setWidgets(generateSampleMap(1));
-        mAdapter.setWidgets(generateSampleMap(2));
-
-        verify(mListener).onItemRangeInserted(eq(2), eq(1));
-    }
-
-    @Test
-    public void setWidgets_withItemRemoved_shouldNotifyItemRemoved() {
-        mAdapter.setWidgets(generateSampleMap(2));
-        mAdapter.setWidgets(generateSampleMap(1));
-
-        verify(mListener).onItemRangeRemoved(eq(2), eq(1));
-    }
-
-    @Test
-    public void setWidgets_appIconChanged_shouldNotifyItemChanged() {
-        mAdapter.setWidgets(generateSampleMap(1));
-        mAdapter.setWidgets(generateSampleMap(1));
-
-        verify(mListener).onItemRangeChanged(eq(1), eq(1), isNull());
-    }
-
-    @Test
-    public void headerClick_expanded_shouldNotifyItemChange() {
-        // GIVEN a list of widgets entries:
-        // [com.google.test0, com.google.test0 content,
-        //  com.google.test1, com.google.test1 content,
-        //  com.google.test2, com.google.test2 content]
-        // The visible widgets entries: [com.google.test0, com.google.test1, com.google.test2].
-        mAdapter.setWidgets(generateSampleMap(3));
-
-        // WHEN com.google.test.1 header is expanded.
-        mAdapter.onHeaderClicked(/* showWidgets= */ true,
-                new PackageUserKey(TEST_PACKAGE_PLACEHOLDER + 1, mUserHandle));
-
-        // THEN the visible entries list becomes:
-        // [com.google.test0, com.google.test1, com.google.test1 content, com.google.test2]
-        // com.google.test.1 content is inserted into position 2.
-        verify(mListener).onItemRangeInserted(eq(3), eq(1));
-    }
-
-    @Test
-    public void setWidgets_expandedApp_moreWidgets_shouldNotifyItemChangedWithWidgetItemInfoDiff() {
-        // GIVEN the adapter was first populated with com.google.test0 & com.google.test1. Each app
-        // has one widget.
-        ArrayList<WidgetsListBaseEntry> allEntries = generateSampleMap(2);
-        mAdapter.setWidgets(allEntries);
-        // GIVEN test com.google.test1 is expanded.
-        // Visible entries in the adapter are:
-        // [com.google.test0, com.google.test1, com.google.test1 content]
-        mAdapter.onHeaderClicked(/* showWidgets= */ true,
-                new PackageUserKey(TEST_PACKAGE_PLACEHOLDER + 1, mUserHandle));
-        Mockito.reset(mListener);
-
-        // WHEN the adapter is updated with the same list of apps but com.google.test1 has 2 widgets
-        // now.
-        WidgetsListContentEntry testPackage1ContentEntry =
-                (WidgetsListContentEntry) allEntries.get(3);
-        WidgetItem widgetItem = testPackage1ContentEntry.mWidgets.get(0);
-        WidgetsListContentEntry newTestPackage1ContentEntry = new WidgetsListContentEntry(
-                testPackage1ContentEntry.mPkgItem,
-                testPackage1ContentEntry.mTitleSectionName, List.of(widgetItem, widgetItem));
-        allEntries.set(3, newTestPackage1ContentEntry);
-        mAdapter.setWidgets(allEntries);
-
-        // THEN the onItemRangeChanged is invoked for "com.google.test1 content" at index 2.
-        verify(mListener).onItemRangeChanged(eq(3), eq(1), isNull());
-    }
-
-    @Test
-    public void setWidgets_hodgepodge_shouldInvokeExpectedDataObserverCallbacks() {
-        // GIVEN a widgets entry list:
-        // Index:  0|   1      | 2|      3   | 4|     5    | 6|     7    | 8|     9    |
-        //        [A, A content, B, B content, C, C content, D, D content, E, E content]
-        List<WidgetsListBaseEntry> allAppsWithWidgets = generateSampleMap(5);
-        // GIVEN the current widgets list consist of [A, A content, B, B content, E, E content].
-        // GIVEN the visible widgets list consist of [A, B, E]
-        List<WidgetsListBaseEntry> currentList = List.of(
-                // A & A content
-                allAppsWithWidgets.get(0), allAppsWithWidgets.get(1),
-                // B & B content
-                allAppsWithWidgets.get(2), allAppsWithWidgets.get(3),
-                // E & E content
-                allAppsWithWidgets.get(8), allAppsWithWidgets.get(9));
-        mAdapter.setWidgets(currentList);
-
-        // WHEN the widgets list is updated to [A, A content, C, C content, D, D content].
-        // WHEN the visible widgets list is updated to [A, C, D].
-        List<WidgetsListBaseEntry> newList = List.of(
-                // A & A content
-                allAppsWithWidgets.get(0), allAppsWithWidgets.get(1),
-                // C & C content
-                allAppsWithWidgets.get(4), allAppsWithWidgets.get(5),
-                // D & D content
-                allAppsWithWidgets.get(6), allAppsWithWidgets.get(7));
-        mAdapter.setWidgets(newList);
-
-        // Account for 1st items as empty space
-        // Computation logic                           | [Intermediate list during computation]
-        // THEN B <> C < 0, removed B from index 1     | [A, E]
-        verify(mListener).onItemRangeRemoved(/* positionStart= */ 2, /* itemCount= */ 1);
-        // THEN E <> C > 0, C inserted to index 1      | [A, C, E]
-        verify(mListener).onItemRangeInserted(/* positionStart= */ 2, /* itemCount= */ 1);
-        // THEN E <> D > 0, D inserted to index 2      | [A, C, D, E]
-        verify(mListener).onItemRangeInserted(/* positionStart= */ 3, /* itemCount= */ 1);
-        // THEN E <> null = -1, E deleted from index 3 | [A, C, D]
-        verify(mListener).onItemRangeRemoved(/* positionStart= */ 4, /* itemCount= */ 1);
-    }
-
-    @Test
-    public void setWidgetsOnSearch_expandedApp_shouldResetExpandedApp() {
-        // GIVEN a list of widgets entries:
-        // [Empty item
-        //  com.google.test0,
-        //  com.google.test0 content,
-        //  com.google.test1,
-        //  com.google.test1 content,
-        //  com.google.test2,
-        //  com.google.test2 content]
-        // The visible widgets entries:
-        // [Empty item,
-        // com.google.test0,
-        // com.google.test1,
-        // com.google.test2].
-        ArrayList<WidgetsListBaseEntry> allEntries = generateSampleMap(3);
-        mAdapter.setWidgetsOnSearch(allEntries);
-        // GIVEN com.google.test.1 header is expanded. The visible entries list becomes:
-        // [Empty item, com.google.test0, com.google.test1, com.google.test1 content,
-        // com.google.test2]
-        mAdapter.onHeaderClicked(/* showWidgets= */ true,
-                new PackageUserKey(TEST_PACKAGE_PLACEHOLDER + 1, mUserHandle));
-        Mockito.reset(mListener);
-
-        // WHEN same widget entries are set again.
-        mAdapter.setWidgetsOnSearch(allEntries);
-
-        // THEN expanded app is reset and the visible entries list becomes:
-        // [Empty item, com.google.test0, com.google.test1, com.google.test2]
-        verify(mListener).onItemRangeChanged(eq(2), eq(1), isNull());
-        verify(mListener).onItemRangeRemoved(/* positionStart= */ 3, /* itemCount= */ 1);
-    }
-
-    /**
-     * Generates a list of sample widget entries.
-     *
-     * <p>Each sample app has 1 widget only. An app is represented by 2 entries,
-     * {@link WidgetsListHeaderEntry} & {@link WidgetsListContentEntry}. Only
-     * {@link WidgetsListHeaderEntry} is always visible in the {@link WidgetsListAdapter}.
-     * {@link WidgetsListContentEntry} is only shown upon clicking the corresponding app's
-     * {@link WidgetsListHeaderEntry}. Only at most one {@link WidgetsListContentEntry} is shown at
-     * a time.
-     *
-     * @param num the number of apps that have widgets.
-     */
-    private ArrayList<WidgetsListBaseEntry> generateSampleMap(int num) {
-        ArrayList<WidgetsListBaseEntry> result = new ArrayList<>();
-        if (num <= 0) return result;
-
-        for (int i = 0; i < num; i++) {
-            String packageName = TEST_PACKAGE_PLACEHOLDER + i;
-
-            List<WidgetItem> widgetItems = generateWidgetItems(packageName, /* numOfWidgets= */ 1);
-
-            PackageItemInfo pInfo = new PackageItemInfo(packageName, widgetItems.get(0).user);
-            pInfo.title = pInfo.packageName;
-            pInfo.bitmap = BitmapInfo.of(Bitmap.createBitmap(10, 10, Bitmap.Config.ALPHA_8), 0);
-
-            result.add(new WidgetsListHeaderEntry(pInfo, /* titleSectionName= */ "", widgetItems));
-            result.add(new WidgetsListContentEntry(pInfo, /* titleSectionName= */ "", widgetItems));
-        }
-
-        return result;
-    }
-
-    private List<WidgetItem> generateWidgetItems(String packageName, int numOfWidgets) {
-        ArrayList<WidgetItem> widgetItems = new ArrayList<>();
-        for (int i = 0; i < numOfWidgets; i++) {
-            ComponentName cn = ComponentName.createRelative(packageName, ".SampleWidget" + i);
-            AppWidgetProviderInfo widgetInfo = WidgetUtils.createAppWidgetProviderInfo(cn);
-
-            widgetItems.add(new WidgetItem(
-                    LauncherAppWidgetProviderInfo.fromProviderInfo(mContext, widgetInfo),
-                    mTestProfile, mIconCache));
-        }
-        return widgetItems;
-    }
-}
diff --git a/tests/src/com/android/launcher3/widget/picker/WidgetsListHeaderViewHolderBinderTest.java b/tests/src/com/android/launcher3/widget/picker/WidgetsListHeaderViewHolderBinderTest.java
index 211318c..8fc4481 100644
--- a/tests/src/com/android/launcher3/widget/picker/WidgetsListHeaderViewHolderBinderTest.java
+++ b/tests/src/com/android/launcher3/widget/picker/WidgetsListHeaderViewHolderBinderTest.java
@@ -91,7 +91,7 @@
         mViewHolderBinder = new WidgetsListHeaderViewHolderBinder(
                 LayoutInflater.from(mContext),
                 mOnHeaderClickListener,
-                new WidgetsListDrawableFactory(mContext));
+                false);
     }
 
     @Test
@@ -134,7 +134,7 @@
         appInfo.title = appName;
         appInfo.bitmap = BitmapInfo.of(Bitmap.createBitmap(10, 10, Bitmap.Config.ALPHA_8), 0);
 
-        return new WidgetsListHeaderEntry(appInfo,
+        return WidgetsListHeaderEntry.create(appInfo,
                 /* titleSectionName= */ "",
                 generateWidgetItems(packageName, numOfWidgets));
     }
@@ -147,7 +147,7 @@
 
             widgetItems.add(new WidgetItem(
                     LauncherAppWidgetProviderInfo.fromProviderInfo(mContext, widgetInfo),
-                    mTestProfile, mIconCache));
+                    mTestProfile, mIconCache, mContext));
         }
         return widgetItems;
     }
diff --git a/tests/src/com/android/launcher3/widget/picker/WidgetsListSearchHeaderViewHolderBinderTest.java b/tests/src/com/android/launcher3/widget/picker/WidgetsListSearchHeaderViewHolderBinderTest.java
deleted file mode 100644
index 66c2f36..0000000
--- a/tests/src/com/android/launcher3/widget/picker/WidgetsListSearchHeaderViewHolderBinderTest.java
+++ /dev/null
@@ -1,154 +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.launcher3.widget.picker;
-
-import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.verify;
-
-import static java.util.Collections.EMPTY_LIST;
-
-import android.appwidget.AppWidgetProviderInfo;
-import android.content.ComponentName;
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.os.UserHandle;
-import android.view.LayoutInflater;
-import android.widget.FrameLayout;
-import android.widget.TextView;
-
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.filters.SmallTest;
-
-import com.android.launcher3.InvariantDeviceProfile;
-import com.android.launcher3.R;
-import com.android.launcher3.icons.BitmapInfo;
-import com.android.launcher3.icons.ComponentWithLabel;
-import com.android.launcher3.icons.IconCache;
-import com.android.launcher3.model.WidgetItem;
-import com.android.launcher3.model.data.PackageItemInfo;
-import com.android.launcher3.util.ActivityContextWrapper;
-import com.android.launcher3.util.PackageUserKey;
-import com.android.launcher3.util.WidgetUtils;
-import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
-import com.android.launcher3.widget.model.WidgetsListSearchHeaderEntry;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@SmallTest
-@RunWith(AndroidJUnit4.class)
-public final class WidgetsListSearchHeaderViewHolderBinderTest {
-    private static final String TEST_PACKAGE = "com.google.test";
-    private static final String APP_NAME = "Test app";
-
-    private Context mContext;
-    private WidgetsListSearchHeaderViewHolderBinder mViewHolderBinder;
-    private InvariantDeviceProfile mTestProfile;
-
-    @Mock
-    private IconCache mIconCache;
-    @Mock
-    private OnHeaderClickListener mOnHeaderClickListener;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContext = new ActivityContextWrapper(getApplicationContext());
-        mTestProfile = new InvariantDeviceProfile();
-        mTestProfile.numRows = 5;
-        mTestProfile.numColumns = 5;
-
-        doAnswer(invocation -> {
-            ComponentWithLabel componentWithLabel = (ComponentWithLabel) invocation.getArgument(0);
-            return componentWithLabel.getComponent().getShortClassName();
-        }).when(mIconCache).getTitleNoCache(any());
-        mViewHolderBinder = new WidgetsListSearchHeaderViewHolderBinder(
-                LayoutInflater.from(mContext),
-                mOnHeaderClickListener,
-                new WidgetsListDrawableFactory(mContext));
-    }
-
-    @Test
-    public void bindViewHolder_appWith3Widgets_shouldShowTheCorrectAppNameAndSubtitle() {
-        WidgetsListSearchHeaderHolder viewHolder = mViewHolderBinder.newViewHolder(
-                new FrameLayout(mContext));
-        WidgetsListHeader widgetsListHeader = viewHolder.mWidgetsListHeader;
-        WidgetsListSearchHeaderEntry entry = generateSampleSearchHeader(
-                APP_NAME,
-                TEST_PACKAGE,
-                /* numOfWidgets= */ 3);
-        mViewHolderBinder.bindViewHolder(viewHolder, entry, /* position= */ 0, EMPTY_LIST);
-
-        TextView appTitle = widgetsListHeader.findViewById(R.id.app_title);
-        TextView appSubtitle = widgetsListHeader.findViewById(R.id.app_subtitle);
-        assertThat(appTitle.getText()).isEqualTo(APP_NAME);
-        assertThat(appSubtitle.getText())
-                .isEqualTo(".SampleWidget0, .SampleWidget1, .SampleWidget2");
-    }
-
-    @Test
-    public void bindViewHolder_shouldAttachOnHeaderClickListener() {
-        WidgetsListSearchHeaderHolder viewHolder = mViewHolderBinder.newViewHolder(
-                new FrameLayout(mContext));
-        WidgetsListHeader widgetsListHeader = viewHolder.mWidgetsListHeader;
-        WidgetsListSearchHeaderEntry entry = generateSampleSearchHeader(
-                APP_NAME,
-                TEST_PACKAGE,
-                /* numOfWidgets= */ 3);
-
-        mViewHolderBinder.bindViewHolder(viewHolder, entry, /* position= */ 0, EMPTY_LIST);
-        widgetsListHeader.callOnClick();
-
-        verify(mOnHeaderClickListener).onHeaderClicked(eq(true),
-                eq(PackageUserKey.fromPackageItemInfo(entry.mPkgItem)));
-    }
-
-    private WidgetsListSearchHeaderEntry generateSampleSearchHeader(String appName,
-            String packageName, int numOfWidgets) {
-        PackageItemInfo appInfo = new PackageItemInfo(packageName, UserHandle.CURRENT);
-        appInfo.title = appName;
-        appInfo.bitmap = BitmapInfo.of(Bitmap.createBitmap(10, 10, Bitmap.Config.ALPHA_8), 0);
-
-        return new WidgetsListSearchHeaderEntry(appInfo,
-                /* titleSectionName= */ "",
-                generateWidgetItems(packageName, numOfWidgets));
-    }
-
-    private List<WidgetItem> generateWidgetItems(String packageName, int numOfWidgets) {
-        ArrayList<WidgetItem> widgetItems = new ArrayList<>();
-        for (int i = 0; i < numOfWidgets; i++) {
-            ComponentName cn = ComponentName.createRelative(packageName, ".SampleWidget" + i);
-            AppWidgetProviderInfo widgetInfo = WidgetUtils.createAppWidgetProviderInfo(cn);
-
-            widgetItems.add(new WidgetItem(
-                    LauncherAppWidgetProviderInfo.fromProviderInfo(mContext, widgetInfo),
-                    mTestProfile, mIconCache));
-        }
-        return widgetItems;
-    }
-}
diff --git a/tests/src/com/android/launcher3/widget/picker/WidgetsListTableViewHolderBinderTest.java b/tests/src/com/android/launcher3/widget/picker/WidgetsListTableViewHolderBinderTest.java
index 7ec4d20..60590e7 100644
--- a/tests/src/com/android/launcher3/widget/picker/WidgetsListTableViewHolderBinderTest.java
+++ b/tests/src/com/android/launcher3/widget/picker/WidgetsListTableViewHolderBinderTest.java
@@ -94,10 +94,10 @@
         }).when(mIconCache).getTitleNoCache(any());
 
         mViewHolderBinder = new WidgetsListTableViewHolderBinder(
+                mContext,
                 LayoutInflater.from(mContext),
                 mOnIconClickListener,
-                mOnLongClickListener,
-                new WidgetsListDrawableFactory(mContext));
+                mOnLongClickListener);
     }
 
     @Test
@@ -144,7 +144,7 @@
 
             widgetItems.add(new WidgetItem(
                     LauncherAppWidgetProviderInfo.fromProviderInfo(mContext, widgetInfo),
-                    mTestProfile, mIconCache));
+                    mTestProfile, mIconCache, mContext));
         }
         return widgetItems;
     }
diff --git a/tests/src/com/android/launcher3/widget/picker/model/WidgetsListContentEntryTest.java b/tests/src/com/android/launcher3/widget/picker/model/WidgetsListContentEntryTest.java
index d8f1f14..7552619 100644
--- a/tests/src/com/android/launcher3/widget/picker/model/WidgetsListContentEntryTest.java
+++ b/tests/src/com/android/launcher3/widget/picker/model/WidgetsListContentEntryTest.java
@@ -26,6 +26,7 @@
 
 import android.appwidget.AppWidgetProviderInfo;
 import android.content.ComponentName;
+import android.content.Context;
 import android.os.UserHandle;
 
 import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -249,12 +250,13 @@
         String label = mWidgetsToLabels.get(componentName);
         AppWidgetProviderInfo widgetInfo = createAppWidgetProviderInfo(componentName);
 
+        Context context = getApplicationContext();
         LauncherAppWidgetProviderInfo launcherAppWidgetProviderInfo =
-                LauncherAppWidgetProviderInfo.fromProviderInfo(getApplicationContext(), widgetInfo);
+                LauncherAppWidgetProviderInfo.fromProviderInfo(context, widgetInfo);
         launcherAppWidgetProviderInfo.spanX = spanX;
         launcherAppWidgetProviderInfo.spanY = spanY;
         launcherAppWidgetProviderInfo.label = label;
 
-        return new WidgetItem(launcherAppWidgetProviderInfo, mTestProfile, mIconCache);
+        return new WidgetItem(launcherAppWidgetProviderInfo, mTestProfile, mIconCache, context);
     }
 }
diff --git a/tests/src/com/android/launcher3/widget/picker/search/SimpleWidgetsSearchAlgorithmTest.java b/tests/src/com/android/launcher3/widget/picker/search/SimpleWidgetsSearchAlgorithmTest.java
index d812ab0..9c03ccf 100644
--- a/tests/src/com/android/launcher3/widget/picker/search/SimpleWidgetsSearchAlgorithmTest.java
+++ b/tests/src/com/android/launcher3/widget/picker/search/SimpleWidgetsSearchAlgorithmTest.java
@@ -50,7 +50,6 @@
 import com.android.launcher3.widget.model.WidgetsListBaseEntry;
 import com.android.launcher3.widget.model.WidgetsListContentEntry;
 import com.android.launcher3.widget.model.WidgetsListHeaderEntry;
-import com.android.launcher3.widget.model.WidgetsListSearchHeaderEntry;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -117,12 +116,12 @@
                 .getAllWidgets();
 
         assertEquals(List.of(
-                new WidgetsListSearchHeaderEntry(
+                WidgetsListHeaderEntry.createForSearch(
                         mCalendarHeaderEntry.mPkgItem,
                         mCalendarHeaderEntry.mTitleSectionName,
                         mCalendarHeaderEntry.mWidgets),
                 mCalendarContentEntry,
-                new WidgetsListSearchHeaderEntry(
+                WidgetsListHeaderEntry.createForSearch(
                         mCameraHeaderEntry.mPkgItem,
                         mCameraHeaderEntry.mTitleSectionName,
                         mCameraHeaderEntry.mWidgets),
@@ -138,7 +137,7 @@
                 .getAllWidgets();
 
         assertEquals(List.of(
-                new WidgetsListSearchHeaderEntry(
+                WidgetsListHeaderEntry.createForSearch(
                         mCalendarHeaderEntry.mPkgItem,
                         mCalendarHeaderEntry.mTitleSectionName,
                         mCalendarHeaderEntry.mWidgets.subList(1, 2)),
@@ -146,7 +145,7 @@
                         mCalendarHeaderEntry.mPkgItem,
                         mCalendarHeaderEntry.mTitleSectionName,
                         mCalendarHeaderEntry.mWidgets.subList(1, 2)),
-                new WidgetsListSearchHeaderEntry(
+                WidgetsListHeaderEntry.createForSearch(
                         mCameraHeaderEntry.mPkgItem,
                         mCameraHeaderEntry.mTitleSectionName,
                         mCameraHeaderEntry.mWidgets.subList(1, 3)),
@@ -175,7 +174,7 @@
         PackageItemInfo pInfo = createPackageItemInfo(packageName, appName,
                 widgetItems.get(0).user);
 
-        return new WidgetsListHeaderEntry(pInfo, /* titleSectionName= */ "", widgetItems);
+        return WidgetsListHeaderEntry.create(pInfo, /* titleSectionName= */ "", widgetItems);
     }
 
     private WidgetsListContentEntry createWidgetsContentEntry(String packageName, String appName,
@@ -203,7 +202,7 @@
 
             WidgetItem widgetItem = new WidgetItem(
                     LauncherAppWidgetProviderInfo.fromProviderInfo(mContext, widgetInfo),
-                    mTestProfile, mIconCache);
+                    mTestProfile, mIconCache, mContext);
             widgetItems.add(widgetItem);
         }
         return widgetItems;
diff --git a/tests/src/com/android/launcher3/widget/picker/util/WidgetsTableUtilsTest.java b/tests/src/com/android/launcher3/widget/picker/util/WidgetsTableUtilsTest.java
index 715dcca..2c5a396 100644
--- a/tests/src/com/android/launcher3/widget/picker/util/WidgetsTableUtilsTest.java
+++ b/tests/src/com/android/launcher3/widget/picker/util/WidgetsTableUtilsTest.java
@@ -23,6 +23,7 @@
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.when;
 
 import android.appwidget.AppWidgetProviderInfo;
 import android.content.ComponentName;
@@ -35,11 +36,14 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.filters.SmallTest;
 
+import com.android.launcher3.DeviceProfile;
 import com.android.launcher3.InvariantDeviceProfile;
+import com.android.launcher3.LauncherAppState;
 import com.android.launcher3.icons.ComponentWithLabel;
 import com.android.launcher3.icons.IconCache;
 import com.android.launcher3.model.WidgetItem;
 import com.android.launcher3.pm.ShortcutConfigActivityInfo;
+import com.android.launcher3.util.ActivityContextWrapper;
 import com.android.launcher3.widget.LauncherAppWidgetProviderInfo;
 import com.android.launcher3.widget.util.WidgetsTableUtils;
 
@@ -47,6 +51,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
+import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
 
 import java.util.ArrayList;
@@ -57,11 +62,18 @@
 public final class WidgetsTableUtilsTest {
     private static final String TEST_PACKAGE = "com.google.test";
 
+    private static final int SPACE_SIZE = 10;
+    private static final int CELL_SIZE = 50;
+    private static final int NUM_OF_COLS = 5;
+    private static final int NUM_OF_ROWS = 5;
+
     @Mock
     private IconCache mIconCache;
 
+    private DeviceProfile mTestDeviceProfile;
+
     private Context mContext;
-    private InvariantDeviceProfile mTestProfile;
+    private InvariantDeviceProfile mTestInvariantProfile;
     private WidgetItem mWidget1x1;
     private WidgetItem mWidget2x2;
     private WidgetItem mWidget2x3;
@@ -76,12 +88,13 @@
     public void setUp() {
         MockitoAnnotations.initMocks(this);
 
-        mContext = getApplicationContext();
+        mContext = new ActivityContextWrapper(getApplicationContext());
 
-        mTestProfile = new InvariantDeviceProfile();
-        mTestProfile.numRows = 5;
-        mTestProfile.numColumns = 5;
+        mTestInvariantProfile = new InvariantDeviceProfile();
+        mTestInvariantProfile.numColumns = NUM_OF_COLS;
+        mTestInvariantProfile.numRows = NUM_OF_ROWS;
 
+        initDP();
         initTestWidgets();
         initTestShortcuts();
 
@@ -92,17 +105,17 @@
 
 
     @Test
-    public void groupWidgetItemsIntoTableWithReordering_widgetsOnly_maxSpansPerRow5_shouldGroupWidgetsInTable() {
+    public void groupWidgetItemsIntoTableWithReordering_widgetsOnly_maxSpanPxPerRow220_cellPadding0_shouldGroupWidgetsInTable() {
         List<WidgetItem> widgetItems = List.of(mWidget4x4, mWidget2x3, mWidget1x1, mWidget2x4,
                 mWidget2x2);
 
         List<ArrayList<WidgetItem>> widgetItemInTable =
-                WidgetsTableUtils.groupWidgetItemsIntoTableWithReordering(
-                        widgetItems, /* maxSpansPerRow= */ 5);
+                WidgetsTableUtils.groupWidgetItemsUsingRowPxWithReordering(widgetItems, mContext,
+                        mTestDeviceProfile, 220, 0);
 
-        // Row 0: 1x1, 2x2
-        // Row 1: 2x3, 2x4
-        // Row 2: 4x4
+        // Row 0: 1x1(50px), 2x2(110px)
+        // Row 1: 2x3(110px), 2x4(110px)
+        // Row 2: 4x4(230px)
         assertThat(widgetItemInTable).hasSize(3);
         assertThat(widgetItemInTable.get(0)).containsExactly(mWidget1x1, mWidget2x2);
         assertThat(widgetItemInTable.get(1)).containsExactly(mWidget2x3, mWidget2x4);
@@ -110,83 +123,113 @@
     }
 
     @Test
-    public void groupWidgetItemsIntoTableWithReordering_widgetsOnly_maxSpansPerRow4_shouldGroupWidgetsInTable() {
+    public void groupWidgetItemsIntoTableWithReordering_widgetsOnly_maxSpanPxPerRow220_cellPadding10_shouldGroupWidgetsInTable() {
         List<WidgetItem> widgetItems = List.of(mWidget4x4, mWidget2x3, mWidget1x1, mWidget2x4,
                 mWidget2x2);
 
         List<ArrayList<WidgetItem>> widgetItemInTable =
-                WidgetsTableUtils.groupWidgetItemsIntoTableWithReordering(
-                        widgetItems, /* maxSpansPerRow= */ 4);
+                WidgetsTableUtils.groupWidgetItemsUsingRowPxWithReordering(widgetItems, mContext,
+                        mTestDeviceProfile, 220, 10);
 
-        // Row 0: 1x1, 2x2
-        // Row 1: 2x3,
-        // Row 2: 2x4,
-        // Row 3: 4x4
-        assertThat(widgetItemInTable).hasSize(4);
-        assertThat(widgetItemInTable.get(0)).containsExactly(mWidget1x1, mWidget2x2);
-        assertThat(widgetItemInTable.get(1)).containsExactly(mWidget2x3);
-        assertThat(widgetItemInTable.get(2)).containsExactly(mWidget2x4);
-        assertThat(widgetItemInTable.get(3)).containsExactly(mWidget4x4);
+        // Row 0: 1x1(50px), 2x2(110px)
+        // Row 1: 2x3(110px), 2x4(110px)
+        // Row 2: 4x4(230px)
+        assertThat(widgetItemInTable).hasSize(5);
+        assertThat(widgetItemInTable.get(0)).containsExactly(mWidget1x1);
+        assertThat(widgetItemInTable.get(1)).containsExactly(mWidget2x2);
+        assertThat(widgetItemInTable.get(2)).containsExactly(mWidget2x3);
+        assertThat(widgetItemInTable.get(3)).containsExactly(mWidget2x4);
+        assertThat(widgetItemInTable.get(4)).containsExactly(mWidget4x4);
     }
 
     @Test
-    public void groupWidgetItemsIntoTableWithReordering_mixItems_maxSpansPerRow4_shouldGroupWidgetsInTable() {
+    public void groupWidgetItemsIntoTableWithReordering_widgetsOnly_maxSpanPxPerRow350_cellPadding0_shouldGroupWidgetsInTable() {
+        List<WidgetItem> widgetItems = List.of(mWidget4x4, mWidget2x3, mWidget1x1, mWidget2x4,
+                mWidget2x2);
+
+        List<ArrayList<WidgetItem>> widgetItemInTable =
+                WidgetsTableUtils.groupWidgetItemsUsingRowPxWithReordering(widgetItems, mContext,
+                        mTestDeviceProfile, 350, 0);
+
+        // Row 0: 1x1(50px), 2x2(110px), 2x3(110px)
+        // Row 1: 2x4(110px)
+        // Row 2: 4x4(230px)
+        assertThat(widgetItemInTable).hasSize(3);
+        assertThat(widgetItemInTable.get(0)).containsExactly(mWidget1x1, mWidget2x2, mWidget2x3);
+        assertThat(widgetItemInTable.get(1)).containsExactly(mWidget2x4);
+        assertThat(widgetItemInTable.get(2)).containsExactly(mWidget4x4);
+    }
+
+    @Test
+    public void groupWidgetItemsIntoTableWithReordering_mixItems_maxSpanPxPerRow350_cellPadding0_shouldGroupWidgetsInTable() {
         List<WidgetItem> widgetItems = List.of(mWidget4x4, mShortcut3, mWidget2x3, mShortcut1,
                 mWidget1x1, mShortcut2, mWidget2x4, mWidget2x2);
 
         List<ArrayList<WidgetItem>> widgetItemInTable =
-                WidgetsTableUtils.groupWidgetItemsIntoTableWithReordering(
-                        widgetItems, /* maxSpansPerRow= */ 4);
+                WidgetsTableUtils.groupWidgetItemsUsingRowPxWithReordering(widgetItems, mContext,
+                        mTestDeviceProfile, 350, 0);
 
-        // Row 0: 1x1, 2x2
-        // Row 1: 2x3,
-        // Row 2: 2x4,
-        // Row 3: 4x4
-        // Row 4: shortcut3, shortcut1, shortcut2
-        assertThat(widgetItemInTable).hasSize(5);
-        assertThat(widgetItemInTable.get(0)).containsExactly(mWidget1x1, mWidget2x2);
-        assertThat(widgetItemInTable.get(1)).containsExactly(mWidget2x3);
-        assertThat(widgetItemInTable.get(2)).containsExactly(mWidget2x4);
-        assertThat(widgetItemInTable.get(3)).containsExactly(mWidget4x4);
-        assertThat(widgetItemInTable.get(4)).containsExactly(mShortcut3, mShortcut2, mShortcut1);
+        // Row 0: 1x1(50px), 2x2(110px), 2x3(110px)
+        // Row 1: 2x4(110px),
+        // Row 2: 4x4(230px)
+        // Row 3: shortcut3(50px), shortcut1(50px), shortcut2(50px)
+        assertThat(widgetItemInTable).hasSize(4);
+        assertThat(widgetItemInTable.get(0)).containsExactly(mWidget1x1, mWidget2x2, mWidget2x3);
+        assertThat(widgetItemInTable.get(1)).containsExactly(mWidget2x4);
+        assertThat(widgetItemInTable.get(2)).containsExactly(mWidget4x4);
+        assertThat(widgetItemInTable.get(3)).containsExactly(mShortcut3, mShortcut2, mShortcut1);
     }
 
     @Test
-    public void groupWidgetItemsIntoTableWithoutReordering_shouldMaintainTheOrder() {
+    public void groupWidgetItemsIntoTableWithoutReordering_maxSpanPxPerRow220_cellPadding0_shouldMaintainTheOrder() {
         List<WidgetItem> widgetItems =
                 List.of(mWidget4x4, mWidget2x3, mWidget1x1, mWidget2x4, mWidget2x2);
 
         List<ArrayList<WidgetItem>> widgetItemInTable =
-                WidgetsTableUtils.groupWidgetItemsIntoTableWithoutReordering(
-                        widgetItems, /* maxSpansPerRow= */ 5);
+                WidgetsTableUtils.groupWidgetItemsUsingRowPxWithoutReordering(widgetItems, mContext,
+                        mTestDeviceProfile, 220, 0);
 
-        // Row 0: 4x4
-        // Row 1: 2x3, 1x1
-        // Row 2: 2x4, 2x2
+        // Row 0: 4x4(230px)
+        // Row 1: 2x3(110px), 1x1(50px)
+        // Row 2: 2x4(110px), 2x2(110px)
         assertThat(widgetItemInTable).hasSize(3);
         assertThat(widgetItemInTable.get(0)).containsExactly(mWidget4x4);
         assertThat(widgetItemInTable.get(1)).containsExactly(mWidget2x3, mWidget1x1);
         assertThat(widgetItemInTable.get(2)).containsExactly(mWidget2x4, mWidget2x2);
     }
 
+    private void initDP() {
+        DeviceProfile dp = LauncherAppState.getIDP(mContext)
+                .getDeviceProfile(mContext).copy(mContext);
+        mTestDeviceProfile = Mockito.spy(dp);
+
+        doAnswer(i -> {
+            ((Point) i.getArgument(0)).set(CELL_SIZE, CELL_SIZE);
+            return null;
+        }).when(mTestDeviceProfile).getCellSize(any(Point.class));
+        when(mTestDeviceProfile.getCellSize()).thenReturn(new Point(CELL_SIZE, CELL_SIZE));
+        mTestDeviceProfile.cellLayoutBorderSpacePx = new Point(SPACE_SIZE, SPACE_SIZE);
+        mTestDeviceProfile.widgetPadding.setEmpty();
+        mTestDeviceProfile.allAppsIconSizePx = 0;
+    }
+
     private void initTestWidgets() {
         List<Point> widgetSizes = List.of(new Point(1, 1), new Point(2, 2), new Point(2, 3),
                 new Point(2, 4), new Point(4, 4));
 
         ArrayList<WidgetItem> widgetItems = new ArrayList<>();
-        widgetSizes.stream().forEach(
-                widgetSize -> {
-                    AppWidgetProviderInfo info = createAppWidgetProviderInfo(
-                            ComponentName.createRelative(
-                                    TEST_PACKAGE,
-                                    ".WidgetProvider_" + widgetSize.x + "x" + widgetSize.y));
-                    LauncherAppWidgetProviderInfo widgetInfo =
-                            LauncherAppWidgetProviderInfo.fromProviderInfo(mContext, info);
-                    widgetInfo.spanX = widgetSize.x;
-                    widgetInfo.spanY = widgetSize.y;
-                    widgetItems.add(new WidgetItem(widgetInfo, mTestProfile, mIconCache));
-                }
-        );
+        widgetSizes.stream().forEach(widgetSize -> {
+            AppWidgetProviderInfo info = createAppWidgetProviderInfo(
+                    ComponentName.createRelative(
+                            TEST_PACKAGE,
+                            ".WidgetProvider_" + widgetSize.x + "x" + widgetSize.y));
+            LauncherAppWidgetProviderInfo widgetInfo =
+                    LauncherAppWidgetProviderInfo.fromProviderInfo(mContext, info);
+            widgetInfo.spanX = widgetSize.x;
+            widgetInfo.spanY = widgetSize.y;
+            widgetItems.add(new WidgetItem(
+                    widgetInfo, mTestInvariantProfile, mIconCache, mContext));
+        });
         mWidget1x1 = widgetItems.get(0);
         mWidget2x2 = widgetItems.get(1);
         mWidget2x3 = widgetItems.get(2);
diff --git a/tests/src/com/android/launcher3/workspace/CalculatedWorkspaceSpecTest.kt b/tests/src/com/android/launcher3/workspace/CalculatedWorkspaceSpecTest.kt
new file mode 100644
index 0000000..7f03ba2
--- /dev/null
+++ b/tests/src/com/android/launcher3/workspace/CalculatedWorkspaceSpecTest.kt
@@ -0,0 +1,107 @@
+/*
+ * 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.launcher3.workspace
+
+import android.content.Context
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import androidx.test.platform.app.InstrumentationRegistry
+import com.android.launcher3.AbstractDeviceProfileTest
+import com.android.launcher3.tests.R as TestR
+import com.android.launcher3.util.TestResourceHelper
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class CalculatedWorkspaceSpecTest : AbstractDeviceProfileTest() {
+    override val runningContext: Context = InstrumentationRegistry.getInstrumentation().context
+
+    /**
+     * This test tests:
+     * - (height spec) gets the correct breakpoint from the XML - skips the first 2 breakpoints
+     * - (height spec) do the correct calculations for available space and fixed size
+     * - (width spec) do the correct calculations for remainder space and fixed size
+     */
+    @Test
+    fun normalPhone_returnsThirdBreakpointSpec() {
+        val deviceSpec = deviceSpecs["phone"]!!
+        initializeVarsForPhone(deviceSpec)
+
+        val availableWidth = deviceSpec.naturalSize.first
+        // Hotseat size is roughly 495px on a real device,
+        // it doesn't need to be precise on unit tests
+        val availableHeight = deviceSpec.naturalSize.second - deviceSpec.statusBarNaturalPx - 495
+
+        val workspaceSpecs =
+            WorkspaceSpecs(TestResourceHelper(context!!, TestR.xml.valid_workspace_file))
+        val widthSpec = workspaceSpecs.getCalculatedWidthSpec(4, availableWidth)
+        val heightSpec = workspaceSpecs.getCalculatedHeightSpec(5, availableHeight)
+
+        assertThat(widthSpec.availableSpace).isEqualTo(availableWidth)
+        assertThat(widthSpec.cells).isEqualTo(4)
+        assertThat(widthSpec.startPaddingPx).isEqualTo(58)
+        assertThat(widthSpec.endPaddingPx).isEqualTo(58)
+        assertThat(widthSpec.gutterPx).isEqualTo(42)
+        assertThat(widthSpec.cellSizePx).isEqualTo(210)
+
+        assertThat(heightSpec.availableSpace).isEqualTo(availableHeight)
+        assertThat(heightSpec.cells).isEqualTo(5)
+        assertThat(heightSpec.startPaddingPx).isEqualTo(21)
+        assertThat(heightSpec.endPaddingPx).isEqualTo(233)
+        assertThat(heightSpec.gutterPx).isEqualTo(42)
+        assertThat(heightSpec.cellSizePx).isEqualTo(273)
+    }
+
+    /**
+     * This test tests:
+     * - (height spec) gets the correct breakpoint from the XML - use the first breakpoint
+     * - (height spec) do the correct calculations for remainder space and fixed size
+     * - (width spec) do the correct calculations for remainder space and fixed size
+     */
+    @Test
+    fun smallPhone_returnsFirstBreakpointSpec() {
+        val deviceSpec = deviceSpecs["phone"]!!
+        deviceSpec.densityDpi = 540 // larger display size
+        initializeVarsForPhone(deviceSpec)
+
+        val availableWidth = deviceSpec.naturalSize.first
+        // Hotseat size is roughly 640px on a real device,
+        // it doesn't need to be precise on unit tests
+        val availableHeight = deviceSpec.naturalSize.second - deviceSpec.statusBarNaturalPx - 640
+
+        val workspaceSpecs =
+            WorkspaceSpecs(TestResourceHelper(context!!, TestR.xml.valid_workspace_file))
+        val widthSpec = workspaceSpecs.getCalculatedWidthSpec(4, availableWidth)
+        val heightSpec = workspaceSpecs.getCalculatedHeightSpec(5, availableHeight)
+
+        assertThat(widthSpec.availableSpace).isEqualTo(availableWidth)
+        assertThat(widthSpec.cells).isEqualTo(4)
+        assertThat(widthSpec.startPaddingPx).isEqualTo(74)
+        assertThat(widthSpec.endPaddingPx).isEqualTo(74)
+        assertThat(widthSpec.gutterPx).isEqualTo(54)
+        assertThat(widthSpec.cellSizePx).isEqualTo(193)
+
+        assertThat(heightSpec.availableSpace).isEqualTo(availableHeight)
+        assertThat(heightSpec.cells).isEqualTo(5)
+        assertThat(heightSpec.startPaddingPx).isEqualTo(0)
+        assertThat(heightSpec.endPaddingPx).isEqualTo(108)
+        assertThat(heightSpec.gutterPx).isEqualTo(54)
+        assertThat(heightSpec.cellSizePx).isEqualTo(260)
+    }
+}
diff --git a/tests/src/com/android/launcher3/workspace/WorkspaceSpecsTest.kt b/tests/src/com/android/launcher3/workspace/WorkspaceSpecsTest.kt
new file mode 100644
index 0000000..9cd0a2e
--- /dev/null
+++ b/tests/src/com/android/launcher3/workspace/WorkspaceSpecsTest.kt
@@ -0,0 +1,139 @@
+/*
+ * 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.launcher3.workspace
+
+import android.content.Context
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import androidx.test.platform.app.InstrumentationRegistry
+import com.android.launcher3.AbstractDeviceProfileTest
+import com.android.launcher3.tests.R as TestR
+import com.android.launcher3.util.TestResourceHelper
+import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class WorkspaceSpecsTest : AbstractDeviceProfileTest() {
+    override val runningContext: Context = InstrumentationRegistry.getInstrumentation().context
+
+    @Before
+    fun setup() {
+        initializeVarsForPhone(deviceSpecs["phone"]!!)
+    }
+
+    @Test
+    fun parseValidFile() {
+        val workspaceSpecs =
+            WorkspaceSpecs(TestResourceHelper(context!!, TestR.xml.valid_workspace_file))
+        assertThat(workspaceSpecs.workspaceHeightSpecList.size).isEqualTo(3)
+        assertThat(workspaceSpecs.workspaceHeightSpecList[0].toString())
+            .isEqualTo(
+                "WorkspaceSpec(" +
+                    "maxAvailableSize=1533, " +
+                    "specType=HEIGHT, " +
+                    "startPadding=SizeSpec(fixedSize=0.0, " +
+                    "ofAvailableSpace=0.0, " +
+                    "ofRemainderSpace=0.0), " +
+                    "endPadding=SizeSpec(fixedSize=84.0, " +
+                    "ofAvailableSpace=0.0, " +
+                    "ofRemainderSpace=0.0), " +
+                    "gutter=SizeSpec(fixedSize=42.0, " +
+                    "ofAvailableSpace=0.0, " +
+                    "ofRemainderSpace=0.0), " +
+                    "cellSize=SizeSpec(fixedSize=0.0, " +
+                    "ofAvailableSpace=0.15808, " +
+                    "ofRemainderSpace=0.0)" +
+                    ")"
+            )
+        assertThat(workspaceSpecs.workspaceHeightSpecList[1].toString())
+            .isEqualTo(
+                "WorkspaceSpec(" +
+                    "maxAvailableSize=1607, " +
+                    "specType=HEIGHT, " +
+                    "startPadding=SizeSpec(fixedSize=0.0, " +
+                    "ofAvailableSpace=0.0, " +
+                    "ofRemainderSpace=0.0), " +
+                    "endPadding=SizeSpec(fixedSize=0.0, " +
+                    "ofAvailableSpace=0.0, " +
+                    "ofRemainderSpace=1.0), " +
+                    "gutter=SizeSpec(fixedSize=42.0, " +
+                    "ofAvailableSpace=0.0, " +
+                    "ofRemainderSpace=0.0), " +
+                    "cellSize=SizeSpec(fixedSize=273.0, " +
+                    "ofAvailableSpace=0.0, " +
+                    "ofRemainderSpace=0.0)" +
+                    ")"
+            )
+        assertThat(workspaceSpecs.workspaceHeightSpecList[2].toString())
+            .isEqualTo(
+                "WorkspaceSpec(" +
+                    "maxAvailableSize=26247, " +
+                    "specType=HEIGHT, " +
+                    "startPadding=SizeSpec(fixedSize=21.0, " +
+                    "ofAvailableSpace=0.0, " +
+                    "ofRemainderSpace=0.0), " +
+                    "endPadding=SizeSpec(fixedSize=0.0, " +
+                    "ofAvailableSpace=0.0, " +
+                    "ofRemainderSpace=1.0), " +
+                    "gutter=SizeSpec(fixedSize=42.0, " +
+                    "ofAvailableSpace=0.0, " +
+                    "ofRemainderSpace=0.0), " +
+                    "cellSize=SizeSpec(fixedSize=273.0, " +
+                    "ofAvailableSpace=0.0, " +
+                    "ofRemainderSpace=0.0)" +
+                    ")"
+            )
+        assertThat(workspaceSpecs.workspaceWidthSpecList.size).isEqualTo(1)
+        assertThat(workspaceSpecs.workspaceWidthSpecList[0].toString())
+            .isEqualTo(
+                "WorkspaceSpec(" +
+                    "maxAvailableSize=26247, " +
+                    "specType=WIDTH, " +
+                    "startPadding=SizeSpec(fixedSize=58.0, " +
+                    "ofAvailableSpace=0.0, " +
+                    "ofRemainderSpace=0.0), " +
+                    "endPadding=SizeSpec(fixedSize=58.0, " +
+                    "ofAvailableSpace=0.0, " +
+                    "ofRemainderSpace=0.0), " +
+                    "gutter=SizeSpec(fixedSize=42.0, " +
+                    "ofAvailableSpace=0.0, " +
+                    "ofRemainderSpace=0.0), " +
+                    "cellSize=SizeSpec(fixedSize=0.0, " +
+                    "ofAvailableSpace=0.0, " +
+                    "ofRemainderSpace=0.25)" +
+                    ")"
+            )
+    }
+
+    @Test(expected = IllegalStateException::class)
+    fun parseInvalidFile_missingTag_throwsError() {
+        WorkspaceSpecs(TestResourceHelper(context!!, TestR.xml.invalid_workspace_file_case_1))
+    }
+
+    @Test(expected = IllegalStateException::class)
+    fun parseInvalidFile_moreThanOneValuePerTag_throwsError() {
+        WorkspaceSpecs(TestResourceHelper(context!!, TestR.xml.invalid_workspace_file_case_2))
+    }
+
+    @Test(expected = IllegalStateException::class)
+    fun parseInvalidFile_valueBiggerThan1_throwsError() {
+        WorkspaceSpecs(TestResourceHelper(context!!, TestR.xml.invalid_workspace_file_case_3))
+    }
+}
diff --git a/tests/tapl/com/android/launcher3/tapl/AddToHomeScreenPrompt.java b/tests/tapl/com/android/launcher3/tapl/AddToHomeScreenPrompt.java
index 98eb32e..10afe13 100644
--- a/tests/tapl/com/android/launcher3/tapl/AddToHomeScreenPrompt.java
+++ b/tests/tapl/com/android/launcher3/tapl/AddToHomeScreenPrompt.java
@@ -45,7 +45,8 @@
             mLauncher.clickObject(
                     mLauncher.waitForObjectInContainer(
                             mWidgetCell.getParent().getParent().getParent().getParent(),
-                            By.text(ADD_AUTOMATICALLY)));
+                            By.text(ADD_AUTOMATICALLY)),
+                    LauncherInstrumentation.GestureScope.OUTSIDE_WITHOUT_PILFER);
             mLauncher.waitUntilLauncherObjectGone(getSelector());
         }
     }
diff --git a/tests/tapl/com/android/launcher3/tapl/AllApps.java b/tests/tapl/com/android/launcher3/tapl/AllApps.java
index bfb115d..399abc7 100644
--- a/tests/tapl/com/android/launcher3/tapl/AllApps.java
+++ b/tests/tapl/com/android/launcher3/tapl/AllApps.java
@@ -16,6 +16,9 @@
 
 package com.android.launcher3.tapl;
 
+import static com.android.launcher3.tapl.LauncherInstrumentation.DEFAULT_POLL_INTERVAL;
+import static com.android.launcher3.tapl.LauncherInstrumentation.WAIT_TIME_MS;
+
 import android.graphics.Point;
 import android.graphics.Rect;
 import android.os.Bundle;
@@ -29,14 +32,20 @@
 import androidx.test.uiautomator.StaleObjectException;
 import androidx.test.uiautomator.UiObject2;
 
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
 import java.util.stream.Collectors;
 
 /**
  * Operations on AllApps opened from Home. Also a parent for All Apps opened from Overview.
  */
 public abstract class AllApps extends LauncherInstrumentation.VisibleContainer {
+    // Defer updates flag used to defer all apps updates by a test's request.
+    private static final int DEFER_UPDATES_TEST = 1 << 1;
+
     private static final int MAX_SCROLL_ATTEMPTS = 40;
 
     private final int mHeight;
@@ -46,8 +55,7 @@
         super(launcher);
         final UiObject2 allAppsContainer = verifyActiveContainer();
         mHeight = mLauncher.getVisibleBounds(allAppsContainer).height();
-        final UiObject2 appListRecycler = mLauncher.waitForObjectInContainer(allAppsContainer,
-                "apps_list_view");
+        final UiObject2 appListRecycler = getAppListRecycler(allAppsContainer);
         // Wait for the recycler to populate.
         mLauncher.waitForObjectInContainer(appListRecycler, By.clazz(TextView.class));
         verifyNotFrozen("All apps freeze flags upon opening all apps");
@@ -78,6 +86,11 @@
             LauncherInstrumentation.log("hasClickableIcon: icon center is under search box");
             return false;
         }
+        if (iconCenterInRecyclerTopPadding(appListRecycler, icon)) {
+            LauncherInstrumentation.log(
+                    "hasClickableIcon: icon center is under the app list recycler's top padding.");
+            return false;
+        }
         if (iconBounds.bottom > displayBottom) {
             LauncherInstrumentation.log("hasClickableIcon: icon bottom below bottom offset");
             return false;
@@ -92,6 +105,13 @@
                 iconCenter.x, iconCenter.y);
     }
 
+    private boolean iconCenterInRecyclerTopPadding(UiObject2 appsListRecycler, UiObject2 icon) {
+        final Point iconCenter = icon.getVisibleCenter();
+
+        return iconCenter.y <= mLauncher.getVisibleBounds(appsListRecycler).top
+                + getAppsListRecyclerTopPadding();
+    }
+
     /**
      * Finds an icon. If the icon doesn't exist, return null.
      * Scrolls the app list when needed to make sure the icon is visible.
@@ -105,9 +125,7 @@
              LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
                      "getting app icon " + appName + " on all apps")) {
             final UiObject2 allAppsContainer = verifyActiveContainer();
-            final UiObject2 appListRecycler = mLauncher.waitForObjectInContainer(allAppsContainer,
-                    "apps_list_view");
-            final UiObject2 searchBox = hasSearchBox() ? getSearchBox(allAppsContainer) : null;
+            final UiObject2 appListRecycler = getAppListRecycler(allAppsContainer);
 
             int deviceHeight = mLauncher.getRealDisplaySize().y;
             int bottomGestureStartOnScreen = mLauncher.getBottomGestureStartOnScreen();
@@ -122,18 +140,16 @@
                             bottomGestureStartOnScreen)) {
                         mLauncher.scrollToLastVisibleRow(
                                 allAppsContainer,
-                                mLauncher.getObjectsInContainer(allAppsContainer, "icon")
-                                        .stream()
-                                        .filter(icon ->
-                                                mLauncher.getVisibleBounds(icon).top
-                                                        < bottomGestureStartOnScreen)
-                                        .collect(Collectors.toList()),
-                                hasSearchBox()
-                                        ? mLauncher.getVisibleBounds(searchBox).bottom
-                                        - mLauncher.getVisibleBounds(allAppsContainer).top
-                                        : 0);
+                                getBottomVisibleIconBounds(allAppsContainer),
+                                mLauncher.getVisibleBounds(appListRecycler).top
+                                        + getAppsListRecyclerTopPadding()
+                                        - mLauncher.getVisibleBounds(allAppsContainer).top,
+                                getAppsListRecyclerBottomPadding());
                         verifyActiveContainer();
                         final int newScroll = getAllAppsScroll();
+                        LauncherInstrumentation.log(
+                                String.format("tryGetAppIcon: scrolled from %d to %d", scroll,
+                                        newScroll));
                         mLauncher.assertTrue(
                                 "Scrolled in a wrong direction in AllApps: from " + scroll + " to "
                                         + newScroll, newScroll >= scroll);
@@ -161,6 +177,28 @@
         }
     }
 
+    /** @return visible bounds of the top-most visible icon in the container. */
+    protected Rect getTopVisibleIconBounds(UiObject2 allAppsContainer) {
+        return mLauncher.getVisibleBounds(Collections.min(getVisibleIcons(allAppsContainer),
+                Comparator.comparingInt(i -> mLauncher.getVisibleBounds(i).top)));
+    }
+
+    /** @return visible bounds of the bottom-most visible icon in the container. */
+    protected Rect getBottomVisibleIconBounds(UiObject2 allAppsContainer) {
+        return mLauncher.getVisibleBounds(Collections.max(getVisibleIcons(allAppsContainer),
+                Comparator.comparingInt(i -> mLauncher.getVisibleBounds(i).top)));
+    }
+
+    @NonNull
+    private List<UiObject2> getVisibleIcons(UiObject2 allAppsContainer) {
+        return mLauncher.getObjectsInContainer(allAppsContainer, "icon")
+                .stream()
+                .filter(icon ->
+                        mLauncher.getVisibleBounds(icon).top
+                                < mLauncher.getBottomGestureStartOnScreen())
+                .collect(Collectors.toList());
+    }
+
     /**
      * Finds an icon. Fails if the icon doesn't exist. Scrolls the app list when needed to make
      * sure the icon is visible.
@@ -180,16 +218,25 @@
 
     protected abstract boolean hasSearchBox();
 
+    protected abstract int getAppsListRecyclerTopPadding();
+
+    protected int getAppsListRecyclerBottomPadding() {
+        return mLauncher.getTestInfo(TestProtocol.REQUEST_ALL_APPS_BOTTOM_PADDING)
+                .getInt(TestProtocol.TEST_INFO_RESPONSE_FIELD);
+    }
+
     private void scrollBackToBeginning() {
         try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
                 "want to scroll back in all apps")) {
             LauncherInstrumentation.log("Scrolling to the beginning");
             final UiObject2 allAppsContainer = verifyActiveContainer();
-            final UiObject2 searchBox = hasSearchBox() ? getSearchBox(allAppsContainer) : null;
 
             int attempts = 0;
             final Rect margins = new Rect(
-                    0, hasSearchBox() ? mLauncher.getVisibleBounds(searchBox).bottom + 1 : 0, 0, 5);
+                    /* left= */ 0,
+                    getTopVisibleIconBounds(allAppsContainer).bottom,
+                    /* right= */ 0,
+                    /* bottom= */ getAppsListRecyclerBottomPadding());
 
             for (int scroll = getAllAppsScroll();
                     scroll != 0;
@@ -214,13 +261,13 @@
         }
     }
 
-    private int getAllAppsScroll() {
-        return mLauncher.getTestInfo(
-                TestProtocol.REQUEST_APPS_LIST_SCROLL_Y)
-                .getInt(TestProtocol.TEST_INFO_RESPONSE_FIELD);
+    protected abstract int getAllAppsScroll();
+
+    protected UiObject2 getAppListRecycler(UiObject2 allAppsContainer) {
+        return mLauncher.waitForObjectInContainer(allAppsContainer, "apps_list_view");
     }
 
-    private UiObject2 getSearchBox(UiObject2 allAppsContainer) {
+    protected UiObject2 getSearchBox(UiObject2 allAppsContainer) {
         return mLauncher.waitForObjectInContainer(allAppsContainer, "search_container_all_apps");
     }
 
@@ -274,12 +321,16 @@
      */
     public void unfreeze() {
         mLauncher.getTestInfo(TestProtocol.REQUEST_UNFREEZE_APP_LIST);
-        verifyNotFrozen("All apps freeze flags upon unfreezing");
     }
 
     private void verifyNotFrozen(String message) {
+        mLauncher.assertEquals(message, 0, getFreezeFlags() & DEFER_UPDATES_TEST);
+        mLauncher.assertTrue(message, mLauncher.waitAndGet(() -> getFreezeFlags() == 0,
+                WAIT_TIME_MS, DEFAULT_POLL_INTERVAL));
+    }
+
+    private int getFreezeFlags() {
         final Bundle testInfo = mLauncher.getTestInfo(TestProtocol.REQUEST_APP_LIST_FREEZE_FLAGS);
-        if (testInfo == null) return;
-        mLauncher.assertEquals(message, 0, testInfo.getInt(TestProtocol.TEST_INFO_RESPONSE_FIELD));
+        return testInfo == null ? 0 : testInfo.getInt(TestProtocol.TEST_INFO_RESPONSE_FIELD);
     }
 }
\ No newline at end of file
diff --git a/tests/tapl/com/android/launcher3/tapl/AllAppsFromTaskbar.java b/tests/tapl/com/android/launcher3/tapl/AllAppsFromTaskbar.java
index 5164025..c4744a1 100644
--- a/tests/tapl/com/android/launcher3/tapl/AllAppsFromTaskbar.java
+++ b/tests/tapl/com/android/launcher3/tapl/AllAppsFromTaskbar.java
@@ -18,6 +18,8 @@
 import androidx.annotation.NonNull;
 import androidx.test.uiautomator.UiObject2;
 
+import com.android.launcher3.testing.shared.TestProtocol;
+
 /**
  * Operations on AllApps opened from the Taskbar.
  */
@@ -48,4 +50,16 @@
     protected boolean hasSearchBox() {
         return false;
     }
+
+    @Override
+    protected int getAppsListRecyclerTopPadding() {
+        return mLauncher.getTestInfo(TestProtocol.REQUEST_TASKBAR_ALL_APPS_TOP_PADDING)
+                .getInt(TestProtocol.TEST_INFO_RESPONSE_FIELD);
+    }
+
+    @Override
+    protected int getAllAppsScroll() {
+        return mLauncher.getTestInfo(TestProtocol.REQUEST_TASKBAR_APPS_LIST_SCROLL_Y)
+                .getInt(TestProtocol.TEST_INFO_RESPONSE_FIELD);
+    }
 }
diff --git a/tests/tapl/com/android/launcher3/tapl/AllAppsQsb.java b/tests/tapl/com/android/launcher3/tapl/AllAppsQsb.java
new file mode 100644
index 0000000..0931cd4
--- /dev/null
+++ b/tests/tapl/com/android/launcher3/tapl/AllAppsQsb.java
@@ -0,0 +1,37 @@
+/*
+ * 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.launcher3.tapl;
+
+import androidx.test.uiautomator.UiObject2;
+
+/**
+ * Operations on AllApp screen qsb.
+ */
+class AllAppsQsb extends Qsb {
+
+    private final UiObject2 mAllAppsContainer;
+
+    AllAppsQsb(LauncherInstrumentation launcher, UiObject2 allAppsContainer) {
+        super(launcher);
+        mAllAppsContainer = allAppsContainer;
+        waitForQsbObject();
+    }
+
+    @Override
+    protected UiObject2 waitForQsbObject() {
+        return mLauncher.waitForObjectInContainer(mAllAppsContainer, "search_container_all_apps");
+    }
+}
diff --git a/tests/tapl/com/android/launcher3/tapl/AppIcon.java b/tests/tapl/com/android/launcher3/tapl/AppIcon.java
index e28f0af..0a0cf07 100644
--- a/tests/tapl/com/android/launcher3/tapl/AppIcon.java
+++ b/tests/tapl/com/android/launcher3/tapl/AppIcon.java
@@ -18,11 +18,12 @@
 
 import android.widget.TextView;
 
+import androidx.annotation.NonNull;
 import androidx.test.uiautomator.By;
 import androidx.test.uiautomator.BySelector;
 import androidx.test.uiautomator.UiObject2;
 
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 
 import java.util.regex.Pattern;
 
@@ -36,7 +37,8 @@
     }
 
     static BySelector getAppIconSelector(String appName, LauncherInstrumentation launcher) {
-        return By.clazz(TextView.class).text(appName).pkg(launcher.getLauncherPackageName());
+        return By.clazz(TextView.class).textContains(appName)
+                .pkg(launcher.getLauncherPackageName());
     }
 
     static BySelector getAnyAppIconSelector() {
@@ -86,4 +88,10 @@
     protected String launchableType() {
         return "app icon";
     }
+
+    /** Return the app name of a icon */
+    @NonNull
+    public String getIconName() {
+        return getObject().getText();
+    }
 }
diff --git a/tests/tapl/com/android/launcher3/tapl/AppIconMenu.java b/tests/tapl/com/android/launcher3/tapl/AppIconMenu.java
index 82d9630..667290f 100644
--- a/tests/tapl/com/android/launcher3/tapl/AppIconMenu.java
+++ b/tests/tapl/com/android/launcher3/tapl/AppIconMenu.java
@@ -54,5 +54,14 @@
         return createMenuItem(menuItem);
     }
 
+    /**
+     * Returns a menu item that matches the text "Split screen". Fails if it doesn't exist.
+     */
+    public SplitScreenMenuItem getSplitScreenMenuItem() {
+        final UiObject2 menuItem = mLauncher.waitForObjectInContainer(mDeepShortcutsContainer,
+                AppIcon.getAppIconSelector("Split screen", mLauncher));
+        return new SplitScreenMenuItem(mLauncher, menuItem);
+    }
+
     protected abstract AppIconMenuItem createMenuItem(UiObject2 menuItem);
 }
diff --git a/tests/tapl/com/android/launcher3/tapl/AppIconMenuItem.java b/tests/tapl/com/android/launcher3/tapl/AppIconMenuItem.java
index 5cf5aba..284168b 100644
--- a/tests/tapl/com/android/launcher3/tapl/AppIconMenuItem.java
+++ b/tests/tapl/com/android/launcher3/tapl/AppIconMenuItem.java
@@ -18,7 +18,7 @@
 
 import androidx.test.uiautomator.UiObject2;
 
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 
 /**
  * Menu item in an app icon menu.
diff --git a/tests/tapl/com/android/launcher3/tapl/Background.java b/tests/tapl/com/android/launcher3/tapl/Background.java
index 589e13c..5a96d95 100644
--- a/tests/tapl/com/android/launcher3/tapl/Background.java
+++ b/tests/tapl/com/android/launcher3/tapl/Background.java
@@ -19,7 +19,7 @@
 import static android.view.accessibility.AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
 
 import static com.android.launcher3.tapl.OverviewTask.TASK_START_EVENT;
-import static com.android.launcher3.testing.TestProtocol.OVERVIEW_STATE_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.OVERVIEW_STATE_ORDINAL;
 
 import android.graphics.Point;
 import android.os.SystemClock;
@@ -28,7 +28,7 @@
 import androidx.annotation.NonNull;
 import androidx.test.uiautomator.UiObject2;
 
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 
 import java.util.List;
 import java.util.regex.Pattern;
@@ -58,7 +58,7 @@
                      "want to switch from background to overview")) {
             verifyActiveContainer();
             goToOverviewUnchecked();
-            return mLauncher.isFallbackOverview()
+            return mLauncher.is3PLauncher()
                     ? new BaseOverview(mLauncher) : new Overview(mLauncher);
         }
     }
@@ -206,21 +206,30 @@
                 MotionEvent.ACTION_UP, end, gestureScope);
     }
 
+    /**
+     * Quick switching to the app with swiping to right.
+     */
     @NonNull
     public LaunchedAppState quickSwitchToPreviousApp() {
-        boolean toRight = true;
-        quickSwitch(toRight);
+        quickSwitch(true /* toRight */);
         return new LaunchedAppState(mLauncher);
     }
 
+    /**
+     * Quick switching to the app with swiping to left.
+     */
     @NonNull
     public LaunchedAppState quickSwitchToPreviousAppSwipeLeft() {
-        boolean toRight = false;
-        quickSwitch(toRight);
+        quickSwitch(false /* toRight */);
         return new LaunchedAppState(mLauncher);
     }
 
-    @NonNull
+    /**
+     * Making swipe gesture to quick-switch app tasks.
+     *
+     * @param toRight {@code true} means swiping right, {@code false} means swiping left.
+     * @throws {@link AssertionError} when failing to verify the visible UI in the container.
+     */
     private void quickSwitch(boolean toRight) {
         try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
              LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
diff --git a/tests/tapl/com/android/launcher3/tapl/BaseOverview.java b/tests/tapl/com/android/launcher3/tapl/BaseOverview.java
index b7bca02..2c3c028 100644
--- a/tests/tapl/com/android/launcher3/tapl/BaseOverview.java
+++ b/tests/tapl/com/android/launcher3/tapl/BaseOverview.java
@@ -19,6 +19,7 @@
 import android.graphics.Rect;
 
 import androidx.annotation.NonNull;
+import androidx.test.uiautomator.By;
 import androidx.test.uiautomator.BySelector;
 import androidx.test.uiautomator.Direction;
 import androidx.test.uiautomator.UiObject2;
@@ -71,6 +72,44 @@
     }
 
     /**
+     * Flings backward (right) and waits the fling's end.
+     */
+    public void flingBackward() {
+        try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck()) {
+            flingBackwardImpl();
+        }
+    }
+
+    private void flingBackwardImpl() {
+        try (LauncherInstrumentation.Closable c =
+                     mLauncher.addContextLayer("want to fling backward in overview")) {
+            LauncherInstrumentation.log("Overview.flingBackward before fling");
+            final UiObject2 overview = verifyActiveContainer();
+            final int rightMargin =
+                    mLauncher.getTargetInsets().right + mLauncher.getEdgeSensitivityWidth();
+            mLauncher.scroll(
+                    overview, Direction.RIGHT, new Rect(0, 0, rightMargin + 1, 0), 20, false);
+            try (LauncherInstrumentation.Closable c2 =
+                         mLauncher.addContextLayer("flung backwards")) {
+                verifyActiveContainer();
+                verifyActionsViewVisibility();
+            }
+        }
+    }
+
+    private OverviewTask flingToFirstTask() {
+        OverviewTask currentTask = getCurrentTask();
+
+        while (mLauncher.getRealDisplaySize().x - currentTask.getUiObject().getVisibleBounds().right
+                <= mLauncher.getOverviewPageSpacing()) {
+            flingBackwardImpl();
+            currentTask = getCurrentTask();
+        }
+
+        return currentTask;
+    }
+
+    /**
      * Dismissed all tasks by scrolling to Clear-all button and pressing it.
      */
     public void dismissAllTasks() {
@@ -93,23 +132,57 @@
     }
 
     /**
-     * Flings backward (right) and waits the fling's end.
+     * Touch to the right of current task. This should dismiss overview and go back to Workspace.
      */
-    public void flingBackward() {
+    public Workspace touchOutsideFirstTask() {
         try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
-             LauncherInstrumentation.Closable c =
-                     mLauncher.addContextLayer("want to fling backward in overview")) {
-            LauncherInstrumentation.log("Overview.flingBackward before fling");
-            final UiObject2 overview = verifyActiveContainer();
-            final int rightMargin =
-                    mLauncher.getTargetInsets().right + mLauncher.getEdgeSensitivityWidth();
-            mLauncher.scroll(
-                    overview, Direction.RIGHT, new Rect(0, 0, rightMargin + 1, 0), 20, false);
-            try (LauncherInstrumentation.Closable c2 =
-                         mLauncher.addContextLayer("flung backwards")) {
-                verifyActiveContainer();
-                verifyActionsViewVisibility();
+             LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                     "touching outside the focused task")) {
+
+            if (getTaskCount() < 2) {
+                throw new IllegalStateException(
+                        "Need to have at least 2 tasks");
             }
+
+            OverviewTask currentTask = flingToFirstTask();
+
+            mLauncher.touchOutsideContainer(currentTask.getUiObject(),
+                    /* tapRight= */ true,
+                    /* halfwayToEdge= */ false);
+
+            return new Workspace(mLauncher);
+        }
+    }
+
+    /**
+     * Touch between two tasks
+     */
+    public void touchBetweenTasks() {
+        try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
+             LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                     "touching outside the focused task")) {
+            if (getTaskCount() < 2) {
+                throw new IllegalStateException(
+                        "Need to have at least 2 tasks");
+            }
+
+            OverviewTask currentTask = flingToFirstTask();
+
+            mLauncher.touchOutsideContainer(currentTask.getUiObject(),
+                    /* tapRight= */ false,
+                    /* halfwayToEdge= */ false);
+        }
+    }
+
+    /**
+     * Touch either on the right or the left corner of the screen, 1 pixel from the bottom and
+     * from the sides.
+     */
+    public void touchTaskbarBottomCorner(boolean tapRight) {
+        try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck()) {
+            Taskbar taskbar = new Taskbar(mLauncher);
+            taskbar.touchBottomCorner(tapRight);
+            verifyActiveContainer();
         }
     }
 
@@ -168,6 +241,27 @@
         return new OverviewTask(mLauncher, widestTask, this);
     }
 
+    /** Returns an overview task matching TestActivity {@param activityNumber}. */
+    @NonNull
+    public OverviewTask getTestActivityTask(int activityNumber) {
+        final List<UiObject2> taskViews = getTasks();
+        mLauncher.assertNotEquals("Unable to find a task", 0, taskViews.size());
+
+        final String activityName = "TestActivity" + activityNumber;
+        UiObject2 task = null;
+        for (UiObject2 taskView : taskViews) {
+            // TODO(b/239452415): Use equals instead of descEndsWith
+            if (taskView.getParent().hasObject(By.descEndsWith(activityName))) {
+                task = taskView;
+                break;
+            }
+        }
+        mLauncher.assertNotNull(
+                "Unable to find a task with " + activityName + " from the task list", task);
+
+        return new OverviewTask(mLauncher, task, this);
+    }
+
     /**
      * Returns a list of all tasks fully visible in the tablet grid overview.
      */
@@ -222,42 +316,44 @@
      * Returns if clear all button is visible.
      */
     public boolean isClearAllVisible() {
-        return mLauncher.hasLauncherObject(mLauncher.getOverviewObjectSelector("clear_all"));
+        return verifyActiveContainer().hasObject(
+                mLauncher.getOverviewObjectSelector("clear_all"));
+    }
+
+    protected boolean isActionsViewVisible() {
+        if (!hasTasks() || isClearAllVisible()) {
+            return false;
+        }
+        OverviewTask task = mLauncher.isTablet() ? getFocusedTaskForTablet() : getCurrentTask();
+        if (task == null) {
+            return false;
+        }
+        // In tablets, if focused task is not in center, overview actions aren't visible.
+        if (mLauncher.isTablet()
+                && Math.abs(task.getExactCenterX() - mLauncher.getExactScreenCenterX()) >= 1) {
+            return false;
+        }
+        // Overview actions aren't visible for split screen tasks.
+        return !task.isTaskSplit();
     }
 
     private void verifyActionsViewVisibility() {
-        if (!hasTasks()) {
-            return;
-        }
         try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
                 "want to assert overview actions view visibility")) {
-            if (mLauncher.isTablet() && !isOverviewSnappedToFocusedTaskForTablet()) {
-                mLauncher.waitUntilOverviewObjectGone("action_buttons");
-            } else {
+            if (isActionsViewVisible()) {
                 mLauncher.waitForOverviewObject("action_buttons");
+            } else {
+                mLauncher.waitUntilOverviewObjectGone("action_buttons");
             }
         }
     }
 
     /**
-     * Returns if focused task is currently snapped task in tablet grid overview.
-     */
-    private boolean isOverviewSnappedToFocusedTaskForTablet() {
-        UiObject2 focusedTask = getFocusedTaskForTablet();
-        if (focusedTask == null) {
-            return false;
-        }
-        return Math.abs(
-                focusedTask.getVisibleBounds().exactCenterX() - mLauncher.getExactScreenCenterX())
-                < 1;
-    }
-
-    /**
      * Returns Overview focused task if it exists.
      *
      * @throws IllegalStateException if not run on a tablet device.
      */
-    UiObject2 getFocusedTaskForTablet() {
+    OverviewTask getFocusedTaskForTablet() {
         if (!mLauncher.isTablet()) {
             throw new IllegalStateException("Must be run on tablet device.");
         }
@@ -268,9 +364,9 @@
         int focusedTaskHeight = mLauncher.getFocusedTaskHeightForTablet();
         for (UiObject2 task : taskViews) {
             if (task.getVisibleBounds().height() == focusedTaskHeight) {
-                return task;
+                return new OverviewTask(mLauncher, task, this);
             }
         }
         return null;
     }
-}
\ No newline at end of file
+}
diff --git a/tests/tapl/com/android/launcher3/tapl/Folder.java b/tests/tapl/com/android/launcher3/tapl/Folder.java
index 26f0a8b..1352cc0 100644
--- a/tests/tapl/com/android/launcher3/tapl/Folder.java
+++ b/tests/tapl/com/android/launcher3/tapl/Folder.java
@@ -16,11 +16,6 @@
 
 package com.android.launcher3.tapl;
 
-import android.graphics.Point;
-import android.graphics.Rect;
-import android.os.SystemClock;
-import android.view.MotionEvent;
-
 import androidx.annotation.NonNull;
 import androidx.test.uiautomator.UiObject2;
 
@@ -50,25 +45,15 @@
         }
     }
 
-    private void touchOutsideFolder() {
-        Rect containerBounds = mLauncher.getVisibleBounds(this.mContainer);
-        final long downTime = SystemClock.uptimeMillis();
-        Point containerLeftTopCorner = new Point(containerBounds.left - 1, containerBounds.top - 1);
-        mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_DOWN,
-                containerLeftTopCorner, LauncherInstrumentation.GestureScope.INSIDE);
-        mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_UP,
-                containerLeftTopCorner, LauncherInstrumentation.GestureScope.INSIDE);
-    }
-
     /**
-     * CLose opened folder if possible. It throws assertion error if the folder is already closed.
+     * Close opened folder if possible. It throws assertion error if the folder is already closed.
      */
     public Workspace close() {
         try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
              LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
                      "Want to close opened folder")) {
             mLauncher.waitForLauncherObject(FOLDER_CONTENT_RES_ID);
-            touchOutsideFolder();
+            mLauncher.touchOutsideContainer(this.mContainer, false /* tapRight */);
             mLauncher.waitUntilLauncherObjectGone(FOLDER_CONTENT_RES_ID);
             return mLauncher.getWorkspace();
         }
diff --git a/tests/tapl/com/android/launcher3/tapl/FolderIcon.java b/tests/tapl/com/android/launcher3/tapl/FolderIcon.java
index 9b4717f..0c453bd 100644
--- a/tests/tapl/com/android/launcher3/tapl/FolderIcon.java
+++ b/tests/tapl/com/android/launcher3/tapl/FolderIcon.java
@@ -21,7 +21,7 @@
 import androidx.annotation.NonNull;
 import androidx.test.uiautomator.UiObject2;
 
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 
 /**
  * Folder Icon, an app folder in workspace.
diff --git a/tests/tapl/com/android/launcher3/tapl/HomeAllApps.java b/tests/tapl/com/android/launcher3/tapl/HomeAllApps.java
index c275f3b..1239d7a 100644
--- a/tests/tapl/com/android/launcher3/tapl/HomeAllApps.java
+++ b/tests/tapl/com/android/launcher3/tapl/HomeAllApps.java
@@ -15,15 +15,54 @@
  */
 package com.android.launcher3.tapl;
 
+import static com.android.launcher3.testing.shared.TestProtocol.NORMAL_STATE_ORDINAL;
+
 import androidx.annotation.NonNull;
 import androidx.test.uiautomator.UiObject2;
 
+import com.android.launcher3.testing.shared.TestProtocol;
+
 public class HomeAllApps extends AllApps {
+    private static final String BOTTOM_SHEET_RES_ID = "bottom_sheet_background";
 
     HomeAllApps(LauncherInstrumentation launcher) {
         super(launcher);
     }
 
+    /**
+     * Swipes down to Workspace.
+     *
+     * @return the Workspace object.
+     */
+    @NonNull
+    public Workspace switchToWorkspace() {
+        try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
+             LauncherInstrumentation.Closable c =
+                     mLauncher.addContextLayer("want to switch from all apps to workspace")) {
+            UiObject2 allAppsContainer = verifyActiveContainer();
+
+            final int startX = allAppsContainer.getVisibleCenter().x;
+            final int startY = getTopVisibleIconBounds(allAppsContainer).centerY();
+            final int endY = mLauncher.getDevice().getDisplayHeight();
+            LauncherInstrumentation.log(
+                    "switchToWorkspace: startY = " + startY + ", endY = " + endY
+                            + ", slop = " + mLauncher.getTouchSlop());
+
+            mLauncher.swipeToState(
+                    startX,
+                    startY,
+                    startX,
+                    endY,
+                    5 /* steps */,
+                    NORMAL_STATE_ORDINAL, LauncherInstrumentation.GestureScope.INSIDE);
+
+            try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
+                    "swiped to workspace")) {
+                return mLauncher.getWorkspace();
+            }
+        }
+    }
+
     @Override
     protected LauncherInstrumentation.ContainerType getContainerType() {
         return LauncherInstrumentation.ContainerType.HOME_ALL_APPS;
@@ -45,4 +84,44 @@
     protected boolean hasSearchBox() {
         return true;
     }
+
+    @Override
+    protected int getAppsListRecyclerTopPadding() {
+        return mLauncher.getTestInfo(TestProtocol.REQUEST_ALL_APPS_TOP_PADDING)
+                .getInt(TestProtocol.TEST_INFO_RESPONSE_FIELD);
+    }
+
+    /**
+     * Taps outside bottom sheet to dismiss and return to workspace. Available on tablets only.
+     * @param tapRight Tap on the right of bottom sheet if true, or left otherwise.
+     */
+    public Workspace dismissByTappingOutsideForTablet(boolean tapRight) {
+        try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
+             LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                     "want to tap outside AllApps bottom sheet on the "
+                             + (tapRight ? "right" : "left"))) {
+            final UiObject2 allAppsBottomSheet =
+                    mLauncher.waitForLauncherObject(BOTTOM_SHEET_RES_ID);
+            mLauncher.touchOutsideContainer(allAppsBottomSheet, tapRight);
+            try (LauncherInstrumentation.Closable tapped = mLauncher.addContextLayer(
+                    "tapped outside AllApps bottom sheet")) {
+                return mLauncher.getWorkspace();
+            }
+        }
+    }
+
+    /**
+     * Return the QSB UI object on the AllApps screen.
+     * @return the QSB UI object.
+     */
+    @NonNull
+    public Qsb getQsb() {
+        return new AllAppsQsb(mLauncher, verifyActiveContainer());
+    }
+
+    @Override
+    protected int getAllAppsScroll() {
+        return mLauncher.getTestInfo(TestProtocol.REQUEST_APPS_LIST_SCROLL_Y)
+                .getInt(TestProtocol.TEST_INFO_RESPONSE_FIELD);
+    }
 }
diff --git a/tests/tapl/com/android/launcher3/tapl/HomeAppIcon.java b/tests/tapl/com/android/launcher3/tapl/HomeAppIcon.java
index 71d8ba9..693baa0 100644
--- a/tests/tapl/com/android/launcher3/tapl/HomeAppIcon.java
+++ b/tests/tapl/com/android/launcher3/tapl/HomeAppIcon.java
@@ -103,40 +103,45 @@
     }
 
     /**
-     * Drag an object to the given cell in workspace. The target cell must be empty.
+     * Drag an object to the given cell in hotseat. The target cell should be expected to be empty.
      *
-     * @param cellX zero based column number, starting from the left of the screen.
-     * @param cellY zero based row number, starting from the top of the screen.
+     * @param cellInd zero based index number of the hotseat cells.
+     * @return the workspace app icon.
      */
-    public HomeAppIcon dragToWorkspace(int cellX, int cellY) {
+    @NonNull
+    public WorkspaceAppIcon dragToHotseat(int cellInd) {
         try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
              LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
-                     String.format("want to drag the icon to cell(%d, %d)", cellX, cellY))
+                     String.format("want to drag the icon to hotseat cell %d", cellInd))
         ) {
-            final Supplier<Point> dest = () -> Workspace.getCellCenter(mLauncher, cellX, cellY);
-            Workspace.dragIconToWorkspace(
+            final Supplier<Point> dest = () -> Workspace.getHotseatCellCenter(mLauncher, cellInd);
+
+            Workspace.dragIconToHotseat(
                     mLauncher,
-                    /* launchable= */ this,
+                    this,
                     dest,
                     () -> addExpectedEventsForLongClick(),
                     /*expectDropEvents= */ null);
             try (LauncherInstrumentation.Closable ignore = mLauncher.addContextLayer("dragged")) {
                 WorkspaceAppIcon appIcon =
-                        (WorkspaceAppIcon) mLauncher.getWorkspace().getWorkspaceAppIcon(mAppName);
+                        (WorkspaceAppIcon) mLauncher.getWorkspace().getHotseatAppIcon(mAppName);
                 mLauncher.assertTrue(
-                        String.format(
-                                "The %s icon should be in the cell (%d, %d).", mAppName, cellX,
-                                cellY),
-                        appIcon.isInCell(cellX, cellY));
+                        String.format("The %s icon should be in the hotseat cell %d.", mAppName,
+                                cellInd),
+                        appIcon.isInHotseatCell(cellInd));
                 return appIcon;
             }
         }
     }
 
-
     /** This method requires public access, however should not be called in tests. */
     @Override
     public Launchable getLaunchable() {
         return this;
     }
+
+    boolean isInHotseatCell(int cellInd) {
+        final Point center = Workspace.getHotseatCellCenter(mLauncher, cellInd);
+        return mObject.getVisibleBounds().contains(center.x, center.y);
+    }
 }
diff --git a/tests/tapl/com/android/launcher3/tapl/HomeQsb.java b/tests/tapl/com/android/launcher3/tapl/HomeQsb.java
index 5f92199..20d09a1 100644
--- a/tests/tapl/com/android/launcher3/tapl/HomeQsb.java
+++ b/tests/tapl/com/android/launcher3/tapl/HomeQsb.java
@@ -15,31 +15,23 @@
  */
 package com.android.launcher3.tapl;
 
+import androidx.test.uiautomator.UiObject2;
+
 /**
- * Operations on home screen qsb.
+ * Operations on Home screen qsb.
  */
-public class HomeQsb {
+class HomeQsb extends Qsb {
 
-    private final LauncherInstrumentation mLauncher;
+    private final UiObject2 mHotSeat;
 
-    HomeQsb(LauncherInstrumentation launcher) {
-        mLauncher = launcher;
-        mLauncher.waitForLauncherObject("search_container_hotseat");
+    HomeQsb(LauncherInstrumentation launcher, UiObject2 hotseat) {
+        super(launcher);
+        mHotSeat = hotseat;
+        waitForQsbObject();
     }
 
-    /**
-     * Show search result page from tapping qsb.
-     */
-    public SearchResultFromQsb showSearchResult() {
-        try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
-                "want to open search result page");
-             LauncherInstrumentation.Closable e = mLauncher.eventsCheck()) {
-            mLauncher.clickLauncherObject(
-                    mLauncher.waitForLauncherObject("search_container_hotseat"));
-            try (LauncherInstrumentation.Closable c2 = mLauncher.addContextLayer(
-                    "clicked qsb to open search result page")) {
-                return new SearchResultFromQsb(mLauncher);
-            }
-        }
+    @Override
+    protected UiObject2 waitForQsbObject() {
+        return mLauncher.waitForObjectInContainer(mHotSeat, "search_container_hotseat");
     }
 }
diff --git a/tests/tapl/com/android/launcher3/tapl/Launchable.java b/tests/tapl/com/android/launcher3/tapl/Launchable.java
index 33fea2d..48e327f 100644
--- a/tests/tapl/com/android/launcher3/tapl/Launchable.java
+++ b/tests/tapl/com/android/launcher3/tapl/Launchable.java
@@ -16,7 +16,7 @@
 
 package com.android.launcher3.tapl;
 
-import static com.android.launcher3.testing.TestProtocol.SPRING_LOADED_STATE_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.SPRING_LOADED_STATE_ORDINAL;
 
 import android.graphics.Point;
 import android.view.MotionEvent;
@@ -26,7 +26,7 @@
 import androidx.test.uiautomator.UiObject2;
 import androidx.test.uiautomator.Until;
 
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 
 /**
  * Ancestor for AppIcon and AppMenuItem.
@@ -76,6 +76,27 @@
         }
     }
 
+    /**
+     * Clicks a launcher object to initiate splitscreen, where the selected app will be one of two
+     * apps running on the screen. Should be called when Launcher is in a "split staging" state
+     * and is waiting for the user's selection of a second app. Expects a SPLIT_START_EVENT to be
+     * fired when the click is executed.
+     */
+    public LaunchedAppState launchIntoSplitScreen() {
+        try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
+                "want to launch split tasks from " + launchableType())) {
+            LauncherInstrumentation.log("Launchable.launch before click "
+                    + mObject.getVisibleCenter() + " in " + mLauncher.getVisibleBounds(mObject));
+
+            mLauncher.clickLauncherObject(mObject);
+
+            try (LauncherInstrumentation.Closable c2 = mLauncher.addContextLayer("clicked")) {
+                mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, OverviewTask.SPLIT_START_EVENT);
+                return new LaunchedAppState(mLauncher);
+            }
+        }
+    }
+
     protected LaunchedAppState assertAppLaunched(BySelector selector) {
         mLauncher.assertTrue(
                 "App didn't start: (" + selector + ")",
diff --git a/tests/tapl/com/android/launcher3/tapl/LaunchedAppState.java b/tests/tapl/com/android/launcher3/tapl/LaunchedAppState.java
index 046d36b..a59eff7 100644
--- a/tests/tapl/com/android/launcher3/tapl/LaunchedAppState.java
+++ b/tests/tapl/com/android/launcher3/tapl/LaunchedAppState.java
@@ -16,18 +16,28 @@
 
 package com.android.launcher3.tapl;
 
-import static com.android.launcher3.testing.TestProtocol.REQUEST_DISABLE_MANUAL_TASKBAR_STASHING;
-import static com.android.launcher3.testing.TestProtocol.REQUEST_ENABLE_MANUAL_TASKBAR_STASHING;
-import static com.android.launcher3.testing.TestProtocol.REQUEST_STASHED_TASKBAR_HEIGHT;
+import static com.android.launcher3.tapl.LauncherInstrumentation.DEFAULT_POLL_INTERVAL;
+import static com.android.launcher3.tapl.LauncherInstrumentation.TASKBAR_RES_ID;
+import static com.android.launcher3.tapl.LauncherInstrumentation.WAIT_TIME_MS;
+import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_DISABLE_BLOCK_TIMEOUT;
+import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_DISABLE_MANUAL_TASKBAR_STASHING;
+import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_ENABLE_BLOCK_TIMEOUT;
+import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_ENABLE_MANUAL_TASKBAR_STASHING;
+import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_SHELL_DRAG_READY;
+import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_STASHED_TASKBAR_HEIGHT;
+import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_STASHED_TASKBAR_SCALE;
 
 import android.graphics.Point;
 import android.graphics.Rect;
 import android.os.SystemClock;
 import android.view.MotionEvent;
+import android.view.ViewConfiguration;
 
 import androidx.test.uiautomator.By;
+import androidx.test.uiautomator.Condition;
+import androidx.test.uiautomator.UiDevice;
 
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 
 /**
  * Background state operations specific to when an app has been launched.
@@ -37,6 +47,18 @@
     // More drag steps than Launchables to give the window manager time to register the drag.
     private static final int DEFAULT_DRAG_STEPS = 35;
 
+    // UNSTASHED_TASKBAR_HANDLE_HINT_SCALE value from TaskbarStashController.
+    private static final float UNSTASHED_TASKBAR_HANDLE_HINT_SCALE = 1.1f;
+
+    private final Condition<UiDevice, Boolean> mStashedTaskbarHintScaleCondition =
+            device -> mLauncher.getTestInfo(REQUEST_STASHED_TASKBAR_SCALE).getFloat(
+                    TestProtocol.TEST_INFO_RESPONSE_FIELD) - UNSTASHED_TASKBAR_HANDLE_HINT_SCALE
+                    < 0.00001f;
+
+    private final Condition<UiDevice, Boolean> mStashedTaskbarDefaultScaleCondition =
+            device -> mLauncher.getTestInfo(REQUEST_STASHED_TASKBAR_SCALE).getFloat(
+                    TestProtocol.TEST_INFO_RESPONSE_FIELD) - 1f < 0.00001f;
+
     LaunchedAppState(LauncherInstrumentation launcher) {
         super(launcher);
     }
@@ -54,24 +76,45 @@
     public Taskbar getTaskbar() {
         try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
                 "want to get the taskbar")) {
-            mLauncher.waitForLauncherObject("taskbar_view");
+            mLauncher.waitForSystemLauncherObject(TASKBAR_RES_ID);
 
             return new Taskbar(mLauncher);
         }
     }
 
     /**
+     * Waits for the taskbar to be hidden, or fails.
+     */
+    public void assertTaskbarHidden() {
+        try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                "waiting for taskbar to be hidden")) {
+            mLauncher.waitUntilSystemLauncherObjectGone(TASKBAR_RES_ID);
+        }
+    }
+
+    /**
+     * Waits for the taskbar to be visible, or fails.
+     */
+    public void assertTaskbarVisible() {
+        try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                "waiting for taskbar to be visible")) {
+            mLauncher.waitForSystemLauncherObject(TASKBAR_RES_ID);
+        }
+    }
+
+    /**
      * Returns the Taskbar in a visible state.
      *
      * The taskbar must already be hidden when calling this method.
      */
     public Taskbar showTaskbar() {
         mLauncher.getTestInfo(REQUEST_ENABLE_MANUAL_TASKBAR_STASHING);
+        mLauncher.getTestInfo(REQUEST_ENABLE_BLOCK_TIMEOUT);
 
         try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
              LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
                      "want to show the taskbar")) {
-            mLauncher.waitUntilLauncherObjectGone("taskbar_view");
+            mLauncher.waitUntilSystemLauncherObjectGone(TASKBAR_RES_ID);
 
             final long downTime = SystemClock.uptimeMillis();
             final int unstashTargetY = mLauncher.getRealDisplaySize().y
@@ -85,7 +128,7 @@
             LauncherInstrumentation.log("showTaskbar: sent down");
 
             try (LauncherInstrumentation.Closable c2 = mLauncher.addContextLayer("pressed down")) {
-                mLauncher.waitForLauncherObject("taskbar_view");
+                mLauncher.waitForSystemLauncherObject(TASKBAR_RES_ID);
                 mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_UP, unstashTarget,
                         LauncherInstrumentation.GestureScope.OUTSIDE_WITH_PILFER);
 
@@ -93,6 +136,7 @@
             }
         } finally {
             mLauncher.getTestInfo(REQUEST_DISABLE_MANUAL_TASKBAR_STASHING);
+            mLauncher.getTestInfo(REQUEST_DISABLE_BLOCK_TIMEOUT);
         }
     }
 
@@ -121,6 +165,12 @@
 
             try (LauncherInstrumentation.Closable c2 = launcher.addContextLayer(
                     "started item drag")) {
+                launcher.assertTrue("Shell drag not marked as ready", launcher.waitAndGet(() -> {
+                    LauncherInstrumentation.log("Checking shell drag ready");
+                    return launcher.getTestInfo(REQUEST_SHELL_DRAG_READY)
+                            .getBoolean(TestProtocol.TEST_INFO_RESPONSE_FIELD, false);
+                }, WAIT_TIME_MS, DEFAULT_POLL_INTERVAL));
+
                 launcher.movePointer(
                         dragStart,
                         endPoint,
@@ -153,4 +203,89 @@
             }
         }
     }
+
+    /**
+     * Emulate the cursor hovering the screen edge to unstash the taskbar.
+     *
+     * <p>This unstashing occurs when not actively hovering the taskbar.
+     */
+    public void hoverScreenBottomEdgeToUnstashTaskbar() {
+        try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
+             LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                     "cursor hover entering screen edge to unstash taskbar")) {
+            mLauncher.getDevice().wait(mStashedTaskbarDefaultScaleCondition,
+                    ViewConfiguration.DEFAULT_LONG_PRESS_TIMEOUT);
+
+            long downTime = SystemClock.uptimeMillis();
+            int leftEdge = 10;
+            Point taskbarUnstashArea = new Point(leftEdge, mLauncher.getRealDisplaySize().y - 1);
+            mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_HOVER_ENTER,
+                    new Point(taskbarUnstashArea.x, taskbarUnstashArea.y), null);
+
+            mLauncher.waitForSystemLauncherObject(TASKBAR_RES_ID);
+
+            mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_HOVER_EXIT,
+                    new Point(taskbarUnstashArea.x, taskbarUnstashArea.y), null);
+        }
+    }
+
+    /**
+     * Emulate the cursor hovering the taskbar to get unstash hint, then hovering below to unstash.
+     */
+    public void hoverBelowHintedTaskbarToUnstash() {
+        try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
+             LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                     "cursor hover entering stashed taskbar")) {
+            long downTime = SystemClock.uptimeMillis();
+            Point stashedTaskbarHintArea = new Point(mLauncher.getRealDisplaySize().x / 2,
+                    mLauncher.getRealDisplaySize().y - 1);
+            mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_HOVER_ENTER,
+                    new Point(stashedTaskbarHintArea.x, stashedTaskbarHintArea.y), null);
+
+            mLauncher.getDevice().wait(mStashedTaskbarHintScaleCondition,
+                    LauncherInstrumentation.WAIT_TIME_MS);
+
+            try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
+                         "cursor hover enter below taskbar to unstash")) {
+                downTime = SystemClock.uptimeMillis();
+                Point taskbarUnstashArea = new Point(mLauncher.getRealDisplaySize().x / 2,
+                        mLauncher.getRealDisplaySize().y - 1);
+                mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_HOVER_EXIT,
+                        new Point(taskbarUnstashArea.x, taskbarUnstashArea.y), null);
+
+                mLauncher.waitForSystemLauncherObject(TASKBAR_RES_ID);
+            }
+        }
+    }
+
+    /**
+     * Emulate the cursor entering and exiting a hover over the taskbar.
+     */
+    public void hoverToShowTaskbarUnstashHint() {
+        try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
+             LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                     "cursor hover entering stashed taskbar")) {
+            long downTime = SystemClock.uptimeMillis();
+            Point stashedTaskbarHintArea = new Point(mLauncher.getRealDisplaySize().x / 2,
+                    mLauncher.getRealDisplaySize().y - 1);
+            mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_HOVER_ENTER,
+                    new Point(stashedTaskbarHintArea.x, stashedTaskbarHintArea.y), null);
+
+            mLauncher.getDevice().wait(mStashedTaskbarHintScaleCondition,
+                    LauncherInstrumentation.WAIT_TIME_MS);
+
+            try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
+                         "cursor hover exiting stashed taskbar")) {
+                Point outsideStashedTaskbarHintArea = new Point(
+                        mLauncher.getRealDisplaySize().x / 2,
+                        mLauncher.getRealDisplaySize().y - 500);
+                mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_HOVER_EXIT,
+                        new Point(outsideStashedTaskbarHintArea.x, outsideStashedTaskbarHintArea.y),
+                        null);
+
+                mLauncher.getDevice().wait(mStashedTaskbarDefaultScaleCondition,
+                        LauncherInstrumentation.WAIT_TIME_MS);
+            }
+        }
+    }
 }
diff --git a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
index 9d25b1b..c4f5da5 100644
--- a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
+++ b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
@@ -23,7 +23,7 @@
 
 import static com.android.launcher3.tapl.Folder.FOLDER_CONTENT_RES_ID;
 import static com.android.launcher3.tapl.TestHelpers.getOverviewPackageName;
-import static com.android.launcher3.testing.TestProtocol.NORMAL_STATE_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.NORMAL_STATE_ORDINAL;
 
 import android.app.ActivityManager;
 import android.app.Instrumentation;
@@ -48,7 +48,6 @@
 import android.util.Log;
 import android.view.InputDevice;
 import android.view.MotionEvent;
-import android.view.Surface;
 import android.view.ViewConfiguration;
 import android.view.WindowManager;
 import android.view.accessibility.AccessibilityEvent;
@@ -65,10 +64,9 @@
 import androidx.test.uiautomator.UiObject2;
 import androidx.test.uiautomator.Until;
 
-import com.android.launcher3.ResourceUtils;
-import com.android.launcher3.testing.TestInformationRequest;
-import com.android.launcher3.testing.TestProtocol;
-import com.android.systemui.shared.system.ContextUtils;
+import com.android.launcher3.testing.shared.ResourceUtils;
+import com.android.launcher3.testing.shared.TestInformationRequest;
+import com.android.launcher3.testing.shared.TestProtocol;
 import com.android.systemui.shared.system.QuickStepContract;
 
 import org.junit.Assert;
@@ -78,14 +76,12 @@
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
 import java.util.Deque;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Optional;
-import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
+import java.util.function.BooleanSupplier;
 import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.function.Supplier;
@@ -101,7 +97,6 @@
     private static final String TAG = "Tapl";
     private static final int ZERO_BUTTON_STEPS_FROM_BACKGROUND_TO_HOME = 15;
     private static final int GESTURE_STEP_MS = 16;
-    private static final long FORCE_PAUSE_TIMEOUT_MS = TimeUnit.SECONDS.toMillis(2);
 
     static final Pattern EVENT_TOUCH_DOWN = getTouchEventPattern("ACTION_DOWN");
     static final Pattern EVENT_TOUCH_UP = getTouchEventPattern("ACTION_UP");
@@ -112,9 +107,14 @@
     static final Pattern EVENT_TOUCH_DOWN_TIS = getTouchEventPatternTIS("ACTION_DOWN");
     static final Pattern EVENT_TOUCH_UP_TIS = getTouchEventPatternTIS("ACTION_UP");
     static final Pattern EVENT_TOUCH_CANCEL_TIS = getTouchEventPatternTIS("ACTION_CANCEL");
+    static final Pattern EVENT_HOVER_ENTER_TIS = getTouchEventPatternTIS("ACTION_HOVER_ENTER");
+    static final Pattern EVENT_HOVER_EXIT_TIS = getTouchEventPatternTIS("ACTION_HOVER_EXIT");
 
-    static final Pattern EVENT_KEY_BACK_DOWN = getKeyEventPattern("ACTION_DOWN", "KEYCODE_BACK");
-    static final Pattern EVENT_KEY_BACK_UP = getKeyEventPattern("ACTION_UP", "KEYCODE_BACK");
+    private static final Pattern EVENT_KEY_BACK_DOWN =
+            getKeyEventPattern("ACTION_DOWN", "KEYCODE_BACK");
+    private static final Pattern EVENT_KEY_BACK_UP =
+            getKeyEventPattern("ACTION_UP", "KEYCODE_BACK");
+    private static final Pattern EVENT_ON_BACK_INVOKED = Pattern.compile("onBackInvoked");
 
     private final String mLauncherPackage;
     private Boolean mIsLauncher3;
@@ -123,8 +123,8 @@
     // Types for launcher containers that the user is interacting with. "Background" is a
     // pseudo-container corresponding to inactive launcher covered by another app.
     public enum ContainerType {
-        WORKSPACE, HOME_ALL_APPS, OVERVIEW, WIDGETS, FALLBACK_OVERVIEW, LAUNCHED_APP,
-        TASKBAR_ALL_APPS
+        WORKSPACE, HOME_ALL_APPS, OVERVIEW, SPLIT_SCREEN_SELECT, WIDGETS, FALLBACK_OVERVIEW,
+        LAUNCHED_APP, TASKBAR_ALL_APPS
     }
 
     public enum NavigationModel {ZERO_BUTTON, THREE_BUTTON}
@@ -138,6 +138,17 @@
         OUTSIDE_WITH_KEYCODE,
     }
 
+    /**
+     * Represents a point in the code at which a callback can run.
+     */
+    public enum CALLBACK_RUN_POINT {
+        CALLBACK_HOLD_BEFORE_DROP,
+        CALLBACK_HOVER_ENTER,
+        CALLBACK_HOVER_EXIT,
+    }
+
+    private Consumer<CALLBACK_RUN_POINT> mCallbackAtRunPoint = null;
+
     // Base class for launcher containers.
     abstract static class VisibleContainer {
         protected final LauncherInstrumentation mLauncher;
@@ -170,8 +181,11 @@
     private static final String OVERVIEW_RES_ID = "overview_panel";
     private static final String WIDGETS_RES_ID = "primary_widgets_list_view";
     private static final String CONTEXT_MENU_RES_ID = "popup_container";
-    private static final String TASKBAR_RES_ID = "taskbar_view";
-    public static final int WAIT_TIME_MS = 60000;
+    private static final String OPEN_FOLDER_RES_ID = "folder_content";
+    static final String TASKBAR_RES_ID = "taskbar_view";
+    private static final String SPLIT_PLACEHOLDER_RES_ID = "split_placeholder";
+    public static final int WAIT_TIME_MS = 30000;
+    static final long DEFAULT_POLL_INTERVAL = 1000;
     private static final String SYSTEMUI_PACKAGE = "com.android.systemui";
     private static final String ANDROID_PACKAGE = "android";
 
@@ -179,11 +193,14 @@
 
     private final UiDevice mDevice;
     private final Instrumentation mInstrumentation;
-    private int mExpectedRotation = Surface.ROTATION_0;
+    private Integer mExpectedRotation = null;
+    private boolean mExpectedRotationCheckEnabled = true;
     private final Uri mTestProviderUri;
     private final Deque<String> mDiagnosticContext = new LinkedList<>();
     private Function<Long, String> mSystemHealthSupplier;
 
+    private boolean mIgnoreTaskbarVisibility = false;
+
     private Consumer<ContainerType> mOnSettledStateAction;
 
     private LogEventChecker mEventChecker;
@@ -229,7 +246,8 @@
         // Launcher should run in test harness so that custom accessibility protocol between
         // Launcher and TAPL is enabled. In-process tests enable this protocol with a direct call
         // into Launcher.
-        assertTrue("Device must run in a test harness",
+        assertTrue("Device must run in a test harness. "
+                        + "Run `adb shell setprop ro.test_harness 1` to enable it.",
                 TestHelpers.isInLauncherProcess() || ActivityManager.isRunningInTestHarness());
 
         final String testPackage = getContext().getPackageName();
@@ -238,7 +256,7 @@
         // Launcher package. As during inproc tests the tested launcher may not be selected as the
         // current launcher, choosing target package for inproc. For out-of-proc, use the installed
         // launcher package.
-        mLauncherPackage = testPackage.equals(targetPackage)
+        mLauncherPackage = testPackage.equals(targetPackage) || isGradleInstrumentation()
                 ? getLauncherPackageName()
                 : targetPackage;
 
@@ -264,7 +282,7 @@
                 SystemClock.sleep(5000);
             } else {
                 try {
-                    final int userId = ContextUtils.getUserId(getContext());
+                    final int userId = getContext().getUserId();
                     final String launcherPidCommand = "pidof " + pi.packageName;
                     final String initialPid = mDevice.executeShellCommand(launcherPidCommand)
                             .replaceAll("\\s", "");
@@ -285,6 +303,20 @@
         }
     }
 
+    /**
+     * Gradle only supports out of process instrumentation. The test package is automatically
+     * generated by appending `.test` to the target package.
+     */
+    private boolean isGradleInstrumentation() {
+        final String testPackage = getContext().getPackageName();
+        final String targetPackage = mInstrumentation.getTargetContext().getPackageName();
+        final String testSuffix = ".test";
+
+        return testPackage.endsWith(testSuffix) && testPackage.length() > testSuffix.length()
+                && testPackage.substring(0, testPackage.length() - testSuffix.length())
+                .equals(targetPackage);
+    }
+
     public void enableCheckEventsForSuccessfulGestures() {
         mCheckEventsForSuccessfulGestures = true;
     }
@@ -362,14 +394,14 @@
         return getRealDisplaySize().x / 2f;
     }
 
-    private void setForcePauseTimeout(long timeout) {
-        getTestInfo(TestProtocol.REQUEST_SET_FORCE_PAUSE_TIMEOUT, Long.toString(timeout));
-    }
-
     public void setEnableRotation(boolean on) {
         getTestInfo(TestProtocol.REQUEST_ENABLE_ROTATION, Boolean.toString(on));
     }
 
+    public void setEnableSuggestion(boolean enableSuggestion) {
+        getTestInfo(TestProtocol.REQUEST_ENABLE_SUGGESTION, Boolean.toString(enableSuggestion));
+    }
+
     public boolean hadNontestEvents() {
         return getTestInfo(TestProtocol.REQUEST_GET_HAD_NONTEST_EVENTS)
                 .getBoolean(TestProtocol.TEST_INFO_RESPONSE_FIELD);
@@ -379,6 +411,17 @@
         sActiveContainer = new WeakReference<>(container);
     }
 
+    /**
+     * Sets the accesibility interactive timeout to be effectively indefinite (UI using this
+     * accesibility timeout will not automatically dismiss if true).
+     */
+    void setIndefiniteAccessibilityInteractiveUiTimeout(boolean indefiniteTimeout) {
+        final String cmd = indefiniteTimeout
+                ? "settings put secure accessibility_interactive_ui_timeout_ms 10000"
+                : "settings delete secure accessibility_interactive_ui_timeout_ms";
+        logShellCommand(cmd);
+    }
+
     public NavigationModel getNavigationModel() {
         final Context baseContext = mInstrumentation.getTargetContext();
         try {
@@ -522,8 +565,9 @@
 
     private String getVisibleStateMessage() {
         if (hasLauncherObject(CONTEXT_MENU_RES_ID)) return "Context Menu";
+        if (hasLauncherObject(OPEN_FOLDER_RES_ID)) return "Open Folder";
         if (hasLauncherObject(WIDGETS_RES_ID)) return "Widgets";
-        if (hasLauncherObject(OVERVIEW_RES_ID)) return "Overview";
+        if (hasSystemLauncherObject(OVERVIEW_RES_ID)) return "Overview";
         if (hasLauncherObject(WORKSPACE_RES_ID)) return "Workspace";
         if (hasLauncherObject(APPS_RES_ID)) return "AllApps";
         return "LaunchedApp (" + getVisiblePackages() + ")";
@@ -658,10 +702,31 @@
         }
     }
 
-    public void setExpectedRotation(int expectedRotation) {
+    /**
+     * Whether to ignore verifying the task bar visibility during instrumenting.
+     *
+     * @param ignoreTaskbarVisibility {@code true} will ignore the instrumentation implicitly
+     *                                verifying the task bar visibility with
+     *                                {@link VisibleContainer#verifyActiveContainer}.
+     *                                {@code false} otherwise.
+     */
+    public void setIgnoreTaskbarVisibility(boolean ignoreTaskbarVisibility) {
+        mIgnoreTaskbarVisibility = ignoreTaskbarVisibility;
+    }
+
+    /**
+     * Sets expected rotation.
+     * TAPL periodically checks that Launcher didn't suddenly change the rotation to unexpected one.
+     * Null parameter disables checks. The initial state is "no checks".
+     */
+    public void setExpectedRotation(Integer expectedRotation) {
         mExpectedRotation = expectedRotation;
     }
 
+    public void setExpectedRotationCheckEnabled(boolean expectedRotationCheckEnabled) {
+        mExpectedRotationCheckEnabled = expectedRotationCheckEnabled;
+    }
+
     public String getNavigationModeMismatchError(boolean waitForCorrectState) {
         final int waitTime = waitForCorrectState ? WAIT_TIME_MS : 0;
         final NavigationModel navigationModel = getNavigationModel();
@@ -695,8 +760,10 @@
     private UiObject2 verifyContainerType(ContainerType containerType) {
         waitForLauncherInitialized();
 
-        assertEquals("Unexpected display rotation",
-                mExpectedRotation, mDevice.getDisplayRotation());
+        if (mExpectedRotationCheckEnabled && mExpectedRotation != null) {
+            assertEquals("Unexpected display rotation",
+                    mExpectedRotation, mDevice.getDisplayRotation());
+        }
 
         final String error = getNavigationModeMismatchError(true);
         assertTrue(error, error == null);
@@ -716,55 +783,97 @@
             switch (containerType) {
                 case WORKSPACE: {
                     waitUntilLauncherObjectGone(APPS_RES_ID);
-                    waitUntilLauncherObjectGone(OVERVIEW_RES_ID);
                     waitUntilLauncherObjectGone(WIDGETS_RES_ID);
-                    waitUntilLauncherObjectGone(TASKBAR_RES_ID);
+                    waitUntilSystemLauncherObjectGone(OVERVIEW_RES_ID);
+                    waitUntilSystemLauncherObjectGone(SPLIT_PLACEHOLDER_RES_ID);
+
+                    if (is3PLauncher() && isTablet()) {
+                        waitForSystemLauncherObject(TASKBAR_RES_ID);
+                    } else {
+                        waitUntilSystemLauncherObjectGone(TASKBAR_RES_ID);
+                    }
 
                     return waitForLauncherObject(WORKSPACE_RES_ID);
                 }
                 case WIDGETS: {
                     waitUntilLauncherObjectGone(WORKSPACE_RES_ID);
                     waitUntilLauncherObjectGone(APPS_RES_ID);
-                    waitUntilLauncherObjectGone(OVERVIEW_RES_ID);
-                    waitUntilLauncherObjectGone(TASKBAR_RES_ID);
+                    waitUntilSystemLauncherObjectGone(OVERVIEW_RES_ID);
+                    waitUntilSystemLauncherObjectGone(SPLIT_PLACEHOLDER_RES_ID);
+
+                    if (is3PLauncher() && isTablet()) {
+                        waitForSystemLauncherObject(TASKBAR_RES_ID);
+                    } else {
+                        waitUntilSystemLauncherObjectGone(TASKBAR_RES_ID);
+                    }
 
                     return waitForLauncherObject(WIDGETS_RES_ID);
                 }
-                case TASKBAR_ALL_APPS:
-                case HOME_ALL_APPS: {
+                case TASKBAR_ALL_APPS: {
                     waitUntilLauncherObjectGone(WORKSPACE_RES_ID);
-                    waitUntilLauncherObjectGone(OVERVIEW_RES_ID);
                     waitUntilLauncherObjectGone(WIDGETS_RES_ID);
-                    waitUntilLauncherObjectGone(TASKBAR_RES_ID);
+                    waitUntilSystemLauncherObjectGone(OVERVIEW_RES_ID);
+                    waitUntilSystemLauncherObjectGone(TASKBAR_RES_ID);
+                    waitUntilSystemLauncherObjectGone(SPLIT_PLACEHOLDER_RES_ID);
 
                     return waitForLauncherObject(APPS_RES_ID);
                 }
-                case OVERVIEW: {
-                    waitUntilLauncherObjectGone(APPS_RES_ID);
+                case HOME_ALL_APPS: {
                     waitUntilLauncherObjectGone(WORKSPACE_RES_ID);
                     waitUntilLauncherObjectGone(WIDGETS_RES_ID);
-                    waitUntilLauncherObjectGone(TASKBAR_RES_ID);
+                    waitUntilSystemLauncherObjectGone(OVERVIEW_RES_ID);
+                    waitUntilSystemLauncherObjectGone(SPLIT_PLACEHOLDER_RES_ID);
 
-                    return waitForLauncherObject(OVERVIEW_RES_ID);
+                    if (is3PLauncher() && isTablet()) {
+                        waitForSystemLauncherObject(TASKBAR_RES_ID);
+                    } else {
+                        waitUntilSystemLauncherObjectGone(TASKBAR_RES_ID);
+                    }
+
+                    return waitForLauncherObject(APPS_RES_ID);
                 }
+                case OVERVIEW:
                 case FALLBACK_OVERVIEW: {
                     waitUntilLauncherObjectGone(APPS_RES_ID);
                     waitUntilLauncherObjectGone(WORKSPACE_RES_ID);
                     waitUntilLauncherObjectGone(WIDGETS_RES_ID);
-                    waitUntilLauncherObjectGone(TASKBAR_RES_ID);
+                    if (isTablet()) {
+                        waitForSystemLauncherObject(TASKBAR_RES_ID);
+                    } else {
+                        waitUntilSystemLauncherObjectGone(TASKBAR_RES_ID);
+                    }
+                    waitUntilSystemLauncherObjectGone(SPLIT_PLACEHOLDER_RES_ID);
 
-                    return waitForFallbackLauncherObject(OVERVIEW_RES_ID);
+                    return waitForSystemLauncherObject(OVERVIEW_RES_ID);
+                }
+                case SPLIT_SCREEN_SELECT: {
+                    waitUntilLauncherObjectGone(APPS_RES_ID);
+                    waitUntilLauncherObjectGone(WORKSPACE_RES_ID);
+                    waitUntilLauncherObjectGone(WIDGETS_RES_ID);
+                    if (isTablet()) {
+                        waitForSystemLauncherObject(TASKBAR_RES_ID);
+                    } else {
+                        waitUntilSystemLauncherObjectGone(TASKBAR_RES_ID);
+                    }
+
+                    waitForSystemLauncherObject(SPLIT_PLACEHOLDER_RES_ID);
+                    return waitForSystemLauncherObject(OVERVIEW_RES_ID);
                 }
                 case LAUNCHED_APP: {
                     waitUntilLauncherObjectGone(WORKSPACE_RES_ID);
                     waitUntilLauncherObjectGone(APPS_RES_ID);
-                    waitUntilLauncherObjectGone(OVERVIEW_RES_ID);
                     waitUntilLauncherObjectGone(WIDGETS_RES_ID);
+                    waitUntilSystemLauncherObjectGone(OVERVIEW_RES_ID);
+                    waitUntilSystemLauncherObjectGone(SPLIT_PLACEHOLDER_RES_ID);
 
-                    if (isTablet() && !isFallbackOverview()) {
-                        waitForLauncherObject(TASKBAR_RES_ID);
+                    if (mIgnoreTaskbarVisibility) {
+                        return null;
+                    }
+
+                    if (isTablet()) {
+                        waitForSystemLauncherObject(TASKBAR_RES_ID);
                     } else {
-                        waitUntilLauncherObjectGone(TASKBAR_RES_ID);
+                        waitUntilSystemLauncherObjectGone(TASKBAR_RES_ID);
                     }
                     return null;
                 }
@@ -775,6 +884,10 @@
         }
     }
 
+    public void waitForModelQueueCleared() {
+        getTestInfo(TestProtocol.REQUEST_MODEL_QUEUE_CLEARED);
+    }
+
     public void waitForLauncherInitialized() {
         for (int i = 0; i < 100; ++i) {
             if (getTestInfo(
@@ -870,7 +983,14 @@
     }
 
     /**
-     * Presses nav bar home button.
+     * Goes to home by swiping up in zero-button mode or pressing Home button.
+     * Calling it after another TAPL call is safe because all TAPL methods wait for the animations
+     * to finish.
+     * When calling it after a non-TAPL method, make sure that all animations have already
+     * completed, otherwise it may detect the current state (for example "Application" or "Home")
+     * incorrectly.
+     * The method expects either app or Launcher to be active when it's called. Other states, such
+     * as visible notification shade are not supported.
      *
      * @return the Workspace object.
      */
@@ -886,17 +1006,11 @@
             final String action;
             if (getNavigationModel() == NavigationModel.ZERO_BUTTON) {
                 checkForAnomaly(false, true);
-                setForcePauseTimeout(FORCE_PAUSE_TIMEOUT_MS);
 
                 final Point displaySize = getRealDisplaySize();
-                // The swipe up to home gesture starts from inside the launcher when the user is
-                // already home. Otherwise, the gesture can start inside the launcher process if the
-                // taskbar is visible.
-                boolean gestureStartFromLauncher = isTablet()
-                        ? !isLauncher3()
-                        || hasLauncherObject(WORKSPACE_RES_ID)
-                        || hasLauncherObject(TASKBAR_RES_ID)
-                        : isLauncherVisible();
+
+                boolean gestureStartFromLauncher =
+                        isTablet() ? !isLauncher3() : isLauncherVisible();
 
                 // CLose floating views before going back to home.
                 swipeUpToCloseFloatingView(gestureStartFromLauncher);
@@ -904,8 +1018,6 @@
                 if (hasLauncherObject(WORKSPACE_RES_ID)) {
                     log(action = "already at home");
                 } else {
-                    log("Hierarchy before swiping up to home:");
-                    dumpViewHierarchy();
                     action = "swiping up to home";
 
                     swipeToState(
@@ -929,7 +1041,7 @@
                         NORMAL_STATE_ORDINAL,
                         !hasLauncherObject(WORKSPACE_RES_ID)
                                 && (hasLauncherObject(APPS_RES_ID)
-                                || hasLauncherObject(OVERVIEW_RES_ID)),
+                                || hasSystemLauncherObject(OVERVIEW_RES_ID)),
                         action);
             }
             try (LauncherInstrumentation.Closable c1 = addContextLayer(
@@ -964,8 +1076,12 @@
                 }
             }
             if (launcherVisible) {
-                expectEvent(TestProtocol.SEQUENCE_MAIN, EVENT_KEY_BACK_DOWN);
-                expectEvent(TestProtocol.SEQUENCE_MAIN, EVENT_KEY_BACK_UP);
+                if (getContext().getApplicationInfo().isOnBackInvokedCallbackEnabled()) {
+                    expectEvent(TestProtocol.SEQUENCE_MAIN, EVENT_ON_BACK_INVOKED);
+                } else {
+                    expectEvent(TestProtocol.SEQUENCE_MAIN, EVENT_KEY_BACK_DOWN);
+                    expectEvent(TestProtocol.SEQUENCE_MAIN, EVENT_KEY_BACK_UP);
+                }
             }
         }
     }
@@ -981,7 +1097,8 @@
 
     boolean isLauncherContainerVisible() {
         final String[] containerResources = {WORKSPACE_RES_ID, OVERVIEW_RES_ID, APPS_RES_ID};
-        return Arrays.stream(containerResources).anyMatch(r -> hasLauncherObject(r));
+        return Arrays.stream(containerResources).anyMatch(
+                r -> r.equals(OVERVIEW_RES_ID) ? hasSystemLauncherObject(r) : hasLauncherObject(r));
     }
 
     /**
@@ -1064,6 +1181,14 @@
         waitUntilGoneBySelector(getOverviewObjectSelector(resId));
     }
 
+    void waitUntilSystemLauncherObjectGone(String resId) {
+        if (is3PLauncher()) {
+            waitUntilOverviewObjectGone(resId);
+        } else {
+            waitUntilLauncherObjectGone(resId);
+        }
+    }
+
     void waitUntilLauncherObjectGone(BySelector selector) {
         waitUntilGoneBySelector(makeLauncherSelector(selector));
     }
@@ -1087,6 +1212,14 @@
     }
 
     @NonNull
+    UiObject2 waitForSystemUiObject(BySelector selector) {
+        final UiObject2 object = TestHelpers.wait(
+                Until.findObject(selector), WAIT_TIME_MS);
+        assertNotNull("Can't find a systemui object with selector: " + selector, object);
+        return object;
+    }
+
+    @NonNull
     UiObject2 waitForNavigationUiObject(String resId) {
         String resPackage = getNavigationButtonResPackage();
         final UiObject2 object = mDevice.wait(
@@ -1096,6 +1229,16 @@
     }
 
     @Nullable
+    UiObject2 findObjectInContainer(UiObject2 container, String resName) {
+        try {
+            return container.findObject(getLauncherObjectSelector(resName));
+        } catch (StaleObjectException e) {
+            fail("The container disappeared from screen");
+            return null;
+        }
+    }
+
+    @Nullable
     UiObject2 findObjectInContainer(UiObject2 container, BySelector selector) {
         try {
             return container.findObject(selector);
@@ -1176,6 +1319,11 @@
         return mDevice.hasObject(getLauncherObjectSelector(resId));
     }
 
+    private boolean hasSystemLauncherObject(String resId) {
+        return mDevice.hasObject(is3PLauncher() ? getOverviewObjectSelector(resId)
+                : getLauncherObjectSelector(resId));
+    }
+
     boolean hasLauncherObject(BySelector selector) {
         return mDevice.hasObject(makeLauncherSelector(selector));
     }
@@ -1195,6 +1343,12 @@
     }
 
     @NonNull
+    UiObject2 waitForSystemLauncherObject(String resName) {
+        return is3PLauncher() ? waitForOverviewObject(resName)
+                : waitForLauncherObject(resName);
+    }
+
+    @NonNull
     UiObject2 waitForLauncherObject(BySelector selector) {
         return waitForObjectBySelector(makeLauncherSelector(selector));
     }
@@ -1205,11 +1359,6 @@
     }
 
     @NonNull
-    UiObject2 waitForFallbackLauncherObject(String resName) {
-        return waitForObjectBySelector(getOverviewObjectSelector(resName));
-    }
-
-    @NonNull
     UiObject2 waitForAndroidObject(String resId) {
         final UiObject2 object = TestHelpers.wait(
                 Until.findObject(By.res(ANDROID_PACKAGE, resId)), WAIT_TIME_MS);
@@ -1217,6 +1366,13 @@
         return object;
     }
 
+    @NonNull
+    List<UiObject2> waitForObjectsBySelector(BySelector selector) {
+        final List<UiObject2> objects = mDevice.wait(Until.findObjects(selector), WAIT_TIME_MS);
+        assertNotNull("Can't find any view in Launcher, selector: " + selector, objects);
+        return objects;
+    }
+
     private UiObject2 waitForObjectBySelector(BySelector selector) {
         final UiObject2 object = mDevice.wait(Until.findObject(selector), WAIT_TIME_MS);
         assertNotNull("Can't find a view in Launcher, selector: " + selector, object);
@@ -1239,7 +1395,7 @@
         return mDevice.getLauncherPackageName();
     }
 
-    boolean isFallbackOverview() {
+    boolean is3PLauncher() {
         return !getOverviewPackageName().equals(getLauncherPackageName());
     }
 
@@ -1318,35 +1474,40 @@
         return getRealDisplaySize().x - getWindowInsets().right - 1;
     }
 
-    void clickObject(UiObject2 object) {
-        waitForObjectEnabled(object, "clickObject");
-        if (!isLauncher3() && getNavigationModel() != NavigationModel.THREE_BUTTON) {
-            expectEvent(TestProtocol.SEQUENCE_TIS, LauncherInstrumentation.EVENT_TOUCH_DOWN_TIS);
-            expectEvent(TestProtocol.SEQUENCE_TIS, LauncherInstrumentation.EVENT_TOUCH_UP_TIS);
-        }
-        object.click();
+    /**
+     * Click on the ui object right away without waiting for animation.
+     *
+     * [UiObject2.click] would wait for all animations finished before clicking. Not waiting for
+     * animations because in some scenarios there is a playing animations when the click is
+     * attempted.
+     */
+    void clickObject(UiObject2 uiObject, GestureScope gestureScope) {
+        final long clickTime = SystemClock.uptimeMillis();
+        final Point center = uiObject.getVisibleCenter();
+        sendPointer(clickTime, clickTime, MotionEvent.ACTION_DOWN, center, gestureScope);
+        sendPointer(clickTime, clickTime, MotionEvent.ACTION_UP, center, gestureScope);
     }
 
     void clickLauncherObject(UiObject2 object) {
-        expectEvent(TestProtocol.SEQUENCE_MAIN, LauncherInstrumentation.EVENT_TOUCH_DOWN);
-        expectEvent(TestProtocol.SEQUENCE_MAIN, LauncherInstrumentation.EVENT_TOUCH_UP);
-        clickObject(object);
+        clickObject(object, GestureScope.INSIDE);
     }
 
     void scrollToLastVisibleRow(
-            UiObject2 container, Collection<UiObject2> items, int topPaddingInContainer) {
-        final UiObject2 lowestItem = Collections.max(items, (i1, i2) ->
-                Integer.compare(getVisibleBounds(i1).top, getVisibleBounds(i2).top));
-
-        final int itemRowCurrentTopOnScreen = getVisibleBounds(lowestItem).top;
+            UiObject2 container, Rect bottomVisibleIconBounds, int topPaddingInContainer,
+            int appsListBottomPadding) {
+        final int itemRowCurrentTopOnScreen = bottomVisibleIconBounds.top;
         final Rect containerRect = getVisibleBounds(container);
         final int itemRowNewTopOnScreen = containerRect.top + topPaddingInContainer;
         final int distance = itemRowCurrentTopOnScreen - itemRowNewTopOnScreen + getTouchSlop();
 
-        scrollDownByDistance(container, distance);
+        scrollDownByDistance(container, distance, appsListBottomPadding);
     }
 
     void scrollDownByDistance(UiObject2 container, int distance) {
+        scrollDownByDistance(container, distance, 0);
+    }
+
+    void scrollDownByDistance(UiObject2 container, int distance, int bottomPadding) {
         final Rect containerRect = getVisibleBounds(container);
         final int bottomGestureMarginInContainer = getBottomGestureMarginInContainer(container);
         scroll(
@@ -1356,7 +1517,7 @@
                         0,
                         containerRect.height() - distance - bottomGestureMarginInContainer,
                         0,
-                        bottomGestureMarginInContainer),
+                        bottomGestureMarginInContainer + bottomPadding),
                 /* steps= */ 10,
                 /* slowDown= */ true);
     }
@@ -1525,6 +1686,12 @@
                                     ? EVENT_TOUCH_CANCEL_TIS : EVENT_TOUCH_UP_TIS);
                 }
                 break;
+            case MotionEvent.ACTION_HOVER_ENTER:
+                expectEvent(TestProtocol.SEQUENCE_TIS, EVENT_HOVER_ENTER_TIS);
+                break;
+            case MotionEvent.ACTION_HOVER_EXIT:
+                expectEvent(TestProtocol.SEQUENCE_TIS, EVENT_HOVER_EXIT_TIS);
+                break;
         }
 
         final MotionEvent event = getMotionEvent(downTime, currentTime, action, point.x, point.y);
@@ -1674,10 +1841,6 @@
         return testInfo != null ? testInfo.getInt(TestProtocol.TEST_INFO_RESPONSE_FIELD) : null;
     }
 
-    public void produceViewLeak() {
-        getTestInfo(TestProtocol.REQUEST_VIEW_LEAK);
-    }
-
     public ArrayList<ComponentName> getRecentTasks() {
         ArrayList<ComponentName> tasks = new ArrayList<>();
         ArrayList<String> components = getTestInfo(TestProtocol.REQUEST_RECENT_TASKS_LIST)
@@ -1692,24 +1855,34 @@
         getTestInfo(TestProtocol.REQUEST_CLEAR_DATA);
     }
 
-    /**
-     * Reloads the workspace with a test layout that includes the Test Activity app icon on the
-     * hotseat.
-     */
-    public void useTestWorkspaceLayoutOnReload() {
-        getTestInfo(TestProtocol.REQUEST_USE_TEST_WORKSPACE_LAYOUT);
-    }
-
-    /** Reloads the workspace with the default layout defined by the user's grid size selection. */
-    public void useDefaultWorkspaceLayoutOnReload() {
-        getTestInfo(TestProtocol.REQUEST_USE_DEFAULT_WORKSPACE_LAYOUT);
-    }
-
     /** Shows the taskbar if it is hidden, otherwise does nothing. */
     public void showTaskbarIfHidden() {
         getTestInfo(TestProtocol.REQUEST_UNSTASH_TASKBAR_IF_STASHED);
     }
 
+    /** Blocks the taskbar from automatically stashing based on time. */
+    public void enableBlockTimeout(boolean enable) {
+        getTestInfo(enable
+                ? TestProtocol.REQUEST_ENABLE_BLOCK_TIMEOUT
+                : TestProtocol.REQUEST_DISABLE_BLOCK_TIMEOUT);
+    }
+
+    /** Enables transient taskbar for testing purposes only. */
+    public void enableTransientTaskbar(boolean enable) {
+        getTestInfo(enable
+                ? TestProtocol.REQUEST_ENABLE_TRANSIENT_TASKBAR
+                : TestProtocol.REQUEST_DISABLE_TRANSIENT_TASKBAR);
+    }
+
+    /**
+     * Recreates the taskbar (outside of tests this is done for certain configuration changes).
+     * The expected behavior is that the taskbar retains its current state after being recreated.
+     * For example, if taskbar is currently stashed, it should still be stashed after recreating.
+     */
+    public void recreateTaskbar() {
+        getTestInfo(TestProtocol.REQUEST_RECREATE_TASKBAR);
+    }
+
     public List<String> getHotseatIconNames() {
         return getTestInfo(TestProtocol.REQUEST_HOTSEAT_ICON_NAMES)
                 .getStringArrayList(TestProtocol.TEST_INFO_RESPONSE_FIELD);
@@ -1831,4 +2004,80 @@
         return ResourceUtils.getBoolByName(
                 "config_supportsRoundedCornersOnWindows", resources, false);
     }
+
+    /**
+     * Taps outside container to dismiss, centered vertically and halfway to the edge of the screen.
+     *
+     * @param container container to be dismissed
+     * @param tapRight  tap on the right of the container if true, or left otherwise
+     */
+    void touchOutsideContainer(UiObject2 container, boolean tapRight) {
+        touchOutsideContainer(container, tapRight, true);
+    }
+
+    /**
+     * Taps outside the container, to the right or left, and centered vertically.
+     *
+     * @param tapRight      if true touches to the right of the container, otherwise touches on left
+     * @param halfwayToEdge if true touches halfway to the screen edge, if false touches 1 px from
+     *                      container
+     */
+    void touchOutsideContainer(UiObject2 container, boolean tapRight, boolean halfwayToEdge) {
+        try (LauncherInstrumentation.Closable c = addContextLayer(
+                "want to tap outside container on the " + (tapRight ? "right" : "left"))) {
+            Rect containerBounds = getVisibleBounds(container);
+
+            int x;
+            if (halfwayToEdge) {
+                x = tapRight
+                        ? (containerBounds.right + getRealDisplaySize().x) / 2
+                        : containerBounds.left / 2;
+            } else {
+                x = tapRight
+                        ? containerBounds.right + 1
+                        : containerBounds.left - 1;
+            }
+            int y = containerBounds.top + containerBounds.height() / 2;
+
+            final long downTime = SystemClock.uptimeMillis();
+            final Point tapTarget = new Point(x, y);
+            sendPointer(downTime, downTime, MotionEvent.ACTION_DOWN, tapTarget,
+                    LauncherInstrumentation.GestureScope.INSIDE);
+            sendPointer(downTime, downTime, MotionEvent.ACTION_UP, tapTarget,
+                    LauncherInstrumentation.GestureScope.INSIDE);
+        }
+    }
+
+    /**
+     * Sets the consumer to run callbacks at all run-points.
+     */
+    public void setRunPointCallback(Consumer<CALLBACK_RUN_POINT> callback) {
+        mCallbackAtRunPoint = callback;
+    }
+
+    /**
+     * Runs the callback at the specified point if it exists.
+     */
+    void runCallbackIfActive(CALLBACK_RUN_POINT runPoint) {
+        if (mCallbackAtRunPoint != null) {
+            mCallbackAtRunPoint.accept(runPoint);
+        }
+    }
+
+    /**
+     * Waits until a particular condition is true. Based on WaitMixin.
+     */
+    boolean waitAndGet(BooleanSupplier condition, long timeout, long interval) {
+        long startTime = SystemClock.uptimeMillis();
+
+        boolean result = condition.getAsBoolean();
+        for (long elapsedTime = 0; !result; elapsedTime = SystemClock.uptimeMillis() - startTime) {
+            if (elapsedTime >= timeout) {
+                break;
+            }
+            SystemClock.sleep(interval);
+            result = condition.getAsBoolean();
+        }
+        return result;
+    }
 }
diff --git a/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java b/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java
index 710e3cd..672c6e0 100644
--- a/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java
+++ b/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java
@@ -15,13 +15,13 @@
  */
 package com.android.launcher3.tapl;
 
-import static com.android.launcher3.testing.TestProtocol.SEQUENCE_MAIN;
-import static com.android.launcher3.testing.TestProtocol.SEQUENCE_PILFER;
-import static com.android.launcher3.testing.TestProtocol.SEQUENCE_TIS;
+import static com.android.launcher3.testing.shared.TestProtocol.SEQUENCE_MAIN;
+import static com.android.launcher3.testing.shared.TestProtocol.SEQUENCE_PILFER;
+import static com.android.launcher3.testing.shared.TestProtocol.SEQUENCE_TIS;
 
 import android.os.SystemClock;
 
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 
 import java.util.ArrayList;
 import java.util.HashMap;
diff --git a/tests/tapl/com/android/launcher3/tapl/Overview.java b/tests/tapl/com/android/launcher3/tapl/Overview.java
index 66a51a5..50c2136 100644
--- a/tests/tapl/com/android/launcher3/tapl/Overview.java
+++ b/tests/tapl/com/android/launcher3/tapl/Overview.java
@@ -21,7 +21,7 @@
 /**
  * Overview pane.
  */
-public final class Overview extends BaseOverview {
+public class Overview extends BaseOverview {
 
     Overview(LauncherInstrumentation launcher) {
         super(launcher);
@@ -29,7 +29,7 @@
 
     @Override
     protected ContainerType getContainerType() {
-        return LauncherInstrumentation.ContainerType.OVERVIEW;
+        return ContainerType.OVERVIEW;
     }
 
     @Override
diff --git a/tests/tapl/com/android/launcher3/tapl/OverviewActions.java b/tests/tapl/com/android/launcher3/tapl/OverviewActions.java
index 2f44bb6..386deac 100644
--- a/tests/tapl/com/android/launcher3/tapl/OverviewActions.java
+++ b/tests/tapl/com/android/launcher3/tapl/OverviewActions.java
@@ -19,7 +19,7 @@
 import androidx.annotation.NonNull;
 import androidx.test.uiautomator.UiObject2;
 
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 
 /**
  * View containing overview actions
@@ -41,6 +41,8 @@
         try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
              LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
                      "want to click screenshot button and exit screenshot ui")) {
+            mLauncher.setIndefiniteAccessibilityInteractiveUiTimeout(true);
+
             UiObject2 screenshot = mLauncher.waitForObjectInContainer(mOverviewActions,
                     "action_screenshot");
 
@@ -62,6 +64,8 @@
                     return new Overview(mLauncher);
                 }
             }
+        } finally {
+            mLauncher.setIndefiniteAccessibilityInteractiveUiTimeout(false);
         }
     }
 
@@ -82,7 +86,6 @@
                     "clicked select button")) {
                 return getSelectModeButtons();
             }
-
         }
     }
 
@@ -99,4 +102,22 @@
             return new SelectModeButtons(selectModeButtons, mLauncher);
         }
     }
+
+    /**
+     * Clicks split button and enters split select mode.
+     */
+    @NonNull
+    public SplitScreenSelect clickSplit() {
+        try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
+             LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                     "want to click split button to enter split select mode")) {
+            UiObject2 split = mLauncher.waitForObjectInContainer(mOverviewActions,
+                    "action_split");
+            mLauncher.clickLauncherObject(split);
+            try (LauncherInstrumentation.Closable c2 = mLauncher.addContextLayer(
+                    "clicked split")) {
+                return new SplitScreenSelect(mLauncher);
+            }
+        }
+    }
 }
diff --git a/tests/tapl/com/android/launcher3/tapl/OverviewTask.java b/tests/tapl/com/android/launcher3/tapl/OverviewTask.java
index c8caa42..39b93b4 100644
--- a/tests/tapl/com/android/launcher3/tapl/OverviewTask.java
+++ b/tests/tapl/com/android/launcher3/tapl/OverviewTask.java
@@ -20,9 +20,12 @@
 
 import android.graphics.Rect;
 
+import androidx.annotation.NonNull;
+import androidx.test.uiautomator.By;
+import androidx.test.uiautomator.BySelector;
 import androidx.test.uiautomator.UiObject2;
 
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 
 import java.util.List;
 import java.util.regex.Pattern;
@@ -32,8 +35,11 @@
  * A recent task in the overview panel carousel.
  */
 public final class OverviewTask {
-    static final Pattern TASK_START_EVENT =
-            Pattern.compile("startActivityFromRecentsAsync");
+    private static final String SYSTEMUI_PACKAGE = "com.android.systemui";
+
+    static final Pattern TASK_START_EVENT = Pattern.compile("startActivityFromRecentsAsync");
+    static final Pattern SPLIT_SELECT_EVENT = Pattern.compile("enterSplitSelect");
+    static final Pattern SPLIT_START_EVENT = Pattern.compile("launchSplitTasks");
     private final LauncherInstrumentation mLauncher;
     private final UiObject2 mTask;
     private final BaseOverview mOverview;
@@ -61,6 +67,14 @@
         return mTask.getVisibleCenter().x;
     }
 
+    float getExactCenterX() {
+        return mTask.getVisibleBounds().exactCenterX();
+    }
+
+    UiObject2 getUiObject() {
+        return mTask;
+    }
+
     /**
      * Dismisses the task by swiping up.
      */
@@ -125,7 +139,7 @@
     }
 
     /**
-     * Clicks at the task.
+     * Clicks the task.
      */
     public LaunchedAppState open() {
         try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck()) {
@@ -136,8 +150,41 @@
                     () -> "Launching task didn't open a new window: "
                             + mTask.getParent().getContentDescription(),
                     "clicking an overview task");
-            mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, TASK_START_EVENT);
-            return new LaunchedAppState(mLauncher);
+            if (mOverview.getContainerType()
+                    == LauncherInstrumentation.ContainerType.SPLIT_SCREEN_SELECT) {
+                mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, SPLIT_START_EVENT);
+
+                try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                        "launched splitscreen")) {
+
+                    BySelector divider = By.res(SYSTEMUI_PACKAGE, "docked_divider_handle");
+                    mLauncher.waitForSystemUiObject(divider);
+                    return new LaunchedAppState(mLauncher);
+                }
+            } else {
+                mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, TASK_START_EVENT);
+                return new LaunchedAppState(mLauncher);
+            }
         }
     }
+
+    /** Taps the task menu. */
+    @NonNull
+    public OverviewTaskMenu tapMenu() {
+        try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
+             LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                     "want to tap the task menu")) {
+            mLauncher.clickLauncherObject(
+                    mLauncher.waitForObjectInContainer(mTask.getParent(), "icon"));
+
+            try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
+                    "tapped the task menu")) {
+                return new OverviewTaskMenu(mLauncher);
+            }
+        }
+    }
+
+    boolean isTaskSplit() {
+        return mLauncher.findObjectInContainer(mTask.getParent(), "bottomright_snapshot") != null;
+    }
 }
diff --git a/tests/tapl/com/android/launcher3/tapl/OverviewTaskMenu.java b/tests/tapl/com/android/launcher3/tapl/OverviewTaskMenu.java
new file mode 100644
index 0000000..e349620
--- /dev/null
+++ b/tests/tapl/com/android/launcher3/tapl/OverviewTaskMenu.java
@@ -0,0 +1,66 @@
+/*
+ * 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.launcher3.tapl;
+
+import androidx.annotation.NonNull;
+import androidx.test.uiautomator.By;
+import androidx.test.uiautomator.UiObject2;
+
+/** Represents the menu of an overview task. */
+public class OverviewTaskMenu {
+
+    private final LauncherInstrumentation mLauncher;
+    private final UiObject2 mMenu;
+
+    OverviewTaskMenu(LauncherInstrumentation launcher) {
+        mLauncher = launcher;
+
+        mMenu = mLauncher.waitForLauncherObject("menu_option_layout");
+        mLauncher.assertTrue("The overview task menus is not visible",
+                !mMenu.getVisibleBounds().isEmpty());
+    }
+
+    /** Taps the split menu item from the overview task menu. */
+    @NonNull
+    public SplitScreenSelect tapSplitMenuItem() {
+        try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
+             LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                     "tap split menu item")) {
+            mLauncher.clickLauncherObject(
+                    mLauncher.findObjectInContainer(mMenu, By.textStartsWith("Split")));
+
+            try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
+                    "tapped split menu item")) {
+                return new SplitScreenSelect(mLauncher);
+            }
+        }
+    }
+
+    /** Returns true if an item matching the given string is present in the menu. */
+    public boolean hasMenuItem(String expectedMenuItemText) {
+        UiObject2 menuItem = mLauncher.findObjectInContainer(mMenu, By.text(expectedMenuItemText));
+        return menuItem != null;
+    }
+
+    /**
+     * Returns the menu item specified by name if present.
+     */
+    public OverviewTaskMenuItem getMenuItemByName(String menuItemName) {
+        return new OverviewTaskMenuItem(mLauncher,
+                mLauncher.waitForObjectInContainer(mMenu, By.text(menuItemName)));
+    }
+}
diff --git a/tests/tapl/com/android/launcher3/tapl/OverviewTaskMenuItem.java b/tests/tapl/com/android/launcher3/tapl/OverviewTaskMenuItem.java
new file mode 100644
index 0000000..b2cc92d
--- /dev/null
+++ b/tests/tapl/com/android/launcher3/tapl/OverviewTaskMenuItem.java
@@ -0,0 +1,69 @@
+/*
+ * 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.launcher3.tapl;
+
+import static com.android.launcher3.tapl.LauncherInstrumentation.CALLBACK_RUN_POINT.CALLBACK_HOVER_ENTER;
+import static com.android.launcher3.tapl.LauncherInstrumentation.CALLBACK_RUN_POINT.CALLBACK_HOVER_EXIT;
+
+import android.graphics.Point;
+import android.graphics.Rect;
+import android.os.SystemClock;
+import android.view.MotionEvent;
+
+import androidx.test.uiautomator.UiObject2;
+
+/** Represents an item in the overview task menu. */
+public class OverviewTaskMenuItem {
+
+    private final LauncherInstrumentation mLauncher;
+    private final UiObject2 mMenuItem;
+
+    OverviewTaskMenuItem(LauncherInstrumentation launcher, UiObject2 menuItem) {
+        mLauncher = launcher;
+        mMenuItem = menuItem;
+    }
+
+    /**
+     * Returns this menu item's visible bounds.
+     */
+    public Rect getVisibleBounds() {
+        return mMenuItem.getVisibleBounds();
+    }
+
+    /**
+     * Emulate the cursor entering and exiting a hover over this menu item.
+     */
+    public void hoverCursor() {
+        try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
+             LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                     "cursor hover entering menu item")) {
+            long downTime = SystemClock.uptimeMillis();
+            mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_HOVER_ENTER,
+                    new Point(mMenuItem.getVisibleCenter().x, mMenuItem.getVisibleCenter().y),
+                    null);
+            mLauncher.runCallbackIfActive(CALLBACK_HOVER_ENTER);
+
+            try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
+                    "cursor hover exiting menu item")) {
+                downTime = SystemClock.uptimeMillis();
+                mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_HOVER_EXIT,
+                        new Point(mMenuItem.getVisibleCenter().x, mMenuItem.getVisibleCenter().y),
+                        null);
+                mLauncher.runCallbackIfActive(CALLBACK_HOVER_EXIT);
+            }
+        }
+    }
+}
diff --git a/tests/tapl/com/android/launcher3/tapl/Qsb.java b/tests/tapl/com/android/launcher3/tapl/Qsb.java
new file mode 100644
index 0000000..6bc4f21
--- /dev/null
+++ b/tests/tapl/com/android/launcher3/tapl/Qsb.java
@@ -0,0 +1,86 @@
+/*
+ * 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.launcher3.tapl;
+
+import androidx.annotation.NonNull;
+import androidx.test.uiautomator.By;
+import androidx.test.uiautomator.BySelector;
+import androidx.test.uiautomator.UiObject2;
+import androidx.test.uiautomator.Until;
+
+/**
+ * Operations on qsb from either Home screen or AllApp screen.
+ */
+public abstract class Qsb {
+
+    private static final String ASSISTANT_APP_PACKAGE = "com.google.android.googlequicksearchbox";
+    private static final String ASSISTANT_ICON_RES_ID = "mic_icon";
+    protected final LauncherInstrumentation mLauncher;
+
+    protected Qsb(LauncherInstrumentation launcher) {
+        mLauncher = launcher;
+    }
+
+    // Waits for the quick search box.
+    protected abstract UiObject2 waitForQsbObject();
+    /**
+     * Launch assistant app by tapping mic icon on qsb.
+     */
+
+    @NonNull
+    public LaunchedAppState launchAssistant() {
+        try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                "want to click assistant mic icon button");
+             LauncherInstrumentation.Closable e = mLauncher.eventsCheck()) {
+            UiObject2 assistantIcon = mLauncher.waitForLauncherObject(ASSISTANT_ICON_RES_ID);
+
+            LauncherInstrumentation.log("Qsb.launchAssistant before click "
+                    + assistantIcon.getVisibleCenter() + " in "
+                    + mLauncher.getVisibleBounds(assistantIcon));
+
+            mLauncher.clickLauncherObject(assistantIcon);
+
+            try (LauncherInstrumentation.Closable c2 = mLauncher.addContextLayer("clicked")) {
+                // assert Assistant App Launched
+                BySelector selector = By.pkg(ASSISTANT_APP_PACKAGE);
+                mLauncher.assertTrue(
+                        "assistant app didn't start: (" + selector + ")",
+                        mLauncher.getDevice().wait(Until.hasObject(selector),
+                                LauncherInstrumentation.WAIT_TIME_MS)
+                );
+                return new LaunchedAppState(mLauncher);
+            }
+        }
+    }
+
+    /**
+     * Show search result page from tapping qsb.
+     */
+    public SearchResultFromQsb showSearchResult() {
+        try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                "want to open search result page");
+             LauncherInstrumentation.Closable e = mLauncher.eventsCheck()) {
+            mLauncher.clickLauncherObject(waitForQsbObject());
+            // wait for the result rendering to complete
+            mLauncher.waitForIdle();
+            try (LauncherInstrumentation.Closable c2 = mLauncher.addContextLayer(
+                    "clicked qsb to open search result page")) {
+                return new SearchResultFromQsb(mLauncher);
+            }
+        }
+    }
+}
diff --git a/tests/tapl/com/android/launcher3/tapl/SearchResultFromQsb.java b/tests/tapl/com/android/launcher3/tapl/SearchResultFromQsb.java
index 82652c7..80176e9 100644
--- a/tests/tapl/com/android/launcher3/tapl/SearchResultFromQsb.java
+++ b/tests/tapl/com/android/launcher3/tapl/SearchResultFromQsb.java
@@ -20,12 +20,18 @@
 import androidx.test.uiautomator.By;
 import androidx.test.uiautomator.UiObject2;
 
+import java.util.ArrayList;
+
 /**
- * Operations on search result page opened from home screen qsb.
+ * Operations on search result page opened from qsb.
  */
 public class SearchResultFromQsb {
     // The input resource id in the search box.
     private static final String INPUT_RES = "input";
+    private static final String BOTTOM_SHEET_RES_ID = "bottom_sheet_background";
+
+    // This particular ID change should happen with caution
+    private static final String SEARCH_CONTAINER_RES_ID = "search_results_list_view";
     private final LauncherInstrumentation mLauncher;
 
     SearchResultFromQsb(LauncherInstrumentation launcher) {
@@ -47,4 +53,50 @@
         UiObject2 icon = mLauncher.waitForLauncherObject(By.clazz(TextView.class).text(appName));
         return new AllAppsAppIcon(mLauncher, icon);
     }
+
+    /** Find the web suggestion from search suggestion's title text */
+    public void verifyWebSuggestIsPresent(String text) {
+        ArrayList<UiObject2> goldenGateResults =
+                new ArrayList<>(mLauncher.waitForObjectsInContainer(
+                        mLauncher.waitForSystemLauncherObject(SEARCH_CONTAINER_RES_ID),
+                        By.clazz(TextView.class)));
+        boolean found = false;
+        for(UiObject2 uiObject: goldenGateResults) {
+            String currentString = uiObject.getText();
+            if (currentString.equals(text)) {
+                found = true;
+            }
+        }
+        if (!found) {
+            throw new IllegalStateException("Web suggestion title: " + text + " not found");
+        }
+    }
+
+    /** Find the total amount of views being displayed and return the size */
+    public int getSearchResultItemSize() {
+        ArrayList<UiObject2> searchResultItems =
+                new ArrayList<>(mLauncher.waitForObjectsInContainer(
+                        mLauncher.waitForSystemLauncherObject(SEARCH_CONTAINER_RES_ID),
+                        By.clazz(TextView.class)));
+        return searchResultItems.size();
+    }
+
+    /**
+     * Taps outside bottom sheet to dismiss and return to workspace. Available on tablets only.
+     * @param tapRight Tap on the right of bottom sheet if true, or left otherwise.
+     */
+    public Workspace dismissByTappingOutsideForTablet(boolean tapRight) {
+        try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
+             LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                     "want to tap outside AllApps bottom sheet on the "
+                             + (tapRight ? "right" : "left"))) {
+            final UiObject2 allAppsBottomSheet =
+                    mLauncher.waitForLauncherObject(BOTTOM_SHEET_RES_ID);
+            mLauncher.touchOutsideContainer(allAppsBottomSheet, tapRight);
+            try (LauncherInstrumentation.Closable tapped = mLauncher.addContextLayer(
+                    "tapped outside AllApps bottom sheet")) {
+                return mLauncher.getWorkspace();
+            }
+        }
+    }
 }
diff --git a/tests/tapl/com/android/launcher3/tapl/SplitScreenMenuItem.java b/tests/tapl/com/android/launcher3/tapl/SplitScreenMenuItem.java
new file mode 100644
index 0000000..47cf20b
--- /dev/null
+++ b/tests/tapl/com/android/launcher3/tapl/SplitScreenMenuItem.java
@@ -0,0 +1,55 @@
+/*
+ * 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.launcher3.tapl;
+
+import androidx.test.uiautomator.UiObject2;
+
+import com.android.launcher3.testing.shared.TestProtocol;
+
+/**
+ * A class representing the "Split screen" menu item in the app long-press menu. Used for TAPL
+ * testing in a similar way as other menu items {@link AppIconMenuItem}, but unlike AppIconMenuItem,
+ * the split screen command does not trigger an app launch. Instead, it causes Launcher to shift to
+ * a different state (OverviewSplitSelect).
+ */
+public final class SplitScreenMenuItem {
+    private final LauncherInstrumentation mLauncher;
+    private final UiObject2 mObject;
+
+    SplitScreenMenuItem(LauncherInstrumentation launcher, UiObject2 object) {
+        mLauncher = launcher;
+        mObject = object;
+    }
+
+    /**
+     * Executes a click command on this menu item. Expects a SPLIT_SELECT_EVENT to be fired.
+     */
+    public void click() {
+        try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
+                "want to enter split select from app long-press menu")) {
+            LauncherInstrumentation.log("clicking on split screen menu item "
+                    + mObject.getVisibleCenter() + " in " + mLauncher.getVisibleBounds(mObject));
+
+            mLauncher.clickLauncherObject(mObject);
+
+            try (LauncherInstrumentation.Closable c2 = mLauncher.addContextLayer("clicked")) {
+                mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, OverviewTask.SPLIT_SELECT_EVENT);
+                mLauncher.waitForLauncherObject("split_placeholder");
+            }
+        }
+    }
+}
diff --git a/tests/tapl/com/android/launcher3/tapl/SplitScreenSelect.java b/tests/tapl/com/android/launcher3/tapl/SplitScreenSelect.java
new file mode 100644
index 0000000..9fa74e4
--- /dev/null
+++ b/tests/tapl/com/android/launcher3/tapl/SplitScreenSelect.java
@@ -0,0 +1,41 @@
+/*
+ * 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.launcher3.tapl;
+
+import com.android.launcher3.tapl.LauncherInstrumentation.ContainerType;
+
+/**
+ * Represents a special state in Overview where the initial split app is shoved to the side and a
+ * second split app can be selected.
+ */
+public class SplitScreenSelect extends Overview {
+
+    SplitScreenSelect(LauncherInstrumentation launcher) {
+        super(launcher);
+    }
+
+    @Override
+    protected ContainerType getContainerType() {
+        return ContainerType.SPLIT_SCREEN_SELECT;
+    }
+
+    @Override
+    protected boolean isActionsViewVisible() {
+        // We don't show overview actions in split select state.
+        return false;
+    }
+}
diff --git a/tests/tapl/com/android/launcher3/tapl/Taskbar.java b/tests/tapl/com/android/launcher3/tapl/Taskbar.java
index b5a08c3..051630e 100644
--- a/tests/tapl/com/android/launcher3/tapl/Taskbar.java
+++ b/tests/tapl/com/android/launcher3/tapl/Taskbar.java
@@ -15,10 +15,12 @@
  */
 package com.android.launcher3.tapl;
 
-import static com.android.launcher3.testing.TestProtocol.REQUEST_DISABLE_MANUAL_TASKBAR_STASHING;
-import static com.android.launcher3.testing.TestProtocol.REQUEST_ENABLE_MANUAL_TASKBAR_STASHING;
+import static com.android.launcher3.tapl.LauncherInstrumentation.TASKBAR_RES_ID;
+import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_DISABLE_MANUAL_TASKBAR_STASHING;
+import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_ENABLE_MANUAL_TASKBAR_STASHING;
 
 import android.graphics.Point;
+import android.graphics.Rect;
 import android.os.SystemClock;
 import android.text.TextUtils;
 import android.view.MotionEvent;
@@ -51,7 +53,7 @@
         try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
                 "want to get a taskbar icon")) {
             return new TaskbarAppIcon(mLauncher, mLauncher.waitForObjectInContainer(
-                    mLauncher.waitForLauncherObject("taskbar_view"),
+                    mLauncher.waitForSystemLauncherObject(TASKBAR_RES_ID),
                     AppIcon.getAppIconSelector(appName, mLauncher)));
         }
     }
@@ -67,7 +69,7 @@
         try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
                 "want to hide the taskbar");
              LauncherInstrumentation.Closable e = mLauncher.eventsCheck()) {
-            mLauncher.waitForLauncherObject("taskbar_view");
+            mLauncher.waitForSystemLauncherObject(TASKBAR_RES_ID);
 
             final long downTime = SystemClock.uptimeMillis();
             Point stashTarget = new Point(
@@ -78,7 +80,7 @@
             LauncherInstrumentation.log("hideTaskbar: sent down");
 
             try (LauncherInstrumentation.Closable c2 = mLauncher.addContextLayer("pressed down")) {
-                mLauncher.waitUntilLauncherObjectGone("taskbar_view");
+                mLauncher.waitUntilSystemLauncherObjectGone(TASKBAR_RES_ID);
                 mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_UP, stashTarget,
                         LauncherInstrumentation.GestureScope.INSIDE);
             }
@@ -96,7 +98,8 @@
              LauncherInstrumentation.Closable e = mLauncher.eventsCheck()) {
 
             mLauncher.clickLauncherObject(mLauncher.waitForObjectInContainer(
-                    mLauncher.waitForLauncherObject("taskbar_view"), getAllAppsButtonSelector()));
+                    mLauncher.waitForSystemLauncherObject(TASKBAR_RES_ID),
+                    getAllAppsButtonSelector()));
 
             return new AllAppsFromTaskbar(mLauncher);
         }
@@ -107,7 +110,7 @@
         try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
                 "want to get all taskbar icons")) {
             return mLauncher.waitForObjectsInContainer(
-                    mLauncher.waitForLauncherObject("taskbar_view"),
+                    mLauncher.waitForSystemLauncherObject(TASKBAR_RES_ID),
                     AppIcon.getAnyAppIconSelector())
                     .stream()
                     .map(UiObject2::getText)
@@ -120,4 +123,33 @@
         // Look for an icon with no text
         return By.clazz(TextView.class).text("");
     }
+
+    private Rect getVisibleBounds() {
+        return mLauncher.waitForSystemLauncherObject(TASKBAR_RES_ID).getVisibleBounds();
+    }
+
+    /**
+     * Touch either on the right or the left corner of the screen, 1 pixel from the bottom and
+     * from the sides.
+     */
+    void touchBottomCorner(boolean tapRight) {
+        try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                "want to tap bottom corner on the " + (tapRight ? "right" : "left"))) {
+            final long downTime = SystemClock.uptimeMillis();
+            final Point tapTarget = new Point(
+                    tapRight
+                            ?
+                            getVisibleBounds().right
+                                    - mLauncher.getTargetInsets().right
+                                    - 1
+                            : getVisibleBounds().left
+                                    + 1,
+                    mLauncher.getRealDisplaySize().y - 1);
+
+            mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_DOWN, tapTarget,
+                    LauncherInstrumentation.GestureScope.INSIDE);
+            mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_UP, tapTarget,
+                    LauncherInstrumentation.GestureScope.INSIDE);
+        }
+    }
 }
diff --git a/tests/tapl/com/android/launcher3/tapl/TaskbarAppIconMenuItem.java b/tests/tapl/com/android/launcher3/tapl/TaskbarAppIconMenuItem.java
index 69a8a08..424c58e 100644
--- a/tests/tapl/com/android/launcher3/tapl/TaskbarAppIconMenuItem.java
+++ b/tests/tapl/com/android/launcher3/tapl/TaskbarAppIconMenuItem.java
@@ -17,7 +17,7 @@
 
 import androidx.test.uiautomator.UiObject2;
 
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 
 import java.util.regex.Pattern;
 
diff --git a/tests/tapl/com/android/launcher3/tapl/Widget.java b/tests/tapl/com/android/launcher3/tapl/Widget.java
index 2346249..e7016a3 100644
--- a/tests/tapl/com/android/launcher3/tapl/Widget.java
+++ b/tests/tapl/com/android/launcher3/tapl/Widget.java
@@ -17,13 +17,9 @@
 package com.android.launcher3.tapl;
 
 import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.test.uiautomator.By;
-import androidx.test.uiautomator.BySelector;
 import androidx.test.uiautomator.UiObject2;
-import androidx.test.uiautomator.Until;
 
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 
 import java.util.regex.Pattern;
 
@@ -32,7 +28,7 @@
  */
 public final class Widget extends Launchable implements WorkspaceDragSource {
 
-    private static final Pattern LONG_CLICK_EVENT = Pattern.compile("Widgets.onLongClick");
+    static final Pattern LONG_CLICK_EVENT = Pattern.compile("Widgets.onLongClick");
 
     Widget(LauncherInstrumentation launcher, UiObject2 icon) {
         super(launcher, icon);
@@ -69,48 +65,51 @@
      */
     @NonNull
     public WidgetResizeFrame dragWidgetToWorkspace() {
-        return dragWidgetToWorkspace(/* configurable= */ false, /* acceptsConfig= */ false);
+        return dragWidgetToWorkspace(-1, -1, 1, 1);
     }
 
     /**
-     * Drags a configurable widget from the widgets container to the workspace, either accepts or
-     * cancels the configuration based on {@code acceptsConfig}, and returns the resize frame that
-     * is shown if the widget is added.
+     * Drags a non-configurable widget from the widgets container to the workspace at cellX and
+     * cellY and returns the resize frame that is shown after the widget is added.
      */
-    @Nullable
-    public WidgetResizeFrame dragConfigWidgetToWorkspace(boolean acceptsConfig) {
-        return dragWidgetToWorkspace(/* configurable= */ true, acceptsConfig);
-    }
+    @NonNull
+    public WidgetResizeFrame dragWidgetToWorkspace(int cellX, int cellY, int spanX, int spanY) {
+        try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
+             LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                     "Dragging widget to workspace cell " + cellX + "," + cellY)) {
+            if (cellX == -1 || cellY == -1) {
+                internalDragToWorkspace(/* startsActivity= */ false, /* isWidgetShortcut= */
+                        false);
+            } else {
+                dragToWorkspaceCellPosition(/* startsActivity= */ false, /* isWidgetShortcut= */
+                        false, cellX, cellY, spanX, spanY);
+            }
 
-    /**
-     * Drags a widget from the widgets container to the workspace and returns the resize frame that
-     * is shown after the widget is added.
-     *
-     * <p> If {@code configurable} is true, then either accepts or cancels the configuration based
-     * on {@code acceptsConfig}.
-     */
-    @Nullable
-    private WidgetResizeFrame dragWidgetToWorkspace(
-            boolean configurable, boolean acceptsConfig) {
-        dragToWorkspace(/* startsActivity= */ configurable, /* isWidgetShortcut= */ false);
-
-        if (configurable) {
-            // Configure the widget.
-            BySelector selector = By.text(acceptsConfig ? "OK" : "Cancel");
-            mLauncher.getDevice()
-                    .wait(Until.findObject(selector), LauncherInstrumentation.WAIT_TIME_MS)
-                    .click();
-
-            // If the widget configuration was cancelled, then the widget wasn't added to the home
-            // screen. In that case, we cannot return a resize frame.
-            if (!acceptsConfig) {
-                return null;
+            try (LauncherInstrumentation.Closable closable = mLauncher.addContextLayer(
+                    "want to get widget resize frame")) {
+                return new WidgetResizeFrame(mLauncher);
             }
         }
+    }
 
-        try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
-                "want to get widget resize frame")) {
-            return new WidgetResizeFrame(mLauncher);
-        }
+    /**
+     * Drags an object to the center of homescreen.
+     *
+     * @param startsActivity   whether it's expected to start an activity.
+     * @param isWidgetShortcut whether we drag a widget shortcut
+     * @param cellX            X position in the CellLayout
+     * @param cellY            Y position in the CellLayout
+     */
+    private void dragToWorkspaceCellPosition(boolean startsActivity, boolean isWidgetShortcut,
+            int cellX, int cellY, int spanX, int spanY) {
+        Launchable launchable = getLaunchable();
+        LauncherInstrumentation launcher = launchable.mLauncher;
+        Workspace.dragIconToWorkspaceCellPosition(
+                launcher,
+                launchable,
+                cellX, cellY, spanX, spanY,
+                startsActivity,
+                isWidgetShortcut,
+                launchable::addExpectedEventsForLongClick);
     }
 }
diff --git a/tests/tapl/com/android/launcher3/tapl/Widgets.java b/tests/tapl/com/android/launcher3/tapl/Widgets.java
index 7fd68c0..79b54ba 100644
--- a/tests/tapl/com/android/launcher3/tapl/Widgets.java
+++ b/tests/tapl/com/android/launcher3/tapl/Widgets.java
@@ -27,7 +27,7 @@
 import androidx.test.uiautomator.UiObject2;
 import androidx.test.uiautomator.Until;
 
-import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.testing.shared.TestProtocol;
 
 import java.util.Collection;
 
@@ -77,8 +77,8 @@
             mLauncher.scroll(
                     widgetsContainer,
                     Direction.UP,
-                    new Rect(0, 0, mLauncher.getRightGestureMarginInContainer(widgetsContainer) + 1,
-                            0),
+                    new Rect(0, 0, 0,
+                            mLauncher.getBottomGestureMarginInContainer(widgetsContainer) + 1),
                     FLING_STEPS, false);
             try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer("flung back")) {
                 verifyActiveContainer();
@@ -168,6 +168,8 @@
     private UiObject2 findTestAppWidgetsTableContainer() {
         final BySelector headerSelector = By.res(mLauncher.getLauncherPackageName(),
                 "widgets_list_header");
+        final BySelector widgetPickerSelector = By.res(mLauncher.getLauncherPackageName(),
+                "container");
         final BySelector targetAppSelector = By.clazz("android.widget.TextView").text(
                 mLauncher.getContext().getPackageName());
         final BySelector widgetsContainerSelector = By.res(mLauncher.getLauncherPackageName(),
@@ -176,9 +178,9 @@
         boolean hasHeaderExpanded = false;
         int scrollDistance = 0;
         for (int i = 0; i < SCROLL_ATTEMPTS; i++) {
-            UiObject2 fullWidgetsPicker = verifyActiveContainer();
-
-            UiObject2 header = mLauncher.waitForObjectInContainer(fullWidgetsPicker,
+            UiObject2 widgetPicker = mLauncher.waitForLauncherObject(widgetPickerSelector);
+            UiObject2 widgetListView = verifyActiveContainer();
+            UiObject2 header = mLauncher.waitForObjectInContainer(widgetListView,
                     headerSelector);
             // If a header is barely visible in the bottom edge of the screen, its height could be
             // too small for a scroll gesture. Since all header should have roughly the same height,
@@ -186,7 +188,7 @@
             scrollDistance = Math.max(scrollDistance, header.getVisibleBounds().height());
 
             // Look for a header that has the test app name.
-            UiObject2 headerTitle = mLauncher.findObjectInContainer(fullWidgetsPicker,
+            UiObject2 headerTitle = mLauncher.findObjectInContainer(widgetListView,
                     targetAppSelector);
             if (headerTitle != null) {
                 // If we find the header and it has not been expanded, let's click it to see the
@@ -201,8 +203,15 @@
                     mLauncher.clickLauncherObject(headerTitle);
                 }
 
+                // If we are in a tablet in landscape mode then we will have a two pane view and we
+                // use the right pane to display the widgets table.
+                UiObject2 rightPane = mLauncher.findObjectInContainer(
+                        widgetPicker,
+                        widgetsContainerSelector);
+
                 // Look for a widgets list.
-                UiObject2 widgetsContainer = mLauncher.findObjectInContainer(fullWidgetsPicker,
+                UiObject2 widgetsContainer = mLauncher.findObjectInContainer(
+                        rightPane != null ? rightPane : widgetListView,
                         widgetsContainerSelector);
                 if (widgetsContainer != null) {
                     log("Widgets container found.");
@@ -210,7 +219,16 @@
                 }
             }
             log("Finding test widget package - scroll with distance: " + scrollDistance);
-            mLauncher.scrollDownByDistance(fullWidgetsPicker, scrollDistance);
+
+            // If we are in a tablet in landscape mode then we will have a two pane view and we use
+            // the right pane to display the widgets table.
+            UiObject2 rightPane = mLauncher.findObjectInContainer(
+                    widgetPicker,
+                    widgetsContainerSelector);
+
+            mLauncher.scrollDownByDistance(hasHeaderExpanded && rightPane != null
+                    ? rightPane
+                    : widgetListView, scrollDistance);
         }
 
         return null;
diff --git a/tests/tapl/com/android/launcher3/tapl/Workspace.java b/tests/tapl/com/android/launcher3/tapl/Workspace.java
index eb7f05b..7bb02cb 100644
--- a/tests/tapl/com/android/launcher3/tapl/Workspace.java
+++ b/tests/tapl/com/android/launcher3/tapl/Workspace.java
@@ -18,8 +18,9 @@
 
 import static android.view.accessibility.AccessibilityEvent.TYPE_VIEW_SCROLLED;
 
-import static com.android.launcher3.testing.TestProtocol.ALL_APPS_STATE_ORDINAL;
-import static com.android.launcher3.testing.TestProtocol.NORMAL_STATE_ORDINAL;
+import static com.android.launcher3.tapl.LauncherInstrumentation.CALLBACK_RUN_POINT.CALLBACK_HOLD_BEFORE_DROP;
+import static com.android.launcher3.testing.shared.TestProtocol.ALL_APPS_STATE_ORDINAL;
+import static com.android.launcher3.testing.shared.TestProtocol.NORMAL_STATE_ORDINAL;
 
 import static junit.framework.TestCase.assertNotNull;
 import static junit.framework.TestCase.assertTrue;
@@ -39,8 +40,9 @@
 import androidx.test.uiautomator.UiObject2;
 import androidx.test.uiautomator.Until;
 
-import com.android.launcher3.testing.TestProtocol;
-import com.android.launcher3.testing.WorkspaceCellCenterRequest;
+import com.android.launcher3.testing.shared.HotseatCellCenterRequest;
+import com.android.launcher3.testing.shared.TestProtocol;
+import com.android.launcher3.testing.shared.WorkspaceCellCenterRequest;
 
 import java.util.List;
 import java.util.Map;
@@ -65,6 +67,7 @@
             "Key event: KeyEvent.*?action=ACTION_UP.*?keyCode=KEYCODE_W"
                     + ".*?metaState=META_CTRL_ON");
     static final Pattern LONG_CLICK_EVENT = Pattern.compile("onWorkspaceItemLongClick");
+    public static final int MAX_WORKSPACE_DRAG_TRIES = 100;
 
     private final UiObject2 mHotseat;
 
@@ -89,7 +92,7 @@
             final int windowCornerRadius = (int) Math.ceil(mLauncher.getWindowCornerRadius());
             final int startY = deviceHeight - Math.max(bottomGestureMargin, windowCornerRadius) - 1;
             final int swipeHeight = mLauncher.getTestInfo(
-                    TestProtocol.REQUEST_HOME_TO_ALL_APPS_SWIPE_HEIGHT)
+                            TestProtocol.REQUEST_HOME_TO_ALL_APPS_SWIPE_HEIGHT)
                     .getInt(TestProtocol.TEST_INFO_RESPONSE_FIELD);
             LauncherInstrumentation.log(
                     "switchToAllApps: deviceHeight = " + deviceHeight + ", startY = " + startY
@@ -116,10 +119,11 @@
      *
      * The qsb must already be visible when calling this method.
      */
-    public HomeQsb getQsb() {
+    @NonNull
+    public Qsb getQsb() {
         try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
                 "want to get the home qsb")) {
-            return new HomeQsb(mLauncher);
+            return new HomeQsb(mLauncher, mHotseat);
         }
     }
 
@@ -140,6 +144,20 @@
         }
     }
 
+    /**
+     * Waits for an app icon to be gone (e.g. after uninstall). Fails if it remains.
+     *
+     * @param errorMessage error message thrown then the icon doesn't disappear.
+     * @param appName      app that should be gone.
+     */
+    public void verifyWorkspaceAppIconIsGone(String errorMessage, String appName) {
+        final UiObject2 workspace = verifyActiveContainer();
+        assertTrue(errorMessage,
+                workspace.wait(
+                        Until.gone(AppIcon.getAppIconSelector(appName, mLauncher)),
+                        LauncherInstrumentation.WAIT_TIME_MS));
+    }
+
 
     /**
      * Returns an icon for the app; fails if the icon doesn't exist.
@@ -177,6 +195,12 @@
         }
     }
 
+    /** Returns the number of pages. */
+    public int getPageCount() {
+        final UiObject2 workspace = verifyActiveContainer();
+        return workspace.getChildCount();
+    }
+
     /**
      * Returns the number of pages that are visible on the screen simultaneously.
      */
@@ -214,10 +238,11 @@
     private void dragIcon(UiObject2 workspace, HomeAppIcon homeAppIcon, int pageDelta) {
         int pageWidth = mLauncher.getDevice().getDisplayWidth() / pagesPerScreen();
         int targetX = (pageWidth / 2) + pageWidth * pageDelta;
+        int targetY = mLauncher.getVisibleBounds(workspace).centerY();
         dragIconToWorkspace(
                 mLauncher,
                 homeAppIcon,
-                new Point(targetX, mLauncher.getVisibleBounds(workspace).centerY()),
+                () -> new Point(targetX, targetY),
                 false,
                 false,
                 () -> mLauncher.expectEvent(
@@ -236,8 +261,26 @@
     }
 
     /**
+     * Returns an icon for the given cell; fails if the icon doesn't exist.
+     *
+     * @param cellInd zero based index number of the hotseat cells.
+     * @return app icon.
+     */
+    @NonNull
+    public HomeAppIcon getHotseatAppIcon(int cellInd) {
+        List<UiObject2> icons = mHotseat.findObjects(AppIcon.getAnyAppIconSelector());
+        final Point center = getHotseatCellCenter(mLauncher, cellInd);
+        return icons.stream()
+                .filter(icon -> icon.getVisibleBounds().contains(center.x, center.y))
+                .findFirst()
+                .map(icon -> new WorkspaceAppIcon(mLauncher, icon))
+                .orElseThrow(() ->
+                        new AssertionError("Unable to get a hotseat icon on " + cellInd));
+    }
+
+    /**
      * @return map of text -> center of the view. In case of icons with the same name, the one with
-     *     lower x coordinate is selected.
+     * lower x coordinate is selected.
      */
     public Map<String, Point> getWorkspaceIconsPositions() {
         final UiObject2 workspace = verifyActiveContainer();
@@ -250,6 +293,7 @@
                                 /* valueMapper= */ UiObject2::getVisibleCenter,
                                 /* mergeFunction= */ (p1, p2) -> p1.x < p2.x ? p1 : p2));
     }
+
     /*
      * Get the center point of the delete/uninstall icon in the drop target bar.
      */
@@ -261,6 +305,31 @@
     }
 
     /**
+     * Drag the appIcon from the workspace and cancel by dragging icon to corner of screen where no
+     * drop point exists.
+     *
+     * @param homeAppIcon to be dragged.
+     */
+    @NonNull
+    public Workspace dragAndCancelAppIcon(HomeAppIcon homeAppIcon) {
+        try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
+             LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                     "dragging app icon across workspace")) {
+            dragIconToWorkspace(
+                    mLauncher,
+                    homeAppIcon,
+                    () -> new Point(0, 0),
+                    () -> mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, LONG_CLICK_EVENT),
+                    null);
+
+            try (LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
+                    "dragged the app across workspace")) {
+                return new Workspace(mLauncher);
+            }
+        }
+    }
+
+    /**
      * Delete the appIcon from the workspace.
      *
      * @param homeAppIcon to be deleted.
@@ -284,6 +353,7 @@
         }
     }
 
+
     /**
      * Uninstall the appIcon by dragging it to the 'uninstall' drop point of the drop_target_bar.
      *
@@ -317,7 +387,7 @@
                     Until.hasObject(installerAlert), LauncherInstrumentation.WAIT_TIME_MS));
             final UiObject2 ok = device.findObject(By.text("OK"));
             assertNotNull("OK button is not shown", ok);
-            launcher.clickObject(ok);
+            launcher.clickObject(ok, LauncherInstrumentation.GestureScope.OUTSIDE_WITHOUT_PILFER);
             assertTrue("Uninstall alert is not dismissed after clicking OK", device.wait(
                     Until.gone(installerAlert), LauncherInstrumentation.WAIT_TIME_MS));
 
@@ -340,8 +410,31 @@
     }
 
     static Point getCellCenter(LauncherInstrumentation launcher, int cellX, int cellY) {
-        return launcher.getTestInfo(WorkspaceCellCenterRequest.builder().setCellX(
-                cellX).setCellY(cellY).build()).getParcelable(
+        return launcher.getTestInfo(WorkspaceCellCenterRequest.builder().setCellX(cellX).setCellY(
+                cellY).build()).getParcelable(TestProtocol.TEST_INFO_RESPONSE_FIELD);
+    }
+
+    static Point getCellCenter(LauncherInstrumentation launcher, int cellX, int cellY, int spanX,
+            int spanY) {
+        return launcher.getTestInfo(WorkspaceCellCenterRequest.builder().setCellX(cellX)
+                .setCellY(cellY).setSpanX(spanX).setSpanY(spanY).build())
+                .getParcelable(TestProtocol.TEST_INFO_RESPONSE_FIELD);
+    }
+
+    static Point getHotseatCellCenter(LauncherInstrumentation launcher, int cellInd) {
+        return launcher.getTestInfo(HotseatCellCenterRequest.builder()
+                .setCellInd(cellInd).build()).getParcelable(TestProtocol.TEST_INFO_RESPONSE_FIELD);
+    }
+
+    /** Returns the number of rows and columns in the workspace */
+    public Point getRowsAndCols() {
+        return mLauncher.getTestInfo(TestProtocol.REQUEST_WORKSPACE_COLUMNS_ROWS).getParcelable(
+                TestProtocol.TEST_INFO_RESPONSE_FIELD);
+    }
+
+    /** Returns the index of the current page */
+    private static int geCurrentPage(LauncherInstrumentation launcher) {
+        return launcher.getTestInfo(TestProtocol.REQUEST_WORKSPACE_CURRENT_PAGE_INDEX).getInt(
                 TestProtocol.TEST_INFO_RESPONSE_FIELD);
     }
 
@@ -372,7 +465,7 @@
     }
 
     static void dragIconToWorkspace(LauncherInstrumentation launcher, Launchable launchable,
-            Point dest, boolean startsActivity, boolean isWidgetShortcut,
+            Supplier<Point> dest, boolean startsActivity, boolean isWidgetShortcut,
             Runnable expectLongClickEvents) {
         Runnable expectDropEvents = null;
         if (startsActivity || isWidgetShortcut) {
@@ -380,7 +473,20 @@
                     LauncherInstrumentation.EVENT_START);
         }
         dragIconToWorkspace(
-                launcher, launchable, () -> dest, expectLongClickEvents, expectDropEvents);
+                launcher, launchable, dest, expectLongClickEvents, expectDropEvents);
+    }
+
+    static void dragIconToWorkspaceCellPosition(LauncherInstrumentation launcher,
+            Launchable launchable, int cellX, int cellY, int spanX, int spanY,
+            boolean startsActivity, boolean isWidgetShortcut, Runnable expectLongClickEvents) {
+        Runnable expectDropEvents = null;
+        if (startsActivity || isWidgetShortcut) {
+            expectDropEvents = () -> launcher.expectEvent(TestProtocol.SEQUENCE_MAIN,
+                    LauncherInstrumentation.EVENT_START);
+        }
+        dragIconToWorkspaceCellPosition(
+                launcher, launchable, cellX, cellY, spanX, spanY, true, expectLongClickEvents,
+                expectDropEvents);
     }
 
     /**
@@ -429,7 +535,9 @@
             // Since the destination can be on another page, we need to drag to the edge first
             // until we reach the target page
             while (targetDest.x > displayX || targetDest.x < 0) {
-                int edgeX = targetDest.x > 0 ? displayX : 0;
+                // Don't drag all the way to the edge to prevent touch events from getting out of
+                //screen bounds.
+                int edgeX = targetDest.x > 0 ? displayX - 1 : 1;
                 Point screenEdge = new Point(edgeX, targetDest.y);
                 Point finalDragStart = dragStart;
                 executeAndWaitForPageScroll(launcher,
@@ -445,10 +553,84 @@
             launcher.movePointer(dragStart, targetDest, DEFAULT_DRAG_STEPS, isDecelerating,
                     downTime, SystemClock.uptimeMillis(), false,
                     LauncherInstrumentation.GestureScope.INSIDE);
+            launcher.runCallbackIfActive(CALLBACK_HOLD_BEFORE_DROP);
             dropDraggedIcon(launcher, targetDest, downTime, expectDropEvents);
         }
     }
 
+    static void dragIconToWorkspaceCellPosition(
+            LauncherInstrumentation launcher,
+            Launchable launchable,
+            int cellX, int cellY, int spanX, int spanY,
+            boolean isDecelerating,
+            Runnable expectLongClickEvents,
+            @Nullable Runnable expectDropEvents) {
+        try (LauncherInstrumentation.Closable ignored = launcher.addContextLayer(
+                "want to drag icon to workspace")) {
+            Point rowsAndCols = launcher.getWorkspace().getRowsAndCols();
+            int destinationWorkspace = cellX / rowsAndCols.x;
+            cellX = cellX % rowsAndCols.x;
+
+            final long downTime = SystemClock.uptimeMillis();
+            Point dragStart = launchable.startDrag(
+                    downTime,
+                    expectLongClickEvents,
+                    /* runToSpringLoadedState= */ true);
+            Point targetDest = getCellCenter(launcher, cellX, cellY, spanX, spanY);
+            // Since the destination can be on another page, we need to drag to the edge first
+            // until we reach the target page
+            dragStart = dragToGivenWorkspace(launcher, dragStart, destinationWorkspace,
+                    targetDest.y);
+
+            // targetDest.x is now between 0 and displayX so we found the target page,
+            // we just have to put move the icon to the destination and drop it
+            launcher.movePointer(dragStart, targetDest, DEFAULT_DRAG_STEPS, isDecelerating,
+                    downTime, SystemClock.uptimeMillis(), false,
+                    LauncherInstrumentation.GestureScope.INSIDE);
+            launcher.runCallbackIfActive(CALLBACK_HOLD_BEFORE_DROP);
+            dropDraggedIcon(launcher, targetDest, downTime, expectDropEvents);
+        }
+    }
+
+    /**
+     * Given a drag that already started at currentPosition, drag the item to the given destination
+     * index defined by destinationWorkspaceIndex.
+     *
+     * @param launcher
+     * @param currentPosition
+     * @param destinationWorkspaceIndex
+     * @param y
+     * @return the finishing position of the drag.
+     */
+    private static Point dragToGivenWorkspace(LauncherInstrumentation launcher,
+            Point currentPosition, int destinationWorkspaceIndex, int y) {
+        final long downTime = SystemClock.uptimeMillis();
+        int displayX = launcher.getRealDisplaySize().x;
+        int currentPage = Workspace.geCurrentPage(launcher);
+        int counter = 0;
+        while (currentPage != destinationWorkspaceIndex) {
+            counter++;
+            if (counter > MAX_WORKSPACE_DRAG_TRIES) {
+                throw new RuntimeException(
+                        "Wrong destination workspace index " + destinationWorkspaceIndex
+                                + ", desired workspace was never reached");
+            }
+            // if the destination is greater than current page, set the display edge to be the
+            // right edge. Don't drag all the way to the edge to prevent touch events from
+            // getting out of screen bounds.
+            int displayEdge = destinationWorkspaceIndex > currentPage ? displayX - 1 : 1;
+            Point screenEdge = new Point(displayEdge, y);
+            Point finalDragStart = currentPosition;
+            executeAndWaitForPageScroll(launcher,
+                    () -> launcher.movePointer(finalDragStart, screenEdge, DEFAULT_DRAG_STEPS,
+                            true, downTime, downTime, true,
+                            LauncherInstrumentation.GestureScope.INSIDE));
+            currentPage = Workspace.geCurrentPage(launcher);
+            currentPosition = screenEdge;
+        }
+        return currentPosition;
+    }
+
     private static void executeAndWaitForPageScroll(LauncherInstrumentation launcher,
             Runnable command) {
         launcher.executeAndWaitForEvent(command,
@@ -456,6 +638,25 @@
                 () -> "Page scroll didn't happen", "Scrolling page");
     }
 
+    static void dragIconToHotseat(
+            LauncherInstrumentation launcher,
+            Launchable launchable,
+            Supplier<Point> dest,
+            Runnable expectLongClickEvents,
+            @Nullable Runnable expectDropEvents) {
+        final long downTime = SystemClock.uptimeMillis();
+        Point dragStart = launchable.startDrag(
+                downTime,
+                expectLongClickEvents,
+                /* runToSpringLoadedState= */ true);
+        Point targetDest = dest.get();
+
+        launcher.movePointer(dragStart, targetDest, DEFAULT_DRAG_STEPS, true,
+                downTime, SystemClock.uptimeMillis(), false,
+                LauncherInstrumentation.GestureScope.INSIDE);
+        dropDraggedIcon(launcher, targetDest, downTime, expectDropEvents);
+    }
+
     /**
      * Flings to get to screens on the right. Waits for scrolling and a possible overscroll
      * recoil to complete.
@@ -523,6 +724,32 @@
         }
     }
 
+    /**
+     * @param cellX X position of the widget trying to get.
+     * @param cellY Y position of the widget trying to get.
+     * @return returns the Widget in the given position in the Launcher or an Exception if no such
+     * widget is in that position.
+     */
+    @NonNull
+    public Widget getWidgetAtCell(int cellX, int cellY) {
+        try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
+                "getting widget at cell position " + cellX + "," + cellY)) {
+            final List<UiObject2> widgets = mLauncher.waitForObjectsBySelector(
+                    By.clazz("com.android.launcher3.widget.LauncherAppWidgetHostView"));
+            Point coordinateInScreen = Workspace.getCellCenter(mLauncher, cellX, cellY);
+            for (UiObject2 widget : widgets) {
+                if (widget.getVisibleBounds().contains(coordinateInScreen.x,
+                        coordinateInScreen.y)) {
+                    return new Widget(mLauncher, widget);
+                }
+            }
+        }
+        mLauncher.fail("Unable to find widget at cell " + cellX + "," + cellY);
+        // This statement is unreachable because mLauncher.fail throws an exception
+        // but is needed for compiling
+        return null;
+    }
+
     @Nullable
     public Widget tryGetPendingWidget(long timeout) {
         try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
diff --git a/tests/tapl/com/android/launcher3/tapl/WorkspaceDragSource.java b/tests/tapl/com/android/launcher3/tapl/WorkspaceDragSource.java
index d8d4420..141476c 100644
--- a/tests/tapl/com/android/launcher3/tapl/WorkspaceDragSource.java
+++ b/tests/tapl/com/android/launcher3/tapl/WorkspaceDragSource.java
@@ -17,6 +17,8 @@
 
 import android.graphics.Point;
 
+import java.util.function.Supplier;
+
 /** Launchable that can serve as a source for dragging and dropping to the workspace. */
 interface WorkspaceDragSource {
 
@@ -30,20 +32,67 @@
         Launchable launchable = getLaunchable();
         LauncherInstrumentation launcher = launchable.mLauncher;
         try (LauncherInstrumentation.Closable e = launcher.eventsCheck()) {
-            final Point launchableCenter = launchable.getObject().getVisibleCenter();
-            final Point displaySize = launcher.getRealDisplaySize();
-            final int width = displaySize.x / 2;
+            internalDragToWorkspace(startsActivity, isWidgetShortcut);
+        }
+    }
+
+    /**
+     * TODO(Redesign WorkspaceDragSource to have actual private methods)
+     * Temporary private method
+     *
+     * @param startsActivity   whether it's expected to start an activity.
+     * @param isWidgetShortcut whether we drag a widget shortcut
+     */
+    default void internalDragToWorkspace(boolean startsActivity, boolean isWidgetShortcut) {
+        Launchable launchable = getLaunchable();
+        LauncherInstrumentation launcher = launchable.mLauncher;
+        final Point launchableCenter = launchable.getObject().getVisibleCenter();
+        final Point displaySize = launcher.getRealDisplaySize();
+        final int width = displaySize.x / 2;
+        Workspace.dragIconToWorkspace(
+                launcher,
+                launchable,
+                () -> new Point(
+                        launchableCenter.x >= width
+                                ? launchableCenter.x - width / 2
+                                : launchableCenter.x + width / 2,
+                        displaySize.y / 2),
+                startsActivity,
+                isWidgetShortcut,
+                launchable::addExpectedEventsForLongClick);
+    }
+
+    /**
+     * Drag an object to the given cell in workspace. The target cell must be empty.
+     *
+     * @param cellX zero based column number, starting from the left of the screen.
+     * @param cellY zero based row number, starting from the top of the screen.     *
+     */
+    default HomeAppIcon dragToWorkspace(int cellX, int cellY) {
+        Launchable launchable = getLaunchable();
+        final String iconName = launchable.getObject().getText();
+        LauncherInstrumentation launcher = launchable.mLauncher;
+        try (LauncherInstrumentation.Closable e = launcher.eventsCheck();
+             LauncherInstrumentation.Closable c = launcher.addContextLayer(
+                     String.format("want to drag the icon to cell(%d, %d)", cellX, cellY))) {
+            final Supplier<Point> dest = () -> Workspace.getCellCenter(launcher, cellX, cellY);
             Workspace.dragIconToWorkspace(
                     launcher,
                     launchable,
-                    new Point(
-                            launchableCenter.x >= width
-                                    ? launchableCenter.x - width / 2
-                                    : launchableCenter.x + width / 2,
-                            displaySize.y / 2),
-                    startsActivity,
-                    isWidgetShortcut,
-                    launchable::addExpectedEventsForLongClick);
+                    dest,
+                    launchable::addExpectedEventsForLongClick,
+                    /*expectDropEvents= */ null);
+
+            try (LauncherInstrumentation.Closable ignore = launcher.addContextLayer("dragged")) {
+                WorkspaceAppIcon appIcon =
+                        (WorkspaceAppIcon) launcher.getWorkspace().getWorkspaceAppIcon(iconName);
+                launcher.assertTrue(
+                        String.format(
+                                "The %s icon should be in the cell (%d, %d).", iconName, cellX,
+                                cellY),
+                        appIcon.isInCell(cellX, cellY));
+                return appIcon;
+            }
         }
     }